File indexing completed on 2024-04-06 12:25:46
0001 #ifndef RecoLocalCalo_HcalRecAlgos_HcalDeterministicFit_h
0002 #define RecoLocalCalo_HcalRecAlgos_HcalDeterministicFit_h
0003
0004 #include <typeinfo>
0005 #include <vector>
0006
0007 #include "CalibCalorimetry/HcalAlgos/interface/HcalTimeSlew.h"
0008 #include "RecoLocalCalo/HcalRecAlgos/interface/PedestalSub.h"
0009
0010 #include "DataFormats/HcalDetId/interface/HcalDetId.h"
0011 #include "DataFormats/HcalRecHit/interface/HBHEChannelInfo.h"
0012 #include "CalibCalorimetry/HcalAlgos/interface/HcalPulseShapes.h"
0013 #include "CalibFormats/HcalObjects/interface/HcalCoder.h"
0014 #include "CalibFormats/HcalObjects/interface/HcalCalibrations.h"
0015
0016 class HcalDeterministicFit {
0017 public:
0018 HcalDeterministicFit();
0019 ~HcalDeterministicFit();
0020
0021 enum FType { shapeLandau, shape205, shape206, shape207 };
0022
0023 void init(HcalTimeSlew::ParaSource tsParam, HcalTimeSlew::BiasSetting bias, bool iApplyTimeSlew, double respCorr);
0024
0025 void phase1Apply(const HBHEChannelInfo& channelData,
0026 float& reconstructedEnergy,
0027 float& reconstructedTime,
0028 const HcalTimeSlew* hcalTimeSlew_delay) const;
0029
0030
0031 void getLandauFrac(float tStart, float tEnd, float& sum) const;
0032 void get205Frac(float tStart, float tEnd, float& sum) const;
0033 void get206Frac(float tStart, float tEnd, float& sum) const;
0034 void get207Frac(float tStart, float tEnd, float& sum) const;
0035 void getFrac(float, float, float&, FType) const;
0036
0037 private:
0038 HcalTimeSlew::ParaSource fTimeSlew_;
0039 HcalTimeSlew::BiasSetting fTimeSlewBias_;
0040 PedestalSub fPedestalSubFxn_;
0041 bool applyTimeSlew_;
0042 double frespCorr_;
0043
0044 static constexpr int HcalRegion[2] = {16, 17};
0045 static constexpr int tsWidth = 25;
0046 static constexpr float negThresh[2] = {-3., 15.};
0047 static constexpr float invGpar[3] = {-13.11, 11.29, 5.133};
0048 static constexpr float rCorr[2] = {0.95, 0.95};
0049 static constexpr float rCorrSiPM[2] = {1., 1.};
0050
0051 static constexpr float landauFrac[125] = {
0052 0, 7.6377e-05, 0.000418655, 0.00153692, 0.00436844, 0.0102076, 0.0204177, 0.0360559, 0.057596,
0053 0.0848493, 0.117069, 0.153152, 0.191858, 0.23198, 0.272461, 0.312438, 0.351262, 0.388476,
0054 0.423788, 0.457036, 0.488159, 0.517167, 0.54412, 0.569112, 0.592254, 0.613668, 0.633402,
0055 0.651391, 0.667242, 0.680131, 0.688868, 0.692188, 0.689122, 0.67928, 0.662924, 0.64087,
0056 0.614282, 0.584457, 0.552651, 0.51997, 0.487317, 0.455378, 0.424647, 0.395445, 0.367963,
0057 0.342288, 0.318433, 0.29636, 0.275994, 0.257243, 0.24, 0.224155, 0.2096, 0.196227,
0058 0.183937, 0.172635, 0.162232, 0.15265, 0.143813, 0.135656, 0.128117, 0.12114, 0.114677,
0059 0.108681, 0.103113, 0.0979354, 0.0931145, 0.0886206, 0.0844264, 0.0805074, 0.0768411, 0.0734075,
0060 0.0701881, 0.0671664, 0.0643271, 0.0616564, 0.0591418, 0.0567718, 0.054536, 0.0524247, 0.0504292,
0061 0.0485414, 0.046754, 0.0450602, 0.0434538, 0.041929, 0.0404806, 0.0391037, 0.0377937, 0.0365465,
0062 0.0353583, 0.0342255, 0.0331447, 0.032113, 0.0311274, 0.0301854, 0.0292843, 0.0284221, 0.0275964,
0063 0.0268053, 0.0253052, 0.0238536, 0.0224483, 0.0210872, 0.0197684, 0.0184899, 0.01725, 0.0160471,
0064 0.0148795, 0.0137457, 0.0126445, 0.0115743, 0.0105341, 0.00952249, 0.00853844, 0.00758086, 0.00664871,
0065 0.00574103, 0.00485689, 0.00399541, 0.00315576, 0.00233713, 0.00153878, 0.000759962, 0};
0066
0067 static constexpr float siPM205Frac[125] = {
0068 0, 0, 0, 0, 0.00133129, 0.00444633, 0.0115, 0.0243992, 0.0443875, 0.0716386,
0069 0.105298, 0.143832, 0.185449, 0.228439, 0.271367, 0.31315, 0.353041, 0.390587, 0.425555, 0.45788,
0070 0.487604, 0.514843, 0.539752, 0.562504, 0.583282, 0.602263, 0.619612, 0.635457, 0.649765, 0.66208,
0071 0.671249, 0.675509, 0.673048, 0.662709, 0.644394, 0.619024, 0.588194, 0.55375, 0.517448, 0.480768,
0072 0.444831, 0.410418, 0.378015, 0.347879, 0.320103, 0.294667, 0.271474, 0.250391, 0.231257, 0.213907,
0073 0.198178, 0.183914, 0.170967, 0.159205, 0.148505, 0.138758, 0.129864, 0.121737, 0.114299, 0.107478,
0074 0.101214, 0.0954507, 0.0901402, 0.0852385, 0.0807069, 0.0765108, 0.0726194, 0.0690052, 0.0656435, 0.0625123,
0075 0.0595916, 0.0568637, 0.0543125, 0.0519236, 0.0496838, 0.0475815, 0.0456058, 0.0437472, 0.0419966, 0.0403463,
0076 0.0387887, 0.0373173, 0.0359259, 0.034609, 0.0333615, 0.0321786, 0.0310561, 0.02999, 0.0289767, 0.0280127,
0077 0.0270951, 0.0262209, 0.0253875, 0.0245923, 0.0238333, 0.0231082, 0.022415, 0.021752, 0.0211174, 0.0205097,
0078 0.0199274, 0.0193692, 0.0188336, 0.0183196, 0.017826, 0.0173518, 0.0168959, 0.0164575, 0.0160356, 0.0156296,
0079 0.0152385, 0.0148617, 0.0144984, 0.0141482, 0.0138103, 0.0134842, 0.0131693, 0.0128652, 0.0125714, 0.0122873,
0080 0.0120127, 0.011747, 0.01149, 0.0112412, 0.0110002};
0081
0082 static constexpr float siPM206Frac[125] = {
0083 0, 0, 0, 4.55043e-06, 0.00292008, 0.0147851, 0.0374319, 0.0688652, 0.105913, 0.145714,
0084 0.186153, 0.225892, 0.264379, 0.30145, 0.337074, 0.371247, 0.403973, 0.43526, 0.465115, 0.493554,
0085 0.520596, 0.546269, 0.570605, 0.59364, 0.615418, 0.635984, 0.655384, 0.673669, 0.690889, 0.707091,
0086 0.719418, 0.721882, 0.7127, 0.693915, 0.668746, 0.640097, 0.610129, 0.580218, 0.550958, 0.522548,
0087 0.495058, 0.468521, 0.442967, 0.418419, 0.394896, 0.37241, 0.350965, 0.330559, 0.31118, 0.292812,
0088 0.275432, 0.259013, 0.243523, 0.228928, 0.215193, 0.202281, 0.190154, 0.178773, 0.1681, 0.158098,
0089 0.148729, 0.139959, 0.131751, 0.124074, 0.116894, 0.110182, 0.103907, 0.0980423, 0.0925613, 0.0874393,
0090 0.0826525, 0.078179, 0.0739978, 0.0700894, 0.0664353, 0.0630185, 0.0598226, 0.0568328, 0.0540348, 0.0514156,
0091 0.0489628, 0.046665, 0.0445115, 0.0424924, 0.0405984, 0.038821, 0.037152, 0.0355841, 0.0341104, 0.0327243,
0092 0.0314199, 0.0301916, 0.0290343, 0.0279431, 0.0269136, 0.0259417, 0.0250235, 0.0241554, 0.0233341, 0.0225566,
0093 0.0218199, 0.0211214, 0.0204587, 0.0198294, 0.0192313, 0.0186626, 0.0181214, 0.0176059, 0.0171146, 0.016646,
0094 0.0161986, 0.0157713, 0.0153627, 0.0149719, 0.0145977, 0.0142393, 0.0138956, 0.0135659, 0.0132493, 0.0129451,
0095 0.0126528, 0.0123715, 0.0121007, 0.0118399, 0.0115885};
0096
0097 static constexpr float siPM207Frac[125] = {
0098 8.79768e-07, 1.0741e-05, 7.99305e-05, 0.000401863, 0.00148019, 0.00425688, 0.0100505, 0.0202671, 0.0360159,
0099 0.0578184, 0.0855186, 0.118382, 0.155299, 0.195005, 0.236264, 0.277979, 0.319254, 0.359407,
0100 0.397953, 0.434579, 0.469106, 0.50146, 0.531646, 0.559717, 0.585765, 0.609901, 0.632248,
0101 0.652923, 0.672002, 0.689414, 0.70477, 0.717237, 0.725596, 0.728535, 0.725028, 0.714632,
0102 0.697574, 0.674653, 0.647036, 0.616039, 0.58295, 0.548907, 0.514845, 0.481483, 0.449338,
0103 0.418754, 0.389935, 0.36298, 0.337908, 0.314684, 0.293236, 0.27347, 0.255279, 0.23855,
0104 0.22317, 0.209031, 0.196027, 0.184061, 0.173041, 0.162884, 0.153513, 0.144857, 0.136854,
0105 0.129445, 0.122577, 0.116205, 0.110283, 0.104775, 0.0996449, 0.0948609, 0.0903944, 0.0862196,
0106 0.0823128, 0.0786528, 0.0752202, 0.0719973, 0.0689682, 0.0661182, 0.0634341, 0.0609038, 0.058516,
0107 0.0562608, 0.0541287, 0.0521113, 0.0502007, 0.0483898, 0.046672, 0.0450411, 0.0434916, 0.0420183,
0108 0.0406164, 0.0392815, 0.0380094, 0.0367964, 0.035639, 0.0345339, 0.0334781, 0.0324687, 0.0315032,
0109 0.030579, 0.0296939, 0.0288458, 0.0280326, 0.0272526, 0.0265039, 0.025785, 0.0250943, 0.0244304,
0110 0.0237919, 0.0231777, 0.0225864, 0.022017, 0.0214684, 0.0209397, 0.0204298, 0.0199381, 0.0194635,
0111 0.0190053, 0.0185629, 0.0181354, 0.0177223, 0.0173229, 0.0169366, 0.0165628, 0.0162011};
0112 };
0113
0114 #endif