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