CMS 3D CMS Logo

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

#include <SiPixelDigitizer.h>

Inheritance diagram for cms::SiPixelDigitizer:
DigiAccumulatorMixMod

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
 
virtual void beginJob ()
 
void finalizeEvent (edm::Event &e, edm::EventSetup const &c) override
 
PileupMixingContentgetEventPileupInfo () override
 
void initializeEvent (edm::Event const &e, edm::EventSetup const &c) override
 
 SiPixelDigitizer (const edm::ParameterSet &conf, edm::ProducerBase &mixMod, edm::ConsumesCollector &iC)
 
void StorePileupInformation (std::vector< int > &numInteractionList, std::vector< int > &bunchCrossingList, std::vector< float > &TrueInteractionList, std::vector< edm::EventID > &eventInfoList, int bunchSpacing) override
 
 ~SiPixelDigitizer () 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 void initializeBunchCrossing (edm::Event const &event, edm::EventSetup const &setup, int bunchCrossing)
 
virtual ~DigiAccumulatorMixMod ()
 

Private Types

typedef std::vector< std::string > vstring
 

Private Member Functions

void accumulatePixelHits (edm::Handle< std::vector< PSimHit > >, size_t globalSimHitIndex, const unsigned int tofBin, CLHEP::HepRandomEngine *, edm::EventSetup const &c)
 
CLHEP::HepRandomEngine * randomEngine (edm::StreamID const &streamID)
 

Private Attributes

std::unique_ptr< SiPixelDigitizerAlgorithm_pixeldigialgo
 
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< unsigned int, PixelGeomDetUnit const * > detectorUnits
 
bool firstFinalizeEvent_
 
bool firstInitializeEvent_
 
const std::string geometryType
 
const std::string hitsProducer
 
const int NumberOfEndcapDisks
 
edm::ESHandle< TrackerGeometrypDD
 
PileupMixingContentPileupInfo_
 
const bool pilotBlades
 
edm::ESHandle< MagneticFieldpSetup
 
std::vector< CLHEP::HepRandomEngine * > randomEngines_
 
const vstring trackerContainers
 

Detailed Description

Definition at line 47 of file SiPixelDigitizer.h.

Member Typedef Documentation

typedef std::vector<std::string> cms::SiPixelDigitizer::vstring
private

Definition at line 91 of file SiPixelDigitizer.h.

Constructor & Destructor Documentation

SiPixelDigitizer::SiPixelDigitizer ( const edm::ParameterSet conf,
edm::ProducerBase mixMod,
edm::ConsumesCollector iC 
)
explicit

Definition at line 94 of file SiPixelDigitizer.cc.

References _pixeldigialgo, met_cff::alias, edm::ConsumesCollector::consumes(), Exception, hitsProducer, edm::ProductRegistryHelper::produces(), AlCaHLTBitMon_QueryRunRegistry::string, GlobalPosition_Frontier_DevDB_cff::tag, and trackerContainers.

94  :
96  firstFinalizeEvent_(true),
98  hitsProducer(iConfig.getParameter<std::string>("hitsProducer")),
99  trackerContainers(iConfig.getParameter<std::vector<std::string> >("RoutList")),
100  geometryType(iConfig.getParameter<std::string>("PixGeometryType")),
101  pilotBlades(iConfig.exists("enablePilotBlades")?iConfig.getParameter<bool>("enablePilotBlades"):false),
102  NumberOfEndcapDisks(iConfig.exists("NumPixelEndcap")?iConfig.getParameter<int>("NumPixelEndcap"):2)
103  {
104  edm::LogInfo ("PixelDigitizer ") <<"Enter the Pixel Digitizer";
105 
106  const std::string alias ("simSiPixelDigis");
107 
108  mixMod.produces<edm::DetSetVector<PixelDigi> >().setBranchAlias(alias);
109  mixMod.produces<edm::DetSetVector<PixelDigiSimLink> >().setBranchAlias(alias + "siPixelDigiSimLink");
110  for(auto const& trackerContainer : trackerContainers) {
111  edm::InputTag tag(hitsProducer, trackerContainer);
112  iC.consumes<std::vector<PSimHit> >(edm::InputTag(hitsProducer, trackerContainer));
113  }
115  if ( ! rng.isAvailable()) {
116  throw cms::Exception("Configuration")
117  << "SiPixelDigitizer requires the RandomNumberGeneratorService\n"
118  "which is not present in the configuration file. You must add the service\n"
119  "in the configuration file or remove the modules that require it.";
120  }
121 
122  _pixeldigialgo.reset(new SiPixelDigitizerAlgorithm(iConfig));
123  }
BranchAliasSetterT< ProductType > produces()
declare what type of product will make and with which optional label
EDGetTokenT< ProductType > consumes(edm::InputTag const &tag)
const std::string hitsProducer
std::unique_ptr< SiPixelDigitizerAlgorithm > _pixeldigialgo
const std::string geometryType
const vstring trackerContainers
SiPixelDigitizer::~SiPixelDigitizer ( )
override

