LDMX Software
TrigUtilities.h
1#ifndef TRIGUTILITIES_H
2#define TRIGUTILITIES_H
3#include <vector>
4
5namespace trigger {
6
7class ecalTpToE {
8 public:
9 /* double ecalTpToE(int tp, int layer){ */
10 double calc(int tp, int layer) {
11 float sie = hgc_compression_factor_ * tp * gain_ *
12 mVtoMeV_; // in MeV, before layer corrections
13 return (sie / mipSiEnergy_ * layerWeights_.at(layer) + sie) *
14 secondOrderEnergyCorrection_;
15 }
16
17 private:
18 float gain_ = 320. / 0.1 / 1024; // mV/ADC
19 float mVtoMeV_ = 0.130 / (37000.0 * (0.1602 / 1000.) * (1. / 0.1)); // MeV/mV
20 std::vector<float> layerWeights_ = {
21 2.312, 4.312, 6.522, 7.490, 8.595, 10.253, 10.915, 10.915, 10.915,
22 10.915, 10.915, 10.915, 10.915, 10.915, 10.915, 10.915, 10.915, 10.915,
23 10.915, 10.915, 10.915, 10.915, 10.915, 14.783, 18.539, 18.539, 18.539,
24 18.539, 18.539, 18.539, 18.539, 18.539, 18.539, 9.938};
25 float secondOrderEnergyCorrection_ = 4000. / 3940.5;
26 float mipSiEnergy_ = 0.130;
27 int hgc_compression_factor_ = 8;
28};
29
30} // namespace trigger
31
32#endif /* TRIGUTILITIES_H */