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