Definition at line 125 of file SiPixelDigitizer.cc.

125  {
126  edm::LogInfo ("PixelDigitizer ") <<"Destruct the Pixel Digitizer";
127  }

Member Function Documentation

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

Implements DigiAccumulatorMixMod.

Definition at line 207 of file SiPixelDigitizer.cc.

References accumulatePixelHits(), crossingSimHitIndexOffset_, edm::InputTag::encode(), edm::Event::getByLabel(), PixelDigiSimLink::HighTof, hitsProducer, mps_fire::i, edm::HandleBase::isValid(), PixelDigiSimLink::LowTof, randomEngine(), trackerHits::simHits, edm::Event::streamID(), AlCaHLTBitMon_QueryRunRegistry::string, GlobalPosition_Frontier_DevDB_cff::tag, and trackerContainers.

207  {
208  // Step A: Get Inputs
209  for(vstring::const_iterator i = trackerContainers.begin(), iEnd = trackerContainers.end(); i != iEnd; ++i) {
212 
213  iEvent.getByLabel(tag, simHits);
214  unsigned int tofBin = PixelDigiSimLink::LowTof;
215  if ((*i).find(std::string("HighTof")) != std::string::npos) tofBin = PixelDigiSimLink::HighTof;
216  accumulatePixelHits(simHits, crossingSimHitIndexOffset_[tag.encode()], tofBin, randomEngine(iEvent.streamID()), iSetup);
217  // Now that the hits have been processed, I'll add the amount of hits in this crossing on to
218  // the global counter. Next time accumulateStripHits() is called it will count the sim hits
219  // as though they were on the end of this collection.
220  // Note that this is only used for creating digi-sim links (if configured to do so).
221 // std::cout << "index offset, current hit count = " << crossingSimHitIndexOffset_[tag.encode()] << ", " << simHits->size() << std::endl;
222  if( simHits.isValid() ) crossingSimHitIndexOffset_[tag.encode()]+=simHits->size();
223  }
224  }
CLHEP::HepRandomEngine * randomEngine(edm::StreamID const &streamID)
const std::string hitsProducer
int iEvent
Definition: GenABIO.cc:230
std::map< std::string, size_t > crossingSimHitIndexOffset_
Offset to add to the index of each sim hit to account for which crossing it&#39;s in. ...
void accumulatePixelHits(edm::Handle< std::vector< PSimHit > >, size_t globalSimHitIndex, const unsigned int tofBin, CLHEP::HepRandomEngine *, edm::EventSetup const &c)
bool isValid() const
Definition: HandleBase.h:74
const vstring trackerContainers
void SiPixelDigitizer::accumulate ( PileUpEventPrincipal const &  e,
edm::EventSetup const &  c,
edm::StreamID const &  streamID 
)
overridevirtual

Implements DigiAccumulatorMixMod.

Definition at line 227 of file SiPixelDigitizer.cc.

