CMS 3D CMS Logo

List of all members | Public Types | Public Member Functions | Private Types | Private Member Functions | Private Attributes
cms::Phase2TrackerDigitizer Class Reference

#include <Phase2TrackerDigitizer.h>

Inheritance diagram for cms::Phase2TrackerDigitizer:
DigiAccumulatorMixMod

Public Types

using ModuleTypeCache = std::unordered_map< uint32_t, TrackerGeometry::ModuleType >
 

Public Member Functions

void accumulate (edm::Event const &e, edm::EventSetup const &c) override
 
void accumulate (PileUpEventPrincipal const &e, edm::EventSetup const &c, edm::StreamID const &) override
 
template<class T >
void accumulate_local (T const &iEvent, edm::EventSetup const &iSetup)
 
virtual void beginJob ()
 
void finalizeEvent (edm::Event &e, edm::EventSetup const &c) override
 
void initializeEvent (edm::Event const &e, edm::EventSetup const &c) override
 
void loadAccumulator (const std::map< uint32_t, std::map< int, float > > &accumulator)
 
 Phase2TrackerDigitizer (const edm::ParameterSet &iConfig, edm::ProducesCollector, edm::ConsumesCollector &iC)
 
 ~Phase2TrackerDigitizer () override
 
- Public Member Functions inherited from DigiAccumulatorMixMod
virtual void beginLuminosityBlock (edm::LuminosityBlock const &lumi, edm::EventSetup const &setup)
 
virtual void beginRun (edm::Run const &run, edm::EventSetup const &setup)
 
 DigiAccumulatorMixMod ()
 
virtual void endLuminosityBlock (edm::LuminosityBlock const &lumi, edm::EventSetup const &setup)
 
virtual void endRun (edm::Run const &run, edm::EventSetup const &setup)
 
virtual void finalizeBunchCrossing (edm::Event &event, edm::EventSetup const &setup, int bunchCrossing)
 
virtual PileupMixingContentgetEventPileupInfo ()
 
virtual void initializeBunchCrossing (edm::Event const &event, edm::EventSetup const &setup, int bunchCrossing)
 
virtual void StorePileupInformation (std::vector< int > &numInteractionList, std::vector< int > &bunchCrossingList, std::vector< float > &TrueInteractionList, std::vector< edm::EventID > &eventList, int bunchSpace)
 
virtual ~DigiAccumulatorMixMod ()
 

Private Types

enum  AlgorithmType {
  AlgorithmType::InnerPixel, AlgorithmType::InnerPixel3D, AlgorithmType::PixelinPS, AlgorithmType::StripinPS,
  AlgorithmType::TwoStrip, AlgorithmType::Unknown
}
 
using vstring = std::vector< std::string >
 

Private Member Functions

void accumulatePixelHits (edm::Handle< std::vector< PSimHit > >, size_t globalSimHitIndex, const uint32_t tofBin)
 
template<typename DigiType >
void addOuterTrackerCollection (edm::Event &iEvent, const edm::EventSetup &iSetup)
 
void addPixelCollection (edm::Event &iEvent, const edm::EventSetup &iSetup, const bool ot_analog)
 
AlgorithmType getAlgoType (uint32_t idet)
 

Private Attributes

std::map< AlgorithmType, std::unique_ptr< Phase2TrackerDigitizerAlgorithm > > algomap_
 
std::map< std::string, size_t > crossingSimHitIndexOffset_
 Offset to add to the index of each sim hit to account for which crossing it's in. More...
 
std::map< uint32_t, const Phase2TrackerGeomDetUnit * > detectorUnits_
 
bool first_
 
const std::string hitsProducer_
 
const bool isOuterTrackerReadoutAnalog_
 
const bool makeDigiSimLinks_
 
ModuleTypeCache moduleTypeCache_
 
const TrackerGeometrypDD_ = nullptr
 
const edm::ESGetToken< TrackerGeometry, TrackerDigiGeometryRecordpDDToken_
 
const bool premixStage1_
 
const MagneticFieldpSetup_ = nullptr
 
const edm::ESGetToken< MagneticField, IdealMagneticFieldRecordpSetupToken_
 
edm::ESWatcher< TrackerDigiGeometryRecordtheTkDigiGeomWatcher_
 
const vstring trackerContainers_
 
const TrackerTopologytTopo_ = nullptr
 
const edm::ESGetToken< TrackerTopology, TrackerTopologyRcdtTopoToken_
 

Detailed Description

Definition at line 51 of file Phase2TrackerDigitizer.h.

Member Typedef Documentation

◆ ModuleTypeCache

Definition at line 53 of file Phase2TrackerDigitizer.h.

◆ vstring

using cms::Phase2TrackerDigitizer::vstring = std::vector<std::string>
private

Definition at line 73 of file Phase2TrackerDigitizer.h.

Member Enumeration Documentation

◆ AlgorithmType

