24 #include "Riostream.h"
25 #include "TDatabasePDG.h"
28 #include "AliESDEvent.h"
29 #include "AliESDInputHandler.h"
30 #include "AliAODEvent.h"
31 #include "AliAODInputHandler.h"
32 #include "AliMCEvent.h"
33 #include "AliMCEventHandler.h"
34 #include "AliAnalysisManager.h"
35 #include "AliCentrality.h"
51 fMaxNoGlobalTracksAOD(5),
52 fProcessBothKineAndReco(kFALSE),
53 fProcessOnlyKine(kFALSE),
54 fProcessOnlyReco(kFALSE),
55 fRejectFakeTracks(kTRUE),
58 fControlHistogramsList(NULL),
59 fControlHistogramsFlagsPro(NULL),
60 fFillControlHistograms(kFALSE),
61 fControlHistogramsEventList(NULL),
62 fControlHistogramsEventFlagsPro(NULL),
63 fFillControlHistogramsEvent(kFALSE),
64 fGetNumberOfTracksHist(NULL),
65 fGetNumberOfGlobalTracksHist(NULL),
66 fGetNumberOfV0sHist(NULL),
67 fGetNumberOfCascadesHist(NULL),
68 fGetMagneticFieldHist(NULL),
69 fGetEventTypeHist(NULL),
70 fGetCentralityHist(NULL),
71 fGetNContributorsHist(NULL),
72 fGetChi2perNDFHist(NULL),
73 fGetNDaughtersHist(NULL),
74 fControlHistogramsNonIdentifiedParticlesList(NULL),
75 fControlHistogramsNonIdentifiedParticlesFlagsPro(NULL),
76 fFillControlHistogramsNonIdentifiedParticles(kFALSE),
78 fGetTPCNclsHist(NULL),
79 fGetTPCsignalNHist(NULL),
80 fGetITSNclsHist(NULL),
88 fControlHistogramsNonIdentifiedParticlesFTSFList(NULL),
89 fControlHistogramsNonIdentifiedParticlesFTSFFlagsPro(NULL),
90 fFillControlHistogramsNonIdentifiedParticlesFTSF(kFALSE),
92 fChargeFTSFHist(NULL),
93 fGetTPCNclsFTSFHist(NULL),
94 fGetTPCsignalNFTSFHist(NULL),
95 fGetITSNclsFTSFHist(NULL),
96 fdEdxVsPtFTSFHist(NULL),
101 fGetFilterMapFTSF(NULL),
102 fGetPdgCodeFTSF(NULL),
103 fControlHistogramsIdentifiedParticlesList(NULL),
104 fControlHistogramsIdentifiedParticlesFlagsPro(NULL),
105 fFillControlHistogramsIdentifiedParticles(kFALSE),
106 fFillControlHistogramsWithGlobalTrackInfo(kFALSE),
107 fInclusiveSigmaCutsPro(NULL),
108 fExclusiveSigmaCutsPro(NULL),
109 fUseDefaultInclusiveSigmaCuts(kTRUE),
110 fUseDefaultExclusiveSigmaCuts(kTRUE),
111 fControlHistogramsV0sList(NULL),
112 fControlHistogramsV0sFlagsPro(NULL),
113 fFillControlHistogramsV0s(kFALSE),
114 fGetNProngsHist(NULL),
115 fMassK0ShortHist(NULL),
116 fMassLambdaHist(NULL),
117 fMassAntiLambdaHist(NULL),
118 fOpenAngleV0Hist(NULL),
120 fDcaV0ToPrimVertexHist(NULL),
125 fPseudoRapV0Hist(NULL),
128 fEBEHistogramsList(NULL),
129 fEBEObjectsFlagsPro(NULL),
131 fUniqueIDHistEBE(NULL),
133 fCorrelationFunctionsList(NULL),
134 fCorrelationFunctionsFlagsPro(NULL),
135 f2pCorrelationFunctionsFlagsPro(NULL),
136 f3pCorrelationFunctionsFlagsPro(NULL),
137 f4pCorrelationFunctionsFlagsPro(NULL),
138 fFillCorrelationFunctions(kFALSE),
139 fNormalizeCorrelationFunctions(kFALSE),
140 fCorrelationFunctionsIndices(NULL),
141 fFill3pCorrelationFunctions(kFALSE),
142 fFill4pCorrelationFunctions(kFALSE),
143 fNormalizationOption(0),
146 fBackgroundList(NULL),
147 fBackgroundFlagsPro(NULL),
148 f2pBackgroundFlagsPro(NULL),
149 f3pBackgroundFlagsPro(NULL),
150 f4pBackgroundFlagsPro(NULL),
151 fBackgroundOption(0),
152 fEstimate2pBackground(kFALSE),
153 fEstimate3pBackground(kFALSE),
154 fEstimate4pBackground(kFALSE),
158 fBuffersFlagsPro(NULL),
159 fFillBuffers(kFALSE),
165 fBailOutAfterQA(kFALSE),
166 fFillQAEvents(kFALSE),
167 fFillQAParticles(kFALSE),
169 fQAParticlesList(NULL),
170 fQAFilterBitScan(NULL),
171 fQAIDvsFilterBit(NULL),
173 fRejectEventsWithoutPrimaryVertex(kTRUE),
174 fMinMagneticField(0.001),
175 fCutOnNumberOfTracks(kFALSE),
176 fMinNumberOfTracks(-44),
177 fMaxNumberOfTracks(-44),
178 fCutOnNumberOfGlobalTracks(kFALSE),
179 fMinNumberOfGlobalTracks(-44),
180 fMaxNumberOfGlobalTracks(-44),
181 fCutOnNumberOfV0s(kFALSE),
182 fMinNumberOfV0s(-44),
183 fMaxNumberOfV0s(-44),
184 fCutOnNumberOfCascades(kFALSE),
185 fMinNumberOfCascades(-44),
186 fMaxNumberOfCascades(-44),
187 fCutOnVertexX(kFALSE),
190 fCutOnVertexY(kFALSE),
193 fCutOnVertexZ(kFALSE),
196 fCutOnNContributors(kFALSE),
197 fMinNContributors(-44),
198 fMaxNContributors(-44),
200 fGlobalTrackCutsList(NULL),
201 fGlobalTrackCutsFlagsPro(NULL),
202 fApplyGlobalTrackCuts(kFALSE),
204 fCorrelationFunctionsTESTList(NULL),
205 fCorrelationFunctionsTESTFlagsPro(NULL),
207 fBoostVelocity(0.,0.,0.),
218 fBackgroundTESTList(NULL),
219 fBackgroundTESTFlagsPro(NULL),
221 fHybridApproachList(NULL),
222 fHybridApproachFlagsPro(NULL),
223 fDoHybridApproach(kFALSE),
228 fCalculateMPDF2p(kFALSE),
229 fCalculateMPDF3p(kFALSE),
230 fProjectMPDF2p(kFALSE),
231 fProjectMPDF3p(kFALSE),
233 fOnlineMonitoring(kFALSE),
234 fUpdateOutputFile(kFALSE),
235 fUpdateFrequency(-44),
236 fUpdateWhichOutputFile(NULL),
237 fMaxNumberOfEvents(-44),
239 fDoSomeDebugging(kFALSE),
240 fWaitForSpecifiedEvent(kFALSE),
248 AliDebug(2,
"AliAnalysisTaskMultiparticleFemtoscopy::AliAnalysisTaskMultiparticleFemtoscopy(const char *name, Bool_t useParticleWeights)");
251 fHistList =
new TList();
252 fHistList->SetName(
"MPF");
253 fHistList->SetOwner(kTRUE);
256 this->InitializeArrays();
257 this->InitializeArraysForControlHistograms();
258 this->InitializeArraysForEBEObjects();
259 this->InitializeArraysForCorrelationFunctions();
260 this->InitializeArraysForBackground();
261 this->InitializeArraysForBuffers();
262 this->InitializeArraysForQA();
263 this->InitializeArraysForGlobalTrackCuts();
264 this->InitializeArraysForCorrelationFunctionsTEST();
265 this->InitializeArraysForBackgroundTEST();
266 this->InitializeArraysForHybridApproach();
267 this->InitializeArraysForMPDF();
280 DefineOutput(1, TList::Class());
282 if(useParticleWeights)
296 fMaxNoGlobalTracksAOD(5),
297 fProcessBothKineAndReco(kFALSE),
298 fProcessOnlyKine(kFALSE),
299 fProcessOnlyReco(kFALSE),
300 fRejectFakeTracks(kTRUE),
303 fControlHistogramsList(NULL),
304 fControlHistogramsFlagsPro(NULL),
305 fFillControlHistograms(kFALSE),
306 fControlHistogramsEventList(NULL),
307 fControlHistogramsEventFlagsPro(NULL),
308 fFillControlHistogramsEvent(kFALSE),
309 fGetNumberOfTracksHist(NULL),
310 fGetNumberOfGlobalTracksHist(NULL),
311 fGetNumberOfV0sHist(NULL),
312 fGetNumberOfCascadesHist(NULL),
313 fGetMagneticFieldHist(NULL),
314 fGetEventTypeHist(NULL),
315 fGetCentralityHist(NULL),
316 fGetNContributorsHist(NULL),
317 fGetChi2perNDFHist(NULL),
318 fGetNDaughtersHist(NULL),
319 fControlHistogramsNonIdentifiedParticlesList(NULL),
320 fControlHistogramsNonIdentifiedParticlesFlagsPro(NULL),
321 fFillControlHistogramsNonIdentifiedParticles(kFALSE),
323 fGetTPCNclsHist(NULL),
324 fGetTPCsignalNHist(NULL),
325 fGetITSNclsHist(NULL),
333 fControlHistogramsNonIdentifiedParticlesFTSFList(NULL),
334 fControlHistogramsNonIdentifiedParticlesFTSFFlagsPro(NULL),
335 fFillControlHistogramsNonIdentifiedParticlesFTSF(kFALSE),
337 fChargeFTSFHist(NULL),
338 fGetTPCNclsFTSFHist(NULL),
339 fGetTPCsignalNFTSFHist(NULL),
340 fGetITSNclsFTSFHist(NULL),
341 fdEdxVsPtFTSFHist(NULL),
346 fGetFilterMapFTSF(NULL),
347 fGetPdgCodeFTSF(NULL),
348 fControlHistogramsIdentifiedParticlesList(NULL),
349 fControlHistogramsIdentifiedParticlesFlagsPro(NULL),
350 fFillControlHistogramsIdentifiedParticles(kFALSE),
351 fFillControlHistogramsWithGlobalTrackInfo(kFALSE),
352 fInclusiveSigmaCutsPro(NULL),
353 fExclusiveSigmaCutsPro(NULL),
354 fUseDefaultInclusiveSigmaCuts(kFALSE),
355 fUseDefaultExclusiveSigmaCuts(kFALSE),
356 fControlHistogramsV0sList(NULL),
357 fControlHistogramsV0sFlagsPro(NULL),
358 fFillControlHistogramsV0s(kFALSE),
359 fGetNProngsHist(NULL),
360 fMassK0ShortHist(NULL),
361 fMassLambdaHist(NULL),
362 fMassAntiLambdaHist(NULL),
363 fOpenAngleV0Hist(NULL),
365 fDcaV0ToPrimVertexHist(NULL),
370 fPseudoRapV0Hist(NULL),
373 fEBEHistogramsList(NULL),
374 fEBEObjectsFlagsPro(NULL),
376 fUniqueIDHistEBE(NULL),
378 fCorrelationFunctionsList(NULL),
379 fCorrelationFunctionsFlagsPro(NULL),
380 f2pCorrelationFunctionsFlagsPro(NULL),
381 f3pCorrelationFunctionsFlagsPro(NULL),
382 f4pCorrelationFunctionsFlagsPro(NULL),
383 fFillCorrelationFunctions(kFALSE),
384 fNormalizeCorrelationFunctions(kFALSE),
385 fCorrelationFunctionsIndices(NULL),
386 fFill3pCorrelationFunctions(kFALSE),
387 fFill4pCorrelationFunctions(kFALSE),
388 fNormalizationOption(0),
391 fBackgroundList(NULL),
392 fBackgroundFlagsPro(NULL),
393 f2pBackgroundFlagsPro(NULL),
394 f3pBackgroundFlagsPro(NULL),
395 f4pBackgroundFlagsPro(NULL),
396 fBackgroundOption(0),
397 fEstimate2pBackground(kFALSE),
398 fEstimate3pBackground(kFALSE),
399 fEstimate4pBackground(kFALSE),
403 fBuffersFlagsPro(NULL),
404 fFillBuffers(kFALSE),
410 fBailOutAfterQA(kFALSE),
411 fFillQAEvents(kFALSE),
412 fFillQAParticles(kFALSE),
414 fQAParticlesList(NULL),
415 fQAFilterBitScan(NULL),
416 fQAIDvsFilterBit(NULL),
418 fRejectEventsWithoutPrimaryVertex(kFALSE),
419 fMinMagneticField(0.001),
420 fCutOnNumberOfTracks(kFALSE),
421 fMinNumberOfTracks(-44),
422 fMaxNumberOfTracks(-44),
423 fCutOnNumberOfGlobalTracks(kFALSE),
424 fMinNumberOfGlobalTracks(-44),
425 fMaxNumberOfGlobalTracks(-44),
426 fCutOnNumberOfV0s(kFALSE),
427 fMinNumberOfV0s(-44),
428 fMaxNumberOfV0s(-44),
429 fCutOnNumberOfCascades(kFALSE),
430 fMinNumberOfCascades(-44),
431 fMaxNumberOfCascades(-44),
432 fCutOnVertexX(kFALSE),
435 fCutOnVertexY(kFALSE),
438 fCutOnVertexZ(kFALSE),
441 fCutOnNContributors(kFALSE),
442 fMinNContributors(-44),
443 fMaxNContributors(-44),
445 fGlobalTrackCutsList(NULL),
446 fGlobalTrackCutsFlagsPro(NULL),
447 fApplyGlobalTrackCuts(kFALSE),
449 fCorrelationFunctionsTESTList(NULL),
450 fCorrelationFunctionsTESTFlagsPro(NULL),
452 fBoostVelocity(0.,0.,0.),
463 fBackgroundTESTList(NULL),
464 fBackgroundTESTFlagsPro(NULL),
466 fHybridApproachList(NULL),
467 fHybridApproachFlagsPro(NULL),
468 fDoHybridApproach(kFALSE),
473 fCalculateMPDF2p(kFALSE),
474 fCalculateMPDF3p(kFALSE),
475 fProjectMPDF2p(kFALSE),
476 fProjectMPDF3p(kFALSE),
478 fOnlineMonitoring(kFALSE),
479 fUpdateOutputFile(kFALSE),
480 fUpdateFrequency(-44),
481 fUpdateWhichOutputFile(NULL),
482 fMaxNumberOfEvents(-44),
484 fDoSomeDebugging(kFALSE),
485 fWaitForSpecifiedEvent(kFALSE),
493 AliDebug(2,
"AliAnalysisTaskMultiparticleFemtoscopy::AliAnalysisTaskMultiparticleFemtoscopy()");
530 Bool_t oldHistAddStatus = TH1::AddDirectoryStatus();
531 TH1::AddDirectory(kFALSE);
555 TH1::AddDirectory(oldHistAddStatus);
575 TString sMethodName =
"void AliAnalysisTaskMultiparticleFemtoscopy::UserExec(Option_t *)";
578 AliMCEvent *aMC = MCEvent();
583 Fatal(sMethodName.Data(),
"One (and only one!) of fProcessBothKineAndReco, fProcessOnlyKine and fProcessOnlyReco must be kTRUE in AddTask* macro!!!!");
589 else{Fatal(sMethodName.Data(),
"fProcessBothKineAndReco is kTRUE, but TBI ...");}
594 else{Fatal(sMethodName.Data(),
"fProcessOnlyKine is kTRUE, but TBI ...");}
600 else{Fatal(sMethodName.Data(),
"fProcessOnlyReco is kTRUE, but TBI ...");}
636 if(aMC&&aAOD){
AOD(aAOD);}
640 if(aMC&&aESD){
ESD(aESD);}
686 TFile *f =
new TFile(
"AnalysisResults.root",
"RECREATE");
699 TString sMethodName =
"void AliAnalysisTaskMultiparticleFemtoscopy::QA(AliVEvent *ave)";
704 AliMCEvent *aMC =
dynamic_cast<AliMCEvent*
>(ave);
728 Int_t nTracks = aAOD->GetNumberOfTracks();
729 for(
Int_t iTrack=0;iTrack<nTracks;iTrack++)
731 AliAODTrack *atrack =
dynamic_cast<AliAODTrack*
>(aAOD->GetTrack(iTrack));
732 Int_t nFilterBits = 14;
733 for(
Int_t fb=0;fb<nFilterBits;fb++)
735 if(atrack->TestFilterBit(1<<fb))
802 TString sMethodName =
"void AliAnalysisTaskMultiparticleFemtoscopy::NormalizeCorrelationFunctions()";
806 cout<<
"=> Normalization option:"<<endl;
810 cout<<
"\"just scale\""<<endl;
815 cout<<
"TBI: not implemented yet"<<endl;
820 cout<<Form(
"And the fatal 'fNormalizationOption' value is... %d. Congratulations!!",
fNormalizationOption)<<endl;
821 Fatal(sMethodName.Data(),
"switch(fNormalizationOption)");
825 cout<<Form(
"=> Histograms will be rebinned: fnMergedBins = %d",
fnMergedBins)<<endl;
829 cout<<
"TBI: not finalized yet"<<endl;
831 for(
Int_t pid1=0;pid1<10;pid1++)
833 for(
Int_t pid2=0;pid2<10;pid2++)
844 for(
Int_t pid1=0;pid1<10;pid1++)
846 for(
Int_t pid2=0;pid2<10;pid2++)
848 for(
Int_t pid3=0;pid3<10;pid3++)
862 for(
Int_t pid1=0;pid1<10;pid1++)
864 for(
Int_t pid2=0;pid2<10;pid2++)
866 for(
Int_t pid3=0;pid3<10;pid3++)
868 for(
Int_t pid4=0;pid4<10;pid4++)
899 AliMCEvent *aMC =
dynamic_cast<AliMCEvent*
>(ave);
922 if(aAOD->GetCentrality())
927 AliAODVertex *avtx = (AliAODVertex*)aAOD->GetPrimaryVertex();
949 TString sMethodName =
"void AliAnalysisTaskMultiparticleFemtoscopy::FillControlHistogramsParticle(AliVEvent *ave)";
952 AliMCEvent *aMC =
dynamic_cast<AliMCEvent*
>(ave);
959 for(
Int_t iTrack=0;iTrack<aMC->GetNumberOfTracks();iTrack++)
967 AliAODMCParticle *amcparticle = (AliAODMCParticle*)aMC->GetTrack(iTrack);
970 if(!amcparticle){Fatal(sMethodName.Data(),
"!amctrack");}
993 for(
Int_t iTrack=0;iTrack<aAOD->GetNumberOfTracks();iTrack++)
1004 AliAODTrack *atrack =
dynamic_cast<AliAODTrack*
>(aAOD->GetTrack(iTrack));
1007 if(!atrack){Fatal(sMethodName.Data(),
"!atrack");}
1009 if(0!=n){Fatal(sMethodName.Data(),
"InsanityChecksForTracks(atrack), n = %d",n);}
1014 Int_t id = atrack->GetID();
1015 AliAODTrack *gtrack =
dynamic_cast<AliAODTrack*
>(
id>=0 ? aAOD->GetTrack(
fGlobalTracksAOD[0]->GetValue(
id)) : aAOD->GetTrack(
fGlobalTracksAOD[0]->GetValue(-(
id+1))));
1018 if(!gtrack){Fatal(sMethodName.Data(),
"!gtrack");}
1020 if(0!=ng){Fatal(sMethodName.Data(),
"InsanityChecksForGlobalTracks(gtrack), ng = %d",ng);}
1048 TString sMethodName =
"void AliAnalysisTaskMultiparticleFemtoscopy::FillControlHistogramsNonIdentifiedParticles(AliAODTrack *gtrack)";
1049 if(!gtrack){Fatal(sMethodName.Data(),
"!gtrack");}
1059 fdEdxVsPtHist->Fill(gtrack->GetTPCmomentum(),gtrack->GetTPCsignal());
1080 TString sMethodName =
"void AliAnalysisTaskMultiparticleFemtoscopy::FillControlHistogramsNonIdentifiedParticles(AliAODMCParticle *amcparticle)";
1081 if(!amcparticle){Fatal(sMethodName.Data(),
"!amcparticle");}
1088 fPtHist->Fill(amcparticle->Pt());
1089 fEtaHist->Fill(amcparticle->Eta());
1090 fPhiHist->Fill(amcparticle->Phi());
1107 TString sMethodName =
"AliAnalysisTaskMultiparticleFemtoscopy::FillControlHistogramsNonIdentifiedParticlesFTSF(AliAODTrack *atrack)";
1108 if(!atrack){Fatal(sMethodName.Data(),
"!atrack");}
1142 TString sMethodName =
"void AliAnalysisTaskMultiparticleFemtoscopy::FillControlHistogramsIdentifiedParticles(AliAODTrack *atrack, AliAODTrack *gtrack)";
1143 if(!atrack){Fatal(sMethodName.Data(),
"!atrack");}
1144 if(!gtrack){Fatal(sMethodName.Data(),
"!gtrack");}
1149 if(atrack->GetID()<0){
return;}
1158 AliAODTrack *agtrack = NULL;
1160 else {agtrack = atrack;}
1161 if(!agtrack){Fatal(sMethodName.Data(),
"!agtrack");}
1166 if(1==
charge){nCharge = -1;}
1167 for(
Int_t ps=0;ps<2;ps++)
1169 if(1==ps){bPrimary = kFALSE;}
1171 if(
Pion(gtrack,nCharge,bPrimary))
1182 if(
Kaon(gtrack,nCharge,bPrimary))
1193 if(
Proton(gtrack,nCharge,bPrimary))
1219 TString sMethodName =
"void AliAnalysisTaskMultiparticleFemtoscopy::FillControlHistogramsIdentifiedParticles(AliAODMCParticle *amcparticle)";
1220 if(!amcparticle){Fatal(sMethodName.Data(),
"!amcparticle");}
1228 if(211==TMath::Abs(amcparticle->GetPdgCode()))
1233 else if(321==TMath::Abs(amcparticle->GetPdgCode()))
1238 else if(2212==TMath::Abs(amcparticle->GetPdgCode()))
1244 Int_t charge = ((amcparticle->GetPdgCode()>0. ? 0 : 1));
1245 Int_t isPhysicalPrimary = ((amcparticle->IsPhysicalPrimary() ? 0 : 1));
1247 fPPIDHist[index][
charge][isPhysicalPrimary][0]->Fill(amcparticle->Px());
1248 fPPIDHist[index][
charge][isPhysicalPrimary][1]->Fill(amcparticle->Py());
1249 fPPIDHist[index][
charge][isPhysicalPrimary][2]->Fill(amcparticle->Pz());
1266 TString sMethodName =
"void AliAnalysisTaskMultiparticleFemtoscopy::EstimateBackground(AliVEvent *ave)";
1272 AliMCEvent *aMC =
dynamic_cast<AliMCEvent*
>(ave);
1278 TString pattern =
".11.13.211.321.2212.";
1283 Int_t nTracks = aMC->GetNumberOfTracks();
1286 TClonesArray ca0(
"AliAODMCParticle");
1287 Int_t ca0Counter = 0;
1288 for(
Int_t iTrack=0;iTrack<nTracks;iTrack++)
1290 AliAODMCParticle *amcparticle =
dynamic_cast<AliAODMCParticle*
>(aMC->GetTrack(iTrack));
1291 if(!amcparticle){Fatal(sMethodName.Data(),
"!amcparticle");}
1293 if(!(pattern.Contains(Form(
".%d.",TMath::Abs(amcparticle->GetPdgCode()))))){
continue;}
1295 ca0[ca0Counter++] = amcparticle;
1298 if(!
fMixedEvents0[0]){Fatal(sMethodName.Data(),
"!fMixedEvents0[0]");}
1302 TClonesArray ca1(
"AliAODMCParticle");
1303 Int_t ca1Counter = 0;
1304 for(
Int_t iTrack=0;iTrack<nTracks;iTrack++)
1306 AliAODMCParticle *amcparticle =
dynamic_cast<AliAODMCParticle*
>(aMC->GetTrack(iTrack));
1307 if(!amcparticle){Fatal(sMethodName.Data(),
"!amcparticle");}
1309 if(!(pattern.Contains(Form(
".%d.",TMath::Abs(amcparticle->GetPdgCode()))))){
continue;}
1311 ca1[ca1Counter++] = amcparticle;
1314 if(!
fMixedEvents0[1]){Fatal(sMethodName.Data(),
"!fMixedEvents0[1]");}
1387 AliAODVertex *avtx = (AliAODVertex*)aAOD->GetPrimaryVertex();
1390 if(nBinsVertexZrange<=0){Fatal(sMethodName.Data(),
"nBinsVertexZrange<=0");}
1393 for(
Int_t b=0;b<nBinsVertexZrange;b++)
1396 if(avtx->GetZ()>=
fMinVertexZ+1.*b*flBinWidthVertexZrange && avtx->GetZ()<
fMinVertexZ+1.*(b+1)*flBinWidthVertexZrange)
1402 if(-44==indexX){Fatal(sMethodName.Data(),
"-44==indexX");}
1416 if(fMaxBufferSize1-1==indexY)
1418 cout<<
"Flushing the buffer for background..."<<endl;
1419 cout<<Form(
"fMaxBufferSize1 = %d",fMaxBufferSize1)<<endl;
1420 cout<<Form(
"fMixedEvents1[indexX][indexY] = fMixedEvents1[%d][%d]",indexX,indexY)<<endl;
1440 if(bufferNo2<=bufferNo1){
continue;}
1443 if(bufferNo2<=bufferNo1 || bufferNo3<=bufferNo1 || bufferNo3<=bufferNo2){
continue;}
1488 TString sMethodName =
"void AliAnalysisTaskMultiparticleFemtoscopy::EstimateBackgroundTEST(AliVEvent *ave)";
1494 AliMCEvent *aMC =
dynamic_cast<AliMCEvent*
>(ave);
1566 TString sMethodName =
"void AliAnalysisTaskMultiparticleFemtoscopy::DoHybridApproach(AliVEvent *ave)";
1572 AliMCEvent *aMC =
dynamic_cast<AliMCEvent*
>(ave);
1653 TString sMethodName =
"void AliAnalysisTaskMultiparticleFemtoscopy::DoMPDF(AliVEvent *ave)";
1659 AliMCEvent *aMC =
dynamic_cast<AliMCEvent*
>(ave);
1691 AliMCEvent *aMC =
dynamic_cast<AliMCEvent*
>(ave);
1708 cout<<Form(
"aAOD->GetRunNumber() = %d",aAOD->GetRunNumber())<<endl;
1709 cout<<Form(
"aAOD->GetBunchCrossNumber() = %d",aAOD->GetBunchCrossNumber())<<endl;
1710 cout<<Form(
"aAOD->GetOrbitNumber() = %d",aAOD->GetOrbitNumber())<<endl;
1711 cout<<Form(
"aAOD->GetPeriodNumber() = %d",aAOD->GetPeriodNumber())<<endl;
1712 if(!
SpecifiedEvent(aAOD->GetRunNumber(),aAOD->GetBunchCrossNumber(),aAOD->GetOrbitNumber(),aAOD->GetPeriodNumber())){
return;}
1724 Int_t currentEventNumber = -44;
1741 return currentEventNumber;
1760 cout<<Form(
"nEvts: %d",currentEventNo)<<endl;
1793 TString sMethodName =
"void AliAnalysisTaskMultiparticleFemtoscopy::InsanityChecksUserCreateOutputObjects()";
1797 if(0!=returnValueICFGTC)
1799 cout<<Form(
"\n\nSomething is fundamentally wrong with global track cuts!!!!")<<endl;
1800 cout<<Form(
"InsanityChecksForGlobalTrackCuts() returns %d, check its implementation for an explanation of return values.\n\n",returnValueICFGTC)<<endl;
1801 Fatal(sMethodName.Data(),
"if(0!=returnValueICFGTC)");
1807 cout<<Form(
"\n\nCalculation of 4-p stuff is not validated yet!!!! \n\n")<<endl;
1808 Fatal(sMethodName.Data(),
"fFill4pCorrelationFunctions || fEstimate4pBackground");
1814 cout<<Form(
"\n\nThis option for calculating background is not supported yet!!!! \n\n")<<endl;
1815 Fatal(sMethodName.Data(),
"!(fBackgroundOption == 0 || fBackgroundOption == 1)");
1819 cout<<Form(
"\n\nfMaxBufferSize1 can be at maximum 50 !!!! \n\n")<<endl;
1820 Fatal(sMethodName.Data(),
"fMaxBufferSize1>=50");
1836 TString sMethodName =
"void AliAnalysisTaskMultiparticleFemtoscopy::InsanityChecksUserExec()";
1840 if(
fOnlineMonitoring && !
fFillControlHistogramsEvent){Fatal(sMethodName.Data(),
"fOnlineMonitoring && !fFillControlHistogramsEvent.\n\nAt the moment, fOnlineMonitoring can be used only if fFillControlHistogramsEvent is enabled.");}
1850 for(
Int_t pid=0;pid<5;pid++)
1852 for(
Int_t pa=0;pa<2;pa++)
1854 for(
Int_t ps=0;ps<2;ps++)
1856 if(!
fPIDCA[pid][pa][ps]) {Fatal(sMethodName.Data(),
"!fPIDCA[pid][pa][ps]");}
1857 if(0 !=
fPIDCA[pid][pa][ps]->GetEntriesFast()){Fatal(sMethodName.Data(),
"0 != fPIDCA[pid][pa][ps]->GetEntriesFast()"); }
1861 for(
Int_t pid=0;pid<1;pid++)
1863 if(!
fPIDV0sCA[pid]){Fatal(sMethodName.Data(),
"!fPIDV0sCA[pid]");}
1864 if(0 !=
fPIDV0sCA[pid]->GetEntriesFast()){Fatal(sMethodName.Data(),
"0 != fPIDV0sCA[pid]->GetEntriesFast()");}
1882 if(!
fGlobalTracksAOD[0]){Fatal(sMethodName.Data(),
"!fGlobalTracksAOD[0]");}
1883 if(0 !=
fGlobalTracksAOD[0]->GetSize()){Fatal(sMethodName.Data(),
"0 != fGlobalTracksAOD[0]->GetSize()");}
1994 Bool_t bFillCorrelationFunctionsTEST = kFALSE;
1995 for(
Int_t t=0;t<10;t++)
2002 Bool_t bFillBackgroundTEST = kFALSE;
2003 for(
Int_t t=0;t<10;t++)
2033 AliMCEvent *aMC =
dynamic_cast<AliMCEvent*
>(ave);
2048 TClonesArray *caV0s = aAOD->GetV0s();
2050 AliAODv0 *aAODv0 = NULL;
2051 Int_t nProngs = -44;
2052 while(caV0s->At(index))
2054 aAODv0 = (AliAODv0*) caV0s->At(index++);
2066 nProngs = aAODv0->GetNProngs();
2077 fPtV0Hist->Fill(pow(aAODv0->Pt2V0(),0.5));
2079 fPAHist->Fill(aAODv0->Alpha(),aAODv0->PtArmV0());
2094 cout<<Form(
"fUniqueIDHistEBE->FindFirstBinAbove(1.44) %d:",(
Int_t)
fUniqueIDHistEBE->FindFirstBinAbove(1.44,1))<<endl;
2131 for(
Int_t pid=0;pid<5;pid++)
2133 for(
Int_t pa=0;pa<2;pa++)
2135 for(
Int_t ps=0;ps<2;ps++)
2142 for(
Int_t pid=0;pid<1;pid++)
2182 TString sMethodName =
"Bool_t AliAnalysisTaskMultiparticleFemtoscopy::Pion(AliAODTrack *gtrack, Int_t charge, Bool_t bPrimary)";
2183 if(!(1 == charge || -1 == charge)){Fatal(sMethodName.Data(),
"!(1 == charge || -1 == charge)");}
2184 if(!gtrack){Fatal(sMethodName.Data(),
"!gtrack");}
2187 if(charge != (
Int_t)gtrack->Charge())
return kFALSE;
2192 else if(!bPrimary && gtrack->GetType() != AliAODTrack::kFromDecayVtx)
2207 if(gtrack->GetTPCmomentum() < 0.75)
2210 if(!statusTPC)
return kFALSE;
2218 else if(gtrack->GetTPCmomentum() >= 0.75 )
2227 if(!
fMC){Fatal(sMethodName.Data(),
"!fMC");}
2228 AliAODMCParticle *mcParticle =
dynamic_cast<AliAODMCParticle*
>(
fMC->GetTrack(TMath::Abs(gtrack->GetLabel())));
2229 if(!mcParticle){cout<<
"WARNING: mcParticle is NULL in Pion(...)! gtrack = "<<gtrack<<endl;
return kFALSE; }
2230 if(charge < 0 && mcParticle->GetPdgCode() == -211)
return kTRUE;
2231 else if(charge > 0 && mcParticle->GetPdgCode() == 211)
return kTRUE;
2253 TString sMethodName =
"Bool_t AliAnalysisTaskMultiparticleFemtoscopy::Kaon(AliAODTrack *gtrack, Int_t charge, Bool_t bPrimary)";
2254 if(!(1 == charge || -1 == charge)){Fatal(sMethodName.Data(),
"!(1 == charge || -1 == charge)");}
2255 if(!gtrack){Fatal(sMethodName.Data(),
"!gtrack");}
2258 if(charge != (
Int_t)gtrack->Charge())
return kFALSE;
2263 else if(!bPrimary && gtrack->GetType() != AliAODTrack::kFromDecayVtx)
2278 if(gtrack->GetTPCmomentum() < 0.75)
2281 if(!statusTPC)
return kFALSE;
2289 else if(gtrack->GetTPCmomentum() >= 0.75 )
2298 if(!
fMC){Fatal(sMethodName.Data(),
"!fMC");}
2299 AliAODMCParticle *mcParticle =
dynamic_cast<AliAODMCParticle*
>(
fMC->GetTrack(TMath::Abs(gtrack->GetLabel())));
2300 if(!mcParticle){cout<<
"WARNING: mcParticle is NULL in Kaon(...)! gtrack = "<<gtrack<<endl;
return kFALSE; }
2301 if(charge < 0 && mcParticle->GetPdgCode() == -321)
return kTRUE;
2302 else if(charge > 0 && mcParticle->GetPdgCode() == 321)
return kTRUE;
2323 TString sMethodName =
"Bool_t AliAnalysisTaskMultiparticleFemtoscopy::Proton(AliAODTrack *gtrack, Int_t charge, Bool_t bPrimary)";
2324 if(!(1 == charge || -1 == charge)){Fatal(sMethodName.Data(),
"!(1 == charge || -1 == charge)");}
2325 if(!gtrack){Fatal(sMethodName.Data(),
"!gtrack");}
2328 if(charge != (
Int_t)gtrack->Charge())
return kFALSE;
2333 else if(!bPrimary && gtrack->GetType() != AliAODTrack::kFromDecayVtx)
2348 if(gtrack->GetTPCmomentum() < 0.75)
2351 if(!statusTPC)
return kFALSE;
2358 else if(gtrack->GetTPCmomentum() >= 0.75 )
2367 if(!
fMC){Fatal(sMethodName.Data(),
"!fMC");}
2368 AliAODMCParticle *mcParticle =
dynamic_cast<AliAODMCParticle*
>(
fMC->GetTrack(TMath::Abs(gtrack->GetLabel())));
2369 if(!mcParticle){cout<<
"WARNING: mcParticle is NULL in Proton(...)! gtrack = "<<gtrack<<endl;
return kFALSE; }
2370 if(charge < 0 && mcParticle->GetPdgCode() == -2212)
return kTRUE;
2371 else if(charge > 0 && mcParticle->GetPdgCode() == 2212)
return kTRUE;
2385 for(
Int_t index=0;index<10;index++)
2398 for(
Int_t xyz=0;xyz<3;xyz++)
2403 for(
Int_t pid=0;pid<5;pid++)
2405 for(
Int_t pa=0;pa<2;pa++)
2407 for(
Int_t ps=0;ps<2;ps++)
2411 for(
Int_t xyz=0;xyz<3;xyz++)
2422 for(
Int_t pf=0;pf<5;pf++)
2428 for(
Int_t pf=0;pf<5;pf++)
2430 for(
Int_t pid=0;pid<5;pid++)
2448 for(
Int_t pid=0;pid<5;pid++)
2450 for(
Int_t pa=0;pa<2;pa++)
2452 for(
Int_t ps=0;ps<2;ps++)
2454 fPIDCA[pid][pa][ps] = NULL;
2460 for(
Int_t pid=0;pid<1;pid++)
2479 for(
Int_t cfs=0;cfs<3;cfs++)
2485 for(
Int_t pid1=0;pid1<10;pid1++)
2487 for(
Int_t pid2=0;pid2<10;pid2++)
2494 for(
Int_t pid1=0;pid1<10;pid1++)
2496 for(
Int_t pid2=0;pid2<10;pid2++)
2498 for(
Int_t pid3=0;pid3<10;pid3++)
2506 for(
Int_t pid1=0;pid1<10;pid1++)
2508 for(
Int_t pid2=0;pid2<10;pid2++)
2510 for(
Int_t pid3=0;pid3<10;pid3++)
2512 for(
Int_t pid4=0;pid4<10;pid4++)
2528 for(
Int_t bs=0;bs<3;bs++)
2533 for(
Int_t pid1=0;pid1<10;pid1++)
2535 for(
Int_t pid2=0;pid2<10;pid2++)
2541 for(
Int_t pid1=0;pid1<10;pid1++)
2543 for(
Int_t pid2=0;pid2<10;pid2++)
2545 for(
Int_t pid3=0;pid3<10;pid3++)
2552 for(
Int_t me=0;me<3;me++)
2557 for(
Int_t vzr=0;vzr<10;vzr++)
2574 for(
Int_t am=0;am<2;am++)
2576 for(
Int_t e=0;e<10;e++)
2578 for(
Int_t p=0;p<10000;p++)
2586 for(
Int_t e=0;e<10;e++)
2599 for(
Int_t ba=0;ba<2;ba++)
2601 for(
Int_t di=0;di<10;di++)
2603 for(
Int_t ci=0;ci<10;ci++)
2660 const Int_t nTestsMax = 10;
2662 for(
Int_t t=0;t<nTestsMax;t++)
2668 for(
Int_t t=0;t<nTestsMax;t++)
2670 for(
Int_t q=0;q<2;q++)
2672 for(
Int_t tt=0;tt<7;tt++)
2674 for(
Int_t d=0;d<10;d++)
2682 for(
Int_t t=0;t<nTestsMax;t++)
2684 for(
Int_t q=0;q<2;q++)
2686 for(
Int_t tt=0;tt<4;tt++)
2688 for(
Int_t d=0;d<10;d++)
2696 for(
Int_t t=0;t<2;t++)
2710 const Int_t nTestsMax = 10;
2712 for(
Int_t t=0;t<nTestsMax;t++)
2718 for(
Int_t t=0;t<nTestsMax;t++)
2720 for(
Int_t q=0;q<2;q++)
2722 for(
Int_t tt=0;tt<7;tt++)
2724 for(
Int_t d=0;d<10;d++)
2732 for(
Int_t me=0;me<3;me++)
2738 for(
Int_t t=0;t<2;t++)
2751 for(
Int_t t=0;t<5;t++)
2756 for(
Int_t me=0;me<3;me++)
2778 for(
Int_t d=0;d<9;d++)
2785 for(
Int_t d=0;d<6;d++)
2793 for(
Int_t d=0;d<3;d++)
2813 const Int_t nTests = 10;
2822 for(
Int_t t=0;t<nTests;t++)
2829 const Int_t nCumulants = 4;
2830 const Int_t n3pCumulantTerms = 7;
2831 const Int_t nQs = 2;
2832 const Int_t n2pCumulantTerms = 3;
2833 TString s2pCumulantTerms[n2pCumulantTerms] = {
"#LTX_{1}#GT",
"#LTX_{2}#GT",
"#LTX_{1}X_{2}#GT"};
2834 TString s3pCumulantTerms[n3pCumulantTerms] = {
"#LTX_{1}#GT",
"#LTX_{2}#GT",
"#LTX_{3}#GT",
"#LTX_{1}X_{2}#GT",
"#LTX_{1}X_{3}#GT",
"#LTX_{2}X_{3}#GT",
"#LTX_{1}X_{2}X_{3}#GT"};
2835 TString sCumulants[nCumulants] = {
"#LTX_{1}X_{2}#GT_{c}",
"#LTX_{1}X_{3}#GT_{c}",
"#LTX_{2}X_{3}#GT_{c}",
"#LTX_{1}X_{2}X_{3}#GT_{c}"};
2836 TString sXYZ[3] = {
"x",
"y",
"z"};
2837 TString sQs[nQs] = {
"Q_{2}",
"Q_{3}"};
2838 for(
Int_t t=0;t<nTests;t++)
2844 for(
Int_t ct=0;ct<n2pCumulantTerms;ct++)
2846 for(
Int_t xyz=0;xyz<3;xyz++)
2860 for(
Int_t xyz=0;xyz<3;xyz++)
2873 for(
Int_t ct=0;ct<n3pCumulantTerms;ct++)
2875 for(
Int_t xyz=0;xyz<3;xyz++)
2889 for(
Int_t ct=0;ct<nCumulants;ct++)
2891 for(
Int_t xyz=0;xyz<3;xyz++)
2932 fEab_TEST6[0]->GetXaxis()->SetTitle(
"Q_{2}");
2933 fEab_TEST6[0]->GetYaxis()->SetTitle(
"dN/dE_{a}^{b}");
2940 fEab_TEST6[1]->GetXaxis()->SetTitle(
"Q_{2}");
2941 fEab_TEST6[1]->GetYaxis()->SetTitle(
"dN/dE_{a}^{b}");
2958 const Int_t nTests = 10;
2959 fBackgroundTESTFlagsPro =
new TProfile(
"fBackgroundTESTFlagsPro",
"Flags and settings for test background",nTests,0,nTests);
2967 for(
Int_t t=0;t<nTests;t++)
2974 const Int_t nCumulants = 4;
2975 const Int_t n3pCumulantTerms = 7;
2976 const Int_t nQs = 2;
2977 const Int_t n2pCumulantTerms = 3;
2978 TString s2pCumulantTerms[n2pCumulantTerms] = {
"#LTX_{1}#GT",
"#LTX_{2}#GT",
"#LTX_{1}X_{2}#GT"};
2979 TString s3pCumulantTerms[n3pCumulantTerms] = {
"#LTX_{1}#GT",
"#LTX_{2}#GT",
"#LTX_{3}#GT",
"#LTX_{1}X_{2}#GT",
"#LTX_{1}X_{3}#GT",
"#LTX_{2}X_{3}#GT",
"#LTX_{1}X_{2}X_{3}#GT"};
2980 TString sCumulants[nCumulants] = {
"#LTX_{1}X_{2}#GT_{c}",
"#LTX_{1}X_{3}#GT_{c}",
"#LTX_{2}X_{3}#GT_{c}",
"#LTX_{1}X_{2}X_{3}#GT_{c}"};
2981 TString sXYZ[3] = {
"x",
"y",
"z"};
2982 TString sQs[nQs] = {
"Q_{2}",
"Q_{3}"};
2983 for(
Int_t t=0;t<nTests;t++)
2989 for(
Int_t ct=0;ct<n2pCumulantTerms;ct++)
2991 for(
Int_t xyz=0;xyz<3;xyz++)
2999 fBackgroundTEST[t][0][ct][xyz]->GetYaxis()->SetTitle(Form(
"%s_{%s}",s2pCumulantTerms[ct].
Data(),sXYZ[xyz].
Data()));
3005 for(
Int_t xyz=0;xyz<3;xyz++)
3018 for(
Int_t ct=0;ct<n3pCumulantTerms;ct++)
3020 for(
Int_t xyz=0;xyz<3;xyz++)
3028 fBackgroundTEST[t][1][ct][xyz]->GetYaxis()->SetTitle(Form(
"%s_{%s}",s3pCumulantTerms[ct].
Data(),sXYZ[xyz].
Data()));
3034 for(
Int_t ct=0;ct<nCumulants;ct++)
3036 for(
Int_t xyz=0;xyz<3;xyz++)
3054 for(
Int_t me=0;me<3;me++)
3091 fHybridApproachFlagsPro =
new TProfile(
"fHybridApproachFlagsPro",
"Flags and settings for 'hybrid approach'",1,0,1);
3104 TString sTerm[5] = {
"N^{A}_{3}(p_{1},p_{2},p_{3})",
"N^{A}_{2}(p_{1},p_{2})N^{B}_{1}(p_{3})",
"N^{A}_{2}(p_{2},p_{3})N^{B}_{1}(p_{1})",
"N^{A}_{2}(p_{3},p_{1})N^{B}_{1}(p_{2})",
"N^{A}_{1}(p_{1})N^{B}_{1}(p_{2})N^{C}_{1}(p_{3})"};
3105 for(
Int_t t=0;t<5;t++)
3119 for(
Int_t me=0;me<3;me++)
3141 fMPDFFlagsPro =
new TProfile(
"fMPDFFlagsPro",
"Flags and settings for m.p.d.f.",5,0,5);
3197 fDistMPDF[0] =
new TH1D(
"fDistMPDF[0]",
"distribution of bin content of the 6D ratio f/f_xf_y ",10000,0.,1000.);
3238 TString sMethodName =
"void AliAnalysisTaskMultiparticleFemtoscopy::BookAndNestAllLists()";
3239 if(!
fHistList){Fatal(sMethodName.Data(),
"fHistList is NULL");}
3279 for(
Int_t cfs=0;cfs<3;cfs++)
3293 for(
Int_t bs=0;bs<3;bs++)
3338 const Int_t nTests = 10;
3339 for(
Int_t t=0;t<nTests;t++)
3353 for(
Int_t t=0;t<nTests;t++)
3423 TString sParticleLabel[5] = {
"e",
"#mu",
"#pi",
"K",
"p"};
3424 Double_t dNominalMass[5] = {TDatabasePDG::Instance()->GetParticle(11)->Mass(),TDatabasePDG::Instance()->GetParticle(13)->Mass(),TDatabasePDG::Instance()->GetParticle(211)->Mass(),TDatabasePDG::Instance()->GetParticle(321)->Mass(),TDatabasePDG::Instance()->GetParticle(2212)->Mass()};
3441 fGetNumberOfTracksHist =
new TH1I(
"fGetNumberOfTracksHist",
"aAOD->GetNumberOfTracks() (Remark: Not all of tracks are unique.)",10000,0,10000);
3449 fGetNumberOfV0sHist =
new TH1I(
"fGetNumberOfV0sHist",
"aAOD->GetNumberOfV0s() (Remark: Some V0s share the daughter.)",10000,0,10000);
3466 TString sxyz[3] = {
"X",
"Y",
"Z"};
3467 for(
Int_t xyz=0;xyz<3;xyz++)
3469 fVertexXYZ[xyz] =
new TH1F(Form(
"fVertex%s",sxyz[xyz].
Data()),Form(
"avtz->Get%s()",sxyz[xyz].
Data()),100000,-50.,50);
3477 fGetChi2perNDFHist =
new TH1F(
"fGetChi2perNDFHist",
"avtx->GetChi2perNDF()",5000,0.,50.);
3526 fdEdxVsPtHist =
new TH2F(
"fdEdxVsPtHist",
"atrack->GetTPCmomentum(),atrack->GetTPCsignal()",1000,0.,20.,1000,-500.,500.);
3529 fPtHist =
new TH1F(
"fPtHist",
"atrack->Pt()",1000,0.,20.);
3531 fPtHist->SetFillColor(kBlue-10);
3534 fEtaHist =
new TH1F(
"fEtaHist",
"atrack->Eta()",200,-2.,2.);
3539 fPhiHist =
new TH1F(
"fPhiHist",
"atrack->Phi()",360,0.,TMath::TwoPi());
3545 fMassHist =
new TH1F(
"fMassHist",
"atrack->M()",10000,0.,10.);
3549 for(
Int_t nm=0;nm<5;nm++)
3551 fMassHist->GetXaxis()->SetBinLabel(
fMassHist->FindBin(dNominalMass[nm]),Form(
"m_{%s}",sParticleLabel[nm].
Data()));
3554 fGetFilterMap =
new TH1I(
"fGetFilterMap",
"atrack->fGetFilterMap()",10000,0,10000);
3559 fGetPdgCode =
new TH1I(
"fGetPdgCode",
"atrack->fGetPdgCode()",20000,-10000,10000);
3605 fdEdxVsPtFTSFHist =
new TH2F(
"fdEdxVsPtFTSFHist",Form(
"atrack->GetTPCmomentum(),atrack->GetTPCsignal(), fb = %d",
fFilterBitFTSF),1000,0.,20.,1000,-500.,500.);
3628 for(
Int_t nm=0;nm<5;nm++)
3663 if(fUseDefaultInclusiveSigmaCuts)
3669 const Int_t nPidFunctions = 5;
3670 TString sPidFunctions[nPidFunctions] = {
"Electron(...)",
"Muon(...)",
"Pion(...)",
"Kaon(...)",
"Proton(...)"};
3671 const Int_t nParticleSpecies = 5;
3672 TString sParticleSpecies[nParticleSpecies] = {
"e",
"#mu",
"#pi",
"K",
"p"};
3673 fInclusiveSigmaCutsPro =
new TProfile(
"fInclusiveSigmaCutsPro",
"Inclusive sigma cuts",nPidFunctions,0.,nPidFunctions);
3675 for(
Int_t pidFunction=0;pidFunction<5;pidFunction++)
3690 if(fUseDefaultExclusiveSigmaCuts)
3702 fExclusiveSigmaCutsPro =
new TProfile2D(
"fExclusiveSigmaCutsPro",
"Exclusive sigma cuts",nPidFunctions,0.,nPidFunctions,nParticleSpecies,0.,nParticleSpecies);
3713 for(
Int_t pidFunction=0;pidFunction<nPidFunctions;pidFunction++)
3716 for(
Int_t particleSpecies=0;particleSpecies<nParticleSpecies;particleSpecies++)
3718 if(0==pidFunction){
fExclusiveSigmaCutsPro->GetYaxis()->SetBinLabel(particleSpecies+1,sParticleSpecies[particleSpecies].
Data());}
3724 for(
Int_t pid=0;pid<5;pid++)
3726 for(
Int_t pa=0;pa<2;pa++)
3728 for(
Int_t ps=0;ps<2;ps++)
3730 if(fFillControlHistogramsWithGlobalTrackInfo)
3732 fMassPIDHist[pid][pa][ps] =
new TH1F(Form(
"fMassPIDHist[%d][%d][%d]",pid,pa,ps),Form(
"fMassPIDHist[%d][%d][%d] (%s) ('gtrack' parameters)",pid,pa,ps,sParticleLabel[pid].
Data()),10000,0.,10.);
3736 fMassPIDHist[pid][pa][ps] =
new TH1F(Form(
"fMassPIDHist[%d][%d][%d]",pid,pa,ps),Form(
"fMassPIDHist[%d][%d][%d] (%s) ('atrack' parameters)",pid,pa,ps,sParticleLabel[pid].
Data()),10000,0.,10.);
3738 fMassPIDHist[pid][pa][ps]->GetXaxis()->SetTitle(
"m [GeV/c^{2}]");
3739 for(
Int_t nm=0;nm<5;nm++)
3741 fMassPIDHist[pid][pa][ps]->GetXaxis()->SetBinLabel(
fMassPIDHist[pid][pa][ps]->FindBin(dNominalMass[nm]),Form(
"m_{%s}",sParticleLabel[nm].
Data()));
3745 if(fFillControlHistogramsWithGlobalTrackInfo)
3747 fPtPIDHist[pid][pa][ps] =
new TH1F(Form(
"fPtPIDHist[%d][%d][%d]",pid,pa,ps),Form(
"fPtPIDHist[%d][%d][%d] ('gtrack' parameters)",pid,pa,ps),1000,0.,10.);
3748 fPPIDHist[pid][pa][ps][0] =
new TH1F(Form(
"fPPIDHist[%d][%d][%d][0]",pid,pa,ps),Form(
"fPPIDHist[%d][%d][%d][0] ('gtrack' parameters)",pid,pa,ps),2000,-10.,10.);
3749 fPPIDHist[pid][pa][ps][1] =
new TH1F(Form(
"fPPIDHist[%d][%d][%d][1]",pid,pa,ps),Form(
"fPPIDHist[%d][%d][%d][1] ('gtrack' parameters)",pid,pa,ps),2000,-10.,10.);
3750 fPPIDHist[pid][pa][ps][2] =
new TH1F(Form(
"fPPIDHist[%d][%d][%d][2]",pid,pa,ps),Form(
"fPPIDHist[%d][%d][%d][2] ('gtrack' parameters)",pid,pa,ps),2000,-10.,10.);
3754 fPtPIDHist[pid][pa][ps] =
new TH1F(Form(
"fPtPIDHist[%d][%d][%d]",pid,pa,ps),Form(
"fPtPIDHist[%d][%d][%d] ('atrack' parameters)",pid,pa,ps),1000,0.,10.);
3755 fPPIDHist[pid][pa][ps][0] =
new TH1F(Form(
"fPPIDHist[%d][%d][%d][0]",pid,pa,ps),Form(
"fPPIDHist[%d][%d][%d][0] ('atrack' parameters)",pid,pa,ps),2000,-10.,10.);
3756 fPPIDHist[pid][pa][ps][1] =
new TH1F(Form(
"fPPIDHist[%d][%d][%d][1]",pid,pa,ps),Form(
"fPPIDHist[%d][%d][%d][1] ('atrack' parameters)",pid,pa,ps),2000,-10.,10.);
3757 fPPIDHist[pid][pa][ps][2] =
new TH1F(Form(
"fPPIDHist[%d][%d][%d][2]",pid,pa,ps),Form(
"fPPIDHist[%d][%d][%d][2] ('atrack' parameters)",pid,pa,ps),2000,-10.,10.);
3759 fPtPIDHist[pid][pa][ps]->GetXaxis()->SetTitle(
"p_{T} [GeV/c]");
3760 fPtPIDHist[pid][pa][ps]->SetFillColor(kBlue-10);
3762 fPPIDHist[pid][pa][ps][0]->GetXaxis()->SetTitle(
"p_{x} [GeV/c]");
3763 fPPIDHist[pid][pa][ps][0]->SetFillColor(kBlue-10);
3765 fPPIDHist[pid][pa][ps][1]->GetXaxis()->SetTitle(
"p_{y} [GeV/c]");
3766 fPPIDHist[pid][pa][ps][1]->SetFillColor(kBlue-10);
3768 fPPIDHist[pid][pa][ps][2]->GetXaxis()->SetTitle(
"p_{z} [GeV/c]");
3769 fPPIDHist[pid][pa][ps][2]->SetFillColor(kBlue-10);
3772 if(fFillControlHistogramsWithGlobalTrackInfo)
3774 fEtaPIDHist[pid][pa][ps] =
new TH1F(Form(
"fEtaPIDHist[%d][%d][%d]",pid,pa,ps),Form(
"fEtaPIDHist[%d][%d][%d] ('gtrack' parameters)",pid,pa,ps),200000,-2.,2.);
3778 fEtaPIDHist[pid][pa][ps] =
new TH1F(Form(
"fEtaPIDHist[%d][%d][%d]",pid,pa,ps),Form(
"fEtaPIDHist[%d][%d][%d] ('atrack' parameters)",pid,pa,ps),200000,-2.,2.);
3782 if(fFillControlHistogramsWithGlobalTrackInfo)
3784 fPhiPIDHist[pid][pa][ps] =
new TH1F(Form(
"fPhiPIDHist[%d][%d][%d]",pid,pa,ps),Form(
"fPhiPIDHist[%d][%d][%d] ('gtrack' parameters)",pid,pa,ps),360,0.,TMath::TwoPi());
3788 fPhiPIDHist[pid][pa][ps] =
new TH1F(Form(
"fPhiPIDHist[%d][%d][%d]",pid,pa,ps),Form(
"fPhiPIDHist[%d][%d][%d] ('atrack' parameters)",pid,pa,ps),360,0.,TMath::TwoPi());
3790 fPhiPIDHist[pid][pa][ps]->GetXaxis()->SetTitle(
"#phi");
3817 fMassK0ShortHist =
new TH1F(
"fMassK0ShortHist",
"aAODv0->MassK0Short()",1000000,0.,100.);
3820 Double_t dMassK0Short = TDatabasePDG::Instance()->GetParticle(310)->Mass();
3825 fMassLambdaHist =
new TH1F(
"fMassLambdaHist",
"aAODv0->MassLambda()",1000000,0.,100.);
3828 Double_t dMassLambda = TDatabasePDG::Instance()->GetParticle(3122)->Mass();
3833 fMassAntiLambdaHist =
new TH1F(
"fMassAntiLambdaHist",
"aAODv0->MassAntiLambda()",1000000,0.,100.);
3836 Double_t dMassAntiLambda = TDatabasePDG::Instance()->GetParticle(-3122)->Mass();
3841 fOpenAngleV0Hist =
new TH1F(
"fOpenAngleV0Hist",
"aAODv0->fOpenAngleV0()",10000,-0.044,TMath::Pi()+0.044);
3846 fRadiusV0Hist =
new TH1F(
"fRadiusV0Hist",
"aAODv0->fRadiusV0()",10000,0.,1000.);
3851 fDcaV0ToPrimVertexHist =
new TH1F(
"fDcaV0ToPrimVertexHist",
"aAODv0->fDcaV0ToPrimVertex()",10000,0.,1000.);
3856 fMomV0XHist =
new TH1F(
"fMomV0XHist",
"aAODv0->fMomV0X() = px(+) + px(-)",10000,-1000.,1000.);
3861 fMomV0YHist =
new TH1F(
"fMomV0YHist",
"aAODv0->fMomV0Y() = py(+) + py(-)",10000,-1000.,1000.);
3866 fMomV0ZHist =
new TH1F(
"fMomV0ZHist",
"aAODv0->fMomV0Z() = pz(+) + pz(-)",10000,-1000.,1000.);
3871 fPtV0Hist =
new TH1F(
"fPtV0Hist",
"pow(aAODv0->fPt2V0(),0.5)",10000,0.,100.);
3876 fPseudoRapV0Hist =
new TH1F(
"fPseudoRapV0Hist",
"aAODv0->PseudoRapV0()",1000,-10.,10.);
3881 fPAHist =
new TH2F(
"fPAHist",
"TBI",100,-2.,2.,100,0.,1.);
3883 fPAHist->GetXaxis()->SetTitle(
"#alpha");
3884 fPAHist->GetYaxis()->SetTitle(
"p_{T}");
3900 fEBEObjectsFlagsPro =
new TProfile(
"fEBEObjectsFlagsPro",
"Flags and settings for event-by-event histograms",1,0,1);
3920 for(
Int_t pid=0;pid<5;pid++)
3922 for(
Int_t pa=0;pa<2;pa++)
3924 for(
Int_t ps=0;ps<2;ps++)
3926 fPIDCA[pid][pa][ps] =
new TClonesArray(
"AliAODTrack",10000);
3932 for(
Int_t pid=0;pid<1;pid++)
3934 fPIDV0sCA[pid] =
new TClonesArray(
"AliAODv0",10000);
3952 fCorrelationFunctionsFlagsPro =
new TProfile(
"fCorrelationFunctionsFlagsPro",
"Flags and settings for correlation functions histograms",8,0,8);
4005 const Int_t nParticleSpecies = 5;
4006 TString sParticles[2*nParticleSpecies] = {
"e^{+}",
"#mu^{+}",
"#pi^{+}",
"K^{+}",
"p^{+}",
"e^{-}",
"#mu^{-}",
"#pi^{-}",
"K^{-}",
"p^{-}"};
4011 for(
Int_t pid1=0;pid1<2*nParticleSpecies;pid1++)
4013 for(
Int_t pid2=pid1;pid2<2*nParticleSpecies;pid2++)
4016 fCorrelationFunctions[pid1][pid2] =
new TH1F(Form(
"fCorrelationFunctions[%d][%d]",pid1,pid2),Form(
"fCorrelationFunctions[%d][%d] = (%s,%s)",pid1,pid2,sParticles[pid1].
Data(),sParticles[pid2].
Data()),
fnQ2bins,
fnQ2min,
fnQ2max);
4042 for(
Int_t pid1=0;pid1<2*nParticleSpecies;pid1++)
4044 for(
Int_t pid2=0;pid2<2*nParticleSpecies;pid2++)
4046 for(
Int_t pid3=0;pid3<2*nParticleSpecies;pid3++)
4049 f3pCorrelationFunctions[pid1][pid2][pid3] =
new TH1F(Form(
"f3pCorrelationFunctions[%d][%d][%d]",pid1,pid2,pid3),Form(
"f3pCorrelationFunctions[%d][%d][%d] = (%s,%s,%s)",pid1,pid2,pid3,sParticles[pid1].
Data(),sParticles[pid2].
Data(),sParticles[pid3].
Data()),
fnQ3bins,
fnQ3min,
fnQ3max);
4063 for(
Int_t pid1=0;pid1<2*nParticleSpecies;pid1++)
4065 for(
Int_t pid2=0;pid2<2*nParticleSpecies;pid2++)
4067 for(
Int_t pid3=0;pid3<2*nParticleSpecies;pid3++)
4069 for(
Int_t pid4=0;pid4<2*nParticleSpecies;pid4++)
4072 f4pCorrelationFunctions[pid1][pid2][pid3][pid4] =
new TH1F(Form(
"f4pCorrelationFunctions[%d][%d][%d][%d]",pid1,pid2,pid3,pid4),Form(
"f4pCorrelationFunctions[%d][%d][%d][%d] = (%s,%s,%s,%s)",pid1,pid2,pid3,pid4,sParticles[pid1].
Data(),sParticles[pid2].
Data(),sParticles[pid3].
Data(),sParticles[pid4].
Data()),
fnQ4bins,
fnQ4min,
fnQ4max);
4099 fBackgroundFlagsPro =
new TProfile(
"fBackgroundFlagsPro",
"Flags and settings for background histograms",4,0,4);
4113 f2pBackgroundFlagsPro =
new TProfile(
"f2pBackgroundFlagsPro",
"Flags and settings for 2p background histograms",1,0,1);
4124 f3pBackgroundFlagsPro =
new TProfile(
"f3pBackgroundFlagsPro",
"Flags and settings for 3p background histograms",1,0,1);
4135 f4pBackgroundFlagsPro =
new TProfile(
"f4pBackgroundFlagsPro",
"Flags and settings for 4p background histograms",1,0,1);
4148 const Int_t nParticleSpecies = 5;
4149 TString sParticles[2*nParticleSpecies] = {
"e^{+}",
"#mu^{+}",
"#pi^{+}",
"K^{+}",
"p^{+}",
"e^{-}",
"#mu^{-}",
"#pi^{-}",
"K^{-}",
"p^{-}"};
4156 for(
Int_t pid1=0;pid1<2*nParticleSpecies;pid1++)
4158 for(
Int_t pid2=pid1;pid2<2*nParticleSpecies;pid2++)
4161 f2pBackground[pid1][pid2] =
new TH1F(Form(
"f2pBackground[%d][%d]",pid1,pid2),Form(
"f2pBackground[%d][%d] = (%s,%s)",pid1,pid2,sParticles[pid1].
Data(),sParticles[pid2].
Data()),
fnQ2bins,
fnQ2min,
fnQ2max);
4175 for(
Int_t pid1=0;pid1<2*nParticleSpecies;pid1++)
4177 for(
Int_t pid2=0;pid2<2*nParticleSpecies;pid2++)
4179 for(
Int_t pid3=0;pid3<2*nParticleSpecies;pid3++)
4182 f3pBackground[pid1][pid2][pid3] =
new TH1F(Form(
"f3pBackground[%d][%d][%d]",pid1,pid2,pid3),Form(
"f3pBackground[%d][%d][%d] = (%s,%s,%s)",pid1,pid2,pid3,sParticles[pid1].
Data(),sParticles[pid2].
Data(),sParticles[pid3].
Data()),
fnQ3bins,
fnQ3min,
fnQ3max);
4197 for(
Int_t pid1=0;pid1<2*nParticleSpecies;pid1++)
4199 for(
Int_t pid2=0;pid2<2*nParticleSpecies;pid2++)
4201 for(
Int_t pid3=0;pid3<2*nParticleSpecies;pid3++)
4203 for(
Int_t pid4=0;pid4<2*nParticleSpecies;pid4++)
4206 f4pBackground[pid1][pid2][pid3][pid4] =
new TH1F(Form(
"f4pBackground[%d][%d][%d][%d]",pid1,pid2,pid3,pid4),Form(
"f4pBackground[%d][%d][%d][%d] = (%s,%s,%s,%s)",pid1,pid2,pid3,pid4,sParticles[pid1].
Data(),sParticles[pid2].
Data(),sParticles[pid3].
Data(),sParticles[pid4].
Data()),
fnQ4bins,
fnQ4min,
fnQ4max);
4208 f4pBackground[pid1][pid2][pid3][pid4]->SetFillColor(kRed-10);
4211 f4pBackground[pid1][pid2][pid3][pid4]->SetYTitle(
"B(Q_{4})");
4223 for(
Int_t me=0;me<3;me++)
4230 for(
Int_t vzr=0;vzr<10;vzr++)
4234 fMixedEvents1[vzr][me] =
new TClonesArray(
"AliAODTrack",10000);
4260 fBuffersFlagsPro =
new TProfile(
"fBuffersFlagsPro",
"Flags and settings for buffers",2,0,2);
4272 if(!fFillBuffers){
return;}
4279 for(
Int_t p=0;p<10000;p++)
4306 fQAFlagsPro =
new TProfile(
"fQAFlagsPro",
"Flags and settings for QA",4,0.,4.);
4320 if(!fFillQA){
return;}
4329 if(fFillQAParticles)
4332 Int_t nFilterBits = 14;
4338 for(
Int_t fb=0;fb<nFilterBits;fb++)
4345 Int_t nIDsMax = 10000;
4346 fQAIDvsFilterBit =
new TH2I(
"fQAIDvsFilterBit",
"fQAIDvsFilterBit",nFilterBits,0,nFilterBits,2*nIDsMax,-nIDsMax,nIDsMax);
4351 for(
Int_t fb=0;fb<nFilterBits;fb++)
4358 TString sBeforeAfter[2] = {
"before",
"after"};
4359 TString sDistributions[10] = {
"p_{T}",
"#eta",
"",
"",
"",
"",
"",
"",
"",
""};
4360 TString sCuts[10] = {
"PID",
"",
"",
"",
"",
"",
"",
"",
"",
""};
4361 for(
Int_t ba=0;ba<2;ba++)
4363 for(
Int_t di=0;di<10;di++)
4365 if(sDistributions[di].EqualTo(
"")){
continue;}
4366 for(
Int_t ci=0;ci<10;ci++)
4368 if(sCuts[ci].EqualTo(
"")){
continue;}
4369 fQAParticleHist[ba][di][ci] =
new TH1F(Form(
"fQAParticleHist[%d][%d][%d]",ba,di,ci),Form(
"fQAParticleHist[%d][%d][%d] = (%s,%s,%s)",ba,di,ci,sBeforeAfter[ba].
Data(),sDistributions[di].
Data(),sCuts[ci].
Data() ),10000,0.,10.);
4392 fGlobalTrackCutsFlagsPro =
new TProfile(
"fGlobalTrackCutsFlagsPro",
"Flags and settings for global track cuts",7,0.,7.);
4438 TString sMethodName =
"void AliAnalysisTaskMultiparticleFemtoscopy::GlobalTracksAOD(AliAODEvent *aAOD, Int_t index)";
4439 if(!
fGlobalTracksAOD[index]){Fatal(sMethodName.Data(),
"fGlobalTracksAOD[%d]",index);}
4443 for(
Int_t iTrack=0;iTrack<aAOD->GetNumberOfTracks();iTrack++)
4445 AliAODTrack *aodTrack =
dynamic_cast<AliAODTrack*
>(aAOD->GetTrack(iTrack));
4448 Int_t id = aodTrack->GetID();
4450 if(
id>=0 && !aodTrack->IsGlobalConstrained())
4486 TString sMethodName =
"void AliAnalysisTaskMultiparticleFemtoscopy::GlobalTracksAODTEST(AliAODEvent *aAOD, Int_t index)";
4491 for(
Int_t iTrack=0;iTrack<aAOD->GetNumberOfTracks();iTrack++)
4493 AliAODTrack *aodTrack =
dynamic_cast<AliAODTrack*
>(aAOD->GetTrack(iTrack));
4496 Int_t id = aodTrack->GetID();
4498 if(
id>=0 && !aodTrack->IsGlobalConstrained())
4534 TString sMethodName =
"void AliAnalysisTaskMultiparticleFemtoscopy::GlobalTracksAODHA(AliAODEvent *aAOD, Int_t index)";
4535 if(!
fGlobalTracksAODHA[index]){Fatal(sMethodName.Data(),
"fGlobalTracksAODHA[%d]",index);}
4539 for(
Int_t iTrack=0;iTrack<aAOD->GetNumberOfTracks();iTrack++)
4541 AliAODTrack *aodTrack =
dynamic_cast<AliAODTrack*
>(aAOD->GetTrack(iTrack));
4544 Int_t id = aodTrack->GetID();
4546 if(
id>=0 && !aodTrack->IsGlobalConstrained())
4581 TString sMethodName =
"void AliAnalysisTaskMultiparticleFemtoscopy::GlobalTracksAOD(AliAODEvent *aAOD, Int_t indexX, Int_t indexY)";
4582 if(!
fGlobalTracksAOD1[indexX][indexY]){Fatal(sMethodName.Data(),
"fGlobalTracksAOD[%d][%d]",indexX,indexY);}
4586 for(
Int_t iTrack=0;iTrack<aAOD->GetNumberOfTracks();iTrack++)
4588 AliAODTrack *aodTrack =
dynamic_cast<AliAODTrack*
>(aAOD->GetTrack(iTrack));
4591 Int_t id = aodTrack->GetID();
4593 if(
id>=0 && !aodTrack->IsGlobalConstrained())
4608 if(run !=
fRun)
return kFALSE;
4610 else if(orbit !=
fOrbit)
return kFALSE;
4611 else if(period !=
fPeriod)
return kFALSE;
4623 TString sMethodName =
"Bool_t AliAnalysisTaskMultiparticleFemtoscopy::PassesGlobalTrackCuts(AliAODTrack *gtrack)";
4624 if(!gtrack){Fatal(sMethodName.Data(),
"!gtrack");}
4629 if(gtrack->Pt()<
fPtRange[0])
return kFALSE;
4630 if(gtrack->Pt()>=
fPtRange[1])
return kFALSE;
4631 if(gtrack->Eta()<
fEtaRange[0])
return kFALSE;
4632 if(gtrack->Eta()>=
fEtaRange[1])
return kFALSE;
4633 if(gtrack->Phi()<
fPhiRange[0])
return kFALSE;
4634 if(gtrack->Phi()>=
fPhiRange[1])
return kFALSE;
4651 TString sMethodName =
"Bool_t AliAnalysisTaskMultiparticleFemtoscopy::PassesCommonTrackCuts(AliAODTrack *atrack)";
4652 if(!atrack){Fatal(sMethodName.Data(),
"!atrack");}
4654 if(!atrack->TestFilterBit(128))
return kFALSE;
4657 if(atrack->Pt()<
fPtRange[0])
return kFALSE;
4658 if(atrack->Pt()>=
fPtRange[1])
return kFALSE;
4659 if(atrack->Eta()<
fEtaRange[0])
return kFALSE;
4660 if(atrack->Eta()>=
fEtaRange[1])
return kFALSE;
4661 if(atrack->Phi()<
fPhiRange[0])
return kFALSE;
4662 if(atrack->Phi()>=
fPhiRange[1])
return kFALSE;
4678 TString sMethodName =
"Bool_t AliAnalysisTaskMultiparticleFemtoscopy::PassesCommonTrackCuts(AliAODMCParticle *amcparticle)";
4679 if(!amcparticle){Fatal(sMethodName.Data(),
"!amcparticle");}
4681 if(TMath::Abs(amcparticle->Charge())<1.e-10)
return kFALSE;
4682 if(!amcparticle->IsPhysicalPrimary())
return kFALSE;
4683 if(amcparticle->Pt()<0.2)
return kFALSE;
4684 if(amcparticle->Pt()>=5.0)
return kFALSE;
4685 if(amcparticle->Eta()<-0.8)
return kFALSE;
4686 if(amcparticle->Eta()>=0.8)
return kFALSE;
4703 AliMCEvent *aMC =
dynamic_cast<AliMCEvent*
>(ave);
4737 AliAODVertex *avtx = (AliAODVertex*)aAOD->GetPrimaryVertex();
4775 AliMCEvent *aMC =
dynamic_cast<AliMCEvent*
>(ave);
4818 TString sMethodName =
"void AliAnalysisTaskMultiparticleFemtoscopy::CalculateCorrelationFunctions(AliAODEvent *aAOD)";
4819 if(!aAOD){Fatal(sMethodName.Data(),
"!aAOD");}
4820 if(0 ==
fGlobalTracksAOD[0]->GetSize()){Fatal(sMethodName.Data(),
"0 == fGlobalTracksAOD[0]->GetSize()");}
4823 Int_t nTracks = aAOD->GetNumberOfTracks();
4824 for(
Int_t iTrack1=0;iTrack1<nTracks;iTrack1++)
4826 AliAODTrack *atrack1 =
dynamic_cast<AliAODTrack*
>(aAOD->GetTrack(iTrack1));
4828 if(!atrack1){Fatal(sMethodName.Data(),
"!atrack1");}
4829 if(atrack1->GetID()>=0 && atrack1->IsGlobalConstrained()){Fatal(sMethodName.Data(),
"atrack1->GetID()>=0 && atrack1->IsGlobalConstrained()");}
4830 if(atrack1->TestFilterBit(128) && atrack1->IsGlobalConstrained()){Fatal(sMethodName.Data(),
"atrack1->TestFiletrBit(128) && atrack1->IsGlobalConstrained()");}
4833 Int_t id1 = atrack1->GetID();
4834 AliAODTrack *gtrack1 =
dynamic_cast<AliAODTrack*
>(id1>=0 ? aAOD->GetTrack(
fGlobalTracksAOD[0]->GetValue(id1)) : aAOD->GetTrack(
fGlobalTracksAOD[0]->GetValue(-(id1+1))));
4835 if(!gtrack1){Fatal(sMethodName.Data(),
"!gtrack1");}
4836 Int_t gid1 = (id1>=0 ? id1 : -(id1+1));
4841 for(
Int_t iTrack2=iTrack1+1;iTrack2<nTracks;iTrack2++)
4843 AliAODTrack *atrack2 =
dynamic_cast<AliAODTrack*
>(aAOD->GetTrack(iTrack2));
4845 if(!atrack2){Fatal(sMethodName.Data(),
"!atrack2");}
4846 if(atrack2->GetID()>=0 && atrack2->IsGlobalConstrained()){Fatal(sMethodName.Data(),
"atrack2->GetID()>=0 && atrack2->IsGlobalConstrained()");}
4847 if(atrack2->TestFilterBit(128) && atrack2->IsGlobalConstrained()){Fatal(sMethodName.Data(),
"atrack2->TestFiletrBit(128) && atrack2->IsGlobalConstrained()");}
4850 Int_t id2 = atrack2->GetID();
4851 AliAODTrack *gtrack2 =
dynamic_cast<AliAODTrack*
>(id2>=0 ? aAOD->GetTrack(
fGlobalTracksAOD[0]->GetValue(id2)) : aAOD->GetTrack(
fGlobalTracksAOD[0]->GetValue(-(id2+1))));
4852 if(!gtrack2){Fatal(sMethodName.Data(),
"!gtrack2");}
4853 Int_t gid2 = (id2>=0 ? id2 : -(id2+1));
4854 if(gid1==gid2){
continue;}
4860 AliAODTrack *agtrack1 = NULL;
4861 AliAODTrack *agtrack2 = NULL;
4872 if(!agtrack1){Fatal(sMethodName.Data(),
"!agtrack1");}
4873 if(!agtrack2){Fatal(sMethodName.Data(),
"!agtrack2");}
4879 if(
Pion(gtrack1,1,kTRUE) &&
Pion(gtrack2,1,kTRUE))
4884 if(
Pion(gtrack1,-1,kTRUE) &&
Pion(gtrack2,-1,kTRUE))
4889 if((
Pion(gtrack1,1,kTRUE) &&
Pion(gtrack2,-1,kTRUE)) || (
Pion(gtrack1,-1,kTRUE) &&
Pion(gtrack2,1,kTRUE)))
4896 if(
Kaon(gtrack1,1,kTRUE) &&
Kaon(gtrack2,1,kTRUE))
4901 if(
Kaon(gtrack1,-1,kTRUE) &&
Kaon(gtrack2,-1,kTRUE))
4906 if((
Kaon(gtrack1,1,kTRUE) &&
Kaon(gtrack2,-1,kTRUE)) || (
Kaon(gtrack1,-1,kTRUE) &&
Kaon(gtrack2,1,kTRUE)))
4918 if(
Proton(gtrack1,-1,kTRUE) &&
Proton(gtrack2,-1,kTRUE))