CMS 3D CMS Logo

HcalDigitizer.h
Go to the documentation of this file.
1 #ifndef HcalSimProducers_HcalDigitizer_h
2 #define HcalSimProducers_HcalDigitizer_h
3 
23 
24 #include <vector>
25 
26 class CaloHitResponse;
28 class HcalAmplifier;
29 class HPDIonFeedbackSim;
30 class HcalCoderFactory;
31 class HcalElectronicsSim;
32 class HcalTimeSlewSim;
34 class HcalShapes;
36 class HcalTopology;
37 
38 namespace edm {
39  class ConsumesCollector;
40 }
41 
42 namespace CLHEP {
43  class HepRandomEngine;
44 }
45 
47 {
48 public:
49 
51  virtual ~HcalDigitizer();
52 
54  void initializeEvent(edm::Event const& e, edm::EventSetup const& c);
55  void accumulate(edm::Event const& e, edm::EventSetup const& c, CLHEP::HepRandomEngine*);
56  void accumulate(PileUpEventPrincipal const& e, edm::EventSetup const& c, CLHEP::HepRandomEngine*);
57  void finalizeEvent(edm::Event& e, edm::EventSetup const& c, CLHEP::HepRandomEngine*);
58 
59  void setHBHENoiseSignalGenerator(HcalBaseSignalGenerator * noiseGenerator);
60  void setHFNoiseSignalGenerator(HcalBaseSignalGenerator * noiseGenerator);
61  void setHONoiseSignalGenerator(HcalBaseSignalGenerator * noiseGenerator);
62  void setZDCNoiseSignalGenerator(HcalBaseSignalGenerator * noiseGenerator);
63  void setQIE10NoiseSignalGenerator(HcalBaseSignalGenerator * noiseGenerator);
64  void setQIE11NoiseSignalGenerator(HcalBaseSignalGenerator * noiseGenerator);
65 
66 private:
67  void setup(const edm::EventSetup & es);
68  void accumulateCaloHits(edm::Handle<std::vector<PCaloHit> > const& hcalHits, edm::Handle<std::vector<PCaloHit> > const& zdcHits, int bunchCrossing, CLHEP::HepRandomEngine*, const HcalTopology *h);
69 
71  void fillFakeHits();
74  void checkGeometry(const edm::EventSetup& eventSetup);
79  void updateGeometry(const edm::EventSetup& eventSetup);
80 
81  void buildHOSiPMCells(const std::vector<DetId>& allCells, const edm::EventSetup& eventSetup);
82  void buildHFQIECells(const std::vector<DetId>& allCells, const edm::EventSetup& eventSetup);
83  void buildHBHEQIECells(const std::vector<DetId>& allCells, const edm::EventSetup& eventSetup);
84 
85  //function to evaluate aging at the digi level
86  void darkening(std::vector<PCaloHit>& hcalHits);
87 
95 
98 
99  std::unique_ptr<CaloHitResponse> theHBHEResponse;
100  std::unique_ptr<HcalSiPMHitResponse> theHBHESiPMResponse;
101  std::unique_ptr<CaloHitResponse> theHOResponse;
102  std::unique_ptr<HcalSiPMHitResponse> theHOSiPMResponse;
103  std::unique_ptr<CaloHitResponse> theHFResponse;
104  std::unique_ptr<CaloHitResponse> theHFQIE10Response;
105  std::unique_ptr<CaloHitResponse> theZDCResponse;
106 
107  // we need separate amplifiers (and electronicssims)
108  // because they might have separate noise generators
109  std::unique_ptr<HcalAmplifier> theHBHEAmplifier;
110  std::unique_ptr<HcalAmplifier> theHFAmplifier;
111  std::unique_ptr<HcalAmplifier> theHOAmplifier;
112  std::unique_ptr<HcalAmplifier> theZDCAmplifier;
113  std::unique_ptr<HcalAmplifier> theHFQIE10Amplifier;
114  std::unique_ptr<HcalAmplifier> theHBHEQIE11Amplifier;
115 
116  std::unique_ptr<HPDIonFeedbackSim> theIonFeedback;
117  std::unique_ptr<HcalCoderFactory> theCoderFactory;
118 
119  std::unique_ptr<HcalElectronicsSim> theHBHEElectronicsSim;
120  std::unique_ptr<HcalElectronicsSim> theHFElectronicsSim;
121  std::unique_ptr<HcalElectronicsSim> theHOElectronicsSim;
122  std::unique_ptr<HcalElectronicsSim> theZDCElectronicsSim;
123  std::unique_ptr<HcalElectronicsSim> theHFQIE10ElectronicsSim;
124  std::unique_ptr<HcalElectronicsSim> theHBHEQIE11ElectronicsSim;
125 
133 
134  std::unique_ptr<HcalTimeSlewSim> theTimeSlewSim;
135 
136  std::unique_ptr<HBHEDigitizer> theHBHEDigitizer;
137  std::unique_ptr<HODigitizer> theHODigitizer;
138  std::unique_ptr<HODigitizer> theHOSiPMDigitizer;
139  std::unique_ptr<HFDigitizer> theHFDigitizer;
140  std::unique_ptr<ZDCDigitizer> theZDCDigitizer;
141  std::unique_ptr<QIE10Digitizer> theHFQIE10Digitizer;
142  std::unique_ptr<QIE11Digitizer> theHBHEQIE11Digitizer;
143  std::unique_ptr<HcalHitRelabeller> theRelabeller;
144 
145  // need to cache some DetIds for the digitizers,
146  // if they don't come straight from the geometry
147  std::vector<DetId> hbheCells;
148  std::vector<DetId> theHBHEQIE8DetIds, theHBHEQIE11DetIds;
149  std::vector<DetId> theHOHPDDetIds;
150  std::vector<DetId> theHOSiPMDetIds;
151  std::vector<DetId> theHFQIE8DetIds, theHFQIE10DetIds;
152 
153  bool isZDC,isHCAL,zdcgeo,hbhegeo,hogeo,hfgeo;
156  bool killHE_;
157  bool debugCS_;
160 
162 
164 
166  bool agingFlagHB, agingFlagHE;
169  std::unique_ptr<HFRecalibration> m_HFRecalibration;
170 
172 
173  std::vector<double> injectedHitsEnergy_;
174  std::vector<double> injectedHitsTime_;
175  std::vector<int> injectedHitsCells_;
176  std::vector<PCaloHit> injectedHits_;
177 };
178 
179 #endif
180 
181 
182 
HFHitFilter theHFQIE10HitFilter
std::vector< int > injectedHitsCells_
HBHEHitFilter theHBHEHitFilter
const HcalDDDRecConstants * theRecNumber
Definition: HcalDigitizer.h:78
std::unique_ptr< CaloHitResponse > theHFResponse
FWCore Framework interface EventSetupRecordImplementation h
Helper function to determine trigger accepts.
std::unique_ptr< HcalTimeSlewSim > theTimeSlewSim
std::unique_ptr< HcalAmplifier > theHBHEAmplifier
std::unique_ptr< HBHEDigitizer > theHBHEDigitizer
HOHitFilter theHOHitFilter
std::unique_ptr< ZDCDigitizer > theZDCDigitizer
std::unique_ptr< HcalHitRelabeller > theRelabeller
def setup(process, global_tag, zero_tesla=False)
Definition: GeneralSetup.py:2
HFHitFilter theHFHitFilter
CaloTDigitizer< HODigitizerTraits, CaloTDigitizerQIE8Run > HODigitizer
Definition: HcalDigitizer.h:90
CaloTDigitizer< HBHEDigitizerTraits, CaloTDigitizerQIE8Run > HBHEDigitizer
Definition: HcalDigitizer.h:89
std::unique_ptr< HFDigitizer > theHFDigitizer
std::unique_ptr< HODigitizer > theHODigitizer
std::unique_ptr< HcalAmplifier > theHFAmplifier
std::unique_ptr< HcalCoderFactory > theCoderFactory
std::unique_ptr< HcalElectronicsSim > theZDCElectronicsSim
std::unique_ptr< HFRecalibration > m_HFRecalibration
std::vector< double > injectedHitsEnergy_
std::unique_ptr< HcalElectronicsSim > theHFQIE10ElectronicsSim
const HBHEDarkening * m_HEDarkening
std::unique_ptr< HcalElectronicsSim > theHFElectronicsSim
edm::ESWatcher< HcalRecNumberingRecord > theRecNumberWatcher_
Definition: HcalDigitizer.h:76
std::string hitsProducer_
double deliveredLumi
std::unique_ptr< HODigitizer > theHOSiPMDigitizer
Creates electronics signals from hits.
const HcalTimeSlew * hcalTimeSlew_delay_
std::unique_ptr< HcalAmplifier > theHBHEQIE11Amplifier
ZDCHitFilter theZDCHitFilter
std::unique_ptr< HcalSiPMHitResponse > theHBHESiPMResponse
CaloTDigitizer< ZDCDigitizerTraits, CaloTDigitizerQIE8Run > ZDCDigitizer
Definition: HcalDigitizer.h:92
std::vector< double > injectedHitsTime_
HcalShapes theShapes
Definition: HcalDigitizer.h:97
std::unique_ptr< CaloHitResponse > theHBHEResponse
Definition: HcalDigitizer.h:99
std::vector< DetId > theHOHPDDetIds
HcalSimParameterMap theParameterMap
Definition: HcalDigitizer.h:96
std::unique_ptr< HcalElectronicsSim > theHBHEElectronicsSim
CaloTDigitizer< HFDigitizerTraits, CaloTDigitizerQIE8Run > HFDigitizer
Definition: HcalDigitizer.h:91
std::unique_ptr< CaloHitResponse > theHOResponse
std::unique_ptr< HPDIonFeedbackSim > theIonFeedback
std::unique_ptr< HcalAmplifier > theZDCAmplifier
edm::ESWatcher< CaloGeometryRecord > theGeometryWatcher_
Definition: HcalDigitizer.h:75
std::vector< DetId > theHFQIE8DetIds
std::unique_ptr< QIE11Digitizer > theHBHEQIE11Digitizer
std::unique_ptr< QIE10Digitizer > theHFQIE10Digitizer
std::vector< DetId > theHOSiPMDetIds
HOHitFilter theHOSiPMHitFilter
std::unique_ptr< CaloHitResponse > theZDCResponse
const CaloGeometry * theGeometry
Definition: HcalDigitizer.h:77
std::unique_ptr< HcalAmplifier > theHOAmplifier
std::unique_ptr< HcalSiPMHitResponse > theHOSiPMResponse
std::vector< DetId > hbheCells
const HBHEDarkening * m_HBDarkening
CaloTDigitizer< HcalQIE11DigitizerTraits, CaloTDigitizerQIE1011Run > QIE11Digitizer
Definition: HcalDigitizer.h:94
HLT enums.
std::unique_ptr< HcalElectronicsSim > theHOElectronicsSim
HBHEHitFilter theHBHEQIE11HitFilter
std::vector< DetId > theHBHEQIE8DetIds
std::unique_ptr< CaloHitResponse > theHFQIE10Response
std::unique_ptr< HcalAmplifier > theHFQIE10Amplifier
CaloTDigitizer< HcalQIE10DigitizerTraits, CaloTDigitizerQIE1011Run > QIE10Digitizer
Definition: HcalDigitizer.h:93
std::unique_ptr< HcalElectronicsSim > theHBHEQIE11ElectronicsSim
bool checkGeometry(bool=true)
std::vector< PCaloHit > injectedHits_