File indexing completed on 2024-04-06 12:03:10
0001
0002
0003
0004 #include "CondTools/Hcal/interface/make_HBHENegativeEFilter.h"
0005
0006 #define make_poly \
0007 std::vector<std::vector<double> > coeffs; \
0008 coeffs.reserve(6); \
0009 coeffs.push_back(std::vector<double>(pol41, pol41 + sizeof(pol41) / sizeof(pol41[0]))); \
0010 coeffs.push_back(std::vector<double>(pol42, pol42 + sizeof(pol42) / sizeof(pol42[0]))); \
0011 coeffs.push_back(std::vector<double>(pol31, pol31 + sizeof(pol31) / sizeof(pol31[0]))); \
0012 coeffs.push_back(std::vector<double>(pol32, pol32 + sizeof(pol32) / sizeof(pol32[0]))); \
0013 coeffs.push_back(std::vector<double>(pol11, pol11 + sizeof(pol11) / sizeof(pol11[0]))); \
0014 coeffs.push_back(std::vector<double>(pol12, pol12 + sizeof(pol12) / sizeof(pol12[0]))); \
0015 const std::vector<double> lim(limits, limits + 5); \
0016 return PiecewiseScalingPolynomial(coeffs, lim)
0017
0018 static PiecewiseScalingPolynomial a1_HB() {
0019
0020 const double pol41[5] = {0.7261, -0.03124, 0.001177, -1.349e-05, -5.512e-08};
0021 const double pol42[5] = {0.4151, 0.006921, -0.0003291, 4.897e-06, -2.42e-08};
0022 const double pol31[4] = {0.469, -0.00151, 4.307e-06, -4.697e-09};
0023 const double pol32[4] = {0.5264, -0.001902, 4.613e-06, -3.808e-09};
0024 const double pol11[2] = {0.2648, -1.942e-05};
0025 const double pol12[2] = {0.2413, -3.638e-07};
0026 const double limits[5] = {28., 60., 190., 435., 1330.};
0027 make_poly;
0028 }
0029
0030 static PiecewiseScalingPolynomial a2_HB() {
0031
0032 const double pol41[5] = {0.3148, -0.03012, 0.001738, -4.53e-05, 4.414e-07};
0033 const double pol42[5] = {0.1315, -0.00103, 1.192e-05, -6.723e-08, 3.843e-10};
0034 const double pol31[4] = {0.1108, -5.343e-05, -1.06e-06, 3.75e-09};
0035 const double pol32[4] = {0.1045, -0.0001121, 1.443e-07, -7.224e-11};
0036 const double pol11[2] = {0.07919, -1.252e-05};
0037 const double pol12[2] = {0.06529, -3.825e-06};
0038 const double limits[5] = {23., 65., 190., 850., 1640.};
0039 make_poly;
0040 }
0041
0042
0043 static PiecewiseScalingPolynomial a1_1720() {
0044
0045 const double pol41[5] = {0.6129, -0.00765, -0.0008141, 5.724e-05, -9.377e-07};
0046 const double pol42[5] = {0.4033, 0.00678, -0.000312, 4.534e-06, -2.197e-08};
0047 const double pol31[4] = {0.4603, -0.001526, 4.85e-06, -6.446e-09};
0048 const double pol32[4] = {0.4849, -0.001505, 3.307e-06, -2.461e-09};
0049 const double pol11[2] = {0.261, -2.086e-05};
0050 const double pol12[1] = {0.2354};
0051 const double limits[5] = {23., 68., 190., 410., 1320.};
0052 make_poly;
0053 }
0054
0055 static PiecewiseScalingPolynomial a2_1720() {
0056
0057 const double pol41[5] = {0.313, -0.02747, 0.001404, -3.232e-05, 2.748e-07};
0058 const double pol42[5] = {0.1519, -0.003287, 7.798e-05, -9.27e-07, 4.455e-09};
0059 const double pol31[4] = {0.1079, -0.0002475, 2.859e-07, 7.703e-10};
0060 const double pol32[4] = {0.09147, -0.0001035, 1.268e-07, -5.747e-11};
0061 const double pol11[2] = {0.06536, -8.462e-06};
0062 const double pol12[1] = {0.05337};
0063 const double limits[5] = {27., 68., 190., 1050., 1550.};
0064 make_poly;
0065 }
0066
0067
0068 static PiecewiseScalingPolynomial a1_2123() {
0069
0070 const double pol41[5] = {0.4908, 0.01378, -0.002152, 9.244e-05, -1.27e-06};
0071 const double pol42[5] = {0.3983, 0.00721, -0.000334, 4.999e-06, -2.52e-08};
0072 const double pol31[4] = {0.4746, -0.001923, 8.029e-06, -1.411e-08};
0073 const double pol32[4] = {0.4848, -0.001503, 3.339e-06, -2.518e-09};
0074 const double pol11[2] = {0.264, -2.491e-05};
0075 const double pol12[2] = {0.2545, -1.539e-05};
0076 const double limits[5] = {23., 68., 190., 515., 1240.};
0077 make_poly;
0078 }
0079
0080 static PiecewiseScalingPolynomial a2_2123() {
0081
0082 const double pol41[5] = {0.2886, -0.01573, 0.0003735, 3.986e-06, -1.723e-07};
0083 const double pol42[5] = {0.1724, -0.003205, 6.239e-05, -5.989e-07, 2.346e-09};
0084 const double pol31[4] = {0.1302, -0.0004984, 2.021e-06, -3.34e-09};
0085 const double pol32[4] = {0.104, -0.0001241, 1.579e-07, -7.438e-11};
0086 const double pol11[2] = {0.07527, -1.186e-05};
0087 const double pol12[1] = {0.05917};
0088 const double limits[5] = {23., 68., 190., 1000., 1380.};
0089 make_poly;
0090 }
0091
0092
0093 static PiecewiseScalingPolynomial a1_2425() {
0094
0095 const double pol41[5] = {0.4595, 0.01439, -0.001756, 6.716e-05, -8.552e-07};
0096 const double pol42[5] = {0.3636, 0.01037, -0.0004347, 6.349e-06, -3.167e-08};
0097 const double pol31[4] = {0.4698, -0.001775, 6.638e-06, -1.061e-08};
0098 const double pol32[4] = {0.4854, -0.001519, 3.321e-06, -2.483e-09};
0099 const double pol11[2] = {0.2568, -2.584e-05};
0100 const double pol12[2] = {0.2282, -2.334e-06};
0101 const double limits[5] = {23., 68., 190., 425., 1250.};
0102 make_poly;
0103 }
0104
0105 static PiecewiseScalingPolynomial a2_2425() {
0106
0107 const double pol41[5] = {0.2922, -0.009065, -0.0002295, 2.453e-05, -4.171e-07};
0108 const double pol42[5] = {0.2008, -0.003443, 5.083e-05, -3.064e-07, 4.728e-10};
0109 const double pol31[4] = {0.1533, -0.0007735, 3.571e-06, -6.432e-09};
0110 const double pol32[4] = {0.111, -0.000138, 1.746e-07, -8.205e-11};
0111 const double pol11[2] = {0.07719, -1.123e-05};
0112 const double pol12[2] = {0.0637, -1.798e-06};
0113 const double limits[5] = {24., 68., 220., 975., 1450.};
0114 make_poly;
0115 }
0116
0117
0118 static PiecewiseScalingPolynomial a1_2627() {
0119
0120 const double pol41[5] = {0.4404, 0.01173, -0.001344, 4.862e-05, -5.896e-07};
0121 const double pol42[5] = {0.3483, 0.01019, -0.000416, 5.989e-06, -2.946e-08};
0122 const double pol31[4] = {0.4545, -0.0016, 5.716e-06, -8.879e-09};
0123 const double pol32[4] = {0.4794, -0.001485, 3.206e-06, -2.369e-09};
0124 const double pol11[2] = {0.2531, -2.403e-05};
0125 const double pol12[2] = {0.2376, -9.953e-06};
0126 const double limits[5] = {23., 68., 190., 515., 1200.};
0127 make_poly;
0128 }
0129
0130 static PiecewiseScalingPolynomial a2_2627() {
0131
0132 const double pol41[5] = {0.3104, -0.01182, 0.0001538, 4.599e-06, -9.634e-08};
0133 const double pol42[5] = {0.2105, -0.003244, 2.824e-05, 1.422e-07, -2.243e-09};
0134 const double pol31[4] = {0.1587, -0.0008399, 3.787e-06, -6.468e-09};
0135 const double pol32[4] = {0.1107, -0.0001325, 1.632e-07, -7.479e-11};
0136 const double pol11[2] = {0.07933, -1.265e-05};
0137 const double pol12[2] = {0.06511, -2.133e-06};
0138 const double limits[5] = {20., 68., 215., 1000., 1350.};
0139 make_poly;
0140 }
0141
0142
0143 static PiecewiseScalingPolynomial a1_28() {
0144
0145 const double pol41[5] = {0.4552, 0.00774, -0.0007652, 2.166e-05, -2.04e-07};
0146 const double pol42[5] = {0.4447, 0.001959, -0.0001573, 2.587e-06, -1.341e-08};
0147 const double pol31[4] = {0.4364, -0.0009454, 9.873e-07, 1.515e-09};
0148 const double pol32[4] = {0.4726, -0.00135, 2.811e-06, -2.047e-09};
0149 const double pol11[2] = {0.2569, -2.931e-05};
0150 const double pol12[2] = {0.2345, -8.457e-06};
0151 const double limits[5] = {23., 68., 190., 515., 1150.};
0152 make_poly;
0153 }
0154
0155 static PiecewiseScalingPolynomial a2_28() {
0156
0157 const double pol41[5] = {0.3477, -0.002766, -0.0003802, 1.631e-05, -1.871e-07};
0158 const double pol42[5] = {0.3404, -0.006505, 8.54e-05, -4.002e-07, -4.685e-11};
0159 const double pol31[4] = {0.2295, -0.001221, 4.778e-06, -7.352e-09};
0160 const double pol32[4] = {0.1589, -0.0002629, 3.0e-07, -1.249e-10};
0161 const double pol11[2] = {0.08305, -1.098e-05};
0162 const double pol12[2] = {0.07318, -3.478e-06};
0163 const double limits[5] = {23., 68., 190., 970., 1300.};
0164 make_poly;
0165 }
0166
0167 std::unique_ptr<HBHENegativeEFilter> make_HBHENegativeEFilter() {
0168
0169 const unsigned etaLim[5] = {17, 21, 24, 26, 28};
0170 const std::vector<uint32_t> lim(etaLim, etaLim + sizeof(etaLim) / sizeof(etaLim[0]));
0171
0172
0173
0174
0175
0176 std::vector<PiecewiseScalingPolynomial> a1vec;
0177 a1vec.reserve(6);
0178 a1vec.push_back(a1_HB());
0179 a1vec.push_back(a1_1720());
0180 a1vec.push_back(a1_2123());
0181 a1vec.push_back(a1_2425());
0182 a1vec.push_back(a1_2627());
0183 a1vec.push_back(a1_28());
0184
0185 std::vector<PiecewiseScalingPolynomial> a2vec;
0186 a2vec.reserve(6);
0187 a2vec.push_back(a2_HB());
0188 a2vec.push_back(a2_1720());
0189 a2vec.push_back(a2_2123());
0190 a2vec.push_back(a2_2425());
0191 a2vec.push_back(a2_2627());
0192 a2vec.push_back(a2_28());
0193
0194
0195
0196
0197
0198
0199
0200
0201
0202
0203
0204
0205 std::vector<std::pair<double, double> > cut;
0206 cut.reserve(4);
0207 cut.push_back(std::make_pair(0.0, -25.0));
0208 cut.push_back(std::make_pair(400.0, -45.0));
0209 cut.push_back(std::make_pair(1500.0, -135.0));
0210 cut.push_back(std::make_pair(15000.0, -1000.0));
0211
0212 const double minChargeThreshold = 20.0;
0213 const unsigned firstTS = 4;
0214 const unsigned lastTS = 6;
0215
0216 return std::unique_ptr<HBHENegativeEFilter>(
0217 new HBHENegativeEFilter(a1vec, a2vec, lim, cut, minChargeThreshold, firstTS, lastTS));
0218 }