13 double et = energy / cosh(eta);
16 const double EtaBins[nBinsEta + 1] = {0.0, 0.7, 1.15, 1.44, 1.56, 2.0, 2.5};
18 const int nBinsBrem = 6;
19 const double BremBins[nBinsBrem + 1] = {0.8, 1.0, 2.0, 3.0, 4.0, 5.0, 10.0};
26 par0[0][0] = 0.0232291;
31 par0[0][1] = 0.00703187;
32 par1[0][1] = 0.646644;
34 par3[0][1] = 5.53373e-08;
36 par0[0][2] = 0.00692465;
37 par1[0][2] = 0.292698;
39 par3[0][2] = 5.61149e-06;
41 par0[0][3] = 0.00855993;
42 par1[0][3] = 0.280843;
44 par3[0][3] = 9.6404e-07;
46 par0[0][4] = 0.00795058;
47 par1[0][4] = 0.370007;
49 par3[0][4] = 4.43986e-07;
51 par0[0][5] = 0.0107494;
52 par1[0][5] = 0.276159;
54 par3[0][5] = 2.58822e-06;
56 par0[1][0] = 0.0614866;
61 par0[1][1] = 0.00894211;
62 par1[1][1] = 0.466937;
64 par3[1][1] = 0.000114835;
66 par0[1][2] = 0.0102959;
67 par1[1][2] = 0.313568;
69 par3[1][2] = 2.86726e-07;
71 par0[1][3] = 0.0128934;
72 par1[1][3] = 0.302943;
74 par3[1][3] = 0.00190694;
76 par0[1][4] = 0.0130199;
77 par1[1][4] = 0.505135;
79 par3[1][4] = 0.120204;
81 par0[1][5] = 0.0180839;
82 par1[1][5] = 0.382134;
84 par3[1][5] = 3.59921e-07;
86 par0[2][0] = 0.0291343;
91 par0[2][1] = 0.00876269;
92 par1[2][1] = 0.375159;
94 par3[2][1] = 0.0438575;
96 par0[2][2] = 0.0120863;
97 par1[2][2] = 0.397635;
99 par3[2][2] = 0.0469782;
101 par0[2][3] = 0.0112655;
102 par1[2][3] = 0.856565;
103 par2[2][3] = -5.76122;
104 par3[2][3] = 4.99993;
106 par0[2][4] = 0.0168267;
107 par1[2][4] = 0.636468;
108 par2[2][4] = -1.54548;
109 par3[2][4] = 4.99992;
111 par0[2][5] = 0.0168059;
112 par1[2][5] = 1.09268;
113 par2[2][5] = -0.547554;
114 par3[2][5] = 0.0952985;
116 par0[3][0] = 0.158403;
121 par0[3][1] = 0.0717431;
122 par1[3][1] = 1.66981;
123 par2[3][1] = 6.86275;
124 par3[3][1] = 0.00543544;
126 par0[3][2] = 0.0385666;
128 par2[3][2] = -3.76633;
129 par3[3][2] = 6.56718e-05;
131 par0[3][3] = 0.0142631;
132 par1[3][3] = 8.85991;
133 par2[3][3] = -32.6073;
134 par3[3][3] = 0.00119538;
136 par0[3][4] = 0.0421638;
138 par2[3][4] = -6.58653;
139 par3[3][4] = 1.10125e-05;
141 par0[3][5] = 0.046331;
142 par1[3][5] = 1.29951;
143 par2[3][5] = 1.76117;
144 par3[3][5] = 0.00204206;
146 par0[4][0] = 0.0483944;
151 par0[4][1] = 0.0168516;
152 par1[4][1] = 1.19617;
153 par2[4][1] = -6.78666;
154 par3[4][1] = 4.98192;
156 par0[4][2] = 0.0243039;
157 par1[4][2] = 0.994626;
158 par2[4][2] = -4.26073;
159 par3[4][2] = 4.99984;
161 par0[4][3] = 0.031795;
162 par1[4][3] = 0.875925;
163 par2[4][3] = 1.43183;
164 par3[4][3] = 0.0920944;
166 par0[4][4] = 0.0414953;
167 par1[4][4] = 0.654605;
168 par2[4][4] = 4.45367;
169 par3[4][4] = 0.030385;
171 par0[4][5] = 0.058031;
172 par1[4][5] = 0.292915;
173 par2[4][5] = 8.48307;
174 par3[4][5] = 0.0134321;
176 par0[5][0] = 0.107158;
181 par0[5][1] = 0.021685;
182 par1[5][1] = 0.574207;
183 par2[5][1] = -0.566981;
184 par3[5][1] = 0.0120609;
186 par0[5][2] = 0.0196619;
187 par1[5][2] = 0.940217;
188 par2[5][2] = -6.05845;
189 par3[5][2] = 0.000193818;
191 par0[5][3] = 0.0324734;
192 par1[5][3] = 0.574766;
193 par2[5][3] = -5.23571;
196 par0[5][4] = 0.0414953;
197 par1[5][4] = 0.654605;
198 par2[5][4] = 4.45367;
199 par3[5][4] = 0.030385;
201 par0[5][5] = 0.058031;
202 par1[5][5] = 0.292915;
203 par2[5][5] = 8.48307;
204 par3[5][5] = 0.0134321;
207 for (
int iEta = 0; iEta <
nBinsEta; ++iEta) {
214 for (
int iBrem = 0; iBrem < nBinsBrem; ++iBrem) {
215 if (BremBins[iBrem] <= brem && brem < BremBins[iBrem + 1]) {
221 iEtaSl = nBinsEta - 1;
222 if (brem < BremBins[0])
224 if (brem > BremBins[nBinsBrem - 1])
225 iBremSl = nBinsBrem - 1;
227 float uncertainty = 0;
229 uncertainty = par0[iEtaSl][iBremSl] + par1[iEtaSl][iBremSl] / (5 - par2[iEtaSl][iBremSl]) +
230 par3[iEtaSl][iBremSl] / ((5 - par2[iEtaSl][iBremSl]) * (5 - par2[iEtaSl][iBremSl]));
232 uncertainty = par0[iEtaSl][iBremSl] + par1[iEtaSl][iBremSl] / (200 - par2[iEtaSl][iBremSl]) +
233 par3[iEtaSl][iBremSl] / ((200 - par2[iEtaSl][iBremSl]) * (200 - par2[iEtaSl][iBremSl]));
235 if (et > 5 && et < 200)
236 uncertainty = par0[iEtaSl][iBremSl] + par1[iEtaSl][iBremSl] / (et - par2[iEtaSl][iBremSl]) +
237 par3[iEtaSl][iBremSl] / ((et - par2[iEtaSl][iBremSl]) * (et - par2[iEtaSl][iBremSl]));
239 return (uncertainty * energy);
243 double et = energy / cosh(eta);
246 const double EtaBins[nBinsEta + 1] = {0.0, 0.7, 1.15, 1.44, 1.56, 2.0, 2.5};
248 const int nBinsBrem = 6;
249 const double BremBins[nBinsBrem + 1] = {0.8, 1.0, 2.0, 3.0, 4.0, 5.0, 10.0};
256 par0[0][0] = 0.00806753;
257 par1[0][0] = 0.143754;
258 par2[0][0] = -0.00368104;
259 par3[0][0] = 0.219829;
261 par0[0][1] = 0.00899298;
262 par1[0][1] = 0.10159;
263 par2[0][1] = 4.70884;
264 par3[0][1] = 9.07419e-08;
286 par0[1][0] = 0.00880649;
287 par1[1][0] = 0.0716169;
288 par2[1][0] = 5.23856;
289 par3[1][0] = 0.00632907;
291 par0[1][1] = 0.00972275;
292 par1[1][1] = 0.0752675;
293 par2[1][1] = 3.35623;
294 par3[1][1] = 2.49397e-07;
316 par0[2][0] = 0.0101474;
317 par1[2][0] = -0.332171;
318 par2[2][0] = -31.8456;
321 par0[2][1] = 0.0109109;
322 par1[2][1] = 0.0425903;
323 par2[2][1] = 6.52561;
324 par3[2][1] = 2.18593e-08;
346 par0[3][0] = 0.00343003;
347 par1[3][0] = 11.5791;
348 par2[3][0] = -112.084;
349 par3[3][0] = -863.968;
351 par0[3][1] = 0.0372159;
352 par1[3][1] = 1.44028;
354 par3[3][1] = 0.00102639;
376 par0[4][0] = 0.0192411;
377 par1[4][0] = 0.0511006;
378 par2[4][0] = 7.56304;
379 par3[4][0] = 0.00331583;
381 par0[4][1] = 0.0195124;
382 par1[4][1] = 0.104321;
383 par2[4][1] = 5.71476;
384 par3[4][1] = 6.12472e-06;
406 par0[5][0] = 0.0203644;
407 par1[5][0] = -0.050789;
408 par2[5][0] = -7.96854;
409 par3[5][0] = 4.71223;
411 par0[5][1] = 0.0198718;
412 par1[5][1] = 0.106859;
413 par2[5][1] = 3.54235;
414 par3[5][1] = 6.89631e-06;
437 for (
int iEta = 0; iEta <
nBinsEta; ++iEta) {
444 for (
int iBrem = 0; iBrem < nBinsBrem; ++iBrem) {
445 if (BremBins[iBrem] <= brem && brem < BremBins[iBrem + 1]) {
451 iEtaSl = nBinsEta - 1;
452 if (brem < BremBins[0])
454 if (brem > BremBins[nBinsBrem - 1])
455 iBremSl = nBinsBrem - 1;
459 float uncertainty = 0;
460 if (iBremSl >= 0 && iBremSl < nBinsBrem && iEtaSl >= 0 && iEtaSl < nBinsEta) {
462 uncertainty = par0[iEtaSl][iBremSl] + par1[iEtaSl][iBremSl] / (5 - par2[iEtaSl][iBremSl]) +
463 par3[iEtaSl][iBremSl] / ((5 - par2[iEtaSl][iBremSl]) * (5 - par2[iEtaSl][iBremSl]));
465 uncertainty = par0[iEtaSl][iBremSl] + par1[iEtaSl][iBremSl] / (200 - par2[iEtaSl][iBremSl]) +
466 par3[iEtaSl][iBremSl] / ((200 - par2[iEtaSl][iBremSl]) * (200 - par2[iEtaSl][iBremSl]));
467 else if (et >= 5 && et <= 200)
468 uncertainty = par0[iEtaSl][iBremSl] + par1[iEtaSl][iBremSl] / (et - par2[iEtaSl][iBremSl]) +
469 par3[iEtaSl][iBremSl] / ((et - par2[iEtaSl][iBremSl]) * (et - par2[iEtaSl][iBremSl]));
472 return (uncertainty * energy);
double computePhotonEnergyUncertainty_highR9(double eta, double brem, double energy)
~EnergyUncertaintyPhotonSpecific()
double computePhotonEnergyUncertainty_lowR9(double eta, double brem, double energy)
EnergyUncertaintyPhotonSpecific(const edm::ParameterSet &config)
void init(const edm::EventSetup &theEventSetup)