Enumerator
InnerPixel 
InnerPixel3D 
PixelinPS 
StripinPS 
TwoStrip 
Unknown 

Definition at line 76 of file Phase2TrackerDigitizer.h.

76 { InnerPixel, InnerPixel3D, PixelinPS, StripinPS, TwoStrip, Unknown };

Constructor & Destructor Documentation

◆ Phase2TrackerDigitizer()

cms::Phase2TrackerDigitizer::Phase2TrackerDigitizer ( const edm::ParameterSet iConfig,
edm::ProducesCollector  producesCollector,
edm::ConsumesCollector iC 
)
explicit

Definition at line 62 of file Phase2TrackerDigitizer.cc.

65  : first_(true),
66  hitsProducer_(iConfig.getParameter<std::string>("hitsProducer")),
67  trackerContainers_(iConfig.getParameter<std::vector<std::string> >("ROUList")),
68  pDDToken_(iC.esConsumes(edm::ESInputTag("", iConfig.getParameter<std::string>("GeometryType")))),
70  tTopoToken_(iC.esConsumes()),
71  isOuterTrackerReadoutAnalog_(iConfig.getParameter<bool>("isOTreadoutAnalog")),
72  premixStage1_(iConfig.getParameter<bool>("premixStage1")),
74  iConfig.getParameter<edm::ParameterSet>("AlgorithmCommon").getUntrackedParameter<bool>("makeDigiSimLinks")) {
75  const std::string alias1("simSiPixelDigis");
76  producesCollector.produces<edm::DetSetVector<PixelDigi> >("Pixel").setBranchAlias(alias1);
78  producesCollector.produces<edm::DetSetVector<PixelDigiSimLink> >("Pixel").setBranchAlias(alias1);
79 
80  if (!iConfig.getParameter<bool>("isOTreadoutAnalog")) {
81  const std::string alias2("simSiTrackerDigis");
82  if (premixStage1_) {
83  // Premixing exploits the ADC field of PixelDigi to store the collected charge
84  // But we still want everything else to be treated like for Phase2TrackerDigi
85  producesCollector.produces<edm::DetSetVector<PixelDigi> >("Tracker").setBranchAlias(alias2);
86  } else {
87  producesCollector.produces<edm::DetSetVector<Phase2TrackerDigi> >("Tracker").setBranchAlias(alias2);
88  }
90  producesCollector.produces<edm::DetSetVector<PixelDigiSimLink> >("Tracker").setBranchAlias(alias2);
91  }
92  // creating algorithm objects and pushing them into the map
93  algomap_[AlgorithmType::InnerPixel] = std::make_unique<PixelDigitizerAlgorithm>(iConfig, iC);
94  algomap_[AlgorithmType::InnerPixel3D] = std::make_unique<Pixel3DDigitizerAlgorithm>(iConfig, iC);
95  algomap_[AlgorithmType::PixelinPS] = std::make_unique<PSPDigitizerAlgorithm>(iConfig, iC);
96  algomap_[AlgorithmType::StripinPS] = std::make_unique<PSSDigitizerAlgorithm>(iConfig, iC);
97  algomap_[AlgorithmType::TwoStrip] = std::make_unique<SSDigitizerAlgorithm>(iConfig, iC);
98  }

References algomap_, edm::ParameterSet::getParameter(), InnerPixel, InnerPixel3D, makeDigiSimLinks_, PixelinPS, premixStage1_, edm::ProducesCollector::produces(), AlCaHLTBitMon_QueryRunRegistry::string, StripinPS, and TwoStrip.

◆ ~Phase2TrackerDigitizer()

cms::Phase2TrackerDigitizer::~Phase2TrackerDigitizer ( )
override

Definition at line 100 of file Phase2TrackerDigitizer.cc.

100 {}

Member Function Documentation

◆ accumulate() [1/2]

void cms::Phase2TrackerDigitizer::accumulate ( edm::Event const &  e,
edm::EventSetup const &  c 
)
overridevirtual

Implements DigiAccumulatorMixMod.

Definition at line 174 of file Phase2TrackerDigitizer.cc.

174  {
175  accumulate_local<edm::Event>(iEvent, iSetup);
176  }

References iEvent.

◆ accumulate() [2/2]

void cms::Phase2TrackerDigitizer::accumulate ( PileUpEventPrincipal const &  e,
edm::EventSetup const &  c,
edm::StreamID const &   
)
overridevirtual

Implements DigiAccumulatorMixMod.

Definition at line 178 of file Phase2TrackerDigitizer.cc.

180  {
181  accumulate_local<PileUpEventPrincipal>(iEvent, iSetup);
182  }

References iEvent.

◆ accumulate_local()

template<class T >
void cms::Phase2TrackerDigitizer::accumulate_local ( T const &  iEvent,
edm::EventSetup const &  iSetup 
)

Definition at line 185 of file Phase2TrackerDigitizer.cc.