References accumulatePixelHits(), crossingSimHitIndexOffset_, edm::InputTag::encode(), PileUpEventPrincipal::getByLabel(), PixelDigiSimLink::HighTof, hitsProducer, mps_fire::i, edm::HandleBase::isValid(), PixelDigiSimLink::LowTof, randomEngine(), trackerHits::simHits, AlCaHLTBitMon_QueryRunRegistry::string, GlobalPosition_Frontier_DevDB_cff::tag, and trackerContainers.

227  {
228  // Step A: Get Inputs
229  for(vstring::const_iterator i = trackerContainers.begin(), iEnd = trackerContainers.end(); i != iEnd; ++i) {
232 
233  iEvent.getByLabel(tag, simHits);
234  unsigned int tofBin = PixelDigiSimLink::LowTof;
235  if ((*i).find(std::string("HighTof")) != std::string::npos) tofBin = PixelDigiSimLink::HighTof;
236  accumulatePixelHits(simHits, crossingSimHitIndexOffset_[tag.encode()], tofBin, randomEngine(streamID), iSetup);
237  // Now that the hits have been processed, I'll add the amount of hits in this crossing on to
238  // the global counter. Next time accumulateStripHits() is called it will count the sim hits
239  // as though they were on the end of this collection.
240  // Note that this is only used for creating digi-sim links (if configured to do so).
241 // std::cout << "index offset, current hit count = " << crossingSimHitIndexOffset_[tag.encode()] << ", " << simHits->size() << std::endl;
242  if( simHits.isValid() ) crossingSimHitIndexOffset_[tag.encode()]+=simHits->size();
243  }
244  }
CLHEP::HepRandomEngine * randomEngine(edm::StreamID const &streamID)
const std::string hitsProducer
int iEvent
Definition: GenABIO.cc:230
std::map< std::string, size_t > crossingSimHitIndexOffset_
Offset to add to the index of each sim hit to account for which crossing it&#39;s in. ...
void accumulatePixelHits(edm::Handle< std::vector< PSimHit > >, size_t globalSimHitIndex, const unsigned int tofBin, CLHEP::HepRandomEngine *, edm::EventSetup const &c)
bool isValid() const
Definition: HandleBase.h:74
const vstring trackerContainers
void SiPixelDigitizer::accumulatePixelHits ( edm::Handle< std::vector< PSimHit > >  hSimHits,
size_t  globalSimHitIndex,
const unsigned int  tofBin,
CLHEP::HepRandomEngine *  engine,
edm::EventSetup const &  c 
)
private

Definition at line 135 of file SiPixelDigitizer.cc.

References _pixeldigialgo, detectorUnits, edm::EventSetup::get(), MagneticField::inTesla(), GeomDetEnumerators::isTrackerPixel(), LogDebug, edm::ESHandle< T >::product(), pSetup, and trackerHits::simHits.

Referenced by accumulate().

139  {
140  if(hSimHits.isValid()) {
141  std::set<unsigned int> detIds;
142  std::vector<PSimHit> const& simHits = *hSimHits.product();
144  iSetup.get<TrackerTopologyRcd>().get(tTopoHand);
145  const TrackerTopology *tTopo=tTopoHand.product();
146  for(std::vector<PSimHit>::const_iterator it = simHits.begin(), itEnd = simHits.end(); it != itEnd; ++it, ++globalSimHitIndex) {
147  unsigned int detId = (*it).detUnitId();
148  if(detIds.insert(detId).second) {
149  // The insert succeeded, so this detector element has not yet been processed.
150  assert(detectorUnits[detId]);
151  if(detectorUnits[detId] && detectorUnits[detId]->type().isTrackerPixel()) { // this test could be avoided and changed into a check of pixdet!=0
152  std::map<unsigned int, PixelGeomDetUnit const *>::iterator itDet = detectorUnits.find(detId);
153  if (itDet == detectorUnits.end()) continue;
154  auto pixdet = itDet->second;
155  assert(pixdet !=nullptr);
156  //access to magnetic field in global coordinates
157  GlobalVector bfield = pSetup->inTesla(pixdet->surface().position());
158  LogDebug ("PixelDigitizer ") << "B-field(T) at " << pixdet->surface().position() << "(cm): "
159  << pSetup->inTesla(pixdet->surface().position());
160  _pixeldigialgo->accumulateSimHits(it, itEnd, globalSimHitIndex, tofBin, pixdet, bfield, tTopo, engine);
161  }
162  }
163  }
164  }
165  }
#define LogDebug(id)
type
Definition: HCALResponse.h:21
std::map< unsigned int, PixelGeomDetUnit const * > detectorUnits
edm::ESHandle< MagneticField > pSetup
bool isValid() const
Definition: HandleBase.h:74
std::unique_ptr< SiPixelDigitizerAlgorithm > _pixeldigialgo
virtual GlobalVector inTesla(const GlobalPoint &gp) const =0
Field value ad specified global point, in Tesla.
T const * product() const
Definition: Handle.h:81
T const * product() const
Definition: ESHandle.h:86
bool isTrackerPixel(GeomDetEnumerators::SubDetector m)
virtual void cms::SiPixelDigitizer::beginJob ( void  )
inlinevirtual

