CMS 3D CMS Logo

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

Public Member Functions

void produce (edm::Event &, const edm::EventSetup &) override
 
 TrackstersProducer (const edm::ParameterSet &)
 
 ~TrackstersProducer () 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 Attributes

const edm::EDGetTokenT< std::vector< reco::CaloCluster > > clusters_token_
 
const edm::EDGetTokenT< edm::ValueMap< std::pair< float, float > > > clustersTime_token_
 
std::string detector_
 
bool doNose_
 
const edm::EDGetTokenT< std::vector< float > > filtered_layerclusters_mask_token_
 
std::unique_ptr< TracksterInferenceAlgoBaseinferenceAlgo_
 
ticl::Trackster::IterationIndex iterIndex_ = ticl::Trackster::IterationIndex(0)
 
const std::string itername_
 
edm::EDGetTokenT< TICLLayerTilesHFNoselayer_clusters_tiles_hfnose_token_
 
edm::EDGetTokenT< TICLLayerTileslayer_clusters_tiles_token_
 
std::unique_ptr< PatternRecognitionAlgoBaseT< TICLLayerTiles > > myAlgo_
 
std::unique_ptr< PatternRecognitionAlgoBaseT< TICLLayerTilesHFNose > > myAlgoHFNose_
 
const edm::EDGetTokenT< std::vector< float > > original_layerclusters_mask_token_
 
const edm::EDGetTokenT< std::vector< TICLSeedingRegion > > seeding_regions_token_
 

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 34 of file TrackstersProducer.cc.

Constructor & Destructor Documentation

◆ TrackstersProducer()

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

Definition at line 64 of file TrackstersProducer.cc.

References doNose_, ticl::Trackster::EM, get, edm::ParameterSet::getParameter(), ticl::Trackster::HAD, inferenceAlgo_, iterIndex_, itername_, layer_clusters_tiles_hfnose_token_, layer_clusters_tiles_token_, ticl::Trackster::MIP, myAlgo_, myAlgoHFNose_, HLT_2024v14_cff::plugin, AlCaHLTBitMon_QueryRunRegistry::string, ticl::Trackster::TRKEM, and ticl::Trackster::TRKHAD.

65  : detector_(ps.getParameter<std::string>("detector")),
66  doNose_(detector_ == "HFNose"),
67  clusters_token_(consumes<std::vector<reco::CaloCluster>>(ps.getParameter<edm::InputTag>("layer_clusters"))),
68  filtered_layerclusters_mask_token_(consumes<std::vector<float>>(ps.getParameter<edm::InputTag>("filtered_mask"))),
69  original_layerclusters_mask_token_(consumes<std::vector<float>>(ps.getParameter<edm::InputTag>("original_mask"))),
71  consumes<edm::ValueMap<std::pair<float, float>>>(ps.getParameter<edm::InputTag>("time_layerclusters"))),
73  consumes<std::vector<TICLSeedingRegion>>(ps.getParameter<edm::InputTag>("seeding_regions"))),
74  itername_(ps.getParameter<std::string>("itername")) {
75  auto plugin = ps.getParameter<std::string>("patternRecognitionBy");
76  auto pluginPSet = ps.getParameter<edm::ParameterSet>("pluginPatternRecognitionBy" + plugin);
77  if (doNose_) {
79  ps.getParameter<std::string>("patternRecognitionBy"), pluginPSet, consumesCollector());
81  consumes<TICLLayerTilesHFNose>(ps.getParameter<edm::InputTag>("layer_clusters_hfnose_tiles"));
82  } else {
84  ps.getParameter<std::string>("patternRecognitionBy"), pluginPSet, consumesCollector());
85  layer_clusters_tiles_token_ = consumes<TICLLayerTiles>(ps.getParameter<edm::InputTag>("layer_clusters_tiles"));
86  }
87 
88  // Initialize inference algorithm using the factory
89  std::string inferencePlugin = ps.getParameter<std::string>("inferenceAlgo");
90  edm::ParameterSet inferencePSet = ps.getParameter<edm::ParameterSet>("pluginInferenceAlgo" + inferencePlugin);
91  inferenceAlgo_ = std::unique_ptr<TracksterInferenceAlgoBase>(
92  TracksterInferenceAlgoFactory::get()->create(inferencePlugin, inferencePSet));
93 
94  if (itername_ == "TrkEM")
96  else if (itername_ == "EM")
98  else if (itername_ == "Trk")
100  else if (itername_ == "HAD")
102  else if (itername_ == "MIP")
104 
105  produces<std::vector<Trackster>>();
106  produces<std::vector<float>>(); // Mask to be applied at the next iteration
107 }
ticl::Trackster::IterationIndex iterIndex_
T getParameter(std::string const &) const
Definition: ParameterSet.h:307
edm::EDGetTokenT< TICLLayerTilesHFNose > layer_clusters_tiles_hfnose_token_
std::unique_ptr< TracksterInferenceAlgoBase > inferenceAlgo_
const edm::EDGetTokenT< std::vector< reco::CaloCluster > > clusters_token_
const edm::EDGetTokenT< std::vector< float > > original_layerclusters_mask_token_
edm::EDGetTokenT< TICLLayerTiles > layer_clusters_tiles_token_
const std::string itername_
const edm::EDGetTokenT< std::vector< TICLSeedingRegion > > seeding_regions_token_
const edm::EDGetTokenT< edm::ValueMap< std::pair< float, float > > > clustersTime_token_
std::unique_ptr< PatternRecognitionAlgoBaseT< TICLLayerTiles > > myAlgo_
const edm::EDGetTokenT< std::vector< float > > filtered_layerclusters_mask_token_
#define get
std::unique_ptr< PatternRecognitionAlgoBaseT< TICLLayerTilesHFNose > > myAlgoHFNose_

