1 //_________________________________________________________________________
2 // Utility Class for transverse energy studies, charged hadrons
3 // Base class for ESD analysis
4 // - reconstruction output
7 //Created by Christine Nattrass, Rebecca Scott, Irakli Martashvili
8 //University of Tennessee at Knoxville
9 //_________________________________________________________________________
13 #include <TInterpreter.h>
14 #include "AliAnalysisHadEtReconstructed.h"
15 #include "AliAnalysisEtCuts.h"
16 #include "AliESDtrack.h"
17 #include "AliESDCaloCluster.h"
18 #include "AliVEvent.h"
19 #include "AliESDEvent.h"
20 #include "AliESDtrackCuts.h"
21 #include "AliESDpid.h"
22 #include "AliVParticle.h"
24 #include "AliAnalysisHadEtCorrections.h"
27 #include "AliAnalysisEtCommon.h"
28 #include "AliAnalysisHadEt.h"
32 ClassImp(AliAnalysisHadEtReconstructed);
35 AliAnalysisHadEtReconstructed::AliAnalysisHadEtReconstructed() :
38 ,fConfigFile("ConfigHadEtAnalysis.C")
39 ,fCorrTotEtFullAcceptanceTPC(0)
40 ,fCorrTotEtFullAcceptanceITS(0)
41 ,fCorrHadEtFullAcceptanceTPC(0)
42 ,fCorrHadEtFullAcceptanceITS(0)
43 ,fCorrTotEtEMCALAcceptanceTPC(0)
44 ,fCorrTotEtEMCALAcceptanceITS(0)
45 ,fCorrHadEtEMCALAcceptanceTPC(0)
46 ,fCorrHadEtEMCALAcceptanceITS(0)
47 ,fCorrTotEtPHOSAcceptanceTPC(0)
48 ,fCorrTotEtPHOSAcceptanceITS(0)
49 ,fCorrHadEtPHOSAcceptanceTPC(0)
50 ,fCorrHadEtPHOSAcceptanceITS(0)
51 ,fCorrectedHadEtFullAcceptanceTPCNoPID(0)
52 ,fCorrectedHadEtFullAcceptanceITSNoPID(0)
53 ,fCorrectedHadEtEMCALAcceptanceTPCNoPID(0)
54 ,fCorrectedHadEtEMCALAcceptanceITSNoPID(0)
55 ,fCorrectedHadEtPHOSAcceptanceTPCNoPID(0)
56 ,fCorrectedHadEtPHOSAcceptanceITSNoPID(0)
57 ,fCorrectedHadEtFullAcceptanceTPC(0)
58 ,fCorrectedHadEtFullAcceptanceITS(0)
59 ,fCorrectedHadEtFullAcceptanceTPCAssumingPion(0)
60 ,fCorrectedHadEtFullAcceptanceITSAssumingPion(0)
61 ,fCorrectedHadEtFullAcceptanceTPCAssumingProton(0)
62 ,fCorrectedHadEtFullAcceptanceITSAssumingProton(0)
63 ,fCorrectedHadEtFullAcceptanceTPCAssumingKaon(0)
64 ,fCorrectedHadEtFullAcceptanceITSAssumingKaon(0)
65 ,fCorrectedHadEtEMCALAcceptanceTPC(0)
66 ,fCorrectedHadEtEMCALAcceptanceITS(0)
67 ,fCorrectedHadEtPHOSAcceptanceTPC(0)
68 ,fCorrectedHadEtPHOSAcceptanceITS(0)
69 ,fRawEtFullAcceptanceTPC(0)
70 ,fRawEtFullAcceptanceITS(0)
71 ,fRawEtEMCALAcceptanceTPC(0)
72 ,fRawEtEMCALAcceptanceITS(0)
73 ,fRawEtPHOSAcceptanceTPC(0)
74 ,fRawEtPHOSAcceptanceITS(0)
75 ,fRawEtFullAcceptanceTPCNoPID(0)
76 ,fRawEtFullAcceptanceITSNoPID(0)
77 ,fRawEtEMCALAcceptanceTPCNoPID(0)
78 ,fRawEtEMCALAcceptanceITSNoPID(0)
79 ,fRawEtPHOSAcceptanceTPCNoPID(0)
80 ,fRawEtPHOSAcceptanceITSNoPID(0)
84 AliAnalysisHadEtReconstructed::~AliAnalysisHadEtReconstructed()
89 Int_t AliAnalysisHadEtReconstructed::AnalyseEvent(AliVEvent* ev)
90 { // analyse ESD event
93 Printf("ERROR: Event does not exist");
97 AliESDEvent *realEvent = dynamic_cast<AliESDEvent*>(ev);
99 AliESDpid *pID = new AliESDpid();
100 pID->MakePID(realEvent);
101 TString *strTPC = new TString("TPC");
102 TString *strITS = new TString("ITS");
103 TString *strTPCITS = new TString("TPCITS");
104 for(Int_t cutset=0;cutset<2;cutset++){
106 TString *cutName = NULL;
107 TObjArray* list = NULL;
111 list = fEsdtrackCutsITSTPC->GetAcceptedTracks(realEvent);
116 list = fEsdtrackCutsITS->GetAcceptedTracks(realEvent);
120 list = fEsdtrackCutsTPC->GetAcceptedTracks(realEvent);
123 cerr<<"Error: cannot fill histograms!"<<endl;
126 Int_t nGoodTracks = list->GetEntries();
127 for (Int_t iTrack = 0; iTrack < nGoodTracks; iTrack++)
131 AliESDtrack *track = dynamic_cast<AliESDtrack*> (list->At(iTrack));
134 Printf("ERROR: Could not get track %d", iTrack);
138 if(TMath::Abs(track->Eta())>fCorrections->GetEtaCut()) continue;
139 Float_t nSigmaPion,nSigmaProton,nSigmaKaon,nSigmaElectron;
141 nSigmaPion = TMath::Abs(pID->NumberOfSigmasTPC(track,AliPID::kPion));
142 nSigmaProton = TMath::Abs(pID->NumberOfSigmasTPC(track,AliPID::kProton));
143 nSigmaKaon = TMath::Abs(pID->NumberOfSigmasTPC(track,AliPID::kKaon));
144 nSigmaElectron = TMath::Abs(pID->NumberOfSigmasTPC(track,AliPID::kElectron));
147 nSigmaPion = TMath::Abs(pID->NumberOfSigmasITS(track,AliPID::kPion));
148 nSigmaProton = TMath::Abs(pID->NumberOfSigmasITS(track,AliPID::kProton));
149 nSigmaKaon = TMath::Abs(pID->NumberOfSigmasITS(track,AliPID::kKaon));
150 nSigmaElectron = TMath::Abs(pID->NumberOfSigmasITS(track,AliPID::kElectron));
152 // bool isPion = (nSigmaPion<3.0 && nSigmaProton>2.0 && nSigmaKaon>2.0);
153 // bool isElectron = (nSigmaElectron<2.0 && nSigmaPion>4.0 && nSigmaProton>3.0 && nSigmaKaon>3.0);
154 // bool isKaon = (nSigmaPion>3.0 && nSigmaProton>2.0 && nSigmaKaon<2.0);
155 // bool isProton = (nSigmaPion>3.0 && nSigmaProton<2.0 && nSigmaKaon>2.0);
156 bool isPion = (nSigmaPion<3.0 && nSigmaProton>2.0 && nSigmaKaon>2.0);
157 bool isElectron = (nSigmaElectron<2.0 && nSigmaPion>4.0 && nSigmaProton>3.0 && nSigmaKaon>3.0);
158 bool isKaon = (nSigmaPion>3.0 && nSigmaProton>3.0 && nSigmaKaon<3.0 && track->Pt()<0.45);
159 bool isProton = (nSigmaPion>3.0 && nSigmaProton<3.0 && nSigmaKaon>3.0 && track->Pt()<0.9);
161 bool unidentified = (!isProton && !isKaon && !isElectron && !isPion);
162 Float_t dEdx = track->GetTPCsignal();
163 if(cutset==1) dEdx = track->GetITSsignal();
164 FillHisto2D(Form("dEdxDataAll%s",cutName->Data()),track->P(),dEdx,1.0);
166 bool inPHOS = IsInPHOS(track);
167 bool inEMCAL = IsInEMCAL(track);
169 Float_t corrBkgd=0.0;
170 Float_t corrNotID=0.0;
171 Float_t corrNoID=0.0;// = fCorrections->GetNotIDCorrectionNoPID(track->Pt());
172 Float_t corrEff = 0.0;
173 Float_t corrEffNoID = 0.0;
175 corrBkgd = fCorrections->GetBackgroundCorrectionTPC(track->Pt());
176 corrEffNoID = fCorrections->GetTPCEfficiencyCorrectionHadron(track->Pt());
177 corrNotID = fCorrections->GetNotIDConstCorrectionTPC();
178 corrNoID = fCorrections->GetNotIDConstCorrectionTPCNoID();
181 corrBkgd = fCorrections->GetBackgroundCorrectionITS(track->Pt());
182 corrEffNoID = fCorrections->GetITSEfficiencyCorrectionHadron(track->Pt());
183 corrNotID = fCorrections->GetNotIDConstCorrectionITS();
184 corrNoID = fCorrections->GetNotIDConstCorrectionITSNoID();
187 Float_t etNoID = Et(track->P(),track->Theta(),fgPiPlusCode,track->Charge());
188 Float_t etpartialcorrected = 0.0;
189 Float_t etpartialcorrectedPion = 0.0;
190 Float_t etpartialcorrectedKaon = 0.0;
191 Float_t etpartialcorrectedProton = 0.0;
192 Float_t etpartialcorrectedNoID = corrNoID*corrBkgd*corrEffNoID*etNoID;
193 FillHisto2D(Form("EtDataRaw%sNoID",cutName->Data()),track->Pt(),track->Eta(),etpartialcorrectedNoID);
196 FillHisto2D(Form("dEdxDataPion%s",cutName->Data()),track->P(),dEdx,1.0);
197 et = Et(track->P(),track->Theta(),fgPiPlusCode,track->Charge());
198 if(cutset==0){corrEff = fCorrections->GetTPCEfficiencyCorrectionPion(track->Pt());}
199 //else{corrEff = fCorrections->GetITSEfficiencyCorrectionPion(track->Pt());}
200 etpartialcorrected = et*corrBkgd*corrEff*corrNotID;
202 if(track->Charge()>0.0){
203 FillHisto2D(Form("EtDataRaw%sPiPlus",cutName->Data()),track->Pt(),track->Eta(),et);
204 FillHisto2D(Form("EtDataCorrected%sPiPlus",cutName->Data()),track->Pt(),track->Eta(),etpartialcorrected);
207 FillHisto2D(Form("EtDataRaw%sPiMinus",cutName->Data()),track->Pt(),track->Eta(),et);
208 FillHisto2D(Form("EtDataCorrected%sPiMinus",cutName->Data()),track->Pt(),track->Eta(),etpartialcorrected);
212 FillHisto2D(Form("dEdxDataKaon%s",cutName->Data()),track->P(),dEdx,1.0);
213 et = Et(track->P(),track->Theta(),fgKPlusCode,track->Charge());
214 if(cutset==0){corrEff = fCorrections->GetTPCEfficiencyCorrectionKaon(track->Pt());}
215 //else{corrEff = fCorrections->GetITSEfficiencyCorrectionKaon(track->Pt());}
216 etpartialcorrected = et*corrBkgd*corrEff*corrNotID;
218 if(track->Charge()>0.0){
219 FillHisto2D(Form("EtDataRaw%sKPlus",cutName->Data()),track->Pt(),track->Eta(),et);
220 FillHisto2D(Form("EtDataCorrected%sKPlus",cutName->Data()),track->Pt(),track->Eta(),etpartialcorrected);
223 FillHisto2D(Form("EtDataRaw%sKMinus",cutName->Data()),track->Pt(),track->Eta(),et);
224 FillHisto2D(Form("EtDataCorrected%sKMinus",cutName->Data()),track->Pt(),track->Eta(),etpartialcorrected);
228 FillHisto2D(Form("dEdxDataProton%s",cutName->Data()),track->P(),dEdx,1.0);
229 et = Et(track->P(),track->Theta(),fgProtonCode,track->Charge());
230 if(cutset==0){corrEff = fCorrections->GetTPCEfficiencyCorrectionProton(track->Pt());}
231 //else{corrEff = fCorrections->GetITSEfficiencyCorrectionProton(track->Pt());}
232 etpartialcorrected = et*corrBkgd*corrEff*corrNotID;
234 if(track->Charge()>0.0){
235 FillHisto2D(Form("EtDataRaw%sProton",cutName->Data()),track->Pt(),track->Eta(),et);
236 FillHisto2D(Form("EtDataCorrected%sProton",cutName->Data()),track->Pt(),track->Eta(),etpartialcorrected);
239 FillHisto2D(Form("EtDataRaw%sAntiProton",cutName->Data()),track->Pt(),track->Eta(),et);
240 FillHisto2D(Form("EtDataCorrected%sAntiProton",cutName->Data()),track->Pt(),track->Eta(),etpartialcorrected);
244 FillHisto2D(Form("dEdxDataProton%s",cutName->Data()),track->P(),dEdx,1.0);
245 //et = Et(track->P(),track->Theta(),fgPiPlusCode,track->Charge());
249 FillHisto2D(Form("dEdxDataUnidentified%s",cutName->Data()),track->P(),dEdx,1.0);
250 et = Et(track->P(),track->Theta(),fgPiPlusCode,track->Charge());
251 Float_t etProton = Et(track->P(),track->Theta(),fgProtonCode,track->Charge());
252 Float_t etKaon = Et(track->P(),track->Theta(),fgKPlusCode,track->Charge());
253 etpartialcorrected = et*corrBkgd*corrEffNoID*corrNotID;
254 etpartialcorrectedPion = et*corrBkgd*corrEffNoID;
255 etpartialcorrectedProton = etProton*corrBkgd*corrEffNoID;
256 etpartialcorrectedKaon = etKaon*corrBkgd*corrEffNoID;
258 FillHisto2D(Form("EtDataCorrected%sUnidentified",cutName->Data()),track->Pt(),track->Eta(),etpartialcorrected);
261 etpartialcorrectedPion = etpartialcorrected;
262 etpartialcorrectedKaon = etpartialcorrected;
263 etpartialcorrectedProton = etpartialcorrected;
266 etpartialcorrected = etpartialcorrectedNoID;//Not using PID for ITS
268 AddEt(et,etNoID,etpartialcorrected,etpartialcorrectedPion,etpartialcorrectedProton,etpartialcorrectedKaon,etpartialcorrectedNoID,track->Pt(),isTPC,inPHOS,inEMCAL);
273 if(GetCorrectedHadEtFullAcceptanceTPC()>0.0)FillHisto1D("RecoHadEtFullAcceptanceTPC",GetCorrectedHadEtFullAcceptanceTPC(),1.0);
274 if(GetCorrectedTotEtFullAcceptanceTPC()>0.0)FillHisto1D("RecoTotEtFullAcceptanceTPC",GetCorrectedTotEtFullAcceptanceTPC(),1.0);
275 if(GetCorrectedHadEtFullAcceptanceTPCAssumingPion()>0.0)FillHisto1D("RecoHadEtFullAcceptanceTPCAssumingPion",GetCorrectedHadEtFullAcceptanceTPCAssumingPion(),1.0);
276 if(GetCorrectedHadEtFullAcceptanceTPCAssumingProton()>0.0)FillHisto1D("RecoHadEtFullAcceptanceTPCAssumingProton",GetCorrectedHadEtFullAcceptanceTPCAssumingProton(),1.0);
277 if(GetCorrectedHadEtFullAcceptanceTPCAssumingKaon()>0.0)FillHisto1D("RecoHadEtFullAcceptanceTPCAssumingKaon",GetCorrectedHadEtFullAcceptanceTPCAssumingKaon(),1.0);
278 if(GetCorrectedHadEtEMCALAcceptanceTPC()>0.0)FillHisto1D("RecoHadEtEMCALAcceptanceTPC",GetCorrectedHadEtEMCALAcceptanceTPC(),1.0);
279 if(GetCorrectedTotEtEMCALAcceptanceTPC()>0.0)FillHisto1D("RecoTotEtEMCALAcceptanceTPC",GetCorrectedTotEtEMCALAcceptanceTPC(),1.0);
280 if(GetCorrectedHadEtPHOSAcceptanceTPC()>0.0)FillHisto1D("RecoHadEtPHOSAcceptanceTPC",GetCorrectedHadEtPHOSAcceptanceTPC(),1.0);
281 if(GetCorrectedTotEtPHOSAcceptanceTPC()>0.0)FillHisto1D("RecoTotEtPHOSAcceptanceTPC",GetCorrectedTotEtPHOSAcceptanceTPC(),1.0);
282 if(GetCorrectedHadEtFullAcceptanceTPCNoPID()>0.0)FillHisto1D("RecoHadEtFullAcceptanceTPCNoPID",GetCorrectedHadEtFullAcceptanceTPCNoPID(),1.0);
283 if(GetCorrectedTotEtFullAcceptanceTPCNoPID()>0.0)FillHisto1D("RecoTotEtFullAcceptanceTPCNoPID",GetCorrectedTotEtFullAcceptanceTPCNoPID(),1.0);
284 if(GetCorrectedHadEtEMCALAcceptanceTPCNoPID()>0.0)FillHisto1D("RecoHadEtEMCALAcceptanceTPCNoPID",GetCorrectedHadEtEMCALAcceptanceTPCNoPID(),1.0);
285 if(GetCorrectedTotEtEMCALAcceptanceTPCNoPID()>0.0)FillHisto1D("RecoTotEtEMCALAcceptanceTPCNoPID",GetCorrectedTotEtEMCALAcceptanceTPCNoPID(),1.0);
286 if(GetCorrectedHadEtPHOSAcceptanceTPCNoPID()>0.0)FillHisto1D("RecoHadEtPHOSAcceptanceTPCNoPID",GetCorrectedHadEtPHOSAcceptanceTPCNoPID(),1.0);
287 if(GetCorrectedTotEtPHOSAcceptanceTPCNoPID()>0.0)FillHisto1D("RecoTotEtPHOSAcceptanceTPCNoPID",GetCorrectedTotEtPHOSAcceptanceTPCNoPID(),1.0);
288 if(GetCorrectedHadEtFullAcceptanceITS()>0.0)FillHisto1D("RecoHadEtFullAcceptanceITS",GetCorrectedHadEtFullAcceptanceITS(),1.0);
289 if(GetCorrectedHadEtFullAcceptanceITSAssumingPion()>0.0)FillHisto1D("RecoHadEtFullAcceptanceITSAssumingPion",GetCorrectedHadEtFullAcceptanceITSAssumingPion(),1.0);
290 if(GetCorrectedHadEtFullAcceptanceITSAssumingProton()>0.0)FillHisto1D("RecoHadEtFullAcceptanceITSAssumingProton",GetCorrectedHadEtFullAcceptanceITSAssumingProton(),1.0);
291 if(GetCorrectedHadEtFullAcceptanceITSAssumingKaon()>0.0)FillHisto1D("RecoHadEtFullAcceptanceITSAssumingKaon",GetCorrectedHadEtFullAcceptanceITSAssumingKaon(),1.0);
292 if(GetCorrectedTotEtFullAcceptanceITS()>0.0)FillHisto1D("RecoTotEtFullAcceptanceITS",GetCorrectedTotEtFullAcceptanceITS(),1.0);
293 if(GetCorrectedHadEtEMCALAcceptanceITS()>0.0)FillHisto1D("RecoHadEtEMCALAcceptanceITS",GetCorrectedHadEtEMCALAcceptanceITS(),1.0);
294 if(GetCorrectedTotEtEMCALAcceptanceITS()>0.0)FillHisto1D("RecoTotEtEMCALAcceptanceITS",GetCorrectedTotEtEMCALAcceptanceITS(),1.0);
295 if(GetCorrectedHadEtPHOSAcceptanceITS()>0.0)FillHisto1D("RecoHadEtPHOSAcceptanceITS",GetCorrectedHadEtPHOSAcceptanceITS(),1.0);
296 if(GetCorrectedTotEtPHOSAcceptanceITS()>0.0)FillHisto1D("RecoTotEtPHOSAcceptanceITS",GetCorrectedTotEtPHOSAcceptanceITS(),1.0);
297 if(GetCorrectedHadEtFullAcceptanceITSNoPID()>0.0)FillHisto1D("RecoHadEtFullAcceptanceITSNoPID",GetCorrectedHadEtFullAcceptanceITSNoPID(),1.0);
298 if(GetCorrectedTotEtFullAcceptanceITSNoPID()>0.0)FillHisto1D("RecoTotEtFullAcceptanceITSNoPID",GetCorrectedTotEtFullAcceptanceITSNoPID(),1.0);
299 if(GetCorrectedHadEtEMCALAcceptanceITSNoPID()>0.0)FillHisto1D("RecoHadEtEMCALAcceptanceITSNoPID",GetCorrectedHadEtEMCALAcceptanceITSNoPID(),1.0);
300 if(GetCorrectedTotEtEMCALAcceptanceITSNoPID()>0.0)FillHisto1D("RecoTotEtEMCALAcceptanceITSNoPID",GetCorrectedTotEtEMCALAcceptanceITSNoPID(),1.0);
301 if(GetCorrectedHadEtPHOSAcceptanceITSNoPID()>0.0)FillHisto1D("RecoHadEtPHOSAcceptanceITSNoPID",GetCorrectedHadEtPHOSAcceptanceITSNoPID(),1.0);
302 if(GetCorrectedTotEtPHOSAcceptanceITSNoPID()>0.0)FillHisto1D("RecoTotEtPHOSAcceptanceITSNoPID",GetCorrectedTotEtPHOSAcceptanceITSNoPID(),1.0);
304 if(GetRawEtFullAcceptanceTPC()>0.0)FillHisto1D("RecoRawEtFullAcceptanceTPC",GetRawEtFullAcceptanceTPC(),1.0);
305 if(GetRawEtEMCALAcceptanceTPC()>0.0)FillHisto1D("RecoRawEtEMCALAcceptanceTPC",GetRawEtEMCALAcceptanceTPC(),1.0);
306 if(GetRawEtPHOSAcceptanceTPC()>0.0)FillHisto1D("RecoRawEtPHOSAcceptanceTPC",GetRawEtPHOSAcceptanceTPC(),1.0);
307 if(GetRawEtFullAcceptanceTPCNoPID()>0.0)FillHisto1D("RecoRawEtFullAcceptanceTPCNoPID",GetRawEtFullAcceptanceTPCNoPID(),1.0);
308 if(GetRawEtEMCALAcceptanceTPCNoPID()>0.0)FillHisto1D("RecoRawEtEMCALAcceptanceTPCNoPID",GetRawEtEMCALAcceptanceTPCNoPID(),1.0);
309 if(GetRawEtPHOSAcceptanceTPCNoPID()>0.0)FillHisto1D("RecoRawEtPHOSAcceptanceTPCNoPID",GetRawEtPHOSAcceptanceTPCNoPID(),1.0);
310 if(GetRawEtFullAcceptanceITS()>0.0)FillHisto1D("RecoRawEtFullAcceptanceITS",GetRawEtFullAcceptanceITS(),1.0);
311 if(GetRawEtEMCALAcceptanceITS()>0.0)FillHisto1D("RecoRawEtEMCALAcceptanceITS",GetRawEtEMCALAcceptanceITS(),1.0);
312 if(GetRawEtPHOSAcceptanceITS()>0.0)FillHisto1D("RecoRawEtPHOSAcceptanceITS",GetRawEtPHOSAcceptanceITS(),1.0);
313 if(GetRawEtFullAcceptanceITSNoPID()>0.0)FillHisto1D("RecoRawEtFullAcceptanceITSNoPID",GetRawEtFullAcceptanceITSNoPID(),1.0);
314 if(GetRawEtEMCALAcceptanceITSNoPID()>0.0)FillHisto1D("RecoRawEtEMCALAcceptanceITSNoPID",GetRawEtEMCALAcceptanceITSNoPID(),1.0);
315 if(GetRawEtPHOSAcceptanceITSNoPID()>0.0)FillHisto1D("RecoRawEtPHOSAcceptanceITSNoPID",GetRawEtPHOSAcceptanceITSNoPID(),1.0);
322 void AliAnalysisHadEtReconstructed::AddEt(Float_t rawEt, Float_t rawEtNoPID, Float_t corrEt, Float_t corrEtPion, Float_t corrEtProton, Float_t corrEtKaon, Float_t corrEtNoPID, Float_t pt, Bool_t IsTPC, Bool_t InPHOS, Bool_t InEMCAL) {//Adding Et to each of the variables that tracks et event by event
323 if(pt>=AliAnalysisHadEt::fgPtTPCCutOff && IsTPC){//TPC tracks
324 //adding to the raw Et
325 fRawEtFullAcceptanceTPC += rawEt;
326 if(InPHOS)fRawEtPHOSAcceptanceTPC += rawEt;
327 if(InEMCAL)fRawEtEMCALAcceptanceTPC += rawEt;
328 fRawEtFullAcceptanceTPCNoPID += rawEtNoPID;
329 if(InPHOS)fRawEtPHOSAcceptanceTPCNoPID += rawEtNoPID;
330 if(InEMCAL)fRawEtEMCALAcceptanceTPCNoPID += rawEtNoPID;
331 //adding to the corrected Et
332 fCorrectedHadEtFullAcceptanceTPC += corrEt;
333 fCorrectedHadEtFullAcceptanceTPCAssumingPion += corrEtPion;
334 fCorrectedHadEtFullAcceptanceTPCAssumingProton += corrEtProton;
335 fCorrectedHadEtFullAcceptanceTPCAssumingKaon += corrEtKaon;
336 if(InPHOS)fCorrectedHadEtPHOSAcceptanceTPC += corrEt;
337 if(InEMCAL)fCorrectedHadEtEMCALAcceptanceTPC += corrEt;
338 fCorrectedHadEtFullAcceptanceTPCNoPID += corrEtNoPID;
339 if(InPHOS)fCorrectedHadEtPHOSAcceptanceTPCNoPID += corrEtNoPID;
340 if(InEMCAL)fCorrectedHadEtEMCALAcceptanceTPCNoPID += corrEtNoPID;
342 if(pt<AliAnalysisHadEt::fgPtTPCCutOff &&pt>=AliAnalysisHadEt::fgPtITSCutOff && !IsTPC){//ITS tracks
343 //adding to the raw Et
344 fRawEtFullAcceptanceITS += rawEt;
345 if(InPHOS)fRawEtPHOSAcceptanceITS += rawEt;
346 if(InEMCAL)fRawEtEMCALAcceptanceITS += rawEt;
347 fRawEtFullAcceptanceITSNoPID += rawEtNoPID;
348 if(InPHOS)fRawEtPHOSAcceptanceITSNoPID += rawEtNoPID;
349 if(InEMCAL)fRawEtEMCALAcceptanceITSNoPID += rawEtNoPID;
350 //adding to the corrected Et
351 fCorrectedHadEtFullAcceptanceITS += corrEt;
352 fCorrectedHadEtFullAcceptanceITSAssumingPion += corrEtPion;
353 fCorrectedHadEtFullAcceptanceITSAssumingProton += corrEtProton;
354 fCorrectedHadEtFullAcceptanceITSAssumingKaon += corrEtKaon;
355 if(InPHOS)fCorrectedHadEtPHOSAcceptanceITS += corrEt;
356 if(InEMCAL)fCorrectedHadEtEMCALAcceptanceITS += corrEt;
357 fCorrectedHadEtFullAcceptanceITSNoPID += corrEtNoPID;
358 if(InPHOS)fCorrectedHadEtPHOSAcceptanceITSNoPID += corrEtNoPID;
359 if(InEMCAL)fCorrectedHadEtEMCALAcceptanceITSNoPID += corrEtNoPID;
363 Bool_t AliAnalysisHadEtReconstructed::IsInPHOS(AliESDtrack *track){//This function will need to be elaborated on later to include PHOS dead channels
365 cout<<"Error: Track does not exist!!"<<endl;
368 return TMath::Abs(track->Eta()) < fCuts->GetGeometryPhosEtaAccCut()//in eta acceptance
369 && track->Phi()*180.0/TMath::Pi() > fCuts->GetGeometryPhosPhiAccMinCut()//greater than the minimum phi
370 && track->Phi()*180.0/TMath::Pi() < fCuts->GetGeometryPhosPhiAccMaxCut();//less than the maximum phi
372 Bool_t AliAnalysisHadEtReconstructed::IsInEMCAL(AliESDtrack *track){//This function will need to be elaborated on later to include EMCAL dead channels
374 cout<<"Error: Track does not exist!!"<<endl;
377 return TMath::Abs(track->Eta()) < fCuts->GetGeometryEmcalEtaAccCut()//in eta acceptance
378 && track->Phi()*180.0/TMath::Pi() > fCuts->GetGeometryEmcalPhiAccMinCut()//greater than the minimum phi
379 && track->Phi()*180.0/TMath::Pi() < fCuts->GetGeometryEmcalPhiAccMaxCut();//less than the maximum phi
381 Bool_t AliAnalysisHadEtReconstructed::CheckGoodVertex(AliVParticle* track)
384 cout<<"Error: Track does not exist!!"<<endl;
390 dynamic_cast<AliESDtrack*>(track)->GetImpactParametersTPC(bxy,bz);
392 bool status = (TMath::Abs(track->Xv()) < fCuts->GetReconstructedVertexXCut()) &&
393 (TMath::Abs(track->Yv()) < fCuts->GetReconstructedVertexYCut()) &&
394 (TMath::Abs(track->Zv()) < fCuts->GetReconstructedVertexZCut()) &&
395 (TMath::Abs(bxy) < fCuts->GetReconstructedIPxyCut()) &&
396 (TMath::Abs(bz) < fCuts->GetReconstructedIPzCut());
401 void AliAnalysisHadEtReconstructed::Init()
403 AliAnalysisHadEt::Init();
405 fCorrTotEtFullAcceptanceTPC = fCorrections->GetConstantCorrections(kTRUE,fgPtTPCCutOff,"Full");
406 fCorrTotEtFullAcceptanceITS = fCorrections->GetConstantCorrections(kTRUE,fgPtITSCutOff,"Full");
407 fCorrHadEtFullAcceptanceTPC = fCorrections->GetConstantCorrections(kFALSE,fgPtTPCCutOff,"Full");
408 fCorrHadEtFullAcceptanceITS = fCorrections->GetConstantCorrections(kFALSE,fgPtITSCutOff,"Full");
409 fCorrTotEtEMCALAcceptanceTPC = fCorrections->GetConstantCorrections(kTRUE,fgPtTPCCutOff,"EMCAL");
410 fCorrTotEtEMCALAcceptanceITS = fCorrections->GetConstantCorrections(kTRUE,fgPtITSCutOff,"EMCAL");
411 fCorrHadEtEMCALAcceptanceTPC = fCorrections->GetConstantCorrections(kFALSE,fgPtTPCCutOff,"EMCAL");
412 fCorrHadEtEMCALAcceptanceITS = fCorrections->GetConstantCorrections(kFALSE,fgPtITSCutOff,"EMCAL");
413 fCorrTotEtPHOSAcceptanceTPC = fCorrections->GetConstantCorrections(kTRUE,fgPtTPCCutOff,"PHOS");
414 fCorrTotEtPHOSAcceptanceITS = fCorrections->GetConstantCorrections(kTRUE,fgPtITSCutOff,"PHOS");
415 fCorrHadEtPHOSAcceptanceTPC = fCorrections->GetConstantCorrections(kFALSE,fgPtTPCCutOff,"PHOS");
416 fCorrHadEtPHOSAcceptanceITS = fCorrections->GetConstantCorrections(kFALSE,fgPtITSCutOff,"PHOS");
419 cout<<"Warning! You have not set corrections. Your code will crash. You have to set the corrections."<<endl;
423 void AliAnalysisHadEtReconstructed::ResetEventValues(){//resetting event by event et's
424 AliAnalysisHadEt::ResetEventValues();
425 fCorrectedHadEtFullAcceptanceTPCNoPID=0.0;
426 fCorrectedHadEtFullAcceptanceITSNoPID=0.0;
427 fCorrectedHadEtEMCALAcceptanceTPCNoPID=0.0;
428 fCorrectedHadEtEMCALAcceptanceITSNoPID=0.0;
429 fCorrectedHadEtPHOSAcceptanceTPCNoPID=0.0;
430 fCorrectedHadEtPHOSAcceptanceITSNoPID=0.0;
431 fCorrectedHadEtFullAcceptanceTPC=0.0;
432 fCorrectedHadEtFullAcceptanceITS=0.0;
433 fCorrectedHadEtFullAcceptanceTPCAssumingPion=0.0;
434 fCorrectedHadEtFullAcceptanceITSAssumingPion=0.0;
435 fCorrectedHadEtFullAcceptanceTPCAssumingProton=0.0;
436 fCorrectedHadEtFullAcceptanceITSAssumingProton=0.0;
437 fCorrectedHadEtFullAcceptanceTPCAssumingKaon=0.0;
438 fCorrectedHadEtFullAcceptanceITSAssumingKaon=0.0;
439 fCorrectedHadEtEMCALAcceptanceTPC=0.0;
440 fCorrectedHadEtEMCALAcceptanceITS=0.0;
441 fCorrectedHadEtPHOSAcceptanceTPC=0.0;
442 fCorrectedHadEtPHOSAcceptanceITS=0.0;
443 fRawEtFullAcceptanceTPC=0.0;
444 fRawEtFullAcceptanceITS=0.0;
445 fRawEtEMCALAcceptanceTPC=0.0;
446 fRawEtEMCALAcceptanceITS=0.0;
447 fRawEtPHOSAcceptanceTPC=0.0;
448 fRawEtPHOSAcceptanceITS=0.0;
449 fRawEtFullAcceptanceTPCNoPID=0.0;
450 fRawEtFullAcceptanceITSNoPID=0.0;
451 fRawEtEMCALAcceptanceTPCNoPID=0.0;
452 fRawEtEMCALAcceptanceITSNoPID=0.0;
453 fRawEtPHOSAcceptanceTPCNoPID=0.0;
454 fRawEtPHOSAcceptanceITSNoPID=0.0;
456 if(TMath::Abs(fCorrTotEtFullAcceptanceTPC)<1e-3){
457 if (fConfigFile.Length()) {
458 cout<<"Warning: Rereading fCorrections file..."<<endl;
459 gROOT->LoadMacro(fConfigFile);
460 fCorrections = (AliAnalysisHadEtCorrections *) gInterpreter->ProcessLine("ConfigHadEtAnalysis()");
461 fCorrTotEtFullAcceptanceTPC = fCorrections->GetConstantCorrections(kTRUE,fgPtTPCCutOff,"Full");
462 fCorrTotEtFullAcceptanceITS = fCorrections->GetConstantCorrections(kTRUE,fgPtITSCutOff,"Full");
463 fCorrHadEtFullAcceptanceTPC = fCorrections->GetConstantCorrections(kFALSE,fgPtTPCCutOff,"Full");
464 fCorrHadEtFullAcceptanceITS = fCorrections->GetConstantCorrections(kFALSE,fgPtITSCutOff,"Full");
465 fCorrTotEtEMCALAcceptanceTPC = fCorrections->GetConstantCorrections(kTRUE,fgPtTPCCutOff,"EMCAL");
466 fCorrTotEtEMCALAcceptanceITS = fCorrections->GetConstantCorrections(kTRUE,fgPtITSCutOff,"EMCAL");
467 fCorrHadEtEMCALAcceptanceTPC = fCorrections->GetConstantCorrections(kFALSE,fgPtTPCCutOff,"EMCAL");
468 fCorrHadEtEMCALAcceptanceITS = fCorrections->GetConstantCorrections(kFALSE,fgPtITSCutOff,"EMCAL");
469 fCorrTotEtPHOSAcceptanceTPC = fCorrections->GetConstantCorrections(kTRUE,fgPtTPCCutOff,"PHOS");
470 fCorrTotEtPHOSAcceptanceITS = fCorrections->GetConstantCorrections(kTRUE,fgPtITSCutOff,"PHOS");
471 fCorrHadEtPHOSAcceptanceTPC = fCorrections->GetConstantCorrections(kFALSE,fgPtTPCCutOff,"PHOS");
472 fCorrHadEtPHOSAcceptanceITS = fCorrections->GetConstantCorrections(kFALSE,fgPtITSCutOff,"PHOS");
474 else{cerr<<"Uh-oh! Unable to open configuration file!"<<endl;}
477 void AliAnalysisHadEtReconstructed::CreateHistograms(){//Creating histograms and adding them to the output TList
479 //TString *strTPC = new TString("TPC");
480 TString *strITS = new TString("ITS");
481 TString *strTPCITS = new TString("TPCITS");
482 for(Int_t i=0;i<2;i++){
483 TString *cutName = NULL;
484 Float_t maxPtdEdx = 10;
485 Float_t mindEdx = 35;
486 Float_t maxdEdx = 150.0;
496 //not deleting this completely since we might want to add it back in later
503 cerr<<"Error: cannot make histograms!"<<endl;
507 CreateEtaPtHisto2D(Form("EtDataRaw%sPiPlus",cutName->Data()),"Raw reconstructed E_{T} from identified #pi^{+}");
508 CreateEtaPtHisto2D(Form("EtDataRaw%sPiMinus",cutName->Data()),"Raw reconstructed E_{T} from identified #pi^{-}");
509 CreateEtaPtHisto2D(Form("EtDataRaw%sKPlus",cutName->Data()),"Raw reconstructed E_{T} from identified K^{+}");
510 // CreateEtaPtHisto2D(Form("EtDataRaw%sEMinus",cutName->Data()),"Raw reconstructed E_{T} from identified e^{-}");
511 // CreateEtaPtHisto2D(Form("EtDataRaw%sEPlus",cutName->Data()),"Raw reconstructed E_{T} from identified e^{+}");
512 CreateEtaPtHisto2D(Form("EtDataRaw%sKMinus",cutName->Data()),"Raw reconstructed E_{T} from identified K^{-}");
513 CreateEtaPtHisto2D(Form("EtDataRaw%sProton",cutName->Data()),"Raw reconstructed E_{T} from identified p");
514 CreateEtaPtHisto2D(Form("EtDataRaw%sAntiProton",cutName->Data()),"Raw reconstructed E_{T} from identified #bar{p}");
515 CreateEtaPtHisto2D(Form("EtDataRaw%sUnidentified",cutName->Data()),"Raw reconstructed E_{T} from unidentified particles using real mass");
516 CreateEtaPtHisto2D(Form("EtDataRaw%sNoID",cutName->Data()),"Raw reconstructed E_{T} from unidentified particles using real mass");
518 CreateEtaPtHisto2D(Form("EtDataCorrected%sPiPlus",cutName->Data()),"Corrected reconstructed E_{T} from identified #pi^{+}");
519 CreateEtaPtHisto2D(Form("EtDataCorrected%sPiMinus",cutName->Data()),"Corrected reconstructed E_{T} from identified #pi^{-}");
520 CreateEtaPtHisto2D(Form("EtDataCorrected%sKPlus",cutName->Data()),"Corrected reconstructed E_{T} from identified K^{+}");
521 // CreateEtaPtHisto2D(Form("EtDataCorrected%sEMinus",cutName->Data()),"Corrected reconstructed E_{T} from identified e^{-}");
522 // CreateEtaPtHisto2D(Form("EtDataCorrected%sEPlus",cutName->Data()),"Corrected reconstructed E_{T} from identified e^{+}");
523 CreateEtaPtHisto2D(Form("EtDataCorrected%sKMinus",cutName->Data()),"Corrected reconstructed E_{T} from identified K^{-}");
524 CreateEtaPtHisto2D(Form("EtDataCorrected%sProton",cutName->Data()),"Corrected reconstructed E_{T} from identified p");
525 CreateEtaPtHisto2D(Form("EtDataCorrected%sAntiProton",cutName->Data()),"Corrected reconstructed E_{T} from identified #bar{p}");
526 CreateEtaPtHisto2D(Form("EtDataCorrected%sUnidentified",cutName->Data()),"Corrected reconstructed E_{T} from unidentified particles using real mass");
527 CreateEtaPtHisto2D(Form("EtDataCorrected%sNoID",cutName->Data()),"Corrected reconstructed E_{T} from unidentified particles using real mass");
530 CreateEtaPtHisto2D(Form("EtNData%sPiPlus",cutName->Data()),"Number of reconstructed #pi^{+}");
531 CreateEtaPtHisto2D(Form("EtNData%sPiMinus",cutName->Data()),"Number of reconstructed #pi^{-}");
532 CreateEtaPtHisto2D(Form("EtNData%sKPlus",cutName->Data()),"Number of reconstructed K^{+}");
533 CreateEtaPtHisto2D(Form("EtNData%sKMinus",cutName->Data()),"Number of reconstructed K^{-}");
534 CreateEtaPtHisto2D(Form("EtNData%sProton",cutName->Data()),"Number of reconstructed p");
535 CreateEtaPtHisto2D(Form("EtNData%sAntiProton",cutName->Data()),"Number of reconstructed #bar{p}");
536 CreateEtaPtHisto2D(Form("EtNData%sUnidentified",cutName->Data()),"Number of Reconstructed unidentified particles");
538 CreateHisto2D(Form("dEdxDataAll%s",cutName->Data()),"dE/dx for all particles","momentum (GeV/c)","dE/dx",400,0.0,maxPtdEdx,200,mindEdx,maxdEdx);
539 CreateHisto2D(Form("dEdxDataPion%s",cutName->Data()),"dE/dx for #pi^{#pm}","momentum (GeV/c)","dE/dx",400,0.0,maxPtdEdx,200,mindEdx,maxdEdx);
540 CreateHisto2D(Form("dEdxDataKaon%s",cutName->Data()),"dE/dx for K^{#pm}","momentum (GeV/c)","dE/dx",400,0.0,maxPtdEdx,200,mindEdx,maxdEdx);
541 CreateHisto2D(Form("dEdxDataProton%s",cutName->Data()),"dE/dx for p(#bar{p})","momentum (GeV/c)","dE/dx",400,0.0,maxPtdEdx,200,mindEdx,maxdEdx);
542 CreateHisto2D(Form("dEdxDataElectron%s",cutName->Data()),"dE/dx for e^{#pm}","momentum (GeV/c)","dE/dx",400,0.0,maxPtdEdx,200,mindEdx,maxdEdx);
543 CreateHisto2D(Form("dEdxDataUnidentified%s",cutName->Data()),"dE/dx for unidentified particles","momentum (GeV/c)","dE/dx",400,0.0,maxPtdEdx,200,mindEdx,maxdEdx);
547 Float_t maxEt = 100.0;
550 char histotitle[200];
552 TString *ytitle = new TString("Number of events");
553 TString *sTPC = new TString("TPC");
554 TString *sITS = new TString("ITS");
555 TString *sTPCpt = new TString("0.15");
556 TString *sITSpt = new TString("0.10");
557 TString *sPID = new TString("");
558 TString *sNoPID = new TString("NoPID");
559 TString *sNoPIDString = new TString(", No PID");
560 TString *sHadEt = new TString("HadEt");
561 TString *sRawEt = new TString("RawEt");
562 TString *sTotEt = new TString("TotEt");
563 TString *sTotEtString = new TString("total E_{T}");
564 TString *sHadEtString = new TString("hadronic E_{T}");
565 TString *sRawEtString = new TString("raw E_{T}");
566 TString *sFull = new TString("Full");
567 TString *sEMCAL = new TString("EMCAL");
568 TString *sPHOS = new TString("PHOS");
570 for(int tpc = 0;tpc<2;tpc++){
571 for(int hadet = 0;hadet<3;hadet++){
572 for(int type = 0;type<3;type++){
573 for(int pid = 0;pid<2;pid++){
574 TString *detector = NULL;
575 TString *partid = NULL;
576 TString *et = sHadEt;
577 TString *acceptance = NULL;
578 TString *ptstring = NULL;
579 TString *partidstring = NULL;
580 TString *etstring = sHadEtString;
581 if(tpc==1) {detector = sTPC; ptstring = sTPCpt;}
582 else{detector = sITS; ptstring = sITSpt;}
583 if(pid==1){partid = sPID; partidstring = sPID;}
584 else{partid = sNoPID; partidstring = sNoPIDString;}
585 if(hadet==1) {et = sHadEt; etstring = sHadEtString;}
586 if(hadet==0){et = sTotEt; etstring = sTotEtString;}
587 if(hadet==2){et = sRawEt; etstring = sRawEtString;}
601 snprintf(histoname,200,"Reco%s%sAcceptance%s%s",et->Data(),acceptance->Data(),detector->Data(),partid->Data());
602 snprintf(histotitle,200,"Reconstructed %s with %s acceptance for p_{T}>%s GeV/c%s",etstring->Data(),acceptance->Data(),ptstring->Data(),partidstring->Data());
603 snprintf(xtitle,50,"Reconstructed %s",etstring->Data());
604 CreateHisto1D(histoname,histotitle,xtitle,ytitle->Data(),nbinsEt*2,minEt,maxEt);
609 CreateHisto1D("RecoHadEtFullAcceptanceTPCAssumingPion","Reconstructing E_{T}^{had} with full acceptance for p_{T}>0.15 GeV/c assuming pions","Reconstructed E_{T}^{had}","dN_{eve}/dE_{T}^{had}",nbinsEt*2,minEt,maxEt);
610 CreateHisto1D("RecoHadEtFullAcceptanceTPCAssumingProton","Reconstructing E_{T}^{had} with full acceptance for p_{T}>0.15 GeV/c assuming protons","Reconstructed E_{T}^{had}","dN_{eve}/dE_{T}^{had}",nbinsEt*2,minEt,maxEt);
611 CreateHisto1D("RecoHadEtFullAcceptanceTPCAssumingKaon","Reconstructing E_{T}^{had} with full acceptance for p_{T}>0.15 GeV/c assuming kaons","Reconstructed E_{T}^{had}","dN_{eve}/dE_{T}^{had}",nbinsEt*2,minEt,maxEt);
612 CreateHisto1D("RecoHadEtFullAcceptanceITSAssumingPion","Reconstructing E_{T}^{had} with full acceptance for p_{T}>0.10 GeV/c assuming pions","Reconstructed E_{T}^{had}","dN_{eve}/dE_{T}^{had}",nbinsEt*2,minEt,maxEt);
613 CreateHisto1D("RecoHadEtFullAcceptanceITSAssumingProton","Reconstructing E_{T}^{had} with full acceptance for p_{T}>0.10 GeV/c assuming protons","Reconstructed E_{T}^{had}","dN_{eve}/dE_{T}^{had}",nbinsEt*2,minEt,maxEt);
614 CreateHisto1D("RecoHadEtFullAcceptanceITSAssumingKaon","Reconstructing E_{T}^{had} with full acceptance for p_{T}>0.10 GeV/c assuming kaons","Reconstructed E_{T}^{had}","dN_{eve}/dE_{T}^{had}",nbinsEt*2,minEt,maxEt);