Definition at line 59 of file SiPixelDigitizer.h.

59 {}
void SiPixelDigitizer::finalizeEvent ( edm::Event e,
edm::EventSetup const &  c 
)
overridevirtual

Implements DigiAccumulatorMixMod.

Definition at line 248 of file SiPixelDigitizer.cc.

References _pixeldigialgo, DigiHGCalTB160_cff::bunchspace, TrackerGeometry::detUnits(), firstFinalizeEvent_, edm::EventSetup::get(), edm::RandomNumberGenerator::getEngine(), getEventPileupInfo(), PileupMixingContent::getMix_bunchSpacing(), eostools::move(), convertSQLitetoXML_cfg::output, pDD, PileupInfo_, edm::ESHandle< T >::product(), edm::Event::put(), and edm::Event::streamID().

248  {
249 
251  CLHEP::HepRandomEngine* engine = &rng->getEngine(iEvent.streamID());
252 
254  iSetup.get<TrackerTopologyRcd>().get(tTopoHand);
255  const TrackerTopology *tTopo=tTopoHand.product();
256 
257  std::vector<edm::DetSet<PixelDigi> > theDigiVector;
258  std::vector<edm::DetSet<PixelDigiSimLink> > theDigiLinkVector;
259 
261  if (firstFinalizeEvent_) {
262  const unsigned int bunchspace = PileupInfo_->getMix_bunchSpacing();
263  _pixeldigialgo->init_DynIneffDB(iSetup, bunchspace);
264  firstFinalizeEvent_ = false;
265  }
266  _pixeldigialgo->calculateInstlumiFactor(PileupInfo_);
267 
268  for( const auto& iu : pDD->detUnits()) {
269 
270  if(iu->type().isTrackerPixel()) {
271 
272  //
273 
274  edm::DetSet<PixelDigi> collector(iu->geographicalId().rawId());
275  edm::DetSet<PixelDigiSimLink> linkcollector(iu->geographicalId().rawId());
276 
277 
278  _pixeldigialgo->digitize(dynamic_cast<const PixelGeomDetUnit*>(iu),
279  collector.data,
280  linkcollector.data,
281  tTopo,
282  engine);
283  if(!collector.data.empty()) {
284  theDigiVector.push_back(std::move(collector));
285  }
286  if(!linkcollector.data.empty()) {
287  theDigiLinkVector.push_back(std::move(linkcollector));
288  }
289  }
290  }
291 
292  // Step C: create collection with the cache vector of DetSet
293  std::unique_ptr<edm::DetSetVector<PixelDigi> >
294  output(new edm::DetSetVector<PixelDigi>(theDigiVector) );
295  std::unique_ptr<edm::DetSetVector<PixelDigiSimLink> >
296  outputlink(new edm::DetSetVector<PixelDigiSimLink>(theDigiLinkVector) );
297 
298  // Step D: write output to file
299  iEvent.put(std::move(output));
300  iEvent.put(std::move(outputlink));
301  }
const DetContainer & detUnits() const override
Returm a vector of all GeomDet.
virtual CLHEP::HepRandomEngine & getEngine(StreamID const &)=0
Use this engine in event methods.
int iEvent
Definition: GenABIO.cc:230
bunchspace
in terms of 25 ns
edm::ESHandle< TrackerGeometry > pDD
std::unique_ptr< SiPixelDigitizerAlgorithm > _pixeldigialgo
PileupMixingContent * PileupInfo_
const int & getMix_bunchSpacing() const
PileupMixingContent * getEventPileupInfo() override
T const * product() const
Definition: ESHandle.h:86
def move(src, dest)
Definition: eostools.py:510
PileupMixingContent* cms::SiPixelDigitizer::getEventPileupInfo ( )
inlineoverridevirtual

