CMS 3D CMS Logo

List of all members | Public Member Functions | Static Public Member Functions | Private Types | Private Member Functions | Private Attributes | Static Private Attributes
TrackstersMergeProducer Class Reference
Inheritance diagram for TrackstersMergeProducer:
edm::stream::EDProducer<>

Public Member Functions

void beginJob ()
 
void beginRun (edm::Run const &iEvent, edm::EventSetup const &es) override
 
void endJob ()
 
void produce (edm::Event &, const edm::EventSetup &) override
 
 TrackstersMergeProducer (const edm::ParameterSet &ps)
 
 ~TrackstersMergeProducer () override
 
- Public Member Functions inherited from edm::stream::EDProducer<>
 EDProducer ()=default
 
 EDProducer (const EDProducer &)=delete
 
bool hasAbilityToProduceInBeginLumis () const final
 
bool hasAbilityToProduceInBeginProcessBlocks () const final
 
bool hasAbilityToProduceInBeginRuns () const final
 
bool hasAbilityToProduceInEndLumis () const final
 
bool hasAbilityToProduceInEndProcessBlocks () const final
 
bool hasAbilityToProduceInEndRuns () const final
 
const EDProduceroperator= (const EDProducer &)=delete
 

Static Public Member Functions

static void fillDescriptions (edm::ConfigurationDescriptions &descriptions)
 
static void globalEndJob (TrackstersCache *)
 
static std::unique_ptr< TrackstersCacheinitializeGlobalCache (const edm::ParameterSet &)
 

Private Types

typedef ticl::Trackster::IterationIndex TracksterIterIndex
 
typedef math::XYZVector Vector
 

Private Member Functions

void assignTimeToCandidates (std::vector< TICLCandidate > &resultCandidates) const
 
void dumpTrackster (const Trackster &) const
 
void energyRegressionAndID (const std::vector< reco::CaloCluster > &layerClusters, const tensorflow::Session *, std::vector< Trackster > &result) const
 
void fillTile (TICLTracksterTiles &, const std::vector< Trackster > &, TracksterIterIndex)
 
void printTrackstersDebug (const std::vector< Trackster > &, const char *label) const
 

Private Attributes

const edm::ESGetToken< MagneticField, IdealMagneticFieldRecordbfield_token_
 
const edm::EDGetTokenT< std::vector< reco::CaloCluster > > clusters_token_
 
const edm::EDGetTokenT< edm::ValueMap< std::pair< float, float > > > clustersTime_token_
 
const double cosangle_align_
 
const std::string detector_
 
const double e_over_h_threshold_
 
const std::string eidInputName_
 
const float eidMinClusterEnergy_
 
const int eidNClusters_
 
const int eidNLayers_
 
const std::string eidOutputNameEnergy_
 
const std::string eidOutputNameId_
 
tensorflow::Session * eidSession_
 
const int eta_bin_window_
 
std::unique_ptr< GeomDetfirstDisk_ [2]
 
const edm::ESGetToken< CaloGeometry, CaloGeometryRecordgeometry_token_
 
const double halo_max_distance2_
 
edm::ESGetToken< HGCalDDDConstants, IdealGeometryRecordhdc_token_
 
const HGCalDDDConstantshgcons_
 
std::once_flag initializeGeometry_
 
std::unique_ptr< LinkingAlgoBaselinkingAlgo_
 
const edm::EDGetTokenT< std::vector< reco::Muon > > muons_token_
 
const bool optimiseAcrossTracksters_
 
const int phi_bin_window_
 
const edm::ESGetToken< Propagator, TrackingComponentsRecordpropagator_token_
 
const std::string propName_
 
const double pt_neutral_threshold_
 
const double pt_sigma_high_
 
const double pt_sigma_low_
 
const double resol_calo_offset_em_
 
const double resol_calo_offset_had_
 
const double resol_calo_scale_em_
 
const double resol_calo_scale_had_
 
hgcal::RecHitTools rhtools_
 
const std::string tfDnnLabel_
 
const edm::ESGetToken< TfGraphDefWrapper, TfGraphRecordtfDnnToken_
 
const tensorflow::Session * tfSession_
 
const double track_max_eta_
 
const int track_max_missing_outerhits_
 
const double track_min_eta_
 
const double track_min_pt_
 
const edm::EDGetTokenT< edm::ValueMap< float > > tracks_time_err_token_
 
const edm::EDGetTokenT< edm::ValueMap< float > > tracks_time_quality_token_
 
const edm::EDGetTokenT< edm::ValueMap< float > > tracks_time_token_
 
const edm::EDGetTokenT< std::vector< reco::Track > > tracks_token_
 
const edm::EDGetTokenT< std::vector< Trackster > > tracksters_clue3d_token_
 
const bool useMTDTiming_
 

Static Private Attributes

static constexpr int eidNFeatures_ = 3
 

Additional Inherited Members

- Public Types inherited from edm::stream::EDProducer<>
using CacheTypes = CacheContexts< T... >
 
using GlobalCache = typename CacheTypes::GlobalCache
 
using HasAbility = AbilityChecker< T... >
 
using InputProcessBlockCache = typename CacheTypes::InputProcessBlockCache
 
using LuminosityBlockCache = typename CacheTypes::LuminosityBlockCache
 
using LuminosityBlockContext = LuminosityBlockContextT< LuminosityBlockCache, RunCache, GlobalCache >
 
using LuminosityBlockSummaryCache = typename CacheTypes::LuminosityBlockSummaryCache
 
using RunCache = typename CacheTypes::RunCache
 
using RunContext = RunContextT< RunCache, GlobalCache >
 
using RunSummaryCache = typename CacheTypes::RunSummaryCache
 

Detailed Description

Definition at line 53 of file TrackstersMergeProducer.cc.

Member Typedef Documentation

◆ TracksterIterIndex

Definition at line 70 of file TrackstersMergeProducer.cc.

◆ Vector

Definition at line 71 of file TrackstersMergeProducer.cc.

Constructor & Destructor Documentation

◆ TrackstersMergeProducer()

TrackstersMergeProducer::TrackstersMergeProducer ( const edm::ParameterSet ps)
explicit

Definition at line 140 of file TrackstersMergeProducer.cc.

References detector_, get, edm::ParameterSet::getParameter(), hdc_token_, linkingAlgo_, ticlTrackstersMerge_cfi::linkingPSet, and AlCaHLTBitMon_QueryRunRegistry::string.

