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 ticl::Vector 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_
 
edm::EDGetTokenT< edm::ValueMap< float > > tracks_time_err_token_
 
edm::EDGetTokenT< edm::ValueMap< float > > tracks_time_quality_token_
 
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_, hltTiclTracksterLinks_cfi::linkingPSet, AlCaHLTBitMon_QueryRunRegistry::string, tracks_time_err_token_, tracks_time_quality_token_, tracks_time_token_, and useMTDTiming_.

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

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

Referenced by produce().

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

◆ beginJob()

void TrackstersMergeProducer::beginJob ( void  )

Definition at line 199 of file TrackstersMergeProducer.cc.

199 {}

◆ beginRun()

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

Definition at line 203 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().

203  {
204  edm::ESHandle<HGCalDDDConstants> hdc = es.getHandle(hdc_token_);
205  hgcons_ = hdc.product();
206 
209 
210  edm::ESHandle<MagneticField> bfield = es.getHandle(bfield_token_);
212 
213  linkingAlgo_->initialize(hgcons_, rhtools_, bfield, propagator);
214 };
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:79
const edm::ESGetToken< Propagator, TrackingComponentsRecord > propagator_token_

◆ dumpTrackster()

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

Definition at line 231 of file TrackstersMergeProducer.cc.

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

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

◆ endJob()

void TrackstersMergeProducer::endJob ( void  )

Definition at line 201 of file TrackstersMergeProducer.cc.

201 {}

◆ energyRegressionAndID()

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

Definition at line 424 of file TrackstersMergeProducer.cc.

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

Referenced by produce().

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

◆ 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("hgcalMergeLayerClusters"));
604  desc.add<edm::InputTag>("layer_clustersTime", edm::InputTag("hgcalMergeLayerClusters", "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 216 of file TrackstersMergeProducer.cc.

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

218  {
219  int tracksterId = 0;
220  for (auto const &t : tracksters) {
221  tracksterTile.fill(tracksterIteration, t.barycenter().eta(), t.barycenter().phi(), tracksterId);
222  LogDebug("TrackstersMergeProducer") << "Adding tracksterId: " << tracksterId << " into bin [eta,phi]: [ "
223  << tracksterTile[tracksterIteration].etaBin(t.barycenter().eta()) << ", "
224  << tracksterTile[tracksterIteration].phiBin(t.barycenter().phi())
225  << "] for iteration: " << tracksterIteration << std::endl;
226 
227  tracksterId++;
228  }
229 }
void fill(int index, float eta, float phi, unsigned int objectId)
Definition: TICLLayerTile.h:97
#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, ALCARECOEcalPhiSym_cff::float, label, LogDebug, AlCaHLTBitMon_ParallelJobs::p, alignCSCRings::s, mathSSE::sqrt(), submitPVValidationJobs::t, and HitToTracksterAssociation_cfi::tracksters.

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:23
#define LogDebug(id)

◆ produce()

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

Definition at line 253 of file TrackstersMergeProducer.cc.

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

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

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

Definition at line 90 of file TrackstersMergeProducer.cc.

Referenced by produce(), and TrackstersMergeProducer().

◆ tracks_time_quality_token_

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

Definition at line 89 of file TrackstersMergeProducer.cc.

Referenced by produce(), and TrackstersMergeProducer().

◆ tracks_time_token_

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

Definition at line 88 of file TrackstersMergeProducer.cc.

Referenced by produce(), and TrackstersMergeProducer().

◆ 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(), and TrackstersMergeProducer().