1 /**************************************************************************
2 * Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
4 * Author: The ALICE Off-line Project. *
5 * Contributors are mentioned in the code where appropriate. *
7 * Permission to use, copy, modify and distribute this software and its *
8 * documentation strictly for non-commercial purposes is hereby granted *
9 * without fee, provided that the above copyright notice appears in all *
10 * copies and that both the copyright notice and this permission notice *
11 * appear in the supporting documentation. The authors make no claims *
12 * about the suitability of this software for any purpose. It is *
13 * provided "as is" without express or implied warranty. *
14 **************************************************************************/
16 ///////////////////////////////////////////////////////////////////////////
19 // Analysis for identified charged hadron spectra. TPC/TOF //
22 ///////////////////////////////////////////////////////////////////////////
27 #include "Riostream.h"
36 #include "TObjArray.h"
40 #include "AliAnalysisTaskSE.h"
41 #include "AliAnalysisManager.h"
43 #include "AliHeader.h"
44 #include "AliGenPythiaEventHeader.h"
45 #include "AliGenCocktailEventHeader.h"
48 #include "AliESDtrackCuts.h"
49 #include "AliESDVertex.h"
50 #include "AliESDEvent.h"
51 #include "AliESDInputHandler.h"
52 #include "AliESDtrack.h"
53 #include "AliESDpid.h"
55 #include "AliMCEventHandler.h"
56 #include "AliMCEvent.h"
59 #include "AliAnalysisFilter.h"
60 #include "AliCFContainer.h"
61 #include "AliCFFrame.h"
62 #include "AliCFGridSparse.h"
63 #include "TDatabasePDG.h"
67 #include "AliAnalysisTaskSE.h"
68 #include "AliAnalysisManager.h"
70 #include "AliHeader.h"
71 #include "AliGenPythiaEventHeader.h"
72 #include "AliGenCocktailEventHeader.h"
75 #include "AliESDtrackCuts.h"
76 #include "AliESDVertex.h"
77 #include "AliESDEvent.h"
78 #include "AliESDInputHandler.h"
79 #include "AliESDtrack.h"
80 #include "AliESDpid.h"
82 #include "AliMCEventHandler.h"
83 #include "AliMCEvent.h"
86 #include "AliAnalysisFilter.h"
87 #include "AliCFContainer.h"
88 #include "AliCFFrame.h"
89 #include "AliCFGridSparse.h"
90 #include "TDatabasePDG.h"
93 #include "AliMultiplicity.h"
97 #include "AliESDUtils.h"
99 #include "AliAnalysisCombinedHadronSpectra2MC.h"
102 ClassImp(AliAnalysisCombinedHadronSpectra2MC)
104 //________________________________________________________________________
105 AliAnalysisCombinedHadronSpectra2MC::AliAnalysisCombinedHadronSpectra2MC()
106 : AliAnalysisTaskSE("TaskChargedHadron"), multiplicity(0),vert(0), fESD(0), fListHist(0), fESDtrackCuts(0),fESDpid(0),
110 calibrateESD(kTRUE), correctTExp(kTRUE), useT0TOF(kTRUE), timeResolution(96.), tuneTOFMC(kFALSE),
118 fT0TOF0(-999), fT0TOF1(-999), fT0TOF2(-999), fT0TOF3(-999), fT0TOF4(-999), fT0TOF5(-999), fT0TOF6(-999), fT0TOF7(-999), XPrimVertex(-999), YPrimVertex(-999), ZPrimVertex(-999), NContrPrimVertex(-999), rapidityMC(0), fDCAXY(-999), fDCAZ(-999), fcut(-999), fTOFout(-999), ftrdout(-999), ftime(-999), ftpcclust(-999), flength(-999), fsign(-999), ftimetof(-999), ftofchan(-999), feta(-999), fphi(-999), fmomtrasv(-999),sigmapi(-999), sigmaka(-999), sigmapr(-999), fTot(-999), fmom(-999), fexptimepi(-999), fexptimeka(-999), fexptimepr(-999), ftofz(-999),ftofx(-999), t0track(-999), TPCSignal(-999), TPCSigmaPI(-999), TPCSigmaKA(-999), TPCSigmaPR(-999), fmatch(-999), fPhiout(-999), fXout(-999), fYout(-999), fZout(-999), fTimeZeroType(AliESDpid::kTOF_T0), fMCtracks(-999), fMCPrimaries(-999), spdCorr(-999), treeMCP(-999), treeMCPt(-999), treeMCEta(-999), treeMCPhi(-999), treeMCPdg(-999), treeMCPBis(-999), treeMCPtBis(-999), treeMCEtaBis(-999), treeMCPhiBis(-999), treeMCPdgBis(-999), t0trackSigma(-999), fptMC(-999), fphiMC(-999), fetaMC(-999), fPdgcode(-999),
119 pad (0x0), resx(0x0), resz(0x0), tofres(0x0), tofresTOF(0x0), tofresgood (0x0), hNumMatch(0x0), hNumMatchPos(0x0), hNumMatchNeg(0x0), hDenMatch(0x0),
120 hNumMatchPip(0x0), hNumMatchPim(0x0),hNumMatchKap(0x0), hNumMatchKam(0x0),hNumMatchPrp(0x0), hNumMatchPrm(0x0), hDenMatchPip(0x0), hDenMatchPim(0x0), hDenMatchKap(0x0), hDenMatchKam(0x0), hDenMatchPrp(0x0), hDenMatchPrm(0x0),
122 hDenMatchPos(0x0), hDenMatchNeg(0x0), hNumMatchEta(0x0), hNumMatchPosEta(0x0), hNumMatchNegEta(0x0), hDenMatchEta(0x0), hDenMatchPosEta(0x0), hDenMatchNegEta(0x0), hNumMatchphiOut(0x0), hNumMatchPosphiOut(0x0), hNumMatchNegphiOut(0x0), hDenMatchphiOut(0x0), hDenMatchPosphiOut(0x0), hDenMatchNegphiOut(0x0), hNumMatchEtaPtMa(0x0), hNumMatchPosEtaPtMa(0x0), hNumMatchNegEtaPtMa(0x0), hDenMatchEtaPtMa(0x0), hDenMatchPosEtaPtMa(0x0), hDenMatchNegEtaPtMa(0x0), hNumMatchphiOutPtMa(0x0), hNumMatchPosphiOutPtMa(0x0), hNumMatchNegphiOutPtMa(0x0), hDenMatchphiOutPtMa(0x0), hDenMatchPosphiOutPtMa(0x0), hDenMatchNegphiOutPtMa(0x0), hNumMatchTRDOut(0x0), hNumMatchPosTRDOut(0x0), hNumMatchNegTRDOut(0x0), hDenMatchTRDOut(0x0), hDenMatchPosTRDOut(0x0), hDenMatchNegTRDOut(0x0), hNumMatchNoTRDOut(0x0), hNumMatchPosNoTRDOut(0x0), hNumMatchNegNoTRDOut(0x0), hDenMatchNoTRDOut(0x0), hDenMatchPosNoTRDOut(0x0), hDenMatchNegNoTRDOut(0x0), hNumMatchTPCpip(0x0), hNumMatchTPCkap(0x0), hNumMatchTPCprp(0x0), hDenMatchTPCpip(0x0), hDenMatchTPCkap(0x0), hDenMatchTPCprp(0x0), hNumMatchTPCpim(0x0), hNumMatchTPCkam(0x0), hNumMatchTPCprm(0x0), hDenMatchTPCpim(0x0), hDenMatchTPCkam(0x0), hDenMatchTPCprm(0x0), hNumEv(0x0)
124 // default Constructor
125 for(Int_t i=0; i<5;i++){r1[i]=-999;}
127 for(Int_t mult=0; mult<7;mult++){
128 for(Int_t part=0; part<6;part++){
129 hNumMatchMultTrk[mult][part]=(0);
130 hDenMatchMultTrk[mult][part]=(0);
131 hDenTrkMultTrk[mult][part]=(0);
135 for(Int_t mult=0; mult<7;mult++){
136 for(Int_t part=0; part<6;part++){
137 hNumMatchMultTrkTRDOut[mult][part]=(0);
138 hDenMatchMultTrkTRDOut[mult][part]=(0);
139 hDenTrkMultTrkTRDOut[mult][part]=(0);
143 for(Int_t mult=0; mult<7;mult++){
144 for(Int_t part=0; part<6;part++){
145 hNumMatchMultTrkNoTRDOut[mult][part]=(0);
146 hDenMatchMultTrkNoTRDOut[mult][part]=(0);
147 hDenTrkMultTrkNoTRDOut[mult][part]=(0);
151 for(Int_t mult=0; mult<7;mult++){
152 for(Int_t part=0; part<6;part++){
153 hNumMatchMultSPD[mult][part]=(0);
154 hDenMatchMultSPD[mult][part]=(0);
155 hDenTrkMultSPD[mult][part]=(0);
159 for(Int_t mult=0; mult<7;mult++){
160 for(Int_t part=0; part<2;part++){
161 hNumMatchMultTrkInc[mult][part]=(0);
162 hDenMatchMultTrkInc[mult][part]=(0);
163 hNumMatchMultSPDInc[mult][part]=(0);
164 hDenMatchMultSPDInc[mult][part]=(0);
168 for(Int_t part=0; part<6;part++){
169 hDenTrkVertMultTrk[part]=(0);
171 for(Int_t part=0; part<6;part++){
172 hDenTrkTriggerMultTrk[part]=(0);
178 //________________________________________________________________________
179 AliAnalysisCombinedHadronSpectra2MC::AliAnalysisCombinedHadronSpectra2MC(const char *name) : AliAnalysisTaskSE(name), multiplicity(0),vert(0), fESD(0), fListHist(0), fESDtrackCuts(0),fESDpid(0),
183 calibrateESD(kTRUE), correctTExp(kTRUE), useT0TOF(kTRUE), timeResolution(96.), tuneTOFMC(kFALSE),
191 fT0TOF0(-999), fT0TOF1(-999), fT0TOF2(-999), fT0TOF3(-999), fT0TOF4(-999), fT0TOF5(-999), fT0TOF6(-999), fT0TOF7(-999), XPrimVertex(-999), YPrimVertex(-999), ZPrimVertex(-999), NContrPrimVertex(-999), rapidityMC(0), fDCAXY(-999), fDCAZ(-999), fcut(-999), fTOFout(-999), ftrdout(-999), ftime(-999), ftpcclust(-999), flength(-999), fsign(-999), ftimetof(-999), ftofchan(-999), feta(-999), fphi(-999), fmomtrasv(-999),sigmapi(-999), sigmaka(-999), sigmapr(-999), fTot(-999), fmom(-999), fexptimepi(-999), fexptimeka(-999), fexptimepr(-999), ftofz(-999),ftofx(-999), t0track(-999), TPCSignal(-999), TPCSigmaPI(-999), TPCSigmaKA(-999), TPCSigmaPR(-999), fmatch(-999), fPhiout(-999), fXout(-999), fYout(-999), fZout(-999), fTimeZeroType(AliESDpid::kTOF_T0), fMCtracks(-999), fMCPrimaries(-999), spdCorr(-999), treeMCP(-999), treeMCPt(-999), treeMCEta(-999), treeMCPhi(-999), treeMCPdg(-999), treeMCPBis(-999), treeMCPtBis(-999), treeMCEtaBis(-999), treeMCPhiBis(-999), treeMCPdgBis(-999), t0trackSigma(-999), fptMC(-999), fphiMC(-999), fetaMC(-999), fPdgcode(-999),
192 pad (0x0), resx(0x0), resz(0x0), tofres(0x0), tofresTOF(0x0), tofresgood (0x0), hNumMatch(0x0), hNumMatchPos(0x0), hNumMatchNeg(0x0), hDenMatch(0x0),
193 hNumMatchPip(0x0), hNumMatchPim(0x0),hNumMatchKap(0x0), hNumMatchKam(0x0),hNumMatchPrp(0x0), hNumMatchPrm(0x0), hDenMatchPip(0x0), hDenMatchPim(0x0), hDenMatchKap(0x0), hDenMatchKam(0x0), hDenMatchPrp(0x0), hDenMatchPrm(0x0),
194 hDenMatchPos(0x0), hDenMatchNeg(0x0), hNumMatchEta(0x0), hNumMatchPosEta(0x0), hNumMatchNegEta(0x0), hDenMatchEta(0x0), hDenMatchPosEta(0x0), hDenMatchNegEta(0x0), hNumMatchphiOut(0x0), hNumMatchPosphiOut(0x0), hNumMatchNegphiOut(0x0), hDenMatchphiOut(0x0), hDenMatchPosphiOut(0x0), hDenMatchNegphiOut(0x0), hNumMatchEtaPtMa(0x0), hNumMatchPosEtaPtMa(0x0), hNumMatchNegEtaPtMa(0x0), hDenMatchEtaPtMa(0x0), hDenMatchPosEtaPtMa(0x0), hDenMatchNegEtaPtMa(0x0), hNumMatchphiOutPtMa(0x0), hNumMatchPosphiOutPtMa(0x0), hNumMatchNegphiOutPtMa(0x0), hDenMatchphiOutPtMa(0x0), hDenMatchPosphiOutPtMa(0x0), hDenMatchNegphiOutPtMa(0x0), hNumMatchTRDOut(0x0), hNumMatchPosTRDOut(0x0), hNumMatchNegTRDOut(0x0), hDenMatchTRDOut(0x0), hDenMatchPosTRDOut(0x0), hDenMatchNegTRDOut(0x0), hNumMatchNoTRDOut(0x0), hNumMatchPosNoTRDOut(0x0), hNumMatchNegNoTRDOut(0x0), hDenMatchNoTRDOut(0x0), hDenMatchPosNoTRDOut(0x0), hDenMatchNegNoTRDOut(0x0), hNumMatchTPCpip(0x0), hNumMatchTPCkap(0x0), hNumMatchTPCprp(0x0), hDenMatchTPCpip(0x0), hDenMatchTPCkap(0x0), hDenMatchTPCprp(0x0), hNumMatchTPCpim(0x0), hNumMatchTPCkam(0x0), hNumMatchTPCprm(0x0), hDenMatchTPCpim(0x0), hDenMatchTPCkam(0x0), hDenMatchTPCprm(0x0), hNumEv(0x0)
198 // standard constructur which should be used
200 Printf("*** CONSTRUCTOR CALLED ****");
203 for(Int_t mult=0; mult<7;mult++){
204 for(Int_t part=0; part<6;part++){
205 hNumMatchMultTrk[mult][part]=(0);
206 hDenMatchMultTrk[mult][part]=(0);
207 hDenTrkMultTrk[mult][part]=(0);
211 for(Int_t mult=0; mult<7;mult++){
212 for(Int_t part=0; part<6;part++){
213 hNumMatchMultTrkTRDOut[mult][part]=(0);
214 hDenMatchMultTrkTRDOut[mult][part]=(0);
215 hDenTrkMultTrkTRDOut[mult][part]=(0);
219 for(Int_t mult=0; mult<7;mult++){
220 for(Int_t part=0; part<6;part++){
221 hNumMatchMultTrkNoTRDOut[mult][part]=(0);
222 hDenMatchMultTrkNoTRDOut[mult][part]=(0);
223 hDenTrkMultTrkNoTRDOut[mult][part]=(0);
227 for(Int_t mult=0; mult<7;mult++){
228 for(Int_t part=0; part<6;part++){
229 hNumMatchMultSPD[mult][part]=(0);
230 hDenMatchMultSPD[mult][part]=(0);
231 hDenTrkMultSPD[mult][part]=(0);
235 for(Int_t mult=0; mult<7;mult++){
236 for(Int_t part=0; part<2;part++){
237 hNumMatchMultTrkInc[mult][part]=(0);
238 hDenMatchMultTrkInc[mult][part]=(0);
239 hNumMatchMultSPDInc[mult][part]=(0);
240 hDenMatchMultSPDInc[mult][part]=(0);
244 for(Int_t part=0; part<6;part++){
245 hDenTrkVertMultTrk[part]=(0);
247 for(Int_t part=0; part<6;part++){
248 hDenTrkTriggerMultTrk[part]=(0);
254 // for(Int_t i=0; i<5;i++){r1[i]=-999;}
255 // fAlephParameters[0] = 0.0283086;
256 // fAlephParameters[1] = 2.63394e+01;
257 // fAlephParameters[2] = 5.04114e-11;
258 // fAlephParameters[3] = 2.12543e+00;
259 // fAlephParameters[4] = 4.88663e+00;
261 // initialize PID object
264 // tofCalib = new AliTOFcalib();
266 // fESDpid = new AliESDpid();
268 // t0maker = new AliTOFT0maker(fESDpid, tofCalib);
270 // if(AliPID::ParticleMass(0) == 0) new AliPID();
275 AliESDtrackCuts* ESDtrackCuts = new AliESDtrackCuts("AliESDtrackCuts","AliESDtrackCuts");
276 fESDtrackCuts = (AliESDtrackCuts*) ESDtrackCuts->GetStandardITSTPCTrackCuts2010(kTRUE);
279 DefineOutput(1, TList::Class());
284 //________________________________________________________________________
285 Int_t AliAnalysisCombinedHadronSpectra2MC::Mult()
287 AliESDtrackCuts* esdTrackCutsMult = new AliESDtrackCuts;
290 esdTrackCutsMult->SetMinNClustersTPC(70);
291 esdTrackCutsMult->SetMaxChi2PerClusterTPC(4);
292 esdTrackCutsMult->SetAcceptKinkDaughters(kFALSE);
293 esdTrackCutsMult->SetRequireTPCRefit(kTRUE);
295 esdTrackCutsMult->SetRequireITSRefit(kTRUE);
296 esdTrackCutsMult->SetClusterRequirementITS(AliESDtrackCuts::kSPD,
297 AliESDtrackCuts::kAny);
299 esdTrackCutsMult->SetMaxDCAToVertexXYPtDep("0.0182+0.0350/pt^1.01");
301 esdTrackCutsMult->SetMaxDCAToVertexZ(2);
303 esdTrackCutsMult->SetDCAToVertex2D(kFALSE);
304 esdTrackCutsMult->SetRequireSigmaToVertex(kFALSE);
306 esdTrackCutsMult->SetEtaRange(-0.8,+0.8);
307 esdTrackCutsMult->SetPtRange(0.15, 1e10);
309 // Here is what we finally want:
310 Int_t multipli = esdTrackCutsMult->CountAcceptedTracks(fESD);
311 delete esdTrackCutsMult;
317 //________________________________________________________________________
318 void AliAnalysisCombinedHadronSpectra2MC::UserCreateOutputObjects()
325 fTreeTrack = new TTree("TreeTrack","Track Properties");
327 fTreeTrack->Branch("XPrimVertex",&XPrimVertex,"XPrimVertex/D");
328 fTreeTrack->Branch("YPrimVertex",&YPrimVertex,"YPrimVertex/D");
329 fTreeTrack->Branch("ZPrimVertex",&ZPrimVertex,"ZPrimVertex/D");
331 fTreeTrack->Branch("NContrPrimVertex",&NContrPrimVertex,"NContrPrimVertex/I");
332 fTreeTrack->Branch("multiplicity",&multiplicity,"multiplicity/I");
333 fTreeTrack->Branch("T0TOF0",&fT0TOF0,"T0TOF0/D");
334 fTreeTrack->Branch("T0TOF1",&fT0TOF1,"T0TOF1/D");
335 fTreeTrack->Branch("T0TOF7",&fT0TOF7,"T0TOF7/D");
336 fTreeTrack->Branch("DCAXY",&fDCAXY,"fDCAXY/F");
337 fTreeTrack->Branch("DCAZ",&fDCAZ,"fDCAZ/F");
338 fTreeTrack->Branch("cut",&fcut,"cut/I");
339 fTreeTrack->Branch("TOFout",&fTOFout,"TOFout/I");
340 fTreeTrack->Branch("ftrdout",&ftrdout,"ftrdout/I");
341 fTreeTrack->Branch("ftime",&ftime,"ftime/I");
342 fTreeTrack->Branch("fmatch",&fmatch,"fmatch/I");
343 fTreeTrack->Branch("fmom",&fmom,"fmom/D");
344 fTreeTrack->Branch("tpcclust",&ftpcclust,"tpcclust/I");
345 fTreeTrack->Branch("length",&flength,"length/D");
346 fTreeTrack->Branch("sign",&fsign,"sign/I");
347 fTreeTrack->Branch("timetof",&ftimetof,"timetof/D");
348 fTreeTrack->Branch("exptimepi",&fexptimepi,"exptimepi/D");
349 fTreeTrack->Branch("exptimeka",&fexptimeka,"exptimeka/D");
350 fTreeTrack->Branch("exptimepr",&fexptimepr,"exptimepr/D");
351 fTreeTrack->Branch("tofz",&ftofz,"tofz/D");
352 fTreeTrack->Branch("tofx",&ftofx,"tofx/D");
353 fTreeTrack->Branch("t0track",&t0track,"t0track/F");
354 fTreeTrack->Branch("tofchan",&ftofchan,"tofchan/I");
355 fTreeTrack->Branch("eta",&feta,"eta/D");
356 fTreeTrack->Branch("phi",&fphi,"phi/D");
357 fTreeTrack->Branch("TOFtot",&fTot,"TOFtot/F");
358 fTreeTrack->Branch("momtrasv",&fmomtrasv,"momtrasv/D");
359 fTreeTrack->Branch("sigmapi",&sigmapi,"sigmapi/D");
360 fTreeTrack->Branch("sigmaka",&sigmaka,"sigmaka/D");
361 fTreeTrack->Branch("sigmapr",&sigmapr,"sigmapr/D");
362 fTreeTrack->Branch("TPCsignal",&TPCSignal,"TPCsignal/D");
363 fTreeTrack->Branch("TPCSigmaPI",&TPCSigmaPI,"TPCSigmaPI/F");
364 fTreeTrack->Branch("TPCSigmaKA",&TPCSigmaKA,"TPCSigmaKA/F");
365 fTreeTrack->Branch("TPCSigmaPR",&TPCSigmaPR,"TPCSigmaPR/F");
366 fTreeTrack->Branch("r10",&r1[0],"r10/D");
367 fTreeTrack->Branch("r11",&r1[1],"r11/D");
368 fTreeTrack->Branch("r12",&r1[2],"r12/D");
369 fTreeTrack->Branch("r13",&r1[3],"r13/D");
370 fTreeTrack->Branch("r14",&r1[4],"r14/D");
372 fTreeTrack->Branch("fPhiout",&fPhiout,"fPhiout/D");
373 fTreeTrack->Branch("fXout",&fXout,"fXout/D");
374 fTreeTrack->Branch("fYout",&fYout,"fYout/D");
375 fTreeTrack->Branch("fZout",&fZout,"fZout/D");
377 //PostData(2, fTreeTrack);
381 fTreeEv = new TTree("TreeEv","Event Properties");
382 fTreeEv->Branch("multiplicity",&multiplicity,"multiplicity/I");
383 fTreeEv->Branch("vert",&vert,"vert/I");
385 //PostData(1, fTreeEv);
389 if (!TOFCheck) TOFCheck = new TList();
390 TOFCheck->SetOwner();
392 Double_t fBinLim0[47];
393 for(Int_t i=0;i<=46;i++){
394 // pt [0.20,5] GeV/c - not uniform
395 if(i<=16) fBinLim0[i] = 0.2 + i*0.05;
396 if((i>16)&&(i<=36))fBinLim0[i] = 1.0 + (i-16)*0.1;
397 if(i>36) fBinLim0[i] = 3.0 + (i-36)*0.2;
401 pad=new TH2D("pad", "pad", 400, -10, 10, 400, -10, 10);
402 pad->GetXaxis()->SetTitle("#DeltaX_{pad} (cm)");
403 pad->GetYaxis()->SetTitle("#DeltaZ_{pad} (cm)");
404 TOFCheck->AddLast(pad);
405 resx=new TH1D("resx", "resx", 150, -10, 10);
406 resx->GetXaxis()->SetTitle("#DeltaX_{pad} (cm)");
407 TOFCheck->AddLast(resx);
408 resz=new TH1D("resz", "resz", 150, -10, 10);
409 resz->GetXaxis()->SetTitle("#DeltaZ_{pad} (cm)");
410 TOFCheck->AddLast(resz);
411 tofres=new TH1D("tofres", "tofres", 100, -500, 500);
412 tofres->GetXaxis()->SetTitle("t_{TOF}-t_{0}-t_{exp #pi} (ps)");
413 TOFCheck->AddLast(tofres);
414 tofresTOF=new TH1D("tofresTOF", "tofresTOF", 100, -500, 500);
415 tofresTOF->GetXaxis()->SetTitle("t_{TOF}-t_{0}-t_{exp #pi} (ps)");
416 TOFCheck->AddLast(tofresTOF);
417 tofresgood=new TH1D("tofresgood", "tofresgood", 100, -500, 500);
419 tofresgood->GetXaxis()->SetTitle("t_{TOF}-t_{0}-t_{exp #pi} (ps)");
420 TOFCheck->AddLast(tofresgood);
424 hNumMatch=new TH1F("hNumMatch","",46,fBinLim0);
426 TOFCheck->AddLast(hNumMatch);
427 hNumMatchPos=new TH1F("hNumMatchPos","",46,fBinLim0);
428 hNumMatchPos->Sumw2();
429 TOFCheck->AddLast(hNumMatchPos);
430 hNumMatchNeg=new TH1F("hNumMatchNeg","",46,fBinLim0);
431 hNumMatchNeg->Sumw2();
432 TOFCheck->AddLast(hNumMatchNeg);
433 hDenMatch=new TH1F("hDenMatch","",46,fBinLim0);
435 TOFCheck->AddLast(hDenMatch);
436 hDenMatchPos=new TH1F("hDenMatchPos","",46,fBinLim0);
437 hDenMatchPos->Sumw2();
438 TOFCheck->AddLast(hDenMatchPos);
439 hDenMatchNeg=new TH1F("hDenMatchNeg","",46,fBinLim0);
440 hDenMatchNeg->Sumw2();
441 TOFCheck->AddLast(hDenMatchNeg);
445 hNumMatchPip=new TH1F("hNumMatchPip","",46,fBinLim0);
446 hNumMatchPip->Sumw2();
447 TOFCheck->AddLast(hNumMatchPip);
448 hNumMatchPim=new TH1F("hNumMatchPim","",46,fBinLim0);
449 hNumMatchPim->Sumw2();
450 TOFCheck->AddLast(hNumMatchPim);
451 hNumMatchKap=new TH1F("hNumMatchKap","",46,fBinLim0);
452 hNumMatchKap->Sumw2();
453 TOFCheck->AddLast(hNumMatchKap);
454 hNumMatchKam=new TH1F("hNumMatchKam","",46,fBinLim0);
455 hNumMatchKam->Sumw2();
456 TOFCheck->AddLast(hNumMatchKam);
457 hNumMatchPrp=new TH1F("hNumMatchPrp","",46,fBinLim0);
458 hNumMatchPrp->Sumw2();
459 TOFCheck->AddLast(hNumMatchPrp);
460 hNumMatchPrm=new TH1F("hNumMatchPrm","",46,fBinLim0);
461 hNumMatchPrm->Sumw2();
462 TOFCheck->AddLast(hNumMatchPrm);
464 hDenMatchPip=new TH1F("hDenMatchPip","",46,fBinLim0);
465 hDenMatchPip->Sumw2();
466 TOFCheck->AddLast(hDenMatchPip);
467 hDenMatchPim=new TH1F("hDenMatchPim","",46,fBinLim0);
468 hDenMatchPim->Sumw2();
469 TOFCheck->AddLast(hDenMatchPim);
470 hDenMatchKap=new TH1F("hDenMatchKap","",46,fBinLim0);
471 hDenMatchKap->Sumw2();
472 TOFCheck->AddLast(hDenMatchKap);
473 hDenMatchKam=new TH1F("hDenMatchKam","",46,fBinLim0);
474 hDenMatchKam->Sumw2();
475 TOFCheck->AddLast(hDenMatchKam);
476 hDenMatchPrp=new TH1F("hDenMatchPrp","",46,fBinLim0);
477 hDenMatchPrp->Sumw2();
478 TOFCheck->AddLast(hDenMatchPrp);
479 hDenMatchPrm=new TH1F("hDenMatchPrm","",46,fBinLim0);
480 hDenMatchPrm->Sumw2();
481 TOFCheck->AddLast(hDenMatchPrm);
487 hNumMatchEta=new TH1F("hNumMatchEta","",36,-0.9,0.9);
488 hNumMatchEta->Sumw2();
489 TOFCheck->AddLast(hNumMatchEta);
490 hNumMatchPosEta=new TH1F("hNumMatchPosEta","",36,-0.9,0.9);
491 hNumMatchPosEta->Sumw2();
492 TOFCheck->AddLast(hNumMatchPosEta);
493 hNumMatchNegEta=new TH1F("hNumMatchNegEta","",36,-0.9,0.9);
494 hNumMatchNegEta->Sumw2();
495 TOFCheck->AddLast(hNumMatchNegEta);
496 hDenMatchEta=new TH1F("hDenMatchEta","",36,-0.9,0.9);
497 hDenMatchEta->Sumw2();
498 TOFCheck->AddLast(hDenMatchEta);
499 hDenMatchPosEta=new TH1F("hDenMatchPosEta","",36,-0.9,0.9);
500 hDenMatchPosEta->Sumw2();
501 TOFCheck->AddLast(hDenMatchPosEta);
502 hDenMatchNegEta=new TH1F("hDenMatchNegEta","",36,-0.9,0.9);
503 hDenMatchNegEta->Sumw2();
504 TOFCheck->AddLast(hDenMatchNegEta);
508 hNumMatchphiOut=new TH1F("hNumMatchphiOut","",18,0,360);
509 hNumMatchphiOut->Sumw2();
510 TOFCheck->AddLast(hNumMatchphiOut);
511 hNumMatchPosphiOut=new TH1F("hNumMatchPosphiOut","",18,0,360);
512 hNumMatchPosphiOut->Sumw2();
513 TOFCheck->AddLast(hNumMatchPosphiOut);
514 hNumMatchNegphiOut=new TH1F("hNumMatchNegphiOut","",18,0,360);
515 hNumMatchNegphiOut->Sumw2();
516 TOFCheck->AddLast(hNumMatchNegphiOut);
517 hDenMatchphiOut=new TH1F("hDenMatchphiOut","",18,0,360);
518 hDenMatchphiOut->Sumw2();
519 TOFCheck->AddLast(hDenMatchphiOut);
520 hDenMatchPosphiOut=new TH1F("hDenMatchPosphiOut","",18,0,360);
521 hDenMatchPosphiOut->Sumw2();
522 TOFCheck->AddLast(hDenMatchPosphiOut);
523 hDenMatchNegphiOut=new TH1F("hDenMatchNegphiOut","",18,0,360);
524 hDenMatchNegphiOut->Sumw2();
525 TOFCheck->AddLast(hDenMatchNegphiOut);
529 hNumMatchEtaPtMa=new TH1F("hNumMatchEtaPtMa","",36,-0.9,0.9);
530 hNumMatchEtaPtMa->Sumw2();
531 TOFCheck->AddLast(hNumMatchEtaPtMa);
532 hNumMatchPosEtaPtMa=new TH1F("hNumMatchPosEtaPtMa","",36,-0.9,0.9);
533 hNumMatchPosEtaPtMa->Sumw2();
534 TOFCheck->AddLast(hNumMatchPosEtaPtMa);
535 hNumMatchNegEtaPtMa=new TH1F("hNumMatchNegEtaPtMa","",36,-0.9,0.9);
536 hNumMatchNegEtaPtMa->Sumw2();
537 TOFCheck->AddLast(hNumMatchNegEtaPtMa);
538 hDenMatchEtaPtMa=new TH1F("hDenMatchEtaPtMa","",36,-0.9,0.9);
539 hDenMatchEtaPtMa->Sumw2();
540 TOFCheck->AddLast(hDenMatchEtaPtMa);
541 hDenMatchPosEtaPtMa=new TH1F("hDenMatchPosEtaPtMa","",36,-0.9,0.9);
542 hDenMatchPosEtaPtMa->Sumw2();
543 TOFCheck->AddLast(hDenMatchPosEtaPtMa);
544 hDenMatchNegEtaPtMa=new TH1F("hDenMatchNegEtaPtMa","",36,-0.9,0.9);
545 hDenMatchNegEtaPtMa->Sumw2();
546 TOFCheck->AddLast(hDenMatchNegEtaPtMa);
550 hNumMatchphiOutPtMa=new TH1F("hNumMatchphiOutPtMa","",18,0,360);
551 hNumMatchphiOutPtMa->Sumw2();
552 TOFCheck->AddLast(hNumMatchphiOutPtMa);
553 hNumMatchPosphiOutPtMa=new TH1F("hNumMatchPosphiOutPtMa","",18,0,360);
554 hNumMatchPosphiOutPtMa->Sumw2();
555 TOFCheck->AddLast(hNumMatchPosphiOutPtMa);
556 hNumMatchNegphiOutPtMa=new TH1F("hNumMatchNegphiOutPtMa","",18,0,360);
557 hNumMatchNegphiOutPtMa->Sumw2();
558 TOFCheck->AddLast(hNumMatchNegphiOutPtMa);
559 hDenMatchphiOutPtMa=new TH1F("hDenMatchphiOutPtMa","",18,0,360);
560 hDenMatchphiOutPtMa->Sumw2();
561 TOFCheck->AddLast(hDenMatchphiOutPtMa);
562 hDenMatchPosphiOutPtMa=new TH1F("hDenMatchPosphiOutPtMa","",18,0,360);
563 hDenMatchPosphiOutPtMa->Sumw2();
564 TOFCheck->AddLast(hDenMatchPosphiOutPtMa);
565 hDenMatchNegphiOutPtMa=new TH1F("hDenMatchNegphiOutPtMa","",18,0,360);
566 hDenMatchNegphiOutPtMa->Sumw2();
567 TOFCheck->AddLast(hDenMatchNegphiOutPtMa);
571 hNumMatchTRDOut=new TH1F("hNumMatchTRDOut","",46,fBinLim0);
572 hNumMatchTRDOut->Sumw2();
573 TOFCheck->AddLast(hNumMatchTRDOut);
574 hNumMatchPosTRDOut=new TH1F("hNumMatchPosTRDOut","",46,fBinLim0);
575 hNumMatchPosTRDOut->Sumw2();
576 TOFCheck->AddLast(hNumMatchPosTRDOut);
577 hNumMatchNegTRDOut=new TH1F("hNumMatchNegTRDOut","",46,fBinLim0);
578 hNumMatchNegTRDOut->Sumw2();
579 TOFCheck->AddLast(hNumMatchNegTRDOut);
580 hDenMatchTRDOut=new TH1F("hDenMatchTRDOut","",46,fBinLim0);
581 hDenMatchTRDOut->Sumw2();
582 TOFCheck->AddLast(hDenMatchTRDOut);
583 hDenMatchPosTRDOut=new TH1F("hDenMatchPosTRDOut","",46,fBinLim0);
584 hDenMatchPosTRDOut->Sumw2();
585 TOFCheck->AddLast(hDenMatchPosTRDOut);
586 hDenMatchNegTRDOut=new TH1F("hDenMatchNegTRDOut","",46,fBinLim0);
587 hDenMatchNegTRDOut->Sumw2();
588 TOFCheck->AddLast(hDenMatchNegTRDOut);
590 hNumMatchNoTRDOut=new TH1F("hNumMatchNoTRDOut","",46,fBinLim0);
591 hNumMatchNoTRDOut->Sumw2();
592 TOFCheck->AddLast(hNumMatchNoTRDOut);
593 hNumMatchPosNoTRDOut=new TH1F("hNumMatchPosNoTRDOut","",46,fBinLim0);
594 hNumMatchPosNoTRDOut->Sumw2();
595 TOFCheck->AddLast(hNumMatchPosNoTRDOut);
596 hNumMatchNegNoTRDOut=new TH1F("hNumMatchNegNoTRDOut","",46,fBinLim0);
597 hNumMatchNegNoTRDOut->Sumw2();
598 TOFCheck->AddLast(hNumMatchNegNoTRDOut);
599 hDenMatchNoTRDOut=new TH1F("hDenMatchNoTRDOut","",46,fBinLim0);
600 hDenMatchNoTRDOut->Sumw2();
601 TOFCheck->AddLast(hDenMatchNoTRDOut);
602 hDenMatchPosNoTRDOut=new TH1F("hDenMatchPosNoTRDOut","",46,fBinLim0);
603 hDenMatchPosNoTRDOut->Sumw2();
604 TOFCheck->AddLast(hDenMatchPosNoTRDOut);
605 hDenMatchNegNoTRDOut=new TH1F("hDenMatchNegNoTRDOut","",46,fBinLim0);
606 hDenMatchNegNoTRDOut->Sumw2();
607 TOFCheck->AddLast(hDenMatchNegNoTRDOut);
611 hNumMatchTPCpip=new TH1F("hNumMatchTPCpip","",46,fBinLim0);
612 hNumMatchTPCpip->Sumw2();
613 TOFCheck->AddLast(hNumMatchTPCpip);
614 hNumMatchTPCkap=new TH1F("hNumMatchTPCkap","",46,fBinLim0);
615 hNumMatchTPCkap->Sumw2();
616 TOFCheck->AddLast(hNumMatchTPCkap);
617 hNumMatchTPCprp=new TH1F("hNumMatchTPCprp","",46,fBinLim0);
618 hNumMatchTPCprp->Sumw2();
619 TOFCheck->AddLast(hNumMatchTPCprp);
621 hDenMatchTPCpip=new TH1F("hDenMatchTPCpip","",46,fBinLim0);
622 hDenMatchTPCpip->Sumw2();
623 TOFCheck->AddLast(hDenMatchTPCpip);
624 hDenMatchTPCkap=new TH1F("hDenMatchTPCkap","",46,fBinLim0);
625 hDenMatchTPCkap->Sumw2();
626 TOFCheck->AddLast(hDenMatchTPCkap);
627 hDenMatchTPCprp=new TH1F("hDenMatchTPCprp","",46,fBinLim0);
628 hDenMatchTPCprp->Sumw2();
629 TOFCheck->AddLast(hDenMatchTPCprp);
631 hNumMatchTPCpim=new TH1F("hNumMatchTPCpim","",46,fBinLim0);
632 hNumMatchTPCpim->Sumw2();
633 TOFCheck->AddLast(hNumMatchTPCpim);
634 hNumMatchTPCkam=new TH1F("hNumMatchTPCkam","",46,fBinLim0);
635 hNumMatchTPCkam->Sumw2();
636 TOFCheck->AddLast(hNumMatchTPCkam);
637 hNumMatchTPCprm=new TH1F("hNumMatchTPCprm","",46,fBinLim0);
638 hNumMatchTPCprm->Sumw2();
639 TOFCheck->AddLast(hNumMatchTPCprm);
641 hDenMatchTPCpim=new TH1F("hDenMatchTPCpim","",46,fBinLim0);
642 hDenMatchTPCpim->Sumw2();
643 TOFCheck->AddLast(hDenMatchTPCpim);
644 hDenMatchTPCkam=new TH1F("hDenMatchTPCkam","",46,fBinLim0);
645 hDenMatchTPCkam->Sumw2();
646 TOFCheck->AddLast(hDenMatchTPCkam);
647 hDenMatchTPCprm=new TH1F("hDenMatchTPCprm","",46,fBinLim0);
648 hDenMatchTPCprm->Sumw2();
649 TOFCheck->AddLast(hDenMatchTPCprm);
653 hNumEv=new TH1F("NumEv","NumEv",4,1,5);
654 TOFCheck->AddLast(hNumEv);
659 for(Int_t mult=0; mult<7;mult++){
660 for(Int_t part=0; part<2;part++){
661 hNumMatchMultTrkInc[mult][part]=new TH1F(Form("hNumMatch_Inc_MultTrk%i_Charge%i",mult,part),"",46,fBinLim0);
662 hNumMatchMultTrkInc[mult][part]->Sumw2();
663 TOFCheck->AddLast(hNumMatchMultTrkInc[mult][part]);
664 hDenMatchMultTrkInc[mult][part]=new TH1F(Form("hDenMatch_Inc_MultTrk%i_Charge%i",mult,part),"",46,fBinLim0);
665 hDenMatchMultTrkInc[mult][part]->Sumw2();
666 TOFCheck->AddLast(hDenMatchMultTrkInc[mult][part]);
671 for(Int_t mult=0; mult<7;mult++){
672 for(Int_t part=0; part<6;part++){
673 hNumMatchMultTrk[mult][part]=new TH1F(Form("hNumMatch_MultTrk%i_Part%i",mult,part),"",46,fBinLim0);
674 hNumMatchMultTrk[mult][part]->Sumw2();
675 TOFCheck->AddLast(hNumMatchMultTrk[mult][part]);
676 hDenMatchMultTrk[mult][part]=new TH1F(Form("hDenMatch_MultTrk%i_Part%i",mult,part),"",46,fBinLim0);
677 hDenMatchMultTrk[mult][part]->Sumw2();
678 TOFCheck->AddLast(hDenMatchMultTrk[mult][part]);
679 hDenTrkMultTrk[mult][part]=new TH1F(Form("hDenTrk_MultTrk%i_Part%i",mult,part),"",46,fBinLim0);
680 hDenTrkMultTrk[mult][part]->Sumw2();
681 TOFCheck->AddLast(hDenTrkMultTrk[mult][part]);
686 for(Int_t mult=0; mult<7;mult++){
687 for(Int_t part=0; part<6;part++){
688 hNumMatchMultTrkTRDOut[mult][part]=new TH1F(Form("hNumMatch_MultTrk%i_Part%iTRDOut",mult,part),"",46,fBinLim0);
689 hNumMatchMultTrkTRDOut[mult][part]->Sumw2();
690 TOFCheck->AddLast(hNumMatchMultTrkTRDOut[mult][part]);
691 hDenMatchMultTrkTRDOut[mult][part]=new TH1F(Form("hDenMatch_MultTrk%i_Part%iTRDOut",mult,part),"",46,fBinLim0);
692 hDenMatchMultTrkTRDOut[mult][part]->Sumw2();
693 TOFCheck->AddLast(hDenMatchMultTrkTRDOut[mult][part]);
694 hDenTrkMultTrkTRDOut[mult][part]=new TH1F(Form("hDenTrk_MultTrk%i_Part%iTRDOut",mult,part),"",46,fBinLim0);
695 hDenTrkMultTrkTRDOut[mult][part]->Sumw2();
696 TOFCheck->AddLast(hDenTrkMultTrkTRDOut[mult][part]);
700 for(Int_t mult=0; mult<7;mult++){
701 for(Int_t part=0; part<6;part++){
702 hNumMatchMultTrkNoTRDOut[mult][part]=new TH1F(Form("hNumMatch_MultTrk%i_Part%iNoTRDOut",mult,part),"",46,fBinLim0);
703 hNumMatchMultTrkNoTRDOut[mult][part]->Sumw2();
704 TOFCheck->AddLast(hNumMatchMultTrkNoTRDOut[mult][part]);
705 hDenMatchMultTrkNoTRDOut[mult][part]=new TH1F(Form("hDenMatch_MultTrk%i_Part%iNoTRDOut",mult,part),"",46,fBinLim0);
706 hDenMatchMultTrkNoTRDOut[mult][part]->Sumw2();
707 TOFCheck->AddLast(hDenMatchMultTrkNoTRDOut[mult][part]);
708 hDenTrkMultTrkNoTRDOut[mult][part]=new TH1F(Form("hDenTrk_MultTrk%i_Part%iNoTRDOut",mult,part),"",46,fBinLim0);
709 hDenTrkMultTrkNoTRDOut[mult][part]->Sumw2();
710 TOFCheck->AddLast(hDenTrkMultTrkNoTRDOut[mult][part]);
714 for(Int_t mult=0; mult<7;mult++){
715 for(Int_t part=0; part<2;part++){
716 hNumMatchMultSPDInc[mult][part]=new TH1F(Form("hNumMatch_Inc_MultSPD%i_Charge%i",mult,part),"",46,fBinLim0);
717 hNumMatchMultSPDInc[mult][part]->Sumw2();
718 TOFCheck->AddLast(hNumMatchMultSPDInc[mult][part]);
719 hDenMatchMultSPDInc[mult][part]=new TH1F(Form("hDenMatch_Inc_MultSPD%i_Charge%i",mult,part),"",46,fBinLim0);
720 hDenMatchMultSPDInc[mult][part]->Sumw2();
721 TOFCheck->AddLast(hDenMatchMultSPDInc[mult][part]);
725 for(Int_t mult=0; mult<7;mult++){
726 for(Int_t part=0; part<6;part++){
727 hNumMatchMultSPD[mult][part]=new TH1F(Form("hNumMatch_MultSPD%i_Part%i",mult,part),"",46,fBinLim0);
728 hNumMatchMultSPD[mult][part]->Sumw2();
729 TOFCheck->AddLast(hNumMatchMultSPD[mult][part]);
730 hDenMatchMultSPD[mult][part]=new TH1F(Form("hDenMatch_MultSPD%i_Part%i",mult,part),"",46,fBinLim0);
731 hDenMatchMultSPD[mult][part]->Sumw2();
732 TOFCheck->AddLast(hDenMatchMultSPD[mult][part]);
733 hDenTrkMultSPD[mult][part]=new TH1F(Form("hDenTrk_MultSPD%i_Part%i",mult,part),"",46,fBinLim0);
734 hDenTrkMultSPD[mult][part]->Sumw2();
735 TOFCheck->AddLast(hDenTrkMultSPD[mult][part]);
739 for(Int_t part=0; part<6;part++){
740 hDenTrkVertMultTrk[part]=new TH1F(Form("hDenTrkVert_Part%i",part),"",46,fBinLim0);
741 hDenTrkVertMultTrk[part]->Sumw2();
742 TOFCheck->AddLast(hDenTrkVertMultTrk[part]);
746 for(Int_t part=0; part<6;part++){
747 hDenTrkTriggerMultTrk[part]=new TH1F(Form("hDenTrkTrigger_Part%i",part),"",46,fBinLim0);
748 hDenTrkTriggerMultTrk[part]->Sumw2();
749 TOFCheck->AddLast(hDenTrkTriggerMultTrk[part]);
752 PostData(1, TOFCheck);
756 //________________________________________________________________________
757 void AliAnalysisCombinedHadronSpectra2MC::UserExec(Option_t *)
764 multiplicity=-999, vert=-999, XPrimVertex=-999, YPrimVertex=-999, ZPrimVertex=-999, NContrPrimVertex=-999, fMCtracks=-999, fMCPrimaries=-999, spdCorr=-1.0;
765 fT0TOF0=-999, fT0TOF1=-999, fT0TOF2=-999, fT0TOF3=-999, fT0TOF4=-999, fT0TOF5=-999, fT0TOF6=-999, fT0TOF7=-999, frun=-999;
767 fESD = dynamic_cast<AliESDEvent*>( InputEvent() );
769 Printf("ERROR: fESD not available");
773 if (!fESDtrackCuts) {
774 Printf("ERROR: fESDtrackCuts not available");
780 AliMCEventHandler* eventHandler = dynamic_cast<AliMCEventHandler*> (AliAnalysisManager::GetAnalysisManager()->GetMCtruthEventHandler());
782 Printf("ERROR: Could not retrieve MC event handler");
786 AliESDInputHandler* esdH = dynamic_cast<AliESDInputHandler*>(AliAnalysisManager::GetAnalysisManager()->GetInputEventHandler());
788 fESDpid = esdH->GetESDpid();
790 AliMCEvent* mcEvent = 0x0;
791 AliStack* stack = 0x0;
792 if (eventHandler) mcEvent = eventHandler->MCEvent();
794 Printf("ERROR: Could not retrieve MC event");
798 stack = mcEvent->Stack();
802 // check if event is selected by physics selection class
805 //trigger efficiency correction
806 //loop on primary MC tracks
807 for(Int_t i = 0; i < stack->GetNtrack(); i++) {
808 treeMCPBis=-999; treeMCPtBis=-999; treeMCEtaBis=-999; treeMCPhiBis=-999; treeMCPdgBis=-999;
809 if (!stack->IsPhysicalPrimary(i)) continue;
810 TParticle * trackMC = stack->Particle(i);
811 //Double_t rapidityMC=-999;
813 treeMCPBis=trackMC->P();
814 treeMCPtBis=trackMC->Pt();
815 treeMCEtaBis=trackMC->Eta();
816 //if(TMath::Abs(treeMCEtaBis)>=0.9){continue;}
817 treeMCPhiBis=trackMC->Phi()* 180 / TMath::Pi();
818 treeMCPdgBis = trackMC->GetPdgCode();
819 if(TMath::Abs(trackMC->Y())>=0.5) {continue;}
820 if((TMath::Abs(treeMCPdgBis)!=211)&&(TMath::Abs(treeMCPdgBis)!=321)&&(TMath::Abs(treeMCPdgBis)!=2212)){continue;}
823 if((TMath::Abs(treeMCPdgBis)==211)&&(treeMCPdgBis>0)){PartTypeMC=0;}
824 if((TMath::Abs(treeMCPdgBis)==211)&&(treeMCPdgBis<0)){PartTypeMC=1;}
825 if((TMath::Abs(treeMCPdgBis)==321)&&(treeMCPdgBis>0)){PartTypeMC=2;}
826 if((TMath::Abs(treeMCPdgBis)==321)&&(treeMCPdgBis<0)){PartTypeMC=3;}
827 if((TMath::Abs(treeMCPdgBis)==2212)&&(treeMCPdgBis>0)){PartTypeMC=4;}
828 if((TMath::Abs(treeMCPdgBis)==2212)&&(treeMCPdgBis<0)){PartTypeMC=5;}
832 hDenTrkTriggerMultTrk[PartTypeMC]->Fill(treeMCPtBis);
838 Bool_t isSelected = kFALSE;
839 isSelected = (((AliInputEventHandler*)(AliAnalysisManager::GetAnalysisManager()->GetInputEventHandler()))->IsEventSelected()& AliVEvent::kMB);
849 //vertex efficiency correction+senza taglio in eta
850 //loop on primary MC tracks
851 for(Int_t i = 0; i < stack->GetNtrack(); i++) {
852 treeMCPBis=-999; treeMCPtBis=-999; treeMCEtaBis=-999; treeMCPhiBis=-999; treeMCPdgBis=-999;
853 if (!stack->IsPhysicalPrimary(i)) continue;
854 TParticle * trackMC = stack->Particle(i);
855 //Double_t rapidityMC=-999;
857 treeMCPBis=trackMC->P();
858 treeMCPtBis=trackMC->Pt();
859 treeMCEtaBis=trackMC->Eta();
860 //if(TMath::Abs(treeMCEtaBis)>=0.9){continue;}
861 treeMCPhiBis=trackMC->Phi()* 180 / TMath::Pi();
862 treeMCPdgBis = trackMC->GetPdgCode();
863 if(TMath::Abs(trackMC->Y())>=0.5) {continue;}
864 if((TMath::Abs(treeMCPdgBis)!=211)&&(TMath::Abs(treeMCPdgBis)!=321)&&(TMath::Abs(treeMCPdgBis)!=2212)){continue;}
867 if((TMath::Abs(treeMCPdgBis)==211)&&(treeMCPdgBis>0)){PartTypeMC=0;}
868 if((TMath::Abs(treeMCPdgBis)==211)&&(treeMCPdgBis<0)){PartTypeMC=1;}
869 if((TMath::Abs(treeMCPdgBis)==321)&&(treeMCPdgBis>0)){PartTypeMC=2;}
870 if((TMath::Abs(treeMCPdgBis)==321)&&(treeMCPdgBis<0)){PartTypeMC=3;}
871 if((TMath::Abs(treeMCPdgBis)==2212)&&(treeMCPdgBis>0)){PartTypeMC=4;}
872 if((TMath::Abs(treeMCPdgBis)==2212)&&(treeMCPdgBis<0)){PartTypeMC=5;}
876 hDenTrkVertMultTrk[PartTypeMC]->Fill(treeMCPtBis);
884 // monitor vertex position
886 const AliESDVertex *vertex = fESD->GetPrimaryVertexTracks(); //! Primary vertex estimated using ESD tracks
887 if(vertex->GetNContributors()<1) { // # of tracklets/tracks used for the estimate
889 vertex = fESD->GetPrimaryVertexSPD(); //! Primary vertex estimated by the SPD
890 if(vertex->GetNContributors()<1) vertex = 0x0;
904 if (vertex) {ZPrimVertex=vertex->GetZ();}
905 if(TMath::Abs(ZPrimVertex)>10){return;}
913 if (vertex) {XPrimVertex=vertex->GetX(); YPrimVertex=vertex->GetY(); ZPrimVertex=vertex->GetZ(); NContrPrimVertex=vertex->GetNContributors();
916 //multiplicity as defined by Marek
917 const AliMultiplicity *mult = fESD->GetMultiplicity();
918 Float_t nClusters[6]={0.0,0.0,0.0,0.0,0.0,0.0};
919 for(Int_t ilay=0; ilay<6; ilay++)
921 nClusters[ilay] = (Float_t)mult->GetNumberOfITSClusters(ilay);
924 spdCorr = AliESDUtils::GetCorrSPD2(nClusters[1],vertex->GetZ());
929 if((multiplicity>=0)&&(multiplicity<=5)){imult=1;}
930 if((multiplicity>=6)&&(multiplicity<=9)){imult=2;}
931 if((multiplicity>=10)&&(multiplicity<=14)){imult=3;}
932 if((multiplicity>=15)&&(multiplicity<=22)){imult=4;}
933 if((multiplicity>=23)&&(multiplicity<=32)){imult=5;}
934 if(multiplicity>=33){imult=6;}
937 if((spdCorr>=0)&&(spdCorr<=16)){imultSPD=1;}
938 if((spdCorr>=17)&&(spdCorr<=30)){imultSPD=2;}
939 if((spdCorr>=31)&&(spdCorr<=45)){imultSPD=3;}
940 if((spdCorr>=46)&&(spdCorr<=68)){imultSPD=4;}
941 if((spdCorr>=69)&&(spdCorr<=97)){imultSPD=5;}
942 if(spdCorr>=98){imult=6;}
944 fMCtracks=mcEvent->GetNumberOfTracks();
945 fMCPrimaries=mcEvent->GetNumberOfPrimaries();
948 //cout<<"trk "<<fMCtracks<<endl;
949 //cout<<"trk primaries "<<fMCPrimaries<<endl;
951 // //TOF settings done in the TOF tender
953 // frun = fESD->GetRunNumber();
954 // if(frun==frunOld){fLoadOCDB=kFALSE;}else {fLoadOCDB=kTRUE;}
955 // //if (tuneTOFMC) calibrateESD = kFALSE;
958 // AliCDBManager *cdb = AliCDBManager::Instance();
959 // cdb->SetDefaultStorage("alien://folder=/alice/data/2010/OCDB");
960 // //cdb->SetDefaultStorage("raw://");
961 // cdb->SetRun(frun);}
963 // /* init TOF calibration */
965 // tofCalib->SetCorrectTExp(kTRUE);
967 // tofCalib->Init(frun);
969 // /* init TOF T0-maker */
970 // t0maker->SetTimeResolution(timeResolution);
972 // /* calibrate ESD */
974 // tofCalib->CalibrateESD(fESD);
976 // T0TOF=t0maker->ComputeT0TOF(fESD);// calcola il t0 solo col tof in 10 bin di pt e lo setta in AliTOFPidResponse
978 // //scrive i valori precedenti nel TOFHeader
979 // t0maker->WriteInESD(fESD);
981 // //setta T0_TOF in AliTOFPidResponse ovvero i valori settati in AliTOFHeader. Se non ci sono setta T0spread
982 // fTimeZeroType=AliESDpid::kTOF_T0;
984 // fESDpid->SetTOFResponse(fESD,(AliESDpid::EStartTimeType_t)fTimeZeroType);
987 // fESDpid->MakePID(fESD,kFALSE); //calcola la sigma e le gi in più definisce la flag kTOFmismatch
1000 // fT0TOF7=T0TOF[7];
1007 for (Int_t i=0;i<fESD->GetNumberOfTracks();++i) {
1009 AliESDtrack *track =fESD->GetTrack(i);
1010 if (!track){continue;}
1011 // start TOF analysis
1013 rapidityMC=-999, fDCAXY=-999, fDCAZ=-999, fcut=-999, fTOFout=-999, ftrdout=-999, ftime=-999, ftpcclust=-999, flength=-999, fsign=-999, ftimetof=-999, ftofchan=-999, feta=-999, fphi=-999, fmomtrasv=-999,sigmapi=-999, sigmaka=-999, sigmapr=-999, fTot=-999, fmom=-999, fexptimepi=-999, fexptimeka=-999, fexptimepr=-999, ftofz=-999,ftofx=-999, TPCSignal=-999, TPCSigmaPI=-999, TPCSigmaKA=-999, TPCSigmaPR=-999, r1[0]=-999,r1[1]=-999,r1[2]=-999,r1[3]=-999,r1[4]=-999, fmatch=-999, fXout=-999, fYout=-999, fZout=-999, fPhiout=-999;
1016 if (!fESDtrackCuts->AcceptTrack(track)) {continue;}
1017 if (!(track->GetStatus()&AliESDtrack::kTOFout)==0) {fTOFout=1;}else {fTOFout=0;}
1018 if (!(track->GetStatus()&AliESDtrack::kTIME)==0) {ftime=1;}else {ftime=0;}
1019 if (!(track->GetStatus()&AliESDtrack::kTRDout)==0) {ftrdout=1;}else {ftrdout=0;}
1020 if (!(track->GetStatus()&AliESDtrack::kTOFmismatch)==0) {fmatch=0;}else {fmatch=1;}
1021 track->GetImpactParameters(fDCAXY, fDCAZ);
1023 track->GetTOFpid(r1);
1024 fmomtrasv=track->Pt();
1025 feta=track->Eta();// return pseudorapidity return -TMath::Log(TMath::Tan(0.5 * Theta()));
1026 if(!(TMath::Abs(feta)<0.9))continue;
1028 fmom=track->GetP(); // This function returns the track momentum
1030 // trackT0 = t0maker->GetT0p(fmom);// [0]=to -- [1] = sigma T0
1031 // fT0meas=trackT0[0];
1032 // fT0sigma=trackT0[1];
1033 ftpcclust=track->GetNcls(1);
1034 flength=track->GetIntegratedLength();
1035 fsign=track->GetSign();
1036 ftimetof=track->GetTOFsignal();
1037 Double_t inttime[5];
1038 track->GetIntegratedTimes(inttime);// Returns the array with integrated times for each particle hypothesis
1039 fexptimepi=inttime[2];
1040 fexptimeka=inttime[3];
1041 fexptimepr=inttime[4];
1043 fTot = track->GetTOFsignalToT();
1044 ftofz=track->GetTOFsignalDz(); // local z of track's impact on the TOF pad
1045 ftofx=track->GetTOFsignalDx(); // local x of track's impact on the TOF pad
1046 ftofchan=track->GetTOFCalChannel(); // Channel Index of the TOF Signal
1048 fphi=track->Phi()* 180 / TMath::Pi();// Returns the azimuthal angle of momentum 0 <= phi < 2*pi
1050 t0track = fESDpid->GetTOFResponse().GetStartTime(fmom); // T0best time
1051 t0trackSigma = fESDpid->GetTOFResponse().GetStartTimeRes(fmom); // T0best time
1053 for (Int_t ipart = 0; ipart < AliPID::kSPECIES; ipart++){
1054 sigma[ipart] = fESDpid->GetTOFResponse().GetExpectedSigma(fmom, inttime[ipart], AliPID::ParticleMass(ipart));}
1058 TPCSignal = track->GetTPCsignal();
1059 TPCSigmaPI=fESDpid->NumberOfSigmasTPC(track,AliPID::kPion);
1060 TPCSigmaKA=fESDpid->NumberOfSigmasTPC(track,AliPID::kKaon);
1061 TPCSigmaPR=fESDpid->NumberOfSigmasTPC(track,AliPID::kProton);
1063 AliExternalTrackParam *exttrack=(AliExternalTrackParam *)track->GetOuterParam();
1065 fPhiout=exttrack->Phi();
1066 fXout=exttrack->GetX();
1067 fYout=exttrack->GetY();
1068 fZout=exttrack->GetZ();}
1070 //start to take MC data
1072 flab=track->GetLabel(); /*The Get*Label() getters return the label of the associated MC particle. The absolute value of this label is the index of the particle within the MC stack. If the label is negative, this track was assigned a certain number of clusters that did not in fact belong to this track. */
1073 Int_t abslab=TMath::Abs(flab);
1074 AliMCParticle *MCpart =(AliMCParticle* ) mcEvent->GetTrack(abslab);
1076 TParticle *part = MCpart->Particle();
1079 fphiMC=part->Phi()* 180 / TMath::Pi(); //angolo tra 0 e 2pi
1081 fPdgcode = part->GetPdgCode();
1085 //inizio plot match eff
1088 if((TMath::Abs(TPCSigmaPI)<3)&&(TMath::Abs(TPCSigmaKA)>3)&&(TMath::Abs(TPCSigmaPR)>3)&&(fsign>0)){hDenMatchTPCpip->Fill(fmomtrasv);}
1089 if((TMath::Abs(TPCSigmaPI)>3)&&(TMath::Abs(TPCSigmaKA)<3)&&(TMath::Abs(TPCSigmaPR)>3)&&(fsign>0)){hDenMatchTPCkap->Fill(fmomtrasv);}
1090 if((TMath::Abs(TPCSigmaPI)>3)&&(TMath::Abs(TPCSigmaKA)>3)&&(TMath::Abs(TPCSigmaPR)<3)&&(fsign>0)){hDenMatchTPCprp->Fill(fmomtrasv);}
1091 if((TMath::Abs(TPCSigmaPI)<3)&&(TMath::Abs(TPCSigmaKA)>3)&&(TMath::Abs(TPCSigmaPR)>3)&&(fsign<0)){hDenMatchTPCpim->Fill(fmomtrasv);}
1092 if((TMath::Abs(TPCSigmaPI)>3)&&(TMath::Abs(TPCSigmaKA)<3)&&(TMath::Abs(TPCSigmaPR)>3)&&(fsign<0)){hDenMatchTPCkam->Fill(fmomtrasv);}
1093 if((TMath::Abs(TPCSigmaPI)>3)&&(TMath::Abs(TPCSigmaKA)>3)&&(TMath::Abs(TPCSigmaPR)<3)&&(fsign<0)){hDenMatchTPCprm->Fill(fmomtrasv);}
1095 hDenMatch->Fill(fmomtrasv);
1096 if(fsign>0) hDenMatchPos->Fill(fmomtrasv);
1097 if(fsign<0) hDenMatchNeg->Fill(fmomtrasv);
1098 hDenMatchEta->Fill(feta);
1099 if(fsign>0) hDenMatchPosEta->Fill(feta);
1100 if(fsign<0) hDenMatchNegEta->Fill(feta);
1102 if((TMath::Abs(fPdgcode)==211)&&(fsign>0)){hDenMatchPip->Fill(fmomtrasv);}
1103 if((TMath::Abs(fPdgcode)==211)&&(fsign<0)){hDenMatchPim->Fill(fmomtrasv);}
1104 if((TMath::Abs(fPdgcode)==321)&&(fsign>0)){hDenMatchKap->Fill(fmomtrasv);}
1105 if((TMath::Abs(fPdgcode)==321)&&(fsign<0)){hDenMatchKam->Fill(fmomtrasv);}
1106 if((TMath::Abs(fPdgcode)==2212)&&(fsign>0)){hDenMatchPrp->Fill(fmomtrasv);}
1107 if((TMath::Abs(fPdgcode)==2212)&&(fsign<0)){hDenMatchPrm->Fill(fmomtrasv);}
1110 hDenMatchEtaPtMa->Fill(feta);
1111 if(fsign>0) hDenMatchPosEtaPtMa->Fill(feta);
1112 if(fsign<0) hDenMatchNegEtaPtMa->Fill(feta);
1113 hDenMatchphiOutPtMa->Fill(fPhiout*180/TMath::Pi());
1114 if(fsign>0) hDenMatchPosphiOutPtMa->Fill(fPhiout*180/TMath::Pi());
1115 if(fsign<0) hDenMatchNegphiOutPtMa->Fill(fPhiout*180/TMath::Pi());
1117 //Int_t NSM=tofchan/8736;
1118 hDenMatchphiOut->Fill(fPhiout*180/TMath::Pi());
1119 if(fsign>0) hDenMatchPosphiOut->Fill(fPhiout*180/TMath::Pi());
1120 if(fsign<0) hDenMatchNegphiOut->Fill(fPhiout*180/TMath::Pi());
1123 hDenMatchTRDOut->Fill(fmomtrasv);
1124 if(fsign>0) hDenMatchPosTRDOut->Fill(fmomtrasv);
1125 if(fsign<0) hDenMatchNegTRDOut->Fill(fmomtrasv);
1129 hDenMatchNoTRDOut->Fill(fmomtrasv);
1130 if(fsign>0) hDenMatchPosNoTRDOut->Fill(fmomtrasv);
1131 if(fsign<0) hDenMatchNegNoTRDOut->Fill(fmomtrasv);
1135 if((fTOFout==1)&&(ftime==1)&&(flength>350)&&(ftimetof>10000)&&(fexptimepi>10000)&&(fexptimeka>10000)&&(fexptimepr>10000)&&(ftimetof<80000)){
1137 if((TMath::Abs(TPCSigmaPI)<3)&&(TMath::Abs(TPCSigmaKA)>3)&&(TMath::Abs(TPCSigmaPR)>3)&&(fsign>0)){hNumMatchTPCpip->Fill(fmomtrasv);}
1138 if((TMath::Abs(TPCSigmaPI)>3)&&(TMath::Abs(TPCSigmaKA)<3)&&(TMath::Abs(TPCSigmaPR)>3)&&(fsign>0)){hNumMatchTPCkap->Fill(fmomtrasv);}
1139 if((TMath::Abs(TPCSigmaPI)>3)&&(TMath::Abs(TPCSigmaKA)>3)&&(TMath::Abs(TPCSigmaPR)<3)&&(fsign>0)){hNumMatchTPCprp->Fill(fmomtrasv);}
1140 if((TMath::Abs(TPCSigmaPI)<3)&&(TMath::Abs(TPCSigmaKA)>3)&&(TMath::Abs(TPCSigmaPR)>3)&&(fsign<0)){hNumMatchTPCpim->Fill(fmomtrasv);}
1141 if((TMath::Abs(TPCSigmaPI)>3)&&(TMath::Abs(TPCSigmaKA)<3)&&(TMath::Abs(TPCSigmaPR)>3)&&(fsign<0)){hNumMatchTPCkam->Fill(fmomtrasv);}
1142 if((TMath::Abs(TPCSigmaPI)>3)&&(TMath::Abs(TPCSigmaKA)>3)&&(TMath::Abs(TPCSigmaPR)<3)&&(fsign<0)){hNumMatchTPCprm->Fill(fmomtrasv);}
1144 hNumMatch->Fill(fmomtrasv);
1145 if(fsign>0) hNumMatchPos->Fill(fmomtrasv);
1146 if(fsign<0) hNumMatchNeg->Fill(fmomtrasv);
1147 hNumMatchEta->Fill(feta);
1148 if(fsign>0) hNumMatchPosEta->Fill(feta);
1149 if(fsign<0) hNumMatchNegEta->Fill(feta);
1151 if((TMath::Abs(fPdgcode)==211)&&(fsign>0)){hNumMatchPip->Fill(fmomtrasv);}
1152 if((TMath::Abs(fPdgcode)==211)&&(fsign<0)){hNumMatchPim->Fill(fmomtrasv);}
1153 if((TMath::Abs(fPdgcode)==321)&&(fsign>0)){hNumMatchKap->Fill(fmomtrasv);}
1154 if((TMath::Abs(fPdgcode)==321)&&(fsign<0)){hNumMatchKam->Fill(fmomtrasv);}
1155 if((TMath::Abs(fPdgcode)==2212)&&(fsign>0)){hNumMatchPrp->Fill(fmomtrasv);}
1156 if((TMath::Abs(fPdgcode)==2212)&&(fsign<0)){hNumMatchPrm->Fill(fmomtrasv);}
1159 hNumMatchEtaPtMa->Fill(feta);
1160 if(fsign>0) hNumMatchPosEtaPtMa->Fill(feta);
1161 if(fsign<0) hNumMatchNegEtaPtMa->Fill(feta);
1162 hNumMatchphiOutPtMa->Fill(fPhiout*180/TMath::Pi());
1163 if(fsign>0) hNumMatchPosphiOutPtMa->Fill(fPhiout*180/TMath::Pi());
1164 if(fsign<0) hNumMatchNegphiOutPtMa->Fill(fPhiout*180/TMath::Pi());
1166 hNumMatchphiOut->Fill(fPhiout*180/TMath::Pi());
1167 if(fsign>0) hNumMatchPosphiOut->Fill(fPhiout*180/TMath::Pi());
1168 if(fsign<0) hNumMatchNegphiOut->Fill(fPhiout*180/TMath::Pi());
1171 hNumMatchTRDOut->Fill(fmomtrasv);
1172 if(fsign>0) hNumMatchPosTRDOut->Fill(fmomtrasv);
1173 if(fsign<0) hNumMatchNegTRDOut->Fill(fmomtrasv);
1177 hNumMatchNoTRDOut->Fill(fmomtrasv);
1178 if(fsign>0) hNumMatchPosNoTRDOut->Fill(fmomtrasv);
1179 if(fsign<0) hNumMatchNegNoTRDOut->Fill(fmomtrasv);
1183 //fine plot test matching efficiency
1185 pad->Fill(ftofx,ftofz);
1189 if((fmom>0.9)&&(fmom<1.1)){
1190 deltat=ftimetof-t0track-fexptimepi;
1191 tofres->Fill(deltat);
1192 if(t0track!=0){tofresTOF->Fill(deltat);}
1193 if((TMath::Abs(ftofx)<1.25)&&(TMath::Abs(ftofz)<1.75)){
1194 tofresgood->Fill(deltat);
1199 //inizio plot efficienze matching + tracking spettri
1201 if(TMath::Abs(fPdgcode)==211){ip=2;}
1202 if(TMath::Abs(fPdgcode)==321){ip=3;}
1203 if(TMath::Abs(fPdgcode)==2212){ip=4;}
1204 if((ip!=2)&&(ip!=3)&&(ip!=4)){continue;}
1207 mass=AliPID::ParticleMass(ip);//GeV
1209 momlung=TMath::Sqrt(fmom*fmom-fmomtrasv*fmomtrasv);
1210 Double_t transvmass;
1211 transvmass=TMath::Sqrt(mass*mass+fmomtrasv*fmomtrasv);
1212 rapidityMC=TMath::ASinH(momlung/transvmass);
1213 if(rapidityMC>=0.5){continue;}
1217 if((TMath::Abs(fPdgcode)==211)&&(fsign>0)){PartType=0;}
1218 if((TMath::Abs(fPdgcode)==211)&&(fsign<0)){PartType=1;}
1219 if((TMath::Abs(fPdgcode)==321)&&(fsign>0)){PartType=2;}
1220 if((TMath::Abs(fPdgcode)==321)&&(fsign<0)){PartType=3;}
1221 if((TMath::Abs(fPdgcode)==2212)&&(fsign>0)){PartType=4;}
1222 if((TMath::Abs(fPdgcode)==2212)&&(fsign<0)){PartType=5;}
1225 if((PartType==0)||(PartType==2)||(PartType==4)){Pos=0;}
1226 if((PartType==1)||(PartType==3)||(PartType==5)){Pos=1;}
1228 if((fTOFout==1)&&(ftime==1))
1232 hNumMatchMultTrk[imult][PartType]->Fill(fmomtrasv);
1233 hNumMatchMultSPD[imultSPD][PartType]->Fill(fmomtrasv);
1234 hNumMatchMultTrk[0][PartType]->Fill(fmomtrasv);
1235 hNumMatchMultSPD[0][PartType]->Fill(fmomtrasv);
1237 hNumMatchMultTrkInc[imult][Pos]->Fill(fmomtrasv);
1238 hNumMatchMultSPDInc[imultSPD][Pos]->Fill(fmomtrasv);
1239 hNumMatchMultTrkInc[0][Pos]->Fill(fmomtrasv);
1240 hNumMatchMultSPDInc[0][Pos]->Fill(fmomtrasv);
1242 if(ftrdout==1) {hNumMatchMultTrkTRDOut[0][PartType]->Fill(fmomtrasv);}
1243 if(ftrdout==0) {hNumMatchMultTrkNoTRDOut[0][PartType]->Fill(fmomtrasv);}
1247 hDenMatchMultTrk[imult][PartType]->Fill(fmomtrasv);
1248 hDenMatchMultSPD[imultSPD][PartType]->Fill(fmomtrasv);
1249 hDenMatchMultTrk[0][PartType]->Fill(fmomtrasv);
1250 hDenMatchMultSPD[0][PartType]->Fill(fmomtrasv);
1252 hDenMatchMultTrkInc[imult][Pos]->Fill(fmomtrasv);
1253 hDenMatchMultSPDInc[imultSPD][Pos]->Fill(fmomtrasv);
1254 hDenMatchMultTrkInc[0][Pos]->Fill(fmomtrasv);
1255 hDenMatchMultSPDInc[0][Pos]->Fill(fmomtrasv);
1264 kTOFout = TOF matching
1265 kTIME = good integrated time
1266 100000 > track->GetTOFsignal() > 12000 = TOF time reasanble range
1267 tracklength > 365 = should be greater than the TOF radius (370 cm)
1272 } // end of track loop
1275 //secondo modo per trovare le primarie
1276 //loop on primary MC tracks
1277 for(Int_t i = 0; i < stack->GetNtrack(); i++) {
1278 treeMCPBis=-999; treeMCPtBis=-999; treeMCEtaBis=-999; treeMCPhiBis=-999; treeMCPdgBis=-999;
1279 if (!stack->IsPhysicalPrimary(i)) continue;
1280 TParticle * trackMC = stack->Particle(i);
1281 //Double_t rapidityMC=-999;
1283 treeMCPBis=trackMC->P();
1284 treeMCPtBis=trackMC->Pt();
1285 treeMCEtaBis=trackMC->Eta();
1286 if(TMath::Abs(treeMCEtaBis)>=0.9){continue;}
1287 treeMCPhiBis=trackMC->Phi()* 180 / TMath::Pi();
1288 treeMCPdgBis = trackMC->GetPdgCode();
1289 if(TMath::Abs(trackMC->Y())>=0.5) {continue;}
1290 if((TMath::Abs(treeMCPdgBis)!=211)&&(TMath::Abs(treeMCPdgBis)!=321)&&(TMath::Abs(treeMCPdgBis)!=2212)){continue;}
1292 Int_t PartTypeMC=-5;
1293 if((TMath::Abs(treeMCPdgBis)==211)&&(treeMCPdgBis>0)){PartTypeMC=0;}
1294 if((TMath::Abs(treeMCPdgBis)==211)&&(treeMCPdgBis<0)){PartTypeMC=1;}
1295 if((TMath::Abs(treeMCPdgBis)==321)&&(treeMCPdgBis>0)){PartTypeMC=2;}
1296 if((TMath::Abs(treeMCPdgBis)==321)&&(treeMCPdgBis<0)){PartTypeMC=3;}
1297 if((TMath::Abs(treeMCPdgBis)==2212)&&(treeMCPdgBis>0)){PartTypeMC=4;}
1298 if((TMath::Abs(treeMCPdgBis)==2212)&&(treeMCPdgBis<0)){PartTypeMC=5;}
1302 hDenTrkMultTrk[imult][PartTypeMC]->Fill(treeMCPtBis);
1303 hDenTrkMultSPD[imultSPD][PartTypeMC]->Fill(treeMCPtBis);
1304 hDenTrkMultTrk[0][PartTypeMC]->Fill(treeMCPtBis);
1305 hDenTrkMultSPD[0][PartTypeMC]->Fill(treeMCPtBis);
1319 //________________________________________________________________________
1320 void AliAnalysisCombinedHadronSpectra2MC::Terminate(Option_t *)
1322 // Draw result to the screen
1323 // Called once at the end of the query
1324 Printf("*** CONSTRUCTOR CALLED ****");
1325 TOFCheck = dynamic_cast<TList*> (GetOutputData(1));
1327 Printf("ERROR: TOFCheck not available");
1331 system("touch ok.job");