141  : tracksters_clue3d_token_(consumes<std::vector<Trackster>>(ps.getParameter<edm::InputTag>("trackstersclue3d"))),
142  clusters_token_(consumes<std::vector<reco::CaloCluster>>(ps.getParameter<edm::InputTag>("layer_clusters"))),
144  consumes<edm::ValueMap<std::pair<float, float>>>(ps.getParameter<edm::InputTag>("layer_clustersTime"))),
145  tracks_token_(consumes<std::vector<reco::Track>>(ps.getParameter<edm::InputTag>("tracks"))),
149  muons_token_(consumes<std::vector<reco::Muon>>(ps.getParameter<edm::InputTag>("muons"))),
150  tfDnnLabel_(ps.getParameter<std::string>("tfDnnLabel")),
152  tfSession_(nullptr),
153  geometry_token_(esConsumes<CaloGeometry, CaloGeometryRecord, edm::Transition::BeginRun>()),
154  detector_(ps.getParameter<std::string>("detector")),
155  propName_(ps.getParameter<std::string>("propagator")),
156  bfield_token_(esConsumes<MagneticField, IdealMagneticFieldRecord, edm::Transition::BeginRun>()),
158  esConsumes<Propagator, TrackingComponentsRecord, edm::Transition::BeginRun>(edm::ESInputTag("", propName_))),
159  optimiseAcrossTracksters_(ps.getParameter<bool>("optimiseAcrossTracksters")),
160  useMTDTiming_(ps.getParameter<bool>("useMTDTiming")),
161  eta_bin_window_(ps.getParameter<int>("eta_bin_window")),
162  phi_bin_window_(ps.getParameter<int>("phi_bin_window")),
163  pt_sigma_high_(ps.getParameter<double>("pt_sigma_high")),
164  pt_sigma_low_(ps.getParameter<double>("pt_sigma_low")),
165  halo_max_distance2_(ps.getParameter<double>("halo_max_distance2")),
166  track_min_pt_(ps.getParameter<double>("track_min_pt")),
167  track_min_eta_(ps.getParameter<double>("track_min_eta")),
168  track_max_eta_(ps.getParameter<double>("track_max_eta")),
169  track_max_missing_outerhits_(ps.getParameter<int>("track_max_missing_outerhits")),
170  cosangle_align_(ps.getParameter<double>("cosangle_align")),
171  e_over_h_threshold_(ps.getParameter<double>("e_over_h_threshold")),
172  pt_neutral_threshold_(ps.getParameter<double>("pt_neutral_threshold")),
173  resol_calo_offset_had_(ps.getParameter<double>("resol_calo_offset_had")),
174  resol_calo_scale_had_(ps.getParameter<double>("resol_calo_scale_had")),
175  resol_calo_offset_em_(ps.getParameter<double>("resol_calo_offset_em")),
176  resol_calo_scale_em_(ps.getParameter<double>("resol_calo_scale_em")),
177  eidInputName_(ps.getParameter<std::string>("eid_input_name")),
178  eidOutputNameEnergy_(ps.getParameter<std::string>("eid_output_name_energy")),
179  eidOutputNameId_(ps.getParameter<std::string>("eid_output_name_id")),
180  eidMinClusterEnergy_(ps.getParameter<double>("eid_min_cluster_energy")),
181  eidNLayers_(ps.getParameter<int>("eid_n_layers")),
182  eidNClusters_(ps.getParameter<int>("eid_n_clusters")),
183  eidSession_(nullptr) {
184  produces<std::vector<Trackster>>();
185  produces<std::vector<TICLCandidate>>();
186 
187  std::string detectorName_ = (detector_ == "HFNose") ? "HGCalHFNoseSensitive" : "HGCalEESensitive";
188  hdc_token_ =
189  esConsumes<HGCalDDDConstants, IdealGeometryRecord, edm::Transition::BeginRun>(edm::ESInputTag("", detectorName_));
190 
191  auto linkingPSet = ps.getParameter<edm::ParameterSet>("linkingPSet");
192  auto algoType = linkingPSet.getParameter<std::string>("type");
193  linkingAlgo_ = LinkingAlgoFactory::get()->create(algoType, linkingPSet);
194 }
ESGetTokenH3DDVariant esConsumes(std::string const &Record, edm::ConsumesCollector &)
Definition: DeDxTools.cc:283
T getParameter(std::string const &) const
Definition: ParameterSet.h:303
const edm::EDGetTokenT< std::vector< Trackster > > tracksters_clue3d_token_
tensorflow::Session * eidSession_
const tensorflow::Session * tfSession_
const edm::EDGetTokenT< std::vector< reco::CaloCluster > > clusters_token_
const edm::ESGetToken< CaloGeometry, CaloGeometryRecord > geometry_token_
const edm::EDGetTokenT< edm::ValueMap< float > > tracks_time_quality_token_
const edm::EDGetTokenT< edm::ValueMap< float > > tracks_time_err_token_
const edm::EDGetTokenT< std::vector< reco::Muon > > muons_token_
const edm::EDGetTokenT< edm::ValueMap< std::pair< float, float > > > clustersTime_token_
const edm::EDGetTokenT< std::vector< reco::Track > > tracks_token_
const std::string eidOutputNameEnergy_
std::unique_ptr< LinkingAlgoBase > linkingAlgo_
const edm::ESGetToken< MagneticField, IdealMagneticFieldRecord > bfield_token_
edm::ESGetToken< HGCalDDDConstants, IdealGeometryRecord > hdc_token_
const edm::ESGetToken< Propagator, TrackingComponentsRecord > propagator_token_
const edm::EDGetTokenT< edm::ValueMap< float > > tracks_time_token_
#define get
const edm::ESGetToken< TfGraphDefWrapper, TfGraphRecord > tfDnnToken_

◆ ~TrackstersMergeProducer()

TrackstersMergeProducer::~TrackstersMergeProducer ( )
inlineoverride

Definition at line 56 of file TrackstersMergeProducer.cc.

56 {};

Member Function Documentation

◆ assignTimeToCandidates()

void TrackstersMergeProducer::assignTimeToCandidates ( std::vector< TICLCandidate > &  resultCandidates) const
private

Definition at line 547 of file TrackstersMergeProducer.cc.

References funct::pow(), mathSSE::sqrt(), and protons_cff::time.

Referenced by produce().

547  {
548  for (auto &cand : resultCandidates) {
549  if (cand.tracksters().size() > 1) { // For single-trackster candidates the timing is already set
550  float time = 0.f;
551  float timeErr = 0.f;
552  for (const auto &tr : cand.tracksters()) {
553  if (tr->timeError() > 0) {
554  auto invTimeESq = pow(tr->timeError(), -2);
555  time += tr->time() * invTimeESq;
556  timeErr += invTimeESq;
557  }
558  }
559  if (timeErr > 0) {
560  timeErr = 1. / timeErr;
561 
562  cand.setTime(time * timeErr);
563  cand.setTimeError(sqrt(timeErr));
564  }
565  }
566  }
567 }
T sqrt(T t)
Definition: SSEVec.h:19
Power< A, B >::type pow(const A &a, const B &b)
Definition: Power.h:29

◆ beginJob()

void TrackstersMergeProducer::beginJob ( void  )

Definition at line 196 of file TrackstersMergeProducer.cc.

196 {}

◆ beginRun()

void TrackstersMergeProducer::beginRun ( edm::Run const &  iEvent,
edm::EventSetup const &  es 
)
override

