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_, ticlTrackstersMerge_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 549 of file TrackstersMergeProducer.cc.

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

Referenced by produce().

549  {
550  for (auto &cand : resultCandidates) {
551  if (cand.tracksters().size() > 1) { // For single-trackster candidates the timing is already set
552  float time = 0.f;
553  float invTimeErr = 0.f;
554  for (const auto &tr : cand.tracksters()) {
555  if (tr->timeError() > 0) {
556  auto invTimeESq = pow(tr->timeError(), -2);
557  time += tr->time() * invTimeESq;
558  invTimeErr += invTimeESq;
559  }
560  }
561  if (invTimeErr > 0) {
562  cand.setTime(time / invTimeErr, sqrt(1.f / invTimeErr));
563  }
564  }
565  }
566 }
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, nano_mu_digi_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 423 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_, hcalRecHitTable_cff::energy, reco::CaloCluster::energy(), reco::CaloCluster::eta(), f, lowptgsfeleseed::features(), nano_mu_digi_cff::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().

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

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

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

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 568 of file TrackstersMergeProducer.cc.

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

568  {
569 #ifdef EDM_ML_DEBUG
570  int counter = 0;
571  for (auto const &t : tracksters) {
572  LogDebug("TrackstersMergeProducer")
573  << counter++ << " TrackstersMergeProducer (" << label << ") obj barycenter: " << t.barycenter()
574  << " eta,phi (baricenter): " << t.barycenter().eta() << ", " << t.barycenter().phi()
575  << " eta,phi (eigen): " << t.eigenvectors(0).eta() << ", " << t.eigenvectors(0).phi()
576  << " pt(eigen): " << std::sqrt(t.eigenvectors(0).Unit().perp2()) * t.raw_energy() << " seedID: " << t.seedID()
577  << " seedIndex: " << t.seedIndex() << " size: " << t.vertices().size() << " average usage: "
578  << (std::accumulate(std::begin(t.vertex_multiplicity()), std::end(t.vertex_multiplicity()), 0.) /
579  (float)t.vertex_multiplicity().size())
580  << " raw_energy: " << t.raw_energy() << " regressed energy: " << t.regressed_energy()
581  << " probs(ga/e/mu/np/cp/nh/am/unk): ";
582  for (auto const &p : t.id_probabilities()) {
583  LogDebug("TrackstersMergeProducer") << std::fixed << p << " ";
584  }
585  LogDebug("TrackstersMergeProducer") << " sigmas: ";
586  for (auto const &s : t.sigmas()) {
587  LogDebug("TrackstersMergeProducer") << s << " ";
588  }
589  LogDebug("TrackstersMergeProducer") << std::endl;
590  }
591 #endif
592 }
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_2024v13_cff::candidates, clusters_token_, clustersTime_token_, filterCSVwithJSON::copy, HLT_2024v13_cff::distance, HPSPFTauProducerPuppi_cfi::electron, hcalRecHitTable_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  energyRegressionAndID(layerClusters, tfSession_, *resultTrackstersMerged);
366 
367  //filling the TICLCandidates information
368  assert(resultTrackstersMerged->size() == resultCandidates->size());
369 
370  auto isHad = [](const Trackster &tracksterMerge) {
371  return tracksterMerge.id_probability(Trackster::ParticleType::photon) +
372  tracksterMerge.id_probability(Trackster::ParticleType::electron) <
373  0.5;
374  };
375  for (size_t i = 0; i < resultTrackstersMerged->size(); i++) {
376  auto const &tm = (*resultTrackstersMerged)[i];
377  auto &cand = (*resultCandidates)[i];
378  //common properties
379  cand.setIdProbabilities(tm.id_probabilities());
380  //charged candidates
381  if (!cand.trackPtr().isNull()) {
382  auto pdgId = isHad(tm) ? 211 : 11;
383  auto const &tk = cand.trackPtr().get();
384  cand.setPdgId(pdgId * tk->charge());
385  cand.setCharge(tk->charge());
386  cand.setRawEnergy(tm.raw_energy());
387  auto const &regrE = tm.regressed_energy();
388  math::XYZTLorentzVector p4(regrE * tk->momentum().unit().x(),
389  regrE * tk->momentum().unit().y(),
390  regrE * tk->momentum().unit().z(),
391  regrE);
392  cand.setP4(p4);
393  } else { // neutral candidates
394  auto pdgId = isHad(tm) ? 130 : 22;
395  cand.setPdgId(pdgId);
396  cand.setCharge(0);
397  cand.setRawEnergy(tm.raw_energy());
398  const float &regrE = tm.regressed_energy();
399  math::XYZTLorentzVector p4(regrE * tm.barycenter().unit().x(),
400  regrE * tm.barycenter().unit().y(),
401  regrE * tm.barycenter().unit().z(),
402  regrE);
403  cand.setP4(p4);
404  }
405  }
406  for (auto &cand : *resultFromTracks) { //Tracks with no linked tracksters are promoted to charged hadron candidates
407  auto const &tk = cand.trackPtr().get();
408  cand.setPdgId(211 * tk->charge());
409  cand.setCharge(tk->charge());
410  const float energy = std::sqrt(tk->p() * tk->p() + ticl::mpion2);
411  cand.setRawEnergy(energy);
412  math::PtEtaPhiMLorentzVector p4Polar(tk->pt(), tk->eta(), tk->phi(), ticl::mpion);
413  cand.setP4(p4Polar);
414  }
415  // Compute timing
416  resultCandidates->insert(resultCandidates->end(), resultFromTracks->begin(), resultFromTracks->end());
417  assignTimeToCandidates(*resultCandidates);
418 
419  evt.put(std::move(resultTrackstersMerged));
420  evt.put(std::move(resultCandidates));
421 }
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_
bool getByToken(EDGetToken token, Handle< PROD > &result) const
Definition: Event.h:528
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
void assignPCAtoTracksters(std::vector< Trackster > &, const std::vector< reco::CaloCluster > &, const edm::ValueMap< std::pair< float, float >> &, double, bool computeLocalTime=false, bool energyWeight=true)
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().