14 constexpr
int nBinsEta = 6;
15 const double EtaBins[nBinsEta + 1] = {0.0, 0.7, 1.15, 1.44, 1.56, 2.0, 2.5};
17 constexpr
int nBinsBrem = 6;
18 const double BremBins[nBinsBrem + 1] = {0.8, 1.0, 2.0, 3.0, 4.0, 5.0, 10.0};
20 constexpr std::array<std::array<float, nBinsBrem>, nBinsEta> par0 = {
21 {{{0.0232291, 0.00703187, 0.00692465, 0.00855993, 0.00795058, 0.0107494}},
22 {{0.0614866, 0.00894211, 0.0102959, 0.0128934, 0.0130199, 0.0180839}},
23 {{0.0291343, 0.00876269, 0.0120863, 0.0112655, 0.0168267, 0.0168059}},
24 {{0.158403, 0.0717431, 0.0385666, 0.0142631, 0.0421638, 0.046331}},
25 {{0.0483944, 0.0168516, 0.0243039, 0.031795, 0.0414953, 0.058031}},
26 {{0.107158, 0.021685, 0.0196619, 0.0324734, 0.0414953, 0.058031}}}};
28 constexpr std::array<std::array<float, nBinsBrem>, nBinsEta> par1 = {
29 {{{0., 0.646644, 0.292698, 0.280843, 0.370007, 0.276159}},
30 {{0., 0.466937, 0.313568, 0.302943, 0.505135, 0.382134}},
31 {{0., 0.375159, 0.397635, 0.856565, 0.636468, 1.09268}},
32 {{0., 1.66981, 3.6319, 8.85991, 3.1289, 1.29951}},
33 {{0., 1.19617, 0.994626, 0.875925, 0.654605, 0.292915}},
34 {{0., 0.574207, 0.940217, 0.574766, 0.654605, 0.292915}}}};
36 constexpr std::array<std::array<float, nBinsBrem>, nBinsEta> par2 = {
37 {{{0., -7.4698, 4.16907, 4.25527, 3.03429, 4.44532}},
38 {{0., 3.33434, 6.34301, 6.35598, 2.52964, 5.3388}},
39 {{0., 7.11411, 5.97451, -5.76122, -1.54548, -0.547554}},
40 {{0., 6.86275, -3.76633, -32.6073, -6.58653, 1.76117}},
41 {{0., -6.78666, -4.26073, 1.43183, 4.45367, 8.48307}},
42 {{0., -0.566981, -6.05845, -5.23571, 4.45367, 8.48307}}}};
44 constexpr std::array<std::array<float, nBinsBrem>, nBinsEta> par3 = {
45 {{{0., 5.53373e-08, 5.61149e-06, 9.6404e-07, 4.43986e-07, 2.58822e-06}},
46 {{0., 0.000114835, 2.86726e-07, 0.00190694, 0.120204, 3.59921e-07}},
47 {{0., 0.0438575, 0.0469782, 4.99993, 4.99992, 0.0952985}},
48 {{0., 0.00543544, 6.56718e-05, 0.00119538, 1.10125e-05, 0.00204206}},
49 {{0., 4.98192, 4.99984, 0.0920944, 0.030385, 0.0134321}},
50 {{0., 0.0120609, 0.000193818, 4.9419, 0.030385, 0.0134321}}}};
53 for (
int iEta = 0; iEta < nBinsEta; ++iEta) {
60 for (
int iBrem = 0; iBrem < nBinsBrem; ++iBrem) {
61 if (BremBins[iBrem] <= brem && brem < BremBins[iBrem + 1]) {
67 iEtaSl = nBinsEta - 1;
68 if (brem < BremBins[0])
70 if (brem > BremBins[nBinsBrem - 1])
71 iBremSl = nBinsBrem - 1;
73 float uncertainty = 0;
74 if (iBremSl >= 0 && iBremSl < nBinsBrem && iEtaSl >= 0 && iEtaSl < nBinsEta) {
76 uncertainty = par0[iEtaSl][iBremSl] + par1[iEtaSl][iBremSl] / (5 - par2[iEtaSl][iBremSl]) +
77 par3[iEtaSl][iBremSl] / ((5 - par2[iEtaSl][iBremSl]) * (5 - par2[iEtaSl][iBremSl]));
79 uncertainty = par0[iEtaSl][iBremSl] + par1[iEtaSl][iBremSl] / (200 - par2[iEtaSl][iBremSl]) +
80 par3[iEtaSl][iBremSl] / ((200 - par2[iEtaSl][iBremSl]) * (200 - par2[iEtaSl][iBremSl]));
82 if (et > 5 && et < 200)
83 uncertainty = par0[iEtaSl][iBremSl] + par1[iEtaSl][iBremSl] / (et - par2[iEtaSl][iBremSl]) +
84 par3[iEtaSl][iBremSl] / ((et - par2[iEtaSl][iBremSl]) * (et - par2[iEtaSl][iBremSl]));
87 return (uncertainty *
energy);
Abs< T >::type abs(const T &t)