]> git.uio.no Git - u/mrichter/AliRoot.git/blob - PWG4/totEt/AliAnalysisHadEtReconstructed.cxx
Another pass at fixing coverity issues
[u/mrichter/AliRoot.git] / PWG4 / totEt / AliAnalysisHadEtReconstructed.cxx
1 //_________________________________________________________________________
2 //  Utility Class for transverse energy studies, charged hadrons
3 //  Base class for ESD analysis
4 //  - reconstruction output
5 // implementation file
6 //
7 //Created by Christine Nattrass, Rebecca Scott, Irakli Martashvili
8 //University of Tennessee at Knoxville
9 //_________________________________________________________________________
10
11 #include <TROOT.h>
12 #include <TSystem.h>
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"
23 #include <iostream>
24 #include "AliAnalysisHadEtCorrections.h"
25 #include "TFile.h"
26 #include "TString.h"
27 #include "AliAnalysisEtCommon.h"
28 #include "AliAnalysisHadEt.h"
29 #include "AliLog.h"
30
31 using namespace std;
32
33 ClassImp(AliAnalysisHadEtReconstructed);
34
35
36 AliAnalysisHadEtReconstructed::AliAnalysisHadEtReconstructed() :
37         AliAnalysisHadEt()
38         ,fCorrections(0)
39         ,fConfigFile("ConfigHadEtAnalysis.C")
40         ,fCorrTotEtFullAcceptanceTPC(0)
41         ,fCorrTotEtFullAcceptanceITS(0)
42         ,fCorrHadEtFullAcceptanceTPC(0)
43         ,fCorrHadEtFullAcceptanceITS(0)
44         ,fCorrTotEtEMCALAcceptanceTPC(0)
45         ,fCorrTotEtEMCALAcceptanceITS(0)
46         ,fCorrHadEtEMCALAcceptanceTPC(0)
47         ,fCorrHadEtEMCALAcceptanceITS(0)
48         ,fCorrTotEtPHOSAcceptanceTPC(0)
49         ,fCorrTotEtPHOSAcceptanceITS(0)
50         ,fCorrHadEtPHOSAcceptanceTPC(0)
51         ,fCorrHadEtPHOSAcceptanceITS(0)
52         ,fCorrectedHadEtFullAcceptanceTPCNoPID(0)
53         ,fCorrectedHadEtFullAcceptanceITSNoPID(0)
54         ,fCorrectedHadEtEMCALAcceptanceTPCNoPID(0)
55         ,fCorrectedHadEtEMCALAcceptanceITSNoPID(0)
56         ,fCorrectedHadEtPHOSAcceptanceTPCNoPID(0)
57         ,fCorrectedHadEtPHOSAcceptanceITSNoPID(0)
58         ,fCorrectedHadEtFullAcceptanceTPC(0)
59         ,fCorrectedHadEtFullAcceptanceITS(0)
60         ,fCorrectedHadEtFullAcceptanceTPCAssumingPion(0)
61         ,fCorrectedHadEtFullAcceptanceITSAssumingPion(0)
62         ,fCorrectedHadEtFullAcceptanceTPCAssumingProton(0)
63         ,fCorrectedHadEtFullAcceptanceITSAssumingProton(0)
64         ,fCorrectedHadEtFullAcceptanceTPCAssumingKaon(0)
65         ,fCorrectedHadEtFullAcceptanceITSAssumingKaon(0)
66         ,fCorrectedHadEtEMCALAcceptanceTPC(0)
67         ,fCorrectedHadEtEMCALAcceptanceITS(0)
68         ,fCorrectedHadEtPHOSAcceptanceTPC(0)
69         ,fCorrectedHadEtPHOSAcceptanceITS(0)
70         ,fRawEtFullAcceptanceTPC(0)
71         ,fRawEtFullAcceptanceITS(0)
72         ,fRawEtEMCALAcceptanceTPC(0)
73         ,fRawEtEMCALAcceptanceITS(0)
74         ,fRawEtPHOSAcceptanceTPC(0)
75         ,fRawEtPHOSAcceptanceITS(0)
76         ,fRawEtFullAcceptanceTPCNoPID(0)
77         ,fRawEtFullAcceptanceITSNoPID(0)
78         ,fRawEtEMCALAcceptanceTPCNoPID(0)
79         ,fRawEtEMCALAcceptanceITSNoPID(0)
80         ,fRawEtPHOSAcceptanceTPCNoPID(0)
81         ,fRawEtPHOSAcceptanceITSNoPID(0)
82 {
83 }
84
85 AliAnalysisHadEtReconstructed::~AliAnalysisHadEtReconstructed() 
86 {
87   delete fCorrections;
88 }
89
90 Int_t AliAnalysisHadEtReconstructed::AnalyseEvent(AliVEvent* ev)
91 { // analyse ESD event
92     ResetEventValues();
93   if(!ev){
94     AliFatal("ERROR: Event does not exist");   
95     return 0;
96   }
97
98     AliESDEvent *realEvent = dynamic_cast<AliESDEvent*>(ev);
99     if(!realEvent){  
100       AliFatal("ERROR: ESD Event does not exist");
101       return 0;
102     }
103     //for PID
104     AliESDpid *pID = new AliESDpid();
105     pID->MakePID(realEvent);
106     TString *strTPC = new TString("TPC");
107     TString *strITS = new TString("ITS");
108     TString *strTPCITS = new TString("TPCITS");
109     for(Int_t cutset=0;cutset<2;cutset++){
110       bool isTPC = false;
111       TString *cutName = NULL;
112       TObjArray* list = NULL;
113       switch(cutset){
114       case 0:
115         cutName = strTPCITS;
116         list = fEsdtrackCutsITSTPC->GetAcceptedTracks(realEvent);
117         isTPC = true;
118         break;
119       case 1:
120         cutName = strITS;
121         list = fEsdtrackCutsITS->GetAcceptedTracks(realEvent);
122         break;
123       case 2:
124         cutName = strTPC;
125         list = fEsdtrackCutsTPC->GetAcceptedTracks(realEvent);
126         break;
127       default:
128         cerr<<"Error:  cannot fill histograms!"<<endl;
129         return -1;
130       }
131       Int_t nGoodTracks = list->GetEntries();
132       for (Int_t iTrack = 0; iTrack < nGoodTracks; iTrack++)
133         {
134
135
136           AliESDtrack *track = dynamic_cast<AliESDtrack*> (list->At(iTrack));
137           if (!track)
138             {
139               Printf("ERROR: Could not get track %d", iTrack);
140               continue;
141             }
142           else{
143             if(TMath::Abs(track->Eta())>fCorrections->GetEtaCut()) continue;
144             Float_t nSigmaPion,nSigmaProton,nSigmaKaon,nSigmaElectron;
145             if(cutset!=1){
146               nSigmaPion = TMath::Abs(pID->NumberOfSigmasTPC(track,AliPID::kPion));
147               nSigmaProton = TMath::Abs(pID->NumberOfSigmasTPC(track,AliPID::kProton));
148               nSigmaKaon = TMath::Abs(pID->NumberOfSigmasTPC(track,AliPID::kKaon));
149               nSigmaElectron = TMath::Abs(pID->NumberOfSigmasTPC(track,AliPID::kElectron));
150             }
151             else{
152               nSigmaPion = TMath::Abs(pID->NumberOfSigmasITS(track,AliPID::kPion));
153               nSigmaProton = TMath::Abs(pID->NumberOfSigmasITS(track,AliPID::kProton));
154               nSigmaKaon = TMath::Abs(pID->NumberOfSigmasITS(track,AliPID::kKaon));
155               nSigmaElectron = TMath::Abs(pID->NumberOfSigmasITS(track,AliPID::kElectron));
156             }
157 //          bool isPion = (nSigmaPion<3.0 && nSigmaProton>2.0 && nSigmaKaon>2.0);
158 //          bool isElectron = (nSigmaElectron<2.0 && nSigmaPion>4.0 && nSigmaProton>3.0 && nSigmaKaon>3.0);
159 //          bool isKaon = (nSigmaPion>3.0 && nSigmaProton>2.0 && nSigmaKaon<2.0);
160 //          bool isProton = (nSigmaPion>3.0 && nSigmaProton<2.0 && nSigmaKaon>2.0);
161           bool isPion = (nSigmaPion<3.0 && nSigmaProton>2.0 && nSigmaKaon>2.0);
162           bool isElectron = (nSigmaElectron<2.0 && nSigmaPion>4.0 && nSigmaProton>3.0 && nSigmaKaon>3.0);
163           bool isKaon = (nSigmaPion>3.0 && nSigmaProton>3.0 && nSigmaKaon<3.0 && track->Pt()<0.45);
164           bool isProton = (nSigmaPion>3.0 && nSigmaProton<3.0 && nSigmaKaon>3.0 && track->Pt()<0.9);
165
166             bool unidentified = (!isProton && !isKaon && !isElectron && !isPion);
167             Float_t dEdx = track->GetTPCsignal();
168             if(cutset==1) dEdx = track->GetITSsignal();
169             FillHisto2D(Form("dEdxDataAll%s",cutName->Data()),track->P(),dEdx,1.0);
170
171             bool inPHOS = IsInPHOS(track);
172             bool inEMCAL = IsInEMCAL(track);
173
174             Float_t corrBkgd=0.0;
175             Float_t corrNotID=0.0;
176             Float_t corrNoID=0.0;// = fCorrections->GetNotIDCorrectionNoPID(track->Pt());
177             Float_t corrEff = 0.0;
178             Float_t corrEffNoID = 0.0;
179             if(cutset==0){//TPC
180               corrBkgd = fCorrections->GetBackgroundCorrectionTPC(track->Pt());
181               corrEffNoID = fCorrections->GetTPCEfficiencyCorrectionHadron(track->Pt());
182               corrNotID = fCorrections->GetNotIDConstCorrectionTPC();
183               corrNoID = fCorrections->GetNotIDConstCorrectionTPCNoID();
184             }
185             if(cutset==1){//ITS
186               corrBkgd = fCorrections->GetBackgroundCorrectionITS(track->Pt());
187               corrEffNoID = fCorrections->GetITSEfficiencyCorrectionHadron(track->Pt());
188               corrNotID = fCorrections->GetNotIDConstCorrectionITS();
189               corrNoID = fCorrections->GetNotIDConstCorrectionITSNoID();
190             }
191             Float_t et = 0.0;
192             Float_t etNoID = Et(track->P(),track->Theta(),fgPiPlusCode,track->Charge());
193             Float_t etpartialcorrected = 0.0;
194             Float_t etpartialcorrectedPion = 0.0;
195             Float_t etpartialcorrectedKaon = 0.0;
196             Float_t etpartialcorrectedProton = 0.0;
197             Float_t etpartialcorrectedNoID = corrNoID*corrBkgd*corrEffNoID*etNoID;
198             FillHisto2D(Form("EtDataRaw%sNoID",cutName->Data()),track->Pt(),track->Eta(),etpartialcorrectedNoID);
199
200             if(isPion){
201               FillHisto2D(Form("dEdxDataPion%s",cutName->Data()),track->P(),dEdx,1.0);
202               et = Et(track->P(),track->Theta(),fgPiPlusCode,track->Charge());
203               if(cutset==0){corrEff = fCorrections->GetTPCEfficiencyCorrectionPion(track->Pt());}
204               //else{corrEff = fCorrections->GetITSEfficiencyCorrectionPion(track->Pt());}
205               etpartialcorrected = et*corrBkgd*corrEff*corrNotID;
206               
207               if(track->Charge()>0.0){
208                 FillHisto2D(Form("EtDataRaw%sPiPlus",cutName->Data()),track->Pt(),track->Eta(),et);
209                 FillHisto2D(Form("EtDataCorrected%sPiPlus",cutName->Data()),track->Pt(),track->Eta(),etpartialcorrected);
210               }
211               else{
212                 FillHisto2D(Form("EtDataRaw%sPiMinus",cutName->Data()),track->Pt(),track->Eta(),et);
213                 FillHisto2D(Form("EtDataCorrected%sPiMinus",cutName->Data()),track->Pt(),track->Eta(),etpartialcorrected);
214               }
215             }
216             if(isKaon){
217               FillHisto2D(Form("dEdxDataKaon%s",cutName->Data()),track->P(),dEdx,1.0);
218               et = Et(track->P(),track->Theta(),fgKPlusCode,track->Charge());
219               if(cutset==0){corrEff = fCorrections->GetTPCEfficiencyCorrectionKaon(track->Pt());}
220               //else{corrEff = fCorrections->GetITSEfficiencyCorrectionKaon(track->Pt());}
221               etpartialcorrected = et*corrBkgd*corrEff*corrNotID;
222               
223               if(track->Charge()>0.0){
224                 FillHisto2D(Form("EtDataRaw%sKPlus",cutName->Data()),track->Pt(),track->Eta(),et);
225                 FillHisto2D(Form("EtDataCorrected%sKPlus",cutName->Data()),track->Pt(),track->Eta(),etpartialcorrected);
226               }
227               else{
228                 FillHisto2D(Form("EtDataRaw%sKMinus",cutName->Data()),track->Pt(),track->Eta(),et);
229                 FillHisto2D(Form("EtDataCorrected%sKMinus",cutName->Data()),track->Pt(),track->Eta(),etpartialcorrected);
230               }
231             }
232             if(isProton){
233               FillHisto2D(Form("dEdxDataProton%s",cutName->Data()),track->P(),dEdx,1.0);
234               et = Et(track->P(),track->Theta(),fgProtonCode,track->Charge());
235               if(cutset==0){corrEff = fCorrections->GetTPCEfficiencyCorrectionProton(track->Pt());}
236               //else{corrEff = fCorrections->GetITSEfficiencyCorrectionProton(track->Pt());}
237               etpartialcorrected = et*corrBkgd*corrEff*corrNotID;
238               
239               if(track->Charge()>0.0){
240                 FillHisto2D(Form("EtDataRaw%sProton",cutName->Data()),track->Pt(),track->Eta(),et);
241                 FillHisto2D(Form("EtDataCorrected%sProton",cutName->Data()),track->Pt(),track->Eta(),etpartialcorrected);
242               }
243               else{
244                 FillHisto2D(Form("EtDataRaw%sAntiProton",cutName->Data()),track->Pt(),track->Eta(),et);
245                 FillHisto2D(Form("EtDataCorrected%sAntiProton",cutName->Data()),track->Pt(),track->Eta(),etpartialcorrected);
246               }
247             }
248             if(isElectron){
249               FillHisto2D(Form("dEdxDataProton%s",cutName->Data()),track->P(),dEdx,1.0);
250               //et = Et(track->P(),track->Theta(),fgPiPlusCode,track->Charge());
251             }
252             if(unidentified){
253               //if(!isPion) 
254               FillHisto2D(Form("dEdxDataUnidentified%s",cutName->Data()),track->P(),dEdx,1.0);
255               et = Et(track->P(),track->Theta(),fgPiPlusCode,track->Charge());
256               Float_t etProton = Et(track->P(),track->Theta(),fgProtonCode,track->Charge());
257               Float_t etKaon = Et(track->P(),track->Theta(),fgKPlusCode,track->Charge());
258               etpartialcorrected = et*corrBkgd*corrEffNoID*corrNotID;
259               etpartialcorrectedPion = et*corrBkgd*corrEffNoID;
260               etpartialcorrectedProton = etProton*corrBkgd*corrEffNoID;
261               etpartialcorrectedKaon = etKaon*corrBkgd*corrEffNoID;
262               //if(!isPion) 
263               FillHisto2D(Form("EtDataCorrected%sUnidentified",cutName->Data()),track->Pt(),track->Eta(),etpartialcorrected);
264             }
265             else{
266               etpartialcorrectedPion = etpartialcorrected;
267               etpartialcorrectedKaon = etpartialcorrected;
268               etpartialcorrectedProton = etpartialcorrected;
269             }
270             if(!isTPC){
271               etpartialcorrected = etpartialcorrectedNoID;//Not using PID for ITS
272             }
273             AddEt(et,etNoID,etpartialcorrected,etpartialcorrectedPion,etpartialcorrectedProton,etpartialcorrectedKaon,etpartialcorrectedNoID,track->Pt(),isTPC,inPHOS,inEMCAL);
274           }
275         }
276       delete list;
277     }
278     if(GetCorrectedHadEtFullAcceptanceTPC()>0.0)FillHisto1D("RecoHadEtFullAcceptanceTPC",GetCorrectedHadEtFullAcceptanceTPC(),1.0);
279     if(GetCorrectedTotEtFullAcceptanceTPC()>0.0)FillHisto1D("RecoTotEtFullAcceptanceTPC",GetCorrectedTotEtFullAcceptanceTPC(),1.0);
280     if(GetCorrectedHadEtFullAcceptanceTPCAssumingPion()>0.0)FillHisto1D("RecoHadEtFullAcceptanceTPCAssumingPion",GetCorrectedHadEtFullAcceptanceTPCAssumingPion(),1.0);
281     if(GetCorrectedHadEtFullAcceptanceTPCAssumingProton()>0.0)FillHisto1D("RecoHadEtFullAcceptanceTPCAssumingProton",GetCorrectedHadEtFullAcceptanceTPCAssumingProton(),1.0);
282     if(GetCorrectedHadEtFullAcceptanceTPCAssumingKaon()>0.0)FillHisto1D("RecoHadEtFullAcceptanceTPCAssumingKaon",GetCorrectedHadEtFullAcceptanceTPCAssumingKaon(),1.0);
283     if(GetCorrectedHadEtEMCALAcceptanceTPC()>0.0)FillHisto1D("RecoHadEtEMCALAcceptanceTPC",GetCorrectedHadEtEMCALAcceptanceTPC(),1.0);
284     if(GetCorrectedTotEtEMCALAcceptanceTPC()>0.0)FillHisto1D("RecoTotEtEMCALAcceptanceTPC",GetCorrectedTotEtEMCALAcceptanceTPC(),1.0);
285     if(GetCorrectedHadEtPHOSAcceptanceTPC()>0.0)FillHisto1D("RecoHadEtPHOSAcceptanceTPC",GetCorrectedHadEtPHOSAcceptanceTPC(),1.0);
286     if(GetCorrectedTotEtPHOSAcceptanceTPC()>0.0)FillHisto1D("RecoTotEtPHOSAcceptanceTPC",GetCorrectedTotEtPHOSAcceptanceTPC(),1.0);
287     if(GetCorrectedHadEtFullAcceptanceTPCNoPID()>0.0)FillHisto1D("RecoHadEtFullAcceptanceTPCNoPID",GetCorrectedHadEtFullAcceptanceTPCNoPID(),1.0);
288     if(GetCorrectedTotEtFullAcceptanceTPCNoPID()>0.0)FillHisto1D("RecoTotEtFullAcceptanceTPCNoPID",GetCorrectedTotEtFullAcceptanceTPCNoPID(),1.0);
289     if(GetCorrectedHadEtEMCALAcceptanceTPCNoPID()>0.0)FillHisto1D("RecoHadEtEMCALAcceptanceTPCNoPID",GetCorrectedHadEtEMCALAcceptanceTPCNoPID(),1.0);
290     if(GetCorrectedTotEtEMCALAcceptanceTPCNoPID()>0.0)FillHisto1D("RecoTotEtEMCALAcceptanceTPCNoPID",GetCorrectedTotEtEMCALAcceptanceTPCNoPID(),1.0);
291     if(GetCorrectedHadEtPHOSAcceptanceTPCNoPID()>0.0)FillHisto1D("RecoHadEtPHOSAcceptanceTPCNoPID",GetCorrectedHadEtPHOSAcceptanceTPCNoPID(),1.0);
292     if(GetCorrectedTotEtPHOSAcceptanceTPCNoPID()>0.0)FillHisto1D("RecoTotEtPHOSAcceptanceTPCNoPID",GetCorrectedTotEtPHOSAcceptanceTPCNoPID(),1.0);
293     if(GetCorrectedHadEtFullAcceptanceITS()>0.0)FillHisto1D("RecoHadEtFullAcceptanceITS",GetCorrectedHadEtFullAcceptanceITS(),1.0);
294     if(GetCorrectedHadEtFullAcceptanceITSAssumingPion()>0.0)FillHisto1D("RecoHadEtFullAcceptanceITSAssumingPion",GetCorrectedHadEtFullAcceptanceITSAssumingPion(),1.0);
295     if(GetCorrectedHadEtFullAcceptanceITSAssumingProton()>0.0)FillHisto1D("RecoHadEtFullAcceptanceITSAssumingProton",GetCorrectedHadEtFullAcceptanceITSAssumingProton(),1.0);
296     if(GetCorrectedHadEtFullAcceptanceITSAssumingKaon()>0.0)FillHisto1D("RecoHadEtFullAcceptanceITSAssumingKaon",GetCorrectedHadEtFullAcceptanceITSAssumingKaon(),1.0);
297     if(GetCorrectedTotEtFullAcceptanceITS()>0.0)FillHisto1D("RecoTotEtFullAcceptanceITS",GetCorrectedTotEtFullAcceptanceITS(),1.0);
298     if(GetCorrectedHadEtEMCALAcceptanceITS()>0.0)FillHisto1D("RecoHadEtEMCALAcceptanceITS",GetCorrectedHadEtEMCALAcceptanceITS(),1.0);
299     if(GetCorrectedTotEtEMCALAcceptanceITS()>0.0)FillHisto1D("RecoTotEtEMCALAcceptanceITS",GetCorrectedTotEtEMCALAcceptanceITS(),1.0);
300     if(GetCorrectedHadEtPHOSAcceptanceITS()>0.0)FillHisto1D("RecoHadEtPHOSAcceptanceITS",GetCorrectedHadEtPHOSAcceptanceITS(),1.0);
301     if(GetCorrectedTotEtPHOSAcceptanceITS()>0.0)FillHisto1D("RecoTotEtPHOSAcceptanceITS",GetCorrectedTotEtPHOSAcceptanceITS(),1.0);
302     if(GetCorrectedHadEtFullAcceptanceITSNoPID()>0.0)FillHisto1D("RecoHadEtFullAcceptanceITSNoPID",GetCorrectedHadEtFullAcceptanceITSNoPID(),1.0);
303     if(GetCorrectedTotEtFullAcceptanceITSNoPID()>0.0)FillHisto1D("RecoTotEtFullAcceptanceITSNoPID",GetCorrectedTotEtFullAcceptanceITSNoPID(),1.0);
304     if(GetCorrectedHadEtEMCALAcceptanceITSNoPID()>0.0)FillHisto1D("RecoHadEtEMCALAcceptanceITSNoPID",GetCorrectedHadEtEMCALAcceptanceITSNoPID(),1.0);
305     if(GetCorrectedTotEtEMCALAcceptanceITSNoPID()>0.0)FillHisto1D("RecoTotEtEMCALAcceptanceITSNoPID",GetCorrectedTotEtEMCALAcceptanceITSNoPID(),1.0);
306     if(GetCorrectedHadEtPHOSAcceptanceITSNoPID()>0.0)FillHisto1D("RecoHadEtPHOSAcceptanceITSNoPID",GetCorrectedHadEtPHOSAcceptanceITSNoPID(),1.0);
307     if(GetCorrectedTotEtPHOSAcceptanceITSNoPID()>0.0)FillHisto1D("RecoTotEtPHOSAcceptanceITSNoPID",GetCorrectedTotEtPHOSAcceptanceITSNoPID(),1.0);
308
309     if(GetRawEtFullAcceptanceTPC()>0.0)FillHisto1D("RecoRawEtFullAcceptanceTPC",GetRawEtFullAcceptanceTPC(),1.0);
310     if(GetRawEtEMCALAcceptanceTPC()>0.0)FillHisto1D("RecoRawEtEMCALAcceptanceTPC",GetRawEtEMCALAcceptanceTPC(),1.0);
311     if(GetRawEtPHOSAcceptanceTPC()>0.0)FillHisto1D("RecoRawEtPHOSAcceptanceTPC",GetRawEtPHOSAcceptanceTPC(),1.0);
312     if(GetRawEtFullAcceptanceTPCNoPID()>0.0)FillHisto1D("RecoRawEtFullAcceptanceTPCNoPID",GetRawEtFullAcceptanceTPCNoPID(),1.0);
313     if(GetRawEtEMCALAcceptanceTPCNoPID()>0.0)FillHisto1D("RecoRawEtEMCALAcceptanceTPCNoPID",GetRawEtEMCALAcceptanceTPCNoPID(),1.0);
314     if(GetRawEtPHOSAcceptanceTPCNoPID()>0.0)FillHisto1D("RecoRawEtPHOSAcceptanceTPCNoPID",GetRawEtPHOSAcceptanceTPCNoPID(),1.0);
315     if(GetRawEtFullAcceptanceITS()>0.0)FillHisto1D("RecoRawEtFullAcceptanceITS",GetRawEtFullAcceptanceITS(),1.0);
316     if(GetRawEtEMCALAcceptanceITS()>0.0)FillHisto1D("RecoRawEtEMCALAcceptanceITS",GetRawEtEMCALAcceptanceITS(),1.0);
317     if(GetRawEtPHOSAcceptanceITS()>0.0)FillHisto1D("RecoRawEtPHOSAcceptanceITS",GetRawEtPHOSAcceptanceITS(),1.0);
318     if(GetRawEtFullAcceptanceITSNoPID()>0.0)FillHisto1D("RecoRawEtFullAcceptanceITSNoPID",GetRawEtFullAcceptanceITSNoPID(),1.0);
319     if(GetRawEtEMCALAcceptanceITSNoPID()>0.0)FillHisto1D("RecoRawEtEMCALAcceptanceITSNoPID",GetRawEtEMCALAcceptanceITSNoPID(),1.0);
320     if(GetRawEtPHOSAcceptanceITSNoPID()>0.0)FillHisto1D("RecoRawEtPHOSAcceptanceITSNoPID",GetRawEtPHOSAcceptanceITSNoPID(),1.0);
321     delete pID;
322     delete strTPC;
323     delete strITS;
324     delete strTPCITS;
325     return 1;
326 }
327 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
328   if(pt>=AliAnalysisHadEt::fgPtTPCCutOff && IsTPC){//TPC tracks
329     //adding to the raw Et
330     fRawEtFullAcceptanceTPC += rawEt;
331     if(InPHOS)fRawEtPHOSAcceptanceTPC += rawEt;
332     if(InEMCAL)fRawEtEMCALAcceptanceTPC += rawEt;
333     fRawEtFullAcceptanceTPCNoPID += rawEtNoPID;
334     if(InPHOS)fRawEtPHOSAcceptanceTPCNoPID += rawEtNoPID;
335     if(InEMCAL)fRawEtEMCALAcceptanceTPCNoPID += rawEtNoPID;
336     //adding to the corrected Et
337     fCorrectedHadEtFullAcceptanceTPC += corrEt;
338     fCorrectedHadEtFullAcceptanceTPCAssumingPion += corrEtPion;
339     fCorrectedHadEtFullAcceptanceTPCAssumingProton += corrEtProton;
340     fCorrectedHadEtFullAcceptanceTPCAssumingKaon += corrEtKaon;
341     if(InPHOS)fCorrectedHadEtPHOSAcceptanceTPC += corrEt;
342     if(InEMCAL)fCorrectedHadEtEMCALAcceptanceTPC += corrEt;
343     fCorrectedHadEtFullAcceptanceTPCNoPID += corrEtNoPID;
344     if(InPHOS)fCorrectedHadEtPHOSAcceptanceTPCNoPID += corrEtNoPID;
345     if(InEMCAL)fCorrectedHadEtEMCALAcceptanceTPCNoPID += corrEtNoPID;
346   }
347   if(pt<AliAnalysisHadEt::fgPtTPCCutOff &&pt>=AliAnalysisHadEt::fgPtITSCutOff && !IsTPC){//ITS tracks
348     //adding to the raw Et
349     fRawEtFullAcceptanceITS += rawEt;
350     if(InPHOS)fRawEtPHOSAcceptanceITS += rawEt;
351     if(InEMCAL)fRawEtEMCALAcceptanceITS += rawEt;
352     fRawEtFullAcceptanceITSNoPID += rawEtNoPID;
353     if(InPHOS)fRawEtPHOSAcceptanceITSNoPID += rawEtNoPID;
354     if(InEMCAL)fRawEtEMCALAcceptanceITSNoPID += rawEtNoPID;
355     //adding to the corrected Et
356     fCorrectedHadEtFullAcceptanceITS += corrEt;
357     fCorrectedHadEtFullAcceptanceITSAssumingPion += corrEtPion;
358     fCorrectedHadEtFullAcceptanceITSAssumingProton += corrEtProton;
359     fCorrectedHadEtFullAcceptanceITSAssumingKaon += corrEtKaon;
360     if(InPHOS)fCorrectedHadEtPHOSAcceptanceITS += corrEt;
361     if(InEMCAL)fCorrectedHadEtEMCALAcceptanceITS += corrEt;
362     fCorrectedHadEtFullAcceptanceITSNoPID += corrEtNoPID;
363     if(InPHOS)fCorrectedHadEtPHOSAcceptanceITSNoPID += corrEtNoPID;
364     if(InEMCAL)fCorrectedHadEtEMCALAcceptanceITSNoPID += corrEtNoPID;
365   }
366 }
367
368 Bool_t AliAnalysisHadEtReconstructed::IsInPHOS(AliESDtrack *track){//This function will need to be elaborated on later to include PHOS dead channels
369   if(!track){
370     cout<<"Error: Track does not exist!!"<<endl;
371     return kFALSE;
372   }
373   return   TMath::Abs(track->Eta()) < fCuts->GetGeometryPhosEtaAccCut()//in eta acceptance
374     && track->Phi()*180.0/TMath::Pi() > fCuts->GetGeometryPhosPhiAccMinCut()//greater than the minimum phi
375     && track->Phi()*180.0/TMath::Pi() < fCuts->GetGeometryPhosPhiAccMaxCut();//less than the maximum phi
376 }
377 Bool_t AliAnalysisHadEtReconstructed::IsInEMCAL(AliESDtrack *track){//This function will need to be elaborated on later to include EMCAL dead channels
378   if(!track){
379     cout<<"Error: Track does not exist!!"<<endl;
380     return kFALSE;
381   }
382   return   TMath::Abs(track->Eta()) < fCuts->GetGeometryEmcalEtaAccCut()//in eta acceptance
383     && track->Phi()*180.0/TMath::Pi() > fCuts->GetGeometryEmcalPhiAccMinCut()//greater than the minimum phi
384     && track->Phi()*180.0/TMath::Pi() < fCuts->GetGeometryEmcalPhiAccMaxCut();//less than the maximum phi
385 }
386 Bool_t AliAnalysisHadEtReconstructed::CheckGoodVertex(AliVParticle* track)
387 { // check vertex
388
389     Float_t bxy = 999.;
390     Float_t bz = 999.;
391     if(!track){
392       AliError("ERROR: no track");
393       return kFALSE;
394     }
395     AliESDtrack *esdTrack = dynamic_cast<AliESDtrack*>(track);
396     if(!esdTrack){
397       AliError("ERROR: no track");
398       return kFALSE;
399     }
400     esdTrack->GetImpactParametersTPC(bxy,bz);
401
402     bool status = (TMath::Abs(track->Xv()) < fCuts->GetReconstructedVertexXCut()) && 
403       (TMath::Abs(track->Yv()) < fCuts->GetReconstructedVertexYCut()) && 
404       (TMath::Abs(track->Zv()) < fCuts->GetReconstructedVertexZCut()) && 
405       (TMath::Abs(bxy) < fCuts->GetReconstructedIPxyCut()) && 
406       (TMath::Abs(bz) < fCuts->GetReconstructedIPzCut()); 
407
408     return status;
409 }
410
411 void AliAnalysisHadEtReconstructed::Init()
412 { // Init
413   AliAnalysisHadEt::Init();
414   if(fCorrections){
415     fCorrTotEtFullAcceptanceTPC = fCorrections->GetConstantCorrections(kTRUE,fgPtTPCCutOff,"Full");
416     fCorrTotEtFullAcceptanceITS = fCorrections->GetConstantCorrections(kTRUE,fgPtITSCutOff,"Full");
417     fCorrHadEtFullAcceptanceTPC = fCorrections->GetConstantCorrections(kFALSE,fgPtTPCCutOff,"Full");
418     fCorrHadEtFullAcceptanceITS = fCorrections->GetConstantCorrections(kFALSE,fgPtITSCutOff,"Full");
419     fCorrTotEtEMCALAcceptanceTPC = fCorrections->GetConstantCorrections(kTRUE,fgPtTPCCutOff,"EMCAL");
420     fCorrTotEtEMCALAcceptanceITS = fCorrections->GetConstantCorrections(kTRUE,fgPtITSCutOff,"EMCAL");
421     fCorrHadEtEMCALAcceptanceTPC = fCorrections->GetConstantCorrections(kFALSE,fgPtTPCCutOff,"EMCAL");
422     fCorrHadEtEMCALAcceptanceITS = fCorrections->GetConstantCorrections(kFALSE,fgPtITSCutOff,"EMCAL");
423     fCorrTotEtPHOSAcceptanceTPC = fCorrections->GetConstantCorrections(kTRUE,fgPtTPCCutOff,"PHOS");
424     fCorrTotEtPHOSAcceptanceITS = fCorrections->GetConstantCorrections(kTRUE,fgPtITSCutOff,"PHOS");
425     fCorrHadEtPHOSAcceptanceTPC = fCorrections->GetConstantCorrections(kFALSE,fgPtTPCCutOff,"PHOS");
426     fCorrHadEtPHOSAcceptanceITS = fCorrections->GetConstantCorrections(kFALSE,fgPtITSCutOff,"PHOS");
427   }
428   else{
429     cout<<"Warning!  You have not set corrections.  Your code will crash.  You have to set the corrections."<<endl;
430   }
431 }
432
433 void AliAnalysisHadEtReconstructed::ResetEventValues(){//resetting event by event et's
434   AliAnalysisHadEt::ResetEventValues();
435      fCorrectedHadEtFullAcceptanceTPCNoPID=0.0;
436      fCorrectedHadEtFullAcceptanceITSNoPID=0.0;
437      fCorrectedHadEtEMCALAcceptanceTPCNoPID=0.0;
438      fCorrectedHadEtEMCALAcceptanceITSNoPID=0.0;
439      fCorrectedHadEtPHOSAcceptanceTPCNoPID=0.0;
440      fCorrectedHadEtPHOSAcceptanceITSNoPID=0.0;
441      fCorrectedHadEtFullAcceptanceTPC=0.0;
442      fCorrectedHadEtFullAcceptanceITS=0.0;
443      fCorrectedHadEtFullAcceptanceTPCAssumingPion=0.0;
444      fCorrectedHadEtFullAcceptanceITSAssumingPion=0.0;
445      fCorrectedHadEtFullAcceptanceTPCAssumingProton=0.0;
446      fCorrectedHadEtFullAcceptanceITSAssumingProton=0.0;
447      fCorrectedHadEtFullAcceptanceTPCAssumingKaon=0.0;
448      fCorrectedHadEtFullAcceptanceITSAssumingKaon=0.0;
449      fCorrectedHadEtEMCALAcceptanceTPC=0.0;
450      fCorrectedHadEtEMCALAcceptanceITS=0.0;
451      fCorrectedHadEtPHOSAcceptanceTPC=0.0;
452      fCorrectedHadEtPHOSAcceptanceITS=0.0;
453      fRawEtFullAcceptanceTPC=0.0;
454      fRawEtFullAcceptanceITS=0.0;
455      fRawEtEMCALAcceptanceTPC=0.0;
456      fRawEtEMCALAcceptanceITS=0.0;
457      fRawEtPHOSAcceptanceTPC=0.0;
458      fRawEtPHOSAcceptanceITS=0.0;
459      fRawEtFullAcceptanceTPCNoPID=0.0;
460      fRawEtFullAcceptanceITSNoPID=0.0;
461      fRawEtEMCALAcceptanceTPCNoPID=0.0;
462      fRawEtEMCALAcceptanceITSNoPID=0.0;
463      fRawEtPHOSAcceptanceTPCNoPID=0.0;
464      fRawEtPHOSAcceptanceITSNoPID=0.0;
465
466      if(TMath::Abs(fCorrTotEtFullAcceptanceTPC)<1e-3){
467        if (fConfigFile.Length()) {
468          cout<<"Warning: Rereading fCorrections file..."<<endl;
469          gROOT->LoadMacro(fConfigFile);
470          fCorrections = (AliAnalysisHadEtCorrections *) gInterpreter->ProcessLine("ConfigHadEtAnalysis()");
471          fCorrTotEtFullAcceptanceTPC = fCorrections->GetConstantCorrections(kTRUE,fgPtTPCCutOff,"Full");
472          fCorrTotEtFullAcceptanceITS = fCorrections->GetConstantCorrections(kTRUE,fgPtITSCutOff,"Full");
473          fCorrHadEtFullAcceptanceTPC = fCorrections->GetConstantCorrections(kFALSE,fgPtTPCCutOff,"Full");
474          fCorrHadEtFullAcceptanceITS = fCorrections->GetConstantCorrections(kFALSE,fgPtITSCutOff,"Full");
475          fCorrTotEtEMCALAcceptanceTPC = fCorrections->GetConstantCorrections(kTRUE,fgPtTPCCutOff,"EMCAL");
476          fCorrTotEtEMCALAcceptanceITS = fCorrections->GetConstantCorrections(kTRUE,fgPtITSCutOff,"EMCAL");
477          fCorrHadEtEMCALAcceptanceTPC = fCorrections->GetConstantCorrections(kFALSE,fgPtTPCCutOff,"EMCAL");
478          fCorrHadEtEMCALAcceptanceITS = fCorrections->GetConstantCorrections(kFALSE,fgPtITSCutOff,"EMCAL");
479          fCorrTotEtPHOSAcceptanceTPC = fCorrections->GetConstantCorrections(kTRUE,fgPtTPCCutOff,"PHOS");
480          fCorrTotEtPHOSAcceptanceITS = fCorrections->GetConstantCorrections(kTRUE,fgPtITSCutOff,"PHOS");
481          fCorrHadEtPHOSAcceptanceTPC = fCorrections->GetConstantCorrections(kFALSE,fgPtTPCCutOff,"PHOS");
482          fCorrHadEtPHOSAcceptanceITS = fCorrections->GetConstantCorrections(kFALSE,fgPtITSCutOff,"PHOS");
483        }
484        else{cerr<<"Uh-oh!  Unable to open configuration file!"<<endl;}
485      }
486 }
487 void AliAnalysisHadEtReconstructed::CreateHistograms(){//Creating histograms and adding them to the output TList
488
489   //TString *strTPC = new TString("TPC");
490   TString *strITS = new TString("ITS");
491   TString *strTPCITS = new TString("TPCITS");
492   for(Int_t i=0;i<2;i++){
493     TString *cutName = NULL;
494     Float_t maxPtdEdx = 10;
495     Float_t mindEdx = 35;
496     Float_t maxdEdx = 150.0;
497     switch(i){
498     case 0:
499       cutName = strTPCITS;
500       break;
501     case 1:
502       cutName = strITS;
503       maxPtdEdx = 5;
504       maxdEdx = 500.0;
505       break;
506       //not deleting this completely since we might want to add it back in later
507 //     case 2:
508 //       cutName = strTPC;
509 //       maxPtdEdx = 5;
510 //       maxdEdx = 500.0;
511 //       break;
512     default:
513       cerr<<"Error:  cannot make histograms!"<<endl;
514       return;
515     }
516
517     CreateEtaPtHisto2D(Form("EtDataRaw%sPiPlus",cutName->Data()),"Raw reconstructed E_{T} from identified #pi^{+}");
518     CreateEtaPtHisto2D(Form("EtDataRaw%sPiMinus",cutName->Data()),"Raw reconstructed E_{T} from identified #pi^{-}");
519     CreateEtaPtHisto2D(Form("EtDataRaw%sKPlus",cutName->Data()),"Raw reconstructed E_{T} from identified K^{+}");
520 //     CreateEtaPtHisto2D(Form("EtDataRaw%sEMinus",cutName->Data()),"Raw reconstructed E_{T} from identified e^{-}");
521 //     CreateEtaPtHisto2D(Form("EtDataRaw%sEPlus",cutName->Data()),"Raw reconstructed E_{T} from identified e^{+}");
522     CreateEtaPtHisto2D(Form("EtDataRaw%sKMinus",cutName->Data()),"Raw reconstructed E_{T} from identified K^{-}");
523     CreateEtaPtHisto2D(Form("EtDataRaw%sProton",cutName->Data()),"Raw reconstructed E_{T} from identified p");
524     CreateEtaPtHisto2D(Form("EtDataRaw%sAntiProton",cutName->Data()),"Raw reconstructed E_{T} from identified #bar{p}");
525     CreateEtaPtHisto2D(Form("EtDataRaw%sUnidentified",cutName->Data()),"Raw reconstructed E_{T} from unidentified particles using real mass");
526     CreateEtaPtHisto2D(Form("EtDataRaw%sNoID",cutName->Data()),"Raw reconstructed E_{T} from unidentified particles using real mass");
527
528     CreateEtaPtHisto2D(Form("EtDataCorrected%sPiPlus",cutName->Data()),"Corrected reconstructed E_{T} from identified #pi^{+}");
529     CreateEtaPtHisto2D(Form("EtDataCorrected%sPiMinus",cutName->Data()),"Corrected reconstructed E_{T} from identified #pi^{-}");
530     CreateEtaPtHisto2D(Form("EtDataCorrected%sKPlus",cutName->Data()),"Corrected reconstructed E_{T} from identified K^{+}");
531 //     CreateEtaPtHisto2D(Form("EtDataCorrected%sEMinus",cutName->Data()),"Corrected reconstructed E_{T} from identified e^{-}");
532 //     CreateEtaPtHisto2D(Form("EtDataCorrected%sEPlus",cutName->Data()),"Corrected reconstructed E_{T} from identified e^{+}");
533     CreateEtaPtHisto2D(Form("EtDataCorrected%sKMinus",cutName->Data()),"Corrected reconstructed E_{T} from identified K^{-}");
534     CreateEtaPtHisto2D(Form("EtDataCorrected%sProton",cutName->Data()),"Corrected reconstructed E_{T} from identified p");
535     CreateEtaPtHisto2D(Form("EtDataCorrected%sAntiProton",cutName->Data()),"Corrected reconstructed E_{T} from identified #bar{p}");
536     CreateEtaPtHisto2D(Form("EtDataCorrected%sUnidentified",cutName->Data()),"Corrected reconstructed E_{T} from unidentified particles using real mass");
537     CreateEtaPtHisto2D(Form("EtDataCorrected%sNoID",cutName->Data()),"Corrected reconstructed E_{T} from unidentified particles using real mass");
538
539
540     CreateEtaPtHisto2D(Form("EtNData%sPiPlus",cutName->Data()),"Number of reconstructed #pi^{+}");
541     CreateEtaPtHisto2D(Form("EtNData%sPiMinus",cutName->Data()),"Number of reconstructed #pi^{-}");
542     CreateEtaPtHisto2D(Form("EtNData%sKPlus",cutName->Data()),"Number of reconstructed K^{+}");
543     CreateEtaPtHisto2D(Form("EtNData%sKMinus",cutName->Data()),"Number of reconstructed K^{-}");
544     CreateEtaPtHisto2D(Form("EtNData%sProton",cutName->Data()),"Number of reconstructed p");
545     CreateEtaPtHisto2D(Form("EtNData%sAntiProton",cutName->Data()),"Number of reconstructed #bar{p}");
546     CreateEtaPtHisto2D(Form("EtNData%sUnidentified",cutName->Data()),"Number of Reconstructed unidentified particles");
547
548     CreateHisto2D(Form("dEdxDataAll%s",cutName->Data()),"dE/dx for all particles","momentum (GeV/c)","dE/dx",400,0.0,maxPtdEdx,200,mindEdx,maxdEdx);
549     CreateHisto2D(Form("dEdxDataPion%s",cutName->Data()),"dE/dx for #pi^{#pm}","momentum (GeV/c)","dE/dx",400,0.0,maxPtdEdx,200,mindEdx,maxdEdx);
550     CreateHisto2D(Form("dEdxDataKaon%s",cutName->Data()),"dE/dx for K^{#pm}","momentum (GeV/c)","dE/dx",400,0.0,maxPtdEdx,200,mindEdx,maxdEdx);
551     CreateHisto2D(Form("dEdxDataProton%s",cutName->Data()),"dE/dx for p(#bar{p})","momentum (GeV/c)","dE/dx",400,0.0,maxPtdEdx,200,mindEdx,maxdEdx);
552     CreateHisto2D(Form("dEdxDataElectron%s",cutName->Data()),"dE/dx for e^{#pm}","momentum (GeV/c)","dE/dx",400,0.0,maxPtdEdx,200,mindEdx,maxdEdx);
553     CreateHisto2D(Form("dEdxDataUnidentified%s",cutName->Data()),"dE/dx for unidentified particles","momentum (GeV/c)","dE/dx",400,0.0,maxPtdEdx,200,mindEdx,maxdEdx);
554   }
555
556   Float_t minEt = 0.0;
557   Float_t maxEt = 100.0;
558   Int_t nbinsEt = 200;
559   char histoname[200];
560   char histotitle[200];
561   char xtitle[50];
562   TString *ytitle = new TString("Number of events");
563   TString *sTPC = new TString("TPC");
564   TString *sITS = new TString("ITS");
565   TString *sTPCpt = new TString("0.15");
566   TString *sITSpt = new TString("0.10");
567   TString *sPID = new TString("");
568   TString *sNoPID = new TString("NoPID");
569   TString *sNoPIDString = new TString(", No PID");
570   TString *sHadEt = new TString("HadEt");
571   TString *sRawEt = new TString("RawEt");
572   TString *sTotEt = new TString("TotEt");
573   TString *sTotEtString = new TString("total E_{T}");
574   TString *sHadEtString = new TString("hadronic E_{T}");
575   TString *sRawEtString = new TString("raw E_{T}");
576   TString *sFull = new TString("Full");
577   TString *sEMCAL = new TString("EMCAL");
578   TString *sPHOS = new TString("PHOS");
579   
580   for(int tpc = 0;tpc<2;tpc++){
581     for(int hadet = 0;hadet<3;hadet++){
582       for(int type = 0;type<3;type++){
583         for(int pid = 0;pid<2;pid++){
584           TString *detector = NULL;
585           TString *partid = NULL;
586           TString *et = sHadEt;
587           TString *acceptance = NULL;
588           TString *ptstring = NULL;
589           TString *partidstring = NULL;
590           TString *etstring = sHadEtString;
591           if(tpc==1) {detector = sTPC; ptstring = sTPCpt;}
592           else{detector = sITS; ptstring = sITSpt;}
593           if(pid==1){partid = sPID; partidstring = sPID;}
594           else{partid = sNoPID; partidstring = sNoPIDString;}
595           if(hadet==1) {et = sHadEt; etstring = sHadEtString;}
596           if(hadet==0){et = sTotEt; etstring = sTotEtString;}
597           if(hadet==2){et = sRawEt; etstring = sRawEtString;}
598           switch(type){
599           case 0:
600             acceptance = sFull;
601             break;
602           case 1:
603             acceptance = sEMCAL;
604             break;
605           case 2:
606             acceptance = sPHOS;
607             break;
608           default:
609             acceptance = sFull;
610           }
611           snprintf(histoname,200,"Reco%s%sAcceptance%s%s",et->Data(),acceptance->Data(),detector->Data(),partid->Data());
612           snprintf(histotitle,200,"Reconstructed %s with %s acceptance for p_{T}>%s GeV/c%s",etstring->Data(),acceptance->Data(),ptstring->Data(),partidstring->Data());
613           snprintf(xtitle,50,"Reconstructed %s",etstring->Data());
614           CreateHisto1D(histoname,histotitle,xtitle,ytitle->Data(),nbinsEt*2,minEt,maxEt);
615         }
616       }
617     }
618   }
619   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);
620   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);
621   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);
622   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);
623   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);
624   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);
625
626   delete sTPC;
627   delete sITS;
628   delete sTPCpt;
629   delete sITSpt;
630   delete sPID;
631   delete sNoPID;
632   delete sNoPIDString;
633   delete sHadEt;
634   delete sTotEt;
635   delete sTotEtString;
636   delete sHadEtString;
637   delete sFull;
638   delete sEMCAL;
639   delete sPHOS;
640
641 }