]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - PWGLF/totEt/AliAnalysisEtReconstructedEmcal.cxx
Merge branch 'feature-movesplit'
[u/mrichter/AliRoot.git] / PWGLF / totEt / AliAnalysisEtReconstructedEmcal.cxx
index 98c6ce8e1491ea0ec2fe3b6381d1465885506faa..939d2f750e1c2d44aaa53dc58e40956866e14999 100644 (file)
@@ -8,7 +8,9 @@
 //_________________________________________________________________________
 #include "AliAnalysisEtReconstructedEmcal.h"
 #include "AliAnalysisEtCuts.h"
+#include "AliAnalysisEtSelectorEmcal.h"
 #include "AliESDtrack.h"
+#include "AliAnalysisEtRecEffCorrection.h"
 
 using namespace std;
 
@@ -33,9 +35,58 @@ void AliAnalysisEtReconstructedEmcal::Init()
   fDetectorRadius = fCuts->GetGeometryEmcalDetectorRadius();
   fSingleCellEnergyCut = fCuts->GetReconstructedEmcalSingleCellEnergyCut();
 
+  fSelector = new AliAnalysisEtSelectorEmcal(fCuts);
 }
 
 bool AliAnalysisEtReconstructedEmcal::TrackHitsCalorimeter(AliVParticle* track, Double_t magField)
 {
   return  AliAnalysisEtReconstructed::TrackHitsCalorimeter(track, magField);
 }
+
+void AliAnalysisEtReconstructedEmcal::CreateHistograms()
+{ // add some extra histograms & objects to the ones from base class
+  if(!fSelector){
+    cout<<__FILE__<<" "<<"Creating new fSelector"<<endl;
+    fSelector = new AliAnalysisEtSelectorEmcal(fCuts);
+  }
+  AliAnalysisEtReconstructed::CreateHistograms();
+}
+
+
+Double_t AliAnalysisEtReconstructedEmcal::GetCorrectionModification(const AliESDCaloCluster& cluster,Int_t nonLinCorr, Int_t effCorr, Int_t cent){//nonLinCorr 0 = nominal 1 = high -1 = low, effCorr  0 = nominal 1 = high -1 = low
+  Double_t factor = 1.0;
+  Double_t E = fReCorrections->CorrectedEnergy(cluster.E(),cent);
+  if(nonLinCorr!=0){
+    Double_t p0 = 9.90780e-01;
+    Double_t p1 = 1.61503e-01;
+    Double_t p2 = 6.55150e-01;
+    Double_t p3 = 1.34100e-01;
+    Double_t p4 = 1.63282e+02;
+    Double_t p5 = 2.36902e+01;
+    Double_t nominal = p0*(1./(1.+p1*TMath::Exp(-E/p2))*1./(1.+p3*TMath::Exp((E-p4)/p5)));
+    Double_t alt = 1;
+    if(nonLinCorr==1){//high bound on nonlinearity
+      p0 = .984;
+      p1 = 0.42;
+      p2 = 0.35;
+      alt = (p0)*1./(1.+p1*TMath::Exp(-E/p2));
+    }
+    else{//nonLinCorr==-1
+      p0 = .992;
+      p1 =0.115;
+      p2 = 0.68;
+      alt = (p0)*1./(1.+p1*TMath::Exp(-E/p2));
+    }
+    factor *=alt/nominal;
+  }
+  if(effCorr!=0){
+    if(effCorr==1){//high bound
+      factor *=1.02;
+    }
+    else{//low bound
+      factor *=0.98;
+    }
+  }
+  //cout<<"Factor:  "<<factor<<endl;
+  return factor;
+}