14 if ( algorithm != 0 )
return energy;
16 float ieta = fabs(eta)*(5/0.087);
22 float correctedEnergy = energy;
23 if ( ieta < p0 ) correctedEnergy = energy;
24 else correctedEnergy = energy/(1.0 + p1*(ieta-p0)*(ieta-p0));
26 return correctedEnergy;
32 const float etaCrackMin = 1.44;
33 const float etaCrackMax = 1.56;
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 };
40 float xcorr[nBinsEta];
48 float sigmaPhiSigmaEtaMin = 0.8;
49 float sigmaPhiSigmaEtaMax = 5.;
51 float sigmaPhiSigmaEtaFit = -1;
55 if (sigmaPhiSigmaEta < sigmaPhiSigmaEtaMin) sigmaPhiSigmaEta = sigmaPhiSigmaEtaMin;
56 if (sigmaPhiSigmaEta > sigmaPhiSigmaEtaMax ) sigmaPhiSigmaEta = sigmaPhiSigmaEtaMax;
59 if (
TMath::Abs(eta) < leftEta[0] ) { eta = 0.02 ; }
61 if (
TMath::Abs(eta) >= rightEta[nBinsEta-1] ) { eta = 2.49; }
64 for (
int iEta = 0; iEta < nBinsEta; ++iEta){
174 sigmaPhiSigmaEtaFit = 1.2;
280 sigmaPhiSigmaEtaFit = 1.;
291 for (
int iEta = 0; iEta < nBinsEta-1; ++iEta){
293 if (sigmaPhiSigmaEta >= sigmaPhiSigmaEtaFit) {
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. ;
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.;
303 else tmpInter = (xcorr[iEta] + xcorr[iEta+1])/2.;
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 ];
313 else return xcorr[tmpEta];
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));
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));
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;
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 ;
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 ));
449 if (E > par0 ) E =
par0 ;
450 if ( E < 0 )
return 1.;
451 if ( 0 <= E && E <= par0 )
return par1 + E*par2;
467 int subdet = superCluster.
seed()->hitsAndFractions()[0].first.subdetId();
476 energy = superCluster.
rawEnergy()*cetacorr;
483 float newEnergy = energy;
489 float et = energy*TMath::Sin(2*TMath::ATan(TMath::Exp(-superCluster.
eta())))/corr;
494 newEnergy = energy/corr2;
502 float et = energy*TMath::Sin(2*TMath::ATan(TMath::Exp(-superCluster.
eta())))/corr;
507 newEnergy = energy/corr2;
double phiWidth() const
obtain phi and eta width of the Super Cluster
double eta() const
pseudorapidity of cluster centroid
float fEt(float et, int algorithm) const
EcalFunctionParameters & params()
const EcalClusterEnergyCorrectionObjectSpecificParameters * params_
float fEnergy(float e, int algorithm) const
double rawEnergy() const
raw uncorrected energy (sum of energies of component BasicClusters)
et
define resolution functions of each parameter
float getValue(const reco::SuperCluster &, const int mode) const override
float fBremEta(float sigmaPhiSigmaEta, float eta, int algorithm) const
#define DEFINE_EDM_PLUGIN(factory, type, name)
const CaloClusterPtr & seed() const
seed BasicCluster
double preshowerEnergy() const
energy deposited in preshower
float fEta(float energy, float eta, int algorithm) const