CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Pages
HcalDigitizer.cc
Go to the documentation of this file.
34 #include <boost/foreach.hpp>
35 using namespace std;
36 
37 namespace HcalDigitizerImpl {
38 
39  template<typename SIPMDIGITIZER>
40  void fillSiPMCells(const vector<int> & siPMCells, SIPMDIGITIZER * siPMDigitizer)
41  {
42  std::vector<DetId> siPMDetIds;
43  siPMDetIds.reserve(siPMCells.size());
44  for(std::vector<int>::const_iterator idItr = siPMCells.begin();
45  idItr != siPMCells.end(); ++idItr)
46  {
47  siPMDetIds.push_back(DetId(*idItr));
48  }
49  siPMDigitizer->setDetIds(siPMDetIds);
50  }
51 
52  // if both exist, assume the SiPM one has cells filled, and
53  // assign the rest to the HPD
54  template<typename HPDDIGITIZER, typename SIPMDIGITIZER>
55  void fillCells(const vector<DetId>& allCells,
56  HPDDIGITIZER * hpdDigitizer,
57  SIPMDIGITIZER * siPMDigitizer)
58  {
59  // if both digitizers exist, split up the cells
60  if(siPMDigitizer && hpdDigitizer)
61  {
62  std::vector<DetId> siPMDetIds = siPMDigitizer->detIds();
63  std::sort(siPMDetIds.begin(), siPMDetIds.end());
64  std::vector<DetId> sortedCells = allCells;
65  std::sort(sortedCells.begin(), sortedCells.end());
66  std::vector<DetId> hpdCells;
67  std::set_difference(sortedCells.begin(), sortedCells.end(),
68  siPMDetIds.begin(), siPMDetIds.end(),
69  std::back_inserter(hpdCells) );
70  hpdDigitizer->setDetIds(hpdCells);
71  }
72  else
73  {
74  if(siPMDigitizer) siPMDigitizer->setDetIds(allCells);
75  if(hpdDigitizer) hpdDigitizer->setDetIds(allCells);
76  }
77  }
78 } // namespace HcaiDigitizerImpl
79 
80 
82 : theGeometry(0),
83  theParameterMap(new HcalSimParameterMap(ps)),
84  theShapes(new HcalShapes()),
85  theHBHEResponse(0),
86  theHBHESiPMResponse(0),
87  theHOResponse(0),
88  theHOSiPMResponse(0),
89  theHFResponse(new CaloHitResponse(theParameterMap, theShapes)),
90  theZDCResponse(new CaloHitResponse(theParameterMap, theShapes)),
91  theHBHEAmplifier(0),
92  theHFAmplifier(0),
93  theHOAmplifier(0),
94  theZDCAmplifier(0),
95  theIonFeedback(0),
96  theCoderFactory(0),
97  theHBHEElectronicsSim(0),
98  theHFElectronicsSim(0),
99  theHOElectronicsSim(0),
100  theZDCElectronicsSim(0),
101  theHBHEHitFilter(),
102  theHFHitFilter(ps.getParameter<bool>("doHFWindow")),
103  theHOHitFilter(),
104  theHOSiPMHitFilter(HcalOuter),
105  theZDCHitFilter(),
106  theHitCorrection(0),
107  theNoiseGenerator(0),
108  theNoiseHitGenerator(0),
109  theHBHEDigitizer(0),
110  theHBHESiPMDigitizer(0),
111  theHODigitizer(0),
112  theHOSiPMDigitizer(0),
113  theHFDigitizer(0),
114  theZDCDigitizer(0),
115  theHBHEDetIds(),
116  theHOHPDDetIds(),
117  theHOSiPMDetIds(),
118  isZDC(true),
119  isHCAL(true),
120  zdcgeo(true),
121  hbhegeo(true),
122  hogeo(true),
123  hfgeo(true),
124  theHOSiPMCode(ps.getParameter<edm::ParameterSet>("ho").getParameter<int>("siPMCode"))
125 {
126  bool doNoise = ps.getParameter<bool>("doNoise");
127  bool useOldNoiseHB = ps.getParameter<bool>("useOldHB");
128  bool useOldNoiseHE = ps.getParameter<bool>("useOldHE");
129  bool useOldNoiseHF = ps.getParameter<bool>("useOldHF");
130  bool useOldNoiseHO = ps.getParameter<bool>("useOldHO");
131  bool doEmpty = ps.getParameter<bool>("doEmpty");
132  double HBtp = ps.getParameter<double>("HBTuningParameter");
133  double HEtp = ps.getParameter<double>("HETuningParameter");
134  double HFtp = ps.getParameter<double>("HFTuningParameter");
135  double HOtp = ps.getParameter<double>("HOTuningParameter");
136 
137  // need to make copies, because they might get different noise generators
142  theHBHEAmplifier->setHBtuningParameter(HBtp);
143  theHBHEAmplifier->setHEtuningParameter(HEtp);
146  theHBHEAmplifier->setUseOldHB(useOldNoiseHB);
147  theHBHEAmplifier->setUseOldHE(useOldNoiseHE);
148  theHFAmplifier->setUseOldHF(useOldNoiseHF);
149  theHOAmplifier->setUseOldHO(useOldNoiseHO);
150 
156 
157  // a code of 1 means make all cells SiPM
158  std::vector<int> hbSiPMCells(ps.getParameter<edm::ParameterSet>("hb").getParameter<std::vector<int> >("siPMCells"));
159  //std::vector<int> hoSiPMCells(ps.getParameter<edm::ParameterSet>("ho").getParameter<std::vector<int> >("siPMCells"));
160  // 0 means none, 1 means all, and 2 means use hardcoded
161 
162  bool doHBHEHPD = hbSiPMCells.empty() || (hbSiPMCells[0] != 1);
163  bool doHOHPD = (theHOSiPMCode != 1);
164  bool doHBHESiPM = !hbSiPMCells.empty();
165  bool doHOSiPM = (theHOSiPMCode != 0);
166  if(doHBHEHPD)
167  {
171  }
172  if(doHOHPD)
173  {
177  }
178 
179  if(doHBHESiPM)
180  {
184  }
185  if(doHOSiPM)
186  {
190  }
191 
192  // if both are present, fill the SiPM cells now
193  if(doHBHEHPD && doHBHESiPM)
194  {
196  }
197 
200 
201  bool doTimeSlew = ps.getParameter<bool>("doTimeSlew");
202  if(doTimeSlew) {
203  // no time slewing for HF
204  /*
205  theHitCorrection = new HcalHitCorrection(theParameterMap);
206  if(theHBHEResponse) theHBHEResponse->setHitCorrection(theHitCorrection);
207  if(theHBHESiPMResponse) theHBHESiPMResponse->setHitCorrection(theHitCorrection);
208  if(theHOResponse) theHOResponse->setHitCorrection(theHitCorrection);
209  if(theHOSiPMResponse) theHOSiPMResponse->setHitCorrection(theHitCorrection);
210  theZDCResponse->setHitCorrection(theHitCorrection);
211  */
213  theHBHEAmplifier->setTimeSlewSim(theTimeSlewSim);
216  }
217 
220 
221  bool doHPDNoise = ps.getParameter<bool>("doHPDNoise");
222  if(doHPDNoise) {
223  //edm::ParameterSet hpdNoisePset = ps.getParameter<edm::ParameterSet>("HPDNoiseLibrary");
227  }
228 
229  if(ps.getParameter<bool>("doIonFeedback") && theHBHEResponse)
230  {
233  if(ps.getParameter<bool>("doThermalNoise"))
234  {
235  theHBHEAmplifier->setIonFeedbackSim(theIonFeedback);
236  }
237  }
238 
239  if(ps.getParameter<bool>("injectTestHits") ){
247  }
248 
250  if ( ! rng.isAvailable()) {
251  throw cms::Exception("Configuration")
252  << "HcalDigitizer requires the RandomNumberGeneratorService\n"
253  "which is not present in the configuration file. You must add the service\n"
254  "in the configuration file or remove the modules that require it.";
255  }
256 
257  CLHEP::HepRandomEngine& engine = rng->getEngine();
266 
268 
269  hitsProducer_ = ps.getParameter<std::string>("hitsProducer");
270 }
271 
272 
274  delete theHBHEDigitizer;
275  delete theHBHESiPMDigitizer;
276  delete theHODigitizer;
277  delete theHOSiPMDigitizer;
278  delete theHFDigitizer;
279  delete theZDCDigitizer;
280  delete theParameterMap;
281  delete theHBHEResponse;
282  delete theHBHESiPMResponse;
283  delete theHOResponse;
284  delete theHOSiPMResponse;
285  delete theHFResponse;
286  delete theZDCResponse;
287  delete theHBHEElectronicsSim;
288  delete theHFElectronicsSim;
289  delete theHOElectronicsSim;
290  delete theZDCElectronicsSim;
291  delete theHBHEAmplifier;
292  delete theHFAmplifier;
293  delete theHOAmplifier;
294  delete theZDCAmplifier;
295  delete theCoderFactory;
296  delete theHitCorrection;
297  delete theNoiseGenerator;
298 }
299 
300 
302 {
303  noiseGenerator->setParameterMap(theParameterMap);
304  noiseGenerator->setElectronicsSim(theHBHEElectronicsSim);
305  theHBHEDigitizer->setNoiseSignalGenerator(noiseGenerator);
306  theHBHEAmplifier->setNoiseSignalGenerator(noiseGenerator);
307 }
308 
310 {
311  noiseGenerator->setParameterMap(theParameterMap);
312  noiseGenerator->setElectronicsSim(theHFElectronicsSim);
313  theHFDigitizer->setNoiseSignalGenerator(noiseGenerator);
314  theHFAmplifier->setNoiseSignalGenerator(noiseGenerator);
315 }
316 
318 {
319  noiseGenerator->setParameterMap(theParameterMap);
320  noiseGenerator->setElectronicsSim(theHOElectronicsSim);
321  theHODigitizer->setNoiseSignalGenerator(noiseGenerator);
322  theHOAmplifier->setNoiseSignalGenerator(noiseGenerator);
323 }
324 
326 {
327  noiseGenerator->setParameterMap(theParameterMap);
328  noiseGenerator->setElectronicsSim(theZDCElectronicsSim);
329  theZDCDigitizer->setNoiseSignalGenerator(noiseGenerator);
330  theZDCAmplifier->setNoiseSignalGenerator(noiseGenerator);
331 }
332 
333 
335  // get the appropriate gains, noises, & widths for this event
336  edm::ESHandle<HcalDbService> conditions;
337  eventSetup.get<HcalDbRecord>().get(conditions);
338  theHBHEAmplifier->setDbService(conditions.product());
339  theHFAmplifier->setDbService(conditions.product());
340  theHOAmplifier->setDbService(conditions.product());
341  theZDCAmplifier->setDbService(conditions.product());
342 
343  theCoderFactory->setDbService(conditions.product());
344  theParameterMap->setDbService(conditions.product());
345 
347  eventSetup.get<HcalCholeskyMatricesRcd>().get(refCholesky);
348  const HcalCholeskyMatrices * myCholesky = refCholesky.product();
349 
350  edm::ESHandle<HcalPedestals> pedshandle;
351  eventSetup.get<HcalPedestalsRcd>().get(pedshandle);
352  const HcalPedestals * myADCPedestals = pedshandle.product();
353 
354  theHBHEAmplifier->setCholesky(myCholesky);
355  theHFAmplifier->setCholesky(myCholesky);
356  theHOAmplifier->setCholesky(myCholesky);
357 
358  theHBHEAmplifier->setADCPeds(myADCPedestals);
359  theHFAmplifier->setADCPeds(myADCPedestals);
360  theHOAmplifier->setADCPeds(myADCPedestals);
361 
362 
363  // Step A: Get Inputs
365 
366  // test access to SimHits for HcalHits and ZDC hits
367  const std::string zdcHitsName(hitsProducer_+"ZDCHITS");
368  e.getByLabel("mix", zdcHitsName , zdccf);
369  MixCollection<PCaloHit> * colzdc = 0 ;
370  if(zdccf.isValid()){
371  colzdc = new MixCollection<PCaloHit>(zdccf.product());
372  }else{
373  edm::LogInfo("HcalDigitizer") << "We don't have ZDC hit collection available ";
374  isZDC = false;
375  }
376 
377  const std::string hcalHitsName(hitsProducer_+"HcalHits");
378  e.getByLabel("mix", hcalHitsName ,cf);
379  MixCollection<PCaloHit> * col = 0 ;
380  if(cf.isValid()){
381  col = new MixCollection<PCaloHit>(cf.product());
382  }else{
383  edm::LogInfo("HcalDigitizer") << "We don't have HCAL hit collection available ";
384  isHCAL = false;
385  }
386 
387  if(theHitCorrection != 0)
388  {
390  if(isHCAL)
392  }
393 
394  // Step B: Create empty output
395  std::auto_ptr<HBHEDigiCollection> hbheResult(new HBHEDigiCollection());
396  std::auto_ptr<HODigiCollection> hoResult(new HODigiCollection());
397  std::auto_ptr<HFDigiCollection> hfResult(new HFDigiCollection());
398  std::auto_ptr<ZDCDigiCollection> zdcResult(new ZDCDigiCollection());
399 
400  // Step C: Invoke the algorithm, passing in inputs and getting back outputs.
401  if(isHCAL&&hbhegeo)
402  {
403  if(theHBHEDigitizer) theHBHEDigitizer->run(*col, *hbheResult);
404  if(theHBHESiPMDigitizer) theHBHESiPMDigitizer->run(*col, *hbheResult);
405  }
406  if(isHCAL&&hogeo)
407  {
408  if(theHODigitizer) theHODigitizer->run(*col, *hoResult);
409  if(theHOSiPMDigitizer) theHOSiPMDigitizer->run(*col, *hoResult);
410  }
411  if(isHCAL&&hfgeo)
412  theHFDigitizer->run(*col, *hfResult);
413  if(isZDC&&zdcgeo)
414  theZDCDigitizer->run(*colzdc, *zdcResult);
415 
416  edm::LogInfo("HcalDigitizer") << "HCAL HBHE digis : " << hbheResult->size();
417  edm::LogInfo("HcalDigitizer") << "HCAL HO digis : " << hoResult->size();
418  edm::LogInfo("HcalDigitizer") << "HCAL HF digis : " << hfResult->size();
419  edm::LogInfo("HcalDigitizer") << "HCAL ZDC digis : " << zdcResult->size();
420  // Step D: Put outputs into event
421  e.put(hbheResult);
422  e.put(hoResult);
423  e.put(hfResult);
424  e.put(zdcResult);
425 
426  if(theHitCorrection) {
428  }
429 }
430 
431 
433 {
434  checkGeometry(es);
435  theShapes->beginRun(es);
436 }
437 
438 
440 {
441  theShapes->endRun();
442 }
443 
444 
446  // TODO find a way to avoid doing this every event
448  eventSetup.get<CaloGeometryRecord>().get(geometry);
449  // See if it's been updated
450  if(&*geometry != theGeometry)
451  {
452  theGeometry = &*geometry;
453  updateGeometry(eventSetup);
454  }
455 }
456 
457 
459 {
466 
467  const vector<DetId>& hbCells = theGeometry->getValidDetIds(DetId::Hcal, HcalBarrel);
468  const vector<DetId>& heCells = theGeometry->getValidDetIds(DetId::Hcal, HcalEndcap);
469  const vector<DetId>& hoCells = theGeometry->getValidDetIds(DetId::Hcal, HcalOuter);
470  const vector<DetId>& hfCells = theGeometry->getValidDetIds(DetId::Hcal, HcalForward);
471  const vector<DetId>& zdcCells = theGeometry->getValidDetIds(DetId::Calo, HcalZDCDetId::SubdetectorId);
472  //const vector<DetId>& hcalTrigCells = geometry->getValidDetIds(DetId::Hcal, HcalTriggerTower);
473  //const vector<DetId>& hcalCalib = geometry->getValidDetIds(DetId::Calo, HcalCastorDetId::SubdetectorId);
474  //std::cout<<"HcalDigitizer::CheckGeometry number of cells: "<<zdcCells.size()<<std::endl;
475  if(zdcCells.empty()) zdcgeo = false;
476  if(hbCells.empty() && heCells.empty()) hbhegeo = false;
477  if(hoCells.empty()) hogeo = false;
478  if(hfCells.empty()) hfgeo = false;
479  // combine HB & HE
480 
481 
482  theHBHEDetIds = hbCells;
483  theHBHEDetIds.insert(theHBHEDetIds.end(), heCells.begin(), heCells.end());
484 
486  //HcalDigitizerImpl::fillCells(hoCells, theHODigitizer, theHOSiPMDigitizer);
487  buildHOSiPMCells(hoCells, eventSetup);
488  theHFDigitizer->setDetIds(hfCells);
489  theZDCDigitizer->setDetIds(zdcCells);
490 }
491 
492 
493 void HcalDigitizer::buildHOSiPMCells(const std::vector<DetId>& allCells, const edm::EventSetup & eventSetup)
494 {
495  // all HPD
496  if(theHOSiPMCode == 0)
497  {
498  theHODigitizer->setDetIds(allCells);
499  }
500  else if(theHOSiPMCode == 1)
501  {
502  theHOSiPMDigitizer->setDetIds(allCells);
503  // FIXME pick Zecotek or hamamatsu?
504  }
505  else if(theHOSiPMCode == 2)
506  {
507  std::vector<HcalDetId> zecotekDetIds, hamamatsuDetIds;
509  eventSetup.get<HcalMCParamsRcd>().get(p);
510  HcalMCParams mcParams(*p.product());
511  for(std::vector<DetId>::const_iterator detItr = allCells.begin();
512  detItr != allCells.end(); ++detItr)
513  {
514  HcalDetId hcalId(*detItr);
515  int shapeType = mcParams.getValues(*detItr)->signalShape();
516  if(shapeType == HcalShapes::ZECOTEK) {
517  zecotekDetIds.push_back(hcalId);
518  theHOSiPMDetIds.push_back(*detItr);
519  }
520  else if(shapeType == HcalShapes::HAMAMATSU) {
521  hamamatsuDetIds.push_back(hcalId);
522  theHOSiPMDetIds.push_back(*detItr);
523  }
524  else {
525  theHOHPDDetIds.push_back(*detItr);
526  }
527  }
528 
529  assert(theHODigitizer);
530  assert(theHOSiPMDigitizer);
534  // FIXME not applying a HitFilter to the HPDs, for now
535  theParameterMap->setHOZecotekDetIds(zecotekDetIds);
536  theParameterMap->setHOHamamatsuDetIds(hamamatsuDetIds);
537 
538  // make sure we don't got through this exercise again
539  theHOSiPMCode = -2;
540  }
541 }
542 
543 
544 
545 
void setNoiseHitGenerator(CaloVNoiseHitGenerator *generator)
void setHOtuningParameter(double tp)
T getParameter(std::string const &) const
void setGeometry(const CaloGeometry *geometry)
geometry needed for time-of-flight
void setDbService(const HcalDbService *service)
the Producer will probably update this every event
HBHEHitFilter theHBHEHitFilter
Definition: HcalDigitizer.h:86
void setParameterMap(HcalSimParameterMap *map)
void setDetIds(const std::vector< DetId > &detIds)
virtual ~HcalDigitizer()
HcalElectronicsSim * theHFElectronicsSim
Definition: HcalDigitizer.h:81
HBHEDigitizer * theHBHEDigitizer
Definition: HcalDigitizer.h:97
HOHitFilter theHOHitFilter
Definition: HcalDigitizer.h:88
void setRandomEngine(CLHEP::HepRandomEngine &engine)
void setUseOldHF(bool useOld)
HFDigitizer * theHFDigitizer
HFHitFilter theHFHitFilter
Definition: HcalDigitizer.h:87
void checkGeometry(const edm::EventSetup &eventSetup)
HcalSimParameterMap * theParameterMap
Definition: HcalDigitizer.h:60
void fillSiPMCells(const vector< int > &siPMCells, SIPMDIGITIZER *siPMDigitizer)
void setHFtuningParameter(double tp)
void setTimeSlewSim(const HcalTimeSlewSim *timeSlewSim)
Definition: HcalAmplifier.h:36
void setPECorrection(const CaloVPECorrection *peCorrection)
if you want to correct the photoelectrons
HcalTimeSlewSim * theTimeSlewSim
Definition: HcalDigitizer.h:93
void setADCPeds(const HcalPedestals *ADCPeds)
Definition: HcalAmplifier.h:52
HcalAmplifier * theHFAmplifier
Definition: HcalDigitizer.h:73
HcalDigitizer(const edm::ParameterSet &ps)
HcalCoderFactory * theCoderFactory
Definition: HcalDigitizer.h:78
edm::SortedCollection< ZDCDataFrame > ZDCDigiCollection
CaloTDigitizer< HFDigitizerTraits > HFDigitizer
Definition: HcalDigitizer.h:57
void setHOZecotekDetIds(const std::vector< HcalDetId > &ids)
HcalAmplifier * theHBHEAmplifier
Definition: HcalDigitizer.h:72
void setUseOldHO(bool useOld)
edm::SortedCollection< HODataFrame > HODigiCollection
CaloTDigitizer< ZDCDigitizerTraits > ZDCDigitizer
Definition: HcalDigitizer.h:58
std::string hitsProducer_
HcalElectronicsSim * theHOElectronicsSim
Definition: HcalDigitizer.h:82
void setElectronicsSim(HcalElectronicsSim *electronicsSim)
void setHitFilter(const CaloVHitFilter *filter)
if you want to reject hits, for example, from a certain subdetector, set this
HcalShapes * theShapes
Definition: HcalDigitizer.h:61
Creates electronics signals from hits.
OrphanHandle< PROD > put(std::auto_ptr< PROD > product)
Put a new product.
Definition: Event.h:85
void setRandomEngine(CLHEP::HepRandomEngine &engine)
need a shaper in order to set thermal noise
void setHFNoiseSignalGenerator(HcalBaseSignalGenerator *noiseGenerator)
void setRandomEngine(CLHEP::HepRandomEngine &engine)
std::vector< DetId > theHBHEDetIds
void run(MixCollection< PCaloHit > &input, DigiCollection &output)
turns hits into digis
void buildHOSiPMCells(const std::vector< DetId > &allCells, const edm::EventSetup &eventSetup)
ZDCHitFilter theZDCHitFilter
Definition: HcalDigitizer.h:90
HPDIonFeedbackSim * theIonFeedback
Definition: HcalDigitizer.h:77
void fillChargeSums(MixCollection< PCaloHit > &hits)
bool isAvailable() const
Definition: Service.h:47
CaloHitResponse * theHOResponse
Definition: HcalDigitizer.h:65
HcalHitFilter theHOSiPMHitFilter
Definition: HcalDigitizer.h:89
CaloHitResponse * theHOSiPMResponse
Definition: HcalDigitizer.h:66
void setNoiseSignalGenerator(CaloVNoiseSignalGenerator *generator)
ZDCDigitizer * theZDCDigitizer
virtual CLHEP::HepRandomEngine & getEngine() const =0
Use this to get the random number engine, this is the only function most users should call...
std::vector< DetId > theHOHPDDetIds
bool isValid() const
Definition: HandleBase.h:76
bool getByLabel(InputTag const &tag, Handle< PROD > &result) const
Definition: Event.h:356
HcalHitCorrection * theHitCorrection
Definition: HcalDigitizer.h:92
CaloHitResponse * theZDCResponse
Definition: HcalDigitizer.h:68
void endRun()
Definition: HcalShapes.cc:107
void setNoiseSignalGenerator(const CaloVNoiseSignalGenerator *noiseSignalGenerator)
Definition: HcalAmplifier.h:33
void fillCells(const vector< DetId > &allCells, HPDDIGITIZER *hpdDigitizer, SIPMDIGITIZER *siPMDigitizer)
Definition: DetId.h:20
HcalElectronicsSim * theZDCElectronicsSim
Definition: HcalDigitizer.h:83
static const int SubdetectorId
Definition: HcalZDCDetId.h:22
void beginRun(const edm::EventSetup &es)
CaloTDigitizer< HODigitizerTraits > HODigitizer
Definition: HcalDigitizer.h:56
void setHOHamamatsuDetIds(const std::vector< HcalDetId > &ids)
HcalAmplifier * theHOAmplifier
Definition: HcalDigitizer.h:74
void setDbService(const HcalDbService *service)
const T & get() const
Definition: EventSetup.h:55
HcalElectronicsSim * theHBHEElectronicsSim
Definition: HcalDigitizer.h:80
T const * product() const
Definition: ESHandle.h:62
CaloHitResponse * theHBHEResponse
Definition: HcalDigitizer.h:63
HODigitizer * theHODigitizer
Definition: HcalDigitizer.h:99
T const * product() const
Definition: Handle.h:74
std::vector< DetId > theHOSiPMDetIds
const CaloGeometry * theGeometry
Definition: HcalDigitizer.h:49
std::vector< DetId > getValidDetIds() const
Get the list of all valid detector ids.
Definition: CaloGeometry.cc:90
void setCholesky(const HcalCholeskyMatrices *Cholesky)
Definition: HcalAmplifier.h:51
ESHandle< TrackerGeometry > geometry
CaloHitResponse * theHFResponse
Definition: HcalDigitizer.h:67
HODigitizer * theHOSiPMDigitizer
void setZDCNoiseSignalGenerator(HcalBaseSignalGenerator *noiseGenerator)
HBHEDigitizer * theHBHESiPMDigitizer
Definition: HcalDigitizer.h:98
edm::SortedCollection< HFDataFrame > HFDigiCollection
void setDetIds(const std::vector< DetId > &detIds)
void beginRun(edm::EventSetup const &es)
Definition: HcalShapes.cc:99
CaloHitResponse * theHBHESiPMResponse
Definition: HcalDigitizer.h:64
void setRandomEngine(CLHEP::HepRandomEngine &engine)
void updateGeometry(const edm::EventSetup &eventSetup)
void produce(edm::Event &e, const edm::EventSetup &c)
void setHBHENoiseSignalGenerator(HcalBaseSignalGenerator *noiseGenerator)
CaloVNoiseHitGenerator * theNoiseHitGenerator
Definition: HcalDigitizer.h:95
HcalAmplifier * theZDCAmplifier
Definition: HcalDigitizer.h:75
void setDbService(const HcalDbService *service)
edm::SortedCollection< HBHEDataFrame > HBHEDigiCollection
void setHONoiseSignalGenerator(HcalBaseSignalGenerator *noiseGenerator)
CaloTDigitizer< HBHEDigitizerTraits > HBHEDigitizer
Definition: HcalDigitizer.h:55
CaloVNoiseSignalGenerator * theNoiseGenerator
Definition: HcalDigitizer.h:94