CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
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
< TrackstersCache
initializeGlobalCache (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
< TICLLayerTilesHFNose
layer_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,
TfGraphRecord
tfDnnToken_
 
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 ( 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_, fwrapper::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_
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_
unique_ptr< JetDefinition::Plugin > plugin
const edm::EDGetTokenT< edm::ValueMap< std::pair< float, float > > > clustersTime_token_
std::unique_ptr< PatternRecognitionAlgoBaseT< TICLLayerTiles > > myAlgo_
T getParameter(std::string const &) const
Definition: ParameterSet.h:303
const edm::EDGetTokenT< std::vector< float > > filtered_layerclusters_mask_token_
const edm::ESGetToken< TfGraphDefWrapper, TfGraphRecord > tfDnnToken_
#define get
std::unique_ptr< PatternRecognitionAlgoBaseT< TICLLayerTilesHFNose > > myAlgoHFNose_
ESGetTokenH3DDVariant esConsumes(std::string const &Reccord, edm::ConsumesCollector &)
Definition: DeDxTools.cc:283
TrackstersProducer::~TrackstersProducer ( )
inlineoverride

Definition at line 37 of file TrackstersProducer.cc.

37 {}

Member Function Documentation

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

Definition at line 109 of file TrackstersProducer.cc.

References edm::ConfigurationDescriptions::add(), edm::ParameterSetDescription::add(), edm::ParameterSetDescription::addNode(), submitPVResolutionJobs::desc, HLT_FULL_cff::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)
ParameterDescriptionBase * add(U const &iLabel, T const &value)
void add(std::string const &label, ParameterSetDescription const &psetDescription)
static void TrackstersProducer::globalEndJob ( TrackstersCache )
static
static std::unique_ptr<TrackstersCache> TrackstersProducer::initializeGlobalCache ( const edm::ParameterSet )
static
void TrackstersProducer::produce ( edm::Event evt,
const edm::EventSetup es 
)
override

Definition at line 142 of file TrackstersProducer.cc.

References SplitLinear::begin, clusters_token_, clustersTime_token_, filterCSVwithJSON::copy, doNose_, dataset::end, filtered_layerclusters_mask_token_, edm::Event::get(), edm::EventSetup::getData(), mps_fire::i, input, iterIndex_, layer_clusters_tiles_hfnose_token_, layer_clusters_tiles_token_, eostools::move(), myAlgo_, myAlgoHFNose_, original_layerclusters_mask_token_, edm::Event::put(), mps_fire::result, 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_) {
164  const auto& layer_clusters_hfnose_tiles = evt.get(layer_clusters_tiles_hfnose_token_);
165  const typename PatternRecognitionAlgoBaseT<TICLLayerTilesHFNose>::Inputs inputHFNose(evt,
166  es,
167  layerClusters,
168  inputClusterMask,
169  layerClustersTimes,
170  layer_clusters_hfnose_tiles,
171  seeding_regions,
172  tfSession_);
173 
174  myAlgoHFNose_->makeTracksters(inputHFNose, *result, seedToTrackstersAssociation);
175 
176  } else {
177  const auto& layer_clusters_tiles = evt.get(layer_clusters_tiles_token_);
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_
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:47
const tensorflow::Session * tfSession_
tuple result
Definition: mps_fire.py:311
bool getData(T &iHolder) const
Definition: EventSetup.h:122
edm::EDGetTokenT< TICLLayerTiles > layer_clusters_tiles_token_
const edm::EDGetTokenT< std::vector< TICLSeedingRegion > > seeding_regions_token_
def move
Definition: eostools.py:511
const edm::EDGetTokenT< edm::ValueMap< std::pair< float, float > > > clustersTime_token_
bool get(ProductID const &oid, Handle< PROD > &result) const
Definition: Event.h:346
std::unique_ptr< PatternRecognitionAlgoBaseT< TICLLayerTiles > > myAlgo_
const edm::EDGetTokenT< std::vector< float > > filtered_layerclusters_mask_token_
string end
Definition: dataset.py:937
const edm::ESGetToken< TfGraphDefWrapper, TfGraphRecord > tfDnnToken_
std::unique_ptr< PatternRecognitionAlgoBaseT< TICLLayerTilesHFNose > > myAlgoHFNose_

Member Data Documentation

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

Definition at line 55 of file TrackstersProducer.cc.

Referenced by produce().

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

Definition at line 58 of file TrackstersProducer.cc.

Referenced by produce().

std::string TrackstersProducer::detector_
private

Definition at line 47 of file TrackstersProducer.cc.

bool TrackstersProducer::doNose_
private

Definition at line 48 of file TrackstersProducer.cc.

Referenced by produce(), and TrackstersProducer().

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

Definition at line 56 of file TrackstersProducer.cc.

Referenced by produce().

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

Definition at line 63 of file TrackstersProducer.cc.

Referenced by produce(), and TrackstersProducer().

const std::string TrackstersProducer::itername_
private

Definition at line 62 of file TrackstersProducer.cc.

Referenced by TrackstersProducer().

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

Definition at line 60 of file TrackstersProducer.cc.

Referenced by produce(), and TrackstersProducer().

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

Definition at line 59 of file TrackstersProducer.cc.

Referenced by produce(), and TrackstersProducer().

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

Definition at line 52 of file TrackstersProducer.cc.

Referenced by produce(), and TrackstersProducer().

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

Definition at line 53 of file TrackstersProducer.cc.

Referenced by produce(), and TrackstersProducer().

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

Definition at line 57 of file TrackstersProducer.cc.

Referenced by produce().

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

Definition at line 61 of file TrackstersProducer.cc.

Referenced by produce().

const std::string TrackstersProducer::tfDnnLabel_
private

Definition at line 49 of file TrackstersProducer.cc.

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

Definition at line 50 of file TrackstersProducer.cc.

Referenced by produce().

const tensorflow::Session* TrackstersProducer::tfSession_
private

Definition at line 51 of file TrackstersProducer.cc.

Referenced by produce().