CMS 3D CMS Logo

EcalClusterEnergyCorrectionObjectSpecific.cc
Go to the documentation of this file.
1 
4 #include "TMath.h"
5 
6 // Shower leakage corrections developed by Jungzhie et al. using TB data
7 // Developed for EB only!
8 float EcalClusterEnergyCorrectionObjectSpecific::fEta(float energy, float eta, int algorithm) const
9 {
10 
11  //std::cout << "fEta function" << std::endl;
12 
13  // this correction is setup only for EB
14  if ( algorithm != 0 ) return energy;
15 
16  float ieta = fabs(eta)*(5/0.087);
17  float p0 = (params_->params())[0]; // should be 40.2198
18  float p1 = (params_->params())[1]; // should be -3.03103e-6
19 
20  //std::cout << "ieta=" << ieta << std::endl;
21 
22  float correctedEnergy = energy;
23  if ( ieta < p0 ) correctedEnergy = energy;
24  else correctedEnergy = energy/(1.0 + p1*(ieta-p0)*(ieta-p0));
25  //std::cout << "ECEC fEta = " << correctedEnergy << std::endl;
26  return correctedEnergy;
27 }
28 
29 float EcalClusterEnergyCorrectionObjectSpecific::fBremEta(float sigmaPhiSigmaEta, float eta, int algorithm) const
30 {
31 
32  const float etaCrackMin = 1.44;
33  const float etaCrackMax = 1.56;
34 
35  //STD
36  const int nBinsEta = 14;
37  float leftEta [nBinsEta] = { 0.02, 0.25, 0.46, 0.81, 0.91, 1.01, 1.16, etaCrackMax, 1.653, 1.8, 2.0, 2.2, 2.3, 2.4 };
38  float rightEta [nBinsEta] = { 0.25, 0.42, 0.77, 0.91, 1.01, 1.13, etaCrackMin, 1.653, 1.8 , 2.0, 2.2, 2.3, 2.4, 2.5 };
39 
40  float xcorr[nBinsEta];
41 
42  float par0[nBinsEta];
43  float par1[nBinsEta];
44  float par2[nBinsEta];
45  float par3[nBinsEta];
46  float par4[nBinsEta];
47 
48  float sigmaPhiSigmaEtaMin = 0.8;
49  float sigmaPhiSigmaEtaMax = 5.;
50 
51  float sigmaPhiSigmaEtaFit = -1;
52 
53  // extra protections
54  // fix sigmaPhiSigmaEta boundaries
55  if (sigmaPhiSigmaEta < sigmaPhiSigmaEtaMin) sigmaPhiSigmaEta = sigmaPhiSigmaEtaMin;
56  if (sigmaPhiSigmaEta > sigmaPhiSigmaEtaMax ) sigmaPhiSigmaEta = sigmaPhiSigmaEtaMax;
57 
58  // eta = 0
59  if (TMath::Abs(eta) < leftEta[0] ) { eta = 0.02 ; }
60  // outside acceptance
61  if (TMath::Abs(eta) >= rightEta[nBinsEta-1] ) { eta = 2.49; } //if (DBG) std::cout << " WARNING [applyScCorrections]: TMath::Abs(eta) >= rightEta[nBinsEta-1] " << std::endl;}
62 
63  int tmpEta = -1;
64  for (int iEta = 0; iEta < nBinsEta; ++iEta){
65  if ( leftEta[iEta] <= TMath::Abs(eta) && TMath::Abs(eta) <rightEta[iEta] ){
66  tmpEta = iEta;
67  }
68  }
69 
70 
71  if (algorithm==0){ //Electrons
72 
73 
74  xcorr[0]=(params_->params())[2] ;
75  xcorr[1]=(params_->params())[3];
76  xcorr[2]=(params_->params())[4];
77  xcorr[3]=(params_->params())[5];
78  xcorr[4]=(params_->params())[6];
79  xcorr[5]=(params_->params())[7];
80  xcorr[6]=(params_->params())[8];
81  xcorr[7]=(params_->params())[9];
82  xcorr[8]=(params_->params())[10];
83  xcorr[9]=(params_->params())[11];
84  xcorr[10]=(params_->params())[12];
85  xcorr[11]=(params_->params())[13];
86  xcorr[12]=(params_->params())[14];
87  xcorr[13]=(params_->params())[15];
88 
89  par0[0] = (params_->params())[16];
90  par1[0] = (params_->params())[17];
91  par2[0] = (params_->params())[18];
92  par3[0] = (params_->params())[19]; //should be 0 (not used)
93  par4[0] = (params_->params())[20]; //should be 0 (not used)
94 
95  par0[1] = (params_->params())[21];
96  par1[1] = (params_->params())[22];
97  par2[1] = (params_->params())[23];
98  par3[1] = (params_->params())[24];
99  par4[1] = (params_->params())[25];
100 
101  par0[2] = (params_->params())[26];
102  par1[2] = (params_->params())[27];
103  par2[2] = (params_->params())[28];
104  par3[2] = (params_->params())[29]; //should be 0 (not used)
105  par4[2] = (params_->params())[30]; //should be 0 (not used)
106 
107 
108  par0[3] = (params_->params())[31];
109  par1[3] = (params_->params())[32];
110  par2[3] = (params_->params())[33];
111  par2[4] = (params_->params())[34];//should be 0 (not used)
112  par2[5] = (params_->params())[35];//should be 0 (not used)
113 
114  par0[4] = (params_->params())[36];
115  par1[4] = (params_->params())[37];
116  par2[4] = (params_->params())[38];
117  par3[4] = (params_->params())[39];//should be 0 (not used)
118  par4[4] = (params_->params())[40];//should be 0 (not used)
119 
120  par0[5] = (params_->params())[41];
121  par1[5] = (params_->params())[42];
122  par2[5] = (params_->params())[43];
123  par3[5] = (params_->params())[44];//should be 0 (not used)
124  par4[5] = (params_->params())[45];//should be 0 (not used)
125 
126  par0[6] = (params_->params())[46];
127  par1[6] = (params_->params())[47];
128  par2[6] = (params_->params())[48];
129  par3[6] = (params_->params())[49];//should be 0 (not used)
130  par4[6] = (params_->params())[50];//should be 0 (not used)
131 
132  par0[7] = (params_->params())[51];
133  par1[7] = (params_->params())[52];
134  par2[7] = (params_->params())[53];
135  par3[7] = (params_->params())[54];//should be 0 (not used)
136  par4[7] = (params_->params())[55];//should be 0 (not used)
137 
138  par0[8] = (params_->params())[56];
139  par1[8] = (params_->params())[57];
140  par2[8] = (params_->params())[58];
141  par3[8] = (params_->params())[59];//should be 0 (not used)
142  par4[8] = (params_->params())[60];//should be 0 (not used)
143 
144  par0[9] = (params_->params())[61];
145  par1[9] = (params_->params())[62];
146  par2[9] = (params_->params())[63];
147  par3[9] = (params_->params())[64];//should be 0 (not used)
148  par4[9] = (params_->params())[65];//should be 0 (not used)
149 
150  par0[10] = (params_->params())[66];
151  par1[10] = (params_->params())[67];
152  par2[10] = (params_->params())[68];
153  par3[10] = (params_->params())[69];//should be 0 (not used)
154  par4[10] = (params_->params())[70];//should be 0 (not used)
155 
156  par0[11] = (params_->params())[71];
157  par1[11] = (params_->params())[72];
158  par2[11] = (params_->params())[73];
159  par3[11] = (params_->params())[74];//should be 0 (not used)
160  par4[11] = (params_->params())[75];//should be 0 (not used)
161 
162  par0[12] = (params_->params())[76];
163  par1[12] = (params_->params())[77];
164  par2[12] = (params_->params())[78];
165  par3[12] = (params_->params())[79];//should be 0 (not used)
166  par4[12] = (params_->params())[80];//should be 0 (not used)
167 
168  par0[13] = (params_->params())[81];
169  par1[13] = (params_->params())[82];
170  par2[13] = (params_->params())[83];
171  par3[13] = (params_->params())[84];//should be 0 (not used)
172  par4[13] = (params_->params())[85];//should be 0 (not used)
173 
174  sigmaPhiSigmaEtaFit = 1.2;
175 
176  }
177 
178  if (algorithm==1){ //Photons
179 
180 
181  xcorr[0]=(params_->params())[86];
182  xcorr[1]=(params_->params())[87];
183  xcorr[2]=(params_->params())[88];
184  xcorr[3]=(params_->params())[89];
185  xcorr[4]=(params_->params())[90];
186  xcorr[5]=(params_->params())[91];
187  xcorr[6]=(params_->params())[92];
188  xcorr[7]=(params_->params())[93];
189  xcorr[8]=(params_->params())[94];
190  xcorr[9]=(params_->params())[95];
191  xcorr[10]=(params_->params())[96];
192  xcorr[11]=(params_->params())[97];
193  xcorr[12]=(params_->params())[98];
194  xcorr[13]=(params_->params())[99];
195 
196  par0[0] = (params_->params())[100];
197  par1[0] = (params_->params())[101];
198  par2[0] = (params_->params())[102];
199  par3[0] = (params_->params())[103];
200  par4[0] = (params_->params())[104];
201 
202  par0[1] = (params_->params())[105];
203  par1[1] = (params_->params())[106];
204  par2[1] = (params_->params())[107];
205  par3[1] = (params_->params())[108];
206  par4[1] = (params_->params())[109];
207 
208  par0[2] = (params_->params())[110];
209  par1[2] = (params_->params())[111];
210  par2[2] = (params_->params())[112];
211  par3[2] = (params_->params())[113];
212  par4[2] = (params_->params())[114];
213 
214  par0[3] = (params_->params())[115];
215  par1[3] = (params_->params())[116];
216  par2[3] = (params_->params())[117];
217  par3[3] = (params_->params())[118];
218  par4[3] = (params_->params())[119];
219 
220  par0[4] = (params_->params())[120];
221  par1[4] = (params_->params())[121];
222  par2[4] = (params_->params())[122];
223  par3[4] = (params_->params())[123];
224  par4[4] = (params_->params())[124];
225 
226  par0[5] = (params_->params())[125];
227  par1[5] = (params_->params())[126];
228  par2[5] = (params_->params())[127];
229  par3[5] = (params_->params())[128];
230  par4[5] = (params_->params())[129];
231 
232  par0[6] = (params_->params())[130];
233  par1[6] = (params_->params())[131];
234  par2[6] = (params_->params())[132];
235  par3[6] = (params_->params())[133];
236  par4[6] = (params_->params())[134];
237 
238  par0[7] = (params_->params())[135];
239  par1[7] = (params_->params())[136];
240  par2[7] = (params_->params())[137];
241  par3[7] = (params_->params())[138];
242  par4[7] = (params_->params())[139];
243 
244  par0[8] = (params_->params())[140];
245  par1[8] = (params_->params())[141];
246  par2[8] = (params_->params())[142];
247  par3[8] = (params_->params())[143];
248  par4[8] = (params_->params())[144];
249 
250  par0[9] = (params_->params())[145];
251  par1[9] = (params_->params())[146];
252  par2[9] = (params_->params())[147];
253  par3[9] = (params_->params())[148];
254  par4[9] = (params_->params())[149];
255 
256  par0[10] = (params_->params())[150];
257  par1[10] = (params_->params())[151];
258  par2[10] = (params_->params())[152];
259  par3[10] = (params_->params())[153];
260  par4[10] = (params_->params())[154];
261 
262  par0[11] = (params_->params())[155];
263  par1[11] = (params_->params())[156];
264  par2[11] = (params_->params())[157];
265  par3[11] = (params_->params())[158];
266  par4[11] = (params_->params())[159];
267 
268  par0[12] = (params_->params())[160];
269  par1[12] = (params_->params())[161];
270  par2[12] = (params_->params())[162];
271  par3[12] = (params_->params())[163];
272  par4[12] = (params_->params())[164];
273 
274  par0[13] = (params_->params())[165];
275  par1[13] = (params_->params())[166];
276  par2[13] = (params_->params())[167];
277  par3[13] = (params_->params())[168];
278  par4[13] = (params_->params())[169];
279 
280  sigmaPhiSigmaEtaFit = 1.;
281 
282  }
283 
284 
285 
286 
287  // Interpolation
288  float tmpInter = 1;
289  // In eta cracks/gaps
290  if (tmpEta == -1 ) { // need to interpolate
291  for (int iEta = 0; iEta < nBinsEta-1; ++iEta){
292  if (rightEta[iEta] <= TMath::Abs(eta) && TMath::Abs(eta) <leftEta[iEta+1] ){
293  if (sigmaPhiSigmaEta >= sigmaPhiSigmaEtaFit) {
294  if (algorithm==0){ //electron
295  tmpInter = ( par0[iEta] + sigmaPhiSigmaEta*par1[iEta] + sigmaPhiSigmaEta*sigmaPhiSigmaEta*par2[iEta] +
296  par0[iEta+1] + sigmaPhiSigmaEta*par1[iEta+1] + sigmaPhiSigmaEta*sigmaPhiSigmaEta*par2[iEta+1]) / 2. ;
297  }
298  if (algorithm==1){ //photon
299  tmpInter = (par0[iEta ]*(1.-exp(-(sigmaPhiSigmaEta-par4[iEta ])/par1[iEta ]))*par2[iEta ]*sigmaPhiSigmaEta + par3[iEta ]+
300  par0[iEta+1]*(1.-exp(-(sigmaPhiSigmaEta-par4[iEta+1])/par1[iEta+1]))*par2[iEta+1]*sigmaPhiSigmaEta + par3[iEta+1] ) /2.;
301  }
302  }
303  else tmpInter = (xcorr[iEta] + xcorr[iEta+1])/2.;
304  }
305  }
306  return tmpInter;
307  }
308 
309  if (sigmaPhiSigmaEta >= sigmaPhiSigmaEtaFit) {
310  if (algorithm==0) return par0[tmpEta] + sigmaPhiSigmaEta*par1[tmpEta] + sigmaPhiSigmaEta*sigmaPhiSigmaEta*par2[tmpEta];
311  if (algorithm==1) return par0[tmpEta ]*(1.-exp(-(sigmaPhiSigmaEta-par4[tmpEta ])/par1[tmpEta ]))*par2[tmpEta ]*sigmaPhiSigmaEta + par3[tmpEta ];
312  }
313  else return xcorr[tmpEta];
314 
315 
316 
317  return 1.;
318 }
319 
321 {
322 
323  float par0 = -1;
324  float par1 = -1;
325  float par2 = -1;
326  float par3 = -1;
327  float par4 = -1;
328  float par5 = -1;
329  float par6 = -1;
330 
331  if (algorithm==0){ //Electrons EB
332 
333  par0 = (params_->params())[170];
334  par1 = (params_->params())[171];
335  par2 = (params_->params())[172];
336  par3 = (params_->params())[173];
337  par4 = (params_->params())[174];
338  //assignments to 'par5'&'par6' have been deleted from here as they serve no purpose and cause dead assignment errors
339 
340  if (ET > 200) ET =200;
341  if ( ET < 5 ) return 1.;
342  if ( 5 <= ET && ET < 10 ) return par0 ;
343  if ( 10 <= ET && ET <= 200 ) return (par1 + ET*par2)*(1- par3*exp(ET/ par4));
344 
345  }
346 
347 
348  if (algorithm==1){ //Electrons EE
349 
350  par0 = (params_->params())[177];
351  par1 = (params_->params())[178];
352  par2 = (params_->params())[179];
353  par3 = (params_->params())[180];
354  par4 = (params_->params())[181];
355  //assignments to variables 'par5'&'par6' have been deleted from here as they serve no purpose and cause dead assignment errors
356 
357  if (ET > 200) ET =200;
358  if ( ET < 5 ) return 1.;
359  if ( 5 <= ET && ET < 10 ) return par0;
360  if ( 10 <= ET && ET <= 200 ) return ( par1 + ET*par2)*(1-par3*exp(ET/par4));
361 
362  }
363 
364 
365 
366  if (algorithm==2){ //Photons EB
367 
368  par0 = (params_->params())[184];
369  par1 = (params_->params())[185];
370  par2 = (params_->params())[186];
371  par3 = (params_->params())[187];
372  par4 = (params_->params())[188];
373  //assignments to 'par5'&'par6' have been deleted from here as they serve no purpose and cause dead assignment errors
374 
375  if ( ET < 5 ) return 1.;
376  if ( 5 <= ET && ET < 10 ) return par0 ;
377  if ( 10 <= ET && ET < 20 ) return par1 ;
378  if ( 20 <= ET && ET < 140 ) return par2 + par3*ET ;
379  if (140 <= ET ) return par4;
380 
381  }
382 
383 
384  if (algorithm==3){ //Photons EE
385 
386  par0 = (params_->params())[191];
387  par1 = (params_->params())[192];
388  par2 = (params_->params())[193];
389  par3 = (params_->params())[194];
390  par4 = (params_->params())[195];
391  par5 = (params_->params())[196];
392  par6 = (params_->params())[197];
393 
394  if ( ET < 5 ) return 1.;
395  if ( 5 <= ET && ET < 10 ) return par0 ;
396  if ( 10 <= ET && ET < 20 ) return par1 ;
397  if ( 20 <= ET && ET < 30 ) return par2 ;
398  if ( 30 <= ET && ET < 200 ) return par3 + par4 *ET + par5 *ET*ET ;
399  if ( 200 <= ET ) return par6 ;
400 
401  }
402 
403 
404  return 1.;
405 }
406 
407 
409 {
410 
411  float par0 = -1;
412  float par1 = -1;
413  float par2 = -1;
414  float par3 = -1;
415  float par4 = -1;
416 
417  if (algorithm==0){ //Electrons EB
418  return 1.;
419  }
420 
421 
422  if (algorithm==1){ //Electrons EE
423 
424  par0 = (params_->params())[198];
425  par1 = (params_->params())[199];
426  par2 = (params_->params())[200];
427  par3 = (params_->params())[201];
428  par4 = (params_->params())[202];
429 
430  if (E > par0) E =par0;
431  if ( E < 0 ) return 1.;
432  if ( 0 <= E && E <= par0 ) return (par1 + E*par2 )*(1- par3*exp(E/par4 ));
433 
434  }
435 
436 
437  if (algorithm==2){ //Photons EB
438  return 1.;
439  }
440 
441 
442  if (algorithm==3){ //Photons EE
443 
444  par0 = (params_->params())[203];
445  par1 = (params_->params())[204];
446  par2 = (params_->params())[205];
447  //assignments to 'par3'&'par4' have been deleted from here as they serve no purpose and cause dead assignment errors
448 
449  if (E > par0 ) E = par0 ;
450  if ( E < 0 ) return 1.;
451  if ( 0 <= E && E <= par0 ) return par1 + E*par2;
452 
453  }
454 
455  return 1.;
456 }
457 
458 
459 
461 {
462 
463  float corr = 1.;
464  float corr2 = 1.;
465  float energy = 0;
466 
467  int subdet = superCluster.seed()->hitsAndFractions()[0].first.subdetId();
468  //std::cout << "subdet="<< subdet<< std::endl;
469 
470  //std::cout << "rawEnergy=" << superCluster.rawEnergy() << " SCeta=" << superCluster.eta() << std::endl;
471 
472  if (subdet==EcalBarrel){
473  float cetacorr = fEta(superCluster.rawEnergy(), superCluster.eta(), 0)/superCluster.rawEnergy();
474  //std::cout << "cetacorr=" <<cetacorr<< std::endl;
475 
476  energy = superCluster.rawEnergy()*cetacorr; //previously in CMSSW
477  //energy = superCluster.rawEnergy()*fEta(e5x5, superCluster.seed()->eta(), 0)/e5x5;
478  }
479  else if (subdet==EcalEndcap){
480  energy = superCluster.rawEnergy()+superCluster.preshowerEnergy();
481  }
482 
483  float newEnergy = energy;
484 
485  if (mode==0){ //Electron
486 
487  corr = fBremEta(superCluster.phiWidth()/superCluster.etaWidth(), superCluster.eta(), 0);
488 
489  float et = energy*TMath::Sin(2*TMath::ATan(TMath::Exp(-superCluster.eta())))/corr;
490 
491  if (subdet==EcalBarrel) corr2 = corr * fEt(et, 0);
492  if (subdet==EcalEndcap) corr2 = corr * fEnergy(energy/corr, 1);
493 
494  newEnergy = energy/corr2;
495 
496  }
497 
498  if (mode==1){ //low R9 Photons
499 
500  corr = fBremEta(superCluster.phiWidth()/superCluster.etaWidth(), superCluster.eta(), 1);
501 
502  float et = energy*TMath::Sin(2*TMath::ATan(TMath::Exp(-superCluster.eta())))/corr;
503 
504  if (subdet==EcalBarrel) corr2 = corr * fEt(et, 2);
505  if (subdet==EcalEndcap) corr2 = corr * fEnergy(energy/corr, 3);
506 
507  newEnergy = energy/corr2;
508 
509  }
510 
511 
512 
513  return newEnergy;
514 }
515 
516 /*
517 float EcalClusterEnergyCorrectionObjectSpecific::getValue( const reco::GsfElectron & electron, const int mode) const
518 {
519 
520  return getValue(*(electron.superCluster()), 0);
521 }
522 */
523  /*
524 float EcalClusterEnergyCorrectionObjectSpecific::getValue( const reco::Photon & photon, const int mode) const
525 {
526 
527  float corr = 1.;
528  float corr2 = 1.;
529  float energy = 0;
530 
531  int subdet = photon.superCluster()->seed()->hitsAndFractions()[0].first.subdetId();
532 
533  float cetacorr = fEta(photon.superCluster()->rawEnergy(), photon.superCluster()->eta(), 0)/photon.superCluster()->rawEnergy();
534 
535  if (subdet==EcalBarrel){
536  energy = photon.superCluster()->rawEnergy()*cetacorr; //previously in CMSSW
537  //energy = superCluster.rawEnergy()*fEta(e5x5, superCluster.seed()->eta(), 0)/e5x5;
538  }
539  else if (subdet==EcalEndcap){
540  energy = photon.superCluster()->rawEnergy()+photon.superCluster()->preshowerEnergy();
541  }
542 
543  float r9 = photon.r9();
544  float e5x5 = photon.e5x5();
545 
546  //float e3x3 = EcalClusterTools::e3x3( *(superCluster.seed()), &(*hits), &(*topology));
547  //float e5x5 = EcalClusterTools::e5x5( *(superCluster.seed()), &(*hits), &(*topology));
548  //float r9 = e3x3/(superCluster.rawEnergy());
549 
550  float R9min;
551  if (subdet==EcalBarrel) R9min=0.94;
552  if (subdet==EcalEndcap) R9min=0.95;
553 
554  float newEnergy = energy;
555 
556  if (r9<R9min){
557 
558  corr = fBremEta(photon.superCluster()->phiWidth()/photon.superCluster()->etaWidth(), photon.superCluster()->eta(), 1);
559 
560  float et = energy*TMath::Sin(2*TMath::ATan(TMath::Exp(-photon.superCluster()->eta())))/corr;
561 
562  if (subdet==EcalBarrel) corr2 = corr * fEt(et, 2);
563  if (subdet==EcalEndcap) corr2 = corr * fEnergy(et, 3);
564 
565  newEnergy = energy/corr2;
566 
567  }
568  if (r9>R9min){
569 
570  //if uncorrected
571  //if (subdet==EcalBarrel) newEnergy = e5x5*cetacorr;
572  //if (subdet==EcalEndcap) newEnergy = e5x5 + superCluster.preshowerEnergy();
573 
574  //already corrected
575  newEnergy = e5x5;
576 
577  }
578 
579  return newEnergy;
580 
581 }
582  */
583 
584 
586 DEFINE_EDM_PLUGIN( EcalClusterFunctionFactory, EcalClusterEnergyCorrectionObjectSpecific, "EcalClusterEnergyCorrectionObjectSpecific");
double phiWidth() const
obtain phi and eta width of the Super Cluster
Definition: SuperCluster.h:55
double eta() const
pseudorapidity of cluster centroid
Definition: CaloCluster.h:168
double etaWidth() const
Definition: SuperCluster.h:56
T Abs(T a)
Definition: MathUtil.h:49
EcalFunctionParameters & params()
JetCorrectorParameters corr
Definition: classes.h:5
const EcalClusterEnergyCorrectionObjectSpecificParameters * params_
double rawEnergy() const
raw uncorrected energy (sum of energies of component BasicClusters)
Definition: SuperCluster.h:47
et
define resolution functions of each parameter
float getValue(const reco::SuperCluster &, const int mode) const override
double p1[4]
Definition: TauolaWrapper.h:89
float fBremEta(float sigmaPhiSigmaEta, float eta, int algorithm) const
#define DEFINE_EDM_PLUGIN(factory, type, name)
#define ET
const CaloClusterPtr & seed() const
seed BasicCluster
Definition: SuperCluster.h:66
double preshowerEnergy() const
energy deposited in preshower
Definition: SuperCluster.h:50
float fEta(float energy, float eta, int algorithm) const