CMS 3D CMS Logo

HcalDigiStatistics.h
Go to the documentation of this file.
1 #ifndef HcalSimProducers_HcalDigiStatistics_h
2 #define HcalSimProducers_HcalDigiStatistics_h
3 
7 #include <string>
8 
10 {
11 public:
13  int maxBin,
14  float amplitudeThreshold,
15  float expectedPedestal,
16  float binPrevToBinMax,
17  float binNextToBinMax,
18  CaloHitAnalyzer & amplitudeAnalyzer)
19 : maxBin_(maxBin),
20  amplitudeThreshold_(amplitudeThreshold),
21  pedestal_(name+" pedestal", expectedPedestal, 0.),
22  binPrevToBinMax_(name+" binPrevToBinMax", binPrevToBinMax, 0.),
23  binNextToBinMax_(name+" binNextToBinMax", binNextToBinMax, 0.),
24  amplitudeAnalyzer_(amplitudeAnalyzer)
25 {
26 }
27 
28  template<class Digi>
29  void analyze(const Digi & digi);
30 
31 private:
32  int maxBin_;
38 };
39 
40 
41 template<class Digi>
42 void HcalDigiStatistics::analyze(const Digi & digi) {
43  pedestal_.addEntry(digi[0].adc());
44  pedestal_.addEntry(digi[1].adc());
45 
46 
47  double pedestal_fC = 0.5*(digi[0].nominal_fC() + digi[1].nominal_fC());
48 
49 
50  double maxAmplitude = digi[maxBin_].nominal_fC() - pedestal_fC;
51 
52  if(maxAmplitude > amplitudeThreshold_) {
53 
54  double binPrevToBinMax = (digi[maxBin_-1].nominal_fC() - pedestal_fC)
55  / maxAmplitude;
56  binPrevToBinMax_.addEntry(binPrevToBinMax);
57 
58 
59  double binNextToBinMax = (digi[maxBin_+1].nominal_fC() - pedestal_fC)
60  / maxAmplitude;
61  binNextToBinMax_.addEntry(binNextToBinMax);
62 
63  double amplitude = digi[maxBin_].nominal_fC()
64  + digi[maxBin_+1].nominal_fC()
65  - 2*pedestal_fC;
66 
67 
68  amplitudeAnalyzer_.analyze(digi.id().rawId(), amplitude);
69 
70  }
71 }
72 
73 #endif
74 
int adc(sample_type sample)
get the ADC sample (12 bits)
void analyze(int detId, double recEnergy)
to be called for each RecHit
CaloValidationStatistics pedestal_
CaloValidationStatistics binPrevToBinMax_
std::tuple< unsigned int, int, int, DigiType, int, int, int, float > Digi
Definition: GenericDigi.h:30
CaloValidationStatistics binNextToBinMax_
void analyze(const Digi &digi)
void addEntry(float value, float weight=1.)
CaloHitAnalyzer & amplitudeAnalyzer_
HcalDigiStatistics(std::string name, int maxBin, float amplitudeThreshold, float expectedPedestal, float binPrevToBinMax, float binNextToBinMax, CaloHitAnalyzer &amplitudeAnalyzer)