]> git.uio.no Git - u/mrichter/AliRoot.git/blame - PWGLF/totEt/AliAnalysisEtRecEffCorrection.cxx
New MFT analysis tools
[u/mrichter/AliRoot.git] / PWGLF / totEt / AliAnalysisEtRecEffCorrection.cxx
CommitLineData
b2c10007 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
11ClassImp(AliAnalysisEtRecEffCorrection);
12
13AliAnalysisEtRecEffCorrection::AliAnalysisEtRecEffCorrection() : TNamed("RecEff","RecEff")
02c62614 14 ,fEnergyCorrection(new TF1())//"ReCorr","1",0.01)
6a152780 15 ,fRecoEff(0)
b2c10007 16 ,fMaxEnergy(0)
4503e29d 17{
02c62614 18 fEnergyCorrection->SetName("ReCorr");
4503e29d 19}
b2c10007 20
5bd9e7c8 21AliAnalysisEtRecEffCorrection::AliAnalysisEtRecEffCorrection(TString name, const TF1 &correction,const TH2F &recoEff, Double_t maxEnergy) : TNamed(name, name)
6a152780 22 ,fEnergyCorrection(new TF1(correction)) ,fRecoEff(new TH2F(recoEff))
b2c10007 23 ,fMaxEnergy(maxEnergy)
24{}
25
26//! Copy constructor
27AliAnalysisEtRecEffCorrection::AliAnalysisEtRecEffCorrection(const AliAnalysisEtRecEffCorrection &obj) : TNamed(obj)
02c62614 28 ,fEnergyCorrection(new TF1(*(obj.fEnergyCorrection)))
6a152780 29 ,fRecoEff(new TH2F(*(obj.fRecoEff)))
b2c10007 30 ,fMaxEnergy(obj.fMaxEnergy)
31{}
32
33//! Destructor
34AliAnalysisEtRecEffCorrection::~AliAnalysisEtRecEffCorrection()
4503e29d 35{
36}
b2c10007 37
38//! Assignment operator
39AliAnalysisEtRecEffCorrection& AliAnalysisEtRecEffCorrection::operator=(const AliAnalysisEtRecEffCorrection &other)
40{
41 if (this != &other)
42 {
43 fEnergyCorrection = other.fEnergyCorrection;
6a152780 44 fRecoEff = other.fRecoEff;
b2c10007 45 fMaxEnergy = other.fMaxEnergy;
46 }
47 return *this;
48}
49
50//! Equality operator
51bool AliAnalysisEtRecEffCorrection::operator==(const AliAnalysisEtRecEffCorrection &other) const
52{
53 if (this == &other) return true;
54 return false;
4503e29d 55 //return (fMaxEnergy == other.fMaxEnergy && fEnergyCorrection == other.fEnergyCorrection);
b2c10007 56}
57
58Double_t AliAnalysisEtRecEffCorrection::CorrectedEnergy(Double_t energy)
59{
02c62614 60 return fEnergyCorrection->Eval(energy);
b2c10007 61
62}
31c813d5 63Double_t AliAnalysisEtRecEffCorrection::CorrectedEnergy(Double_t energy, int cent)
47151f26 64{
ac610b08 65 if(fRecoEff){
31c813d5 66 Double_t eff = ReconstructionEfficiency(energy, cent);
d58833d3 67 if(eff>1e-5) return 1.0/eff*energy;
ac610b08 68 }
43dd5a38 69 //cerr<<"Warning: I should not be here!"<<endl;
47151f26 70 return 1.0;
71
72}
73
31c813d5 74Double_t AliAnalysisEtRecEffCorrection::ReconstructionEfficiency(float energy, int cent) const {
47151f26 75 Double_t eff = 1.0;
43dd5a38 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;
47151f26 78 return eff;
79}