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