◆ ~TrackstersProducer()

TrackstersProducer::~TrackstersProducer ( )
inlineoverride

Definition at line 37 of file TrackstersProducer.cc.

37 {}

Member Function Documentation

◆ fillDescriptions()

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

Definition at line 109 of file TrackstersProducer.cc.

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

109  {
110  // hgcalMultiClusters
112  desc.add<std::string>("detector", "HGCAL");
113  desc.add<edm::InputTag>("layer_clusters", edm::InputTag("hgcalMergeLayerClusters"));
114  desc.add<edm::InputTag>("filtered_mask", edm::InputTag("filteredLayerClusters", "iterationLabelGoesHere"));
115  desc.add<edm::InputTag>("original_mask", edm::InputTag("hgcalMergeLayerClusters", "InitialLayerClustersMask"));
116  desc.add<edm::InputTag>("time_layerclusters", edm::InputTag("hgcalMergeLayerClusters", "timeLayerCluster"));
117  desc.add<edm::InputTag>("layer_clusters_tiles", edm::InputTag("ticlLayerTileProducer"));
118  desc.add<edm::InputTag>("layer_clusters_hfnose_tiles", edm::InputTag("ticlLayerTileHFNose"));
119  desc.add<edm::InputTag>("seeding_regions", edm::InputTag("ticlSeedingRegionProducer"));
120  desc.add<std::string>("patternRecognitionBy", "CA");
121  desc.add<std::string>("itername", "unknown");
122  desc.add<std::string>("inferenceAlgo", "TracksterInferenceByDNN");
123 
124  // CA Plugin
125  edm::ParameterSetDescription pluginDesc;
126  pluginDesc.addNode(edm::PluginDescription<PatternRecognitionFactory>("type", "CA", true));
127  desc.add<edm::ParameterSetDescription>("pluginPatternRecognitionByCA", pluginDesc);
128  //
129  // CLUE3D Plugin
130  edm::ParameterSetDescription pluginDescClue3D;
131  pluginDescClue3D.addNode(edm::PluginDescription<PatternRecognitionFactory>("type", "CLUE3D", true));
132  desc.add<edm::ParameterSetDescription>("pluginPatternRecognitionByCLUE3D", pluginDescClue3D);
133 
134  // FastJet Plugin
135  edm::ParameterSetDescription pluginDescFastJet;
136  pluginDescFastJet.addNode(edm::PluginDescription<PatternRecognitionFactory>("type", "FastJet", true));
137  desc.add<edm::ParameterSetDescription>("pluginPatternRecognitionByFastJet", pluginDescFastJet);
138 
139  // Recovery Plugin
140  edm::ParameterSetDescription pluginDescRecovery;
141  pluginDescRecovery.addNode(edm::PluginDescription<PatternRecognitionFactory>("type", "Recovery", true));
142  desc.add<edm::ParameterSetDescription>("pluginPatternRecognitionByRecovery", pluginDescRecovery);
143 
144  // Inference Plugins
145  edm::ParameterSetDescription inferenceDesc;
146  inferenceDesc.addNode(edm::PluginDescription<TracksterInferenceAlgoFactory>("type", "TracksterInferenceByDNN", true));
147  desc.add<edm::ParameterSetDescription>("pluginInferenceAlgoTracksterInferenceByDNN", inferenceDesc);
148 
149  edm::ParameterSetDescription inferenceDescANN;
150  inferenceDescANN.addNode(
151  edm::PluginDescription<TracksterInferenceAlgoFactory>("type", "TracksterInferenceByANN", true));
152  desc.add<edm::ParameterSetDescription>("pluginInferenceAlgoTracksterInferenceByANN", inferenceDescANN);
153 
154  edm::ParameterSetDescription inferenceDescCNNv4;
155  inferenceDescCNNv4.addNode(
156  edm::PluginDescription<TracksterInferenceAlgoFactory>("type", "TracksterInferenceByCNNv4", true));
157  desc.add<edm::ParameterSetDescription>("pluginInferenceAlgoTracksterInferenceByCNNv4", inferenceDescCNNv4);
158 
159  descriptions.add("trackstersProducer", desc);
160 }
ParameterDescriptionNode * addNode(ParameterDescriptionNode const &node)
void add(std::string const &label, ParameterSetDescription const &psetDescription)

