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_
 
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_
 
const std::string tfDnnLabel_
 
const edm::ESGetToken< TfGraphDefWrapper, TfGraphRecordtfDnnToken_
 
const tensorflow::Session * tfSession_
 

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

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

68  : detector_(ps.getParameter<std::string>("detector")),
69  doNose_(detector_ == "HFNose"),
70  tfDnnLabel_(ps.getParameter<std::string>("tfDnnLabel")),
72  tfSession_(nullptr),
73  clusters_token_(consumes<std::vector<reco::CaloCluster>>(ps.getParameter<edm::InputTag>("layer_clusters"))),
74  filtered_layerclusters_mask_token_(consumes<std::vector<float>>(ps.getParameter<edm::InputTag>("filtered_mask"))),
75  original_layerclusters_mask_token_(consumes<std::vector<float>>(ps.getParameter<edm::InputTag>("original_mask"))),
77  consumes<edm::ValueMap<std::pair<float, float>>>(ps.getParameter<edm::InputTag>("time_layerclusters"))),
79  consumes<std::vector<TICLSeedingRegion>>(ps.getParameter<edm::InputTag>("seeding_regions"))),
80  itername_(ps.getParameter<std::string>("itername")) {
81  auto plugin = ps.getParameter<std::string>("patternRecognitionBy");
82  auto pluginPSet = ps.getParameter<edm::ParameterSet>("pluginPatternRecognitionBy" + plugin);
83  if (doNose_) {
85  ps.getParameter<std::string>("patternRecognitionBy"), pluginPSet, consumesCollector());
87  consumes<TICLLayerTilesHFNose>(ps.getParameter<edm::InputTag>("layer_clusters_hfnose_tiles"));
88  } else {
90  ps.getParameter<std::string>("patternRecognitionBy"), pluginPSet, consumesCollector());
91  layer_clusters_tiles_token_ = consumes<TICLLayerTiles>(ps.getParameter<edm::InputTag>("layer_clusters_tiles"));
92  }
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_
ESGetTokenH3DDVariant esConsumes(std::string const &Record, edm::ConsumesCollector &)
Definition: DeDxTools.cc:283
T getParameter(std::string const &) const
Definition: ParameterSet.h:307
edm::EDGetTokenT< TICLLayerTilesHFNose > layer_clusters_tiles_hfnose_token_
const edm::EDGetTokenT< std::vector< reco::CaloCluster > > clusters_token_
const edm::EDGetTokenT< std::vector< float > > original_layerclusters_mask_token_
const std::string tfDnnLabel_
const tensorflow::Session * tfSession_
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_
const edm::ESGetToken< TfGraphDefWrapper, TfGraphRecord > tfDnnToken_
#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("hgcalLayerClusters"));
114  desc.add<edm::InputTag>("filtered_mask", edm::InputTag("filteredLayerClusters", "iterationLabelGoesHere"));
115  desc.add<edm::InputTag>("original_mask", edm::InputTag("hgcalLayerClusters", "InitialLayerClustersMask"));
116  desc.add<edm::InputTag>("time_layerclusters", edm::InputTag("hgcalLayerClusters", "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>("tfDnnLabel", "tracksterSelectionTf");
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  descriptions.add("trackstersProducer", desc);
140 }
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 142 of file TrackstersProducer.cc.

References clusters_token_, clustersTime_token_, filterCSVwithJSON::copy, doNose_, filtered_layerclusters_mask_token_, edm::Event::get(), edm::EventSetup::getData(), mps_fire::i, input, iterIndex_, ticlTrackstersCLUE3DHigh_cfi::layer_clusters_hfnose_tiles, ticlTrackstersCLUE3DHigh_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, ticlTrackstersCLUE3DHigh_cfi::seeding_regions, seeding_regions_token_, tfDnnToken_, tfSession_, and findQualityFiles::v.

142  {
143  auto result = std::make_unique<std::vector<Trackster>>();
144  auto output_mask = std::make_unique<std::vector<float>>();
145 
146  const std::vector<float>& original_layerclusters_mask = evt.get(original_layerclusters_mask_token_);
147  const auto& layerClusters = evt.get(clusters_token_);
148  const auto& inputClusterMask = evt.get(filtered_layerclusters_mask_token_);
149  const auto& layerClustersTimes = evt.get(clustersTime_token_);
150  const auto& seeding_regions = evt.get(seeding_regions_token_);
151 
152  tfSession_ = es.getData(tfDnnToken_).getSession();
153 
154  std::unordered_map<int, std::vector<int>> seedToTrackstersAssociation;
155  // if it's regional iteration and there are seeding regions
156  if (!seeding_regions.empty() and seeding_regions[0].index != -1) {
157  auto numberOfSeedingRegions = seeding_regions.size();
158  for (unsigned int i = 0; i < numberOfSeedingRegions; ++i) {
159  seedToTrackstersAssociation.emplace(seeding_regions[i].index, 0);
160  }
161  }
162 
163  if (doNose_) {
165  const typename PatternRecognitionAlgoBaseT<TICLLayerTilesHFNose>::Inputs inputHFNose(evt,
166  es,
168  inputClusterMask,
169  layerClustersTimes,
172  tfSession_);
173 
174  myAlgoHFNose_->makeTracksters(inputHFNose, *result, seedToTrackstersAssociation);
175 
176  } else {
179  evt, es, layerClusters, inputClusterMask, layerClustersTimes, layer_clusters_tiles, seeding_regions, tfSession_);
180 
181  myAlgo_->makeTracksters(input, *result, seedToTrackstersAssociation);
182  }
183  // Now update the global mask and put it into the event
184  output_mask->reserve(original_layerclusters_mask.size());
185  // Copy over the previous state
186  std::copy(
187  std::begin(original_layerclusters_mask), std::end(original_layerclusters_mask), std::back_inserter(*output_mask));
188 
189  for (auto& trackster : *result) {
190  trackster.setIteration(iterIndex_);
191  // Mask the used elements, accordingly
192  for (auto const v : trackster.vertices()) {
193  // TODO(rovere): for the moment we mask the layer cluster completely. In
194  // the future, properly compute the fraction of usage.
195  (*output_mask)[v] = 0.;
196  }
197  }
198 
199  evt.put(std::move(result));
200  evt.put(std::move(output_mask));
201 }
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_
T const & getData(const ESGetToken< T, R > &iToken) const noexcept(false)
Definition: EventSetup.h:119
bool get(ProductID const &oid, Handle< PROD > &result) const
Definition: Event.h:347
const edm::EDGetTokenT< std::vector< reco::CaloCluster > > clusters_token_
const edm::EDGetTokenT< std::vector< float > > original_layerclusters_mask_token_
static std::string const input
Definition: EdmProvDump.cc:50
const tensorflow::Session * tfSession_
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_
const edm::ESGetToken< TfGraphDefWrapper, TfGraphRecord > tfDnnToken_
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 55 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 58 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 56 of file TrackstersProducer.cc.

Referenced by produce().

◆ iterIndex_

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

Definition at line 63 of file TrackstersProducer.cc.

Referenced by produce(), and TrackstersProducer().

◆ itername_

const std::string TrackstersProducer::itername_
private

Definition at line 62 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 60 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 59 of file TrackstersProducer.cc.

Referenced by produce(), and TrackstersProducer().

◆ myAlgo_

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

Definition at line 52 of file TrackstersProducer.cc.

Referenced by produce(), and TrackstersProducer().

◆ myAlgoHFNose_

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

Definition at line 53 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 57 of file TrackstersProducer.cc.

Referenced by produce().

◆ seeding_regions_token_

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

Definition at line 61 of file TrackstersProducer.cc.

Referenced by produce().

◆ tfDnnLabel_

const std::string TrackstersProducer::tfDnnLabel_
private

Definition at line 49 of file TrackstersProducer.cc.

◆ tfDnnToken_

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

Definition at line 50 of file TrackstersProducer.cc.

Referenced by produce().

◆ tfSession_

const tensorflow::Session* TrackstersProducer::tfSession_
private

Definition at line 51 of file TrackstersProducer.cc.

Referenced by produce().