Definition at line 200 of file TrackstersMergeProducer.cc.

References bfield_token_, relativeConstraints::geom, geometry_token_, edm::EventSetup::getHandle(), hdc_token_, hgcons_, linkingAlgo_, edm::ESHandle< T >::product(), TrackCandidateProducer_cfi::propagator, propagator_token_, rhtools_, and hgcal::RecHitTools::setGeometry().

200  {
201  edm::ESHandle<HGCalDDDConstants> hdc = es.getHandle(hdc_token_);
202  hgcons_ = hdc.product();
203 
206 
207  edm::ESHandle<MagneticField> bfield = es.getHandle(bfield_token_);
209 
210  linkingAlgo_->initialize(hgcons_, rhtools_, bfield, propagator);
211 };
const edm::ESGetToken< CaloGeometry, CaloGeometryRecord > geometry_token_
T const * product() const
Definition: ESHandle.h:86
std::unique_ptr< LinkingAlgoBase > linkingAlgo_
const edm::ESGetToken< MagneticField, IdealMagneticFieldRecord > bfield_token_
edm::ESGetToken< HGCalDDDConstants, IdealGeometryRecord > hdc_token_
const HGCalDDDConstants * hgcons_
void setGeometry(CaloGeometry const &)
Definition: RecHitTools.cc:68
const edm::ESGetToken< Propagator, TrackingComponentsRecord > propagator_token_

◆ dumpTrackster()

void TrackstersMergeProducer::dumpTrackster ( const Trackster t) const
private

Definition at line 228 of file TrackstersMergeProducer.cc.

References alignBH_cfg::fixed, dqmMemoryStats::float, LogDebug, AlCaHLTBitMon_ParallelJobs::p, alignCSCRings::s, mathSSE::sqrt(), and submitPVValidationJobs::t.

228  {
229  auto e_over_h = (t.raw_em_pt() / ((t.raw_pt() - t.raw_em_pt()) != 0. ? (t.raw_pt() - t.raw_em_pt()) : 1.));
230  LogDebug("TrackstersMergeProducer")
231  << "\nTrackster raw_pt: " << t.raw_pt() << " raw_em_pt: " << t.raw_em_pt() << " eoh: " << e_over_h
232  << " barycenter: " << t.barycenter() << " eta,phi (baricenter): " << t.barycenter().eta() << ", "
233  << t.barycenter().phi() << " eta,phi (eigen): " << t.eigenvectors(0).eta() << ", " << t.eigenvectors(0).phi()
234  << " pt(eigen): " << std::sqrt(t.eigenvectors(0).Unit().perp2()) * t.raw_energy() << " seedID: " << t.seedID()
235  << " seedIndex: " << t.seedIndex() << " size: " << t.vertices().size() << " average usage: "
236  << (std::accumulate(std::begin(t.vertex_multiplicity()), std::end(t.vertex_multiplicity()), 0.) /
237  (float)t.vertex_multiplicity().size())
238  << " raw_energy: " << t.raw_energy() << " regressed energy: " << t.regressed_energy()
239  << " probs(ga/e/mu/np/cp/nh/am/unk): ";
240  for (auto const &p : t.id_probabilities()) {
241  LogDebug("TrackstersMergeProducer") << std::fixed << p << " ";
242  }
243  LogDebug("TrackstersMergeProducer") << " sigmas: ";
244  for (auto const &s : t.sigmas()) {
245  LogDebug("TrackstersMergeProducer") << s << " ";
246  }
247  LogDebug("TrackstersMergeProducer") << std::endl;
248 }
T sqrt(T t)
Definition: SSEVec.h:19
#define LogDebug(id)

◆ endJob()

void TrackstersMergeProducer::endJob ( void  )

Definition at line 198 of file TrackstersMergeProducer.cc.

198 {};

◆ energyRegressionAndID()

void TrackstersMergeProducer::energyRegressionAndID ( const std::vector< reco::CaloCluster > &  layerClusters,
const tensorflow::Session *  eidSession,
std::vector< Trackster > &  result 
) const
private

Definition at line 421 of file TrackstersMergeProducer.cc.

References a, funct::abs(), b, data, eidInputName_, eidMinClusterEnergy_, eidNClusters_, eidNFeatures_, eidNLayers_, eidOutputNameEnergy_, eidOutputNameId_, HCALHighEnergyHPDFilter_cfi::energy, reco::CaloCluster::energy(), reco::CaloCluster::eta(), f, lowptgsfeleseed::features(), dqmMemoryStats::float, hgcal::RecHitTools::getLayerWithOffset(), reco::CaloCluster::hitsAndFractions(), mps_fire::i, input, crabTemplate::inputList, createfilelist::int, dqmiolumiharvest::j, dqmdumpme::k, MainPageGenerator::l, hltEgammaHGCALIDVarsL1Seeded_cfi::layerClusters, jetsAK4_CHS_cff::outputNames, PatBasicFWLiteJetAnalyzer_Selector_cfg::outputs, reco::CaloCluster::phi(), rhtools_, tensorflow::run(), l1trig_cff::shape, jetUpdater_cfi::sort, submitPVValidationJobs::t, ticl::Trackster::vertex_multiplicity(), and ticl::Trackster::vertices().

Referenced by produce().