◆ globalEndJob()

static void TrackstersProducer::globalEndJob ( TrackstersCache )
static

◆ initializeGlobalCache()

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

◆ produce()

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

Definition at line 162 of file TrackstersProducer.cc.

References clusters_token_, clustersTime_token_, filterCSVwithJSON::copy, doNose_, filtered_layerclusters_mask_token_, edm::Event::get(), mps_fire::i, inferenceAlgo_, input, iterIndex_, hltTiclTrackstersCLUE3DHigh_cfi::layer_clusters_hfnose_tiles, hltTiclTrackstersCLUE3DHigh_cfi::layer_clusters_tiles, layer_clusters_tiles_hfnose_token_, layer_clusters_tiles_token_, hltEgammaHGCALIDVarsL1Seeded_cfi::layerClusters, eostools::move(), myAlgo_, myAlgoHFNose_, original_layerclusters_mask_token_, edm::Event::put(), mps_fire::result, hltTiclTrackstersCLUE3DHigh_cfi::seeding_regions, seeding_regions_token_, and findQualityFiles::v.

162  {
163  auto result = std::make_unique<std::vector<Trackster>>();
164  auto initialResult = std::make_unique<std::vector<Trackster>>();
165  auto output_mask = std::make_unique<std::vector<float>>();
166 
167  const std::vector<float>& original_layerclusters_mask = evt.get(original_layerclusters_mask_token_);
168  const auto& layerClusters = evt.get(clusters_token_);
169  const auto& inputClusterMask = evt.get(filtered_layerclusters_mask_token_);
170  const auto& layerClustersTimes = evt.get(clustersTime_token_);
171  const auto& seeding_regions = evt.get(seeding_regions_token_);
172 
173  std::unordered_map<int, std::vector<int>> seedToTrackstersAssociation;
174  // if it's regional iteration and there are seeding regions
175  if (!seeding_regions.empty()) {
176  if (seeding_regions[0].index != -1) {
177  auto numberOfSeedingRegions = seeding_regions.size();
178  for (unsigned int i = 0; i < numberOfSeedingRegions; ++i) {
179  seedToTrackstersAssociation.emplace(seeding_regions[i].index, 0);
180  }
181  }
182 
183  if (doNose_) {
186  evt, es, layerClusters, inputClusterMask, layerClustersTimes, layer_clusters_hfnose_tiles, seeding_regions);
187 
188  myAlgoHFNose_->makeTracksters(inputHFNose, *initialResult, seedToTrackstersAssociation);
189  // Run inference algorithm
190  inferenceAlgo_->inputData(layerClusters, *initialResult);
191  inferenceAlgo_->runInference(*initialResult);
192  myAlgoHFNose_->filter(*result, *initialResult, inputHFNose, seedToTrackstersAssociation);
193 
194  } else {
197  evt, es, layerClusters, inputClusterMask, layerClustersTimes, layer_clusters_tiles, seeding_regions);
198 
199  myAlgo_->makeTracksters(input, *initialResult, seedToTrackstersAssociation);
200  // Run inference algorithm
201  inferenceAlgo_->inputData(layerClusters, *initialResult);
202  inferenceAlgo_->runInference(*initialResult);
203  myAlgo_->filter(*result, *initialResult, input, seedToTrackstersAssociation);
204  }
205  }
206  // Now update the global mask and put it into the event
207  output_mask->reserve(original_layerclusters_mask.size());
208  // Copy over the previous state
209  std::copy(
210  std::begin(original_layerclusters_mask), std::end(original_layerclusters_mask), std::back_inserter(*output_mask));
211 
212  for (auto& trackster : *result) {
213  trackster.setIteration(iterIndex_);
214  // Mask the used elements, accordingly
215  for (auto const v : trackster.vertices()) {
216  // TODO(rovere): for the moment we mask the layer cluster completely. In
217  // the future, properly compute the fraction of usage.
218  (*output_mask)[v] = 0.;
219  }
220  }
221 
222  evt.put(std::move(result));
223  evt.put(std::move(output_mask));
224 }
ticl::Trackster::IterationIndex iterIndex_
OrphanHandle< PROD > put(std::unique_ptr< PROD > product)
Put a new product.
Definition: Event.h:133
edm::EDGetTokenT< TICLLayerTilesHFNose > layer_clusters_tiles_hfnose_token_
std::unique_ptr< TracksterInferenceAlgoBase > inferenceAlgo_
bool get(ProductID const &oid, Handle< PROD > &result) const
Definition: Event.h:344
const edm::EDGetTokenT< std::vector< reco::CaloCluster > > clusters_token_
const edm::EDGetTokenT< std::vector< float > > original_layerclusters_mask_token_
static std::string const input
Definition: EdmProvDump.cc:50
edm::EDGetTokenT< TICLLayerTiles > layer_clusters_tiles_token_
const edm::EDGetTokenT< std::vector< TICLSeedingRegion > > seeding_regions_token_
const edm::EDGetTokenT< edm::ValueMap< std::pair< float, float > > > clustersTime_token_
std::unique_ptr< PatternRecognitionAlgoBaseT< TICLLayerTiles > > myAlgo_
const edm::EDGetTokenT< std::vector< float > > filtered_layerclusters_mask_token_
std::unique_ptr< PatternRecognitionAlgoBaseT< TICLLayerTilesHFNose > > myAlgoHFNose_
def move(src, dest)
Definition: eostools.py:511

