CMS 3D CMS Logo

SiStripDigitizer.cc
Go to the documentation of this file.
1 // File: SiStripDigitizerAlgorithm.cc
2 // Description: Class for digitization.
3 
4 // Modified 15/May/2013 mark.grimes@bristol.ac.uk - Modified so that the digi-sim link has the correct
5 // index for the sim hits stored. It was previously always set to zero (I won't mention that it was
6 // me who originally wrote that).
7 
8 // system include files
9 #include <memory>
10 
12 
13 #include "SiStripDigitizer.h"
16 
21 
22 // user include files
24 
27 
31 
33 //needed for the geometry:
43 //needed for the magnetic field:
46 
47 //Data Base infromations
52 
53 //Random Number
57 #include "CLHEP/Random/RandFlat.h"
58 
60  edm::ProducesCollector producesCollector,
62  : gainLabel(conf.getParameter<std::string>("Gain")),
63  hitsProducer(conf.getParameter<std::string>("hitsProducer")),
64  trackerContainers(conf.getParameter<std::vector<std::string>>("ROUList")),
65  ZSDigi(conf.getParameter<edm::ParameterSet>("DigiModeList").getParameter<std::string>("ZSDigi")),
66  SCDigi(conf.getParameter<edm::ParameterSet>("DigiModeList").getParameter<std::string>("SCDigi")),
67  VRDigi(conf.getParameter<edm::ParameterSet>("DigiModeList").getParameter<std::string>("VRDigi")),
68  PRDigi(conf.getParameter<edm::ParameterSet>("DigiModeList").getParameter<std::string>("PRDigi")),
69  geometryType(conf.getParameter<std::string>("GeometryType")),
70  useConfFromDB(conf.getParameter<bool>("TrackerConfigurationFromDB")),
71  zeroSuppression(conf.getParameter<bool>("ZeroSuppression")),
72  makeDigiSimLinks_(conf.getUntrackedParameter<bool>("makeDigiSimLinks", false)),
73  includeAPVSimulation_(conf.getParameter<bool>("includeAPVSimulation")),
74  fracOfEventsToSimAPV_(conf.getParameter<double>("fracOfEventsToSimAPV")) {
75  const std::string alias("simSiStripDigis");
76 
77  producesCollector.produces<edm::DetSetVector<SiStripDigi>>(ZSDigi).setBranchAlias(ZSDigi);
78  producesCollector.produces<edm::DetSetVector<SiStripRawDigi>>(SCDigi).setBranchAlias(alias + SCDigi);
79  producesCollector.produces<edm::DetSetVector<SiStripRawDigi>>(VRDigi).setBranchAlias(alias + VRDigi);
80  producesCollector.produces<edm::DetSetVector<SiStripRawDigi>>("StripAmplitudes")
81  .setBranchAlias(alias + "StripAmplitudes");
82  producesCollector.produces<edm::DetSetVector<SiStripRawDigi>>("StripAmplitudesPostAPV")
83  .setBranchAlias(alias + "StripAmplitudesPostAPV");
84  producesCollector.produces<edm::DetSetVector<SiStripRawDigi>>("StripAPVBaselines")
85  .setBranchAlias(alias + "StripAPVBaselines");
86  producesCollector.produces<edm::DetSetVector<SiStripRawDigi>>(PRDigi).setBranchAlias(alias + PRDigi);
87  producesCollector.produces<edm::DetSetVector<StripDigiSimLink>>().setBranchAlias(alias + "siStripDigiSimLink");
88  producesCollector.produces<bool>("SimulatedAPVDynamicGain").setBranchAlias(alias + "SimulatedAPVDynamicGain");
89  producesCollector.produces<std::vector<std::pair<int, std::bitset<6>>>>("AffectedAPVList")
90  .setBranchAlias(alias + "AffectedAPV");
91  for (auto const& trackerContainer : trackerContainers) {
92  edm::InputTag tag(hitsProducer, trackerContainer);
93  iC.consumes<std::vector<PSimHit>>(edm::InputTag(hitsProducer, trackerContainer));
94  }
96  if (!rng.isAvailable()) {
97  throw cms::Exception("Configuration")
98  << "SiStripDigitizer requires the RandomNumberGeneratorService\n"
99  "which is not present in the configuration file. You must add the service\n"
100  "in the configuration file or remove the modules that require it.";
101  }
102  theDigiAlgo = std::make_unique<SiStripDigitizerAlgorithm>(conf);
103 }
104 
105 // Virtual destructor needed.
107 
108 void SiStripDigitizer::accumulateStripHits(edm::Handle<std::vector<PSimHit>> hSimHits,
109  const TrackerTopology* tTopo,
110  size_t globalSimHitIndex,
111  const unsigned int tofBin) {
112  // globalSimHitIndex is the index the sim hit will have when it is put in a collection
113  // of sim hits for all crossings. This is only used when creating digi-sim links if
114  // configured to do so.
115 
116  if (hSimHits.isValid()) {
117  std::set<unsigned int> detIds;
118  std::vector<PSimHit> const& simHits = *hSimHits.product();
119  for (std::vector<PSimHit>::const_iterator it = simHits.begin(), itEnd = simHits.end(); it != itEnd;
120  ++it, ++globalSimHitIndex) {
121  unsigned int detId = (*it).detUnitId();
122  if (detIds.insert(detId).second) {
123  // The insert succeeded, so this detector element has not yet been processed.
124  assert(detectorUnits[detId]);
125  if (detectorUnits[detId]->type().isTrackerStrip()) { // this test can be removed and replaced by stripdet!=0
126  auto stripdet = detectorUnits[detId];
127  //access to magnetic field in global coordinates
128  GlobalVector bfield = pSetup->inTesla(stripdet->surface().position());
129  LogDebug("Digitizer ") << "B-field(T) at " << stripdet->surface().position()
130  << "(cm): " << pSetup->inTesla(stripdet->surface().position());
131  theDigiAlgo->accumulateSimHits(it, itEnd, globalSimHitIndex, tofBin, stripdet, bfield, tTopo, randomEngine_);
132  }
133  }
134  } // end of loop over sim hits
135  }
136 }
137 
138 // Functions that gets called by framework every event
140  //Retrieve tracker topology from geometry
142  iSetup.get<TrackerTopologyRcd>().get(tTopoHand);
143  const TrackerTopology* tTopo = tTopoHand.product();
144 
145  // Step A: Get Inputs
146  for (auto const& trackerContainer : trackerContainers) {
148  edm::InputTag tag(hitsProducer, trackerContainer);
149  unsigned int tofBin = StripDigiSimLink::LowTof;
150  if (trackerContainer.find(std::string("HighTof")) != std::string::npos)
151  tofBin = StripDigiSimLink::HighTof;
152 
153  iEvent.getByLabel(tag, simHits);
154  accumulateStripHits(simHits, tTopo, crossingSimHitIndexOffset_[tag.encode()], tofBin);
155  // Now that the hits have been processed, I'll add the amount of hits in this crossing on to
156  // the global counter. Next time accumulateStripHits() is called it will count the sim hits
157  // as though they were on the end of this collection.
158  // Note that this is only used for creating digi-sim links (if configured to do so).
159  if (simHits.isValid())
160  crossingSimHitIndexOffset_[tag.encode()] += simHits->size();
161  }
162 }
163 
165  edm::EventSetup const& iSetup,
166  edm::StreamID const& streamID) {
168  iSetup.get<TrackerTopologyRcd>().get(tTopoHand);
169  const TrackerTopology* tTopo = tTopoHand.product();
170 
171  //Re-compute luminosity for accumulation for HIP effects
172  theDigiAlgo->calculateInstlumiScale(PileupInfo_.get());
173 
174  // Step A: Get Inputs
175  for (auto const& trackerContainer : trackerContainers) {
177  edm::InputTag tag(hitsProducer, trackerContainer);
178  unsigned int tofBin = StripDigiSimLink::LowTof;
179  if (trackerContainer.find(std::string("HighTof")) != std::string::npos)
180  tofBin = StripDigiSimLink::HighTof;
181 
182  iEvent.getByLabel(tag, simHits);
183  accumulateStripHits(simHits, tTopo, crossingSimHitIndexOffset_[tag.encode()], tofBin);
184  // Now that the hits have been processed, I'll add the amount of hits in this crossing on to
185  // the global counter. Next time accumulateStripHits() is called it will count the sim hits
186  // as though they were on the end of this collection.
187  // Note that this is only used for creating digi-sim links (if configured to do so).
188  if (simHits.isValid())
189  crossingSimHitIndexOffset_[tag.encode()] += simHits->size();
190  }
191 }
192 
194  // Make sure that the first crossing processed starts indexing the sim hits from zero.
195  // This variable is used so that the sim hits from all crossing frames have sequential
196  // indices used to create the digi-sim link (if configured to do so) rather than starting
197  // from zero for each crossing.
199  theAffectedAPVvector.clear();
200  // Step A: Get Inputs
201 
202  if (useConfFromDB) {
204  iSetup.get<SiStripDetCablingRcd>().get(detCabling);
205  detCabling->addConnected(theDetIdList);
206  }
207 
208  // Cache random number engine
210  randomEngine_ = &rng->getEngine(iEvent.streamID());
211 
212  theDigiAlgo->initializeEvent(iSetup);
213 
216 
217  // FIX THIS! We only need to clear and (re)fill detectorUnits when the geometry type IOV changes. Use ESWatcher to determine this.
218  bool changes = true;
219  if (changes) { // Replace with ESWatcher
220  detectorUnits.clear();
221  }
222  for (const auto& iu : pDD->detUnits()) {
223  unsigned int detId = iu->geographicalId().rawId();
224  if (iu->type().isTrackerStrip()) {
225  auto stripdet = dynamic_cast<StripGeomDetUnit const*>(iu);
226  assert(stripdet != nullptr);
227  if (changes) { // Replace with ESWatcher
228  detectorUnits.insert(std::make_pair(detId, stripdet));
229  }
230  theDigiAlgo->initializeDetUnit(stripdet, iSetup);
231  }
232  }
233 }
234 
236  edm::ESHandle<SiStripGain> gainHandle;
237  edm::ESHandle<SiStripNoises> noiseHandle;
238  edm::ESHandle<SiStripThreshold> thresholdHandle;
239  edm::ESHandle<SiStripPedestals> pedestalHandle;
240  edm::ESHandle<SiStripApvSimulationParameters> apvSimulationParametersHandle;
241  iSetup.get<SiStripGainSimRcd>().get(gainLabel, gainHandle);
242  iSetup.get<SiStripNoisesRcd>().get(noiseHandle);
243  iSetup.get<SiStripThresholdRcd>().get(thresholdHandle);
244  iSetup.get<SiStripPedestalsRcd>().get(pedestalHandle);
245 
246  std::unique_ptr<bool> simulateAPVInThisEvent = std::make_unique<bool>(false);
247  if (includeAPVSimulation_) {
248  if (CLHEP::RandFlat::shoot(randomEngine_) < fracOfEventsToSimAPV_) {
249  *simulateAPVInThisEvent = true;
250  iSetup.get<SiStripApvSimulationParametersRcd>().get(apvSimulationParametersHandle);
251  }
252  }
253  std::vector<edm::DetSet<SiStripDigi>> theDigiVector;
254  std::vector<edm::DetSet<SiStripRawDigi>> theRawDigiVector;
255  std::unique_ptr<edm::DetSetVector<SiStripRawDigi>> theStripAmplitudeVector(new edm::DetSetVector<SiStripRawDigi>());
256  std::unique_ptr<edm::DetSetVector<SiStripRawDigi>> theStripAmplitudeVectorPostAPV(
258  std::unique_ptr<edm::DetSetVector<SiStripRawDigi>> theStripAPVBaselines(new edm::DetSetVector<SiStripRawDigi>());
259  std::unique_ptr<edm::DetSetVector<StripDigiSimLink>> pOutputDigiSimLink(new edm::DetSetVector<StripDigiSimLink>);
260 
262  iSetup.get<TrackerTopologyRcd>().get(tTopoHand);
263  const TrackerTopology* tTopo = tTopoHand.product();
264 
265  // Step B: LOOP on StripGeomDetUnit
266  theDigiVector.reserve(10000);
267  theDigiVector.clear();
268 
269  for (const auto& iu : pDD->detUnits()) {
270  if (useConfFromDB) {
271  //apply the cable map _before_ digitization: consider only the detis that are connected
272  if (theDetIdList.find(iu->geographicalId().rawId()) == theDetIdList.end())
273  continue;
274  }
275  auto sgd = dynamic_cast<StripGeomDetUnit const*>(iu);
276  if (sgd != nullptr) {
277  edm::DetSet<SiStripDigi> collectorZS(iu->geographicalId().rawId());
278  edm::DetSet<SiStripRawDigi> collectorRaw(iu->geographicalId().rawId());
279  edm::DetSet<SiStripRawDigi> collectorStripAmplitudes(iu->geographicalId().rawId());
280  edm::DetSet<SiStripRawDigi> collectorStripAmplitudesPostAPV(iu->geographicalId().rawId());
281  edm::DetSet<SiStripRawDigi> collectorStripAPVBaselines(iu->geographicalId().rawId());
282  edm::DetSet<StripDigiSimLink> collectorLink(iu->geographicalId().rawId());
283 
284  unsigned int detID = sgd->geographicalId().rawId();
285  DetId detId(detID);
286 
287  theDigiAlgo->digitize(collectorZS,
288  collectorRaw,
289  collectorStripAmplitudes,
290  collectorStripAmplitudesPostAPV,
291  collectorStripAPVBaselines,
292  collectorLink,
293  sgd,
294  gainHandle,
295  thresholdHandle,
296  noiseHandle,
297  pedestalHandle,
298  *simulateAPVInThisEvent,
299  apvSimulationParametersHandle,
302  tTopo);
303 
304  if (!collectorStripAmplitudes.data.empty())
305  theStripAmplitudeVector->insert(collectorStripAmplitudes);
306  if (!collectorStripAmplitudesPostAPV.data.empty())
307  theStripAmplitudeVectorPostAPV->insert(collectorStripAmplitudesPostAPV);
308  if (!collectorStripAPVBaselines.data.empty())
309  theStripAPVBaselines->insert(collectorStripAPVBaselines);
310 
311  if (zeroSuppression) {
312  if (!collectorZS.data.empty()) {
313  theDigiVector.push_back(collectorZS);
314  if (!collectorLink.data.empty())
315  pOutputDigiSimLink->insert(collectorLink);
316  }
317  } else {
318  if (!collectorRaw.data.empty()) {
319  theRawDigiVector.push_back(collectorRaw);
320  if (!collectorLink.data.empty())
321  pOutputDigiSimLink->insert(collectorLink);
322  }
323  }
324  }
325  }
326  if (zeroSuppression) {
327  // Step C: create output collection
328  std::unique_ptr<edm::DetSetVector<SiStripRawDigi>> output_virginraw(new edm::DetSetVector<SiStripRawDigi>());
329  std::unique_ptr<edm::DetSetVector<SiStripRawDigi>> output_scopemode(new edm::DetSetVector<SiStripRawDigi>());
330  std::unique_ptr<edm::DetSetVector<SiStripRawDigi>> output_processedraw(new edm::DetSetVector<SiStripRawDigi>());
331  std::unique_ptr<edm::DetSetVector<SiStripDigi>> output(new edm::DetSetVector<SiStripDigi>(theDigiVector));
332  std::unique_ptr<std::vector<std::pair<int, std::bitset<6>>>> AffectedAPVList(
333  new std::vector<std::pair<int, std::bitset<6>>>(theAffectedAPVvector));
334 
335  // Step D: write output to file
336  iEvent.put(std::move(output), ZSDigi);
337  iEvent.put(std::move(output_scopemode), SCDigi);
338  iEvent.put(std::move(output_virginraw), VRDigi);
339  iEvent.put(std::move(theStripAmplitudeVector), "StripAmplitudes");
340  iEvent.put(std::move(theStripAmplitudeVectorPostAPV), "StripAmplitudesPostAPV");
341  iEvent.put(std::move(theStripAPVBaselines), "StripAPVBaselines");
342  iEvent.put(std::move(output_processedraw), PRDigi);
343  iEvent.put(std::move(AffectedAPVList), "AffectedAPVList");
344  iEvent.put(std::move(simulateAPVInThisEvent), "SimulatedAPVDynamicGain");
345  if (makeDigiSimLinks_)
346  iEvent.put(
347  std::move(pOutputDigiSimLink)); // The previous EDProducer didn't name this collection so I won't either
348  } else {
349  // Step C: create output collection
350  std::unique_ptr<edm::DetSetVector<SiStripRawDigi>> output_virginraw(
351  new edm::DetSetVector<SiStripRawDigi>(theRawDigiVector));
352  std::unique_ptr<edm::DetSetVector<SiStripRawDigi>> output_scopemode(new edm::DetSetVector<SiStripRawDigi>());
353  std::unique_ptr<edm::DetSetVector<SiStripRawDigi>> output_processedraw(new edm::DetSetVector<SiStripRawDigi>());
354  std::unique_ptr<edm::DetSetVector<SiStripDigi>> output(new edm::DetSetVector<SiStripDigi>());
355 
356  // Step D: write output to file
357  iEvent.put(std::move(output), ZSDigi);
358  iEvent.put(std::move(output_scopemode), SCDigi);
359  iEvent.put(std::move(output_virginraw), VRDigi);
360  iEvent.put(std::move(theStripAmplitudeVector), "StripAmplitudes");
361  iEvent.put(std::move(theStripAmplitudeVectorPostAPV), "StripAmplitudesPostAPV");
362  iEvent.put(std::move(theStripAPVBaselines), "StripAPVBaselines");
363  iEvent.put(std::move(output_processedraw), PRDigi);
364  iEvent.put(std::move(simulateAPVInThisEvent), "SimulatedAPVDynamicGain");
365  if (makeDigiSimLinks_)
366  iEvent.put(
367  std::move(pOutputDigiSimLink)); // The previous EDProducer didn't name this collection so I won't either
368  }
369  randomEngine_ = nullptr; // to prevent access outside event
370 }
Vector3DBase
Definition: Vector3DBase.h:8
edm::ESHandle::product
T const * product() const
Definition: ESHandle.h:86
edm::DetSetVector< SiStripDigi >
edm::StreamID
Definition: StreamID.h:30
SiStripSimParameters_cfi.PRDigi
PRDigi
Definition: SiStripSimParameters_cfi.py:84
SiStripDependentRecords.h
edm::RandomNumberGenerator::getEngine
virtual CLHEP::HepRandomEngine & getEngine(StreamID const &)=0
Use this engine in event methods.
MagneticField::inTesla
virtual GlobalVector inTesla(const GlobalPoint &gp) const =0
Field value ad specified global point, in Tesla.
electrons_cff.bool
bool
Definition: electrons_cff.py:366
SiStripDigitizer::PRDigi
const std::string PRDigi
Definition: SiStripDigitizer.h:83
SiStripDigitizer::geometryType
const std::string geometryType
Definition: SiStripDigitizer.h:84
StripGeomDetUnit.h
funct::false
false
Definition: Factorize.h:29
TrackerGeometry.h
StripGeomDetType.h
ESHandle.h
SiStripDigitizer.h
edm::DetSet< SiStripDigi >
convertSQLitetoXML_cfg.output
output
Definition: convertSQLitetoXML_cfg.py:72
SiStripDigitizer::makeDigiSimLinks_
const bool makeDigiSimLinks_
Definition: SiStripDigitizer.h:87
edm
HLT enums.
Definition: AlignableModifier.h:19
RandomNumberGenerator.h
TrackerTopology
Definition: TrackerTopology.h:16
SiStripRawDigi.h
PSimHitContainer.h
HLT_FULL_cff.InputTag
InputTag
Definition: HLT_FULL_cff.py:89285
SiStripDigitizer::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: SiStripDigitizer.h:100
GeomDetType.h
cms::cuda::assert
assert(be >=bs)
FastTrackerRecHitCombiner_cfi.simHits
simHits
Definition: FastTrackerRecHitCombiner_cfi.py:5
PileUpEventPrincipal
Definition: PileUpEventPrincipal.h:19
StripTopology.h
SiStripApvSimulationParametersRcd
Definition: SiStripCondDataRecords.h:58
edm::Handle
Definition: AssociativeIterator.h:50
edm::Service::isAvailable
bool isAvailable() const
Definition: Service.h:40
SiStripDigitizer::SiStripDigitizer
SiStripDigitizer(const edm::ParameterSet &conf, edm::ProducesCollector, edm::ConsumesCollector &iC)
Definition: SiStripDigitizer.cc:59
SiStripPedestalsRcd
Definition: SiStripCondDataRecords.h:43
SiStripNoisesRcd
Definition: SiStripCondDataRecords.h:40
SiStripDigitizer::gainLabel
const std::string gainLabel
Definition: SiStripDigitizer.h:77
hcalUnsuppressedDigis_cfi.hitsProducer
hitsProducer
Definition: hcalUnsuppressedDigis_cfi.py:22
csctfpacker_cfi.zeroSuppression
zeroSuppression
Definition: csctfpacker_cfi.py:6
IdealMagneticFieldRecord
Definition: IdealMagneticFieldRecord.h:11
SiStripDigitizer::pSetup
edm::ESHandle< MagneticField > pSetup
Definition: SiStripDigitizer.h:105
DetId
Definition: DetId.h:17
SiStripDigitizer::pDD
edm::ESHandle< TrackerGeometry > pDD
Definition: SiStripDigitizer.h:104
MakerMacros.h
SiStripDetCabling.h
PSimHit.h
edm::EventSetup::get
T get() const
Definition: EventSetup.h:87
SiStripDigitizer::ZSDigi
const std::string ZSDigi
Definition: SiStripDigitizer.h:80
SiStripDigitizer::theAffectedAPVvector
std::vector< std::pair< int, std::bitset< 6 > > > theAffectedAPVvector
Definition: SiStripDigitizer.h:108
SiStripDigitizer::~SiStripDigitizer
~SiStripDigitizer() override
Definition: SiStripDigitizer.cc:106
GlobalPosition_Frontier_DevDB_cff.tag
tag
Definition: GlobalPosition_Frontier_DevDB_cff.py:11
TrackerGeometry::detUnits
const DetContainer & detUnits() const override
Returm a vector of all GeomDet.
Definition: TrackerGeometry.h:61
Service.h
TrackerDigiGeometryRecord
Definition: TrackerDigiGeometryRecord.h:15
SiStripDigi.h
IdealMagneticFieldRecord.h
edm::ESHandle< TrackerTopology >
SiStripDigitizer::theDigiAlgo
std::unique_ptr< SiStripDigitizerAlgorithm > theDigiAlgo
Definition: SiStripDigitizer.h:102
SiStripDigitizer::VRDigi
const std::string VRDigi
Definition: SiStripDigitizer.h:82
PileUpEventPrincipal.h
edm::ConsumesCollector::consumes
EDGetTokenT< ProductType > consumes(edm::InputTag const &tag)
Definition: ConsumesCollector.h:55
SiStripDigitizer::initializeEvent
void initializeEvent(edm::Event const &e, edm::EventSetup const &c) override
Definition: SiStripDigitizer.cc:193
SiStripDetCablingRcd
Definition: SiStripDependentRecords.h:19
SiStripDigitizer::hitsProducer
const std::string hitsProducer
Definition: SiStripDigitizer.h:78
SiStripSimParameters_cfi.VRDigi
VRDigi
Definition: SiStripSimParameters_cfi.py:85
SiStripThresholdRcd
Definition: SiStripCondDataRecords.h:50
AlCaHLTBitMon_QueryRunRegistry.string
string
Definition: AlCaHLTBitMon_QueryRunRegistry.py:256
TrackerDigiGeometryRecord.h
LogDebug
#define LogDebug(id)
Definition: MessageLogger.h:233
edm::ParameterSet
Definition: ParameterSet.h:47
SiStripDigitizer::fracOfEventsToSimAPV_
const double fracOfEventsToSimAPV_
Whether or not to create the association to sim truth collection. Set in configuration.
Definition: SiStripDigitizer.h:89
SiStripCondDataRecords.h
Event.h
ParameterSet
Definition: Functions.h:16
gainCalibHelper::gainCalibPI::type
type
Definition: SiPixelGainCalibHelper.h:40
edm::Service< edm::RandomNumberGenerator >
iEvent
int iEvent
Definition: GenABIO.cc:224
trackerHitRTTI::vector
Definition: trackerHitRTTI.h:21
SiStripDigitizer::randomEngine_
CLHEP::HepRandomEngine * randomEngine_
Definition: SiStripDigitizer.h:107
SiStripDigitizer::useConfFromDB
const bool useConfFromDB
Definition: SiStripDigitizer.h:85
edm::ProducesCollector::produces
ProductRegistryHelper::BranchAliasSetterT< ProductType > produces()
Definition: ProducesCollector.h:52
MagneticField.h
edm::EventSetup
Definition: EventSetup.h:58
DetSetVector.h
SiStripDigitizer::trackerContainers
const vstring trackerContainers
Definition: SiStripDigitizer.h:79
GeometricDet.h
get
#define get
SiStripDigitizer::PileupInfo_
std::unique_ptr< PileupMixingContent > PileupInfo_
Definition: SiStripDigitizer.h:110
SiStripDigitizer::SCDigi
const std::string SCDigi
Definition: SiStripDigitizer.h:81
eostools.move
def move(src, dest)
Definition: eostools.py:511
std
Definition: JetResolutionObject.h:76
SiStripDigitizerAlgorithm.h
edm::ProducesCollector
Definition: ProducesCollector.h:43
SiStripDigitizer::accumulateStripHits
void accumulateStripHits(edm::Handle< std::vector< PSimHit >>, const TrackerTopology *tTopo, size_t globalSimHitIndex, const unsigned int tofBin)
Definition: SiStripDigitizer.cc:108
Frameworkfwd.h
SiStripSimParameters_cfi.SCDigi
SCDigi
Definition: SiStripSimParameters_cfi.py:82
SiStripOfflineCRack_cfg.alias
alias
Definition: SiStripOfflineCRack_cfg.py:128
Exception
Definition: hltDiff.cc:245
SiStripApvSimulationParameters.h
EventSetup.h
SiStripDigitizer::includeAPVSimulation_
const bool includeAPVSimulation_
Definition: SiStripDigitizer.h:88
Exception.h
SiStripGainSimRcd
Definition: SiStripDependentRecords.h:32
ConsumesCollector.h
SiStripSimParameters_cfi.ZSDigi
ZSDigi
Definition: SiStripSimParameters_cfi.py:83
SiStripDigitizer::zeroSuppression
const bool zeroSuppression
Definition: SiStripDigitizer.h:86
TrackerTopologyRcd
Definition: TrackerTopologyRcd.h:10
ParameterSet.h
SiStripDigitizer::accumulate
void accumulate(edm::Event const &e, edm::EventSetup const &c) override
Definition: SiStripDigitizer.cc:139
SiStripDigitizer::detectorUnits
std::map< unsigned int, StripGeomDetUnit const * > detectorUnits
Definition: SiStripDigitizer.h:106
edm::Event
Definition: Event.h:73
SiStripDetCabling::addConnected
void addConnected(std::map< uint32_t, std::vector< int >> &) const
Definition: SiStripDetCabling.cc:227
edm::InputTag
Definition: InputTag.h:15
edm::ConsumesCollector
Definition: ConsumesCollector.h:45
GeomDetEnumerators::isTrackerStrip
bool isTrackerStrip(GeomDetEnumerators::SubDetector m)
Definition: GeomDetEnumerators.cc:64
SiStripDigitizer::finalizeEvent
void finalizeEvent(edm::Event &e, edm::EventSetup const &c) override
Definition: SiStripDigitizer.cc:235
SiStripDigitizer::theDetIdList
std::map< uint32_t, std::vector< int > > theDetIdList
Definition: SiStripDigitizer.h:103
SimHitSelectorFromDB.h