423  {
424  // Energy regression and particle identification strategy:
425  //
426  // 1. Set default values for regressed energy and particle id for each trackster.
427  // 2. Store indices of tracksters whose total sum of cluster energies is above the
428  // eidMinClusterEnergy_ (GeV) threshold. Inference is not applied for soft tracksters.
429  // 3. When no trackster passes the selection, return.
430  // 4. Create input and output tensors. The batch dimension is determined by the number of
431  // selected tracksters.
432  // 5. Fill input tensors with layer cluster features. Per layer, clusters are ordered descending
433  // by energy. Given that tensor data is contiguous in memory, we can use pointer arithmetic to
434  // fill values, even with batching.
435  // 6. Zero-fill features for empty clusters in each layer.
436  // 7. Batched inference.
437  // 8. Assign the regressed energy and id probabilities to each trackster.
438  //
439  // Indices used throughout this method:
440  // i -> batch element / trackster
441  // j -> layer
442  // k -> cluster
443  // l -> feature
444 
445  // do nothing when no trackster passes the selection (3)
446  int batchSize = (int)tracksters.size();
447  if (batchSize == 0) {
448  return;
449  }
450 
451  for (auto &t : tracksters) {
452  t.setRegressedEnergy(0.f);
453  t.zeroProbabilities();
454  }
455 
456  // create input and output tensors (4)
457  tensorflow::TensorShape shape({batchSize, eidNLayers_, eidNClusters_, eidNFeatures_});
458  tensorflow::Tensor input(tensorflow::DT_FLOAT, shape);
460  static constexpr int inputDimension = 4;
461 
462  std::vector<tensorflow::Tensor> outputs;
463  std::vector<std::string> outputNames;
464  if (!eidOutputNameEnergy_.empty()) {
466  }
467  if (!eidOutputNameId_.empty()) {
468  outputNames.push_back(eidOutputNameId_);
469  }
470 
471  // fill input tensor (5)
472  for (int i = 0; i < batchSize; i++) {
473  const Trackster &trackster = tracksters[i];
474 
475  // per layer, we only consider the first eidNClusters_ clusters in terms of
476  // energy, so in order to avoid creating large / nested structures to do
477  // the sorting for an unknown number of total clusters, create a sorted
478  // list of layer cluster indices to keep track of the filled clusters
479  std::vector<int> clusterIndices(trackster.vertices().size());
480  for (int k = 0; k < (int)trackster.vertices().size(); k++) {
481  clusterIndices[k] = k;
482  }
483  sort(clusterIndices.begin(), clusterIndices.end(), [&layerClusters, &trackster](const int &a, const int &b) {
484  return layerClusters[trackster.vertices(a)].energy() > layerClusters[trackster.vertices(b)].energy();
485  });
486 
487  // keep track of the number of seen clusters per layer
488  std::vector<int> seenClusters(eidNLayers_);
489 
490  // loop through clusters by descending energy
491  for (const int &k : clusterIndices) {
492  // get features per layer and cluster and store the values directly in the input tensor
493  const reco::CaloCluster &cluster = layerClusters[trackster.vertices(k)];
494  int j = rhtools_.getLayerWithOffset(cluster.hitsAndFractions()[0].first) - 1;
495  if (j < eidNLayers_ && seenClusters[j] < eidNClusters_) {
496  // get the pointer to the first feature value for the current batch, layer and cluster
497  float *features = &input.tensor<float, inputDimension>()(i, j, seenClusters[j], 0);
498 
499  // fill features
500  *(features++) = float(cluster.energy() / float(trackster.vertex_multiplicity(k)));
501  *(features++) = float(std::abs(cluster.eta()));
502  *(features) = float(cluster.phi());
503 
504  // increment seen clusters
505  seenClusters[j]++;
506  }
507  }
508 
509  // zero-fill features of empty clusters in each layer (6)
510  for (int j = 0; j < eidNLayers_; j++) {
511  for (int k = seenClusters[j]; k < eidNClusters_; k++) {
512  float *features = &input.tensor<float, inputDimension>()(i, j, k, 0);
513  for (int l = 0; l < eidNFeatures_; l++) {
514  *(features++) = 0.f;
515  }
516  }
517  }
518  }
519 
520  // run the inference (7)
522 
523  // store regressed energy per trackster (8)
524  if (!eidOutputNameEnergy_.empty()) {
525  // get the pointer to the energy tensor, dimension is batch x 1
526  float *energy = outputs[0].flat<float>().data();
527 
528  for (int i = 0; i < batchSize; ++i) {
529  float regressedEnergy =
530  tracksters[i].raw_energy() > eidMinClusterEnergy_ ? energy[i] : tracksters[i].raw_energy();
531  tracksters[i].setRegressedEnergy(regressedEnergy);
532  }
533  }
534 
535  // store id probabilities per trackster (8)
536  if (!eidOutputNameId_.empty()) {
537  // get the pointer to the id probability tensor, dimension is batch x id_probabilities.size()
538  int probsIdx = !eidOutputNameEnergy_.empty();
539  float *probs = outputs[probsIdx].flat<float>().data();
540  int probsNumber = tracksters[0].id_probabilities().size();
541  for (int i = 0; i < batchSize; ++i) {
542  tracksters[i].setProbabilities(&probs[i * probsNumber]);
543  }
544  }
545 }
std::vector< NamedTensor > NamedTensorList
Definition: TensorFlow.h:31
const std::vector< std::pair< DetId, float > > & hitsAndFractions() const
Definition: CaloCluster.h:210
double phi() const
azimuthal angle of cluster centroid
Definition: CaloCluster.h:184
static std::string const input
Definition: EdmProvDump.cc:50
static constexpr int eidNFeatures_
std::vector< float > features(const reco::PreId &ecal, const reco::PreId &hcal, double rho, const reco::BeamSpot &spot, noZS::EcalClusterLazyTools &ecalTools)
void run(Session *session, const NamedTensorList &inputs, const std::vector< std::string > &outputNames, std::vector< Tensor > *outputs, const thread::ThreadPoolOptions &threadPoolOptions)
Definition: TensorFlow.cc:259
Abs< T >::type abs(const T &t)
Definition: Abs.h:22
double f[11][100]
string inputList
Definition: crabTemplate.py:6
double energy() const
cluster energy
Definition: CaloCluster.h:149
std::vector< unsigned int > & vertices()
Definition: Trackster.h:57
const std::string eidOutputNameEnergy_
std::vector< float > & vertex_multiplicity()
Definition: Trackster.h:58
double b
Definition: hdecay.h:118
char data[epos_bytes_allocation]
Definition: EPOS_Wrapper.h:79
double a
Definition: hdecay.h:119
double eta() const
pseudorapidity of cluster centroid
Definition: CaloCluster.h:181
unsigned int getLayerWithOffset(const DetId &) const
Definition: RecHitTools.cc:365

◆ fillDescriptions()

void TrackstersMergeProducer::fillDescriptions ( edm::ConfigurationDescriptions descriptions)
static

Definition at line 595 of file TrackstersMergeProducer.cc.

References edm::ConfigurationDescriptions::add(), edm::ParameterSetDescription::addNode(), submitPVResolutionJobs::desc, ProducerED_cfi::InputTag, and AlCaHLTBitMon_QueryRunRegistry::string.

