AliPhysics  8dc8609 (8dc8609)
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
AliAnalysisTaskGammaConvCalo.cxx
Go to the documentation of this file.
1 /**************************************************************************
2  * Copyright(c) 1998-2020, ALICE Experiment at CERN, All rights reserved. *
3  * *
4  * Author: Daniel Muehlheim, Friederike Bock *
5  * Version 1.0 *
6  * *
7  * *
8  * Permission to use, copy, modify and distribute this software and its *
9  * documentation strictly for non-commercial purposes is hereby granted *
10  * without fee, provided that the above copyright notice appears in all *
11  * copies and that both the copyright notice and this permission notice *
12  * appear in the supporting documentation. The authors make no claims *
13  * about the suitability of this software for any purpose. It is *
14  * provided "as is" without express or implied warranty. *
15  **************************************************************************/
16 
18 //----------------------------------------------------------------
19 // Class used to do analysis on conversion photons + calo photons
20 //----------------------------------------------------------------
22 #include "TChain.h"
23 #include "TTree.h"
24 #include "TBranch.h"
25 #include "TFile.h"
26 #include "TH1F.h"
27 #include "TH2F.h"
28 #include "TH3F.h"
29 #include "THnSparse.h"
30 #include "TCanvas.h"
31 #include "TNtuple.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"
47 #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"
58 #include "AliCaloTrackMatcher.h"
59 #include <vector>
60 #include <map>
61 
63 
64 //________________________________________________________________________
66  fV0Reader(NULL),
67  fV0ReaderName("V0ReaderV1"),
68  fBGHandler(NULL),
69  fBGHandlerRP(NULL),
70  fBGClusHandler(NULL),
71  fBGClusHandlerRP(NULL),
72  fInputEvent(NULL),
73  fMCEvent(NULL),
74  fCutFolder(NULL),
75  fESDList(NULL),
76  fBackList(NULL),
77  fMotherList(NULL),
78  fPhotonDCAList(NULL),
79  fGammaERM02(NULL),
80  fInvMassShowerShape(NULL),
81  fTrueList(NULL),
82  fMCList(NULL),
83  fClusterOutputList(NULL),
84  fOutputContainer(NULL),
85  fReaderGammas(NULL),
86  fGammaCandidates(NULL),
87  fClusterCandidates(NULL),
88  fEventCutArray(NULL),
89  fEventCuts(NULL),
90  fCutArray(NULL),
91  fConversionCuts(NULL),
92  fClusterCutArray(NULL),
93  fCaloPhotonCuts(NULL),
94  fMesonCutArray(NULL),
95  fMesonCuts(NULL),
96  fHistoConvGammaPt(NULL),
97  fHistoConvGammaR(NULL),
98  fHistoConvGammaEta(NULL),
99  fTreeConvGammaPtDcazCat(NULL),
100  fPtGamma(0),
101  fDCAzPhoton(0),
102  fRConvPhoton(0),
103  fEtaPhoton(0),
104  fCharCatPhoton(0),
105  fCharPhotonMCInfo(0),
106  tESDGammaERM02(NULL),
107  tESDClusE(0),
108  tESDGammaConvR(0),
109  tESDClusterM02(0),
110  tESDClusterM20(0),
111  tESDClusterEta(0),
112  tESDClusterPhi(0),
113  tESDClusterNCells(0),
114  tESDClusterMaxECell(0),
115  tESDClusterNLM(0),
116  tESDInvMassShowerShape(0),
117  tESDIMMesonInvMass(0),
118  tESDIMMesonPt(0),
119  tESDIMClusE(0),
120  tESDIMClusterM02(0),
121  tESDIMClusterM20(0),
122  tESDIMClusterLeadCellID(0),
123  tESDIMClusterClassification(0),
124  tESDIMClusMatchedTrackPt(0),
125  tESDIMClusTrackDeltaEta(0),
126  tESDIMClusTrackDeltaPhi(0),
127  tESDIMClusterIsoSumClusterEt(0),
128  tESDIMClusterIsoSumTrackEt(0),
129  tESDmapIsClusterAcceptedWithoutTrackMatch(),
130  fHistoMotherInvMassPt(NULL),
131  fHistoMotherMatchedInvMassPt(NULL),
132  fSparseMotherInvMassPtZM(NULL),
133  fHistoMotherBackInvMassPt(NULL),
134  fSparseMotherBackInvMassPtZM(NULL),
135  fHistoMotherInvMassPtAlpha(NULL),
136  fHistoMotherPi0PtY(NULL),
137  fHistoMotherEtaPtY(NULL),
138  fHistoMotherPi0PtAlpha(NULL),
139  fHistoMotherEtaPtAlpha(NULL),
140  fHistoMotherPi0PtOpenAngle(NULL),
141  fHistoMotherEtaPtOpenAngle(NULL),
142  fHistoMotherPi0ConvPhotonEtaPhi(NULL),
143  fHistoMotherEtaConvPhotonEtaPhi(NULL),
144  fHistoMotherInvMassECalib(NULL),
145  fHistoMotherBackInvMassECalib(NULL),
146  fHistoPhotonPairPtconv(NULL),
147  fHistoPhotonPairMixedEventPtconv(NULL),
148  fHistoClusGammaPt(NULL),
149  fHistoClusGammaE(NULL),
150  fHistoClusOverlapHeadersGammaPt(NULL),
151  fHistoClusAllHeadersGammaPt(NULL),
152  fHistoClusRejectedHeadersGammaPt(NULL),
153  fHistoMCHeaders(NULL),
154  fHistoMCAllGammaPt(NULL),
155  fHistoMCAllGammaEMCALAccPt(NULL),
156  fHistoMCAllSecondaryGammaPt(NULL),
157  fHistoMCDecayGammaPi0Pt(NULL),
158  fHistoMCDecayGammaRhoPt(NULL),
159  fHistoMCDecayGammaEtaPt(NULL),
160  fHistoMCDecayGammaOmegaPt(NULL),
161  fHistoMCDecayGammaEtapPt(NULL),
162  fHistoMCDecayGammaPhiPt(NULL),
163  fHistoMCDecayGammaSigmaPt(NULL),
164  fHistoMCConvGammaPt(NULL),
165  fHistoMCSecondaryConvGammaPt(NULL),
166  fHistoMCConvGammaR(NULL),
167  fHistoMCConvGammaEta(NULL),
168  fHistoMCPi0Pt(NULL),
169  fHistoMCPi0WOWeightPt(NULL),
170  fHistoMCPi0WOEvtWeightPt(NULL),
171  fHistoMCEtaPt(NULL),
172  fHistoMCEtaWOWeightPt(NULL),
173  fHistoMCEtaWOEvtWeightPt(NULL),
174  fHistoMCPi0InAccPt(NULL),
175  fHistoMCPi0WOWeightInAccPt(NULL),
176  fHistoMCPi0WOEvtWeightInAccPt(NULL),
177  fHistoMCEtaInAccPt(NULL),
178  fHistoMCEtaWOWeightInAccPt(NULL),
179  fHistoMCEtaWOEvtWeightInAccPt(NULL),
180  fHistoMCPi0PtY(NULL),
181  fHistoMCEtaPtY(NULL),
182  fHistoMCPi0PtAlpha(NULL),
183  fHistoMCEtaPtAlpha(NULL),
184  fHistoMCPrimaryPtvsSource(NULL),
185  fHistoMCSecPi0PtvsSource(NULL),
186  fHistoMCSecPi0Source(NULL),
187  fHistoMCSecPi0InAccPtvsSource(NULL),
188  fHistoMCSecEtaPt(NULL),
189  fHistoMCSecEtaSource(NULL),
190  fHistoMCPi0PtJetPt(NULL),
191  fHistoMCEtaPtJetPt(NULL),
192  fHistoMCPi0PtGammaLeg(NULL),
193  fHistoMCPi0WOWeightPtGammaLeg(NULL),
194  fHistoMCPi0InAccPtGammaLeg(NULL),
195  fHistoMCPi0WOWeightInAccPtGammaLeg(NULL),
196  fHistoMCSecPi0PtGamma1vsSource(NULL),
197  fHistoMCSecPi0InAccPtGamma1vsSource(NULL),
198  fHistoMCSecPi0PtGamma2vsSource(NULL),
199  fHistoMCSecPi0InAccPtGamma2vsSource(NULL),
200  fHistoTruePi0InvMassPt(NULL),
201  fHistoTrueEtaInvMassPt(NULL),
202  fHistoTruePi0MatchedInvMassPt(NULL),
203  fHistoTrueEtaMatchedInvMassPt(NULL),
204  fHistoTruePi0CaloPhotonInvMassPt(NULL),
205  fHistoTrueEtaCaloPhotonInvMassPt(NULL),
206  fHistoTruePi0CaloConvertedPhotonInvMassPt(NULL),
207  fHistoTruePi0CaloConvertedPhotonMatchedInvMassPt(NULL),
208  fHistoTruePi0CaloConvPhotonConvRPt(NULL),
209  fHistoTruePi0CaloConvPhotonConvRAlpha(NULL),
210  fHistoTruePi0CaloConvPhotonPtAlpha(NULL),
211  fHistoTrueEtaCaloConvertedPhotonInvMassPt(NULL),
212  fHistoTrueEtaCaloConvertedPhotonMatchedInvMassPt(NULL),
213  fHistoTrueEtaCaloConvPhotonConvRPt(NULL),
214  fHistoTrueEtaCaloConvPhotonConvRAlpha(NULL),
215  fHistoTrueEtaCaloConvPhotonPtAlpha(NULL),
216  fHistoTruePi0CaloElectronInvMassPt(NULL),
217  fHistoTrueEtaCaloElectronInvMassPt(NULL),
218  fHistoTruePi0CaloMergedClusterInvMassPt(NULL),
219  fHistoTrueEtaCaloMergedClusterInvMassPt(NULL),
220  fHistoTrueMotherCaloEMNonLeadingInvMassPt(NULL),
221  fHistoTruePi0CaloMergedClusterPartConvInvMassPt(NULL),
222  fHistoTrueEtaCaloMergedClusterPartConvInvMassPt(NULL),
223  fHistoTruePrimaryPi0InvMassPt(NULL),
224  fHistoTruePrimaryEtaInvMassPt(NULL),
225  fHistoTruePrimaryPi0W0WeightingInvMassPt(NULL),
226  fHistoTruePrimaryEtaW0WeightingInvMassPt(NULL),
227  fProfileTruePrimaryPi0WeightsInvMassPt(NULL),
228  fProfileTruePrimaryEtaWeightsInvMassPt(NULL),
229  fHistoTruePrimaryPi0MCPtResolPt(NULL),
230  fHistoTruePrimaryEtaMCPtResolPt(NULL),
231  fHistoTrueMotherPi0ConvPhotonEtaPhi(NULL),
232  fHistoTrueMotherEtaConvPhotonEtaPhi(NULL),
233  fHistoTrueSecondaryPi0InvMassPt(NULL),
234  fHistoTrueSecondaryPi0FromK0sInvMassPt(NULL),
235  fHistoTrueK0sWithPi0DaughterMCPt(NULL),
236  fHistoTrueSecondaryPi0FromK0lInvMassPt(NULL),
237  fHistoTrueK0lWithPi0DaughterMCPt(NULL),
238  fHistoTrueSecondaryPi0FromEtaInvMassPt(NULL),
239  fHistoTrueEtaWithPi0DaughterMCPt(NULL),
240  fHistoTrueSecondaryPi0FromLambdaInvMassPt(NULL),
241  fHistoTrueLambdaWithPi0DaughterMCPt(NULL),
242  fHistoTrueBckGGInvMassPt(NULL),
243  fHistoTrueBckFullMesonContainedInOneClusterInvMassPt(NULL),
244  fHistoTrueBckAsymEClustersInvMassPt(NULL),
245  fHistoTrueBckContInvMassPt(NULL),
246  fHistoTruePi0PtY(NULL),
247  fHistoTrueEtaPtY(NULL),
248  fHistoTruePi0PtAlpha(NULL),
249  fHistoTrueEtaPtAlpha(NULL),
250  fHistoTruePi0PtOpenAngle(NULL),
251  fHistoTrueEtaPtOpenAngle(NULL),
252  fHistoTrueConvGammaPt(NULL),
253  fHistoTrueConvGammaEta(NULL),
254  fHistoCombinatorialPt(NULL),
255  fHistoTruePrimaryConvGammaPt(NULL),
256  fHistoTruePrimaryConvGammaESDPtMCPt(NULL),
257  fHistoTrueSecondaryConvGammaPt(NULL),
258  fHistoTrueSecondaryConvGammaMCPt(NULL),
259  fHistoTrueSecondaryConvGammaFromXFromK0sMCPtESDPt(NULL),
260  fHistoTrueSecondaryConvGammaFromXFromK0lMCPtESDPt(NULL),
261  fHistoTrueSecondaryConvGammaFromXFromLambdaMCPtESDPt(NULL),
262  fHistoTrueClusGammaPt(NULL),
263  fHistoTrueClusElectronPt(NULL),
264  fHistoTrueClusConvGammaPt(NULL),
265  fHistoTrueClusConvGammaFullyPt(NULL),
266  fHistoTrueClusMergedGammaPt(NULL),
267  fHistoTrueClusMergedPartConvGammaPt(NULL),
268  fHistoTrueClusDalitzPt(NULL),
269  fHistoTrueClusDalitzMergedPt(NULL),
270  fHistoTrueClusPhotonFromElecMotherPt(NULL),
271  fHistoTrueClusShowerPt(NULL),
272  fHistoTrueClusSubLeadingPt(NULL),
273  fHistoTrueClusNMothers(NULL),
274  fHistoTrueClusEMNonLeadingPt(NULL),
275  fHistoTrueNLabelsInClusPt(NULL),
276  fHistoTruePrimaryClusGammaPt(NULL),
277  fHistoTruePrimaryClusGammaESDPtMCPt(NULL),
278  fHistoTruePrimaryClusConvGammaPt(NULL),
279  fHistoTruePrimaryClusConvGammaESDPtMCPt(NULL),
280  fHistoTrueSecondaryClusGammaPt(NULL),
281  fHistoTrueSecondaryClusGammaFromK0sPt(NULL),
282  fHistoTrueSecondaryClusGammaFromK0lPt(NULL),
283  fHistoTrueSecondaryClusGammaFromLambdaPt(NULL),
284  fHistoTruePrimaryPi0PhotonPairPtconv(NULL),
285  fHistoTruePrimaryPi0W0WeightsPhotonPairPtconv(NULL),
286  fHistoTruePrimaryPi0DCPtconv(NULL),
287  fHistoTruePrimaryPi0MissingPtconv(NULL),
288  fHistoTrueSecondaryPi0PhotonPairPtconv(NULL),
289  fHistoTrueSecondaryPi0FromK0sPhotonPairPtconv(NULL),
290  fHistoTrueSecondaryPi0FromK0lPhotonPairPtconv(NULL),
291  fHistoTrueSecondaryPi0FromLambdaPhotonPairPtconv(NULL),
292  fHistoTrueSecondaryPi0DCPtconvSource(NULL),
293  fHistoTrueSecondaryPi0MissingPtconvSource(NULL),
294  fVectorRecTruePi0s(0),
295  fVectorRecTrueEtas(0),
296  fHistoDoubleCountTruePi0InvMassPt(NULL),
297  fHistoDoubleCountTrueEtaInvMassPt(NULL),
298  fHistoDoubleCountTrueConvGammaRPt(NULL),
299  fHistoDoubleCountTrueClusterGammaPt(NULL),
300  fVectorDoubleCountTruePi0s(0),
301  fVectorDoubleCountTrueEtas(0),
302  fVectorDoubleCountTrueConvGammas(0),
303  fVectorDoubleCountTrueClusterGammas(0),
304  fHistoMultipleCountTruePi0(NULL),
305  fHistoMultipleCountTrueEta(NULL),
306  fHistoMultipleCountTrueConvGamma(NULL),
307  fHistoMultipleCountTrueClusterGamma(NULL),
308  fMapMultipleCountTruePi0s(),
309  fMapMultipleCountTrueEtas(),
310  fMapMultipleCountTrueConvGammas(),
311  fMapMultipleCountTrueClusterGammas(),
312  fHistoTrueClusGammaEM02(NULL),
313  fHistoTrueClusPi0EM02(NULL),
314  fHistoTruePi0InvMassECalib(NULL),
315  fHistoTruePi0PureGammaInvMassECalib(NULL),
316  fHistoNEvents(NULL),
317  fHistoNEventsWOWeight(NULL),
318  fHistoNGoodESDTracks(NULL),
319  fHistoVertexZ(NULL),
320  fHistoVertexX(NULL),
321  fHistoVertexY(NULL),
322  fHistoNGammaCandidates(NULL),
323  fHistoNGoodESDTracksVsNGammaCandidates(NULL),
324  fHistoSPDClusterTrackletBackground(NULL),
325  fHistoNV0Tracks(NULL),
326  fProfileEtaShift(NULL),
327  fProfileJetJetXSection(NULL),
328  fHistoJetJetNTrials(NULL),
329 // fHistoTruePi0NonLinearity(NULL),
330 // fHistoTrueEtaNonLinearity(NULL),
331  fEventPlaneAngle(-100),
332  fRandom(0),
333  fNGammaCandidates(0),
334  fUnsmearedPx(NULL),
335  fUnsmearedPy(NULL),
336  fUnsmearedPz(NULL),
337  fUnsmearedE(NULL),
338  fMCEventPos(NULL),
339  fMCEventNeg(NULL),
340  fESDArrayPos(NULL),
341  fESDArrayNeg(NULL),
342  fnCuts(0),
343  fiCut(0),
344  fMoveParticleAccordingToVertex(kTRUE),
345  fIsHeavyIon(0),
346  fDoLightOutput(kFALSE),
347  fDoMesonAnalysis(kTRUE),
348  fDoMesonQA(0),
349  fDoPhotonQA(0),
350  fDoClusterQA(0),
351  fIsFromDesiredHeader(kTRUE),
352  fIsOverlappingWithOtherHeader(kFALSE),
353  fIsMC(0),
354  fDoTHnSparse(kTRUE),
355  fSetPlotHistsExtQA(kFALSE),
356  fWeightJetJetMC(1),
357  fDoConvGammaShowerShapeTree(kFALSE),
358  fEnableSortForClusMC(kFALSE),
359  fDoPrimaryTrackMatching(kFALSE),
360  fDoInvMassShowerShapeTree(kFALSE),
361  tBrokenFiles(NULL),
362  fFileNameBroken(NULL),
363  fAllowOverlapHeaders(kTRUE)
364 {
365 
366 }
367 
368 //________________________________________________________________________
370  AliAnalysisTaskSE(name),
371  fV0Reader(NULL),
372  fV0ReaderName("V0ReaderV1"),
373  fBGHandler(NULL),
374  fBGHandlerRP(NULL),
375  fBGClusHandler(NULL),
376  fBGClusHandlerRP(NULL),
377  fInputEvent(NULL),
378  fMCEvent(NULL),
379  fCutFolder(NULL),
380  fESDList(NULL),
381  fBackList(NULL),
382  fMotherList(NULL),
383  fPhotonDCAList(NULL),
384  fGammaERM02(NULL),
385  fInvMassShowerShape(NULL),
386  fTrueList(NULL),
387  fMCList(NULL),
388  fClusterOutputList(NULL),
389  fOutputContainer(0),
390  fReaderGammas(NULL),
391  fGammaCandidates(NULL),
392  fClusterCandidates(NULL),
393  fEventCutArray(NULL),
394  fEventCuts(NULL),
395  fCutArray(NULL),
396  fConversionCuts(NULL),
397  fClusterCutArray(NULL),
398  fCaloPhotonCuts(NULL),
399  fMesonCutArray(NULL),
400  fMesonCuts(NULL),
401  fHistoConvGammaPt(NULL),
402  fHistoConvGammaR(NULL),
403  fHistoConvGammaEta(NULL),
404  fTreeConvGammaPtDcazCat(NULL),
405  fPtGamma(0),
406  fDCAzPhoton(0),
407  fRConvPhoton(0),
408  fEtaPhoton(0),
409  fCharCatPhoton(0),
410  fCharPhotonMCInfo(0),
411  tESDGammaERM02(NULL),
412  tESDClusE(0),
413  tESDGammaConvR(0),
414  tESDClusterM02(0),
415  tESDClusterM20(0),
416  tESDClusterEta(0),
417  tESDClusterPhi(0),
418  tESDClusterNCells(0),
419  tESDClusterMaxECell(0),
420  tESDClusterNLM(0),
421  tESDInvMassShowerShape(0),
422  tESDIMMesonInvMass(0),
423  tESDIMMesonPt(0),
424  tESDIMClusE(0),
425  tESDIMClusterM02(0),
426  tESDIMClusterM20(0),
427  tESDIMClusterLeadCellID(0),
428  tESDIMClusterClassification(0),
429  tESDIMClusMatchedTrackPt(0),
430  tESDIMClusTrackDeltaEta(0),
431  tESDIMClusTrackDeltaPhi(0),
432  tESDIMClusterIsoSumClusterEt(0),
433  tESDIMClusterIsoSumTrackEt(0),
434  tESDmapIsClusterAcceptedWithoutTrackMatch(),
435  fHistoMotherInvMassPt(NULL),
436  fHistoMotherMatchedInvMassPt(NULL),
437  fSparseMotherInvMassPtZM(NULL),
438  fHistoMotherBackInvMassPt(NULL),
439  fSparseMotherBackInvMassPtZM(NULL),
440  fHistoMotherInvMassPtAlpha(NULL),
441  fHistoMotherPi0PtY(NULL),
442  fHistoMotherEtaPtY(NULL),
443  fHistoMotherPi0PtAlpha(NULL),
444  fHistoMotherEtaPtAlpha(NULL),
445  fHistoMotherPi0PtOpenAngle(NULL),
446  fHistoMotherEtaPtOpenAngle(NULL),
447  fHistoMotherPi0ConvPhotonEtaPhi(NULL),
448  fHistoMotherEtaConvPhotonEtaPhi(NULL),
449  fHistoMotherInvMassECalib(NULL),
450  fHistoMotherBackInvMassECalib(NULL),
451  fHistoPhotonPairPtconv(NULL),
452  fHistoPhotonPairMixedEventPtconv(NULL),
453  fHistoClusGammaPt(NULL),
454  fHistoClusGammaE(NULL),
455  fHistoClusOverlapHeadersGammaPt(NULL),
456  fHistoClusAllHeadersGammaPt(NULL),
457  fHistoClusRejectedHeadersGammaPt(NULL),
458  fHistoMCHeaders(NULL),
459  fHistoMCAllGammaPt(NULL),
460  fHistoMCAllGammaEMCALAccPt(NULL),
461  fHistoMCAllSecondaryGammaPt(NULL),
462  fHistoMCDecayGammaPi0Pt(NULL),
463  fHistoMCDecayGammaRhoPt(NULL),
464  fHistoMCDecayGammaEtaPt(NULL),
465  fHistoMCDecayGammaOmegaPt(NULL),
466  fHistoMCDecayGammaEtapPt(NULL),
467  fHistoMCDecayGammaPhiPt(NULL),
468  fHistoMCDecayGammaSigmaPt(NULL),
469  fHistoMCConvGammaPt(NULL),
470  fHistoMCSecondaryConvGammaPt(NULL),
471  fHistoMCConvGammaR(NULL),
472  fHistoMCConvGammaEta(NULL),
473  fHistoMCPi0Pt(NULL),
474  fHistoMCPi0WOWeightPt(NULL),
475  fHistoMCPi0WOEvtWeightPt(NULL),
476  fHistoMCEtaPt(NULL),
477  fHistoMCEtaWOWeightPt(NULL),
478  fHistoMCEtaWOEvtWeightPt(NULL),
479  fHistoMCPi0InAccPt(NULL),
480  fHistoMCPi0WOWeightInAccPt(NULL),
481  fHistoMCPi0WOEvtWeightInAccPt(NULL),
482  fHistoMCEtaInAccPt(NULL),
483  fHistoMCEtaWOWeightInAccPt(NULL),
484  fHistoMCEtaWOEvtWeightInAccPt(NULL),
485  fHistoMCPi0PtY(NULL),
486  fHistoMCEtaPtY(NULL),
487  fHistoMCPi0PtAlpha(NULL),
488  fHistoMCEtaPtAlpha(NULL),
489  fHistoMCPrimaryPtvsSource(NULL),
490  fHistoMCSecPi0PtvsSource(NULL),
491  fHistoMCSecPi0Source(NULL),
492  fHistoMCSecPi0InAccPtvsSource(NULL),
493  fHistoMCSecEtaPt(NULL),
494  fHistoMCSecEtaSource(NULL),
495  fHistoMCPi0PtJetPt(NULL),
496  fHistoMCEtaPtJetPt(NULL),
497  fHistoMCPi0PtGammaLeg(NULL),
498  fHistoMCPi0WOWeightPtGammaLeg(NULL),
499  fHistoMCPi0InAccPtGammaLeg(NULL),
500  fHistoMCPi0WOWeightInAccPtGammaLeg(NULL),
501  fHistoMCSecPi0PtGamma1vsSource(NULL),
502  fHistoMCSecPi0InAccPtGamma1vsSource(NULL),
503  fHistoMCSecPi0PtGamma2vsSource(NULL),
504  fHistoMCSecPi0InAccPtGamma2vsSource(NULL),
505  fHistoTruePi0InvMassPt(NULL),
506  fHistoTrueEtaInvMassPt(NULL),
507  fHistoTruePi0MatchedInvMassPt(NULL),
508  fHistoTrueEtaMatchedInvMassPt(NULL),
509  fHistoTruePi0CaloPhotonInvMassPt(NULL),
510  fHistoTrueEtaCaloPhotonInvMassPt(NULL),
511  fHistoTruePi0CaloConvertedPhotonInvMassPt(NULL),
512  fHistoTruePi0CaloConvertedPhotonMatchedInvMassPt(NULL),
513  fHistoTruePi0CaloConvPhotonConvRPt(NULL),
514  fHistoTruePi0CaloConvPhotonConvRAlpha(NULL),
515  fHistoTruePi0CaloConvPhotonPtAlpha(NULL),
516  fHistoTrueEtaCaloConvertedPhotonInvMassPt(NULL),
517  fHistoTrueEtaCaloConvertedPhotonMatchedInvMassPt(NULL),
518  fHistoTrueEtaCaloConvPhotonConvRPt(NULL),
519  fHistoTrueEtaCaloConvPhotonConvRAlpha(NULL),
520  fHistoTrueEtaCaloConvPhotonPtAlpha(NULL),
521  fHistoTruePi0CaloElectronInvMassPt(NULL),
522  fHistoTrueEtaCaloElectronInvMassPt(NULL),
523  fHistoTruePi0CaloMergedClusterInvMassPt(NULL),
524  fHistoTrueEtaCaloMergedClusterInvMassPt(NULL),
525  fHistoTrueMotherCaloEMNonLeadingInvMassPt(NULL),
526  fHistoTruePi0CaloMergedClusterPartConvInvMassPt(NULL),
527  fHistoTrueEtaCaloMergedClusterPartConvInvMassPt(NULL),
528  fHistoTruePrimaryPi0InvMassPt(NULL),
529  fHistoTruePrimaryEtaInvMassPt(NULL),
530  fHistoTruePrimaryPi0W0WeightingInvMassPt(NULL),
531  fHistoTruePrimaryEtaW0WeightingInvMassPt(NULL),
532  fProfileTruePrimaryPi0WeightsInvMassPt(NULL),
533  fProfileTruePrimaryEtaWeightsInvMassPt(NULL),
534  fHistoTruePrimaryPi0MCPtResolPt(NULL),
535  fHistoTruePrimaryEtaMCPtResolPt(NULL),
536  fHistoTrueMotherPi0ConvPhotonEtaPhi(NULL),
537  fHistoTrueMotherEtaConvPhotonEtaPhi(NULL),
538  fHistoTrueSecondaryPi0InvMassPt(NULL),
539  fHistoTrueSecondaryPi0FromK0sInvMassPt(NULL),
540  fHistoTrueK0sWithPi0DaughterMCPt(NULL),
541  fHistoTrueSecondaryPi0FromK0lInvMassPt(NULL),
542  fHistoTrueK0lWithPi0DaughterMCPt(NULL),
543  fHistoTrueSecondaryPi0FromEtaInvMassPt(NULL),
544  fHistoTrueEtaWithPi0DaughterMCPt(NULL),
545  fHistoTrueSecondaryPi0FromLambdaInvMassPt(NULL),
546  fHistoTrueLambdaWithPi0DaughterMCPt(NULL),
547  fHistoTrueBckGGInvMassPt(NULL),
548  fHistoTrueBckFullMesonContainedInOneClusterInvMassPt(NULL),
549  fHistoTrueBckAsymEClustersInvMassPt(NULL),
550  fHistoTrueBckContInvMassPt(NULL),
551  fHistoTruePi0PtY(NULL),
552  fHistoTrueEtaPtY(NULL),
553  fHistoTruePi0PtAlpha(NULL),
554  fHistoTrueEtaPtAlpha(NULL),
555  fHistoTruePi0PtOpenAngle(NULL),
556  fHistoTrueEtaPtOpenAngle(NULL),
557  fHistoTrueConvGammaPt(NULL),
558  fHistoTrueConvGammaEta(NULL),
559  fHistoCombinatorialPt(NULL),
560  fHistoTruePrimaryConvGammaPt(NULL),
561  fHistoTruePrimaryConvGammaESDPtMCPt(NULL),
562  fHistoTrueSecondaryConvGammaPt(NULL),
563  fHistoTrueSecondaryConvGammaMCPt(NULL),
564  fHistoTrueSecondaryConvGammaFromXFromK0sMCPtESDPt(NULL),
565  fHistoTrueSecondaryConvGammaFromXFromK0lMCPtESDPt(NULL),
566  fHistoTrueSecondaryConvGammaFromXFromLambdaMCPtESDPt(NULL),
567  fHistoTrueClusGammaPt(NULL),
568  fHistoTrueClusElectronPt(NULL),
569  fHistoTrueClusConvGammaPt(NULL),
570  fHistoTrueClusConvGammaFullyPt(NULL),
571  fHistoTrueClusMergedGammaPt(NULL),
572  fHistoTrueClusMergedPartConvGammaPt(NULL),
573  fHistoTrueClusDalitzPt(NULL),
574  fHistoTrueClusDalitzMergedPt(NULL),
575  fHistoTrueClusPhotonFromElecMotherPt(NULL),
576  fHistoTrueClusShowerPt(NULL),
577  fHistoTrueClusSubLeadingPt(NULL),
578  fHistoTrueClusNMothers(NULL),
579  fHistoTrueClusEMNonLeadingPt(NULL),
580  fHistoTrueNLabelsInClusPt(NULL),
581  fHistoTruePrimaryClusGammaPt(NULL),
582  fHistoTruePrimaryClusGammaESDPtMCPt(NULL),
583  fHistoTruePrimaryClusConvGammaPt(NULL),
584  fHistoTruePrimaryClusConvGammaESDPtMCPt(NULL),
585  fHistoTrueSecondaryClusGammaPt(NULL),
586  fHistoTrueSecondaryClusGammaFromK0sPt(NULL),
587  fHistoTrueSecondaryClusGammaFromK0lPt(NULL),
588  fHistoTrueSecondaryClusGammaFromLambdaPt(NULL),
589  fHistoTruePrimaryPi0PhotonPairPtconv(NULL),
590  fHistoTruePrimaryPi0W0WeightsPhotonPairPtconv(NULL),
591  fHistoTruePrimaryPi0DCPtconv(NULL),
592  fHistoTruePrimaryPi0MissingPtconv(NULL),
593  fHistoTrueSecondaryPi0PhotonPairPtconv(NULL),
594  fHistoTrueSecondaryPi0FromK0sPhotonPairPtconv(NULL),
595  fHistoTrueSecondaryPi0FromK0lPhotonPairPtconv(NULL),
596  fHistoTrueSecondaryPi0FromLambdaPhotonPairPtconv(NULL),
597  fHistoTrueSecondaryPi0DCPtconvSource(NULL),
598  fHistoTrueSecondaryPi0MissingPtconvSource(NULL),
599  fVectorRecTruePi0s(0),
600  fVectorRecTrueEtas(0),
601  fHistoDoubleCountTruePi0InvMassPt(NULL),
602  fHistoDoubleCountTrueEtaInvMassPt(NULL),
603  fHistoDoubleCountTrueConvGammaRPt(NULL),
604  fHistoDoubleCountTrueClusterGammaPt(NULL),
605  fVectorDoubleCountTruePi0s(0),
606  fVectorDoubleCountTrueEtas(0),
607  fVectorDoubleCountTrueConvGammas(0),
608  fVectorDoubleCountTrueClusterGammas(0),
609  fHistoMultipleCountTruePi0(NULL),
610  fHistoMultipleCountTrueEta(NULL),
611  fHistoMultipleCountTrueConvGamma(NULL),
612  fHistoMultipleCountTrueClusterGamma(NULL),
613  fMapMultipleCountTruePi0s(),
614  fMapMultipleCountTrueEtas(),
615  fMapMultipleCountTrueConvGammas(),
616  fMapMultipleCountTrueClusterGammas(),
617  fHistoTrueClusGammaEM02(NULL),
618  fHistoTrueClusPi0EM02(NULL),
619  fHistoTruePi0InvMassECalib(NULL),
620  fHistoTruePi0PureGammaInvMassECalib(NULL),
621  fHistoNEvents(NULL),
622  fHistoNEventsWOWeight(NULL),
623  fHistoNGoodESDTracks(NULL),
624  fHistoVertexZ(NULL),
625  fHistoVertexX(NULL),
626  fHistoVertexY(NULL),
627  fHistoNGammaCandidates(NULL),
628  fHistoNGoodESDTracksVsNGammaCandidates(NULL),
629  fHistoSPDClusterTrackletBackground(NULL),
630  fHistoNV0Tracks(NULL),
631  fProfileEtaShift(NULL),
632  fProfileJetJetXSection(NULL),
633  fHistoJetJetNTrials(NULL),
634 // fHistoTruePi0NonLinearity(NULL),
635 // fHistoTrueEtaNonLinearity(NULL),
636  fEventPlaneAngle(-100),
637  fRandom(0),
638  fNGammaCandidates(0),
639  fUnsmearedPx(NULL),
640  fUnsmearedPy(NULL),
641  fUnsmearedPz(NULL),
642  fUnsmearedE(NULL),
643  fMCEventPos(NULL),
644  fMCEventNeg(NULL),
645  fESDArrayPos(NULL),
646  fESDArrayNeg(NULL),
647  fnCuts(0),
648  fiCut(0),
649  fMoveParticleAccordingToVertex(kTRUE),
650  fIsHeavyIon(0),
651  fDoLightOutput(kFALSE),
652  fDoMesonAnalysis(kTRUE),
653  fDoMesonQA(0),
654  fDoPhotonQA(0),
655  fDoClusterQA(0),
656  fIsFromDesiredHeader(kTRUE),
657  fIsOverlappingWithOtherHeader(kFALSE),
658  fIsMC(0),
659  fDoTHnSparse(kTRUE),
660  fSetPlotHistsExtQA(kFALSE),
661  fWeightJetJetMC(1),
662  fDoConvGammaShowerShapeTree(kFALSE),
663  fEnableSortForClusMC(kFALSE),
664  fDoPrimaryTrackMatching(kFALSE),
665  fDoInvMassShowerShapeTree(kFALSE),
666  tBrokenFiles(NULL),
667  fFileNameBroken(NULL),
668  fAllowOverlapHeaders(kTRUE)
669 {
670  // Define output slots here
671  DefineOutput(1, TList::Class());
672 }
673 
675 {
676  if(fGammaCandidates){
677  delete fGammaCandidates;
678  fGammaCandidates = 0x0;
679  }
680  if(fClusterCandidates){
681  delete fClusterCandidates;
682  fClusterCandidates = 0x0;
683  }
684  if(fBGHandler){
685  delete[] fBGHandler;
686  fBGHandler = 0x0;
687  }
688  if(fBGHandlerRP){
689  delete[] fBGHandlerRP;
690  fBGHandlerRP = 0x0;
691  }
692  if(fBGClusHandler){
693  delete[] fBGClusHandler;
694  fBGClusHandler = 0x0;
695  }
696  if(fBGClusHandlerRP){
697  delete[] fBGClusHandlerRP;
698  fBGClusHandlerRP = 0x0;
699  }
700 }
701 //___________________________________________________________
703 
704  const Int_t nDim = 4;
705  Int_t nBins[nDim] = {800,300,7,4};
706  Double_t xMin[nDim] = {0,0, 0,0};
707  Double_t xMax[nDim] = {0.8,30,7,4};
708 
709  if(fDoTHnSparse){
710  fSparseMotherInvMassPtZM = new THnSparseF*[fnCuts];
711  fSparseMotherBackInvMassPtZM = new THnSparseF*[fnCuts];
712  }
713 
716 
719 
720  for(Int_t iCut = 0; iCut<fnCuts;iCut++){
721  if (((AliConversionMesonCuts*)fMesonCutArray->At(iCut))->DoBGCalculation()){
722  TString cutstringEvent = ((AliConvEventCuts*)fEventCutArray->At(iCut))->GetCutNumber();
723  TString cutstringPhoton = ((AliConversionPhotonCuts*)fCutArray->At(iCut))->GetCutNumber();
724  TString cutstringCalo = ((AliCaloPhotonCuts*)fClusterCutArray->At(iCut))->GetCutNumber();
725  TString cutstringMeson = ((AliConversionMesonCuts*)fMesonCutArray->At(iCut))->GetCutNumber();
726 
727  Int_t collisionSystem = atoi((TString)(((AliConvEventCuts*)fEventCutArray->At(iCut))->GetCutNumber())(0,1));
728  Int_t centMin = atoi((TString)(((AliConvEventCuts*)fEventCutArray->At(iCut))->GetCutNumber())(1,1));
729  Int_t centMax = atoi((TString)(((AliConvEventCuts*)fEventCutArray->At(iCut))->GetCutNumber())(2,1));
730 
731  if(collisionSystem == 1 || collisionSystem == 2 ||
732  collisionSystem == 5 || collisionSystem == 8 ||
733  collisionSystem == 9){
734  centMin = centMin*10;
735  centMax = centMax*10;
736  if(centMax ==0 && centMax!=centMin) centMax=100;
737  }else if(collisionSystem == 3 || collisionSystem == 6){
738  centMin = centMin*5;
739  centMax = centMax*5;
740  }else if(collisionSystem == 4 || collisionSystem == 7){
741  centMin = ((centMin*5)+45);
742  centMax = ((centMax*5)+45);
743  }
744 
745  if(fDoTHnSparse){
746  fBackList[iCut] = new TList();
747  fBackList[iCut]->SetName(Form("%s_%s_%s_%s Back histograms",cutstringEvent.Data(),cutstringPhoton.Data(),cutstringCalo.Data(), cutstringMeson.Data()));
748  fBackList[iCut]->SetOwner(kTRUE);
749  fCutFolder[iCut]->Add(fBackList[iCut]);
750 
751  fSparseMotherBackInvMassPtZM[iCut] = new THnSparseF("Back_Back_InvMass_Pt_z_m","Back_Back_InvMass_Pt_z_m",nDim,nBins,xMin,xMax);
752  fBackList[iCut]->Add(fSparseMotherBackInvMassPtZM[iCut]);
753 
754  fMotherList[iCut] = new TList();
755  fMotherList[iCut]->SetName(Form("%s_%s_%s_%s Mother histograms",cutstringEvent.Data(),cutstringPhoton.Data(),cutstringCalo.Data(),cutstringMeson.Data()));
756  fMotherList[iCut]->SetOwner(kTRUE);
757  fCutFolder[iCut]->Add(fMotherList[iCut]);
758 
759  fSparseMotherInvMassPtZM[iCut] = new THnSparseF("Back_Mother_InvMass_Pt_z_m","Back_Mother_InvMass_Pt_z_m",nDim,nBins,xMin,xMax);
760  fMotherList[iCut]->Add(fSparseMotherInvMassPtZM[iCut]);
761  }
762 
763  if(((AliConversionMesonCuts*)fMesonCutArray->At(iCut))->BackgroundHandlerType() == 0){
765  collisionSystem,centMin,centMax,
766  ((AliConversionMesonCuts*)fMesonCutArray->At(iCut))->GetNumberOfBGEvents(),
767  ((AliConversionMesonCuts*)fMesonCutArray->At(iCut))->UseTrackMultiplicity(),
768  2,8,5);
770  collisionSystem,centMin,centMax,
771  ((AliConversionMesonCuts*)fMesonCutArray->At(iCut))->GetNumberOfBGEvents(),
772  ((AliConversionMesonCuts*)fMesonCutArray->At(iCut))->UseTrackMultiplicity(),
773  2,8,5);
774  fBGHandlerRP[iCut] = NULL;
775  }else{
777  ((AliConvEventCuts*)fEventCutArray->At(fiCut))->IsHeavyIon(),
778  ((AliConversionMesonCuts*)fMesonCutArray->At(fiCut))->UseTrackMultiplicity(),
779  ((AliConversionMesonCuts*)fMesonCutArray->At(iCut))->GetNumberOfBGEvents());
781  ((AliConvEventCuts*)fEventCutArray->At(fiCut))->IsHeavyIon(),
782  ((AliConversionMesonCuts*)fMesonCutArray->At(fiCut))->UseTrackMultiplicity(),
783  ((AliConversionMesonCuts*)fMesonCutArray->At(iCut))->GetNumberOfBGEvents());
784  fBGHandler[iCut] = NULL;
785  }
786  }
787  }
788 }
789 //________________________________________________________________________
791 
792  fV0Reader = (AliV0ReaderV1*)AliAnalysisManager::GetAnalysisManager()->GetTask(fV0ReaderName.Data());
793  if(!fV0Reader){printf("Error: No V0 Reader");return;}// GetV0Reader
794 
795 
796  if (fIsMC == 2){
797  fDoClusterQA = 0;
798  fDoTHnSparse = kFALSE;
799  } else if (fIsMC == 3){
800  fDoTHnSparse = kFALSE;
801  }
802  // Create histograms
803  if(fOutputContainer != NULL){
804  delete fOutputContainer;
805  fOutputContainer = NULL;
806  }
807  if(fOutputContainer == NULL){
808  fOutputContainer = new TList();
809  fOutputContainer->SetOwner(kTRUE);
810  }
811 
812  // Array of current cut's gammas
813  fGammaCandidates = new TList();
814  fClusterCandidates = new TList();
815  fClusterCandidates->SetOwner(kTRUE);
816 
817  fCutFolder = new TList*[fnCuts];
818  fESDList = new TList*[fnCuts];
819 
820  if(fDoTHnSparse){
821  fBackList = new TList*[fnCuts];
822  fMotherList = new TList*[fnCuts];
823  }
824 
825  fHistoNEvents = new TH1F*[fnCuts];
826  if (fIsMC > 1){
827  fHistoNEventsWOWeight = new TH1F*[fnCuts];
828  }
829  if (fIsMC == 2){
830  fProfileJetJetXSection = new TProfile*[fnCuts];
831  fHistoJetJetNTrials = new TH1F*[fnCuts];
832  }
833  fHistoNGoodESDTracks = new TH1F*[fnCuts];
834  fHistoVertexZ = new TH1F*[fnCuts];
835  if(!fDoLightOutput){
836  fHistoVertexX = new TH1F*[fnCuts];
837  fHistoVertexY = new TH1F*[fnCuts];
838  }
839  fHistoNGammaCandidates = new TH1F*[fnCuts];
840  if(fIsHeavyIon==2) fProfileEtaShift = new TProfile*[fnCuts];
841  if(!fDoLightOutput){
844  fHistoNV0Tracks = new TH1F*[fnCuts];
845  fHistoConvGammaPt = new TH1F*[fnCuts];
846  }
847 
848  if (fDoPhotonQA == 2){
849  fPhotonDCAList = new TList*[fnCuts];
851  }
852  if (fDoPhotonQA > 0){
853  fHistoConvGammaR = new TH1F*[fnCuts];
854  fHistoConvGammaEta = new TH1F*[fnCuts];
855  }
856 
857  if(fDoMesonAnalysis){
860  if(!fDoLightOutput){
867  }
868  if (fDoMesonQA > 0){
877  }
878  }
879 
881  fHistoClusGammaPt = new TH1F*[fnCuts];
882  fHistoClusGammaE = new TH1F*[fnCuts];
884  fHistoClusAllHeadersGammaPt = new TH1F*[fnCuts];
886 
888  fGammaERM02 = new TList*[fnCuts];
889  tESDGammaERM02 = new TTree*[fnCuts];
890  }
891 
895  }
896 
897  // set common binning in pT for mesons and photons
898  Int_t nBinsPt = 200;
899  Float_t minPt = 0;
900  Float_t maxPt = 20;
901  Int_t nBinsQAPt = 200;
902  Float_t minQAPt = 0.4;
903  Float_t maxQAPt = 20;
904  Int_t nBinsClusterPt = 500;
905  Float_t minClusterPt = 0;
906  Float_t maxClusterPt = 50;
907  if (((AliConvEventCuts*)fV0Reader->GetEventCuts())->GetEnergyEnum() == AliConvEventCuts::k8TeV ){
908  nBinsPt = 400;
909  minPt = 0;
910  maxPt = 40;
911  nBinsQAPt = 300;
912  minQAPt = 0.4;
913  maxQAPt = 40;
914  nBinsClusterPt = 800;
915  minClusterPt = 0;
916  maxClusterPt = 80;
917  } else if (((AliConvEventCuts*)fV0Reader->GetEventCuts())->GetEnergyEnum() == AliConvEventCuts::kpPb5TeV ){
918  nBinsPt = 400;
919  minPt = 0;
920  maxPt = 40;
921  nBinsQAPt = 300;
922  minQAPt = 0.4;
923  maxQAPt = 40;
924  nBinsClusterPt = 800;
925  minClusterPt = 0;
926  maxClusterPt = 80;
927  } else if ( ((AliConvEventCuts*)fV0Reader->GetEventCuts())->GetEnergyEnum() == AliConvEventCuts::k13TeV ||
930  nBinsPt = 600;
931  minPt = 0;
932  maxPt = 60;
933  nBinsQAPt = 400;
934  minQAPt = 0.4;
935  maxQAPt = 60;
936  nBinsClusterPt = 1000;
937  minClusterPt = 0;
938  maxClusterPt = 100;
939  }
940 
941  for(Int_t iCut = 0; iCut<fnCuts;iCut++){
942  TString cutstringEvent = ((AliConvEventCuts*)fEventCutArray->At(iCut))->GetCutNumber();
943  TString cutstringPhoton = ((AliConversionPhotonCuts*)fCutArray->At(iCut))->GetCutNumber();
944  TString cutstringCalo = ((AliCaloPhotonCuts*)fClusterCutArray->At(iCut))->GetCutNumber();
945  TString cutstringMeson = "NoMesonCut";
946  if(fDoMesonAnalysis)
947  cutstringMeson = ((AliConversionMesonCuts*)fMesonCutArray->At(iCut))->GetCutNumber();
948 
949  fCutFolder[iCut] = new TList();
950  fCutFolder[iCut]->SetName(Form("Cut Number %s_%s_%s_%s",cutstringEvent.Data(),cutstringPhoton.Data(),cutstringCalo.Data(),cutstringMeson.Data()));
951  fCutFolder[iCut]->SetOwner(kTRUE);
952  fOutputContainer->Add(fCutFolder[iCut]);
953  fESDList[iCut] = new TList();
954  fESDList[iCut]->SetName(Form("%s_%s_%s_%s ESD histograms",cutstringEvent.Data(),cutstringPhoton.Data(),cutstringCalo.Data(),cutstringMeson.Data()));
955  fESDList[iCut]->SetOwner(kTRUE);
956  fCutFolder[iCut]->Add(fESDList[iCut]);
957 
958  fHistoNEvents[iCut] = new TH1F("NEvents","NEvents",14,-0.5,13.5);
959  fHistoNEvents[iCut]->GetXaxis()->SetBinLabel(1,"Accepted");
960  fHistoNEvents[iCut]->GetXaxis()->SetBinLabel(2,"Centrality");
961  fHistoNEvents[iCut]->GetXaxis()->SetBinLabel(3,"Miss. MC or inc. ev.");
962  if (((AliConvEventCuts*)fEventCutArray->At(iCut))->IsSpecialTrigger() > 1 ){
963  TString TriggerNames = "Not Trigger: ";
964  TriggerNames = TriggerNames+ ( (AliConvEventCuts*)fEventCutArray->At(iCut))->GetSpecialTriggerName();
965  fHistoNEvents[iCut]->GetXaxis()->SetBinLabel(4,TriggerNames.Data());
966  }else {
967  fHistoNEvents[iCut]->GetXaxis()->SetBinLabel(4,"Trigger");
968  }
969  fHistoNEvents[iCut]->GetXaxis()->SetBinLabel(5,"Vertex Z");
970  fHistoNEvents[iCut]->GetXaxis()->SetBinLabel(6,"Cont. Vertex");
971  fHistoNEvents[iCut]->GetXaxis()->SetBinLabel(7,"Pile-Up");
972  fHistoNEvents[iCut]->GetXaxis()->SetBinLabel(8,"no SDD");
973  fHistoNEvents[iCut]->GetXaxis()->SetBinLabel(9,"no V0AND");
974  fHistoNEvents[iCut]->GetXaxis()->SetBinLabel(10,"EMCAL problem");
975  fHistoNEvents[iCut]->GetXaxis()->SetBinLabel(11,"rejectedForJetJetMC");
976  fHistoNEvents[iCut]->GetXaxis()->SetBinLabel(12,"SPD hits vs tracklet");
977  fHistoNEvents[iCut]->GetXaxis()->SetBinLabel(13,"Out-of-Bunch pileup Past-Future");
978  fHistoNEvents[iCut]->GetXaxis()->SetBinLabel(14,"Pileup V0M-TPCout Tracks");
979  fESDList[iCut]->Add(fHistoNEvents[iCut]);
980 
981  if (fIsMC > 1){
982  fHistoNEventsWOWeight[iCut] = new TH1F("NEventsWOWeight","NEventsWOWeight",14,-0.5,13.5);
983  fHistoNEventsWOWeight[iCut]->GetXaxis()->SetBinLabel(1,"Accepted");
984  fHistoNEventsWOWeight[iCut]->GetXaxis()->SetBinLabel(2,"Centrality");
985  fHistoNEventsWOWeight[iCut]->GetXaxis()->SetBinLabel(3,"Miss. MC or inc. ev.");
986  if (((AliConvEventCuts*)fEventCutArray->At(iCut))->IsSpecialTrigger() > 1 ){
987  TString TriggerNames = "Not Trigger: ";
988  TriggerNames = TriggerNames+ ( (AliConvEventCuts*)fEventCutArray->At(iCut))->GetSpecialTriggerName();
989  fHistoNEventsWOWeight[iCut]->GetXaxis()->SetBinLabel(4,TriggerNames.Data());
990  }else {
991  fHistoNEventsWOWeight[iCut]->GetXaxis()->SetBinLabel(4,"Trigger");
992  }
993  fHistoNEventsWOWeight[iCut]->GetXaxis()->SetBinLabel(5,"Vertex Z");
994  fHistoNEventsWOWeight[iCut]->GetXaxis()->SetBinLabel(6,"Cont. Vertex");
995  fHistoNEventsWOWeight[iCut]->GetXaxis()->SetBinLabel(7,"Pile-Up");
996  fHistoNEventsWOWeight[iCut]->GetXaxis()->SetBinLabel(8,"no SDD");
997  fHistoNEventsWOWeight[iCut]->GetXaxis()->SetBinLabel(9,"no V0AND");
998  fHistoNEventsWOWeight[iCut]->GetXaxis()->SetBinLabel(10,"EMCAL problem");
999  fHistoNEventsWOWeight[iCut]->GetXaxis()->SetBinLabel(11,"rejectedForJetJetMC");
1000  fHistoNEventsWOWeight[iCut]->GetXaxis()->SetBinLabel(12,"SPD hits vs tracklet");
1001  fHistoNEventsWOWeight[iCut]->GetXaxis()->SetBinLabel(13,"Out-of-Bunch pileup Past-Future");
1002  fHistoNEventsWOWeight[iCut]->GetXaxis()->SetBinLabel(14,"Pileup V0M-TPCout Tracks");
1003  fESDList[iCut]->Add(fHistoNEventsWOWeight[iCut]);
1004  }
1005 
1006  if (fIsMC == 2){
1007  fProfileJetJetXSection[iCut] = new TProfile("XSection","XSection",1,-0.5,0.5);
1008  fESDList[iCut]->Add(fProfileJetJetXSection[iCut]);
1009  fHistoJetJetNTrials[iCut] = new TH1F("NTrials","#sum{NTrials}",1,0,1);
1010  fHistoJetJetNTrials[iCut]->GetXaxis()->SetBinLabel(1,"#sum{NTrials}");
1011  fESDList[iCut]->Add(fHistoJetJetNTrials[iCut]);
1012  }
1013 
1014  if(fIsHeavyIon == 1)
1015  fHistoNGoodESDTracks[iCut] = new TH1F("GoodESDTracks","GoodESDTracks",4000,0,4000);
1016  else if(fIsHeavyIon == 2)
1017  fHistoNGoodESDTracks[iCut] = new TH1F("GoodESDTracks","GoodESDTracks",400,0,400);
1018  else
1019  fHistoNGoodESDTracks[iCut] = new TH1F("GoodESDTracks","GoodESDTracks",200,0,200);
1020  fHistoNGoodESDTracks[iCut]->SetXTitle("# TPC tracks");
1021  fESDList[iCut]->Add(fHistoNGoodESDTracks[iCut]);
1022 
1023  fHistoVertexZ[iCut] = new TH1F("VertexZ","VertexZ",1000,-50,50);
1024  fESDList[iCut]->Add(fHistoVertexZ[iCut]);
1025  if(!fDoLightOutput){
1026  fHistoVertexX[iCut] = new TH1F("VertexX","VertexX",200,-5,5);
1027  fESDList[iCut]->Add(fHistoVertexX[iCut]);
1028  fHistoVertexY[iCut] = new TH1F("VertexY","VertexY",200,-5,5);
1029  fESDList[iCut]->Add(fHistoVertexY[iCut]);
1030  }
1031 
1032  if(fIsHeavyIon == 1)
1033  fHistoNGammaCandidates[iCut] = new TH1F("GammaCandidates","GammaCandidates",100,0,100);
1034  else if(fIsHeavyIon == 2)
1035  fHistoNGammaCandidates[iCut] = new TH1F("GammaCandidates","GammaCandidates",50,0,50);
1036  else
1037  fHistoNGammaCandidates[iCut] = new TH1F("GammaCandidates","GammaCandidates",50,0,50);
1038  fHistoNGammaCandidates[iCut]->SetXTitle("# accepted #gamma_{conv}");
1039  fESDList[iCut]->Add(fHistoNGammaCandidates[iCut]);
1040 
1041  if(!fDoLightOutput){
1042  if(fIsHeavyIon == 1)
1043  fHistoNGoodESDTracksVsNGammaCandidates[iCut] = new TH2F("GoodESDTracksVsGammaCandidates","GoodESDTracksVsGammaCandidates",4000,0,4000,100,0,100);
1044  else if(fIsHeavyIon == 2)
1045  fHistoNGoodESDTracksVsNGammaCandidates[iCut] = new TH2F("GoodESDTracksVsGammaCandidates","GoodESDTracksVsGammaCandidates",400,0,400,50,0,50);
1046  else
1047  fHistoNGoodESDTracksVsNGammaCandidates[iCut] = new TH2F("GoodESDTracksVsGammaCandidates","GoodESDTracksVsGammaCandidates",200,0,200,50,0,50);
1048  fHistoNGoodESDTracksVsNGammaCandidates[iCut]->SetXTitle("# TPC tracks");
1049  fHistoNGoodESDTracksVsNGammaCandidates[iCut]->SetYTitle("# accepted #gamma_{conv}");
1051 
1052  fHistoSPDClusterTrackletBackground[iCut] = new TH2F("SPD tracklets vs SPD clusters","SPD tracklets vs SPD clusters",100,0,200,250,0,1000);
1053  fESDList[iCut]->Add(fHistoSPDClusterTrackletBackground[iCut]);
1054 
1055  if(fIsHeavyIon == 1)
1056  fHistoNV0Tracks[iCut] = new TH1F("V0 Multiplicity","V0 Multiplicity",30000,0,30000);
1057  else if(fIsHeavyIon == 2)
1058  fHistoNV0Tracks[iCut] = new TH1F("V0 Multiplicity","V0 Multiplicity",2500,0,2500);
1059  else
1060  fHistoNV0Tracks[iCut] = new TH1F("V0 Multiplicity","V0 Multiplicity",1500,0,1500);
1061  fHistoNV0Tracks[iCut]->SetXTitle("VZERO amp [arb. units]");
1062  fESDList[iCut]->Add(fHistoNV0Tracks[iCut]);
1063 
1064  fHistoConvGammaPt[iCut] = new TH1F("ESD_ConvGamma_Pt","ESD_ConvGamma_Pt",nBinsPt, minPt, maxPt);
1065  fHistoConvGammaPt[iCut]->SetXTitle("p_{T,conv}(GeV/c)");
1066  fESDList[iCut]->Add(fHistoConvGammaPt[iCut]);
1067  }
1068 
1069  if(fIsHeavyIon == 2){
1070  fProfileEtaShift[iCut] = new TProfile("Eta Shift","Eta Shift",1, -0.5,0.5);
1071  fESDList[iCut]->Add(fProfileEtaShift[iCut]);
1072  }
1073 
1074  if (fIsMC > 1){
1075  fHistoNEvents[iCut]->Sumw2();
1076  fHistoNGoodESDTracks[iCut]->Sumw2();
1077  fHistoVertexZ[iCut]->Sumw2();
1078  fHistoNGammaCandidates[iCut]->Sumw2();
1079  if(!fDoLightOutput){
1080  fHistoVertexX[iCut]->Sumw2();
1081  fHistoVertexY[iCut]->Sumw2();
1083  fHistoSPDClusterTrackletBackground[iCut]->Sumw2();
1084  fHistoNV0Tracks[iCut]->Sumw2();
1085  fHistoConvGammaPt[iCut]->Sumw2();
1086  }
1087  }
1088 
1089  if (fDoPhotonQA == 2 ){
1090  fPhotonDCAList[iCut] = new TList();
1091  fPhotonDCAList[iCut]->SetName(Form("%s_%s_%s_%s Photon DCA tree",cutstringEvent.Data(),cutstringPhoton.Data(),cutstringCalo.Data(),cutstringMeson.Data()));
1092  fPhotonDCAList[iCut]->SetOwner(kTRUE);
1093  fCutFolder[iCut]->Add(fPhotonDCAList[iCut]);
1094 
1095  fTreeConvGammaPtDcazCat[iCut] = new TTree("ESD_ConvGamma_Pt_Dcaz_R_Eta","ESD_ConvGamma_Pt_Dcaz_R_Eta_Cat");
1096  fTreeConvGammaPtDcazCat[iCut]->Branch("Pt",&fPtGamma,"fPtGamma/F");
1097  fTreeConvGammaPtDcazCat[iCut]->Branch("DcaZPhoton",&fDCAzPhoton,"fDCAzPhoton/F");
1098  fTreeConvGammaPtDcazCat[iCut]->Branch("cat",&fCharCatPhoton,"fCharCatPhoton/b");
1099  if(fIsMC > 0){
1100  fTreeConvGammaPtDcazCat[iCut]->Branch("photonMCInfo",&fCharPhotonMCInfo,"fCharPhotonMCInfo/b");
1101  }
1102  if (fIsMC > 1){
1103  fTreeConvGammaPtDcazCat[iCut]->Branch("weightEvent",&fWeightJetJetMC,"fWeightJetJetMC/b");
1104  }
1105  fPhotonDCAList[iCut]->Add(fTreeConvGammaPtDcazCat[iCut]);
1106  }
1107 
1108  if (fDoPhotonQA > 0){
1109  fHistoConvGammaR[iCut] = new TH1F("ESD_ConvGamma_R","ESD_ConvGamma_R",800,0,200);
1110  fHistoConvGammaR[iCut]->SetXTitle("R_{conv}(cm)");
1111  fESDList[iCut]->Add(fHistoConvGammaR[iCut]);
1112  fHistoConvGammaEta[iCut] = new TH1F("ESD_ConvGamma_Eta","ESD_ConvGamma_Eta",2000,-2,2);
1113  fHistoConvGammaEta[iCut]->SetXTitle("#eta_{conv}");
1114  fESDList[iCut]->Add(fHistoConvGammaEta[iCut]);
1115  }
1116 
1117  fClusterOutputList[iCut] = new TList();
1118  fClusterOutputList[iCut]->SetName(Form("%s_%s_%s_%s Cluster Output",cutstringEvent.Data(),cutstringPhoton.Data(),cutstringCalo.Data(),cutstringMeson.Data()));
1119  fClusterOutputList[iCut]->SetOwner(1);
1120  fCutFolder[iCut]->Add(fClusterOutputList[iCut]);
1121 
1122  fHistoClusGammaPt[iCut] = new TH1F("ClusGamma_Pt","ClusGamma_Pt",nBinsClusterPt, minClusterPt, maxClusterPt);
1123  fHistoClusGammaPt[iCut]->SetXTitle("p_{T,clus}(GeV/c)");
1124  fClusterOutputList[iCut]->Add(fHistoClusGammaPt[iCut]);
1125  fHistoClusGammaE[iCut] = new TH1F("ClusGamma_E","ClusGamma_E",nBinsClusterPt, minClusterPt, maxClusterPt);
1126  fHistoClusGammaE[iCut]->SetXTitle("E_{clus}(GeV)");
1127  fClusterOutputList[iCut]->Add(fHistoClusGammaE[iCut]);
1128  fHistoClusOverlapHeadersGammaPt[iCut] = new TH1F("ClusGammaOverlapHeaders_Pt","ClusGammaOverlapHeaders_Pt",nBinsClusterPt, minClusterPt, maxClusterPt);
1129  fHistoClusOverlapHeadersGammaPt[iCut]->SetXTitle("p_{T,clus}(GeV/c), selected header w/ overlap");
1131  fHistoClusAllHeadersGammaPt[iCut] = new TH1F("ClusGammaAllHeaders_Pt","ClusGammaAllHeaders_Pt",nBinsClusterPt, minClusterPt, maxClusterPt);
1132  fHistoClusAllHeadersGammaPt[iCut]->SetXTitle("p_{T,clus}(GeV/c), all headers");
1134  fHistoClusRejectedHeadersGammaPt[iCut] = new TH1F("ClusGammaRejectedHeaders_Pt","ClusGammaRejectedHeaders_Pt",nBinsClusterPt, minClusterPt, maxClusterPt);
1135  fHistoClusRejectedHeadersGammaPt[iCut]->SetXTitle("p_{T,clus}(GeV/c), rejected headers");
1137 
1139  fGammaERM02[iCut] = new TList();
1140  fGammaERM02[iCut]->SetName(Form("%s_%s_%s_%s ConvGamma-Cluster Matched",cutstringEvent.Data(),cutstringPhoton.Data(),cutstringCalo.Data(),cutstringMeson.Data()));
1141  fGammaERM02[iCut]->SetOwner(kTRUE);
1142  fCutFolder[iCut]->Add(fGammaERM02[iCut]);
1143 
1144  tESDGammaERM02[iCut] = new TTree("ESD_ConvGamma_E_ConvR_M02_M20","ESD_ConvGamma_E_ConvR_M02_M20");
1145  tESDGammaERM02[iCut]->Branch("ClusterE",&tESDClusE,"tESDClusE/F");
1146  tESDGammaERM02[iCut]->Branch("ConvR",&tESDGammaConvR,"tESDGammaConvR/F");
1147  tESDGammaERM02[iCut]->Branch("M02",&tESDClusterM02,"tESDClusterM02/F");
1148  tESDGammaERM02[iCut]->Branch("M20",&tESDClusterM20,"tESDClusterM20/F");
1149  tESDGammaERM02[iCut]->Branch("Eta",&tESDClusterEta,"tESDClusterEta/F");
1150  tESDGammaERM02[iCut]->Branch("Phi",&tESDClusterPhi,"tESDClusterPhi/F");
1151  tESDGammaERM02[iCut]->Branch("NCells",&tESDClusterNCells,"tESDClusterNCells/F");
1152  tESDGammaERM02[iCut]->Branch("MaxECell",&tESDClusterMaxECell,"tESDClusterMaxECell/F");
1153  tESDGammaERM02[iCut]->Branch("NLM",&tESDClusterNLM,"tESDClusterNLM/F");
1154  fGammaERM02[iCut]->Add(tESDGammaERM02[iCut]);
1155  }
1156 
1158  fInvMassShowerShape[iCut] = new TList();
1159  fInvMassShowerShape[iCut]->SetName(Form("%s_%s_%s_%s InvMass_ShowerShape",cutstringEvent.Data(),cutstringPhoton.Data(),cutstringCalo.Data(),cutstringMeson.Data()));
1160  fInvMassShowerShape[iCut]->SetOwner(kTRUE);
1161  fCutFolder[iCut]->Add(fInvMassShowerShape[iCut]);
1162  tESDInvMassShowerShape[iCut] = new TTree("ESD_Meson_InvMass_Pt_ClusE_ClusM02_ClusM20","ESD_Meson_InvMass_Pt_ClusE_ClusM02_ClusM20");
1163  tESDInvMassShowerShape[iCut]->Branch("MesonInvMass",&tESDIMMesonInvMass,"tESDIMMesonInvMass/F");
1164  tESDInvMassShowerShape[iCut]->Branch("MesonPt",&tESDIMMesonPt,"tESDIMMesonPt/F");
1165  tESDInvMassShowerShape[iCut]->Branch("ClusE",&tESDIMClusE,"tESDIMClusE/F");
1166  tESDInvMassShowerShape[iCut]->Branch("ClusM02",&tESDIMClusterM02,"tESDIMClusterM02/F");
1167  tESDInvMassShowerShape[iCut]->Branch("ClusM20",&tESDIMClusterM20,"tESDIMClusterM20/F");
1168  tESDInvMassShowerShape[iCut]->Branch("ClusLeadCellID",&tESDIMClusterLeadCellID,"tESDIMClusterLeadCellID/I");
1169  if(fIsMC>0) tESDInvMassShowerShape[iCut]->Branch("ClusClassification",&tESDIMClusterClassification,"tESDIMClusterClassification/I");
1170  tESDInvMassShowerShape[iCut]->Branch("ClusMatchedTrackPt",&tESDIMClusMatchedTrackPt,"tESDIMClusMatchedTrackPt/F");
1171  tESDInvMassShowerShape[iCut]->Branch("ClusTrackDeltaEta",&tESDIMClusTrackDeltaEta,"tESDIMClusTrackDeltaEta/F");
1172  tESDInvMassShowerShape[iCut]->Branch("ClusTrackDeltaPhi",&tESDIMClusTrackDeltaPhi,"tESDIMClusTrackDeltaPhi/F");
1173  tESDInvMassShowerShape[iCut]->Branch("ClusIsoSumClusterEt",&tESDIMClusterIsoSumClusterEt,"tESDIMClusterIsoSumClusterEt/F");
1174  tESDInvMassShowerShape[iCut]->Branch("ClusIsoSumTrackEt",&tESDIMClusterIsoSumTrackEt,"tESDIMClusterIsoSumTrackEt/F");
1175  fInvMassShowerShape[iCut]->Add(tESDInvMassShowerShape[iCut]);
1176  }
1177 
1178  if (fIsMC > 1){
1179  fHistoClusGammaPt[iCut]->Sumw2();
1180  fHistoClusGammaE[iCut]->Sumw2();
1181  fHistoClusOverlapHeadersGammaPt[iCut]->Sumw2();
1182  fHistoClusAllHeadersGammaPt[iCut]->Sumw2();
1183  fHistoClusRejectedHeadersGammaPt[iCut]->Sumw2();
1184  }
1185 
1186  if(fDoMesonAnalysis){
1187  fHistoMotherInvMassPt[iCut] = new TH2F("ESD_Mother_InvMass_Pt","ESD_Mother_InvMass_Pt",800,0,0.8,nBinsPt, minPt, maxPt);
1188  fHistoMotherInvMassPt[iCut]->SetXTitle("M_{inv}(GeV/c^{2})");
1189  fHistoMotherInvMassPt[iCut]->SetYTitle("p_{T,pair}(GeV/c)");
1190  fESDList[iCut]->Add(fHistoMotherInvMassPt[iCut]);
1191 
1192  if(!fDoLightOutput){
1193  fHistoMotherMatchedInvMassPt[iCut] = new TH2F("ESD_MotherMatched_InvMass_Pt","ESD_MotherMatched_InvMass_Pt",800,0,0.8,nBinsPt, minPt, maxPt);
1194  fHistoMotherMatchedInvMassPt[iCut]->SetXTitle("M_{inv}(GeV/c^{2}) matched conv e^{+/-}to cluster");
1195  fHistoMotherMatchedInvMassPt[iCut]->SetYTitle("p_{T,pair}(GeV/c)");
1196  fESDList[iCut]->Add(fHistoMotherMatchedInvMassPt[iCut]);
1197  }
1198 
1199  fHistoMotherBackInvMassPt[iCut] = new TH2F("ESD_Background_InvMass_Pt","ESD_Background_InvMass_Pt",800,0,0.8,nBinsPt, minPt, maxPt);
1200  fHistoMotherBackInvMassPt[iCut]->SetXTitle("M_{inv, mxed}(GeV/c^{2})");
1201  fHistoMotherBackInvMassPt[iCut]->SetYTitle("p_{T,BG pair}(GeV/c)");
1202  fESDList[iCut]->Add(fHistoMotherBackInvMassPt[iCut]);
1203 
1204  if(!fDoLightOutput){
1205  fHistoMotherInvMassPtAlpha[iCut] = new TH2F("ESD_Mother_InvMass_vs_Pt_Alpha","ESD_Mother_InvMass_vs_Pt_Alpha",800,0,0.8,nBinsPt, minPt, maxPt);
1206  fHistoMotherInvMassPtAlpha[iCut]->SetXTitle("M_{inv}(GeV/c^{2})");
1207  fHistoMotherInvMassPtAlpha[iCut]->SetYTitle("p_{T,pair}(GeV/c)");
1208  fESDList[iCut]->Add(fHistoMotherInvMassPtAlpha[iCut]);
1209 
1210  fHistoPhotonPairPtconv[iCut] = new TH2F("ESD_Mother_InvMass_PtConv","",800,0,0.8,nBinsPt, minPt, maxPt);
1211  fHistoPhotonPairPtconv[iCut]->SetXTitle("M_{inv}(GeV/c^{2})");
1212  fHistoPhotonPairPtconv[iCut]->SetYTitle("#gamma^{conv}p_{T}(GeV/c)");
1213  fESDList[iCut]->Add(fHistoPhotonPairPtconv[iCut]);
1214 
1215  fHistoPhotonPairMixedEventPtconv[iCut] = new TH2F("ESD_Background_InvMass_PtConv","",800,0,0.8,nBinsPt, minPt, maxPt);
1216  fHistoPhotonPairMixedEventPtconv[iCut]->SetXTitle("M_{inv,mixed}(GeV/c^{2})");
1217  fHistoPhotonPairMixedEventPtconv[iCut]->SetYTitle("#gamma^{conv}p_{T}(GeV/c)");
1218  fESDList[iCut]->Add(fHistoPhotonPairMixedEventPtconv[iCut]);
1219  }
1220 
1221  if (fIsMC > 1){
1222  fHistoMotherInvMassPt[iCut]->Sumw2();
1223  fHistoMotherBackInvMassPt[iCut]->Sumw2();
1224  if(!fDoLightOutput){
1225  fHistoMotherMatchedInvMassPt[iCut]->Sumw2();
1226  fHistoMotherInvMassPtAlpha[iCut]->Sumw2();
1227  fHistoPhotonPairPtconv[iCut]->Sumw2();
1228  fHistoPhotonPairMixedEventPtconv[iCut]->Sumw2();
1229  }
1230  }
1231 
1232  if(!fDoLightOutput){
1233  fHistoMotherInvMassECalib[iCut] = new TH2F("ESD_Mother_InvMass_E_Calib","ESD_Mother_InvMass_E_Calib",800,0,0.8,nBinsPt, minPt, maxPt);
1234  fHistoMotherInvMassECalib[iCut]->SetXTitle("M_{inv}(GeV/c^{2})");
1235  fHistoMotherInvMassECalib[iCut]->SetYTitle("E_{cluster}(GeV)");
1236  fESDList[iCut]->Add(fHistoMotherInvMassECalib[iCut]);
1237 
1238  fHistoMotherBackInvMassECalib[iCut] = new TH2F("ESD_Background_InvMass_E_Calib","ESD_Background_InvMass_E_Calib",800,0,0.8,nBinsPt, minPt, maxPt);
1239  fHistoMotherBackInvMassECalib[iCut]->SetXTitle("M_{inv}(GeV/c^{2})");
1240  fHistoMotherBackInvMassECalib[iCut]->SetYTitle("E_{cluster}(GeV)");
1241  fESDList[iCut]->Add(fHistoMotherBackInvMassECalib[iCut]);
1242 
1243  if (fIsMC > 1){
1244  fHistoMotherInvMassECalib[iCut]->Sumw2();
1245  fHistoMotherBackInvMassECalib[iCut]->Sumw2();
1246  }
1247  }
1248 
1249  if (fDoMesonQA > 0 ){
1250  fHistoMotherPi0PtY[iCut] = new TH2F("ESD_MotherPi0_Pt_Y","ESD_MotherPi0_Pt_Y",nBinsQAPt, minQAPt, maxQAPt,150,-1.5,1.5);
1251  fHistoMotherPi0PtY[iCut]->SetXTitle("p_{T, #pi^{0}cand}(GeV/c)");
1252  fHistoMotherPi0PtY[iCut]->SetYTitle("y_{#pi^{0}cand}");
1254  fESDList[iCut]->Add(fHistoMotherPi0PtY[iCut]);
1255  fHistoMotherEtaPtY[iCut] = new TH2F("ESD_MotherEta_Pt_Y","ESD_MotherEta_Pt_Y",nBinsQAPt, minQAPt, maxQAPt,150,-1.5,1.5);
1256  fHistoMotherEtaPtY[iCut]->SetXTitle("p_{T, #eta cand}(GeV/c)");
1257  fHistoMotherEtaPtY[iCut]->SetYTitle("y_{ #eta cand}");
1259  fESDList[iCut]->Add(fHistoMotherEtaPtY[iCut]);
1260  fHistoMotherPi0PtAlpha[iCut] = new TH2F("ESD_MotherPi0_Pt_Alpha","ESD_MotherPi0_Pt_Alpha",nBinsQAPt, minQAPt, maxQAPt,200,-1,1);
1261  fHistoMotherPi0PtAlpha[iCut]->SetXTitle("p_{T, #pi^{0}cand}(GeV/c)");
1262  fHistoMotherPi0PtAlpha[iCut]->SetYTitle("#alpha_{#pi^{0}cand}");
1264  fESDList[iCut]->Add(fHistoMotherPi0PtAlpha[iCut]);
1265  fHistoMotherEtaPtAlpha[iCut] = new TH2F("ESD_MotherEta_Pt_Alpha","ESD_MotherEta_Pt_Alpha",nBinsQAPt, minQAPt, maxQAPt,200,-1,1);
1266  fHistoMotherEtaPtAlpha[iCut]->SetXTitle("p_{T, #eta cand}(GeV/c)");
1267  fHistoMotherEtaPtAlpha[iCut]->SetYTitle("#alpha_{#eta cand}");
1269  fESDList[iCut]->Add(fHistoMotherEtaPtAlpha[iCut]);
1270  fHistoMotherPi0PtOpenAngle[iCut] = new TH2F("ESD_MotherPi0_Pt_OpenAngle","ESD_MotherPi0_Pt_OpenAngle",nBinsQAPt, minQAPt, maxQAPt,100,0,1);
1271  fHistoMotherPi0PtOpenAngle[iCut]->SetXTitle("p_{T, #pi^{0}cand}(GeV/c)");
1272  fHistoMotherPi0PtOpenAngle[iCut]->SetYTitle("#theta_{#pi^{0}cand}");
1274  fESDList[iCut]->Add(fHistoMotherPi0PtOpenAngle[iCut]);
1275  fHistoMotherEtaPtOpenAngle[iCut] = new TH2F("ESD_MotherEta_Pt_OpenAngle","ESD_MotherEta_Pt_OpenAngle",nBinsQAPt, minQAPt, maxQAPt,200,0,TMath::Pi());
1276  fHistoMotherEtaPtOpenAngle[iCut]->SetXTitle("p_{T, #eta cand}(GeV/c)");
1277  fHistoMotherEtaPtOpenAngle[iCut]->SetYTitle("#theta_{#eta cand}");
1279  fESDList[iCut]->Add(fHistoMotherEtaPtOpenAngle[iCut]);
1280  fHistoMotherPi0ConvPhotonEtaPhi[iCut] = new TH2F("ESD_MotherPi0ConvPhoton_Eta_Phi","ConvPhoton under #pi^{0}peak",600,0,2*TMath::Pi(),200,-1,1);
1281  fHistoMotherPi0ConvPhotonEtaPhi[iCut]->SetXTitle("#phi_{#gamma_{conv}}(rad)");
1282  fHistoMotherPi0ConvPhotonEtaPhi[iCut]->SetYTitle("#eta_{#gamma_{conv}}");
1283  fESDList[iCut]->Add(fHistoMotherPi0ConvPhotonEtaPhi[iCut]);
1284  fHistoMotherEtaConvPhotonEtaPhi[iCut] = new TH2F("ESD_MotherEtaConvPhoton_Eta_Phi","ConvPhoton under #eta peak",600,0,2*TMath::Pi(),200,-1,1);
1285  fHistoMotherEtaConvPhotonEtaPhi[iCut]->SetXTitle("#phi_{#gamma_{conv}}(rad)");
1286  fHistoMotherEtaConvPhotonEtaPhi[iCut]->SetYTitle("#eta_{#gamma_{conv}}");
1287  fESDList[iCut]->Add(fHistoMotherEtaConvPhotonEtaPhi[iCut]);
1288  if (fIsMC > 1){
1289  fHistoMotherPi0PtY[iCut]->Sumw2();
1290  fHistoMotherEtaPtY[iCut]->Sumw2();
1291  fHistoMotherPi0PtAlpha[iCut]->Sumw2();
1292  fHistoMotherEtaPtAlpha[iCut]->Sumw2();
1293  fHistoMotherPi0PtOpenAngle[iCut]->Sumw2();
1294  fHistoMotherEtaPtOpenAngle[iCut]->Sumw2();
1295  fHistoMotherPi0ConvPhotonEtaPhi[iCut]->Sumw2();
1296  fHistoMotherEtaConvPhotonEtaPhi[iCut]->Sumw2();
1297  }
1298  }
1299  }
1300  }
1301  if(fDoMesonAnalysis){
1302  InitBack(); // Init Background Handler
1303  }
1304 
1305  if(fIsMC>0){
1306  // MC Histogramms
1307  fMCList = new TList*[fnCuts];
1308  // True Histogramms
1309  fTrueList = new TList*[fnCuts];
1310 
1311  if(!fDoLightOutput){
1312  fHistoMCHeaders = new TH1I*[fnCuts];
1313  fHistoMCAllGammaPt = new TH1F*[fnCuts];
1314  fHistoMCAllGammaEMCALAccPt = new TH1F*[fnCuts];
1316  fHistoMCDecayGammaPi0Pt = new TH1F*[fnCuts];
1317  fHistoMCDecayGammaRhoPt = new TH1F*[fnCuts];
1318  fHistoMCDecayGammaEtaPt = new TH1F*[fnCuts];
1319  fHistoMCDecayGammaOmegaPt = new TH1F*[fnCuts];
1320  fHistoMCDecayGammaEtapPt = new TH1F*[fnCuts];
1321  fHistoMCDecayGammaPhiPt = new TH1F*[fnCuts];
1322  fHistoMCDecayGammaSigmaPt = new TH1F*[fnCuts];
1323  fHistoMCConvGammaPt = new TH1F*[fnCuts];
1325  fHistoTrueConvGammaPt = new TH1F*[fnCuts];
1328 
1330  fHistoTruePrimaryConvGammaPt = new TH1F*[fnCuts];
1337  }
1338 
1339  fHistoTrueClusGammaPt = new TH1F*[fnCuts];
1340  if(!fDoLightOutput){
1341  fHistoTrueClusConvGammaPt = new TH1F*[fnCuts];
1342  fHistoTruePrimaryClusGammaPt = new TH1F*[fnCuts];
1350  fHistoTrueClusElectronPt = new TH1F*[fnCuts];
1351  }
1354 
1355  if(!fDoLightOutput){
1359  fHistoTrueClusEMNonLeadingPt = new TH1F*[fnCuts];
1360  }
1361 
1362  if (fDoPhotonQA > 0){
1363  fHistoMCConvGammaR = new TH1F*[fnCuts];
1364  fHistoMCConvGammaEta = new TH1F*[fnCuts];
1365  fHistoTrueConvGammaEta = new TH1F*[fnCuts];
1366  }
1367 
1368 // fHistoTruePi0NonLinearity = new TH2F*[fnCuts];
1369 // fHistoTrueEtaNonLinearity = new TH2F*[fnCuts];
1370  if(!fDoLightOutput){
1373  }
1374 
1375  if (fDoClusterQA > 0){
1377  fHistoTrueClusMergedGammaPt = new TH1F*[fnCuts];
1379  fHistoTrueClusDalitzPt = new TH1F*[fnCuts];
1380  fHistoTrueClusDalitzMergedPt = new TH1F*[fnCuts];
1382  fHistoTrueClusShowerPt = new TH1F*[fnCuts];
1383  fHistoTrueClusSubLeadingPt = new TH1F*[fnCuts];
1384  fHistoTrueClusNMothers = new TH1F*[fnCuts];
1385  }
1386 
1387  if(fDoMesonAnalysis){
1388  fHistoMCPi0Pt = new TH1F*[fnCuts];
1389  fHistoMCPi0WOWeightPt = new TH1F*[fnCuts];
1390  fHistoMCEtaPt = new TH1F*[fnCuts];
1391  fHistoMCEtaWOWeightPt = new TH1F*[fnCuts];
1392  fHistoMCPi0InAccPt = new TH1F*[fnCuts];
1393  fHistoMCPi0WOWeightInAccPt = new TH1F*[fnCuts];
1394  fHistoMCEtaInAccPt = new TH1F*[fnCuts];
1395  fHistoMCEtaWOWeightInAccPt = new TH1F*[fnCuts];
1396  if (fIsMC > 1){
1397  fHistoMCPi0WOEvtWeightPt = new TH1F*[fnCuts];
1398  fHistoMCEtaWOEvtWeightPt = new TH1F*[fnCuts];
1401  }
1402 
1406  fHistoMCSecPi0Source = new TH1F*[fnCuts];
1407  fHistoMCSecEtaPt = new TH1F*[fnCuts];
1408  fHistoMCSecEtaSource = new TH1F*[fnCuts];
1409  if (!fDoLightOutput){
1418  }
1419 
1425  fHistoMultipleCountTruePi0 = new TH1F*[fnCuts];
1427  fHistoMultipleCountTrueEta = new TH1F*[fnCuts];
1439  if(!fDoLightOutput) {
1446  fHistoTruePrimaryPi0DCPtconv = new TH1F*[fnCuts];
1450  }
1451 
1452 
1453  if (fDoMesonQA > 0){
1454  fHistoMCPi0PtY = new TH2F*[fnCuts];
1455  fHistoMCEtaPtY = new TH2F*[fnCuts];
1456  fHistoMCPi0PtAlpha = new TH2F*[fnCuts];
1457  fHistoMCEtaPtAlpha = new TH2F*[fnCuts];
1458  if (fIsMC == 2){
1459  fHistoMCPi0PtJetPt = new TH2F*[fnCuts];
1460  fHistoMCEtaPtJetPt = new TH2F*[fnCuts];
1461  }
1462 
1463  if (fIsMC < 2){
1489  }
1490  if(fDoMesonQA > 1){
1495  }
1496  fHistoTruePi0PtY = new TH2F*[fnCuts];
1497  fHistoTrueEtaPtY = new TH2F*[fnCuts];
1504  }
1505  }
1506 
1507  for(Int_t iCut = 0; iCut<fnCuts;iCut++){
1508  TString cutstringEvent = ((AliConvEventCuts*)fEventCutArray->At(iCut))->GetCutNumber();
1509  TString cutstringPhoton = ((AliConversionPhotonCuts*)fCutArray->At(iCut))->GetCutNumber();
1510  TString cutstringCalo = ((AliCaloPhotonCuts*)fClusterCutArray->At(iCut))->GetCutNumber();
1511  TString cutstringMeson = "NoMesonCut";
1512  if(fDoMesonAnalysis)
1513  cutstringMeson = ((AliConversionMesonCuts*)fMesonCutArray->At(iCut))->GetCutNumber();
1514 
1515  fMCList[iCut] = new TList();
1516  fMCList[iCut]->SetName(Form("%s_%s_%s_%s MC histograms",cutstringEvent.Data(),cutstringPhoton.Data(),cutstringCalo.Data(),cutstringMeson.Data()));
1517  fMCList[iCut]->SetOwner(kTRUE);
1518  fCutFolder[iCut]->Add(fMCList[iCut]);
1519  if(!fDoLightOutput){
1520  fHistoMCHeaders[iCut] = new TH1I("MC_Headers","MC_Headers",20,0,20);
1521  fMCList[iCut]->Add(fHistoMCHeaders[iCut]);
1522  fHistoMCAllGammaPt[iCut] = new TH1F("MC_AllGamma_Pt","MC_AllGamma_Pt",nBinsPt, minPt, maxPt);
1523  fMCList[iCut]->Add(fHistoMCAllGammaPt[iCut]);
1524  fHistoMCAllGammaEMCALAccPt[iCut] = new TH1F("MC_AllGammaEMCALAcc_Pt","MC_AllGammaEMCALAcc_Pt",nBinsPt, minPt, maxPt);
1525  fMCList[iCut]->Add(fHistoMCAllGammaEMCALAccPt[iCut]);
1526  fHistoMCAllSecondaryGammaPt[iCut] = new TH2F("MC_AllSecondaryGamma_Pt","MC_AllSecondaryGamma_Pt",nBinsPt, minPt, maxPt,4,-0.5,3.5);
1527  fHistoMCAllSecondaryGammaPt[iCut]->GetYaxis()->SetBinLabel(1,"K0s");
1528  fHistoMCAllSecondaryGammaPt[iCut]->GetYaxis()->SetBinLabel(2,"K0l");
1529  fHistoMCAllSecondaryGammaPt[iCut]->GetYaxis()->SetBinLabel(3,"Lambda");
1530  fHistoMCAllSecondaryGammaPt[iCut]->GetYaxis()->SetBinLabel(4,"rest");
1531  fMCList[iCut]->Add(fHistoMCAllSecondaryGammaPt[iCut]);
1532 
1533  fHistoMCDecayGammaPi0Pt[iCut] = new TH1F("MC_DecayGammaPi0_Pt","MC_DecayGammaPi0_Pt",nBinsPt, minPt, maxPt);
1534  fMCList[iCut]->Add(fHistoMCDecayGammaPi0Pt[iCut]);
1535  fHistoMCDecayGammaRhoPt[iCut] = new TH1F("MC_DecayGammaRho_Pt","MC_DecayGammaRho_Pt",nBinsPt, minPt, maxPt);
1536  fMCList[iCut]->Add(fHistoMCDecayGammaRhoPt[iCut]);
1537  fHistoMCDecayGammaEtaPt[iCut] = new TH1F("MC_DecayGammaEta_Pt","MC_DecayGammaEta_Pt",nBinsPt, minPt, maxPt);
1538  fMCList[iCut]->Add(fHistoMCDecayGammaEtaPt[iCut]);
1539  fHistoMCDecayGammaOmegaPt[iCut] = new TH1F("MC_DecayGammaOmega_Pt","MC_DecayGammaOmmega_Pt",nBinsPt, minPt, maxPt);
1540  fMCList[iCut]->Add(fHistoMCDecayGammaOmegaPt[iCut]);
1541  fHistoMCDecayGammaEtapPt[iCut] = new TH1F("MC_DecayGammaEtap_Pt","MC_DecayGammaEtap_Pt",nBinsPt, minPt, maxPt);
1542  fMCList[iCut]->Add(fHistoMCDecayGammaEtapPt[iCut]);
1543  fHistoMCDecayGammaPhiPt[iCut] = new TH1F("MC_DecayGammaPhi_Pt","MC_DecayGammaPhi_Pt",nBinsPt, minPt, maxPt);
1544  fMCList[iCut]->Add(fHistoMCDecayGammaPhiPt[iCut]);
1545  fHistoMCDecayGammaSigmaPt[iCut] = new TH1F("MC_DecayGammaSigma_Pt","MC_DecayGammaSigma_Pt",nBinsPt, minPt, maxPt);
1546  fMCList[iCut]->Add(fHistoMCDecayGammaSigmaPt[iCut]);
1547  fHistoMCConvGammaPt[iCut] = new TH1F("MC_ConvGamma_Pt","MC_ConvGamma_Pt",nBinsPt, minPt, maxPt);
1548  fMCList[iCut]->Add(fHistoMCConvGammaPt[iCut]);
1549  fHistoMCSecondaryConvGammaPt[iCut] = new TH2F("MC_SecondaryConvGamma_Pt","MC_SecondaryConvGamma_Pt",nBinsPt, minPt, maxPt,4,-0.5,3.5);
1550  fHistoMCSecondaryConvGammaPt[iCut]->GetYaxis()->SetBinLabel(1,"K0s");
1551  fHistoMCSecondaryConvGammaPt[iCut]->GetYaxis()->SetBinLabel(2,"K0l");
1552  fHistoMCSecondaryConvGammaPt[iCut]->GetYaxis()->SetBinLabel(3,"Lambda");
1553  fHistoMCSecondaryConvGammaPt[iCut]->GetYaxis()->SetBinLabel(4,"rest");
1554  fMCList[iCut]->Add(fHistoMCSecondaryConvGammaPt[iCut]);
1555 
1556  if (fIsMC > 1){
1557  fHistoMCAllGammaPt[iCut]->Sumw2();
1558  fHistoMCAllGammaEMCALAccPt[iCut]->Sumw2();
1559  fHistoMCAllSecondaryGammaPt[iCut]->Sumw2();
1560  fHistoMCDecayGammaPi0Pt[iCut]->Sumw2();
1561  fHistoMCDecayGammaRhoPt[iCut]->Sumw2();
1562  fHistoMCDecayGammaEtaPt[iCut]->Sumw2();
1563  fHistoMCDecayGammaOmegaPt[iCut]->Sumw2();
1564  fHistoMCDecayGammaEtapPt[iCut]->Sumw2();
1565  fHistoMCDecayGammaPhiPt[iCut]->Sumw2();
1566  fHistoMCDecayGammaSigmaPt[iCut]->Sumw2();
1567  fHistoMCConvGammaPt[iCut]->Sumw2();
1568  fHistoMCSecondaryConvGammaPt[iCut]->Sumw2();
1569  }
1570  }
1571 
1572  if (fDoPhotonQA > 0){
1573  fHistoMCConvGammaR[iCut] = new TH1F("MC_ConvGamma_R","MC_ConvGamma_R",800,0,200);
1574  fMCList[iCut]->Add(fHistoMCConvGammaR[iCut]);
1575  fHistoMCConvGammaEta[iCut] = new TH1F("MC_ConvGamma_Eta","MC_ConvGamma_Eta",2000,-2,2);
1576  fMCList[iCut]->Add(fHistoMCConvGammaEta[iCut]);
1577  }
1578 
1579  if(fDoMesonAnalysis){
1580  fHistoMCPi0Pt[iCut] = new TH1F("MC_Pi0_Pt","MC_Pi0_Pt",nBinsPt, minPt, maxPt);
1581  fHistoMCPi0Pt[iCut]->Sumw2();
1582  fMCList[iCut]->Add(fHistoMCPi0Pt[iCut]);
1583  fHistoMCPi0WOWeightPt[iCut] = new TH1F("MC_Pi0_WOWeights_Pt","MC_Pi0_WOWeights_Pt",nBinsPt, minPt, maxPt);
1584  fMCList[iCut]->Add(fHistoMCPi0WOWeightPt[iCut]);
1585 
1586  fHistoMCEtaPt[iCut] = new TH1F("MC_Eta_Pt","MC_Eta_Pt",nBinsPt, minPt, maxPt);
1587  fHistoMCEtaPt[iCut]->Sumw2();
1588  fMCList[iCut]->Add(fHistoMCEtaPt[iCut]);
1589  fHistoMCEtaWOWeightPt[iCut] = new TH1F("MC_Eta_WOWeights_Pt","MC_Eta_WOWeights_Pt",nBinsPt, minPt, maxPt);
1590  fMCList[iCut]->Add(fHistoMCEtaWOWeightPt[iCut]);
1591 
1592  fHistoMCPi0InAccPt[iCut] = new TH1F("MC_Pi0InAcc_Pt","MC_Pi0InAcc_Pt",nBinsPt, minPt, maxPt);
1593  fHistoMCPi0InAccPt[iCut]->Sumw2();
1594  fMCList[iCut]->Add(fHistoMCPi0InAccPt[iCut]);
1595  fHistoMCPi0WOWeightInAccPt[iCut] = new TH1F("MC_Pi0WOWeightInAcc_Pt","MC_Pi0WOWeightInAcc_Pt",nBinsPt, minPt, maxPt);
1596  fMCList[iCut]->Add(fHistoMCPi0WOWeightInAccPt[iCut]);
1597  fHistoMCEtaInAccPt[iCut] = new TH1F("MC_EtaInAcc_Pt","MC_EtaInAcc_Pt",nBinsPt, minPt, maxPt);
1598  fHistoMCEtaInAccPt[iCut]->Sumw2();
1599  fMCList[iCut]->Add(fHistoMCEtaInAccPt[iCut]);
1600  fHistoMCEtaWOWeightInAccPt[iCut] = new TH1F("MC_EtaWOWeightInAcc_Pt","MC_EtaWOWeightInAcc_Pt",nBinsPt, minPt, maxPt);
1601  fMCList[iCut]->Add(fHistoMCEtaWOWeightInAccPt[iCut]);
1602 
1603  if (fIsMC > 1){
1604  fHistoMCPi0WOWeightPt[iCut]->Sumw2();
1605  fHistoMCEtaWOWeightPt[iCut]->Sumw2();
1606  fHistoMCPi0WOWeightInAccPt[iCut]->Sumw2();
1607  fHistoMCEtaWOWeightInAccPt[iCut]->Sumw2();
1608  fHistoMCPi0WOEvtWeightPt[iCut] = new TH1F("MC_Pi0_WOEventWeights_Pt","MC_Pi0_WOEventWeights_Pt",nBinsPt, minPt, maxPt);
1609  fMCList[iCut]->Add(fHistoMCPi0WOEvtWeightPt[iCut]);
1610  fHistoMCEtaWOEvtWeightPt[iCut] = new TH1F("MC_Eta_WOEventWeights_Pt","MC_Eta_WOEventWeights_Pt",nBinsPt, minPt, maxPt);
1611  fMCList[iCut]->Add(fHistoMCEtaWOEvtWeightPt[iCut]);
1612  fHistoMCPi0WOEvtWeightInAccPt[iCut] = new TH1F("MC_Pi0_WOEventWeightsInAcc_Pt","MC_Pi0_WOEventWeightsInAcc_Pt",nBinsPt, minPt, maxPt);
1613  fMCList[iCut]->Add(fHistoMCPi0WOEvtWeightInAccPt[iCut]);
1614  fHistoMCEtaWOEvtWeightInAccPt[iCut] = new TH1F("MC_Eta_WOEventWeightsInAcc_Pt","MC_Eta_WOEventWeightsInAcc_Pt",nBinsPt, minPt, maxPt);
1615  fMCList[iCut]->Add(fHistoMCEtaWOEvtWeightInAccPt[iCut]);
1616 
1617  if (fDoMesonQA > 0 && fIsMC == 2){
1618  fHistoMCPi0PtJetPt[iCut] = new TH2F("MC_Pi0_Pt_JetPt","MC_Pi0_Pt_JetPt",nBinsQAPt, minQAPt, maxQAPt,200,0,200);
1619  fHistoMCPi0PtJetPt[iCut]->Sumw2();
1621  fMCList[iCut]->Add(fHistoMCPi0PtJetPt[iCut]);
1622  fHistoMCEtaPtJetPt[iCut] = new TH2F("MC_Eta_Pt_JetPt","MC_Eta_Pt_JetPt",nBinsQAPt, minQAPt, maxQAPt,200,0,200);
1623  fHistoMCEtaPtJetPt[iCut]->Sumw2();
1625  fMCList[iCut]->Add(fHistoMCEtaPtJetPt[iCut]);
1626  }
1627  }
1628  fHistoMCPrimaryPtvsSource[iCut] = new TH2F("MC_Primary_Pt_Source","MC_Primary_Pt_Source",nBinsPt, minPt, maxPt, 7, -0.5, 6.5);
1629  fHistoMCPrimaryPtvsSource[iCut]->GetYaxis()->SetBinLabel(1,"Pi+");
1630  fHistoMCPrimaryPtvsSource[iCut]->GetYaxis()->SetBinLabel(2,"Pi-");
1631  fHistoMCPrimaryPtvsSource[iCut]->GetYaxis()->SetBinLabel(3,"K+");
1632  fHistoMCPrimaryPtvsSource[iCut]->GetYaxis()->SetBinLabel(4,"K-");
1633  fHistoMCPrimaryPtvsSource[iCut]->GetYaxis()->SetBinLabel(5,"K0s");
1634  fHistoMCPrimaryPtvsSource[iCut]->GetYaxis()->SetBinLabel(6,"K0l");
1635  fHistoMCPrimaryPtvsSource[iCut]->GetYaxis()->SetBinLabel(7,"Lambda");
1636  fMCList[iCut]->Add(fHistoMCPrimaryPtvsSource[iCut]);
1637 
1638  fHistoMCSecPi0Source[iCut] = new TH1F("MC_SecPi0_Source","MC_SecPi0_Source",5000,0.,5000);
1639  fMCList[iCut]->Add(fHistoMCSecPi0Source[iCut]);
1640  fHistoMCSecEtaSource[iCut] = new TH1F("MC_SecEta_Source","MC_SecEta_Source",5000,0,5000);
1641  fMCList[iCut]->Add(fHistoMCSecEtaSource[iCut]);
1642  fHistoMCSecPi0PtvsSource[iCut] = new TH2F("MC_SecPi0_Pt_Source","MC_SecPi0_Pt_Source",nBinsPt, minPt, maxPt,16,-0.5,15.5);
1643  fMCList[iCut]->Add(fHistoMCSecPi0PtvsSource[iCut]);
1644  fHistoMCSecPi0InAccPtvsSource[iCut] = new TH2F("MC_SecPi0InAcc_Pt_Source","MC_SecPi0InAcc_Pt_Source",nBinsPt, minPt, maxPt,16,-0.5,15.5);
1645  fMCList[iCut]->Add(fHistoMCSecPi0InAccPtvsSource[iCut]);
1646  fHistoMCSecEtaPt[iCut] = new TH1F("MC_SecEta_Pt","MC_SecEta_Pt",nBinsPt, minPt, maxPt);
1647  fMCList[iCut]->Add(fHistoMCSecEtaPt[iCut]);
1648 
1649  if (fIsMC == 2){
1650  fHistoMCPrimaryPtvsSource[iCut]->Sumw2();
1651  fHistoMCSecPi0PtvsSource[iCut]->Sumw2();
1652  fHistoMCSecPi0InAccPtvsSource[iCut]->Sumw2();
1653  fHistoMCSecEtaPt[iCut]->Sumw2();
1654  }
1655 
1656  // book histograms for pure MC handling of PCM-Calo dir gamma reco
1657  if (!fDoLightOutput){
1658  fHistoMCPi0PtGammaLeg[iCut] = new TH2F("MC_Pi0_PtGamma_Leg","MC_Pi0_PtGamma_Leg",nBinsPt, minPt, maxPt, 3, -0.5, 2.5);
1659  fHistoMCPi0PtGammaLeg[iCut]->Sumw2();
1660  fMCList[iCut]->Add(fHistoMCPi0PtGammaLeg[iCut]);
1661  fHistoMCPi0WOWeightPtGammaLeg[iCut] = new TH2F("MC_Pi0_WOWeights_PtGamma_Leg","MC_Pi0_WOWeights_PtGamma_Leg",nBinsPt, minPt, maxPt, 3, -0.5, 2.5);
1662  fMCList[iCut]->Add(fHistoMCPi0WOWeightPtGammaLeg[iCut]);
1663 
1664  fHistoMCPi0InAccPtGammaLeg[iCut] = new TH2F("MC_Pi0InAcc_PtGamma_Leg","MC_Pi0InAcc_PtGamma_Leg",nBinsPt, minPt, maxPt, 3, -0.5, 2.5);
1665  fHistoMCPi0InAccPtGammaLeg[iCut]->Sumw2();
1666  fMCList[iCut]->Add(fHistoMCPi0InAccPtGammaLeg[iCut]);
1667  fHistoMCPi0WOWeightInAccPtGammaLeg[iCut] = new TH2F("MC_Pi0WOWeightInAcc_PtGamma_Leg","MC_Pi0WOWeightInAcc_PtGamma_Leg",nBinsPt, minPt, maxPt, 3, -0.5, 2.5);
1668  fMCList[iCut]->Add(fHistoMCPi0WOWeightInAccPtGammaLeg[iCut]);
1669 
1670  fHistoMCSecPi0PtGamma1vsSource[iCut] = new TH2F("MC_SecPi0_PtGamma1_Source","MC_SecPi0_PtGamma1_Source",nBinsPt, minPt, maxPt,16,-0.5,15.5);
1671  fMCList[iCut]->Add(fHistoMCSecPi0PtGamma1vsSource[iCut]);
1672  fHistoMCSecPi0PtGamma2vsSource[iCut] = new TH2F("MC_SecPi0_PtGamma2_Source","MC_SecPi0_PtGamma2_Source",nBinsPt, minPt, maxPt,16,-0.5,15.5);
1673  fMCList[iCut]->Add(fHistoMCSecPi0PtGamma2vsSource[iCut]);
1674  fHistoMCSecPi0InAccPtGamma1vsSource[iCut] = new TH2F("MC_SecPi0InAcc_PtGamma1_Source","MC_SecPi0InAcc_PtGamma1_Source",nBinsPt, minPt, maxPt,16,-0.5,15.5);
1675  fMCList[iCut]->Add(fHistoMCSecPi0InAccPtGamma1vsSource[iCut]);
1676  fHistoMCSecPi0InAccPtGamma2vsSource[iCut] = new TH2F("MC_SecPi0InAcc_PtGamma2_Source","MC_SecPi0InAcc_PtGamma2_Source",nBinsPt, minPt, maxPt,16,-0.5,15.5);
1677  fMCList[iCut]->Add(fHistoMCSecPi0InAccPtGamma2vsSource[iCut]);
1678 
1679  if (fIsMC > 1){
1680  fHistoMCPi0WOWeightPtGammaLeg[iCut]->Sumw2();
1681  fHistoMCPi0WOWeightInAccPtGammaLeg[iCut]->Sumw2();
1682  fHistoMCSecPi0PtGamma1vsSource[iCut]->Sumw2();
1683  fHistoMCSecPi0PtGamma2vsSource[iCut]->Sumw2();
1684  fHistoMCSecPi0InAccPtGamma1vsSource[iCut]->Sumw2();
1685  fHistoMCSecPi0InAccPtGamma2vsSource[iCut]->Sumw2();
1686  }
1687  }
1688 
1689  // book additional MC QA histograms
1690  if (fDoMesonQA > 0){
1691  fHistoMCPi0PtY[iCut] = new TH2F("MC_Pi0_Pt_Y","MC_Pi0_Pt_Y",nBinsQAPt, minQAPt, maxQAPt,150,-1.5,1.5);
1692  fHistoMCPi0PtY[iCut]->Sumw2();
1694  fMCList[iCut]->Add(fHistoMCPi0PtY[iCut]);
1695  fHistoMCEtaPtY[iCut] = new TH2F("MC_Eta_Pt_Y","MC_Eta_Pt_Y",nBinsQAPt, minQAPt, maxQAPt,150,-1.5,1.5);
1696  fHistoMCEtaPtY[iCut]->Sumw2();
1698  fMCList[iCut]->Add(fHistoMCEtaPtY[iCut]);
1699  fHistoMCPi0PtAlpha[iCut] = new TH2F("MC_Pi0_Pt_Alpha","MC_Pi0_Pt_Alpha",nBinsQAPt, minQAPt, maxQAPt,200,-1,1);
1701  fMCList[iCut]->Add(fHistoMCPi0PtAlpha[iCut]);
1702  fHistoMCEtaPtAlpha[iCut] = new TH2F("MC_Eta_Pt_Alpha","MC_Eta_Pt_Alpha",nBinsQAPt, minQAPt, maxQAPt,200,-1,1);
1704  fMCList[iCut]->Add(fHistoMCEtaPtAlpha[iCut]);
1705 
1706  if (fIsMC == 2){
1707  fHistoMCPi0PtAlpha[iCut]->Sumw2();
1708  fHistoMCEtaPtAlpha[iCut]->Sumw2();
1709  }
1710  }
1711  }
1712 
1713  fTrueList[iCut] = new TList();
1714  fTrueList[iCut]->SetName(Form("%s_%s_%s_%s True histograms",cutstringEvent.Data(),cutstringPhoton.Data(),cutstringCalo.Data(),cutstringMeson.Data()));
1715  fTrueList[iCut]->SetOwner(kTRUE);
1716  fCutFolder[iCut]->Add(fTrueList[iCut]);
1717 
1718  if(!fDoLightOutput){
1719  fHistoTrueConvGammaPt[iCut] = new TH1F("ESD_TrueConvGamma_Pt","ESD_TrueConvGamma_Pt",nBinsPt, minPt, maxPt);
1720  fTrueList[iCut]->Add(fHistoTrueConvGammaPt[iCut]);
1721 
1722  fHistoDoubleCountTrueConvGammaRPt[iCut] = new TH2F("ESD_TrueDoubleCountConvGamma_R_Pt","ESD_TrueDoubleCountConvGamma_R_Pt",800,0,200,nBinsPt, minPt, maxPt);
1723  fTrueList[iCut]->Add(fHistoDoubleCountTrueConvGammaRPt[iCut]);
1724  fHistoMultipleCountTrueConvGamma[iCut] = new TH1F("ESD_TrueMultipleCountConvGamma","ESD_TrueMultipleCountConvGamma",10,1,11);
1725  fTrueList[iCut]->Add(fHistoMultipleCountTrueConvGamma[iCut]);
1726 
1727  fHistoCombinatorialPt[iCut] = new TH2F("ESD_TrueCombinatorial_Pt","ESD_TrueCombinatorial_Pt",nBinsPt, minPt, maxPt,16,-0.5,15.5);
1728  fHistoCombinatorialPt[iCut]->GetYaxis()->SetBinLabel( 1,"Elec+Elec");
1729  fHistoCombinatorialPt[iCut]->GetYaxis()->SetBinLabel( 2,"Elec+Pion");
1730  fHistoCombinatorialPt[iCut]->GetYaxis()->SetBinLabel( 3,"Elec+Kaon");
1731  fHistoCombinatorialPt[iCut]->GetYaxis()->SetBinLabel( 4,"Elec+Proton");
1732  fHistoCombinatorialPt[iCut]->GetYaxis()->SetBinLabel( 5,"Elec+Muon");
1733  fHistoCombinatorialPt[iCut]->GetYaxis()->SetBinLabel( 6,"Pion+Pion");
1734  fHistoCombinatorialPt[iCut]->GetYaxis()->SetBinLabel( 7,"Pion+Kaon");
1735  fHistoCombinatorialPt[iCut]->GetYaxis()->SetBinLabel( 8,"Pion+Proton");
1736  fHistoCombinatorialPt[iCut]->GetYaxis()->SetBinLabel( 9,"Pion+Muon");
1737  fHistoCombinatorialPt[iCut]->GetYaxis()->SetBinLabel(10,"Kaon+Kaon");
1738  fHistoCombinatorialPt[iCut]->GetYaxis()->SetBinLabel(11,"Kaon+Proton");
1739  fHistoCombinatorialPt[iCut]->GetYaxis()->SetBinLabel(12,"Kaon+Muon");
1740  fHistoCombinatorialPt[iCut]->GetYaxis()->SetBinLabel(13,"Proton+Proton");
1741  fHistoCombinatorialPt[iCut]->GetYaxis()->SetBinLabel(14,"Proton+Muon");
1742  fHistoCombinatorialPt[iCut]->GetYaxis()->SetBinLabel(15,"Muon+Muon");
1743  fHistoCombinatorialPt[iCut]->GetYaxis()->SetBinLabel(16,"Rest");
1744  fTrueList[iCut]->Add(fHistoCombinatorialPt[iCut]);
1745 
1746  fHistoTruePrimaryConvGammaPt[iCut] = new TH1F("ESD_TruePrimaryConvGamma_Pt","ESD_TruePrimaryConvGamma_Pt",nBinsPt, minPt, maxPt);
1747  fTrueList[iCut]->Add(fHistoTruePrimaryConvGammaPt[iCut]);
1748  fHistoTrueSecondaryConvGammaPt[iCut] = new TH2F("ESD_TrueSecondaryConvGamma_Pt","ESD_TrueSecondaryConvGamma_Pt",nBinsPt, minPt, maxPt,4,-0.5,3.5);
1749  fHistoTrueSecondaryConvGammaPt[iCut]->GetYaxis()->SetBinLabel(1,"K0s");
1750  fHistoTrueSecondaryConvGammaPt[iCut]->GetYaxis()->SetBinLabel(2,"K0l");
1751  fHistoTrueSecondaryConvGammaPt[iCut]->GetYaxis()->SetBinLabel(3,"Lambda");
1752  fHistoTrueSecondaryConvGammaPt[iCut]->GetYaxis()->SetBinLabel(4,"rest");
1753  fTrueList[iCut]->Add(fHistoTrueSecondaryConvGammaPt[iCut]);
1754  fHistoTrueSecondaryConvGammaMCPt[iCut] = new TH2F("ESD_TrueSecondaryConvGamma_MCPt","ESD_TrueSecondaryConvGamma_MCPt",nBinsPt, minPt, maxPt,4,-0.5,3.5);
1755  fHistoTrueSecondaryConvGammaMCPt[iCut]->GetYaxis()->SetBinLabel(1,"K0s");
1756  fHistoTrueSecondaryConvGammaMCPt[iCut]->GetYaxis()->SetBinLabel(2,"K0l");
1757  fHistoTrueSecondaryConvGammaMCPt[iCut]->GetYaxis()->SetBinLabel(3,"Lambda");
1758  fHistoTrueSecondaryConvGammaMCPt[iCut]->GetYaxis()->SetBinLabel(4,"rest");
1759  fTrueList[iCut]->Add(fHistoTrueSecondaryConvGammaMCPt[iCut]);
1760 
1761  fHistoTruePrimaryConvGammaESDPtMCPt[iCut] = new TH2F("ESD_TruePrimaryConvGammaESD_PtMCPt", "ESD_TruePrimaryConvGammaESD_PtMCPt",nBinsPt, minPt, maxPt,nBinsPt, minPt, maxPt);
1763 
1764  fHistoTrueSecondaryConvGammaFromXFromK0sMCPtESDPt[iCut] = new TH2F("ESD_TrueSecondaryConvGammaFromXFromK0sESD_MCPtPt","ESD_TrueSecondaryConvGammaFromXFromK0sESD_MCPtPt",nBinsPt, minPt, maxPt,nBinsPt, minPt, maxPt);
1766  fHistoTrueSecondaryConvGammaFromXFromK0lMCPtESDPt[iCut] = new TH2F("ESD_TrueSecondaryConvGammaFromXFromK0lESD_MCPtPt","ESD_TrueSecondaryConvGammaFromXFromK0lESD_MCPtPt",nBinsPt, minPt, maxPt,nBinsPt, minPt, maxPt);
1768  fHistoTrueSecondaryConvGammaFromXFromLambdaMCPtESDPt[iCut] = new TH2F("ESD_TrueSecondaryConvGammaFromXFromLambdaESD_MCPtPt","ESD_TrueSecondaryConvGammaFromXFromLambdaESD_MCPtPt",nBinsPt, minPt, maxPt,nBinsPt, minPt, maxPt);
1770  }
1771 
1772  fHistoTrueClusGammaPt[iCut] = new TH1F("TrueClusGamma_Pt","ESD_TrueClusGamma_Pt",nBinsClusterPt, minClusterPt, maxClusterPt);
1773  fClusterOutputList[iCut]->Add(fHistoTrueClusGammaPt[iCut]);
1774  if(!fDoLightOutput){
1775  fHistoTruePrimaryClusGammaPt[iCut] = new TH1F("TruePrimaryClusGamma_Pt","ESD_TruePrimaryClusGamma_Pt",nBinsClusterPt, minClusterPt, maxClusterPt);
1777  fHistoTruePrimaryClusGammaESDPtMCPt[iCut] = new TH2F("TruePrimaryClusGamma_Pt_MCPt","ESD_TruePrimaryClusGamma_Pt_MCPt",nBinsClusterPt, minClusterPt, maxClusterPt, nBinsClusterPt, minClusterPt, maxClusterPt);
1779  fHistoTrueClusElectronPt[iCut] = new TH1F("TrueClusElectron_Pt","TrueElectronGamma_Pt",nBinsClusterPt, minClusterPt, maxClusterPt);
1780  fClusterOutputList[iCut]->Add(fHistoTrueClusElectronPt[iCut]);
1781  fHistoTrueClusConvGammaPt[iCut] = new TH1F("TrueClusConvGamma_Pt","TrueClusConvGamma_Pt",nBinsClusterPt, minClusterPt, maxClusterPt);
1783  fHistoTruePrimaryClusConvGammaPt[iCut] = new TH1F("TruePrimaryClusConvGamma_Pt","ESD_TruePrimaryClusConvGamma_Pt",nBinsClusterPt, minClusterPt, maxClusterPt);
1785  fHistoTruePrimaryClusConvGammaESDPtMCPt[iCut] = new TH2F("TruePrimaryClusConvGamma_Pt_MCPt","ESD_TruePrimaryClusConvGamma_Pt_MCPt",nBinsClusterPt, minClusterPt, maxClusterPt, nBinsClusterPt, minClusterPt, maxClusterPt);
1787 
1788  fHistoTrueSecondaryClusGammaPt[iCut] = new TH1F("TrueSecondaryClusGamma_Pt","ESD_TrueSecondaryClusGamma_Pt",nBinsClusterPt, minClusterPt, maxClusterPt);
1790  fHistoTrueSecondaryClusGammaFromK0sPt[iCut] = new TH1F("TrueSecondaryClusGammaFromK0s_Pt","ESD_TrueSecondaryClusGammaFromK0s_Pt",nBinsClusterPt, minClusterPt, maxClusterPt);
1792  fHistoTrueSecondaryClusGammaFromK0lPt[iCut] = new TH1F("TrueSecondaryClusGammaFromK0l_Pt","ESD_TrueSecondaryClusGammaFromK0l_Pt",nBinsClusterPt, minClusterPt, maxClusterPt);
1794  fHistoTrueSecondaryClusGammaFromLambdaPt[iCut] = new TH1F("TrueSecondaryClusGammaFromLambda_Pt","ESD_TrueSecondaryClusGammaFromLambda_Pt",nBinsClusterPt, minClusterPt, maxClusterPt);
1796  }
1797 
1798  fHistoDoubleCountTrueClusterGammaPt[iCut] = new TH2F("TrueDoubleCountClusterGamma_Pt","TrueDoubleCountClusterGamma_Pt",nBinsClusterPt, minClusterPt, maxClusterPt,2,0,2);
1800  fHistoMultipleCountTrueClusterGamma[iCut] = new TH1F("TrueMultipleCountClusterGamma","TrueMultipleCountClusterGamma",10,1,11);
1802  if(!fDoLightOutput) {
1803  fHistoTrueNLabelsInClusPt[iCut] = new TH2F("TrueNLabelsInClus_Pt","TrueNLabelsInClus_Pt",100,-0.5,99.5,nBinsClusterPt, minClusterPt, maxClusterPt);
1805  fHistoTrueClusGammaEM02[iCut] = new TH2F("TrueClusGammaEM02","TrueClusGammaEM02",nBinsClusterPt, minClusterPt, maxClusterPt,400,0,5);
1806  fClusterOutputList[iCut]->Add(fHistoTrueClusGammaEM02[iCut]);
1807  fHistoTrueClusPi0EM02[iCut] = new TH2F("TrueClusPi0EM02","TrueClusPi0EM02",nBinsClusterPt, minClusterPt, maxClusterPt,400,0,5);
1808  fClusterOutputList[iCut]->Add(fHistoTrueClusPi0EM02[iCut]);
1809  fHistoTrueClusEMNonLeadingPt[iCut] = new TH1F("TrueClusEMNonLeading_Pt","TrueClusEMNonLeading_Pt",nBinsClusterPt, minClusterPt, maxClusterPt);
1811  }
1812 
1813 
1814  if (fIsMC > 1){
1815  if(!fDoLightOutput){
1816  fHistoTrueConvGammaPt[iCut]->Sumw2();
1817  fHistoDoubleCountTrueConvGammaRPt[iCut]->Sumw2();
1818  fHistoMultipleCountTrueConvGamma[iCut]->Sumw2();
1819  fHistoCombinatorialPt[iCut]->Sumw2();
1820  fHistoTruePrimaryConvGammaPt[iCut]->Sumw2();
1821  fHistoTrueSecondaryConvGammaPt[iCut]->Sumw2();
1822  fHistoTrueSecondaryConvGammaMCPt[iCut]->Sumw2();
1823  fHistoTruePrimaryConvGammaESDPtMCPt[iCut]->Sumw2();
1827  }
1828  fHistoTrueClusGammaPt[iCut]->Sumw2();
1829  fHistoDoubleCountTrueClusterGammaPt[iCut]->Sumw2();
1830  fHistoMultipleCountTrueClusterGamma[iCut]->Sumw2();
1831  if(!fDoLightOutput) {
1832  fHistoTruePrimaryClusGammaPt[iCut]->Sumw2();
1833  fHistoTruePrimaryClusGammaESDPtMCPt[iCut]->Sumw2();
1834  fHistoTrueNLabelsInClusPt[iCut]->Sumw2();
1835  fHistoTrueClusGammaEM02[iCut]->Sumw2();
1836  fHistoTrueClusPi0EM02[iCut]->Sumw2();
1837  fHistoTrueClusElectronPt[iCut]->Sumw2();
1838  fHistoTrueClusConvGammaPt[iCut]->Sumw2();
1839  fHistoTruePrimaryClusConvGammaPt[iCut]->Sumw2();
1841  fHistoTrueClusEMNonLeadingPt[iCut]->Sumw2();
1842  fHistoTrueSecondaryClusGammaPt[iCut]->Sumw2();
1846  }
1847  }
1848 
1849  if (fDoPhotonQA > 0){
1850  fHistoTrueConvGammaEta[iCut] = new TH1F("ESD_TrueConvGamma_Eta","ESD_TrueConvGamma_Eta",2000,-2,2);
1851  fTrueList[iCut]->Add(fHistoTrueConvGammaEta[iCut]);
1852  }
1853 
1854 // fHistoTruePi0NonLinearity[iCut] = new TH2F("TruePi0: E_truth / E_rec Vs E_rec","TruePi0: E_truth / E_rec Vs E_rec",700,0,35,200,0,2);
1855 // fClusterOutputList[iCut]->Add(fHistoTruePi0NonLinearity[iCut]);
1856 // fHistoTrueEtaNonLinearity[iCut] = new TH2F("TrueEta: E_truth / E_rec Vs E_rec","TrueEta: E_truth / E_rec Vs E_rec",700,0,35,200,0,2);
1857 // fClusterOutputList[iCut]->Add(fHistoTrueEtaNonLinearity[iCut]);
1858 
1859  if(!fDoLightOutput){
1860  fHistoTruePi0InvMassECalib[iCut] = new TH2F("True_Pi0_InvMass_E_Calib","True_Pi0_InvMass_E_Calib",800,0,0.8,nBinsPt, minPt, maxPt);
1861  fHistoTruePi0InvMassECalib[iCut]->SetXTitle("M_{inv}(GeV/c^{2})");
1862  fHistoTruePi0InvMassECalib[iCut]->SetYTitle("E_{cluster}(GeV)");
1863  fESDList[iCut]->Add(fHistoTruePi0InvMassECalib[iCut]);
1864  fHistoTruePi0PureGammaInvMassECalib[iCut] = new TH2F("True_Pi0PureGamma_InvMass_E_Calib","True_Pi0PureGamma_InvMass_E_Calib",800,0,0.8,nBinsPt, minPt, maxPt);
1865  fHistoTruePi0PureGammaInvMassECalib[iCut]->SetXTitle("M_{inv}(GeV/c^{2})");
1866  fHistoTruePi0PureGammaInvMassECalib[iCut]->SetYTitle("E_{cluster}(GeV)");
1868  }
1869 
1870  if (fDoClusterQA > 0){
1871  fHistoTrueClusConvGammaFullyPt[iCut] = new TH1F("TrueClusConvGammaFullyContained_Pt","TrueClusConvGammaFullyContained_Pt",nBinsClusterPt, minClusterPt, maxClusterPt);
1873  fHistoTrueClusMergedGammaPt[iCut] = new TH1F("TrueClusMergedGamma_Pt","TrueClusMergedGamma_Pt",nBinsClusterPt, minClusterPt, maxClusterPt);
1875  fHistoTrueClusMergedPartConvGammaPt[iCut] = new TH1F("TrueClusMergedPartConvGamma_Pt","TrueClusMergedPartConvGamma_Pt",nBinsClusterPt, minClusterPt, maxClusterPt);
1877  fHistoTrueClusDalitzPt[iCut] = new TH1F("TrueClusDalitz_Pt","TrueClusDalitz_Pt",nBinsClusterPt, minClusterPt, maxClusterPt);
1878  fClusterOutputList[iCut]->Add(fHistoTrueClusDalitzPt[iCut]);
1879  fHistoTrueClusDalitzMergedPt[iCut] = new TH1F("TrueClusDalitzMerged_Pt","TrueClusDalitzMerged_Pt",nBinsClusterPt, minClusterPt, maxClusterPt);
1881  fHistoTrueClusPhotonFromElecMotherPt[iCut] = new TH1F("TrueClusPhotonFromElecMother_Pt","TrueClusPhotonFromElecMother_Pt",nBinsClusterPt, minClusterPt, maxClusterPt);
1883  fHistoTrueClusShowerPt[iCut] = new TH1F("TrueClusShower_Pt","TrueClusShower_Pt",nBinsClusterPt, minClusterPt, maxClusterPt);
1884  fClusterOutputList[iCut]->Add(fHistoTrueClusShowerPt[iCut]);
1885  fHistoTrueClusSubLeadingPt[iCut] = new TH1F("TrueClusSubleading_Pt","TrueClusSubleading_Pt",nBinsClusterPt, minClusterPt, maxClusterPt);
1887  fHistoTrueClusNMothers[iCut] = new TH1F("TrueClusNParticles","TrueClusNParticles",20,0,20);
1888  fClusterOutputList[iCut]->Add(fHistoTrueClusNMothers[iCut]);
1889  if (fIsMC > 1){
1890  fHistoTrueClusConvGammaFullyPt[iCut]->Sumw2();
1891  fHistoTrueClusMergedGammaPt[iCut]->Sumw2();
1892  fHistoTrueClusMergedPartConvGammaPt[iCut]->Sumw2();
1893  fHistoTrueClusDalitzPt[iCut]->Sumw2();
1894  fHistoTrueClusDalitzMergedPt[iCut]->Sumw2();
1895  fHistoTrueClusPhotonFromElecMotherPt[iCut]->Sumw2();
1896  fHistoTrueClusShowerPt[iCut]->Sumw2();
1897  fHistoTrueClusSubLeadingPt[iCut]->Sumw2();
1898  fHistoTrueClusNMothers[iCut]->Sumw2();
1899  }
1900  }
1901 
1902  if(fDoMesonAnalysis){
1903  fHistoTruePi0InvMassPt[iCut] = new TH2F("ESD_TruePi0_InvMass_Pt","ESD_TruePi0_InvMass_Pt",800,0,0.8,nBinsPt, minPt, maxPt);
1904  fHistoTruePi0InvMassPt[iCut]->SetXTitle("M_{inv,#pi^{0}}(GeV/c^{2})");
1905  fHistoTruePi0InvMassPt[iCut]->SetYTitle("#pi^{0}p_{T}(GeV/c)");
1906  fTrueList[iCut]->Add(fHistoTruePi0InvMassPt[iCut]);
1907  fHistoTrueEtaInvMassPt[iCut] = new TH2F("ESD_TrueEta_InvMass_Pt","ESD_TrueEta_InvMass_Pt",800,0,0.8,nBinsPt, minPt, maxPt);
1908  fHistoTrueEtaInvMassPt[iCut]->SetXTitle("M_{inv,#eta}(GeV/c^{2})");
1909  fHistoTrueEtaInvMassPt[iCut]->SetYTitle("#eta p_{T}(GeV/c)");
1910  fTrueList[iCut]->Add(fHistoTrueEtaInvMassPt[iCut]);
1911  fHistoTruePi0MatchedInvMassPt[iCut] = new TH2F("ESD_TruePi0_Matched_InvMass_Pt","ESD_TruePi0_Matched_InvMass_Pt",800,0,0.8,nBinsPt, minPt, maxPt);
1912  fHistoTruePi0MatchedInvMassPt[iCut]->SetXTitle("M_{inv,#pi^{0}}(GeV/c^{2})");
1913  fHistoTruePi0MatchedInvMassPt[iCut]->SetYTitle("#pi^{0}p_{T}(GeV/c)");
1914  fTrueList[iCut]->Add(fHistoTruePi0MatchedInvMassPt[iCut]);
1915  fHistoTrueEtaMatchedInvMassPt[iCut] = new TH2F("ESD_TrueEta_Matched_InvMass_Pt","ESD_TrueEta_Matched_InvMass_Pt",800,0,0.8,nBinsPt, minPt, maxPt);
1916  fHistoTrueEtaMatchedInvMassPt[iCut]->SetXTitle("M_{inv,#eta}(GeV/c^{2})");
1917  fHistoTrueEtaMatchedInvMassPt[iCut]->SetYTitle("#eta p_{T}(GeV/c)");
1918  fTrueList[iCut]->Add(fHistoTrueEtaMatchedInvMassPt[iCut]);
1919 
1920  fHistoDoubleCountTruePi0InvMassPt[iCut] = new TH2F("ESD_TrueDoubleCountPi0_InvMass_Pt","ESD_TrueDoubleCountPi0_InvMass_Pt",800,0,0.8,nBinsPt, minPt, maxPt);
1921  fTrueList[iCut]->Add(fHistoDoubleCountTruePi0InvMassPt[iCut]);
1922  fHistoMultipleCountTruePi0[iCut] = new TH1F("ESD_TrueMultipleCountPi0","ESD_TrueMultipleCountPi0",10,1,11);
1923  fTrueList[iCut]->Add(fHistoMultipleCountTruePi0[iCut]);
1924  fHistoDoubleCountTrueEtaInvMassPt[iCut] = new TH2F("ESD_TrueDoubleCountEta_InvMass_Pt","ESD_TrueDoubleCountEta_InvMass_Pt",800,0,0.8,nBinsPt, minPt, maxPt);
1925  fTrueList[iCut]->Add(fHistoDoubleCountTrueEtaInvMassPt[iCut]);
1926  fHistoMultipleCountTrueEta[iCut] = new TH1F("ESD_TrueMultipleCountEta","ESD_TrueMultipleCountEta",10,1,11);
1927  fTrueList[iCut]->Add(fHistoMultipleCountTrueEta[iCut]);
1928 
1929  fHistoTruePrimaryPi0InvMassPt[iCut] = new TH2F("ESD_TruePrimaryPi0_InvMass_Pt", "ESD_TruePrimaryPi0_InvMass_Pt", 800,0,0.8,nBinsPt, minPt, maxPt);
1930  fHistoTruePrimaryPi0InvMassPt[iCut]->SetXTitle("M_{inv,prim #pi^{0}}(GeV/c^{2})");
1931  fHistoTruePrimaryPi0InvMassPt[iCut]->SetYTitle("#pi^{0}p_{T}(GeV/c)");
1932  fHistoTruePrimaryPi0InvMassPt[iCut]->Sumw2();
1933  fTrueList[iCut]->Add(fHistoTruePrimaryPi0InvMassPt[iCut]);
1934 
1935  fHistoTruePrimaryEtaInvMassPt[iCut] = new TH2F("ESD_TruePrimaryEta_InvMass_Pt", "ESD_TruePrimaryEta_InvMass_Pt", 800,0,0.8,nBinsPt, minPt, maxPt);
1936  fHistoTruePrimaryEtaInvMassPt[iCut]->SetXTitle("M_{inv,prim #eta}(GeV/c^{2})");
1937  fHistoTruePrimaryEtaInvMassPt[iCut]->SetYTitle("#eta p_{T}(GeV/c)");
1938  fHistoTruePrimaryEtaInvMassPt[iCut]->Sumw2();
1939  fTrueList[iCut]->Add(fHistoTruePrimaryEtaInvMassPt[iCut]);
1940 
1941  fHistoTruePrimaryPi0W0WeightingInvMassPt[iCut] = new TH2F("ESD_TruePrimaryPi0W0Weights_InvMass_Pt", "ESD_TruePrimaryPi0W0Weights_InvMass_Pt", 800,0,0.8,nBinsPt, minPt, maxPt);
1942  fHistoTruePrimaryPi0W0WeightingInvMassPt[iCut]->SetXTitle("M_{inv,prim #pi^{0}}(GeV/c^{2})");
1943  fHistoTruePrimaryPi0W0WeightingInvMassPt[iCut]->SetYTitle("#pi^{0}p_{T}(GeV/c)");
1945 
1946  fHistoTruePrimaryEtaW0WeightingInvMassPt[iCut] = new TH2F("ESD_TruePrimaryEtaW0Weights_InvMass_Pt", "ESD_TruePrimaryEtaW0Weights_InvMass_Pt", 800,0,0.8,nBinsPt, minPt, maxPt);
1947  fHistoTruePrimaryEtaW0WeightingInvMassPt[iCut]->SetXTitle("M_{inv,prim #eta}(GeV/c^{2})");
1948  fHistoTruePrimaryEtaW0WeightingInvMassPt[iCut]->SetYTitle("#eta p_{T}(GeV/c)");
1950 
1951  fProfileTruePrimaryPi0WeightsInvMassPt[iCut] = new TProfile2D("ESD_TruePrimaryPi0Weights_InvMass_Pt", "ESD_TruePrimaryPi0Weights_InvMass_Pt", 800,0,0.8,nBinsPt, minPt, maxPt);
1952  fProfileTruePrimaryPi0WeightsInvMassPt[iCut]->SetXTitle("M_{inv,prim #pi^{0}}(GeV/c^{2})");
1953  fProfileTruePrimaryPi0WeightsInvMassPt[iCut]->SetYTitle("#pi^{0}p_{T}(GeV/c)");
1956  fProfileTruePrimaryEtaWeightsInvMassPt[iCut] = new TProfile2D("ESD_TruePrimaryEtaWeights_InvMass_Pt", "ESD_TruePrimaryEtaWeights_InvMass_Pt", 800,0,0.8,nBinsPt, minPt, maxPt);
1957  fProfileTruePrimaryEtaWeightsInvMassPt[iCut]->SetXTitle("M_{inv,prim #eta}(GeV/c^{2})");
1958  fProfileTruePrimaryEtaWeightsInvMassPt[iCut]->SetYTitle("#eta p_{T}(GeV/c)");
1961 
1962  fHistoTrueSecondaryPi0InvMassPt[iCut] = new TH2F("ESD_TrueSecondaryPi0_InvMass_Pt", "ESD_TrueSecondaryPi0_InvMass_Pt", 800,0,0.8,nBinsPt, minPt, maxPt);
1963  fHistoTrueSecondaryPi0InvMassPt[iCut]->SetXTitle("M_{inv,sec #pi^{0}}(GeV/c^{2})");
1964  fHistoTrueSecondaryPi0InvMassPt[iCut]->SetYTitle("#pi^{0}p_{T}(GeV/c)");
1965  fHistoTrueSecondaryPi0InvMassPt[iCut]->Sumw2();
1966  fTrueList[iCut]->Add(fHistoTrueSecondaryPi0InvMassPt[iCut]);
1967 
1968  fHistoTrueSecondaryPi0FromK0sInvMassPt[iCut] = new TH2F("ESD_TrueSecondaryPi0FromK0s_InvMass_Pt","ESD_TrueSecondaryPi0FromK0s_InvMass_Pt",800,0,0.8,nBinsPt, minPt, maxPt);
1969  fHistoTrueSecondaryPi0FromK0sInvMassPt[iCut]->SetXTitle("M_{inv,#pi^{0}from K^{0}_{S}}(GeV/c^{2})");
1970  fHistoTrueSecondaryPi0FromK0sInvMassPt[iCut]->SetYTitle("#pi^{0}p_{T}(GeV/c)");
1973  fHistoTrueSecondaryPi0FromK0lInvMassPt[iCut] = new TH2F("ESD_TrueSecondaryPi0FromK0l_InvMass_Pt","ESD_TrueSecondaryPi0FromK0l_InvMass_Pt",800,0,0.8,nBinsPt, minPt, maxPt);
1974  fHistoTrueSecondaryPi0FromK0lInvMassPt[iCut]->SetXTitle("M_{inv,#pi^{0}from K^{0}_{L}}(GeV/c^{2})");
1975  fHistoTrueSecondaryPi0FromK0lInvMassPt[iCut]->SetYTitle("#pi^{0}p_{T}(GeV/c)");
1978  fHistoTrueSecondaryPi0FromEtaInvMassPt[iCut] = new TH2F("ESD_TrueSecondaryPi0FromEta_InvMass_Pt","ESD_TrueSecondaryPi0FromEta_InvMass_Pt",800,0,0.8,nBinsPt, minPt, maxPt);
1979  fHistoTrueSecondaryPi0FromEtaInvMassPt[iCut]->SetXTitle("M_{inv,#pi^{0}from #eta}(GeV/c^{2})");
1980  fHistoTrueSecondaryPi0FromEtaInvMassPt[iCut]->SetYTitle("#pi^{0}p_{T}(GeV/c)");
1982  fHistoTrueSecondaryPi0FromLambdaInvMassPt[iCut] = new TH2F("ESD_TrueSecondaryPi0FromLambda_InvMass_Pt","ESD_TrueSecondaryPi0FromLambda_InvMass_Pt",800,0,0.8,nBinsPt, minPt, maxPt);
1983  fHistoTrueSecondaryPi0FromLambdaInvMassPt[iCut]->SetXTitle("M_{inv,#pi^{0}from #Lambda}(GeV/c^{2})");
1984  fHistoTrueSecondaryPi0FromLambdaInvMassPt[iCut]->SetYTitle("#pi^{0}p_{T}(GeV/c)");
1986 
1987  if(!fDoLightOutput) {
1988  fHistoTruePrimaryPi0PhotonPairPtconv[iCut] = new TH2F("ESD_TruePrimaryPi0_InvMass_PtConv","",400,0,0.4,nBinsPt, minPt, maxPt);
1989  fHistoTruePrimaryPi0PhotonPairPtconv[iCut]->SetXTitle("M_{inv,#pi^{0}}(GeV/c^{2})");
1990  fHistoTruePrimaryPi0PhotonPairPtconv[iCut]->SetYTitle("#gamma^{conv}p_{T}(GeV/c)");
1991  fHistoTruePrimaryPi0PhotonPairPtconv[iCut]->Sumw2();
1993 
1994  fHistoTruePrimaryPi0W0WeightsPhotonPairPtconv[iCut] = new TH2F("ESD_TruePrimaryPi0W0Weights_InvMass_Pt","",400,0,0.4,nBinsPt, minPt, maxPt);
1995  fHistoTruePrimaryPi0W0WeightsPhotonPairPtconv[iCut]->SetXTitle("M_{inv,#pi^{0}}(GeV/c^{2})");
1996  fHistoTruePrimaryPi0W0WeightsPhotonPairPtconv[iCut]->SetYTitle("#gamma^{conv}p_{T}(GeV/c)");
1998 
1999  fHistoTrueSecondaryPi0PhotonPairPtconv[iCut] = new TH2F("ESD_TrueSecondaryPi0_InvMass_PtConv","",400,0,0.4,nBinsPt, minPt, maxPt);
2000  fHistoTrueSecondaryPi0PhotonPairPtconv[iCut]->SetXTitle("M_{inv,#pi^{0}}(GeV/c^{2})");
2001  fHistoTrueSecondaryPi0PhotonPairPtconv[iCut]->SetYTitle("#gamma^{conv}p_{T}(GeV/c)");
2004 
2005  fHistoTrueSecondaryPi0FromK0sPhotonPairPtconv[iCut] = new TH2F("ESD_TrueSecondaryPi0FromK0s_InvMass_PtConv","",400,0,0.4,nBinsPt, minPt, maxPt);
2006  fHistoTrueSecondaryPi0FromK0sPhotonPairPtconv[iCut]->SetXTitle("M_{inv,#pi^{0}}(GeV/c^{2})");
2007  fHistoTrueSecondaryPi0FromK0sPhotonPairPtconv[iCut]->SetYTitle("#gamma^{conv}p_{T}(GeV/c)");
2010 
2011  fHistoTrueSecondaryPi0FromK0lPhotonPairPtconv[iCut] = new TH2F("ESD_TrueSecondaryPi0FromK0l_InvMass_PtConv","",400,0,0.4,nBinsPt, minPt, maxPt);
2012  fHistoTrueSecondaryPi0FromK0lPhotonPairPtconv[iCut]->SetXTitle("M_{inv,#pi^{0}}(GeV/c^{2})");
2013  fHistoTrueSecondaryPi0FromK0lPhotonPairPtconv[iCut]->SetYTitle("#gamma^{conv}p_{T}(GeV/c)");
2016 
2017  fHistoTrueSecondaryPi0FromLambdaPhotonPairPtconv[iCut]= new TH2F("ESD_TrueSecondaryPi0FromLambda_InvMass_PtConv","",400,0,0.4,nBinsPt, minPt, maxPt);
2018  fHistoTrueSecondaryPi0FromLambdaPhotonPairPtconv[iCut]->SetXTitle("M_{inv,#pi^{0}}(GeV/c^{2})");
2019  fHistoTrueSecondaryPi0FromLambdaPhotonPairPtconv[iCut]->SetYTitle("#gamma^{conv}p_{T}(GeV/c)");
2022 
2023  fHistoTruePrimaryPi0DCPtconv[iCut] = new TH1F("ESD_TruePrimaryPi0DC_PtConv","",nBinsPt, minPt, maxPt);
2024  fHistoTruePrimaryPi0DCPtconv[iCut]->SetXTitle("#gamma^{conv}p_{T}(GeV/c)");
2025  fHistoTruePrimaryPi0DCPtconv[iCut]->Sumw2();
2026  fTrueList[iCut]->Add(fHistoTruePrimaryPi0DCPtconv[iCut]);
2027 
2028  fHistoTrueSecondaryPi0DCPtconvSource[iCut] = new TH2F("ESD_TrueSecondaryPi0DC_PtConv_Source","",nBinsPt, minPt, maxPt, 4, -0.5,3.5);
2029  fHistoTrueSecondaryPi0DCPtconvSource[iCut]->SetXTitle("#gamma^{conv}p_{T}(GeV/c)");
2030  fHistoTrueSecondaryPi0DCPtconvSource[iCut]->SetYTitle("sec. source");
2031  fHistoTrueSecondaryPi0DCPtconvSource[iCut]->Sumw2();
2033 
2034  fHistoTruePrimaryPi0MissingPtconv[iCut] = new TH1F("ESD_TruePrimaryPi0Missing_PtConv","",nBinsPt, minPt, maxPt);
2035  fHistoTruePrimaryPi0MissingPtconv[iCut]->SetXTitle("#gamma^{conv}p_{T}(GeV/c)");
2036  fHistoTruePrimaryPi0MissingPtconv[iCut]->Sumw2();
2037  fTrueList[iCut]->Add(fHistoTruePrimaryPi0MissingPtconv[iCut]);
2038 
2039  fHistoTrueSecondaryPi0MissingPtconvSource[iCut] = new TH2F("ESD_TrueSecondaryPi0Missing_PtConv_Source","",nBinsPt, minPt, maxPt, 4, -0.5,3.5);
2040  fHistoTrueSecondaryPi0MissingPtconvSource[iCut]->SetXTitle("#gamma^{conv}p_{T}(GeV/c)");
2041  fHistoTrueSecondaryPi0MissingPtconvSource[iCut]->SetYTitle("sec. source");
2044 
2045  // put proper summing for JJ weights
2046  if (fIsMC > 1){
2048  }
2049  }
2050 
2051  if (fIsMC > 1){
2052  fHistoTruePi0InvMassPt[iCut]->Sumw2();
2053  fHistoTrueEtaInvMassPt[iCut]->Sumw2();
2054  fHistoTruePi0MatchedInvMassPt[iCut]->Sumw2();
2055  fHistoTrueEtaMatchedInvMassPt[iCut]->Sumw2();
2056  fHistoDoubleCountTruePi0InvMassPt[iCut]->Sumw2();
2057  fHistoMultipleCountTruePi0[iCut]->Sumw2();
2058  fHistoDoubleCountTrueEtaInvMassPt[iCut]->Sumw2();
2059  fHistoMultipleCountTrueEta[iCut]->Sumw2();
2064  }
2065 
2066  if (fDoMesonQA > 0){
2067  if (fIsMC < 2){
2068  fHistoTruePi0CaloPhotonInvMassPt[iCut] = new TH2F("ESD_TruePi0CaloPhoton_InvMass_Pt","ESD_TruePi0CaloPhoton_InvMass_Pt",800,0,0.8,nBinsPt, minPt, maxPt);
2069  fHistoTruePi0CaloPhotonInvMassPt[iCut]->SetXTitle("M_{inv,#pi^{0}}(GeV/c^{2}) #gamma #gamma");
2070  fHistoTruePi0CaloPhotonInvMassPt[iCut]->SetYTitle("#pi^{0}p_{T}(GeV/c)");
2071  fTrueList[iCut]->Add(fHistoTruePi0CaloPhotonInvMassPt[iCut]);
2072 
2073  fHistoTrueEtaCaloPhotonInvMassPt[iCut] = new TH2F("ESD_TrueEtaCaloPhoton_InvMass_Pt","ESD_TrueEtaCaloPhoton_InvMass_Pt",800,0,0.8,nBinsPt, minPt, maxPt);
2074  fHistoTrueEtaCaloPhotonInvMassPt[iCut]->SetXTitle("M_{inv,#eta}(GeV/c^{2}) #gamma #gamma");
2075  fHistoTrueEtaCaloPhotonInvMassPt[iCut]->SetYTitle("#eta p_{T}(GeV/c)");
2076  fTrueList[iCut]->Add(fHistoTrueEtaCaloPhotonInvMassPt[iCut]);
2077 
2078  fHistoTruePi0CaloConvertedPhotonInvMassPt[iCut] = new TH2F("ESD_TruePi0CaloConvertedPhoton_InvMass_Pt","ESD_TruePi0CaloConvertedPhoton_InvMass_Pt",800,0,0.8,nBinsPt, minPt, maxPt);
2079  fHistoTruePi0CaloConvertedPhotonInvMassPt[iCut]->SetXTitle("M_{inv,#pi^{0}}(GeV/c^{2}) #gamma #gamma_{conv}");
2080  fHistoTruePi0CaloConvertedPhotonInvMassPt[iCut]->SetYTitle("#pi^{0}p_{T}(GeV/c)");
2082 
2083  fHistoTruePi0CaloConvertedPhotonMatchedInvMassPt[iCut] = new TH2F("ESD_TruePi0CaloConvertedPhotonMatched_InvMass_Pt","ESD_TruePi0CaloConvertedPhotonMatched_InvMass_Pt",800,0,0.8,nBinsPt, minPt, maxPt);
2084  fHistoTruePi0CaloConvertedPhotonMatchedInvMassPt[iCut]->SetXTitle("M_{inv,#pi^{0}}(GeV/c^{2}) #gamma #gamma_{conv,matched}");
2085  fHistoTruePi0CaloConvertedPhotonMatchedInvMassPt[iCut]->SetYTitle("#pi^{0}p_{T}(GeV/c)");
2087 
2088  fHistoTruePi0CaloConvPhotonConvRPt[iCut] = new TH2F("ESD_TruePi0CaloConvPhoton_ConvR_PtE","ESD_TruePi0CaloConvPhoton_ConvR_PtE",920,0,460,nBinsPt, minPt, maxPt);
2089  fHistoTruePi0CaloConvPhotonConvRPt[iCut]->SetXTitle("R_{conv,e_{calo}}(cm)");
2090  fHistoTruePi0CaloConvPhotonConvRPt[iCut]->SetYTitle("e^{#pm}p_{T}(GeV/c)");
2092 
2093  fHistoTruePi0CaloConvPhotonConvRAlpha[iCut] = new TH2F("ESD_TruePi0CaloConvPhoton_ConvR_AlphaE","ESD_TruePi0CaloConvPhoton_ConvR_AlphaE",920,0,460,200,-1,1);
2094  fHistoTruePi0CaloConvPhotonConvRAlpha[iCut]->SetXTitle("R_{conv,e_{calo}}(cm)");
2095  fHistoTruePi0CaloConvPhotonConvRAlpha[iCut]->SetYTitle("#alpha converted e-pair");
2097 
2098  fHistoTruePi0CaloConvPhotonPtAlpha[iCut] = new TH2F("ESD_TruePi0CaloConvPhoton_PtE_AlphaE","ESD_TruePi0CaloConvPhoton_PtE_AlphaE",nBinsPt, minPt, maxPt,200,-1,1);
2099  fHistoTruePi0CaloConvPhotonPtAlpha[iCut]->SetXTitle("e^{#pm}p_{T}(GeV/c)");
2100  fHistoTruePi0CaloConvPhotonPtAlpha[iCut]->SetYTitle("#alpha converted e-pair");
2102 
2103  fHistoTrueEtaCaloConvertedPhotonInvMassPt[iCut] = new TH2F("ESD_TrueEtaCaloConvertedPhoton_InvMass_Pt","ESD_TrueEtaCaloConvertedPhoton_InvMass_Pt",800,0,0.8,nBinsPt, minPt, maxPt);
2104  fHistoTrueEtaCaloConvertedPhotonInvMassPt[iCut]->SetXTitle("M_{inv,#eta}(GeV/c^{2}) #gamma #gamma_{conv}");
2105  fHistoTrueEtaCaloConvertedPhotonInvMassPt[iCut]->SetYTitle("#eta p_{T}(GeV/c)");
2107 
2108  fHistoTrueEtaCaloConvertedPhotonMatchedInvMassPt[iCut] = new TH2F("ESD_TrueEtaCaloConvertedPhotonMatched_InvMass_Pt","ESD_TrueEtaCaloConvertedPhotonMatched_InvMass_Pt",800,0,0.8,nBinsPt, minPt, maxPt);
2109  fHistoTrueEtaCaloConvertedPhotonMatchedInvMassPt[iCut]->SetXTitle("M_{inv,#eta}(GeV/c^{2}) #gamma #gamma_{conv,matched}");
2110  fHistoTrueEtaCaloConvertedPhotonMatchedInvMassPt[iCut]->SetYTitle("#eta p_{T}(GeV/c)");
2112 
2113  fHistoTrueEtaCaloConvPhotonConvRPt[iCut] = new TH2F("ESD_TrueEtaCaloConvPhoton_ConvR_PtE","ESD_TrueEtaCaloConvPhoton_ConvR_PtE",920,0,460,nBinsPt, minPt, maxPt);
2114  fHistoTrueEtaCaloConvPhotonConvRPt[iCut]->SetXTitle("R_{conv,e_{calo}}(cm)");
2115  fHistoTrueEtaCaloConvPhotonConvRPt[iCut]->SetYTitle("e^{#pm}p_{T}(GeV/c)");
2117 
2118  fHistoTrueEtaCaloConvPhotonConvRAlpha[iCut] = new TH2F("ESD_TrueEtaCaloConvPhoton_ConvR_AlphaE","ESD_TrueEtaCaloConvPhoton_ConvR_AlphaE",920,0,460,200,-1,1);
2119  fHistoTrueEtaCaloConvPhotonConvRAlpha[iCut]->SetXTitle("R_{conv,e_{calo}}(cm)");
2120  fHistoTrueEtaCaloConvPhotonConvRAlpha[iCut]->SetYTitle("#alpha converted e-pair");
2122 
2123  fHistoTrueEtaCaloConvPhotonPtAlpha[iCut] = new TH2F("ESD_TrueEtaCaloConvPhoton_PtE_AlphaE","ESD_TrueEtaCaloConvPhoton_PtE_AlphaE",nBinsPt, minPt, maxPt,200,-1,1);
2124  fHistoTrueEtaCaloConvPhotonPtAlpha[iCut]->SetXTitle("e^{#pm}p_{T}(GeV/c)");
2125  fHistoTrueEtaCaloConvPhotonPtAlpha[iCut]->SetYTitle("#alpha converted e-pair");
2127 
2128 
2129  fHistoTruePi0CaloElectronInvMassPt[iCut] = new TH2F("ESD_TruePi0CaloElectron_InvMass_Pt","ESD_TruePi0CaloElectron_InvMass_Pt",800,0,0.8,nBinsPt, minPt, maxPt);
2130  fHistoTruePi0CaloElectronInvMassPt[iCut]->SetXTitle("M_{inv,#pi^{0}}(GeV/c^{2}) #gamma e^{#pm}");
2131  fHistoTruePi0CaloElectronInvMassPt[iCut]->SetYTitle("#pi^{0}p_{T}(GeV/c)");
2133  fHistoTrueEtaCaloElectronInvMassPt[iCut] = new TH2F("ESD_TrueEtaCaloElectron_InvMass_Pt","ESD_TrueEtaCaloElectron_InvMass_Pt",800,0,0.8,nBinsPt, minPt, maxPt);
2134  fHistoTrueEtaCaloElectronInvMassPt[iCut]->SetXTitle("M_{inv,#eta}(GeV/c^{2}) #gamma e^{#pm}");
2135  fHistoTrueEtaCaloElectronInvMassPt[iCut]->SetYTitle("#eta p_{T}(GeV/c)");
2137 
2138  fHistoTruePi0CaloMergedClusterInvMassPt[iCut] = new TH2F("ESD_TruePi0CaloMergedCluster_InvMass_Pt","ESD_TruePi0CaloMergedCluster_InvMass_Pt",800,0,0.8,nBinsPt, minPt, maxPt);
2139  fHistoTruePi0CaloMergedClusterInvMassPt[iCut]->SetXTitle("M_{inv,#pi^{0}}(GeV/c^{2}) #gamma merged cluster");
2140  fHistoTruePi0CaloMergedClusterInvMassPt[iCut]->SetYTitle("#pi^{0}p_{T}(GeV/c)");
2142  fHistoTrueEtaCaloMergedClusterInvMassPt[iCut] = new TH2F("ESD_TrueEtaCaloMergedCluster_InvMass_Pt","ESD_TrueEtaCaloMergedCluster_InvMass_Pt",800,0,0.8,nBinsPt, minPt, maxPt);
2143  fHistoTrueEtaCaloMergedClusterInvMassPt[iCut]->SetXTitle("M_{inv,#eta}(GeV/c^{2}) #gamma merged cluster");
2144  fHistoTrueEtaCaloMergedClusterInvMassPt[iCut]->SetYTitle("#eta p_{T}(GeV/c)");
2146 
2147  fHistoTrueMotherCaloEMNonLeadingInvMassPt[iCut] = new TH2F("ESD_TrueMotherCaloEMNonLeading_InvMass_Pt","ESD_TrueMotherCaloEMNonLeading_InvMass_Pt",800,0,0.8,nBinsPt, minPt, maxPt);
2148  fHistoTrueMotherCaloEMNonLeadingInvMassPt[iCut]->SetXTitle("M_{inv}(GeV/c^{2}) #gamma cluster no leading EM");
2149  fHistoTrueMotherCaloEMNonLeadingInvMassPt[iCut]->SetYTitle("#pair p_{T}(GeV/c)");
2151  fHistoTruePi0CaloMergedClusterPartConvInvMassPt[iCut] = new TH2F("ESD_TruePi0CaloMergedClusterPartConv_InvMass_Pt","ESD_TruePi0CaloMergedClusterPartConv_InvMass_Pt",800,0,0.8,nBinsPt, minPt, maxPt);
2152  fHistoTruePi0CaloMergedClusterPartConvInvMassPt[iCut]->SetXTitle("M_{inv,#pi^{0}}(GeV/c^{2}) #gamma merged cluster, part conv");
2153  fHistoTruePi0CaloMergedClusterPartConvInvMassPt[iCut]->SetYTitle("#pi^{0}p_{T}(GeV/c)");
2155  fHistoTrueEtaCaloMergedClusterPartConvInvMassPt[iCut] = new TH2F("ESD_TrueEtaCaloMergedClusterPartConv_InvMass_Pt","ESD_TrueEtaCaloMergedClusterPartConv_InvMass_Pt",800,0,0.8,nBinsPt, minPt, maxPt);
2156  fHistoTrueEtaCaloMergedClusterPartConvInvMassPt[iCut]->SetXTitle("M_{inv,#eta}(GeV/c^{2}) #gamma merged cluster, part conv");
2157  fHistoTrueEtaCaloMergedClusterPartConvInvMassPt[iCut]->SetYTitle("#eta p_{T}(GeV/c)");
2159 
2160  fHistoTruePrimaryPi0MCPtResolPt[iCut] = new TH2F("ESD_TruePrimaryPi0_MCPt_ResolPt","ESD_TruePrimaryPi0_ResolPt_MCPt",500,0.03,25,1000,-1.,1.);
2161  fHistoTruePrimaryPi0MCPtResolPt[iCut]->SetXTitle("#pi^{0}p_{T,MC}(GeV/c)");
2162  fHistoTruePrimaryPi0MCPtResolPt[iCut]->SetYTitle("#pi^{0}(p_{T,rec}-p_{T,MC})/p_{T,MC}()");
2163  fHistoTruePrimaryPi0MCPtResolPt[iCut]->Sumw2();
2165  fTrueList[iCut]->Add(fHistoTruePrimaryPi0MCPtResolPt[iCut]);
2166 
2167  fHistoTruePrimaryEtaMCPtResolPt[iCut] = new TH2F("ESD_TruePrimaryEta_MCPt_ResolPt","ESD_TruePrimaryEta_ResolPt_MCPt",500,0.03,25,1000,-1.,1.);
2168  fHistoTruePrimaryEtaMCPtResolPt[iCut]->SetXTitle("#eta p_{T,MC}(GeV/c)");
2169  fHistoTruePrimaryEtaMCPtResolPt[iCut]->SetYTitle("#eta (p_{T,rec}-p_{T,MC})/p_{T,MC}()");
2170  fHistoTruePrimaryEtaMCPtResolPt[iCut]->Sumw2();
2172  fTrueList[iCut]->Add(fHistoTruePrimaryEtaMCPtResolPt[iCut]);
2173 
2174  fHistoTrueK0sWithPi0DaughterMCPt[iCut] = new TH1F("ESD_TrueK0sWithPi0Daughter_MCPt","ESD_TrueK0sWithPi0Daughter_MCPt",nBinsPt, minPt, maxPt);
2175  fHistoTrueK0sWithPi0DaughterMCPt[iCut]->SetXTitle("K^{0}_{s}p_{MC,T}(GeV/c) for K^{0}_{s}where #pi^{0}rec ");
2176  fTrueList[iCut]->Add(fHistoTrueK0sWithPi0DaughterMCPt[iCut]);
2177  fHistoTrueK0lWithPi0DaughterMCPt[iCut] = new TH1F("ESD_TrueK0lWithPi0Daughter_MCPt","ESD_TrueK0lWithPi0Daughter_MCPt",nBinsPt, minPt, maxPt);
2178  fHistoTrueK0lWithPi0DaughterMCPt[iCut]->SetXTitle("K^{0}_{s}p_{MC,T}(GeV/c) for K^{0}_{l}where #pi^{0}rec ");
2179  fTrueList[iCut]->Add(fHistoTrueK0lWithPi0DaughterMCPt[iCut]);
2180  fHistoTrueEtaWithPi0DaughterMCPt[iCut] = new TH1F("ESD_TrueEtaWithPi0Daughter_MCPt","ESD_TrueEtaWithPi0Daughter_MCPt",nBinsPt, minPt, maxPt);
2181  fHistoTrueEtaWithPi0DaughterMCPt[iCut]->SetXTitle("#eta p_{MC,T}(GeV/c) for #eta where #pi^{0}rec ");
2182  fTrueList[iCut]->Add(fHistoTrueEtaWithPi0DaughterMCPt[iCut]);
2183  fHistoTrueLambdaWithPi0DaughterMCPt[iCut] = new TH1F("ESD_TrueLambdaWithPi0Daughter_MCPt","ESD_TrueLambdaWithPi0Daughter_MCPt",nBinsPt, minPt, maxPt);
2184  fHistoTrueLambdaWithPi0DaughterMCPt[iCut]->SetXTitle("#Lambda p_{MC,T}(GeV/c) for #Lambda where #pi^{0}rec ");
2186  }
2187  if(fDoMesonQA>1){
2188  fHistoTrueBckGGInvMassPt[iCut] = new TH2F("ESD_TrueBckGG_InvMass_Pt","ESD_TrueBckGG_InvMass_Pt",800,0,0.8,nBinsPt, minPt, maxPt);
2189  fHistoTrueBckGGInvMassPt[iCut]->SetXTitle("M_{inv}(GeV/c^{2}) #gamma #gamma no signal");
2190  fHistoTrueBckGGInvMassPt[iCut]->SetYTitle("#pair p_{T}(GeV/c)");
2191  fTrueList[iCut]->Add(fHistoTrueBckGGInvMassPt[iCut]);
2192  fHistoTrueBckFullMesonContainedInOneClusterInvMassPt[iCut] = new TH2F("ESD_TrueBckFullMesonContained_InvMass_Pt","ESD_TrueBckFullMesonContained_InvMass_Pt",800,0,0.8,nBinsPt, minPt, maxPt);
2193  fHistoTrueBckFullMesonContainedInOneClusterInvMassPt[iCut]->SetXTitle("M_{inv}(GeV/c^{2}) #gamma #gamma, calo gamma with full pi0");
2194  fHistoTrueBckFullMesonContainedInOneClusterInvMassPt[iCut]->SetYTitle("#pair p_{T}(GeV/c)");
2196  fHistoTrueBckAsymEClustersInvMassPt[iCut] = new TH2F("ESD_TrueBckAsymEClus_InvMass_Pt","ESD_TrueBckAsymEClus_InvMass_Pt",800,0,0.8,nBinsPt, minPt, maxPt);
2197  fHistoTrueBckAsymEClustersInvMassPt[iCut]->SetXTitle("M_{inv}(GeV/c^{2}) #gamma #gamma, calo gamma >70% of pi0 energy");
2198  fHistoTrueBckAsymEClustersInvMassPt[iCut]->SetYTitle("#pair p_{T}(GeV/c)");
2200  fHistoTrueBckContInvMassPt[iCut] = new TH2F("ESD_TrueBckCont_InvMass_Pt","ESD_TrueBckCont_InvMass_Pt",800,0,0.8,nBinsPt, minPt, maxPt);
2201  fHistoTrueBckContInvMassPt[iCut]->SetXTitle("M_{inv}(GeV/c^{2}) contamination");
2202  fHistoTrueBckContInvMassPt[iCut]->SetYTitle("#pair p_{T}(GeV/c)");
2203  fTrueList[iCut]->Add(fHistoTrueBckContInvMassPt[iCut]);
2204  }
2205  fHistoTruePi0PtY[iCut] = new TH2F("ESD_TruePi0_Pt_Y","ESD_TruePi0_Pt_Y",nBinsQAPt, minQAPt, maxQAPt,150,-1.5,1.5);
2206  fHistoTruePi0PtY[iCut]->SetYTitle("Y_{#pi^{0}}");
2207  fHistoTruePi0PtY[iCut]->SetXTitle("#pi^{0}p_{T}(GeV/c)");
2209  fTrueList[iCut]->Add(fHistoTruePi0PtY[iCut]);
2210  fHistoTrueEtaPtY[iCut] = new TH2F("ESD_TrueEta_Pt_Y","ESD_TrueEta_Pt_Y",nBinsQAPt, minQAPt, maxQAPt,150,-1.5,1.5);
2211  fHistoTrueEtaPtY[iCut]->SetYTitle("Y_{#eta}");
2212  fHistoTrueEtaPtY[iCut]->SetXTitle("#eta p_{T}(GeV/c)");
2214  fTrueList[iCut]->Add(fHistoTrueEtaPtY[iCut]);
2215  fHistoTruePi0PtAlpha[iCut] = new TH2F("ESD_TruePi0_Pt_Alpha","ESD_TruePi0_Pt_Alpha",nBinsQAPt, minQAPt, maxQAPt,200,-1,1);
2216  fHistoTruePi0PtAlpha[iCut]->SetYTitle("#alpha_{#pi^{0}}");
2217  fHistoTruePi0PtAlpha[iCut]->SetXTitle("#pi^{0}p_{T}(GeV/c)");
2219  fTrueList[iCut]->Add(fHistoTruePi0PtAlpha[iCut]);
2220  fHistoTrueEtaPtAlpha[iCut] = new TH2F("ESD_TrueEta_Pt_Alpha","ESD_TrueEta_Pt_Alpha",nBinsQAPt, minQAPt, maxQAPt,200,-1,1);
2221  fHistoTrueEtaPtAlpha[iCut]->SetYTitle("#alpha_{#eta}");
2222  fHistoTrueEtaPtAlpha[iCut]->SetXTitle("#eta p_{T}(GeV/c)");
2224  fTrueList[iCut]->Add(fHistoTrueEtaPtAlpha[iCut]);
2225 
2226  fHistoTruePi0PtOpenAngle[iCut] = new TH2F("ESD_TruePi0_Pt_OpenAngle","ESD_TruePi0_Pt_OpenAngle",nBinsQAPt, minQAPt, maxQAPt,100,0,1);
2227  fHistoTruePi0PtOpenAngle[iCut]->SetYTitle("#theta_{#pi^{0}}");
2228  fHistoTruePi0PtOpenAngle[iCut]->SetXTitle("#pi^{0}p_{T}(GeV/c)");
2230  fTrueList[iCut]->Add(fHistoTruePi0PtOpenAngle[iCut]);
2231  fHistoTrueEtaPtOpenAngle[iCut] = new TH2F("ESD_TrueEta_Pt_OpenAngle","ESD_TrueEta_Pt_OpenAngle",nBinsQAPt, minQAPt, maxQAPt,200,0,TMath::Pi());
2232  fHistoTrueEtaPtOpenAngle[iCut]->SetYTitle("#theta_{#eta}");
2233  fHistoTrueEtaPtOpenAngle[iCut]->SetXTitle("#eta p_{T}(GeV/c)");
2235  fTrueList[iCut]->Add(fHistoTrueEtaPtOpenAngle[iCut]);
2236 
2237  fHistoTrueMotherPi0ConvPhotonEtaPhi[iCut] = new TH2F("ESD_TrueMotherPi0ConvPhoton_Eta_Phi","conv photons for true #pi^{0}",600,0,2*TMath::Pi(),200,-1,1);
2238  fHistoTrueMotherPi0ConvPhotonEtaPhi[iCut]->SetXTitle("#phi_{#gamma_{conv}}(rad)");
2239  fHistoTrueMotherPi0ConvPhotonEtaPhi[iCut]->SetYTitle("#eta_{#gamma_{conv}}");
2241  fHistoTrueMotherEtaConvPhotonEtaPhi[iCut] = new TH2F("ESD_TrueMotherEtaConvPhoton_Eta_Phi","conv photons for true #eta",600,0,2*TMath::Pi(),200,-1,1);
2242  fHistoTrueMotherEtaConvPhotonEtaPhi[iCut]->SetXTitle("#phi_{#gamma_{conv}}(rad)");
2243  fHistoTrueMotherEtaConvPhotonEtaPhi[iCut]->SetYTitle("#eta_{#gamma_{conv}}");
2245 
2246  if (fIsMC > 1){
2247  if(fDoMesonQA>1){
2248  fHistoTrueBckGGInvMassPt[iCut]->Sumw2();
2250  fHistoTrueBckAsymEClustersInvMassPt[iCut]->Sumw2();
2251  fHistoTrueBckContInvMassPt[iCut]->Sumw2();
2252  }
2253  fHistoTruePi0PtY[iCut]->Sumw2();
2254  fHistoTrueEtaPtY[iCut]->Sumw2();
2255  fHistoTruePi0PtAlpha[iCut]->Sumw2();
2256  fHistoTrueEtaPtAlpha[iCut]->Sumw2();
2257  fHistoTruePi0PtOpenAngle[iCut]->Sumw2();
2258  fHistoTrueEtaPtOpenAngle[iCut]->Sumw2();
2259  fHistoTrueMotherPi0ConvPhotonEtaPhi[iCut]->Sumw2();
2260  fHistoTrueMotherEtaConvPhotonEtaPhi[iCut]->Sumw2();
2261  }
2262  }
2263  }
2264  }
2265  }
2266 
2271 
2272  fMapMultipleCountTruePi0s.clear();
2273  fMapMultipleCountTrueEtas.clear();
2276 
2277  fVectorRecTruePi0s.clear();
2278  fVectorRecTrueEtas.clear();
2279 
2280  if(fV0Reader)
2282  if(((AliConversionPhotonCuts*)fV0Reader->GetConversionCuts())->GetCutHistograms())
2283  fOutputContainer->Add(((AliConversionPhotonCuts*)fV0Reader->GetConversionCuts())->GetCutHistograms());
2284  if(fV0Reader)
2286  if(((AliConvEventCuts*)fV0Reader->GetEventCuts())->GetCutHistograms())
2287  fOutputContainer->Add(((AliConvEventCuts*)fV0Reader->GetEventCuts())->GetCutHistograms());
2288 
2292 
2293  for(Int_t iMatcherTask = 0; iMatcherTask < 3; iMatcherTask++){
2294  AliCaloTrackMatcher* temp = (AliCaloTrackMatcher*) (AliAnalysisManager::GetAnalysisManager()->GetTask(Form("CaloTrackMatcher_%i",iMatcherTask)));
2295  if(temp) fOutputContainer->Add(temp->GetCaloTrackMatcherHistograms());
2296  }
2297 
2298 
2299 
2300  for(Int_t iCut = 0; iCut<fnCuts;iCut++){
2301  if(!((AliConvEventCuts*)fEventCutArray->At(iCut))) continue;
2302  if(((AliConvEventCuts*)fEventCutArray->At(iCut))->GetCutHistograms()){
2303  fCutFolder[iCut]->Add(((AliConvEventCuts*)fEventCutArray->At(iCut))->GetCutHistograms());
2304  }
2305  if(!((AliConversionPhotonCuts*)fCutArray->At(iCut))) continue;
2306  if(((AliConversionPhotonCuts*)fCutArray->At(iCut))->GetCutHistograms()){
2307  fCutFolder[iCut]->Add(((AliConversionPhotonCuts*)fCutArray->At(iCut))->GetCutHistograms());
2308  }
2309  if(!((AliCaloPhotonCuts*)fClusterCutArray->At(iCut))) continue;
2310  if(((AliCaloPhotonCuts*)fClusterCutArray->At(iCut))->GetCutHistograms()){
2311  fCutFolder[iCut]->Add(((AliCaloPhotonCuts*)fClusterCutArray->At(iCut))->GetCutHistograms());
2312  }
2313  if(fSetPlotHistsExtQA){
2314  if(!((AliCaloPhotonCuts*)fClusterCutArray->At(iCut))) continue;
2315  if(((AliCaloPhotonCuts*)fClusterCutArray->At(iCut))->GetExtQAHistograms()){
2316  fCutFolder[iCut]->Add(((AliCaloPhotonCuts*)fClusterCutArray->At(iCut))->GetExtQAHistograms());
2317  }
2318  }
2319  if(fDoMesonAnalysis){
2320  if(!((AliConversionMesonCuts*)fMesonCutArray->At(iCut))) continue;
2321  if(((AliConversionMesonCuts*)fMesonCutArray->At(iCut))->GetCutHistograms()){
2322  fCutFolder[iCut]->Add(((AliConversionMesonCuts*)fMesonCutArray->At(iCut))->GetCutHistograms());
2323  }
2324  }
2325  }
2326 
2327  if (fIsMC > 0){
2328  tBrokenFiles = new TTree("BrokenFiles","BrokenFiles");
2329  tBrokenFiles->Branch("fileName",&fFileNameBroken);
2331  }
2332 
2333 
2334  PostData(1, fOutputContainer);
2335 }
2336 //_____________________________________________________________________________
2338 {
2339  for(Int_t iCut = 0; iCut<fnCuts;iCut++){
2340  if (((AliConvEventCuts*)fEventCutArray->At(iCut))->GetPeriodEnum() == AliConvEventCuts::kNoPeriod && ((AliConvEventCuts*)fV0Reader->GetEventCuts())->GetPeriodEnum() != AliConvEventCuts::kNoPeriod){
2341  ((AliConvEventCuts*)fEventCutArray->At(iCut))->SetPeriodEnumExplicit(((AliConvEventCuts*)fV0Reader->GetEventCuts())->GetPeriodEnum());
2342  } else if (((AliConvEventCuts*)fEventCutArray->At(iCut))->GetPeriodEnum() == AliConvEventCuts::kNoPeriod ){
2343  ((AliConvEventCuts*)fEventCutArray->At(iCut))->SetPeriodEnum(fV0Reader->GetPeriodName());
2344  }
2345 
2346  if(fIsHeavyIon == 2){
2347  if(!((AliConvEventCuts*)fEventCutArray->At(iCut))->GetDoEtaShift()){
2348  fProfileEtaShift[iCut]->Fill(0.,(((AliConvEventCuts*)fEventCutArray->At(iCut))->GetEtaShift()));
2349  continue; // No Eta Shift requested, continue
2350  }
2351  if(((AliConvEventCuts*)fEventCutArray->At(iCut))->GetEtaShift() == 0.0){ // Eta Shift requested but not set, get shift automatically
2352  ((AliConvEventCuts*)fEventCutArray->At(iCut))->GetCorrectEtaShiftFromPeriod();
2353  fProfileEtaShift[iCut]->Fill(0.,(((AliConvEventCuts*)fEventCutArray->At(iCut))->GetEtaShift()));
2354  ((AliConvEventCuts*)fEventCutArray->At(iCut))->DoEtaShift(kFALSE); // Eta Shift Set, make sure that it is called only once
2355  continue;
2356  } else{
2357  printf(" Gamma Conversion Task %s :: Eta Shift Manually Set to %f \n\n",
2358  (((AliConvEventCuts*)fEventCutArray->At(iCut))->GetCutNumber()).Data(),((AliConvEventCuts*)fEventCutArray->At(iCut))->GetEtaShift());
2359  fProfileEtaShift[iCut]->Fill(0.,(((AliConvEventCuts*)fEventCutArray->At(iCut))->GetEtaShift()));
2360  ((AliConvEventCuts*)fEventCutArray->At(iCut))->DoEtaShift(kFALSE); // Eta Shift Set, make sure that it is called only once
2361  }
2362  }
2363  }
2364 
2365  return kTRUE;
2366 }
2367 //_____________________________________________________________________________
2369 {
2370  //
2371  // Called for each event
2372  //
2373  fInputEvent = InputEvent();
2374 
2375  if(fIsMC > 0) fMCEvent = MCEvent();
2376 
2377  Int_t eventQuality = ((AliConvEventCuts*)fV0Reader->GetEventCuts())->GetEventQuality();
2378  if(fInputEvent->IsIncompleteDAQ()==kTRUE) eventQuality = 2;// incomplete event
2379  // Event Not Accepted due to MC event missing or wrong trigger for V0ReaderV1 or because it is incomplete => abort processing of this event/file
2380  if(eventQuality == 2 || eventQuality == 3){
2381  // write out name of broken file for first event
2382  if (fIsMC > 0){
2383  if (fInputEvent->IsA()==AliESDEvent::Class()){
2384  if (((AliESDEvent*)fInputEvent)->GetEventNumberInFile() == 0){
2385  fFileNameBroken = new TObjString(Form("%s",((TString)fV0Reader->GetCurrentFileName()).Data()));
2386  if (tBrokenFiles) tBrokenFiles->Fill();
2387  delete fFileNameBroken;
2388  }
2389  }
2390  }
2391 
2392  for(Int_t iCut = 0; iCut<fnCuts; iCut++){
2393  fHistoNEvents[iCut]->Fill(eventQuality);
2394  if (fIsMC > 1) fHistoNEventsWOWeight[iCut]->Fill(eventQuality);
2395  }
2396  return;
2397  }
2398 
2399 
2400  if(fInputEvent->IsA()==AliAODEvent::Class()){
2401  fInputEvent->InitMagneticField();
2402  }
2403 
2404  fReaderGammas = fV0Reader->GetReconstructedGammas(); // Gammas from default Cut
2405 
2406  // ------------------- BeginEvent ----------------------------
2407  AliEventplane *EventPlane = fInputEvent->GetEventplane();
2408  if(fIsHeavyIon ==1)fEventPlaneAngle = EventPlane->GetEventplane("V0",fInputEvent,2);
2409  else fEventPlaneAngle=0.0;
2410 
2411  if(fIsMC>0 && fInputEvent->IsA()==AliAODEvent::Class() && !(fV0Reader->AreAODsRelabeled())){
2412  RelabelAODPhotonCandidates(kTRUE);// In case of AODMC relabeling MC
2413  fV0Reader->RelabelAODs(kTRUE);
2414  }
2415 
2416  for(Int_t iCut = 0; iCut<fnCuts; iCut++){
2417 
2418  fiCut = iCut;
2419 // cout << ((AliConvEventCuts*)fEventCutArray->At(iCut))->GetCutNumber() << "_" << ((AliConversionPhotonCuts*)fCutArray->At(iCut))->GetCutNumber() <<
2420 // "_" << ((AliCaloPhotonCuts*)fClusterCutArray->At(iCut))->GetCutNumber() <<endl;
2421 
2422  Bool_t isRunningEMCALrelAna = kFALSE;
2423  if (((AliCaloPhotonCuts*)fClusterCutArray->At(fiCut))->GetClusterType() == 1) isRunningEMCALrelAna = kTRUE;
2424 
2425  Int_t eventNotAccepted = ((AliConvEventCuts*)fEventCutArray->At(iCut))->IsEventAcceptedByCut(fV0Reader->GetEventCuts(),fInputEvent,fMCEvent,fIsHeavyIon,isRunningEMCALrelAna);
2426 
2427  if(fIsMC==2){
2428  Float_t xsection = -1.;
2429  Float_t ntrials = -1.;
2430  ((AliConvEventCuts*)fEventCutArray->At(iCut))->GetXSectionAndNTrials(fMCEvent,xsection,ntrials);
2431  if((xsection==-1.) || (ntrials==-1.)) AliFatal(Form("ERROR: GetXSectionAndNTrials returned invalid xsection/ntrials, periodName from V0Reader: '%s'",fV0Reader->GetPeriodName().Data()));
2432  fProfileJetJetXSection[iCut]->Fill(0.,xsection);
2433  fHistoJetJetNTrials[iCut]->Fill("#sum{NTrials}",ntrials);
2434  }
2435 
2436  if(fIsMC>0){
2437  fWeightJetJetMC = 1;
2438  // cout << fMCEvent << endl;
2439  Bool_t isMCJet = ((AliConvEventCuts*)fEventCutArray->At(iCut))->IsJetJetMCEventAccepted( fMCEvent, fWeightJetJetMC );
2440  if (fIsMC == 3){
2441  Double_t weightMult = ((AliConvEventCuts*)fEventCutArray->At(iCut))->GetWeightForMultiplicity(fV0Reader->GetNumberOfPrimaryTracks());
2442  fWeightJetJetMC = fWeightJetJetMC*weightMult;
2443  }
2444  if(fIsMC==1) fWeightJetJetMC = 1;
2445  if (!isMCJet){
2446  fHistoNEvents[iCut]->Fill(10,fWeightJetJetMC);
2447  if (fIsMC>1) fHistoNEventsWOWeight[iCut]->Fill(10);
2448  continue;
2449  }
2450  }
2451 
2452  Bool_t triggered = kTRUE;
2453 
2454  if(eventNotAccepted!= 0){
2455  // cout << "event rejected due to wrong trigger: " <<eventNotAccepted << endl;
2456  fHistoNEvents[iCut]->Fill(eventNotAccepted, fWeightJetJetMC); // Check Centrality, PileUp, SDD and V0AND --> Not Accepted => eventQuality = 1
2457  if (fIsMC>1) fHistoNEventsWOWeight[iCut]->Fill(eventNotAccepted);
2458  if (eventNotAccepted==3 && fIsMC > 0){
2459  triggered = kFALSE;
2460  }else {
2461  continue;
2462  }
2463  }
2464 
2465  if(eventQuality != 0){// Event Not Accepted
2466  //cout << "event rejected due to: " <<eventQuality << endl;
2467  fHistoNEvents[iCut]->Fill(eventQuality, fWeightJetJetMC);
2468  if (fIsMC>1) fHistoNEventsWOWeight[iCut]->Fill(eventQuality);
2469  continue;
2470  }
2471 
2472  if (triggered==kTRUE){
2473  fHistoNEvents[iCut]->Fill(eventQuality, fWeightJetJetMC); // Should be 0 here
2474  if (fIsMC>1) fHistoNEventsWOWeight[iCut]->Fill(eventQuality); // Should be 0 here
2475 
2477  fHistoVertexZ[iCut]->Fill(fInputEvent->GetPrimaryVertex()->GetZ(), fWeightJetJetMC);
2478  if(!fDoLightOutput){
2479  fHistoVertexX[iCut]->Fill(fInputEvent->GetPrimaryVertex()->GetX(), fWeightJetJetMC);
2480  fHistoVertexY[iCut]->Fill(fInputEvent->GetPrimaryVertex()->GetY(), fWeightJetJetMC);
2481  fHistoSPDClusterTrackletBackground[iCut]->Fill(fInputEvent->GetMultiplicity()->GetNumberOfTracklets(),(fInputEvent->GetNumberOfITSClusters(0)+fInputEvent->GetNumberOfITSClusters(1)),fWeightJetJetMC);
2482  if(((AliConvEventCuts*)fEventCutArray->At(iCut))->IsHeavyIon() == 2) fHistoNV0Tracks[iCut]->Fill(fInputEvent->GetVZEROData()->GetMTotV0A(), fWeightJetJetMC);
2483  else fHistoNV0Tracks[iCut]->Fill(fInputEvent->GetVZEROData()->GetMTotV0A()+fInputEvent->GetVZEROData()->GetMTotV0C(), fWeightJetJetMC);
2484  }
2485  }
2486 
2487  if(fIsMC>0){
2488  // Process MC Particle
2489  if(((AliConvEventCuts*)fEventCutArray->At(iCut))->GetSignalRejection() != 0){
2490  if(fInputEvent->IsA()==AliESDEvent::Class()){
2491  ((AliConvEventCuts*)fEventCutArray->At(iCut))->GetNotRejectedParticles(((AliConvEventCuts*)fEventCutArray->At(iCut))->GetSignalRejection(),
2492  ((AliConvEventCuts*)fEventCutArray->At(iCut))->GetAcceptedHeader(),
2493  fMCEvent);
2494  }
2495  else if(fInputEvent->IsA()==AliAODEvent::Class()){
2496  ((AliConvEventCuts*)fEventCutArray->At(iCut))->GetNotRejectedParticles(((AliConvEventCuts*)fEventCutArray->At(iCut))->GetSignalRejection(),
2497  ((AliConvEventCuts*)fEventCutArray->At(iCut))->GetAcceptedHeader(),
2498  fInputEvent);
2499  }
2500 
2501  if(((AliConvEventCuts*)fEventCutArray->At(iCut))->GetAcceptedHeader()){
2502  for(Int_t i = 0;i<(((AliConvEventCuts*)fEventCutArray->At(iCut))->GetAcceptedHeader())->GetEntries();i++){
2503  TString nameBin= fHistoMCHeaders[iCut]->GetXaxis()->GetBinLabel(i+1);
2504  if (nameBin.CompareTo("")== 0){
2505  TString nameHeader = ((TObjString*)((TList*)((AliConvEventCuts*)fEventCutArray->At(iCut))
2506  ->GetAcceptedHeader())->At(i))->GetString();
2507  fHistoMCHeaders[iCut]->GetXaxis()->SetBinLabel(i+1,nameHeader.Data());
2508  }
2509  }
2510  }
2511  }
2512  }
2513  if(fIsMC>0){
2514  if(fInputEvent->IsA()==AliESDEvent::Class())
2516  if(fInputEvent->IsA()==AliAODEvent::Class())
2518  }
2519 
2520  if (triggered==kFALSE) continue;
2521 
2522  // it is in the loop to have the same conversion cut string (used also for MC stuff that should be same for V0 and Cluster)
2523  ProcessClusters();// process calo clusters
2524  ProcessPhotonCandidates(); // Process this cuts gammas
2525 
2526  fHistoNGammaCandidates[iCut]->Fill(fGammaCandidates->GetEntries(),fWeightJetJetMC);
2528  if(fDoMesonAnalysis){ // Meson Analysis
2529  if(((AliConversionMesonCuts*)fMesonCutArray->At(iCut))->UseMCPSmearing() && fIsMC>0){
2530  fUnsmearedPx = new Double_t[fGammaCandidates->GetEntries()]; // Store unsmeared Momenta
2531  fUnsmearedPy = new Double_t[fGammaCandidates->GetEntries()];
2532  fUnsmearedPz = new Double_t[fGammaCandidates->GetEntries()];
2533  fUnsmearedE = new Double_t[fGammaCandidates->GetEntries()];
2534 
2535  for(Int_t gamma=0;gamma<fGammaCandidates->GetEntries();gamma++){ // Smear the AODPhotons in MC
2536  fUnsmearedPx[gamma] = ((AliAODConversionPhoton*)fGammaCandidates->At(gamma))->Px();
2537  fUnsmearedPy[gamma] = ((AliAODConversionPhoton*)fGammaCandidates->At(gamma))->Py();
2538  fUnsmearedPz[gamma] = ((AliAODConversionPhoton*)fGammaCandidates->At(gamma))->Pz();
2539  fUnsmearedE[gamma] = ((AliAODConversionPhoton*)fGammaCandidates->At(gamma))->E();
2540  ((AliConversionMesonCuts*)fMesonCutArray->At(iCut))->SmearParticle(dynamic_cast<AliAODConversionPhoton*>(fGammaCandidates->At(gamma)));
2541  }
2542  }
2543 
2544  CalculatePi0Candidates(); // Combine Gammas from conversion and from calo
2545 
2546  if(((AliConversionMesonCuts*)fMesonCutArray->At(iCut))->DoBGCalculation()){
2547  if(((AliConversionMesonCuts*)fMesonCutArray->At(iCut))->BackgroundHandlerType() == 0){
2548  CalculateBackground(); // Combinatorial Background
2549  UpdateEventByEventData(); // Store Event for mixed Events
2550  }
2551  else{
2552  CalculateBackgroundRP(); // Combinatorial Background
2553  fBGHandlerRP[iCut]->AddEvent(fGammaCandidates,fInputEvent); // Store Event for mixed Events
2554  fBGClusHandlerRP[iCut]->AddEvent(fClusterCandidates,fInputEvent); // Store Event for mixed Events
2555  }
2556  }
2557 
2558  if(fIsMC>0 && fInputEvent->IsA()==AliAODEvent::Class()){
2559  ProcessConversionPhotonsForMissingTagsAOD(); //Count missing tags
2560  }else if (fIsMC>0 && fInputEvent->IsA()==AliESDEvent::Class()){
2561  ProcessConversionPhotonsForMissingTags(); //Count missing tags
2562  }
2563 
2564  if(((AliConversionMesonCuts*)fMesonCutArray->At(iCut))->UseMCPSmearing() && fIsMC>0){
2565  for(Int_t gamma=0;gamma<fGammaCandidates->GetEntries();gamma++){ // Smear the AODPhotons in MC
2566  ((AliAODConversionPhoton*)fGammaCandidates->At(gamma))->SetPx(fUnsmearedPx[gamma]); // Reset Unsmeared Momenta
2567  ((AliAODConversionPhoton*)fGammaCandidates->At(gamma))->SetPy(fUnsmearedPy[gamma]);
2568  ((AliAODConversionPhoton*)fGammaCandidates->At(gamma))->SetPz(fUnsmearedPz[gamma]);
2569  ((AliAODConversionPhoton*)fGammaCandidates->At(gamma))->SetE(fUnsmearedE[gamma]);
2570  }
2571  delete[] fUnsmearedPx; fUnsmearedPx = 0x0;
2572  delete[] fUnsmearedPy; fUnsmearedPy = 0x0;
2573  delete[] fUnsmearedPz; fUnsmearedPz = 0x0;
2574  delete[] fUnsmearedE;fUnsmearedE = 0x0;
2575  }
2576 
2577  if(fIsMC>0){
2578  fVectorRecTruePi0s.clear();
2579  fVectorRecTrueEtas.clear();
2584  }
2585  }
2586 
2587  if(fIsMC>0){
2592  }
2593 
2595 
2596  fGammaCandidates->Clear(); // delete this cuts good gammas
2597  fClusterCandidates->Clear(); // delete cluster candidates
2598  }
2599 
2600  if(fIsMC>0 && fInputEvent->IsA()==AliAODEvent::Class() && !(fV0Reader->AreAODsRelabeled())){
2601  RelabelAODPhotonCandidates(kFALSE); // Back to ESDMC Label
2602  fV0Reader->RelabelAODs(kFALSE);
2603  }
2604 
2605  PostData(1, fOutputContainer);
2606 }
2607 
2608 //________________________________________________________________________
2610 
2611  Int_t nclus = 0;
2612  nclus = fInputEvent->GetNumberOfCaloClusters();
2613 
2614 // cout << nclus << endl;
2615 
2616  if(nclus == 0) return;
2617 
2618  // plotting histograms on cell/tower level, only if extendedMatchAndQA > 1
2619  ((AliCaloPhotonCuts*)fClusterCutArray->At(fiCut))->FillHistogramsExtendedQA(fInputEvent,fIsMC);
2620 
2621  // match tracks to clusters
2622  if(fDoPrimaryTrackMatching) ((AliCaloPhotonCuts*)fClusterCutArray->At(fiCut))->MatchTracksToClusters(fInputEvent,fWeightJetJetMC,kFALSE);
2623 
2624  // vertex
2625  Double_t vertex[3] = {0,0,0};
2626  InputEvent()->GetPrimaryVertex()->GetXYZ(vertex);
2627 
2628  // Loop over EMCal clusters
2629  for(Int_t i = 0; i < nclus; i++){
2630  AliVCluster* clus = NULL;
2631  if(fInputEvent->IsA()==AliESDEvent::Class()) clus = new AliESDCaloCluster(*(AliESDCaloCluster*)fInputEvent->GetCaloCluster(i));
2632  else if(fInputEvent->IsA()==AliAODEvent::Class()) clus = new AliAODCaloCluster(*(AliAODCaloCluster*)fInputEvent->GetCaloCluster(i));
2633 
2634  if (!clus) continue;
2635  if(!((AliCaloPhotonCuts*)fClusterCutArray->At(fiCut))->ClusterIsSelected(clus,fInputEvent,fMCEvent,fIsMC,fWeightJetJetMC,i)){
2636  if(fDoInvMassShowerShapeTree && ((AliCaloPhotonCuts*)fClusterCutArray->At(fiCut))->ClusterIsSelectedBeforeTrackMatch() ) tESDmapIsClusterAcceptedWithoutTrackMatch[i] = 1;
2637  delete clus;
2638  continue;
2639  }
2640 
2641  // TLorentzvector with cluster
2642  TLorentzVector clusterVector;
2643  clus->GetMomentum(clusterVector,vertex);
2644 
2645  TLorentzVector* tmpvec = new TLorentzVector();
2646  tmpvec->SetPxPyPzE(clusterVector.Px(),clusterVector.Py(),clusterVector.Pz(),clusterVector.E());
2647 
2648  // convert to AODConversionPhoton
2649  AliAODConversionPhoton *PhotonCandidate = new AliAODConversionPhoton(tmpvec);
2650  if(!PhotonCandidate){ delete clus; delete tmpvec; continue;}
2651 
2653 
2654  // Flag Photon as CaloPhoton
2655  PhotonCandidate->SetIsCaloPhoton();
2656  PhotonCandidate->SetCaloClusterRef((Long_t)i);
2657  // get MC label
2658  if(fIsMC>0){
2659  Int_t* mclabelsCluster = clus->GetLabels();
2660  PhotonCandidate->SetNCaloPhotonMCLabels(clus->GetNLabels());
2661 // cout << clus->GetNLabels() << endl;
2662  if (clus->GetNLabels()>0){
2663  for (Int_t k =0; k<(Int_t)clus->GetNLabels(); k++){
2664  if (k<50)PhotonCandidate->SetCaloPhotonMCLabel(k,mclabelsCluster[k]);
2665 // Int_t pdgCode = fMCEvent->Particle(mclabelsCluster[k])->GetPdgCode();
2666 // cout << "label " << k << "\t" << mclabelsCluster[k] << " pdg code: " << pdgCode << endl;
2667  }
2668  }
2669  }
2670 
2671  fIsFromDesiredHeader = kTRUE;
2673  //TString periodName = fV0Reader->GetPeriodName();
2674  // test whether largest contribution to cluster orginates in added signals
2675  if (fIsMC>0 && ((AliConvEventCuts*)fEventCutArray->At(fiCut))->GetSignalRejection() > 0){
2676  if (((AliConvEventCuts*)fEventCutArray->At(fiCut))->IsParticleFromBGEvent(PhotonCandidate->GetCaloPhotonMCLabel(0), fMCEvent, fInputEvent) == 0){
2677  fIsFromDesiredHeader = kFALSE;
2678  }
2679  if (clus->GetNLabels()>1){
2680  Int_t* mclabelsCluster = clus->GetLabels();
2681  for (Int_t l = 1; l < (Int_t)clus->GetNLabels(); l++ ){
2682  if (((AliConvEventCuts*)fEventCutArray->At(fiCut))->IsParticleFromBGEvent(mclabelsCluster[l], fMCEvent, fInputEvent) == 0){
2684  }
2685  }
2686  }
2687  }
2688  fHistoClusAllHeadersGammaPt[fiCut]->Fill(PhotonCandidate->Pt(),fWeightJetJetMC);
2689  if (!fIsFromDesiredHeader)
2690  fHistoClusRejectedHeadersGammaPt[fiCut]->Fill(PhotonCandidate->Pt(),fWeightJetJetMC);
2692  fHistoClusOverlapHeadersGammaPt[fiCut]->Fill(PhotonCandidate->Pt(),fWeightJetJetMC);
2693 
2695  fHistoClusGammaPt[fiCut]->Fill(PhotonCandidate->Pt(),fWeightJetJetMC);
2696  fHistoClusGammaE[fiCut]->Fill(PhotonCandidate->E(),fWeightJetJetMC);
2697  if(fIsMC>0){
2698  if(fInputEvent->IsA()==AliESDEvent::Class()){
2699  ProcessTrueClusterCandidates(PhotonCandidate,clus->GetM02());
2700  }else {
2701  ProcessTrueClusterCandidatesAOD(PhotonCandidate,clus->GetM02());
2702  }
2703  }
2704  fClusterCandidates->Add(PhotonCandidate); // if no second loop is required add to events good gammas
2705  }else{
2706  delete PhotonCandidate;
2707  }
2708 
2709  delete clus;
2710  delete tmpvec;
2711  }
2712 
2713 }
2714 
2715 //________________________________________________________________________
2717 {
2718 
2719  TParticle *Photon = NULL;
2720  if (!TruePhotonCandidate->GetIsCaloPhoton()) AliFatal("CaloPhotonFlag has not been set task will abort");
2721  if (TruePhotonCandidate->GetCaloPhotonMCLabel(0) < 0) return;
2722  if(!fDoLightOutput) fHistoTrueNLabelsInClusPt[fiCut]->Fill(TruePhotonCandidate->GetNCaloPhotonMCLabels(),TruePhotonCandidate->Pt(),fWeightJetJetMC);
2723 
2724  if (TruePhotonCandidate->GetNCaloPhotonMCLabels()>0)Photon = fMCEvent->Particle(TruePhotonCandidate->GetCaloPhotonMCLabel(0));
2725  else return;
2726 
2727  if(Photon == NULL){
2728  // cout << "no photon" << endl;
2729  return;
2730  }
2731 
2732  TruePhotonCandidate->SetCaloPhotonMCFlags(fMCEvent, fEnableSortForClusMC);
2733 
2734  const AliVVertex* primVtxMC = fMCEvent->GetPrimaryVertex();
2735  Double_t mcProdVtxX = primVtxMC->GetX();
2736  Double_t mcProdVtxY = primVtxMC->GetY();
2737  Double_t mcProdVtxZ = primVtxMC->GetZ();
2738  Bool_t isPrimary = ((AliConvEventCuts*)fEventCutArray->At(fiCut))->IsConversionPrimaryESD( fMCEvent, TruePhotonCandidate->GetCaloPhotonMCLabel(0), mcProdVtxX, mcProdVtxY, mcProdVtxZ);
2739 
2740  // to get primary distrinction right put mother of conversion electron as particle to check
2741  if (TruePhotonCandidate->IsLargestComponentElectron() && TruePhotonCandidate->IsConversion())
2742  isPrimary = ((AliConvEventCuts*)fEventCutArray->At(fiCut))->IsConversionPrimaryESD( fMCEvent, Photon->GetMother(0), mcProdVtxX, mcProdVtxY, mcProdVtxZ);
2743 
2744 
2745  // Fill histograms for inclusive gamma corrections
2746  // --> a) all clusters with leading real or converted photons
2747  if (TruePhotonCandidate->IsLargestComponentPhoton() || (TruePhotonCandidate->IsLargestComponentElectron() && TruePhotonCandidate->IsConversion()) ){
2748  fHistoTrueClusGammaPt[fiCut]->Fill(TruePhotonCandidate->Pt(),fWeightJetJetMC);
2749  if(!fDoLightOutput){
2750  // how many of those clusters are from converted photons
2751  if (TruePhotonCandidate->IsLargestComponentElectron() && TruePhotonCandidate->IsConversion()){
2752  fHistoTrueClusConvGammaPt[fiCut]->Fill(TruePhotonCandidate->Pt(), fWeightJetJetMC);
2753  }
2754  // --> b) which of these are primary
2755  if(isPrimary){
2756  fHistoTruePrimaryClusGammaPt[fiCut]->Fill(TruePhotonCandidate->Pt(),fWeightJetJetMC);
2757  fHistoTruePrimaryClusGammaESDPtMCPt[fiCut]->Fill(TruePhotonCandidate->Pt(),Photon->Pt(),fWeightJetJetMC);
2758  // --> c) which are from conversions? Just additonal information
2759  if (TruePhotonCandidate->IsLargestComponentElectron() && TruePhotonCandidate->IsConversion() && (Photon->GetMother(0)>-1)){
2760  fHistoTruePrimaryClusConvGammaPt[fiCut]->Fill(TruePhotonCandidate->Pt(), fWeightJetJetMC);
2761  fHistoTruePrimaryClusConvGammaESDPtMCPt[fiCut]->Fill(TruePhotonCandidate->Pt(),((TParticle*)fMCEvent->Particle(Photon->GetMother(0)))->Pt(),fWeightJetJetMC);
2762  }
2763  // --> d) how do the secondaries look like
2764  }else {
2765  Int_t secondaryClass = -1;
2766  if (TruePhotonCandidate->IsLargestComponentElectron() && TruePhotonCandidate->IsConversion())
2767  secondaryClass = ((AliConvEventCuts*)fEventCutArray->At(fiCut))->SecondaryClassificationPhoton( Photon, fMCEvent, kTRUE);
2768  else
2769  secondaryClass = ((AliConvEventCuts*)fEventCutArray->At(fiCut))->SecondaryClassificationPhoton( Photon, fMCEvent, kFALSE);
2770  // all secondaries
2771  if (secondaryClass > 0 ){
2772  fHistoTrueSecondaryClusGammaPt[fiCut]->Fill(TruePhotonCandidate->Pt(),fWeightJetJetMC);
2773  }
2774  // secondaries from K0s
2775  if (secondaryClass == 2)
2776  fHistoTrueSecondaryClusGammaFromK0sPt[fiCut]->Fill(TruePhotonCandidate->Pt(),fWeightJetJetMC);
2777  // secondaries from Lambda
2778  else if (secondaryClass == 3)
2779  fHistoTrueSecondaryClusGammaFromLambdaPt[fiCut]->Fill(TruePhotonCandidate->Pt(),fWeightJetJetMC);
2780  else if (secondaryClass == 5)
2781  fHistoTrueSecondaryClusGammaFromK0lPt[fiCut]->Fill(TruePhotonCandidate->Pt(),fWeightJetJetMC);
2782  }
2783  }
2784 
2785  // How many clusters are from electrons besides conversions
2786  }else if (TruePhotonCandidate->IsLargestComponentElectron()) {
2787  if(!fDoLightOutput) fHistoTrueClusElectronPt[fiCut]->Fill(TruePhotonCandidate->Pt(),fWeightJetJetMC);
2788  // How many clusters don't have an electromagnetic particle as leading particle
2789  }else {
2790  if(!fDoLightOutput) fHistoTrueClusEMNonLeadingPt[fiCut]->Fill(TruePhotonCandidate->Pt(),fWeightJetJetMC);
2791  }
2792 
2793  // Filling histogram for true photons: E vs M02 for paper
2794  if(!fDoLightOutput) {
2795  if ( TruePhotonCandidate->IsLargestComponentPhoton() && !TruePhotonCandidate->IsPhotonWithElecMother() &&
2796  !TruePhotonCandidate->IsMerged() && !TruePhotonCandidate->IsMergedPartConv() && !TruePhotonCandidate->IsDalitzMerged() )
2797  fHistoTrueClusGammaEM02[fiCut]->Fill(TruePhotonCandidate->E(),clusM02, fWeightJetJetMC);
2798  }
2799 
2800  // Some additional QA
2801  if (fDoClusterQA > 0){
2802  // how many of the converted photons are fully contained in the cluster
2803  if (TruePhotonCandidate->IsLargestComponentElectron() && TruePhotonCandidate->IsConversion() && TruePhotonCandidate->IsConversionFullyContained())
2804  fHistoTrueClusConvGammaFullyPt[fiCut]->Fill(TruePhotonCandidate->Pt(), fWeightJetJetMC);
2805  // how often do we have merged pi0/eta...
2806  if ( (TruePhotonCandidate->IsMerged() || TruePhotonCandidate->IsDalitzMerged()) || TruePhotonCandidate->IsMergedPartConv() )
2807  fHistoTrueClusMergedGammaPt[fiCut]->Fill(TruePhotonCandidate->Pt(), fWeightJetJetMC);
2808  // how often do we have a merged cluster with at least one conversion
2809  if (TruePhotonCandidate->IsMergedPartConv())
2810  fHistoTrueClusMergedPartConvGammaPt[fiCut]->Fill(TruePhotonCandidate->Pt(), fWeightJetJetMC);
2811  // how often do we reconstruct Dalitz electrons
2812  if (TruePhotonCandidate->IsDalitz())
2813  fHistoTrueClusDalitzPt[fiCut]->Fill(TruePhotonCandidate->Pt(), fWeightJetJetMC);
2814  // how often merge Dalitz decays
2815  if (TruePhotonCandidate->IsDalitzMerged())
2816  fHistoTrueClusDalitzMergedPt[fiCut]->Fill(TruePhotonCandidate->Pt(), fWeightJetJetMC);
2817  // how often do we see Bremstrahlung
2818  if (TruePhotonCandidate->IsPhotonWithElecMother())
2819  fHistoTrueClusPhotonFromElecMotherPt[fiCut]->Fill(TruePhotonCandidate->Pt(), fWeightJetJetMC);
2820  // how often do we see a shower in the clusters
2821  if (TruePhotonCandidate->IsShower())
2822  fHistoTrueClusShowerPt[fiCut]->Fill(TruePhotonCandidate->Pt(), fWeightJetJetMC);
2823  // how often is the EM a subleading contributor
2824  if (TruePhotonCandidate->IsSubLeadingEM())
2825  fHistoTrueClusSubLeadingPt[fiCut]->Fill(TruePhotonCandidate->Pt(), fWeightJetJetMC);
2826  // how many mother particles point to the cluster
2828  }
2829 
2830  // Check if we are double counting photons
2831  Int_t motherLab = Photon->GetMother(0);
2832  if (motherLab > -1){
2833  if (TruePhotonCandidate->IsLargestComponentPhoton()){
2835  fHistoDoubleCountTrueClusterGammaPt[fiCut]->Fill(TruePhotonCandidate->Pt(),(Double_t)0,fWeightJetJetMC);
2837  }
2838  }
2839  if ( TMath::Abs(fMCEvent->Particle(motherLab)->GetPdgCode()) == 111 &&
2840  TruePhotonCandidate->IsLargestComponentPhoton() &&
2841  TruePhotonCandidate->IsMerged() &&
2842  !TruePhotonCandidate->IsDalitzMerged() &&
2843  !TruePhotonCandidate->IsMergedPartConv()
2844  ){
2845  if(!fDoLightOutput) fHistoTrueClusPi0EM02[fiCut]->Fill(TruePhotonCandidate->E(),clusM02,fWeightJetJetMC);
2846  }
2847  Int_t grandMotherLab = fMCEvent->Particle(motherLab)->GetMother(0);
2848  if (grandMotherLab > -1){
2849  if (TruePhotonCandidate->IsLargestComponentElectron() && TruePhotonCandidate->IsConversion()){
2851  fHistoDoubleCountTrueClusterGammaPt[fiCut]->Fill(TruePhotonCandidate->Pt(),(Double_t)1,fWeightJetJetMC);
2853  }
2854  }
2855  }
2856  }
2857 
2858  return;
2859 }
2860 
2861 
2862 //________________________________________________________________________
2864 {
2865  AliAODMCParticle *Photon = NULL;
2866  TClonesArray *AODMCTrackArray = dynamic_cast<TClonesArray*>(fInputEvent->FindListObject(AliAODMCParticle::StdBranchName()));
2867  if (AODMCTrackArray){
2868  if (!TruePhotonCandidate->GetIsCaloPhoton()) AliFatal("CaloPhotonFlag has not been set task will abort");
2869  if (TruePhotonCandidate->GetNCaloPhotonMCLabels()>0) Photon = (AliAODMCParticle*) AODMCTrackArray->At(TruePhotonCandidate->GetCaloPhotonMCLabel(0));
2870  else return;
2871  }else {
2872  AliInfo("AODMCTrackArray could not be loaded");
2873  return;
2874  }
2875 
2876  if(Photon == NULL){
2877  // cout << "no photon" << endl;
2878  return;
2879  }
2880 
2882  if(!fDoLightOutput) fHistoTrueNLabelsInClusPt[fiCut]->Fill(TruePhotonCandidate->GetNCaloPhotonMCLabels(),TruePhotonCandidate->Pt(),fWeightJetJetMC);
2883 
2884  const AliVVertex* primVtxMC = fMCEvent->GetPrimaryVertex();
2885  Double_t mcProdVtxX = primVtxMC->GetX();
2886  Double_t mcProdVtxY = primVtxMC->GetY();
2887  Double_t mcProdVtxZ = primVtxMC->GetZ();
2888  Bool_t isPrimary = ((AliConvEventCuts*)fEventCutArray->At(fiCut))->IsConversionPrimaryAOD(fInputEvent, Photon, mcProdVtxX, mcProdVtxY, mcProdVtxZ);
2889 
2890  // to get primary distrinction right put mother of conversion electron as particle to check
2891  if (TruePhotonCandidate->IsLargestComponentElectron() && TruePhotonCandidate->IsConversion()){
2892  if (Photon->GetMother()> -1){
2893  AliAODMCParticle *Mother = (AliAODMCParticle*) AODMCTrackArray->At(Photon->GetMother());
2894  isPrimary = ((AliConvEventCuts*)fEventCutArray->At(fiCut))->IsConversionPrimaryAOD( fInputEvent, Mother, mcProdVtxX, mcProdVtxY, mcProdVtxZ);
2895  }
2896  }
2897 
2898  // True Photon
2899  if (TruePhotonCandidate->IsLargestComponentPhoton() || (TruePhotonCandidate->IsLargestComponentElectron() && TruePhotonCandidate->IsConversion()) ){
2900  fHistoTrueClusGammaPt[fiCut]->Fill(TruePhotonCandidate->Pt(),fWeightJetJetMC);
2901  if(!fDoLightOutput){
2902  if (TruePhotonCandidate->IsLargestComponentElectron() && TruePhotonCandidate->IsConversion()){
2903  fHistoTrueClusConvGammaPt[fiCut]->Fill(TruePhotonCandidate->Pt(), fWeightJetJetMC);
2904  }
2905  if(isPrimary){
2906  fHistoTruePrimaryClusGammaPt[fiCut]->Fill(TruePhotonCandidate->Pt(),fWeightJetJetMC);
2907  fHistoTruePrimaryClusGammaESDPtMCPt[fiCut]->Fill(TruePhotonCandidate->Pt(),Photon->Pt(),fWeightJetJetMC);
2908  if (TruePhotonCandidate->IsLargestComponentElectron() && TruePhotonCandidate->IsConversion()){
2909  fHistoTruePrimaryClusConvGammaPt[fiCut]->Fill(TruePhotonCandidate->Pt(), fWeightJetJetMC);
2910  AliAODMCParticle *Mother = (AliAODMCParticle*) AODMCTrackArray->At(Photon->GetMother());
2911  fHistoTruePrimaryClusConvGammaESDPtMCPt[fiCut]->Fill(TruePhotonCandidate->Pt(),Mother->Pt(),fWeightJetJetMC);
2912  }
2913  }else {
2914  Int_t secondaryClass = -1;
2915  if (TruePhotonCandidate->IsLargestComponentElectron() && TruePhotonCandidate->IsConversion())
2916  secondaryClass = ((AliConvEventCuts*)fEventCutArray->At(fiCut))->SecondaryClassificationPhotonAOD( Photon, AODMCTrackArray, kTRUE);
2917  else
2918  secondaryClass = ((AliConvEventCuts*)fEventCutArray->At(fiCut))->SecondaryClassificationPhotonAOD( Photon, AODMCTrackArray, kFALSE);
2919  // all secondaries
2920  if (secondaryClass > 0 ){
2921  fHistoTrueSecondaryClusGammaPt[fiCut]->Fill(TruePhotonCandidate->Pt(),fWeightJetJetMC);
2922  }
2923  // secondaries from K0s
2924  if (secondaryClass == 2)
2925  fHistoTrueSecondaryClusGammaFromK0sPt[fiCut]->Fill(TruePhotonCandidate->Pt(),fWeightJetJetMC);
2926  // secondaries from Lambda
2927  else if (secondaryClass == 3)
2928  fHistoTrueSecondaryClusGammaFromLambdaPt[fiCut]->Fill(TruePhotonCandidate->Pt(),fWeightJetJetMC);
2929  else if (secondaryClass == 5)
2930  fHistoTrueSecondaryClusGammaFromK0lPt[fiCut]->Fill(TruePhotonCandidate->Pt(),fWeightJetJetMC);
2931  }
2932  }
2933 
2934  }else if (TruePhotonCandidate->IsLargestComponentElectron()) {
2935  if(!fDoLightOutput) fHistoTrueClusElectronPt[fiCut]->Fill(TruePhotonCandidate->Pt(),fWeightJetJetMC);
2936  }else {
2937  if(!fDoLightOutput) fHistoTrueClusEMNonLeadingPt[fiCut]->Fill(TruePhotonCandidate->Pt(),fWeightJetJetMC);
2938  }
2939 
2940  if(!fDoLightOutput) {
2941  if ( TruePhotonCandidate->IsLargestComponentPhoton() && !TruePhotonCandidate->IsPhotonWithElecMother() &&
2942  !TruePhotonCandidate->IsMerged() && !TruePhotonCandidate->IsMergedPartConv() && !TruePhotonCandidate->IsDalitzMerged() )
2943  fHistoTrueClusGammaEM02[fiCut]->Fill(TruePhotonCandidate->E(),clusM02, fWeightJetJetMC);
2944  }
2945  if (fDoClusterQA > 0){
2946  if (TruePhotonCandidate->IsLargestComponentElectron() && TruePhotonCandidate->IsConversion() && TruePhotonCandidate->IsConversionFullyContained())
2947  fHistoTrueClusConvGammaFullyPt[fiCut]->Fill(TruePhotonCandidate->Pt(), fWeightJetJetMC);
2948  if (TruePhotonCandidate->IsMerged() || TruePhotonCandidate->IsMergedPartConv() || TruePhotonCandidate->IsDalitzMerged())
2949  fHistoTrueClusMergedGammaPt[fiCut]->Fill(TruePhotonCandidate->Pt(), fWeightJetJetMC);
2950  if (TruePhotonCandidate->IsMergedPartConv())
2951  fHistoTrueClusMergedPartConvGammaPt[fiCut]->Fill(TruePhotonCandidate->Pt(), fWeightJetJetMC);
2952  if (TruePhotonCandidate->IsDalitz())
2953  fHistoTrueClusDalitzPt[fiCut]->Fill(TruePhotonCandidate->Pt(), fWeightJetJetMC);
2954  if (TruePhotonCandidate->IsDalitzMerged())
2955  fHistoTrueClusDalitzMergedPt[fiCut]->Fill(TruePhotonCandidate->Pt(), fWeightJetJetMC);
2956  if (TruePhotonCandidate->IsPhotonWithElecMother())
2957  fHistoTrueClusPhotonFromElecMotherPt[fiCut]->Fill(TruePhotonCandidate->Pt(), fWeightJetJetMC);
2958  if (TruePhotonCandidate->IsShower())
2959  fHistoTrueClusShowerPt[fiCut]->Fill(TruePhotonCandidate->Pt(), fWeightJetJetMC);
2960  if (TruePhotonCandidate->IsSubLeadingEM())
2961  fHistoTrueClusSubLeadingPt[fiCut]->Fill(TruePhotonCandidate->Pt(), fWeightJetJetMC);
2963 
2964  }
2965  Int_t motherLab = Photon->GetMother();
2966  if (motherLab > -1){
2967  if (TruePhotonCandidate->IsLargestComponentPhoton()){
2969  fHistoDoubleCountTrueClusterGammaPt[fiCut]->Fill(TruePhotonCandidate->Pt(),(Double_t)0,fWeightJetJetMC);
2971  }
2972  }
2973  if(!fDoLightOutput) {
2974  if ( TMath::Abs(((AliAODMCParticle*) AODMCTrackArray->At(motherLab))->GetPdgCode()) == 111 && TruePhotonCandidate->IsLargestComponentPhoton() && TruePhotonCandidate->IsMerged() && !TruePhotonCandidate->IsDalitzMerged() && !TruePhotonCandidate->IsMergedPartConv())
2975  fHistoTrueClusPi0EM02[fiCut]->Fill(TruePhotonCandidate->E(),clusM02, fWeightJetJetMC);
2976  }
2977  Int_t grandMotherLab = ((AliAODMCParticle*) AODMCTrackArray->At(motherLab))->GetMother();
2978  if (grandMotherLab > -1){
2979  if (TruePhotonCandidate->IsLargestComponentElectron() && TruePhotonCandidate->IsConversion()){
2981  fHistoDoubleCountTrueClusterGammaPt[fiCut]->Fill(TruePhotonCandidate->Pt(),(Double_t)1,fWeightJetJetMC);
2983  }
2984  }
2985  }
2986  }
2987 
2988  return;
2989 }
2990 
2991 //________________________________________________________________________
2993 {
2994  Int_t nV0 = 0;
2995  TList *GammaCandidatesStepOne = new TList();
2996  TList *GammaCandidatesStepTwo = new TList();
2997  // Loop over Photon Candidates allocated by ReaderV1
2998  for(Int_t i = 0; i < fReaderGammas->GetEntriesFast(); i++){
2999  AliAODConversionPhoton* PhotonCandidate = (AliAODConversionPhoton*) fReaderGammas->At(i);
3000  if(!PhotonCandidate) continue;
3001  fIsFromDesiredHeader = kTRUE;
3002  if(fIsMC>0 && ((AliConvEventCuts*)fEventCutArray->At(fiCut))->GetSignalRejection() != 0){
3003  Int_t isPosFromMBHeader = ((AliConvEventCuts*)fEventCutArray->At(fiCut))->IsParticleFromBGEvent(PhotonCandidate->GetMCLabelPositive(), fMCEvent, fInputEvent);
3004  if(isPosFromMBHeader == 0 && ((AliConvEventCuts*)fEventCutArray->At(fiCut))->GetSignalRejection() != 3) continue;
3005  Int_t isNegFromMBHeader = ((AliConvEventCuts*)fEventCutArray->At(fiCut))->IsParticleFromBGEvent(PhotonCandidate->GetMCLabelNegative(), fMCEvent, fInputEvent);
3006  if(isNegFromMBHeader == 0 && ((AliConvEventCuts*)fEventCutArray->At(fiCut))->GetSignalRejection() != 3) continue;
3007  if( (isNegFromMBHeader+isPosFromMBHeader) != 4) fIsFromDesiredHeader = kFALSE;
3008  }
3009 
3010  if(!((AliConversionPhotonCuts*)fCutArray->At(fiCut))->PhotonIsSelected(PhotonCandidate,fInputEvent)) continue;
3011  if(!((AliConversionPhotonCuts*)fCutArray->At(fiCut))->InPlaneOutOfPlaneCut(PhotonCandidate->GetPhotonPhi(),fEventPlaneAngle)) continue;
3012  if(!((AliConversionPhotonCuts*)fCutArray->At(fiCut))->UseElecSharingCut() &&
3013  !((AliConversionPhotonCuts*)fCutArray->At(fiCut))->UseToCloseV0sCut()){
3014  fGammaCandidates->Add(PhotonCandidate); // if no second loop is required add to events good gammas
3015 
3017  if(!fDoLightOutput) fHistoConvGammaPt[fiCut]->Fill(PhotonCandidate->Pt(),fWeightJetJetMC);
3018  if (fDoPhotonQA > 0){
3019  fHistoConvGammaR[fiCut]->Fill(PhotonCandidate->GetConversionRadius());
3020  fHistoConvGammaEta[fiCut]->Fill(PhotonCandidate->Eta());
3021  }
3022  }
3023  if(fIsMC>0){
3024  if(fInputEvent->IsA()==AliESDEvent::Class())
3025  ProcessTruePhotonCandidates(PhotonCandidate);
3026  if(fInputEvent->IsA()==AliAODEvent::Class())
3027  ProcessTruePhotonCandidatesAOD(PhotonCandidate);
3028  }
3029  if (fIsFromDesiredHeader && fDoPhotonQA == 2){
3030  if (fIsHeavyIon == 1 && PhotonCandidate->Pt() > 0.399 && PhotonCandidate->Pt() < 12.){
3031  fPtGamma = PhotonCandidate->Pt();
3032  fDCAzPhoton = PhotonCandidate->GetDCAzToPrimVtx();
3033  fRConvPhoton = PhotonCandidate->GetConversionRadius();
3034  fEtaPhoton = PhotonCandidate->GetPhotonEta();
3035  fCharCatPhoton = PhotonCandidate->GetPhotonQuality();
3036  fTreeConvGammaPtDcazCat[fiCut]->Fill();
3037  }else if ( PhotonCandidate->Pt() > 0.299 && PhotonCandidate->Pt() < 16.){
3038  fPtGamma = PhotonCandidate->Pt();
3039  fDCAzPhoton = PhotonCandidate->GetDCAzToPrimVtx();
3040  fRConvPhoton = PhotonCandidate->GetConversionRadius();
3041  fEtaPhoton = PhotonCandidate->GetPhotonEta();
3042  fCharCatPhoton = PhotonCandidate->GetPhotonQuality();
3043  fTreeConvGammaPtDcazCat[fiCut]->Fill();
3044  }
3045  }
3046  }else if(((AliConversionPhotonCuts*)fCutArray->At(fiCut))->UseElecSharingCut()){ // if Shared Electron cut is enabled, Fill array, add to step one
3047  ((AliConversionPhotonCuts*)fCutArray->At(fiCut))->FillElectonLabelArray(PhotonCandidate,nV0);
3048  nV0++;
3049  GammaCandidatesStepOne->Add(PhotonCandidate);
3050  }else if(!((AliConversionPhotonCuts*)fCutArray->At(fiCut))->UseElecSharingCut() &&
3051  ((AliConversionPhotonCuts*)fCutArray->At(fiCut))->UseToCloseV0sCut()){ // shared electron is disabled, step one not needed -> step two
3052  GammaCandidatesStepTwo->Add(PhotonCandidate);
3053  }
3054  }
3055  if(((AliConversionPhotonCuts*)fCutArray->At(fiCut))->UseElecSharingCut()){
3056  for(Int_t i = 0;i<GammaCandidatesStepOne->GetEntries();i++){
3057  AliAODConversionPhoton *PhotonCandidate= (AliAODConversionPhoton*) GammaCandidatesStepOne->At(i);
3058  if(!PhotonCandidate) continue;
3059  fIsFromDesiredHeader = kTRUE;
3060  if(fMCEvent && ((AliConvEventCuts*)fEventCutArray->At(fiCut))->GetSignalRejection() != 0){
3061  Int_t isPosFromMBHeader = ((AliConvEventCuts*)fEventCutArray->At(fiCut))->IsParticleFromBGEvent(PhotonCandidate->GetMCLabelPositive(), fMCEvent, fInputEvent);
3062  Int_t isNegFromMBHeader = ((AliConvEventCuts*)fEventCutArray->At(fiCut))->IsParticleFromBGEvent(PhotonCandidate->GetMCLabelNegative(), fMCEvent, fInputEvent);
3063  if( (isNegFromMBHeader+isPosFromMBHeader) != 4) fIsFromDesiredHeader = kFALSE;
3064  }
3065  if(!((AliConversionPhotonCuts*)fCutArray->At(fiCut))->RejectSharedElectronV0s(PhotonCandidate,i,GammaCandidatesStepOne->GetEntries())) continue;
3066  if(!((AliConversionPhotonCuts*)fCutArray->At(fiCut))->UseToCloseV0sCut()){ // To Colse v0s cut diabled, step two not needed
3067  fGammaCandidates->Add(PhotonCandidate);
3069  if(!fDoLightOutput) fHistoConvGammaPt[fiCut]->Fill(PhotonCandidate->Pt(),fWeightJetJetMC);
3070  if (fDoPhotonQA > 0){
3071  fHistoConvGammaR[fiCut]->Fill(PhotonCandidate->GetConversionRadius());
3072  fHistoConvGammaEta[fiCut]->Fill(PhotonCandidate->Eta());
3073  }
3074  }
3075  if(fIsMC>0){
3076  if(fInputEvent->IsA()==AliESDEvent::Class())
3077  ProcessTruePhotonCandidates(PhotonCandidate);
3078  if(fInputEvent->IsA()==AliAODEvent::Class())
3079  ProcessTruePhotonCandidatesAOD(PhotonCandidate);
3080  }
3081  if (fIsFromDesiredHeader && fDoPhotonQA == 2){
3082  if (fIsHeavyIon ==1 && PhotonCandidate->Pt() > 0.399 && PhotonCandidate->Pt() < 12.){
3083  fPtGamma = PhotonCandidate->Pt();
3084  fDCAzPhoton = PhotonCandidate->GetDCAzToPrimVtx();
3085  fRConvPhoton = PhotonCandidate->GetConversionRadius();
3086  fEtaPhoton = PhotonCandidate->GetPhotonEta();
3087  fCharCatPhoton = PhotonCandidate->GetPhotonQuality();
3088  fTreeConvGammaPtDcazCat[fiCut]->Fill();
3089  }else if ( PhotonCandidate->Pt() > 0.299 && PhotonCandidate->Pt() < 16.){
3090  fPtGamma = PhotonCandidate->Pt();
3091  fDCAzPhoton = PhotonCandidate->GetDCAzToPrimVtx();
3092  fRConvPhoton = PhotonCandidate->GetConversionRadius();
3093  fEtaPhoton = PhotonCandidate->GetPhotonEta();
3094  fCharCatPhoton = PhotonCandidate->GetPhotonQuality();
3095  fTreeConvGammaPtDcazCat[fiCut]->Fill();
3096  }
3097  }
3098  } else GammaCandidatesStepTwo->Add(PhotonCandidate); // Close v0s cut enabled -> add to list two
3099  }
3100  }
3101  if(((AliConversionPhotonCuts*)fCutArray->At(fiCut))->UseToCloseV0sCut()){
3102  for(Int_t i = 0;i<GammaCandidatesStepTwo->GetEntries();i++){
3103  AliAODConversionPhoton* PhotonCandidate = (AliAODConversionPhoton*) GammaCandidatesStepTwo->At(i);
3104  if(!PhotonCandidate) continue;
3105  fIsFromDesiredHeader = kTRUE;
3106  if(fMCEvent && ((AliConvEventCuts*)fEventCutArray->At(fiCut))->GetSignalRejection() != 0){
3107  Int_t isPosFromMBHeader = ((AliConvEventCuts*)fEventCutArray->At(fiCut))->IsParticleFromBGEvent(PhotonCandidate->GetMCLabelPositive(), fMCEvent, fInputEvent);
3108  Int_t isNegFromMBHeader = ((AliConvEventCuts*)fEventCutArray->At(fiCut))->IsParticleFromBGEvent(PhotonCandidate->GetMCLabelNegative(), fMCEvent, fInputEvent);
3109  if( (isNegFromMBHeader+isPosFromMBHeader) != 4) fIsFromDesiredHeader = kFALSE;
3110  }
3111  if(!((AliConversionPhotonCuts*)fCutArray->At(fiCut))->RejectToCloseV0s(PhotonCandidate,GammaCandidatesStepTwo,i)) continue;
3112  fGammaCandidates->Add(PhotonCandidate); // Add gamma to current cut TList
3114  if(!fDoLightOutput) fHistoConvGammaPt[fiCut]->Fill(PhotonCandidate->Pt(),fWeightJetJetMC);
3115  if (fDoPhotonQA > 0){
3116  fHistoConvGammaR[fiCut]->Fill(PhotonCandidate->GetConversionRadius());
3117  fHistoConvGammaEta[fiCut]->Fill(PhotonCandidate->Eta());
3118  }
3119  }
3120  if(fIsMC>0){
3121  if(fInputEvent->IsA()==AliESDEvent::Class())
3122  ProcessTruePhotonCandidates(PhotonCandidate);
3123  if(fInputEvent->IsA()==AliAODEvent::Class())
3124  ProcessTruePhotonCandidatesAOD(PhotonCandidate);
3125  }
3126  if (fIsFromDesiredHeader && fDoPhotonQA == 2){
3127  if (fIsHeavyIon == 1 && PhotonCandidate->Pt() > 0.399 && PhotonCandidate->Pt() < 12.){
3128  fPtGamma = PhotonCandidate->Pt();
3129  fDCAzPhoton = PhotonCandidate->GetDCAzToPrimVtx();
3130  fRConvPhoton = PhotonCandidate->GetConversionRadius();
3131  fEtaPhoton = PhotonCandidate->GetPhotonEta();
3132  fCharCatPhoton = PhotonCandidate->GetPhotonQuality();
3133  fTreeConvGammaPtDcazCat[fiCut]->Fill();
3134  }else if ( PhotonCandidate->Pt() > 0.299 && PhotonCandidate->Pt() < 16.){
3135  fPtGamma = PhotonCandidate->Pt();
3136  fDCAzPhoton = PhotonCandidate->GetDCAzToPrimVtx();
3137  fRConvPhoton = PhotonCandidate->GetConversionRadius();
3138  fEtaPhoton = PhotonCandidate->GetPhotonEta();
3139  fCharCatPhoton = PhotonCandidate->GetPhotonQuality();
3140  fTreeConvGammaPtDcazCat[fiCut]->Fill();
3141  }
3142  }
3143  }
3144  }
3145 
3146  delete GammaCandidatesStepOne;
3147  GammaCandidatesStepOne = 0x0;
3148  delete GammaCandidatesStepTwo;
3149  GammaCandidatesStepTwo = 0x0;
3150 
3151 }
3152 
3153 //________________________________________________________________________
3155 {
3156  const AliVVertex* primVtxMC = fMCEvent->GetPrimaryVertex();
3157  Double_t mcProdVtxX = primVtxMC->GetX();
3158  Double_t mcProdVtxY = primVtxMC->GetY();
3159  Double_t mcProdVtxZ = primVtxMC->GetZ();
3160 
3161  Double_t magField = fInputEvent->GetMagneticField();
3162  if( magField < 0.0 ){
3163  magField = 1.0;
3164  }
3165  else {
3166  magField = -1.0;
3167  }
3168 
3169  TClonesArray *AODMCTrackArray = dynamic_cast<TClonesArray*>(fInputEvent->FindListObject(AliAODMCParticle::StdBranchName()));
3170  if (AODMCTrackArray == NULL) return;
3171  AliAODMCParticle *posDaughter = (AliAODMCParticle*) AODMCTrackArray->At(TruePhotonCandidate->GetMCLabelPositive());
3172  AliAODMCParticle *negDaughter = (AliAODMCParticle*) AODMCTrackArray->At(TruePhotonCandidate->GetMCLabelNegative());
3173  fCharPhotonMCInfo = 0;
3174 
3175  if(posDaughter == NULL || negDaughter == NULL) return; // One particle does not exist
3176  Int_t pdgCode[2] = {TMath::Abs(posDaughter->GetPdgCode()),TMath::Abs(negDaughter->GetPdgCode())};
3177 
3178  if(posDaughter->GetMother() != negDaughter->GetMother()){
3179  FillPhotonCombinatorialBackgroundHist(TruePhotonCandidate, pdgCode);
3180  fCharPhotonMCInfo = 1;
3181  return;
3182  }
3183  else if(posDaughter->GetMother() == -1){
3184  FillPhotonCombinatorialBackgroundHist(TruePhotonCandidate, pdgCode);
3185  fCharPhotonMCInfo = 1;
3186  return;
3187  }
3188 
3189  if(pdgCode[0]!=11 || pdgCode[1]!=11){
3190  fCharPhotonMCInfo = 1;
3191  return; //One Particle is not a electron
3192  }
3193 
3194  if(posDaughter->GetPdgCode()==negDaughter->GetPdgCode()){
3195  fCharPhotonMCInfo = 1;
3196  return; // Same Charge
3197  }
3198 
3199  AliAODMCParticle *Photon = (AliAODMCParticle*) AODMCTrackArray->At(posDaughter->GetMother());
3200  if(Photon->GetPdgCode() != 22){
3201  fCharPhotonMCInfo = 1;
3202  return; // Mother is no Photon
3203  }
3204 
3205  if(((posDaughter->GetMCProcessCode())) != 5 || ((negDaughter->GetMCProcessCode())) != 5){
3206  fCharPhotonMCInfo = 1;
3207  return;// check if the daughters come from a conversion
3208  }
3209  // STILL A BUG IN ALIROOT >>8 HAS TPO BE REMOVED AFTER FIX
3210 
3211 
3212 
3213  // True Photon
3215  if(!fDoLightOutput) fHistoTrueConvGammaPt[fiCut]->Fill(TruePhotonCandidate->Pt(),fWeightJetJetMC);
3216  if (fDoPhotonQA > 0) fHistoTrueConvGammaEta[fiCut]->Fill(TruePhotonCandidate->Eta());
3217  if (CheckVectorForDoubleCount(fVectorDoubleCountTrueConvGammas,posDaughter->GetMother())){
3218  if(!fDoLightOutput) fHistoDoubleCountTrueConvGammaRPt[fiCut]->Fill(TruePhotonCandidate->GetConversionRadius(),TruePhotonCandidate->Pt(),fWeightJetJetMC);
3219  FillMultipleCountMap(fMapMultipleCountTrueConvGammas,posDaughter->GetMother());
3220  }
3221  }
3222 
3223  Bool_t isPrimary = ((AliConvEventCuts*)fEventCutArray->At(fiCut))->IsConversionPrimaryAOD(fInputEvent, Photon, mcProdVtxX, mcProdVtxY, mcProdVtxZ);
3224  if(isPrimary){
3225  // Count just primary MC Gammas as true --> For Ratio esdtruegamma / mcconvgamma
3227  fCharPhotonMCInfo = 6;
3228  if(!fDoLightOutput){
3229  fHistoTruePrimaryConvGammaPt[fiCut]->Fill(TruePhotonCandidate->Pt(),fWeightJetJetMC);
3230  fHistoTruePrimaryConvGammaESDPtMCPt[fiCut]->Fill(TruePhotonCandidate->Pt(),Photon->Pt(),fWeightJetJetMC); // Allways Filled
3231  }
3232  }
3233  // (Not Filled for i6, Extra Signal Gamma (parambox) are secondary)
3234  }else {
3236 
3237  fCharPhotonMCInfo = 2;
3238  // check for secondaries from K0s
3239  if(((AliAODMCParticle*)AODMCTrackArray->At(Photon->GetMother()))->GetMother() > -1 &&
3240  ((AliAODMCParticle*)AODMCTrackArray->At(((AliAODMCParticle*)AODMCTrackArray->At(Photon->GetMother()))->GetMother()))->GetPdgCode() == 310){
3241  fCharPhotonMCInfo = 4;
3242  if(!fDoLightOutput){
3243  fHistoTrueSecondaryConvGammaPt[fiCut]->Fill(TruePhotonCandidate->Pt(),0.,fWeightJetJetMC);
3244  fHistoTrueSecondaryConvGammaMCPt[fiCut]->Fill(Photon->Pt(),0.,fWeightJetJetMC);
3245  fHistoTrueSecondaryConvGammaFromXFromK0sMCPtESDPt[fiCut]->Fill(Photon->Pt(),TruePhotonCandidate->Pt(),fWeightJetJetMC);
3246  }
3247  // check for secondaries from K0l
3248  } else if(((AliAODMCParticle*)AODMCTrackArray->At(Photon->GetMother()))->GetMother() > -1 &&
3249  ((AliAODMCParticle*)AODMCTrackArray->At(((AliAODMCParticle*)AODMCTrackArray->At(Photon->GetMother()))->GetMother()))->GetPdgCode() == 130) {
3250  fCharPhotonMCInfo = 7;
3251  if(!fDoLightOutput){
3252  fHistoTrueSecondaryConvGammaPt[fiCut]->Fill(TruePhotonCandidate->Pt(),1.,fWeightJetJetMC);
3253  fHistoTrueSecondaryConvGammaMCPt[fiCut]->Fill(Photon->Pt(),1.,fWeightJetJetMC);
3254  fHistoTrueSecondaryConvGammaFromXFromK0lMCPtESDPt[fiCut]->Fill(Photon->Pt(),TruePhotonCandidate->Pt(),fWeightJetJetMC);
3255  }
3256  // check for secondaries from Lambda
3257  } else if(((AliAODMCParticle*)AODMCTrackArray->At(Photon->GetMother()))->GetMother() > -1 &&
3258  ((AliAODMCParticle*)AODMCTrackArray->At(((AliAODMCParticle*)AODMCTrackArray->At(Photon->GetMother()))->GetMother()))->GetPdgCode() == 3122){
3259  fCharPhotonMCInfo = 5;
3260  if(!fDoLightOutput){
3261  fHistoTrueSecondaryConvGammaPt[fiCut]->Fill(TruePhotonCandidate->Pt(),2.,fWeightJetJetMC);
3262  fHistoTrueSecondaryConvGammaMCPt[fiCut]->Fill(Photon->Pt(),0.,fWeightJetJetMC);
3263  fHistoTrueSecondaryConvGammaFromXFromLambdaMCPtESDPt[fiCut]->Fill(Photon->Pt(),TruePhotonCandidate->Pt(),fWeightJetJetMC);
3264  }
3265  } else if (((AliAODMCParticle*)AODMCTrackArray->At(Photon->GetMother()))->GetMother() > -1 &&
3266  ((AliAODMCParticle*)AODMCTrackArray->At(((AliAODMCParticle*)AODMCTrackArray->At(Photon->GetMother()))->GetMother()))->GetPdgCode() == 221) {
3267  fCharPhotonMCInfo = 3;
3268  if(!fDoLightOutput){
3269  fHistoTrueSecondaryConvGammaPt[fiCut]->Fill(TruePhotonCandidate->Pt(),3.,fWeightJetJetMC);
3270  fHistoTrueSecondaryConvGammaMCPt[fiCut]->Fill(Photon->Pt(),3.,fWeightJetJetMC);
3271  }
3272  } else {
3273  if(!fDoLightOutput){
3274  fHistoTrueSecondaryConvGammaPt[fiCut]->Fill(TruePhotonCandidate->Pt(),3.,fWeightJetJetMC);
3275  fHistoTrueSecondaryConvGammaMCPt[fiCut]->Fill(Photon->Pt(),3.,fWeightJetJetMC);
3276  }
3277  }
3278  }
3279  }
3280  TruePhotonCandidate->SetIsTrueConvertedPhoton();
3281 }
3282 
3283 //________________________________________________________________________
3285 {
3286  const AliVVertex* primVtxMC = fMCEvent->GetPrimaryVertex();
3287  Double_t mcProdVtxX = primVtxMC->GetX();
3288  Double_t mcProdVtxY = primVtxMC->GetY();
3289  Double_t mcProdVtxZ = primVtxMC->GetZ();
3290 
3291  Double_t magField = fInputEvent->GetMagneticField();
3292  if( magField < 0.0 ){
3293  magField = 1.0;
3294  }
3295  else {
3296  magField = -1.0;
3297  }
3298 
3299  // Process True Photons
3300  TParticle *posDaughter = TruePhotonCandidate->GetPositiveMCDaughter(fMCEvent);
3301  TParticle *negDaughter = TruePhotonCandidate->GetNegativeMCDaughter(fMCEvent);
3302  fCharPhotonMCInfo = 0;
3303 
3304  if(posDaughter == NULL || negDaughter == NULL) return; // One particle does not exist
3305  Int_t pdgCode[2] = {TMath::Abs(posDaughter->GetPdgCode()),TMath::Abs(negDaughter->GetPdgCode())};
3306  fCharPhotonMCInfo = 1;
3307  if(posDaughter->GetMother(0) != negDaughter->GetMother(0)){
3308  FillPhotonCombinatorialBackgroundHist(TruePhotonCandidate, pdgCode);
3309  return;
3310  }
3311  else if(posDaughter->GetMother(0) == -1){
3312  FillPhotonCombinatorialBackgroundHist(TruePhotonCandidate, pdgCode);
3313  return;
3314  }
3315 
3316  if(pdgCode[0]!=11 || pdgCode[1]!=11) return; //One Particle is not a electron
3317 
3318  if(posDaughter->GetPdgCode()==negDaughter->GetPdgCode()) return; // Same Charge
3319 
3320  TParticle *Photon = TruePhotonCandidate->GetMCParticle(fMCEvent);
3321 
3322  if(Photon->GetPdgCode() != 22){
3323  return; // Mother is no Photon
3324  }
3325 
3326  if(posDaughter->GetUniqueID() != 5 || negDaughter->GetUniqueID() !=5) return;// check if the daughters come from a conversion
3327 
3328  // True Photon
3330  if(!fDoLightOutput) fHistoTrueConvGammaPt[fiCut]->Fill(TruePhotonCandidate->Pt(),fWeightJetJetMC);
3331  if (fDoPhotonQA > 0) fHistoTrueConvGammaEta[fiCut]->Fill(TruePhotonCandidate->Eta());
3332  if (CheckVectorForDoubleCount(fVectorDoubleCountTrueConvGammas,posDaughter->GetMother(0))){
3333  if(!fDoLightOutput) fHistoDoubleCountTrueConvGammaRPt[fiCut]->Fill(TruePhotonCandidate->GetConversionRadius(),TruePhotonCandidate->Pt(),fWeightJetJetMC);
3334  FillMultipleCountMap(fMapMultipleCountTrueConvGammas,posDaughter->GetMother(0));
3335  }
3336  }
3337  Bool_t isPrimary = ((AliConvEventCuts*)fEventCutArray->At(fiCut))->IsConversionPrimaryESD( fMCEvent, posDaughter->GetMother(0), mcProdVtxX, mcProdVtxY, mcProdVtxZ);
3338  if(isPrimary){
3339  // Count just primary MC Gammas as true --> For Ratio esdtruegamma / mcconvgamma
3341  fCharPhotonMCInfo = 6;
3342  if(!fDoLightOutput){
3343  fHistoTruePrimaryConvGammaPt[fiCut]->Fill(TruePhotonCandidate->Pt(),fWeightJetJetMC);
3344  fHistoTruePrimaryConvGammaESDPtMCPt[fiCut]->Fill(TruePhotonCandidate->Pt(),Photon->Pt(),fWeightJetJetMC); // Allways Filled
3345  }
3346  }
3347  // (Not Filled for i6, Extra Signal Gamma (parambox) are secondary)
3348  }else {
3349  // fill secondary histograms
3351  fCharPhotonMCInfo = 2;
3352  if( Photon->GetMother(0) > -1 && fMCEvent->Particle(Photon->GetMother(0))->GetMother(0) > -1){
3353  if (fMCEvent->Particle(fMCEvent->Particle(Photon->GetMother(0))->GetMother(0))->GetPdgCode() == 310){
3354  fCharPhotonMCInfo = 4;
3355  if (!fDoLightOutput){
3356  fHistoTrueSecondaryConvGammaPt[fiCut]->Fill(TruePhotonCandidate->Pt(),0.,fWeightJetJetMC);
3357  fHistoTrueSecondaryConvGammaMCPt[fiCut]->Fill(Photon->Pt(),0.,fWeightJetJetMC);
3358  fHistoTrueSecondaryConvGammaFromXFromK0sMCPtESDPt[fiCut]->Fill(Photon->Pt(),TruePhotonCandidate->Pt(),fWeightJetJetMC);
3359  }
3360  } else if (fMCEvent->Particle(fMCEvent->Particle(Photon->GetMother(0))->GetMother(0))->GetPdgCode() == 130) {
3361  fCharPhotonMCInfo = 7;
3362  if (!fDoLightOutput){
3363  fHistoTrueSecondaryConvGammaPt[fiCut]->Fill(TruePhotonCandidate->Pt(),1.,fWeightJetJetMC);
3364  fHistoTrueSecondaryConvGammaMCPt[fiCut]->Fill(Photon->Pt(),1.,fWeightJetJetMC);
3365  fHistoTrueSecondaryConvGammaFromXFromK0lMCPtESDPt[fiCut]->Fill(Photon->Pt(),TruePhotonCandidate->Pt(),fWeightJetJetMC);
3366  }
3367  } else if (fMCEvent->Particle(fMCEvent->Particle(Photon->GetMother(0))->GetMother(0))->GetPdgCode() == 3122) {
3368  fCharPhotonMCInfo = 5;
3369  if (!fDoLightOutput){
3370  fHistoTrueSecondaryConvGammaPt[fiCut]->Fill(TruePhotonCandidate->Pt(),2.,fWeightJetJetMC);
3371  fHistoTrueSecondaryConvGammaMCPt[fiCut]->Fill(Photon->Pt(),2.,fWeightJetJetMC);
3372  fHistoTrueSecondaryConvGammaFromXFromLambdaMCPtESDPt[fiCut]->Fill(Photon->Pt(),TruePhotonCandidate->Pt(),fWeightJetJetMC);
3373  }
3374  } else if (fMCEvent->Particle(fMCEvent->Particle(Photon->GetMother(0))->GetMother(0))->GetPdgCode() == 221) {
3375  fCharPhotonMCInfo = 3;
3376  if (!fDoLightOutput){
3377  fHistoTrueSecondaryConvGammaPt[fiCut]->Fill(Photon->Pt(),3.,fWeightJetJetMC);
3378  fHistoTrueSecondaryConvGammaMCPt[fiCut]->Fill(TruePhotonCandidate->Pt(),3.,fWeightJetJetMC);
3379  }
3380  } else {
3381  if (!fDoLightOutput){
3382  fHistoTrueSecondaryConvGammaPt[fiCut]->Fill(TruePhotonCandidate->Pt(),3.,fWeightJetJetMC);
3383  fHistoTrueSecondaryConvGammaMCPt[fiCut]->Fill(Photon->Pt(),3.,fWeightJetJetMC);
3384  }
3385  }
3386  } else {
3387  if (!fDoLightOutput){
3388  fHistoTrueSecondaryConvGammaPt[fiCut]->Fill(TruePhotonCandidate->Pt(),3.,fWeightJetJetMC);
3389  fHistoTrueSecondaryConvGammaMCPt[fiCut]->Fill(Photon->Pt(),3.,fWeightJetJetMC);
3390  }
3391  }
3392  }
3393  }
3394  TruePhotonCandidate->SetIsTrueConvertedPhoton();
3395  return;
3396 }
3397 //________________________________________________________________________
3399 {
3400  const AliVVertex* primVtxMC = fMCEvent->GetPrimaryVertex();
3401  Double_t mcProdVtxX = primVtxMC->GetX();
3402  Double_t mcProdVtxY = primVtxMC->GetY();
3403  Double_t mcProdVtxZ = primVtxMC->GetZ();
3404 
3405  TClonesArray *AODMCTrackArray = dynamic_cast<TClonesArray*>(fInputEvent->FindListObject(AliAODMCParticle::StdBranchName()));
3406  if (AODMCTrackArray == NULL) return;
3407 
3408  // Loop over all primary MC particle
3409  for(Long_t i = 0; i < AODMCTrackArray->GetEntriesFast(); i++) {
3410 
3411  AliAODMCParticle* particle = static_cast<AliAODMCParticle*>(AODMCTrackArray->At(i));
3412  if (!particle) continue;
3413 
3414  Bool_t isPrimary = ((AliConvEventCuts*)fEventCutArray->At(fiCut))->IsConversionPrimaryAOD(fInputEvent, particle, mcProdVtxX, mcProdVtxY, mcProdVtxZ);
3415  if (isPrimary) {
3416 
3417  Int_t isMCFromMBHeader = -1;
3418  if(((AliConvEventCuts*)fEventCutArray->At(fiCut))->GetSignalRejection() != 0){
3419  isMCFromMBHeader = ((AliConvEventCuts*)fEventCutArray->At(fiCut))->IsParticleFromBGEvent(i, fMCEvent, fInputEvent);
3420  if(isMCFromMBHeader == 0 && ((AliConvEventCuts*)fEventCutArray->At(fiCut))->GetSignalRejection() != 3) continue;
3421  }
3422 
3423  if(!((AliConversionPhotonCuts*)fCutArray->At(fiCut))->InPlaneOutOfPlaneCut(particle->Phi(),fEventPlaneAngle,kFALSE)) continue;
3424  if(!fDoLightOutput){
3425  if(((AliConversionPhotonCuts*)fCutArray->At(fiCut))->PhotonIsSelectedAODMC(particle,AODMCTrackArray,kFALSE)){
3426  fHistoMCAllGammaPt[fiCut]->Fill(particle->Pt(),fWeightJetJetMC); // All MC Gamma
3427  if (TMath::Abs(particle->Eta()) < 0.66 ){
3428  if (particle->Phi() > 1.39626 && particle->Phi() < 3.125) fHistoMCAllGammaEMCALAccPt[fiCut]->Fill(particle->Pt(),fWeightJetJetMC);
3429  }
3430  if(particle->GetMother() >-1){ // Meson Decay Gamma
3431  switch((static_cast<AliAODMCParticle*>(AODMCTrackArray->At(particle->GetMother())))->GetPdgCode()){
3432  case 111: // Pi0
3433  fHistoMCDecayGammaPi0Pt[fiCut]->Fill(particle->Pt(),fWeightJetJetMC);
3434  break;
3435  case 113: // Rho0
3436  fHistoMCDecayGammaRhoPt[fiCut]->Fill(particle->Pt(),fWeightJetJetMC);
3437  break;
3438  case 221: // Eta
3439  fHistoMCDecayGammaEtaPt[fiCut]->Fill(particle->Pt(),fWeightJetJetMC);
3440  break;
3441  case 223: // Omega
3442  fHistoMCDecayGammaOmegaPt[fiCut]->Fill(particle->Pt(),fWeightJetJetMC);
3443  break;
3444  case 331: // Eta'
3445  fHistoMCDecayGammaEtapPt[fiCut]->Fill(particle->Pt(),fWeightJetJetMC);
3446  break;
3447  case 333: // Phi
3448  fHistoMCDecayGammaPhiPt[fiCut]->Fill(particle->Pt(),fWeightJetJetMC);
3449  break;
3450  case 3212: // Sigma
3451  fHistoMCDecayGammaSigmaPt[fiCut]->Fill(particle->Pt(),fWeightJetJetMC);
3452  break;
3453  }
3454  }
3455  }
3456  }
3457  if(((AliConversionPhotonCuts*)fCutArray->At(fiCut))->PhotonIsSelectedAODMC(particle,AODMCTrackArray,kTRUE)){
3458  Double_t rConv = 0;
3459  for(Int_t daughterIndex=particle->GetDaughter(0);daughterIndex<=particle->GetDaughter(1);daughterIndex++){
3460  AliAODMCParticle *tmpDaughter = static_cast<AliAODMCParticle*>(AODMCTrackArray->At(daughterIndex));
3461  if(!tmpDaughter) continue;
3462  if(TMath::Abs(tmpDaughter->GetPdgCode()) == 11){
3463  rConv = sqrt( (tmpDaughter->Xv()*tmpDaughter->Xv()) + (tmpDaughter->Yv()*tmpDaughter->Yv()) );
3464  }
3465  }
3466  if(!fDoLightOutput) fHistoMCConvGammaPt[fiCut]->Fill(particle->Pt(),fWeightJetJetMC);
3467  if (fDoPhotonQA > 0){
3468  fHistoMCConvGammaR[fiCut]->Fill(rConv);
3469  fHistoMCConvGammaEta[fiCut]->Fill(particle->Eta());
3470  }
3471  }
3472  // Converted MC Gamma
3473  if(fDoMesonAnalysis){
3474 
3475  Double_t mesonY = 1.e30;
3476  Double_t ratio = 0;
3477  if (particle->E() != TMath::Abs(particle->Pz())){
3478  ratio = (particle->E()+particle->Pz()) / (particle->E()-particle->Pz());
3479  }
3480  if( !(ratio <= 0) ){
3481  mesonY = particle->Y()-((AliConvEventCuts*)fEventCutArray->At(fiCut))->GetEtaShift();
3482  }
3483 
3484  if (TMath::Abs(mesonY) < ((AliConversionMesonCuts*)fMesonCutArray->At(fiCut))->GetRapidityCutValue()){
3485  if ( particle->GetPdgCode() == 211 ){ // positve pions
3486  fHistoMCPrimaryPtvsSource[fiCut]->Fill(particle->Pt(), 0., fWeightJetJetMC);
3487  } else if ( particle->GetPdgCode() == -211 ){ // negative pions
3488  fHistoMCPrimaryPtvsSource[fiCut]->Fill(particle->Pt(), 1., fWeightJetJetMC);
3489  } else if ( particle->GetPdgCode() == 321 ){ // positve kaons
3490  fHistoMCPrimaryPtvsSource[fiCut]->Fill(particle->Pt(), 2., fWeightJetJetMC);
3491  } else if ( particle->GetPdgCode() == -321 ){ // negative kaons
3492  fHistoMCPrimaryPtvsSource[fiCut]->Fill(particle->Pt(), 3., fWeightJetJetMC);
3493  } else if ( TMath::Abs(particle->GetPdgCode()) == 310 ){ // K0s
3494  fHistoMCPrimaryPtvsSource[fiCut]->Fill(particle->Pt(), 4., fWeightJetJetMC);
3495  } else if ( TMath::Abs(particle->GetPdgCode()) == 130 ){ // K0l
3496  fHistoMCPrimaryPtvsSource[fiCut]->Fill(particle->Pt(), 5., fWeightJetJetMC);
3497  } else if ( TMath::Abs(particle->GetPdgCode()) == 3122 ){ // Lambda/ AntiLambda
3498  fHistoMCPrimaryPtvsSource[fiCut]->Fill(particle->Pt(), 6., fWeightJetJetMC);
3499  }
3500  }
3501 
3502  // check neutral mesons
3504  ->MesonIsSelectedAODMC(particle,AODMCTrackArray,((AliConvEventCuts*)fEventCutArray->At(fiCut))->GetEtaShift())){
3505  AliAODMCParticle* daughter0 = static_cast<AliAODMCParticle*>(AODMCTrackArray->At(particle->GetDaughter(0)));
3506  AliAODMCParticle* daughter1 = static_cast<AliAODMCParticle*>(AODMCTrackArray->At(particle->GetDaughter(1)));
3507  Float_t weighted= 1;
3508  if(((AliConvEventCuts*)fEventCutArray->At(fiCut))->IsParticleFromBGEvent(i, fMCEvent, fInputEvent)){
3509  if (particle->Pt()>0.005){
3510  weighted= ((AliConvEventCuts*)fEventCutArray->At(fiCut))->GetWeightForMeson(i, 0x0, fInputEvent);
3511  // if(particle->GetPdgCode() == 221){
3512  // cout << "MC input \t"<<i << "\t" << particle->Pt()<<"\t"<<weighted << endl;
3513  // }
3514  }
3515  }
3516  Double_t mesonY = 1.e30;
3517  Double_t ratio = 0;
3518  if (particle->E() != TMath::Abs(particle->Pz())){
3519  ratio = (particle->E()+particle->Pz()) / (particle->E()-particle->Pz());
3520  }
3521  if( !(ratio <= 0) ){
3522  mesonY = particle->Y()-((AliConvEventCuts*)fEventCutArray->At(fiCut))->GetEtaShift();
3523  }
3524  Double_t alpha = -10;
3525  if (particle->GetPdgCode() == 111 || particle->GetPdgCode() == 221){
3526  alpha = (daughter0->E() - daughter1->E())/(daughter0->E() + daughter1->E());
3527  }
3528 
3529 
3530  if(particle->GetPdgCode() == 111){
3531  fHistoMCPi0Pt[fiCut]->Fill(particle->Pt(),weighted*fWeightJetJetMC); // All MC Pi0
3532  fHistoMCPi0WOWeightPt[fiCut]->Fill(particle->Pt(),fWeightJetJetMC);
3533  if (!fDoLightOutput){
3534  // fill pi0 hists against gamma pt of first leg
3535  fHistoMCPi0PtGammaLeg[fiCut]->Fill(daughter0->Pt(),0.,weighted*fWeightJetJetMC);
3536  fHistoMCPi0WOWeightPtGammaLeg[fiCut]->Fill(daughter0->Pt(),0.,fWeightJetJetMC);
3537  // fill pi0 hists against gamma pt of second leg
3538  fHistoMCPi0PtGammaLeg[fiCut]->Fill(daughter1->Pt(),1.,weighted*fWeightJetJetMC);
3539  fHistoMCPi0WOWeightPtGammaLeg[fiCut]->Fill(daughter1->Pt(),1.,fWeightJetJetMC);
3540  // fill pi0 hists against gamma pt of both legs
3541  fHistoMCPi0PtGammaLeg[fiCut]->Fill(daughter0->Pt(),2.,weighted*fWeightJetJetMC);
3542  fHistoMCPi0WOWeightPtGammaLeg[fiCut]->Fill(daughter0->Pt(),2.,fWeightJetJetMC);
3543  fHistoMCPi0PtGammaLeg[fiCut]->Fill(daughter1->Pt(),2.,weighted*fWeightJetJetMC);
3544  fHistoMCPi0WOWeightPtGammaLeg[fiCut]->Fill(daughter1->Pt(),2.,fWeightJetJetMC);
3545  }
3546 
3547  if (fIsMC > 1) fHistoMCPi0WOEvtWeightPt[fiCut]->Fill(particle->Pt());
3548  if (fDoMesonQA > 0){
3549  fHistoMCPi0PtY[fiCut]->Fill(particle->Pt(),mesonY,weighted*fWeightJetJetMC);
3550  fHistoMCPi0PtAlpha[fiCut]->Fill(particle->Pt(),alpha,fWeightJetJetMC);
3551  if (fIsMC == 2) fHistoMCPi0PtJetPt[fiCut]->Fill(particle->Pt(),((AliConvEventCuts*)fEventCutArray->At(fiCut))->GetMaxPtJet(),fWeightJetJetMC);
3552  }
3553  }else if(particle->GetPdgCode() == 221){
3554  fHistoMCEtaPt[fiCut]->Fill(particle->Pt(),weighted*fWeightJetJetMC); // All MC Eta
3555  fHistoMCEtaWOWeightPt[fiCut]->Fill(particle->Pt(),fWeightJetJetMC);
3556  if (fIsMC > 1) fHistoMCEtaWOEvtWeightPt[fiCut]->Fill(particle->Pt());
3557  if (fDoMesonQA > 0){
3558  fHistoMCEtaPtY[fiCut]->Fill(particle->Pt(),mesonY,weighted*fWeightJetJetMC);
3559  fHistoMCEtaPtAlpha[fiCut]->Fill(particle->Pt(),alpha,fWeightJetJetMC);
3560  if (fIsMC == 2) fHistoMCEtaPtJetPt[fiCut]->Fill(particle->Pt(),((AliConvEventCuts*)fEventCutArray->At(fiCut))->GetMaxPtJet(),fWeightJetJetMC);
3561  }
3562  }
3563 
3564  // Check the acceptance for both gammas
3565  if(((AliConversionPhotonCuts*)fCutArray->At(fiCut))->PhotonIsSelectedAODMC(daughter0,AODMCTrackArray,kFALSE) &&
3566  ((AliConversionPhotonCuts*)fCutArray->At(fiCut))->PhotonIsSelectedAODMC(daughter1,AODMCTrackArray,kFALSE) &&
3567  ((AliConversionPhotonCuts*)fCutArray->At(fiCut))->InPlaneOutOfPlaneCut(daughter0->Phi(),fEventPlaneAngle,kFALSE) &&
3568  ((AliConversionPhotonCuts*)fCutArray->At(fiCut))->InPlaneOutOfPlaneCut(daughter1->Phi(),fEventPlaneAngle,kFALSE)){
3569  // check acceptance of clusters as well, true if one of them points into the Calo acceptance
3570  if (((AliCaloPhotonCuts*)fClusterCutArray->At(fiCut))->ClusterIsSelectedAODMC(daughter0,AODMCTrackArray) ||
3571  ((AliCaloPhotonCuts*)fClusterCutArray->At(fiCut))->ClusterIsSelectedAODMC(daughter1,AODMCTrackArray) ){
3572  if(particle->GetPdgCode() == 111){
3573  fHistoMCPi0InAccPt[fiCut]->Fill(particle->Pt(),weighted*fWeightJetJetMC); // MC Pi0 with gamma in acc
3574  fHistoMCPi0WOWeightInAccPt[fiCut]->Fill(particle->Pt(),fWeightJetJetMC); // MC Pi0 with gamma in acc wo weight
3575  if(fIsMC > 1) fHistoMCPi0WOEvtWeightInAccPt[fiCut]->Fill(particle->Pt()); // MC Pi0 with gamma in acc wo any weight
3576  if (!fDoLightOutput){
3577  // fill pi0 hists against gamma pt of first leg
3578  fHistoMCPi0InAccPtGammaLeg[fiCut]->Fill(daughter0->Pt(),0.,weighted*fWeightJetJetMC);
3579  fHistoMCPi0WOWeightInAccPtGammaLeg[fiCut]->Fill(daughter0->Pt(),0.,fWeightJetJetMC);
3580  // fill pi0 hists against gamma pt of second leg
3581  fHistoMCPi0InAccPtGammaLeg[fiCut]->Fill(daughter1->Pt(),1.,weighted*fWeightJetJetMC);
3582  fHistoMCPi0WOWeightInAccPtGammaLeg[fiCut]->Fill(daughter1->Pt(),1.,fWeightJetJetMC);
3583  // fill pi0 hists against gamma pt of both legs
3584  fHistoMCPi0InAccPtGammaLeg[fiCut]->Fill(daughter0->Pt(),2.,weighted*fWeightJetJetMC);
3585  fHistoMCPi0WOWeightInAccPtGammaLeg[fiCut]->Fill(daughter0->Pt(),2.,fWeightJetJetMC);
3586  fHistoMCPi0InAccPtGammaLeg[fiCut]->Fill(daughter1->Pt(),2.,weighted*fWeightJetJetMC);
3587  fHistoMCPi0WOWeightInAccPtGammaLeg[fiCut]->Fill(daughter1->Pt(),2.,fWeightJetJetMC);
3588  }
3589  }else if(particle->GetPdgCode() == 221){
3590  fHistoMCEtaInAccPt[fiCut]->Fill(particle->Pt(),weighted*fWeightJetJetMC); // MC Eta with gamma in acc
3591  fHistoMCEtaWOWeightInAccPt[fiCut]->Fill(particle->Pt(),fWeightJetJetMC); // MC Eta with gamma in acc wo weight
3592  if(fIsMC > 1) fHistoMCEtaWOEvtWeightInAccPt[fiCut]->Fill(particle->Pt()); // MC Eta with gamma in acc wo any weight
3593  }
3594  }
3595  }
3596  }
3597  }
3598  } else {
3599  // fill secondary histograms
3600  Int_t isMCFromMBHeader = -1;
3601  if(((AliConvEventCuts*)fEventCutArray->At(fiCut))->GetSignalRejection() != 0){
3602  isMCFromMBHeader = ((AliConvEventCuts*)fEventCutArray->At(fiCut))->IsParticleFromBGEvent(i, fMCEvent, fInputEvent);
3603  if(isMCFromMBHeader == 0 && ((AliConvEventCuts*)fEventCutArray->At(fiCut))->GetSignalRejection() != 3) continue;
3604  }
3605  if(((AliConversionPhotonCuts*)fCutArray->At(fiCut))->InPlaneOutOfPlaneCut(particle->Phi(),fEventPlaneAngle,kFALSE)) {
3606  if(((AliConversionPhotonCuts*)fCutArray->At(fiCut))->PhotonIsSelectedAODMC(particle,AODMCTrackArray,kFALSE)){
3607  if (particle->GetMother() > -1) {
3608  AliAODMCParticle *tmpMother = static_cast<AliAODMCParticle*>(AODMCTrackArray->At(particle->GetMother()));
3609  if (tmpMother->GetMother() > -1) {
3610  AliAODMCParticle *tmpGrandMother = static_cast<AliAODMCParticle*>(AODMCTrackArray->At(tmpMother->GetMother()));
3611  if(tmpGrandMother->GetPdgCode() == 310) {
3612  if (!fDoLightOutput) fHistoMCAllSecondaryGammaPt[fiCut]->Fill(particle->Pt(),0.,fWeightJetJetMC);
3613  } else if (tmpGrandMother->GetPdgCode() == 130) {
3614  if (!fDoLightOutput) fHistoMCAllSecondaryGammaPt[fiCut]->Fill(particle->Pt(),1.,fWeightJetJetMC);
3615  } else if (tmpGrandMother->GetPdgCode() == 3122) {
3616  if (!fDoLightOutput) fHistoMCAllSecondaryGammaPt[fiCut]->Fill(particle->Pt(),2.,fWeightJetJetMC);
3617  } else {
3618  if ( !(TMath::Abs(tmpMother->GetPdgCode()) == 11 && tmpGrandMother->GetPdgCode() == 22) )
3619  if (!fDoLightOutput) fHistoMCAllSecondaryGammaPt[fiCut]->Fill(particle->Pt(),3.,fWeightJetJetMC);
3620  }
3621  } else {
3622  if (!fDoLightOutput) fHistoMCAllSecondaryGammaPt[fiCut]->Fill(particle->Pt(),3.,fWeightJetJetMC);
3623  }
3624  } else {
3625  if (!fDoLightOutput) fHistoMCAllSecondaryGammaPt[fiCut]->Fill(particle->Pt(),3.,fWeightJetJetMC);
3626  }
3627  }
3628 
3629  if(((AliConversionPhotonCuts*)fCutArray->At(fiCut))->PhotonIsSelectedAODMC(particle,AODMCTrackArray,kTRUE)){
3630  if (particle->GetMother() > -1) {
3631  AliAODMCParticle *tmpMother = static_cast<AliAODMCParticle*>(AODMCTrackArray->At(particle->GetMother()));
3632  if (tmpMother->GetMother() > -1) {
3633  AliAODMCParticle *tmpGrandMother = static_cast<AliAODMCParticle*>(AODMCTrackArray->At(tmpMother->GetMother()));
3634  if(tmpGrandMother->GetPdgCode() == 310) {
3635  if (!fDoLightOutput) fHistoMCSecondaryConvGammaPt[fiCut]->Fill(particle->Pt(),0.,fWeightJetJetMC);
3636  } else if (tmpGrandMother->GetPdgCode() == 130) {
3637  if (!fDoLightOutput) fHistoMCSecondaryConvGammaPt[fiCut]->Fill(particle->Pt(),1.,fWeightJetJetMC);
3638  } else if (tmpGrandMother->GetPdgCode() == 3122) {
3639  if (!fDoLightOutput) fHistoMCSecondaryConvGammaPt[fiCut]->Fill(particle->Pt(),2.,fWeightJetJetMC);
3640  } else {
3641  if ( !(TMath::Abs(tmpMother->GetPdgCode()) == 11 && tmpGrandMother->GetPdgCode() == 22) )
3642  if (!fDoLightOutput) fHistoMCSecondaryConvGammaPt[fiCut]->Fill(particle->Pt(),3.,fWeightJetJetMC);
3643  }
3644  } else {
3645  if (!fDoLightOutput) fHistoMCSecondaryConvGammaPt[fiCut]->Fill(particle->Pt(),3.,fWeightJetJetMC);
3646  }
3647  } else {
3648  if (!fDoLightOutput) fHistoMCSecondaryConvGammaPt[fiCut]->Fill(particle->Pt(),3.,fWeightJetJetMC);
3649  }
3650  }
3651  }
3652 
3653  if(fDoMesonAnalysis){
3654  if(((AliConversionMesonCuts*)fMesonCutArray->At(fiCut))->MesonIsSelectedAODMC(particle,AODMCTrackArray,((AliConvEventCuts*)fEventCutArray->At(fiCut))->GetEtaShift())){
3655  AliAODMCParticle* daughter0 = static_cast<AliAODMCParticle*>(AODMCTrackArray->At(particle->GetDaughter(0)));
3656  AliAODMCParticle* daughter1 = static_cast<AliAODMCParticle*>(AODMCTrackArray->At(particle->GetDaughter(1)));
3657  AliAODMCParticle* mother = static_cast<AliAODMCParticle*>(AODMCTrackArray->At(particle->GetMother()));
3658  Int_t pdgCode = mother->GetPdgCode();
3659  if(particle->GetPdgCode() == 111){
3660  Int_t source = GetSourceClassification(111,pdgCode);
3661  fHistoMCSecPi0PtvsSource[fiCut]->Fill(particle->Pt(),source,fWeightJetJetMC); // All MC Pi0
3662  if (!fDoLightOutput){
3663  fHistoMCSecPi0PtGamma1vsSource[fiCut]->Fill(daughter0->Pt(),source,fWeightJetJetMC); // All MC Pi0
3664  fHistoMCSecPi0PtGamma2vsSource[fiCut]->Fill(daughter1->Pt(),source,fWeightJetJetMC); // All MC Pi0
3665  }
3666  fHistoMCSecPi0Source[fiCut]->Fill(pdgCode);
3667  }else if(particle->GetPdgCode() == 221){
3668 
3669  fHistoMCSecEtaPt[fiCut]->Fill(particle->Pt(),fWeightJetJetMC); // All MC Pi0
3670  fHistoMCSecEtaSource[fiCut]->Fill(pdgCode);
3671  }
3672 
3673  // check if conversion where within acceptance
3674  if( ((AliConversionPhotonCuts*)fCutArray->At(fiCut))->PhotonIsSelectedAODMC(daughter0,AODMCTrackArray,kFALSE) &&
3675  ((AliConversionPhotonCuts*)fCutArray->At(fiCut))->PhotonIsSelectedAODMC(daughter1,AODMCTrackArray,kFALSE) &&
3676  ((AliConversionPhotonCuts*)fCutArray->At(fiCut))->InPlaneOutOfPlaneCut(daughter0->Phi(),fEventPlaneAngle,kFALSE) &&
3677  ((AliConversionPhotonCuts*)fCutArray->At(fiCut))->InPlaneOutOfPlaneCut(daughter1->Phi(),fEventPlaneAngle,kFALSE)){
3678  // check acceptance of clusters as well, true if one of them points into the Calo acceptance
3679  if (((AliCaloPhotonCuts*)fClusterCutArray->At(fiCut))->ClusterIsSelectedAODMC(daughter0,AODMCTrackArray) ||
3680  ((AliCaloPhotonCuts*)fClusterCutArray->At(fiCut))->ClusterIsSelectedAODMC(daughter1,AODMCTrackArray) ){
3681  if (particle->GetPdgCode() == 111){
3682  Int_t source = GetSourceClassification(111,pdgCode);
3683  fHistoMCSecPi0InAccPtvsSource[fiCut]->Fill(particle->Pt(),source,fWeightJetJetMC); // All MC Pi0
3684  if (!fDoLightOutput){
3685  fHistoMCSecPi0InAccPtGamma1vsSource[fiCut]->Fill(daughter0->Pt(),source,fWeightJetJetMC); // All MC Pi0
3686  fHistoMCSecPi0InAccPtGamma2vsSource[fiCut]->Fill(daughter1->Pt(),source,fWeightJetJetMC); // All MC Pi0
3687  }
3688  }
3689  }
3690  }
3691  }
3692  }
3693  }
3694  }
3695 }
3696 
3697 //________________________________________________________________________
3699 {
3700  const AliVVertex* primVtxMC = fMCEvent->GetPrimaryVertex();
3701  Double_t mcProdVtxX = primVtxMC->GetX();
3702  Double_t mcProdVtxY = primVtxMC->GetY();
3703  Double_t mcProdVtxZ = primVtxMC->GetZ();
3704 // cout << mcProdVtxX <<"\t" << mcProdVtxY << "\t" << mcProdVtxZ << endl;
3705 
3706  // Loop over all primary MC particle
3707  for(Long_t i = 0; i < fMCEvent->GetNumberOfTracks(); i++) {
3708  if (((AliConvEventCuts*)fEventCutArray->At(fiCut))->IsConversionPrimaryESD( fMCEvent, i, mcProdVtxX, mcProdVtxY, mcProdVtxZ)){
3709  // fill primary histograms
3710  TParticle* particle = (TParticle *)fMCEvent->Particle(i);
3711  if (!particle) continue;
3712 
3713  Int_t isMCFromMBHeader = -1;
3714  if(((AliConvEventCuts*)fEventCutArray->At(fiCut))->GetSignalRejection() != 0){
3715  isMCFromMBHeader = ((AliConvEventCuts*)fEventCutArray->At(fiCut))->IsParticleFromBGEvent(i, fMCEvent, fInputEvent);
3716  if(isMCFromMBHeader == 0 && ((AliConvEventCuts*)fEventCutArray->At(fiCut))->GetSignalRejection() != 3) continue;
3717  }
3718 
3719  if(!((AliConversionPhotonCuts*)fCutArray->At(fiCut))->InPlaneOutOfPlaneCut(particle->Phi(),fEventPlaneAngle,kFALSE)) continue;
3720  if(!fDoLightOutput){
3721  if(((AliConversionPhotonCuts*)fCutArray->At(fiCut))->PhotonIsSelectedMC(particle,fMCEvent,kFALSE)){
3722  fHistoMCAllGammaPt[fiCut]->Fill(particle->Pt(),fWeightJetJetMC); // All MC Gamma
3723  if (TMath::Abs(particle->Eta()) < 0.66 ){
3724  if (particle->Phi() > 1.39626 && particle->Phi() < 3.125) fHistoMCAllGammaEMCALAccPt[fiCut]->Fill(particle->Pt(),fWeightJetJetMC);
3725  }
3726 
3727  if(particle->GetMother(0) >-1){ // Meson Decay Gamma
3728  switch(fMCEvent->Particle(particle->GetMother(0))->GetPdgCode()){
3729  case 111: // Pi0
3730  fHistoMCDecayGammaPi0Pt[fiCut]->Fill(particle->Pt(),fWeightJetJetMC);
3731  break;
3732  case 113: // Rho0
3733  fHistoMCDecayGammaRhoPt[fiCut]->Fill(particle->Pt(),fWeightJetJetMC);
3734  break;
3735  case 221: // Eta
3736  fHistoMCDecayGammaEtaPt[fiCut]->Fill(particle->Pt(),fWeightJetJetMC);
3737  break;
3738  case 223: // Omega
3739  fHistoMCDecayGammaOmegaPt[fiCut]->Fill(particle->Pt(),fWeightJetJetMC);
3740  break;
3741  case 331: // Eta'
3742  fHistoMCDecayGammaEtapPt[fiCut]->Fill(particle->Pt(),fWeightJetJetMC);
3743  break;
3744  case 333: // Phi
3745  fHistoMCDecayGammaPhiPt[fiCut]->Fill(particle->Pt(),fWeightJetJetMC);
3746  break;
3747  case 3212: // Sigma
3748  fHistoMCDecayGammaSigmaPt[fiCut]->Fill(particle->Pt(),fWeightJetJetMC);
3749  break;
3750  }
3751  }
3752  }
3753  }
3754  // Converted MC Gamma
3755  if(((AliConversionPhotonCuts*)fCutArray->At(fiCut))->PhotonIsSelectedMC(particle,fMCEvent,kTRUE)){
3756  if(!fDoLightOutput) fHistoMCConvGammaPt[fiCut]->Fill(particle->Pt(),fWeightJetJetMC);
3757  if (fDoPhotonQA > 0){
3758  if(particle->GetFirstDaughter()>-1) fHistoMCConvGammaR[fiCut]->Fill(((TParticle*)fMCEvent->Particle(particle->GetFirstDaughter()))->R());
3759  fHistoMCConvGammaEta[fiCut]->Fill(particle->Eta());
3760  }
3761  }
3762 
3763 
3764  if(fDoMesonAnalysis ){
3765 
3766  // Fill histograms for other particles
3767  Double_t mesonY = 1.e30;
3768  Double_t ratio = 0;
3769  if (particle->Energy() != TMath::Abs(particle->Pz())){
3770  ratio = (particle->Energy()+particle->Pz()) / (particle->Energy()-particle->Pz());
3771  }
3772  if( !(ratio <= 0) ){
3773  mesonY = particle->Y()-((AliConvEventCuts*)fEventCutArray->At(fiCut))->GetEtaShift();
3774  }
3775 
3776  if (TMath::Abs(mesonY) < ((AliConversionMesonCuts*)fMesonCutArray->At(fiCut))->GetRapidityCutValue()){
3777  if ( particle->GetPdgCode() == 211 ){ // positve pions
3778  fHistoMCPrimaryPtvsSource[fiCut]->Fill(particle->Pt(), 0., fWeightJetJetMC);
3779  } else if ( particle->GetPdgCode() == -211 ){ // negative pions
3780  fHistoMCPrimaryPtvsSource[fiCut]->Fill(particle->Pt(), 1., fWeightJetJetMC);
3781  } else if ( particle->GetPdgCode() == 321 ){ // positve kaons
3782  fHistoMCPrimaryPtvsSource[fiCut]->Fill(particle->Pt(), 2., fWeightJetJetMC);
3783  } else if ( particle->GetPdgCode() == -321 ){ // negative kaons
3784  fHistoMCPrimaryPtvsSource[fiCut]->Fill(particle->Pt(), 3., fWeightJetJetMC);
3785  } else if ( TMath::Abs(particle->GetPdgCode()) == 310 ){ // K0s
3786  fHistoMCPrimaryPtvsSource[fiCut]->Fill(particle->Pt(), 4., fWeightJetJetMC);
3787  } else if ( TMath::Abs(particle->GetPdgCode()) == 130 ){ // K0l
3788  fHistoMCPrimaryPtvsSource[fiCut]->Fill(particle->Pt(), 5., fWeightJetJetMC);
3789  } else if ( TMath::Abs(particle->GetPdgCode()) == 3122 ){ // Lambda/ AntiLambda
3790  fHistoMCPrimaryPtvsSource[fiCut]->Fill(particle->Pt(), 6., fWeightJetJetMC);
3791  }
3792  }
3793 
3794  // check neutral mesons
3796  ->MesonIsSelectedMC(particle,fMCEvent,((AliConvEventCuts*)fEventCutArray->At(fiCut))->GetEtaShift())){
3797  TParticle* daughter0 = (TParticle*)fMCEvent->Particle(particle->GetFirstDaughter());
3798  TParticle* daughter1 = (TParticle*)fMCEvent->Particle(particle->GetLastDaughter());
3799 
3800  Float_t weighted= 1;
3801  if(((AliConvEventCuts*)fEventCutArray->At(fiCut))->IsParticleFromBGEvent(i, fMCEvent, fInputEvent)){
3802  if (particle->Pt()>0.005){
3803  weighted= ((AliConvEventCuts*)fEventCutArray->At(fiCut))->GetWeightForMeson(i, fMCEvent, fInputEvent);
3804  }
3805  }
3806  Double_t mesonY = 1.e30;
3807  Double_t ratio = 0;
3808  if (particle->Energy() != TMath::Abs(particle->Pz())){
3809  ratio = (particle->Energy()+particle->Pz()) / (particle->Energy()-particle->Pz());
3810  }
3811  if( !(ratio <= 0) ){
3812  mesonY = particle->Y()-((AliConvEventCuts*)fEventCutArray->At(fiCut))->GetEtaShift();
3813  }
3814 
3815  Double_t alpha = -10;
3816  if (particle->GetPdgCode() == 111 || particle->GetPdgCode() == 221){
3817  alpha = (daughter0->Energy() - daughter1->Energy())/(daughter0->Energy() + daughter1->Energy());
3818  }
3819 
3820  if(particle->GetPdgCode() == 111){
3821  fHistoMCPi0Pt[fiCut]->Fill(particle->Pt(),weighted*fWeightJetJetMC); // All MC Pi0
3822  fHistoMCPi0WOWeightPt[fiCut]->Fill(particle->Pt(),fWeightJetJetMC);
3823  if (!fDoLightOutput){
3824  // fill pi0 hists against gamma pt of first leg
3825  fHistoMCPi0PtGammaLeg[fiCut]->Fill(daughter0->Pt(),0.,weighted*fWeightJetJetMC);
3826  fHistoMCPi0WOWeightPtGammaLeg[fiCut]->Fill(daughter0->Pt(),0.,fWeightJetJetMC);
3827  // fill pi0 hists against gamma pt of second leg
3828  fHistoMCPi0PtGammaLeg[fiCut]->Fill(daughter1->Pt(),1.,weighted*fWeightJetJetMC);
3829  fHistoMCPi0WOWeightPtGammaLeg[fiCut]->Fill(daughter1->Pt(),1.,fWeightJetJetMC);
3830  // fill pi0 hists against gamma pt of both legs
3831  fHistoMCPi0PtGammaLeg[fiCut]->Fill(daughter0->Pt(),2.,weighted*fWeightJetJetMC);
3832  fHistoMCPi0WOWeightPtGammaLeg[fiCut]->Fill(daughter0->Pt(),2.,fWeightJetJetMC);
3833  fHistoMCPi0PtGammaLeg[fiCut]->Fill(daughter1->Pt(),2.,weighted*fWeightJetJetMC);
3834  fHistoMCPi0WOWeightPtGammaLeg[fiCut]->Fill(daughter1->Pt(),2.,fWeightJetJetMC);
3835  }
3836 
3837  if (fIsMC > 1) fHistoMCPi0WOEvtWeightPt[fiCut]->Fill(particle->Pt());
3838  if (fDoMesonQA > 0){
3839  fHistoMCPi0PtY[fiCut]->Fill(particle->Pt(),mesonY,weighted*fWeightJetJetMC); // All MC Pi0
3840  fHistoMCPi0PtAlpha[fiCut]->Fill(particle->Pt(),alpha,fWeightJetJetMC); // All MC Pi0
3841  if (fIsMC == 2) fHistoMCPi0PtJetPt[fiCut]->Fill(particle->Pt(),((AliConvEventCuts*)fEventCutArray->At(fiCut))->GetMaxPtJet(),fWeightJetJetMC);
3842  }
3843  }else if(particle->GetPdgCode() == 221){
3844  fHistoMCEtaPt[fiCut]->Fill(particle->Pt(),weighted*fWeightJetJetMC); // All MC Eta
3845  fHistoMCEtaWOWeightPt[fiCut]->Fill(particle->Pt(),fWeightJetJetMC);
3846  if (fIsMC > 1) fHistoMCEtaWOEvtWeightPt[fiCut]->Fill(particle->Pt());
3847  if (fDoMesonQA > 0){
3848  fHistoMCEtaPtY[fiCut]->Fill(particle->Pt(),mesonY,weighted*fWeightJetJetMC); // All MC Pi0
3849  fHistoMCEtaPtAlpha[fiCut]->Fill(particle->Pt(),alpha,fWeightJetJetMC); // All MC Pi0
3850  if (fIsMC == 2) fHistoMCEtaPtJetPt[fiCut]->Fill(particle->Pt(),((AliConvEventCuts*)fEventCutArray->At(fiCut))->GetMaxPtJet(),fWeightJetJetMC);
3851  }
3852  }
3853 
3854  // Check the acceptance for both gammas & whether they are counted as primaries as well
3855  Bool_t kDaughter0IsPrim = ((AliConvEventCuts*)fEventCutArray->At(fiCut))->IsConversionPrimaryESD( fMCEvent, particle->GetFirstDaughter(), mcProdVtxX, mcProdVtxY, mcProdVtxZ);
3856  Bool_t kDaughter1IsPrim = ((AliConvEventCuts*)fEventCutArray->At(fiCut))->IsConversionPrimaryESD( fMCEvent, particle->GetLastDaughter(), mcProdVtxX, mcProdVtxY, mcProdVtxZ);
3857 
3858  if( kDaughter0IsPrim && kDaughter1IsPrim &&
3859  ((AliConversionPhotonCuts*)fCutArray->At(fiCut))->PhotonIsSelectedMC(daughter0,fMCEvent,kFALSE) &&
3860  ((AliConversionPhotonCuts*)fCutArray->At(fiCut))->PhotonIsSelectedMC(daughter1,fMCEvent,kFALSE) &&
3861  ((AliConversionPhotonCuts*)fCutArray->At(fiCut))->InPlaneOutOfPlaneCut(daughter0->Phi(),fEventPlaneAngle,kFALSE) &&
3862  ((AliConversionPhotonCuts*)fCutArray->At(fiCut))->InPlaneOutOfPlaneCut(daughter1->Phi(),fEventPlaneAngle,kFALSE)){
3863  // check acceptance of clusters as well, true if one of them points into the Calo acceptance
3864  if (((AliCaloPhotonCuts*)fClusterCutArray->At(fiCut))->ClusterIsSelectedMC(daughter0,fMCEvent) ||
3865  ((AliCaloPhotonCuts*)fClusterCutArray->At(fiCut))->ClusterIsSelectedMC(daughter1,fMCEvent) ){
3866  if(particle->GetPdgCode() == 111){
3867  fHistoMCPi0InAccPt[fiCut]->Fill(particle->Pt(),weighted*fWeightJetJetMC); // MC Pi0 with gamma in acc
3868  fHistoMCPi0WOWeightInAccPt[fiCut]->Fill(particle->Pt(),fWeightJetJetMC); // MC Pi0 with gamma in acc wo weighting
3869  if(fIsMC > 1) fHistoMCPi0WOEvtWeightInAccPt[fiCut]->Fill(particle->Pt()); // MC Pi0 with gamma in acc wo any weight
3870  if (!fDoLightOutput){
3871  // fill pi0 hists against gamma pt of first leg
3872  fHistoMCPi0InAccPtGammaLeg[fiCut]->Fill(daughter0->Pt(),0.,weighted*fWeightJetJetMC);
3873  fHistoMCPi0WOWeightInAccPtGammaLeg[fiCut]->Fill(daughter0->Pt(),0.,fWeightJetJetMC);
3874  // fill pi0 hists against gamma pt of second leg
3875  fHistoMCPi0InAccPtGammaLeg[fiCut]->Fill(daughter1->Pt(),1.,weighted*fWeightJetJetMC);
3876  fHistoMCPi0WOWeightInAccPtGammaLeg[fiCut]->Fill(daughter1->Pt(),1.,fWeightJetJetMC);
3877  // fill pi0 hists against gamma pt of both legs
3878  fHistoMCPi0InAccPtGammaLeg[fiCut]->Fill(daughter0->Pt(),2.,weighted*fWeightJetJetMC);
3879  fHistoMCPi0WOWeightInAccPtGammaLeg[fiCut]->Fill(daughter0->Pt(),2.,fWeightJetJetMC);
3880  fHistoMCPi0InAccPtGammaLeg[fiCut]->Fill(daughter1->Pt(),2.,weighted*fWeightJetJetMC);
3881  fHistoMCPi0WOWeightInAccPtGammaLeg[fiCut]->Fill(daughter1->Pt(),2.,fWeightJetJetMC);
3882  }
3883  }else if(particle->GetPdgCode() == 221){
3884  fHistoMCEtaInAccPt[fiCut]->Fill(particle->Pt(),weighted*fWeightJetJetMC); // MC Eta with gamma in acc
3885  fHistoMCEtaWOWeightInAccPt[fiCut]->Fill(particle->Pt(),fWeightJetJetMC); // MC Eta with gamma in acc wo weighting
3886  if(fIsMC > 1) fHistoMCEtaWOEvtWeightInAccPt[fiCut]->Fill(particle->Pt()); // MC Eta with gamma in acc wo any weight
3887  }
3888  }
3889  }
3890  }
3891  }
3892  // fill secondary histograms
3893  } else {
3894  TParticle* particle = (TParticle *)fMCEvent->Particle(i);
3895  if (!particle) continue;
3896  Int_t isMCFromMBHeader = -1;
3897  if(((AliConvEventCuts*)fEventCutArray->At(fiCut))->GetSignalRejection() != 0){
3898  isMCFromMBHeader = ((AliConvEventCuts*)fEventCutArray->At(fiCut))->IsParticleFromBGEvent(i, fMCEvent, fInputEvent);
3899  if(isMCFromMBHeader == 0 && ((AliConvEventCuts*)fEventCutArray->At(fiCut))->GetSignalRejection() != 3) continue;
3900  }
3901 
3902  if(((AliConversionPhotonCuts*)fCutArray->At(fiCut))->InPlaneOutOfPlaneCut(particle->Phi(),fEventPlaneAngle,kFALSE)){
3903  if(((AliConversionPhotonCuts*)fCutArray->At(fiCut))->PhotonIsSelectedMC(particle,fMCEvent,kFALSE)){