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