]> git.uio.no Git - u/mrichter/AliRoot.git/blob - PWG4/totEt/AliAnalysisHadEtReconstructed.cxx
bugfix: the AliHLTOUTTask supposed to receive the output of an HLT reconstruction...
[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
30 using namespace std;
31
32 ClassImp(AliAnalysisHadEtReconstructed);
33
34
35 AliAnalysisHadEtReconstructed::AliAnalysisHadEtReconstructed() :
36         AliAnalysisHadEt()
37         ,fCorrections(0)
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)
81 {
82 }
83
84 AliAnalysisHadEtReconstructed::~AliAnalysisHadEtReconstructed() 
85 {
86   delete fCorrections;
87 }
88
89 Int_t AliAnalysisHadEtReconstructed::AnalyseEvent(AliVEvent* ev)
90 { // analyse ESD event
91     ResetEventValues();
92   if(!ev){
93     Printf("ERROR: Event does not exist");   
94     return 0;
95   }
96
97     AliESDEvent *realEvent = dynamic_cast<AliESDEvent*>(ev);
98     //for PID
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++){
105       bool isTPC = false;
106       TString *cutName = NULL;
107       TObjArray* list = NULL;
108       switch(cutset){
109       case 0:
110         cutName = strTPCITS;
111         list = fEsdtrackCutsITSTPC->GetAcceptedTracks(realEvent);
112         isTPC = true;
113         break;
114       case 1:
115         cutName = strITS;
116         list = fEsdtrackCutsITS->GetAcceptedTracks(realEvent);
117         break;
118       case 2:
119         cutName = strTPC;
120         list = fEsdtrackCutsTPC->GetAcceptedTracks(realEvent);
121         break;
122       default:
123         cerr<<"Error:  cannot fill histograms!"<<endl;
124         return -1;
125       }
126       Int_t nGoodTracks = list->GetEntries();
127       for (Int_t iTrack = 0; iTrack < nGoodTracks; iTrack++)
128         {
129
130
131           AliESDtrack *track = dynamic_cast<AliESDtrack*> (list->At(iTrack));
132           if (!track)
133             {
134               Printf("ERROR: Could not get track %d", iTrack);
135               continue;
136             }
137           else{
138             if(TMath::Abs(track->Eta())>fCorrections->GetEtaCut()) continue;
139             Float_t nSigmaPion,nSigmaProton,nSigmaKaon,nSigmaElectron;
140             if(cutset!=1){
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));
145             }
146             else{
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));
151             }
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);
160
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);
165
166             bool inPHOS = IsInPHOS(track);
167             bool inEMCAL = IsInEMCAL(track);
168
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;
174             if(cutset==0){//TPC
175               corrBkgd = fCorrections->GetBackgroundCorrectionTPC(track->Pt());
176               corrEffNoID = fCorrections->GetTPCEfficiencyCorrectionHadron(track->Pt());
177               corrNotID = fCorrections->GetNotIDConstCorrectionTPC();
178               corrNoID = fCorrections->GetNotIDConstCorrectionTPCNoID();
179             }
180             if(cutset==1){//ITS
181               corrBkgd = fCorrections->GetBackgroundCorrectionITS(track->Pt());
182               corrEffNoID = fCorrections->GetITSEfficiencyCorrectionHadron(track->Pt());
183               corrNotID = fCorrections->GetNotIDConstCorrectionITS();
184               corrNoID = fCorrections->GetNotIDConstCorrectionITSNoID();
185             }
186             Float_t et = 0.0;
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);
194
195             if(isPion){
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;
201               
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);
205               }
206               else{
207                 FillHisto2D(Form("EtDataRaw%sPiMinus",cutName->Data()),track->Pt(),track->Eta(),et);
208                 FillHisto2D(Form("EtDataCorrected%sPiMinus",cutName->Data()),track->Pt(),track->Eta(),etpartialcorrected);
209               }
210             }
211             if(isKaon){
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;
217               
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);
221               }
222               else{
223                 FillHisto2D(Form("EtDataRaw%sKMinus",cutName->Data()),track->Pt(),track->Eta(),et);
224                 FillHisto2D(Form("EtDataCorrected%sKMinus",cutName->Data()),track->Pt(),track->Eta(),etpartialcorrected);
225               }
226             }
227             if(isProton){
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;
233               
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);
237               }
238               else{
239                 FillHisto2D(Form("EtDataRaw%sAntiProton",cutName->Data()),track->Pt(),track->Eta(),et);
240                 FillHisto2D(Form("EtDataCorrected%sAntiProton",cutName->Data()),track->Pt(),track->Eta(),etpartialcorrected);
241               }
242             }
243             if(isElectron){
244               FillHisto2D(Form("dEdxDataProton%s",cutName->Data()),track->P(),dEdx,1.0);
245               //et = Et(track->P(),track->Theta(),fgPiPlusCode,track->Charge());
246             }
247             if(unidentified){
248               //if(!isPion) 
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;
257               //if(!isPion) 
258               FillHisto2D(Form("EtDataCorrected%sUnidentified",cutName->Data()),track->Pt(),track->Eta(),etpartialcorrected);
259             }
260             else{
261               etpartialcorrectedPion = etpartialcorrected;
262               etpartialcorrectedKaon = etpartialcorrected;
263               etpartialcorrectedProton = etpartialcorrected;
264             }
265             if(!isTPC){
266               etpartialcorrected = etpartialcorrectedNoID;//Not using PID for ITS
267             }
268             AddEt(et,etNoID,etpartialcorrected,etpartialcorrectedPion,etpartialcorrectedProton,etpartialcorrectedKaon,etpartialcorrectedNoID,track->Pt(),isTPC,inPHOS,inEMCAL);
269           }
270         }
271       delete list;
272     }
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);
303
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);
316     delete pID;
317     delete strTPC;
318     delete strITS;
319     delete strTPCITS;
320     return 1;
321 }
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;
341   }
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;
360   }
361 }
362
363 Bool_t AliAnalysisHadEtReconstructed::IsInPHOS(AliESDtrack *track){//This function will need to be elaborated on later to include PHOS dead channels
364   if(!track){
365     cout<<"Error: Track does not exist!!"<<endl;
366     return kFALSE;
367   }
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
371 }
372 Bool_t AliAnalysisHadEtReconstructed::IsInEMCAL(AliESDtrack *track){//This function will need to be elaborated on later to include EMCAL dead channels
373   if(!track){
374     cout<<"Error: Track does not exist!!"<<endl;
375     return kFALSE;
376   }
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
380 }
381 Bool_t AliAnalysisHadEtReconstructed::CheckGoodVertex(AliVParticle* track)
382 { // check vertex
383   if(!track){
384     cout<<"Error: Track does not exist!!"<<endl;
385     return kFALSE;
386   }
387
388     Float_t bxy = 999.;
389     Float_t bz = 999.;
390     dynamic_cast<AliESDtrack*>(track)->GetImpactParametersTPC(bxy,bz);
391
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()); 
397
398     return status;
399 }
400
401 void AliAnalysisHadEtReconstructed::Init()
402 { // Init
403   AliAnalysisHadEt::Init();
404   if(fCorrections){
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");
417   }
418   else{
419     cout<<"Warning!  You have not set corrections.  Your code will crash.  You have to set the corrections."<<endl;
420   }
421 }
422
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;
455
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");
473        }
474        else{cerr<<"Uh-oh!  Unable to open configuration file!"<<endl;}
475      }
476 }
477 void AliAnalysisHadEtReconstructed::CreateHistograms(){//Creating histograms and adding them to the output TList
478
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;
487     switch(i){
488     case 0:
489       cutName = strTPCITS;
490       break;
491     case 1:
492       cutName = strITS;
493       maxPtdEdx = 5;
494       maxdEdx = 500.0;
495       break;
496       //not deleting this completely since we might want to add it back in later
497 //     case 2:
498 //       cutName = strTPC;
499 //       maxPtdEdx = 5;
500 //       maxdEdx = 500.0;
501 //       break;
502     default:
503       cerr<<"Error:  cannot make histograms!"<<endl;
504       return;
505     }
506
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");
517
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");
528
529
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");
537
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);
544   }
545
546   Float_t minEt = 0.0;
547   Float_t maxEt = 100.0;
548   Int_t nbinsEt = 200;
549   char histoname[200];
550   char histotitle[200];
551   char xtitle[50];
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");
569   
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;}
588           switch(type){
589           case 0:
590             acceptance = sFull;
591             break;
592           case 1:
593             acceptance = sEMCAL;
594             break;
595           case 2:
596             acceptance = sPHOS;
597             break;
598           default:
599             acceptance = sFull;
600           }
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);
605         }
606       }
607     }
608   }
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);
615
616   delete sTPC;
617   delete sITS;
618   delete sTPCpt;
619   delete sITSpt;
620   delete sPID;
621   delete sNoPID;
622   delete sNoPIDString;
623   delete sHadEt;
624   delete sTotEt;
625   delete sTotEtString;
626   delete sHadEtString;
627   delete sFull;
628   delete sEMCAL;
629   delete sPHOS;
630
631 }