185  {
186  for (auto const& v : trackerContainers_) {
189  iEvent.getByLabel(tag, simHits);
190 
191  //edm::EDGetTokenT< std::vector<PSimHit> > simHitToken_(consumes< std::vector<PSimHit>(tag));
192  //iEvent.getByToken(simHitToken_, simHits);
193 
194  uint32_t tofBin = PixelDigiSimLink::LowTof;
195  if (v.find(std::string("HighTof")) != std::string::npos)
196  tofBin = PixelDigiSimLink::HighTof;
198  // Now that the hits have been processed, I'll add the amount of hits in this crossing on to
199  // the global counter. Next time accumulateStripHits() is called it will count the sim hits
200  // as though they were on the end of this collection.
201  // Note that this is only used for creating digi-sim links (if configured to do so).
202  if (simHits.isValid())
203  crossingSimHitIndexOffset_[tag.encode()] += simHits->size();
204  }
205  }

References accumulatePixelHits(), crossingSimHitIndexOffset_, PixelDigiSimLink::HighTof, hitsProducer_, iEvent, PixelDigiSimLink::LowTof, FastTrackerRecHitCombiner_cfi::simHits, AlCaHLTBitMon_QueryRunRegistry::string, makeGlobalPositionRcd_cfg::tag, trackerContainers_, and findQualityFiles::v.

◆ accumulatePixelHits()

void cms::Phase2TrackerDigitizer::accumulatePixelHits ( edm::Handle< std::vector< PSimHit > >  hSimHits,
size_t  globalSimHitIndex,
const uint32_t  tofBin 
)
private

Definition at line 101 of file Phase2TrackerDigitizer.cc.

103  {
104  if (hSimHits.isValid()) {
105  std::set<uint32_t> detIds;
106  auto const& simHits = *(hSimHits.product());
107  for (auto it = std::begin(simHits), itEnd = std::end(simHits); it != itEnd; ++it, ++globalSimHitIndex) {
108  uint32_t detId_raw = (*it).detUnitId();
109  auto fiter = detectorUnits_.find(detId_raw);
110  if (fiter == detectorUnits_.end())
111  continue;
112 
113  if (detIds.insert(detId_raw).second) {
114  // The insert succeeded, so this detector element has not yet been processed.
115  const Phase2TrackerGeomDetUnit* phase2det = fiter->second;
116 
117  // access to magnetic field in global coordinates
118  GlobalVector bfield = pSetup_->inTesla(phase2det->surface().position());
119  LogDebug("PixelDigitizer") << "B-field(T) at " << phase2det->surface().position()
120  << " (cm): " << pSetup_->inTesla(phase2det->surface().position());
121 
122  auto kiter = algomap_.find(getAlgoType(detId_raw));
123  if (kiter != algomap_.end())
124  kiter->second->accumulateSimHits(it, itEnd, globalSimHitIndex, tofBin, phase2det, bfield);
125  else
126  edm::LogInfo("Phase2TrackerDigitizer") << "Unsupported algorithm: ";
127  }
128  }
129  }
130  }

References algomap_, detectorUnits_, mps_fire::end, getAlgoType(), MagneticField::inTesla(), LogDebug, GloballyPositioned< T >::position(), pSetup_, FastTrackerRecHitCombiner_cfi::simHits, and GeomDet::surface().

Referenced by accumulate_local().

◆ addOuterTrackerCollection()

template<typename DigiType >
void cms::Phase2TrackerDigitizer::addOuterTrackerCollection ( edm::Event iEvent,
const edm::EventSetup iSetup 
)
private

Definition at line 340 of file Phase2TrackerDigitizer.cc.

340  {
341  std::vector<edm::DetSet<DigiType> > digiVector;
342  std::vector<edm::DetSet<PixelDigiSimLink> > digiLinkVector;
343  for (auto const& det_u : pDD_->detUnits()) {
344  uint32_t rawId = det_u->geographicalId().rawId();
345  auto algotype = getAlgoType(rawId);
346 
347  auto fiter = algomap_.find(algotype);
348  if (fiter == algomap_.end() || algotype == AlgorithmType::InnerPixel || algotype == AlgorithmType::InnerPixel3D) {
349  continue;
350  }
351  std::map<int, DigitizerUtility::DigiSimInfo> digi_map;
352  fiter->second->digitize(dynamic_cast<const Phase2TrackerGeomDetUnit*>(det_u), digi_map, tTopo_);
353 
354  edm::DetSet<DigiType> collector(rawId);
355  edm::DetSet<PixelDigiSimLink> linkcollector(rawId);
356  for (auto const& digi_p : digi_map) {
357  DigitizerUtility::DigiSimInfo info = digi_p.second;
358  addToCollector(collector, digi_p.first, info);
359  for (auto const& sim_p : info.simInfoList) {
360  linkcollector.data.emplace_back(digi_p.first,
361  sim_p.second->trackId(),
362  sim_p.second->hitIndex(),
363  sim_p.second->tofBin(),
364  sim_p.second->eventId(),
365  sim_p.first);
366  }
367  }
368 
369  if (!collector.data.empty())
370  digiVector.push_back(std::move(collector));
371  if (!linkcollector.data.empty())
372  digiLinkVector.push_back(std::move(linkcollector));
373  }
374 
375  // Step C: create collection with the cache vector of DetSet
376  auto output = std::make_unique<edm::DetSetVector<DigiType> >(digiVector);
377  auto outputlink = std::make_unique<edm::DetSetVector<PixelDigiSimLink> >(digiLinkVector);
378 
379  // Step D: write output to file
380  iEvent.put(std::move(output), "Tracker");
381  if (makeDigiSimLinks_)
382  iEvent.put(std::move(outputlink), "Tracker");
383  }

