19 #include "TParticle.h"
21 #include "TMCProcess.h"
22 #include "TDatabasePDG.h"
25 #include "TDirectory.h"
29 #include "THnSparse.h"
31 #include "AliAnalysisManager.h"
32 #include "AliESDInputHandler.h"
33 #include "AliESDtrack.h"
34 #include "AliMCEvent.h"
35 #include "AliMCEventHandler.h"
38 #include "AliESDtrackCuts.h"
39 #include "AliESDpidCuts.h"
40 #include "AliMCEvent.h"
42 #include "AliESDEvent.h"
43 #include "AliESDpid.h"
44 #include "AliKFParticle.h"
45 #include "AliMCEventHandler.h"
46 #include "AliKFVertex.h"
47 #include "AliTriggerAnalysis.h"
48 #include "AliCentrality.h"
49 #include "AliMultiplicity.h"
50 #include "AliAODEvent.h"
60 fV0ReaderName("V0ReaderV1"),
74 fSelectorNegPionIndex(0),
75 fSelectorPosPionIndex(0),
76 fGoodConvGammas(NULL),
77 fClusterCandidates(NULL),
78 fNeutralPionCandidates(NULL),
79 fNegPionCandidates(NULL),
80 fPosPionCandidates(NULL),
81 fGoodVirtualParticles(NULL),
84 fClusterCutArray(NULL),
86 fNeutralPionMesonCutArray(NULL),
89 fConversionCuts(NULL),
91 fHistoConvGammaPt(NULL),
92 fHistoConvGammaEta(NULL),
93 fHistoClusterGammaPt(NULL),
94 fHistoClusterGammaEta(NULL),
95 fHistoNegPionPt(NULL),
96 fHistoPosPionPt(NULL),
97 fHistoNegPionPhi(NULL),
98 fHistoPosPionPhi(NULL),
99 fHistoNegPionEta(NULL),
100 fHistoPosPionEta(NULL),
101 fHistoNegPionClsTPC(NULL),
102 fHistoPosPionClsTPC(NULL),
103 fHistoPionDCAxy(NULL),
104 fHistoPionDCAz(NULL),
105 fHistoPionTPCdEdxNSigma(NULL),
106 fHistoPionTPCdEdx(NULL),
107 fHistoPionPionInvMassPt(NULL),
108 fHistoGammaGammaInvMassPt(NULL),
109 fHistoMotherInvMassPt(NULL),
110 fHistoMotherInvMassPtRejectedKinematic(NULL),
112 fHistoMotherSameDiff1Diff2BackInvMassPt(NULL),
113 fHistoMotherSameDiff1Diff1BackInvMassPt(NULL),
114 fHistoMotherSameSameDiff2BackInvMassPt(NULL),
115 fHistoMotherSameDiff1SameBackInvMassPt(NULL),
117 fHistoAngleOmegaPiPlPiMi(NULL),
118 fHistoAngleOmegaPiZero(NULL),
119 fHistoAngleOmegaPiPl(NULL),
120 fHistoAngleOmegaPiMi(NULL),
121 fHistoAnglePiPlPiMi(NULL),
122 fHistoAnglePiZeroPiMi(NULL),
123 fHistoAnglePiPlPiZero(NULL),
124 fHistoAngleSum(NULL),
125 fHistoMotherInvMassSubPi0(NULL),
126 fHistoMotherSameDiff1Diff2BackInvMassSubPi0Pt(NULL),
127 fHistoMotherSameDiff1Diff1BackInvMassSubPi0Pt(NULL),
128 fHistoMotherSameSameDiff2BackInvMassSubPi0Pt(NULL),
129 fHistoMotherSameDiff1SameBackInvMassSubPi0Pt(NULL),
130 fHistoMotherInvMassFixedPzPi0(NULL),
131 fHistoMotherSameDiff1Diff2BackInvMassFixedPzPi0Pt(NULL),
132 fHistoMotherSameDiff1Diff1BackInvMassFixedPzPi0Pt(NULL),
133 fHistoMotherSameSameDiff2BackInvMassFixedPzPi0Pt(NULL),
134 fHistoMotherSameDiff1SameBackInvMassFixedPzPi0Pt(NULL),
135 fHistoTrueAngleSum(NULL),
136 fHistoMCAllGammaPt(NULL),
137 fHistoMCConvGammaPt(NULL),
138 fHistoMCAllPosPionsPt(NULL),
139 fHistoMCAllNegPionsPt(NULL),
140 fHistoMCGammaFromNeutralMesonPt(NULL),
141 fHistoMCPosPionsFromNeutralMesonPt(NULL),
142 fHistoMCNegPionsFromNeutralMesonPt(NULL),
143 fHistoMCEtaPiPlPiMiPiZeroPt(NULL),
144 fHistoMCEtaPiPlPiMiPiZeroInAccPt(NULL),
145 fHistoMCOmegaPiPlPiMiPiZeroPt(NULL),
146 fHistoMCOmegaPiPlPiMiPiZeroInAccPt(NULL),
147 fHistoTrueMotherPiPlPiMiPiZeroInvMassPt(NULL),
148 fHistoTrueMotherGammaGammaInvMassPt(NULL),
149 fHistoTrueMotherGammaGammaFromEtaInvMassPt(NULL),
150 fHistoTrueMotherGammaGammaFromOmegaInvMassPt(NULL),
151 fHistoTrueConvGammaPt(NULL),
152 fHistoTrueConvGammaFromNeutralMesonPt(NULL),
153 fHistoTrueClusterGammaPt(NULL),
154 fHistoTrueClusterGammaFromNeutralMesonPt(NULL),
155 fHistoTruePosPionPt(NULL),
156 fHistoTruePosPionFromNeutralMesonPt(NULL),
157 fHistoTrueNegPionPt(NULL),
158 fHistoTrueNegPionFromNeutralMesonPt(NULL),
159 fHistoTruePionPionInvMassPt(NULL),
160 fHistoTruePionPionFromSameMotherInvMassPt(NULL),
161 fHistoTruePionPionFromEtaInvMassPt(NULL),
162 fHistoTruePionPionFromOmegaInvMassPt(NULL),
163 fHistoDoubleCountTruePi0InvMassPt(NULL),
164 fHistoDoubleCountTrueEtaInvMassPt(NULL),
165 fHistoDoubleCountTrueOmegaInvMassPt(NULL),
166 fHistoDoubleCountTrueConvGammaRPt(NULL),
167 fVectorDoubleCountTruePi0s(0),
168 fVectorDoubleCountTrueEtas(0),
169 fVectorDoubleCountTrueOmegas(0),
170 fVectorDoubleCountTrueConvGammas(0),
172 fHistoNGoodESDTracks(NULL),
173 fProfileEtaShift(NULL),
174 fHistoSPDClusterTrackletBackground(NULL),
178 fNumberOfESDTracks(0),
179 fMoveParticleAccordingToVertex(kFALSE),
181 fDoMesonAnalysis(kTRUE),
183 fIsFromMBHeader(kTRUE),
195 fV0ReaderName(
"V0ReaderV1"),
197 fBGHandlerPiPl(NULL),
198 fBGHandlerPiMi(NULL),
209 fSelectorNegPionIndex(0),
210 fSelectorPosPionIndex(0),
211 fGoodConvGammas(NULL),
212 fClusterCandidates(NULL),
213 fNeutralPionCandidates(NULL),
214 fPosPionCandidates(NULL),
215 fNegPionCandidates(NULL),
216 fGoodVirtualParticles(NULL),
217 fEventCutArray(NULL),
218 fGammaCutArray(NULL),
219 fClusterCutArray(NULL),
221 fNeutralPionMesonCutArray(NULL),
222 fMesonCutArray(NULL),
224 fConversionCuts(NULL),
226 fHistoConvGammaPt(NULL),
227 fHistoConvGammaEta(NULL),
228 fHistoClusterGammaPt(NULL),
229 fHistoClusterGammaEta(NULL),
230 fHistoNegPionPt(NULL),
231 fHistoPosPionPt(NULL),
232 fHistoNegPionPhi(NULL),
233 fHistoPosPionPhi(NULL),
234 fHistoNegPionEta(NULL),
235 fHistoPosPionEta(NULL),
236 fHistoNegPionClsTPC(NULL),
237 fHistoPosPionClsTPC(NULL),
238 fHistoPionDCAxy(NULL),
239 fHistoPionDCAz(NULL),
240 fHistoPionTPCdEdxNSigma(NULL),
241 fHistoPionTPCdEdx(NULL),
242 fHistoPionPionInvMassPt(NULL),
243 fHistoGammaGammaInvMassPt(NULL),
244 fHistoMotherInvMassPt(NULL),
245 fHistoMotherInvMassPtRejectedKinematic(NULL),
247 fHistoMotherSameDiff1Diff2BackInvMassPt(NULL),
248 fHistoMotherSameDiff1Diff1BackInvMassPt(NULL),
249 fHistoMotherSameSameDiff2BackInvMassPt(NULL),
250 fHistoMotherSameDiff1SameBackInvMassPt(NULL),
252 fHistoAngleOmegaPiPlPiMi(NULL),
253 fHistoAngleOmegaPiZero(NULL),
254 fHistoAngleOmegaPiPl(NULL),
255 fHistoAngleOmegaPiMi(NULL),
256 fHistoAnglePiPlPiMi(NULL),
257 fHistoAnglePiZeroPiMi(NULL),
258 fHistoAnglePiPlPiZero(NULL),
259 fHistoAngleSum(NULL),
260 fHistoMotherInvMassSubPi0(NULL),
261 fHistoMotherSameDiff1Diff2BackInvMassSubPi0Pt(NULL),
262 fHistoMotherSameDiff1Diff1BackInvMassSubPi0Pt(NULL),
263 fHistoMotherSameSameDiff2BackInvMassSubPi0Pt(NULL),
264 fHistoMotherSameDiff1SameBackInvMassSubPi0Pt(NULL),
265 fHistoMotherInvMassFixedPzPi0(NULL),
266 fHistoMotherSameDiff1Diff2BackInvMassFixedPzPi0Pt(NULL),
267 fHistoMotherSameDiff1Diff1BackInvMassFixedPzPi0Pt(NULL),
268 fHistoMotherSameSameDiff2BackInvMassFixedPzPi0Pt(NULL),
269 fHistoMotherSameDiff1SameBackInvMassFixedPzPi0Pt(NULL),
270 fHistoTrueAngleSum(NULL),
271 fHistoMCAllGammaPt(NULL),
272 fHistoMCConvGammaPt(NULL),
273 fHistoMCAllPosPionsPt(NULL),
274 fHistoMCAllNegPionsPt(NULL),
275 fHistoMCGammaFromNeutralMesonPt(NULL),
276 fHistoMCPosPionsFromNeutralMesonPt(NULL),
277 fHistoMCNegPionsFromNeutralMesonPt(NULL),
278 fHistoMCEtaPiPlPiMiPiZeroPt(NULL),
279 fHistoMCEtaPiPlPiMiPiZeroInAccPt(NULL),
280 fHistoMCOmegaPiPlPiMiPiZeroPt(NULL),
281 fHistoMCOmegaPiPlPiMiPiZeroInAccPt(NULL),
282 fHistoTrueMotherPiPlPiMiPiZeroInvMassPt(NULL),
283 fHistoTrueMotherGammaGammaInvMassPt(NULL),
284 fHistoTrueMotherGammaGammaFromEtaInvMassPt(NULL),
285 fHistoTrueMotherGammaGammaFromOmegaInvMassPt(NULL),
286 fHistoTrueConvGammaPt(NULL),
287 fHistoTrueConvGammaFromNeutralMesonPt(NULL),
288 fHistoTrueClusterGammaPt(NULL),
289 fHistoTrueClusterGammaFromNeutralMesonPt(NULL),
290 fHistoTruePosPionPt(NULL),
291 fHistoTruePosPionFromNeutralMesonPt(NULL),
292 fHistoTrueNegPionPt(NULL),
293 fHistoTrueNegPionFromNeutralMesonPt(NULL),
294 fHistoTruePionPionInvMassPt(NULL),
295 fHistoTruePionPionFromSameMotherInvMassPt(NULL),
296 fHistoTruePionPionFromEtaInvMassPt(NULL),
297 fHistoTruePionPionFromOmegaInvMassPt(NULL),
298 fHistoDoubleCountTruePi0InvMassPt(NULL),
299 fHistoDoubleCountTrueEtaInvMassPt(NULL),
300 fHistoDoubleCountTrueOmegaInvMassPt(NULL),
301 fHistoDoubleCountTrueConvGammaRPt(NULL),
302 fVectorDoubleCountTruePi0s(0),
303 fVectorDoubleCountTrueEtas(0),
304 fVectorDoubleCountTrueOmegas(0),
305 fVectorDoubleCountTrueConvGammas(0),
307 fHistoNGoodESDTracks(NULL),
308 fProfileEtaShift(NULL),
309 fHistoSPDClusterTrackletBackground(NULL),
313 fNumberOfESDTracks(0),
314 fMoveParticleAccordingToVertex(kFALSE),
316 fDoMesonAnalysis(kTRUE),
318 fIsFromMBHeader(kTRUE),
323 DefineOutput(1, TList::Class());
332 cout<<
"Destructor"<<endl;
394 TString cutstringConvGamma =
"";
396 TString cutstringCaloGamma =
"";
402 if (
fNeutralPionMode == 0) fullCutString = Form(
"%i_%s_%s_%s_%s_%s",
fNeutralPionMode,cutstringEvent.Data(),cutstringConvGamma.Data(),cutstringNeutralPion.Data(), cutstringPion.Data(),cutstringMeson.Data());
403 else if (
fNeutralPionMode == 1) fullCutString = Form(
"%i_%s_%s_%s_%s_%s_%s",
fNeutralPionMode,cutstringEvent.Data(),cutstringConvGamma.Data(),cutstringCaloGamma.Data(),cutstringNeutralPion.Data(), cutstringPion.Data(),cutstringMeson.Data());
404 else if (
fNeutralPionMode == 2) fullCutString = Form(
"%i_%s_%s_%s_%s_%s",
fNeutralPionMode,cutstringEvent.Data(),cutstringCaloGamma.Data(),cutstringNeutralPion.Data(), cutstringPion.Data(),cutstringMeson.Data());
413 if(collisionSystem == 1 || collisionSystem == 2 ||
414 collisionSystem == 5 || collisionSystem == 8 ||
415 collisionSystem == 9){
416 centMin = centMin*10;
417 centMax = centMax*10;
419 else if(collisionSystem == 3 || collisionSystem == 6){
423 else if(collisionSystem == 4 || collisionSystem == 7){
424 centMin = ((centMin*5)+45);
425 centMax = ((centMax*5)+45);
561 TString cutstringConvGamma =
"";
563 TString cutstringCaloGamma =
"";
569 if (
fNeutralPionMode == 0) fullCutString = Form(
"%i_%s_%s_%s_%s_%s",
fNeutralPionMode,cutstringEvent.Data(),cutstringConvGamma.Data(),cutstringNeutralPion.Data(), cutstringPion.Data(),cutstringMeson.Data());
570 else if (
fNeutralPionMode == 1) fullCutString = Form(
"%i_%s_%s_%s_%s_%s_%s",
fNeutralPionMode,cutstringEvent.Data(),cutstringConvGamma.Data(),cutstringCaloGamma.Data(),cutstringNeutralPion.Data(), cutstringPion.Data(),cutstringMeson.Data());
571 else if (
fNeutralPionMode == 2) fullCutString = Form(
"%i_%s_%s_%s_%s_%s",
fNeutralPionMode,cutstringEvent.Data(),cutstringCaloGamma.Data(),cutstringNeutralPion.Data(), cutstringPion.Data(),cutstringMeson.Data());
572 TString nameCutFolder = Form(
"Cut Number %s", fullCutString.Data());
573 TString nameESDList = Form(
"%s ESD histograms", fullCutString.Data());
577 fCutFolder[iCut]->SetName(nameCutFolder.Data());
578 fCutFolder[iCut]->SetOwner(kTRUE);
582 fESDList[iCut]->SetName(nameESDList.Data());
587 fHistoNEvents[iCut]->GetXaxis()->SetBinLabel(2,
"Centrality");
588 fHistoNEvents[iCut]->GetXaxis()->SetBinLabel(3,
"Miss. MC or inc. ev.");
591 fHistoNEvents[iCut]->GetXaxis()->SetBinLabel(6,
"Cont. Vertex");
595 fHistoNEvents[iCut]->GetXaxis()->SetBinLabel(10,
"EMCAL problem");
596 fHistoNEvents[iCut]->GetXaxis()->SetBinLabel(12,
"SPD hits vs tracklet");
597 fHistoNEvents[iCut]->GetXaxis()->SetBinLabel(13,
"Out-of-Bunch pileup Past-Future");
598 fHistoNEvents[iCut]->GetXaxis()->SetBinLabel(14,
"Pileup V0M-TPCout Tracks");
610 fHistoConvGammaPt[iCut] =
new TH1F(
"ESD_ConvGamma_Pt",
"ESD_ConvGamma_Pt",250,0,25);
612 fHistoConvGammaEta[iCut] =
new TH1F(
"ESD_ConvGamma_Eta",
"ESD_ConvGamma_Eta",600,-1.5,1.5);
621 fHistoNegPionPt[iCut] =
new TH1F(
"ESD_PrimaryNegPions_Pt",
"ESD_PrimaryNegPions_Pt",1000,0,25);
623 fHistoPosPionPt[iCut] =
new TH1F(
"ESD_PrimaryPosPions_Pt",
"ESD_PrimaryPosPions_Pt",1000,0,25);
625 fHistoNegPionPhi[iCut] =
new TH1F(
"ESD_PrimaryNegPions_Phi",
"ESD_PrimaryNegPions_Phi",360,0,2*TMath::Pi());
627 fHistoPosPionPhi[iCut] =
new TH1F(
"ESD_PrimaryPosPions_Phi",
"ESD_PrimaryPosPions_Phi",360,0,2*TMath::Pi());
633 fHistoNegPionEta[iCut] =
new TH1F(
"ESD_PrimaryNegPions_Eta",
"ESD_PrimaryNegPions_Eta",600,-1.5,1.5);
635 fHistoPosPionEta[iCut] =
new TH1F(
"ESD_PrimaryPosPions_Eta",
"ESD_PrimaryPosPions_Eta",600,-1.5,1.5);
637 fHistoNegPionClsTPC[iCut] =
new TH2F(
"ESD_PrimaryNegPions_ClsTPC",
"ESD_PrimaryNegPions_ClsTPC",100,0,1,400,0.,10.);
639 fHistoPosPionClsTPC[iCut] =
new TH2F(
"ESD_PrimaryPosPions_ClsTPC",
"ESD_PrimaryPosPions_ClsTPC",100,0,1,400,0.,10.);
641 fHistoPionDCAxy[iCut] =
new TH2F(
"ESD_PrimaryPions_DCAxy",
"ESD_PrimaryPions_DCAxy",800,-4.0,4.0,400,0.,10.);
643 fHistoPionDCAz[iCut] =
new TH2F(
"ESD_PrimaryPions_DCAz",
"ESD_PrimaryPions_DCAz",800,-4.0,4.0,400,0.,10.);
647 fHistoPionTPCdEdx[iCut] =
new TH2F(
"ESD_PrimaryPions_TPCdEdxSignal",
"ESD_PrimaryPions_TPCdEdxSignal" ,150,0.05,20.0,800,0.0,200);
665 fHistoMotherInvMassSubPi0[iCut] =
new TH2F(
"ESD_InvMass_Mother_Sub_InvMass(NeutralPion)_Pt",
"ESD_Mother_InvMass_Sub_InvMass(NeutralPion)_Pt",800,0.1,0.9,250,0,25);
687 fHistoAngleOmegaPiPlPiMi[iCut] =
new TH2F(
"ESD_Mother_AngleOmegaNegPionsPosPions_Pt",
"ESD_Mother_AngleOmegaNegPionsPosPions_Pt",250,0,25,360,0,TMath::Pi());
689 fHistoAngleOmegaPiMi[iCut] =
new TH2F(
"ESD_Mother_AngleOmegaNegPions_Pt",
"ESD_Mother_AngleOmegaNegPions_Pt",250,0,25,360,0,TMath::Pi());
691 fHistoAngleOmegaPiPl[iCut] =
new TH2F(
"ESD_Mother_AngleOmegaPosPions_Pt",
"ESD_Mother_AngleOmegaPosPions_Pt",250,0,25,360,0,TMath::Pi());
693 fHistoAngleOmegaPiZero[iCut] =
new TH2F(
"ESD_Mother_AngleOmegaNeutralPion_Pt",
"ESD_Mother_AngleOmegaNeutralPion_Pt",250,0,25,360,0,TMath::Pi());
695 fHistoAnglePiPlPiZero[iCut] =
new TH2F(
"ESD_Mother_AnglePosPionsNeutralPion_Pt",
"ESD_Mother_AnglePosPionsNeutralPion_Pt",250,0,25,360,0,TMath::Pi());
697 fHistoAnglePiPlPiMi[iCut] =
new TH2F(
"ESD_Mother_AnglePosPionsNegPions_Pt",
"ESD_Mother_AnglePosPionsNegPions_Pt",250,0,25,360,0,TMath::Pi());
699 fHistoAnglePiZeroPiMi[iCut] =
new TH2F(
"ESD_Mother_AngleNeutralPionNegPions_Pt",
"ESD_Mother_AngleNeutralPionNegPions_Pt",250,0,25,360,0,TMath::Pi());
701 fHistoAngleSum[iCut] =
new TH2F(
"ESD_Mother_AngleSum_Pt",
"ESD_Mother_AngleSum_Pt",250,0,25,720,0,2*TMath::Pi());
706 Int_t bins = AxisAfter->GetNbins();
707 Double_t from = AxisAfter->GetXmin();
711 Double_t factor = TMath::Power(to/from, 1./bins);
712 for(
Int_t i=1; i<=bins; ++i) newBins[i] = factor * newBins[i-1];
714 AxisAfter->Set(bins, newBins);
716 AxisAfter->Set(bins, newBins);
721 fCutFolder[iCut]->Add(
fESDList[iCut]);
782 TString cutstringConvGamma =
"";
784 TString cutstringCaloGamma =
"";
790 if (
fNeutralPionMode == 0) fullCutString = Form(
"%i_%s_%s_%s_%s_%s",
fNeutralPionMode,cutstringEvent.Data(),cutstringConvGamma.Data(),cutstringNeutralPion.Data(), cutstringPion.Data(),cutstringMeson.Data());
791 else if (
fNeutralPionMode == 1) fullCutString = Form(
"%i_%s_%s_%s_%s_%s_%s",
fNeutralPionMode,cutstringEvent.Data(),cutstringConvGamma.Data(),cutstringCaloGamma.Data(),cutstringNeutralPion.Data(), cutstringPion.Data(),cutstringMeson.Data());
792 else if (
fNeutralPionMode == 2) fullCutString = Form(
"%i_%s_%s_%s_%s_%s",
fNeutralPionMode,cutstringEvent.Data(),cutstringCaloGamma.Data(),cutstringNeutralPion.Data(), cutstringPion.Data(),cutstringMeson.Data());
793 TString nameMCList = Form(
"%s MC histograms", fullCutString.Data());
794 TString nameTrueRecList = Form(
"%s True histograms", fullCutString.Data());
797 fMCList[iCut]->SetName(nameMCList.Data());
798 fMCList[iCut]->SetOwner(kTRUE);
836 fTrueList[iCut]->SetName(nameTrueRecList.Data());
894 fHistoTrueAngleSum[iCut] =
new TH2F(
"ESD_TrueMother_AngleSum_Pt",
"ESD_TrueMother_AngleSum_Pt",250,0,25,720,0,2*TMath::Pi());
907 if(!
fV0Reader){printf(
"Error: No V0 Reader");
return;}
924 for(
Int_t iMatcherTask = 0; iMatcherTask < 3; iMatcherTask++){
988 if(!
fV0Reader){printf(
"Error: No V0 Reader");
return;}
991 if(InputEvent()->IsIncompleteDAQ()==kTRUE) eventQuality = 2;
992 if(eventQuality == 2 || eventQuality == 3){
1000 if(!
fPionSelector){printf(
"Error: No PionSelector");
return;}
1014 Bool_t isRunningEMCALrelAna = kFALSE;
1021 if(eventNotAccepted){
1027 if(eventQuality != 0){
1035 fHistoSPDClusterTrackletBackground[iCut]->Fill(fInputEvent->GetMultiplicity()->GetNumberOfTracklets(),(fInputEvent->GetNumberOfITSClusters(0)+fInputEvent->GetNumberOfITSClusters(1)));
1107 printf(
" Eta t PiPlusPiMinus Gamma Task %s :: Eta Shift Manually Set to %f \n\n",
1128 nclus = fInputEvent->GetNumberOfCaloClusters();
1132 if(nclus == 0)
return;
1136 InputEvent()->GetPrimaryVertex()->GetXYZ(vertex);
1139 for(Long_t i = 0; i < nclus; i++){
1141 AliVCluster* clus = NULL;
1142 if(fInputEvent->IsA()==AliESDEvent::Class()) clus =
new AliESDCaloCluster(*(AliESDCaloCluster*)fInputEvent->GetCaloCluster(i));
1143 else if(fInputEvent->IsA()==AliAODEvent::Class()) clus =
new AliAODCaloCluster(*(AliAODCaloCluster*)fInputEvent->GetCaloCluster(i));
1145 if (!clus)
continue;
1148 TLorentzVector clusterVector;
1149 clus->GetMomentum(clusterVector,vertex);
1151 TLorentzVector* tmpvec =
new TLorentzVector();
1152 tmpvec->SetPxPyPzE(clusterVector.Px(),clusterVector.Py(),clusterVector.Pz(),clusterVector.E());
1156 if(!PhotonCandidate){
delete clus;
delete tmpvec;
continue;}
1163 Int_t* mclabelsCluster = clus->GetLabels();
1166 if (clus->GetNLabels()>0){
1167 for (
Int_t k =0; k< (
Int_t)clus->GetNLabels(); k++){
1202 TParticle *Photon = NULL;
1203 if (!TruePhotonCandidate->
GetIsCaloPhoton()) AliFatal(
"CaloPhotonFlag has not been set task will abort");
1207 const AliVVertex* primVtxMC =
fMCEvent->GetPrimaryVertex();
1208 Double_t mcProdVtxX = primVtxMC->GetX();
1209 Double_t mcProdVtxY = primVtxMC->GetY();
1210 Double_t mcProdVtxZ = primVtxMC->GetZ();
1255 if(!PhotonCandidate)
continue;
1260 Int_t isPosFromMBHeader
1263 Int_t isNegFromMBHeader
1266 if( (isNegFromMBHeader+isPosFromMBHeader) != 4)
fIsFromMBHeader = kFALSE;
1287 GoodGammasStepOne->Add(PhotonCandidate);
1290 GoodGammasStepTwo->Add(PhotonCandidate);
1296 for(
Int_t i = 0;i<GoodGammasStepOne->GetEntries();i++){
1298 if(!PhotonCandidate)
continue;
1301 Int_t isPosFromMBHeader
1303 Int_t isNegFromMBHeader
1305 if( (isNegFromMBHeader+isPosFromMBHeader) != 4)
fIsFromMBHeader = kFALSE;
1318 else GoodGammasStepTwo->Add(PhotonCandidate);
1322 for(
Int_t i = 0;i<GoodGammasStepTwo->GetEntries();i++){
1324 if(!PhotonCandidate)
continue;
1327 Int_t isPosFromMBHeader
1329 Int_t isNegFromMBHeader
1331 if( (isNegFromMBHeader+isPosFromMBHeader) != 4)
fIsFromMBHeader = kFALSE;
1348 delete GoodGammasStepOne;
1349 GoodGammasStepOne = 0x0;
1350 delete GoodGammasStepTwo;
1351 GoodGammasStepTwo = 0x0;
1361 const AliVVertex* primVtxMC =
fMCEvent->GetPrimaryVertex();
1362 Double_t mcProdVtxX = primVtxMC->GetX();
1363 Double_t mcProdVtxY = primVtxMC->GetY();
1364 Double_t mcProdVtxZ = primVtxMC->GetZ();
1367 if(posDaughter == NULL || negDaughter == NULL)
return;
1368 if(posDaughter->GetMother(0) != negDaughter->GetMother(0)){
1372 else if (posDaughter->GetMother(0) == -1){
1376 if(TMath::Abs(posDaughter->GetPdgCode())!=11 || TMath::Abs(negDaughter->GetPdgCode())!=11)
return;
1377 if(posDaughter->GetPdgCode()==negDaughter->GetPdgCode())
return;
1378 if(posDaughter->GetUniqueID() != 5 || negDaughter->GetUniqueID() !=5)
return;
1381 if(Photon->GetPdgCode() != 22)
return;
1389 if( gammaIsPrimary ){
1403 for(
Int_t firstGammaIndex=0;firstGammaIndex<
fGoodConvGammas->GetEntries()-1;firstGammaIndex++){
1405 if (gamma0==NULL)
continue;
1406 for(
Int_t secondGammaIndex=firstGammaIndex+1;secondGammaIndex<
fGoodConvGammas->GetEntries();secondGammaIndex++){
1409 if (gamma1==NULL)
continue;
1416 pi0cand->
SetLabels(firstGammaIndex,secondGammaIndex);
1422 if(fInputEvent->IsA()==AliESDEvent::Class())
1424 if(fInputEvent->IsA()==AliAODEvent::Class())
1452 InputEvent()->GetPrimaryVertex()->GetXYZ(vertex);
1456 if (gamma0==NULL)
continue;
1459 if (firstGammaIndex == secondGammaIndex)
continue;
1461 if (gamma1==NULL)
continue;
1464 pi0cand->
SetLabels(firstGammaIndex,secondGammaIndex);
1495 Bool_t isTruePi0 = kFALSE;
1497 Int_t gamma0MotherLabel = -1;
1498 Int_t motherRealLabel = -1;
1500 if(gamma0MCLabel != -1){
1501 TParticle * gammaMC0 = (TParticle*)
fMCEvent->Particle(gamma0MCLabel);
1505 gamma0MotherLabel=gammaMC0->GetMother(0);
1506 motherRealLabel=gammaMC0->GetFirstMother();
1508 if (TrueGammaCandidate0->
IsConversion() && gammaMC0->GetMother(0)>-1){
1509 gamma0MotherLabel=
fMCEvent->Particle(gammaMC0->GetMother(0))->GetMother(0);
1510 motherRealLabel=
fMCEvent->Particle(gammaMC0->GetMother(0))->GetMother(0);
1512 gamma0MotherLabel=gammaMC0->GetMother(0);
1513 motherRealLabel=gammaMC0->GetMother(0);
1519 if (!TrueGammaCandidate1->
GetIsCaloPhoton()) AliFatal(
"CaloPhotonFlag has not been set. Aborting");
1522 Int_t gamma1MotherLabel = -1;
1524 if(gamma1MCLabel != -1){
1526 TParticle * gammaMC1 = (TParticle*)
fMCEvent->Particle(gamma1MCLabel);
1530 gamma1MotherLabel=gammaMC1->GetMother(0);
1532 if (TrueGammaCandidate1->
IsConversion() && gammaMC1->GetMother(0)>-1) gamma1MotherLabel=
fMCEvent->Particle(gammaMC1->GetMother(0))->GetMother(0);
1533 else gamma1MotherLabel=gammaMC1->GetMother(0);
1538 if(gamma0MotherLabel>=0 && gamma0MotherLabel==gamma1MotherLabel){
1539 if(((TParticle*)
fMCEvent->Particle(gamma1MotherLabel))->GetPdgCode() == 111){
1564 if(TrueGammaCandidate0->
GetV0Index()<fInputEvent->GetNumberOfV0s()){
1565 Bool_t isTruePi0 = kFALSE;
1566 Bool_t isTruePi0Dalitz = kFALSE;
1567 Bool_t gamma0DalitzCand = kFALSE;
1568 Bool_t gamma1DalitzCand = kFALSE;
1570 Int_t gamma0MotherLabel = -1;
1571 Int_t motherRealLabel = -1;
1572 if(gamma0MCLabel != -1){
1576 TParticle * gammaMC0 = (TParticle*)
fMCEvent->Particle(gamma0MCLabel);
1577 if(TMath::Abs(negativeMC->GetPdgCode())==11 && TMath::Abs(positiveMC->GetPdgCode())==11){
1578 if(negativeMC->GetUniqueID() == 5 && positiveMC->GetUniqueID() ==5){
1579 if(gammaMC0->GetPdgCode() == 22){
1580 gamma0MotherLabel=gammaMC0->GetFirstMother();
1581 motherRealLabel=gammaMC0->GetFirstMother();
1584 if(gammaMC0->GetPdgCode() ==111){
1585 gamma0DalitzCand = kTRUE;
1586 gamma0MotherLabel=-111;
1587 motherRealLabel=gamma0MCLabel;
1591 if(TrueGammaCandidate1->
GetV0Index()<fInputEvent->GetNumberOfV0s()){
1593 Int_t gamma1MotherLabel = -1;
1594 if(gamma1MCLabel != -1){
1598 TParticle * gammaMC1 = (TParticle*)
fMCEvent->Particle(gamma1MCLabel);
1599 if(TMath::Abs(negativeMC->GetPdgCode())==11 && TMath::Abs(positiveMC->GetPdgCode())==11){
1600 if(negativeMC->GetUniqueID() == 5 && positiveMC->GetUniqueID() ==5){
1601 if(gammaMC1->GetPdgCode() == 22){
1602 gamma1MotherLabel=gammaMC1->GetFirstMother();
1605 if(gammaMC1->GetPdgCode() ==111 ){
1606 gamma1DalitzCand = kTRUE;
1607 gamma1MotherLabel=-111;
1611 if(gamma0MotherLabel>=0 && gamma0MotherLabel==gamma1MotherLabel){
1612 if(((TParticle*)
fMCEvent->Particle(gamma1MotherLabel))->GetPdgCode() == 111){
1619 if (gamma1DalitzCand || gamma0DalitzCand){
1620 if (gamma0DalitzCand && gamma0MCLabel >=0 && gamma0MCLabel==gamma1MotherLabel){
1621 if (gamma0MotherLabel == -111) isTruePi0Dalitz = kTRUE;
1623 if (gamma1DalitzCand && gamma1MCLabel >=0 && gamma1MCLabel==gamma0MotherLabel){
1624 if (gamma1MotherLabel == -111) isTruePi0Dalitz = kTRUE;
1629 if(isTruePi0 || isTruePi0Dalitz){
1649 TClonesArray *AODMCTrackArray =
dynamic_cast<TClonesArray*
>(fInputEvent->FindListObject(AliAODMCParticle::StdBranchName()));
1650 Bool_t isTruePi0 = kFALSE;
1651 Bool_t isTruePi0Dalitz = kFALSE;
1652 Bool_t gamma0DalitzCand = kFALSE;
1653 Bool_t gamma1DalitzCand = kFALSE;
1654 Int_t motherRealLabel = -1;
1656 if (AODMCTrackArray!=NULL && TrueGammaCandidate0 != NULL){
1657 AliAODMCParticle *positiveMC =
static_cast<AliAODMCParticle*
>(AODMCTrackArray->At(TrueGammaCandidate0->
GetMCLabelPositive()));
1658 AliAODMCParticle *negativeMC =
static_cast<AliAODMCParticle*
>(AODMCTrackArray->At(TrueGammaCandidate0->
GetMCLabelNegative()));
1660 Int_t gamma0MCLabel = -1;
1661 Int_t gamma0MotherLabel = -1;
1662 if(!positiveMC||!negativeMC)
1665 if(positiveMC->GetMother()>-1&&(negativeMC->GetMother() == positiveMC->GetMother())){
1666 gamma0MCLabel = positiveMC->GetMother();
1669 if(gamma0MCLabel != -1){
1671 AliAODMCParticle * gammaMC0 =
static_cast<AliAODMCParticle*
>(AODMCTrackArray->At(gamma0MCLabel));
1672 if(TMath::Abs(negativeMC->GetPdgCode())==11 && TMath::Abs(positiveMC->GetPdgCode())==11){
1673 if(((positiveMC->GetMCProcessCode())) == 5 && ((negativeMC->GetMCProcessCode())) == 5){
1674 if(gammaMC0->GetPdgCode() == 22){
1675 gamma0MotherLabel=gammaMC0->GetMother();
1676 motherRealLabel=gammaMC0->GetMother();
1679 if(gammaMC0->GetPdgCode() ==111){
1680 gamma0DalitzCand = kTRUE;
1681 gamma0MotherLabel=-111;
1682 motherRealLabel=gamma0MCLabel;
1686 positiveMC =
static_cast<AliAODMCParticle*
>(AODMCTrackArray->At(TrueGammaCandidate1->
GetMCLabelPositive()));
1687 negativeMC =
static_cast<AliAODMCParticle*
>(AODMCTrackArray->At(TrueGammaCandidate1->
GetMCLabelNegative()));
1689 Int_t gamma1MCLabel = -1;
1690 Int_t gamma1MotherLabel = -1;
1691 if(!positiveMC||!negativeMC)
1694 if(positiveMC->GetMother()>-1&&(negativeMC->GetMother() == positiveMC->GetMother())){
1695 gamma1MCLabel = positiveMC->GetMother();
1697 if(gamma1MCLabel != -1){
1699 AliAODMCParticle * gammaMC1 =
static_cast<AliAODMCParticle*
>(AODMCTrackArray->At(gamma1MCLabel));
1700 if(TMath::Abs(negativeMC->GetPdgCode())==11 && TMath::Abs(positiveMC->GetPdgCode())==11){
1701 if(((positiveMC->GetMCProcessCode())) == 5 && ((negativeMC->GetMCProcessCode())) == 5){
1702 if(gammaMC1->GetPdgCode() == 22){
1703 gamma1MotherLabel=gammaMC1->GetMother();
1706 if(gammaMC1->GetPdgCode() ==111 ){
1707 gamma1DalitzCand = kTRUE;
1708 gamma1MotherLabel=-111;
1712 if(gamma0MotherLabel>=0 && gamma0MotherLabel==gamma1MotherLabel){
1713 if(static_cast<AliAODMCParticle*>(AODMCTrackArray->At(gamma1MotherLabel))->GetPdgCode() == 111){
1720 if (gamma1DalitzCand || gamma0DalitzCand){
1721 if (gamma0DalitzCand && gamma0MCLabel >=0 && gamma0MCLabel==gamma1MotherLabel){
1722 if (gamma0MotherLabel == -111) isTruePi0Dalitz = kTRUE;
1724 if (gamma1DalitzCand && gamma1MCLabel >=0 && gamma1MCLabel==gamma0MotherLabel){
1725 if (gamma1MotherLabel == -111) isTruePi0Dalitz = kTRUE;
1729 if(isTruePi0 || isTruePi0Dalitz){
1752 InputEvent()->GetPrimaryVertex()->GetXYZ(vertex);
1756 if (gamma0==NULL)
continue;
1761 if (gamma1==NULL)
continue;
1764 AliVCluster* cluster = fInputEvent->GetCaloCluster(gamma1->
GetCaloClusterRef());
1769 pi0cand->
SetLabels(firstGammaIndex,secondGammaIndex);
1804 if(TrueGammaCandidate0->
GetV0Index()<fInputEvent->GetNumberOfV0s()){
1805 Bool_t isTruePi0 = kFALSE;
1806 Bool_t isTruePi0Dalitz = kFALSE;
1807 Bool_t gamma0DalitzCand = kFALSE;
1810 Int_t gamma0MotherLabel = -1;
1811 Int_t motherRealLabel = -1;
1812 if(gamma0MCLabel != -1){
1816 TParticle * gammaMC0 = (TParticle*)
fMCEvent->Particle(gamma0MCLabel);
1817 if(TMath::Abs(negativeMC->GetPdgCode())==11 && TMath::Abs(positiveMC->GetPdgCode())==11){
1818 if(negativeMC->GetUniqueID() == 5 && positiveMC->GetUniqueID() ==5){
1819 if(gammaMC0->GetPdgCode() == 22){
1820 gamma0MotherLabel=gammaMC0->GetFirstMother();
1821 motherRealLabel=gammaMC0->GetFirstMother();
1824 if(gammaMC0->GetPdgCode() ==111){
1825 gamma0DalitzCand = kTRUE;
1826 gamma0MotherLabel=-111;
1827 motherRealLabel=gamma0MCLabel;
1833 if (!TrueGammaCandidate1->
GetIsCaloPhoton()) AliFatal(
"CaloPhotonFlag has not been set. Aborting");
1836 Int_t gamma1MotherLabel = -1;
1839 if(gamma1MCLabel != -1){
1841 TParticle * gammaMC1 = (TParticle*)
fMCEvent->Particle(gamma1MCLabel);
1845 gamma1MotherLabel=gammaMC1->GetMother(0);
1847 if (TrueGammaCandidate1->
IsConversion() && gammaMC1->GetMother(0)>-1) gamma1MotherLabel=
fMCEvent->Particle(gammaMC1->GetMother(0))->GetMother(0);
1848 else gamma1MotherLabel=gammaMC1->GetMother(0);
1853 if(gamma0MotherLabel>=0 && gamma0MotherLabel==gamma1MotherLabel){
1854 if(((TParticle*)
fMCEvent->Particle(gamma1MotherLabel))->GetPdgCode() == 111){
1860 if (gamma0DalitzCand ){
1861 if (gamma0DalitzCand && gamma0MCLabel >=0 && gamma0MCLabel==gamma1MotherLabel){
1862 if (gamma0MotherLabel == -111) isTruePi0Dalitz = kTRUE;
1866 if(isTruePi0 || isTruePi0Dalitz ){
1885 Double_t magField = fInputEvent->GetMagneticField();
1886 if( magField < 0.0 ){
1892 vector<Int_t> lGoodNegPionIndexPrev(0);
1893 vector<Int_t> lGoodPosPionIndexPrev(0);
1900 TLorentzVector *negPionforHandler =
new TLorentzVector();
1901 negPionforHandler->SetPxPyPzE(negPionCandidate->Px(), negPionCandidate->Py(), negPionCandidate->Pz(), negPionCandidate->E());
1904 delete negPionforHandler;
1911 const AliVVertex* primVtxMC =
fMCEvent->GetPrimaryVertex();
1912 Double_t mcProdVtxX = primVtxMC->GetX();
1913 Double_t mcProdVtxY = primVtxMC->GetY();
1914 Double_t mcProdVtxZ = primVtxMC->GetZ();
1916 Int_t labelNegPion = TMath::Abs( negPionCandidate->GetLabel() );
1918 if( labelNegPion>-1 && labelNegPion < fMCEvent->GetNumberOfTracks() ){
1919 TParticle* negPion =
fMCEvent->Particle(labelNegPion);
1920 if( negPion->GetPdgCode() == -211 ){
1921 if( negPionIsPrimary ){
1925 if( negPionIsPrimary ) {
1939 TLorentzVector *posPionforHandler =
new TLorentzVector();
1940 posPionforHandler->SetPxPyPzE(posPionCandidate->Px(), posPionCandidate->Py(), posPionCandidate->Pz(), posPionCandidate->E());
1943 delete posPionforHandler;
1950 const AliVVertex* primVtxMC =
fMCEvent->GetPrimaryVertex();
1951 Double_t mcProdVtxX = primVtxMC->GetX();
1952 Double_t mcProdVtxY = primVtxMC->GetY();
1953 Double_t mcProdVtxZ = primVtxMC->GetZ();
1955 Int_t labelPosPion = TMath::Abs( posPionCandidate->GetLabel() );
1957 if( labelPosPion>-1 && labelPosPion < fMCEvent->GetNumberOfTracks() ) {
1958 TParticle* posPion =
fMCEvent->Particle(labelPosPion);
1959 if( posPion->GetPdgCode() == 211 ){
1960 if( posPionIsPrimary ){
1964 if(posPionIsPrimary){
1974 for(
Int_t i = 0; i < lGoodNegPionIndexPrev.size(); i++){
1976 AliESDtrack *negPionCandidate =
fESDEvent->GetTrack(lGoodNegPionIndexPrev[i]);
1977 AliKFParticle negPionCandidateKF( *negPionCandidate->GetConstrainedParam(), 211 );
1979 for(
Int_t j = 0; j < lGoodPosPionIndexPrev.size(); j++){
1980 AliESDtrack *posPionCandidate =
fESDEvent->GetTrack(lGoodPosPionIndexPrev[j]);
1981 AliKFParticle posPionCandidateKF( *posPionCandidate->GetConstrainedParam(), 211 );
1985 AliKFVertex primaryVertexImproved(*fInputEvent->GetPrimaryVertex());
1987 virtualPhoton->SetProductionVertex(primaryVertexImproved);
1988 virtualPhoton->SetTrackLabels( lGoodPosPionIndexPrev[j], lGoodNegPionIndexPrev[i]);
1992 Int_t motherlabelp = 0;
1993 Int_t motherlabeln = 0;
1994 TParticle *fNegativeMCParticle =NULL;
1995 TParticle *fPositiveMCParticle =NULL;
1997 labeln=TMath::Abs(negPionCandidate->GetLabel());
1998 labelp=TMath::Abs(posPionCandidate->GetLabel());
1999 if(labeln>-1) fNegativeMCParticle =
fMCEvent->Particle(labeln);
2000 if(labelp>-1) fPositiveMCParticle =
fMCEvent->Particle(labelp);
2002 if (fNegativeMCParticle == NULL || fPositiveMCParticle == NULL)
return;
2004 motherlabeln = fNegativeMCParticle->GetMother(0);
2005 motherlabelp = fPositiveMCParticle->GetMother(0);
2006 virtualPhoton->SetMCLabelPositive(labelp);
2007 virtualPhoton->SetMCLabelNegative(labeln);
2014 if (fPositiveMCParticle && fNegativeMCParticle ) {
2017 if(TMath::Abs(fNegativeMCParticle->GetPdgCode())==211 && TMath::Abs(fPositiveMCParticle->GetPdgCode())==211){
2019 if (motherlabeln == motherlabelp){
2031 if(TMath::Abs(fNegativeMCParticle->GetPdgCode())==211 && TMath::Abs(fPositiveMCParticle->GetPdgCode())==211){
2033 if (motherlabeln == motherlabelp){
2063 Float_t dcaToVertexXYPos = -1.0;
2064 Float_t dcaToVertexZPos = -1.0;
2065 Float_t dcaToVertexXYNeg = -1.0;
2066 Float_t dcaToVertexZNeg = -1.0;
2074 posPionCandidate->GetImpactParameters(bPos,bCovPos);
2075 if (bCovPos[0]<=0 || bCovPos[2]<=0) {
2076 AliDebug(1,
"Estimated b resolution lower or equal zero!");
2077 bCovPos[0]=0; bCovPos[2]=0;
2082 posPionCandidate->GetImpactParameters(bNeg,bCovNeg);
2083 if (bCovNeg[0]<=0 || bCovNeg[2]<=0) {
2084 AliDebug(1,
"Estimated b resolution lower or equal zero!");
2085 bCovNeg[0]=0; bCovNeg[2]=0;
2088 dcaToVertexXYPos = bPos[0];
2089 dcaToVertexZPos = bPos[1];
2090 dcaToVertexXYNeg = bNeg[0];
2091 dcaToVertexZNeg = bNeg[1];
2112 delete virtualPhoton;
2122 const AliVVertex* primVtxMC =
fMCEvent->GetPrimaryVertex();
2123 Double_t mcProdVtxX = primVtxMC->GetX();
2124 Double_t mcProdVtxY = primVtxMC->GetY();
2125 Double_t mcProdVtxZ = primVtxMC->GetZ();
2130 TParticle* particle = (TParticle *)
fMCEvent->Particle(i);
2131 if (!particle)
continue;
2133 Int_t isMCFromMBHeader = -1;
2145 if(particle->GetMother(0) >-1){
2146 if (
fMCEvent->Particle(particle->GetMother(0))->GetPdgCode() ==111){
2147 if (
fMCEvent->Particle(particle->GetMother(0))->GetMother(0) > -1){
2148 if (
fMCEvent->Particle((
fMCEvent->Particle(particle->GetMother(0)))->GetMother(0))->GetPdgCode() == 221 ||
2149 fMCEvent->Particle((
fMCEvent->Particle(particle->GetMother(0)))->GetMother(0))->GetPdgCode() == 223 ){
2150 if (
fMCEvent->Particle(particle->GetMother(0))->GetNDaughters()==3 )
2160 if(particle->GetMother(0) >-1){
2161 if (
fMCEvent->Particle(particle->GetMother(0))->GetPdgCode() ==111){
2162 if (
fMCEvent->Particle(particle->GetMother(0))->GetMother(0) > -1){
2163 if (
fMCEvent->Particle((
fMCEvent->Particle(particle->GetMother(0)))->GetMother(0))->GetPdgCode() == 221 ||
2164 fMCEvent->Particle((
fMCEvent->Particle(particle->GetMother(0)))->GetMother(0))->GetPdgCode() == 223 ){
2165 if (
fMCEvent->Particle(particle->GetMother(0))->GetNDaughters()==3 )
2179 if( particle->GetPdgCode() == 211){
2181 if(particle->GetMother(0) >-1){
2182 if (
fMCEvent->Particle(particle->GetMother(0))->GetPdgCode() ==221 ||
fMCEvent->Particle(particle->GetMother(0))->GetPdgCode() ==223)
2186 if( particle->GetPdgCode() == -211){
2188 if(particle->GetMother(0) >-1){
2189 if (
fMCEvent->Particle(particle->GetMother(0))->GetPdgCode() ==221 ||
fMCEvent->Particle(particle->GetMother(0))->GetPdgCode() ==223 )
2197 Int_t labelNeutPion = -1;
2198 Int_t labelNegPion = -1;
2199 Int_t labelPosPion = -1;
2205 if (particle->Pt()>0.005){
2213 if(labelNeutPion>-1){
2214 TParticle *neutPion =
fMCEvent->Particle(labelNeutPion);
2215 if(neutPion->GetDaughter(0)>-1 && neutPion->GetDaughter(1)>-1){
2216 TParticle *gamma1 =
fMCEvent->Particle(neutPion->GetDaughter(0));
2217 TParticle *gamma2 =
fMCEvent->Particle(neutPion->GetDaughter(1));
2224 if( kDaughter0IsPrim && kDaughter1IsPrim && kNegPionIsPrim && kPosPionIsPrim &&
2234 if( kDaughter0IsPrim && kDaughter1IsPrim && kNegPionIsPrim && kPosPionIsPrim &&
2261 if (neutralPion==NULL)
continue;
2270 if (vParticle==NULL)
continue;
2274 mesoncand->
SetLabels(mesonIndex,virtualParticleIndex);
2288 if(negPionCandidatetmp==NULL){
delete mesoncand;
continue;}
2290 NegPiontmp->SetPxPyPzE(negPionCandidatetmp->Px(), negPionCandidatetmp->Py(), negPionCandidatetmp->Pz(), negPionCandidatetmp->E());
2293 if(posPionCandidatetmp==NULL){
delete NegPiontmp;
delete mesoncand;
continue;}
2295 PosPiontmp->SetPxPyPzE(posPionCandidatetmp->Px(), posPionCandidatetmp->Py(), posPionCandidatetmp->Pz(), posPionCandidatetmp->E());
2297 if(
KinematicCut(NegPiontmp, PosPiontmp, neutralPion, mesoncand)){
2305 fHistoAngleSum[
fiCut]->Fill(mesoncand->Pt(),((PosPiontmp->Angle(mesoncand->Vect()))+(NegPiontmp->Angle(PosPiontmp->Vect()))+(PosPiontmp->Angle(neutralPion->Vect()))));
2313 Pi0tmp->SetPxPyPzE(neutralPion->Px(), neutralPion->Py(), neutralPion->Pz(), neutralPion->Energy());
2358 else if(
fNeutralPionMode == 1 && EventPiZeroGoodMeson.Pt() < 1.0)
continue;
2359 else if(
fNeutralPionMode == 2 && EventPiZeroGoodMeson.Pt() < 1.5)
continue;
2366 if(EventPiMiMeson && EventPiPlMeson){
2371 for(
Int_t iPrevious1=0; iPrevious1<EventPiPlMeson->size(); iPrevious1++){
2377 for(
Int_t iPrevious2=0; iPrevious2<EventPiMiMeson->size(); iPrevious2++){
2386 delete backPiPlPiMiCandidate;
2387 backPiPlPiMiCandidate = 0x0;
2390 delete backPiPlPiMiCandidate;
2391 backPiPlPiMiCandidate = 0x0;
2394 if(nEventsInBGMi!=nEventsInBGPl){
2397 if(
KinematicCut(&EventPiMiGoodMeson, &EventPiPlGoodMeson, &EventPiZeroGoodMeson, backgroundCandidate)){
2401 Pi0tmp->SetPxPyPzE(EventPiZeroGoodMeson.Px(), EventPiZeroGoodMeson.Py(), EventPiZeroGoodMeson.Pz(), EventPiZeroGoodMeson.Energy());
2411 delete backgroundCandidate;
2412 backgroundCandidate = 0x0;
2415 if(nEventsInBGMi==nEventsInBGPl){
2418 if(
KinematicCut(&EventPiMiGoodMeson, &EventPiPlGoodMeson, &EventPiZeroGoodMeson, backgroundCandidate)){
2422 Pi0tmp->SetPxPyPzE(EventPiZeroGoodMeson.Px(), EventPiZeroGoodMeson.Py(), EventPiZeroGoodMeson.Pz(), EventPiZeroGoodMeson.Energy());
2432 delete backgroundCandidate;
2433 backgroundCandidate = 0x0;
2436 delete PiPlPiMiBackgroundCandidate;
2437 PiPlPiMiBackgroundCandidate= 0x0;
2449 for(
Int_t iPrevious1=0; iPrevious1<EventPiPlMeson->size(); iPrevious1++){
2462 delete backPiPlPiMiCandidate;
2463 backPiPlPiMiCandidate = 0x0;
2466 delete backPiPlPiMiCandidate;
2467 backPiPlPiMiCandidate = 0x0;
2472 if(
KinematicCut(&EventPiNegGoodMeson, &EventPiPlGoodMeson, &EventPiZeroGoodMeson, backgroundCandidate)){
2476 Pi0tmp->SetPxPyPzE(EventPiZeroGoodMeson.Px(), EventPiZeroGoodMeson.Py(), EventPiZeroGoodMeson.Pz(), EventPiZeroGoodMeson.Energy());
2487 delete backgroundCandidate;
2488 backgroundCandidate = 0x0;
2490 delete PiPlPiMiBackgroundCandidate;
2491 PiPlPiMiBackgroundCandidate = 0x0;
2505 for(
Int_t iPrevious2=0; iPrevious2<EventPiMiMeson->size(); iPrevious2++){
2514 delete backPiPlPiMiCandidate;
2515 backPiPlPiMiCandidate = 0x0;
2518 delete backPiPlPiMiCandidate;
2519 backPiPlPiMiCandidate = 0x0;
2524 if(
KinematicCut(&EventPiMiGoodMeson, &EventPiPosGoodMeson, &EventPiZeroGoodMeson, backgroundCandidate)){
2528 Pi0tmp->SetPxPyPzE(EventPiZeroGoodMeson.Px(), EventPiZeroGoodMeson.Py(), EventPiZeroGoodMeson.Pz(), EventPiZeroGoodMeson.Energy());
2538 delete backgroundCandidate;
2539 backgroundCandidate = 0x0;
2541 delete PiPlPiMiBackgroundCandidate;
2542 PiPlPiMiBackgroundCandidate = 0x0;
2551 else if(
fNeutralPionMode == 1 && EventPiZeroGoodMeson.Pt() < 1.0)
continue;
2552 else if(
fNeutralPionMode == 2 && EventPiZeroGoodMeson.Pt() < 1.5)
continue;
2559 if(EventPiMiMeson && EventPiPlMeson){
2565 for(
Int_t iPrevious1=0; iPrevious1<EventPiPlMeson->size(); iPrevious1++){
2572 for(
Int_t iPrevious2=0; iPrevious2<EventPiMiMeson->size(); iPrevious2++){
2581 delete backPiPlPiMiCandidate;
2582 backPiPlPiMiCandidate = 0x0;
2585 delete backPiPlPiMiCandidate;
2586 backPiPlPiMiCandidate = 0x0;
2589 if(nEventsInBGMi!=nEventsInBGPl){
2592 if(
KinematicCut(&EventPiMiGoodMeson, &EventPiPlGoodMeson, &EventPiZeroGoodMeson, backgroundCandidate)){
2596 Pi0tmp->SetPxPyPzE(EventPiZeroGoodMeson.Px(), EventPiZeroGoodMeson.Py(), EventPiZeroGoodMeson.Pz(), EventPiZeroGoodMeson.Energy());
2606 delete backgroundCandidate;
2607 backgroundCandidate = 0x0;
2609 if(nEventsInBGMi==nEventsInBGPl){
2612 if(
KinematicCut(&EventPiMiGoodMeson, &EventPiPlGoodMeson, &EventPiZeroGoodMeson, backgroundCandidate)){
2616 Pi0tmp->SetPxPyPzE(EventPiZeroGoodMeson.Px(), EventPiZeroGoodMeson.Py(), EventPiZeroGoodMeson.Pz(), EventPiZeroGoodMeson.Energy());
2626 delete backgroundCandidate;
2627 backgroundCandidate = 0x0;
2630 delete PiPlPiMiBackgroundCandidate;
2631 PiPlPiMiBackgroundCandidate = 0x0;
2642 for(
Int_t iPrevious1=0; iPrevious1<EventPiPlMeson->size(); iPrevious1++){
2654 delete backPiPlPiMiCandidate;
2655 backPiPlPiMiCandidate = 0x0;
2658 delete backPiPlPiMiCandidate;
2659 backPiPlPiMiCandidate = 0x0;
2664 if(
KinematicCut(&EventPiNegGoodMeson, &EventPiPlGoodMeson, &EventPiZeroGoodMeson, backgroundCandidate)){
2668 Pi0tmp->SetPxPyPzE(EventPiZeroGoodMeson.Px(), EventPiZeroGoodMeson.Py(), EventPiZeroGoodMeson.Pz(), EventPiZeroGoodMeson.Energy());
2678 delete backgroundCandidate;
2679 backgroundCandidate = 0x0;
2681 delete PiPlPiMiBackgroundCandidate;
2682 PiPlPiMiBackgroundCandidate = 0x0;
2695 for(
Int_t iPrevious2=0; iPrevious2<EventPiMiMeson->size(); iPrevious2++){
2704 delete backPiPlPiMiCandidate;
2705 backPiPlPiMiCandidate = 0x0;
2708 delete backPiPlPiMiCandidate;
2709 backPiPlPiMiCandidate = 0x0;
2714 if(
KinematicCut(&EventPiMiGoodMeson, &EventPiPosGoodMeson, &EventPiZeroGoodMeson, backgroundCandidate)){
2718 Pi0tmp->SetPxPyPzE(EventPiZeroGoodMeson.Px(), EventPiZeroGoodMeson.Py(), EventPiZeroGoodMeson.Pz(), EventPiZeroGoodMeson.Energy());
2728 delete backgroundCandidate;
2729 backgroundCandidate = 0x0;
2731 delete PiPlPiMiBackgroundCandidate;
2732 PiPlPiMiBackgroundCandidate = 0x0;
2743 if((omega->Pt())<=5.){
2744 if((omega->Angle(pospion->Vect())) < ((2.78715*(TMath::Exp(-0.589934*(omega->Pt()))+0.0519574))*
fTolerance) &&
2745 (omega->Angle(negpion->Vect())) < ((5.94216*(TMath::Exp(-0.444428*(omega->Pt()))-0.0574076))*
fTolerance) &&
2746 (omega->Angle(neutpion->Vect())) < ((2.79529*(TMath::Exp(-0.565999*(omega->Pt()))+0.0413576))*
fTolerance) &&
2747 (pospion->Angle(negpion->Vect())) < ((3.14446*(TMath::Exp(-0.666433*(omega->Pt()))+0.0964309))*
fTolerance) &&
2748 (pospion->Angle(neutpion->Vect())) < ((3.08241*(TMath::Exp(-0.650657*(omega->Pt()))+0.0997539))*
fTolerance) &&
2749 (negpion->Angle(neutpion->Vect())) < ((3.18536*(TMath::Exp(-0.752847*(omega->Pt()))+0.1262780))*
fTolerance)
2754 if((omega->Angle(pospion->Vect())) < ((0.459270*(TMath::Exp(-0.126007*(omega->Pt()))+0.100475))*
fTolerance) &&
2755 (omega->Angle(negpion->Vect())) < ((0.521250*(TMath::Exp(-0.152532*(omega->Pt()))+0.114617))*
fTolerance) &&
2756 (omega->Angle(neutpion->Vect())) < ((0.409766*(TMath::Exp(-0.108566*(omega->Pt()))+0.103594))*
fTolerance) &&
2757 (pospion->Angle(negpion->Vect())) < ((0.709206*(TMath::Exp(-0.149072*(omega->Pt()))+0.111345))*
fTolerance) &&
2758 (pospion->Angle(neutpion->Vect())) < ((0.662184*(TMath::Exp(-0.123397*(omega->Pt()))+0.104675))*
fTolerance) &&
2759 (negpion->Angle(neutpion->Vect())) < ((0.730228*(TMath::Exp(-0.120859*(omega->Pt()))+0.105522))*
fTolerance)
2773 Bool_t isTrueEta = kFALSE;
2774 Bool_t isTrueOmega = kFALSE;
2779 if ( !(trueMesonFlag == 1 && pi0MCLabel != -1))
return;
2784 Int_t virtualParticleMotherLabel = -1;
2785 Bool_t isPiPiDecay = kFALSE;
2792 if(virtualParticleMCLabel != -1){
2798 if(TMath::Abs(negativeMC->GetPdgCode())==211 && TMath::Abs(positiveMC->GetPdgCode())==211){
2799 virtualParticleMotherLabel=virtualParticleMCLabel;
2812 Int_t pi0MotherMCLabel = ((TParticle*)
fMCEvent->Particle(pi0MCLabel))->GetMother(0);
2813 if(virtualParticleMCLabel != -1){
2820 if( pi0MotherMCLabel>-1 && pi0MotherMCLabel == virtualParticleMotherLabel ){
2821 if(((TParticle*)
fMCEvent->Particle(virtualParticleMotherLabel))->GetPdgCode() == 221){
2826 if(((TParticle*)
fMCEvent->Particle(virtualParticleMotherLabel))->GetPdgCode() == 223){
2835 if( isTrueEta || isTrueOmega ){
2849 PosPiontmp->SetPxPyPzE(positiveMC->Px(), positiveMC->Py(), positiveMC->Pz(), positiveMC->Energy());
2851 NegPiontmp->SetPxPyPzE(negativeMC->Px(), negativeMC->Py(), negativeMC->Pz(), negativeMC->Energy());
2853 fHistoTrueAngleSum[
fiCut]->Fill(mesoncand->Pt(),((PosPiontmp->Angle(mesoncand->Vect()))+(NegPiontmp->Angle(PosPiontmp->Vect()))+(PosPiontmp->Angle(TrueNeutralPionCandidate->Vect()))));
2855 delete PosPiontmp; PosPiontmp = 0x0;
2856 delete NegPiontmp; NegPiontmp = 0x0;
2899 Double_t dx = vertex->
fX - fInputEvent->GetPrimaryVertex()->GetX();
2900 Double_t dy = vertex->
fY - fInputEvent->GetPrimaryVertex()->GetY();
2901 Double_t dz = vertex->
fZ - fInputEvent->GetPrimaryVertex()->GetZ();
2911 pi0.SetPdgCode(111);
2916 Int_t signPz = particle->Pz()<0?-1:1;
2918 Double_t pz = signPz*TMath::Sqrt(TMath::Abs(pow(PdgMass,2)-pow(energy,2)+pow(px,2)+pow(py,2)));
2919 particle->SetPxPyPzE(px,py,pz,energy);
2929 if(label<0)
return kFALSE;
2930 Int_t motherLabel =
fMCEvent->Particle( label )->GetMother(0);
2931 if( motherLabel < 0 || motherLabel >=
fMCEvent->GetNumberOfTracks() )
return kFALSE;
2933 TParticle* mother =
fMCEvent->Particle( motherLabel );
2935 if( mother->GetPdgCode() != 221 )
return kFALSE;
2946 if(label<0)
return kFALSE;
2947 Int_t motherLabel =
fMCEvent->Particle( label )->GetMother(0);
2948 if( motherLabel < 0 || motherLabel >=
fMCEvent->GetNumberOfTracks() )
return kFALSE;
2950 TParticle* mother =
fMCEvent->Particle( motherLabel );
2952 if( mother->GetPdgCode() != 223 )
return kFALSE;
2963 if( fMCMother->GetNDaughters() != 3 )
return kFALSE;
2965 if( !(fMCMother->GetPdgCode() == 221 || fMCMother->GetPdgCode() == 223) )
return kFALSE;
2968 TParticle *posPion = 0x0;
2969 TParticle *negPion = 0x0;
2970 TParticle *neutPion = 0x0;
2972 for(
Int_t index= fMCMother->GetFirstDaughter();index<= fMCMother->GetLastDaughter();index++){
2973 if(index<0)
continue;
2974 TParticle* temp = (TParticle*)
fMCEvent->Particle( index );
2976 switch( temp->GetPdgCode() ) {
2988 if( posPion && negPion && neutPion)
return kTRUE;
2998 if(label<0)
return kFALSE;
2999 Int_t motherLabel =
fMCEvent->Particle( label )->GetMother(0);
3000 if( motherLabel < 0 || motherLabel >=
fMCEvent->GetNumberOfTracks() )
return kFALSE;
3002 TParticle* mother =
fMCEvent->Particle( motherLabel );
3004 if( mother->GetPdgCode() != 111 )
return kFALSE;
3006 Int_t grandMotherLabel = mother->GetMother(0);
3007 if( grandMotherLabel < 0 || grandMotherLabel >=
fMCEvent->GetNumberOfTracks() )
return kFALSE;
3008 TParticle* grandmother =
fMCEvent->Particle( grandMotherLabel );
3017 if(tobechecked > -1)
3019 vector<Int_t>::iterator it;
3020 it = find (vec.begin(), vec.end(), tobechecked);
3021 if (it != vec.end())
return true;
3023 vec.push_back(tobechecked);
TParticle * GetMCParticle(AliMCEvent *mcEvent)
TH2F ** fHistoMotherSameSameDiff2BackInvMassFixedPzPi0Pt
TH1F ** fHistoTrueNegPionFromNeutralMesonPt
Int_t GetMCLabelPositive() const
void CalculateMesonCandidates()
TH2F ** fHistoMotherSameDiff1Diff1BackInvMassSubPi0Pt
vector< Int_t > GetReconstructedPosPionIndex()
void ProcessTrueNeutralPionCandidatesPureCalo(AliAODConversionMother *Pi0Candidate, AliAODConversionPhoton *TrueGammaCandidate0, AliAODConversionPhoton *TrueGammaCandidate1)
Bool_t IsPiPlPiMiPiZeroDecay(TParticle *fMCMother) const
TH2F ** fHistoMotherSameDiff1Diff2BackInvMassFixedPzPi0Pt
void SetCaloClusterRef(Long_t ref)
void SetLabels(Int_t label1, Int_t label2, Int_t label3=0)
TList * fNeutralPionMesonCutArray
vector< Int_t > fVectorDoubleCountTruePi0s
array of histos with double counted photons, R, pT
GammaConversionVertex * GetBGEventVertex(Int_t zbin, Int_t mbin, Int_t event)
vector< Int_t > fSelectorNegPionIndex
void SetCaloPhotonMCFlags(AliMCEvent *mcEvent, Bool_t enableSort)
TH1F ** fHistoMCGammaFromNeutralMesonPt
TH2F ** fHistoMotherSameDiff1SameBackInvMassSubPi0Pt
TList * fNeutralPionCandidates
good calo gammas after selection
TH2F ** fHistoTrueMotherPiPlPiMiPiZeroInvMassPt
vector< Int_t > fVectorDoubleCountTrueOmegas
vector containing labels of validated eta
TH1F ** fHistoMCPosPionsFromNeutralMesonPt
TH2F ** fHistoGammaGammaInvMassPt
TH2F ** fHistoTrueMotherGammaGammaInvMassPt
TH2F ** fHistoTruePionPionFromSameMotherInvMassPt
TH2F ** fHistoTrueMotherGammaGammaFromEtaInvMassPt
ClassImp(AliAnalysisTaskNeutralMesonToPiPlPiMiPiZero) AliAnalysisTaskNeutralMesonToPiPlPiMiPiZero
TH2F ** fHistoTrueAngleSum
TH2F ** fHistoAnglePiZeroPiMi
Int_t GetNumberOfPrimaryTracks()
virtual void UserExec(Option_t *)
TH1F ** fHistoTrueConvGammaPt
TH1F ** fHistoConvGammaEta
TH1I ** fHistoNGoodESDTracks
TH2F ** fHistoMotherSameSameDiff2BackInvMassSubPi0Pt
void AddMesonEvent(TList *const eventMothers, Double_t xvalue, Double_t yvalue, Double_t zvalue, Int_t multiplicity, Double_t epvalue=-100)
TH1F ** fHistoTruePosPionPt
vector< Int_t > fVectorDoubleCountTrueEtas
vector containing labels of validated pi0
void SetProductionPoint(Double_t *point)
void SetTrueMesonValue(Int_t trueMeson)
void ProcessTrueMesonCandidates(AliAODConversionMother *Pi0Candidate, AliAODConversionMother *TrueNeutralPionCandidate, AliAODConversionPhoton *TrueVirtualGammaCandidate)
TParticle * GetPositiveMCDaughter(AliMCEvent *mcEvent)
Bool_t IsOmegaPiPlPiMiPiZeroDaughter(Int_t label) const
void SetCaloPhotonMCLabel(Int_t i, Int_t labelCaloPhoton)
TH1F ** fHistoTruePosPionFromNeutralMesonPt
TH2F ** fHistoMotherInvMassPtRejectedKinematic
TH1F ** fHistoConvGammaPt
virtual void Terminate(const Option_t *)
TH1F ** fHistoMCNegPionsFromNeutralMesonPt
TH1F ** fHistoMCAllGammaPt
Int_t GetTrueMesonValue() const
virtual void UserCreateOutputObjects()
TList * fClusterCandidates
TH2F ** fHistoMotherSameDiff1SameBackInvMassPt
TParticle * GetNegativeMCDaughter(AliMCEvent *mcEvent)
TH2F ** fHistoAngleOmegaPiPlPiMi
TH1F ** fHistoClusterGammaPt
TH2F ** fHistoTruePionPionFromEtaInvMassPt
Class handling all kinds of selection cuts for Gamma Calo analysis.
TH2F ** fHistoAngleOmegaPiPl
void ProcessTrueCaloPhotonCandidates(AliAODConversionPhoton *TruePhotonCandidate)
void FixPzToMatchPDGInvMassPi0(AliAODConversionMother *particle)
Int_t GetTrackLabelNegative() const
std::vector< AliAODConversionMother * > AliGammaConversionMotherAODVector
TH1F ** fHistoMCAllNegPionsPt
void UpdateEventByEventData()
TH1I ** fHistoNEvents
vector containing labels of validated photons
TH2F ** fHistoPionPionInvMassPt
Int_t GetTrackLabelPositive() const
void ProcessCaloPhotonCandidates()
AliConversionPhotonCuts * GetConversionCuts()
TH2F ** fHistoTruePionPionFromOmegaInvMassPt
Int_t GetTrackLabel(Int_t i) const
TH1F ** fHistoMCAllPosPionsPt
TH1F ** fHistoMCOmegaPiPlPiMiPiZeroPt
TH2F ** fHistoMotherSameDiff1Diff2BackInvMassSubPi0Pt
TH2F ** fHistoAnglePiPlPiZero
TH2F ** fHistoMotherSameDiff1Diff1BackInvMassPt
Class handling all kinds of selection cuts for Gamma Conversion analysis.
TProfile ** fProfileEtaShift
void ProcessNeutralPionCandidatesPureCalo()
TList * fPosPionCandidates
TH2F ** fHistoPosPionClsTPC
virtual ~AliAnalysisTaskNeutralMesonToPiPlPiMiPiZero()
Int_t GetMCParticleLabel(AliMCEvent *mcEvent)
TH2F ** fHistoDoubleCountTrueConvGammaRPt
array of histos with double counted omegas, invMass, pT
TH2F ** fHistoPionTPCdEdxNSigma
Bool_t IsLargestComponentElectron()
TH2F ** fHistoMotherSameDiff1Diff1BackInvMassFixedPzPi0Pt
Bool_t GammaIsNeutralMesonPiPlPiMiPiZeroDaughter(Int_t label) const
Bool_t Data(TH1F *h, Double_t *rangefit, Bool_t writefit, Double_t &sgn, Double_t &errsgn, Double_t &bkg, Double_t &errbkg, Double_t &sgnf, Double_t &errsgnf, Double_t &sigmafit, Int_t &status)
Int_t GetCaloPhotonMCLabel(Int_t i)
void ProcessConversionPhotonCandidates()
TH2F ** fHistoPionTPCdEdx
TH2F ** fHistoMotherInvMassPt
TH1F ** fHistoMCConvGammaPt
void ProcessMCParticles()
Int_t GetMCLabelNegative() const
void ProcessTrueNeutralPionCandidatesPureConversions(AliAODConversionMother *Pi0Candidate, AliAODConversionPhoton *TrueGammaCandidate0, AliAODConversionPhoton *TrueGammaCandidate1)
Int_t GetNBGEvents() const
Bool_t fMoveParticleAccordingToVertex
Int_t GetNCaloPhotonMCLabels()
TH2F ** fHistoMotherInvMassFixedPzPi0
Int_t GetZBinIndex(Double_t z) const
TH2F ** fHistoTrueMotherGammaGammaFromOmegaInvMassPt
TH1F ** fHistoClusterGammaEta
TList * GetCaloTrackMatcherHistograms()
TH2F ** fHistoMotherSameDiff1SameBackInvMassFixedPzPi0Pt
Double_t GetProductionZ() const
Double_t GetProductionX() const
TH2F ** fHistoTruePionPionInvMassPt
void ProcessNeutralPionCandidatesPureConversions()
TH2F ** fHistoMotherSameDiff1Diff2BackInvMassPt
AliGammaConversionMotherAODVector * GetBGGoodMesons(Int_t zbin, Int_t mbin, Int_t event)
void ProcessPionCandidates()
TH2F ** fHistoAngleOmegaPiZero
void ProcessNeutralPionCandidatesMixedConvCalo()
TH1F ** fHistoMCEtaPiPlPiMiPiZeroInAccPt
vector< Int_t > fVectorDoubleCountTrueConvGammas
vector containing labels of validated omega
Class handling all kinds of selection cuts for Gamma Conversion analysis.
TH2F ** fHistoDoubleCountTrueEtaInvMassPt
array of histos with double counted pi0s, invMass, pT
void SetNCaloPhotonMCLabels(Int_t nLabels)
TClonesArray * GetReconstructedGammas() const
AliPrimaryPionCuts * GetPrimaryPionCuts()
TH2F ** fHistoDoubleCountTrueOmegaInvMassPt
array of histos with double counted etas, invMass, pT
TH2F ** fHistoMotherInvMassSubPi0
Bool_t KinematicCut(AliAODConversionMother *negpion, AliAODConversionMother *pospion, AliAODConversionMother *neutpion, AliAODConversionMother *omega)
TClonesArray * fReaderGammas
Class handling all kinds of selection cuts for Gamma Conversion analysis.
TH2F ** fHistoAngleOmegaPiMi
Double_t GetProductionY() const
TH1F ** fHistoTrueConvGammaFromNeutralMesonPt
vector< Int_t > fSelectorPosPionIndex
AliConvEventCuts * GetEventCuts()
AliV0ReaderV1 * fV0Reader
Int_t GetMultiplicityBinIndex(Int_t mult) const
TH1F ** fHistoTrueNegPionPt
void MoveParticleAccordingToVertex(AliAODConversionMother *particle, const AliGammaConversionAODBGHandler::GammaConversionVertex *vertex)
TH2F ** fHistoMotherSameSameDiff2BackInvMassPt
TH2F ** fHistoSPDClusterTrackletBackground
TH2F ** fHistoDoubleCountTruePi0InvMassPt
void ProcessTrueConversionPhotonCandidates(AliAODConversionPhoton *)
TH1F ** fHistoTrueClusterGammaFromNeutralMesonPt
TH1F ** fHistoTrueClusterGammaPt
void ProcessTrueNeutralPionCandidatesMixedConvCalo(AliAODConversionMother *Pi0Candidate, AliAODConversionPhoton *TrueGammaCandidate0, AliAODConversionPhoton *TrueGammaCandidate1)
AliPrimaryPionSelector * fPionSelector
Bool_t IsEtaPiPlPiMiPiZeroDaughter(Int_t label) const
vector< Int_t > GetReconstructedNegPionIndex()
TList * fGoodVirtualParticles
Long_t GetCaloClusterRef() const
TH2F ** fHistoAnglePiPlPiMi
TH1F ** fHistoMCEtaPiPlPiMiPiZeroPt
void CalculateDistanceOfClossetApproachToPrimVtx(const AliVVertex *primVertex)
Bool_t CheckVectorForDoubleCount(vector< Int_t > &vec, Int_t tobechecked)
Bool_t IsLargestComponentPhoton()
TH2F ** fHistoNegPionClsTPC
AliGammaConversionAODBGHandler ** fBGHandlerPiPl
void CalculateBackground()
Double_t GetConversionRadius() const
AliGammaConversionAODBGHandler ** fBGHandlerPiMi
void ProcessTrueNeutralPionCandidatesPureConversionsAOD(AliAODConversionMother *Pi0Candidate, AliAODConversionPhoton *TrueGammaCandidate0, AliAODConversionPhoton *TrueGammaCandidate1)
AliAnalysisTaskNeutralMesonToPiPlPiMiPiZero()
TH1F ** fHistoMCOmegaPiPlPiMiPiZeroInAccPt
TList * fNegPionCandidates