595  {
597 
598  edm::ParameterSetDescription linkingDesc;
599  linkingDesc.addNode(edm::PluginDescription<LinkingAlgoFactory>("type", "LinkingAlgoByDirectionGeometric", true));
600  desc.add<edm::ParameterSetDescription>("linkingPSet", linkingDesc);
601 
602  desc.add<edm::InputTag>("trackstersclue3d", edm::InputTag("ticlTrackstersCLUE3DHigh"));
603  desc.add<edm::InputTag>("layer_clusters", edm::InputTag("hgcalLayerClusters"));
604  desc.add<edm::InputTag>("layer_clustersTime", edm::InputTag("hgcalLayerClusters", "timeLayerCluster"));
605  desc.add<edm::InputTag>("tracks", edm::InputTag("generalTracks"));
606  desc.add<edm::InputTag>("tracksTime", edm::InputTag("tofPID:t0"));
607  desc.add<edm::InputTag>("tracksTimeQual", edm::InputTag("mtdTrackQualityMVA:mtdQualMVA"));
608  desc.add<edm::InputTag>("tracksTimeErr", edm::InputTag("tofPID:sigmat0"));
609  desc.add<edm::InputTag>("muons", edm::InputTag("muons1stStep"));
610  desc.add<std::string>("detector", "HGCAL");
611  desc.add<std::string>("propagator", "PropagatorWithMaterial");
612  desc.add<bool>("optimiseAcrossTracksters", true);
613  desc.add<bool>("useMTDTiming", true);
614  desc.add<int>("eta_bin_window", 1);
615  desc.add<int>("phi_bin_window", 1);
616  desc.add<double>("pt_sigma_high", 2.);
617  desc.add<double>("pt_sigma_low", 2.);
618  desc.add<double>("halo_max_distance2", 4.);
619  desc.add<double>("track_min_pt", 1.);
620  desc.add<double>("track_min_eta", 1.48);
621  desc.add<double>("track_max_eta", 3.);
622  desc.add<int>("track_max_missing_outerhits", 5);
623  desc.add<double>("cosangle_align", 0.9945);
624  desc.add<double>("e_over_h_threshold", 1.);
625  desc.add<double>("pt_neutral_threshold", 2.);
626  desc.add<double>("resol_calo_offset_had", 1.5);
627  desc.add<double>("resol_calo_scale_had", 0.15);
628  desc.add<double>("resol_calo_offset_em", 1.5);
629  desc.add<double>("resol_calo_scale_em", 0.15);
630  desc.add<std::string>("tfDnnLabel", "tracksterSelectionTf");
631  desc.add<std::string>("eid_input_name", "input");
632  desc.add<std::string>("eid_output_name_energy", "output/regressed_energy");
633  desc.add<std::string>("eid_output_name_id", "output/id_probabilities");
634  desc.add<double>("eid_min_cluster_energy", 2.5);
635  desc.add<int>("eid_n_layers", 50);
636  desc.add<int>("eid_n_clusters", 10);
637  descriptions.add("trackstersMergeProducer", desc);
638 }
ParameterDescriptionNode * addNode(ParameterDescriptionNode const &node)
void add(std::string const &label, ParameterSetDescription const &psetDescription)

◆ fillTile()

void TrackstersMergeProducer::fillTile ( TICLTracksterTiles tracksterTile,
const std::vector< Trackster > &  tracksters,
TracksterIterIndex  tracksterIteration 
)
private

Definition at line 213 of file TrackstersMergeProducer.cc.

References TICLGenericTile< T >::fill(), LogDebug, BeamMonitor_cff::phiBin, and submitPVValidationJobs::t.

215  {
216  int tracksterId = 0;
217  for (auto const &t : tracksters) {
218  tracksterTile.fill(tracksterIteration, t.barycenter().eta(), t.barycenter().phi(), tracksterId);
219  LogDebug("TrackstersMergeProducer") << "Adding tracksterId: " << tracksterId << " into bin [eta,phi]: [ "
220  << tracksterTile[tracksterIteration].etaBin(t.barycenter().eta()) << ", "
221  << tracksterTile[tracksterIteration].phiBin(t.barycenter().phi())
222  << "] for iteration: " << tracksterIteration << std::endl;
223 
224  tracksterId++;
225  }
226 }
void fill(int index, double eta, double phi, unsigned int objectId)
Definition: TICLLayerTile.h:99
#define LogDebug(id)

◆ globalEndJob()

static void TrackstersMergeProducer::globalEndJob ( TrackstersCache )
static

◆ initializeGlobalCache()

static std::unique_ptr<TrackstersCache> TrackstersMergeProducer::initializeGlobalCache ( const edm::ParameterSet )
static

◆ printTrackstersDebug()

void TrackstersMergeProducer::printTrackstersDebug ( const std::vector< Trackster > &  tracksters,
const char *  label 
) const
private

Definition at line 569 of file TrackstersMergeProducer.cc.

References alignBH_cfg::fixed, dqmMemoryStats::float, label, LogDebug, AlCaHLTBitMon_ParallelJobs::p, alignCSCRings::s, mathSSE::sqrt(), and submitPVValidationJobs::t.

569  {
570 #ifdef EDM_ML_DEBUG
571  int counter = 0;
572  for (auto const &t : tracksters) {
573  LogDebug("TrackstersMergeProducer")
574  << counter++ << " TrackstersMergeProducer (" << label << ") obj barycenter: " << t.barycenter()
575  << " eta,phi (baricenter): " << t.barycenter().eta() << ", " << t.barycenter().phi()
576  << " eta,phi (eigen): " << t.eigenvectors(0).eta() << ", " << t.eigenvectors(0).phi()
577  << " pt(eigen): " << std::sqrt(t.eigenvectors(0).Unit().perp2()) * t.raw_energy() << " seedID: " << t.seedID()
578  << " seedIndex: " << t.seedIndex() << " size: " << t.vertices().size() << " average usage: "
579  << (std::accumulate(std::begin(t.vertex_multiplicity()), std::end(t.vertex_multiplicity()), 0.) /
580  (float)t.vertex_multiplicity().size())
581  << " raw_energy: " << t.raw_energy() << " regressed energy: " << t.regressed_energy()
582  << " probs(ga/e/mu/np/cp/nh/am/unk): ";
583  for (auto const &p : t.id_probabilities()) {
584  LogDebug("TrackstersMergeProducer") << std::fixed << p << " ";
585  }
586  LogDebug("TrackstersMergeProducer") << " sigmas: ";
587  for (auto const &s : t.sigmas()) {
588  LogDebug("TrackstersMergeProducer") << s << " ";
589  }
590  LogDebug("TrackstersMergeProducer") << std::endl;
591  }
592 #endif
593 }
char const * label
T sqrt(T t)
Definition: SSEVec.h:19
#define LogDebug(id)

◆ produce()

void TrackstersMergeProducer::produce ( edm::Event evt,
const edm::EventSetup es 
)
override

Definition at line 250 of file TrackstersMergeProducer.cc.

References cms::cuda::assert(), ticl::assignPCAtoTracksters(), assignTimeToCandidates(), HLT_2023v12_cff::candidates, clusters_token_, clustersTime_token_, filterCSVwithJSON::copy, HLT_2023v12_cff::distance, HPSPFTauProducerPuppi_cfi::electron, HCALHighEnergyHPDFilter_cfi::energy, energyRegressionAndID(), spr::find(), edm::Event::get(), edm::Event::getByToken(), edm::EventSetup::getData(), hgcal::RecHitTools::getPositionLayer(), mps_fire::i, edm::Ptr< T >::id(), hgcal::RecHitTools::lastLayerEE(), hltEgammaHGCALIDVarsL1Seeded_cfi::layerClusters, linkingAlgo_, LogDebug, eostools::move(), ticl::mpion, ticl::mpion2, PDWG_BPHSkim_cff::muons, muons_token_, GetRecoTauVFromDQM_MC_cff::next, EgammaValidation_cff::pdgId, displacedMuons_cfi::photon, edm::Event::put(), rhtools_, jetUpdater_cfi::sort, mathSSE::sqrt(), tfDnnToken_, tfSession_, pwdgSkimBPark_cfi::tracks, tracks_time_err_token_, tracks_time_quality_token_, tracks_time_token_, tracks_token_, tracksters_clue3d_token_, useMTDTiming_, and z.

