]> git.uio.no Git - u/mrichter/AliRoot.git/blob - PWGLF/totEt/AliAnalysisEtRecEffCorrection.cxx
Merge branch 'feature-movesplit'
[u/mrichter/AliRoot.git] / PWGLF / totEt / AliAnalysisEtRecEffCorrection.cxx
1 //_________________________________________________________________________
2 //  Utility Class for transverse energy studies
3 //  Selection class for EMCAL
4 //
5 //*-- Authors: Oystein Djuvsland (Bergen)
6 //_________________________________________________________________________
7
8
9 #include "AliAnalysisEtRecEffCorrection.h"
10
11 ClassImp(AliAnalysisEtRecEffCorrection);
12
13 AliAnalysisEtRecEffCorrection::AliAnalysisEtRecEffCorrection() : TNamed("RecEff","RecEff")
14                                                                ,fEnergyCorrection(new TF1())//"ReCorr","1",0.01)
15                                                                          ,fRecoEff(0)
16     ,fMaxEnergy(0)
17 {
18   fEnergyCorrection->SetName("ReCorr");
19 }
20
21 AliAnalysisEtRecEffCorrection::AliAnalysisEtRecEffCorrection(TString name, const TF1 &correction,const TH2F &recoEff, Double_t maxEnergy) : TNamed(name, name)
22     ,fEnergyCorrection(new TF1(correction))                                                                                     ,fRecoEff(new TH2F(recoEff))
23     ,fMaxEnergy(maxEnergy)
24 {}
25
26 //! Copy constructor
27 AliAnalysisEtRecEffCorrection::AliAnalysisEtRecEffCorrection(const AliAnalysisEtRecEffCorrection &obj) : TNamed(obj)
28     ,fEnergyCorrection(new TF1(*(obj.fEnergyCorrection)))
29     ,fRecoEff(new TH2F(*(obj.fRecoEff)))
30     ,fMaxEnergy(obj.fMaxEnergy)
31 {}
32
33 //! Destructor
34 AliAnalysisEtRecEffCorrection::~AliAnalysisEtRecEffCorrection()
35 {
36 }
37
38 //! Assignment operator
39 AliAnalysisEtRecEffCorrection& AliAnalysisEtRecEffCorrection::operator=(const AliAnalysisEtRecEffCorrection &other)
40 {
41     if (this != &other)
42     {
43         fEnergyCorrection = other.fEnergyCorrection;
44         fRecoEff = other.fRecoEff;
45         fMaxEnergy = other.fMaxEnergy;
46     }
47     return *this;
48 }
49
50 //! Equality operator
51 bool AliAnalysisEtRecEffCorrection::operator==(const AliAnalysisEtRecEffCorrection &other) const
52 {
53     if (this == &other) return true;
54     return false;
55     //return (fMaxEnergy == other.fMaxEnergy && fEnergyCorrection == other.fEnergyCorrection);
56 }
57
58 Double_t AliAnalysisEtRecEffCorrection::CorrectedEnergy(Double_t energy)
59 {
60   return fEnergyCorrection->Eval(energy);
61   
62 }
63 Double_t AliAnalysisEtRecEffCorrection::CorrectedEnergy(Double_t energy, int cent)
64 {
65   if(fRecoEff){
66     Double_t eff = ReconstructionEfficiency(energy, cent);
67     if(eff>1e-5) return 1.0/eff*energy;
68   }
69   //cerr<<"Warning:  I should not be here!"<<endl;
70   return 1.0;
71   
72 }
73
74 Double_t AliAnalysisEtRecEffCorrection::ReconstructionEfficiency(float energy, int cent) const {
75   Double_t eff = 1.0;
76   if(fRecoEff) eff =  fRecoEff->GetBinContent(fRecoEff->GetXaxis()->FindBin(energy),fRecoEff->GetYaxis()->FindBin(cent));
77   //cout <<"eff "<<eff<<" bin energy "<<fRecoEff->GetXaxis()->FindBin(energy)<<" bin centrality "<<fRecoEff->GetYaxis()->FindBin(cent)<<endl;
78   return eff;
79 }