Reimplemented from DigiAccumulatorMixMod.

Definition at line 68 of file SiPixelDigitizer.h.

References randomEngine.

Referenced by finalizeEvent().

68 { return PileupInfo_; }
PileupMixingContent * PileupInfo_
void SiPixelDigitizer::initializeEvent ( edm::Event const &  e,
edm::EventSetup const &  c 
)
overridevirtual

Implements DigiAccumulatorMixMod.

Definition at line 168 of file SiPixelDigitizer.cc.

References _pixeldigialgo, crossingSimHitIndexOffset_, detectorUnits, TrackerGeometry::detUnits(), firstInitializeEvent_, geometryType, edm::EventSetup::get(), TrackerTopology::layer(), NumberOfEndcapDisks, pDD, pilotBlades, GeomDetEnumerators::PixelEndcap, edm::ESHandle< T >::product(), and pSetup.

168  {
170  _pixeldigialgo->init(iSetup);
171  firstInitializeEvent_ = false;
172  }
173 
174  // Make sure that the first crossing processed starts indexing the sim hits from zero.
175  // This variable is used so that the sim hits from all crossing frames have sequential
176  // indices used to create the digi-sim link (if configured to do so) rather than starting
177  // from zero for each crossing.
179 
180  _pixeldigialgo->initializeEvent();
181  iSetup.get<TrackerDigiGeometryRecord>().get(geometryType, pDD);
182  iSetup.get<IdealMagneticFieldRecord>().get(pSetup);
184  iSetup.get<TrackerTopologyRcd>().get(tTopoHand);
185  const TrackerTopology *tTopo=tTopoHand.product();
186 
187  // FIX THIS! We only need to clear and (re)fill this map when the geometry type IOV changes. Use ESWatcher to determine this.
188  if(true) { // Replace with ESWatcher
189  detectorUnits.clear();
190  for( const auto& iu : pDD->detUnits()) {
191  unsigned int detId = iu->geographicalId().rawId();
192  if(iu->type().isTrackerPixel()) {
193  auto pixdet = dynamic_cast<const PixelGeomDetUnit*>(iu);
194  assert(pixdet != nullptr);
195  if (iu->subDetector()==GeomDetEnumerators::SubDetector::PixelEndcap) { // true ONLY for the phase 0 pixel deetctor
196  unsigned int disk = tTopo->layer(detId); // using the generic layer method
197  //if using pilot blades, then allowing it for current detector only
198  if ((disk == 3)&&((!pilotBlades)&&(NumberOfEndcapDisks == 2))) continue;
199  }
200  detectorUnits.insert(std::make_pair(detId, pixdet));
201  }
202  }
203  }
204  }
const DetContainer & detUnits() const override
Returm a vector of all GeomDet.
std::map< unsigned int, PixelGeomDetUnit const * > detectorUnits
edm::ESHandle< MagneticField > pSetup
std::map< std::string, size_t > crossingSimHitIndexOffset_
Offset to add to the index of each sim hit to account for which crossing it&#39;s in. ...
edm::ESHandle< TrackerGeometry > pDD
std::unique_ptr< SiPixelDigitizerAlgorithm > _pixeldigialgo
const std::string geometryType
unsigned int layer(const DetId &id) const
T const * product() const
Definition: ESHandle.h:86
CLHEP::HepRandomEngine * SiPixelDigitizer::randomEngine ( edm::StreamID const &  streamID)
private