250  {
251  auto resultTrackstersMerged = std::make_unique<std::vector<Trackster>>();
252  auto resultCandidates = std::make_unique<std::vector<TICLCandidate>>();
253  auto resultFromTracks = std::make_unique<std::vector<TICLCandidate>>();
254  tfSession_ = es.getData(tfDnnToken_).getSession();
255 
256  edm::Handle<std::vector<Trackster>> trackstersclue3d_h;
257  evt.getByToken(tracksters_clue3d_token_, trackstersclue3d_h);
258 
260  evt.getByToken(tracks_token_, track_h);
261  const auto &tracks = *track_h;
262 
263  const auto &layerClusters = evt.get(clusters_token_);
264  const auto &layerClustersTimes = evt.get(clustersTime_token_);
265  const auto &muons = evt.get(muons_token_);
267  edm::Handle<edm::ValueMap<float>> trackTimeErr_h;
268  edm::Handle<edm::ValueMap<float>> trackTimeQual_h;
269  if (useMTDTiming_) {
270  evt.getByToken(tracks_time_token_, trackTime_h);
271  evt.getByToken(tracks_time_err_token_, trackTimeErr_h);
272  evt.getByToken(tracks_time_quality_token_, trackTimeQual_h);
273  }
274 
275  // Linking
276  linkingAlgo_->linkTracksters(track_h,
277  trackTime_h,
278  trackTimeErr_h,
279  trackTimeQual_h,
280  muons,
281  trackstersclue3d_h,
283  *resultCandidates,
284  *resultFromTracks);
285 
286  // Print debug info
287  LogDebug("TrackstersMergeProducer") << "Results from the linking step : " << std::endl
288  << "No. of Tracks : " << tracks.size()
289  << " No. of Tracksters : " << (*trackstersclue3d_h).size() << std::endl
290  << "(neutral candidates have track id -1)" << std::endl;
291 
292  std::vector<TICLCandidate> &candidates = *resultCandidates;
293  for (const auto &cand : candidates) {
294  auto track_ptr = cand.trackPtr();
295  auto trackster_ptrs = cand.tracksters();
296 
297 #ifdef EDM_ML_DEBUG
298  auto track_idx = track_ptr.get() - (edm::Ptr<reco::Track>(track_h, 0)).get();
299  track_idx = (track_ptr.isNull()) ? -1 : track_idx;
300  LogDebug("TrackstersMergeProducer") << "PDG ID " << cand.pdgId() << " charge " << cand.charge() << " p " << cand.p()
301  << std::endl;
302  LogDebug("TrackstersMergeProducer") << "track id (p) : " << track_idx << " ("
303  << (track_ptr.isNull() ? -1 : track_ptr->p()) << ") "
304  << " trackster ids (E) : ";
305 #endif
306 
307  // Merge included tracksters
308  ticl::Trackster outTrackster;
309  auto updated_size = 0;
310  for (const auto &ts_ptr : trackster_ptrs) {
311 #ifdef EDM_ML_DEBUG
312  auto ts_idx = ts_ptr.get() - (edm::Ptr<ticl::Trackster>(trackstersclue3d_h, 0)).get();
313  LogDebug("TrackstersMergeProducer") << ts_idx << " (" << ts_ptr->raw_energy() << ") ";
314 #endif
315 
316  auto &thisTrackster = *ts_ptr;
317  updated_size += thisTrackster.vertices().size();
318  outTrackster.vertices().reserve(updated_size);
319  outTrackster.vertex_multiplicity().reserve(updated_size);
320  std::copy(std::begin(thisTrackster.vertices()),
321  std::end(thisTrackster.vertices()),
322  std::back_inserter(outTrackster.vertices()));
323  std::copy(std::begin(thisTrackster.vertex_multiplicity()),
324  std::end(thisTrackster.vertex_multiplicity()),
325  std::back_inserter(outTrackster.vertex_multiplicity()));
326  }
327 
328  LogDebug("TrackstersMergeProducer") << std::endl;
329 
330  // Find duplicate LCs
331  auto &orig_vtx = outTrackster.vertices();
332  auto vtx_sorted{orig_vtx};
333  std::sort(std::begin(vtx_sorted), std::end(vtx_sorted));
334  for (unsigned int iLC = 1; iLC < vtx_sorted.size(); ++iLC) {
335  if (vtx_sorted[iLC] == vtx_sorted[iLC - 1]) {
336  // Clean up duplicate LCs
337  const auto lcIdx = vtx_sorted[iLC];
338  const auto firstEl = std::find(orig_vtx.begin(), orig_vtx.end(), lcIdx);
339  const auto firstPos = std::distance(std::begin(orig_vtx), firstEl);
340  auto iDup = std::find(std::next(firstEl), orig_vtx.end(), lcIdx);
341  while (iDup != orig_vtx.end()) {
342  orig_vtx.erase(iDup);
343  outTrackster.vertex_multiplicity().erase(outTrackster.vertex_multiplicity().begin() +
344  std::distance(std::begin(orig_vtx), iDup));
345  outTrackster.vertex_multiplicity()[firstPos] -= 1;
346  iDup = std::find(std::next(firstEl), orig_vtx.end(), lcIdx);
347  };
348  }
349  }
350 
351  outTrackster.zeroProbabilities();
352  if (!track_ptr.isNull())
353  outTrackster.setSeed(track_h.id(), track_ptr.get() - (edm::Ptr<reco::Track>(track_h, 0)).get());
354  if (!outTrackster.vertices().empty()) {
355  resultTrackstersMerged->push_back(outTrackster);
356  }
357  }
358 
359  assignPCAtoTracksters(*resultTrackstersMerged,
361  layerClustersTimes,
363  energyRegressionAndID(layerClusters, tfSession_, *resultTrackstersMerged);
364 
365  //filling the TICLCandidates information
366  assert(resultTrackstersMerged->size() == resultCandidates->size());
367 
368  auto isHad = [](const Trackster &tracksterMerge) {
369  return tracksterMerge.id_probability(Trackster::ParticleType::photon) +
370  tracksterMerge.id_probability(Trackster::ParticleType::electron) <
371  0.5;
372  };
373  for (size_t i = 0; i < resultTrackstersMerged->size(); i++) {
374  auto const &tm = (*resultTrackstersMerged)[i];
375  auto &cand = (*resultCandidates)[i];
376  //common properties
377  cand.setIdProbabilities(tm.id_probabilities());
378  //charged candidates
379  if (!cand.trackPtr().isNull()) {
380  auto pdgId = isHad(tm) ? 211 : 11;
381  auto const &tk = cand.trackPtr().get();
382  cand.setPdgId(pdgId * tk->charge());
383  cand.setCharge(tk->charge());
384  cand.setRawEnergy(tm.raw_energy());
385  auto const &regrE = tm.regressed_energy();
386  math::XYZTLorentzVector p4(regrE * tk->momentum().unit().x(),
387  regrE * tk->momentum().unit().y(),
388  regrE * tk->momentum().unit().z(),
389  regrE);
390  cand.setP4(p4);
391  } else { // neutral candidates
392  auto pdgId = isHad(tm) ? 130 : 22;
393  cand.setPdgId(pdgId);
394  cand.setCharge(0);
395  cand.setRawEnergy(tm.raw_energy());
396  const float &regrE = tm.regressed_energy();
397  math::XYZTLorentzVector p4(regrE * tm.barycenter().unit().x(),
398  regrE * tm.barycenter().unit().y(),
399  regrE * tm.barycenter().unit().z(),
400  regrE);
401  cand.setP4(p4);
402  }
403  }
404  for (auto &cand : *resultFromTracks) { //Tracks with no linked tracksters are promoted to charged hadron candidates
405  auto const &tk = cand.trackPtr().get();
406  cand.setPdgId(211 * tk->charge());
407  cand.setCharge(tk->charge());
408  const float energy = std::sqrt(tk->p() * tk->p() + ticl::mpion2);
409  cand.setRawEnergy(energy);
410  math::PtEtaPhiMLorentzVector p4Polar(tk->pt(), tk->eta(), tk->phi(), ticl::mpion);
411  cand.setP4(p4Polar);
412  }
413  // Compute timing
414  resultCandidates->insert(resultCandidates->end(), resultFromTracks->begin(), resultFromTracks->end());
415  assignTimeToCandidates(*resultCandidates);
416 
417  evt.put(std::move(resultTrackstersMerged));
418  evt.put(std::move(resultCandidates));
419 }
constexpr double mpion
Definition: commons.h:11
OrphanHandle< PROD > put(std::unique_ptr< PROD > product)
Put a new product.
Definition: Event.h:133
T const & getData(const ESGetToken< T, R > &iToken) const noexcept(false)
Definition: EventSetup.h:119
bool get(ProductID const &oid, Handle< PROD > &result) const
Definition: Event.h:347
const edm::EDGetTokenT< std::vector< Trackster > > tracksters_clue3d_token_
ProductID id() const
Accessor for product ID.
Definition: Ptr.h:160
void assignTimeToCandidates(std::vector< TICLCandidate > &resultCandidates) const
const tensorflow::Session * tfSession_
bool getByToken(EDGetToken token, Handle< PROD > &result) const
Definition: Event.h:540
const edm::EDGetTokenT< std::vector< reco::CaloCluster > > clusters_token_
void find(edm::Handle< EcalRecHitCollection > &hits, DetId thisDet, std::vector< EcalRecHitCollection::const_iterator > &hit, bool debug=false)
Definition: FindCaloHit.cc:19
assert(be >=bs)
const edm::EDGetTokenT< edm::ValueMap< float > > tracks_time_quality_token_
PtEtaPhiMLorentzVectorD PtEtaPhiMLorentzVector
Lorentz vector with cartesian internal representation.
Definition: LorentzVector.h:25
void assignPCAtoTracksters(std::vector< Trackster > &, const std::vector< reco::CaloCluster > &, const edm::ValueMap< std::pair< float, float >> &, double, bool energyWeight=true)
XYZTLorentzVectorD XYZTLorentzVector
Lorentz vector with cylindrical internal representation using pseudorapidity.
Definition: LorentzVector.h:29
const edm::EDGetTokenT< edm::ValueMap< float > > tracks_time_err_token_
T sqrt(T t)
Definition: SSEVec.h:19
void energyRegressionAndID(const std::vector< reco::CaloCluster > &layerClusters, const tensorflow::Session *, std::vector< Trackster > &result) const
const edm::EDGetTokenT< std::vector< reco::Muon > > muons_token_
const edm::EDGetTokenT< edm::ValueMap< std::pair< float, float > > > clustersTime_token_
const edm::EDGetTokenT< std::vector< reco::Track > > tracks_token_
std::unique_ptr< LinkingAlgoBase > linkingAlgo_
GlobalPoint getPositionLayer(int layer, bool nose=false) const
Definition: RecHitTools.cc:141
constexpr float mpion2
Definition: commons.h:12
const edm::EDGetTokenT< edm::ValueMap< float > > tracks_time_token_
def move(src, dest)
Definition: eostools.py:511
unsigned int lastLayerEE(bool nose=false) const
Definition: RecHitTools.h:75
const edm::ESGetToken< TfGraphDefWrapper, TfGraphRecord > tfDnnToken_
#define LogDebug(id)

Member Data Documentation

◆ bfield_token_

const edm::ESGetToken<MagneticField, IdealMagneticFieldRecord> TrackstersMergeProducer::bfield_token_
private

Definition at line 100 of file TrackstersMergeProducer.cc.

Referenced by beginRun().

◆ clusters_token_

const edm::EDGetTokenT<std::vector<reco::CaloCluster> > TrackstersMergeProducer::clusters_token_
private

Definition at line 85 of file TrackstersMergeProducer.cc.

Referenced by produce().

◆ clustersTime_token_

const edm::EDGetTokenT<edm::ValueMap<std::pair<float, float> > > TrackstersMergeProducer::clustersTime_token_
private

Definition at line 86 of file TrackstersMergeProducer.cc.

Referenced by produce().

◆ cosangle_align_

const double TrackstersMergeProducer::cosangle_align_
private

Definition at line 113 of file TrackstersMergeProducer.cc.

◆ detector_

const std::string TrackstersMergeProducer::detector_
private

Definition at line 97 of file TrackstersMergeProducer.cc.

Referenced by TrackstersMergeProducer().

◆ e_over_h_threshold_

const double TrackstersMergeProducer::e_over_h_threshold_
private

Definition at line 114 of file TrackstersMergeProducer.cc.

◆ eidInputName_

const std::string TrackstersMergeProducer::eidInputName_
private

Definition at line 120 of file TrackstersMergeProducer.cc.

Referenced by energyRegressionAndID().

◆ eidMinClusterEnergy_

const float TrackstersMergeProducer::eidMinClusterEnergy_
private

Definition at line 123 of file TrackstersMergeProducer.cc.

Referenced by energyRegressionAndID().

◆ eidNClusters_

const int TrackstersMergeProducer::eidNClusters_
private

Definition at line 125 of file TrackstersMergeProducer.cc.

Referenced by energyRegressionAndID().

◆ eidNFeatures_

constexpr int TrackstersMergeProducer::eidNFeatures_ = 3
staticprivate

Definition at line 135 of file TrackstersMergeProducer.cc.

Referenced by energyRegressionAndID().

◆ eidNLayers_

const int TrackstersMergeProducer::eidNLayers_
private

Definition at line 124 of file TrackstersMergeProducer.cc.

Referenced by energyRegressionAndID().

◆ eidOutputNameEnergy_

const std::string TrackstersMergeProducer::eidOutputNameEnergy_
private

Definition at line 121 of file TrackstersMergeProducer.cc.

Referenced by energyRegressionAndID().

◆ eidOutputNameId_

const std::string TrackstersMergeProducer::eidOutputNameId_
private

Definition at line 122 of file TrackstersMergeProducer.cc.

Referenced by energyRegressionAndID().

◆ eidSession_

tensorflow::Session* TrackstersMergeProducer::eidSession_
private

Definition at line 132 of file TrackstersMergeProducer.cc.

◆ eta_bin_window_

const int TrackstersMergeProducer::eta_bin_window_
private

Definition at line 104 of file TrackstersMergeProducer.cc.

◆ firstDisk_

std::unique_ptr<GeomDet> TrackstersMergeProducer::firstDisk_[2]
private

Definition at line 130 of file TrackstersMergeProducer.cc.

◆ geometry_token_

const edm::ESGetToken<CaloGeometry, CaloGeometryRecord> TrackstersMergeProducer::geometry_token_
private

Definition at line 96 of file TrackstersMergeProducer.cc.

Referenced by beginRun().

◆ halo_max_distance2_

const double TrackstersMergeProducer::halo_max_distance2_
private

Definition at line 108 of file TrackstersMergeProducer.cc.

◆ hdc_token_

edm::ESGetToken<HGCalDDDConstants, IdealGeometryRecord> TrackstersMergeProducer::hdc_token_
private

Definition at line 137 of file TrackstersMergeProducer.cc.

Referenced by beginRun(), and TrackstersMergeProducer().

◆ hgcons_

const HGCalDDDConstants* TrackstersMergeProducer::hgcons_
private

Definition at line 128 of file TrackstersMergeProducer.cc.

Referenced by beginRun().

◆ initializeGeometry_

std::once_flag TrackstersMergeProducer::initializeGeometry_
private

Definition at line 126 of file TrackstersMergeProducer.cc.

◆ linkingAlgo_

std::unique_ptr<LinkingAlgoBase> TrackstersMergeProducer::linkingAlgo_
private

Definition at line 82 of file TrackstersMergeProducer.cc.

Referenced by beginRun(), produce(), and TrackstersMergeProducer().

◆ muons_token_

const edm::EDGetTokenT<std::vector<reco::Muon> > TrackstersMergeProducer::muons_token_
private

Definition at line 91 of file TrackstersMergeProducer.cc.

Referenced by produce().

◆ optimiseAcrossTracksters_

const bool TrackstersMergeProducer::optimiseAcrossTracksters_
private

Definition at line 102 of file TrackstersMergeProducer.cc.

◆ phi_bin_window_

const int TrackstersMergeProducer::phi_bin_window_
private

Definition at line 105 of file TrackstersMergeProducer.cc.

◆ propagator_token_

const edm::ESGetToken<Propagator, TrackingComponentsRecord> TrackstersMergeProducer::propagator_token_
private

Definition at line 101 of file TrackstersMergeProducer.cc.

Referenced by beginRun().

◆ propName_

const std::string TrackstersMergeProducer::propName_
private

Definition at line 98 of file TrackstersMergeProducer.cc.

◆ pt_neutral_threshold_

const double TrackstersMergeProducer::pt_neutral_threshold_
private

Definition at line 115 of file TrackstersMergeProducer.cc.

◆ pt_sigma_high_

const double TrackstersMergeProducer::pt_sigma_high_
private

Definition at line 106 of file TrackstersMergeProducer.cc.

◆ pt_sigma_low_

const double TrackstersMergeProducer::pt_sigma_low_
private

Definition at line 107 of file TrackstersMergeProducer.cc.

◆ resol_calo_offset_em_

const double TrackstersMergeProducer::resol_calo_offset_em_
private

Definition at line 118 of file TrackstersMergeProducer.cc.

◆ resol_calo_offset_had_

const double TrackstersMergeProducer::resol_calo_offset_had_
private

Definition at line 116 of file TrackstersMergeProducer.cc.

◆ resol_calo_scale_em_

const double TrackstersMergeProducer::resol_calo_scale_em_
private

Definition at line 119 of file TrackstersMergeProducer.cc.

◆ resol_calo_scale_had_

const double TrackstersMergeProducer::resol_calo_scale_had_
private

Definition at line 117 of file TrackstersMergeProducer.cc.

◆ rhtools_

hgcal::RecHitTools TrackstersMergeProducer::rhtools_
private

Definition at line 133 of file TrackstersMergeProducer.cc.

Referenced by beginRun(), energyRegressionAndID(), and produce().

◆ tfDnnLabel_

const std::string TrackstersMergeProducer::tfDnnLabel_
private

Definition at line 92 of file TrackstersMergeProducer.cc.

◆ tfDnnToken_

const edm::ESGetToken<TfGraphDefWrapper, TfGraphRecord> TrackstersMergeProducer::tfDnnToken_
private

Definition at line 93 of file TrackstersMergeProducer.cc.

Referenced by produce().

◆ tfSession_

const tensorflow::Session* TrackstersMergeProducer::tfSession_
private

Definition at line 94 of file TrackstersMergeProducer.cc.

Referenced by produce().

◆ track_max_eta_

const double TrackstersMergeProducer::track_max_eta_
private

Definition at line 111 of file TrackstersMergeProducer.cc.

◆ track_max_missing_outerhits_

const int TrackstersMergeProducer::track_max_missing_outerhits_
private

Definition at line 112 of file TrackstersMergeProducer.cc.

◆ track_min_eta_

const double TrackstersMergeProducer::track_min_eta_
private

Definition at line 110 of file TrackstersMergeProducer.cc.

◆ track_min_pt_

const double TrackstersMergeProducer::track_min_pt_
private

Definition at line 109 of file TrackstersMergeProducer.cc.

◆ tracks_time_err_token_

const edm::EDGetTokenT<edm::ValueMap<float> > TrackstersMergeProducer::tracks_time_err_token_
private

Definition at line 90 of file TrackstersMergeProducer.cc.

Referenced by produce().

◆ tracks_time_quality_token_

const edm::EDGetTokenT<edm::ValueMap<float> > TrackstersMergeProducer::tracks_time_quality_token_
private

Definition at line 89 of file TrackstersMergeProducer.cc.

Referenced by produce().

◆ tracks_time_token_

const edm::EDGetTokenT<edm::ValueMap<float> > TrackstersMergeProducer::tracks_time_token_
private

Definition at line 88 of file TrackstersMergeProducer.cc.

Referenced by produce().

◆ tracks_token_

const edm::EDGetTokenT<std::vector<reco::Track> > TrackstersMergeProducer::tracks_token_
private

Definition at line 87 of file TrackstersMergeProducer.cc.

Referenced by produce().

◆ tracksters_clue3d_token_

const edm::EDGetTokenT<std::vector<Trackster> > TrackstersMergeProducer::tracksters_clue3d_token_
private

Definition at line 84 of file TrackstersMergeProducer.cc.

Referenced by produce().

◆ useMTDTiming_

const bool TrackstersMergeProducer::useMTDTiming_
private

Definition at line 103 of file TrackstersMergeProducer.cc.

Referenced by produce().