References algomap_, edm::DetSet< T >::data, TrackerGeometry::detUnits(), getAlgoType(), iEvent, info(), InnerPixel, InnerPixel3D, makeDigiSimLinks_, eostools::move(), convertSQLitetoXML_cfg::output, pDD_, and tTopo_.

◆ addPixelCollection()

void cms::Phase2TrackerDigitizer::addPixelCollection ( edm::Event iEvent,
const edm::EventSetup iSetup,
const bool  ot_analog 
)
private

Definition at line 272 of file Phase2TrackerDigitizer.cc.

274  {
275  std::vector<edm::DetSet<PixelDigi> > digiVector;
276  std::vector<edm::DetSet<PixelDigiSimLink> > digiLinkVector;
277  for (auto const& det_u : pDD_->detUnits()) {
278  uint32_t rawId = det_u->geographicalId().rawId();
279  auto algotype = getAlgoType(rawId);
280  auto fiter = algomap_.find(algotype);
281  if (fiter == algomap_.end())
282  continue;
283 
284  // Decide if we want analog readout for Outer Tracker.
285  if (!ot_analog && (algotype != AlgorithmType::InnerPixel && algotype != AlgorithmType::InnerPixel3D)) {
286  continue;
287  }
288  std::map<int, DigitizerUtility::DigiSimInfo> digi_map;
289  fiter->second->digitize(dynamic_cast<const Phase2TrackerGeomDetUnit*>(det_u), digi_map, tTopo_);
290 
291  edm::DetSet<PixelDigi> collector(rawId);
292  edm::DetSet<PixelDigiSimLink> linkcollector(rawId);
293  for (auto const& digi_p : digi_map) {
294  DigitizerUtility::DigiSimInfo info = digi_p.second;
295  const auto& ip = PixelDigi::channelToPixel(digi_p.first);
296  collector.data.emplace_back(ip.first, ip.second, info.sig_tot);
297  for (auto const& sim_p : info.simInfoList) {
298  linkcollector.data.emplace_back(digi_p.first,
299  sim_p.second->trackId(),
300  sim_p.second->hitIndex(),
301  sim_p.second->tofBin(),
302  sim_p.second->eventId(),
303  sim_p.first);
304  }
305  }
306  if (!collector.data.empty())
307  digiVector.push_back(std::move(collector));
308  if (!linkcollector.data.empty())
309  digiLinkVector.push_back(std::move(linkcollector));
310  }
311 
312  // Step C: create collection with the cache vector of DetSet
313  auto output = std::make_unique<edm::DetSetVector<PixelDigi> >(digiVector);
314  auto outputlink = std::make_unique<edm::DetSetVector<PixelDigiSimLink> >(digiLinkVector);
315 
316  // Step D: write output to file
317  iEvent.put(std::move(output), "Pixel");
318  if (makeDigiSimLinks_)
319  iEvent.put(std::move(outputlink), "Pixel");
320  }

References algomap_, PixelDigi::channelToPixel(), edm::DetSet< T >::data, TrackerGeometry::detUnits(), getAlgoType(), iEvent, info(), InnerPixel, InnerPixel3D, makeDigiSimLinks_, eostools::move(), convertSQLitetoXML_cfg::output, pDD_, and tTopo_.

Referenced by finalizeEvent().

◆ beginJob()

virtual void cms::Phase2TrackerDigitizer::beginJob ( void  )
inlinevirtual

Definition at line 64 of file Phase2TrackerDigitizer.h.

64 {}

◆ finalizeEvent()

void cms::Phase2TrackerDigitizer::finalizeEvent ( edm::Event e,
edm::EventSetup const &  c 
)
overridevirtual

Implements DigiAccumulatorMixMod.

Definition at line 216 of file Phase2TrackerDigitizer.cc.

216  {
217  //Decide if we want analog readout for Outer Tracker.
220  if (premixStage1_)
221  addOuterTrackerCollection<PixelDigi>(iEvent, iSetup);
222  else
223  addOuterTrackerCollection<Phase2TrackerDigi>(iEvent, iSetup);
224  }
225  }

