29 double et = energy/cosh(eta);
32 const double EtaBins[nBinsEta+1] = {0.0, 0.7, 1.15, 1.44, 1.56, 2.0, 2.5};
34 const int nBinsBrem=6;
35 const double BremBins [nBinsBrem+1]= {0.8, 1.0, 2.0, 3.0, 4.0, 5.0, 10.0};
38 float par0[nBinsEta][nBinsBrem];
39 float par1[nBinsEta][nBinsBrem];
40 float par2[nBinsEta][nBinsBrem];
41 float par3[nBinsEta][nBinsBrem];
48 par0[0][1]=0.00703187;
51 par3[0][1]=5.53373e-08;
53 par0[0][2]=0.00692465;
56 par3[0][2]=5.61149e-06;
58 par0[0][3]=0.00855993;
61 par3[0][3]=9.6404e-07;
63 par0[0][4]=0.00795058;
66 par3[0][4]=4.43986e-07;
71 par3[0][5]=2.58822e-06;
78 par0[1][1]=0.00894211;
81 par3[1][1]=0.000114835;
86 par3[1][2]=2.86726e-07;
91 par3[1][3]=0.00190694;
101 par3[1][5]=3.59921e-07;
103 par0[2][0]=0.0291343;
108 par0[2][1]=0.00876269;
111 par3[2][1]=0.0438575;
113 par0[2][2]=0.0120863;
116 par3[2][2]=0.0469782;
118 par0[2][3]=0.0112655;
123 par0[2][4]=0.0168267;
128 par0[2][5]=0.0168059;
130 par2[2][5]=-0.547554;
131 par3[2][5]=0.0952985;
138 par0[3][1]=0.0717431;
141 par3[3][1]=0.00543544;
143 par0[3][2]=0.0385666;
146 par3[3][2]=6.56718e-05;
148 par0[3][3]=0.0142631;
151 par3[3][3]=0.00119538;
153 par0[3][4]=0.0421638;
156 par3[3][4]=1.10125e-05;
161 par3[3][5]=0.00204206;
163 par0[4][0]=0.0483944;
168 par0[4][1]=0.0168516;
173 par0[4][2]=0.0243039;
181 par3[4][3]=0.0920944;
183 par0[4][4]=0.0414953;
191 par3[4][5]=0.0134321;
200 par2[5][1]=-0.566981;
201 par3[5][1]=0.0120609;
203 par0[5][2]=0.0196619;
206 par3[5][2]=0.000193818;
208 par0[5][3]=0.0324734;
213 par0[5][4]=0.0414953;
221 par3[5][5]=0.0134321;
225 for (
int iEta = 0; iEta < nBinsEta; ++iEta){
233 for (
int iBrem = 0; iBrem < nBinsBrem; ++iBrem){
234 if ( BremBins[iBrem] <= brem && brem <BremBins[iBrem+1] ){
240 if (brem<BremBins[0]) iBremSl = 0;
241 if (brem>BremBins[nBinsBrem-1]) iBremSl = nBinsBrem-1;
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>200) uncertainty = par0[iEtaSl][iBremSl] + par1[iEtaSl][iBremSl]/(200-par2[iEtaSl][iBremSl]) + par3[iEtaSl][iBremSl]/((200-par2[iEtaSl][iBremSl])*(200-par2[iEtaSl][iBremSl]));
247 if (et>5 && et<200) uncertainty = par0[iEtaSl][iBremSl] + par1[iEtaSl][iBremSl]/(et-par2[iEtaSl][iBremSl]) + par3[iEtaSl][iBremSl]/((et-par2[iEtaSl][iBremSl])*(et-par2[iEtaSl][iBremSl]));
249 return (uncertainty*energy);
257 double et = energy/cosh(eta);
259 const int nBinsEta=6;
260 const double EtaBins[nBinsEta+1] = {0.0, 0.7, 1.15, 1.44, 1.56, 2.0, 2.5};
262 const int nBinsBrem=6;
263 const double BremBins [nBinsBrem+1]= {0.8, 1.0, 2.0, 3.0, 4.0, 5.0, 10.0};
265 float par0[nBinsEta][nBinsBrem];
266 float par1[nBinsEta][nBinsBrem];
267 float par2[nBinsEta][nBinsBrem];
268 float par3[nBinsEta][nBinsBrem];
270 par0[0][0]=0.00806753;
272 par2[0][0]=-0.00368104;
275 par0[0][1]=0.00899298;
278 par3[0][1]=9.07419e-08;
300 par0[1][0]=0.00880649;
301 par1[1][0]=0.0716169;
303 par3[1][0]=0.00632907;
305 par0[1][1]=0.00972275;
306 par1[1][1]=0.0752675;
308 par3[1][1]=2.49397e-07;
330 par0[2][0]=0.0101474;
331 par1[2][0]=-0.332171;
335 par0[2][1]=0.0109109;
336 par1[2][1]=0.0425903;
338 par3[2][1]=2.18593e-08;
360 par0[3][0]=0.00343003;
365 par0[3][1]=0.0372159;
368 par3[3][1]=0.00102639;
390 par0[4][0]=0.0192411;
391 par1[4][0]=0.0511006;
393 par3[4][0]=0.00331583;
395 par0[4][1]=0.0195124;
398 par3[4][1]=6.12472e-06;
420 par0[5][0]=0.0203644;
421 par1[5][0]=-0.050789;
425 par0[5][1]=0.0198718;
428 par3[5][1]=6.89631e-06;
452 for (
int iEta = 0; iEta < nBinsEta; ++iEta){
460 for (
int iBrem = 0; iBrem < nBinsBrem; ++iBrem){
461 if ( BremBins[iBrem] <= brem && brem <BremBins[iBrem+1] ){
467 if (brem<BremBins[0]) iBremSl = 0;
468 if (brem>BremBins[nBinsBrem-1]) iBremSl = nBinsBrem-1;
469 if (brem>2) iBremSl = 1;
471 float uncertainty = 0;
472 if (iBremSl >= 0 && iBremSl < nBinsBrem && iEtaSl >= 0 && iEtaSl < nBinsEta) {
473 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]));
474 else if (et>200) uncertainty = par0[iEtaSl][iBremSl] + par1[iEtaSl][iBremSl]/(200-par2[iEtaSl][iBremSl]) + par3[iEtaSl][iBremSl]/((200-par2[iEtaSl][iBremSl])*(200-par2[iEtaSl][iBremSl]));
475 else if (et>=5 && et<=200) uncertainty = par0[iEtaSl][iBremSl] + par1[iEtaSl][iBremSl]/(et-par2[iEtaSl][iBremSl]) + par3[iEtaSl][iBremSl]/((et-par2[iEtaSl][iBremSl])*(et-par2[iEtaSl][iBremSl]));
478 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)