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;
433 ptBinsDefClus = 1000;
438 Int_t showerShapeBins = 500;
507 fCutFolder[iCut]->SetName(Form(
"Cut Number %s_%s_%s_%s",cutstringEvent.Data(), cutstringCalo.Data(), cutstringCaloMerged.Data(), cutstringMeson.Data()));
511 fESDList[iCut]->SetName(Form(
"%s_%s_%s_%s ESD histograms",cutstringEvent.Data(), cutstringCalo.Data(), cutstringCaloMerged.Data(), cutstringMeson.Data()));
515 fHistoNEvents[iCut] =
new TH1F(
"NEvents",
"NEvents",14,-0.5,13.5);
517 fHistoNEvents[iCut]->GetXaxis()->SetBinLabel(2,
"Centrality");
518 fHistoNEvents[iCut]->GetXaxis()->SetBinLabel(3,
"Miss. MC or inc. ev.");
520 TString TriggerNames =
"Not Trigger: ";
522 fHistoNEvents[iCut]->GetXaxis()->SetBinLabel(4,TriggerNames.Data());
527 fHistoNEvents[iCut]->GetXaxis()->SetBinLabel(6,
"Cont. Vertex");
531 fHistoNEvents[iCut]->GetXaxis()->SetBinLabel(10,
"EMCAL problems");
532 fHistoNEvents[iCut]->GetXaxis()->SetBinLabel(11,
"rejectedForJetJetMC");
533 fHistoNEvents[iCut]->GetXaxis()->SetBinLabel(12,
"SPD hits vs tracklet");
534 fHistoNEvents[iCut]->GetXaxis()->SetBinLabel(13,
"Out-of-Bunch pileup Past-Future");
535 fHistoNEvents[iCut]->GetXaxis()->SetBinLabel(14,
"Pileup V0M-TPCout Tracks");
544 TString TriggerNames =
"Not Trigger: ";
577 fHistoVertexZ[iCut] =
new TH1F(
"VertexZ",
"VertexZ",1000,-50,50);
609 fHistoNV0Tracks[iCut] =
new TH1F(
"V0 Multiplicity",
"V0 Multiplicity",30000,-0.5,29999.5);
611 fHistoNV0Tracks[iCut] =
new TH1F(
"V0 Multiplicity",
"V0 Multiplicity",2500,-0.5,2499.5);
613 fHistoNV0Tracks[iCut] =
new TH1F(
"V0 Multiplicity",
"V0 Multiplicity",1500,-0.5,1499.5);
629 fHistoClusGammaPt[iCut] =
new TH1F(
"ClusGamma_Pt",
"ClusGamma_Pt",ptBinsDefClus, startPtDefClus, endPtDefClus);
631 fHistoClusGammaE[iCut] =
new TH1F(
"ClusGamma_E",
"ClusGamma_E",ptBinsDefClus, startPtDefClus, endPtDefClus);
635 fHistoClusMergedPtvsM02[iCut] =
new TH2F(
"ClusMerged_Pt_M02",
"ClusMerged_Pt_M02",ptBins, startPt, endPt,showerShapeBins, startShowerShape, endShowerShape);
637 fHistoClusMergedPtvsM02Accepted[iCut] =
new TH2F(
"ClusMerged_Pt_M02_AcceptedMeson",
"ClusMerged_Pt_M02_AcceptedMeson",ptBins, startPt, endPt,showerShapeBins, startShowerShape, endShowerShape);
639 fHistoClusMergedEvsM02Accepted[iCut] =
new TH2F(
"ClusMerged_E_M02_AcceptedMeson",
"ClusMerged_E_M02_AcceptedMeson",ptBins, startPt, endPt, showerShapeBins, startShowerShape, endShowerShape);
641 fHistoClusNLMPt[iCut] =
new TH2F(
"ClusMerged_NLM_Pt_AcceptedMeson",
"ClusMerged_NLM_Pt_AcceptedMeson",12, -0.5, 11.5, ptBins, startPt, endPt);
656 fHistoClusNCellsPt[iCut] =
new TH2F(
"Clus_NCells_Pt",
"Clus_NCells_Pt",100,-0.5,99.5,ptBins, startPt, endPt);
664 fHistoClusMergedEAroundE[iCut] =
new TH2F(
"ClusMerged_EAroundClus_E",
"ClusMerged_EAroundClus_E",ptBinsDefClus, startPtDefClus, endPtDefClus, ptBins, startPt, endPt);
682 fHistoMotherInvMassPt[iCut] =
new TH2F(
"ESD_Mother_InvMass_Pt",
"ESD_Mother_InvMass_Pt",invMassBins, startMass, endMass,ptBins, startPt, endPt);
690 fHistoMotherPtY[iCut] =
new TH2F(
"ESD_Mother_Pt_Y",
"ESD_Mother_Pt_Y", ptBinsLog, startPtLog, endPtLog, 150, -1.5, 1.5);
693 fHistoMotherPtAlpha[iCut] =
new TH2F(
"ESD_Mother_Pt_Alpha",
"ESD_Mother_Pt_Alpha", ptBinsLog, startPtLog, endPtLog, 100, 0, 1);
825 fMCList[iCut]->SetName(Form(
"%s_%s_%s_%s MC histograms",cutstringEvent.Data(),cutstringCalo.Data(),cutstringCaloMerged.Data(), cutstringMeson.Data()));
826 fMCList[iCut]->SetOwner(kTRUE);
829 fHistoMCPi0Pt[iCut] =
new TH1F(
"MC_Pi0_Pt",
"MC_Pi0_Pt",ptBins, startPt, endPt);
832 fHistoMCEtaPt[iCut] =
new TH1F(
"MC_Eta_Pt",
"MC_Eta_Pt",ptBins, startPt, endPt);
858 fHistoMCDecayGammaPt[iCut] =
new TH1F(
"MC_DecayGamma_Pt",
"MC_DecayGamma_Pt",ptBins, startPt, endPt);
861 fHistoMCAllGammaPt[iCut] =
new TH1F(
"MC_AllGamma_Pt",
"MC_AllGamma_Pt",ptBins, startPt, endPt);
866 fHistoMCPi0WOWeightPt[iCut] =
new TH1F(
"MC_Pi0_WOWeights_Pt",
"MC_Pi0_WOWeights_Pt",ptBins, startPt, endPt);
868 fHistoMCPi0InAccPt[iCut] =
new TH1F(
"MC_Pi0InAcc_Pt",
"MC_Pi0InAcc_Pt",ptBins, startPt, endPt);
871 fHistoMCPi0DalitzPt[iCut] =
new TH1F(
"MC_Pi0Dalitz_Pt",
"MC_Pi0Dalitz_Pt",ptBins, startPt, endPt);
890 fHistoMCEtaWOWeightPt[iCut] =
new TH1F(
"MC_Eta_WOWeights_Pt",
"MC_Eta_WOWeights_Pt",ptBins, startPt, endPt);
892 fHistoMCEtaInAccPt[iCut] =
new TH1F(
"MC_EtaInAcc_Pt",
"MC_EtaInAcc_Pt",ptBins, startPt, endPt);
895 fHistoMCEtaDalitzPt[iCut] =
new TH1F(
"MC_EtaDalitz_Pt",
"MC_EtaDalitz_Pt",ptBins, startPt, endPt);
909 fHistoMCPi0WOEvtWeightPt[iCut] =
new TH1F(
"MC_Pi0_WOEventWeights_Pt",
"MC_Pi0_WOEventWeights_Pt",ptBins, startPt, endPt);
923 fHistoMCEtaWOEvtWeightPt[iCut] =
new TH1F(
"MC_Eta_WOEventWeights_Pt",
"MC_Eta_WOEventWeights_Pt",ptBins, startPt, endPt);
934 fHistoMCPi0PtJetPt[iCut] =
new TH2F(
"MC_Pi0_Pt_JetPt",
"MC_Pi0_Pt_JetPt", ptBinsLog, startPtLog, endPtLog, 200, -0.5, 199.5);
940 fHistoMCEtaPtJetPt[iCut] =
new TH2F(
"MC_Eta_Pt_JetPt",
"MC_Eta_Pt_JetPt", ptBinsLog, startPtLog, endPtLog, 200, -0.5, 199.5);
949 fTrueList[iCut]->SetName(Form(
"%s_%s_%s_%s True histograms",cutstringEvent.Data(),cutstringCalo.Data(),cutstringCaloMerged.Data(), cutstringMeson.Data()));
953 fHistoTrueClusMergedPtvsM02[iCut] =
new TH2F(
"ESD_TrueClusMerged_Pt_M02",
"ESD_TrueClusMerged_Pt_M02",ptBins, startPt, endPt,showerShapeBins, startShowerShape, endShowerShape);
955 fHistoTrueClusPi0PtvsM02 [iCut] =
new TH2F(
"ESD_TrueClusFromPi0_Pt_M02",
"ESD_TrueClusFromPi0_Pt_M02",ptBins, startPt, endPt,showerShapeBins, startShowerShape, endShowerShape);
957 fHistoTrueClusPi0DalitzPtvsM02 [iCut] =
new TH2F(
"ESD_TrueClusFromPi0Dalitz_Pt_M02",
"ESD_TrueClusFromPi0Dalitz_Pt_M02",ptBins, startPt, endPt,showerShapeBins, startShowerShape, endShowerShape);
959 fHistoTrueClusEtaPtvsM02[iCut] =
new TH2F(
"ESD_TrueClusFromEta_Pt_M02",
"ESD_TrueClusFromEta_Pt_M02",ptBins, startPt, endPt,showerShapeBins, startShowerShape, endShowerShape);
961 fHistoTrueClusEtaDalitzPtvsM02[iCut] =
new TH2F(
"ESD_TrueClusFromEtaDalitz_Pt_M02",
"ESD_TrueClusFromEtaDalitz_Pt_M02",ptBins, startPt, endPt,showerShapeBins, startShowerShape, endShowerShape);
963 fHistoTrueClusMergedPureFromPi0PtvsM02[iCut] =
new TH2F(
"ESD_TrueClusMergedPureFromPi0_Pt_M02",
"ESD_TrueClusMergedPureFromPi0_Pt_M02",ptBins, startPt, endPt,showerShapeBins, startShowerShape, endShowerShape);
965 fHistoTrueClusMergedPureFromEtaPtvsM02[iCut] =
new TH2F(
"ESD_TrueClusMergedPureFromEta_Pt_M02",
"ESD_TrueClusMergedPureFromEta_Pt_M02",ptBins, startPt, endPt,showerShapeBins, startShowerShape, endShowerShape);
972 fHistoTrueClusBGPtvsM02[iCut] =
new TH2F(
"ESD_TrueClusBG_Pt_M02",
"ESD_TrueClusBG_Pt_M02",ptBins, startPt, endPt,showerShapeBins, startShowerShape, endShowerShape);
974 fHistoTrueClusGammaPtvsM02[iCut] =
new TH2F(
"ESD_TrueClusGamma_Pt_M02",
"ESD_TrueClusGamma_Pt_M02",ptBins, startPt, endPt,showerShapeBins, startShowerShape, endShowerShape);
976 fHistoTrueClusGammaFromPi0PtvsM02[iCut] =
new TH2F(
"ESD_TrueClusGamma_FromPi0_Pt_M02",
"ESD_TrueClusGamma_FromPi0_Pt_M02",ptBins, startPt, endPt,showerShapeBins, startShowerShape, endShowerShape);
978 fHistoTrueClusGammaFromEtaPtvsM02[iCut] =
new TH2F(
"ESD_TrueClusGamma_FromEta_Pt_M02",
"ESD_TrueClusGamma_FromEta_Pt_M02",ptBins, startPt, endPt,showerShapeBins, startShowerShape, endShowerShape);
980 fHistoTrueClusElectronPtvsM02[iCut] =
new TH2F(
"ESD_TrueClusElectron_Pt_M02",
"ESD_TrueClusElectron_Pt_M02",ptBins, startPt, endPt,showerShapeBins, startShowerShape, endShowerShape);
982 fHistoTrueClusElectronFromPi0PtvsM02[iCut] =
new TH2F(
"ESD_TrueClusElectron_FromPi0_Pt_M02",
"ESD_TrueClusElectron_FromPi0_Pt_M02",ptBins, startPt, endPt,showerShapeBins, startShowerShape, endShowerShape);
984 fHistoTrueClusElectronFromEtaPtvsM02[iCut] =
new TH2F(
"ESD_TrueClusElectron_FromEta_Pt_M02",
"ESD_TrueClusElectron_FromEta_Pt_M02",ptBins, startPt, endPt,showerShapeBins, startShowerShape, endShowerShape);
986 fHistoTrueClusElectronFromGammaPtvsM02[iCut] =
new TH2F(
"ESD_TrueClusElectron_FromGamma_Pt_M02",
"ESD_TrueClusElectron_FromGamma_Pt_M02",ptBins, startPt, endPt,showerShapeBins, startShowerShape, endShowerShape);
990 fHistoTrueClusPrimPi0PtvsM02[iCut] =
new TH2F(
"ESD_TrueClusFromPrimPi0_Pt_M02",
"ESD_TrueClusFromPrimPi0_Pt_M02",ptBins, startPt, endPt,showerShapeBins, startShowerShape, endShowerShape);
992 fHistoTrueClusSecPi0PtvsM02[iCut] =
new TH2F(
"ESD_TrueClusFromSecPi0_Pt_M02",
"ESD_TrueClusFromSecPi0_Pt_M02",ptBins, startPt, endPt,showerShapeBins, startShowerShape, endShowerShape);
994 fHistoTrueClusSecPi0FromK0sPtvsM02[iCut] =
new TH2F(
"ESD_TrueClusFromSecPi0FromK0s_Pt_M02",
"ESD_TrueClusFromSecPi0FromK0s_Pt_M02",ptBins, startPt, endPt,showerShapeBins, startShowerShape, endShowerShape);
996 fHistoTrueClusSecPi0FromK0lPtvsM02[iCut] =
new TH2F(
"ESD_TrueClusFromSecPi0FromK0l_Pt_M02",
"ESD_TrueClusFromSecPi0FromK0l_Pt_M02",ptBins, startPt, endPt,showerShapeBins, startShowerShape, endShowerShape);
998 fHistoTrueClusSecPi0FromLambdaPtvsM02[iCut] =
new TH2F(
"ESD_TrueClusFromSecPi0FromLambda_Pt_M02",
"ESD_TrueClusFromSecPi0FromLambda_Pt_M02",ptBins, startPt, endPt,showerShapeBins, startShowerShape, endShowerShape);
1000 fHistoTrueSecPi0PtvsDiffReco[iCut] =
new TH2F(
"ESD_TrueClusFromSecPi0_Pt_RecoMethod",
"ESD_TrueClusFromSecPi0_Pt_RecoMethod",ptBins, startPt, endPt, 4, -0.5, 3.5);
1014 fHistoDoubleCountTruePi0PtvsM02[iCut] =
new TH2F(
"ESD_TrueDoubleCountPi0_Pt_M02",
"ESD_TrueDoubleCountPi0_Pt_M02",ptBins, startPt, endPt,showerShapeBins, startShowerShape, endShowerShape);
1018 fHistoDoubleCountTrueEtaPtvsM02[iCut] =
new TH2F(
"ESD_TrueDoubleCountEta_Pt_M02",
"ESD_TrueDoubleCountEta_Pt_M02",ptBins, startPt, endPt,showerShapeBins, startShowerShape, endShowerShape);
1025 fHistoTrueClusPi0InvMassvsPt [iCut] =
new TH2F(
"ESD_TrueClusFromPi0_InvMass_Pt",
"ESD_TrueClusFromPi0_InvMass_Pt",invMassBins, startMass, endMass,ptBins, startPt, endPt);
1027 fHistoTrueClusEtaInvMassvsPt[iCut] =
new TH2F(
"ESD_TrueClusFromEta_InvMass_Pt",
"ESD_TrueClusFromEta_InvMass_Pt",invMassBins, startMass, endMass,ptBins, startPt, endPt);
1029 fHistoTrueClusBGInvMassvsPt[iCut] =
new TH2F(
"ESD_TrueClusBG_InvMass_Pt",
"ESD_TrueClusBG_InvMass_Pt",invMassBins, startMass, endMass,ptBins, startPt, endPt);
1031 fHistoTrueClusGammaInvMassvsPt[iCut] =
new TH2F(
"ESD_TrueClusGamma_InvMass_Pt",
"ESD_TrueClusGamma_InvMass_Pt",invMassBins, startMass, endMass,ptBins, startPt, endPt);
1036 fHistoTrueClusPrimPi0InvMassvsPt[iCut] =
new TH2F(
"ESD_TrueClusFromPrimPi0_InvMass_Pt",
"ESD_TrueClusFromPrimPi0_InvMass_Pt",invMassBins, startMass, endMass,ptBins, startPt, endPt);
1042 fHistoTrueClusGammaEM02[iCut] =
new TH2F(
"TrueClusGammaEM02",
"TrueClusGammaEM02",ptBins, startPt, endPt, showerShapeBins, startShowerShape, endShowerShape);
1044 fHistoTrueClusElectronEM02[iCut] =
new TH2F(
"TrueClusElectronEM02",
"TrueClusElectronEM02",ptBins, startPt, endPt, showerShapeBins, startShowerShape, endShowerShape);
1046 fHistoTrueClusPi0EM02[iCut] =
new TH2F(
"TrueClusPi0EM02",
"TrueClusPi0EM02",ptBins, startPt, endPt, showerShapeBins, startShowerShape, endShowerShape);
1048 fHistoTrueClusEtaEM02[iCut] =
new TH2F(
"TrueClusEtaEM02",
"TrueClusEtaEM02",ptBins, startPt, endPt, showerShapeBins, startShowerShape, endShowerShape);
1051 fHistoTruePi0PtY[iCut] =
new TH2F(
"ESD_TruePi0_Pt_Y",
"ESD_TruePi0_Pt_Y",ptBinsLog, startPtLog, endPtLog,150,-1.5,1.5);
1054 fHistoTruePi0PtAlpha[iCut] =
new TH2F(
"ESD_TruePi0_Pt_Alpha",
"ESD_TruePi0_Pt_Alpha",ptBinsLog, startPtLog, endPtLog,100,0,1);
1074 fHistoTrueEtaPtY[iCut] =
new TH2F(
"ESD_TrueEta_Pt_Y",
"ESD_TrueEta_Pt_Y",ptBinsLog, startPtLog, endPtLog,150,-1.5,1.5);
1077 fHistoTrueEtaPtAlpha[iCut] =
new TH2F(
"ESD_TrueEta_Pt_Alpha",
"ESD_TrueEta_Pt_Alpha",ptBinsLog, startPtLog, endPtLog,100,0,0.5);
1167 for(
Int_t iMatcherTask = 0; iMatcherTask < 3; iMatcherTask++){
1228 printf(
" Gamma Conversion Task %s :: Eta Shift Manually Set to %f \n\n",
1235 Bool_t doNonLinCorr = kTRUE;
1237 doNonLinCorr = kFALSE;
1239 doNonLinCorr = kTRUE;
1241 doNonLinCorr = kTRUE;
1243 doNonLinCorr = kFALSE;
1244 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;
1245 cout <<
"INFO: switching off the non lin corr for merged cluster" << endl;
1265 if(
fInputEvent->IsIncompleteDAQ()==kTRUE) eventQuality = 2;
1268 if(eventQuality == 2 || eventQuality == 3){
1293 Bool_t isRunningEMCALrelAna = kFALSE;
1301 if((xsection==-1.) || (ntrials==-1.)) AliFatal(Form(
"ERROR: GetXSectionAndNTrials returned invalid xsection/ntrials, periodName from V0Reader: '%s'",
fV0Reader->
GetPeriodName().Data()));
1315 Bool_t triggered = kTRUE;
1316 if(eventNotAccepted){
1320 if (eventNotAccepted==3 &&
fIsMC>0){
1327 if(eventQuality != 0){
1334 if (triggered == kTRUE) {
1360 else if(
fInputEvent->IsA()==AliAODEvent::Class()){
1369 if (nameBin.CompareTo(
"")== 0){
1371 ->GetAcceptedHeader())->At(i))->GetString();
1372 fHistoMCHeaders[iCut]->GetXaxis()->SetBinLabel(i+1,nameHeader.Data());
1385 if (triggered==kFALSE)
continue;
1416 if(nclus == 0)
return;
1433 InputEvent()->GetPrimaryVertex()->GetXYZ(vertex);
1436 for(Long_t i = 0; i < nclus; i++){
1439 AliVCluster* clus = NULL;
1440 if(
fInputEvent->IsA()==AliESDEvent::Class()) clus =
new AliESDCaloCluster(*(AliESDCaloCluster*)
fInputEvent->GetCaloCluster(i));
1441 else if(
fInputEvent->IsA()==AliAODEvent::Class()) clus =
new AliAODCaloCluster(*(AliAODCaloCluster*)
fInputEvent->GetCaloCluster(i));
1455 TLorentzVector clusterVector;
1456 clus->GetMomentum(clusterVector,vertex);
1458 TLorentzVector* tmpvec =
new TLorentzVector();
1459 tmpvec->SetPxPyPzE(clusterVector.Px(),clusterVector.Py(),clusterVector.Pz(),clusterVector.E());
1463 if(!PhotonCandidate){
1466 if (PhotonCandidate)
delete PhotonCandidate;
1476 Int_t* mclabelsCluster = clus->GetLabels();
1478 Int_t nValidClusters = 0;
1480 if (clus->GetNLabels()>0){
1481 for (
Int_t k =0; k< (
Int_t)clus->GetNLabels(); k++){
1483 if (mclabelsCluster[k]>0){
1486 if (nValidClusters< 50)PhotonCandidate->
SetCaloPhotonMCLabel(nValidClusters,mclabelsCluster[k]);
1502 if (clus->GetNLabels()>1){
1503 Int_t* mclabelsCluster = clus->GetLabels();
1504 for (
Int_t l = 1; l < (
Int_t)clus->GetNLabels(); l++ ){
1525 delete PhotonCandidate;
1532 delete PhotonCandidate;
1538 AliAODCaloCluster* clusSub1 =
new AliAODCaloCluster();
1539 AliAODCaloCluster* clusSub2 =
new AliAODCaloCluster();
1554 const Int_t nc = clus->GetNCells();
1555 Int_t absCellIdList[nc];
1566 TLorentzVector clusterVector1;
1567 clusSub1->GetMomentum(clusterVector1,vertex);
1568 TLorentzVector* tmpvec1 =
new TLorentzVector();
1569 tmpvec1->SetPxPyPzE(clusterVector1.Px(),clusterVector1.Py(),clusterVector1.Pz(),clusterVector1.E());
1572 if(!PhotonCandidate1){
1581 TLorentzVector clusterVector2;
1582 clusSub2->GetMomentum(clusterVector2,vertex);
1583 TLorentzVector* tmpvec2 =
new TLorentzVector();
1584 tmpvec2->SetPxPyPzE(clusterVector2.Px(),clusterVector2.Py(),clusterVector2.Pz(),clusterVector2.E());
1587 if(!PhotonCandidate2){
1613 for (
Int_t j = 0; j < nclus; j++){
1614 if (j == i)
continue;
1615 AliVCluster* clusTemp = NULL;
1616 if(
fInputEvent->IsA()==AliESDEvent::Class()) clusTemp =
new AliESDCaloCluster(*(AliESDCaloCluster*)
fInputEvent->GetCaloCluster(j));
1617 else if(
fInputEvent->IsA()==AliAODEvent::Class()) clusTemp =
new AliAODCaloCluster(*(AliAODCaloCluster*)
fInputEvent->GetCaloCluster(j));
1627 nCellsAround = nCellsAround+clusTemp->GetNCells();
1628 energyAround = energyAround+clusTemp->E();
1643 if(
fIsMC> 0 && PhotonCandidate && PhotonCandidate1 && PhotonCandidate2){
1656 delete PhotonCandidate1;
1659 delete PhotonCandidate2;
1663 delete PhotonCandidate;
1674 const AliVVertex* primVtxMC =
fMCEvent->GetPrimaryVertex();
1675 Double_t mcProdVtxX = primVtxMC->GetX();
1676 Double_t mcProdVtxY = primVtxMC->GetY();
1677 Double_t mcProdVtxZ = primVtxMC->GetZ();
1679 TParticle *Photon = NULL;
1680 if (!TrueClusterCandidate->
GetIsCaloPhoton()) AliFatal(
"CaloPhotonFlag has not been set task will abort");
1693 if (!mesonIsSelected){
1697 Int_t pdgCodeParticle = Photon->GetPdgCode();
1700 cout << endl << endl <<
"Cluster energy: " << TrueClusterCandidate->E() << endl;;
1706 Int_t clusterClass = 0;
1713 Long_t motherLab = -1;
1745 TParticle *mother = NULL;
1746 Int_t motherPDG = -1;
1747 if (motherLab > -1){
1748 mother =
fMCEvent->Particle(motherLab);
1752 motherPDG = TMath::Abs(mother->GetPdgCode());
1759 if (clusterClass == 1 || clusterClass == 2 || clusterClass == 3 ){
1764 if (clusterClass == 1 && TrueClusterCandidate->
IsMerged()){
1765 if (motherPDG == 111){
1771 if (motherPDG == 221)
1774 if (motherPDG == 111){
1780 if (motherPDG == 221)
1782 }
else if (clusterClass == 2){
1783 if (motherPDG == 111){
1788 }
if (motherPDG == 221)
1790 }
else if (clusterClass == 3){
1791 if (motherPDG == 111) {
1797 if (motherPDG == 221)
1802 if (motherPDG == 111){
1811 if (TrueClusterCandidate->
IsDalitz()){
1828 if (clusterClass == 1 && TrueClusterCandidate->
IsMerged())
1832 else if (clusterClass == 2)
1834 else if (clusterClass == 3)
1842 Int_t grandMaLab = mother->GetMother(0);
1843 if (grandMaLab > -1){
1844 if (TMath::Abs(
fMCEvent->Particle(grandMaLab)->GetPdgCode()) == 310){
1846 }
else if (TMath::Abs(
fMCEvent->Particle(grandMaLab)->GetPdgCode()) == 130){
1848 }
else if (TMath::Abs(
fMCEvent->Particle(grandMaLab)->GetPdgCode()) == 3122){
1855 }
else if (motherPDG == 221){
1857 if (TrueClusterCandidate->
IsDalitz()){
1883 if (motherLab == -1){
1886 if (motherPDG == 111)
1888 else if (motherPDG == 221)
1890 else if (motherPDG == 331)
1892 else if (motherPDG == 223)
1894 else if (motherPDG == 333)
1896 else if (motherPDG == 3122)
1911 Int_t motherLab = Photon->GetMother(0);
1912 if (motherLab == -1){
1915 if (motherPDG == 22){
1918 }
else if (motherPDG == 111){
1920 }
else if (motherPDG == 221){
1922 }
else if (
int(motherPDG/100.)==5 || int(motherPDG/1000.)==5 ){
1924 }
else if (
int(motherPDG/100.)==4 || int(motherPDG/1000.)==4 ){
1926 }
else if (motherPDG == 23 || motherPDG == 24){
1928 }
else if (motherPDG == 15) {
1941 if (m02 >= 0 && m02 < maxM02){
1964 const AliVVertex* primVtxMC =
fMCEvent->GetPrimaryVertex();
1965 Double_t mcProdVtxX = primVtxMC->GetX();
1966 Double_t mcProdVtxY = primVtxMC->GetY();
1967 Double_t mcProdVtxZ = primVtxMC->GetZ();
1969 AliAODMCParticle *Photon = NULL;
1970 TClonesArray *AODMCTrackArray =
dynamic_cast<TClonesArray*
>(
fInputEvent->FindListObject(AliAODMCParticle::StdBranchName()));
1971 if (AODMCTrackArray){
1972 if (!TrueClusterCandidate->
GetIsCaloPhoton()) AliFatal(
"CaloPhotonFlag has not been set task will abort");
1978 AliInfo(
"AODMCTrackArray could not be loaded");
1989 if (!mesonIsSelected){
1993 Int_t pdgCodeParticle = Photon->GetPdgCode();
1996 cout << endl << endl <<
"Cluster energy: " << TrueClusterCandidate->E() << endl;;
2002 Int_t clusterClass = 0;
2009 Long_t motherLab = -1;
2029 if (TMath::Abs(((AliAODMCParticle*) AODMCTrackArray->At(TrueClusterCandidate->
GetCaloPhotonMotherMCLabel(1)))->GetPdgCode()) == 111 || TMath::Abs(((AliAODMCParticle*) AODMCTrackArray->At(TrueClusterCandidate->
GetCaloPhotonMotherMCLabel(1)))->GetPdgCode()) == 221 ){
2041 AliAODMCParticle *mother = NULL;
2042 Int_t motherPDG = -1;
2043 if (motherLab > -1){
2044 mother =
static_cast<AliAODMCParticle*
>(AODMCTrackArray->At(motherLab));
2048 motherPDG = TMath::Abs(mother->GetPdgCode());
2055 if (clusterClass == 1 || clusterClass == 2 || clusterClass == 3 ){
2060 if (clusterClass == 1 && TrueClusterCandidate->
IsMerged()){
2061 if (motherPDG == 111){
2067 if (motherPDG == 221)
2070 if (motherPDG == 111){
2076 if (motherPDG == 221)
2078 }
else if (clusterClass == 2){
2079 if (motherPDG == 111){
2084 }
if (motherPDG == 221)
2086 }
else if (clusterClass == 3){
2087 if (motherPDG == 111) {
2093 if (motherPDG == 221)
2098 if (motherPDG == 111){
2107 if (TrueClusterCandidate->
IsDalitz()){
2124 if (clusterClass == 1 && TrueClusterCandidate->
IsMerged())
2128 else if (clusterClass == 2)
2130 else if (clusterClass == 3)
2138 Int_t grandMaLab = mother->GetMother();
2139 if (grandMaLab > -1){
2140 if (TMath::Abs(static_cast<AliAODMCParticle*>(AODMCTrackArray->At(grandMaLab))->GetPdgCode()) == 310){
2142 }
else if (TMath::Abs(static_cast<AliAODMCParticle*>(AODMCTrackArray->At(grandMaLab))->GetPdgCode()) == 130){
2144 }
else if (TMath::Abs(static_cast<AliAODMCParticle*>(AODMCTrackArray->At(grandMaLab))->GetPdgCode()) == 3122){
2151 }
else if (motherPDG == 221){
2153 if (TrueClusterCandidate->
IsDalitz()){
2179 if (motherLab == -1){
2182 if (motherPDG == 111)
2184 else if (motherPDG == 221)
2186 else if (motherPDG == 331)
2188 else if (motherPDG == 223)
2190 else if (motherPDG == 333)
2192 else if (motherPDG == 3122)
2207 Int_t motherLab = Photon->GetMother();
2208 if (motherLab == -1){
2211 if (motherPDG == 22){
2214 }
else if (motherPDG == 111){
2216 }
else if (motherPDG == 221){
2218 }
else if (
int(motherPDG/100.)==5 || int(motherPDG/1000.)==5 ){
2220 }
else if (
int(motherPDG/100.)==4 || int(motherPDG/1000.)==4 ){
2222 }
else if (motherPDG == 23 || motherPDG == 24){
2224 }
else if (motherPDG == 15) {
2237 if (m02 >= 0 && m02 < maxM02){
2258 const AliVVertex* primVtxMC =
fMCEvent->GetPrimaryVertex();
2259 Double_t mcProdVtxX = primVtxMC->GetX();
2260 Double_t mcProdVtxY = primVtxMC->GetY();
2261 Double_t mcProdVtxZ = primVtxMC->GetZ();
2264 for(Long_t i = 0; i <
fMCEvent->GetNumberOfTracks(); i++) {
2267 TParticle* particle = (TParticle *)
fMCEvent->Particle(i);
2268 if (!particle)
continue;
2270 Int_t isMCFromMBHeader = -1;
2277 if(particle->Energy() - particle->Pz() == 0 || particle->Energy() + particle->Pz() == 0){
2284 if ( particle->GetPdgCode() == 211 ){
2286 }
else if ( particle->GetPdgCode() == -211 ){
2288 }
else if ( particle->GetPdgCode() == 321 ){
2290 }
else if ( particle->GetPdgCode() == -321 ){
2292 }
else if ( TMath::Abs(particle->GetPdgCode()) == 310 ){
2294 }
else if ( TMath::Abs(particle->GetPdgCode()) == 130 ){
2296 }
else if ( TMath::Abs(particle->GetPdgCode()) == 3122 ){
2301 if ( particle->GetPdgCode() == 211 ){
2303 }
else if ( particle->GetPdgCode() == -211 ){
2305 }
else if ( particle->GetPdgCode() == 321 ){
2307 }
else if ( particle->GetPdgCode() == -321 ){
2309 }
else if ( TMath::Abs(particle->GetPdgCode()) == 310 ){
2311 }
else if ( TMath::Abs(particle->GetPdgCode()) == 130 ){
2313 }
else if ( TMath::Abs(particle->GetPdgCode()) == 3122 ){
2315 }
else if ( particle->GetPdgCode() == 22 ){
2317 if(particle->GetMother(0) > -1){
2318 TParticle* mother = (TParticle*)
fMCEvent->Particle(particle->GetMother(0));
2319 if ( TMath::Abs(mother->GetPdgCode()) == 111 ||
2320 TMath::Abs(mother->GetPdgCode()) == 113 ||
2321 TMath::Abs(mother->GetPdgCode()) == 221 ||
2322 TMath::Abs(mother->GetPdgCode()) == 223 ||
2323 TMath::Abs(mother->GetPdgCode()) == 331 ||
2324 TMath::Abs(mother->GetPdgCode()) == 333 ||
2325 TMath::Abs(mother->GetPdgCode()) == 3212 ||
2326 TMath::Abs(mother->GetPdgCode()) == 213
2337 TParticle* daughter0 = (TParticle*)
fMCEvent->Particle(particle->GetFirstDaughter());
2338 TParticle* daughter1 = (TParticle*)
fMCEvent->Particle(particle->GetLastDaughter());
2342 if (particle->Pt()>0.005){
2347 if( TMath::Abs(particle->GetPdgCode()) == 111 ){
2356 }
else if( TMath::Abs(particle->GetPdgCode()) == 221 ){
2370 if( kDaughter0IsPrim && kDaughter1IsPrim &&
2382 Int_t gammaLabel = -1;
2383 Int_t electronLabel = -1;
2384 Int_t positronLabel = -1;
2388 if( (gammaLabel > -1) && (electronLabel > -1) && (positronLabel > -1) ){
2389 TParticle* gamma = (TParticle*)
fMCEvent->Particle(gammaLabel);
2390 TParticle* electron = (TParticle*)
fMCEvent->Particle(electronLabel);
2391 TParticle* positron = (TParticle*)
fMCEvent->Particle(positronLabel);
2395 if (particle->Pt()>0.005){
2420 if( kGammaIsPrim && kElectronIsPrim && kPositronIsPrim &&
2438 TParticle* particle = (TParticle *)
fMCEvent->Particle(i);
2439 if (!particle)
continue;
2441 Int_t isMCFromMBHeader = -1;
2450 TParticle* daughter0 = (TParticle*)
fMCEvent->Particle(particle->GetFirstDaughter());
2451 TParticle* daughter1 = (TParticle*)
fMCEvent->Particle(particle->GetLastDaughter());
2452 TParticle* mother = NULL;
2453 Int_t motherPDG = -1000000;
2454 if (particle->GetMother(0) > -1){
2455 mother = (TParticle*)
fMCEvent->Particle(particle->GetMother(0));
2457 motherPDG = TMath::Abs(mother->GetPdgCode());
2460 if( TMath::Abs(particle->GetPdgCode()) == 111 ){
2468 if( TMath::Abs(particle->GetPdgCode()) == 111 ){
2475 Int_t gammaLabel = -1;
2476 Int_t electronLabel = -1;
2477 Int_t positronLabel = -1;
2481 if( (gammaLabel > -1) && (electronLabel > -1) && (positronLabel > -1) ){
2482 TParticle* gamma = (TParticle*)
fMCEvent->Particle(gammaLabel);
2483 TParticle* electron = (TParticle*)
fMCEvent->Particle(electronLabel);
2484 TParticle* positron = (TParticle*)
fMCEvent->Particle(positronLabel);
2486 TParticle* mother = NULL;
2487 Int_t motherPDG = -1000000;
2488 if (particle->GetMother(0) > -1){
2489 mother = (TParticle*)
fMCEvent->Particle(particle->GetMother(0));
2491 motherPDG = TMath::Abs(mother->GetPdgCode());
2494 if( TMath::Abs(particle->GetPdgCode()) == 111 ){
2503 if( TMath::Abs(particle->GetPdgCode()) == 111 ){
2517 const AliVVertex* primVtxMC =
fMCEvent->GetPrimaryVertex();
2518 Double_t mcProdVtxX = primVtxMC->GetX();
2519 Double_t mcProdVtxY = primVtxMC->GetY();
2520 Double_t mcProdVtxZ = primVtxMC->GetZ();
2522 TClonesArray *AODMCTrackArray =
dynamic_cast<TClonesArray*
>(
fInputEvent->FindListObject(AliAODMCParticle::StdBranchName()));
2523 if (AODMCTrackArray == NULL)
return;
2526 for(Long_t i = 0; i < AODMCTrackArray->GetEntriesFast(); i++) {
2528 AliAODMCParticle* particle =
static_cast<AliAODMCParticle*
>(AODMCTrackArray->At(i));
2529 if (!particle)
continue;
2534 Int_t isMCFromMBHeader = -1;
2541 if(particle->E() - particle->Pz() == 0 || particle->E() + particle->Pz() == 0){
2548 if ( particle->GetPdgCode() == 211 ){
2550 }
else if ( particle->GetPdgCode() == -211 ){
2552 }
else if ( particle->GetPdgCode() == 321 ){
2554 }
else if ( particle->GetPdgCode() == -321 ){
2556 }
else if ( TMath::Abs(particle->GetPdgCode()) == 310 ){
2558 }
else if ( TMath::Abs(particle->GetPdgCode()) == 130 ){
2560 }
else if ( TMath::Abs(particle->GetPdgCode()) == 3122 ){
2565 if ( particle->GetPdgCode() == 211 ){
2567 }
else if ( particle->GetPdgCode() == -211 ){
2569 }
else if ( particle->GetPdgCode() == 321 ){
2571 }
else if ( particle->GetPdgCode() == -321 ){
2573 }
else if ( TMath::Abs(particle->GetPdgCode()) == 310 ){
2575 }
else if ( TMath::Abs(particle->GetPdgCode()) == 130 ){
2577 }
else if ( TMath::Abs(particle->GetPdgCode()) == 3122 ){
2579 }
else if ( particle->GetPdgCode() == 22 ){
2581 if(particle->GetMother() > -1){
2582 AliAODMCParticle *mother =
static_cast<AliAODMCParticle*
>(AODMCTrackArray->At(particle->GetMother()));
2583 if ( TMath::Abs(mother->GetPdgCode()) == 111 ||
2584 TMath::Abs(mother->GetPdgCode()) == 113 ||
2585 TMath::Abs(mother->GetPdgCode()) == 221 ||
2586 TMath::Abs(mother->GetPdgCode()) == 223 ||
2587 TMath::Abs(mother->GetPdgCode()) == 331 ||
2588 TMath::Abs(mother->GetPdgCode()) == 333 ||
2589 TMath::Abs(mother->GetPdgCode()) == 3212 ||
2590 TMath::Abs(mother->GetPdgCode()) == 213
2601 AliAODMCParticle* daughter0 =
static_cast<AliAODMCParticle*
>(AODMCTrackArray->At(particle->GetDaughter(0)));
2602 AliAODMCParticle* daughter1 =
static_cast<AliAODMCParticle*
>(AODMCTrackArray->At(particle->GetDaughter(1)));
2606 if (particle->Pt()>0.005){
2611 if( TMath::Abs(particle->GetPdgCode()) == 111 ){
2620 }
else if( TMath::Abs(particle->GetPdgCode()) == 221 ){
2634 if( kDaughter0IsPrim && kDaughter1IsPrim &&
2646 Int_t gammaLabel = -1;
2647 Int_t electronLabel = -1;
2648 Int_t positronLabel = -1;
2652 if( (gammaLabel > -1) && (electronLabel > -1) && (positronLabel > -1) ){
2653 AliAODMCParticle* gamma =
static_cast<AliAODMCParticle*
>(AODMCTrackArray->At(gammaLabel));
2654 AliAODMCParticle* electron =
static_cast<AliAODMCParticle*
>(AODMCTrackArray->At(electronLabel));
2655 AliAODMCParticle* positron =
static_cast<AliAODMCParticle*
>(AODMCTrackArray->At(positronLabel));
2659 if (particle->Pt()>0.005){
2684 if( kGammaIsPrim && kElectronIsPrim && kPositronIsPrim &&
2702 AliAODMCParticle* particle =
static_cast<AliAODMCParticle*
>(AODMCTrackArray->At(i));
2703 if (!particle)
continue;
2705 Int_t isMCFromMBHeader = -1;
2714 AliAODMCParticle* daughter0 =
static_cast<AliAODMCParticle*
>(AODMCTrackArray->At(particle->GetDaughter(0)));
2715 AliAODMCParticle* daughter1 =
static_cast<AliAODMCParticle*
>(AODMCTrackArray->At(particle->GetDaughter(1)));
2716 AliAODMCParticle* mother = NULL;
2717 Int_t motherPDG = -1000000;
2718 if (particle->GetMother() > -1){
2719 mother =
static_cast<AliAODMCParticle*
>(AODMCTrackArray->At(particle->GetMother()));
2721 motherPDG = TMath::Abs(mother->GetPdgCode());
2724 if( TMath::Abs(particle->GetPdgCode()) == 111 ){
2732 if( TMath::Abs(particle->GetPdgCode()) == 111 ){
2739 Int_t gammaLabel = -1;
2740 Int_t electronLabel = -1;
2741 Int_t positronLabel = -1;
2745 if( (gammaLabel > -1) && (electronLabel > -1) && (positronLabel > -1) ){
2746 AliAODMCParticle* gamma =
static_cast<AliAODMCParticle*
>(AODMCTrackArray->At(gammaLabel));
2747 AliAODMCParticle* electron =
static_cast<AliAODMCParticle*
>(AODMCTrackArray->At(electronLabel));
2748 AliAODMCParticle* positron =
static_cast<AliAODMCParticle*
>(AODMCTrackArray->At(positronLabel));
2750 AliAODMCParticle* mother = NULL;
2751 Int_t motherPDG = -1000000;
2752 if (particle->GetMother() > -1){
2753 mother =
static_cast<AliAODMCParticle*
>(AODMCTrackArray->At(particle->GetMother()));
2755 motherPDG = TMath::Abs(mother->GetPdgCode());
2758 if( TMath::Abs(particle->GetPdgCode()) == 111 ){
2767 if( TMath::Abs(particle->GetPdgCode()) == 111 ){
2781 TAxis *axisafter = histoRebin->GetXaxis();
2782 Int_t bins = axisafter->GetNbins();
2783 Double_t from = axisafter->GetXmin();
2784 Double_t to = axisafter->GetXmax();
2787 Double_t factor = TMath::Power(to/from, 1./bins);
2788 for(
Int_t i=1; i<=bins; ++i) newbins[i] = factor * newbins[i-1];
2789 axisafter->Set(bins, newbins);
2796 if(tobechecked > -1)
2798 vector<Int_t>::iterator it;
2799 it = find (vec.begin(), vec.end(), tobechecked);
2800 if (it != vec.end())
return true;
2802 vec.push_back(tobechecked);
2819 if( ma.find(tobechecked) != ma.end() ) ma[tobechecked] += 1;
2820 else ma[tobechecked] = 2;
2826 map<Int_t, Int_t>::iterator it;
2827 for (it = ma.begin(); it != ma.end(); it++){
2838 if (daughter == 111) {
2839 if (TMath::Abs(pdgCode) == 310)
return 1;
2840 else if (TMath::Abs(pdgCode) == 3122)
return 2;
2841 else if (TMath::Abs(pdgCode) == 130)
return 3;
2842 else if (TMath::Abs(pdgCode) == 2212)
return 4;
2843 else if (TMath::Abs(pdgCode) == 2112)
return 5;
2844 else if (TMath::Abs(pdgCode) == 211)
return 6;
2845 else if (TMath::Abs(pdgCode) == 321)
return 7;
2846 else if (TMath::Abs(pdgCode) == 113 || TMath::Abs(pdgCode) == 213 )
return 8;
2847 else if (TMath::Abs(pdgCode) == 3222 || TMath::Abs(pdgCode) == 3212 || TMath::Abs(pdgCode) == 3112 )
return 9;
2848 else if (TMath::Abs(pdgCode) == 2224 || TMath::Abs(pdgCode) == 2214 || TMath::Abs(pdgCode) == 2114 || TMath::Abs(pdgCode) == 1114 )
return 10;
2849 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