Definition at line 303 of file SiPixelDigitizer.cc.

References edm::RandomNumberGenerator::getEngine(), randomEngines_, and edm::StreamID::value().

Referenced by accumulate().

303  {
304  unsigned int index = streamID.value();
305  if(index >= randomEngines_.size()) {
306  randomEngines_.resize(index + 1, nullptr);
307  }
308  CLHEP::HepRandomEngine* ptr = randomEngines_[index];
309  if(!ptr) {
311  ptr = &rng->getEngine(streamID);
312  randomEngines_[index] = ptr;
313  }
314  return ptr;
315  }
std::vector< CLHEP::HepRandomEngine * > randomEngines_
virtual CLHEP::HepRandomEngine & getEngine(StreamID const &)=0
Use this engine in event methods.
void cms::SiPixelDigitizer::StorePileupInformation ( std::vector< int > &  numInteractionList,
std::vector< int > &  bunchCrossingList,
std::vector< float > &  TrueInteractionList,
std::vector< edm::EventID > &  eventInfoList,
int  bunchSpacing 
)
inlineoverridevirtual

Reimplemented from DigiAccumulatorMixMod.

Definition at line 61 of file SiPixelDigitizer.h.

64  {
65  PileupInfo_ = new PileupMixingContent(numInteractionList, bunchCrossingList, TrueInteractionList, eventInfoList, bunchSpacing);
66  }
PileupMixingContent * PileupInfo_

Member Data Documentation

std::unique_ptr<SiPixelDigitizerAlgorithm> cms::SiPixelDigitizer::_pixeldigialgo
private
std::map<std::string,size_t> cms::SiPixelDigitizer::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 89 of file SiPixelDigitizer.h.

Referenced by accumulate(), and initializeEvent().

std::map<unsigned int, PixelGeomDetUnit const *> cms::SiPixelDigitizer::detectorUnits
private

Definition at line 97 of file SiPixelDigitizer.h.

Referenced by accumulatePixelHits(), and initializeEvent().

bool cms::SiPixelDigitizer::firstFinalizeEvent_
private

Definition at line 79 of file SiPixelDigitizer.h.

Referenced by finalizeEvent().

bool cms::SiPixelDigitizer::firstInitializeEvent_
private

Definition at line 78 of file SiPixelDigitizer.h.

Referenced by initializeEvent().

const std::string cms::SiPixelDigitizer::geometryType
private

Definition at line 94 of file SiPixelDigitizer.h.

Referenced by initializeEvent().

const std::string cms::SiPixelDigitizer::hitsProducer
private

Definition at line 92 of file SiPixelDigitizer.h.

Referenced by accumulate(), and SiPixelDigitizer().

const int cms::SiPixelDigitizer::NumberOfEndcapDisks
private

Definition at line 103 of file SiPixelDigitizer.h.

Referenced by initializeEvent().

edm::ESHandle<TrackerGeometry> cms::SiPixelDigitizer::pDD
private

Definition at line 95 of file SiPixelDigitizer.h.

Referenced by finalizeEvent(), and initializeEvent().

PileupMixingContent* cms::SiPixelDigitizer::PileupInfo_
private

Definition at line 100 of file SiPixelDigitizer.h.

Referenced by finalizeEvent().

const bool cms::SiPixelDigitizer::pilotBlades
private

Definition at line 102 of file SiPixelDigitizer.h.

Referenced by initializeEvent().

edm::ESHandle<MagneticField> cms::SiPixelDigitizer::pSetup
private

Definition at line 96 of file SiPixelDigitizer.h.

Referenced by accumulatePixelHits(), and initializeEvent().

std::vector<CLHEP::HepRandomEngine*> cms::SiPixelDigitizer::randomEngines_
private

Definition at line 98 of file SiPixelDigitizer.h.

Referenced by randomEngine().

const vstring cms::SiPixelDigitizer::trackerContainers
private

Definition at line 93 of file SiPixelDigitizer.h.

Referenced by accumulate(), and SiPixelDigitizer().