]> git.uio.no Git - u/mrichter/AliRoot.git/blob - PWGLF/totEt/AliAnalysisHadEtReconstructed.cxx
Merge branch 'master' of https://git.cern.ch/reps/AliRoot
[u/mrichter/AliRoot.git] / PWGLF / 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 "AliCentrality.h"
30 #include "AliLog.h"
31 #include "AliPIDResponse.h"
32 #include "AliTPCPIDResponse.h" 
33 #include "AliInputEventHandler.h"
34 #include "AliAnalysisManager.h"
35 #include "AliPWG0Helper.h"
36
37 using namespace std;
38
39 ClassImp(AliAnalysisHadEtReconstructed);
40
41
42 AliAnalysisHadEtReconstructed::AliAnalysisHadEtReconstructed() :
43   AliAnalysisHadEt()
44   ,fCorrections(0)
45   ,fConfigFile("ConfigHadEtAnalysis.C")
46   ,fCorrTotEtFullAcceptanceTPC(0)
47   ,fCorrTotEtFullAcceptanceITS(0)
48   ,fCorrHadEtFullAcceptanceTPC(0)
49   ,fCorrHadEtFullAcceptanceITS(0)
50   ,fCorrPiKPEtFullAcceptanceTPC(0)
51   ,fCorrPiKPEtFullAcceptanceITS(0)
52   ,fCorrTotEtEMCALAcceptanceTPC(0)
53   ,fCorrTotEtEMCALAcceptanceITS(0)
54   ,fCorrHadEtEMCALAcceptanceTPC(0)
55   ,fCorrHadEtEMCALAcceptanceITS(0)
56   ,fCorrTotEtPHOSAcceptanceTPC(0)
57   ,fCorrTotEtPHOSAcceptanceITS(0)
58   ,fCorrHadEtPHOSAcceptanceTPC(0)
59   ,fCorrHadEtPHOSAcceptanceITS(0)
60   ,fCorrectedHadEtFullAcceptanceTPCNoPID(0)
61   ,fCorrectedHadEtFullAcceptanceITSNoPID(0)
62   ,fCorrectedHadEtEMCALAcceptanceTPCNoPID(0)
63   ,fCorrectedHadEtEMCALAcceptanceITSNoPID(0)
64   ,fCorrectedHadEtPHOSAcceptanceTPCNoPID(0)
65   ,fCorrectedHadEtPHOSAcceptanceITSNoPID(0)
66   ,fCorrectedHadEtFullAcceptanceTPC(0)
67   ,fCorrectedHadEtFullAcceptanceITS(0)
68   ,fCorrectedHadEtFullAcceptanceTPCAssumingPion(0)
69   ,fCorrectedHadEtFullAcceptanceITSAssumingPion(0)
70   ,fCorrectedHadEtFullAcceptanceTPCAssumingProton(0)
71   ,fCorrectedHadEtFullAcceptanceITSAssumingProton(0)
72   ,fCorrectedHadEtFullAcceptanceTPCAssumingKaon(0)
73   ,fCorrectedHadEtFullAcceptanceITSAssumingKaon(0)
74   ,fCorrectedHadEtEMCALAcceptanceTPC(0)
75   ,fCorrectedHadEtEMCALAcceptanceITS(0)
76   ,fCorrectedHadEtPHOSAcceptanceTPC(0)
77   ,fCorrectedHadEtPHOSAcceptanceITS(0)
78   ,fRawEtFullAcceptanceTPC(0)
79   ,fRawEtFullAcceptanceITS(0)
80   ,fRawEtEMCALAcceptanceTPC(0)
81   ,fRawEtEMCALAcceptanceITS(0)
82   ,fRawEtPHOSAcceptanceTPC(0)
83   ,fRawEtPHOSAcceptanceITS(0)
84   ,fRawEtFullAcceptanceTPCNoPID(0)
85   ,fRawEtFullAcceptanceITSNoPID(0)
86   ,fRawEtEMCALAcceptanceTPCNoPID(0)
87   ,fRawEtEMCALAcceptanceITSNoPID(0)
88   ,fRawEtPHOSAcceptanceTPCNoPID(0)
89   ,fRawEtPHOSAcceptanceITSNoPID(0)
90   ,kIsOfflineV0AND(0)
91   ,kDoTriggerChecks(0)
92   ,kDoTriggerChecksOnly(0)
93 {
94 }
95
96 AliAnalysisHadEtReconstructed::~AliAnalysisHadEtReconstructed() 
97 {
98   delete fCorrections;
99 }
100
101 Int_t AliAnalysisHadEtReconstructed::AnalyseEvent(AliVEvent* ev, Int_t eventtype)
102 { // analyse ESD event
103   if(kDoTriggerChecksOnly){return 1;}//In this case we are just after trigger efficiencies and don't care about the ET reconstructed.
104   if(kDoTriggerChecks && !kIsOfflineV0AND){return 1;}//In this case we are just after trigger efficiencies and don't care about the ET reconstructed.
105   ResetEventValues();
106   if(!ev){
107     AliFatal("ERROR: Event does not exist");   
108     return 0;
109   }
110
111   AliESDEvent *realEvent = dynamic_cast<AliESDEvent*>(ev);
112   if(!realEvent){  
113     AliFatal("ERROR: ESD Event does not exist");
114     return 0;
115   }
116   fCentBin= -1;
117   fGoodEvent = kTRUE;//for p+p collisions if we made it this far we have a good event
118   if(fDataSet==20100||fDataSet==2011){//If this is Pb+Pb or pPb
119 //     AliCentrality *centrality = realEvent->GetCentrality();
120 //     if(fNCentBins<21) fCentBin= centrality->GetCentralityClass10(fCentralityMethod);
121 //     else{ fCentBin= centrality->GetCentralityClass5(fCentralityMethod);}
122     AliCentrality *centrality =  realEvent->GetCentrality();
123     fCentBin = GetCentralityBin(fNCentBins, centrality);
124     if(fCentBin ==-1){
125       if(fDataSet==2013){
126         fCentBin = 19;//For pPb we don't want to throw these events out but there is no CB 19
127       }
128       else{
129         fGoodEvent = kFALSE;//but for Pb+Pb events we don't want to count events where we did not find a centrality
130       }
131     }
132   }
133   //for PID
134 //   AliESDpid *pID = new AliESDpid();
135 //   pID->MakePID(realEvent);
136   TString *strTPC = new TString("TPC");
137   TString *strITS = new TString("ITS");
138   TString *strTPCITS = new TString("TPCITS");
139   for(Int_t cutset=0;cutset<2;cutset++){
140     bool isTPC = false;
141     TString *cutName = NULL;
142     TObjArray* list = NULL;
143     switch(cutset){
144     case 0:
145       cutName = strTPCITS;
146       list = fEsdtrackCutsITSTPC->GetAcceptedTracks(realEvent);
147       isTPC = true;
148       break;
149     case 1:
150       cutName = strITS;
151       list = fEsdtrackCutsITS->GetAcceptedTracks(realEvent);
152       break;
153     case 2:
154       cutName = strTPC;
155       list = fEsdtrackCutsTPC->GetAcceptedTracks(realEvent);
156       break;
157     default:
158       cerr<<"Error:  cannot fill histograms!"<<endl;
159       return -1;
160     }
161     Int_t nGoodTracks = list->GetEntries();
162     for (Int_t iTrack = 0; iTrack < nGoodTracks; iTrack++)
163       {
164
165
166         AliESDtrack *track = dynamic_cast<AliESDtrack*> (list->At(iTrack));
167         if (!track)
168           {
169             Printf("ERROR: Could not get track %d", iTrack);
170             continue;
171           }
172         else{
173           if(TMath::Abs(track->Eta())>fCorrections->GetEtaCut()) continue;
174           Float_t nSigmaPion,nSigmaProton,nSigmaKaon,nSigmaElectron;
175           Float_t nSigmaPionUnsigned,nSigmaProtonUnsigned,nSigmaKaonUnsigned,nSigmaElectronUnsigned;
176 //        pID->MakeTPCPID(track);
177 //        pID->MakeITSPID(track);
178           //if(!fPIDResponse) cout<<"Uh-oh!  No PID Response!"<<endl;
179           if(cutset!=1){
180             nSigmaPion = TMath::Abs(fPIDResponse->NumberOfSigmasTPC(track, AliPID::kPion)); 
181             nSigmaProton = TMath::Abs(fPIDResponse->NumberOfSigmasTPC(track, AliPID::kProton)); 
182             nSigmaKaon =TMath::Abs( fPIDResponse->NumberOfSigmasTPC(track, AliPID::kKaon)); 
183             nSigmaElectron =TMath::Abs( fPIDResponse->NumberOfSigmasTPC(track, AliPID::kElectron));
184
185             nSigmaPionUnsigned = fPIDResponse->NumberOfSigmasTPC(track, AliPID::kPion); 
186             nSigmaProtonUnsigned = fPIDResponse->NumberOfSigmasTPC(track, AliPID::kProton); 
187             nSigmaKaonUnsigned = fPIDResponse->NumberOfSigmasTPC(track, AliPID::kKaon); 
188             nSigmaElectronUnsigned = fPIDResponse->NumberOfSigmasTPC(track, AliPID::kElectron); 
189
190 //          nSigmaPion = TMath::Abs(pID->NumberOfSigmasTPC(track,AliPID::kPion));
191 //          nSigmaProton = TMath::Abs(pID->NumberOfSigmasTPC(track,AliPID::kProton));
192 //          nSigmaKaon = TMath::Abs(pID->NumberOfSigmasTPC(track,AliPID::kKaon));
193 //          nSigmaElectron = TMath::Abs(pID->NumberOfSigmasTPC(track,AliPID::kElectron));
194           }
195           else{
196             nSigmaPion = TMath::Abs(fPIDResponse->NumberOfSigmasITS(track, AliPID::kPion)); 
197             nSigmaProton = TMath::Abs(fPIDResponse->NumberOfSigmasITS(track, AliPID::kProton)); 
198             nSigmaKaon = TMath::Abs(fPIDResponse->NumberOfSigmasITS(track, AliPID::kKaon)); 
199             nSigmaElectron = TMath::Abs(fPIDResponse->NumberOfSigmasITS(track, AliPID::kElectron)); 
200
201             nSigmaPionUnsigned = fPIDResponse->NumberOfSigmasITS(track, AliPID::kPion); 
202             nSigmaProtonUnsigned = fPIDResponse->NumberOfSigmasITS(track, AliPID::kProton); 
203             nSigmaKaonUnsigned = fPIDResponse->NumberOfSigmasITS(track, AliPID::kKaon); 
204             nSigmaElectronUnsigned = fPIDResponse->NumberOfSigmasITS(track, AliPID::kElectron); 
205 //          nSigmaPion = TMath::Abs(pID->NumberOfSigmasITS(track,AliPID::kPion));
206 //          nSigmaProton = TMath::Abs(pID->NumberOfSigmasITS(track,AliPID::kProton));
207 //          nSigmaKaon = TMath::Abs(pID->NumberOfSigmasITS(track,AliPID::kKaon));
208 //          nSigmaElectron = TMath::Abs(pID->NumberOfSigmasITS(track,AliPID::kElectron));
209           }
210           //cout<<"Nsigma pion "<<nSigmaPion<<" proton "<<nSigmaProton<<" kaon "<<nSigmaKaon<<" electron "<<nSigmaElectron<<endl;
211           //        bool isPion = (nSigmaPion<3.0 && nSigmaProton>2.0 && nSigmaKaon>2.0);
212           //        bool isElectron = (nSigmaElectron<2.0 && nSigmaPion>4.0 && nSigmaProton>3.0 && nSigmaKaon>3.0);
213           //        bool isKaon = (nSigmaPion>3.0 && nSigmaProton>2.0 && nSigmaKaon<2.0);
214           //        bool isProton = (nSigmaPion>3.0 && nSigmaProton<2.0 && nSigmaKaon>2.0);
215           bool isPion = (nSigmaPion<3.0 && nSigmaProton>2.0 && nSigmaKaon>2.0);
216           bool isElectron = (nSigmaElectron<2.0 && nSigmaPion>4.0 && nSigmaProton>3.0 && nSigmaKaon>3.0);
217           bool isKaon = (nSigmaPion>3.0 && nSigmaProton>3.0 && nSigmaKaon<3.0 && track->Pt()<0.45);
218           bool isProton = (nSigmaPion>3.0 && nSigmaProton<3.0 && nSigmaKaon>3.0 && track->Pt()<0.9);
219
220           FillHisto2D(Form("dEdxDataNSigmaPionAll%s",cutName->Data()),track->P(),nSigmaPionUnsigned,1.0);
221           FillHisto2D(Form("dEdxDataNSigmaKaonAll%s",cutName->Data()),track->P(),nSigmaKaonUnsigned,1.0);
222           FillHisto2D(Form("dEdxDataNSigmaProtonAll%s",cutName->Data()),track->P(),nSigmaProtonUnsigned,1.0);
223           FillHisto2D(Form("dEdxDataNSigmaElectronAll%s",cutName->Data()),track->P(),nSigmaElectronUnsigned,1.0);
224           
225           bool unidentified = (!isProton && !isKaon && !isElectron && !isPion);
226           if(cutset==1){//ITS dE/dx identification requires tighter cuts on the tracks and we don't gain much from that so we won't do it
227             unidentified = true;
228             isPion=false;
229             isElectron=false;
230             isKaon=false;
231             isProton=false;
232           }
233           Float_t dEdx = track->GetTPCsignal();
234           if(cutset==1) dEdx = track->GetITSsignal();
235           FillHisto2D(Form("dEdxDataAll%s",cutName->Data()),track->P(),dEdx,1.0);
236
237           bool inPHOS = IsInPHOS(track);
238           bool inEMCAL = IsInEMCAL(track);
239
240           Float_t corrBkgd=0.0;
241           Float_t corrNotID=0.0;
242           Float_t corrNoID = fCorrections->GetNotIDCorrectionNoPID(track->Pt());
243           Float_t corrEff = 0.0;
244           Float_t corrEffNoID = 0.0;
245           if(cutset!=1){//TPC
246             corrBkgd = fCorrections->GetBackgroundCorrectionTPC(track->Pt());
247             corrEffNoID = fCorrections->GetTPCEfficiencyCorrectionHadron(track->Pt(),fCentBin);
248             corrNotID = fCorrections->GetNotIDConstCorrectionTPC();
249             corrNoID = fCorrections->GetNotIDConstCorrectionTPCNoID();
250           }
251           if(cutset==1){//ITS
252             corrBkgd = fCorrections->GetBackgroundCorrectionITS(track->Pt());
253             corrEffNoID = fCorrections->GetITSEfficiencyCorrectionHadron(track->Pt(),fCentBin);
254             corrNotID = fCorrections->GetNotIDConstCorrectionITS();
255             corrNoID = fCorrections->GetNotIDConstCorrectionITSNoID();
256           }
257           if(fDataSet==20100||fDataSet==2011){
258             FillHisto2D("fbkgdVsCentralityBin",fCentBin,corrBkgd,1.0);
259             FillHisto2D("fnotIDVsCentralityBin",fCentBin,corrNotID,1.0);
260             FillHisto2D("fpTcutVsCentralityBin",fCentBin,fCorrections->GetpTCutCorrectionTPC(),1.0);
261             if(fCorrHadEtFullAcceptanceTPC>0.0) FillHisto2D("fneutralVsCentralityBin",fCentBin,1.0/fCorrHadEtFullAcceptanceTPC,1.0);
262             if(fCorrections->GetNeutralCorrection()>0.0) FillHisto2D("ConstantCorrectionsVsCentralityBin",fCentBin,1.0/fCorrections->GetNeutralCorrection(),1.0);
263           }
264           Float_t et = 0.0;
265           Float_t etNoID = Et(track->P(),track->Theta(),fgPiPlusCode,track->Charge());
266           Float_t etpartialcorrected = 0.0;
267           Float_t etpartialcorrectedPion = 0.0;
268           Float_t etpartialcorrectedKaon = 0.0;
269           Float_t etpartialcorrectedProton = 0.0;
270           Float_t etpartialcorrectedNoID = corrNoID*corrBkgd*corrEffNoID*etNoID;
271           FillHisto2D(Form("EtDataRaw%sNoID",cutName->Data()),track->Pt(),track->Eta(),etpartialcorrectedNoID);
272
273           if(isPion){
274             FillHisto2D(Form("dEdxDataPion%s",cutName->Data()),track->P(),dEdx,1.0);
275             FillHisto2D(Form("dEdxDataNSigmaPion%s",cutName->Data()),track->P(),nSigmaPionUnsigned,1.0);
276             et = Et(track->P(),track->Theta(),fgPiPlusCode,track->Charge());
277             if(cutset==0){corrEff = fCorrections->GetTPCEfficiencyCorrectionPion(track->Pt(),fCentBin);}
278             etpartialcorrected = et*corrBkgd*corrEff*corrNotID;
279             if(corrEff>0.0&&(fDataSet==20100||fDataSet==2011))FillHisto2D("feffPionVsCentralityBin",fCentBin,1.0/corrEff,1.0);
280             if(track->Charge()>0.0){
281               FillHisto2D(Form("EtDataRaw%sPiPlus",cutName->Data()),track->Pt(),track->Eta(),et);
282               FillHisto2D(Form("EtDataCorrected%sPiPlus",cutName->Data()),track->Pt(),track->Eta(),etpartialcorrected);
283             }
284             else{
285               FillHisto2D(Form("EtDataRaw%sPiMinus",cutName->Data()),track->Pt(),track->Eta(),et);
286               FillHisto2D(Form("EtDataCorrected%sPiMinus",cutName->Data()),track->Pt(),track->Eta(),etpartialcorrected);
287             }
288           }
289           if(isKaon){
290             FillHisto2D(Form("dEdxDataKaon%s",cutName->Data()),track->P(),dEdx,1.0);
291             FillHisto2D(Form("dEdxDataNSigmaKaon%s",cutName->Data()),track->P(),nSigmaKaonUnsigned,1.0);
292             et = Et(track->P(),track->Theta(),fgKPlusCode,track->Charge());
293             if(cutset==0){corrEff = fCorrections->GetTPCEfficiencyCorrectionKaon(track->Pt(),fCentBin);}
294             etpartialcorrected = et*corrBkgd*corrEff*corrNotID;
295             if(corrEff>0.0&&(fDataSet==20100||fDataSet==2011))FillHisto2D("feffKaonVsCentralityBin",fCentBin,1.0/corrEff,1.0);
296               
297             if(track->Charge()>0.0){
298               FillHisto2D(Form("EtDataRaw%sKPlus",cutName->Data()),track->Pt(),track->Eta(),et);
299               FillHisto2D(Form("EtDataCorrected%sKPlus",cutName->Data()),track->Pt(),track->Eta(),etpartialcorrected);
300             }
301             else{
302               FillHisto2D(Form("EtDataRaw%sKMinus",cutName->Data()),track->Pt(),track->Eta(),et);
303               FillHisto2D(Form("EtDataCorrected%sKMinus",cutName->Data()),track->Pt(),track->Eta(),etpartialcorrected);
304             }
305           }
306           if(isProton){
307             FillHisto2D(Form("dEdxDataProton%s",cutName->Data()),track->P(),dEdx,1.0);
308             FillHisto2D(Form("dEdxDataNSigmaProton%s",cutName->Data()),track->P(),nSigmaProtonUnsigned,1.0);
309             et = Et(track->P(),track->Theta(),fgProtonCode,track->Charge());
310             if(cutset==0){corrEff = fCorrections->GetTPCEfficiencyCorrectionProton(track->Pt(),fCentBin);}
311             etpartialcorrected = et*corrBkgd*corrEff*corrNotID;
312             if(corrEff>0.0&&(fDataSet==20100||fDataSet==2011))FillHisto2D("feffProtonVsCentralityBin",fCentBin,1.0/corrEff,1.0);
313               
314             if(track->Charge()>0.0){
315               FillHisto2D(Form("EtDataRaw%sProton",cutName->Data()),track->Pt(),track->Eta(),et);
316               FillHisto2D(Form("EtDataCorrected%sProton",cutName->Data()),track->Pt(),track->Eta(),etpartialcorrected);
317             }
318             else{
319               FillHisto2D(Form("EtDataRaw%sAntiProton",cutName->Data()),track->Pt(),track->Eta(),et);
320               FillHisto2D(Form("EtDataCorrected%sAntiProton",cutName->Data()),track->Pt(),track->Eta(),etpartialcorrected);
321             }
322           }
323           if(isElectron){
324             FillHisto2D(Form("dEdxDataElectron%s",cutName->Data()),track->P(),dEdx,1.0);
325             FillHisto2D(Form("dEdxDataNSigmaElectron%s",cutName->Data()),track->P(),nSigmaElectronUnsigned,1.0);
326           }
327           if(unidentified){
328             if(isPion) cerr<<"I should not be here!!  AliAnalysisHadEtReconstructed 273"<<endl; 
329             FillHisto2D(Form("dEdxDataUnidentified%s",cutName->Data()),track->P(),dEdx,1.0);
330             et = Et(track->P(),track->Theta(),fgPiPlusCode,track->Charge());
331             Float_t etProton = Et(track->P(),track->Theta(),fgProtonCode,track->Charge());
332             Float_t etKaon = Et(track->P(),track->Theta(),fgKPlusCode,track->Charge());
333             if(corrEff>0.0&&(fDataSet==20100||fDataSet==2011))FillHisto2D("feffHadronVsCentralityBin",fCentBin,1.0/corrEff,1.0);
334             etpartialcorrected = et*corrBkgd*corrEffNoID*corrNotID;
335             etpartialcorrectedPion = et*corrBkgd*corrEffNoID;
336             etpartialcorrectedProton = etProton*corrBkgd*corrEffNoID;
337             etpartialcorrectedKaon = etKaon*corrBkgd*corrEffNoID;
338             FillHisto2D(Form("EtDataCorrected%sUnidentified",cutName->Data()),track->Pt(),track->Eta(),etpartialcorrected);
339           }
340           else{
341             etpartialcorrectedPion = etpartialcorrected;
342             etpartialcorrectedKaon = etpartialcorrected;
343             etpartialcorrectedProton = etpartialcorrected;
344           }
345           if(!isTPC){
346             etpartialcorrected = etpartialcorrectedNoID;//Not using PID for ITS
347           }
348           AddEt(et,etNoID,etpartialcorrected,etpartialcorrectedPion,etpartialcorrectedProton,etpartialcorrectedKaon,etpartialcorrectedNoID,track->Pt(),isTPC,inPHOS,inEMCAL);
349         }
350       }
351     delete list;
352   }
353
354   Int_t nondiff = 0;//(Int_t) AliPWG0Helper::kND;
355   Int_t doublediff = 0;//(Int_t) AliPWG0Helper::kDD;
356   Int_t singlediff = 0;//(Int_t) AliPWG0Helper::kSD;
357   if(fDataSet!=20100 && fDataSet!=2011){
358     nondiff = (Int_t) AliPWG0Helper::kND;
359     doublediff = (Int_t) AliPWG0Helper::kDD;
360     singlediff = (Int_t) AliPWG0Helper::kSD;
361   }
362 //  cout<<"event type "<<eventtype<<" nondiff event type "<<nondiff<<" data set "<<fDataSet<<" good event "<<fGoodEvent<<endl;
363   if((eventtype == nondiff|| fDataSet==20100 || fDataSet==2011)  && fGoodEvent){
364     //cout<<"Filling "<<endl;
365     FillHisto1D("RecoHadEtFullAcceptanceTPCND",GetCorrectedHadEtFullAcceptanceTPC(),1.0);
366     FillHisto1D("RecoPiKPEtFullAcceptanceTPCND",GetCorrectedPiKPEtFullAcceptanceTPC(),1.0);
367     FillHisto1D("RecoTotEtFullAcceptanceTPCND",GetCorrectedTotEtFullAcceptanceTPC(),1.0);
368     FillHisto1D("RecoHadEtFullAcceptanceITSND",GetCorrectedHadEtFullAcceptanceITS(),1.0);
369     FillHisto1D("RecoPiKPEtFullAcceptanceITSND",GetCorrectedPiKPEtFullAcceptanceITS(),1.0);
370     FillHisto1D("RecoTotEtFullAcceptanceITSND",GetCorrectedTotEtFullAcceptanceITS(),1.0);
371     FillHisto1D("RecoHadEtFullAcceptanceTPCNoPIDND",GetCorrectedHadEtFullAcceptanceTPCNoPID(),1.0);
372     FillHisto1D("RecoPiKPEtFullAcceptanceTPCNoPIDND",GetCorrectedPiKPEtFullAcceptanceTPCNoPID(),1.0);
373     FillHisto1D("RecoTotEtFullAcceptanceTPCNoPIDND",GetCorrectedTotEtFullAcceptanceTPCNoPID(),1.0);
374     FillHisto1D("RecoHadEtFullAcceptanceITSNoPIDND",GetCorrectedHadEtFullAcceptanceITSNoPID(),1.0);
375     FillHisto1D("RecoPiKPEtFullAcceptanceITSNoPIDND",GetCorrectedPiKPEtFullAcceptanceITSNoPID(),1.0);
376     FillHisto1D("RecoTotEtFullAcceptanceITSNoPIDND",GetCorrectedTotEtFullAcceptanceITSNoPID(),1.0);
377
378     FillHisto1D("RecoRawEtFullAcceptanceTPCND",GetRawEtFullAcceptanceTPC(),1.0);
379     FillHisto1D("RecoRawEtFullAcceptanceTPCNoPIDND",GetRawEtFullAcceptanceTPCNoPID(),1.0);
380     FillHisto1D("RecoRawEtFullAcceptanceITSND",GetRawEtFullAcceptanceITS(),1.0);
381     FillHisto1D("RecoRawEtFullAcceptanceITSNoPIDND",GetRawEtFullAcceptanceITSNoPID(),1.0);
382
383   }
384   if(eventtype == doublediff){
385     FillHisto1D("RecoHadEtFullAcceptanceTPCDD",GetCorrectedHadEtFullAcceptanceTPC(),1.0);
386     FillHisto1D("RecoPiKPEtFullAcceptanceTPCDD",GetCorrectedPiKPEtFullAcceptanceTPC(),1.0);
387     FillHisto1D("RecoTotEtFullAcceptanceTPCDD",GetCorrectedTotEtFullAcceptanceTPC(),1.0);
388     FillHisto1D("RecoPiKPEtFullAcceptanceITSDD",GetCorrectedPiKPEtFullAcceptanceITS(),1.0);
389     FillHisto1D("RecoHadEtFullAcceptanceITSDD",GetCorrectedHadEtFullAcceptanceITS(),1.0);
390     FillHisto1D("RecoTotEtFullAcceptanceITSDD",GetCorrectedTotEtFullAcceptanceITS(),1.0);
391     FillHisto1D("RecoHadEtFullAcceptanceTPCNoPIDDD",GetCorrectedHadEtFullAcceptanceTPCNoPID(),1.0);
392     FillHisto1D("RecoPiKPEtFullAcceptanceTPCNoPIDDD",GetCorrectedPiKPEtFullAcceptanceTPCNoPID(),1.0);
393     FillHisto1D("RecoTotEtFullAcceptanceTPCNoPIDDD",GetCorrectedTotEtFullAcceptanceTPCNoPID(),1.0);
394     FillHisto1D("RecoHadEtFullAcceptanceITSNoPIDDD",GetCorrectedHadEtFullAcceptanceITSNoPID(),1.0);
395     FillHisto1D("RecoPiKPEtFullAcceptanceITSNoPIDDD",GetCorrectedPiKPEtFullAcceptanceITSNoPID(),1.0);
396     FillHisto1D("RecoTotEtFullAcceptanceITSNoPIDDD",GetCorrectedTotEtFullAcceptanceITSNoPID(),1.0);
397     FillHisto1D("RecoRawEtFullAcceptanceTPCDD",GetRawEtFullAcceptanceTPC(),1.0);
398     FillHisto1D("RecoRawEtFullAcceptanceTPCNoPIDDD",GetRawEtFullAcceptanceTPCNoPID(),1.0);
399     FillHisto1D("RecoRawEtFullAcceptanceITSDD",GetRawEtFullAcceptanceITS(),1.0);
400     FillHisto1D("RecoRawEtFullAcceptanceITSNoPIDDD",GetRawEtFullAcceptanceITSNoPID(),1.0);//ND
401   }
402   if(eventtype == singlediff){
403     FillHisto1D("RecoPiKPEtFullAcceptanceTPCSD",GetCorrectedPiKPEtFullAcceptanceTPC(),1.0);
404     FillHisto1D("RecoHadEtFullAcceptanceTPCSD",GetCorrectedHadEtFullAcceptanceTPC(),1.0);
405     FillHisto1D("RecoTotEtFullAcceptanceTPCSD",GetCorrectedTotEtFullAcceptanceTPC(),1.0);
406     FillHisto1D("RecoHadEtFullAcceptanceITSSD",GetCorrectedHadEtFullAcceptanceITS(),1.0);
407     FillHisto1D("RecoPiKPEtFullAcceptanceITSSD",GetCorrectedPiKPEtFullAcceptanceITS(),1.0);
408     FillHisto1D("RecoTotEtFullAcceptanceITSSD",GetCorrectedTotEtFullAcceptanceITS(),1.0);
409     FillHisto1D("RecoHadEtFullAcceptanceTPCNoPIDSD",GetCorrectedHadEtFullAcceptanceTPCNoPID(),1.0);
410     FillHisto1D("RecoPiKPEtFullAcceptanceTPCNoPIDSD",GetCorrectedPiKPEtFullAcceptanceTPCNoPID(),1.0);
411     FillHisto1D("RecoTotEtFullAcceptanceTPCNoPIDSD",GetCorrectedTotEtFullAcceptanceTPCNoPID(),1.0);
412     FillHisto1D("RecoHadEtFullAcceptanceITSNoPIDSD",GetCorrectedHadEtFullAcceptanceITSNoPID(),1.0);
413     FillHisto1D("RecoPiKPEtFullAcceptanceITSNoPIDSD",GetCorrectedPiKPEtFullAcceptanceITSNoPID(),1.0);
414     FillHisto1D("RecoTotEtFullAcceptanceITSNoPIDSD",GetCorrectedTotEtFullAcceptanceITSNoPID(),1.0);
415     FillHisto1D("RecoRawEtFullAcceptanceTPCSD",GetRawEtFullAcceptanceTPC(),1.0);
416     FillHisto1D("RecoRawEtFullAcceptanceTPCNoPIDSD",GetRawEtFullAcceptanceTPCNoPID(),1.0);
417     FillHisto1D("RecoRawEtFullAcceptanceITSSD",GetRawEtFullAcceptanceITS(),1.0);
418     FillHisto1D("RecoRawEtFullAcceptanceITSNoPIDSD",GetRawEtFullAcceptanceITSNoPID(),1.0);
419   }
420   if(fGoodEvent){
421     FillHisto1D("RecoPiKPEtFullAcceptanceTPC",GetCorrectedPiKPEtFullAcceptanceTPC(),1.0);
422     FillHisto1D("RecoPiKPEtFullAcceptanceITS",GetCorrectedPiKPEtFullAcceptanceITS(),1.0);
423     FillHisto1D("RecoPiKPEtFullAcceptanceTPCNoPID",GetCorrectedPiKPEtFullAcceptanceTPCNoPID(),1.0);
424     FillHisto1D("RecoPiKPEtFullAcceptanceITSNoPID",GetCorrectedPiKPEtFullAcceptanceITSNoPID(),1.0);
425     FillHisto1D("RecoHadEtFullAcceptanceTPC",GetCorrectedHadEtFullAcceptanceTPC(),1.0);
426     FillHisto1D("RecoTotEtFullAcceptanceTPC",GetCorrectedTotEtFullAcceptanceTPC(),1.0);
427     FillHisto1D("RecoHadEtFullAcceptanceTPCAssumingPion",GetCorrectedHadEtFullAcceptanceTPCAssumingPion(),1.0);
428     FillHisto1D("RecoHadEtFullAcceptanceTPCAssumingProton",GetCorrectedHadEtFullAcceptanceTPCAssumingProton(),1.0);
429     FillHisto1D("RecoHadEtFullAcceptanceTPCAssumingKaon",GetCorrectedHadEtFullAcceptanceTPCAssumingKaon(),1.0);
430     FillHisto1D("RecoHadEtEMCALAcceptanceTPC",GetCorrectedHadEtEMCALAcceptanceTPC(),1.0);
431     FillHisto1D("RecoTotEtEMCALAcceptanceTPC",GetCorrectedTotEtEMCALAcceptanceTPC(),1.0);
432     FillHisto1D("RecoHadEtPHOSAcceptanceTPC",GetCorrectedHadEtPHOSAcceptanceTPC(),1.0);
433     FillHisto1D("RecoTotEtPHOSAcceptanceTPC",GetCorrectedTotEtPHOSAcceptanceTPC(),1.0);
434     FillHisto1D("RecoHadEtFullAcceptanceTPCNoPID",GetCorrectedHadEtFullAcceptanceTPCNoPID(),1.0);
435     FillHisto1D("RecoTotEtFullAcceptanceTPCNoPID",GetCorrectedTotEtFullAcceptanceTPCNoPID(),1.0);
436     FillHisto1D("RecoHadEtEMCALAcceptanceTPCNoPID",GetCorrectedHadEtEMCALAcceptanceTPCNoPID(),1.0);
437     FillHisto1D("RecoTotEtEMCALAcceptanceTPCNoPID",GetCorrectedTotEtEMCALAcceptanceTPCNoPID(),1.0);
438     FillHisto1D("RecoHadEtPHOSAcceptanceTPCNoPID",GetCorrectedHadEtPHOSAcceptanceTPCNoPID(),1.0);
439     FillHisto1D("RecoTotEtPHOSAcceptanceTPCNoPID",GetCorrectedTotEtPHOSAcceptanceTPCNoPID(),1.0);
440     FillHisto1D("RecoHadEtFullAcceptanceITS",GetCorrectedHadEtFullAcceptanceITS(),1.0);
441     FillHisto1D("RecoHadEtFullAcceptanceITSAssumingPion",GetCorrectedHadEtFullAcceptanceITSAssumingPion(),1.0);
442     FillHisto1D("RecoHadEtFullAcceptanceITSAssumingProton",GetCorrectedHadEtFullAcceptanceITSAssumingProton(),1.0);
443     FillHisto1D("RecoHadEtFullAcceptanceITSAssumingKaon",GetCorrectedHadEtFullAcceptanceITSAssumingKaon(),1.0);
444     FillHisto1D("RecoTotEtFullAcceptanceITS",GetCorrectedTotEtFullAcceptanceITS(),1.0);
445     FillHisto1D("RecoHadEtEMCALAcceptanceITS",GetCorrectedHadEtEMCALAcceptanceITS(),1.0);
446     FillHisto1D("RecoTotEtEMCALAcceptanceITS",GetCorrectedTotEtEMCALAcceptanceITS(),1.0);
447     FillHisto1D("RecoHadEtPHOSAcceptanceITS",GetCorrectedHadEtPHOSAcceptanceITS(),1.0);
448     FillHisto1D("RecoTotEtPHOSAcceptanceITS",GetCorrectedTotEtPHOSAcceptanceITS(),1.0);
449     FillHisto1D("RecoHadEtFullAcceptanceITSNoPID",GetCorrectedHadEtFullAcceptanceITSNoPID(),1.0);
450     FillHisto1D("RecoTotEtFullAcceptanceITSNoPID",GetCorrectedTotEtFullAcceptanceITSNoPID(),1.0);
451     FillHisto1D("RecoHadEtEMCALAcceptanceITSNoPID",GetCorrectedHadEtEMCALAcceptanceITSNoPID(),1.0);
452     FillHisto1D("RecoTotEtEMCALAcceptanceITSNoPID",GetCorrectedTotEtEMCALAcceptanceITSNoPID(),1.0);
453     FillHisto1D("RecoHadEtPHOSAcceptanceITSNoPID",GetCorrectedHadEtPHOSAcceptanceITSNoPID(),1.0);
454     FillHisto1D("RecoTotEtPHOSAcceptanceITSNoPID",GetCorrectedTotEtPHOSAcceptanceITSNoPID(),1.0);
455
456     FillHisto1D("RecoRawEtFullAcceptanceTPC",GetRawEtFullAcceptanceTPC(),1.0);
457     FillHisto1D("RecoRawEtEMCALAcceptanceTPC",GetRawEtEMCALAcceptanceTPC(),1.0);
458     FillHisto1D("RecoRawEtPHOSAcceptanceTPC",GetRawEtPHOSAcceptanceTPC(),1.0);
459     FillHisto1D("RecoRawEtFullAcceptanceTPCNoPID",GetRawEtFullAcceptanceTPCNoPID(),1.0);
460     FillHisto1D("RecoRawEtEMCALAcceptanceTPCNoPID",GetRawEtEMCALAcceptanceTPCNoPID(),1.0);
461     FillHisto1D("RecoRawEtPHOSAcceptanceTPCNoPID",GetRawEtPHOSAcceptanceTPCNoPID(),1.0);
462     FillHisto1D("RecoRawEtFullAcceptanceITS",GetRawEtFullAcceptanceITS(),1.0);
463     FillHisto1D("RecoRawEtEMCALAcceptanceITS",GetRawEtEMCALAcceptanceITS(),1.0);
464     FillHisto1D("RecoRawEtPHOSAcceptanceITS",GetRawEtPHOSAcceptanceITS(),1.0);
465     FillHisto1D("RecoRawEtFullAcceptanceITSNoPID",GetRawEtFullAcceptanceITSNoPID(),1.0);
466     FillHisto1D("RecoRawEtEMCALAcceptanceITSNoPID",GetRawEtEMCALAcceptanceITSNoPID(),1.0);
467     FillHisto1D("RecoRawEtPHOSAcceptanceITSNoPID",GetRawEtPHOSAcceptanceITSNoPID(),1.0);
468     if(fCentBin>-1){//if we have Pb+Pb and found a centrality bin
469       FillHisto1D(Form("RecoHadEtFullAcceptanceTPCCB%i",fCentBin),GetCorrectedHadEtFullAcceptanceTPC(),1.0);
470       FillHisto1D(Form("RecoTotEtFullAcceptanceTPCCB%i",fCentBin),GetCorrectedTotEtFullAcceptanceTPC(),1.0);
471       FillHisto1D(Form("RecoHadEtFullAcceptanceITSCB%i",fCentBin),GetCorrectedHadEtFullAcceptanceITS(),1.0);
472       FillHisto1D(Form("RecoTotEtFullAcceptanceITSCB%i",fCentBin),GetCorrectedTotEtFullAcceptanceITS(),1.0);
473       FillHisto1D(Form("RecoRawEtFullAcceptanceTPCCB%i",fCentBin),GetRawEtFullAcceptanceTPC(),1.0);
474       FillHisto1D(Form("RecoRawEtFullAcceptanceITSCB%i",fCentBin),GetRawEtFullAcceptanceITS(),1.0);
475     }
476   }
477 //   delete pID;
478   delete strTPC;
479   delete strITS;
480   delete strTPCITS;
481   // cout<<"Reconstructed pi/k/p et "<<GetCorrectedPiKPEtFullAcceptanceTPC()<<endl;
482   return 1;
483 }
484 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
485   if(pt>=AliAnalysisHadEt::fgPtTPCCutOff && IsTPC){//TPC tracks
486     //adding to the raw Et
487     fRawEtFullAcceptanceTPC += rawEt;
488     if(InPHOS)fRawEtPHOSAcceptanceTPC += rawEt;
489     if(InEMCAL)fRawEtEMCALAcceptanceTPC += rawEt;
490     fRawEtFullAcceptanceTPCNoPID += rawEtNoPID;
491     if(InPHOS)fRawEtPHOSAcceptanceTPCNoPID += rawEtNoPID;
492     if(InEMCAL)fRawEtEMCALAcceptanceTPCNoPID += rawEtNoPID;
493     //adding to the corrected Et
494     fCorrectedHadEtFullAcceptanceTPC += corrEt;//the pi/k/p et
495     fCorrectedHadEtFullAcceptanceTPCAssumingPion += corrEtPion;
496     fCorrectedHadEtFullAcceptanceTPCAssumingProton += corrEtProton;
497     fCorrectedHadEtFullAcceptanceTPCAssumingKaon += corrEtKaon;
498     if(InPHOS)fCorrectedHadEtPHOSAcceptanceTPC += corrEt;
499     if(InEMCAL)fCorrectedHadEtEMCALAcceptanceTPC += corrEt;
500     fCorrectedHadEtFullAcceptanceTPCNoPID += corrEtNoPID;
501     if(InPHOS)fCorrectedHadEtPHOSAcceptanceTPCNoPID += corrEtNoPID;
502     if(InEMCAL)fCorrectedHadEtEMCALAcceptanceTPCNoPID += corrEtNoPID;
503   }
504   //if(pt<AliAnalysisHadEt::fgPtTPCCutOff &&pt>=AliAnalysisHadEt::fgPtITSCutOff && !IsTPC){//ITS tracks
505   //If we use standalone tracks - not pure standalone tracks - the only tracks we get are ones that were missed by the TPC+ITS tracking.  Therefore we don't need to add a momentum cut-off
506   if(pt<AliAnalysisHadEt::fgPtTPCCutOff && !IsTPC){//ITS tracks
507     //adding to the raw Et
508     fRawEtFullAcceptanceITS += rawEt;
509     if(InPHOS)fRawEtPHOSAcceptanceITS += rawEt;
510     if(InEMCAL)fRawEtEMCALAcceptanceITS += rawEt;
511     fRawEtFullAcceptanceITSNoPID += rawEtNoPID;
512     if(InPHOS)fRawEtPHOSAcceptanceITSNoPID += rawEtNoPID;
513     if(InEMCAL)fRawEtEMCALAcceptanceITSNoPID += rawEtNoPID;
514     //adding to the corrected Et
515     fCorrectedHadEtFullAcceptanceITS += corrEt;
516     fCorrectedHadEtFullAcceptanceITSAssumingPion += corrEtPion;
517     fCorrectedHadEtFullAcceptanceITSAssumingProton += corrEtProton;
518     fCorrectedHadEtFullAcceptanceITSAssumingKaon += corrEtKaon;
519     if(InPHOS)fCorrectedHadEtPHOSAcceptanceITS += corrEt;
520     if(InEMCAL)fCorrectedHadEtEMCALAcceptanceITS += corrEt;
521     fCorrectedHadEtFullAcceptanceITSNoPID += corrEtNoPID;
522     if(InPHOS)fCorrectedHadEtPHOSAcceptanceITSNoPID += corrEtNoPID;
523     if(InEMCAL)fCorrectedHadEtEMCALAcceptanceITSNoPID += corrEtNoPID;
524   }
525 }
526
527 Bool_t AliAnalysisHadEtReconstructed::IsInPHOS(AliESDtrack *track){//This function will need to be elaborated on later to include PHOS dead channels
528   if(!track){
529     cout<<"Error: Track does not exist!!"<<endl;
530     return kFALSE;
531   }
532   return   TMath::Abs(track->Eta()) < fCuts->GetGeometryPhosEtaAccCut()//in eta acceptance
533     && track->Phi()*180.0/TMath::Pi() > fCuts->GetGeometryPhosPhiAccMinCut()//greater than the minimum phi
534     && track->Phi()*180.0/TMath::Pi() < fCuts->GetGeometryPhosPhiAccMaxCut();//less than the maximum phi
535 }
536 Bool_t AliAnalysisHadEtReconstructed::IsInEMCAL(AliESDtrack *track){//This function will need to be elaborated on later to include EMCAL dead channels
537   if(!track){
538     cout<<"Error: Track does not exist!!"<<endl;
539     return kFALSE;
540   }
541   return   TMath::Abs(track->Eta()) < fCuts->GetGeometryEmcalEtaAccCut()//in eta acceptance
542     && track->Phi()*180.0/TMath::Pi() > fCuts->GetGeometryEmcalPhiAccMinCut()//greater than the minimum phi
543     && track->Phi()*180.0/TMath::Pi() < fCuts->GetGeometryEmcalPhiAccMaxCut();//less than the maximum phi
544 }
545 Bool_t AliAnalysisHadEtReconstructed::CheckGoodVertex(AliVParticle* track)
546 { // check vertex
547
548   Float_t bxy = 999.;
549   Float_t bz = 999.;
550   if(!track){
551     AliError("ERROR: no track");
552     return kFALSE;
553   }
554   AliESDtrack *esdTrack = dynamic_cast<AliESDtrack*>(track);
555   if(!esdTrack){
556     AliError("ERROR: no track");
557     return kFALSE;
558   }
559   esdTrack->GetImpactParametersTPC(bxy,bz);
560
561   bool status = (TMath::Abs(track->Xv()) < fCuts->GetReconstructedVertexXCut()) && 
562     (TMath::Abs(track->Yv()) < fCuts->GetReconstructedVertexYCut()) && 
563     (TMath::Abs(track->Zv()) < fCuts->GetReconstructedVertexZCut()) && 
564     (TMath::Abs(bxy) < fCuts->GetReconstructedIPxyCut()) && 
565     (TMath::Abs(bz) < fCuts->GetReconstructedIPzCut()); 
566
567   return status;
568 }
569
570 void AliAnalysisHadEtReconstructed::Init()
571 { // Init
572   AliAnalysisHadEt::Init();
573   if(fCorrections){
574     fCorrTotEtFullAcceptanceTPC = fCorrections->GetConstantCorrections(kTRUE,fgPtTPCCutOff,"Full");
575     fCorrTotEtFullAcceptanceITS = fCorrections->GetConstantCorrections(kTRUE,fgPtITSCutOff,"Full");
576     fCorrHadEtFullAcceptanceTPC = fCorrections->GetConstantCorrections(kFALSE,fgPtTPCCutOff,"Full");
577     fCorrHadEtFullAcceptanceITS = fCorrections->GetConstantCorrections(kFALSE,fgPtITSCutOff,"Full");
578     fCorrPiKPEtFullAcceptanceTPC = fCorrections->GetConstantCorrections(kFALSE,fgPtTPCCutOff,"PiKP");
579     fCorrPiKPEtFullAcceptanceITS = fCorrections->GetConstantCorrections(kFALSE,fgPtITSCutOff,"PiKP");
580     fCorrTotEtEMCALAcceptanceTPC = fCorrections->GetConstantCorrections(kTRUE,fgPtTPCCutOff,"EMCAL");
581     fCorrTotEtEMCALAcceptanceITS = fCorrections->GetConstantCorrections(kTRUE,fgPtITSCutOff,"EMCAL");
582     fCorrHadEtEMCALAcceptanceTPC = fCorrections->GetConstantCorrections(kFALSE,fgPtTPCCutOff,"EMCAL");
583     fCorrHadEtEMCALAcceptanceITS = fCorrections->GetConstantCorrections(kFALSE,fgPtITSCutOff,"EMCAL");
584     fCorrTotEtPHOSAcceptanceTPC = fCorrections->GetConstantCorrections(kTRUE,fgPtTPCCutOff,"PHOS");
585     fCorrTotEtPHOSAcceptanceITS = fCorrections->GetConstantCorrections(kTRUE,fgPtITSCutOff,"PHOS");
586     fCorrHadEtPHOSAcceptanceTPC = fCorrections->GetConstantCorrections(kFALSE,fgPtTPCCutOff,"PHOS");
587     fCorrHadEtPHOSAcceptanceITS = fCorrections->GetConstantCorrections(kFALSE,fgPtITSCutOff,"PHOS");
588   }
589   else{
590     cout<<"Warning!  You have not set corrections.  Your code will crash.  You have to set the corrections."<<endl;
591   }
592 }
593
594 void AliAnalysisHadEtReconstructed::ResetEventValues(){//resetting event by event et's
595   AliAnalysisHadEt::ResetEventValues();
596   fCorrectedHadEtFullAcceptanceTPCNoPID=0.0;
597   fCorrectedHadEtFullAcceptanceITSNoPID=0.0;
598   fCorrectedHadEtEMCALAcceptanceTPCNoPID=0.0;
599   fCorrectedHadEtEMCALAcceptanceITSNoPID=0.0;
600   fCorrectedHadEtPHOSAcceptanceTPCNoPID=0.0;
601   fCorrectedHadEtPHOSAcceptanceITSNoPID=0.0;
602   fCorrectedHadEtFullAcceptanceTPC=0.0;
603   fCorrectedHadEtFullAcceptanceITS=0.0;
604   fCorrectedHadEtFullAcceptanceTPCAssumingPion=0.0;
605   fCorrectedHadEtFullAcceptanceITSAssumingPion=0.0;
606   fCorrectedHadEtFullAcceptanceTPCAssumingProton=0.0;
607   fCorrectedHadEtFullAcceptanceITSAssumingProton=0.0;
608   fCorrectedHadEtFullAcceptanceTPCAssumingKaon=0.0;
609   fCorrectedHadEtFullAcceptanceITSAssumingKaon=0.0;
610   fCorrectedHadEtEMCALAcceptanceTPC=0.0;
611   fCorrectedHadEtEMCALAcceptanceITS=0.0;
612   fCorrectedHadEtPHOSAcceptanceTPC=0.0;
613   fCorrectedHadEtPHOSAcceptanceITS=0.0;
614   fRawEtFullAcceptanceTPC=0.0;
615   fRawEtFullAcceptanceITS=0.0;
616   fRawEtEMCALAcceptanceTPC=0.0;
617   fRawEtEMCALAcceptanceITS=0.0;
618   fRawEtPHOSAcceptanceTPC=0.0;
619   fRawEtPHOSAcceptanceITS=0.0;
620   fRawEtFullAcceptanceTPCNoPID=0.0;
621   fRawEtFullAcceptanceITSNoPID=0.0;
622   fRawEtEMCALAcceptanceTPCNoPID=0.0;
623   fRawEtEMCALAcceptanceITSNoPID=0.0;
624   fRawEtPHOSAcceptanceTPCNoPID=0.0;
625   fRawEtPHOSAcceptanceITSNoPID=0.0;
626
627   if(TMath::Abs(fCorrTotEtFullAcceptanceTPC)<1e-3){
628     if (fConfigFile.Length()) {
629       cout<<"Warning: Rereading fCorrections file..."<<endl;
630       gROOT->LoadMacro(fConfigFile);
631       fCorrections = (AliAnalysisHadEtCorrections *) gInterpreter->ProcessLine("ConfigHadEtAnalysis()");
632       fCorrTotEtFullAcceptanceTPC = fCorrections->GetConstantCorrections(kTRUE,fgPtTPCCutOff,"Full");
633       fCorrTotEtFullAcceptanceITS = fCorrections->GetConstantCorrections(kTRUE,fgPtITSCutOff,"Full");
634       fCorrHadEtFullAcceptanceTPC = fCorrections->GetConstantCorrections(kFALSE,fgPtTPCCutOff,"Full");
635       fCorrHadEtFullAcceptanceITS = fCorrections->GetConstantCorrections(kFALSE,fgPtITSCutOff,"Full");
636       fCorrPiKPEtFullAcceptanceTPC = fCorrections->GetConstantCorrections(kFALSE,fgPtTPCCutOff,"PiKP");
637       fCorrPiKPEtFullAcceptanceITS = fCorrections->GetConstantCorrections(kFALSE,fgPtITSCutOff,"PiKP");
638       fCorrTotEtEMCALAcceptanceTPC = fCorrections->GetConstantCorrections(kTRUE,fgPtTPCCutOff,"EMCAL");
639       fCorrTotEtEMCALAcceptanceITS = fCorrections->GetConstantCorrections(kTRUE,fgPtITSCutOff,"EMCAL");
640       fCorrHadEtEMCALAcceptanceTPC = fCorrections->GetConstantCorrections(kFALSE,fgPtTPCCutOff,"EMCAL");
641       fCorrHadEtEMCALAcceptanceITS = fCorrections->GetConstantCorrections(kFALSE,fgPtITSCutOff,"EMCAL");
642       fCorrTotEtPHOSAcceptanceTPC = fCorrections->GetConstantCorrections(kTRUE,fgPtTPCCutOff,"PHOS");
643       fCorrTotEtPHOSAcceptanceITS = fCorrections->GetConstantCorrections(kTRUE,fgPtITSCutOff,"PHOS");
644       fCorrHadEtPHOSAcceptanceTPC = fCorrections->GetConstantCorrections(kFALSE,fgPtTPCCutOff,"PHOS");
645       fCorrHadEtPHOSAcceptanceITS = fCorrections->GetConstantCorrections(kFALSE,fgPtITSCutOff,"PHOS");
646     }
647     else{cerr<<"Uh-oh!  Unable to open configuration file!"<<endl;}
648   }
649 }
650 void AliAnalysisHadEtReconstructed::CreateHistograms(){//Creating histograms and adding them to the output TList
651   Float_t maxCentbinRange = fNCentBins+0.5;
652
653   AliAnalysisManager *man=AliAnalysisManager::GetAnalysisManager();
654   if (!man) {
655     AliFatal("Analysis manager needed");
656     return;
657   }
658   AliInputEventHandler *inputHandler=dynamic_cast<AliInputEventHandler*>(man->GetInputEventHandler());
659   if (!inputHandler) {
660     AliFatal("Input handler needed");
661     return;
662   }
663
664   //pid response object
665   fPIDResponse=inputHandler->GetPIDResponse();
666   if (!fPIDResponse) AliError("PIDResponse object was not created");
667
668
669   if(kDoTriggerChecksOnly){return;}//In this case we are just after trigger efficiencies and don't care about the ET reconstructed.
670   //TString *strTPC = new TString("TPC");
671   TString *strITS = new TString("ITS");
672   TString *strTPCITS = new TString("TPCITS");
673   Float_t minNSigma = -4;
674   Float_t maxNSigma = 4;
675   Float_t maxPtdEdxNSigma = 1.0;
676
677   for(Int_t i=0;i<2;i++){
678     TString *cutName = NULL;
679     Float_t maxPtdEdx = 10;
680     Float_t mindEdx = 35;
681     Float_t maxdEdx = 150.0;
682     switch(i){
683     case 0:
684       cutName = strTPCITS;
685       break;
686     case 1:
687       cutName = strITS;
688       maxPtdEdx = 5;
689       maxdEdx = 500.0;
690       break;
691       //not deleting this completely since we might want to add it back in later
692       //     case 2:
693       //       cutName = strTPC;
694       //       maxPtdEdx = 5;
695       //       maxdEdx = 500.0;
696       //       break;
697     default:
698       cerr<<"Error:  cannot make histograms!"<<endl;
699       return;
700     }
701
702     CreateEtaPtHisto2D(Form("EtDataRaw%sPiPlus",cutName->Data()),"Raw reconstructed E_{T} from identified #pi^{+}");
703     CreateEtaPtHisto2D(Form("EtDataRaw%sPiMinus",cutName->Data()),"Raw reconstructed E_{T} from identified #pi^{-}");
704     CreateEtaPtHisto2D(Form("EtDataRaw%sKPlus",cutName->Data()),"Raw reconstructed E_{T} from identified K^{+}");
705     //     CreateEtaPtHisto2D(Form("EtDataRaw%sEMinus",cutName->Data()),"Raw reconstructed E_{T} from identified e^{-}");
706     //     CreateEtaPtHisto2D(Form("EtDataRaw%sEPlus",cutName->Data()),"Raw reconstructed E_{T} from identified e^{+}");
707     CreateEtaPtHisto2D(Form("EtDataRaw%sKMinus",cutName->Data()),"Raw reconstructed E_{T} from identified K^{-}");
708     CreateEtaPtHisto2D(Form("EtDataRaw%sProton",cutName->Data()),"Raw reconstructed E_{T} from identified p");
709     CreateEtaPtHisto2D(Form("EtDataRaw%sAntiProton",cutName->Data()),"Raw reconstructed E_{T} from identified #bar{p}");
710     CreateEtaPtHisto2D(Form("EtDataRaw%sUnidentified",cutName->Data()),"Raw reconstructed E_{T} from unidentified particles using real mass");
711     CreateEtaPtHisto2D(Form("EtDataRaw%sNoID",cutName->Data()),"Raw reconstructed E_{T} from unidentified particles using real mass");
712
713     CreateEtaPtHisto2D(Form("EtDataCorrected%sPiPlus",cutName->Data()),"Corrected reconstructed E_{T} from identified #pi^{+}");
714     CreateEtaPtHisto2D(Form("EtDataCorrected%sPiMinus",cutName->Data()),"Corrected reconstructed E_{T} from identified #pi^{-}");
715     CreateEtaPtHisto2D(Form("EtDataCorrected%sKPlus",cutName->Data()),"Corrected reconstructed E_{T} from identified K^{+}");
716     //     CreateEtaPtHisto2D(Form("EtDataCorrected%sEMinus",cutName->Data()),"Corrected reconstructed E_{T} from identified e^{-}");
717     //     CreateEtaPtHisto2D(Form("EtDataCorrected%sEPlus",cutName->Data()),"Corrected reconstructed E_{T} from identified e^{+}");
718     CreateEtaPtHisto2D(Form("EtDataCorrected%sKMinus",cutName->Data()),"Corrected reconstructed E_{T} from identified K^{-}");
719     CreateEtaPtHisto2D(Form("EtDataCorrected%sProton",cutName->Data()),"Corrected reconstructed E_{T} from identified p");
720     CreateEtaPtHisto2D(Form("EtDataCorrected%sAntiProton",cutName->Data()),"Corrected reconstructed E_{T} from identified #bar{p}");
721     CreateEtaPtHisto2D(Form("EtDataCorrected%sUnidentified",cutName->Data()),"Corrected reconstructed E_{T} from unidentified particles using real mass");
722     CreateEtaPtHisto2D(Form("EtDataCorrected%sNoID",cutName->Data()),"Corrected reconstructed E_{T} from unidentified particles using real mass");
723
724
725     CreateEtaPtHisto2D(Form("EtNData%sPiPlus",cutName->Data()),"Number of reconstructed #pi^{+}");
726     CreateEtaPtHisto2D(Form("EtNData%sPiMinus",cutName->Data()),"Number of reconstructed #pi^{-}");
727     CreateEtaPtHisto2D(Form("EtNData%sKPlus",cutName->Data()),"Number of reconstructed K^{+}");
728     CreateEtaPtHisto2D(Form("EtNData%sKMinus",cutName->Data()),"Number of reconstructed K^{-}");
729     CreateEtaPtHisto2D(Form("EtNData%sProton",cutName->Data()),"Number of reconstructed p");
730     CreateEtaPtHisto2D(Form("EtNData%sAntiProton",cutName->Data()),"Number of reconstructed #bar{p}");
731     CreateEtaPtHisto2D(Form("EtNData%sUnidentified",cutName->Data()),"Number of Reconstructed unidentified particles");
732
733     CreateHisto2D(Form("dEdxDataAll%s",cutName->Data()),"dE/dx for all particles","momentum (GeV/c)","dE/dx",400,0.0,maxPtdEdx,200,mindEdx,maxdEdx);
734     CreateHisto2D(Form("dEdxDataPion%s",cutName->Data()),"dE/dx for #pi^{#pm}","momentum (GeV/c)","dE/dx",400,0.0,maxPtdEdx,200,mindEdx,maxdEdx);
735     CreateHisto2D(Form("dEdxDataKaon%s",cutName->Data()),"dE/dx for K^{#pm}","momentum (GeV/c)","dE/dx",400,0.0,maxPtdEdx,200,mindEdx,maxdEdx);
736     CreateHisto2D(Form("dEdxDataProton%s",cutName->Data()),"dE/dx for p(#bar{p})","momentum (GeV/c)","dE/dx",400,0.0,maxPtdEdx,200,mindEdx,maxdEdx);
737     CreateHisto2D(Form("dEdxDataElectron%s",cutName->Data()),"dE/dx for e^{#pm}","momentum (GeV/c)","dE/dx",400,0.0,maxPtdEdx,200,mindEdx,maxdEdx);
738     CreateHisto2D(Form("dEdxDataUnidentified%s",cutName->Data()),"dE/dx for unidentified particles","momentum (GeV/c)","dE/dx",400,0.0,maxPtdEdx,200,mindEdx,maxdEdx);
739
740
741     CreateHisto2D(Form("dEdxDataNSigmaPion%s",cutName->Data()),"N_{#sigma} dE/dx for PID'd #pi^{#pm}","momentum (GeV/c)","N_{#sigma} dE/dx",50,0.0,maxPtdEdxNSigma,100,minNSigma,maxNSigma);
742     CreateHisto2D(Form("dEdxDataNSigmaKaon%s",cutName->Data()),"N_{#sigma} dE/dx for PID'd K^{#pm}","momentum (GeV/c)","N_{#sigma} dE/dx",50,0.0,maxPtdEdxNSigma,100,minNSigma,maxNSigma);
743     CreateHisto2D(Form("dEdxDataNSigmaProton%s",cutName->Data()),"N_{#sigma} dE/dx for PID'd p(#bar{p})","momentum (GeV/c)","N_{#sigma} dE/dx",50,0.0,maxPtdEdxNSigma,100,minNSigma,maxNSigma);
744     CreateHisto2D(Form("dEdxDataNSigmaElectron%s",cutName->Data()),"N_{#sigma} dE/dx for e^{#pm}","momentum (GeV/c)","N_{#sigma} dE/dx",50,0.0,maxPtdEdxNSigma,100,minNSigma,maxNSigma);
745
746     CreateHisto2D(Form("dEdxDataNSigmaPionAll%s",cutName->Data()),"N_{#sigma} dE/dx for #pi^{#pm} for all","momentum (GeV/c)","N_{#sigma} dE/dx",50,0.0,maxPtdEdxNSigma,100,minNSigma,maxNSigma);
747     CreateHisto2D(Form("dEdxDataNSigmaKaonAll%s",cutName->Data()),"N_{#sigma} dE/dx for K^{#pm} for all","momentum (GeV/c)","N_{#sigma} dE/dx",50,0.0,maxPtdEdxNSigma,100,minNSigma,maxNSigma);
748     CreateHisto2D(Form("dEdxDataNSigmaProtonAll%s",cutName->Data()),"N_{#sigma} dE/dx for p(#bar{p}) for all","momentum (GeV/c)","N_{#sigma} dE/dx",50,0.0,maxPtdEdxNSigma,100,minNSigma,maxNSigma);
749     CreateHisto2D(Form("dEdxDataNSigmaElectronAll%s",cutName->Data()),"N_{#sigma} dE/dx for e^{#pm} for all","momentum (GeV/c)","N_{#sigma} dE/dx",50,0.0,maxPtdEdxNSigma,100,minNSigma,maxNSigma);
750
751
752   }
753
754   Float_t minEt = 0.0;
755   Float_t maxEt = 100.0;
756   Float_t minEtPiKP = 0.0;
757   Float_t maxEtPiKP = 100.0;
758   if(fDataSet==20100||fDataSet==2011){
759     maxEt=4000.0;
760     maxEtPiKP = 2500;
761   }
762   if(fDataSet==2013){
763     maxEt=100.0;
764     maxEtPiKP = 100.0;
765   }
766   Int_t nbinsEt = 200;
767   char histoname[200];
768   char histotitle[200];
769   char xtitle[50];
770   TString *ytitle = new TString("Number of events");
771   TString *sTPC = new TString("TPC");
772   TString *sITS = new TString("ITS");
773   TString *sTPCpt = new TString("0.15");
774   TString *sITSpt = new TString("0.10");
775   TString *sPID = new TString("");
776   TString *sNoPID = new TString("NoPID");
777   TString *sNoPIDString = new TString(", No PID");
778   TString *sHadEt = new TString("HadEt");
779   TString *sPiKPEt = new TString("PiKPEt");
780   TString *sRawEt = new TString("RawEt");
781   TString *sTotEt = new TString("TotEt");
782   TString *sTotEtString = new TString("total E_{T}");
783   TString *sHadEtString = new TString("hadronic E_{T}");
784   TString *sPiKPEtString = new TString("E_{T}^{#pi,K,p}");
785   TString *sRawEtString = new TString("raw E_{T}");
786   TString *sFull = new TString("Full");
787   TString *sEMCAL = new TString("EMCAL");
788   TString *sPHOS = new TString("PHOS");
789   
790   for(int tpc = 0;tpc<2;tpc++){
791     for(int hadet = 0;hadet<3;hadet++){
792       for(int type = 0;type<3;type++){
793         for(int pid = 0;pid<2;pid++){
794           TString *detector = NULL;
795           TString *partid = NULL;
796           TString *et = sHadEt;
797           TString *acceptance = NULL;
798           TString *ptstring = NULL;
799           TString *partidstring = NULL;
800           TString *etstring = sHadEtString;
801           if(tpc==1) {detector = sTPC; ptstring = sTPCpt;}
802           else{detector = sITS; ptstring = sITSpt;}
803           if(pid==1){partid = sPID; partidstring = sPID;}
804           else{partid = sNoPID; partidstring = sNoPIDString;}
805           if(hadet==1) {et = sHadEt; etstring = sHadEtString;}
806           if(hadet==0){et = sTotEt; etstring = sTotEtString;}
807           if(hadet==2){et = sRawEt; etstring = sRawEtString;}
808           switch(type){
809           case 0:
810             acceptance = sFull;
811             break;
812           case 1:
813             acceptance = sEMCAL;
814             break;
815           case 2:
816             acceptance = sPHOS;
817             break;
818           default:
819             acceptance = sFull;
820           }
821           snprintf(histoname,200,"Reco%s%sAcceptance%s%s",et->Data(),acceptance->Data(),detector->Data(),partid->Data());
822           snprintf(histotitle,200,"Reconstructed %s with %s acceptance for p_{T}>%s GeV/c%s",etstring->Data(),acceptance->Data(),ptstring->Data(),partidstring->Data());
823           snprintf(xtitle,50,"Reconstructed %s",etstring->Data());
824           CreateHisto1D(histoname,histotitle,xtitle,ytitle->Data(),nbinsEt*2,minEt,maxEt);
825           if(type==0){//full acceptance only
826             snprintf(xtitle,50,"Reconstructed %s",etstring->Data());
827
828             snprintf(histoname,200,"Reco%s%sAcceptance%s%sND",et->Data(),acceptance->Data(),detector->Data(),partid->Data());
829             snprintf(histotitle,200,"Reconstructed non-diffractive events %s with %s acceptance for p_{T}>%s GeV/c%s",etstring->Data(),acceptance->Data(),ptstring->Data(),partidstring->Data());
830             CreateHisto1D(histoname,histotitle,xtitle,ytitle->Data(),nbinsEt*2,minEt,maxEt);
831             snprintf(histoname,200,"Reco%s%sAcceptance%s%sDD",et->Data(),acceptance->Data(),detector->Data(),partid->Data());
832             snprintf(histotitle,200,"Reconstructed doubly-diffractive events %s with %s acceptance for p_{T}>%s GeV/c%s",etstring->Data(),acceptance->Data(),ptstring->Data(),partidstring->Data());
833             CreateHisto1D(histoname,histotitle,xtitle,ytitle->Data(),nbinsEt*2,minEt,maxEt);
834             snprintf(histoname,200,"Reco%s%sAcceptance%s%sSD",et->Data(),acceptance->Data(),detector->Data(),partid->Data());
835             snprintf(histotitle,200,"Reconstructed singly-diffractive events %s with %s acceptance for p_{T}>%s GeV/c%s",etstring->Data(),acceptance->Data(),ptstring->Data(),partidstring->Data());
836             CreateHisto1D(histoname,histotitle,xtitle,ytitle->Data(),nbinsEt*2,minEt,maxEt);
837
838
839
840           snprintf(histoname,200,"Reco%s%sAcceptance%s%s",sPiKPEt->Data(),acceptance->Data(),detector->Data(),partid->Data());
841           snprintf(histotitle,200,"Reconstructed %s with %s acceptance for p_{T}>%s GeV/c%s",sPiKPEtString->Data(),acceptance->Data(),ptstring->Data(),partidstring->Data());
842           snprintf(xtitle,50,"Reconstructed %s",sPiKPEtString->Data());
843           CreateHisto1D(histoname,histotitle,xtitle,ytitle->Data(),nbinsEt*2,minEtPiKP,maxEtPiKP);
844
845             snprintf(xtitle,50,"Reconstructed %s",sPiKPEt->Data());
846             snprintf(histoname,200,"Reco%s%sAcceptance%s%sND",sPiKPEt->Data(),acceptance->Data(),detector->Data(),partid->Data());
847             snprintf(histotitle,200,"Reconstructed non-diffractive events %s with %s acceptance for p_{T}>%s GeV/c%s",sPiKPEtString->Data(),acceptance->Data(),ptstring->Data(),partidstring->Data());
848             CreateHisto1D(histoname,histotitle,xtitle,ytitle->Data(),nbinsEt*2,minEtPiKP,maxEtPiKP);
849             snprintf(histoname,200,"Reco%s%sAcceptance%s%sDD",sPiKPEt->Data(),acceptance->Data(),detector->Data(),partid->Data());
850             snprintf(histotitle,200,"Reconstructed doubly-diffractive events %s with %s acceptance for p_{T}>%s GeV/c%s",sPiKPEtString->Data(),acceptance->Data(),ptstring->Data(),partidstring->Data());
851             CreateHisto1D(histoname,histotitle,xtitle,ytitle->Data(),nbinsEt*2,minEtPiKP,maxEtPiKP);
852             snprintf(histoname,200,"Reco%s%sAcceptance%s%sSD",sPiKPEt->Data(),acceptance->Data(),detector->Data(),partid->Data());
853             snprintf(histotitle,200,"Reconstructed singly-diffractive events %s with %s acceptance for p_{T}>%s GeV/c%s",sPiKPEtString->Data(),acceptance->Data(),ptstring->Data(),partidstring->Data());
854             CreateHisto1D(histoname,histotitle,xtitle,ytitle->Data(),nbinsEt*2,minEtPiKP,maxEtPiKP);//et
855
856           }
857           if((fDataSet==20100||fDataSet==2011) && type ==0 &&pid==1){//If this is Pb+Pb and full acceptance with pid
858             Int_t width = 5;
859             if(fNCentBins<21) width = 10;
860             for(Int_t i=0;i<fNCentBins;i++){
861               snprintf(histoname,200,"Reco%s%sAcceptance%s%sCB%i",et->Data(),acceptance->Data(),detector->Data(),partid->Data(),i);
862               snprintf(histotitle,200,"Reconstructed %s with %s acceptance for p_{T}>%s GeV/c%s for centrality %i-%i",etstring->Data(),acceptance->Data(),ptstring->Data(),partidstring->Data(),i*width,(i+1)*width);
863               snprintf(xtitle,50,"Reconstructed %s",etstring->Data());
864               CreateHisto1D(histoname,histotitle,xtitle,ytitle->Data(),nbinsEt*2,minEt,maxEt);
865             }
866           }
867         }
868       }
869     }
870   }
871   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);
872   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);
873   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);
874   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);
875   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);
876   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);
877
878   //Cross checks that corrections are applied correctly
879   if(fDataSet==20100 || fDataSet==2011){
880     CreateHisto2D("fbkgdVsCentralityBin","f_{bkgd} vs centrality bin","centrality bin","f_{bkgd}",fNCentBins,-1.5,maxCentbinRange,200,0.7,1.05);//
881     CreateHisto2D("feffPionVsCentralityBin","Pion efficiency vs centrality bin","centrality bin","pion efficiency",fNCentBins,-1.5,maxCentbinRange,200,0,1.2);//
882     CreateHisto2D("feffHadronVsCentralityBin","Hadron efficiency vs centrality bin","centrality bin","hadron efficiency",fNCentBins,-1.5,maxCentbinRange,200,0,1.2);//
883     CreateHisto2D("feffKaonVsCentralityBin","Kaon efficiency vs centrality bin","centrality bin","kaon efficiency",fNCentBins,-1.5,maxCentbinRange,200,0,1.2);//
884     CreateHisto2D("feffProtonVsCentralityBin","Proton efficiency vs centrality bin","centrality bin","proton efficiency",fNCentBins,-1.5,maxCentbinRange,200,0,1.2);//
885     CreateHisto2D("fnotIDVsCentralityBin","f_{notID} vs centrality bin","centrality bin","f_{notID}",fNCentBins,-1.5,maxCentbinRange,50,0.95,1.05);//
886     CreateHisto2D("fpTcutVsCentralityBin","f_{pTcut} vs centrality bin","centrality bin","f_{pTcut}",fNCentBins,-1.5,maxCentbinRange,50,0.95,1.05);
887     CreateHisto2D("fneutralVsCentralityBin","f_{neutral} vs centrality bin","centrality bin","f_{neutral}",fNCentBins,-1.5,maxCentbinRange,50,0.5,1.00);
888     CreateHisto2D("ConstantCorrectionsVsCentralityBin","constant corrections vs centrality bin","centrality bin","constant corrections",fNCentBins,-1.5,maxCentbinRange,50,0.5,1.00);
889   }
890
891   delete sTPC;
892   delete sITS;
893   delete sTPCpt;
894   delete sITSpt;
895   delete sPID;
896   delete sNoPID;
897   delete sNoPIDString;
898   delete sPiKPEt;
899   delete sHadEt;
900   delete sTotEt;
901   delete sTotEtString;
902   delete sHadEtString;
903   delete sPiKPEtString;
904   delete sFull;
905   delete sEMCAL;
906   delete sPHOS;
907
908 }