29 #include "THnSparse.h"
32 #include "AliAnalysisTask.h"
33 #include "AliAnalysisManager.h"
34 #include "AliESDEvent.h"
35 #include "AliESDInputHandler.h"
36 #include "AliMCEventHandler.h"
37 #include "AliMCEvent.h"
38 #include "AliMCParticle.h"
39 #include "AliCentrality.h"
40 #include "AliESDVZERO.h"
41 #include "AliESDpid.h"
43 #include "AliVParticle.h"
44 #include "AliESDtrack.h"
45 #include "AliESDtrackCuts.h"
46 #include "AliKFVertex.h"
48 #include "AliGenCocktailEventHeader.h"
49 #include "AliAODMCParticle.h"
50 #include "AliAODMCHeader.h"
51 #include "AliEventplane.h"
53 #include "AliAODEvent.h"
54 #include "AliAODInputHandler.h"
55 #include "AliESDEvent.h"
56 #include "AliESDInputHandler.h"
57 #include "AliInputEventHandler.h"
67 fV0ReaderName("V0ReaderV1"),
68 fDoLightOutput(kFALSE),
75 fHeaderNameList(NULL),
76 fOutputContainer(NULL),
77 fNClusterCandidates(0),
78 fNClusterMergedCandidates(0),
81 fClusterCutArray(NULL),
82 fClusterMergedCutArray(NULL),
85 fHistoMotherInvMassPt(NULL),
86 fHistoMotherPtY(NULL),
87 fHistoMotherPtAlpha(NULL),
88 fHistoClusGammaPt(NULL),
89 fHistoClusGammaE(NULL),
90 fHistoClusOverlapHeadersGammaPt(NULL),
91 fHistoClusNLMPt(NULL),
92 fHistoClusMergedPtvsM02(NULL),
93 fHistoClusMergedPtvsM02Accepted(NULL),
94 fHistoClusMergedEvsM02Accepted(NULL),
95 fHistoClusNCellsPt(NULL),
96 fHistoClusMergedNCellsPt(NULL),
97 fHistoClusMergedNParticlePt(NULL),
98 fHistoClusMergedNCellsAroundPt(NULL),
99 fHistoClusMergedNCellsAroundAndInPt(NULL),
100 fHistoClusMergedEAroundE(NULL),
101 fHistoMCHeaders(NULL),
103 fHistoMCPi0WOWeightPt(NULL),
104 fHistoMCPi0WOEvtWeightPt(NULL),
106 fHistoMCEtaWOWeightPt(NULL),
107 fHistoMCEtaWOEvtWeightPt(NULL),
108 fHistoMCPi0DalitzPt(NULL),
109 fHistoMCPi0DalitzWOWeightPt(NULL),
110 fHistoMCPi0DalitzWOEvtWeightPt(NULL),
111 fHistoMCEtaDalitzPt(NULL),
112 fHistoMCEtaDalitzWOWeightPt(NULL),
113 fHistoMCEtaDalitzWOEvtWeightPt(NULL),
114 fHistoMCPi0InAccPt(NULL),
115 fHistoMCEtaInAccPt(NULL),
116 fHistoMCPi0WOEvtWeightInAccPt(NULL),
117 fHistoMCEtaWOEvtWeightInAccPt(NULL),
118 fHistoMCPi0DalitzInAccPt(NULL),
119 fHistoMCEtaDalitzInAccPt(NULL),
120 fHistoMCPi0DalitzWOEvtWeightInAccPt(NULL),
121 fHistoMCEtaDalitzWOEvtWeightInAccPt(NULL),
122 fHistoMCSecPi0PtvsSource(NULL),
123 fHistoMCSecPi0InAccPtvsSource(NULL),
124 fHistoMCPi0PtJetPt(NULL),
125 fHistoMCEtaPtJetPt(NULL),
126 fHistoMCPrimaryPtvsSource(NULL),
127 fHistoMCPrimaryYvsSource(NULL),
128 fHistoMCDecayGammaPt(NULL),
129 fHistoMCAllGammaPt(NULL),
130 fHistoTrueClusMergedPtvsM02(NULL),
131 fHistoTrueClusPi0PtvsM02(NULL),
132 fHistoTrueClusPi0DalitzPtvsM02(NULL),
133 fHistoTrueClusPrimPi0PtvsM02(NULL),
134 fHistoTrueClusSecPi0PtvsM02(NULL),
135 fHistoTrueClusSecPi0FromK0sPtvsM02(NULL),
136 fHistoTrueClusSecPi0FromK0lPtvsM02(NULL),
137 fHistoTrueClusSecPi0FromLambdaPtvsM02(NULL),
138 fHistoTrueClusEtaPtvsM02(NULL),
139 fHistoTrueClusEtaDalitzPtvsM02(NULL),
140 fHistoTrueClusMergedPureFromPi0PtvsM02(NULL),
141 fHistoTrueClusMergedPureFromEtaPtvsM02(NULL),
142 fHistoTrueClusMergedPartConvFromPi0PtvsM02(NULL),
143 fHistoTrueClusMergedPartConvFromEtaPtvsM02(NULL),
144 fHistoTrueClusGammaFromPi0PtvsM02(NULL),
145 fHistoTrueClusGammaFromEtaPtvsM02(NULL),
146 fHistoTrueClusElectronFromPi0PtvsM02(NULL),
147 fHistoTrueClusElectronFromEtaPtvsM02(NULL),
148 fHistoTrueSecPi0PtvsDiffReco(NULL),
149 fHistoTrueClusBGPtvsM02(NULL),
150 fHistoTrueClusGammaPtvsM02(NULL),
151 fHistoTrueClusGammaPartConvPtvsM02(NULL),
152 fHistoTrueClusElectronPtvsM02(NULL),
153 fHistoTrueClusElectronFromGammaPtvsM02(NULL),
154 fHistoTrueClusMergedInvMassvsPt(NULL),
155 fHistoTrueClusPi0InvMassvsPt(NULL),
156 fHistoTrueClusPrimPi0InvMassvsPt(NULL),
157 fHistoTrueClusEtaInvMassvsPt(NULL),
158 fHistoTrueClusBGInvMassvsPt(NULL),
159 fHistoTrueClusGammaInvMassvsPt(NULL),
160 fHistoTrueClusElectronInvMassvsPt(NULL),
161 fHistoTrueClusBGPtvsSource(NULL),
162 fHistoTrueClusGammaPtvsSource(NULL),
163 fHistoTrueClusElectronPtvsSource(NULL),
164 fHistoTrueMergedMissedPDG(NULL),
165 fHistoTruePi0PtY(NULL),
166 fHistoTrueEtaPtY(NULL),
167 fHistoTruePi0PtAlpha(NULL),
168 fHistoTrueEtaPtAlpha(NULL),
169 fHistoTrueClusGammaEM02(NULL),
170 fHistoTrueClusElectronEM02(NULL),
171 fHistoTrueClusPi0EM02(NULL),
172 fHistoTrueClusEtaEM02(NULL),
173 fHistoTruePrimaryPi0PureMergedMCPtResolPt(NULL),
174 fHistoTruePrimaryPi0MergedPartConvMCPtResolPt(NULL),
175 fHistoTruePrimaryPi01GammaMCPtResolPt(NULL),
176 fHistoTruePrimaryPi01ElectronMCPtResolPt(NULL),
177 fHistoTruePrimaryEtaMCPtResolPt(NULL),
178 fHistoTrueSecondaryPi0MCPtResolPt(NULL),
179 fHistoDoubleCountTruePi0PtvsM02(NULL),
180 fHistoDoubleCountTrueSecPi0Pt(NULL),
181 fHistoDoubleCountTrueEtaPtvsM02(NULL),
182 fVectorDoubleCountTruePi0s(0),
183 fVectorDoubleCountTrueEtas(0),
185 fHistoNEventsWOWeight(NULL),
186 fHistoNGoodESDTracks(NULL),
188 fHistoNClusterCandidates(NULL),
189 fHistoNClusterMergedCandidates(NULL),
190 fHistoNGoodESDTracksVsNClusterCandidates(NULL),
191 fHistoSPDClusterTrackletBackground(NULL),
192 fHistoNV0Tracks(NULL),
193 fProfileEtaShift(NULL),
194 fProfileJetJetXSection(NULL),
195 fHistoJetJetNTrials(NULL),
202 fIsFromMBHeader(kTRUE),
203 fIsOverlappingWithOtherHeader(kFALSE),
205 fSetPlotHistsExtQA(kFALSE),
208 fEnableDetailedPrintOut(kFALSE),
209 fEnableSortForClusMC(kFALSE),
211 fFileNameBroken(NULL)
220 fV0ReaderName(
"V0ReaderV1"),
221 fDoLightOutput(kFALSE),
228 fHeaderNameList(NULL),
229 fOutputContainer(NULL),
230 fNClusterCandidates(0),
231 fNClusterMergedCandidates(0),
232 fEventCutArray(NULL),
234 fClusterCutArray(NULL),
235 fClusterMergedCutArray(NULL),
236 fMesonCutArray(NULL),
238 fHistoMotherInvMassPt(NULL),
239 fHistoMotherPtY(NULL),
240 fHistoMotherPtAlpha(NULL),
241 fHistoClusGammaPt(NULL),
242 fHistoClusGammaE(NULL),
243 fHistoClusOverlapHeadersGammaPt(NULL),
244 fHistoClusNLMPt(NULL),
245 fHistoClusMergedPtvsM02(NULL),
246 fHistoClusMergedPtvsM02Accepted(NULL),
247 fHistoClusMergedEvsM02Accepted(NULL),
248 fHistoClusNCellsPt(NULL),
249 fHistoClusMergedNCellsPt(NULL),
250 fHistoClusMergedNParticlePt(NULL),
251 fHistoClusMergedNCellsAroundPt(NULL),
252 fHistoClusMergedNCellsAroundAndInPt(NULL),
253 fHistoClusMergedEAroundE(NULL),
254 fHistoMCHeaders(NULL),
256 fHistoMCPi0WOWeightPt(NULL),
257 fHistoMCPi0WOEvtWeightPt(NULL),
259 fHistoMCEtaWOWeightPt(NULL),
260 fHistoMCEtaWOEvtWeightPt(NULL),
261 fHistoMCPi0DalitzPt(NULL),
262 fHistoMCPi0DalitzWOWeightPt(NULL),
263 fHistoMCPi0DalitzWOEvtWeightPt(NULL),
264 fHistoMCEtaDalitzPt(NULL),
265 fHistoMCEtaDalitzWOWeightPt(NULL),
266 fHistoMCEtaDalitzWOEvtWeightPt(NULL),
267 fHistoMCPi0InAccPt(NULL),
268 fHistoMCEtaInAccPt(NULL),
269 fHistoMCPi0WOEvtWeightInAccPt(NULL),
270 fHistoMCEtaWOEvtWeightInAccPt(NULL),
271 fHistoMCPi0DalitzInAccPt(NULL),
272 fHistoMCEtaDalitzInAccPt(NULL),
273 fHistoMCPi0DalitzWOEvtWeightInAccPt(NULL),
274 fHistoMCEtaDalitzWOEvtWeightInAccPt(NULL),
275 fHistoMCSecPi0PtvsSource(NULL),
276 fHistoMCSecPi0InAccPtvsSource(NULL),
277 fHistoMCPi0PtJetPt(NULL),
278 fHistoMCEtaPtJetPt(NULL),
279 fHistoMCPrimaryPtvsSource(NULL),
280 fHistoMCPrimaryYvsSource(NULL),
281 fHistoMCDecayGammaPt(NULL),
282 fHistoMCAllGammaPt(NULL),
283 fHistoTrueClusMergedPtvsM02(NULL),
284 fHistoTrueClusPi0PtvsM02(NULL),
285 fHistoTrueClusPi0DalitzPtvsM02(NULL),
286 fHistoTrueClusPrimPi0PtvsM02(NULL),
287 fHistoTrueClusSecPi0PtvsM02(NULL),
288 fHistoTrueClusSecPi0FromK0sPtvsM02(NULL),
289 fHistoTrueClusSecPi0FromK0lPtvsM02(NULL),
290 fHistoTrueClusSecPi0FromLambdaPtvsM02(NULL),
291 fHistoTrueClusEtaPtvsM02(NULL),
292 fHistoTrueClusEtaDalitzPtvsM02(NULL),
293 fHistoTrueClusMergedPureFromPi0PtvsM02(NULL),
294 fHistoTrueClusMergedPureFromEtaPtvsM02(NULL),
295 fHistoTrueClusMergedPartConvFromPi0PtvsM02(NULL),
296 fHistoTrueClusMergedPartConvFromEtaPtvsM02(NULL),
297 fHistoTrueClusGammaFromPi0PtvsM02(NULL),
298 fHistoTrueClusGammaFromEtaPtvsM02(NULL),
299 fHistoTrueClusElectronFromPi0PtvsM02(NULL),
300 fHistoTrueClusElectronFromEtaPtvsM02(NULL),
301 fHistoTrueSecPi0PtvsDiffReco(NULL),
302 fHistoTrueClusBGPtvsM02(NULL),
303 fHistoTrueClusGammaPtvsM02(NULL),
304 fHistoTrueClusGammaPartConvPtvsM02(NULL),
305 fHistoTrueClusElectronPtvsM02(NULL),
306 fHistoTrueClusElectronFromGammaPtvsM02(NULL),
307 fHistoTrueClusMergedInvMassvsPt(NULL),
308 fHistoTrueClusPi0InvMassvsPt(NULL),
309 fHistoTrueClusPrimPi0InvMassvsPt(NULL),
310 fHistoTrueClusEtaInvMassvsPt(NULL),
311 fHistoTrueClusBGInvMassvsPt(NULL),
312 fHistoTrueClusGammaInvMassvsPt(NULL),
313 fHistoTrueClusElectronInvMassvsPt(NULL),
314 fHistoTrueClusBGPtvsSource(NULL),
315 fHistoTrueClusGammaPtvsSource(NULL),
316 fHistoTrueClusElectronPtvsSource(NULL),
317 fHistoTrueMergedMissedPDG(NULL),
318 fHistoTruePi0PtY(NULL),
319 fHistoTrueEtaPtY(NULL),
320 fHistoTruePi0PtAlpha(NULL),
321 fHistoTrueEtaPtAlpha(NULL),
322 fHistoTrueClusGammaEM02(NULL),
323 fHistoTrueClusElectronEM02(NULL),
324 fHistoTrueClusPi0EM02(NULL),
325 fHistoTrueClusEtaEM02(NULL),
326 fHistoTruePrimaryPi0PureMergedMCPtResolPt(NULL),
327 fHistoTruePrimaryPi0MergedPartConvMCPtResolPt(NULL),
328 fHistoTruePrimaryPi01GammaMCPtResolPt(NULL),
329 fHistoTruePrimaryPi01ElectronMCPtResolPt(NULL),
330 fHistoTruePrimaryEtaMCPtResolPt(NULL),
331 fHistoTrueSecondaryPi0MCPtResolPt(NULL),
332 fHistoDoubleCountTruePi0PtvsM02(NULL),
333 fHistoDoubleCountTrueSecPi0Pt(NULL),
334 fHistoDoubleCountTrueEtaPtvsM02(NULL),
335 fVectorDoubleCountTruePi0s(0),
336 fVectorDoubleCountTrueEtas(0),
338 fHistoNEventsWOWeight(NULL),
339 fHistoNGoodESDTracks(NULL),
341 fHistoNClusterCandidates(NULL),
342 fHistoNClusterMergedCandidates(NULL),
343 fHistoNGoodESDTracksVsNClusterCandidates(NULL),
344 fHistoSPDClusterTrackletBackground(NULL),
345 fHistoNV0Tracks(NULL),
346 fProfileEtaShift(NULL),
347 fProfileJetJetXSection(NULL),
348 fHistoJetJetNTrials(NULL),
355 fIsFromMBHeader(kTRUE),
356 fIsOverlappingWithOtherHeader(kFALSE),
358 fSetPlotHistsExtQA(kFALSE),
361 fEnableDetailedPrintOut(kFALSE),
362 fEnableSortForClusMC(kFALSE),
364 fFileNameBroken(NULL)
367 DefineOutput(1, TList::Class());
379 if(!
fV0Reader){printf(
"Error: No V0 Reader");
return;}
382 Int_t invMassBins = 800;
396 Int_t ptBinsDefClus = 500;
404 Int_t ptBinsLog = 200;
421 ptBinsDefClus = 1000;
434 ptBinsDefClus = 1000;
439 Int_t showerShapeBins = 500;
508 fCutFolder[iCut]->SetName(Form(
"Cut Number %s_%s_%s_%s",cutstringEvent.Data(), cutstringCalo.Data(), cutstringCaloMerged.Data(), cutstringMeson.Data()));
512 fESDList[iCut]->SetName(Form(
"%s_%s_%s_%s ESD histograms",cutstringEvent.Data(), cutstringCalo.Data(), cutstringCaloMerged.Data(), cutstringMeson.Data()));
516 fHistoNEvents[iCut] =
new TH1F(
"NEvents",
"NEvents",14,-0.5,13.5);
518 fHistoNEvents[iCut]->GetXaxis()->SetBinLabel(2,
"Centrality");
519 fHistoNEvents[iCut]->GetXaxis()->SetBinLabel(3,
"Miss. MC or inc. ev.");
521 TString TriggerNames =
"Not Trigger: ";
523 fHistoNEvents[iCut]->GetXaxis()->SetBinLabel(4,TriggerNames.Data());
528 fHistoNEvents[iCut]->GetXaxis()->SetBinLabel(6,
"Cont. Vertex");
532 fHistoNEvents[iCut]->GetXaxis()->SetBinLabel(10,
"EMCAL problems");
533 fHistoNEvents[iCut]->GetXaxis()->SetBinLabel(11,
"rejectedForJetJetMC");
534 fHistoNEvents[iCut]->GetXaxis()->SetBinLabel(12,
"SPD hits vs tracklet");
535 fHistoNEvents[iCut]->GetXaxis()->SetBinLabel(13,
"Out-of-Bunch pileup Past-Future");
536 fHistoNEvents[iCut]->GetXaxis()->SetBinLabel(14,
"Pileup V0M-TPCout Tracks");
545 TString TriggerNames =
"Not Trigger: ";
578 fHistoVertexZ[iCut] =
new TH1F(
"VertexZ",
"VertexZ",1000,-50,50);
610 fHistoNV0Tracks[iCut] =
new TH1F(
"V0 Multiplicity",
"V0 Multiplicity",30000,-0.5,29999.5);
612 fHistoNV0Tracks[iCut] =
new TH1F(
"V0 Multiplicity",
"V0 Multiplicity",2500,-0.5,2499.5);
614 fHistoNV0Tracks[iCut] =
new TH1F(
"V0 Multiplicity",
"V0 Multiplicity",1500,-0.5,1499.5);
630 fHistoClusGammaPt[iCut] =
new TH1F(
"ClusGamma_Pt",
"ClusGamma_Pt",ptBinsDefClus, startPtDefClus, endPtDefClus);
632 fHistoClusGammaE[iCut] =
new TH1F(
"ClusGamma_E",
"ClusGamma_E",ptBinsDefClus, startPtDefClus, endPtDefClus);
636 fHistoClusMergedPtvsM02[iCut] =
new TH2F(
"ClusMerged_Pt_M02",
"ClusMerged_Pt_M02",ptBins, startPt, endPt,showerShapeBins, startShowerShape, endShowerShape);
638 fHistoClusMergedPtvsM02Accepted[iCut] =
new TH2F(
"ClusMerged_Pt_M02_AcceptedMeson",
"ClusMerged_Pt_M02_AcceptedMeson",ptBins, startPt, endPt,showerShapeBins, startShowerShape, endShowerShape);
640 fHistoClusMergedEvsM02Accepted[iCut] =
new TH2F(
"ClusMerged_E_M02_AcceptedMeson",
"ClusMerged_E_M02_AcceptedMeson",ptBins, startPt, endPt, showerShapeBins, startShowerShape, endShowerShape);
642 fHistoClusNLMPt[iCut] =
new TH2F(
"ClusMerged_NLM_Pt_AcceptedMeson",
"ClusMerged_NLM_Pt_AcceptedMeson",12, -0.5, 11.5, ptBins, startPt, endPt);
657 fHistoClusNCellsPt[iCut] =
new TH2F(
"Clus_NCells_Pt",
"Clus_NCells_Pt",100,-0.5,99.5,ptBins, startPt, endPt);
665 fHistoClusMergedEAroundE[iCut] =
new TH2F(
"ClusMerged_EAroundClus_E",
"ClusMerged_EAroundClus_E",ptBinsDefClus, startPtDefClus, endPtDefClus, ptBins, startPt, endPt);
683 fHistoMotherInvMassPt[iCut] =
new TH2F(
"ESD_Mother_InvMass_Pt",
"ESD_Mother_InvMass_Pt",invMassBins, startMass, endMass,ptBins, startPt, endPt);
691 fHistoMotherPtY[iCut] =
new TH2F(
"ESD_Mother_Pt_Y",
"ESD_Mother_Pt_Y", ptBinsLog, startPtLog, endPtLog, 150, -1.5, 1.5);
694 fHistoMotherPtAlpha[iCut] =
new TH2F(
"ESD_Mother_Pt_Alpha",
"ESD_Mother_Pt_Alpha", ptBinsLog, startPtLog, endPtLog, 100, 0, 1);
826 fMCList[iCut]->SetName(Form(
"%s_%s_%s_%s MC histograms",cutstringEvent.Data(),cutstringCalo.Data(),cutstringCaloMerged.Data(), cutstringMeson.Data()));
827 fMCList[iCut]->SetOwner(kTRUE);
830 fHistoMCPi0Pt[iCut] =
new TH1F(
"MC_Pi0_Pt",
"MC_Pi0_Pt",ptBins, startPt, endPt);
833 fHistoMCEtaPt[iCut] =
new TH1F(
"MC_Eta_Pt",
"MC_Eta_Pt",ptBins, startPt, endPt);
859 fHistoMCDecayGammaPt[iCut] =
new TH1F(
"MC_DecayGamma_Pt",
"MC_DecayGamma_Pt",ptBins, startPt, endPt);
862 fHistoMCAllGammaPt[iCut] =
new TH1F(
"MC_AllGamma_Pt",
"MC_AllGamma_Pt",ptBins, startPt, endPt);
867 fHistoMCPi0WOWeightPt[iCut] =
new TH1F(
"MC_Pi0_WOWeights_Pt",
"MC_Pi0_WOWeights_Pt",ptBins, startPt, endPt);
869 fHistoMCPi0InAccPt[iCut] =
new TH1F(
"MC_Pi0InAcc_Pt",
"MC_Pi0InAcc_Pt",ptBins, startPt, endPt);
872 fHistoMCPi0DalitzPt[iCut] =
new TH1F(
"MC_Pi0Dalitz_Pt",
"MC_Pi0Dalitz_Pt",ptBins, startPt, endPt);
891 fHistoMCEtaWOWeightPt[iCut] =
new TH1F(
"MC_Eta_WOWeights_Pt",
"MC_Eta_WOWeights_Pt",ptBins, startPt, endPt);
893 fHistoMCEtaInAccPt[iCut] =
new TH1F(
"MC_EtaInAcc_Pt",
"MC_EtaInAcc_Pt",ptBins, startPt, endPt);
896 fHistoMCEtaDalitzPt[iCut] =
new TH1F(
"MC_EtaDalitz_Pt",
"MC_EtaDalitz_Pt",ptBins, startPt, endPt);
910 fHistoMCPi0WOEvtWeightPt[iCut] =
new TH1F(
"MC_Pi0_WOEventWeights_Pt",
"MC_Pi0_WOEventWeights_Pt",ptBins, startPt, endPt);
924 fHistoMCEtaWOEvtWeightPt[iCut] =
new TH1F(
"MC_Eta_WOEventWeights_Pt",
"MC_Eta_WOEventWeights_Pt",ptBins, startPt, endPt);
935 fHistoMCPi0PtJetPt[iCut] =
new TH2F(
"MC_Pi0_Pt_JetPt",
"MC_Pi0_Pt_JetPt", ptBinsLog, startPtLog, endPtLog, 200, -0.5, 199.5);
941 fHistoMCEtaPtJetPt[iCut] =
new TH2F(
"MC_Eta_Pt_JetPt",
"MC_Eta_Pt_JetPt", ptBinsLog, startPtLog, endPtLog, 200, -0.5, 199.5);
950 fTrueList[iCut]->SetName(Form(
"%s_%s_%s_%s True histograms",cutstringEvent.Data(),cutstringCalo.Data(),cutstringCaloMerged.Data(), cutstringMeson.Data()));
954 fHistoTrueClusMergedPtvsM02[iCut] =
new TH2F(
"ESD_TrueClusMerged_Pt_M02",
"ESD_TrueClusMerged_Pt_M02",ptBins, startPt, endPt,showerShapeBins, startShowerShape, endShowerShape);
956 fHistoTrueClusPi0PtvsM02 [iCut] =
new TH2F(
"ESD_TrueClusFromPi0_Pt_M02",
"ESD_TrueClusFromPi0_Pt_M02",ptBins, startPt, endPt,showerShapeBins, startShowerShape, endShowerShape);
958 fHistoTrueClusPi0DalitzPtvsM02 [iCut] =
new TH2F(
"ESD_TrueClusFromPi0Dalitz_Pt_M02",
"ESD_TrueClusFromPi0Dalitz_Pt_M02",ptBins, startPt, endPt,showerShapeBins, startShowerShape, endShowerShape);
960 fHistoTrueClusEtaPtvsM02[iCut] =
new TH2F(
"ESD_TrueClusFromEta_Pt_M02",
"ESD_TrueClusFromEta_Pt_M02",ptBins, startPt, endPt,showerShapeBins, startShowerShape, endShowerShape);
962 fHistoTrueClusEtaDalitzPtvsM02[iCut] =
new TH2F(
"ESD_TrueClusFromEtaDalitz_Pt_M02",
"ESD_TrueClusFromEtaDalitz_Pt_M02",ptBins, startPt, endPt,showerShapeBins, startShowerShape, endShowerShape);
964 fHistoTrueClusMergedPureFromPi0PtvsM02[iCut] =
new TH2F(
"ESD_TrueClusMergedPureFromPi0_Pt_M02",
"ESD_TrueClusMergedPureFromPi0_Pt_M02",ptBins, startPt, endPt,showerShapeBins, startShowerShape, endShowerShape);
966 fHistoTrueClusMergedPureFromEtaPtvsM02[iCut] =
new TH2F(
"ESD_TrueClusMergedPureFromEta_Pt_M02",
"ESD_TrueClusMergedPureFromEta_Pt_M02",ptBins, startPt, endPt,showerShapeBins, startShowerShape, endShowerShape);
973 fHistoTrueClusBGPtvsM02[iCut] =
new TH2F(
"ESD_TrueClusBG_Pt_M02",
"ESD_TrueClusBG_Pt_M02",ptBins, startPt, endPt,showerShapeBins, startShowerShape, endShowerShape);
975 fHistoTrueClusGammaPtvsM02[iCut] =
new TH2F(
"ESD_TrueClusGamma_Pt_M02",
"ESD_TrueClusGamma_Pt_M02",ptBins, startPt, endPt,showerShapeBins, startShowerShape, endShowerShape);
977 fHistoTrueClusGammaFromPi0PtvsM02[iCut] =
new TH2F(
"ESD_TrueClusGamma_FromPi0_Pt_M02",
"ESD_TrueClusGamma_FromPi0_Pt_M02",ptBins, startPt, endPt,showerShapeBins, startShowerShape, endShowerShape);
979 fHistoTrueClusGammaFromEtaPtvsM02[iCut] =
new TH2F(
"ESD_TrueClusGamma_FromEta_Pt_M02",
"ESD_TrueClusGamma_FromEta_Pt_M02",ptBins, startPt, endPt,showerShapeBins, startShowerShape, endShowerShape);
981 fHistoTrueClusElectronPtvsM02[iCut] =
new TH2F(
"ESD_TrueClusElectron_Pt_M02",
"ESD_TrueClusElectron_Pt_M02",ptBins, startPt, endPt,showerShapeBins, startShowerShape, endShowerShape);
983 fHistoTrueClusElectronFromPi0PtvsM02[iCut] =
new TH2F(
"ESD_TrueClusElectron_FromPi0_Pt_M02",
"ESD_TrueClusElectron_FromPi0_Pt_M02",ptBins, startPt, endPt,showerShapeBins, startShowerShape, endShowerShape);
985 fHistoTrueClusElectronFromEtaPtvsM02[iCut] =
new TH2F(
"ESD_TrueClusElectron_FromEta_Pt_M02",
"ESD_TrueClusElectron_FromEta_Pt_M02",ptBins, startPt, endPt,showerShapeBins, startShowerShape, endShowerShape);
987 fHistoTrueClusElectronFromGammaPtvsM02[iCut] =
new TH2F(
"ESD_TrueClusElectron_FromGamma_Pt_M02",
"ESD_TrueClusElectron_FromGamma_Pt_M02",ptBins, startPt, endPt,showerShapeBins, startShowerShape, endShowerShape);
991 fHistoTrueClusPrimPi0PtvsM02[iCut] =
new TH2F(
"ESD_TrueClusFromPrimPi0_Pt_M02",
"ESD_TrueClusFromPrimPi0_Pt_M02",ptBins, startPt, endPt,showerShapeBins, startShowerShape, endShowerShape);
993 fHistoTrueClusSecPi0PtvsM02[iCut] =
new TH2F(
"ESD_TrueClusFromSecPi0_Pt_M02",
"ESD_TrueClusFromSecPi0_Pt_M02",ptBins, startPt, endPt,showerShapeBins, startShowerShape, endShowerShape);
995 fHistoTrueClusSecPi0FromK0sPtvsM02[iCut] =
new TH2F(
"ESD_TrueClusFromSecPi0FromK0s_Pt_M02",
"ESD_TrueClusFromSecPi0FromK0s_Pt_M02",ptBins, startPt, endPt,showerShapeBins, startShowerShape, endShowerShape);
997 fHistoTrueClusSecPi0FromK0lPtvsM02[iCut] =
new TH2F(
"ESD_TrueClusFromSecPi0FromK0l_Pt_M02",
"ESD_TrueClusFromSecPi0FromK0l_Pt_M02",ptBins, startPt, endPt,showerShapeBins, startShowerShape, endShowerShape);
999 fHistoTrueClusSecPi0FromLambdaPtvsM02[iCut] =
new TH2F(
"ESD_TrueClusFromSecPi0FromLambda_Pt_M02",
"ESD_TrueClusFromSecPi0FromLambda_Pt_M02",ptBins, startPt, endPt,showerShapeBins, startShowerShape, endShowerShape);
1001 fHistoTrueSecPi0PtvsDiffReco[iCut] =
new TH2F(
"ESD_TrueClusFromSecPi0_Pt_RecoMethod",
"ESD_TrueClusFromSecPi0_Pt_RecoMethod",ptBins, startPt, endPt, 4, -0.5, 3.5);
1015 fHistoDoubleCountTruePi0PtvsM02[iCut] =
new TH2F(
"ESD_TrueDoubleCountPi0_Pt_M02",
"ESD_TrueDoubleCountPi0_Pt_M02",ptBins, startPt, endPt,showerShapeBins, startShowerShape, endShowerShape);
1019 fHistoDoubleCountTrueEtaPtvsM02[iCut] =
new TH2F(
"ESD_TrueDoubleCountEta_Pt_M02",
"ESD_TrueDoubleCountEta_Pt_M02",ptBins, startPt, endPt,showerShapeBins, startShowerShape, endShowerShape);
1026 fHistoTrueClusPi0InvMassvsPt [iCut] =
new TH2F(
"ESD_TrueClusFromPi0_InvMass_Pt",
"ESD_TrueClusFromPi0_InvMass_Pt",invMassBins, startMass, endMass,ptBins, startPt, endPt);
1028 fHistoTrueClusEtaInvMassvsPt[iCut] =
new TH2F(
"ESD_TrueClusFromEta_InvMass_Pt",
"ESD_TrueClusFromEta_InvMass_Pt",invMassBins, startMass, endMass,ptBins, startPt, endPt);
1030 fHistoTrueClusBGInvMassvsPt[iCut] =
new TH2F(
"ESD_TrueClusBG_InvMass_Pt",
"ESD_TrueClusBG_InvMass_Pt",invMassBins, startMass, endMass,ptBins, startPt, endPt);
1032 fHistoTrueClusGammaInvMassvsPt[iCut] =
new TH2F(
"ESD_TrueClusGamma_InvMass_Pt",
"ESD_TrueClusGamma_InvMass_Pt",invMassBins, startMass, endMass,ptBins, startPt, endPt);
1037 fHistoTrueClusPrimPi0InvMassvsPt[iCut] =
new TH2F(
"ESD_TrueClusFromPrimPi0_InvMass_Pt",
"ESD_TrueClusFromPrimPi0_InvMass_Pt",invMassBins, startMass, endMass,ptBins, startPt, endPt);
1043 fHistoTrueClusGammaEM02[iCut] =
new TH2F(
"TrueClusGammaEM02",
"TrueClusGammaEM02",ptBins, startPt, endPt, showerShapeBins, startShowerShape, endShowerShape);
1045 fHistoTrueClusElectronEM02[iCut] =
new TH2F(
"TrueClusElectronEM02",
"TrueClusElectronEM02",ptBins, startPt, endPt, showerShapeBins, startShowerShape, endShowerShape);
1047 fHistoTrueClusPi0EM02[iCut] =
new TH2F(
"TrueClusPi0EM02",
"TrueClusPi0EM02",ptBins, startPt, endPt, showerShapeBins, startShowerShape, endShowerShape);
1049 fHistoTrueClusEtaEM02[iCut] =
new TH2F(
"TrueClusEtaEM02",
"TrueClusEtaEM02",ptBins, startPt, endPt, showerShapeBins, startShowerShape, endShowerShape);
1052 fHistoTruePi0PtY[iCut] =
new TH2F(
"ESD_TruePi0_Pt_Y",
"ESD_TruePi0_Pt_Y",ptBinsLog, startPtLog, endPtLog,150,-1.5,1.5);
1055 fHistoTruePi0PtAlpha[iCut] =
new TH2F(
"ESD_TruePi0_Pt_Alpha",
"ESD_TruePi0_Pt_Alpha",ptBinsLog, startPtLog, endPtLog,100,0,1);
1075 fHistoTrueEtaPtY[iCut] =
new TH2F(
"ESD_TrueEta_Pt_Y",
"ESD_TrueEta_Pt_Y",ptBinsLog, startPtLog, endPtLog,150,-1.5,1.5);
1078 fHistoTrueEtaPtAlpha[iCut] =
new TH2F(
"ESD_TrueEta_Pt_Alpha",
"ESD_TrueEta_Pt_Alpha",ptBinsLog, startPtLog, endPtLog,100,0,0.5);
1168 for(
Int_t iMatcherTask = 0; iMatcherTask < 3; iMatcherTask++){
1229 printf(
" Gamma Conversion Task %s :: Eta Shift Manually Set to %f \n\n",
1236 Bool_t doNonLinCorr = kTRUE;
1238 doNonLinCorr = kFALSE;
1240 doNonLinCorr = kTRUE;
1242 doNonLinCorr = kTRUE;
1244 doNonLinCorr = kFALSE;
1245 cout <<
"ERROR: something went wrong in the configuration, different non linearity corrections have been chosen in the standard and merged cluster, which are incompatible" << endl;
1246 cout <<
"INFO: switching off the non lin corr for merged cluster" << endl;
1266 if(
fInputEvent->IsIncompleteDAQ()==kTRUE) eventQuality = 2;
1269 if(eventQuality == 2 || eventQuality == 3){
1294 Bool_t isRunningEMCALrelAna = kFALSE;
1302 if((xsection==-1.) || (ntrials==-1.)) AliFatal(Form(
"ERROR: GetXSectionAndNTrials returned invalid xsection/ntrials, periodName from V0Reader: '%s'",
fV0Reader->
GetPeriodName().Data()));
1316 Bool_t triggered = kTRUE;
1317 if(eventNotAccepted){
1321 if (eventNotAccepted==3 &&
fIsMC>0){
1328 if(eventQuality != 0){
1335 if (triggered == kTRUE) {
1361 else if(
fInputEvent->IsA()==AliAODEvent::Class()){
1370 if (nameBin.CompareTo(
"")== 0){
1372 ->GetAcceptedHeader())->At(i))->GetString();
1373 fHistoMCHeaders[iCut]->GetXaxis()->SetBinLabel(i+1,nameHeader.Data());
1386 if (triggered==kFALSE)
continue;
1417 if(nclus == 0)
return;
1434 InputEvent()->GetPrimaryVertex()->GetXYZ(vertex);
1437 for(Long_t i = 0; i < nclus; i++){
1440 AliVCluster* clus = NULL;
1441 if(
fInputEvent->IsA()==AliESDEvent::Class()) clus =
new AliESDCaloCluster(*(AliESDCaloCluster*)
fInputEvent->GetCaloCluster(i));
1442 else if(
fInputEvent->IsA()==AliAODEvent::Class()) clus =
new AliAODCaloCluster(*(AliAODCaloCluster*)
fInputEvent->GetCaloCluster(i));
1456 TLorentzVector clusterVector;
1457 clus->GetMomentum(clusterVector,vertex);
1459 TLorentzVector* tmpvec =
new TLorentzVector();
1460 tmpvec->SetPxPyPzE(clusterVector.Px(),clusterVector.Py(),clusterVector.Pz(),clusterVector.E());
1464 if(!PhotonCandidate){
1467 if (PhotonCandidate)
delete PhotonCandidate;
1477 Int_t* mclabelsCluster = clus->GetLabels();
1479 Int_t nValidClusters = 0;
1481 if (clus->GetNLabels()>0){
1482 for (
Int_t k =0; k< (
Int_t)clus->GetNLabels(); k++){
1484 if (mclabelsCluster[k]>0){
1487 if (nValidClusters< 50)PhotonCandidate->
SetCaloPhotonMCLabel(nValidClusters,mclabelsCluster[k]);
1503 if (clus->GetNLabels()>1){
1504 Int_t* mclabelsCluster = clus->GetLabels();
1505 for (
Int_t l = 1; l < (
Int_t)clus->GetNLabels(); l++ ){
1526 delete PhotonCandidate;
1533 delete PhotonCandidate;
1539 AliAODCaloCluster* clusSub1 =
new AliAODCaloCluster();
1540 AliAODCaloCluster* clusSub2 =
new AliAODCaloCluster();
1555 const Int_t nc = clus->GetNCells();
1556 Int_t absCellIdList[nc];
1567 TLorentzVector clusterVector1;
1568 clusSub1->GetMomentum(clusterVector1,vertex);
1569 TLorentzVector* tmpvec1 =
new TLorentzVector();
1570 tmpvec1->SetPxPyPzE(clusterVector1.Px(),clusterVector1.Py(),clusterVector1.Pz(),clusterVector1.E());
1573 if(!PhotonCandidate1){
1582 TLorentzVector clusterVector2;
1583 clusSub2->GetMomentum(clusterVector2,vertex);
1584 TLorentzVector* tmpvec2 =
new TLorentzVector();
1585 tmpvec2->SetPxPyPzE(clusterVector2.Px(),clusterVector2.Py(),clusterVector2.Pz(),clusterVector2.E());
1588 if(!PhotonCandidate2){
1614 for (
Int_t j = 0; j < nclus; j++){
1615 if (j == i)
continue;
1616 AliVCluster* clusTemp = NULL;
1617 if(
fInputEvent->IsA()==AliESDEvent::Class()) clusTemp =
new AliESDCaloCluster(*(AliESDCaloCluster*)
fInputEvent->GetCaloCluster(j));
1618 else if(
fInputEvent->IsA()==AliAODEvent::Class()) clusTemp =
new AliAODCaloCluster(*(AliAODCaloCluster*)
fInputEvent->GetCaloCluster(j));
1628 nCellsAround = nCellsAround+clusTemp->GetNCells();
1629 energyAround = energyAround+clusTemp->E();
1644 if(
fIsMC> 0 && PhotonCandidate && PhotonCandidate1 && PhotonCandidate2){
1657 delete PhotonCandidate1;
1660 delete PhotonCandidate2;
1664 delete PhotonCandidate;
1675 const AliVVertex* primVtxMC =
fMCEvent->GetPrimaryVertex();
1676 Double_t mcProdVtxX = primVtxMC->GetX();
1677 Double_t mcProdVtxY = primVtxMC->GetY();
1678 Double_t mcProdVtxZ = primVtxMC->GetZ();
1680 TParticle *Photon = NULL;
1681 if (!TrueClusterCandidate->
GetIsCaloPhoton()) AliFatal(
"CaloPhotonFlag has not been set task will abort");
1694 if (!mesonIsSelected){
1698 Int_t pdgCodeParticle = Photon->GetPdgCode();
1701 cout << endl << endl <<
"Cluster energy: " << TrueClusterCandidate->E() << endl;;
1707 Int_t clusterClass = 0;
1714 Long_t motherLab = -1;
1746 TParticle *mother = NULL;
1747 Int_t motherPDG = -1;
1748 if (motherLab > -1){
1749 mother =
fMCEvent->Particle(motherLab);
1753 motherPDG = TMath::Abs(mother->GetPdgCode());
1760 if (clusterClass == 1 || clusterClass == 2 || clusterClass == 3 ){
1765 if (clusterClass == 1 && TrueClusterCandidate->
IsMerged()){
1766 if (motherPDG == 111){
1772 if (motherPDG == 221)
1775 if (motherPDG == 111){
1781 if (motherPDG == 221)
1783 }
else if (clusterClass == 2){
1784 if (motherPDG == 111){
1789 }
if (motherPDG == 221)
1791 }
else if (clusterClass == 3){
1792 if (motherPDG == 111) {
1798 if (motherPDG == 221)
1803 if (motherPDG == 111){
1812 if (TrueClusterCandidate->
IsDalitz()){
1829 if (clusterClass == 1 && TrueClusterCandidate->
IsMerged())
1833 else if (clusterClass == 2)
1835 else if (clusterClass == 3)
1843 Int_t grandMaLab = mother->GetMother(0);
1844 if (grandMaLab > -1){
1845 if (TMath::Abs(
fMCEvent->Particle(grandMaLab)->GetPdgCode()) == 310){
1847 }
else if (TMath::Abs(
fMCEvent->Particle(grandMaLab)->GetPdgCode()) == 130){
1849 }
else if (TMath::Abs(
fMCEvent->Particle(grandMaLab)->GetPdgCode()) == 3122){
1856 }
else if (motherPDG == 221){
1858 if (TrueClusterCandidate->
IsDalitz()){
1884 if (motherLab == -1){
1887 if (motherPDG == 111)
1889 else if (motherPDG == 221)
1891 else if (motherPDG == 331)
1893 else if (motherPDG == 223)
1895 else if (motherPDG == 333)
1897 else if (motherPDG == 3122)
1912 Int_t motherLab = Photon->GetMother(0);
1913 if (motherLab == -1){
1916 if (motherPDG == 22){
1919 }
else if (motherPDG == 111){
1921 }
else if (motherPDG == 221){
1923 }
else if (
int(motherPDG/100.)==5 || int(motherPDG/1000.)==5 ){
1925 }
else if (
int(motherPDG/100.)==4 || int(motherPDG/1000.)==4 ){
1927 }
else if (motherPDG == 23 || motherPDG == 24){
1929 }
else if (motherPDG == 15) {
1942 if (m02 >= 0 && m02 < maxM02){
1965 const AliVVertex* primVtxMC =
fMCEvent->GetPrimaryVertex();
1966 Double_t mcProdVtxX = primVtxMC->GetX();
1967 Double_t mcProdVtxY = primVtxMC->GetY();
1968 Double_t mcProdVtxZ = primVtxMC->GetZ();
1970 AliAODMCParticle *Photon = NULL;
1971 TClonesArray *AODMCTrackArray =
dynamic_cast<TClonesArray*
>(
fInputEvent->FindListObject(AliAODMCParticle::StdBranchName()));
1972 if (AODMCTrackArray){
1973 if (!TrueClusterCandidate->
GetIsCaloPhoton()) AliFatal(
"CaloPhotonFlag has not been set task will abort");
1979 AliInfo(
"AODMCTrackArray could not be loaded");
1990 if (!mesonIsSelected){
1994 Int_t pdgCodeParticle = Photon->GetPdgCode();
1997 cout << endl << endl <<
"Cluster energy: " << TrueClusterCandidate->E() << endl;;
2003 Int_t clusterClass = 0;
2010 Long_t motherLab = -1;
2030 if (TMath::Abs(((AliAODMCParticle*) AODMCTrackArray->At(TrueClusterCandidate->
GetCaloPhotonMotherMCLabel(1)))->GetPdgCode()) == 111 || TMath::Abs(((AliAODMCParticle*) AODMCTrackArray->At(TrueClusterCandidate->
GetCaloPhotonMotherMCLabel(1)))->GetPdgCode()) == 221 ){
2042 AliAODMCParticle *mother = NULL;
2043 Int_t motherPDG = -1;
2044 if (motherLab > -1){
2045 mother =
static_cast<AliAODMCParticle*
>(AODMCTrackArray->At(motherLab));
2049 motherPDG = TMath::Abs(mother->GetPdgCode());
2056 if (clusterClass == 1 || clusterClass == 2 || clusterClass == 3 ){
2061 if (clusterClass == 1 && TrueClusterCandidate->
IsMerged()){
2062 if (motherPDG == 111){
2068 if (motherPDG == 221)
2071 if (motherPDG == 111){
2077 if (motherPDG == 221)
2079 }
else if (clusterClass == 2){
2080 if (motherPDG == 111){
2085 }
if (motherPDG == 221)
2087 }
else if (clusterClass == 3){
2088 if (motherPDG == 111) {
2094 if (motherPDG == 221)
2099 if (motherPDG == 111){
2108 if (TrueClusterCandidate->
IsDalitz()){
2125 if (clusterClass == 1 && TrueClusterCandidate->
IsMerged())
2129 else if (clusterClass == 2)
2131 else if (clusterClass == 3)
2139 Int_t grandMaLab = mother->GetMother();
2140 if (grandMaLab > -1){
2141 if (TMath::Abs(static_cast<AliAODMCParticle*>(AODMCTrackArray->At(grandMaLab))->GetPdgCode()) == 310){
2143 }
else if (TMath::Abs(static_cast<AliAODMCParticle*>(AODMCTrackArray->At(grandMaLab))->GetPdgCode()) == 130){
2145 }
else if (TMath::Abs(static_cast<AliAODMCParticle*>(AODMCTrackArray->At(grandMaLab))->GetPdgCode()) == 3122){
2152 }
else if (motherPDG == 221){
2154 if (TrueClusterCandidate->
IsDalitz()){
2180 if (motherLab == -1){
2183 if (motherPDG == 111)
2185 else if (motherPDG == 221)
2187 else if (motherPDG == 331)
2189 else if (motherPDG == 223)
2191 else if (motherPDG == 333)
2193 else if (motherPDG == 3122)
2208 Int_t motherLab = Photon->GetMother();
2209 if (motherLab == -1){
2212 if (motherPDG == 22){
2215 }
else if (motherPDG == 111){
2217 }
else if (motherPDG == 221){
2219 }
else if (
int(motherPDG/100.)==5 || int(motherPDG/1000.)==5 ){
2221 }
else if (
int(motherPDG/100.)==4 || int(motherPDG/1000.)==4 ){
2223 }
else if (motherPDG == 23 || motherPDG == 24){
2225 }
else if (motherPDG == 15) {
2238 if (m02 >= 0 && m02 < maxM02){
2259 const AliVVertex* primVtxMC =
fMCEvent->GetPrimaryVertex();
2260 Double_t mcProdVtxX = primVtxMC->GetX();
2261 Double_t mcProdVtxY = primVtxMC->GetY();
2262 Double_t mcProdVtxZ = primVtxMC->GetZ();
2265 for(Long_t i = 0; i <
fMCEvent->GetNumberOfTracks(); i++) {
2268 TParticle* particle = (TParticle *)
fMCEvent->Particle(i);
2269 if (!particle)
continue;
2271 Int_t isMCFromMBHeader = -1;
2279 if (particle->Energy() != TMath::Abs(particle->Pz())){
2280 ratio = (particle->Energy()+particle->Pz()) / (particle->Energy()-particle->Pz());
2282 if( !(ratio <= 0) ){
2287 if ( particle->GetPdgCode() == 211 ){
2289 }
else if ( particle->GetPdgCode() == -211 ){
2291 }
else if ( particle->GetPdgCode() == 321 ){
2293 }
else if ( particle->GetPdgCode() == -321 ){
2295 }
else if ( TMath::Abs(particle->GetPdgCode()) == 310 ){
2297 }
else if ( TMath::Abs(particle->GetPdgCode()) == 130 ){
2299 }
else if ( TMath::Abs(particle->GetPdgCode()) == 3122 ){
2304 if ( particle->GetPdgCode() == 211 ){
2306 }
else if ( particle->GetPdgCode() == -211 ){
2308 }
else if ( particle->GetPdgCode() == 321 ){
2310 }
else if ( particle->GetPdgCode() == -321 ){
2312 }
else if ( TMath::Abs(particle->GetPdgCode()) == 310 ){
2314 }
else if ( TMath::Abs(particle->GetPdgCode()) == 130 ){
2316 }
else if ( TMath::Abs(particle->GetPdgCode()) == 3122 ){
2318 }
else if ( particle->GetPdgCode() == 22 ){
2320 if(particle->GetMother(0) > -1){
2321 TParticle* mother = (TParticle*)
fMCEvent->Particle(particle->GetMother(0));
2322 if ( TMath::Abs(mother->GetPdgCode()) == 111 ||
2323 TMath::Abs(mother->GetPdgCode()) == 113 ||
2324 TMath::Abs(mother->GetPdgCode()) == 221 ||
2325 TMath::Abs(mother->GetPdgCode()) == 223 ||
2326 TMath::Abs(mother->GetPdgCode()) == 331 ||
2327 TMath::Abs(mother->GetPdgCode()) == 333 ||
2328 TMath::Abs(mother->GetPdgCode()) == 3212 ||
2329 TMath::Abs(mother->GetPdgCode()) == 213
2340 TParticle* daughter0 = (TParticle*)
fMCEvent->Particle(particle->GetFirstDaughter());
2341 TParticle* daughter1 = (TParticle*)
fMCEvent->Particle(particle->GetLastDaughter());
2345 if (particle->Pt()>0.005){
2350 if( TMath::Abs(particle->GetPdgCode()) == 111 ){
2359 }
else if( TMath::Abs(particle->GetPdgCode()) == 221 ){
2373 if( kDaughter0IsPrim && kDaughter1IsPrim &&
2385 Int_t gammaLabel = -1;
2386 Int_t electronLabel = -1;
2387 Int_t positronLabel = -1;
2391 if( (gammaLabel > -1) && (electronLabel > -1) && (positronLabel > -1) ){
2392 TParticle* gamma = (TParticle*)
fMCEvent->Particle(gammaLabel);
2393 TParticle* electron = (TParticle*)
fMCEvent->Particle(electronLabel);
2394 TParticle* positron = (TParticle*)
fMCEvent->Particle(positronLabel);
2398 if (particle->Pt()>0.005){
2423 if( kGammaIsPrim && kElectronIsPrim && kPositronIsPrim &&
2441 TParticle* particle = (TParticle *)
fMCEvent->Particle(i);
2442 if (!particle)
continue;
2444 Int_t isMCFromMBHeader = -1;
2453 TParticle* daughter0 = (TParticle*)
fMCEvent->Particle(particle->GetFirstDaughter());
2454 TParticle* daughter1 = (TParticle*)
fMCEvent->Particle(particle->GetLastDaughter());
2455 TParticle* mother = NULL;
2456 Int_t motherPDG = -1000000;
2457 if (particle->GetMother(0) > -1){
2458 mother = (TParticle*)
fMCEvent->Particle(particle->GetMother(0));
2460 motherPDG = TMath::Abs(mother->GetPdgCode());
2463 if( TMath::Abs(particle->GetPdgCode()) == 111 ){
2471 if( TMath::Abs(particle->GetPdgCode()) == 111 ){
2478 Int_t gammaLabel = -1;
2479 Int_t electronLabel = -1;
2480 Int_t positronLabel = -1;
2484 if( (gammaLabel > -1) && (electronLabel > -1) && (positronLabel > -1) ){
2485 TParticle* gamma = (TParticle*)
fMCEvent->Particle(gammaLabel);
2486 TParticle* electron = (TParticle*)
fMCEvent->Particle(electronLabel);
2487 TParticle* positron = (TParticle*)
fMCEvent->Particle(positronLabel);
2489 TParticle* mother = NULL;
2490 Int_t motherPDG = -1000000;
2491 if (particle->GetMother(0) > -1){
2492 mother = (TParticle*)
fMCEvent->Particle(particle->GetMother(0));
2494 motherPDG = TMath::Abs(mother->GetPdgCode());
2497 if( TMath::Abs(particle->GetPdgCode()) == 111 ){
2506 if( TMath::Abs(particle->GetPdgCode()) == 111 ){
2520 const AliVVertex* primVtxMC =
fMCEvent->GetPrimaryVertex();
2521 Double_t mcProdVtxX = primVtxMC->GetX();
2522 Double_t mcProdVtxY = primVtxMC->GetY();
2523 Double_t mcProdVtxZ = primVtxMC->GetZ();
2525 TClonesArray *AODMCTrackArray =
dynamic_cast<TClonesArray*
>(
fInputEvent->FindListObject(AliAODMCParticle::StdBranchName()));
2526 if (AODMCTrackArray == NULL)
return;
2529 for(Long_t i = 0; i < AODMCTrackArray->GetEntriesFast(); i++) {
2531 AliAODMCParticle* particle =
static_cast<AliAODMCParticle*
>(AODMCTrackArray->At(i));
2532 if (!particle)
continue;
2537 Int_t isMCFromMBHeader = -1;
2545 if (particle->E() != TMath::Abs(particle->Pz())){
2546 ratio = (particle->E()+particle->Pz()) / (particle->E()-particle->Pz());
2548 if( !(ratio <= 0) ){
2553 if ( particle->GetPdgCode() == 211 ){
2555 }
else if ( particle->GetPdgCode() == -211 ){
2557 }
else if ( particle->GetPdgCode() == 321 ){
2559 }
else if ( particle->GetPdgCode() == -321 ){
2561 }
else if ( TMath::Abs(particle->GetPdgCode()) == 310 ){
2563 }
else if ( TMath::Abs(particle->GetPdgCode()) == 130 ){
2565 }
else if ( TMath::Abs(particle->GetPdgCode()) == 3122 ){
2570 if ( particle->GetPdgCode() == 211 ){
2572 }
else if ( particle->GetPdgCode() == -211 ){
2574 }
else if ( particle->GetPdgCode() == 321 ){
2576 }
else if ( particle->GetPdgCode() == -321 ){
2578 }
else if ( TMath::Abs(particle->GetPdgCode()) == 310 ){
2580 }
else if ( TMath::Abs(particle->GetPdgCode()) == 130 ){
2582 }
else if ( TMath::Abs(particle->GetPdgCode()) == 3122 ){
2584 }
else if ( particle->GetPdgCode() == 22 ){
2586 if(particle->GetMother() > -1){
2587 AliAODMCParticle *mother =
static_cast<AliAODMCParticle*
>(AODMCTrackArray->At(particle->GetMother()));
2588 if ( TMath::Abs(mother->GetPdgCode()) == 111 ||
2589 TMath::Abs(mother->GetPdgCode()) == 113 ||
2590 TMath::Abs(mother->GetPdgCode()) == 221 ||
2591 TMath::Abs(mother->GetPdgCode()) == 223 ||
2592 TMath::Abs(mother->GetPdgCode()) == 331 ||
2593 TMath::Abs(mother->GetPdgCode()) == 333 ||
2594 TMath::Abs(mother->GetPdgCode()) == 3212 ||
2595 TMath::Abs(mother->GetPdgCode()) == 213
2606 AliAODMCParticle* daughter0 =
static_cast<AliAODMCParticle*
>(AODMCTrackArray->At(particle->GetDaughter(0)));
2607 AliAODMCParticle* daughter1 =
static_cast<AliAODMCParticle*
>(AODMCTrackArray->At(particle->GetDaughter(1)));
2611 if (particle->Pt()>0.005){
2616 if( TMath::Abs(particle->GetPdgCode()) == 111 ){
2625 }
else if( TMath::Abs(particle->GetPdgCode()) == 221 ){
2639 if( kDaughter0IsPrim && kDaughter1IsPrim &&
2651 Int_t gammaLabel = -1;
2652 Int_t electronLabel = -1;
2653 Int_t positronLabel = -1;
2657 if( (gammaLabel > -1) && (electronLabel > -1) && (positronLabel > -1) ){
2658 AliAODMCParticle* gamma =
static_cast<AliAODMCParticle*
>(AODMCTrackArray->At(gammaLabel));
2659 AliAODMCParticle* electron =
static_cast<AliAODMCParticle*
>(AODMCTrackArray->At(electronLabel));
2660 AliAODMCParticle* positron =
static_cast<AliAODMCParticle*
>(AODMCTrackArray->At(positronLabel));
2664 if (particle->Pt()>0.005){
2689 if( kGammaIsPrim && kElectronIsPrim && kPositronIsPrim &&
2707 AliAODMCParticle* particle =
static_cast<AliAODMCParticle*
>(AODMCTrackArray->At(i));
2708 if (!particle)
continue;
2710 Int_t isMCFromMBHeader = -1;
2719 AliAODMCParticle* daughter0 =
static_cast<AliAODMCParticle*
>(AODMCTrackArray->At(particle->GetDaughter(0)));
2720 AliAODMCParticle* daughter1 =
static_cast<AliAODMCParticle*
>(AODMCTrackArray->At(particle->GetDaughter(1)));
2721 AliAODMCParticle* mother = NULL;
2722 Int_t motherPDG = -1000000;
2723 if (particle->GetMother() > -1){
2724 mother =
static_cast<AliAODMCParticle*
>(AODMCTrackArray->At(particle->GetMother()));
2726 motherPDG = TMath::Abs(mother->GetPdgCode());
2729 if( TMath::Abs(particle->GetPdgCode()) == 111 ){
2737 if( TMath::Abs(particle->GetPdgCode()) == 111 ){
2744 Int_t gammaLabel = -1;
2745 Int_t electronLabel = -1;
2746 Int_t positronLabel = -1;
2750 if( (gammaLabel > -1) && (electronLabel > -1) && (positronLabel > -1) ){
2751 AliAODMCParticle* gamma =
static_cast<AliAODMCParticle*
>(AODMCTrackArray->At(gammaLabel));
2752 AliAODMCParticle* electron =
static_cast<AliAODMCParticle*
>(AODMCTrackArray->At(electronLabel));
2753 AliAODMCParticle* positron =
static_cast<AliAODMCParticle*
>(AODMCTrackArray->At(positronLabel));
2755 AliAODMCParticle* mother = NULL;
2756 Int_t motherPDG = -1000000;
2757 if (particle->GetMother() > -1){
2758 mother =
static_cast<AliAODMCParticle*
>(AODMCTrackArray->At(particle->GetMother()));
2760 motherPDG = TMath::Abs(mother->GetPdgCode());
2763 if( TMath::Abs(particle->GetPdgCode()) == 111 ){
2772 if( TMath::Abs(particle->GetPdgCode()) == 111 ){
2786 TAxis *axisafter = histoRebin->GetXaxis();
2787 Int_t bins = axisafter->GetNbins();
2788 Double_t from = axisafter->GetXmin();
2789 Double_t to = axisafter->GetXmax();
2792 Double_t factor = TMath::Power(to/from, 1./bins);
2793 for(
Int_t i=1; i<=bins; ++i) newbins[i] = factor * newbins[i-1];
2794 axisafter->Set(bins, newbins);
2801 if(tobechecked > -1)
2803 vector<Int_t>::iterator it;
2804 it = find (vec.begin(), vec.end(), tobechecked);
2805 if (it != vec.end())
return true;
2807 vec.push_back(tobechecked);
2824 if( ma.find(tobechecked) != ma.end() ) ma[tobechecked] += 1;
2825 else ma[tobechecked] = 2;
2831 map<Int_t, Int_t>::iterator it;
2832 for (it = ma.begin(); it != ma.end(); it++){
2843 if (daughter == 111) {
2844 if (TMath::Abs(pdgCode) == 310)
return 1;
2845 else if (TMath::Abs(pdgCode) == 3122)
return 2;
2846 else if (TMath::Abs(pdgCode) == 130)
return 3;
2847 else if (TMath::Abs(pdgCode) == 2212)
return 4;
2848 else if (TMath::Abs(pdgCode) == 2112)
return 5;
2849 else if (TMath::Abs(pdgCode) == 211)
return 6;
2850 else if (TMath::Abs(pdgCode) == 321)
return 7;
2851 else if (TMath::Abs(pdgCode) == 113 || TMath::Abs(pdgCode) == 213 )
return 8;
2852 else if (TMath::Abs(pdgCode) == 3222 || TMath::Abs(pdgCode) == 3212 || TMath::Abs(pdgCode) == 3112 )
return 9;
2853 else if (TMath::Abs(pdgCode) == 2224 || TMath::Abs(pdgCode) == 2214 || TMath::Abs(pdgCode) == 2114 || TMath::Abs(pdgCode) == 1114 )
return 10;
2854 else if (TMath::Abs(pdgCode) == 313 || TMath::Abs(pdgCode) == 323 )
return 11;
TH2F ** fHistoClusMergedNCellsPt
array of histos with cluster NCells vs Pt
TH1F ** fHistoNGoodESDTracks
array of histos with event information without event weights
TH2F ** fHistoTrueClusElectronPtvsSource
TH1F ** fHistoMCPi0DalitzInAccPt
array of histos without evt weight eta in acceptance, pT
TH2F ** fHistoTrueClusMergedInvMassvsPt
TH2F ** fHistoTruePrimaryEtaMCPtResolPt
array of histos with validated weighted primary pi0, MCpt, resol pt
TH2F ** fHistoTrueClusGammaInvMassvsPt
TH2F ** fHistoTrueClusBGInvMassvsPt
TH2F ** fHistoClusMergedNCellsAroundPt
array of histos with merged cluster N MC paricles in cluster vs Pt
TH2F ** fHistoTruePi0PtAlpha
array of histos with validated eta, pt, Y
void SetCaloClusterRef(Long_t ref)
TH1F ** fHistoClusOverlapHeadersGammaPt
array of histos with cluster, E
TH2F ** fHistoTrueClusMergedPureFromEtaPtvsM02
void FillMultipleCountHistoAndClear(map< Int_t, Int_t > &ma, TH1F *hist)
TObjString * fFileNameBroken
TH2F ** fHistoMotherPtAlpha
array of histograms with signal +BG pt, Y
void SetCaloPhotonMCFlags(AliMCEvent *mcEvent, Bool_t enableSort)
TH1F ** fHistoMCPi0InAccPt
array of histos without event weights eta Dalitz, pT
TH2F ** fHistoTrueClusGammaFromEtaPtvsM02
TH2F ** fHistoTruePrimaryPi0MergedPartConvMCPtResolPt
array of histos with validated weighted primary pi0, MCpt, resol pt
TH1F ** fHistoMCEtaDalitzWOWeightPt
array of histos with weighted eta Dalitz, pT
TH2F ** fHistoTrueEtaPtAlpha
array of histos with validated pi0, pt, alpha
TH1F ** fHistoMCPi0DalitzPt
array of histos without event weights eta, pT
TH2F ** fHistoTrueClusEtaDalitzPtvsM02
TH2F ** fHistoTrueClusPi0DalitzPtvsM02
TH1F ** fHistoMCAllGammaPt
array of histos with weighted decay gamma
TH2F ** fHistoTrueClusBGPtvsSource
Int_t GetNumberOfPrimaryTracks()
TH2F ** fHistoTrueClusElectronInvMassvsPt
TH2F ** fHistoTrueClusElectronFromPi0PtvsM02
Int_t fNClusterCandidates
TH1F ** fHistoClusGammaE
array of histos with cluster, pt
TH2F ** fHistoMCPrimaryPtvsSource
array of histos with weighted eta, pT, hardest jet pt
TH2F ** fHistoSPDClusterTrackletBackground
array of histos with number of good tracks vs gamma candidates
TH2F ** fHistoMCSecPi0InAccPtvsSource
array of histos with weighted pi0 from sec, pT for different sources
TH2F ** fHistoTrueClusPi0PtvsM02
TString GetCurrentFileName()
TH1F ** fHistoNEvents
vector containing labels of validated eta
AliAnalysisTaskGammaCaloMerged()
TH2F ** fHistoTrueClusEtaEM02
array of histos with validated pi0, E, m02
TH2F ** fHistoTrueSecPi0PtvsDiffReco
TH2F ** fHistoTrueClusEtaPtvsM02
TH1F ** fHistoNEventsWOWeight
array of histos with event information
void SetCaloPhotonMCLabel(Int_t i, Int_t labelCaloPhoton)
TH2F ** fHistoClusMergedNCellsAroundAndInPt
array of histos with number of cells surrounding merged cluster vs merged cluster Pt ...
TH2F ** fHistoTrueClusSecPi0FromK0lPtvsM02
TH1F ** fHistoClusGammaPt
array of histograms with signal +BG pt, alpha
Int_t GetCaloPhotonMotherMCLabel(Int_t i)
TH1F ** fHistoMCEtaWOEvtWeightPt
array of histos with unweighted eta, pT
TH1I ** fHistoMCHeaders
array of histos with E surrounding merged cluster vs merged cluster E
virtual void UserCreateOutputObjects()
TH1F ** fHistoMCDecayGammaPt
array of histos with weighted primary particles, Y vs source
TH2F ** fHistoTrueClusEtaInvMassvsPt
void PrintCaloMCLabelsAndInfo(AliMCEvent *mcEvent)
TH2F ** fHistoClusNCellsPt
array of histos with cluster merged accepted mesons, E vs M02
TH1F ** fHistoMCPi0DalitzWOWeightPt
array of histos with weighted pi0 Dalitz, pT
TH2F ** fHistoTrueClusPrimPi0PtvsM02
TH2F ** fHistoTrueClusGammaPtvsM02
TH2F ** fHistoClusMergedEvsM02Accepted
array of histos with cluster merged accepted mesons, pt vs M02
Bool_t fIsOverlappingWithOtherHeader
TH2F ** fHistoClusMergedPtvsM02Accepted
array of histos with cluster merged, pt vs M02
TH1F ** fHistoMCEtaDalitzPt
array of histos without event weights pi0 Dalitz, pT
Class handling all kinds of selection cuts for Gamma Calo analysis.
TH2F ** fHistoClusMergedEAroundE
array of histos with number of cells surrounding merged cluster + Ncells in clus vs merged cluster Pt...
TH1F ** fHistoNClusterMergedCandidates
array of histos with number of cluster candidates per event
TH2F ** fHistoMCPrimaryYvsSource
array of histos with weighted primary particles, pT vs source
TH1F ** fHistoMCEtaDalitzWOEvtWeightPt
array of histos with unweighted eta Dalitz, pT
TH1F ** fHistoMCPi0WOWeightPt
array of histos with weighted pi0, pT
TList * fClusterMergedCutArray
TH2F ** fHistoTrueClusSecPi0FromK0sPtvsM02
Bool_t CheckVectorForDoubleCount(vector< Int_t > &vec, Int_t tobechecked)
TH1F ** fHistoMCPi0WOEvtWeightPt
array of histos with unweighted pi0, pT
TH1F ** fHistoNClusterCandidates
array of histos with vertex z distribution for selected events
Int_t fNClusterMergedCandidates
current number of cluster candidates
Bool_t fEnableDetailedPrintOut
AliConversionPhotonCuts * GetConversionCuts()
TH1F ** fHistoMCPi0WOEvtWeightInAccPt
array of histos with weighted eta in acceptance, pT
TH2F ** fHistoMotherPtY
array of histogram with signal + BG for same event photon pairs, inv Mass, pt
void ProcessTrueClusterCandidatesAOD(AliAODConversionPhoton *TruePhotonCandidate, Float_t m02, AliAODConversionPhoton *TrueSubClusterCandidate1, AliAODConversionPhoton *TrueSubClusterCandidate2)
virtual ~AliAnalysisTaskGammaCaloMerged()
TH2F ** fHistoMCPi0PtJetPt
array of histos with weighted pi0 from sec in acceptance, pT for different sources ...
TH1F ** fHistoNV0Tracks
array of histos with SPD tracklets vs SPD clusters for background rejection
Class handling all kinds of selection cuts for Gamma Conversion analysis.
TH2F ** fHistoTrueClusMergedPartConvFromPi0PtvsM02
TH2F ** fHistoTrueSecondaryPi0MCPtResolPt
array of histos with validated weighted primary eta, MCpt, resol pt
TH1F ** fHistoJetJetNTrials
array of profiles with xsection for jetjet
TH2F ** fHistoTrueClusPrimPi0InvMassvsPt
Bool_t IsLargestComponentElectron()
virtual void UserExec(Option_t *)
TH2F ** fHistoTruePrimaryPi01GammaMCPtResolPt
array of histos with validated weighted primary pi0, MCpt, resol pt
TH1F ** fHistoMCEtaDalitzInAccPt
array of histos with weighted pi0 dalitz in acceptance, pT
TH1F ** fHistoMCPi0Pt
array of histos for header names
TH1F ** fHistoMCEtaDalitzWOEvtWeightInAccPt
array of histos without evt weight pi0 in acceptance, pT
TH2F ** fHistoTrueClusPi0EM02
array of histos with validated electrons, E, m02
TH2F ** fHistoTrueClusElectronFromGammaPtvsM02
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)
TH2F ** fHistoClusMergedNParticlePt
array of histos with merged cluster NCells vs Pt
TH1F ** fHistoMCEtaWOEvtWeightInAccPt
array of histos without evt weight pi0 in acceptance, pT
Int_t GetSourceClassification(Int_t daughter, Int_t pdgCode)
Int_t GetNCaloPhotonMCLabels()
TH2F ** fHistoTrueClusGammaEM02
array of histos with validated eta, pt, alpha
TList * GetCaloTrackMatcherHistograms()
void SetLogBinningXTH2(TH2 *histoRebin)
TH2F ** fHistoDoubleCountTrueEtaPtvsM02
array of histos with double counted secondary pi0s, pT, M02
TH2F ** fHistoTrueClusBGPtvsM02
virtual void Terminate(const Option_t *)
TH2F ** fHistoClusMergedPtvsM02
array of histos with cluster NLM vs Pt
TProfile ** fProfileEtaShift
array of histos with V0 counts
Class handling all kinds of selection cuts for Gamma Conversion analysis.
TH2F ** fHistoMCEtaPtJetPt
array of histos with weighted pi0, pT, hardest jet pt
TH2F ** fHistoTrueClusElectronPtvsM02
TH2F ** fHistoDoubleCountTruePi0PtvsM02
array of histos with validated weighted secondary pi0, MCpt, resol pt
TH2F ** fHistoTrueClusMergedPtvsM02
array of histos with weighted all gamma
AliV0ReaderV1 * fV0Reader
Double_t GetAlpha() const
void SetNCaloPhotonMCLabels(Int_t nLabels)
Bool_t IsConversionFullyContained()
TH1F ** fHistoDoubleCountTrueSecPi0Pt
array of histos with double counted pi0s, pT, M02
TH1F ** fHistoMCEtaPt
array of histos without event weights pi0, pT
void ProcessMCParticles()
TH1F ** fHistoMCEtaWOWeightPt
array of histos with weighted eta, pT
void ProcessTrueClusterCandidates(AliAODConversionPhoton *TruePhotonCandidate, Float_t m02, AliAODConversionPhoton *TrueSubClusterCandidate1, AliAODConversionPhoton *TrueSubClusterCandidate2)
TH2F ** fHistoTrueClusGammaFromPi0PtvsM02
Class handling all kinds of selection cuts for Gamma Conversion analysis.
TH1F ** fHistoMCPi0DalitzWOEvtWeightInAccPt
array of histos with weighted eta dalitz in acceptance, pT
TH2F ** fHistoNGoodESDTracksVsNClusterCandidates
array of histos with number of merged cluster candidates per event
TH2F ** fHistoMCSecPi0PtvsSource
array of histos without evt weight eta in acceptance, pT
TH2F ** fHistoMotherInvMassPt
TH1F ** fHistoMCPi0DalitzWOEvtWeightPt
array of histos with unweighted pi0 Dalitz, pT
TH2F ** fHistoTrueClusElectronFromEtaPtvsM02
TH2F ** fHistoTrueClusSecPi0PtvsM02
Int_t GetNCaloPhotonMotherMCLabels()
AliConvEventCuts * GetEventCuts()
TList * fEventCutArray
current number of merged cluster candidates
TH2F ** fHistoTrueClusMergedPartConvFromEtaPtvsM02
TH1F ** fHistoMCEtaInAccPt
array of histos with weighted pi0 in acceptance, pT
TH2F ** fHistoTruePrimaryPi01ElectronMCPtResolPt
array of histos with validated weighted primary pi0, MCpt, resol pt
TProfile ** fProfileJetJetXSection
array of profiles with eta shift
vector< Int_t > fVectorDoubleCountTrueEtas
vector containing labels of validated pi0
Bool_t fSetPlotHistsExtQA
TH1F ** fHistoVertexZ
array of histos with number of good tracks (2010 Standard track cuts)
vector< Int_t > fVectorDoubleCountTruePi0s
array of histos with double counted etas, pT, M02
void SetCaloPhotonMCFlagsAOD(AliVEvent *event, Bool_t enableSort)
TH2F ** fHistoTrueClusGammaPtvsSource
TH2F ** fHistoTrueClusMergedPureFromPi0PtvsM02
TH2F ** fHistoTrueClusPi0InvMassvsPt
TH2F ** fHistoTruePrimaryPi0PureMergedMCPtResolPt
array of histos with validated eta, E, m02
Int_t GetSelectedMesonID()
void ProcessAODMCParticles()
TH2F ** fHistoClusNLMPt
array of histos with cluster, pt overlapping with other headers
TH2F ** fHistoTrueEtaPtY
array of histos with validated pi0, pt, Y
Bool_t IsLargestComponentPhoton()
void FillMultipleCountMap(map< Int_t, Int_t > &ma, Int_t tobechecked)
Bool_t fEnableSortForClusMC
TH2F ** fHistoTrueClusSecPi0FromLambdaPtvsM02
TH1F ** fHistoTrueMergedMissedPDG
Bool_t IsMergedPartConv()
TH2F ** fHistoTrueClusElectronEM02
array of histos with validated gamma, E, m02