References addPixelCollection(), iEvent, isOuterTrackerReadoutAnalog_, and premixStage1_.

Referenced by PreMixingPhase2TrackerWorker::put().

◆ getAlgoType()

Phase2TrackerDigitizer::AlgorithmType cms::Phase2TrackerDigitizer::getAlgoType ( uint32_t  idet)
private

Definition at line 226 of file Phase2TrackerDigitizer.cc.

226  {
227  // get mType either from the geometry or from our cache (faster)
229  auto itr = moduleTypeCache_.find(detId_raw);
230  if (itr != moduleTypeCache_.end()) {
231  mType = itr->second;
232  } else {
233  mType = pDD_->getDetectorType(DetId(detId_raw));
234  moduleTypeCache_.emplace(detId_raw, mType);
235  }
236 
238  switch (mType) {
240  algotype = AlgorithmType::InnerPixel;
241  break;
243  algotype = AlgorithmType::InnerPixel;
244  break;
246  algotype = AlgorithmType::InnerPixel;
247  break;
249  algotype = AlgorithmType::InnerPixel;
250  break;
252  algotype = AlgorithmType::InnerPixel3D;
253  break;
255  algotype = AlgorithmType::InnerPixel3D;
256  break;
258  algotype = AlgorithmType::PixelinPS;
259  break;
261  algotype = AlgorithmType::StripinPS;
262  break;
264  algotype = AlgorithmType::TwoStrip;
265  break;
266  default:
267  edm::LogError("Phase2TrackerDigitizer") << "ERROR - Wrong Detector Type, No Algorithm available ";
268  }
269 
270  return algotype;
271  }

References TrackerGeometry::getDetectorType(), InnerPixel, InnerPixel3D, moduleTypeCache_, pDD_, TrackerGeometry::Ph1PXB, TrackerGeometry::Ph1PXF, TrackerGeometry::Ph2PSP, TrackerGeometry::Ph2PSS, TrackerGeometry::Ph2PXB, TrackerGeometry::Ph2PXB3D, TrackerGeometry::Ph2PXF, TrackerGeometry::Ph2PXF3D, TrackerGeometry::Ph2SS, PixelinPS, StripinPS, TwoStrip, TrackerGeometry::UNKNOWN, and Unknown.

Referenced by accumulatePixelHits(), addOuterTrackerCollection(), addPixelCollection(), and loadAccumulator().

◆ initializeEvent()

void cms::Phase2TrackerDigitizer::initializeEvent ( edm::Event const &  e,
edm::EventSetup const &  c 
)
overridevirtual

Implements DigiAccumulatorMixMod.

Definition at line 132 of file Phase2TrackerDigitizer.cc.

132  {
134  if (!rng.isAvailable()) {
135  throw cms::Exception("Configuration")
136  << "Phase2TrackerDigitizer requires the RandomNumberGeneratorService\n"
137  "which is not present in the configuration file. You must add the service\n"
138  "in the configuration file or remove the modules that require it.";
139  }
140 
141  pSetup_ = &iSetup.getData(pSetupToken_);
142  tTopo_ = &iSetup.getData(tTopoToken_);
143 
144  if (theTkDigiGeomWatcher_.check(iSetup)) {
145  pDD_ = &iSetup.getData(pDDToken_);
146 
147  // reset cache
149  detectorUnits_.clear();
150  for (auto const& det_u : pDD_->detUnits()) {
151  uint32_t rawId = det_u->geographicalId().rawId();
152  if (DetId(rawId).det() == DetId::Detector::Tracker) {
153  const Phase2TrackerGeomDetUnit* pixdet = dynamic_cast<const Phase2TrackerGeomDetUnit*>(det_u);
154  assert(pixdet);
155  detectorUnits_.emplace(rawId, pixdet);
156  }
157  }
158  }
159 
160  // Must initialize all the algorithms
161  for (auto const& el : algomap_) {
162  if (first_)
163  el.second->init(iSetup);
164 
165  el.second->initializeEvent(rng->getEngine(e.streamID()));
166  }
167  first_ = false;
168  // Make sure that the first crossing processed starts indexing the sim hits from zero.
169  // This variable is used so that the sim hits from all crossing frames have sequential
170  // indices used to create the digi-sim link (if configured to do so) rather than starting
171  // from zero for each crossing.
173  }

References algomap_, cms::cuda::assert(), edm::ESWatcher< T >::check(), crossingSimHitIndexOffset_, detectorUnits_, TrackerGeometry::detUnits(), MillePedeFileConverter_cfg::e, Exception, first_, edm::EventSetup::getData(), edm::RandomNumberGenerator::getEngine(), edm::Service< T >::isAvailable(), moduleTypeCache_, pDD_, pDDToken_, pSetup_, pSetupToken_, theTkDigiGeomWatcher_, align::Tracker, tTopo_, and tTopoToken_.

