]>
Commit | Line | Data |
---|---|---|
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, const 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 | } |