Member Data Documentation

◆ clusters_token_

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

Definition at line 52 of file TrackstersProducer.cc.

Referenced by produce().

◆ clustersTime_token_

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

Definition at line 55 of file TrackstersProducer.cc.

Referenced by produce().

◆ detector_

std::string TrackstersProducer::detector_
private

Definition at line 47 of file TrackstersProducer.cc.

◆ doNose_

bool TrackstersProducer::doNose_
private

Definition at line 48 of file TrackstersProducer.cc.

Referenced by produce(), and TrackstersProducer().

◆ filtered_layerclusters_mask_token_

const edm::EDGetTokenT<std::vector<float> > TrackstersProducer::filtered_layerclusters_mask_token_
private

Definition at line 53 of file TrackstersProducer.cc.

Referenced by produce().

◆ inferenceAlgo_

std::unique_ptr<TracksterInferenceAlgoBase> TrackstersProducer::inferenceAlgo_
private

Definition at line 51 of file TrackstersProducer.cc.

Referenced by produce(), and TrackstersProducer().

◆ iterIndex_

ticl::Trackster::IterationIndex TrackstersProducer::iterIndex_ = ticl::Trackster::IterationIndex(0)
private

Definition at line 60 of file TrackstersProducer.cc.

Referenced by produce(), and TrackstersProducer().

◆ itername_

const std::string TrackstersProducer::itername_
private

Definition at line 59 of file TrackstersProducer.cc.

Referenced by TrackstersProducer().

◆ layer_clusters_tiles_hfnose_token_

edm::EDGetTokenT<TICLLayerTilesHFNose> TrackstersProducer::layer_clusters_tiles_hfnose_token_
private

Definition at line 57 of file TrackstersProducer.cc.

Referenced by produce(), and TrackstersProducer().

◆ layer_clusters_tiles_token_

edm::EDGetTokenT<TICLLayerTiles> TrackstersProducer::layer_clusters_tiles_token_
private

Definition at line 56 of file TrackstersProducer.cc.

Referenced by produce(), and TrackstersProducer().

◆ myAlgo_

std::unique_ptr<PatternRecognitionAlgoBaseT<TICLLayerTiles> > TrackstersProducer::myAlgo_
private

Definition at line 49 of file TrackstersProducer.cc.

Referenced by produce(), and TrackstersProducer().

◆ myAlgoHFNose_

std::unique_ptr<PatternRecognitionAlgoBaseT<TICLLayerTilesHFNose> > TrackstersProducer::myAlgoHFNose_
private

Definition at line 50 of file TrackstersProducer.cc.

Referenced by produce(), and TrackstersProducer().

◆ original_layerclusters_mask_token_

const edm::EDGetTokenT<std::vector<float> > TrackstersProducer::original_layerclusters_mask_token_
private

Definition at line 54 of file TrackstersProducer.cc.

Referenced by produce().

◆ seeding_regions_token_

const edm::EDGetTokenT<std::vector<TICLSeedingRegion> > TrackstersProducer::seeding_regions_token_
private

Definition at line 58 of file TrackstersProducer.cc.

Referenced by produce().