CMS 3D CMS Logo

Phase2TrackerDigitizer.cc
Go to the documentation of this file.
1 //
2 //
3 // Package: Phase2TrackerDigitizer
4 // Class: Phase2TrackerDigitizer
5 //
6 // *\class SiPhase2TrackerDigitizer Phase2TrackerDigitizer.cc SimTracker/SiPhase2Digitizer/src/Phase2TrackerDigitizer.cc
7 //
8 // Author: Suchandra Dutta, Suvankar Roy Chowdhury, Subir Sarkar
9 // Date: January 29, 2016
10 // Description: <one line class summary>
11 //
12 // Implementation:
13 // <Notes on implementation>
14 //
15 #include <memory>
16 #include <set>
17 #include <iostream>
18 
27 
34 
38 
45 
48 
51 
53 
55 
56 // Random Number
59 
60 namespace cms {
61 
63  edm::ProducesCollector producesCollector,
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")))),
69  pSetupToken_(iC.esConsumes()),
70  tTopoToken_(iC.esConsumes()),
71  isOuterTrackerReadoutAnalog_(iConfig.getParameter<bool>("isOTreadoutAnalog")),
72  premixStage1_(iConfig.getParameter<bool>("premixStage1")),
73  makeDigiSimLinks_(
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  }
99 
101  void Phase2TrackerDigitizer::accumulatePixelHits(edm::Handle<std::vector<PSimHit> > hSimHits,
102  size_t globalSimHitIndex,
103  const uint32_t tofBin) {
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  }
131 
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  }
175  accumulate_local<edm::Event>(iEvent, iSetup);
176  }
177 
179  edm::EventSetup const& iSetup,
180  edm::StreamID const&) {
181  accumulate_local<PileUpEventPrincipal>(iEvent, iSetup);
182  }
183 
184  template <class T>
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  }
206 
207  // For premixing
208  void Phase2TrackerDigitizer::loadAccumulator(const std::map<uint32_t, std::map<int, float> >& accumulator) {
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  }
215 
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  }
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  }
273  const edm::EventSetup& iSetup,
274  const bool ot_analog) {
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  }
321 } // namespace cms
322 namespace {
323  void addToCollector(edm::DetSet<PixelDigi>& collector, const int channel, const DigitizerUtility::DigiSimInfo& info) {
324  // For premixing stage1 the channel must be decoded with PixelDigi
325  // so that when the row and column are inserted to PixelDigi the
326  // coded channel stays the same (so that it can then be decoded
327  // with Phase2TrackerDigi in stage2).
328  const auto& ip = PixelDigi::channelToPixel(channel);
329  collector.data.emplace_back(ip.first, ip.second, info.sig_tot);
330  }
331  void addToCollector(edm::DetSet<Phase2TrackerDigi>& collector,
332  const int channel,
334  const auto& ip = Phase2TrackerDigi::channelToPixel(channel);
335  collector.data.emplace_back(ip.first, ip.second, info.ot_bit);
336  }
337 } // namespace
338 namespace cms {
339  template <typename DigiType>
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  }
384 } // namespace cms
385 
388 
Vector3DBase
Definition: Vector3DBase.h:8
edm::ESWatcher::check
bool check(const edm::EventSetup &iSetup)
Definition: ESWatcher.h:57
edm::DetSetVector< PixelDigi >
edm::StreamID
Definition: StreamID.h:30
PixelDigiCollection.h
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.
Handle.h
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
electrons_cff.bool
bool
Definition: electrons_cff.py:366
cms::Phase2TrackerDigitizer::getAlgoType
AlgorithmType getAlgoType(uint32_t idet)
Definition: Phase2TrackerDigitizer.cc:226
MessageLogger.h
PSSDigitizerAlgorithm.h
EDProducer.h
TrackerGeometry::ModuleType::Ph2PXB3D
Phase2TrackerDigitizer.h
ESInputTag
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
Pixel3DDigitizerAlgorithm.h
LuminosityBlock.h
cms::Phase2TrackerDigitizer::pSetup_
const MagneticField * pSetup_
Definition: Phase2TrackerDigitizer.h:104
edm
HLT enums.
Definition: AlignableModifier.h:19
RandomNumberGenerator.h
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
info
static const TGPicture * info(bool iBackgroundIsBlack)
Definition: FWCollectionSummaryWidget.cc:153
PileUpEventPrincipal
Definition: PileUpEventPrincipal.h:19
Phase2TrackerDigitizerAlgorithm.h
PixelDigi.h
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
cms::Phase2TrackerDigitizer::finalizeEvent
void finalizeEvent(edm::Event &e, edm::EventSetup const &c) override
Definition: Phase2TrackerDigitizer.cc:216
TrackerGeometry::getDetectorType
ModuleType getDetectorType(DetId) const
Definition: TrackerGeometry.cc:247
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
MakerMacros.h
cms::Phase2TrackerDigitizer::initializeEvent
void initializeEvent(edm::Event const &e, edm::EventSetup const &c) override
Definition: Phase2TrackerDigitizer.cc:132
PSimHit.h
PixelDigitizerAlgorithm.h
cms::Phase2TrackerDigitizer::AlgorithmType::Unknown
TrackerGeometry::detUnits
const DetContainer & detUnits() const override
Returm a vector of all GeomDet.
Definition: TrackerGeometry.h:61
Service.h
cms::Phase2TrackerDigitizer::accumulate_local
void accumulate_local(T const &iEvent, edm::EventSetup const &iSetup)
Definition: Phase2TrackerDigitizer.cc:185
PixelGeomDetUnit
Definition: PixelGeomDetUnit.h:15
TrackerGeometry::ModuleType
ModuleType
Definition: TrackerGeometry.h:29
mps_fire.end
end
Definition: mps_fire.py:242
PileUpEventPrincipal.h
cms::Phase2TrackerDigitizer::premixStage1_
const bool premixStage1_
Definition: Phase2TrackerDigitizer.h:109
cms::Phase2TrackerDigitizer::loadAccumulator
void loadAccumulator(const std::map< uint32_t, std::map< int, float > > &accumulator)
Definition: Phase2TrackerDigitizer.cc:208
cms::Phase2TrackerDigitizer::makeDigiSimLinks_
const bool makeDigiSimLinks_
Definition: Phase2TrackerDigitizer.h:110
funct::true
true
Definition: Factorize.h:173
SSDigitizerAlgorithm.h
Phase2TrackerDigi.h
LogDebug
#define LogDebug(id)
Definition: MessageLogger.h:233
edm::ParameterSet
Definition: ParameterSet.h:47
Event.h
cms::Phase2TrackerDigitizer::AlgorithmType::InnerPixel3D
ParameterSet
Definition: Functions.h:16
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
trackerHitRTTI::vector
Definition: trackerHitRTTI.h:21
Phase2TrackerDigi::channelToPixel
static std::pair< unsigned int, unsigned int > channelToPixel(unsigned int ch)
Definition: Phase2TrackerDigi.h:39
edm::ProducesCollector::produces
ProductRegistryHelper::BranchAliasSetterT< ProductType > produces()
Definition: ProducesCollector.h:52
MagneticField.h
edm::EventSetup
Definition: EventSetup.h:58
cms::Phase2TrackerDigitizer::algomap_
std::map< AlgorithmType, std::unique_ptr< Phase2TrackerDigitizerAlgorithm > > algomap_
Definition: Phase2TrackerDigitizer.h:97
DetSetVector.h
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
InputTag.h
edm::EventSetup::getData
bool getData(T &iHolder) const
Definition: EventSetup.h:127
cms::Phase2TrackerDigitizer::hitsProducer_
const std::string hitsProducer_
Definition: Phase2TrackerDigitizer.h:98
cms::Phase2TrackerDigitizer::addOuterTrackerCollection
void addOuterTrackerCollection(edm::Event &iEvent, const edm::EventSetup &iSetup)
Definition: Phase2TrackerDigitizer.cc:340
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
GeomDet.h
eostools.move
def move(src, dest)
Definition: eostools.py:511
std
Definition: JetResolutionObject.h:76
cms::Phase2TrackerDigitizer::~Phase2TrackerDigitizer
~Phase2TrackerDigitizer() override
Definition: Phase2TrackerDigitizer.cc:100
edm::ProducesCollector
Definition: ProducesCollector.h:43
cms::Phase2TrackerDigitizer
Definition: Phase2TrackerDigitizer.h:51
cms::Phase2TrackerDigitizer::AlgorithmType::TwoStrip
cms::Phase2TrackerDigitizer::addPixelCollection
void addPixelCollection(edm::Event &iEvent, const edm::EventSetup &iSetup, const bool ot_analog)
Definition: Phase2TrackerDigitizer.cc:272
T
long double T
Definition: Basic3DVectorLD.h:48
Exception
Definition: hltDiff.cc:245
DigitizerUtility::DigiSimInfo
Definition: DigitizerUtility.h:124
PixelGeomDetUnit.h
edm::DetSet::data
collection_type data
Definition: DetSet.h:80
EventSetup.h
cms::Phase2TrackerDigitizer::pDD_
const TrackerGeometry * pDD_
Definition: Phase2TrackerDigitizer.h:103
edm::ParameterSet::getParameter
T getParameter(std::string const &) const
Definition: ParameterSet.h:303
Exception.h
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
PSPDigitizerAlgorithm.h
DetSet.h
ConsumesCollector.h
cms::Phase2TrackerDigitizer::theTkDigiGeomWatcher_
edm::ESWatcher< TrackerDigiGeometryRecord > theTkDigiGeomWatcher_
Definition: Phase2TrackerDigitizer.h:107
cms::Phase2TrackerDigitizer::trackerContainers_
const vstring trackerContainers_
Definition: Phase2TrackerDigitizer.h:99
DigiAccumulatorMixModFactory.h
genParticles_cff.map
map
Definition: genParticles_cff.py:11
ParameterSet.h
DEFINE_DIGI_ACCUMULATOR
#define DEFINE_DIGI_ACCUMULATOR(type)
Definition: DigiAccumulatorMixModFactory.h:31
cms::Phase2TrackerDigitizer::Phase2TrackerDigitizer
Phase2TrackerDigitizer(const edm::ParameterSet &iConfig, edm::ProducesCollector, edm::ConsumesCollector &iC)
Definition: Phase2TrackerDigitizer.cc:62
TrackerGeometry::ModuleType::UNKNOWN
DeDxTools::esConsumes
ESGetTokenH3DDVariant esConsumes(std::string const &Reccord, edm::ConsumesCollector &)
Definition: DeDxTools.cc:283
edm::Event
Definition: Event.h:73
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
edm::ConsumesCollector
Definition: ConsumesCollector.h:45
cms::Phase2TrackerDigitizer::accumulate
void accumulate(edm::Event const &e, edm::EventSetup const &c) override
Definition: Phase2TrackerDigitizer.cc:174
TrackerGeometry::ModuleType::Ph2PSP
PixelDigi::channelToPixel
static std::pair< int, int > channelToPixel(int ch)
Definition: PixelDigi.h:69
cms
Namespace of DDCMS conversion namespace.
Definition: ProducerAnalyzer.cc:21
MillePedeFileConverter_cfg.e
e
Definition: MillePedeFileConverter_cfg.py:37
cms::Phase2TrackerDigitizer::AlgorithmType::InnerPixel
DigitizerUtility.h