Referenced by PreMixingPhase2TrackerWorker::initializeEvent().

◆ loadAccumulator()

void cms::Phase2TrackerDigitizer::loadAccumulator ( const std::map< uint32_t, std::map< int, float > > &  accumulator)

Definition at line 208 of file Phase2TrackerDigitizer.cc.

208  {
209  for (const auto& detMap : accumulator) {
210  AlgorithmType algoType = getAlgoType(detMap.first);
211  auto& algo = *(algomap_.at(algoType));
212  algo.loadAccumulator(detMap.first, detMap.second);
213  }
214  }

References mixOne_premix_on_sim_cfi::accumulator, algomap_, and getAlgoType().

Referenced by PreMixingPhase2TrackerWorker::put().

Member Data Documentation

◆ algomap_

std::map<AlgorithmType, std::unique_ptr<Phase2TrackerDigitizerAlgorithm> > cms::Phase2TrackerDigitizer::algomap_
private

◆ crossingSimHitIndexOffset_

std::map<std::string, size_t> cms::Phase2TrackerDigitizer::crossingSimHitIndexOffset_
private

Offset to add to the index of each sim hit to account for which crossing it's in.

I need to know what each sim hit index will be when the hits from all crossing frames are merged into one collection (assuming the MixingModule is configured to create the crossing frame for all sim hits). To do this I'll record how many hits were in each crossing, and then add that on to the index for a given hit in a given crossing. This assumes that the crossings are processed in the same order here as they are put into the crossing frame, which I'm pretty sure is true.
The key is the name of the sim hit collection.

Definition at line 96 of file Phase2TrackerDigitizer.h.

Referenced by accumulate_local(), and initializeEvent().

◆ detectorUnits_

std::map<uint32_t, const Phase2TrackerGeomDetUnit*> cms::Phase2TrackerDigitizer::detectorUnits_
private

Definition at line 105 of file Phase2TrackerDigitizer.h.

Referenced by accumulatePixelHits(), and initializeEvent().

◆ first_

bool cms::Phase2TrackerDigitizer::first_
private

Definition at line 86 of file Phase2TrackerDigitizer.h.

Referenced by initializeEvent().

◆ hitsProducer_

const std::string cms::Phase2TrackerDigitizer::hitsProducer_
private

Definition at line 98 of file Phase2TrackerDigitizer.h.

Referenced by accumulate_local().

◆ isOuterTrackerReadoutAnalog_

const bool cms::Phase2TrackerDigitizer::isOuterTrackerReadoutAnalog_
private

Definition at line 108 of file Phase2TrackerDigitizer.h.

Referenced by finalizeEvent().

◆ makeDigiSimLinks_

const bool cms::Phase2TrackerDigitizer::makeDigiSimLinks_
private

◆ moduleTypeCache_

ModuleTypeCache cms::Phase2TrackerDigitizer::moduleTypeCache_
private

Definition at line 112 of file Phase2TrackerDigitizer.h.

Referenced by getAlgoType(), and initializeEvent().

◆ pDD_

const TrackerGeometry* cms::Phase2TrackerDigitizer::pDD_ = nullptr
private

◆ pDDToken_

const edm::ESGetToken<TrackerGeometry, TrackerDigiGeometryRecord> cms::Phase2TrackerDigitizer::pDDToken_
private

Definition at line 100 of file Phase2TrackerDigitizer.h.

Referenced by initializeEvent().

◆ premixStage1_

const bool cms::Phase2TrackerDigitizer::premixStage1_
private

Definition at line 109 of file Phase2TrackerDigitizer.h.

Referenced by finalizeEvent(), and Phase2TrackerDigitizer().

◆ pSetup_

const MagneticField* cms::Phase2TrackerDigitizer::pSetup_ = nullptr
private

Definition at line 104 of file Phase2TrackerDigitizer.h.

Referenced by accumulatePixelHits(), and initializeEvent().

◆ pSetupToken_

const edm::ESGetToken<MagneticField, IdealMagneticFieldRecord> cms::Phase2TrackerDigitizer::pSetupToken_
private

Definition at line 101 of file Phase2TrackerDigitizer.h.

Referenced by initializeEvent().

◆ theTkDigiGeomWatcher_

edm::ESWatcher<TrackerDigiGeometryRecord> cms::Phase2TrackerDigitizer::theTkDigiGeomWatcher_
private

Definition at line 107 of file Phase2TrackerDigitizer.h.

Referenced by initializeEvent().

◆ trackerContainers_

const vstring cms::Phase2TrackerDigitizer::trackerContainers_
private

Definition at line 99 of file Phase2TrackerDigitizer.h.

Referenced by accumulate_local().

◆ tTopo_

const TrackerTopology* cms::Phase2TrackerDigitizer::tTopo_ = nullptr
private

