CMS 3D CMS Logo

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

Public Member Functions

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

Static Public Member Functions

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

Private Types

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

Private Member Functions

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

Private Attributes

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

Static Private Attributes

static constexpr int eidNFeatures_ = 3
 

Additional Inherited Members

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

Detailed Description

Definition at line 53 of file TrackstersMergeProducer.cc.

Member Typedef Documentation

◆ TracksterIterIndex

Definition at line 70 of file TrackstersMergeProducer.cc.

◆ Vector

Definition at line 71 of file TrackstersMergeProducer.cc.

Constructor & Destructor Documentation

◆ TrackstersMergeProducer()

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

Definition at line 140 of file TrackstersMergeProducer.cc.

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

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

◆ ~TrackstersMergeProducer()

TrackstersMergeProducer::~TrackstersMergeProducer ( )
inlineoverride

Definition at line 56 of file TrackstersMergeProducer.cc.

56 {};

Member Function Documentation

◆ assignTimeToCandidates()

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

Definition at line 546 of file TrackstersMergeProducer.cc.

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

Referenced by produce().

546  {
547  for (auto &cand : resultCandidates) {
548  if (cand.tracksters().size() > 1) { // For single-trackster candidates the timing is already set
549  float time = 0.f;
550  float invTimeErr = 0.f;
551  for (const auto &tr : cand.tracksters()) {
552  if (tr->timeError() > 0) {
553  auto invTimeESq = pow(tr->timeError(), -2);
554  time += tr->time() * invTimeESq;
555  invTimeErr += invTimeESq;
556  }
557  }
558  if (invTimeErr > 0) {
559  cand.setTime(time / invTimeErr);
560  cand.setTimeError(sqrt(1.f / invTimeErr));
561  }
562  }
563  }
564 }
T sqrt(T t)
Definition: SSEVec.h:19
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 196 of file TrackstersMergeProducer.cc.

196 {}

◆ beginRun()

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

Definition at line 200 of file TrackstersMergeProducer.cc.

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

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

◆ dumpTrackster()

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

Definition at line 228 of file TrackstersMergeProducer.cc.

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

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

◆ endJob()

void TrackstersMergeProducer::endJob ( void  )

Definition at line 198 of file TrackstersMergeProducer.cc.

198 {};

◆ energyRegressionAndID()

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

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

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

◆ fillDescriptions()

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

Definition at line 592 of file TrackstersMergeProducer.cc.

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

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

◆ fillTile()

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

Definition at line 213 of file TrackstersMergeProducer.cc.

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

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

◆ globalEndJob()

static void TrackstersMergeProducer::globalEndJob ( TrackstersCache )
static

◆ initializeGlobalCache()

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

◆ printTrackstersDebug()

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

Definition at line 566 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.

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

◆ produce()

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

Definition at line 250 of file TrackstersMergeProducer.cc.

References cms::cuda::assert(), ticl::assignPCAtoTracksters(), assignTimeToCandidates(), HLT_2023v12_cff::candidates, clusters_token_, clustersTime_token_, filterCSVwithJSON::copy, HLT_2023v12_cff::distance, HPSPFTauProducerPuppi_cfi::electron, 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.

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

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

Definition at line 90 of file TrackstersMergeProducer.cc.

Referenced by produce().

◆ tracks_time_quality_token_

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

Definition at line 89 of file TrackstersMergeProducer.cc.

Referenced by produce().

◆ tracks_time_token_

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

Definition at line 88 of file TrackstersMergeProducer.cc.

Referenced by produce().

◆ tracks_token_

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

Definition at line 87 of file TrackstersMergeProducer.cc.

Referenced by produce().

◆ tracksters_clue3d_token_

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

Definition at line 84 of file TrackstersMergeProducer.cc.

Referenced by produce().

◆ useMTDTiming_

const bool TrackstersMergeProducer::useMTDTiming_
private

Definition at line 103 of file TrackstersMergeProducer.cc.

Referenced by produce().