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;
426 Int_t showerShapeBins = 500;
495 fCutFolder[iCut]->SetName(Form(
"Cut Number %s_%s_%s_%s",cutstringEvent.Data(), cutstringCalo.Data(), cutstringCaloMerged.Data(), cutstringMeson.Data()));
499 fESDList[iCut]->SetName(Form(
"%s_%s_%s_%s ESD histograms",cutstringEvent.Data(), cutstringCalo.Data(), cutstringCaloMerged.Data(), cutstringMeson.Data()));
503 fHistoNEvents[iCut] =
new TH1F(
"NEvents",
"NEvents",14,-0.5,13.5);
505 fHistoNEvents[iCut]->GetXaxis()->SetBinLabel(2,
"Centrality");
506 fHistoNEvents[iCut]->GetXaxis()->SetBinLabel(3,
"Miss. MC or inc. ev.");
508 TString TriggerNames =
"Not Trigger: ";
510 fHistoNEvents[iCut]->GetXaxis()->SetBinLabel(4,TriggerNames.Data());
515 fHistoNEvents[iCut]->GetXaxis()->SetBinLabel(6,
"Cont. Vertex");
519 fHistoNEvents[iCut]->GetXaxis()->SetBinLabel(10,
"EMCAL problems");
520 fHistoNEvents[iCut]->GetXaxis()->SetBinLabel(11,
"rejectedForJetJetMC");
521 fHistoNEvents[iCut]->GetXaxis()->SetBinLabel(12,
"SPD hits vs tracklet");
522 fHistoNEvents[iCut]->GetXaxis()->SetBinLabel(13,
"Out-of-Bunch pileup Past-Future");
523 fHistoNEvents[iCut]->GetXaxis()->SetBinLabel(14,
"Pileup V0M-TPCout Tracks");
532 TString TriggerNames =
"Not Trigger: ";
565 fHistoVertexZ[iCut] =
new TH1F(
"VertexZ",
"VertexZ",1000,-50,50);
597 fHistoNV0Tracks[iCut] =
new TH1F(
"V0 Multiplicity",
"V0 Multiplicity",30000,-0.5,29999.5);
599 fHistoNV0Tracks[iCut] =
new TH1F(
"V0 Multiplicity",
"V0 Multiplicity",2500,-0.5,2499.5);
601 fHistoNV0Tracks[iCut] =
new TH1F(
"V0 Multiplicity",
"V0 Multiplicity",1500,-0.5,1499.5);
617 fHistoClusGammaPt[iCut] =
new TH1F(
"ClusGamma_Pt",
"ClusGamma_Pt",ptBinsDefClus, startPtDefClus, endPtDefClus);
619 fHistoClusGammaE[iCut] =
new TH1F(
"ClusGamma_E",
"ClusGamma_E",ptBinsDefClus, startPtDefClus, endPtDefClus);
623 fHistoClusMergedPtvsM02[iCut] =
new TH2F(
"ClusMerged_Pt_M02",
"ClusMerged_Pt_M02",ptBins, startPt, endPt,showerShapeBins, startShowerShape, endShowerShape);
625 fHistoClusMergedPtvsM02Accepted[iCut] =
new TH2F(
"ClusMerged_Pt_M02_AcceptedMeson",
"ClusMerged_Pt_M02_AcceptedMeson",ptBins, startPt, endPt,showerShapeBins, startShowerShape, endShowerShape);
627 fHistoClusMergedEvsM02Accepted[iCut] =
new TH2F(
"ClusMerged_E_M02_AcceptedMeson",
"ClusMerged_E_M02_AcceptedMeson",ptBins, startPt, endPt, showerShapeBins, startShowerShape, endShowerShape);
629 fHistoClusNLMPt[iCut] =
new TH2F(
"ClusMerged_NLM_Pt_AcceptedMeson",
"ClusMerged_NLM_Pt_AcceptedMeson",12, -0.5, 11.5, ptBins, startPt, endPt);
644 fHistoClusNCellsPt[iCut] =
new TH2F(
"Clus_NCells_Pt",
"Clus_NCells_Pt",100,-0.5,99.5,ptBins, startPt, endPt);
652 fHistoClusMergedEAroundE[iCut] =
new TH2F(
"ClusMerged_EAroundClus_E",
"ClusMerged_EAroundClus_E",ptBinsDefClus, startPtDefClus, endPtDefClus, ptBins, startPt, endPt);
670 fHistoMotherInvMassPt[iCut] =
new TH2F(
"ESD_Mother_InvMass_Pt",
"ESD_Mother_InvMass_Pt",invMassBins, startMass, endMass,ptBins, startPt, endPt);
678 fHistoMotherPtY[iCut] =
new TH2F(
"ESD_Mother_Pt_Y",
"ESD_Mother_Pt_Y", ptBinsLog, startPtLog, endPtLog, 150, -1.5, 1.5);
681 fHistoMotherPtAlpha[iCut] =
new TH2F(
"ESD_Mother_Pt_Alpha",
"ESD_Mother_Pt_Alpha", ptBinsLog, startPtLog, endPtLog, 100, 0, 1);
813 fMCList[iCut]->SetName(Form(
"%s_%s_%s_%s MC histograms",cutstringEvent.Data(),cutstringCalo.Data(),cutstringCaloMerged.Data(), cutstringMeson.Data()));
814 fMCList[iCut]->SetOwner(kTRUE);
817 fHistoMCPi0Pt[iCut] =
new TH1F(
"MC_Pi0_Pt",
"MC_Pi0_Pt",ptBins, startPt, endPt);
820 fHistoMCEtaPt[iCut] =
new TH1F(
"MC_Eta_Pt",
"MC_Eta_Pt",ptBins, startPt, endPt);
846 fHistoMCDecayGammaPt[iCut] =
new TH1F(
"MC_DecayGamma_Pt",
"MC_DecayGamma_Pt",ptBins, startPt, endPt);
849 fHistoMCAllGammaPt[iCut] =
new TH1F(
"MC_AllGamma_Pt",
"MC_AllGamma_Pt",ptBins, startPt, endPt);
854 fHistoMCPi0WOWeightPt[iCut] =
new TH1F(
"MC_Pi0_WOWeights_Pt",
"MC_Pi0_WOWeights_Pt",ptBins, startPt, endPt);
856 fHistoMCPi0InAccPt[iCut] =
new TH1F(
"MC_Pi0InAcc_Pt",
"MC_Pi0InAcc_Pt",ptBins, startPt, endPt);
859 fHistoMCPi0DalitzPt[iCut] =
new TH1F(
"MC_Pi0Dalitz_Pt",
"MC_Pi0Dalitz_Pt",ptBins, startPt, endPt);
878 fHistoMCEtaWOWeightPt[iCut] =
new TH1F(
"MC_Eta_WOWeights_Pt",
"MC_Eta_WOWeights_Pt",ptBins, startPt, endPt);
880 fHistoMCEtaInAccPt[iCut] =
new TH1F(
"MC_EtaInAcc_Pt",
"MC_EtaInAcc_Pt",ptBins, startPt, endPt);
883 fHistoMCEtaDalitzPt[iCut] =
new TH1F(
"MC_EtaDalitz_Pt",
"MC_EtaDalitz_Pt",ptBins, startPt, endPt);
897 fHistoMCPi0WOEvtWeightPt[iCut] =
new TH1F(
"MC_Pi0_WOEventWeights_Pt",
"MC_Pi0_WOEventWeights_Pt",ptBins, startPt, endPt);
911 fHistoMCEtaWOEvtWeightPt[iCut] =
new TH1F(
"MC_Eta_WOEventWeights_Pt",
"MC_Eta_WOEventWeights_Pt",ptBins, startPt, endPt);
922 fHistoMCPi0PtJetPt[iCut] =
new TH2F(
"MC_Pi0_Pt_JetPt",
"MC_Pi0_Pt_JetPt", ptBinsLog, startPtLog, endPtLog, 200, -0.5, 199.5);
928 fHistoMCEtaPtJetPt[iCut] =
new TH2F(
"MC_Eta_Pt_JetPt",
"MC_Eta_Pt_JetPt", ptBinsLog, startPtLog, endPtLog, 200, -0.5, 199.5);
937 fTrueList[iCut]->SetName(Form(
"%s_%s_%s_%s True histograms",cutstringEvent.Data(),cutstringCalo.Data(),cutstringCaloMerged.Data(), cutstringMeson.Data()));
941 fHistoTrueClusMergedPtvsM02[iCut] =
new TH2F(
"ESD_TrueClusMerged_Pt_M02",
"ESD_TrueClusMerged_Pt_M02",ptBins, startPt, endPt,showerShapeBins, startShowerShape, endShowerShape);
943 fHistoTrueClusPi0PtvsM02 [iCut] =
new TH2F(
"ESD_TrueClusFromPi0_Pt_M02",
"ESD_TrueClusFromPi0_Pt_M02",ptBins, startPt, endPt,showerShapeBins, startShowerShape, endShowerShape);
945 fHistoTrueClusPi0DalitzPtvsM02 [iCut] =
new TH2F(
"ESD_TrueClusFromPi0Dalitz_Pt_M02",
"ESD_TrueClusFromPi0Dalitz_Pt_M02",ptBins, startPt, endPt,showerShapeBins, startShowerShape, endShowerShape);
947 fHistoTrueClusEtaPtvsM02[iCut] =
new TH2F(
"ESD_TrueClusFromEta_Pt_M02",
"ESD_TrueClusFromEta_Pt_M02",ptBins, startPt, endPt,showerShapeBins, startShowerShape, endShowerShape);
949 fHistoTrueClusEtaDalitzPtvsM02[iCut] =
new TH2F(
"ESD_TrueClusFromEtaDalitz_Pt_M02",
"ESD_TrueClusFromEtaDalitz_Pt_M02",ptBins, startPt, endPt,showerShapeBins, startShowerShape, endShowerShape);
951 fHistoTrueClusMergedPureFromPi0PtvsM02[iCut] =
new TH2F(
"ESD_TrueClusMergedPureFromPi0_Pt_M02",
"ESD_TrueClusMergedPureFromPi0_Pt_M02",ptBins, startPt, endPt,showerShapeBins, startShowerShape, endShowerShape);
953 fHistoTrueClusMergedPureFromEtaPtvsM02[iCut] =
new TH2F(
"ESD_TrueClusMergedPureFromEta_Pt_M02",
"ESD_TrueClusMergedPureFromEta_Pt_M02",ptBins, startPt, endPt,showerShapeBins, startShowerShape, endShowerShape);
960 fHistoTrueClusBGPtvsM02[iCut] =
new TH2F(
"ESD_TrueClusBG_Pt_M02",
"ESD_TrueClusBG_Pt_M02",ptBins, startPt, endPt,showerShapeBins, startShowerShape, endShowerShape);
962 fHistoTrueClusGammaPtvsM02[iCut] =
new TH2F(
"ESD_TrueClusGamma_Pt_M02",
"ESD_TrueClusGamma_Pt_M02",ptBins, startPt, endPt,showerShapeBins, startShowerShape, endShowerShape);
964 fHistoTrueClusGammaFromPi0PtvsM02[iCut] =
new TH2F(
"ESD_TrueClusGamma_FromPi0_Pt_M02",
"ESD_TrueClusGamma_FromPi0_Pt_M02",ptBins, startPt, endPt,showerShapeBins, startShowerShape, endShowerShape);
966 fHistoTrueClusGammaFromEtaPtvsM02[iCut] =
new TH2F(
"ESD_TrueClusGamma_FromEta_Pt_M02",
"ESD_TrueClusGamma_FromEta_Pt_M02",ptBins, startPt, endPt,showerShapeBins, startShowerShape, endShowerShape);
968 fHistoTrueClusElectronPtvsM02[iCut] =
new TH2F(
"ESD_TrueClusElectron_Pt_M02",
"ESD_TrueClusElectron_Pt_M02",ptBins, startPt, endPt,showerShapeBins, startShowerShape, endShowerShape);
970 fHistoTrueClusElectronFromPi0PtvsM02[iCut] =
new TH2F(
"ESD_TrueClusElectron_FromPi0_Pt_M02",
"ESD_TrueClusElectron_FromPi0_Pt_M02",ptBins, startPt, endPt,showerShapeBins, startShowerShape, endShowerShape);
972 fHistoTrueClusElectronFromEtaPtvsM02[iCut] =
new TH2F(
"ESD_TrueClusElectron_FromEta_Pt_M02",
"ESD_TrueClusElectron_FromEta_Pt_M02",ptBins, startPt, endPt,showerShapeBins, startShowerShape, endShowerShape);
974 fHistoTrueClusElectronFromGammaPtvsM02[iCut] =
new TH2F(
"ESD_TrueClusElectron_FromGamma_Pt_M02",
"ESD_TrueClusElectron_FromGamma_Pt_M02",ptBins, startPt, endPt,showerShapeBins, startShowerShape, endShowerShape);
978 fHistoTrueClusPrimPi0PtvsM02[iCut] =
new TH2F(
"ESD_TrueClusFromPrimPi0_Pt_M02",
"ESD_TrueClusFromPrimPi0_Pt_M02",ptBins, startPt, endPt,showerShapeBins, startShowerShape, endShowerShape);
980 fHistoTrueClusSecPi0PtvsM02[iCut] =
new TH2F(
"ESD_TrueClusFromSecPi0_Pt_M02",
"ESD_TrueClusFromSecPi0_Pt_M02",ptBins, startPt, endPt,showerShapeBins, startShowerShape, endShowerShape);
982 fHistoTrueClusSecPi0FromK0sPtvsM02[iCut] =
new TH2F(
"ESD_TrueClusFromSecPi0FromK0s_Pt_M02",
"ESD_TrueClusFromSecPi0FromK0s_Pt_M02",ptBins, startPt, endPt,showerShapeBins, startShowerShape, endShowerShape);
984 fHistoTrueClusSecPi0FromK0lPtvsM02[iCut] =
new TH2F(
"ESD_TrueClusFromSecPi0FromK0l_Pt_M02",
"ESD_TrueClusFromSecPi0FromK0l_Pt_M02",ptBins, startPt, endPt,showerShapeBins, startShowerShape, endShowerShape);
986 fHistoTrueClusSecPi0FromLambdaPtvsM02[iCut] =
new TH2F(
"ESD_TrueClusFromSecPi0FromLambda_Pt_M02",
"ESD_TrueClusFromSecPi0FromLambda_Pt_M02",ptBins, startPt, endPt,showerShapeBins, startShowerShape, endShowerShape);
988 fHistoTrueSecPi0PtvsDiffReco[iCut] =
new TH2F(
"ESD_TrueClusFromSecPi0_Pt_RecoMethod",
"ESD_TrueClusFromSecPi0_Pt_RecoMethod",ptBins, startPt, endPt, 4, -0.5, 3.5);
1002 fHistoDoubleCountTruePi0PtvsM02[iCut] =
new TH2F(
"ESD_TrueDoubleCountPi0_Pt_M02",
"ESD_TrueDoubleCountPi0_Pt_M02",ptBins, startPt, endPt,showerShapeBins, startShowerShape, endShowerShape);
1006 fHistoDoubleCountTrueEtaPtvsM02[iCut] =
new TH2F(
"ESD_TrueDoubleCountEta_Pt_M02",
"ESD_TrueDoubleCountEta_Pt_M02",ptBins, startPt, endPt,showerShapeBins, startShowerShape, endShowerShape);
1013 fHistoTrueClusPi0InvMassvsPt [iCut] =
new TH2F(
"ESD_TrueClusFromPi0_InvMass_Pt",
"ESD_TrueClusFromPi0_InvMass_Pt",invMassBins, startMass, endMass,ptBins, startPt, endPt);
1015 fHistoTrueClusEtaInvMassvsPt[iCut] =
new TH2F(
"ESD_TrueClusFromEta_InvMass_Pt",
"ESD_TrueClusFromEta_InvMass_Pt",invMassBins, startMass, endMass,ptBins, startPt, endPt);
1017 fHistoTrueClusBGInvMassvsPt[iCut] =
new TH2F(
"ESD_TrueClusBG_InvMass_Pt",
"ESD_TrueClusBG_InvMass_Pt",invMassBins, startMass, endMass,ptBins, startPt, endPt);
1019 fHistoTrueClusGammaInvMassvsPt[iCut] =
new TH2F(
"ESD_TrueClusGamma_InvMass_Pt",
"ESD_TrueClusGamma_InvMass_Pt",invMassBins, startMass, endMass,ptBins, startPt, endPt);
1024 fHistoTrueClusPrimPi0InvMassvsPt[iCut] =
new TH2F(
"ESD_TrueClusFromPrimPi0_InvMass_Pt",
"ESD_TrueClusFromPrimPi0_InvMass_Pt",invMassBins, startMass, endMass,ptBins, startPt, endPt);
1030 fHistoTrueClusGammaEM02[iCut] =
new TH2F(
"TrueClusGammaEM02",
"TrueClusGammaEM02",ptBins, startPt, endPt, showerShapeBins, startShowerShape, endShowerShape);
1032 fHistoTrueClusElectronEM02[iCut] =
new TH2F(
"TrueClusElectronEM02",
"TrueClusElectronEM02",ptBins, startPt, endPt, showerShapeBins, startShowerShape, endShowerShape);
1034 fHistoTrueClusPi0EM02[iCut] =
new TH2F(
"TrueClusPi0EM02",
"TrueClusPi0EM02",ptBins, startPt, endPt, showerShapeBins, startShowerShape, endShowerShape);
1036 fHistoTrueClusEtaEM02[iCut] =
new TH2F(
"TrueClusEtaEM02",
"TrueClusEtaEM02",ptBins, startPt, endPt, showerShapeBins, startShowerShape, endShowerShape);
1039 fHistoTruePi0PtY[iCut] =
new TH2F(
"ESD_TruePi0_Pt_Y",
"ESD_TruePi0_Pt_Y",ptBinsLog, startPtLog, endPtLog,150,-1.5,1.5);
1042 fHistoTruePi0PtAlpha[iCut] =
new TH2F(
"ESD_TruePi0_Pt_Alpha",
"ESD_TruePi0_Pt_Alpha",ptBinsLog, startPtLog, endPtLog,100,0,1);
1062 fHistoTrueEtaPtY[iCut] =
new TH2F(
"ESD_TrueEta_Pt_Y",
"ESD_TrueEta_Pt_Y",ptBinsLog, startPtLog, endPtLog,150,-1.5,1.5);
1065 fHistoTrueEtaPtAlpha[iCut] =
new TH2F(
"ESD_TrueEta_Pt_Alpha",
"ESD_TrueEta_Pt_Alpha",ptBinsLog, startPtLog, endPtLog,100,0,0.5);
1155 for(
Int_t iMatcherTask = 0; iMatcherTask < 3; iMatcherTask++){
1216 printf(
" Gamma Conversion Task %s :: Eta Shift Manually Set to %f \n\n",
1223 Bool_t doNonLinCorr = kTRUE;
1225 doNonLinCorr = kFALSE;
1227 doNonLinCorr = kTRUE;
1229 doNonLinCorr = kTRUE;
1231 doNonLinCorr = kFALSE;
1232 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;
1233 cout <<
"INFO: switching off the non lin corr for merged cluster" << endl;
1253 if(
fInputEvent->IsIncompleteDAQ()==kTRUE) eventQuality = 2;
1256 if(eventQuality == 2 || eventQuality == 3){
1281 Bool_t isRunningEMCALrelAna = kFALSE;
1289 if((xsection==-1.) || (ntrials==-1.)) AliFatal(Form(
"ERROR: GetXSectionAndNTrials returned invalid xsection/ntrials, periodName from V0Reader: '%s'",
fV0Reader->
GetPeriodName().Data()));
1303 Bool_t triggered = kTRUE;
1304 if(eventNotAccepted){
1308 if (eventNotAccepted==3 &&
fIsMC>0){
1315 if(eventQuality != 0){
1322 if (triggered == kTRUE) {
1348 else if(
fInputEvent->IsA()==AliAODEvent::Class()){
1357 if (nameBin.CompareTo(
"")== 0){
1359 ->GetAcceptedHeader())->At(i))->GetString();
1360 fHistoMCHeaders[iCut]->GetXaxis()->SetBinLabel(i+1,nameHeader.Data());
1373 if (triggered==kFALSE)
continue;
1404 if(nclus == 0)
return;
1421 InputEvent()->GetPrimaryVertex()->GetXYZ(vertex);
1424 for(Long_t i = 0; i < nclus; i++){
1427 AliVCluster* clus = NULL;
1428 if(
fInputEvent->IsA()==AliESDEvent::Class()) clus =
new AliESDCaloCluster(*(AliESDCaloCluster*)
fInputEvent->GetCaloCluster(i));
1429 else if(
fInputEvent->IsA()==AliAODEvent::Class()) clus =
new AliAODCaloCluster(*(AliAODCaloCluster*)
fInputEvent->GetCaloCluster(i));
1443 TLorentzVector clusterVector;
1444 clus->GetMomentum(clusterVector,vertex);
1446 TLorentzVector* tmpvec =
new TLorentzVector();
1447 tmpvec->SetPxPyPzE(clusterVector.Px(),clusterVector.Py(),clusterVector.Pz(),clusterVector.E());
1451 if(!PhotonCandidate){
1454 if (PhotonCandidate)
delete PhotonCandidate;
1464 Int_t* mclabelsCluster = clus->GetLabels();
1466 Int_t nValidClusters = 0;
1468 if (clus->GetNLabels()>0){
1469 for (
Int_t k =0; k< (
Int_t)clus->GetNLabels(); k++){
1471 if (mclabelsCluster[k]>0){
1474 if (nValidClusters< 50)PhotonCandidate->
SetCaloPhotonMCLabel(nValidClusters,mclabelsCluster[k]);
1490 if (clus->GetNLabels()>1){
1491 Int_t* mclabelsCluster = clus->GetLabels();
1492 for (
Int_t l = 1; l < (
Int_t)clus->GetNLabels(); l++ ){
1513 delete PhotonCandidate;
1520 delete PhotonCandidate;
1526 AliAODCaloCluster* clusSub1 =
new AliAODCaloCluster();
1527 AliAODCaloCluster* clusSub2 =
new AliAODCaloCluster();
1542 const Int_t nc = clus->GetNCells();
1543 Int_t absCellIdList[nc];
1554 TLorentzVector clusterVector1;
1555 clusSub1->GetMomentum(clusterVector1,vertex);
1556 TLorentzVector* tmpvec1 =
new TLorentzVector();
1557 tmpvec1->SetPxPyPzE(clusterVector1.Px(),clusterVector1.Py(),clusterVector1.Pz(),clusterVector1.E());
1560 if(!PhotonCandidate1){
1569 TLorentzVector clusterVector2;
1570 clusSub2->GetMomentum(clusterVector2,vertex);
1571 TLorentzVector* tmpvec2 =
new TLorentzVector();
1572 tmpvec2->SetPxPyPzE(clusterVector2.Px(),clusterVector2.Py(),clusterVector2.Pz(),clusterVector2.E());
1575 if(!PhotonCandidate2){
1601 for (
Int_t j = 0; j < nclus; j++){
1602 if (j == i)
continue;
1603 AliVCluster* clusTemp = NULL;
1604 if(
fInputEvent->IsA()==AliESDEvent::Class()) clusTemp =
new AliESDCaloCluster(*(AliESDCaloCluster*)
fInputEvent->GetCaloCluster(j));
1605 else if(
fInputEvent->IsA()==AliAODEvent::Class()) clusTemp =
new AliAODCaloCluster(*(AliAODCaloCluster*)
fInputEvent->GetCaloCluster(j));
1615 nCellsAround = nCellsAround+clusTemp->GetNCells();
1616 energyAround = energyAround+clusTemp->E();
1631 if(
fIsMC> 0 && PhotonCandidate && PhotonCandidate1 && PhotonCandidate2){
1644 delete PhotonCandidate1;
1647 delete PhotonCandidate2;
1651 delete PhotonCandidate;
1662 const AliVVertex* primVtxMC =
fMCEvent->GetPrimaryVertex();
1663 Double_t mcProdVtxX = primVtxMC->GetX();
1664 Double_t mcProdVtxY = primVtxMC->GetY();
1665 Double_t mcProdVtxZ = primVtxMC->GetZ();
1667 TParticle *Photon = NULL;
1668 if (!TrueClusterCandidate->
GetIsCaloPhoton()) AliFatal(
"CaloPhotonFlag has not been set task will abort");
1681 if (!mesonIsSelected){
1685 Int_t pdgCodeParticle = Photon->GetPdgCode();
1688 cout << endl << endl <<
"Cluster energy: " << TrueClusterCandidate->E() << endl;;
1696 Int_t clusterClass = 0;
1703 Long_t motherLab = -1;
1735 TParticle *mother = NULL;
1736 Int_t motherPDG = -1;
1737 if (motherLab > -1){
1738 mother =
fMCEvent->Particle(motherLab);
1742 motherPDG = TMath::Abs(mother->GetPdgCode());
1749 if (clusterClass == 1 || clusterClass == 2 || clusterClass == 3 ){
1754 if (clusterClass == 1 && TrueClusterCandidate->
IsMerged()){
1755 if (motherPDG == 111){
1761 if (motherPDG == 221)
1764 if (motherPDG == 111){
1770 if (motherPDG == 221)
1772 }
else if (clusterClass == 2){
1773 if (motherPDG == 111){
1778 }
if (motherPDG == 221)
1780 }
else if (clusterClass == 3){
1781 if (motherPDG == 111) {
1787 if (motherPDG == 221)
1792 if (motherPDG == 111){
1801 if (TrueClusterCandidate->
IsDalitz()){
1818 if (clusterClass == 1 && TrueClusterCandidate->
IsMerged())
1822 else if (clusterClass == 2)
1824 else if (clusterClass == 3)
1832 Int_t grandMaLab = mother->GetMother(0);
1833 if (grandMaLab > -1){
1834 if (TMath::Abs(
fMCEvent->Particle(grandMaLab)->GetPdgCode()) == 310){
1836 }
else if (TMath::Abs(
fMCEvent->Particle(grandMaLab)->GetPdgCode()) == 130){
1838 }
else if (TMath::Abs(
fMCEvent->Particle(grandMaLab)->GetPdgCode()) == 3122){
1845 }
else if (motherPDG == 221){
1847 if (TrueClusterCandidate->
IsDalitz()){
1873 if (motherLab == -1){
1876 if (motherPDG == 111)
1878 else if (motherPDG == 221)
1880 else if (motherPDG == 331)
1882 else if (motherPDG == 223)
1884 else if (motherPDG == 333)
1886 else if (motherPDG == 3122)
1901 Int_t motherLab = Photon->GetMother(0);
1902 if (motherLab == -1){
1905 if (motherPDG == 22){
1908 }
else if (motherPDG == 111){
1910 }
else if (motherPDG == 221){
1912 }
else if (
int(motherPDG/100.)==5 || int(motherPDG/1000.)==5 ){
1914 }
else if (
int(motherPDG/100.)==4 || int(motherPDG/1000.)==4 ){
1916 }
else if (motherPDG == 23 || motherPDG == 24){
1918 }
else if (motherPDG == 15) {
1931 if (m02 >= 0 && m02 < maxM02){
1954 const AliVVertex* primVtxMC =
fMCEvent->GetPrimaryVertex();
1955 Double_t mcProdVtxX = primVtxMC->GetX();
1956 Double_t mcProdVtxY = primVtxMC->GetY();
1957 Double_t mcProdVtxZ = primVtxMC->GetZ();
1959 AliAODMCParticle *Photon = NULL;
1960 TClonesArray *AODMCTrackArray =
dynamic_cast<TClonesArray*
>(
fInputEvent->FindListObject(AliAODMCParticle::StdBranchName()));
1961 if (AODMCTrackArray){
1962 if (!TrueClusterCandidate->
GetIsCaloPhoton()) AliFatal(
"CaloPhotonFlag has not been set task will abort");
1968 AliInfo(
"AODMCTrackArray could not be loaded");
1979 if (!mesonIsSelected){
1983 Int_t pdgCodeParticle = Photon->GetPdgCode();
1986 cout << endl << endl <<
"Cluster energy: " << TrueClusterCandidate->E() << endl;;
1994 Int_t clusterClass = 0;
2001 Long_t motherLab = -1;
2021 if (TMath::Abs(((AliAODMCParticle*) AODMCTrackArray->At(TrueClusterCandidate->
GetCaloPhotonMotherMCLabel(1)))->GetPdgCode()) == 111 || TMath::Abs(((AliAODMCParticle*) AODMCTrackArray->At(TrueClusterCandidate->
GetCaloPhotonMotherMCLabel(1)))->GetPdgCode()) == 221 ){
2033 AliAODMCParticle *mother = NULL;
2034 Int_t motherPDG = -1;
2035 if (motherLab > -1){
2036 mother =
static_cast<AliAODMCParticle*
>(AODMCTrackArray->At(motherLab));
2040 motherPDG = TMath::Abs(mother->GetPdgCode());
2047 if (clusterClass == 1 || clusterClass == 2 || clusterClass == 3 ){
2052 if (clusterClass == 1 && TrueClusterCandidate->
IsMerged()){
2053 if (motherPDG == 111){
2059 if (motherPDG == 221)
2062 if (motherPDG == 111){
2068 if (motherPDG == 221)
2070 }
else if (clusterClass == 2){
2071 if (motherPDG == 111){
2076 }
if (motherPDG == 221)
2078 }
else if (clusterClass == 3){
2079 if (motherPDG == 111) {
2085 if (motherPDG == 221)
2090 if (motherPDG == 111){
2099 if (TrueClusterCandidate->
IsDalitz()){
2116 if (clusterClass == 1 && TrueClusterCandidate->
IsMerged())
2120 else if (clusterClass == 2)
2122 else if (clusterClass == 3)
2130 Int_t grandMaLab = mother->GetMother();
2131 if (grandMaLab > -1){
2132 if (TMath::Abs(static_cast<AliAODMCParticle*>(AODMCTrackArray->At(grandMaLab))->GetPdgCode()) == 310){
2134 }
else if (TMath::Abs(static_cast<AliAODMCParticle*>(AODMCTrackArray->At(grandMaLab))->GetPdgCode()) == 130){
2136 }
else if (TMath::Abs(static_cast<AliAODMCParticle*>(AODMCTrackArray->At(grandMaLab))->GetPdgCode()) == 3122){
2143 }
else if (motherPDG == 221){
2145 if (TrueClusterCandidate->
IsDalitz()){
2171 if (motherLab == -1){
2174 if (motherPDG == 111)
2176 else if (motherPDG == 221)
2178 else if (motherPDG == 331)
2180 else if (motherPDG == 223)
2182 else if (motherPDG == 333)
2184 else if (motherPDG == 3122)
2199 Int_t motherLab = Photon->GetMother();
2200 if (motherLab == -1){
2203 if (motherPDG == 22){
2206 }
else if (motherPDG == 111){
2208 }
else if (motherPDG == 221){
2210 }
else if (
int(motherPDG/100.)==5 || int(motherPDG/1000.)==5 ){
2212 }
else if (
int(motherPDG/100.)==4 || int(motherPDG/1000.)==4 ){
2214 }
else if (motherPDG == 23 || motherPDG == 24){
2216 }
else if (motherPDG == 15) {
2229 if (m02 >= 0 && m02 < maxM02){
2250 const AliVVertex* primVtxMC =
fMCEvent->GetPrimaryVertex();
2251 Double_t mcProdVtxX = primVtxMC->GetX();
2252 Double_t mcProdVtxY = primVtxMC->GetY();
2253 Double_t mcProdVtxZ = primVtxMC->GetZ();
2256 for(Long_t i = 0; i <
fMCEvent->GetNumberOfTracks(); i++) {
2259 TParticle* particle = (TParticle *)
fMCEvent->Particle(i);
2260 if (!particle)
continue;
2262 Int_t isMCFromMBHeader = -1;
2269 if(particle->Energy() - particle->Pz() == 0 || particle->Energy() + particle->Pz() == 0){
2276 if ( particle->GetPdgCode() == 211 ){
2278 }
else if ( particle->GetPdgCode() == -211 ){
2280 }
else if ( particle->GetPdgCode() == 321 ){
2282 }
else if ( particle->GetPdgCode() == -321 ){
2284 }
else if ( TMath::Abs(particle->GetPdgCode()) == 310 ){
2286 }
else if ( TMath::Abs(particle->GetPdgCode()) == 130 ){
2288 }
else if ( TMath::Abs(particle->GetPdgCode()) == 3122 ){
2293 if ( particle->GetPdgCode() == 211 ){
2295 }
else if ( particle->GetPdgCode() == -211 ){
2297 }
else if ( particle->GetPdgCode() == 321 ){
2299 }
else if ( particle->GetPdgCode() == -321 ){
2301 }
else if ( TMath::Abs(particle->GetPdgCode()) == 310 ){
2303 }
else if ( TMath::Abs(particle->GetPdgCode()) == 130 ){
2305 }
else if ( TMath::Abs(particle->GetPdgCode()) == 3122 ){
2307 }
else if ( particle->GetPdgCode() == 22 ){
2309 if(particle->GetMother(0) > -1){
2310 TParticle* mother = (TParticle*)
fMCEvent->Particle(particle->GetMother(0));
2311 if ( TMath::Abs(mother->GetPdgCode()) == 111 ||
2312 TMath::Abs(mother->GetPdgCode()) == 113 ||
2313 TMath::Abs(mother->GetPdgCode()) == 221 ||
2314 TMath::Abs(mother->GetPdgCode()) == 223 ||
2315 TMath::Abs(mother->GetPdgCode()) == 331 ||
2316 TMath::Abs(mother->GetPdgCode()) == 333 ||
2317 TMath::Abs(mother->GetPdgCode()) == 3212 ||
2318 TMath::Abs(mother->GetPdgCode()) == 213
2329 TParticle* daughter0 = (TParticle*)
fMCEvent->Particle(particle->GetFirstDaughter());
2330 TParticle* daughter1 = (TParticle*)
fMCEvent->Particle(particle->GetLastDaughter());
2334 if (particle->Pt()>0.005){
2339 if( TMath::Abs(particle->GetPdgCode()) == 111 ){
2348 }
else if( TMath::Abs(particle->GetPdgCode()) == 221 ){
2362 if( kDaughter0IsPrim && kDaughter1IsPrim &&
2374 Int_t gammaLabel = -1;
2375 Int_t electronLabel = -1;
2376 Int_t positronLabel = -1;
2380 if( (gammaLabel > -1) && (electronLabel > -1) && (positronLabel > -1) ){
2381 TParticle* gamma = (TParticle*)
fMCEvent->Particle(gammaLabel);
2382 TParticle* electron = (TParticle*)
fMCEvent->Particle(electronLabel);
2383 TParticle* positron = (TParticle*)
fMCEvent->Particle(positronLabel);
2387 if (particle->Pt()>0.005){
2412 if( kGammaIsPrim && kElectronIsPrim && kPositronIsPrim &&
2430 TParticle* particle = (TParticle *)
fMCEvent->Particle(i);
2431 if (!particle)
continue;
2433 Int_t isMCFromMBHeader = -1;
2442 TParticle* daughter0 = (TParticle*)
fMCEvent->Particle(particle->GetFirstDaughter());
2443 TParticle* daughter1 = (TParticle*)
fMCEvent->Particle(particle->GetLastDaughter());
2444 TParticle* mother = NULL;
2445 Int_t motherPDG = -1000000;
2446 if (particle->GetMother(0) > -1){
2447 mother = (TParticle*)
fMCEvent->Particle(particle->GetMother(0));
2449 motherPDG = TMath::Abs(mother->GetPdgCode());
2452 if( TMath::Abs(particle->GetPdgCode()) == 111 ){
2460 if( TMath::Abs(particle->GetPdgCode()) == 111 ){
2467 Int_t gammaLabel = -1;
2468 Int_t electronLabel = -1;
2469 Int_t positronLabel = -1;
2473 if( (gammaLabel > -1) && (electronLabel > -1) && (positronLabel > -1) ){
2474 TParticle* gamma = (TParticle*)
fMCEvent->Particle(gammaLabel);
2475 TParticle* electron = (TParticle*)
fMCEvent->Particle(electronLabel);
2476 TParticle* positron = (TParticle*)
fMCEvent->Particle(positronLabel);
2478 TParticle* mother = NULL;
2479 Int_t motherPDG = -1000000;
2480 if (particle->GetMother(0) > -1){
2481 mother = (TParticle*)
fMCEvent->Particle(particle->GetMother(0));
2483 motherPDG = TMath::Abs(mother->GetPdgCode());
2486 if( TMath::Abs(particle->GetPdgCode()) == 111 ){
2495 if( TMath::Abs(particle->GetPdgCode()) == 111 ){
2509 const AliVVertex* primVtxMC =
fMCEvent->GetPrimaryVertex();
2510 Double_t mcProdVtxX = primVtxMC->GetX();
2511 Double_t mcProdVtxY = primVtxMC->GetY();
2512 Double_t mcProdVtxZ = primVtxMC->GetZ();
2514 TClonesArray *AODMCTrackArray =
dynamic_cast<TClonesArray*
>(
fInputEvent->FindListObject(AliAODMCParticle::StdBranchName()));
2515 if (AODMCTrackArray == NULL)
return;
2518 for(Long_t i = 0; i < AODMCTrackArray->GetEntriesFast(); i++) {
2520 AliAODMCParticle* particle =
static_cast<AliAODMCParticle*
>(AODMCTrackArray->At(i));
2521 if (!particle)
continue;
2526 Int_t isMCFromMBHeader = -1;
2533 if(particle->E() - particle->Pz() == 0 || particle->E() + particle->Pz() == 0){
2540 if ( particle->GetPdgCode() == 211 ){
2542 }
else if ( particle->GetPdgCode() == -211 ){
2544 }
else if ( particle->GetPdgCode() == 321 ){
2546 }
else if ( particle->GetPdgCode() == -321 ){
2548 }
else if ( TMath::Abs(particle->GetPdgCode()) == 310 ){
2550 }
else if ( TMath::Abs(particle->GetPdgCode()) == 130 ){
2552 }
else if ( TMath::Abs(particle->GetPdgCode()) == 3122 ){
2557 if ( particle->GetPdgCode() == 211 ){
2559 }
else if ( particle->GetPdgCode() == -211 ){
2561 }
else if ( particle->GetPdgCode() == 321 ){
2563 }
else if ( particle->GetPdgCode() == -321 ){
2565 }
else if ( TMath::Abs(particle->GetPdgCode()) == 310 ){
2567 }
else if ( TMath::Abs(particle->GetPdgCode()) == 130 ){
2569 }
else if ( TMath::Abs(particle->GetPdgCode()) == 3122 ){
2571 }
else if ( particle->GetPdgCode() == 22 ){
2573 if(particle->GetMother() > -1){
2574 AliAODMCParticle *mother =
static_cast<AliAODMCParticle*
>(AODMCTrackArray->At(particle->GetMother()));
2575 if ( TMath::Abs(mother->GetPdgCode()) == 111 ||
2576 TMath::Abs(mother->GetPdgCode()) == 113 ||
2577 TMath::Abs(mother->GetPdgCode()) == 221 ||
2578 TMath::Abs(mother->GetPdgCode()) == 223 ||
2579 TMath::Abs(mother->GetPdgCode()) == 331 ||
2580 TMath::Abs(mother->GetPdgCode()) == 333 ||
2581 TMath::Abs(mother->GetPdgCode()) == 3212 ||
2582 TMath::Abs(mother->GetPdgCode()) == 213
2593 AliAODMCParticle* daughter0 =
static_cast<AliAODMCParticle*
>(AODMCTrackArray->At(particle->GetDaughter(0)));
2594 AliAODMCParticle* daughter1 =
static_cast<AliAODMCParticle*
>(AODMCTrackArray->At(particle->GetDaughter(1)));
2598 if (particle->Pt()>0.005){
2603 if( TMath::Abs(particle->GetPdgCode()) == 111 ){
2612 }
else if( TMath::Abs(particle->GetPdgCode()) == 221 ){
2626 if( kDaughter0IsPrim && kDaughter1IsPrim &&
2638 Int_t gammaLabel = -1;
2639 Int_t electronLabel = -1;
2640 Int_t positronLabel = -1;
2644 if( (gammaLabel > -1) && (electronLabel > -1) && (positronLabel > -1) ){
2645 AliAODMCParticle* gamma =
static_cast<AliAODMCParticle*
>(AODMCTrackArray->At(gammaLabel));
2646 AliAODMCParticle* electron =
static_cast<AliAODMCParticle*
>(AODMCTrackArray->At(electronLabel));
2647 AliAODMCParticle* positron =
static_cast<AliAODMCParticle*
>(AODMCTrackArray->At(positronLabel));
2651 if (particle->Pt()>0.005){
2676 if( kGammaIsPrim && kElectronIsPrim && kPositronIsPrim &&
2694 AliAODMCParticle* particle =
static_cast<AliAODMCParticle*
>(AODMCTrackArray->At(i));
2695 if (!particle)
continue;
2697 Int_t isMCFromMBHeader = -1;
2706 AliAODMCParticle* daughter0 =
static_cast<AliAODMCParticle*
>(AODMCTrackArray->At(particle->GetDaughter(0)));
2707 AliAODMCParticle* daughter1 =
static_cast<AliAODMCParticle*
>(AODMCTrackArray->At(particle->GetDaughter(1)));
2708 AliAODMCParticle* mother = NULL;
2709 Int_t motherPDG = -1000000;
2710 if (particle->GetMother() > -1){
2711 mother =
static_cast<AliAODMCParticle*
>(AODMCTrackArray->At(particle->GetMother()));
2713 motherPDG = TMath::Abs(mother->GetPdgCode());
2716 if( TMath::Abs(particle->GetPdgCode()) == 111 ){
2724 if( TMath::Abs(particle->GetPdgCode()) == 111 ){
2731 Int_t gammaLabel = -1;
2732 Int_t electronLabel = -1;
2733 Int_t positronLabel = -1;
2737 if( (gammaLabel > -1) && (electronLabel > -1) && (positronLabel > -1) ){
2738 AliAODMCParticle* gamma =
static_cast<AliAODMCParticle*
>(AODMCTrackArray->At(gammaLabel));
2739 AliAODMCParticle* electron =
static_cast<AliAODMCParticle*
>(AODMCTrackArray->At(electronLabel));
2740 AliAODMCParticle* positron =
static_cast<AliAODMCParticle*
>(AODMCTrackArray->At(positronLabel));
2742 AliAODMCParticle* mother = NULL;
2743 Int_t motherPDG = -1000000;
2744 if (particle->GetMother() > -1){
2745 mother =
static_cast<AliAODMCParticle*
>(AODMCTrackArray->At(particle->GetMother()));
2747 motherPDG = TMath::Abs(mother->GetPdgCode());
2750 if( TMath::Abs(particle->GetPdgCode()) == 111 ){
2759 if( TMath::Abs(particle->GetPdgCode()) == 111 ){
2773 TAxis *axisafter = histoRebin->GetXaxis();
2774 Int_t bins = axisafter->GetNbins();
2775 Double_t from = axisafter->GetXmin();
2776 Double_t to = axisafter->GetXmax();
2779 Double_t factor = TMath::Power(to/from, 1./bins);
2780 for(
Int_t i=1; i<=bins; ++i) newbins[i] = factor * newbins[i-1];
2781 axisafter->Set(bins, newbins);
2788 if(tobechecked > -1)
2790 vector<Int_t>::iterator it;
2791 it = find (vec.begin(), vec.end(), tobechecked);
2792 if (it != vec.end())
return true;
2794 vec.push_back(tobechecked);
2811 if( ma.find(tobechecked) != ma.end() ) ma[tobechecked] += 1;
2812 else ma[tobechecked] = 2;
2818 map<Int_t, Int_t>::iterator it;
2819 for (it = ma.begin(); it != ma.end(); it++){
2830 if (daughter == 111) {
2831 if (TMath::Abs(pdgCode) == 310)
return 1;
2832 else if (TMath::Abs(pdgCode) == 3122)
return 2;
2833 else if (TMath::Abs(pdgCode) == 130)
return 3;
2834 else if (TMath::Abs(pdgCode) == 2212)
return 4;
2835 else if (TMath::Abs(pdgCode) == 2112)
return 5;
2836 else if (TMath::Abs(pdgCode) == 211)
return 6;
2837 else if (TMath::Abs(pdgCode) == 321)
return 7;
2838 else if (TMath::Abs(pdgCode) == 113 || TMath::Abs(pdgCode) == 213 )
return 8;
2839 else if (TMath::Abs(pdgCode) == 3222 || TMath::Abs(pdgCode) == 3212 || TMath::Abs(pdgCode) == 3112 )
return 9;
2840 else if (TMath::Abs(pdgCode) == 2224 || TMath::Abs(pdgCode) == 2214 || TMath::Abs(pdgCode) == 2114 || TMath::Abs(pdgCode) == 1114 )
return 10;
2841 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
ClassImp(AliAnalysisTaskGammaCaloMerged) AliAnalysisTaskGammaCaloMerged
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