]> git.uio.no Git - u/mrichter/AliRoot.git/blame - PWGLF/totEt/AliAnalysisHadEtMonteCarlo.cxx
Event Header added.
[u/mrichter/AliRoot.git] / PWGLF / totEt / AliAnalysisHadEtMonteCarlo.cxx
CommitLineData
cf6522d1 1//_________________________________________________________________________
2// Utility Class for transverse energy studies, charged hadrons
3// Base class for MC analysis
4// - MC output
5// implementation file
6//
7//Created by Christine Nattrass, Rebecca Scott, Irakli Martashvili
641e1e0c 8//University of Tennessee at Knoxville
cf6522d1 9//_________________________________________________________________________
641e1e0c 10#include "AliAnalysisHadEtMonteCarlo.h"
11#include "AliAnalysisEtCuts.h"
12
13#include "AliStack.h"
14#include "AliMCEvent.h"
15#include "AliESDEvent.h"
16#include "AliESDtrackCuts.h"
17#include "AliESDpid.h"
4b40b2b1 18#include "AliPID.h"
19#include "AliESDtrack.h"
20#include "AliVParticle.h"
21#include "AliAnalysisTask.h"
22#include "AliAnalysisManager.h"
23#include "AliAnalysisHadEtReconstructed.h"
49b25059 24#include "AliAnalysisHadEtCorrections.h"
4b40b2b1 25#include "AliAnalysisEtCuts.h"
641e1e0c 26#include <iostream>
4b40b2b1 27#include "TRandom.h"
7d2d1773 28#include "AliAnalysisEtCommon.h"
52503ae7 29#include "AliCentrality.h"
0f6416f3 30#include "AliLog.h"
2c0680a5 31#include "AliPWG0Helper.h"
32//class AliPWG0Helper;
33//#include "$ALICE_ROOT/PWG0/AliPWG0Helper.h"
16abb579 34
641e1e0c 35using namespace std;
36
16abb579 37ClassImp(AliAnalysisHadEtMonteCarlo);
38
4b40b2b1 39
0e866ddc 40Int_t AliAnalysisHadEtMonteCarlo::fgNumSmearWidths = 4;
41Float_t AliAnalysisHadEtMonteCarlo::fgSmearWidths[4] = {0.005,0.006,0.007,0.008};
4b40b2b1 42
d6214a64 43AliAnalysisHadEtMonteCarlo::AliAnalysisHadEtMonteCarlo():AliAnalysisHadEt()
0e866ddc 44 ,fSimPiKPEt(0)
4b40b2b1 45 ,fSimHadEt(0)
46 ,fSimTotEt(0)
49b25059 47 ,fSimPiKPEtShouldBeReco(0)
48 ,fSimPiKPEtShouldBeRecoPi(0)
49 ,fSimPiKPEtShouldBeRecoK(0)
50 ,fSimPiKPEtShouldBeRecoP(0)
7d2d1773 51 ,fInvestigateSmearing(0)
52 ,fInvestigateFull(0)
53 ,fInvestigateEMCal(0)
54 ,fInvestigatePHOS(0)
55 ,fInvestigatePiKP(0)
56 ,fRequireITSHits(0)
f43fc416 57 ,fBaryonEnhancement(0)
61e3f555 58 ,fUseRecoPt(0)
0e866ddc 59 ,fPtSmearer(0)
49b25059 60 ,fHadEtReco(0)
d6214a64 61{
4b40b2b1 62}
63AliAnalysisHadEtMonteCarlo::~AliAnalysisHadEtMonteCarlo(){//destructor
0e866ddc 64 if(fPtSmearer) delete fPtSmearer;
d6214a64 65}
4b40b2b1 66
67void AliAnalysisHadEtMonteCarlo::ResetEventValues(){//resetting event variables
d6214a64 68 AliAnalysisHadEt::ResetEventValues();
69 fSimHadEt=0.0;
70 fSimTotEt=0.0;
0e866ddc 71 fSimPiKPEt=0.0;
d6214a64 72}
cf6522d1 73Int_t AliAnalysisHadEtMonteCarlo::AnalyseEvent(AliVEvent* ev,AliVEvent* ev2)
74{ // analyse MC and real event info
641e1e0c 75 FillHisto1D("NEvents",0.5,1);
6a0df78a 76 if(!ev || !ev2){
0f6416f3 77 AliFatal("ERROR: Event does not exist");
6a0df78a 78 return 0;
79 }
641e1e0c 80 AliMCEvent *mcEvent = dynamic_cast<AliMCEvent*>(ev);
81 AliESDEvent *realEvent = dynamic_cast<AliESDEvent*>(ev2);
ec956c46 82 if(!mcEvent || !realEvent){
83 AliFatal("ERROR: mcEvent or realEvent does not exist");
84 return 0;
85 }
641e1e0c 86 AliStack *stack = mcEvent->Stack();
bf205f52 87 fCentBin= -1;
61e3f555 88 fGoodEvent = kTRUE;//for p+p collisions if we made it this far we have a good event
52503ae7 89 if(fDataSet==20100){//If this is Pb+Pb
90 AliCentrality *centrality = realEvent->GetCentrality();
61e3f555 91 if(fNCentBins<21) fCentBin= centrality->GetCentralityClass10(fCentralityMethod);
bf205f52 92 else{ fCentBin= centrality->GetCentralityClass5(fCentralityMethod);}
61e3f555 93 if(fCentBin ==-1) fGoodEvent = kFALSE;//but for Pb+Pb events we don't want to count events where we did not find a centrality
52503ae7 94 }
95 AnalyseEvent(ev);
641e1e0c 96
97 //for PID
ea331c5d 98 AliESDpid *pID = new AliESDpid();//This is identified as a memory leak in valgrind but I delete this object so I think it may be a problem with AliESDpid.
641e1e0c 99
641e1e0c 100 //=============================================
101
102 //Roughly following $ALICE_ROOT/PWG0/dNdEta/AlidNdEtaCorrectionTask
103
104 //=============================================TPC&&ITS=============================================
49b25059 105 //for investigating momentum smearing
106 Float_t pTtotalReco = 0.0;
107 Float_t pTtotalSim = 0.0;
108 Float_t eTtotalSimAll = 0.0;
109 Float_t eTtotalReco = 0.0;
110 Float_t eTtotalRecoEffCorr = 0.0;
111 Float_t eTtotalRecoEffBkgdCorr = 0.0;
112 Float_t eTtotalRecoBkgdCorr = 0.0;
113 Float_t eTtotalRecoUncorr = 0.0;
114 Float_t eTtotalRecoTotalUncorr = 0.0;
115 Float_t eTtotalRecoEffCorrPi = 0.0;
116 Float_t eTtotalRecoEffCorrK = 0.0;
117 Float_t eTtotalRecoEffCorrP = 0.0;
118 Float_t eTtotalRecoBkgd = 0.0;
119 Float_t eTtotalRecoPIDSmeared = 0.0;
120 Float_t eTtotalAsReconstructed = 0.0;
121 Float_t eTBkgdAsReconstructed = 0.0;
122 Float_t eTtotalAsReconstructedPi = 0.0;
123 Float_t eTtotalAsReconstructedP = 0.0;
124 Float_t eTtotalAsReconstructedK = 0.0;
125 Float_t eTtotalSim = 0.0;
126 Int_t nReco = 0;
cf6522d1 127 TString *strTPC = new TString("TPC");
128 TString *strITS = new TString("ITS");
129 TString *strTPCITS = new TString("TPCITS");
7d2d1773 130 Int_t lastcutset = 1;
131 if(fRequireITSHits) lastcutset = 2;
132 for(Int_t cutset=0;cutset<=lastcutset;cutset++){
ea331c5d 133 TString *cutName = NULL;
134 TObjArray* list = NULL;
641e1e0c 135 switch(cutset){
136 case 0:
cf6522d1 137 cutName = strTPC;
138 list = fEsdtrackCutsTPC->GetAcceptedTracks(realEvent);
641e1e0c 139 break;
140 case 1:
cf6522d1 141 cutName = strITS;
142 list = fEsdtrackCutsITS->GetAcceptedTracks(realEvent);
641e1e0c 143 break;
144 case 2:
cf6522d1 145 cutName = strTPCITS;
146 list = fEsdtrackCutsITSTPC->GetAcceptedTracks(realEvent);
641e1e0c 147 break;
148 default:
149 cerr<<"Error: cannot fill histograms!"<<endl;
150 return -1;
151 }
152 Int_t nGoodTracks = list->GetEntries();
153 for (Int_t iTrack = 0; iTrack < nGoodTracks; iTrack++)
154 {
155 AliESDtrack *track = dynamic_cast<AliESDtrack*> (list->At(iTrack));
156 if (!track)
157 {
158 Printf("ERROR: Could not get track %d", iTrack);
159 continue;
160 }
161 else{
641e1e0c 162 Float_t nSigmaPion,nSigmaProton,nSigmaKaon,nSigmaElectron;
7d2d1773 163 pID->MakeTPCPID(track);
164 pID->MakeITSPID(track);
641e1e0c 165 if(cutset!=1){
cf6522d1 166 nSigmaPion = TMath::Abs(pID->NumberOfSigmasTPC(track,AliPID::kPion));
167 nSigmaProton = TMath::Abs(pID->NumberOfSigmasTPC(track,AliPID::kProton));
168 nSigmaKaon = TMath::Abs(pID->NumberOfSigmasTPC(track,AliPID::kKaon));
169 nSigmaElectron = TMath::Abs(pID->NumberOfSigmasTPC(track,AliPID::kElectron));
641e1e0c 170 }
171 else{
cf6522d1 172 nSigmaPion = TMath::Abs(pID->NumberOfSigmasITS(track,AliPID::kPion));
173 nSigmaProton = TMath::Abs(pID->NumberOfSigmasITS(track,AliPID::kProton));
174 nSigmaKaon = TMath::Abs(pID->NumberOfSigmasITS(track,AliPID::kKaon));
175 nSigmaElectron = TMath::Abs(pID->NumberOfSigmasITS(track,AliPID::kElectron));
641e1e0c 176 }
6a0df78a 177// bool isPion = (nSigmaPion<3.0 && nSigmaProton>2.0 && nSigmaKaon>2.0);
178// bool isElectron = (nSigmaElectron<2.0 && nSigmaPion>4.0 && nSigmaProton>3.0 && nSigmaKaon>3.0);
179// bool isKaon = (nSigmaPion>3.0 && nSigmaProton>2.0 && nSigmaKaon<2.0);
180// bool isProton = (nSigmaPion>3.0 && nSigmaProton<2.0 && nSigmaKaon>2.0);
cf6522d1 181 bool isPion = (nSigmaPion<3.0 && nSigmaProton>2.0 && nSigmaKaon>2.0);
182 bool isElectron = (nSigmaElectron<2.0 && nSigmaPion>4.0 && nSigmaProton>3.0 && nSigmaKaon>3.0);
701b4621 183 bool isKaon = (nSigmaPion>3.0 && nSigmaProton>3.0 && nSigmaKaon<3.0 && track->Pt()<0.45);
184 bool isProton = (nSigmaPion>3.0 && nSigmaProton<3.0 && nSigmaKaon>3.0 && track->Pt()<0.9);
641e1e0c 185
49b25059 186 bool unidentified = (!isProton && !isKaon && !isElectron && !isPion);
187 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
188 unidentified = true;
189 isPion=false;
190 isElectron=false;
191 isKaon=false;
192 isProton=false;
193 }
641e1e0c 194 Float_t dEdx = track->GetTPCsignal();
195 if(cutset==1) dEdx = track->GetITSsignal();
196
cf6522d1 197 FillHisto2D(Form("dEdxAll%s",cutName->Data()),track->P(),dEdx,1.0);
641e1e0c 198
199 UInt_t label = (UInt_t)TMath::Abs(track->GetLabel());
200 TParticle *simPart = stack->Particle(label);
201 if(!simPart) {
202 Printf("no MC particle\n");
203 continue;
204 }
205 else{//analysis
49b25059 206 if(fInvestigateSmearing && cutset==2){
207 //calculates what we would measure for the pi/k/p et with background
208 eTtotalRecoTotalUncorr += Et(simPart);
209 if(isPion){
210 eTtotalRecoEffBkgdCorr += Et(simPart) *fHadEtReco->GetCorrections()->GetTPCEfficiencyCorrectionPion(track->Pt(),fCentBin) * fHadEtReco->GetCorrections()->GetBackgroundCorrectionTPC(track->Pt());
211 eTtotalRecoBkgdCorr += Et(simPart) * fHadEtReco->GetCorrections()->GetBackgroundCorrectionTPC(track->Pt());
212 eTtotalRecoTotalUncorr += Et(simPart);
213 }
214 if(isProton){
215 eTtotalRecoEffBkgdCorr += Et(simPart) *fHadEtReco->GetCorrections()->GetTPCEfficiencyCorrectionProton(track->Pt(),fCentBin) * fHadEtReco->GetCorrections()->GetBackgroundCorrectionTPC(track->Pt());
216 eTtotalRecoBkgdCorr += Et(simPart) * fHadEtReco->GetCorrections()->GetBackgroundCorrectionTPC(track->Pt());
217 }
218 if(isKaon){
219 eTtotalRecoEffBkgdCorr += Et(simPart) *fHadEtReco->GetCorrections()->GetTPCEfficiencyCorrectionKaon(track->Pt(),fCentBin) * fHadEtReco->GetCorrections()->GetBackgroundCorrectionTPC(track->Pt());
220 eTtotalRecoBkgdCorr += Et(simPart) * fHadEtReco->GetCorrections()->GetBackgroundCorrectionTPC(track->Pt());
221 }
222 if(unidentified){
223 eTtotalRecoEffBkgdCorr += Et(simPart) *fHadEtReco->GetCorrections()->GetTPCEfficiencyCorrectionHadron(track->Pt(),fCentBin) * fHadEtReco->GetCorrections()->GetBackgroundCorrectionTPC(track->Pt());
224 eTtotalRecoBkgdCorr += Et(simPart) * fHadEtReco->GetCorrections()->GetBackgroundCorrectionTPC(track->Pt());
225 }
226 //for calculating et as it's done in the reconstructed data
227 Float_t corrBkgd=0.0;
228 Float_t corrNotID=0.0;
229 Float_t corrNoID=0.0;// = fHadEtReco->GetCorrections()->GetNotIDCorrectionNoPID(track->Pt());
230 Float_t corrEff = 0.0;
231 Float_t corrEffNoID = 0.0;
232 Float_t et = 0.0;
233 if(cutset==2){//TPC
234 corrBkgd = fHadEtReco->GetCorrections()->GetBackgroundCorrectionTPC(track->Pt());
235 corrEffNoID = fHadEtReco->GetCorrections()->GetTPCEfficiencyCorrectionHadron(track->Pt(),fCentBin);
236 corrNotID = fHadEtReco->GetCorrections()->GetNotIDConstCorrectionTPC();
237 corrNoID = fHadEtReco->GetCorrections()->GetNotIDConstCorrectionTPCNoID();
238 }
239 if(cutset==1){//ITS
240 corrBkgd = fHadEtReco->GetCorrections()->GetBackgroundCorrectionITS(track->Pt());
241 corrEffNoID = fHadEtReco->GetCorrections()->GetITSEfficiencyCorrectionHadron(track->Pt(),fCentBin);
242 corrNotID = fHadEtReco->GetCorrections()->GetNotIDConstCorrectionITS();
243 corrNoID = fHadEtReco->GetCorrections()->GetNotIDConstCorrectionITSNoID();
244 }
245
246 bool isprimary = stack->IsPhysicalPrimary(label);
247 if (TMath::Abs(track->Eta()) < fHadEtReco->GetCorrections()->GetEtaCut()){
248 if(isPion){
249 et = Et(track->P(),track->Theta(),fgPiPlusCode,track->Charge());
250 corrEff = fHadEtReco->GetCorrections()->GetTPCEfficiencyCorrectionPion(track->Pt(),fCentBin);
251 if(isprimary){
252 eTtotalAsReconstructed += et*corrBkgd*corrEff*corrNotID;
253 }
254 else{
255 eTBkgdAsReconstructed += et*corrBkgd*corrEff*corrNotID;
256 }
257 }
258 if(isKaon){
259 et = Et(track->P(),track->Theta(),fgKPlusCode,track->Charge());
260 corrEff = fHadEtReco->GetCorrections()->GetTPCEfficiencyCorrectionKaon(track->Pt(),fCentBin);
261 if(isprimary){
262 eTtotalAsReconstructed += et*corrBkgd*corrEff*corrNotID;
263 }
264 else{
265 eTBkgdAsReconstructed += et*corrBkgd*corrEff*corrNotID;
266 }
267 }
268 if(isProton){
269 et = Et(track->P(),track->Theta(),fgProtonCode,track->Charge());
270 corrEff = fHadEtReco->GetCorrections()->GetTPCEfficiencyCorrectionProton(track->Pt(),fCentBin);
271 if(isprimary){
272 eTtotalAsReconstructed += et*corrBkgd*corrEff*corrNotID;
273 }
274 else{
275 eTBkgdAsReconstructed += et*corrBkgd*corrEff*corrNotID;
276 }
277 }
278 if(unidentified){
279 et = Et(track->P(),track->Theta(),fgPiPlusCode,track->Charge());
280 corrEff = fHadEtReco->GetCorrections()->GetTPCEfficiencyCorrectionHadron(track->Pt(),fCentBin);
281 if(isprimary){
282 eTtotalAsReconstructed += et*corrBkgd*corrEff*corrNotID;
283 }
284 else{
285 eTBkgdAsReconstructed += et*corrBkgd*corrEff*corrNotID;
286 }
287 }
288 if(!isPion && !isProton && !isKaon && !unidentified){
289 eTBkgdAsReconstructed += et*corrBkgd*corrEff*corrNotID;
290 }
291 Int_t pdgCode = simPart->GetPDG(0)->PdgCode();
292 if(pdgCode==fgPiPlusCode ||pdgCode==fgPiMinusCode){eTtotalAsReconstructedPi+=et*corrBkgd*corrEff*corrNotID;}
293 if(pdgCode==fgKPlusCode ||pdgCode==fgKMinusCode){eTtotalAsReconstructedK+=et*corrBkgd*corrEff*corrNotID;}
294 if(pdgCode==fgProtonCode ||pdgCode==fgAntiProtonCode){eTtotalAsReconstructedP+=et*corrBkgd*corrEff*corrNotID;}
295 }
296 }
297
298 if(cutset==2) eTtotalSimAll += Et(simPart);
641e1e0c 299 if(stack->IsPhysicalPrimary(label)){
49b25059 300 if (TMath::Abs(simPart->Eta()) < fHadEtReco->GetCorrections()->GetEtaCut()){
641e1e0c 301 Int_t pdgCode = simPart->GetPDG(0)->PdgCode();
302 Int_t mypid = 0;
7d2d1773 303 if(pdgCode==AliAnalysisHadEt::fgPiPlusCode) mypid = 1;
4b40b2b1 304 if(pdgCode==fgProtonCode) mypid = 2;
305 if(pdgCode==fgKPlusCode) mypid = 3;
306 if(pdgCode==fgEPlusCode) mypid = 4;
307 if(pdgCode==fgPiMinusCode) mypid = 1;
308 if(pdgCode==fgAntiProtonCode) mypid = 2;
309 if(pdgCode==fgKMinusCode) mypid = 3;
310 if(pdgCode==fgEMinusCode) mypid = 4;
641e1e0c 311 bool filled = false;
49b25059 312 //for smearing investigations
313 if(fInvestigateSmearing && cutset==2){
314 pTtotalReco += simPart->Pt();
315 pTtotalSim += track->Pt();
316 eTtotalReco += Et(track->P(),track->Theta(),pdgCode,track->Charge());
317 eTtotalSim += Et(simPart);
318 nReco++;
319 }
641e1e0c 320 //============Charged hadrons===================================
49b25059 321 float myefficiencyCorrEt = 0.0;
641e1e0c 322 //identified...
cf6522d1 323 if(isPion){
4b40b2b1 324 if(pdgCode!=fgPiPlusCode && pdgCode!=fgPiMinusCode){
cf6522d1 325 FillHisto2D(Form("MisidentifiedPIDs%s",cutName->Data()),1,mypid,1);
641e1e0c 326 }
327 float myEt = Et(simPart);
49b25059 328 if(fInvestigateSmearing && cutset==2){
329 eTtotalRecoPIDSmeared +=myEt;
330 eTtotalRecoEffCorr += myEt *fHadEtReco->GetCorrections()->GetTPCEfficiencyCorrectionPion(track->Pt(),fCentBin);
331 myefficiencyCorrEt = myEt * fHadEtReco->GetCorrections()->GetTPCEfficiencyCorrectionPion(track->Pt(),fCentBin) ;
332 }
cf6522d1 333 if(track->Charge()>0){ FillHisto2D(Form("EtReconstructed%sIdentifiedPiPlus",cutName->Data()),track->Pt(),track->Eta(),myEt);}
334 else{ FillHisto2D(Form("EtReconstructed%sIdentifiedPiMinus",cutName->Data()),track->Pt(),track->Eta(),myEt);}
335 FillHisto2D(Form("dEdxPion%s",cutName->Data()),track->P(),dEdx,1.0);
641e1e0c 336 }
cf6522d1 337 if(isProton){
4b40b2b1 338 if(pdgCode!=fgProtonCode && pdgCode!=fgAntiProtonCode){
cf6522d1 339 FillHisto2D(Form("MisidentifiedPIDs%s",cutName->Data()),2,mypid,1);
641e1e0c 340 }
341 float myEt = Et(simPart);
49b25059 342 if(fInvestigateSmearing && cutset==2){
343 eTtotalRecoPIDSmeared +=myEt;
344 eTtotalRecoEffCorr += myEt *fHadEtReco->GetCorrections()->GetTPCEfficiencyCorrectionProton(track->Pt(),fCentBin);
345 myefficiencyCorrEt = myEt * fHadEtReco->GetCorrections()->GetTPCEfficiencyCorrectionProton(track->Pt(),fCentBin);
346 }
cf6522d1 347 if(track->Charge()>0){ FillHisto2D(Form("EtReconstructed%sIdentifiedProton",cutName->Data()),track->Pt(),track->Eta(),myEt);}
348 else{ FillHisto2D(Form("EtReconstructed%sIdentifiedAntiProton",cutName->Data()),track->Pt(),track->Eta(),myEt);}
f43fc416 349 if(fBaryonEnhancement){
350 myEt = myEt*ProtonBaryonEnhancement(track->Pt());
351 if(track->Charge()>0){ FillHisto2D(Form("EtReconstructed%sIdentifiedProtonEnhanced",cutName->Data()),track->Pt(),track->Eta(),myEt);}
352 else{ FillHisto2D(Form("EtReconstructed%sIdentifiedAntiProtonEnhanced",cutName->Data()),track->Pt(),track->Eta(),myEt);}
353 }
cf6522d1 354 FillHisto2D(Form("dEdxProton%s",cutName->Data()),track->P(),dEdx,1.0);
641e1e0c 355 }
cf6522d1 356 if(isKaon){
4b40b2b1 357 if(pdgCode!=fgKMinusCode && pdgCode!=fgKPlusCode){
cf6522d1 358 FillHisto2D(Form("MisidentifiedPIDs%s",cutName->Data()),3,mypid,1);
641e1e0c 359 }
360 float myEt = Et(simPart);
49b25059 361 if(fInvestigateSmearing && cutset==2){
362 eTtotalRecoPIDSmeared +=myEt;
363 eTtotalRecoEffCorr += myEt *fHadEtReco->GetCorrections()->GetTPCEfficiencyCorrectionKaon(track->Pt(),fCentBin);
364 myefficiencyCorrEt = myEt * fHadEtReco->GetCorrections()->GetTPCEfficiencyCorrectionKaon(track->Pt(),fCentBin);
365 }
cf6522d1 366 if(track->Charge()>0){ FillHisto2D(Form("EtReconstructed%sIdentifiedKPlus",cutName->Data()),track->Pt(),track->Eta(),myEt);}
367 else{ FillHisto2D(Form("EtReconstructed%sIdentifiedKMinus",cutName->Data()),track->Pt(),track->Eta(),myEt);}
368 FillHisto2D(Form("dEdxKaon%s",cutName->Data()),track->P(),dEdx,1.0);
641e1e0c 369 }
cf6522d1 370 if(isElectron){
4b40b2b1 371 if(pdgCode!=fgEMinusCode && pdgCode!=fgEPlusCode){
cf6522d1 372 FillHisto2D(Form("MisidentifiedPIDs%s",cutName->Data()),4,mypid,1);
641e1e0c 373 }
374 float myEt = Et(simPart);
cf6522d1 375 if(track->Charge()>0){ FillHisto2D(Form("EtReconstructed%sIdentifiedEPlus",cutName->Data()),track->Pt(),track->Eta(),myEt);}
376 else{ FillHisto2D(Form("EtReconstructed%sIdentifiedEMinus",cutName->Data()),track->Pt(),track->Eta(),myEt);}
377 FillHisto2D(Form("dEdxElectron%s",cutName->Data()),track->P(),dEdx,1.0);
641e1e0c 378 }
cf6522d1 379 if(unidentified){
4b40b2b1 380 if(pdgCode!=fgEMinusCode && pdgCode!=fgEPlusCode){
381 float myEtPi = Et(simPart,fgPionMass);
86d9d0dc 382 float myEtP = Et(simPart,fgProtonMass);
383 float myEtK = Et(simPart,fgKaonMass);
641e1e0c 384 float myEt = Et(simPart);
49b25059 385 if(fInvestigateSmearing && cutset==2){
386 eTtotalRecoPIDSmeared +=myEtPi;
387 eTtotalRecoEffCorr += myEt *fHadEtReco->GetCorrections()->GetTPCEfficiencyCorrectionHadron(track->Pt(),fCentBin);
388 myefficiencyCorrEt = myEt * fHadEtReco->GetCorrections()->GetTPCEfficiencyCorrectionHadron(track->Pt(),fCentBin);
389 }
cf6522d1 390 FillHisto2D(Form("EtReconstructed%sUnidentifiedAssumingPion",cutName->Data()),track->Pt(),track->Eta(),myEtPi);
86d9d0dc 391 FillHisto2D(Form("EtReconstructed%sUnidentifiedAssumingProton",cutName->Data()),track->Pt(),track->Eta(),myEtP);
392 FillHisto2D(Form("EtReconstructed%sUnidentifiedAssumingKaon",cutName->Data()),track->Pt(),track->Eta(),myEtK);
cf6522d1 393 FillHisto2D(Form("EtReconstructed%sUnidentified",cutName->Data()),track->Pt(),track->Eta(),myEt);
394 FillHisto2D(Form("EtNReconstructed%sUnidentified",cutName->Data()),track->Pt(),track->Eta(),1.0);
f43fc416 395 if(pdgCode == fgPiPlusCode||pdgCode == fgPiMinusCode){
396 FillHisto2D(Form("EtReconstructed%sUnidentifiedPionAssumingPion",cutName->Data()),track->Pt(),track->Eta(),myEtPi);
86d9d0dc 397 FillHisto2D(Form("EtReconstructed%sUnidentifiedPionAssumingProton",cutName->Data()),track->Pt(),track->Eta(),myEtP);
398 FillHisto2D(Form("EtReconstructed%sUnidentifiedPionAssumingKaon",cutName->Data()),track->Pt(),track->Eta(),myEtK);
904048b2 399 FillHisto2D(Form("EtReconstructed%sUnidentifiedPion",cutName->Data()),track->Pt(),track->Eta(),myEt);
f43fc416 400 FillHisto2D(Form("EtNReconstructed%sUnidentifiedPion",cutName->Data()),track->Pt(),track->Eta(),1.0);
401 }
402 if(pdgCode == fgKPlusCode||pdgCode == fgKMinusCode){
403 FillHisto2D(Form("EtReconstructed%sUnidentifiedKaonAssumingPion",cutName->Data()),track->Pt(),track->Eta(),myEtPi);
86d9d0dc 404 FillHisto2D(Form("EtReconstructed%sUnidentifiedKaonAssumingProton",cutName->Data()),track->Pt(),track->Eta(),myEtP);
405 FillHisto2D(Form("EtReconstructed%sUnidentifiedKaonAssumingKaon",cutName->Data()),track->Pt(),track->Eta(),myEtK);
904048b2 406 FillHisto2D(Form("EtReconstructed%sUnidentifiedKaon",cutName->Data()),track->Pt(),track->Eta(),myEt);
f43fc416 407 FillHisto2D(Form("EtNReconstructed%sUnidentifiedKaon",cutName->Data()),track->Pt(),track->Eta(),1.0);
408 }
409 if(pdgCode == fgProtonCode||pdgCode == fgAntiProtonCode){
410 FillHisto2D(Form("EtReconstructed%sUnidentifiedProtonAssumingPion",cutName->Data()),track->Pt(),track->Eta(),myEtPi);
86d9d0dc 411 FillHisto2D(Form("EtReconstructed%sUnidentifiedProtonAssumingProton",cutName->Data()),track->Pt(),track->Eta(),myEtP);
412 FillHisto2D(Form("EtReconstructed%sUnidentifiedProtonAssumingKaon",cutName->Data()),track->Pt(),track->Eta(),myEtK);
904048b2 413 FillHisto2D(Form("EtReconstructed%sUnidentifiedProton",cutName->Data()),track->Pt(),track->Eta(),myEt);
f43fc416 414 FillHisto2D(Form("EtNReconstructed%sUnidentifiedProton",cutName->Data()),track->Pt(),track->Eta(),1.0);
415 if(fBaryonEnhancement){
416 myEt = myEt*ProtonBaryonEnhancement(track->Pt());
417 FillHisto2D(Form("EtReconstructed%sUnidentifiedProtonAssumingPionEnhanced",cutName->Data()),track->Pt(),track->Eta(),myEtPi);
904048b2 418 FillHisto2D(Form("EtReconstructed%sUnidentifiedProtonEnhanced",cutName->Data()),track->Pt(),track->Eta(),myEt);
f43fc416 419 FillHisto2D(Form("EtNReconstructed%sUnidentifiedProtonEnhanced",cutName->Data()),track->Pt(),track->Eta(),1.0);
420 }
421 }
641e1e0c 422 }
cf6522d1 423 FillHisto2D(Form("dEdxUnidentified%s",cutName->Data()),track->P(),dEdx,1.0);
cf6522d1 424 FillHisto1D(Form("UnidentifiedPIDs%s",cutName->Data()),mypid,1);
641e1e0c 425 }
426 //...simulated
61e3f555 427 float myEtSim = Et(simPart);
428 float myEtReco = 0.0;
7d2d1773 429 if(pdgCode == fgPiPlusCode){
641e1e0c 430 float myEt = Et(simPart);
86d9d0dc 431 float myEtP = Et(simPart,fgProtonMass);
432 float myEtK = Et(simPart,fgKaonMass);
61e3f555 433 myEtReco = Et(track->P(),track->Theta(),fgPiPlusCode,track->Charge());
434 float pT = simPart->Pt();
435 float eta = simPart->Eta();
49b25059 436 if(fInvestigateSmearing && cutset==2){
437 eTtotalRecoEffCorrPi+=myefficiencyCorrEt;
438 eTtotalRecoUncorr +=myEt;
439 }
61e3f555 440 if(fUseRecoPt){//Then we switch the pT and the Et
441 myEt = myEtReco;
442 pT = track->Pt();
443 eta = track->Eta();
444 }
445 FillHisto2D(Form("EtReconstructed%sPiPlus",cutName->Data()),pT,eta,myEt);
446 FillHisto2D(Form("EtReconstructed%sChargedHadron",cutName->Data()),pT,eta,myEt);
447 FillHisto2D(Form("EtNReconstructed%sPiPlus",cutName->Data()),pT,eta,myEt);
448 FillHisto2D(Form("EtNReconstructed%sChargedHadron",cutName->Data()),pT,eta,myEt);
bf205f52 449 if(fCentBin>=0){//if a centrality bin was defined
61e3f555 450 FillHisto2D(Form("EtNReconstructed%sPiPlusCB%i",cutName->Data(),fCentBin),pT,eta,myEt);
451 FillHisto2D(Form("EtNReconstructed%sChargedHadronCB%i",cutName->Data(),fCentBin),pT,eta,myEt);
52503ae7 452 }
61e3f555 453 FillHisto2D(Form("EtReconstructed%sChargedHadronAssumingPion",cutName->Data()),pT,eta,myEt);
454 FillHisto2D(Form("EtReconstructed%sChargedHadronAssumingProton",cutName->Data()),pT,eta,myEtP);
455 FillHisto2D(Form("EtReconstructed%sChargedHadronAssumingKaon",cutName->Data()),pT,eta,myEtK);
456 FillHisto2D(Form("EtReconstructed%sPiPlusAssumingKaon",cutName->Data()),pT,eta,myEtK);
457 FillHisto2D(Form("EtReconstructed%sPiPlusAssumingProton",cutName->Data()),pT,eta,myEtP);
641e1e0c 458 filled = true;
459 }
4b40b2b1 460 if(pdgCode == fgPiMinusCode){
641e1e0c 461 float myEt = Et(simPart);
86d9d0dc 462 float myEtP = Et(simPart,fgProtonMass);
463 float myEtK = Et(simPart,fgKaonMass);
61e3f555 464 myEtReco = Et(track->P(),track->Theta(),fgPiMinusCode,track->Charge());
465 float pT = simPart->Pt();
466 float eta = simPart->Eta();
49b25059 467 if(fInvestigateSmearing && cutset==2){
468 eTtotalRecoEffCorrPi+=myefficiencyCorrEt;
469 eTtotalRecoUncorr +=myEt;
470 }
61e3f555 471 if(fUseRecoPt){//Then we switch the pT and the Et
472 myEt = myEtReco;
473 pT = track->Pt();
474 eta = track->Eta();
475 }
476 FillHisto2D(Form("EtReconstructed%sPiMinus",cutName->Data()),pT,eta,myEt);
477 FillHisto2D(Form("EtReconstructed%sChargedHadron",cutName->Data()),pT,eta,myEt);
478 FillHisto2D(Form("EtNReconstructed%sPiMinus",cutName->Data()),pT,eta,myEt);
479 FillHisto2D(Form("EtNReconstructed%sChargedHadron",cutName->Data()),pT,eta,myEt);
bf205f52 480 if(fCentBin>=0){//if a centrality bin was defined
61e3f555 481 FillHisto2D(Form("EtNReconstructed%sPiMinusCB%i",cutName->Data(),fCentBin),pT,eta,myEt);
482 FillHisto2D(Form("EtNReconstructed%sChargedHadronCB%i",cutName->Data(),fCentBin),pT,eta,myEt);
52503ae7 483 }
61e3f555 484 FillHisto2D(Form("EtReconstructed%sChargedHadronAssumingPion",cutName->Data()),pT,eta,myEt);
485 FillHisto2D(Form("EtReconstructed%sChargedHadronAssumingProton",cutName->Data()),pT,eta,myEtP);
486 FillHisto2D(Form("EtReconstructed%sChargedHadronAssumingKaon",cutName->Data()),pT,eta,myEtK);
487 FillHisto2D(Form("EtReconstructed%sPiMinusAssumingKaon",cutName->Data()),pT,eta,myEtK);
488 FillHisto2D(Form("EtReconstructed%sPiMinusAssumingProton",cutName->Data()),pT,eta,myEtP);
641e1e0c 489 filled = true;
490 }
4b40b2b1 491 if(pdgCode == fgKPlusCode){
641e1e0c 492 float myEt = Et(simPart);
4b40b2b1 493 float myEtPi = Et(simPart,fgPionMass);
86d9d0dc 494 float myEtP = Et(simPart,fgProtonMass);
61e3f555 495 myEtReco = Et(track->P(),track->Theta(),fgKPlusCode,track->Charge());
496 float pT = simPart->Pt();
497 float eta = simPart->Eta();
498 if(fUseRecoPt){//Then we switch the pT and the Et
499 myEt = myEtReco;
500 pT = track->Pt();
501 eta = track->Eta();
502 }
49b25059 503 if(fInvestigateSmearing && cutset==2){
504 eTtotalRecoEffCorrK+=myefficiencyCorrEt;
505 eTtotalRecoUncorr +=myEt;
506 }
61e3f555 507 FillHisto2D(Form("EtReconstructed%sKPlus",cutName->Data()),pT,eta,myEt);
508 FillHisto2D(Form("EtReconstructed%sChargedHadron",cutName->Data()),pT,eta,myEt);
509 FillHisto2D(Form("EtNReconstructed%sKPlus",cutName->Data()),pT,eta,myEt);
510 FillHisto2D(Form("EtNReconstructed%sChargedHadron",cutName->Data()),pT,eta,myEt);
bf205f52 511 if(fCentBin>=0){//if a centrality bin was defined
61e3f555 512 FillHisto2D(Form("EtNReconstructed%sKPlusCB%i",cutName->Data(),fCentBin),pT,eta,myEt);
513 FillHisto2D(Form("EtNReconstructed%sChargedHadronCB%i",cutName->Data(),fCentBin),pT,eta,myEt);
52503ae7 514 }
61e3f555 515 FillHisto2D(Form("EtReconstructed%sChargedHadronAssumingPion",cutName->Data()),pT,eta,myEtPi);
516 FillHisto2D(Form("EtReconstructed%sKPlusAssumingPion",cutName->Data()),pT,eta,myEtPi);
517 FillHisto2D(Form("EtReconstructed%sChargedHadronAssumingKaon",cutName->Data()),pT,eta,myEt);
518 FillHisto2D(Form("EtReconstructed%sKPlusAssumingKaon",cutName->Data()),pT,eta,myEt);
519 FillHisto2D(Form("EtReconstructed%sChargedHadronAssumingProton",cutName->Data()),pT,eta,myEtP);
520 FillHisto2D(Form("EtReconstructed%sKPlusAssumingProton",cutName->Data()),pT,eta,myEtP);
641e1e0c 521 filled = true;
522 }
4b40b2b1 523 if(pdgCode == fgKMinusCode){
641e1e0c 524 float myEt = Et(simPart);
4b40b2b1 525 float myEtPi = Et(simPart,fgPionMass);
86d9d0dc 526 float myEtP = Et(simPart,fgProtonMass);
61e3f555 527 myEtReco = Et(track->P(),track->Theta(),fgKMinusCode,track->Charge());
528 float pT = simPart->Pt();
529 float eta = simPart->Eta();
530 if(fUseRecoPt){//Then we switch the pT and the Et
531 myEt = myEtReco;
532 pT = track->Pt();
533 eta = track->Eta();
534 }
49b25059 535 if(fInvestigateSmearing && cutset==2){
536 eTtotalRecoEffCorrK+=myefficiencyCorrEt;
537 eTtotalRecoUncorr +=myEt;
538 }
61e3f555 539 FillHisto2D(Form("EtReconstructed%sKMinus",cutName->Data()),pT,eta,myEt);
540 FillHisto2D(Form("EtReconstructed%sChargedHadron",cutName->Data()),pT,eta,myEt);
541 FillHisto2D(Form("EtNReconstructed%sKMinus",cutName->Data()),pT,eta,myEt);
542 FillHisto2D(Form("EtNReconstructed%sChargedHadron",cutName->Data()),pT,eta,myEt);
bf205f52 543 if(fCentBin>=0){//if a centrality bin was defined
61e3f555 544 FillHisto2D(Form("EtNReconstructed%sKMinusCB%i",cutName->Data(),fCentBin),pT,eta,myEt);
545 FillHisto2D(Form("EtNReconstructed%sChargedHadronCB%i",cutName->Data(),fCentBin),pT,eta,myEt);
52503ae7 546 }
61e3f555 547 FillHisto2D(Form("EtReconstructed%sChargedHadronAssumingPion",cutName->Data()),pT,eta,myEtPi);
548 FillHisto2D(Form("EtReconstructed%sKMinusAssumingPion",cutName->Data()),pT,eta,myEtPi);
549 FillHisto2D(Form("EtReconstructed%sChargedHadronAssumingKaon",cutName->Data()),pT,eta,myEt);
550 FillHisto2D(Form("EtReconstructed%sKMinusAssumingKaon",cutName->Data()),pT,eta,myEt);
551 FillHisto2D(Form("EtReconstructed%sChargedHadronAssumingProton",cutName->Data()),pT,eta,myEtP);
552 FillHisto2D(Form("EtReconstructed%sKMinusAssumingProton",cutName->Data()),pT,eta,myEtP);
641e1e0c 553 filled = true;
554 }
4b40b2b1 555 if(pdgCode == fgProtonCode){
641e1e0c 556 float myEt = Et(simPart);
4b40b2b1 557 float myEtPi = Et(simPart,fgPionMass);
86d9d0dc 558 float myEtK = Et(simPart,fgKaonMass);
61e3f555 559 myEtReco = Et(track->P(),track->Theta(),fgProtonCode,track->Charge());
560 float pT = simPart->Pt();
561 float eta = simPart->Eta();
562 if(fUseRecoPt){//Then we switch the pT and the Et
563 myEt = myEtReco;
564 pT = track->Pt();
565 eta = track->Eta();
566 }
49b25059 567 if(fInvestigateSmearing && cutset==2){
568 eTtotalRecoEffCorrP+=myefficiencyCorrEt;
569 eTtotalRecoUncorr +=myEt;
570 }
61e3f555 571 FillHisto2D(Form("EtReconstructed%sProton",cutName->Data()),pT,eta,myEt);
572 FillHisto2D(Form("EtReconstructed%sChargedHadron",cutName->Data()),pT,eta,myEt);
573 FillHisto2D(Form("EtNReconstructed%sProton",cutName->Data()),pT,eta,myEt);
574 FillHisto2D(Form("EtNReconstructed%sChargedHadron",cutName->Data()),pT,eta,myEt);
bf205f52 575 if(fCentBin>=0){//if a centrality bin was defined
61e3f555 576 FillHisto2D(Form("EtNReconstructed%sProtonCB%i",cutName->Data(),fCentBin),pT,eta,myEt);
577 FillHisto2D(Form("EtNReconstructed%sChargedHadronCB%i",cutName->Data(),fCentBin),pT,eta,myEt);
52503ae7 578 }
61e3f555 579 FillHisto2D(Form("EtReconstructed%sChargedHadronAssumingPion",cutName->Data()),pT,eta,myEtPi);
580 FillHisto2D(Form("EtReconstructed%sProtonAssumingPion",cutName->Data()),pT,eta,myEtPi);
581 FillHisto2D(Form("EtReconstructed%sChargedHadronAssumingKaon",cutName->Data()),pT,eta,myEtK);
582 FillHisto2D(Form("EtReconstructed%sProtonAssumingKaon",cutName->Data()),pT,eta,myEtK);
583 FillHisto2D(Form("EtReconstructed%sChargedHadronAssumingProton",cutName->Data()),pT,eta,myEt);
584 FillHisto2D(Form("EtReconstructed%sProtonAssumingProton",cutName->Data()),pT,eta,myEt);
641e1e0c 585 filled = true;
f43fc416 586
61e3f555 587 if(fBaryonEnhancement){
588 float enhancement = ProtonBaryonEnhancement(track->Pt());
589 FillHisto2D(Form("EtReconstructed%sProtonEnhanced",cutName->Data()),pT,eta,myEt*enhancement);
590 FillHisto2D(Form("EtNReconstructed%sProtonEnhanced",cutName->Data()),pT,eta,myEt*enhancement);
591 FillHisto2D(Form("EtReconstructed%sProtonAssumingPionEnhanced",cutName->Data()),pT,eta,myEtPi*enhancement);
592 }
f43fc416 593
641e1e0c 594 }
4b40b2b1 595 if(pdgCode == fgAntiProtonCode){
641e1e0c 596 float myEt = Et(simPart);
4b40b2b1 597 float myEtPi = Et(simPart,fgPionMass);
86d9d0dc 598 float myEtK = Et(simPart,fgKaonMass);
61e3f555 599 myEtReco = Et(track->P(),track->Theta(),fgAntiProtonCode,track->Charge());
600 float pT = simPart->Pt();
601 float eta = simPart->Eta();
602 if(fUseRecoPt){//Then we switch the pT and the Et
603 myEt = myEtReco;
604 pT = track->Pt();
605 eta = track->Eta();
606 }
49b25059 607 if(fInvestigateSmearing && cutset==2){
608 eTtotalRecoEffCorrP+=myefficiencyCorrEt;
609 eTtotalRecoUncorr +=myEt;
610 }
61e3f555 611 FillHisto2D(Form("EtReconstructed%sAntiProton",cutName->Data()),pT,eta,myEt);
612 FillHisto2D(Form("EtReconstructed%sChargedHadron",cutName->Data()),pT,eta,myEt);
613 FillHisto2D(Form("EtNReconstructed%sAntiProton",cutName->Data()),pT,eta,myEt);
614 FillHisto2D(Form("EtNReconstructed%sChargedHadron",cutName->Data()),pT,eta,myEt);
bf205f52 615 if(fCentBin>=0){//if a centrality bin was defined
61e3f555 616 FillHisto2D(Form("EtNReconstructed%sAntiProtonCB%i",cutName->Data(),fCentBin),pT,eta,myEt);
617 FillHisto2D(Form("EtNReconstructed%sChargedHadronCB%i",cutName->Data(),fCentBin),pT,eta,myEt);
52503ae7 618 }
61e3f555 619 FillHisto2D(Form("EtReconstructed%sChargedHadronAssumingPion",cutName->Data()),pT,eta,myEtPi);
620 FillHisto2D(Form("EtReconstructed%sAntiProtonAssumingPion",cutName->Data()),pT,eta,myEtPi);
621 FillHisto2D(Form("EtReconstructed%sChargedHadronAssumingKaon",cutName->Data()),pT,eta,myEtK);
622 FillHisto2D(Form("EtReconstructed%sAntiProtonAssumingKaon",cutName->Data()),pT,eta,myEtK);
623 FillHisto2D(Form("EtReconstructed%sChargedHadronAssumingProton",cutName->Data()),pT,eta,myEt);
624 FillHisto2D(Form("EtReconstructed%sAntiProtonAssumingProton",cutName->Data()),pT,eta,myEt);
641e1e0c 625 filled = true;
f43fc416 626 if(fBaryonEnhancement){
627 float enhancement = ProtonBaryonEnhancement(track->Pt());
61e3f555 628 FillHisto2D(Form("EtReconstructed%sAntiProtonEnhanced",cutName->Data()),pT,eta,myEt*enhancement);
629 FillHisto2D(Form("EtNReconstructed%sAntiProtonEnhanced",cutName->Data()),pT,eta,myEt*enhancement);
630 FillHisto2D(Form("EtReconstructed%sAntiProtonAssumingPionEnhanced",cutName->Data()),pT,eta,myEtPi*enhancement);
f43fc416 631 }
641e1e0c 632 }
4b40b2b1 633 if(pdgCode == fgEPlusCode){
641e1e0c 634 float myEt = Et(simPart);
cf6522d1 635 FillHisto2D(Form("EtReconstructed%sEPlus",cutName->Data()),simPart->Pt(),simPart->Eta(),myEt);
636 if(!isElectron || unidentified){
4b40b2b1 637 float myEtPi = Et(simPart,fgPionMass);
cf6522d1 638 FillHisto2D(Form("EtReconstructed%sMisidentifiedElectrons",cutName->Data()),track->Pt(),track->Eta(),myEtPi);
641e1e0c 639 }
640 filled = true;
641 }
4b40b2b1 642 if(pdgCode == fgEMinusCode){
cf6522d1 643 if(!isElectron || unidentified){
4b40b2b1 644 float myEtPi = Et(simPart,fgPionMass);
cf6522d1 645 FillHisto2D(Form("EtReconstructed%sMisidentifiedElectrons",cutName->Data()),track->Pt(),track->Eta(),myEtPi);
641e1e0c 646 }
647 float myEt = Et(simPart);
49b25059 648 FillHisto2D(Form("EtReconstructed%sEMinus",cutName->Data()),simPart->Pt(),simPart->Eta(),myEt);
649 filled = true;
641e1e0c 650 }
61e3f555 651 if(myEtReco>0.0){FillHisto2D(Form("ETresolution%s",cutName->Data()),myEtReco,(myEtSim-myEtReco)/myEtReco,1.0);}
652 if(track->Pt()>0.0){FillHisto2D(Form("pTresolution%s",cutName->Data()),track->Pt(),(simPart->Pt() - track->Pt())/track->Pt(),1.0);}
653 if(track->P()>0.0){FillHisto2D(Form("presolution%s",cutName->Data()),track->P(),(simPart->P() - track->P())/track->P(),1.0);}
654 FillHisto1D(Form("pTsim%s",cutName->Data()),simPart->Pt(),1.0);
655 FillHisto1D(Form("pTrec%s",cutName->Data()),track->Pt(),1.0);
656 if(fCentBin!=-1){
657 FillHisto1D(Form("pTsim%sCB%i",cutName->Data(),fCentBin),simPart->Pt(),1.0);
658 FillHisto1D(Form("pTrec%sCB%i",cutName->Data(),fCentBin),track->Pt(),1.0);
659 }
660
641e1e0c 661 }
641e1e0c 662 }
663 else{//not a primary - we're after V0 daughters!
49b25059 664 bool written = false;
665 //now, what is the et we would measure for this? Since this is the relevant et.
666 float myrecoEt = 0;
667 if(isPion || unidentified) myrecoEt = Et(track->P(),track->Theta(),fgPiPlusCode,track->Charge());
668 if(isProton) myrecoEt = Et(track->P(),track->Theta(),fgProtonCode,track->Charge());
669 if(isKaon) myrecoEt = Et(track->P(),track->Theta(),fgKPlusCode,track->Charge());
670 if (TMath::Abs(simPart->Eta()) < fHadEtReco->GetCorrections()->GetEtaCut()){
0e866ddc 671 TParticle *mom = stack->Particle(simPart->GetFirstMother());
672 if(mom){
673 TParticlePDG *pc = mom->GetPDG(0);
674 if(pc){
675 Int_t pdgCode = mom->GetPDG(0)->PdgCode();
676 if(pdgCode == fgLambdaCode){
49b25059 677 written = true;
0e866ddc 678 float myEt = Et(simPart);
61e3f555 679 float pT = simPart->Pt();
680 float eta = simPart->Eta();
49b25059 681 eTtotalRecoBkgd+=myEt;
61e3f555 682 if(fUseRecoPt){//Then we switch the pT and the Et
683 myEt = Et(track->P(),track->Theta(),simPart->GetPDG(0)->PdgCode(),track->Charge());
684 pT = track->Pt();
685 eta = track->Eta();
686 }
49b25059 687 FillHisto2D(Form("EtReconstructed%sLambdaDaughters",cutName->Data()),pT,eta,myrecoEt);
0f97be4c 688 Float_t weight = LambdaWeight(mom->Pt());
f43fc416 689 if(fBaryonEnhancement){
690 float enhancement = ProtonBaryonEnhancement(track->Pt());
691 weight = weight*enhancement;
692 }
49b25059 693 FillHisto2D(Form("EtReconstructed%sLambdaDaughtersReweighted",cutName->Data()),pT,eta,myrecoEt*weight);
0e866ddc 694 }
695 if(pdgCode == fgAntiLambdaCode){
49b25059 696 written = true;
0e866ddc 697 float myEt = Et(simPart);
61e3f555 698 float pT = simPart->Pt();
699 float eta = simPart->Eta();
49b25059 700 eTtotalRecoBkgd+=myEt;
61e3f555 701 if(fUseRecoPt){//Then we switch the pT and the Et
702 myEt = Et(track->P(),track->Theta(),simPart->GetPDG(0)->PdgCode(),track->Charge());
703 pT = track->Pt();
704 eta = track->Eta();
705 }
49b25059 706 FillHisto2D(Form("EtReconstructed%sAntiLambdaDaughters",cutName->Data()),pT,eta,myrecoEt);
0f97be4c 707 Float_t weight = AntiLambdaWeight(mom->Pt());
f43fc416 708 if(fBaryonEnhancement){
709 float enhancement = ProtonBaryonEnhancement(track->Pt());
710 weight = weight*enhancement;
711 }
49b25059 712 FillHisto2D(Form("EtReconstructed%sAntiLambdaDaughtersReweighted",cutName->Data()),pT,eta,myrecoEt*weight);
0e866ddc 713 }
49b25059 714 if(pdgCode == fgK0SCode || pdgCode == fgK0LCode || pdgCode == fgKPlusCode || pdgCode == fgKMinusCode){//actually get all kaon daughters
715 written = true;
0e866ddc 716 float myEt = Et(simPart);
61e3f555 717 float pT = simPart->Pt();
718 float eta = simPart->Eta();
49b25059 719 eTtotalRecoBkgd+=myEt;
61e3f555 720 if(fUseRecoPt){//Then we switch the pT and the Et
721 myEt = Et(track->P(),track->Theta(),simPart->GetPDG(0)->PdgCode(),track->Charge());
722 pT = track->Pt();
723 eta = track->Eta();
724 }
725 FillHisto2D(Form("EtReconstructed%sK0SDaughters",cutName->Data()),pT,eta,myEt);
0f97be4c 726 Float_t weight = K0Weight(mom->Pt());
49b25059 727 FillHisto2D(Form("EtReconstructed%sK0SDaughtersReweighted",cutName->Data()),pT,eta,myrecoEt*weight);
0e866ddc 728 }
729 if(pdgCode == fgXiCode){
49b25059 730 written = true;
0e866ddc 731 float myEt = Et(simPart);
61e3f555 732 float pT = simPart->Pt();
733 float eta = simPart->Eta();
49b25059 734 eTtotalRecoBkgd+=myEt;
61e3f555 735 if(fUseRecoPt){//Then we switch the pT and the Et
736 myEt = Et(track->P(),track->Theta(),simPart->GetPDG(0)->PdgCode(),track->Charge());
737 pT = track->Pt();
738 eta = track->Eta();
739 }
49b25059 740 FillHisto2D(Form("EtReconstructed%sXiDaughters",cutName->Data()),pT,eta,myrecoEt);
0e866ddc 741 }
742 if(pdgCode == fgAntiXiCode){
49b25059 743 written = true;
0e866ddc 744 float myEt = Et(simPart);
61e3f555 745 float pT = simPart->Pt();
746 float eta = simPart->Eta();
49b25059 747 eTtotalRecoBkgd+=myEt;
61e3f555 748 if(fUseRecoPt){//Then we switch the pT and the Et
749 myEt = Et(track->P(),track->Theta(),simPart->GetPDG(0)->PdgCode(),track->Charge());
750 pT = track->Pt();
751 eta = track->Eta();
752 }
49b25059 753 FillHisto2D(Form("EtReconstructed%sAntiXiDaughters",cutName->Data()),pT,eta,myrecoEt);
0e866ddc 754 }
755 if(pdgCode == fgOmegaCode){
49b25059 756 written = true;
0e866ddc 757 float myEt = Et(simPart);
61e3f555 758 float pT = simPart->Pt();
759 float eta = simPart->Eta();
49b25059 760 eTtotalRecoBkgd+=myEt;
61e3f555 761 if(fUseRecoPt){//Then we switch the pT and the Et
762 myEt = Et(track->P(),track->Theta(),simPart->GetPDG(0)->PdgCode(),track->Charge());
763 pT = track->Pt();
764 eta = track->Eta();
765 }
49b25059 766 FillHisto2D(Form("EtReconstructed%sOmegaDaughters",cutName->Data()),pT,eta,myrecoEt);
0e866ddc 767 }
768 if(pdgCode == fgXiCode){
49b25059 769 written = true;
0e866ddc 770 float myEt = Et(simPart);
61e3f555 771 float pT = simPart->Pt();
772 float eta = simPart->Eta();
49b25059 773 eTtotalRecoBkgd+=myEt;
61e3f555 774 if(fUseRecoPt){//Then we switch the pT and the Et
775 myEt = Et(track->P(),track->Theta(),simPart->GetPDG(0)->PdgCode(),track->Charge());
776 pT = track->Pt();
777 eta = track->Eta();
778 }
49b25059 779 FillHisto2D(Form("EtReconstructed%sAntiOmegaDaughters",cutName->Data()),pT,eta,myrecoEt);
0e866ddc 780 }
641e1e0c 781
0e866ddc 782 if(mom->GetFirstMother()>0){
783 TParticle *grandma = stack->Particle(mom->GetFirstMother());
784 if(grandma){
785 Int_t pdgCodeMom = mom->GetPDG(0)->PdgCode();
786 if(pdgCodeMom==fgPiPlusCode || pdgCodeMom==fgPiMinusCode || pdgCodeMom==fgProtonCode ||pdgCodeMom==fgAntiProtonCode || pdgCodeMom==fgKPlusCode || pdgCode==fgKMinusCode){
0e866ddc 787 Int_t pdgCodeGrandma = grandma->GetPDG(0)->PdgCode();
641e1e0c 788
0e866ddc 789 if(pdgCodeGrandma == fgXiCode){
49b25059 790 written = true;
0e866ddc 791 float myEt = Et(simPart);
61e3f555 792 float pT = simPart->Pt();
793 float eta = simPart->Eta();
49b25059 794 eTtotalRecoBkgd+=myEt;
61e3f555 795 if(fUseRecoPt){//Then we switch the pT and the Et
796 myEt = Et(track->P(),track->Theta(),simPart->GetPDG(0)->PdgCode(),track->Charge());
797 pT = track->Pt();
798 eta = track->Eta();
799 }
49b25059 800 FillHisto2D(Form("EtReconstructed%sXiDaughters",cutName->Data()),pT,eta,myrecoEt);
0e866ddc 801 }
802 if(pdgCodeGrandma == fgAntiXiCode){
49b25059 803 written = true;
0e866ddc 804 float myEt = Et(simPart);
61e3f555 805 float pT = simPart->Pt();
806 float eta = simPart->Eta();
49b25059 807 eTtotalRecoBkgd+=myEt;
61e3f555 808 if(fUseRecoPt){//Then we switch the pT and the Et
809 myEt = Et(track->P(),track->Theta(),simPart->GetPDG(0)->PdgCode(),track->Charge());
810 pT = track->Pt();
811 eta = track->Eta();
812 }
49b25059 813 FillHisto2D(Form("EtReconstructed%sAntiXiDaughters",cutName->Data()),pT,eta,myrecoEt);
0e866ddc 814 }
815 if(pdgCodeGrandma == fgOmegaCode){
49b25059 816 written = true;
0e866ddc 817 float myEt = Et(simPart);
61e3f555 818 float pT = simPart->Pt();
819 float eta = simPart->Eta();
49b25059 820 eTtotalRecoBkgd+=myEt;
61e3f555 821 if(fUseRecoPt){//Then we switch the pT and the Et
822 myEt = Et(track->P(),track->Theta(),simPart->GetPDG(0)->PdgCode(),track->Charge());
823 pT = track->Pt();
824 eta = track->Eta();
825 }
49b25059 826 FillHisto2D(Form("EtReconstructed%sOmegaDaughters",cutName->Data()),pT,eta,myrecoEt);
0e866ddc 827 }
828 if(pdgCodeGrandma == fgXiCode){
49b25059 829 written = true;
0e866ddc 830 float myEt = Et(simPart);
61e3f555 831 float pT = simPart->Pt();
832 float eta = simPart->Eta();
49b25059 833 eTtotalRecoBkgd+=myEt;
61e3f555 834 if(fUseRecoPt){//Then we switch the pT and the Et
835 myEt = Et(track->P(),track->Theta(),simPart->GetPDG(0)->PdgCode(),track->Charge());
836 pT = track->Pt();
837 eta = track->Eta();
838 }
49b25059 839 FillHisto2D(Form("EtReconstructed%sAntiOmegaDaughters",cutName->Data()),pT,eta,myrecoEt);
0e866ddc 840 }
641e1e0c 841
0e866ddc 842 }
641e1e0c 843 }
844 }
49b25059 845 if(!written){
846 int mycode = simPart->GetPDG(0)->PdgCode();
847 if( (pdgCode == fgGammaCode || pdgCode == fgPi0Code) && (mycode==fgEPlusCode||mycode==fgEMinusCode)){
848 written = true;
849 float myEt = Et(simPart);
850 float pT = simPart->Pt();
851 float eta = simPart->Eta();
852 eTtotalRecoBkgd+=myEt;
853 if(fUseRecoPt){//Then we switch the pT and the Et
854 myEt = Et(track->P(),track->Theta(),simPart->GetPDG(0)->PdgCode(),track->Charge());
855 pT = track->Pt();
856 eta = track->Eta();
857 }
858 FillHisto2D(Form("EtReconstructed%sConversionElectrons",cutName->Data()),pT,eta,myrecoEt);
859 }
860 if(mycode==fgMuPlusCode || mycode==fgMuMinusCode){
861 written = true;
862 float myEt = Et(simPart);
863 float pT = simPart->Pt();
864 float eta = simPart->Eta();
865 eTtotalRecoBkgd+=myEt;
866 if(fUseRecoPt){//Then we switch the pT and the Et
867 myEt = Et(track->P(),track->Theta(),simPart->GetPDG(0)->PdgCode(),track->Charge());
868 pT = track->Pt();
869 eta = track->Eta();
870 }
871 FillHisto2D(Form("EtReconstructed%sSecondaryMuons",cutName->Data()),pT,eta,myrecoEt);
872 }
873 if(mycode==fgPiPlusCode || mycode==fgPiMinusCode){
874 written = true;
875 float myEt = Et(simPart);
876 float pT = simPart->Pt();
877 float eta = simPart->Eta();
878 eTtotalRecoBkgd+=myEt;
879 if(fUseRecoPt){//Then we switch the pT and the Et
880 myEt = Et(track->P(),track->Theta(),simPart->GetPDG(0)->PdgCode(),track->Charge());
881 pT = track->Pt();
882 eta = track->Eta();
883 }
884 FillHisto2D(Form("EtReconstructed%sSecondaryPions",cutName->Data()),pT,eta,myrecoEt);
885 }
886 if(mycode==fgAntiProtonCode || mycode==fgProtonCode){
887 written = true;
888 float myEt = Et(simPart);
889 float pT = simPart->Pt();
890 float eta = simPart->Eta();
891 eTtotalRecoBkgd+=myEt;
892 if(fUseRecoPt){//Then we switch the pT and the Et
893 myEt = Et(track->P(),track->Theta(),simPart->GetPDG(0)->PdgCode(),track->Charge());
894 pT = track->Pt();
895 eta = track->Eta();
896 }
897 FillHisto2D(Form("EtReconstructed%sSecondaryProtons",cutName->Data()),pT,eta,myrecoEt);
898 }
899 //if(!written) cout<<"I was not counted in the background and I am a "<<simPart->GetName()<<" and my mother is a "<<mom->GetName()<<endl;
900 }
641e1e0c 901 }
49b25059 902 else{cout<<"No particle code!! 657"<<endl;}
641e1e0c 903 }
49b25059 904 else{cout<<"No mother particle!! 658"<<endl;}
641e1e0c 905 }
906 }
907 }
908
909 }
910 }
911 delete list;
912 }
49b25059 913 if(fInvestigateSmearing){
914 if(fSimPiKPEtShouldBeReco>0.0) FillHisto2D("SimPiKPEtMinusSimEffCorrRecoOnly",fSimPiKPEtShouldBeReco,(fSimPiKPEtShouldBeReco-eTtotalRecoEffCorr)/fSimPiKPEtShouldBeReco,1.0);
915 if(fSimPiKPEtShouldBeReco>0.0) FillHisto2D("SimPiKPEtMinusSimEffBkgdCorrRecoOnly",fSimPiKPEtShouldBeReco,(fSimPiKPEtShouldBeReco-eTtotalRecoEffBkgdCorr)/fSimPiKPEtShouldBeReco,1.0);
916 if(fSimPiKPEtShouldBeRecoPi>0.0) FillHisto2D("SimPiKPEtMinusSimEffCorrRecoPiOnly",fSimPiKPEtShouldBeRecoPi,(fSimPiKPEtShouldBeRecoPi-eTtotalRecoEffCorrPi)/fSimPiKPEtShouldBeRecoPi,1.0);
917 if(fSimPiKPEtShouldBeRecoP>0.0) FillHisto2D("SimPiKPEtMinusSimEffCorrRecoPOnly",fSimPiKPEtShouldBeRecoP,(fSimPiKPEtShouldBeRecoP-eTtotalRecoEffCorrP)/fSimPiKPEtShouldBeRecoP,1.0);
918 if(fSimPiKPEtShouldBeRecoK>0.0) FillHisto2D("SimPiKPEtMinusSimEffCorrRecoKOnly",fSimPiKPEtShouldBeRecoK,(fSimPiKPEtShouldBeRecoK-eTtotalRecoEffCorrK)/fSimPiKPEtShouldBeRecoK,1.0);
919 if(eTtotalSim>0.0) FillHisto2D("SimPiKPEtMinusSimAllCorrSmearedRecoOnly",eTtotalSim,(eTtotalSim-eTtotalSimAll+eTtotalRecoBkgd)/eTtotalSim,1.0);
920 if(eTtotalRecoTotalUncorr>0.0) FillHisto2D("SimPiKPEtMeasMinusEtRealPiKP",eTtotalRecoTotalUncorr,(eTtotalRecoTotalUncorr-eTtotalRecoUncorr)/eTtotalRecoTotalUncorr,1.0);
921 if(eTtotalSim>0.0) FillHisto2D("SimPiKPEtMinusSimAllSmearedRecoOnly",eTtotalSim,(eTtotalSim-eTtotalSimAll)/eTtotalSim,1.0);
922 if(eTtotalSim>0.0) FillHisto2D("SimPiKPEtMinusSimPIDSmearedRecoOnly",eTtotalSim,(eTtotalSim-eTtotalRecoPIDSmeared*1.01)/eTtotalSim,1.0);
923 if(eTtotalSim>0.0) FillHisto2D("SimPiKPEtMinusSimSmearedRecoOnly",eTtotalSim,(eTtotalSim-eTtotalReco)/eTtotalSim,1.0);
924 if(pTtotalSim>0.0) FillHisto2D("SimPiKPPtMinusSimSmearedRecoOnly",pTtotalSim,(pTtotalSim-pTtotalReco)/pTtotalSim,1.0);
925 if(eTtotalSim>0.0) FillHisto2D("SimPiKPEtMinusSimSmearedMultRecoOnly",nReco,(eTtotalSim-eTtotalReco)/eTtotalSim,1.0);
926 if(pTtotalSim>0.0) FillHisto2D("SimPiKPPtMinusSimSmearedMultRecoOnly",nReco,(pTtotalSim-pTtotalReco)/pTtotalSim,1.0);
927 }
464aa50c 928 delete pID;
929 delete strTPC;
930 delete strITS;
931 delete strTPCITS;
641e1e0c 932 return 1;
933}
934Int_t AliAnalysisHadEtMonteCarlo::AnalyseEvent(AliVEvent* ev)
cf6522d1 935{ // analyse MC event
641e1e0c 936 ResetEventValues();
6a0df78a 937 if(!ev){
0f6416f3 938 AliFatal("ERROR: Event does not exist");
6a0df78a 939 return 0;
940 }
641e1e0c 941
942 // Get us an mc event
943 AliMCEvent *mcEvent = dynamic_cast<AliMCEvent*>(ev);
ec956c46 944 if(!mcEvent){
945 AliFatal("ERROR: MC Event does not exist");
946 return 0;
947 }
2c0680a5 948
641e1e0c 949 // Let's play with the stack!
950 AliStack *stack = mcEvent->Stack();
951
952 Int_t nPrim = stack->GetNtrack();
953
0e866ddc 954 Float_t fSimPiKPEtPtSmeared = 0;
955 Float_t fSimPiKPEtEfficiencySmeared = 0;
956 Float_t fSimPiKPEtPtCutSmearedTPC = 0;
957 Float_t fSimPiKPEtPtCutSmearedITS = 0;
958 Float_t fSimPiKPEtPIDSmeared = 0;
959 Float_t fSimPiKPEtPIDSmearedNoID = 0;
49b25059 960 fSimPiKPEtShouldBeReco = 0;
961 fSimPiKPEtShouldBeRecoPi = 0;
962 fSimPiKPEtShouldBeRecoK = 0;
963 fSimPiKPEtShouldBeRecoP = 0;
641e1e0c 964 //=================Tracks which may or may not have been reconstructed=================
965
966 for (Int_t iPart = 0; iPart < nPrim; iPart++)
967 {
968
ea331c5d 969 TParticle *part = stack->Particle(iPart);//This line is identified as a loss of memory by valgrind, however, the pointer still belongs to the stack, so it's the stack's problem
641e1e0c 970
971 if (!part)
972 {
973 Printf("ERROR: Could not get particle %d", iPart);
974 continue;
975 }
641e1e0c 976 // Check if it is a primary particle
f427cbed 977 if (stack->IsPhysicalPrimary(iPart)){//primaries
641e1e0c 978
49b25059 979 if (TMath::Abs(part->Eta()) < fHadEtReco->GetCorrections()->GetEtaCut()) {
641e1e0c 980
981 Int_t pdgCode = part->GetPDG(0)->PdgCode();
641e1e0c 982 bool filled = false;
0e866ddc 983 //Investigating smearing...
984 //Numbers are realistic correction factors from previous studies
7d2d1773 985 if(fInvestigateSmearing){
986 if(pdgCode==fgPiPlusCode ||pdgCode==fgPiMinusCode ||pdgCode==fgKPlusCode ||pdgCode==fgKMinusCode ||pdgCode==fgProtonCode ||pdgCode==fgAntiProtonCode){
987 //To investigate Smearing...
988 Float_t myet = Et(part);
989 fSimPiKPEt += myet;
990 Float_t theta = part->Theta();
991 Short_t charge = 1;
992 Float_t momentum = part->P();
993 //pt smearing
994 Float_t pSmeared = momentum * fPtSmearer->Gaus(1,0.005);//Gaussian centered around 1
995 fSimPiKPEtPtSmeared += Et(pSmeared,theta,pdgCode,charge);
996 //Efficiency smearing
61e3f555 997 //to mock up the difference between TPC only tracks in p+p (~90% efficiency at high pT) and TPC+ITS tracks in Pb+Pb (about 70% efficiency at high pT) a factor of 7/9 was added in front
998 float efficiency = 7.0/9.0*2.26545*TMath::Exp(-TMath::Power(9.99977e-01/part->Pt(),7.85488e-02));//simple rough efficiency from fitting curve
7d2d1773 999 if(fPtSmearer->Binomial(1,efficiency) ==1){
1000 fSimPiKPEtEfficiencySmeared += (1.0/efficiency)*myet;
1001 }
1002 //pT cut smeared
61e3f555 1003 if(part->Pt()>0.10){fSimPiKPEtPtCutSmearedITS +=1.00988*myet;}
1004 if(part->Pt()>0.15){fSimPiKPEtPtCutSmearedTPC +=1.02994*myet;}
7d2d1773 1005 //PID smearing
61e3f555 1006 fSimPiKPEtPIDSmearedNoID += 1.03018015790601458*Et(momentum,theta,fgPiPlusCode,charge);
7d2d1773 1007 if(part->P()<1.0){//then the particle would have been ID'd
61e3f555 1008 fSimPiKPEtPIDSmeared += 1.00918051514628582*myet;
7d2d1773 1009 }
1010 else{//Then it would have been assumed to be a pion
61e3f555 1011 fSimPiKPEtPIDSmeared += 1.00918051514628582*Et(momentum,theta,fgPiPlusCode,charge);
7d2d1773 1012 }
0e866ddc 1013 }
1014 }
1015
641e1e0c 1016 //============Charged hadrons===================================
4b40b2b1 1017 if(pdgCode == fgPiPlusCode){
641e1e0c 1018 float myEt = Et(part);
86d9d0dc 1019 float myEtP = Et(part,fgProtonMass);
1020 float myEtK = Et(part,fgKaonMass);
49b25059 1021 if(part->Pt()>0.15) fSimPiKPEtShouldBeReco += myEt;
1022 if(part->Pt()>0.15) fSimPiKPEtShouldBeRecoPi += myEt;
0e866ddc 1023
d6214a64 1024 fSimHadEt += myEt;
1025 fSimTotEt += myEt;
0e866ddc 1026
641e1e0c 1027 FillHisto2D("EtSimulatedPiPlus",part->Pt(),part->Eta(),myEt);
1028 FillHisto2D("EtNSimulatedPiPlus",part->Pt(),part->Eta(),1.0);
1029 FillHisto2D("EtSimulatedChargedHadron",part->Pt(),part->Eta(),myEt);
1030 FillHisto2D("EtNSimulatedChargedHadron",part->Pt(),part->Eta(),1.0);
bf205f52 1031 if(fCentBin>=0){//if a centrality bin was defined
1032 FillHisto2D(Form("EtNSimulatedPiPlusCB%i",fCentBin),part->Pt(),part->Eta(),1.0);
1033 FillHisto2D(Form("EtNSimulatedChargedHadronCB%i",fCentBin),part->Pt(),part->Eta(),1.0);
52503ae7 1034 }
641e1e0c 1035 FillHisto2D("EtSimulatedChargedHadronAssumingPion",part->Pt(),part->Eta(),myEt);
86d9d0dc 1036 FillHisto2D("EtSimulatedChargedHadronAssumingProton",part->Pt(),part->Eta(),myEtP);
1037 FillHisto2D("EtSimulatedPiPlusAssumingProton",part->Pt(),part->Eta(),myEtP);
1038 FillHisto2D("EtSimulatedChargedHadronAssumingKaon",part->Pt(),part->Eta(),myEtK);
1039 FillHisto2D("EtSimulatedPiPlusAssumingKaon",part->Pt(),part->Eta(),myEtK);
641e1e0c 1040 FillHisto2D("EtSimulatedAllHadron",part->Pt(),part->Eta(),myEt);
0e866ddc 1041 Short_t charge = 1;
1042 Float_t myEtLow = Et(0.0,part->Theta(),pdgCode,charge);
1043 Float_t myEtITS = Et(0.10/TMath::Sin(part->Theta()),part->Theta(),pdgCode,charge);
1044 Float_t myEtTPC = Et(0.15/TMath::Sin(part->Theta()),part->Theta(),pdgCode,charge);
1045 FillHisto2D("EtSimulatedChargedHadronAssumingNoPt",part->Pt(),part->Eta(),myEtLow);
1046 FillHisto2D("EtSimulatedChargedHadronAssumingPtTPCCut",part->Pt(),part->Eta(),myEtTPC);
1047 FillHisto2D("EtSimulatedChargedHadronAssumingPtITSCut",part->Pt(),part->Eta(),myEtITS);
641e1e0c 1048 filled = true;
1049 }
4b40b2b1 1050 if(pdgCode == fgPiMinusCode){
641e1e0c 1051 float myEt = Et(part);
86d9d0dc 1052 float myEtP = Et(part,fgProtonMass);
1053 float myEtK = Et(part,fgKaonMass);
49b25059 1054 if(part->Pt()>0.15) fSimPiKPEtShouldBeReco += myEt;
1055 if(part->Pt()>0.15) fSimPiKPEtShouldBeRecoPi += myEt;
d6214a64 1056 fSimHadEt += myEt;
1057 fSimTotEt += myEt;
641e1e0c 1058 FillHisto2D("EtSimulatedPiMinus",part->Pt(),part->Eta(),myEt);
1059 FillHisto2D("EtNSimulatedPiMinus",part->Pt(),part->Eta(),1.0);
1060 FillHisto2D("EtSimulatedChargedHadron",part->Pt(),part->Eta(),myEt);
1061 FillHisto2D("EtNSimulatedChargedHadron",part->Pt(),part->Eta(),1.0);
bf205f52 1062 if(fCentBin>=0){//if a centrality bin was defined
1063 FillHisto2D(Form("EtNSimulatedPiMinusCB%i",fCentBin),part->Pt(),part->Eta(),1.0);
1064 FillHisto2D(Form("EtNSimulatedChargedHadronCB%i",fCentBin),part->Pt(),part->Eta(),1.0);
52503ae7 1065 }
641e1e0c 1066 FillHisto2D("EtSimulatedChargedHadronAssumingPion",part->Pt(),part->Eta(),myEt);
86d9d0dc 1067 FillHisto2D("EtSimulatedChargedHadronAssumingProton",part->Pt(),part->Eta(),myEtP);
1068 FillHisto2D("EtSimulatedPiMinusAssumingProton",part->Pt(),part->Eta(),myEtP);
1069 FillHisto2D("EtSimulatedChargedHadronAssumingKaon",part->Pt(),part->Eta(),myEtK);
1070 FillHisto2D("EtSimulatedPiMinusAssumingKaon",part->Pt(),part->Eta(),myEtK);
641e1e0c 1071 FillHisto2D("EtSimulatedAllHadron",part->Pt(),part->Eta(),myEt);
0e866ddc 1072 Short_t charge = -1;
1073 Float_t myEtLow = Et(0.0,part->Theta(),pdgCode,charge);
1074 Float_t myEtITS = Et(0.10/TMath::Sin(part->Theta()),part->Theta(),pdgCode,charge);
1075 Float_t myEtTPC = Et(0.15/TMath::Sin(part->Theta()),part->Theta(),pdgCode,charge);
1076 FillHisto2D("EtSimulatedChargedHadronAssumingNoPt",part->Pt(),part->Eta(),myEtLow);
1077 FillHisto2D("EtSimulatedChargedHadronAssumingPtTPCCut",part->Pt(),part->Eta(),myEtTPC);
1078 FillHisto2D("EtSimulatedChargedHadronAssumingPtITSCut",part->Pt(),part->Eta(),myEtITS);
641e1e0c 1079 filled = true;
1080 }
4b40b2b1 1081 if(pdgCode == fgKPlusCode){
641e1e0c 1082 float myEt = Et(part);
4b40b2b1 1083 float myEtPi = Et(part,fgPionMass);
86d9d0dc 1084 float myEtP = Et(part,fgProtonMass);
49b25059 1085 if(part->Pt()>0.15) fSimPiKPEtShouldBeReco += myEt;
1086 if(part->Pt()>0.15) fSimPiKPEtShouldBeRecoK += myEt;
d6214a64 1087 fSimHadEt += myEt;
1088 fSimTotEt += myEt;
641e1e0c 1089 FillHisto2D("EtSimulatedKPlus",part->Pt(),part->Eta(),myEt);
1090 FillHisto2D("EtNSimulatedKPlus",part->Pt(),part->Eta(),1.0);
1091 FillHisto2D("EtSimulatedChargedHadron",part->Pt(),part->Eta(),myEt);
1092 FillHisto2D("EtNSimulatedChargedHadron",part->Pt(),part->Eta(),1.0);
bf205f52 1093 if(fCentBin>=0){//if a centrality bin was defined
1094 FillHisto2D(Form("EtNSimulatedKPlusCB%i",fCentBin),part->Pt(),part->Eta(),1.0);
1095 FillHisto2D(Form("EtNSimulatedChargedHadronCB%i",fCentBin),part->Pt(),part->Eta(),1.0);
52503ae7 1096 }
641e1e0c 1097 FillHisto2D("EtSimulatedChargedHadronAssumingPion",part->Pt(),part->Eta(),myEtPi);
1098 FillHisto2D("EtSimulatedKPlusAssumingPion",part->Pt(),part->Eta(),myEtPi);
86d9d0dc 1099 FillHisto2D("EtSimulatedChargedHadronAssumingProton",part->Pt(),part->Eta(),myEtP);
1100 FillHisto2D("EtSimulatedKPlusAssumingProton",part->Pt(),part->Eta(),myEtP);
641e1e0c 1101 FillHisto2D("EtSimulatedAllHadron",part->Pt(),part->Eta(),myEt);
0e866ddc 1102 Short_t charge = 1;
1103 Float_t myEtLow = Et(0.0,part->Theta(),pdgCode,charge);
1104 Float_t myEtITS = Et(0.10/TMath::Sin(part->Theta()),part->Theta(),pdgCode,charge);
1105 Float_t myEtTPC = Et(0.15/TMath::Sin(part->Theta()),part->Theta(),pdgCode,charge);
1106 FillHisto2D("EtSimulatedChargedHadronAssumingNoPt",part->Pt(),part->Eta(),myEtLow);
1107 FillHisto2D("EtSimulatedChargedHadronAssumingPtTPCCut",part->Pt(),part->Eta(),myEtTPC);
1108 FillHisto2D("EtSimulatedChargedHadronAssumingPtITSCut",part->Pt(),part->Eta(),myEtITS);
641e1e0c 1109 filled = true;
1110 }
4b40b2b1 1111 if(pdgCode == fgKMinusCode){
641e1e0c 1112 float myEt = Et(part);
4b40b2b1 1113 float myEtPi = Et(part,fgPionMass);
86d9d0dc 1114 float myEtP = Et(part,fgProtonMass);
49b25059 1115 if(part->Pt()>0.15) fSimPiKPEtShouldBeReco += myEt;
1116 if(part->Pt()>0.15) fSimPiKPEtShouldBeRecoK += myEt;
d6214a64 1117 fSimHadEt += myEt;
1118 fSimTotEt += myEt;
641e1e0c 1119 FillHisto2D("EtSimulatedKMinus",part->Pt(),part->Eta(),myEt);
1120 FillHisto2D("EtNSimulatedKMinus",part->Pt(),part->Eta(),1.0);
1121 FillHisto2D("EtSimulatedChargedHadron",part->Pt(),part->Eta(),myEt);
1122 FillHisto2D("EtNSimulatedChargedHadron",part->Pt(),part->Eta(),1.0);
bf205f52 1123 if(fCentBin>=0){//if a centrality bin was defined
1124 FillHisto2D(Form("EtNSimulatedKMinusCB%i",fCentBin),part->Pt(),part->Eta(),1.0);
1125 FillHisto2D(Form("EtNSimulatedChargedHadronCB%i",fCentBin),part->Pt(),part->Eta(),1.0);
52503ae7 1126 }
641e1e0c 1127 FillHisto2D("EtSimulatedChargedHadronAssumingPion",part->Pt(),part->Eta(),myEtPi);
1128 FillHisto2D("EtSimulatedKMinusAssumingPion",part->Pt(),part->Eta(),myEtPi);
86d9d0dc 1129 FillHisto2D("EtSimulatedChargedHadronAssumingProton",part->Pt(),part->Eta(),myEtP);
1130 FillHisto2D("EtSimulatedKMinusAssumingProton",part->Pt(),part->Eta(),myEtP);
641e1e0c 1131 FillHisto2D("EtSimulatedAllHadron",part->Pt(),part->Eta(),myEt);
0e866ddc 1132 Short_t charge = -1;
1133 Float_t myEtLow = Et(0.0,part->Theta(),pdgCode,charge);
1134 Float_t myEtITS = Et(0.10/TMath::Sin(part->Theta()),part->Theta(),pdgCode,charge);
1135 Float_t myEtTPC = Et(0.15/TMath::Sin(part->Theta()),part->Theta(),pdgCode,charge);
1136 FillHisto2D("EtSimulatedChargedHadronAssumingNoPt",part->Pt(),part->Eta(),myEtLow);
1137 FillHisto2D("EtSimulatedChargedHadronAssumingPtTPCCut",part->Pt(),part->Eta(),myEtTPC);
1138 FillHisto2D("EtSimulatedChargedHadronAssumingPtITSCut",part->Pt(),part->Eta(),myEtITS);
641e1e0c 1139 filled = true;
1140 }
4b40b2b1 1141 if(pdgCode == fgProtonCode){
641e1e0c 1142 float myEt = Et(part);
4b40b2b1 1143 float myEtPi = Et(part,fgPionMass);
86d9d0dc 1144 float myEtK = Et(part,fgKaonMass);
49b25059 1145 if(part->Pt()>0.15) fSimPiKPEtShouldBeReco += myEt;
1146 if(part->Pt()>0.15) fSimPiKPEtShouldBeRecoP += myEt;
d6214a64 1147 fSimHadEt += myEt;
1148 fSimTotEt += myEt;
641e1e0c 1149 FillHisto2D("EtSimulatedProton",part->Pt(),part->Eta(),myEt);
1150 FillHisto2D("EtNSimulatedProton",part->Pt(),part->Eta(),1.0);
1151 FillHisto2D("EtSimulatedChargedHadron",part->Pt(),part->Eta(),myEt);
1152 FillHisto2D("EtNSimulatedChargedHadron",part->Pt(),part->Eta(),1.0);
bf205f52 1153 if(fCentBin>=0){//if a centrality bin was defined
1154 FillHisto2D(Form("EtNSimulatedProtonCB%i",fCentBin),part->Pt(),part->Eta(),1.0);
1155 FillHisto2D(Form("EtNSimulatedChargedHadronCB%i",fCentBin),part->Pt(),part->Eta(),1.0);
52503ae7 1156 }
641e1e0c 1157 FillHisto2D("EtSimulatedChargedHadronAssumingPion",part->Pt(),part->Eta(),myEtPi);
1158 FillHisto2D("EtSimulatedProtonAssumingPion",part->Pt(),part->Eta(),myEtPi);
86d9d0dc 1159 FillHisto2D("EtSimulatedChargedHadronAssumingKaon",part->Pt(),part->Eta(),myEtK);
1160 FillHisto2D("EtSimulatedProtonAssumingKaon",part->Pt(),part->Eta(),myEtK);
641e1e0c 1161 FillHisto2D("EtSimulatedAllHadron",part->Pt(),part->Eta(),myEt);
0e866ddc 1162 Short_t charge = 1;
1163 Float_t myEtLow = Et(0.0,part->Theta(),pdgCode,charge);
1164 Float_t myEtITS = Et(0.10/TMath::Sin(part->Theta()),part->Theta(),pdgCode,charge);
1165 Float_t myEtTPC = Et(0.15/TMath::Sin(part->Theta()),part->Theta(),pdgCode,charge);
1166 FillHisto2D("EtSimulatedChargedHadronAssumingNoPt",part->Pt(),part->Eta(),myEtLow);
1167 FillHisto2D("EtSimulatedChargedHadronAssumingPtTPCCut",part->Pt(),part->Eta(),myEtTPC);
1168 FillHisto2D("EtSimulatedChargedHadronAssumingPtITSCut",part->Pt(),part->Eta(),myEtITS);
641e1e0c 1169 filled = true;
f43fc416 1170 if(fBaryonEnhancement){
1171 float enhancement = ProtonBaryonEnhancement(part->Pt());
1172 FillHisto2D("EtSimulatedProtonEnhanced",part->Pt(),part->Eta(),myEt*enhancement);
1173 FillHisto2D("EtNSimulatedProtonEnhanced",part->Pt(),part->Eta(),1.0*enhancement);
1174 FillHisto2D("EtSimulatedProtonAssumingPionEnhanced",part->Pt(),part->Eta(),myEtPi*enhancement);
1175 }
641e1e0c 1176 }
4b40b2b1 1177 if(pdgCode == fgAntiProtonCode){
641e1e0c 1178 float myEt = Et(part);
4b40b2b1 1179 float myEtPi = Et(part,fgPionMass);
86d9d0dc 1180 float myEtK = Et(part,fgKaonMass);
49b25059 1181 if(part->Pt()>0.15) fSimPiKPEtShouldBeReco += myEt;
1182 if(part->Pt()>0.15) fSimPiKPEtShouldBeRecoP += myEt;
d6214a64 1183 fSimHadEt += myEt;
1184 fSimTotEt += myEt;
641e1e0c 1185 FillHisto2D("EtSimulatedAntiProton",part->Pt(),part->Eta(),myEt);
1186 FillHisto2D("EtNSimulatedAntiProton",part->Pt(),part->Eta(),1.0);
1187 FillHisto2D("EtSimulatedChargedHadron",part->Pt(),part->Eta(),myEt);
1188 FillHisto2D("EtNSimulatedChargedHadron",part->Pt(),part->Eta(),1.0);
bf205f52 1189 if(fCentBin>=0){//if a centrality bin was defined
1190 FillHisto2D(Form("EtNSimulatedAntiProtonCB%i",fCentBin),part->Pt(),part->Eta(),1.0);
1191 FillHisto2D(Form("EtNSimulatedChargedHadronCB%i",fCentBin),part->Pt(),part->Eta(),1.0);
52503ae7 1192 }
641e1e0c 1193 FillHisto2D("EtSimulatedChargedHadronAssumingPion",part->Pt(),part->Eta(),myEtPi);
1194 FillHisto2D("EtSimulatedAntiProtonAssumingPion",part->Pt(),part->Eta(),myEtPi);
86d9d0dc 1195 FillHisto2D("EtSimulatedChargedHadronAssumingKaon",part->Pt(),part->Eta(),myEtK);
1196 FillHisto2D("EtSimulatedAntiProtonAssumingKaon",part->Pt(),part->Eta(),myEtK);
641e1e0c 1197 FillHisto2D("EtSimulatedAllHadron",part->Pt(),part->Eta(),myEt);
0e866ddc 1198 Short_t charge = -1;
1199 Float_t myEtLow = Et(0.0,part->Theta(),pdgCode,charge);
1200 Float_t myEtITS = Et(0.10/TMath::Sin(part->Theta()),part->Theta(),pdgCode,charge);
1201 Float_t myEtTPC = Et(0.15/TMath::Sin(part->Theta()),part->Theta(),pdgCode,charge);
1202 FillHisto2D("EtSimulatedChargedHadronAssumingNoPt",part->Pt(),part->Eta(),myEtLow);
1203 FillHisto2D("EtSimulatedChargedHadronAssumingPtTPCCut",part->Pt(),part->Eta(),myEtTPC);
1204 FillHisto2D("EtSimulatedChargedHadronAssumingPtITSCut",part->Pt(),part->Eta(),myEtITS);
641e1e0c 1205 filled = true;
f43fc416 1206 if(fBaryonEnhancement){
1207 float enhancement = ProtonBaryonEnhancement(part->Pt());
1208 FillHisto2D("EtSimulatedAntiProtonEnhanced",part->Pt(),part->Eta(),myEt*enhancement);
1209 FillHisto2D("EtNSimulatedAntiProtonEnhanced",part->Pt(),part->Eta(),1.0*enhancement);
1210 FillHisto2D("EtSimulatedAntiProtonAssumingPionEnhanced",part->Pt(),part->Eta(),myEtPi*enhancement);
1211 }
641e1e0c 1212 }
1213 //============Other hadrons===================================
1214
4b40b2b1 1215 if(pdgCode == fgNeutronCode){
641e1e0c 1216 float myEt = Et(part);
d6214a64 1217 fSimHadEt += myEt;
1218 fSimTotEt += myEt;
641e1e0c 1219 FillHisto2D("EtSimulatedNeutron",part->Pt(),part->Eta(),myEt);
1220 FillHisto2D("EtSimulatedAllHadron",part->Pt(),part->Eta(),myEt);
1221 filled = true;
1222 }
4b40b2b1 1223 if(pdgCode == fgAntiNeutronCode){
641e1e0c 1224 float myEt = Et(part);
d6214a64 1225 fSimHadEt += myEt;
1226 fSimTotEt += myEt;
641e1e0c 1227 FillHisto2D("EtSimulatedAntiNeutron",part->Pt(),part->Eta(),myEt);
1228 FillHisto2D("EtSimulatedAllHadron",part->Pt(),part->Eta(),myEt);
1229 filled = true;
1230 }
4b40b2b1 1231 if(pdgCode == fgLambdaCode){
641e1e0c 1232 float myEt = Et(part);
d6214a64 1233 fSimHadEt += myEt;
1234 fSimTotEt += myEt;
641e1e0c 1235 FillHisto2D("EtSimulatedLambda",part->Pt(),part->Eta(),myEt);
1236 FillHisto2D("EtSimulatedAllHadron",part->Pt(),part->Eta(),myEt);
964c8159 1237 Float_t weight = LambdaWeight(part->Pt());
f43fc416 1238 if(fBaryonEnhancement){
1239 float enhancement = ProtonBaryonEnhancement(part->Pt());
1240 weight = weight*enhancement;
1241 }
964c8159 1242 FillHisto2D("EtSimulatedLambdaReweighted",part->Pt(),part->Eta(),myEt*weight);
641e1e0c 1243 Int_t ndaughters = part->GetNDaughters();
1244 for(Int_t idaughter = 0;idaughter<ndaughters;idaughter++){
1245 Int_t daughterindex = part->GetDaughter(idaughter);
1246 if(daughterindex<0 || daughterindex>1e5) continue;
1247 TParticle *daughter = stack->ParticleFromTreeK(daughterindex);
1248 if(daughter){
1249 if(daughter->GetPDG(0)){
1250 Int_t daughtercode = daughter->GetPDG(0)->PdgCode();
4b40b2b1 1251 if(daughtercode==fgPiMinusCode || daughtercode==fgProtonCode){
641e1e0c 1252 myEt = Et(daughter);
1253 FillHisto2D("EtSimulatedLambdaDaughters",daughter->Pt(),daughter->Eta(),myEt);
964c8159 1254 FillHisto2D("EtSimulatedLambdaDaughtersReweighted",daughter->Pt(),daughter->Eta(),myEt*weight);
641e1e0c 1255 }
1256 }
1257 else{
641e1e0c 1258 }
1259 }
1260 }
1261 filled = true;
1262 }
4b40b2b1 1263 if(pdgCode == fgAntiLambdaCode){
641e1e0c 1264 float myEt = Et(part);
d6214a64 1265 fSimHadEt += myEt;
1266 fSimTotEt += myEt;
641e1e0c 1267 FillHisto2D("EtSimulatedAntiLambda",part->Pt(),part->Eta(),myEt);
1268 FillHisto2D("EtSimulatedAllHadron",part->Pt(),part->Eta(),myEt);
964c8159 1269 Float_t weight = AntiLambdaWeight(part->Pt());
f43fc416 1270 if(fBaryonEnhancement){
1271 float enhancement = ProtonBaryonEnhancement(part->Pt());
1272 weight = weight*enhancement;
1273 }
964c8159 1274 FillHisto2D("EtSimulatedAntiLambdaReweighted",part->Pt(),part->Eta(),myEt*weight);
641e1e0c 1275 Int_t ndaughters = part->GetNDaughters();
1276 for(Int_t idaughter = 0;idaughter<ndaughters;idaughter++){
1277 Int_t daughterindex = part->GetDaughter(idaughter);
1278 if(daughterindex<0 || daughterindex>1e5) continue;
1279 TParticle *daughter = stack->ParticleFromTreeK(daughterindex);
1280 if(daughter){
1281 if(daughter->GetPDG(0)){
1282 Int_t daughtercode = daughter->GetPDG(0)->PdgCode();
4b40b2b1 1283 if(daughtercode==fgPiPlusCode || daughtercode==fgAntiProtonCode){
641e1e0c 1284 myEt = Et(daughter);
1285 FillHisto2D("EtSimulatedAntiLambdaDaughters",daughter->Pt(),daughter->Eta(),myEt);
964c8159 1286 FillHisto2D("EtSimulatedAntiLambdaDaughtersReweighted",daughter->Pt(),daughter->Eta(),myEt*weight);
641e1e0c 1287 }
1288 }
641e1e0c 1289 }
1290 }
1291 filled = true;
1292 }
4b40b2b1 1293 if(pdgCode == fgK0SCode){
641e1e0c 1294 float myEt = Et(part);
d6214a64 1295 fSimHadEt += myEt;
1296 fSimTotEt += myEt;
641e1e0c 1297 FillHisto2D("EtSimulatedK0S",part->Pt(),part->Eta(),myEt);
1298 FillHisto2D("EtSimulatedAllHadron",part->Pt(),part->Eta(),myEt);
964c8159 1299 Float_t weight = K0Weight(part->Pt());
1300 FillHisto2D("EtSimulatedK0SReweighted",part->Pt(),part->Eta(),myEt*weight);
641e1e0c 1301 Int_t ndaughters = part->GetNDaughters();
1302 for(Int_t idaughter = 0;idaughter<ndaughters;idaughter++){
1303 Int_t daughterindex = part->GetDaughter(idaughter);
1304 if(daughterindex<0 || daughterindex>1e5) continue;
1305 TParticle *daughter = stack->ParticleFromTreeK(daughterindex);
1306 if(daughter){
1307 if(daughter->GetPDG(0)){
1308
1309 Int_t daughtercode = daughter->GetPDG(0)->PdgCode();
4b40b2b1 1310 if(daughtercode==fgPiMinusCode || daughtercode==fgPiPlusCode){
641e1e0c 1311 myEt = Et(daughter);
1312 FillHisto2D("EtSimulatedK0SDaughters",daughter->Pt(),daughter->Eta(),myEt);
964c8159 1313 FillHisto2D("EtSimulatedK0SDaughtersReweighted",daughter->Pt(),daughter->Eta(),myEt*weight);
641e1e0c 1314 }
1315 }
641e1e0c 1316 }
1317 }
1318 filled = true;
1319 }
4b40b2b1 1320 if(pdgCode == fgK0LCode){
641e1e0c 1321 float myEt = Et(part);
d6214a64 1322 fSimHadEt += myEt;
1323 fSimTotEt += myEt;
641e1e0c 1324 FillHisto2D("EtSimulatedK0L",part->Pt(),part->Eta(),myEt);
1325 FillHisto2D("EtSimulatedAllHadron",part->Pt(),part->Eta(),myEt);
964c8159 1326 Float_t weight = K0Weight(part->Pt());
1327 FillHisto2D("EtSimulatedK0LReweighted",part->Pt(),part->Eta(),myEt*weight);
641e1e0c 1328 filled = true;
1329 }
4b40b2b1 1330 if(pdgCode == fgOmegaCode){
641e1e0c 1331 float myEt = Et(part);
d6214a64 1332 fSimHadEt += myEt;
1333 fSimTotEt += myEt;
641e1e0c 1334 FillHisto2D("EtSimulatedOmega",part->Pt(),part->Eta(),myEt);
1335 FillHisto2D("EtSimulatedAllHadron",part->Pt(),part->Eta(),myEt);
1336 Int_t ndaughters = part->GetNDaughters();
1337 for(Int_t idaughter = 0;idaughter<ndaughters;idaughter++){
1338 Int_t daughterindex = part->GetDaughter(idaughter);
1339 if(daughterindex<0 || daughterindex>1e5) continue;
1340 TParticle *daughter = stack->Particle(daughterindex);
1341 if(daughter){
1342 if(daughter->GetPDG(0)){
1343
1344 Int_t daughtercode = daughter->GetPDG(0)->PdgCode();
4b40b2b1 1345 if(daughtercode==fgPiPlusCode || daughtercode==fgProtonCode || daughtercode==fgKMinusCode){
641e1e0c 1346 myEt = Et(daughter);
1347 FillHisto2D("EtSimulatedOmegaDaughters",daughter->Pt(),daughter->Eta(),myEt);
641e1e0c 1348 }
1349 }
641e1e0c 1350 }
1351 }
1352 filled = true;
1353 }
4b40b2b1 1354 if(pdgCode == fgAntiOmegaCode){
641e1e0c 1355 float myEt = Et(part);
d6214a64 1356 fSimHadEt += myEt;
1357 fSimTotEt += myEt;
641e1e0c 1358 FillHisto2D("EtSimulatedOmega",part->Pt(),part->Eta(),myEt);
1359 FillHisto2D("EtSimulatedAllHadron",part->Pt(),part->Eta(),myEt);
1360 Int_t ndaughters = part->GetNDaughters();
1361 for(Int_t idaughter = 0;idaughter<ndaughters;idaughter++){
1362 Int_t daughterindex = part->GetDaughter(idaughter);
1363 if(daughterindex<0 || daughterindex>1e5) continue;
1364 TParticle *daughter = stack->ParticleFromTreeK(daughterindex);
1365 if(daughter){
1366 if(daughter->GetPDG(0)){
1367 Int_t daughtercode = daughter->GetPDG(0)->PdgCode();
4b40b2b1 1368 if(daughtercode==fgPiMinusCode || daughtercode==fgAntiProtonCode || daughtercode==fgKPlusCode){
641e1e0c 1369 myEt = Et(daughter);
1370 FillHisto2D("EtSimulatedAntiOmegaDaughters",daughter->Pt(),daughter->Eta(),myEt);
641e1e0c 1371 }
1372 }
641e1e0c 1373 }
1374 }
1375 filled = true;
1376 }
1377 //There are two codes for Sigmas
4b40b2b1 1378 if(pdgCode == fgSigmaCode || pdgCode == -3222){
641e1e0c 1379 float myEt = Et(part);
d6214a64 1380 fSimHadEt += myEt;
1381 fSimTotEt += myEt;
641e1e0c 1382 FillHisto2D("EtSimulatedSigma",part->Pt(),part->Eta(),myEt);
1383 FillHisto2D("EtSimulatedAllHadron",part->Pt(),part->Eta(),myEt);
1384 filled = true;
1385 }
4b40b2b1 1386 if(pdgCode == fgAntiSigmaCode || pdgCode == 3222){
641e1e0c 1387 float myEt = Et(part);
d6214a64 1388 fSimHadEt += myEt;
1389 fSimTotEt += myEt;
641e1e0c 1390 FillHisto2D("EtSimulatedAntiSigma",part->Pt(),part->Eta(),myEt);
1391 FillHisto2D("EtSimulatedAllHadron",part->Pt(),part->Eta(),myEt);
1392 filled = true;
1393 }
4b40b2b1 1394 if(pdgCode == fgXiCode){
641e1e0c 1395 float myEt = Et(part);
d6214a64 1396 fSimHadEt += myEt;
1397 fSimTotEt += myEt;
641e1e0c 1398 FillHisto2D("EtSimulatedXi",part->Pt(),part->Eta(),myEt);
1399 FillHisto2D("EtSimulatedAllHadron",part->Pt(),part->Eta(),myEt);
1400 Int_t ndaughters = part->GetNDaughters();
1401 for(Int_t idaughter = 0;idaughter<ndaughters;idaughter++){
1402 Int_t daughterindex = part->GetDaughter(idaughter);
1403 if(daughterindex<0 || daughterindex>1e5 || daughterindex>1e5) continue;
641e1e0c 1404 TParticle *daughter = stack->ParticleFromTreeK(daughterindex);
1405 if(daughter){
1406 if(daughter->GetPDG(0)){
1407
1408 Int_t daughtercode = daughter->GetPDG(0)->PdgCode();
4b40b2b1 1409 if(daughtercode==fgPiPlusCode || daughtercode==fgProtonCode || daughtercode==fgPiMinusCode){
641e1e0c 1410 myEt = Et(daughter);
1411 FillHisto2D("EtSimulatedXiDaughters",daughter->Pt(),daughter->Eta(),myEt);
641e1e0c 1412 }
1413 }
641e1e0c 1414 }
1415 }
1416 filled = true;
1417 }
4b40b2b1 1418 if(pdgCode == fgAntiXiCode){
641e1e0c 1419 float myEt = Et(part);
d6214a64 1420 fSimHadEt += myEt;
1421 fSimTotEt += myEt;
641e1e0c 1422 FillHisto2D("EtSimulatedAntiXi",part->Pt(),part->Eta(),myEt);
1423 FillHisto2D("EtSimulatedAllHadron",part->Pt(),part->Eta(),myEt);
1424 Int_t ndaughters = part->GetNDaughters();
1425 for(Int_t idaughter = 0;idaughter<ndaughters;idaughter++){
1426 Int_t daughterindex = part->GetDaughter(idaughter);
1427 if(daughterindex<0 || daughterindex>1e5) continue;
1428 TParticle *daughter = stack->ParticleFromTreeK(daughterindex);
1429 if(daughter){
1430 if(daughter->GetPDG(0)){
1431 Int_t daughtercode = daughter->GetPDG(0)->PdgCode();
4b40b2b1 1432 if(daughtercode==fgPiPlusCode || daughtercode==fgAntiProtonCode || daughtercode==fgPiMinusCode){
641e1e0c 1433 myEt = Et(daughter);
1434 FillHisto2D("EtSimulatedAntiXiDaughters",daughter->Pt(),daughter->Eta(),myEt);
641e1e0c 1435 }
1436 }
641e1e0c 1437 }
1438 }
1439 filled = true;
1440 }
4b40b2b1 1441 if(pdgCode == fgXi0Code){
641e1e0c 1442 float myEt = Et(part);
d6214a64 1443 fSimHadEt += myEt;
1444 fSimTotEt += myEt;
641e1e0c 1445 FillHisto2D("EtSimulatedXi0",part->Pt(),part->Eta(),myEt);
1446 FillHisto2D("EtSimulatedAllHadron",part->Pt(),part->Eta(),myEt);
1447 filled = true;
1448 }
4b40b2b1 1449 if(pdgCode == fgAntiXi0Code){
641e1e0c 1450 float myEt = Et(part);
d6214a64 1451 fSimHadEt += myEt;
1452 fSimTotEt += myEt;
641e1e0c 1453 FillHisto2D("EtSimulatedAntiXi0",part->Pt(),part->Eta(),myEt);
1454 FillHisto2D("EtSimulatedAllHadron",part->Pt(),part->Eta(),myEt);
1455 filled = true;
1456 }
1457 //============electrons===================================
1458
4b40b2b1 1459 if(pdgCode == fgEPlusCode){
641e1e0c 1460 float myEt = Et(part);
d6214a64 1461 fSimTotEt += myEt;
641e1e0c 1462 FillHisto2D("EtSimulatedEPlus",part->Pt(),part->Eta(),myEt);
1463 filled = true;
1464 }
4b40b2b1 1465 if(pdgCode == fgEMinusCode){
641e1e0c 1466 float myEt = Et(part);
d6214a64 1467 fSimTotEt += myEt;
641e1e0c 1468 FillHisto2D("EtSimulatedEMinus",part->Pt(),part->Eta(),myEt);
1469 filled = true;
1470 }
f427cbed 1471 //============neutrals===================================
4b40b2b1 1472 if(pdgCode == fgGammaCode){
61e3f555 1473 TParticle *mom = NULL;
1474 Int_t pdgCodeMom = -99999999;
1475 float momEta = -30;
1476 float mompT = -5;
1477 if(part->GetFirstMother()){
1478 mom = stack->Particle(part->GetFirstMother());
1479 pdgCodeMom = mom->GetPDG(0)->PdgCode();
1480 momEta = mom->Eta();
1481 mompT = mom->Pt();
1482 }
4e0c0fe1 1483 //We want to separate the gammas by pi0, eta, omega0 but we don't want to double count energy so we get the et from the gamma daughter
4b40b2b1 1484 if(pdgCodeMom == fgEtaCode){
4e0c0fe1 1485 float myEt = Et(part);
1486 fSimTotEt += myEt;
61e3f555 1487 FillHisto2D("EtSimulatedEta",mompT,momEta,myEt);
b64de20c 1488 filled = true;
1489 }
4b40b2b1 1490 if(pdgCodeMom == fgPi0Code){
4e0c0fe1 1491 float myEt = Et(part);
1492 fSimTotEt += myEt;
61e3f555 1493 FillHisto2D("EtSimulatedPi0",mompT,momEta,myEt);
b64de20c 1494 filled = true;
1495 }
4b40b2b1 1496 if(pdgCodeMom == fgOmega0Code){
4e0c0fe1 1497 float myEt = Et(part);
1498 fSimTotEt += myEt;
61e3f555 1499 FillHisto2D("EtSimulatedOmega0",mompT,momEta,myEt);
b64de20c 1500 filled = true;
1501 }
1502 if(!filled){
1503 float myEt = Et(part);
4e0c0fe1 1504 fSimTotEt += myEt;
b64de20c 1505 FillHisto2D("EtSimulatedGamma",part->Pt(),part->Eta(),myEt);
1506 filled = true;
1507 }
f427cbed 1508 }
4b40b2b1 1509 if(pdgCode == fgEtaCode){
f427cbed 1510 float myEt = Et(part);
d6214a64 1511 fSimTotEt += myEt;
f427cbed 1512 FillHisto2D("EtSimulatedEta",part->Pt(),part->Eta(),myEt);
1513 filled = true;
1514 }
4b40b2b1 1515 if(pdgCode == fgPi0Code){
f427cbed 1516 float myEt = Et(part);
d6214a64 1517 fSimTotEt += myEt;
f427cbed 1518 FillHisto2D("EtSimulatedPi0",part->Pt(),part->Eta(),myEt);
1519 filled = true;
1520 }
4b40b2b1 1521 if(pdgCode == fgOmega0Code){
b64de20c 1522 float myEt = Et(part);
d6214a64 1523 fSimTotEt += myEt;
b64de20c 1524 FillHisto2D("EtSimulatedOmega0",part->Pt(),part->Eta(),myEt);
1525 filled = true;
1526 }
641e1e0c 1527 }
1528 }
1529 }
1530
0e866ddc 1531 if(fSimTotEt>0.0)FillHisto1D("SimTotEt",fSimTotEt,1.0);
1532 if(fSimHadEt>0.0)FillHisto1D("SimHadEt",fSimHadEt,1.0);
1533 if(fSimPiKPEt>0.0)FillHisto1D("SimPiKPEt",fSimPiKPEt,1.0);
2c0680a5 1534 if(AliPWG0Helper::GetEventProcessType(mcEvent->Header()) == AliPWG0Helper::kND){
1535 FillHisto1D("SimHadEtND",fSimHadEt,1.0);
1536 FillHisto1D("SimTotEtND",fSimHadEt,1.0);
1537 FillHisto1D("NEventsND",0.5,1);
1538 }
1539 if(AliPWG0Helper::GetEventProcessType(mcEvent->Header()) == AliPWG0Helper::kSD){
1540 FillHisto1D("SimHadEtSD",fSimHadEt,1.0);
1541 FillHisto1D("SimTotEtSD",fSimHadEt,1.0);
1542 FillHisto1D("NEventsSD",0.5,1);
1543 }
1544 if(AliPWG0Helper::GetEventProcessType(mcEvent->Header()) == AliPWG0Helper::kDD){
1545 FillHisto1D("SimHadEtDD",fSimHadEt,1.0);
1546 FillHisto1D("SimTotEtDD",fSimHadEt,1.0);
1547 FillHisto1D("NEventsDD",0.5,1);
1548 }
02710991 1549 if(fCentBin != -1){//if we have Pb+Pb and a centrality bin was found
1550 if(fSimTotEt>0.0) FillHisto1D(Form("SimTotEtCB%i",fCentBin),fSimTotEt,1.0);
1551 if(fSimHadEt>0.0) FillHisto1D(Form("SimHadEtCB%i",fCentBin),fSimHadEt,1.0);
1552 if(fSimPiKPEt>0.0)FillHisto1D(Form("SimPiKPEtCB%i",fCentBin),fSimPiKPEt,1.0);
1553 }
0e866ddc 1554
7d2d1773 1555 if(fInvestigateSmearing){
1556 //Smearing histograms
1557 if(fSimPiKPEt>0.0) FillHisto2D("SimPiKPEtMinusSimPtSmeared",fSimPiKPEt,(fSimPiKPEt-fSimPiKPEtPtSmeared)/fSimPiKPEt,1.0);
1558 FillHisto1D("SimPiKPEtPtSmeared",fSimPiKPEtPtSmeared,1.0);
1559 if(fSimPiKPEt>0.0) FillHisto2D("SimPiKPEtMinusSimEfficiencySmeared",fSimPiKPEt,(fSimPiKPEt-fSimPiKPEtEfficiencySmeared)/fSimPiKPEt,1.0);
1560 FillHisto1D("SimPiKPEtEfficiencySmeared",fSimPiKPEtEfficiencySmeared,1.0);
1561 if(fSimPiKPEt>0.0) FillHisto2D("SimPiKPEtMinusSimPtCutSmearedTPC",fSimPiKPEt,(fSimPiKPEt-fSimPiKPEtPtCutSmearedTPC)/fSimPiKPEt,1.0);
1562 FillHisto1D("SimPiKPEtPtCutSmearedTPC",fSimPiKPEtPtCutSmearedTPC,1.0);
1563 if(fSimPiKPEt>0.0) FillHisto2D("SimPiKPEtMinusSimPtCutSmearedITS",fSimPiKPEt,(fSimPiKPEt-fSimPiKPEtPtCutSmearedITS)/fSimPiKPEt,1.0);
1564 FillHisto1D("SimPiKPEtPtCutSmearedITS",fSimPiKPEtPtCutSmearedTPC,1.0);
1565 if(fSimPiKPEt>0.0) FillHisto2D("SimPiKPEtMinusSimPIDSmeared",fSimPiKPEt,(fSimPiKPEt-fSimPiKPEtPIDSmeared)/fSimPiKPEt,1.0);
1566 FillHisto1D("SimPiKPEtPIDSmeared",fSimPiKPEtPIDSmeared,1.0);
1567 if(fSimPiKPEt>0.0) FillHisto2D("SimPiKPEtMinusSimPIDSmearedNoID",fSimPiKPEt,(fSimPiKPEt-fSimPiKPEtPIDSmearedNoID)/fSimPiKPEt,1.0);
1568 FillHisto1D("SimPiKPEtPIDSmearedNoID",fSimPiKPEtPIDSmearedNoID,1.0);
1569 }
641e1e0c 1570 return 1;
1571
1572}
1573
1574void AliAnalysisHadEtMonteCarlo::Init()
cf6522d1 1575{ // Init
641e1e0c 1576 AliAnalysisHadEt::Init();
0e866ddc 1577 if(!fPtSmearer) fPtSmearer = new TRandom();
641e1e0c 1578}
1579void AliAnalysisHadEtMonteCarlo::CreateHistograms(){
1580 //for simulated Et only (no reconstruction)
1581 CreateEtaPtHisto2D(TString("EtSimulatedPiPlus"),TString("Simulated E_{T} from #pi^{+}"));
1582 CreateEtaPtHisto2D("EtSimulatedPiMinus","Simulated E_{T} from #pi^{-}");
1583 CreateEtaPtHisto2D("EtSimulatedKPlus","Simulated E_{T} from K^{+}");
1584 CreateEtaPtHisto2D("EtSimulatedKMinus","Simulated E_{T} from K^{-}");
1585 CreateEtaPtHisto2D("EtSimulatedProton","Simulated E_{T} from p");
f43fc416 1586 CreateEtaPtHisto2D("EtSimulatedAntiProton","Simulated E_{T} from #bar{p}");//Both baryon enhancement and strangeness rescaling
1587 if(fBaryonEnhancement){
1588 CreateEtaPtHisto2D("EtSimulatedProtonEnhanced","Simulated E_{T} from p");
1589 CreateEtaPtHisto2D("EtSimulatedAntiProtonEnhanced","Simulated E_{T} from #bar{p}");
1590 }
641e1e0c 1591 CreateEtaPtHisto2D("EtSimulatedChargedHadron","Simulated E_{T} from charged hadrons");
52503ae7 1592 CreateEtaPtHisto2D("EtNSimulatedPiPlus","Number of Simulated #pi^{+}");
641e1e0c 1593 CreateEtaPtHisto2D("EtNSimulatedPiMinus","Number of simulated #pi^{-}");
1594 CreateEtaPtHisto2D("EtNSimulatedKPlus","Number of simulated K^{+}");
1595 CreateEtaPtHisto2D("EtNSimulatedKMinus","Number of simulated K^{-}");
1596 CreateEtaPtHisto2D("EtNSimulatedProton","Number of simulated p");
1597 CreateEtaPtHisto2D("EtNSimulatedAntiProton","Number of simulated #bar{p}");
f43fc416 1598 if(fBaryonEnhancement){
1599 CreateEtaPtHisto2D("EtNSimulatedProtonEnhanced","Number of simulated p");
1600 CreateEtaPtHisto2D("EtNSimulatedAntiProtonEnhanced","Number of simulated #bar{p}");
1601 }
641e1e0c 1602 CreateEtaPtHisto2D("EtNSimulatedChargedHadron","Number of simulated charged hadrons");
52503ae7 1603 if(fDataSet==20100){//If this is Pb+Pb
1604 Int_t width = 5;
61e3f555 1605 if(fNCentBins<21) width = 10;
bf205f52 1606 for(Int_t i=0;i<fNCentBins;i++){
52503ae7 1607 CreateEtaPtHisto2D(Form("EtNSimulatedPiPlusCB%i",i),Form("Number of Simulated #pi^{+} for %i-%i central",i*width,(i+1)*width));
1608 CreateEtaPtHisto2D(Form("EtNSimulatedPiMinusCB%i",i),Form("Number of simulated #pi^{-} for %i-%i central",i*width,(i+1)*width));
1609 CreateEtaPtHisto2D(Form("EtNSimulatedKPlusCB%i",i),Form("Number of simulated K^{+} for %i-%i central",i*width,(i+1)*width));
1610 CreateEtaPtHisto2D(Form("EtNSimulatedKMinusCB%i",i),Form("Number of simulated K^{-} for %i-%i central",i*width,(i+1)*width));
1611 CreateEtaPtHisto2D(Form("EtNSimulatedProtonCB%i",i),Form("Number of simulated p for %i-%i central",i*width,(i+1)*width));
1612 CreateEtaPtHisto2D(Form("EtNSimulatedAntiProtonCB%i",i),Form("Number of simulated #bar{p} for %i-%i central",i*width,(i+1)*width));
1613 CreateEtaPtHisto2D(Form("EtNSimulatedChargedHadronCB%i",i),Form("Number of simulated charged hadrons for %i-%i central",i*width,(i+1)*width));
1614 }
1615 }
0e866ddc 1616 CreateEtaPtHisto2D("EtSimulatedChargedHadronAssumingNoPt","Simulated E_{T} from charged hadrons assuming p_{T}=0");
1617 CreateEtaPtHisto2D("EtSimulatedChargedHadronAssumingPtTPCCut","Simulated E_{T} from charged hadrons assuming p_{T}=0.15");
1618 CreateEtaPtHisto2D("EtSimulatedChargedHadronAssumingPtITSCut","Simulated E_{T} from charged hadrons assuming p_{T}=0.10");
641e1e0c 1619
1620 CreateEtaPtHisto2D("EtSimulatedChargedHadronAssumingPion","Simulated E_{T} from charged hadrons assuming they are all pions");
86d9d0dc 1621 CreateEtaPtHisto2D("EtSimulatedChargedHadronAssumingProton","Simulated E_{T} from charged hadrons assuming they are all pions");
1622 CreateEtaPtHisto2D("EtSimulatedChargedHadronAssumingKaon","Simulated E_{T} from charged hadrons assuming they are all pions");
641e1e0c 1623 CreateEtaPtHisto2D("EtSimulatedKPlusAssumingPion","Simulated E_{T} from K^{+} assuming #pi mass");
1624 CreateEtaPtHisto2D("EtSimulatedKMinusAssumingPion","Simulated E_{T} from K^{-} assuming #pi mass");
1625 CreateEtaPtHisto2D("EtSimulatedProtonAssumingPion","Simulated E_{T} from p assuming #pi mass");
1626 CreateEtaPtHisto2D("EtSimulatedAntiProtonAssumingPion","Simulated E_{T} from #bar{p} assuming #pi mass");
86d9d0dc 1627 CreateEtaPtHisto2D("EtSimulatedKPlusAssumingProton","Simulated E_{T} from K^{+} assuming #pi mass");
1628 CreateEtaPtHisto2D("EtSimulatedKMinusAssumingProton","Simulated E_{T} from K^{-} assuming #pi mass");
1629 CreateEtaPtHisto2D("EtSimulatedPiPlusAssumingProton","Simulated E_{T} from p assuming #pi mass");
1630 CreateEtaPtHisto2D("EtSimulatedPiMinusAssumingProton","Simulated E_{T} from #bar{p} assuming #pi mass");
1631 CreateEtaPtHisto2D("EtSimulatedPiPlusAssumingKaon","Simulated E_{T} from K^{+} assuming #pi mass");
1632 CreateEtaPtHisto2D("EtSimulatedPiMinusAssumingKaon","Simulated E_{T} from K^{-} assuming #pi mass");
1633 CreateEtaPtHisto2D("EtSimulatedProtonAssumingKaon","Simulated E_{T} from p assuming #pi mass");
1634 CreateEtaPtHisto2D("EtSimulatedAntiProtonAssumingKaon","Simulated E_{T} from #bar{p} assuming #pi mass");
f43fc416 1635 if(fBaryonEnhancement){
1636 CreateEtaPtHisto2D("EtSimulatedProtonAssumingPionEnhanced","Simulated E_{T} from p assuming #pi mass");
1637 CreateEtaPtHisto2D("EtSimulatedAntiProtonAssumingPionEnhanced","Simulated E_{T} from #bar{p} assuming #pi mass");
1638 }
641e1e0c 1639
1640 CreateEtaPtHisto2D("EtSimulatedLambda","Simulated E_{T} from #Lambda");
1641 CreateEtaPtHisto2D("EtSimulatedAntiLambda","Simulated E_{T} from #bar{#Lambda}");
1642 CreateEtaPtHisto2D("EtSimulatedK0S","Simulated E_{T} from K^{0}_{S}");
1643 CreateEtaPtHisto2D("EtSimulatedK0L","Simulated E_{T} from K^{0}_{L}");
f43fc416 1644 CreateEtaPtHisto2D("EtSimulatedLambdaReweighted","Simulated E_{T} from #Lambda");//These will also be used for baryon enhancement
964c8159 1645 CreateEtaPtHisto2D("EtSimulatedAntiLambdaReweighted","Simulated E_{T} from #bar{#Lambda}");
1646 CreateEtaPtHisto2D("EtSimulatedK0SReweighted","Simulated E_{T} from K^{0}_{S}");
1647 CreateEtaPtHisto2D("EtSimulatedK0LReweighted","Simulated E_{T} from K^{0}_{L}");
641e1e0c 1648 CreateEtaPtHisto2D("EtSimulatedNeutron","Simulated E_{T} from neutrons");
1649 CreateEtaPtHisto2D("EtSimulatedAntiNeutron","Simulated E_{T} from #bar{n}");
1650 CreateEtaPtHisto2D("EtSimulatedEPlus","Simulated E_{T} from e^{+}");
1651 CreateEtaPtHisto2D("EtSimulatedEMinus","Simulated E_{T} from e^{-}");
1652 CreateEtaPtHisto2D("EtSimulatedOmega","Simulated E_{T} from #Omega^{-}");
1653 CreateEtaPtHisto2D("EtSimulatedAntiOmega","Simulated E_{T} from #Omega^{+}");
1654 CreateEtaPtHisto2D("EtSimulatedXi","Simulated E_{T} from #Xi^{-}");
1655 CreateEtaPtHisto2D("EtSimulatedAntiXi","Simulated E_{T} from #Xi^{+}");
1656 CreateEtaPtHisto2D("EtSimulatedSigma","Simulated E_{T} from #Xi^{-}");
1657 CreateEtaPtHisto2D("EtSimulatedAntiSigma","Simulated E_{T} from #Xi^{+}");
1658 CreateEtaPtHisto2D("EtSimulatedXi0","Simulated E_{T} from #Xi^{0}");
1659 CreateEtaPtHisto2D("EtSimulatedAntiXi0","Simulated E_{T} from #Xi^{0}");
1660 CreateEtaPtHisto2D("EtSimulatedAllHadron","Simulated E_{T} from all hadrons");
1661
1662
1663 CreateEtaPtHisto2D("EtSimulatedLambdaDaughters","Simulated E_{T} from #Lambda Daughters");
1664 CreateEtaPtHisto2D("EtSimulatedAntiLambdaDaughters","Simulated E_{T} from #bar{#Lambda} Daughters");
1665 CreateEtaPtHisto2D("EtSimulatedK0SDaughters","Simulated E_{T} from K^{0}_{S} Daughters");
964c8159 1666 CreateEtaPtHisto2D("EtSimulatedLambdaDaughtersReweighted","Simulated E_{T} from #Lambda Daughters");
1667 CreateEtaPtHisto2D("EtSimulatedAntiLambdaDaughtersReweighted","Simulated E_{T} from #bar{#Lambda} Daughters");
1668 CreateEtaPtHisto2D("EtSimulatedK0SDaughtersReweighted","Simulated E_{T} from K^{0}_{S} Daughters");
641e1e0c 1669 CreateEtaPtHisto2D("EtSimulatedOmegaDaughters","Simulated E_{T} from #Omega^{-} Daughters");
1670 CreateEtaPtHisto2D("EtSimulatedAntiOmegaDaughters","Simulated E_{T} from #Omega^{+} Daughters");
1671 CreateEtaPtHisto2D("EtSimulatedXiDaughters","Simulated E_{T} from #Xi^{-} Daughters");
1672 CreateEtaPtHisto2D("EtSimulatedAntiXiDaughters","Simulated E_{T} from #Xi^{+} Daughters");
1673
f427cbed 1674
1675 CreateEtaPtHisto2D("EtSimulatedGamma","Simulated E_{T} from #gamma");
1676 CreateEtaPtHisto2D("EtSimulatedEta","Simulated E_{T} from #eta");
1677 CreateEtaPtHisto2D("EtSimulatedPi0","Simulated E_{T} from #pi^{0}");
b64de20c 1678 CreateEtaPtHisto2D("EtSimulatedOmega0","Simulated E_{T} from #omega");
f427cbed 1679
cf6522d1 1680 TString *strTPC = new TString("TPC");
1681 TString *strITS = new TString("ITS");
1682 TString *strTPCITS = new TString("TPCITS");
7d2d1773 1683 Int_t lastcutset = 1;
1684 if(fRequireITSHits) lastcutset = 2;
1685 for(Int_t i=0;i<=lastcutset;i++){
ea331c5d 1686 TString *cutName = NULL;
641e1e0c 1687 Float_t maxPtdEdx = 10;
1688 Float_t mindEdx = 35;
1689 Float_t maxdEdx = 150.0;
1690 switch(i){
1691 case 0:
cf6522d1 1692 cutName = strTPC;
641e1e0c 1693 break;
1694 case 1:
cf6522d1 1695 cutName = strITS;
641e1e0c 1696 maxPtdEdx = 5;
1697 maxdEdx = 500.0;
1698 break;
1699 case 2:
cf6522d1 1700 cutName = strTPCITS;
641e1e0c 1701 break;
1702 default:
1703 cerr<<"Error: cannot make histograms!"<<endl;
1704 return;
1705 }
1706
cf6522d1 1707 CreateEtaPtHisto2D(Form("EtReconstructed%sIdentifiedPiPlus",cutName->Data()),"Reconstructed E_{T} from identified #pi^{+}");
1708 CreateEtaPtHisto2D(Form("EtReconstructed%sIdentifiedPiMinus",cutName->Data()),"Reconstructed E_{T} from identified #pi^{-}");
1709 CreateEtaPtHisto2D(Form("EtReconstructed%sIdentifiedKPlus",cutName->Data()),"Reconstructed E_{T} from identified K^{+}");
1710 CreateEtaPtHisto2D(Form("EtReconstructed%sIdentifiedEMinus",cutName->Data()),"Reconstructed E_{T} from identified e^{-}");
1711 CreateEtaPtHisto2D(Form("EtReconstructed%sIdentifiedEPlus",cutName->Data()),"Reconstructed E_{T} from identified e^{+}");
1712 CreateEtaPtHisto2D(Form("EtReconstructed%sIdentifiedKMinus",cutName->Data()),"Reconstructed E_{T} from identified K^{-}");
1713 CreateEtaPtHisto2D(Form("EtReconstructed%sIdentifiedProton",cutName->Data()),"Reconstructed E_{T} from identified p");
1714 CreateEtaPtHisto2D(Form("EtReconstructed%sIdentifiedAntiProton",cutName->Data()),"Reconstructed E_{T} from identified #bar{p}");
f43fc416 1715 if(fBaryonEnhancement){
1716 CreateEtaPtHisto2D(Form("EtReconstructed%sIdentifiedProtonEnhanced",cutName->Data()),"Reconstructed E_{T} from identified p");
1717 CreateEtaPtHisto2D(Form("EtReconstructed%sIdentifiedAntiProtonEnhanced",cutName->Data()),"Reconstructed E_{T} from identified #bar{p}");
1718 }
cf6522d1 1719 CreateEtaPtHisto2D(Form("EtNReconstructed%sUnidentified",cutName->Data()),"Number of Reconstructed unidentified particles");
1720 CreateEtaPtHisto2D(Form("EtReconstructed%sUnidentifiedAssumingPion",cutName->Data()),"Reconstructed E_{T} from unidentified particles assuming pion mass");
86d9d0dc 1721 CreateEtaPtHisto2D(Form("EtReconstructed%sUnidentifiedAssumingProton",cutName->Data()),"Reconstructed E_{T} from unidentified particles assuming pion mass");
1722 CreateEtaPtHisto2D(Form("EtReconstructed%sUnidentifiedAssumingKaon",cutName->Data()),"Reconstructed E_{T} from unidentified particles assuming pion mass");
f43fc416 1723
1724 CreateEtaPtHisto2D(Form("EtNReconstructed%sUnidentifiedKaon",cutName->Data()),"Number of Reconstructed unidentified kaons particles");
1725 CreateEtaPtHisto2D(Form("EtReconstructed%sUnidentifiedKaonAssumingPion",cutName->Data()),"Reconstructed E_{T} from unidentified kaons particles assuming pion mass");
86d9d0dc 1726 CreateEtaPtHisto2D(Form("EtReconstructed%sUnidentifiedKaonAssumingProton",cutName->Data()),"Reconstructed E_{T} from unidentified kaons particles assuming pion mass");
1727 CreateEtaPtHisto2D(Form("EtReconstructed%sUnidentifiedKaonAssumingKaon",cutName->Data()),"Reconstructed E_{T} from unidentified kaons particles assuming pion mass");
904048b2 1728 CreateEtaPtHisto2D(Form("EtReconstructed%sUnidentifiedKaon",cutName->Data()),"Reconstructed E_{T} from unidentified kaons particles assuming kaon mass");
f43fc416 1729 CreateEtaPtHisto2D(Form("EtNReconstructed%sUnidentifiedProton",cutName->Data()),"Number of Reconstructed unidentified proton particles");
1730 CreateEtaPtHisto2D(Form("EtReconstructed%sUnidentifiedProtonAssumingPion",cutName->Data()),"Reconstructed E_{T} from unidentified proton particles assuming pion mass");
86d9d0dc 1731 CreateEtaPtHisto2D(Form("EtReconstructed%sUnidentifiedProtonAssumingKaon",cutName->Data()),"Reconstructed E_{T} from unidentified proton particles assuming pion mass");
1732 CreateEtaPtHisto2D(Form("EtReconstructed%sUnidentifiedPionAssumingKaon",cutName->Data()),"Reconstructed E_{T} from unidentified kaons particles assuming pion mass");
1733 CreateEtaPtHisto2D(Form("EtReconstructed%sUnidentifiedProtonAssumingKaon",cutName->Data()),"Reconstructed E_{T} from unidentified proton particles assuming pion mass");
1734 CreateEtaPtHisto2D(Form("EtReconstructed%sUnidentifiedPionAssumingProton",cutName->Data()),"Reconstructed E_{T} from unidentified kaons particles assuming pion mass");
1735 CreateEtaPtHisto2D(Form("EtReconstructed%sUnidentifiedProtonAssumingProton",cutName->Data()),"Reconstructed E_{T} from unidentified proton particles assuming pion mass");
904048b2 1736 CreateEtaPtHisto2D(Form("EtReconstructed%sUnidentifiedProton",cutName->Data()),"Reconstructed E_{T} from unidentified proton particles assuming proton mass");
f43fc416 1737 if(fBaryonEnhancement){
1738 CreateEtaPtHisto2D(Form("EtNReconstructed%sUnidentifiedProtonEnhanced",cutName->Data()),"Number of Reconstructed unidentified proton particles");
1739 CreateEtaPtHisto2D(Form("EtReconstructed%sUnidentifiedProtonAssumingPionEnhanced",cutName->Data()),"Reconstructed E_{T} from unidentified proton particles assuming pion mass");
904048b2 1740 CreateEtaPtHisto2D(Form("EtReconstructed%sUnidentifiedProtonEnhanced",cutName->Data()),"Reconstructed E_{T} from unidentified proton particles assuming proton mass");
f43fc416 1741 }
1742 CreateEtaPtHisto2D(Form("EtNReconstructed%sUnidentifiedPion",cutName->Data()),"Number of Reconstructed unidentified pions particles");
1743 CreateEtaPtHisto2D(Form("EtReconstructed%sUnidentifiedPionAssumingPion",cutName->Data()),"Reconstructed E_{T} from unidentified pions particles assuming pion mass");
86d9d0dc 1744 CreateEtaPtHisto2D(Form("EtReconstructed%sUnidentifiedPionAssumingKaon",cutName->Data()),"Reconstructed E_{T} from unidentified pions particles assuming pion mass");
1745 CreateEtaPtHisto2D(Form("EtReconstructed%sUnidentifiedPionAssumingProton",cutName->Data()),"Reconstructed E_{T} from unidentified pions particles assuming pion mass");
904048b2 1746 CreateEtaPtHisto2D(Form("EtReconstructed%sUnidentifiedPion",cutName->Data()),"Reconstructed E_{T} from unidentified pions particles assuming pion mass");
f43fc416 1747
cf6522d1 1748 CreateEtaPtHisto2D(Form("EtReconstructed%sUnidentified",cutName->Data()),"Reconstructed E_{T} from unidentified particles using real mass");
1749 CreateEtaPtHisto2D(Form("EtReconstructed%sMisidentifiedElectrons",cutName->Data()),"Reconstructed E_{T} from misidentified electrons");
1750
1751
1752 CreateEtaPtHisto2D(Form("EtReconstructed%sPiPlus",cutName->Data()),"Reconstructed E_{T} from #pi^{+}");
1753 CreateEtaPtHisto2D(Form("EtReconstructed%sPiMinus",cutName->Data()),"Reconstructed E_{T} from #pi^{-}");
1754 CreateEtaPtHisto2D(Form("EtReconstructed%sKPlus",cutName->Data()),"Reconstructed E_{T} from K^{+}");
1755 CreateEtaPtHisto2D(Form("EtReconstructed%sKMinus",cutName->Data()),"Reconstructed E_{T} from K^{-}");
1756 CreateEtaPtHisto2D(Form("EtReconstructed%sProton",cutName->Data()),"Reconstructed E_{T} from p");
1757 CreateEtaPtHisto2D(Form("EtReconstructed%sAntiProton",cutName->Data()),"Reconstructed E_{T} from #bar{p}");
f43fc416 1758 if(fBaryonEnhancement){
1759 CreateEtaPtHisto2D(Form("EtReconstructed%sProtonEnhanced",cutName->Data()),"Reconstructed E_{T} from p");
1760 CreateEtaPtHisto2D(Form("EtReconstructed%sAntiProtonEnhanced",cutName->Data()),"Reconstructed E_{T} from #bar{p}");
1761 }
cf6522d1 1762 CreateEtaPtHisto2D(Form("EtReconstructed%sChargedHadron",cutName->Data()),"Reconstructed E_{T} from charged hadrons");
1763 CreateEtaPtHisto2D(Form("EtNReconstructed%sPiPlus",cutName->Data()),"Reconstructed E_{T} from #pi^{+}");
1764 CreateEtaPtHisto2D(Form("EtNReconstructed%sPiMinus",cutName->Data()),"Reconstructed E_{T} from #pi^{-}");
1765 CreateEtaPtHisto2D(Form("EtNReconstructed%sKPlus",cutName->Data()),"Reconstructed E_{T} from K^{+}");
1766 CreateEtaPtHisto2D(Form("EtNReconstructed%sKMinus",cutName->Data()),"Reconstructed E_{T} from K^{-}");
1767 CreateEtaPtHisto2D(Form("EtNReconstructed%sProton",cutName->Data()),"Reconstructed E_{T} from p");
1768 CreateEtaPtHisto2D(Form("EtNReconstructed%sAntiProton",cutName->Data()),"Reconstructed E_{T} from #bar{p}");
f43fc416 1769 if(fBaryonEnhancement){
1770 CreateEtaPtHisto2D(Form("EtNReconstructed%sProtonEnhanced",cutName->Data()),"Reconstructed E_{T} from p");
1771 CreateEtaPtHisto2D(Form("EtNReconstructed%sAntiProtonEnhanced",cutName->Data()),"Reconstructed E_{T} from #bar{p}");
1772 }
cf6522d1 1773 CreateEtaPtHisto2D(Form("EtNReconstructed%sChargedHadron",cutName->Data()),"Reconstructed E_{T} from charged hadrons");
52503ae7 1774 if(fDataSet==20100){//If this is Pb+Pb
1775 Int_t width = 5;
61e3f555 1776 if(fNCentBins<21) width = 10;
bf205f52 1777 for(Int_t j=0;j<fNCentBins;j++){
52503ae7 1778 CreateEtaPtHisto2D(Form("EtNReconstructed%sPiPlusCB%i",cutName->Data(),j),Form("Reconstructed E_{T} from #pi^{+} for %i-%i central",j*width,(j+1)*width));
1779 CreateEtaPtHisto2D(Form("EtNReconstructed%sPiMinusCB%i",cutName->Data(),j),Form("Reconstructed E_{T} from #pi^{-} for %i-%i central",j*width,(j+1)*width));
1780 CreateEtaPtHisto2D(Form("EtNReconstructed%sKPlusCB%i",cutName->Data(),j),Form("Reconstructed E_{T} from K^{+} for %i-%i central",j*width,(j+1)*width));
1781 CreateEtaPtHisto2D(Form("EtNReconstructed%sKMinusCB%i",cutName->Data(),j),Form("Reconstructed E_{T} from K^{-} for %i-%i central",j*width,(j+1)*width));
1782 CreateEtaPtHisto2D(Form("EtNReconstructed%sProtonCB%i",cutName->Data(),j),Form("Reconstructed E_{T} from p for %i-%i central",j*width,(j+1)*width));
1783 CreateEtaPtHisto2D(Form("EtNReconstructed%sAntiProtonCB%i",cutName->Data(),j),Form("Reconstructed E_{T} from #bar{p} for %i-%i central",j*width,(j+1)*width));
1784 CreateEtaPtHisto2D(Form("EtNReconstructed%sChargedHadronCB%i",cutName->Data(),j),Form("Reconstructed E_{T} from charged hadrons for %i-%i central",j*width,(j+1)*width));
1785 }
1786 }
cf6522d1 1787
1788 CreateEtaPtHisto2D(Form("EtReconstructed%sChargedHadronAssumingPion",cutName->Data()),"Reconstructed E_{T} from charged hadrons assuming they are all pions");
86d9d0dc 1789 CreateEtaPtHisto2D(Form("EtReconstructed%sChargedHadronAssumingProton",cutName->Data()),"Reconstructed E_{T} from charged hadrons assuming they are all pions");
1790 CreateEtaPtHisto2D(Form("EtReconstructed%sChargedHadronAssumingKaon",cutName->Data()),"Reconstructed E_{T} from charged hadrons assuming they are all pions");
cf6522d1 1791 CreateEtaPtHisto2D(Form("EtReconstructed%sKPlusAssumingPion",cutName->Data()),"Reconstructed E_{T} from K^{+} assuming #pi mass");
1792 CreateEtaPtHisto2D(Form("EtReconstructed%sKMinusAssumingPion",cutName->Data()),"Reconstructed E_{T} from K^{-} assuming #pi mass");
1793 CreateEtaPtHisto2D(Form("EtReconstructed%sProtonAssumingPion",cutName->Data()),"Reconstructed E_{T} from p assuming #pi mass");
1794 CreateEtaPtHisto2D(Form("EtReconstructed%sAntiProtonAssumingPion",cutName->Data()),"Reconstructed E_{T} from #bar{p} assuming #pi mass");
86d9d0dc 1795 CreateEtaPtHisto2D(Form("EtReconstructed%sPiPlusAssumingKaon",cutName->Data()),"Reconstructed E_{T} from K^{+} assuming #pi mass");
1796 CreateEtaPtHisto2D(Form("EtReconstructed%sPiMinusAssumingKaon",cutName->Data()),"Reconstructed E_{T} from K^{-} assuming #pi mass");
1797 CreateEtaPtHisto2D(Form("EtReconstructed%sKPlusAssumingKaon",cutName->Data()),"Reconstructed E_{T} from K^{+} assuming #pi mass");
1798 CreateEtaPtHisto2D(Form("EtReconstructed%sKMinusAssumingKaon",cutName->Data()),"Reconstructed E_{T} from K^{-} assuming #pi mass");
1799 CreateEtaPtHisto2D(Form("EtReconstructed%sProtonAssumingKaon",cutName->Data()),"Reconstructed E_{T} from p assuming #pi mass");
1800 CreateEtaPtHisto2D(Form("EtReconstructed%sAntiProtonAssumingKaon",cutName->Data()),"Reconstructed E_{T} from #bar{p} assuming #pi mass");
1801
1802 CreateEtaPtHisto2D(Form("EtReconstructed%sKPlusAssumingProton",cutName->Data()),"Reconstructed E_{T} from K^{+} assuming #pi mass");
1803 CreateEtaPtHisto2D(Form("EtReconstructed%sKMinusAssumingProton",cutName->Data()),"Reconstructed E_{T} from K^{-} assuming #pi mass");
1804 CreateEtaPtHisto2D(Form("EtReconstructed%sPiMinusAssumingProton",cutName->Data()),"Reconstructed E_{T} from p assuming #pi mass");
1805 CreateEtaPtHisto2D(Form("EtReconstructed%sPiPlusAssumingProton",cutName->Data()),"Reconstructed E_{T} from #bar{p} assuming #pi mass");
1806 CreateEtaPtHisto2D(Form("EtReconstructed%sProtonAssumingProton",cutName->Data()),"Reconstructed E_{T} from p assuming #pi mass");
1807 CreateEtaPtHisto2D(Form("EtReconstructed%sAntiProtonAssumingProton",cutName->Data()),"Reconstructed E_{T} from #bar{p} assuming #pi mass");
1808
f43fc416 1809 if(fBaryonEnhancement){
1810 CreateEtaPtHisto2D(Form("EtReconstructed%sProtonAssumingPionEnhanced",cutName->Data()),"Reconstructed E_{T} from p assuming #pi mass");
1811 CreateEtaPtHisto2D(Form("EtReconstructed%sAntiProtonAssumingPionEnhanced",cutName->Data()),"Reconstructed E_{T} from #bar{p} assuming #pi mass");
1812 }
cf6522d1 1813
1814 CreateEtaPtHisto2D(Form("EtReconstructed%sEPlus",cutName->Data()),"Reconstructed E_{T} from e^{+}");
1815 CreateEtaPtHisto2D(Form("EtReconstructed%sEMinus",cutName->Data()),"Reconstructed E_{T} from e^{-}");
1816
1817
1818
1819 CreateEtaPtHisto2D(Form("EtReconstructed%sLambdaDaughters",cutName->Data()),"Reconstructed E_{T} from #Lambda Daughters");
1820 CreateEtaPtHisto2D(Form("EtReconstructed%sAntiLambdaDaughters",cutName->Data()),"Reconstructed E_{T} from #bar{#Lambda} Daughters");
1821 CreateEtaPtHisto2D(Form("EtReconstructed%sK0SDaughters",cutName->Data()),"Reconstructed E_{T} from K^{0}_{S} Daughters");
0f97be4c 1822 CreateEtaPtHisto2D(Form("EtReconstructed%sLambdaDaughtersReweighted",cutName->Data()),"Reconstructed E_{T} from #Lambda Daughters");
1823 CreateEtaPtHisto2D(Form("EtReconstructed%sAntiLambdaDaughtersReweighted",cutName->Data()),"Reconstructed E_{T} from #bar{#Lambda} Daughters");
1824 CreateEtaPtHisto2D(Form("EtReconstructed%sK0SDaughtersReweighted",cutName->Data()),"Reconstructed E_{T} from K^{0}_{S} Daughters");
cf6522d1 1825 CreateEtaPtHisto2D(Form("EtReconstructed%sOmegaDaughters",cutName->Data()),"Reconstructed E_{T} from #Omega^{-} Daughters");
1826 CreateEtaPtHisto2D(Form("EtReconstructed%sAntiOmegaDaughters",cutName->Data()),"Reconstructed E_{T} from #Omega^{+} Daughters");
1827 CreateEtaPtHisto2D(Form("EtReconstructed%sXiDaughters",cutName->Data()),"Reconstructed E_{T} from #Xi^{-} Daughters");
1828 CreateEtaPtHisto2D(Form("EtReconstructed%sAntiXiDaughters",cutName->Data()),"Reconstructed E_{T} from #Xi^{+} Daughters");
49b25059 1829 CreateEtaPtHisto2D(Form("EtReconstructed%sConversionElectrons",cutName->Data()),"Reconstructed E_{T} from conversion electrons");
1830 CreateEtaPtHisto2D(Form("EtReconstructed%sSecondaryMuons",cutName->Data()),"Reconstructed E_{T} from secondary muons");//from pions
1831 CreateEtaPtHisto2D(Form("EtReconstructed%sSecondaryPions",cutName->Data()),"Reconstructed E_{T} from secondary pions");//from rescattering and sigma+-
1832 CreateEtaPtHisto2D(Form("EtReconstructed%sSecondaryProtons",cutName->Data()),"Reconstructed E_{T} from secondary protons");//from rescattering and sigma+-
cf6522d1 1833
1834 CreateIntHisto1D(Form("UnidentifiedPIDs%s",cutName->Data()),"PIDs of unidentified particles", "PID", "Number of particles",9, -4,4);
1835 CreateHisto2D(Form("MisidentifiedPIDs%s",cutName->Data()),"PIDs of misidentified particles", "PID real","PID identified",5, -.5,4.5,5, -.5,4.5);
1836 CreateHisto2D(Form("dEdxAll%s",cutName->Data()),"dE/dx for all particles","momentum (GeV/c)","dE/dx",400,0.0,maxPtdEdx,200,mindEdx,maxdEdx);
1837 CreateHisto2D(Form("dEdxPion%s",cutName->Data()),"dE/dx for #pi^{#pm}","momentum (GeV/c)","dE/dx",400,0.0,maxPtdEdx,200,mindEdx,maxdEdx);
1838 CreateHisto2D(Form("dEdxKaon%s",cutName->Data()),"dE/dx for K^{#pm}","momentum (GeV/c)","dE/dx",400,0.0,maxPtdEdx,200,mindEdx,maxdEdx);
1839 CreateHisto2D(Form("dEdxProton%s",cutName->Data()),"dE/dx for p(#bar{p})","momentum (GeV/c)","dE/dx",400,0.0,maxPtdEdx,200,mindEdx,maxdEdx);
1840 CreateHisto2D(Form("dEdxElectron%s",cutName->Data()),"dE/dx for e^{#pm}","momentum (GeV/c)","dE/dx",400,0.0,maxPtdEdx,200,mindEdx,maxdEdx);
1841 CreateHisto2D(Form("dEdxUnidentified%s",cutName->Data()),"dE/dx for unidentified particles","momentum (GeV/c)","dE/dx",400,0.0,maxPtdEdx,200,mindEdx,maxdEdx);
641e1e0c 1842 }
464aa50c 1843 delete strTPC;
1844 delete strITS;
1845 delete strTPCITS;
4e0c0fe1 1846
1847 Float_t minEt = 0.0;
1848 Float_t maxEt = 100.0;
37827f90 1849 if(fDataSet==20100) maxEt=4000.0;
4b40b2b1 1850 Int_t nbinsEt = 100;
4e0c0fe1 1851 char histoname[200];
1852 char histotitle[200];
1853 char xtitle[50];
1854 char ytitle[50];
464aa50c 1855 TString *sTPC = new TString("TPC");
1856 TString *sITS = new TString("ITS");
1857 TString *sTPCpt = new TString("0.15");
1858 TString *sITSpt = new TString("0.10");
1859 TString *sPID = new TString("");
1860 TString *sNoPID = new TString("NoPID");
1861 TString *sNoPIDString = new TString(", No PID");
1862 TString *sHadEt = new TString("HadEt");
1863 TString *sTotEt = new TString("TotEt");
1864 TString *sTotEtString = new TString("total E_{T}");
1865 TString *sHadEtString = new TString("hadronic E_{T}");
1866 TString *sFull = new TString("Full");
1867 TString *sEMCAL = new TString("EMCAL");
1868 TString *sPHOS = new TString("PHOS");
4b40b2b1 1869 float etDiff = 1.5;
7d2d1773 1870
1871 for(int tpc = 0;tpc<lastcutset;tpc++){
ea331c5d 1872 TString *detector = NULL;
1873 TString *ptstring = NULL;
4b40b2b1 1874 if(tpc==1) {detector = sTPC; ptstring = sTPCpt;}
1875 else{detector = sITS; ptstring = sITSpt;}
4e0c0fe1 1876 for(int hadet = 0;hadet<2;hadet++){
ea331c5d 1877 TString *et = NULL;
1878 TString *etstring = NULL;
4b40b2b1 1879 if(hadet==1) {et = sHadEt; etstring = sHadEtString;}
1880 else{et = sTotEt; etstring = sTotEtString;}
7d2d1773 1881 for(int type = 0;type<3;type++){
1882 if(type==0 && !fInvestigateFull) continue;
1883 if(type==1 && !fInvestigateEMCal) continue;
1884 if(type==2 && !fInvestigatePHOS) continue;
ea331c5d 1885 TString *acceptance = NULL;
4b40b2b1 1886 switch(type){
1887 case 0:
1888 acceptance = sFull;
7d2d1773 1889 etDiff = 1.5;
4b40b2b1 1890 break;
1891 case 1:
1892 acceptance = sEMCAL;
7d2d1773 1893 etDiff = 5;
4b40b2b1 1894 break;
1895 case 2:
1896 acceptance = sPHOS;
7d2d1773 1897 etDiff = 5;
4b40b2b1 1898 break;
1899 default:
1900 acceptance = sFull;
1901 }
4e0c0fe1 1902 for(int pid = 0;pid<2;pid++){
ea331c5d 1903 TString *partid = NULL;
1904 TString *partidstring = NULL;
464aa50c 1905 if(pid==1){partid = sPID; partidstring = sPID;}
1906 else{partid = sNoPID; partidstring = sNoPIDString;}
6a0df78a 1907 snprintf(histoname,200,"Sim%sMinusReco%s%sAcceptance%s%s",et->Data(),et->Data(),acceptance->Data(),detector->Data(),partid->Data());
1908 snprintf(histotitle,200,"(Simulated %s - reconstructed %s)/(Simulated %s) with %s acceptance for p_{T}>%s GeV/c%s",etstring->Data(),etstring->Data(),etstring->Data(),acceptance->Data(),ptstring->Data(),partidstring->Data());
1909 snprintf(ytitle,50,"(Simulated %s - reconstructed %s)/(Simulated %s)",etstring->Data(),etstring->Data(),etstring->Data());
1910 snprintf(xtitle,50,"Simulated %s",etstring->Data());
4b40b2b1 1911 CreateHisto2D(histoname,histotitle,xtitle,ytitle,nbinsEt,minEt,maxEt,nbinsEt,-etDiff,etDiff);
7d2d1773 1912 if(hadet==0 && type==0 && fInvestigatePiKP){//we only want to do this once... not the most elegant way of coding but hey...
6a0df78a 1913 snprintf(histoname,200,"SimPiKPMinusRecoPiKP%sAcceptance%s%s",acceptance->Data(),detector->Data(),partid->Data());
1914 snprintf(histotitle,200,"(Sim PiKP - reco PiKP)/(Sim PiKP) with %s acceptance for p_{T}>%s GeV/c%s",acceptance->Data(),ptstring->Data(),partidstring->Data());
1915 snprintf(ytitle,50,"(Sim PiKP - reco PiKP)/(Sim PiKP)");
1916 snprintf(xtitle,50,"Simulated E_{T}^{#pi,K,p}");
0e866ddc 1917 CreateHisto2D(histoname,histotitle,xtitle,ytitle,nbinsEt,minEt,maxEt,nbinsEt,-etDiff,etDiff);
0e866ddc 1918 }
4e0c0fe1 1919 }
1920 }
1921 }
1922 }
7d2d1773 1923 CreateHisto1D("SimPiKPEt","Simulated #pi,K,p E_{T}","Simulated #pi,K,p E_{T}","Number of events",nbinsEt,minEt,maxEt);
0e866ddc 1924 CreateHisto1D("SimTotEt","Simulated Total E_{T}","Simulated Total E_{T}","Number of events",nbinsEt*4,minEt,maxEt);
1925 CreateHisto1D("SimHadEt","Simulated Hadronic E_{T}","Simulated Hadronic E_{T}","Number of events",nbinsEt*4,minEt,maxEt);
2c0680a5 1926 CreateHisto1D("SimTotEtND","Simulated Total E_{T}","Simulated Total E_{T} for non-diffractive events","Number of events",nbinsEt*4,minEt,maxEt);
1927 CreateHisto1D("SimHadEtND","Simulated Hadronic E_{T}","Simulated Hadronic E_{T} for non-diffractive events","Number of events",nbinsEt*4,minEt,maxEt);
1928 CreateHisto1D("SimTotEtSD","Simulated Total E_{T}","Simulated Total E_{T} for singly diffractive events","Number of events",nbinsEt*4,minEt,maxEt);
1929 CreateHisto1D("SimHadEtSD","Simulated Hadronic E_{T}","Simulated Hadronic E_{T} for singly diffractive events","Number of events",nbinsEt*4,minEt,maxEt);
1930 CreateHisto1D("SimTotEtDD","Simulated Total E_{T}","Simulated Total E_{T} for doubly diffractive events","Number of events",nbinsEt*4,minEt,maxEt);
1931 CreateHisto1D("SimHadEtDD","Simulated Hadronic E_{T}","Simulated Hadronic E_{T} for doubly diffractive events","Number of events",nbinsEt*4,minEt,maxEt);
02710991 1932 if(fDataSet==20100){
1933 Int_t width = 5;
61e3f555 1934 if(fNCentBins<21) width = 10;
02710991 1935 for(Int_t j=0;j<fNCentBins;j++){
1936 CreateHisto1D(Form("SimTotEtCB%i",j),Form("Simulated Total E_{T} for %i-%i central",j*width,(j+1)*width),"Simulated Total E_{T}","Number of events",nbinsEt*4,minEt,maxEt);
1937 CreateHisto1D(Form("SimHadEtCB%i",j),Form("Simulated Hadronic E_{T} for %i-%i central",j*width,(j+1)*width),"Simulated Hadronic E_{T}","Number of events",nbinsEt*4,minEt,maxEt);
61e3f555 1938 CreateHisto1D(Form("SimPiKPEtCB%i",j),Form("Simulated #pi,K,p E_{T} for %i-%i central",j*width,(j+1)*width),"Simulated #pi,K,p E_{T}","Number of events",nbinsEt,minEt,maxEt);
02710991 1939 }
1940 }
0e866ddc 1941
1942 etDiff = 0.15;
1943
7d2d1773 1944 if(fInvestigateSmearing){
49b25059 1945 //======================================================================
1946
1947 snprintf(histoname,200,"SimPiKPEtMeasMinusEtRealPiKP");
1948 snprintf(histotitle,200,"Simulated (all reconstructed - primaries)/all reconstructed for reconstructed tracks only");
1949 snprintf(ytitle,50,"(primary-all)/primary");
1950 snprintf(xtitle,50,"true p, K, p E_{T} for primary tracks");
1951 CreateHisto2D(histoname,histotitle,xtitle,ytitle,nbinsEt,minEt,maxEt,nbinsEt,-etDiff*5,etDiff*5);
1952
1953 snprintf(histoname,200,"SimPiKPEtMinusSimAllCorrSmearedRecoOnly");
1954 snprintf(histotitle,200,"Simulated (primary-all)/primary for reconstructed tracks only");
1955 snprintf(ytitle,50,"(primary-all)/primary");
1956 snprintf(xtitle,50,"true p, K, p E_{T} for primary tracks");
1957 CreateHisto2D(histoname,histotitle,xtitle,ytitle,nbinsEt,minEt,maxEt,nbinsEt,-etDiff*5,etDiff*5);
1958
1959 snprintf(histoname,200,"SimPiKPEtMinusSimEffCorrRecoOnly");
1960 snprintf(histotitle,200,"(sim-reco)/sim primary #pi,k,p for p_{T}>0.15");
1961 snprintf(ytitle,50,"(sim-reco)/sim");
1962 snprintf(xtitle,50,"true p, K, p E_{T} for primary tracks");
1963 CreateHisto2D(histoname,histotitle,xtitle,ytitle,nbinsEt,minEt,maxEt,nbinsEt,-etDiff*5,etDiff*5);
1964
1965 snprintf(histoname,200,"SimPiKPEtMinusSimEffBkgdCorrRecoOnly");
1966 snprintf(histotitle,200,"(sim-reco)/sim primary #pi,k,p for p_{T}>0.15 with background subtraction");
1967 snprintf(ytitle,50,"(sim-reco)/sim");
1968 snprintf(xtitle,50,"true p, K, p E_{T} for primary tracks");
1969 CreateHisto2D(histoname,histotitle,xtitle,ytitle,nbinsEt,minEt,maxEt,nbinsEt,-etDiff*5,etDiff*5);
1970
1971 snprintf(histoname,200,"SimPiKPEtMinusSimEffCorrRecoPiOnly");
1972 snprintf(histotitle,200,"(sim-reco)/sim primary #pi for p_{T}>0.15");
1973 snprintf(ytitle,50,"(sim-reco)/sim");
1974 snprintf(xtitle,50,"true #pi E_{T} for primary tracks");
1975 CreateHisto2D(histoname,histotitle,xtitle,ytitle,nbinsEt,minEt,maxEt/2,nbinsEt,-etDiff*5,etDiff*5);
1976
1977 snprintf(histoname,200,"SimPiKPEtMinusSimEffCorrRecoKOnly");
1978 snprintf(histotitle,200,"(sim-reco)/sim primary K for p_{T}>0.15");
1979 snprintf(ytitle,50,"(sim-reco)/sim");
1980 snprintf(xtitle,50,"true K E_{T} for primary tracks");
1981 CreateHisto2D(histoname,histotitle,xtitle,ytitle,nbinsEt,minEt,maxEt/6,nbinsEt,-etDiff*5,etDiff*5);
1982
1983 snprintf(histoname,200,"SimPiKPEtMinusSimEffCorrRecoPOnly");
1984 snprintf(histotitle,200,"(sim-reco)/sim primary p for p_{T}>0.15");
1985 snprintf(ytitle,50,"(sim-reco)/sim");
1986 snprintf(xtitle,50,"true p E_{T} for primary tracks");
1987 CreateHisto2D(histoname,histotitle,xtitle,ytitle,nbinsEt,minEt,maxEt/6,nbinsEt,-etDiff*5,etDiff*5);
1988
1989 snprintf(histoname,200,"SimPiKPEtMinusSimAllSmearedRecoOnly");
1990 snprintf(histotitle,200,"Simulated (primary-all)/primary for reconstructed tracks only");
1991 snprintf(ytitle,50,"(primary-all)/primary");
1992 snprintf(xtitle,50,"true p, K, p E_{T} for primary tracks");
1993 CreateHisto2D(histoname,histotitle,xtitle,ytitle,nbinsEt,minEt,maxEt,nbinsEt,-etDiff*5,0.0);
1994
1995 snprintf(histoname,200,"SimPiKPEtMinusSimPIDSmearedRecoOnly");
1996 snprintf(histotitle,200,"Simulated (true-smeared)/true for reconstructed tracks only with PID smearing");
1997 snprintf(ytitle,50,"(true-smeared)/true");
1998 snprintf(xtitle,50,"true p, K, p E_{T}");
1999 CreateHisto2D(histoname,histotitle,xtitle,ytitle,nbinsEt,minEt,maxEt,nbinsEt,-etDiff,etDiff);
2000
2001 snprintf(histoname,200,"SimPiKPEtMinusSimSmearedRecoOnly");
2002 snprintf(histotitle,200,"Simulated (true-smeared)/true for reconstructed tracks only");
2003 snprintf(ytitle,50,"(true-smeared)/true");
2004 snprintf(xtitle,50,"true p, K, p E_{T}");
2005 CreateHisto2D(histoname,histotitle,xtitle,ytitle,nbinsEt,minEt,maxEt,nbinsEt,-etDiff/15,etDiff/15);
2006
2007 snprintf(histoname,200,"SimPiKPPtMinusSimSmearedRecoOnly");
2008 snprintf(histotitle,200,"Simulated (true-smeared)/true for reconstructed tracks only");
2009 snprintf(ytitle,50,"(true-smeared)/true");
2010 snprintf(xtitle,50,"true p, K, p p_{T}");
2011 CreateHisto2D(histoname,histotitle,xtitle,ytitle,nbinsEt,minEt,maxEt,nbinsEt,-etDiff/15,etDiff/15);
2012
2013 snprintf(histoname,200,"SimPiKPEtMinusSimSmearedMultRecoOnly");
2014 snprintf(histotitle,200,"Simulated (true-smeared)/true for reconstructed tracks only");
2015 snprintf(ytitle,50,"(true-smeared)/true");
2016 snprintf(xtitle,50,"number of reconstructed particles");
2017 CreateHisto2D(histoname,histotitle,xtitle,ytitle,nbinsEt,minEt,maxEt,nbinsEt,-etDiff/15,etDiff/15);
2018
2019 snprintf(histoname,200,"SimPiKPPtMinusSimSmearedMultRecoOnly");
2020 snprintf(histotitle,200,"Simulated (true-smeared)/true for reconstructed tracks only");
2021 snprintf(ytitle,50,"(true-smeared)/true");
2022 snprintf(xtitle,50,"number of reconstructed particles");
2023 CreateHisto2D(histoname,histotitle,xtitle,ytitle,nbinsEt,minEt,maxEt,nbinsEt,-etDiff/15,etDiff/15);
7d2d1773 2024
2025 //======================================================================
2026
6a0df78a 2027 snprintf(histoname,200,"SimPiKPEtMinusSimPtSmeared");
2028 snprintf(histotitle,200,"Simulated (true-smeared)/true for 0.5 percent momentum smearing");
2029 snprintf(ytitle,50,"(true-smeared)/true");
2030 snprintf(xtitle,50,"true p, K, p E_{T}");
61e3f555 2031 CreateHisto2D(histoname,histotitle,xtitle,ytitle,nbinsEt,minEt,maxEt,nbinsEt,-etDiff,etDiff);
6a0df78a 2032 snprintf(histoname,200,"SimPiKPEtPtSmeared");
2033 snprintf(histotitle,200,"Simulated E_{T} for 0.5 percent momentum smearing");
2034 snprintf(ytitle,50,"Number of events");
2035 snprintf(xtitle,50,"p, K, p E_{T}");
7d2d1773 2036 CreateHisto1D(histoname,histotitle,xtitle,ytitle,nbinsEt,minEt,maxEt);
2037
2038 //======================================================================
2039
6a0df78a 2040 snprintf(histoname,200,"SimPiKPEtMinusSimEfficiencySmeared");
2041 snprintf(histotitle,200,"Simulated (true-smeared)/true for efficiency smearing");
2042 snprintf(ytitle,50,"(true-smeared)/true");
2043 snprintf(xtitle,50,"true p, K, p E_{T}");
7d2d1773 2044 CreateHisto2D(histoname,histotitle,xtitle,ytitle,nbinsEt,minEt,maxEt,nbinsEt,-etDiff*5,etDiff*5);
6a0df78a 2045 snprintf(histoname,200,"SimPiKPEtEfficiencySmeared");
2046 snprintf(histotitle,200,"Simulated E_{T} for efficiency smearing");
2047 snprintf(ytitle,50,"Number of events");
2048 snprintf(xtitle,50,"p, K, p E_{T}");
7d2d1773 2049 CreateHisto1D(histoname,histotitle,xtitle,ytitle,nbinsEt,minEt,maxEt);
2050
2051 //======================================================================
2052
6a0df78a 2053 snprintf(histoname,200,"SimPiKPEtMinusSimPtCutSmearedTPC");
2054 snprintf(histotitle,200,"Simulated (true-smeared)/true for p_{T}>0.15 GeV/c smearing");
2055 snprintf(ytitle,50,"(true-smeared)/true");
2056 snprintf(xtitle,50,"true p, K, p E_{T}");
7d2d1773 2057 CreateHisto2D(histoname,histotitle,xtitle,ytitle,nbinsEt,minEt,maxEt,nbinsEt,-etDiff,etDiff);
6a0df78a 2058 snprintf(histoname,200,"SimPiKPEtPtCutSmearedTPC");
2059 snprintf(histotitle,200,"Simulated E_{T} for p_{T}>0.15 GeV/c smearing");
2060 snprintf(ytitle,50,"Number of events");
2061 snprintf(xtitle,50,"p, K, p E_{T}");
7d2d1773 2062 CreateHisto1D(histoname,histotitle,xtitle,ytitle,nbinsEt,minEt,maxEt);
2063
2064
2065 //======================================================================
2066
6a0df78a 2067 snprintf(histoname,200,"SimPiKPEtMinusSimPtCutSmearedITS");
2068 snprintf(histotitle,200,"Simulated (true-smeared)/true for p_{T}>0.10 GeV/c smearing");
2069 snprintf(ytitle,50,"(true-smeared)/true");
2070 snprintf(xtitle,50,"true p, K, p E_{T}");
7d2d1773 2071 CreateHisto2D(histoname,histotitle,xtitle,ytitle,nbinsEt,minEt,maxEt,nbinsEt,-etDiff,etDiff);
6a0df78a 2072 snprintf(histoname,200,"SimPiKPEtPtCutSmearedITS");
2073 snprintf(histotitle,200,"Simulated E_{T} for p_{T}>0.10 GeV/c smearing");
2074 snprintf(ytitle,50,"Number of events");
2075 snprintf(xtitle,50,"p, K, p E_{T}");
7d2d1773 2076 CreateHisto1D(histoname,histotitle,xtitle,ytitle,nbinsEt,minEt,maxEt);
2077
2078 //======================================================================
2079
6a0df78a 2080 snprintf(histoname,200,"SimPiKPEtMinusSimPIDSmeared");
2081 snprintf(histotitle,200,"Simulated (true-smeared)/true for PID smearing");
2082 snprintf(ytitle,50,"(true-smeared)/true");
2083 snprintf(xtitle,50,"true p, K, p E_{T}");
7d2d1773 2084 CreateHisto2D(histoname,histotitle,xtitle,ytitle,nbinsEt,minEt,maxEt,nbinsEt,-etDiff,etDiff);
6a0df78a 2085 snprintf(histoname,200,"SimPiKPEtPIDSmeared");
2086 snprintf(histotitle,200,"Simulated E_{T} for PID smearing");
2087 snprintf(ytitle,50,"Number of events");
2088 snprintf(xtitle,50,"p, K, p E_{T}");
7d2d1773 2089 CreateHisto1D(histoname,histotitle,xtitle,ytitle,nbinsEt,minEt,maxEt);
2090
2091 //======================================================================
2092
6a0df78a 2093 snprintf(histoname,200,"SimPiKPEtMinusSimPIDSmearedNoID");
2094 snprintf(histotitle,200,"Simulated (true-smeared)/true for PID smearing No ID");
2095 snprintf(ytitle,50,"(true-smeared)/true");
2096 snprintf(xtitle,50,"true p, K, p E_{T}");
7d2d1773 2097 CreateHisto2D(histoname,histotitle,xtitle,ytitle,nbinsEt,minEt,maxEt,nbinsEt,-etDiff,etDiff);
6a0df78a 2098 snprintf(histoname,200,"SimPiKPEtPIDSmearedNoID");
2099 snprintf(histotitle,200,"Simulated E_{T} for PID smearing No ID");
2100 snprintf(ytitle,50,"Number of events");
2101 snprintf(xtitle,50,"p, K, p E_{T}");
7d2d1773 2102 CreateHisto1D(histoname,histotitle,xtitle,ytitle,nbinsEt,minEt,maxEt);
2103 }
464aa50c 2104 delete sTPC;
2105 delete sITS;
2106 delete sTPCpt;
2107 delete sITSpt;
2108 delete sPID;
2109 delete sNoPID;
2110 delete sNoPIDString;
2111 delete sHadEt;
2112 delete sTotEt;
2113 delete sTotEtString;
2114 delete sHadEtString;
2115 delete sFull;
2116 delete sEMCAL;
2117 delete sPHOS;
641e1e0c 2118 CreateIntHisto1D("NEvents","Number of events","number of events","Number of events",1,0,1);
2c0680a5 2119 CreateIntHisto1D("NEventsSD","Number of events","number of singly diffractive events","Number of events",1,0,1);
2120 CreateIntHisto1D("NEventsDD","Number of events","number of doubly diffractive events","Number of events",1,0,1);
2121 CreateIntHisto1D("NEventsND","Number of events","number of non-diffractive events","Number of events",1,0,1);
61e3f555 2122 CreateResolutionPtHisto2D("presolutionTPC","p resolution","p^{rec}","(p^{sim}-p^{rec})/p^{rec}");
2123 CreateResolutionPtHisto2D("pTresolutionTPC","p_{T} resolution","p_{T}^{rec}","(p_{T}^{sim}-p_{T}^{rec})/p_{T}^{rec}");
2124 CreateResolutionPtHisto2D("ETresolutionTPC","E_{T} resolution","E_{T}^{rec}","(E_{T}^{sim}-E_{T}^{rec})/E_{T}^{rec}");
2125 CreateResolutionPtHisto2D("pTresolutionTPCITS","p_{T} resolution","p_{T}^{rec}","(p_{T}^{sim}-p_{T}^{rec})/p_{T}^{rec}");
2126 CreateResolutionPtHisto2D("ETresolutionTPCITS","E_{T} resolution","E_{T}^{rec}","(E_{T}^{sim}-E_{T}^{rec})/E_{T}^{rec}");
2127 CreateResolutionPtHisto2D("presolutionTPCITS","p resolution","p^{rec}","(p^{sim}-p^{rec})/p^{rec}");
2128 CreateResolutionPtHisto2D("pTresolutionITS","p_{T} resolution","p_{T}^{rec}","(p_{T}^{sim}-p_{T}^{rec})/p_{T}^{rec}");
2129 CreateResolutionPtHisto2D("ETresolutionITS","E_{T} resolution","E_{T}^{rec}","(E_{T}^{sim}-E_{T}^{rec})/E_{T}^{rec}");
2130 CreateResolutionPtHisto2D("presolutionITS","p resolution","p^{rec}","(p^{sim}-p^{rec})/p^{rec}");
2131 CreatePtHisto1D("pTsimITS","p_{T}^{sim}","p_{T}^{sim}","Number of particles");
2132 CreatePtHisto1D("pTsimTPC","p_{T}^{sim}","p_{T}^{sim}","Number of particles");
2133 CreatePtHisto1D("pTsimTPCITS","p_{T}^{sim}","p_{T}^{sim}","Number of particles");
2134 CreatePtHisto1D("pTrecITS","p_{T}^{rec}","p_{T}^{rec}","Number of particles");
2135 CreatePtHisto1D("pTrecTPC","p_{T}^{rec}","p_{T}^{rec}","Number of particles");
2136 CreatePtHisto1D("pTrecTPCITS","p_{T}^{rec}","p_{T}^{rec}","Number of particles");
2137 if(fDataSet==20100){
2138 Int_t width = 5;
2139 if(fNCentBins<21) width = 10;
2140 for(Int_t j=0;j<fNCentBins;j++){
2141 CreatePtHisto1D(Form("pTsimITSCB%i",j),Form("p_{T}^{sim} for %i-%i central",j*width,(j+1)*width),"p_{T}^{sim}","Number of particles");
2142 CreatePtHisto1D(Form("pTsimTPCITSCB%i",j),Form("p_{T}^{sim} for %i-%i central",j*width,(j+1)*width),"p_{T}^{sim}","Number of particles");
2143 CreatePtHisto1D(Form("pTsimTPCCB%i",j),Form("p_{T}^{sim} for %i-%i central",j*width,(j+1)*width),"p_{T}^{sim}","Number of particles");
2144 CreatePtHisto1D(Form("pTrecITSCB%i",j),Form("p_{T}^{rec} for %i-%i central",j*width,(j+1)*width),"p_{T}^{rec}","Number of particles");
2145 CreatePtHisto1D(Form("pTrecTPCITSCB%i",j),Form("p_{T}^{rec} for %i-%i central",j*width,(j+1)*width),"p_{T}^{rec}","Number of particles");
2146 CreatePtHisto1D(Form("pTrecTPCCB%i",j),Form("p_{T}^{rec} for %i-%i central",j*width,(j+1)*width),"p_{T}^{rec}","Number of particles");
2147 }
2148 }
641e1e0c 2149
641e1e0c 2150}
2151