1 //Created by Christine Nattrass, Rebecca Scott, Irakli Martashvili
2 //University of Tennessee at Knoxville
3 // This is a container class for the correction factors for the hadronic
4 // component of transverse energy
5 // It is filled by the output of AliAnalysisTaskHadEt from spinning over Monte
6 // Carlo data (using AliAnalysisHadEtMonteCarlo)
7 //It is used by AliAnalysisTaskHadEt while spinning over reconstructed data
8 // (using AliAnalysisHadEtReconstructed)
9 //Please see https://twiki.cern.ch/twiki/bin/view/ALICE/ETCaloAnalysis
10 #include "AliAnalysisHadEtCorrections.h"
18 ClassImp(AliAnalysisHadEtCorrections);
21 AliAnalysisHadEtCorrections::AliAnalysisHadEtCorrections() : TNamed(),
23 ,fAcceptanceCorrectionFull(0)
24 ,fAcceptanceCorrectionEMCAL(0)
25 ,fAcceptanceCorrectionPHOS(0)
26 ,fNeutralCorrection(0)
27 ,fNotHadronicCorrection(0)
28 ,fpTcutCorrectionTPC(0)
29 ,fpTcutCorrectionITS(0)
30 ,fNeutralCorrectionLow(0)
31 ,fNotHadronicCorrectionLow(0)
32 ,ffpTcutCorrectionTPCLow(0)
33 ,ffpTcutCorrectionITSLow(0)
34 ,fNeutralCorrectionHigh(0)
35 ,fNotHadronicCorrectionHigh(0)
36 ,ffpTcutCorrectionTPCHigh(0)
37 ,ffpTcutCorrectionITSHigh(0)
41 ,fEfficiencyPionTPC(0)
42 ,fEfficiencyKaonTPC(0)
43 ,fEfficiencyProtonTPC(0)
44 ,fEfficiencyHadronTPC(0)
45 ,fEfficiencyPionITS(0)
46 ,fEfficiencyKaonITS(0)
47 ,fEfficiencyProtonITS(0)
48 ,fEfficiencyHadronITS(0)
51 {//default constructor
52 //This seems to solve a compiler error
53 cout<<"Creating new AliAnalysisHadEtCorrections"<<endl;
56 AliAnalysisHadEtCorrections::~AliAnalysisHadEtCorrections()
62 fEfficiencyPionTPC->Clear();
63 fEfficiencyKaonTPC->Clear();
64 fEfficiencyProtonTPC->Clear();
65 fEfficiencyHadronTPC->Clear();
66 fEfficiencyPionITS->Clear();
67 fEfficiencyKaonITS->Clear();
68 fEfficiencyProtonITS->Clear();
69 fEfficiencyHadronITS->Clear();
70 fBackgroundTPC->Clear();
71 fBackgroundITS->Clear();
75 delete fEfficiencyPionTPC;
76 delete fEfficiencyKaonTPC;
77 delete fEfficiencyProtonTPC;
78 delete fEfficiencyHadronTPC;
79 delete fEfficiencyPionITS;
80 delete fEfficiencyKaonITS;
81 delete fEfficiencyProtonITS;
82 delete fEfficiencyHadronITS;
83 delete fBackgroundTPC;
84 delete fBackgroundITS;
86 AliAnalysisHadEtCorrections::AliAnalysisHadEtCorrections(const AliAnalysisHadEtCorrections *g): TNamed(),
88 ,fAcceptanceCorrectionFull(g->fAcceptanceCorrectionFull)
89 ,fAcceptanceCorrectionEMCAL(g->fAcceptanceCorrectionEMCAL)
90 ,fAcceptanceCorrectionPHOS(g->fAcceptanceCorrectionPHOS)
91 ,fNeutralCorrection(g->fNeutralCorrection)
92 ,fNotHadronicCorrection(g->fNotHadronicCorrection)
93 ,fpTcutCorrectionTPC(g->fpTcutCorrectionTPC)
94 ,fpTcutCorrectionITS(g->fpTcutCorrectionITS)
95 ,fNeutralCorrectionLow(g->fNeutralCorrectionLow)
96 ,fNotHadronicCorrectionLow(g->fNotHadronicCorrectionLow)
97 ,ffpTcutCorrectionTPCLow(g->ffpTcutCorrectionTPCLow)
98 ,ffpTcutCorrectionITSLow(g->ffpTcutCorrectionITSLow)
99 ,fNeutralCorrectionHigh(g->fNeutralCorrectionHigh)
100 ,fNotHadronicCorrectionHigh(g->fNotHadronicCorrectionHigh)
101 ,ffpTcutCorrectionTPCHigh(g->ffpTcutCorrectionTPCHigh)
102 ,ffpTcutCorrectionITSHigh(g->ffpTcutCorrectionITSHigh)
106 ,fEfficiencyPionTPC(0)
107 ,fEfficiencyKaonTPC(0)
108 ,fEfficiencyProtonTPC(0)
109 ,fEfficiencyHadronTPC(0)
110 ,fEfficiencyPionITS(0)
111 ,fEfficiencyKaonITS(0)
112 ,fEfficiencyProtonITS(0)
113 ,fEfficiencyHadronITS(0)
117 //SetName(g->GetName());
118 fnotIDTPC = new TH1D(*(g->fnotIDTPC));
119 fnotIDITS = new TH1D(*(g->fnotIDITS));
120 fnotIDNoID = new TH1D(*(g->fnotIDNoID));
121 fEfficiencyPionTPC = new TH1D(*(g->fEfficiencyPionTPC));
122 fEfficiencyKaonTPC = new TH1D(*(g->fEfficiencyKaonTPC));
123 fEfficiencyProtonTPC = new TH1D(*(g->fEfficiencyProtonTPC));
124 fEfficiencyHadronTPC = new TH1D(*(g->fEfficiencyHadronTPC));
125 fEfficiencyPionITS = new TH1D(*(g->fEfficiencyPionITS));
126 fEfficiencyKaonITS = new TH1D(*(g->fEfficiencyKaonITS));
127 fEfficiencyProtonITS = new TH1D(*(g->fEfficiencyProtonITS));
128 fEfficiencyHadronITS = new TH1D(*(g->fEfficiencyHadronITS));
129 fBackgroundTPC = new TH1D(*(g->fBackgroundTPC));
130 fBackgroundITS = new TH1D(*(g->fBackgroundITS));
134 Float_t AliAnalysisHadEtCorrections::GetConstantCorrections(Bool_t totEt, Float_t ptcut, TString type){
135 Float_t acceptance = 0.0;
136 Float_t neutral = 0.0;
137 Float_t ptcorr = 0.0;
138 float correction = 0.0;
140 //TString *type = new TString(mytype);
142 if(type.Contains("Full")) acceptance = fAcceptanceCorrectionFull;
143 if(type.Contains("EMCAL")) acceptance = fAcceptanceCorrectionEMCAL;
144 if(type.Contains("PHOS")) acceptance = fAcceptanceCorrectionPHOS;
146 if(type.Contains("High")){//high bound
147 if(totEt) neutral = fNotHadronicCorrectionHigh;
148 else{neutral = fNeutralCorrectionHigh;}
149 if(ptcut>0.12){ptcorr = ffpTcutCorrectionTPCHigh;}
150 else{ptcorr = ffpTcutCorrectionITSHigh;}
151 cout<<"Setting correction factor to "<<correction<<endl;
154 if(type.Contains("Low")){//high bound
155 if(totEt) neutral = fNotHadronicCorrectionLow;
156 else{neutral = fNeutralCorrectionLow;}
157 if(ptcut>0.12){ptcorr = ffpTcutCorrectionTPCLow;}
158 else{ptcorr = ffpTcutCorrectionITSLow;}
159 cout<<"Setting correction factor to "<<correction<<endl;
163 if(totEt) neutral = fNotHadronicCorrection;
164 else{neutral = fNeutralCorrection;}
165 if(ptcut>0.12){ptcorr = fpTcutCorrectionTPC;}
166 else{ptcorr = fpTcutCorrectionITS;}
168 correction = acceptance*neutral*ptcorr;
169 cout<<"Setting correction factor for ";
170 if(totEt) cout<<"total et";
171 else{cout<<"hadronic et";}
172 cout<<" with the pt cut off "<<ptcut<<" for "<<type<<" acceptance to "<<correction<<endl;
173 //cout<<"Acceptance "<<acceptance<<" neutral "<<neutral<<" ptcorr "<<ptcorr<<endl;
177 // AliAnalysisHadEtCorrections & operator = (const AliAnalysisHadEtCorrections & g) {
179 // fEtaCut=g->fEtaCut;
180 // fAcceptanceCorrectionFull=g->fAcceptanceCorrectionFull;
181 // fAcceptanceCorrectionEMCAL=g->fAcceptanceCorrectionEMCAL;
182 // fAcceptanceCorrectionPHOS=g->fAcceptanceCorrectionPHOS;
183 // fNeutralCorrection=g->fNeutralCorrection;
184 // fNotHadronicCorrection=g->fNotHadronicCorrection;
185 // fpTcutCorrectionTPC=g->fpTcutCorrectionTPC;
186 // fpTcutCorrectionITS=g->fpTcutCorrectionITS;
187 // fNeutralCorrectionLow=g->fNeutralCorrectionLow;
188 // fNotHadronicCorrectionLow=g->fNotHadronicCorrectionLow;
189 // ffpTcutCorrectionTPCLow=g->ffpTcutCorrectionTPCLow;
190 // ffpTcutCorrectionITSLow=g->ffpTcutCorrectionITSLow;
191 // fNeutralCorrectionHigh=g->fNeutralCorrectionHigh;
192 // fNotHadronicCorrectionHigh=g->fNotHadronicCorrectionHigh;
193 // ffpTcutCorrectionTPCHigh=g->ffpTcutCorrectionTPCHigh;
194 // ffpTcutCorrectionITSHigh=g->ffpTcutCorrectionITSHigh;
196 // fnotIDTPC = g->fnotIDTPC;
197 // fnotIDITS = g->fnotIDITS;
198 // fnotIDNoID = g->fnotIDNoID;
199 // fEfficiencyPionTPC = g->fEfficiencyPionTPC;
200 // fEfficiencyKaonTPC = g->fEfficiencyKaonTPC;
201 // fEfficiencyProtonTPC = g->fEfficiencyProtonTPC;
202 // fEfficiencyHadronTPC = g->fEfficiencyHadronTPC;
203 // fEfficiencyPionITS = g->fEfficiencyPionITS;
204 // fEfficiencyKaonITS = g->fEfficiencyKaonITS;
205 // fEfficiencyProtonITS = g->fEfficiencyProtonITS;
206 // fEfficiencyHadronITS = g->fEfficiencyHadronITS;
207 // fBackgroundTPC = g->fBackgroundTPC;
208 // fBackgroundITS = g->fBackgroundITS;
210 Float_t AliAnalysisHadEtCorrections::GetTPCEfficiencyCorrectionPion(const float pT){
211 if(!fEfficiencyPionTPC){cerr<<"No histogram fEfficiencyPionTPC!"<<endl; return -1.0;}
212 float eff = fEfficiencyPionTPC->GetBinContent(fEfficiencyPionTPC->FindBin(pT));
213 if(eff<=0.0){cerr<<"Efficiency is zero!"<<endl; return 0.0;}
216 Float_t AliAnalysisHadEtCorrections::GetTPCEfficiencyCorrectionKaon(const float pT){
217 if(!fEfficiencyKaonTPC){cerr<<"No histogram fEfficiencyKaonTPC!"<<endl; return -1.0;}
218 float eff = fEfficiencyKaonTPC->GetBinContent(fEfficiencyKaonTPC->FindBin(pT));
219 if(eff<=0.0){cerr<<"Efficiency is zero!"<<endl; return 0.0;}
222 Float_t AliAnalysisHadEtCorrections::GetTPCEfficiencyCorrectionProton(const float pT){
223 if(!fEfficiencyProtonTPC){cerr<<"No histogram fEfficiencyProtonTPC!"<<endl; return -1.0;}
224 float eff = fEfficiencyProtonTPC->GetBinContent(fEfficiencyProtonTPC->FindBin(pT));
225 if(eff<=0.0){cerr<<"Efficiency is zero!"<<endl; return 0.0;}
228 Float_t AliAnalysisHadEtCorrections::GetTPCEfficiencyCorrectionHadron(const float pT){
229 if(!fEfficiencyHadronTPC){cerr<<"No histogram fEfficiencyHadronTPC!"<<endl; return -1.0;}
230 float eff = fEfficiencyHadronTPC->GetBinContent(fEfficiencyHadronTPC->FindBin(pT));
231 if(eff<=0.0){cerr<<"Efficiency is zero!"<<endl; return 0.0;}
234 Float_t AliAnalysisHadEtCorrections::GetITSEfficiencyCorrectionPion(const float pT){
235 if(!fEfficiencyPionITS){cerr<<"No histogram fEfficiencyPionITS!"<<endl; return -1.0;}
236 float eff = fEfficiencyPionITS->GetBinContent(fEfficiencyPionITS->FindBin(pT));
237 if(eff<=0.0){cerr<<"Efficiency is zero!"<<endl; return 0.0;}
240 Float_t AliAnalysisHadEtCorrections::GetITSEfficiencyCorrectionKaon(const float pT){
241 if(!fEfficiencyKaonITS){cerr<<"No histogram fEfficiencyKaonITS!"<<endl; return -1.0;}
242 float eff = fEfficiencyKaonITS->GetBinContent(fEfficiencyKaonITS->FindBin(pT));
243 if(eff<=0.0){cerr<<"Efficiency is zero!"<<endl; return 0.0;}
246 Float_t AliAnalysisHadEtCorrections::GetITSEfficiencyCorrectionProton(const float pT){
247 if(!fEfficiencyProtonITS){cerr<<"No histogram fEfficiencyProtonITS!"<<endl; return -1.0;}
248 float eff = fEfficiencyProtonITS->GetBinContent(fEfficiencyProtonITS->FindBin(pT));
249 if(eff<=0.0){cerr<<"Efficiency is zero!"<<endl; return 0.0;}
252 Float_t AliAnalysisHadEtCorrections::GetITSEfficiencyCorrectionHadron(const float pT){
253 if(!fEfficiencyHadronITS){cerr<<"No histogram fEfficiencyHadronITS!"<<endl; return -1.0;}
254 float eff = fEfficiencyHadronITS->GetBinContent(fEfficiencyHadronITS->FindBin(pT));
255 if(eff<=0.0){cerr<<"Efficiency is zero!"<<endl; return 0.0;}