CMS 3D CMS Logo

EnergyUncertaintyElectronSpecific.cc
Go to the documentation of this file.
2 #include "TMath.h"
3 
4 #include <iostream>
5 
6 
8 }
9 
11  {}
12 
14  {}
15 
17  {
18  if (c == reco::GsfElectron::GOLDEN) return computeElectronEnergyUncertainty_golden(eta,brem,energy) ;
22  if (c == reco::GsfElectron::GAP) return computeElectronEnergyUncertainty_cracks(eta,brem,energy) ;
23  throw cms::Exception("GsfElectronAlgo|InternalError")<<"unknown classification" ;
24  }
25 
27 
28  double et = energy/cosh(eta);
29 
30  const int nBinsEta=5;
31  const Double_t EtaBins[nBinsEta+1] = {0.0, 0.4, 0.8, 1.5, 2.0, 2.5};
32 
33  const int nBinsBrem=6;
34  const Double_t BremBins[nBinsBrem+1]= {0.8, 1.0, 1.1, 1.2, 1.3, 1.5, 8.0};
35 
36  float par0[nBinsEta][nBinsBrem];
37  float par1[nBinsEta][nBinsBrem];
38  float par2[nBinsEta][nBinsBrem];
39 
40  par0[0][0]=0.00567891;
41  par1[0][0]=0.238685;
42  par2[0][0]=2.12035;
43 
44  par0[0][1]=0.0065673;
45  par1[0][1]=0.193642;
46  par2[0][1]=3.41493;
47 
48  par0[0][2]=0.00574742;
49  par1[0][2]=0.249171;
50  par2[0][2]=1.7401;
51 
52  par0[0][3]=0.00542964;
53  par1[0][3]=0.259997;
54  par2[0][3]=1.46234;
55 
56  par0[0][4]=0.00523293;
57  par1[0][4]=0.310505;
58  par2[0][4]=0.233226;
59 
60  par0[0][5]=0.00547518;
61  par1[0][5]=0.390506;
62  par2[0][5]=-2.78168;
63 
64  par0[1][0]=0.00552517;
65  par1[1][0]=0.288736;
66  par2[1][0]=1.30552;
67 
68  par0[1][1]=0.00611188;
69  par1[1][1]=0.312303;
70  par2[1][1]=0.137905;
71 
72  par0[1][2]=0.0062729;
73  par1[1][2]=0.294717;
74  par2[1][2]=0.653793;
75 
76  par0[1][3]=0.00574846;
77  par1[1][3]=0.294491;
78  par2[1][3]=0.790746;
79 
80  par0[1][4]=0.00447373;
81  par1[1][4]=0.379178;
82  par2[1][4]=-1.42584;
83 
84  par0[1][5]=0.00595789;
85  par1[1][5]=0.38164;
86  par2[1][5]=-2.34653;
87 
88  par0[2][0]=0.00356679;
89  par1[2][0]=0.456456;
90  par2[2][0]=0.610716;
91 
92  par0[2][1]=0.00503827;
93  par1[2][1]=0.394912;
94  par2[2][1]=0.778879;
95 
96  par0[2][2]=0.00328016;
97  par1[2][2]=0.541713;
98  par2[2][2]=-1.58577;
99 
100  par0[2][3]=0.00592303;
101  par1[2][3]=0.401744;
102  par2[2][3]=1.45098;
103 
104  par0[2][4]=0.00512479;
105  par1[2][4]=0.483151;
106  par2[2][4]=-0.0985911;
107 
108  par0[2][5]=0.00484166;
109  par1[2][5]=0.657995;
110  par2[2][5]=-3.47167;
111 
112  par0[3][0]=0.0109195;
113  par1[3][0]=1.13803;
114  par2[3][0]=-3.48281;
115 
116  par0[3][1]=0.0102361;
117  par1[3][1]=1.39866;
118  par2[3][1]=-6.4736;
119 
120  par0[3][2]=0.0101576;
121  par1[3][2]=1.51353;
122  par2[3][2]=-8.03308;
123 
124  par0[3][3]=0.0120683;
125  par1[3][3]=1.48587;
126  par2[3][3]=-7.55974;
127 
128  par0[3][4]=0.0155326;
129  par1[3][4]=1.49732;
130  par2[3][4]=-7.98843;
131 
132  par0[3][5]=0.0225035;
133  par1[3][5]=1.82363;
134  par2[3][5]=-10.1027;
135 
136  par0[4][0]=0.0109632;
137  par1[4][0]=0.458212;
138  par2[4][0]=0.995183;
139 
140  par0[4][1]=0.0103342;
141  par1[4][1]=0.628761;
142  par2[4][1]=-2.42889;
143 
144  par0[4][2]=0.0103486;
145  par1[4][2]=0.659144;
146  par2[4][2]=-2.14073;
147 
148  par0[4][3]=0.00862762;
149  par1[4][3]=0.929563;
150  par2[4][3]=-6.27768;
151 
152  par0[4][4]=0.0111448;
153  par1[4][4]=1.06724;
154  par2[4][4]=-7.68512;
155 
156  par0[4][5]=0.0146648;
157  par1[4][5]=1.6427;
158  par2[4][5]=-13.3504;
159 
160 
161  Int_t iEtaSl = -1;
162  for (Int_t iEta = 0; iEta < nBinsEta; ++iEta){
163  if ( EtaBins[iEta] <= fabs(eta) && fabs(eta) <EtaBins[iEta+1] ){
164  iEtaSl = iEta;
165  }
166  }
167 
168  Int_t iBremSl = -1;
169  for (Int_t iBrem = 0; iBrem < nBinsBrem; ++iBrem){
170  if ( BremBins[iBrem] <= brem && brem <BremBins[iBrem+1] ){
171  iBremSl = iBrem;
172  }
173  }
174 
175  if (fabs(eta)>2.5) iEtaSl = nBinsEta-1;
176  if (brem<BremBins[0]) iBremSl = 0;
177  if (brem>BremBins[nBinsBrem-1]) iBremSl = nBinsBrem-1;
178 
179  float uncertainty = 0;
180  if (et<5) uncertainty = par0[iEtaSl][iBremSl] + par1[iEtaSl][iBremSl]/(5-par2[iEtaSl][iBremSl]);
181  if (et>100) uncertainty = par0[iEtaSl][iBremSl] + par1[iEtaSl][iBremSl]/(100-par2[iEtaSl][iBremSl]);
182 
183  if (et>5 && et<100) uncertainty = par0[iEtaSl][iBremSl] + par1[iEtaSl][iBremSl]/(et-par2[iEtaSl][iBremSl]);
184 
185  return (uncertainty*energy);
186 
187 }
188 
190 
191  double et = energy/cosh(eta);
192 
193  const int nBinsEta=4;
194  const Double_t EtaBins[nBinsEta+1] = {0.0, 0.8, 1.5, 2.0, 2.5};
195 
196  const int nBinsBrem=1;
197  const Double_t BremBins[nBinsBrem+1]= {0.8, 8.0};
198 
199  float par0[nBinsEta][nBinsBrem];
200  float par1[nBinsEta][nBinsBrem];
201  float par2[nBinsEta][nBinsBrem];
202  float par3[nBinsEta][nBinsBrem];
203 
204  par0[0][0]=0.00593389;
205  par1[0][0]=0.178275;
206  par2[0][0]=-7.28273;
207  par3[0][0]=13.2632;
208 
209  par0[1][0]=0.00266954;
210  par1[1][0]=0.811415;
211  par2[1][0]=-1.66063;
212  par3[1][0]=1.03555;
213 
214  par0[2][0]=0.00500623;
215  par1[2][0]=2.34018;
216  par2[2][0]=-11.0129;
217  par3[2][0]=-0.200323;
218 
219  par0[3][0]=0.00841038;
220  par1[3][0]=1.06851;
221  par2[3][0]=-4.1259;
222  par3[3][0]=-0.0646195;
223 
224 
225  Int_t iEtaSl = -1;
226  for (Int_t iEta = 0; iEta < nBinsEta; ++iEta){
227  if ( EtaBins[iEta] <= fabs(eta) && fabs(eta) <EtaBins[iEta+1] ){
228  iEtaSl = iEta;
229  }
230  }
231 
232  Int_t iBremSl = -1;
233  for (Int_t iBrem = 0; iBrem < nBinsBrem; ++iBrem){
234  if ( BremBins[iBrem] <= brem && brem <BremBins[iBrem+1] ){
235  iBremSl = iBrem;
236  }
237  }
238 
239  if (fabs(eta)>2.5) iEtaSl = nBinsEta-1;
240  if (brem<BremBins[0]) iBremSl = 0;
241  if (brem>BremBins[nBinsBrem-1]) iBremSl = nBinsBrem-1;
242 
243  float uncertainty = 0;
244  if (et<5) uncertainty = par0[iEtaSl][iBremSl] + par1[iEtaSl][iBremSl]/(5-par2[iEtaSl][iBremSl]) + par3[iEtaSl][iBremSl]/((5-par2[iEtaSl][iBremSl])*(5-par2[iEtaSl][iBremSl]));
245  if (et>100) uncertainty = par0[iEtaSl][iBremSl] + par1[iEtaSl][iBremSl]/(100-par2[iEtaSl][iBremSl]) + par3[iEtaSl][iBremSl]/((100-par2[iEtaSl][iBremSl])*(100-par2[iEtaSl][iBremSl]));
246 
247  if (et>5 && et<100) uncertainty = par0[iEtaSl][iBremSl] + par1[iEtaSl][iBremSl]/(et-par2[iEtaSl][iBremSl]) + par3[iEtaSl][iBremSl]/((et-par2[iEtaSl][iBremSl])*(et-par2[iEtaSl][iBremSl]));
248 
249  return (uncertainty*energy);
250 
251 }
253 
254  double et = energy/cosh(eta);
255 
256  const int nBinsEta=4;
257  const Double_t EtaBins[nBinsEta+1] = {0.0, 0.7, 1.3, 1.8, 2.5};
258 
259  const int nBinsBrem=1;
260  const Double_t BremBins[nBinsBrem+1]= {0.8, 8.0};
261 
262  float par0[nBinsEta][nBinsBrem];
263  float par1[nBinsEta][nBinsBrem];
264  float par2[nBinsEta][nBinsBrem];
265  float par3[nBinsEta][nBinsBrem];
266 
267  par0[0][0]=0.00601311;
268  par1[0][0]=0.390988;
269  par2[0][0]=-4.11919;
270  par3[0][0]=4.61671;
271 
272  par0[1][0]=0.0059814;
273  par1[1][0]=1.02668;
274  par2[1][0]=-2.87477;
275  par3[1][0]=0.163447;
276 
277  par0[2][0]=0.00953032;
278  par1[2][0]=2.27491;
279  par2[2][0]=-7.61675;
280  par3[2][0]=-0.335786;
281 
282  par0[3][0]=0.00728618;
283  par1[3][0]=2.08268;
284  par2[3][0]=-8.66756;
285  par3[3][0]=-1.27831;
286 
287 
288  Int_t iEtaSl = -1;
289  for (Int_t iEta = 0; iEta < nBinsEta; ++iEta){
290  if ( EtaBins[iEta] <= fabs(eta) && fabs(eta) <EtaBins[iEta+1] ){
291  iEtaSl = iEta;
292  }
293  }
294 
295  Int_t iBremSl = -1;
296  for (Int_t iBrem = 0; iBrem < nBinsBrem; ++iBrem){
297  if ( BremBins[iBrem] <= brem && brem <BremBins[iBrem+1] ){
298  iBremSl = iBrem;
299  }
300  }
301 
302  if (fabs(eta)>2.5) iEtaSl = nBinsEta-1;
303  if (brem<BremBins[0]) iBremSl = 0;
304  if (brem>BremBins[nBinsBrem-1]) iBremSl = nBinsBrem-1;
305 
306  float uncertainty = 0;
307  if (et<5) uncertainty = par0[iEtaSl][iBremSl] + par1[iEtaSl][iBremSl]/(5-par2[iEtaSl][iBremSl]) + par3[iEtaSl][iBremSl]/((5-par2[iEtaSl][iBremSl])*(5-par2[iEtaSl][iBremSl]));
308  if (et>100) uncertainty = par0[iEtaSl][iBremSl] + par1[iEtaSl][iBremSl]/(100-par2[iEtaSl][iBremSl]) + par3[iEtaSl][iBremSl]/((100-par2[iEtaSl][iBremSl])*(100-par2[iEtaSl][iBremSl]));
309 
310  if (et>5 && et<100) uncertainty = par0[iEtaSl][iBremSl] + par1[iEtaSl][iBremSl]/(et-par2[iEtaSl][iBremSl]) + par3[iEtaSl][iBremSl]/((et-par2[iEtaSl][iBremSl])*(et-par2[iEtaSl][iBremSl]));
311 
312  return (uncertainty*energy);
313 
314 }
315 
317 
318  double et = energy/cosh(eta);
319 
320  const int nBinsEta=4;
321  const Double_t EtaBins[nBinsEta+1] = {0.0, 0.8, 1.2, 1.7, 2.5};
322 
323  const int nBinsBrem=5;
324  const Double_t BremBins[nBinsBrem+1]= {0.8, 1.8, 2.2, 3.0, 4.0, 8.0};
325 
326  float par0[nBinsEta][nBinsBrem];
327  float par1[nBinsEta][nBinsBrem];
328  float par2[nBinsEta][nBinsBrem];
329  float par3[nBinsEta][nBinsBrem];
330 
331  par0[0][0]=0.0049351;
332  par1[0][0]=0.579925;
333  par2[0][0]=-9.33987;
334  par3[0][0]=1.62129;
335 
336  par0[0][1]=0.00566155;
337  par1[0][1]=0.496137;
338  par2[0][1]=-5.52543;
339  par3[0][1]=1.19101;
340 
341  par0[0][2]=0.0051397;
342  par1[0][2]=0.551947;
343  par2[0][2]=-7.30079;
344  par3[0][2]=1.89701;
345 
346  par0[0][3]=0.00468481;
347  par1[0][3]=0.63011;
348  par2[0][3]=-6.7722;
349  par3[0][3]=1.81614;
350 
351  par0[0][4]=0.00444475;
352  par1[0][4]=0.684261;
353  par2[0][4]=-4.67614;
354  par3[0][4]=1.64415;
355 
356  par0[1][0]=0.00201762;
357  par1[1][0]=0.914762;
358  par2[1][0]=-4.48042;
359  par3[1][0]=-1.50473;
360 
361  par0[1][1]=0.00431475;
362  par1[1][1]=0.824483;
363  par2[1][1]=-5.02885;
364  par3[1][1]=-0.153502;
365 
366  par0[1][2]=0.00501004;
367  par1[1][2]=0.888521;
368  par2[1][2]=-4.77311;
369  par3[1][2]=-0.355145;
370 
371  par0[1][3]=0.00632666;
372  par1[1][3]=0.960241;
373  par2[1][3]=-3.36742;
374  par3[1][3]=-1.16499;
375 
376  par0[1][4]=0.00636704;
377  par1[1][4]=1.25728;
378  par2[1][4]=-5.53561;
379  par3[1][4]=-0.864123;
380 
381  par0[2][0]=-0.00729396;
382  par1[2][0]=3.24295;
383  par2[2][0]=-17.1458;
384  par3[2][0]=-4.69711;
385 
386  par0[2][1]=0.00539783;
387  par1[2][1]=1.72935;
388  par2[2][1]=-5.92807;
389  par3[2][1]=-2.18733;
390 
391  par0[2][2]=0.00608149;
392  par1[2][2]=1.80606;
393  par2[2][2]=-6.67563;
394  par3[2][2]=-0.922401;
395 
396  par0[2][3]=0.00465335;
397  par1[2][3]=2.13562;
398  par2[2][3]=-10.1105;
399  par3[2][3]=-0.230781;
400 
401  par0[2][4]=0.00642685;
402  par1[2][4]=2.07592;
403  par2[2][4]=-7.50257;
404  par3[2][4]=-2.91515;
405 
406  par0[3][0]=0.0149449;
407  par1[3][0]=1.00448;
408  par2[3][0]=-2.09368;
409  par3[3][0]=0.455037;
410 
411  par0[3][1]=0.0216691;
412  par1[3][1]=1.18393;
413  par2[3][1]=-4.56674;
414  par3[3][1]=-0.601872;
415 
416  par0[3][2]=0.0255957;
417  par1[3][2]=0.00775295;
418  par2[3][2]=-44.2722;
419  par3[3][2]=241.516;
420 
421  par0[3][3]=0.0206101;
422  par1[3][3]=2.59246;
423  par2[3][3]=-13.1702;
424  par3[3][3]=-2.35024;
425 
426  par0[3][4]=0.0180508;
427  par1[3][4]=3.1099;
428  par2[3][4]=-13.6208;
429  par3[3][4]=-2.11069;
430 
431 
432  Int_t iEtaSl = -1;
433  for (Int_t iEta = 0; iEta < nBinsEta; ++iEta){
434  if ( EtaBins[iEta] <= fabs(eta) && fabs(eta) <EtaBins[iEta+1] ){
435  iEtaSl = iEta;
436  }
437  }
438 
439  Int_t iBremSl = -1;
440  for (Int_t iBrem = 0; iBrem < nBinsBrem; ++iBrem){
441  if ( BremBins[iBrem] <= brem && brem <BremBins[iBrem+1] ){
442  iBremSl = iBrem;
443  }
444  }
445 
446  if (fabs(eta)>2.5) iEtaSl = nBinsEta-1;
447  if (brem<BremBins[0]) iBremSl = 0;
448  if (brem>BremBins[nBinsBrem-1]) iBremSl = nBinsBrem-1;
449 
450  float uncertainty = 0;
451  if (et<5) uncertainty = par0[iEtaSl][iBremSl] + par1[iEtaSl][iBremSl]/(5-par2[iEtaSl][iBremSl]) + par3[iEtaSl][iBremSl]/((5-par2[iEtaSl][iBremSl])*(5-par2[iEtaSl][iBremSl]));
452  if (et>100) uncertainty = par0[iEtaSl][iBremSl] + par1[iEtaSl][iBremSl]/(100-par2[iEtaSl][iBremSl]) + par3[iEtaSl][iBremSl]/((100-par2[iEtaSl][iBremSl])*(100-par2[iEtaSl][iBremSl]));
453 
454  if (et>5 && et<100) uncertainty = par0[iEtaSl][iBremSl] + par1[iEtaSl][iBremSl]/(et-par2[iEtaSl][iBremSl]) + par3[iEtaSl][iBremSl]/((et-par2[iEtaSl][iBremSl])*(et-par2[iEtaSl][iBremSl]));
455 
456  return (uncertainty*energy);
457 
458 }
459 
461 
462  double et = energy/cosh(eta);
463 
464  const int nBinsEta=5;
465  const Double_t EtaBins[nBinsEta+1] = {0.0, 0.42, 0.78, 1.2, 1.52, 1.65};
466 
467  const int nBinsBrem=6;
468  const Double_t BremBins[nBinsBrem+1]= {0.8, 1.2, 1.5, 2.1, 3., 4, 8.0};
469 
470  float par0[nBinsEta][nBinsBrem];
471  float par1[nBinsEta][nBinsBrem];
472  float par2[nBinsEta][nBinsBrem];
473 
474  par0[0][0]=0.0139815;
475  par1[0][0]=0.569273;
476  par2[0][0]=-4.31243;
477 
478  par0[0][1]=0.00550839;
479  par1[0][1]=0.674654;
480  par2[0][1]=-3.071;
481 
482  par0[0][2]=0.0108292;
483  par1[0][2]=0.523128;
484  par2[0][2]=-2.56702;
485 
486  par0[0][3]=0.00596201;
487  par1[0][3]=1.02501;
488  par2[0][3]=-7.74555;
489 
490  par0[0][4]=-0.00498136;
491  par1[0][4]=1.75645;
492  par2[0][4]=-21.3726;
493 
494  par0[0][5]=0.000621696;
495  par1[0][5]=0.955191;
496  par2[0][5]=-6.2189;
497 
498  par0[1][0]=0.00467498;
499  par1[1][0]=0.697951;
500  par2[1][0]=-6.56009;
501 
502  par0[1][1]=0.00808463;
503  par1[1][1]=0.580628;
504  par2[1][1]=-3.66067;
505 
506  par0[1][2]=0.00546665;
507  par1[1][2]=0.814515;
508  par2[1][2]=-7.8275;
509 
510  par0[1][3]=0.00506318;
511  par1[1][3]=0.819975;
512  par2[1][3]=-6.01641;
513 
514  par0[1][4]=0.00608425;
515  par1[1][4]=0.829616;
516  par2[1][4]=-7.85456;
517 
518  par0[1][5]=-4.45641e-06;
519  par1[1][5]=1.18952;
520  par2[1][5]=-8.27071;
521 
522  par0[2][0]=0.00971734;
523  par1[2][0]=3.79446;
524  par2[2][0]=-49.9996;
525 
526  par0[2][1]=0.00063951;
527  par1[2][1]=2.47472;
528  par2[2][1]=-25.0724;
529 
530  par0[2][2]=-0.0121618;
531  par1[2][2]=5.12931;
532  par2[2][2]=-49.985;
533 
534  par0[2][3]=-0.00604365;
535  par1[2][3]=3.42497;
536  par2[2][3]=-28.1932;
537 
538  par0[2][4]=0.00492161;
539  par1[2][4]=1.84123;
540  par2[2][4]=-10.6485;
541 
542  par0[2][5]=-0.00143907;
543  par1[2][5]=2.3773;
544  par2[2][5]=-15.4014;
545 
546  par0[3][0]=-0.0844907;
547  par1[3][0]=19.9999;
548  par2[3][0]=-39.9444;
549 
550  par0[3][1]=-0.0592498;
551  par1[3][1]=10.4079;
552  par2[3][1]=-25.1133;
553 
554  par0[3][2]=-0.0828631;
555  par1[3][2]=16.6273;
556  par2[3][2]=-49.9999;
557 
558  par0[3][3]=-0.0740798;
559  par1[3][3]=15.9316;
560  par2[3][3]=-50;
561 
562  par0[3][4]=-0.0698045;
563  par1[3][4]=15.4883;
564  par2[3][4]=-49.9998;
565 
566  par0[3][5]=-0.0699518;
567  par1[3][5]=14.7306;
568  par2[3][5]=-49.9998;
569 
570  par0[4][0]=-0.0999971;
571  par1[4][0]=15.9122;
572  par2[4][0]=-30.1268;
573 
574  par0[4][1]=-0.0999996;
575  par1[4][1]=18.5882;
576  par2[4][1]=-42.6113;
577 
578  par0[4][2]=-0.0989356;
579  par1[4][2]=19.9996;
580  par2[4][2]=-46.6999;
581 
582  par0[4][3]=-0.0999965;
583  par1[4][3]=19.9999;
584  par2[4][3]=-47.074;
585 
586  par0[4][4]=-0.0833049;
587  par1[4][4]=18.2281;
588  par2[4][4]=-49.9995;
589 
590  par0[4][5]=-0.020072;
591  par1[4][5]=8.1587;
592  par2[4][5]=-25.2897;
593 
594 
595  Int_t iEtaSl = -1;
596  for (Int_t iEta = 0; iEta < nBinsEta; ++iEta){
597  if ( EtaBins[iEta] <= fabs(eta) && fabs(eta) <EtaBins[iEta+1] ){
598  iEtaSl = iEta;
599  }
600  }
601 
602  Int_t iBremSl = -1;
603  for (Int_t iBrem = 0; iBrem < nBinsBrem; ++iBrem){
604  if ( BremBins[iBrem] <= brem && brem <BremBins[iBrem+1] ){
605  iBremSl = iBrem;
606  }
607  }
608 
609  if (fabs(eta)>2.5) iEtaSl = nBinsEta-1;
610  if (brem<BremBins[0]) iBremSl = 0;
611  if (brem>BremBins[nBinsBrem-1]) iBremSl = nBinsBrem-1;
612 
613  float uncertainty = 0;
614  if (et<5) uncertainty = par0[iEtaSl][iBremSl] + par1[iEtaSl][iBremSl]/(5-par2[iEtaSl][iBremSl]);
615  if (et>100) uncertainty = par0[iEtaSl][iBremSl] + par1[iEtaSl][iBremSl]/(100-par2[iEtaSl][iBremSl]);
616 
617  if (et>5 && et<100) uncertainty = par0[iEtaSl][iBremSl] + par1[iEtaSl][iBremSl]/(et-par2[iEtaSl][iBremSl]);
618 
619  return (uncertainty*energy);
620 
621 }
void init(const edm::EventSetup &theEventSetup)
double computeElectronEnergyUncertainty_badtrack(double eta, double brem, double energy)
double computeElectronEnergyUncertainty_cracks(double eta, double brem, double energy)
double computeElectronEnergyUncertainty_showering(double eta, double brem, double energy)
double computeElectronEnergyUncertainty(reco::GsfElectron::Classification c, double eta, double brem, double energy)
et
define resolution functions of each parameter
double computeElectronEnergyUncertainty_golden(double eta, double brem, double energy)
double computeElectronEnergyUncertainty_bigbrem(double eta, double brem, double energy)