◆ tTopoToken_

const edm::ESGetToken<TrackerTopology, TrackerTopologyRcd> cms::Phase2TrackerDigitizer::tTopoToken_
private

Definition at line 102 of file Phase2TrackerDigitizer.h.

Referenced by initializeEvent().

Vector3DBase
Definition: Vector3DBase.h:8
edm::ESWatcher::check
bool check(const edm::EventSetup &iSetup)
Definition: ESWatcher.h:57
edm::DetSetVector< PixelDigi >
cms::Phase2TrackerDigitizer::AlgorithmType::StripinPS
cms::Phase2TrackerDigitizer::first_
bool first_
Definition: Phase2TrackerDigitizer.h:86
TrackerGeometry::ModuleType::Ph1PXF
edm::RandomNumberGenerator::getEngine
virtual CLHEP::HepRandomEngine & getEngine(StreamID const &)=0
Use this engine in event methods.
cms::Phase2TrackerDigitizer::accumulatePixelHits
void accumulatePixelHits(edm::Handle< std::vector< PSimHit > >, size_t globalSimHitIndex, const uint32_t tofBin)
Definition: Phase2TrackerDigitizer.cc:101
MagneticField::inTesla
virtual GlobalVector inTesla(const GlobalPoint &gp) const =0
Field value ad specified global point, in Tesla.
TrackerGeometry::ModuleType::Ph2PXF
edm::ESInputTag
Definition: ESInputTag.h:87
cms::Phase2TrackerDigitizer::getAlgoType
AlgorithmType getAlgoType(uint32_t idet)
Definition: Phase2TrackerDigitizer.cc:226
edm::Handle::product
T const * product() const
Definition: Handle.h:70
TrackerGeometry::ModuleType::Ph2PXB3D
cms::Phase2TrackerDigitizer::AlgorithmType::PixelinPS
TrackerGeometry::ModuleType::Ph2SS
cms::Phase2TrackerDigitizer::isOuterTrackerReadoutAnalog_
const bool isOuterTrackerReadoutAnalog_
Definition: Phase2TrackerDigitizer.h:108
edm::DetSet
Definition: DetSet.h:23
convertSQLitetoXML_cfg.output
output
Definition: convertSQLitetoXML_cfg.py:72
cms::Phase2TrackerDigitizer::pSetup_
const MagneticField * pSetup_
Definition: Phase2TrackerDigitizer.h:104
cms::Phase2TrackerDigitizer::tTopo_
const TrackerTopology * tTopo_
Definition: Phase2TrackerDigitizer.h:106
TrackerGeometry::ModuleType::Ph2PXF3D
cms::Phase2TrackerDigitizer::tTopoToken_
const edm::ESGetToken< TrackerTopology, TrackerTopologyRcd > tTopoToken_
Definition: Phase2TrackerDigitizer.h:102
cms::cuda::assert
assert(be >=bs)
FastTrackerRecHitCombiner_cfi.simHits
simHits
Definition: FastTrackerRecHitCombiner_cfi.py:5
reco::Unknown
Definition: MuonSimInfo.h:32
info
static const TGPicture * info(bool iBackgroundIsBlack)
Definition: FWCollectionSummaryWidget.cc:153
edm::ParameterSet::getUntrackedParameter
T getUntrackedParameter(std::string const &, T const &) const
TrackerGeometry::ModuleType::Ph2PXB
cms::Phase2TrackerDigitizer::moduleTypeCache_
ModuleTypeCache moduleTypeCache_
Definition: Phase2TrackerDigitizer.h:112
edm::LogInfo
Log< level::Info, false > LogInfo
Definition: MessageLogger.h:125
findQualityFiles.v
v
Definition: findQualityFiles.py:179
TrackerGeometry::getDetectorType
ModuleType getDetectorType(DetId) const
Definition: TrackerGeometry.cc:247
edm::ConsumesCollector::esConsumes
auto esConsumes()
Definition: ConsumesCollector.h:97
edm::Handle
Definition: AssociativeIterator.h:50
edm::Service::isAvailable
bool isAvailable() const
Definition: Service.h:40
align::Tracker
Definition: StructureType.h:70
DetId
Definition: DetId.h:17
cmsdt::algo
algo
Definition: constants.h:171
GeomDet::surface
const Plane & surface() const
The nominal surface of the GeomDet.
Definition: GeomDet.h:37
cms::Phase2TrackerDigitizer::AlgorithmType::Unknown
TrackerGeometry::detUnits
const DetContainer & detUnits() const override
Returm a vector of all GeomDet.
Definition: TrackerGeometry.h:61
PixelGeomDetUnit
Definition: PixelGeomDetUnit.h:15
TrackerGeometry::ModuleType
ModuleType
Definition: TrackerGeometry.h:29
mps_fire.end
end
Definition: mps_fire.py:242
cms::Phase2TrackerDigitizer::premixStage1_
const bool premixStage1_
Definition: Phase2TrackerDigitizer.h:109
cms::Phase2TrackerDigitizer::makeDigiSimLinks_
const bool makeDigiSimLinks_
Definition: Phase2TrackerDigitizer.h:110
LogDebug
#define LogDebug(id)
Definition: MessageLogger.h:233
edm::ParameterSet
Definition: ParameterSet.h:47
cms::Phase2TrackerDigitizer::AlgorithmType::InnerPixel3D
cms::Phase2TrackerDigitizer::detectorUnits_
std::map< uint32_t, const Phase2TrackerGeomDetUnit * > detectorUnits_
Definition: Phase2TrackerDigitizer.h:105
makeGlobalPositionRcd_cfg.tag
tag
Definition: makeGlobalPositionRcd_cfg.py:6
cms::Phase2TrackerDigitizer::pSetupToken_
const edm::ESGetToken< MagneticField, IdealMagneticFieldRecord > pSetupToken_
Definition: Phase2TrackerDigitizer.h:101
edm::Service< edm::RandomNumberGenerator >
iEvent
int iEvent
Definition: GenABIO.cc:224
edm::ProducesCollector::produces
ProductRegistryHelper::BranchAliasSetterT< ProductType > produces()
Definition: ProducesCollector.h:52
cms::Phase2TrackerDigitizer::algomap_
std::map< AlgorithmType, std::unique_ptr< Phase2TrackerDigitizerAlgorithm > > algomap_
Definition: Phase2TrackerDigitizer.h:97
TrackerGeometry::ModuleType::Ph2PSS
edm::LogError
Log< level::Error, false > LogError
Definition: MessageLogger.h:123
TrackerGeometry::ModuleType::Ph1PXB
cms::Phase2TrackerDigitizer::ModuleTypeCache
std::unordered_map< uint32_t, TrackerGeometry::ModuleType > ModuleTypeCache
Definition: Phase2TrackerDigitizer.h:53
AlCaHLTBitMon_QueryRunRegistry.string
string string
Definition: AlCaHLTBitMon_QueryRunRegistry.py:256
cms::Phase2TrackerDigitizer::hitsProducer_
const std::string hitsProducer_
Definition: Phase2TrackerDigitizer.h:98
GloballyPositioned::position
const PositionType & position() const
Definition: GloballyPositioned.h:36
mixOne_premix_on_sim_cfi.accumulator
accumulator
Definition: mixOne_premix_on_sim_cfi.py:167
eostools.move
def move(src, dest)
Definition: eostools.py:511
cms::Phase2TrackerDigitizer::AlgorithmType::TwoStrip
cms::Phase2TrackerDigitizer::addPixelCollection
void addPixelCollection(edm::Event &iEvent, const edm::EventSetup &iSetup, const bool ot_analog)
Definition: Phase2TrackerDigitizer.cc:272
Exception
Definition: hltDiff.cc:245
DigitizerUtility::DigiSimInfo
Definition: DigitizerUtility.h:124
cms::Phase2TrackerDigitizer::pDD_
const TrackerGeometry * pDD_
Definition: Phase2TrackerDigitizer.h:103
edm::ParameterSet::getParameter
T getParameter(std::string const &) const
Definition: ParameterSet.h:303
cms::Phase2TrackerDigitizer::crossingSimHitIndexOffset_
std::map< std::string, size_t > crossingSimHitIndexOffset_
Offset to add to the index of each sim hit to account for which crossing it's in.
Definition: Phase2TrackerDigitizer.h:96
cms::Phase2TrackerDigitizer::theTkDigiGeomWatcher_
edm::ESWatcher< TrackerDigiGeometryRecord > theTkDigiGeomWatcher_
Definition: Phase2TrackerDigitizer.h:107
cms::Phase2TrackerDigitizer::trackerContainers_
const vstring trackerContainers_
Definition: Phase2TrackerDigitizer.h:99
TrackerGeometry::ModuleType::UNKNOWN
edm::HandleBase::isValid
bool isValid() const
Definition: HandleBase.h:70
cms::Phase2TrackerDigitizer::pDDToken_
const edm::ESGetToken< TrackerGeometry, TrackerDigiGeometryRecord > pDDToken_
Definition: Phase2TrackerDigitizer.h:100
cms::Phase2TrackerDigitizer::AlgorithmType
AlgorithmType
Definition: Phase2TrackerDigitizer.h:76
edm::InputTag
Definition: InputTag.h:15
TrackerGeometry::ModuleType::Ph2PSP
PixelDigi::channelToPixel
static std::pair< int, int > channelToPixel(int ch)
Definition: PixelDigi.h:69
MillePedeFileConverter_cfg.e
e
Definition: MillePedeFileConverter_cfg.py:37
cms::Phase2TrackerDigitizer::AlgorithmType::InnerPixel