]> git.uio.no Git - u/mrichter/AliRoot.git/blame - PWGGA/GammaConv/AliAnalysisTaskGammaConvCalo.cxx
Merge branch 'master' of https://git.cern.ch/reps/AliRoot
[u/mrichter/AliRoot.git] / PWGGA / GammaConv / AliAnalysisTaskGammaConvCalo.cxx
CommitLineData
8bdca7f1 1/**************************************************************************
2 * Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
3 * *
4 * Author: Baldo Sahlmueller, 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
17//////////////////////////////////////////////////////////////////
18//----------------------------------------------------------------
19// Class used to do analysis on conversion photons + calo photons
20//----------------------------------------------------------------
21//////////////////////////////////////////////////////////////////
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"
42#include "AliAnalysisTaskGammaConvCalo.h"
43#include "AliVParticle.h"
44#include "AliESDtrack.h"
45#include "AliESDtrackCuts.h"
46#include "AliKFVertex.h"
47#include "AliV0ReaderV1.h"
48#include "AliGenCocktailEventHeader.h"
49#include "AliConversionAODBGHandlerRP.h"
50#include "AliAODMCParticle.h"
51#include "AliAODMCHeader.h"
52#include "AliEventplane.h"
53#include "AliAnalysisTaskEMCALClusterizeFast.h"
54#include "AliAODEvent.h"
55#include "AliAODInputHandler.h"
56#include "AliESDEvent.h"
57#include "AliESDInputHandler.h"
58#include "AliInputEventHandler.h"
59
60ClassImp(AliAnalysisTaskGammaConvCalo)
61
62//________________________________________________________________________
63AliAnalysisTaskGammaConvCalo::AliAnalysisTaskGammaConvCalo(): AliAnalysisTaskSE(),
64 fV0Reader(NULL),
65 fBGHandler(NULL),
66 fBGHandlerRP(NULL),
67 fBGClusHandler(NULL),
68 fBGClusHandlerRP(NULL),
69 fInputEvent(NULL),
70 fMCEvent(NULL),
71 fMCStack(NULL),
72 fCutFolder(NULL),
73 fESDList(NULL),
74 fBackList(NULL),
75 fMotherList(NULL),
76 fPhotonDCAList(NULL),
8bdca7f1 77 fTrueList(NULL),
78 fMCList(NULL),
79 fHeaderNameList(NULL),
ea1bc51e 80 fClusterOutputList(NULL),
8bdca7f1 81 fOutputContainer(NULL),
82 fReaderGammas(NULL),
83 fGammaCandidates(NULL),
84 fClusterCandidates(NULL),
344100c4 85 fEventCutArray(NULL),
86 fEventCuts(NULL),
8bdca7f1 87 fCutArray(NULL),
88 fConversionCuts(NULL),
89 fClusterCutArray(NULL),
90 fCaloPhotonCuts(NULL),
91 fMesonCutArray(NULL),
92 fMesonCuts(NULL),
93 fHistoConvGammaPt(NULL),
94 fHistoConvGammaR(NULL),
95 fHistoConvGammaEta(NULL),
96 fTreeConvGammaPtDcazCat(NULL),
97 fPtGamma(0),
98 fDCAzPhoton(0),
99 fRConvPhoton(0),
100 fEtaPhoton(0),
101 fCharCatPhoton(0),
102 fCharPhotonMCInfo(0),
103 fHistoMotherInvMassPt(NULL),
d53bf4ac 104 fHistoMotherMatchedInvMassPt(NULL),
8bdca7f1 105 fSparseMotherInvMassPtZM(NULL),
106 fHistoMotherBackInvMassPt(NULL),
107 fSparseMotherBackInvMassPtZM(NULL),
108 fHistoMotherInvMassEalpha(NULL),
109 fHistoMotherPi0PtY(NULL),
110 fHistoMotherEtaPtY(NULL),
111 fHistoMotherPi0PtAlpha(NULL),
112 fHistoMotherEtaPtAlpha(NULL),
113 fHistoMotherPi0PtOpenAngle(NULL),
114 fHistoMotherEtaPtOpenAngle(NULL),
4e8dcc76 115 fHistoMotherPi0ConvPhotonEtaPhi(NULL),
116 fHistoMotherEtaConvPhotonEtaPhi(NULL),
20af4b69 117 fHistoMotherInvMassECalib(NULL),
118 fHistoMotherInvMassECalibalpha(NULL),
ea1bc51e 119 fHistoPhotonPairPtconv(NULL),
120 fHistoPhotonPairMixedEventPtconv(NULL),
8bdca7f1 121 fHistoClusGammaPt(NULL),
ecd3e131 122 fHistoClusOverlapHeadersGammaPt(NULL),
8bdca7f1 123 fHistoMCHeaders(NULL),
124 fHistoMCAllGammaPt(NULL),
20af4b69 125 fHistoMCAllGammaEMCALAccPt(NULL),
8bdca7f1 126 fHistoMCDecayGammaPi0Pt(NULL),
127 fHistoMCDecayGammaRhoPt(NULL),
128 fHistoMCDecayGammaEtaPt(NULL),
129 fHistoMCDecayGammaOmegaPt(NULL),
130 fHistoMCDecayGammaEtapPt(NULL),
131 fHistoMCDecayGammaPhiPt(NULL),
132 fHistoMCDecayGammaSigmaPt(NULL),
133 fHistoMCConvGammaPt(NULL),
134 fHistoMCConvGammaR(NULL),
135 fHistoMCConvGammaEta(NULL),
136 fHistoMCPi0Pt(NULL),
137 fHistoMCPi0WOWeightPt(NULL),
138 fHistoMCEtaPt(NULL),
139 fHistoMCEtaWOWeightPt(NULL),
140 fHistoMCPi0InAccPt(NULL),
141 fHistoMCEtaInAccPt(NULL),
142 fHistoMCPi0PtY(NULL),
143 fHistoMCEtaPtY(NULL),
de752898 144 fHistoMCPi0PtAlpha(NULL),
145 fHistoMCEtaPtAlpha(NULL),
8bdca7f1 146 fHistoMCK0sPt(NULL),
147 fHistoMCK0sWOWeightPt(NULL),
148 fHistoMCK0sPtY(NULL),
149 fHistoMCSecPi0PtvsSource(NULL),
150 fHistoMCSecPi0Source(NULL),
151 fHistoMCSecEtaPt(NULL),
152 fHistoMCSecEtaSource(NULL),
ed8bc1ca 153 fHistoTruePi0InvMassPt(NULL),
154 fHistoTrueEtaInvMassPt(NULL),
155 fHistoTruePi0CaloPhotonInvMassPt(NULL),
156 fHistoTrueEtaCaloPhotonInvMassPt(NULL),
20af4b69 157 fHistoTruePi0CaloConvertedPhotonInvMassPt(NULL),
158 fHistoTruePi0CaloConvertedPhotonMatchedInvMassPt(NULL),
159 fHistoTrueEtaCaloConvertedPhotonInvMassPt(NULL),
160 fHistoTrueEtaCaloConvertedPhotonMatchedInvMassPt(NULL),
ed8bc1ca 161 fHistoTruePi0CaloElectronInvMassPt(NULL),
162 fHistoTrueEtaCaloElectronInvMassPt(NULL),
163 fHistoTruePi0CaloMergedClusterInvMassPt(NULL),
164 fHistoTrueEtaCaloMergedClusterInvMassPt(NULL),
fd94f234 165 fHistoTrueMotherCaloEMNonLeadingInvMassPt(NULL),
ed8bc1ca 166 fHistoTruePi0CaloMergedClusterPartConvInvMassPt(NULL),
167 fHistoTrueEtaCaloMergedClusterPartConvInvMassPt(NULL),
168 fHistoTruePrimaryPi0InvMassPt(NULL),
169 fHistoTruePrimaryEtaInvMassPt(NULL),
170 fHistoTruePrimaryPi0W0WeightingInvMassPt(NULL),
171 fHistoTruePrimaryEtaW0WeightingInvMassPt(NULL),
172 fProfileTruePrimaryPi0WeightsInvMassPt(NULL),
173 fProfileTruePrimaryEtaWeightsInvMassPt(NULL),
8bdca7f1 174 fHistoTruePrimaryPi0MCPtResolPt(NULL),
175 fHistoTruePrimaryEtaMCPtResolPt(NULL),
ee4b3d66 176 fHistoTrueMotherPi0ConvPhotonEtaPhi(NULL),
177 fHistoTrueMotherEtaConvPhotonEtaPhi(NULL),
ed8bc1ca 178 fHistoTrueSecondaryPi0InvMassPt(NULL),
ed8bc1ca 179 fHistoTrueSecondaryPi0FromK0sInvMassPt(NULL),
8bdca7f1 180 fHistoTrueK0sWithPi0DaughterMCPt(NULL),
ed8bc1ca 181 fHistoTrueSecondaryPi0FromEtaInvMassPt(NULL),
8bdca7f1 182 fHistoTrueEtaWithPi0DaughterMCPt(NULL),
ed8bc1ca 183 fHistoTrueSecondaryPi0FromLambdaInvMassPt(NULL),
8bdca7f1 184 fHistoTrueLambdaWithPi0DaughterMCPt(NULL),
185 fHistoTrueBckGGInvMassPt(NULL),
186 fHistoTrueBckContInvMassPt(NULL),
187 fHistoTruePi0PtY(NULL),
188 fHistoTrueEtaPtY(NULL),
189 fHistoTruePi0PtAlpha(NULL),
190 fHistoTrueEtaPtAlpha(NULL),
191 fHistoTruePi0PtOpenAngle(NULL),
192 fHistoTrueEtaPtOpenAngle(NULL),
8bdca7f1 193 fHistoTrueConvGammaPt(NULL),
194 fHistoTrueConvPi0GammaPt(NULL),
195 fHistoTrueConvGammaEta(NULL),
196 fHistoCombinatorialPt(NULL),
197 fHistoTruePrimaryConvGammaPt(NULL),
198 fHistoTruePrimaryConvGammaESDPtMCPt(NULL),
199 fHistoTrueSecondaryConvGammaPt(NULL),
200 fHistoTrueSecondaryConvGammaFromXFromK0sPt(NULL),
201 fHistoTrueSecondaryConvGammaFromXFromLambdaPt(NULL),
8bdca7f1 202 fHistoTrueClusGammaPt(NULL),
fd94f234 203 fHistoTrueClusUnConvGammaPt(NULL),
20af4b69 204 fHistoTrueClusUnConvGammaMCPt(NULL),
fd94f234 205 fHistoTrueClusElectronPt(NULL),
206 fHistoTrueClusConvGammaPt(NULL),
20af4b69 207 fHistoTrueClusConvGammaMCPt(NULL),
fd94f234 208 fHistoTrueClusConvGammaFullyPt(NULL),
209 fHistoTrueClusMergedGammaPt(NULL),
210 fHistoTrueClusMergedPartConvGammaPt(NULL),
211 fHistoTrueClusDalitzPt(NULL),
212 fHistoTrueClusDalitzMergedPt(NULL),
213 fHistoTrueClusPhotonFromElecMotherPt(NULL),
214 fHistoTrueClusShowerPt(NULL),
cc579963 215 fHistoTrueClusSubLeadingPt(NULL),
216 fHistoTrueClusNParticles(NULL),
fd94f234 217 fHistoTrueClusEMNonLeadingPt(NULL),
218 fHistoTrueNLabelsInClus(NULL),
8bdca7f1 219 fHistoTruePrimaryClusGammaPt(NULL),
220 fHistoTruePrimaryClusGammaESDPtMCPt(NULL),
ea1bc51e 221 fHistoTruePrimaryPi0PhotonPairPtconv(NULL),
e764f3ba 222 fHistoTruePrimaryPi0DCPtconv(NULL),
223 fHistoTruePrimaryPi0MissingPtconv(NULL),
ea1bc51e 224 fHistoTruePrimaryEtaPhotonPairPtconv(NULL),
e764f3ba 225 fHistoTruePrimaryEtaDCPtconv(NULL),
226 fHistoTruePrimaryEtaMissingPtconv(NULL),
ea1bc51e 227 fHistoTrueSecondaryPi0PhotonPairPtconv(NULL),
e764f3ba 228 fHistoTrueSecondaryPi0DCPtconv(NULL),
229 fHistoTrueSecondaryPi0MissingPtconv(NULL),
230 fStringRecTruePi0s(NULL),
231 fStringRecTrueEtas(NULL),
8bdca7f1 232 fHistoNEvents(NULL),
233 fHistoNGoodESDTracks(NULL),
234 fHistoNGammaCandidates(NULL),
235 fHistoNGoodESDTracksVsNGammaCanditates(NULL),
236 fHistoNV0Tracks(NULL),
237 fProfileEtaShift(NULL),
238 fEventPlaneAngle(-100),
239 fRandom(0),
240 fNGammaCandidates(0),
241 fUnsmearedPx(NULL),
242 fUnsmearedPy(NULL),
243 fUnsmearedPz(NULL),
244 fUnsmearedE(NULL),
245 fMCStackPos(NULL),
246 fMCStackNeg(NULL),
247 fESDArrayPos(NULL),
248 fESDArrayNeg(NULL),
249 fnCuts(0),
250 fiCut(0),
251 fMoveParticleAccordingToVertex(kTRUE),
252 fIsHeavyIon(0),
253 fDoMesonAnalysis(kTRUE),
254 fDoMesonQA(0),
255 fDoPhotonQA(0),
fd94f234 256 fDoClusterQA(0),
8bdca7f1 257 fIsFromMBHeader(kTRUE),
ecd3e131 258 fIsOverlappingWithOtherHeader(kFALSE),
d53bf4ac 259 fIsMC(kFALSE)
8bdca7f1 260{
261
262}
263
264//________________________________________________________________________
265AliAnalysisTaskGammaConvCalo::AliAnalysisTaskGammaConvCalo(const char *name):
266 AliAnalysisTaskSE(name),
267 fV0Reader(NULL),
268 fBGHandler(NULL),
269 fBGHandlerRP(NULL),
270 fBGClusHandler(NULL),
271 fBGClusHandlerRP(NULL),
272 fInputEvent(NULL),
273 fMCEvent(NULL),
274 fMCStack(NULL),
275 fCutFolder(NULL),
276 fESDList(NULL),
277 fBackList(NULL),
278 fMotherList(NULL),
279 fPhotonDCAList(NULL),
8bdca7f1 280 fTrueList(NULL),
281 fMCList(NULL),
282 fHeaderNameList(NULL),
ea1bc51e 283 fClusterOutputList(NULL),
8bdca7f1 284 fOutputContainer(0),
285 fReaderGammas(NULL),
286 fGammaCandidates(NULL),
287 fClusterCandidates(NULL),
344100c4 288 fEventCutArray(NULL),
289 fEventCuts(NULL),
8bdca7f1 290 fCutArray(NULL),
291 fConversionCuts(NULL),
292 fClusterCutArray(NULL),
293 fCaloPhotonCuts(NULL),
294 fMesonCutArray(NULL),
295 fMesonCuts(NULL),
296 fHistoConvGammaPt(NULL),
297 fHistoConvGammaR(NULL),
298 fHistoConvGammaEta(NULL),
299 fTreeConvGammaPtDcazCat(NULL),
300 fPtGamma(0),
301 fDCAzPhoton(0),
302 fRConvPhoton(0),
303 fEtaPhoton(0),
304 fCharCatPhoton(0),
305 fCharPhotonMCInfo(0),
306 fHistoMotherInvMassPt(NULL),
d53bf4ac 307 fHistoMotherMatchedInvMassPt(NULL),
8bdca7f1 308 fSparseMotherInvMassPtZM(NULL),
309 fHistoMotherBackInvMassPt(NULL),
310 fSparseMotherBackInvMassPtZM(NULL),
311 fHistoMotherInvMassEalpha(NULL),
312 fHistoMotherPi0PtY(NULL),
313 fHistoMotherEtaPtY(NULL),
314 fHistoMotherPi0PtAlpha(NULL),
315 fHistoMotherEtaPtAlpha(NULL),
316 fHistoMotherPi0PtOpenAngle(NULL),
317 fHistoMotherEtaPtOpenAngle(NULL),
4e8dcc76 318 fHistoMotherPi0ConvPhotonEtaPhi(NULL),
319 fHistoMotherEtaConvPhotonEtaPhi(NULL),
20af4b69 320 fHistoMotherInvMassECalib(NULL),
321 fHistoMotherInvMassECalibalpha(NULL),
ea1bc51e 322 fHistoPhotonPairPtconv(NULL),
323 fHistoPhotonPairMixedEventPtconv(NULL),
8bdca7f1 324 fHistoClusGammaPt(NULL),
ecd3e131 325 fHistoClusOverlapHeadersGammaPt(NULL),
8bdca7f1 326 fHistoMCHeaders(NULL),
327 fHistoMCAllGammaPt(NULL),
20af4b69 328 fHistoMCAllGammaEMCALAccPt(NULL),
8bdca7f1 329 fHistoMCDecayGammaPi0Pt(NULL),
330 fHistoMCDecayGammaRhoPt(NULL),
331 fHistoMCDecayGammaEtaPt(NULL),
332 fHistoMCDecayGammaOmegaPt(NULL),
333 fHistoMCDecayGammaEtapPt(NULL),
334 fHistoMCDecayGammaPhiPt(NULL),
335 fHistoMCDecayGammaSigmaPt(NULL),
336 fHistoMCConvGammaPt(NULL),
337 fHistoMCConvGammaR(NULL),
338 fHistoMCConvGammaEta(NULL),
339 fHistoMCPi0Pt(NULL),
340 fHistoMCPi0WOWeightPt(NULL),
341 fHistoMCEtaPt(NULL),
342 fHistoMCEtaWOWeightPt(NULL),
343 fHistoMCPi0InAccPt(NULL),
344 fHistoMCEtaInAccPt(NULL),
345 fHistoMCPi0PtY(NULL),
346 fHistoMCEtaPtY(NULL),
de752898 347 fHistoMCPi0PtAlpha(NULL),
348 fHistoMCEtaPtAlpha(NULL),
8bdca7f1 349 fHistoMCK0sPt(NULL),
350 fHistoMCK0sWOWeightPt(NULL),
351 fHistoMCK0sPtY(NULL),
352 fHistoMCSecPi0PtvsSource(NULL),
353 fHistoMCSecPi0Source(NULL),
354 fHistoMCSecEtaPt(NULL),
355 fHistoMCSecEtaSource(NULL),
ed8bc1ca 356 fHistoTruePi0InvMassPt(NULL),
357 fHistoTrueEtaInvMassPt(NULL),
358 fHistoTruePi0CaloPhotonInvMassPt(NULL),
359 fHistoTrueEtaCaloPhotonInvMassPt(NULL),
20af4b69 360 fHistoTruePi0CaloConvertedPhotonInvMassPt(NULL),
361 fHistoTruePi0CaloConvertedPhotonMatchedInvMassPt(NULL),
362 fHistoTrueEtaCaloConvertedPhotonInvMassPt(NULL),
363 fHistoTrueEtaCaloConvertedPhotonMatchedInvMassPt(NULL),
ed8bc1ca 364 fHistoTruePi0CaloElectronInvMassPt(NULL),
365 fHistoTrueEtaCaloElectronInvMassPt(NULL),
366 fHistoTruePi0CaloMergedClusterInvMassPt(NULL),
367 fHistoTrueEtaCaloMergedClusterInvMassPt(NULL),
fd94f234 368 fHistoTrueMotherCaloEMNonLeadingInvMassPt(NULL),
ed8bc1ca 369 fHistoTruePi0CaloMergedClusterPartConvInvMassPt(NULL),
370 fHistoTrueEtaCaloMergedClusterPartConvInvMassPt(NULL),
371 fHistoTruePrimaryPi0InvMassPt(NULL),
372 fHistoTruePrimaryEtaInvMassPt(NULL),
373 fHistoTruePrimaryPi0W0WeightingInvMassPt(NULL),
374 fHistoTruePrimaryEtaW0WeightingInvMassPt(NULL),
375 fProfileTruePrimaryPi0WeightsInvMassPt(NULL),
376 fProfileTruePrimaryEtaWeightsInvMassPt(NULL),
8bdca7f1 377 fHistoTruePrimaryPi0MCPtResolPt(NULL),
378 fHistoTruePrimaryEtaMCPtResolPt(NULL),
ee4b3d66 379 fHistoTrueMotherPi0ConvPhotonEtaPhi(NULL),
380 fHistoTrueMotherEtaConvPhotonEtaPhi(NULL),
ed8bc1ca 381 fHistoTrueSecondaryPi0InvMassPt(NULL),
ed8bc1ca 382 fHistoTrueSecondaryPi0FromK0sInvMassPt(NULL),
8bdca7f1 383 fHistoTrueK0sWithPi0DaughterMCPt(NULL),
ed8bc1ca 384 fHistoTrueSecondaryPi0FromEtaInvMassPt(NULL),
8bdca7f1 385 fHistoTrueEtaWithPi0DaughterMCPt(NULL),
ed8bc1ca 386 fHistoTrueSecondaryPi0FromLambdaInvMassPt(NULL),
8bdca7f1 387 fHistoTrueLambdaWithPi0DaughterMCPt(NULL),
388 fHistoTrueBckGGInvMassPt(NULL),
389 fHistoTrueBckContInvMassPt(NULL),
390 fHistoTruePi0PtY(NULL),
391 fHistoTrueEtaPtY(NULL),
392 fHistoTruePi0PtAlpha(NULL),
393 fHistoTrueEtaPtAlpha(NULL),
394 fHistoTruePi0PtOpenAngle(NULL),
395 fHistoTrueEtaPtOpenAngle(NULL),
8bdca7f1 396 fHistoTrueConvGammaPt(NULL),
397 fHistoTrueConvPi0GammaPt(NULL),
398 fHistoTrueConvGammaEta(NULL),
399 fHistoCombinatorialPt(NULL),
400 fHistoTruePrimaryConvGammaPt(NULL),
401 fHistoTruePrimaryConvGammaESDPtMCPt(NULL),
402 fHistoTrueSecondaryConvGammaPt(NULL),
403 fHistoTrueSecondaryConvGammaFromXFromK0sPt(NULL),
404 fHistoTrueSecondaryConvGammaFromXFromLambdaPt(NULL),
8bdca7f1 405 fHistoTrueClusGammaPt(NULL),
fd94f234 406 fHistoTrueClusUnConvGammaPt(NULL),
20af4b69 407 fHistoTrueClusUnConvGammaMCPt(NULL),
fd94f234 408 fHistoTrueClusElectronPt(NULL),
409 fHistoTrueClusConvGammaPt(NULL),
20af4b69 410 fHistoTrueClusConvGammaMCPt(NULL),
fd94f234 411 fHistoTrueClusConvGammaFullyPt(NULL),
412 fHistoTrueClusMergedGammaPt(NULL),
413 fHistoTrueClusMergedPartConvGammaPt(NULL),
414 fHistoTrueClusDalitzPt(NULL),
415 fHistoTrueClusDalitzMergedPt(NULL),
416 fHistoTrueClusPhotonFromElecMotherPt(NULL),
417 fHistoTrueClusShowerPt(NULL),
cc579963 418 fHistoTrueClusSubLeadingPt(NULL),
419 fHistoTrueClusNParticles(NULL),
fd94f234 420 fHistoTrueClusEMNonLeadingPt(NULL),
421 fHistoTrueNLabelsInClus(NULL),
8bdca7f1 422 fHistoTruePrimaryClusGammaPt(NULL),
423 fHistoTruePrimaryClusGammaESDPtMCPt(NULL),
ea1bc51e 424 fHistoTruePrimaryPi0PhotonPairPtconv(NULL),
e764f3ba 425 fHistoTruePrimaryPi0DCPtconv(NULL),
426 fHistoTruePrimaryPi0MissingPtconv(NULL),
ea1bc51e 427 fHistoTruePrimaryEtaPhotonPairPtconv(NULL),
e764f3ba 428 fHistoTruePrimaryEtaDCPtconv(NULL),
429 fHistoTruePrimaryEtaMissingPtconv(NULL),
ea1bc51e 430 fHistoTrueSecondaryPi0PhotonPairPtconv(NULL),
e764f3ba 431 fHistoTrueSecondaryPi0DCPtconv(NULL),
432 fHistoTrueSecondaryPi0MissingPtconv(NULL),
433 fStringRecTruePi0s(NULL),
434 fStringRecTrueEtas(NULL),
8bdca7f1 435 fHistoNEvents(NULL),
436 fHistoNGoodESDTracks(NULL),
437 fHistoNGammaCandidates(NULL),
438 fHistoNGoodESDTracksVsNGammaCanditates(NULL),
439 fHistoNV0Tracks(NULL),
440 fProfileEtaShift(NULL),
441 fEventPlaneAngle(-100),
442 fRandom(0),
443 fNGammaCandidates(0),
444 fUnsmearedPx(NULL),
445 fUnsmearedPy(NULL),
446 fUnsmearedPz(NULL),
447 fUnsmearedE(NULL),
448 fMCStackPos(NULL),
449 fMCStackNeg(NULL),
450 fESDArrayPos(NULL),
451 fESDArrayNeg(NULL),
452 fnCuts(0),
453 fiCut(0),
454 fMoveParticleAccordingToVertex(kTRUE),
455 fIsHeavyIon(0),
456 fDoMesonAnalysis(kTRUE),
457 fDoMesonQA(0),
458 fDoPhotonQA(0),
fd94f234 459 fDoClusterQA(0),
8bdca7f1 460 fIsFromMBHeader(kTRUE),
ecd3e131 461 fIsOverlappingWithOtherHeader(kFALSE),
d53bf4ac 462 fIsMC(kFALSE)
8bdca7f1 463{
464 // Define output slots here
465 DefineOutput(1, TList::Class());
466}
467
468AliAnalysisTaskGammaConvCalo::~AliAnalysisTaskGammaConvCalo()
469{
470 if(fGammaCandidates){
471 delete fGammaCandidates;
472 fGammaCandidates = 0x0;
473 }
474 if(fClusterCandidates){
475 delete fClusterCandidates;
476 fClusterCandidates = 0x0;
477 }
478 if(fBGHandler){
479 delete[] fBGHandler;
480 fBGHandler = 0x0;
481 }
482 if(fBGHandlerRP){
483 delete[] fBGHandlerRP;
484 fBGHandlerRP = 0x0;
485 }
486 if(fBGClusHandler){
487 delete[] fBGClusHandler;
488 fBGClusHandler = 0x0;
489 }
490 if(fBGClusHandlerRP){
491 delete[] fBGClusHandlerRP;
492 fBGClusHandlerRP = 0x0;
493 }
494}
495//___________________________________________________________
496void AliAnalysisTaskGammaConvCalo::InitBack(){
497
498 const Int_t nDim = 4;
499 Int_t nBins[nDim] = {800,250,7,4};
500 Double_t xMin[nDim] = {0,0, 0,0};
501 Double_t xMax[nDim] = {0.8,25,7,4};
502
503 fSparseMotherInvMassPtZM = new THnSparseF*[fnCuts];
504 fSparseMotherBackInvMassPtZM = new THnSparseF*[fnCuts];
505
506 fBGHandler = new AliGammaConversionAODBGHandler*[fnCuts];
507 fBGHandlerRP = new AliConversionAODBGHandlerRP*[fnCuts];
508
509 fBGClusHandler = new AliGammaConversionAODBGHandler*[fnCuts];
510 fBGClusHandlerRP = new AliConversionAODBGHandlerRP*[fnCuts];
511
512 for(Int_t iCut = 0; iCut<fnCuts;iCut++){
513 if (((AliConversionMesonCuts*)fMesonCutArray->At(iCut))->DoBGCalculation()){
344100c4 514 TString cutstringEvent = ((AliConvEventCuts*)fEventCutArray->At(iCut))->GetCutNumber();
515 TString cutstringPhoton = ((AliConversionPhotonCuts*)fCutArray->At(iCut))->GetCutNumber();
516 TString cutstringCalo = ((AliCaloPhotonCuts*)fClusterCutArray->At(iCut))->GetCutNumber();
517 TString cutstringMeson = ((AliConversionMesonCuts*)fMesonCutArray->At(iCut))->GetCutNumber();
8bdca7f1 518
344100c4 519 Int_t collisionSystem = atoi((TString)(((AliConvEventCuts*)fEventCutArray->At(iCut))->GetCutNumber())(0,1));
520 Int_t centMin = atoi((TString)(((AliConvEventCuts*)fEventCutArray->At(iCut))->GetCutNumber())(1,1));
521 Int_t centMax = atoi((TString)(((AliConvEventCuts*)fEventCutArray->At(iCut))->GetCutNumber())(2,1));
8bdca7f1 522
523 if(collisionSystem == 1 || collisionSystem == 2 ||
524 collisionSystem == 5 || collisionSystem == 8 ||
525 collisionSystem == 9){
526 centMin = centMin*10;
527 centMax = centMax*10;
528 if(centMax ==0 && centMax!=centMin) centMax=100;
529 } else if(collisionSystem == 3 || collisionSystem == 6){
530 centMin = centMin*5;
531 centMax = centMax*5;
532 } else if(collisionSystem == 4 || collisionSystem == 7){
533 centMin = ((centMin*5)+45);
534 centMax = ((centMax*5)+45);
535 }
536
537 fBackList[iCut] = new TList();
344100c4 538 fBackList[iCut]->SetName(Form("%s_%s_%s_%s Back histograms",cutstringEvent.Data(),cutstringPhoton.Data(),cutstringCalo.Data(), cutstringMeson.Data()));
8bdca7f1 539 fBackList[iCut]->SetOwner(kTRUE);
540 fCutFolder[iCut]->Add(fBackList[iCut]);
541
542 fSparseMotherBackInvMassPtZM[iCut] = new THnSparseF("Back_Back_InvMass_Pt_z_m","Back_Back_InvMass_Pt_z_m",nDim,nBins,xMin,xMax);
543 fBackList[iCut]->Add(fSparseMotherBackInvMassPtZM[iCut]);
544
545 fMotherList[iCut] = new TList();
344100c4 546 fMotherList[iCut]->SetName(Form("%s_%s_%s_%s Mother histograms",cutstringEvent.Data(),cutstringPhoton.Data(),cutstringCalo.Data(),cutstringMeson.Data()));
8bdca7f1 547 fMotherList[iCut]->SetOwner(kTRUE);
548 fCutFolder[iCut]->Add(fMotherList[iCut]);
549
550 fSparseMotherInvMassPtZM[iCut] = new THnSparseF("Back_Mother_InvMass_Pt_z_m","Back_Mother_InvMass_Pt_z_m",nDim,nBins,xMin,xMax);
551 fMotherList[iCut]->Add(fSparseMotherInvMassPtZM[iCut]);
552
553 if(((AliConversionMesonCuts*)fMesonCutArray->At(iCut))->BackgroundHandlerType() == 0){
554 fBGHandler[iCut] = new AliGammaConversionAODBGHandler(
555 collisionSystem,centMin,centMax,
556 ((AliConversionMesonCuts*)fMesonCutArray->At(iCut))->GetNumberOfBGEvents(),
cfd87ccd 557 ((AliConversionMesonCuts*)fMesonCutArray->At(iCut))->UseTrackMultiplicity(),
558 2,8,7);
8bdca7f1 559 fBGClusHandler[iCut] = new AliGammaConversionAODBGHandler(
560 collisionSystem,centMin,centMax,
561 ((AliConversionMesonCuts*)fMesonCutArray->At(iCut))->GetNumberOfBGEvents(),
cfd87ccd 562 ((AliConversionMesonCuts*)fMesonCutArray->At(iCut))->UseTrackMultiplicity(),
563 2,8,7);
8bdca7f1 564 fBGHandlerRP[iCut] = NULL;
565 } else{
566 fBGHandlerRP[iCut] = new AliConversionAODBGHandlerRP(
344100c4 567 ((AliConvEventCuts*)fEventCutArray->At(fiCut))->IsHeavyIon(),
8bdca7f1 568 ((AliConversionMesonCuts*)fMesonCutArray->At(fiCut))->UseTrackMultiplicity(),
569 ((AliConversionMesonCuts*)fMesonCutArray->At(iCut))->GetNumberOfBGEvents());
570 fBGClusHandlerRP[iCut] = new AliConversionAODBGHandlerRP(
344100c4 571 ((AliConvEventCuts*)fEventCutArray->At(fiCut))->IsHeavyIon(),
8bdca7f1 572 ((AliConversionMesonCuts*)fMesonCutArray->At(fiCut))->UseTrackMultiplicity(),
573 ((AliConversionMesonCuts*)fMesonCutArray->At(iCut))->GetNumberOfBGEvents());
574 fBGHandler[iCut] = NULL;
575 }
576 }
577 }
578}
579//________________________________________________________________________
580void AliAnalysisTaskGammaConvCalo::UserCreateOutputObjects(){
581
582 // Create histograms
583 if(fOutputContainer != NULL){
584 delete fOutputContainer;
585 fOutputContainer = NULL;
586 }
587 if(fOutputContainer == NULL){
588 fOutputContainer = new TList();
589 fOutputContainer->SetOwner(kTRUE);
590 }
591
592 // Array of current cut's gammas
593 fGammaCandidates = new TList();
594 fClusterCandidates = new TList();
595
596 fCutFolder = new TList*[fnCuts];
597 fESDList = new TList*[fnCuts];
598 fBackList = new TList*[fnCuts];
599 fMotherList = new TList*[fnCuts];
600 fHistoNEvents = new TH1I*[fnCuts];
601 fHistoNGoodESDTracks = new TH1I*[fnCuts];
602 fHistoNGammaCandidates = new TH1I*[fnCuts];
603 fHistoNGoodESDTracksVsNGammaCanditates = new TH2F*[fnCuts];
604 fHistoNV0Tracks = new TH1I*[fnCuts];
605 fProfileEtaShift = new TProfile*[fnCuts];
606 fHistoConvGammaPt = new TH1F*[fnCuts];
607
608 if (fDoPhotonQA == 2){
609 fPhotonDCAList = new TList*[fnCuts];
610 fTreeConvGammaPtDcazCat = new TTree*[fnCuts];
611 }
612 if (fDoPhotonQA > 0){
613 fHistoConvGammaR = new TH1F*[fnCuts];
614 fHistoConvGammaEta = new TH1F*[fnCuts];
615 }
616
617 if(fDoMesonAnalysis){
618 fHistoMotherInvMassPt = new TH2F*[fnCuts];
d53bf4ac 619 fHistoMotherMatchedInvMassPt = new TH2F*[fnCuts];
8bdca7f1 620 fHistoMotherBackInvMassPt = new TH2F*[fnCuts];
621 fHistoMotherInvMassEalpha = new TH2F*[fnCuts];
ea1bc51e 622 fHistoPhotonPairPtconv = new TH2F*[fnCuts];
623 fHistoPhotonPairMixedEventPtconv = new TH2F*[fnCuts];
8bdca7f1 624 if (fDoMesonQA > 0){
625 fHistoMotherPi0PtY = new TH2F*[fnCuts];
626 fHistoMotherEtaPtY = new TH2F*[fnCuts];
627 fHistoMotherPi0PtAlpha = new TH2F*[fnCuts];
628 fHistoMotherEtaPtAlpha = new TH2F*[fnCuts];
629 fHistoMotherPi0PtOpenAngle = new TH2F*[fnCuts];
630 fHistoMotherEtaPtOpenAngle = new TH2F*[fnCuts];
4e8dcc76 631 fHistoMotherPi0ConvPhotonEtaPhi = new TH2F*[fnCuts];
632 fHistoMotherEtaConvPhotonEtaPhi = new TH2F*[fnCuts];
8bdca7f1 633 }
20af4b69 634 if(fDoMesonQA == 1){
635 fHistoMotherInvMassECalib = new TH2F*[fnCuts];
636 fHistoMotherInvMassECalibalpha = new TH2F*[fnCuts];
637 }
8bdca7f1 638 }
8bdca7f1 639
ea1bc51e 640 fClusterOutputList = new TList*[fnCuts];
8bdca7f1 641 fHistoClusGammaPt = new TH1F*[fnCuts];
de141c1e 642 fHistoClusOverlapHeadersGammaPt = new TH1F*[fnCuts];
643
8bdca7f1 644 for(Int_t iCut = 0; iCut<fnCuts;iCut++){
344100c4 645 TString cutstringEvent = ((AliConvEventCuts*)fEventCutArray->At(iCut))->GetCutNumber();
646 TString cutstringPhoton = ((AliConversionPhotonCuts*)fCutArray->At(iCut))->GetCutNumber();
647 TString cutstringCalo = ((AliCaloPhotonCuts*)fClusterCutArray->At(iCut))->GetCutNumber();
648 TString cutstringMeson = "NoMesonCut";
8bdca7f1 649 if(fDoMesonAnalysis)cutstringMeson = ((AliConversionMesonCuts*)fMesonCutArray->At(iCut))->GetCutNumber();
650
651 fCutFolder[iCut] = new TList();
344100c4 652 fCutFolder[iCut]->SetName(Form("Cut Number %s_%s_%s_%s",cutstringEvent.Data(),cutstringPhoton.Data(),cutstringCalo.Data(),cutstringMeson.Data()));
8bdca7f1 653 fCutFolder[iCut]->SetOwner(kTRUE);
654 fOutputContainer->Add(fCutFolder[iCut]);
655 fESDList[iCut] = new TList();
344100c4 656 fESDList[iCut]->SetName(Form("%s_%s_%s_%s ESD histograms",cutstringEvent.Data(),cutstringPhoton.Data(),cutstringCalo.Data(),cutstringMeson.Data()));
8bdca7f1 657 fESDList[iCut]->SetOwner(kTRUE);
658 fCutFolder[iCut]->Add(fESDList[iCut]);
659
7f070437 660 fHistoNEvents[iCut] = new TH1I("NEvents","NEvents",10,-0.5,9.5);
8bdca7f1 661 fHistoNEvents[iCut]->GetXaxis()->SetBinLabel(1,"Accepted");
662 fHistoNEvents[iCut]->GetXaxis()->SetBinLabel(2,"Centrality");
663 fHistoNEvents[iCut]->GetXaxis()->SetBinLabel(3,"Missing MC");
f57c67ac 664 if (((AliConvEventCuts*)fEventCutArray->At(iCut))->IsSpecialTrigger() > 1 ){
8bdca7f1 665 TString TriggerNames = "Not Trigger: ";
344100c4 666 TriggerNames = TriggerNames+ ( (AliConvEventCuts*)fEventCutArray->At(iCut))->GetSpecialTriggerName();
8bdca7f1 667 fHistoNEvents[iCut]->GetXaxis()->SetBinLabel(4,TriggerNames.Data());
668 } else {
669 fHistoNEvents[iCut]->GetXaxis()->SetBinLabel(4,"Trigger");
670 }
671 fHistoNEvents[iCut]->GetXaxis()->SetBinLabel(5,"Vertex Z");
672 fHistoNEvents[iCut]->GetXaxis()->SetBinLabel(6,"Cont. Vertex");
673 fHistoNEvents[iCut]->GetXaxis()->SetBinLabel(7,"Pile-Up");
674 fHistoNEvents[iCut]->GetXaxis()->SetBinLabel(8,"no SDD");
675 fHistoNEvents[iCut]->GetXaxis()->SetBinLabel(9,"no V0AND");
7f070437 676 fHistoNEvents[iCut]->GetXaxis()->SetBinLabel(10,"EMCAL problem");
8bdca7f1 677 fESDList[iCut]->Add(fHistoNEvents[iCut]);
678
679 if(fIsHeavyIon == 1) fHistoNGoodESDTracks[iCut] = new TH1I("GoodESDTracks","GoodESDTracks",4000,0,4000);
680 else if(fIsHeavyIon == 2) fHistoNGoodESDTracks[iCut] = new TH1I("GoodESDTracks","GoodESDTracks",400,0,400);
681 else fHistoNGoodESDTracks[iCut] = new TH1I("GoodESDTracks","GoodESDTracks",200,0,200);
e764f3ba 682 fHistoNGoodESDTracks[iCut]->SetXTitle("# TPC tracks");
8bdca7f1 683 fESDList[iCut]->Add(fHistoNGoodESDTracks[iCut]);
e764f3ba 684
8bdca7f1 685 if(fIsHeavyIon == 1) fHistoNGammaCandidates[iCut] = new TH1I("GammaCandidates","GammaCandidates",100,0,100);
686 else if(fIsHeavyIon == 2) fHistoNGammaCandidates[iCut] = new TH1I("GammaCandidates","GammaCandidates",50,0,50);
687 else fHistoNGammaCandidates[iCut] = new TH1I("GammaCandidates","GammaCandidates",50,0,50);
e764f3ba 688 fHistoNGammaCandidates[iCut]->SetXTitle("# accepted $#gamma_{conv}");
8bdca7f1 689 fESDList[iCut]->Add(fHistoNGammaCandidates[iCut]);
e764f3ba 690
8bdca7f1 691 if(fIsHeavyIon == 1) fHistoNGoodESDTracksVsNGammaCanditates[iCut] = new TH2F("GoodESDTracksVsGammaCandidates","GoodESDTracksVsGammaCandidates",4000,0,4000,100,0,100);
692 else if(fIsHeavyIon == 2) fHistoNGoodESDTracksVsNGammaCanditates[iCut] = new TH2F("GoodESDTracksVsGammaCandidates","GoodESDTracksVsGammaCandidates",400,0,400,50,0,50);
693 else fHistoNGoodESDTracksVsNGammaCanditates[iCut] = new TH2F("GoodESDTracksVsGammaCandidates","GoodESDTracksVsGammaCandidates",200,0,200,50,0,50);
e764f3ba 694 fHistoNGoodESDTracksVsNGammaCanditates[iCut]->SetXTitle("# TPC tracks");
695 fHistoNGoodESDTracksVsNGammaCanditates[iCut]->SetYTitle("# accepted $#gamma_{conv}");
8bdca7f1 696 fESDList[iCut]->Add(fHistoNGoodESDTracksVsNGammaCanditates[iCut]);
697
698
699 if(fIsHeavyIon == 1) fHistoNV0Tracks[iCut] = new TH1I("V0 Multiplicity","V0 Multiplicity",30000,0,30000);
700 else if(fIsHeavyIon == 2) fHistoNV0Tracks[iCut] = new TH1I("V0 Multiplicity","V0 Multiplicity",2500,0,2500);
701 else fHistoNV0Tracks[iCut] = new TH1I("V0 Multiplicity","V0 Multiplicity",1500,0,1500);
e764f3ba 702 fHistoNV0Tracks[iCut]->SetXTitle("VZERO amp [arb. units]");
8bdca7f1 703 fESDList[iCut]->Add(fHistoNV0Tracks[iCut]);
704 fProfileEtaShift[iCut] = new TProfile("Eta Shift","Eta Shift",1, -0.5,0.5);
705 fESDList[iCut]->Add(fProfileEtaShift[iCut]);
706 fHistoConvGammaPt[iCut] = new TH1F("ESD_ConvGamma_Pt","ESD_ConvGamma_Pt",250,0,25);
e764f3ba 707 fHistoConvGammaPt[iCut]->SetXTitle("p_{T,conv} (GeV/c)");
8bdca7f1 708 fESDList[iCut]->Add(fHistoConvGammaPt[iCut]);
709
710 if (fDoPhotonQA == 2){
711 fPhotonDCAList[iCut] = new TList();
344100c4 712 fPhotonDCAList[iCut]->SetName(Form("%s_%s_%s_%s Photon DCA tree",cutstringEvent.Data(),cutstringPhoton.Data(),cutstringCalo.Data(),cutstringMeson.Data()));
8bdca7f1 713 fPhotonDCAList[iCut]->SetOwner(kTRUE);
714 fCutFolder[iCut]->Add(fPhotonDCAList[iCut]);
715
716 fTreeConvGammaPtDcazCat[iCut] = new TTree("ESD_ConvGamma_Pt_Dcaz_R_Eta","ESD_ConvGamma_Pt_Dcaz_R_Eta_Cat");
717 fTreeConvGammaPtDcazCat[iCut]->Branch("Pt",&fPtGamma,"fPtGamma/F");
ea1bc51e 718 fTreeConvGammaPtDcazCat[iCut]->Branch("DcaZPhoton",&fDCAzPhoton,"fDCAzPhoton/F");
8bdca7f1 719 fTreeConvGammaPtDcazCat[iCut]->Branch("cat",&fCharCatPhoton,"fCharCatPhoton/b");
720 if(fIsMC){
721 fTreeConvGammaPtDcazCat[iCut]->Branch("photonMCInfo",&fCharPhotonMCInfo,"fCharPhotonMCInfo/b");
722 }
723 fPhotonDCAList[iCut]->Add(fTreeConvGammaPtDcazCat[iCut]);
724 }
725
726 if (fDoPhotonQA > 0){
727 fHistoConvGammaR[iCut] = new TH1F("ESD_ConvGamma_R","ESD_ConvGamma_R",800,0,200);
e764f3ba 728 fHistoConvGammaR[iCut]->SetXTitle("R_{conv} (cm)");
8bdca7f1 729 fESDList[iCut]->Add(fHistoConvGammaR[iCut]);
730 fHistoConvGammaEta[iCut] = new TH1F("ESD_ConvGamma_Eta","ESD_ConvGamma_Eta",2000,-2,2);
e764f3ba 731 fHistoConvGammaEta[iCut]->SetXTitle("#eta_{conv}");
8bdca7f1 732 fESDList[iCut]->Add(fHistoConvGammaEta[iCut]);
733 }
734
ea1bc51e 735 fClusterOutputList[iCut] = new TList();
736 fClusterOutputList[iCut]->SetName(Form("%s_%s_%s_%s Cluster Output",cutstringEvent.Data(),cutstringPhoton.Data(),cutstringCalo.Data(),cutstringMeson.Data()));
737 fClusterOutputList[iCut]->SetOwner(1);
738 fCutFolder[iCut]->Add(fClusterOutputList[iCut]);
8bdca7f1 739
8bdca7f1 740 fHistoClusGammaPt[iCut] = new TH1F("ClusGamma_Pt","ClusGamma_Pt",250,0,25);
e764f3ba 741 fHistoClusGammaPt[iCut]->SetXTitle("p_{T,clus} (GeV/c)");
ea1bc51e 742 fClusterOutputList[iCut]->Add(fHistoClusGammaPt[iCut]);
de141c1e 743 fHistoClusOverlapHeadersGammaPt[iCut] = new TH1F("ClusGammaOverlapHeaders_Pt","ClusGammaOverlapHeaders_Pt",250,0,25);
e764f3ba 744 fHistoClusOverlapHeadersGammaPt[iCut]->SetXTitle("p_{T,clus} (GeV/c), selected header w/ overlap");
ea1bc51e 745 fClusterOutputList[iCut]->Add(fHistoClusOverlapHeadersGammaPt[iCut]);
8bdca7f1 746
8bdca7f1 747 if(fDoMesonAnalysis){
748 fHistoMotherInvMassPt[iCut] = new TH2F("ESD_Mother_InvMass_Pt","ESD_Mother_InvMass_Pt",800,0,0.8,250,0,25);
ea1bc51e 749 fHistoMotherInvMassPt[iCut]->SetXTitle("M_{inv} (GeV/c^{2})");
750 fHistoMotherInvMassPt[iCut]->SetYTitle("p_{T,pair} (GeV/c)");
8bdca7f1 751 fESDList[iCut]->Add(fHistoMotherInvMassPt[iCut]);
ea1bc51e 752
d53bf4ac 753 fHistoMotherMatchedInvMassPt[iCut] = new TH2F("ESD_MotherMatched_InvMass_Pt","ESD_MotherMatched_InvMass_Pt",800,0,0.8,250,0,25);
e764f3ba 754 fHistoMotherMatchedInvMassPt[iCut]->SetXTitle("M_{inv} (GeV/c^{2}) matched conv e^{+/-} to cluster");
ea1bc51e 755 fHistoMotherMatchedInvMassPt[iCut]->SetYTitle("p_{T,pair} (GeV/c)");
d53bf4ac 756 fESDList[iCut]->Add(fHistoMotherMatchedInvMassPt[iCut]);
ea1bc51e 757
8bdca7f1 758 fHistoMotherBackInvMassPt[iCut] = new TH2F("ESD_Background_InvMass_Pt","ESD_Background_InvMass_Pt",800,0,0.8,250,0,25);
e764f3ba 759 fHistoMotherBackInvMassPt[iCut]->SetXTitle("M_{inv, mxed} (GeV/c^{2})");
ea1bc51e 760 fHistoMotherBackInvMassPt[iCut]->SetYTitle("p_{T,BG pair} (GeV/c)");
8bdca7f1 761 fESDList[iCut]->Add(fHistoMotherBackInvMassPt[iCut]);
ea1bc51e 762
8bdca7f1 763 fHistoMotherInvMassEalpha[iCut] = new TH2F("ESD_Mother_InvMass_vs_E_alpha","ESD_Mother_InvMass_vs_E_alpha",800,0,0.8,250,0,25);
ea1bc51e 764 fHistoMotherInvMassEalpha[iCut]->SetXTitle("M_{inv} (GeV/c^{2})");
765 fHistoMotherInvMassEalpha[iCut]->SetYTitle("p_{T,pair} (GeV/c)");
8bdca7f1 766 fESDList[iCut]->Add(fHistoMotherInvMassEalpha[iCut]);
ea1bc51e 767
768 fHistoPhotonPairPtconv[iCut] = new TH2F("ESD_Mother_InvMass_PtConv","",800,0,0.8,250,0,25);
769 fHistoPhotonPairPtconv[iCut]->SetXTitle("M_{inv} (GeV/c^{2})");
770 fHistoPhotonPairPtconv[iCut]->SetYTitle("#gamma^{conv} p_{T} (GeV/c)");
771 fESDList[iCut]->Add(fHistoPhotonPairPtconv[iCut]);
772
773 fHistoPhotonPairMixedEventPtconv[iCut] = new TH2F("ESD_Background_InvMass_PtConv","",800,0,0.8,250,0,25);
774 fHistoPhotonPairMixedEventPtconv[iCut]->SetXTitle("M_{inv,mixed} (GeV/c^{2})");
775 fHistoPhotonPairMixedEventPtconv[iCut]->SetYTitle("#gamma^{conv} p_{T} (GeV/c)");
776 fESDList[iCut]->Add(fHistoPhotonPairMixedEventPtconv[iCut]);
777
20af4b69 778 if(fDoMesonQA == 1){
41ed7315 779 fHistoMotherInvMassECalib[iCut] = new TH2F("ESD_Mother_InvMass_E_Calib","ESD_Mother_InvMass_E_Calib",800,0,0.8,250,0,25);
ea1bc51e 780 fHistoMotherInvMassECalib[iCut]->SetXTitle("M_{inv} (GeV/c^{2})");
781 fHistoMotherInvMassECalib[iCut]->SetYTitle("p_{T,cluster} (GeV/c)");
20af4b69 782 fESDList[iCut]->Add(fHistoMotherInvMassECalib[iCut]);
ea1bc51e 783
20af4b69 784 fHistoMotherInvMassECalibalpha[iCut] = new TH2F("ESD_Mother_InvMass_vs_E_Calib_alpha","ESD_Mother_InvMass_vs_E_Calib_alpha",800,0,0.8,250,0,25);
ea1bc51e 785 fHistoMotherInvMassECalibalpha[iCut]->SetXTitle("M_{inv} (GeV/c^{2})");
786 fHistoMotherInvMassECalibalpha[iCut]->SetYTitle("p_{T,cluster} (GeV/c)");
20af4b69 787 fESDList[iCut]->Add(fHistoMotherInvMassECalibalpha[iCut]);
788 }
789
8bdca7f1 790 if (fDoMesonQA > 0 ){
791 fHistoMotherPi0PtY[iCut] = new TH2F("ESD_MotherPi0_Pt_Y","ESD_MotherPi0_Pt_Y",150,0.03,15.,150,-1.5,1.5);
ea1bc51e 792 fHistoMotherPi0PtY[iCut]->SetXTitle("p_{T, #pi^{0} cand} (GeV/c)");
e764f3ba 793 fHistoMotherPi0PtY[iCut]->SetYTitle("y_{#pi^{0} cand}");
8bdca7f1 794 SetLogBinningXTH2(fHistoMotherPi0PtY[iCut]);
795 fESDList[iCut]->Add(fHistoMotherPi0PtY[iCut]);
ea1bc51e 796 fHistoMotherEtaPtY[iCut] = new TH2F("ESD_MotaherEta_Pt_Y","ESD_MotherEta_Pt_Y",150,0.03,15.,150,-1.5,1.5);
797 fHistoMotherEtaPtY[iCut]->SetXTitle("p_{T, #eta cand} (GeV/c)");
e764f3ba 798 fHistoMotherEtaPtY[iCut]->SetYTitle("y_{ #eta cand}");
8bdca7f1 799 SetLogBinningXTH2(fHistoMotherEtaPtY[iCut]);
800 fESDList[iCut]->Add(fHistoMotherEtaPtY[iCut]);
801 fHistoMotherPi0PtAlpha[iCut] = new TH2F("ESD_MotherPi0_Pt_Alpha","ESD_MotherPi0_Pt_Alpha",150,0.03,15.,100,0,1);
ea1bc51e 802 fHistoMotherPi0PtAlpha[iCut]->SetXTitle("p_{T, #pi^{0} cand} (GeV/c)");
e764f3ba 803 fHistoMotherPi0PtAlpha[iCut]->SetYTitle("#alpha_{#pi^{0} cand}");
8bdca7f1 804 SetLogBinningXTH2(fHistoMotherPi0PtAlpha[iCut]);
805 fESDList[iCut]->Add(fHistoMotherPi0PtAlpha[iCut]);
806 fHistoMotherEtaPtAlpha[iCut] = new TH2F("ESD_MotherEta_Pt_Alpha","ESD_MotherEta_Pt_Alpha",150,0.03,15.,100,0,1);
ea1bc51e 807 fHistoMotherEtaPtAlpha[iCut]->SetXTitle("p_{T, #eta cand} (GeV/c)");
e764f3ba 808 fHistoMotherEtaPtAlpha[iCut]->SetYTitle("#alpha_{#eta cand}");
8bdca7f1 809 SetLogBinningXTH2(fHistoMotherEtaPtAlpha[iCut]);
810 fESDList[iCut]->Add(fHistoMotherEtaPtAlpha[iCut]);
f57c67ac 811 fHistoMotherPi0PtOpenAngle[iCut] = new TH2F("ESD_MotherPi0_Pt_OpenAngle","ESD_MotherPi0_Pt_OpenAngle",150,0.03,15.,100,0,TMath::Pi());
ea1bc51e 812 fHistoMotherPi0PtOpenAngle[iCut]->SetXTitle("p_{T, #pi^{0} cand} (GeV/c)");
e764f3ba 813 fHistoMotherPi0PtOpenAngle[iCut]->SetYTitle("#theta_{#pi^{0} cand}");
8bdca7f1 814 SetLogBinningXTH2(fHistoMotherPi0PtOpenAngle[iCut]);
815 fESDList[iCut]->Add(fHistoMotherPi0PtOpenAngle[iCut]);
f57c67ac 816 fHistoMotherEtaPtOpenAngle[iCut] = new TH2F("ESD_MotherEta_Pt_OpenAngle","ESD_MotherEta_Pt_OpenAngle",150,0.03,15.,100,0,TMath::Pi());
ea1bc51e 817 fHistoMotherEtaPtOpenAngle[iCut]->SetXTitle("p_{T, #eta cand} (GeV/c)");
e764f3ba 818 fHistoMotherEtaPtOpenAngle[iCut]->SetYTitle("#theta_{#eta cand}");
8bdca7f1 819 SetLogBinningXTH2(fHistoMotherEtaPtOpenAngle[iCut]);
820 fESDList[iCut]->Add(fHistoMotherEtaPtOpenAngle[iCut]);
ea1bc51e 821 fHistoMotherPi0ConvPhotonEtaPhi[iCut] = new TH2F("ESD_MotherPi0ConvPhoton_Eta_Phi","ConvPhoton under #pi^{0} peak",600,0,2*TMath::Pi(),200,-1,1);
822 fHistoMotherPi0ConvPhotonEtaPhi[iCut]->SetXTitle("#phi_{#gamma_{conv}} (rad)");
823 fHistoMotherPi0ConvPhotonEtaPhi[iCut]->SetYTitle("#eta_{#gamma_{conv}}");
824 fESDList[iCut]->Add(fHistoMotherPi0ConvPhotonEtaPhi[iCut]);
825 fHistoMotherEtaConvPhotonEtaPhi[iCut] = new TH2F("ESD_MotherEtaConvPhoton_Eta_Phi","ConvPhoton under #eta peak",600,0,2*TMath::Pi(),200,-1,1);
826 fHistoMotherEtaConvPhotonEtaPhi[iCut]->SetXTitle("#phi_{#gamma_{conv}} (rad)");
827 fHistoMotherEtaConvPhotonEtaPhi[iCut]->SetYTitle("#eta_{#gamma_{conv}}");
828 fESDList[iCut]->Add(fHistoMotherEtaConvPhotonEtaPhi[iCut]);
8bdca7f1 829 }
830 }
831 }
832 if(fDoMesonAnalysis){
833 InitBack(); // Init Background Handler
834 }
835
836 if(fIsMC){
837 // MC Histogramms
fd94f234 838 fMCList = new TList*[fnCuts];
8bdca7f1 839 // True Histogramms
fd94f234 840 fTrueList = new TList*[fnCuts];
8bdca7f1 841 // Selected Header List
fd94f234 842 fHeaderNameList = new TList*[fnCuts];
843 fHistoMCHeaders = new TH1I*[fnCuts];
844 fHistoMCAllGammaPt = new TH1F*[fnCuts];
20af4b69 845 fHistoMCAllGammaEMCALAccPt = new TH1F*[fnCuts];
fd94f234 846 fHistoMCDecayGammaPi0Pt = new TH1F*[fnCuts];
847 fHistoMCDecayGammaRhoPt = new TH1F*[fnCuts];
848 fHistoMCDecayGammaEtaPt = new TH1F*[fnCuts];
849 fHistoMCDecayGammaOmegaPt = new TH1F*[fnCuts];
850 fHistoMCDecayGammaEtapPt = new TH1F*[fnCuts];
851 fHistoMCDecayGammaPhiPt = new TH1F*[fnCuts];
852 fHistoMCDecayGammaSigmaPt = new TH1F*[fnCuts];
853 fHistoMCConvGammaPt = new TH1F*[fnCuts];
854 fHistoTrueConvGammaPt = new TH1F*[fnCuts];
855 fHistoTrueConvPi0GammaPt = new TH1F*[fnCuts];
8bdca7f1 856
fd94f234 857 fHistoCombinatorialPt = new TH2F*[fnCuts];
858 fHistoTruePrimaryConvGammaPt = new TH1F*[fnCuts];
859 fHistoTruePrimaryConvGammaESDPtMCPt = new TH2F*[fnCuts];
860 fHistoTrueSecondaryConvGammaPt = new TH1F*[fnCuts];
861 fHistoTrueSecondaryConvGammaFromXFromK0sPt = new TH1F*[fnCuts];
862 fHistoTrueSecondaryConvGammaFromXFromLambdaPt = new TH1F*[fnCuts];
8bdca7f1 863
fd94f234 864 fHistoTrueClusGammaPt = new TH1F*[fnCuts];
865 fHistoTruePrimaryClusGammaPt = new TH1F*[fnCuts];
8bdca7f1 866 fHistoTruePrimaryClusGammaESDPtMCPt = new TH2F*[fnCuts];
867
868 if (fDoPhotonQA > 0){
fd94f234 869 fHistoMCConvGammaR = new TH1F*[fnCuts];
870 fHistoMCConvGammaEta = new TH1F*[fnCuts];
871 fHistoTrueConvGammaEta = new TH1F*[fnCuts];
872 }
873 if (fDoClusterQA > 0){
874 fHistoTrueClusUnConvGammaPt = new TH1F*[fnCuts];
20af4b69 875 fHistoTrueClusUnConvGammaMCPt = new TH1F*[fnCuts];
fd94f234 876 fHistoTrueClusElectronPt = new TH1F*[fnCuts];
877 fHistoTrueClusConvGammaPt = new TH1F*[fnCuts];
20af4b69 878 fHistoTrueClusConvGammaMCPt = new TH1F*[fnCuts];
fd94f234 879 fHistoTrueClusConvGammaFullyPt = new TH1F*[fnCuts];
880 fHistoTrueClusMergedGammaPt = new TH1F*[fnCuts];
881 fHistoTrueClusMergedPartConvGammaPt = new TH1F*[fnCuts];
882 fHistoTrueClusDalitzPt = new TH1F*[fnCuts];
883 fHistoTrueClusDalitzMergedPt = new TH1F*[fnCuts];
884 fHistoTrueClusPhotonFromElecMotherPt= new TH1F*[fnCuts];
885 fHistoTrueClusShowerPt = new TH1F*[fnCuts];
cc579963 886 fHistoTrueClusSubLeadingPt = new TH1F*[fnCuts];
887 fHistoTrueClusNParticles = new TH1I*[fnCuts];
fd94f234 888 fHistoTrueClusEMNonLeadingPt = new TH1F*[fnCuts];
889 fHistoTrueNLabelsInClus = new TH1F*[fnCuts];
8bdca7f1 890 }
891
892 if(fDoMesonAnalysis){
fd94f234 893 fHistoMCPi0Pt = new TH1F*[fnCuts];
894 fHistoMCPi0WOWeightPt = new TH1F*[fnCuts];
895 fHistoMCEtaPt = new TH1F*[fnCuts];
896 fHistoMCEtaWOWeightPt = new TH1F*[fnCuts];
897 fHistoMCPi0InAccPt = new TH1F*[fnCuts];
898 fHistoMCEtaInAccPt = new TH1F*[fnCuts];
8bdca7f1 899
ea1bc51e 900 fHistoTruePi0InvMassPt = new TH2F*[fnCuts];
901 fHistoTrueEtaInvMassPt = new TH2F*[fnCuts];
902 fHistoTruePrimaryPi0InvMassPt = new TH2F*[fnCuts];
903 fHistoTruePrimaryEtaInvMassPt = new TH2F*[fnCuts];
904 fHistoTruePrimaryPi0W0WeightingInvMassPt = new TH2F*[fnCuts];
905 fHistoTruePrimaryEtaW0WeightingInvMassPt = new TH2F*[fnCuts];
906 fProfileTruePrimaryPi0WeightsInvMassPt = new TProfile2D*[fnCuts];
907 fProfileTruePrimaryEtaWeightsInvMassPt = new TProfile2D*[fnCuts];
ed8bc1ca 908 fHistoTrueSecondaryPi0InvMassPt = new TH2F*[fnCuts];
ea1bc51e 909 fHistoTrueSecondaryPi0FromK0sInvMassPt = new TH2F*[fnCuts];
910 fHistoTrueSecondaryPi0FromEtaInvMassPt = new TH2F*[fnCuts];
911 fHistoTrueSecondaryPi0FromLambdaInvMassPt = new TH2F*[fnCuts];
912 fHistoTruePrimaryPi0PhotonPairPtconv = new TH2F*[fnCuts];
913 fHistoTrueSecondaryPi0PhotonPairPtconv = new TH2F*[fnCuts];
914 fHistoTruePrimaryEtaPhotonPairPtconv = new TH2F*[fnCuts];
e764f3ba 915 fHistoTruePrimaryPi0DCPtconv = new TH1F*[fnCuts];
916 fHistoTrueSecondaryPi0DCPtconv = new TH1F*[fnCuts];
917 fHistoTruePrimaryEtaDCPtconv = new TH1F*[fnCuts];
918 fHistoTruePrimaryPi0MissingPtconv = new TH1F*[fnCuts];
919 fHistoTrueSecondaryPi0MissingPtconv = new TH1F*[fnCuts];
920 fHistoTruePrimaryEtaMissingPtconv = new TH1F*[fnCuts];
921 fStringRecTruePi0s = new TString[fnCuts];
922 fStringRecTrueEtas = new TString[fnCuts];
923
8bdca7f1 924 if (fDoMesonQA > 0){
fd94f234 925 fHistoMCPi0PtY = new TH2F*[fnCuts];
926 fHistoMCEtaPtY = new TH2F*[fnCuts];
de752898 927 fHistoMCPi0PtAlpha = new TH2F*[fnCuts];
928 fHistoMCEtaPtAlpha = new TH2F*[fnCuts];
fd94f234 929 fHistoMCK0sPt = new TH1F*[fnCuts];
930 fHistoMCK0sWOWeightPt = new TH1F*[fnCuts];
931 fHistoMCK0sPtY = new TH2F*[fnCuts];
932 fHistoMCSecPi0PtvsSource = new TH2F*[fnCuts];
933 fHistoMCSecPi0Source = new TH1F*[fnCuts];
934 fHistoMCSecEtaPt = new TH1F*[fnCuts];
935 fHistoMCSecEtaSource = new TH1F*[fnCuts];
ed8bc1ca 936 fHistoTruePi0CaloPhotonInvMassPt = new TH2F*[fnCuts];
937 fHistoTrueEtaCaloPhotonInvMassPt = new TH2F*[fnCuts];
20af4b69 938 fHistoTruePi0CaloConvertedPhotonInvMassPt = new TH2F*[fnCuts];
939 fHistoTruePi0CaloConvertedPhotonMatchedInvMassPt = new TH2F*[fnCuts];
940 fHistoTrueEtaCaloConvertedPhotonInvMassPt = new TH2F*[fnCuts];
941 fHistoTrueEtaCaloConvertedPhotonMatchedInvMassPt = new TH2F*[fnCuts];
ed8bc1ca 942 fHistoTruePi0CaloElectronInvMassPt = new TH2F*[fnCuts];
943 fHistoTrueEtaCaloElectronInvMassPt = new TH2F*[fnCuts];
944 fHistoTruePi0CaloMergedClusterInvMassPt = new TH2F*[fnCuts];
945 fHistoTrueEtaCaloMergedClusterInvMassPt = new TH2F*[fnCuts];
946 fHistoTruePi0CaloMergedClusterPartConvInvMassPt = new TH2F*[fnCuts];
947 fHistoTrueEtaCaloMergedClusterPartConvInvMassPt = new TH2F*[fnCuts];
fd94f234 948 fHistoTrueMotherCaloEMNonLeadingInvMassPt = new TH2F*[fnCuts];
949 fHistoTruePrimaryPi0MCPtResolPt = new TH2F*[fnCuts];
950 fHistoTruePrimaryEtaMCPtResolPt = new TH2F*[fnCuts];
951 fHistoTrueK0sWithPi0DaughterMCPt = new TH1F*[fnCuts];
952 fHistoTrueEtaWithPi0DaughterMCPt = new TH1F*[fnCuts];
953 fHistoTrueLambdaWithPi0DaughterMCPt = new TH1F*[fnCuts];
954 fHistoTrueBckGGInvMassPt = new TH2F*[fnCuts];
955 fHistoTrueBckContInvMassPt = new TH2F*[fnCuts];
956 fHistoTruePi0PtY = new TH2F*[fnCuts];
957 fHistoTrueEtaPtY = new TH2F*[fnCuts];
958 fHistoTruePi0PtAlpha = new TH2F*[fnCuts];
959 fHistoTrueEtaPtAlpha = new TH2F*[fnCuts];
960 fHistoTruePi0PtOpenAngle = new TH2F*[fnCuts];
961 fHistoTrueEtaPtOpenAngle = new TH2F*[fnCuts];
c2405f5c 962 fHistoTrueMotherPi0ConvPhotonEtaPhi = new TH2F*[fnCuts];
963 fHistoTrueMotherEtaConvPhotonEtaPhi = new TH2F*[fnCuts];
8bdca7f1 964 }
965 }
e764f3ba 966
8bdca7f1 967 for(Int_t iCut = 0; iCut<fnCuts;iCut++){
344100c4 968 TString cutstringEvent = ((AliConvEventCuts*)fEventCutArray->At(iCut))->GetCutNumber();
969 TString cutstringPhoton = ((AliConversionPhotonCuts*)fCutArray->At(iCut))->GetCutNumber();
970 TString cutstringCalo = ((AliCaloPhotonCuts*)fClusterCutArray->At(iCut))->GetCutNumber();
971 TString cutstringMeson = "NoMesonCut";
8bdca7f1 972 if(fDoMesonAnalysis)cutstringMeson = ((AliConversionMesonCuts*)fMesonCutArray->At(iCut))->GetCutNumber();
973
974 fMCList[iCut] = new TList();
344100c4 975 fMCList[iCut]->SetName(Form("%s_%s_%s_%s MC histograms",cutstringEvent.Data(),cutstringPhoton.Data(),cutstringCalo.Data(),cutstringMeson.Data()));
8bdca7f1 976 fMCList[iCut]->SetOwner(kTRUE);
977 fCutFolder[iCut]->Add(fMCList[iCut]);
978 fHistoMCHeaders[iCut] = new TH1I("MC_Headers","MC_Headers",20,0,20);
979 fMCList[iCut]->Add(fHistoMCHeaders[iCut]);
980 fHistoMCAllGammaPt[iCut] = new TH1F("MC_AllGamma_Pt","MC_AllGamma_Pt",250,0,25);
981 fMCList[iCut]->Add(fHistoMCAllGammaPt[iCut]);
d404157c 982 fHistoMCAllGammaEMCALAccPt[iCut] = new TH1F("MC_AllGammaEMCALAcc_Pt","MC_AllGammaEMCALAcc_Pt",250,0,25);
20af4b69 983 fMCList[iCut]->Add(fHistoMCAllGammaEMCALAccPt[iCut]);
8bdca7f1 984 fHistoMCDecayGammaPi0Pt[iCut] = new TH1F("MC_DecayGammaPi0_Pt","MC_DecayGammaPi0_Pt",250,0,25);
985 fMCList[iCut]->Add(fHistoMCDecayGammaPi0Pt[iCut]);
986 fHistoMCDecayGammaRhoPt[iCut] = new TH1F("MC_DecayGammaRho_Pt","MC_DecayGammaRho_Pt",250,0,25);
987 fMCList[iCut]->Add(fHistoMCDecayGammaRhoPt[iCut]);
988 fHistoMCDecayGammaEtaPt[iCut] = new TH1F("MC_DecayGammaEta_Pt","MC_DecayGammaEta_Pt",250,0,25);
989 fMCList[iCut]->Add(fHistoMCDecayGammaEtaPt[iCut]);
990 fHistoMCDecayGammaOmegaPt[iCut] = new TH1F("MC_DecayGammaOmega_Pt","MC_DecayGammaOmmega_Pt",250,0,25);
991 fMCList[iCut]->Add(fHistoMCDecayGammaOmegaPt[iCut]);
992 fHistoMCDecayGammaEtapPt[iCut] = new TH1F("MC_DecayGammaEtap_Pt","MC_DecayGammaEtap_Pt",250,0,25);
993 fMCList[iCut]->Add(fHistoMCDecayGammaEtapPt[iCut]);
994 fHistoMCDecayGammaPhiPt[iCut] = new TH1F("MC_DecayGammaPhi_Pt","MC_DecayGammaPhi_Pt",250,0,25);
995 fMCList[iCut]->Add(fHistoMCDecayGammaPhiPt[iCut]);
996 fHistoMCDecayGammaSigmaPt[iCut] = new TH1F("MC_DecayGammaSigma_Pt","MC_DecayGammaSigma_Pt",250,0,25);
997 fMCList[iCut]->Add(fHistoMCDecayGammaSigmaPt[iCut]);
998 fHistoMCConvGammaPt[iCut] = new TH1F("MC_ConvGamma_Pt","MC_ConvGamma_Pt",250,0,25);
999 fMCList[iCut]->Add(fHistoMCConvGammaPt[iCut]);
1000
1001 if (fDoPhotonQA > 0){
1002 fHistoMCConvGammaR[iCut] = new TH1F("MC_ConvGamma_R","MC_ConvGamma_R",800,0,200);
1003 fMCList[iCut]->Add(fHistoMCConvGammaR[iCut]);
1004 fHistoMCConvGammaEta[iCut] = new TH1F("MC_ConvGamma_Eta","MC_ConvGamma_Eta",2000,-2,2);
1005 fMCList[iCut]->Add(fHistoMCConvGammaEta[iCut]);
1006 }
1007
1008 if(fDoMesonAnalysis){
1009 fHistoMCPi0Pt[iCut] = new TH1F("MC_Pi0_Pt","MC_Pi0_Pt",250,0,25);
1010 fHistoMCPi0Pt[iCut]->Sumw2();
1011 fMCList[iCut]->Add(fHistoMCPi0Pt[iCut]);
1012 fHistoMCPi0WOWeightPt[iCut] = new TH1F("MC_Pi0_WOWeights_Pt","MC_Pi0_WOWeights_Pt",250,0,25);
1013 fHistoMCPi0WOWeightPt[iCut]->Sumw2();
1014 fMCList[iCut]->Add(fHistoMCPi0WOWeightPt[iCut]);
1015
1016 fHistoMCEtaPt[iCut] = new TH1F("MC_Eta_Pt","MC_Eta_Pt",250,0,25);
1017 fHistoMCEtaPt[iCut]->Sumw2();
1018 fMCList[iCut]->Add(fHistoMCEtaPt[iCut]);
1019 fHistoMCEtaWOWeightPt[iCut] = new TH1F("MC_Eta_WOWeights_Pt","MC_Eta_WOWeights_Pt",250,0,25);
1020 fHistoMCEtaWOWeightPt[iCut]->Sumw2();
1021 fMCList[iCut]->Add(fHistoMCEtaWOWeightPt[iCut]);
1022 fHistoMCPi0InAccPt[iCut] = new TH1F("MC_Pi0InAcc_Pt","MC_Pi0InAcc_Pt",250,0,25);
1023 fHistoMCPi0InAccPt[iCut]->Sumw2();
1024 fMCList[iCut]->Add(fHistoMCPi0InAccPt[iCut]);
1025 fHistoMCEtaInAccPt[iCut] = new TH1F("MC_EtaInAcc_Pt","MC_EtaInAcc_Pt",250,0,25);
1026 fHistoMCEtaInAccPt[iCut]->Sumw2();
1027 fMCList[iCut]->Add(fHistoMCEtaInAccPt[iCut]);
1028 if (fDoMesonQA > 0){
1029 fHistoMCPi0PtY[iCut] = new TH2F("MC_Pi0_Pt_Y","MC_Pi0_Pt_Y",150,0.03,15.,150,-1.5,1.5);
1030 fHistoMCPi0PtY[iCut]->Sumw2();
1031 SetLogBinningXTH2(fHistoMCPi0PtY[iCut]);
1032 fMCList[iCut]->Add(fHistoMCPi0PtY[iCut]);
1033 fHistoMCEtaPtY[iCut] = new TH2F("MC_Eta_Pt_Y","MC_Eta_Pt_Y",150,0.03,15.,150,-1.5,1.5);
1034 fHistoMCEtaPtY[iCut]->Sumw2();
1035 SetLogBinningXTH2(fHistoMCEtaPtY[iCut]);
1036 fMCList[iCut]->Add(fHistoMCEtaPtY[iCut]);
de752898 1037 fHistoMCPi0PtAlpha[iCut] = new TH2F("MC_Pi0_Pt_Alpha","MC_Pi0_Pt_Alpha",150,0.03,15.,100,0,1);
1038 SetLogBinningXTH2(fHistoMCPi0PtAlpha[iCut]);
1039 fMCList[iCut]->Add(fHistoMCPi0PtAlpha[iCut]);
1040 fHistoMCEtaPtAlpha[iCut] = new TH2F("MC_Eta_Pt_Alpha","MC_Eta_Pt_Alpha",150,0.03,15.,100,0,1);
1041 SetLogBinningXTH2(fHistoMCEtaPtAlpha[iCut]);
1042 fMCList[iCut]->Add(fHistoMCEtaPtAlpha[iCut]);
1043
8bdca7f1 1044 fHistoMCK0sPt[iCut] = new TH1F("MC_K0s_Pt","MC_K0s_Pt",150,0,15);
1045 fHistoMCK0sPt[iCut]->Sumw2();
1046 fMCList[iCut]->Add(fHistoMCK0sPt[iCut]);
1047 fHistoMCK0sWOWeightPt[iCut] = new TH1F("MC_K0s_WOWeights_Pt","MC_K0s_WOWeights_Pt",150,0,15);
1048 fHistoMCK0sWOWeightPt[iCut]->Sumw2();
1049 fMCList[iCut]->Add(fHistoMCK0sWOWeightPt[iCut]);
1050 fHistoMCK0sPtY[iCut] = new TH2F("MC_K0s_Pt_Y","MC_K0s_Pt_Y",150,0.03,15.,150,-1.5,1.5);
1051 fHistoMCK0sPtY[iCut]->Sumw2();
1052 SetLogBinningXTH2(fHistoMCK0sPtY[iCut]);
1053 fMCList[iCut]->Add(fHistoMCK0sPtY[iCut]);
1054
1055 fHistoMCSecPi0Source[iCut] = new TH1F("MC_SecPi0_Source","MC_SecPi0_Source",5000,0.,5000);
1056 fMCList[iCut]->Add(fHistoMCSecPi0Source[iCut]);
1057 fHistoMCSecEtaSource[iCut] = new TH1F("MC_SecEta_Source","MC_SecEta_Source",5000,0,5000);
1058 fMCList[iCut]->Add(fHistoMCSecEtaSource[iCut]);
1059 fHistoMCSecPi0PtvsSource[iCut] = new TH2F("MC_SecPi0_Pt_Source","MC_SecPi0_Pt_Source",250,0.0,25.,16,-0.5,15.5);
1060 fHistoMCSecPi0PtvsSource[iCut]->Sumw2();
1061 fMCList[iCut]->Add(fHistoMCSecPi0PtvsSource[iCut]);
1062 fHistoMCSecEtaPt[iCut] = new TH1F("MC_SecEta_Pt","MC_SecEta_Pt",250,0,25);
1063 fHistoMCSecEtaPt[iCut]->Sumw2();
1064 fMCList[iCut]->Add(fHistoMCSecEtaPt[iCut]);
1065 }
1066
1067 }
1068 fTrueList[iCut] = new TList();
344100c4 1069 fTrueList[iCut]->SetName(Form("%s_%s_%s_%s True histograms",cutstringEvent.Data(),cutstringPhoton.Data(),cutstringCalo.Data(),cutstringMeson.Data()));
8bdca7f1 1070 fTrueList[iCut]->SetOwner(kTRUE);
1071 fCutFolder[iCut]->Add(fTrueList[iCut]);
1072
1073 fHistoTrueConvGammaPt[iCut] = new TH1F("ESD_TrueConvGamma_Pt","ESD_TrueConvGamma_Pt",250,0,25);
1074 fTrueList[iCut]->Add(fHistoTrueConvGammaPt[iCut]);
1075
41ed7315 1076 fHistoTrueConvPi0GammaPt[iCut] = new TH1F("ESD_TrueConvPi0Gamma_Pt","ESD_TrueConvPi0Gamma_Pt",250,0,25);
8bdca7f1 1077 fTrueList[iCut]->Add(fHistoTrueConvPi0GammaPt[iCut]);
1078
1079 fHistoCombinatorialPt[iCut] = new TH2F("ESD_TrueCombinatorial_Pt","ESD_TrueCombinatorial_Pt",250,0,25,16,-0.5,15.5);
1080 fHistoCombinatorialPt[iCut]->GetYaxis()->SetBinLabel( 1,"Elec+Elec");
1081 fHistoCombinatorialPt[iCut]->GetYaxis()->SetBinLabel( 2,"Elec+Pion");
1082 fHistoCombinatorialPt[iCut]->GetYaxis()->SetBinLabel( 3,"Elec+Kaon");
1083 fHistoCombinatorialPt[iCut]->GetYaxis()->SetBinLabel( 4,"Elec+Proton");
1084 fHistoCombinatorialPt[iCut]->GetYaxis()->SetBinLabel( 5,"Elec+Muon");
1085 fHistoCombinatorialPt[iCut]->GetYaxis()->SetBinLabel( 6,"Pion+Pion");
1086 fHistoCombinatorialPt[iCut]->GetYaxis()->SetBinLabel( 7,"Pion+Kaon");
1087 fHistoCombinatorialPt[iCut]->GetYaxis()->SetBinLabel( 8,"Pion+Proton");
1088 fHistoCombinatorialPt[iCut]->GetYaxis()->SetBinLabel( 9,"Pion+Muon");
1089 fHistoCombinatorialPt[iCut]->GetYaxis()->SetBinLabel(10,"Kaon+Kaon");
1090 fHistoCombinatorialPt[iCut]->GetYaxis()->SetBinLabel(11,"Kaon+Proton");
1091 fHistoCombinatorialPt[iCut]->GetYaxis()->SetBinLabel(12,"Kaon+Muon");
1092 fHistoCombinatorialPt[iCut]->GetYaxis()->SetBinLabel(13,"Proton+Proton");
1093 fHistoCombinatorialPt[iCut]->GetYaxis()->SetBinLabel(14,"Proton+Muon");
1094 fHistoCombinatorialPt[iCut]->GetYaxis()->SetBinLabel(15,"Muon+Muon");
1095 fHistoCombinatorialPt[iCut]->GetYaxis()->SetBinLabel(16,"Rest");
1096 fTrueList[iCut]->Add(fHistoCombinatorialPt[iCut]);
1097 fHistoTruePrimaryConvGammaPt[iCut] = new TH1F("ESD_TruePrimaryConvGamma_Pt","ESD_TruePrimaryConvGamma_Pt",250,0,25);
1098 fTrueList[iCut]->Add(fHistoTruePrimaryConvGammaPt[iCut]);
1099 fHistoTrueSecondaryConvGammaPt[iCut] = new TH1F("ESD_TrueSecondaryConvGamma_Pt","ESD_TrueSecondaryConvGamma_Pt",250,0,25);
1100 fTrueList[iCut]->Add(fHistoTrueSecondaryConvGammaPt[iCut]);
1101
1102 fHistoTrueSecondaryConvGammaFromXFromK0sPt[iCut] = new TH1F("ESD_TrueSecondaryConvGammaFromXFromK0s_Pt", "ESD_TrueSecondaryConvGammaFromXFromK0s_Pt",250,0,25);
1103 fTrueList[iCut]->Add(fHistoTrueSecondaryConvGammaFromXFromK0sPt[iCut]);
1104 fHistoTrueSecondaryConvGammaFromXFromLambdaPt[iCut] = new TH1F("ESD_TrueSecondaryConvGammaFromXFromLambda_Pt", "ESD_TrueSecondaryConvGammaFromXFromLambda_Pt",250,0,25);
1105 fTrueList[iCut]->Add(fHistoTrueSecondaryConvGammaFromXFromLambdaPt[iCut]);
fd94f234 1106
8bdca7f1 1107 fHistoTruePrimaryConvGammaESDPtMCPt[iCut] = new TH2F("ESD_TruePrimaryConvGammaESD_PtMCPt", "ESD_TruePrimaryConvGammaESD_PtMCPt",250,0,25,250,0,25);
1108 fTrueList[iCut]->Add(fHistoTruePrimaryConvGammaESDPtMCPt[iCut]);
1109
fd94f234 1110 fHistoTrueClusGammaPt[iCut] = new TH1F("TrueClusGamma_Pt","ESD_TrueClusGamma_Pt",250,0,25);
ea1bc51e 1111 fClusterOutputList[iCut]->Add(fHistoTrueClusGammaPt[iCut]);
8bdca7f1 1112 fHistoTruePrimaryClusGammaPt[iCut] = new TH1F("TruePrimaryClusGamma_Pt","ESD_TruePrimaryClusGamma_Pt",250,0,25);
ea1bc51e 1113 fClusterOutputList[iCut]->Add(fHistoTruePrimaryClusGammaPt[iCut]);
8bdca7f1 1114 fHistoTruePrimaryClusGammaESDPtMCPt[iCut] = new TH2F("TruePrimaryClusGamma_Pt_MCPt","ESD_TruePrimaryClusGamma_MCPt",250,0,25,250,0,25);
ea1bc51e 1115 fClusterOutputList[iCut]->Add(fHistoTruePrimaryClusGammaESDPtMCPt[iCut]);
8bdca7f1 1116
fd94f234 1117 if (fDoPhotonQA > 0){
1118 fHistoTrueConvGammaEta[iCut] = new TH1F("ESD_TrueConvGamma_Eta","ESD_TrueConvGamma_Eta",2000,-2,2);
1119 fTrueList[iCut]->Add(fHistoTrueConvGammaEta[iCut]);
1120 }
1121 if (fDoClusterQA > 0){
1122 fHistoTrueClusUnConvGammaPt[iCut] = new TH1F("TrueClusUnConvGamma_Pt","TrueClusUnConvGamma_Pt",250,0,25);
ea1bc51e 1123 fClusterOutputList[iCut]->Add(fHistoTrueClusUnConvGammaPt[iCut]);
20af4b69 1124 fHistoTrueClusUnConvGammaMCPt[iCut] = new TH1F("TrueClusUnConvGamma_MCPt","TrueClusUnConvGamma_MCPt",250,0,25);
ea1bc51e 1125 fClusterOutputList[iCut]->Add(fHistoTrueClusUnConvGammaMCPt[iCut]);
fd94f234 1126 fHistoTrueClusElectronPt[iCut] = new TH1F("TrueClusElectron_Pt","TrueElectronGamma_Pt",250,0,25);
ea1bc51e 1127 fClusterOutputList[iCut]->Add(fHistoTrueClusElectronPt[iCut]);
fd94f234 1128 fHistoTrueClusConvGammaPt[iCut] = new TH1F("TrueClusConvGamma_Pt","TrueClusConvGamma_Pt",250,0,25);
ea1bc51e 1129 fClusterOutputList[iCut]->Add(fHistoTrueClusConvGammaPt[iCut]);
20af4b69 1130 fHistoTrueClusConvGammaMCPt[iCut] = new TH1F("TrueClusConvGamma_MCPt","TrueClusConvGamma_MCPt",250,0,25);
ea1bc51e 1131 fClusterOutputList[iCut]->Add(fHistoTrueClusConvGammaMCPt[iCut]);
fd94f234 1132 fHistoTrueClusConvGammaFullyPt[iCut] = new TH1F("TrueClusConvGammaFullyContained_Pt","TrueClusConvGammaFullyContained_Pt",250,0,25);
ea1bc51e 1133 fClusterOutputList[iCut]->Add(fHistoTrueClusConvGammaFullyPt[iCut]);
fd94f234 1134 fHistoTrueClusMergedGammaPt[iCut] = new TH1F("TrueClusMergedGamma_Pt","TrueClusMergedGamma_Pt",250,0,25);
ea1bc51e 1135 fClusterOutputList[iCut]->Add(fHistoTrueClusMergedGammaPt[iCut]);
fd94f234 1136 fHistoTrueClusMergedPartConvGammaPt[iCut] = new TH1F("TrueClusMergedPartConvGamma_Pt","TrueClusMergedPartConvGamma_Pt",250,0,25);
ea1bc51e 1137 fClusterOutputList[iCut]->Add(fHistoTrueClusMergedPartConvGammaPt[iCut]);
fd94f234 1138 fHistoTrueClusDalitzPt[iCut] = new TH1F("TrueClusDalitz_Pt","TrueClusDalitz_Pt",250,0,25);
ea1bc51e 1139 fClusterOutputList[iCut]->Add(fHistoTrueClusDalitzPt[iCut]);
fd94f234 1140 fHistoTrueClusDalitzMergedPt[iCut] = new TH1F("TrueClusDalitzMerged_Pt","TrueClusDalitzMerged_Pt",250,0,25);
ea1bc51e 1141 fClusterOutputList[iCut]->Add(fHistoTrueClusDalitzMergedPt[iCut]);
fd94f234 1142 fHistoTrueClusPhotonFromElecMotherPt[iCut] = new TH1F("TrueClusPhotonFromElecMother_Pt","TrueClusPhotonFromElecMother_Pt",250,0,25);
ea1bc51e 1143 fClusterOutputList[iCut]->Add(fHistoTrueClusPhotonFromElecMotherPt[iCut]);
fd94f234 1144 fHistoTrueClusShowerPt[iCut] = new TH1F("TrueClusShower_Pt","TrueClusShower_Pt",250,0,25);
ea1bc51e 1145 fClusterOutputList[iCut]->Add(fHistoTrueClusShowerPt[iCut]);
cc579963 1146 fHistoTrueClusSubLeadingPt[iCut] = new TH1F("TrueClusSubleading_Pt","TrueClusSubleading_Pt",250,0,25);
ea1bc51e 1147 fClusterOutputList[iCut]->Add(fHistoTrueClusSubLeadingPt[iCut]);
cc579963 1148 fHistoTrueClusNParticles[iCut] = new TH1I("TrueClusNParticles","TrueClusNParticles",20,0,20);
ea1bc51e 1149 fClusterOutputList[iCut]->Add(fHistoTrueClusNParticles[iCut]);
fd94f234 1150 fHistoTrueClusEMNonLeadingPt[iCut] = new TH1F("TrueClusEMNonLeading_Pt","TrueClusEMNonLeading_Pt",250,0,25);
ea1bc51e 1151 fClusterOutputList[iCut]->Add(fHistoTrueClusEMNonLeadingPt[iCut]);
fd94f234 1152 fHistoTrueNLabelsInClus[iCut] = new TH1F("TrueNLabelsInClus","TrueNLabelsInClus",100,-0.5,99.5);
ea1bc51e 1153 fClusterOutputList[iCut]->Add(fHistoTrueNLabelsInClus[iCut]);
fd94f234 1154 }
1155
8bdca7f1 1156 if(fDoMesonAnalysis){
ed8bc1ca 1157 fHistoTruePi0InvMassPt[iCut] = new TH2F("ESD_TruePi0_InvMass_Pt","ESD_TruePi0_InvMass_Pt",800,0,0.8,250,0,25);
e764f3ba 1158 fHistoTruePi0InvMassPt[iCut]->SetXTitle("M_{inv,#pi^{0}} (GeV/c^{2})");
1159 fHistoTruePi0InvMassPt[iCut]->SetYTitle("#pi^{0} p_{T} (GeV/c)");
ed8bc1ca 1160 fTrueList[iCut]->Add(fHistoTruePi0InvMassPt[iCut]);
1161 fHistoTrueEtaInvMassPt[iCut] = new TH2F("ESD_TrueEta_InvMass_Pt","ESD_TrueEta_InvMass_Pt",800,0,0.8,250,0,25);
e764f3ba 1162 fHistoTruePi0InvMassPt[iCut]->SetXTitle("M_{inv,#eta} (GeV/c^{2})");
1163 fHistoTruePi0InvMassPt[iCut]->SetYTitle("#eta p_{T} (GeV/c)");
ed8bc1ca 1164 fTrueList[iCut]->Add(fHistoTrueEtaInvMassPt[iCut]);
1165
1166 fHistoTruePrimaryPi0InvMassPt[iCut] = new TH2F("ESD_TruePrimaryPi0_InvMass_Pt", "ESD_TruePrimaryPi0_InvMass_Pt", 800,0,0.8,250,0,25);
e764f3ba 1167 fHistoTruePrimaryPi0InvMassPt[iCut]->SetXTitle("M_{inv,prim #pi^{0}} (GeV/c^{2})");
1168 fHistoTruePrimaryPi0InvMassPt[iCut]->SetYTitle("#pi^{0} p_{T} (GeV/c)");
ed8bc1ca 1169 fHistoTruePrimaryPi0InvMassPt[iCut]->Sumw2();
1170 fTrueList[iCut]->Add(fHistoTruePrimaryPi0InvMassPt[iCut]);
e764f3ba 1171
ed8bc1ca 1172 fHistoTruePrimaryEtaInvMassPt[iCut] = new TH2F("ESD_TruePrimaryEta_InvMass_Pt", "ESD_TruePrimaryEta_InvMass_Pt", 800,0,0.8,250,0,25);
e764f3ba 1173 fHistoTruePrimaryEtaInvMassPt[iCut]->SetXTitle("M_{inv,prim #eta} (GeV/c^{2})");
1174 fHistoTruePrimaryEtaInvMassPt[iCut]->SetYTitle("#eta p_{T} (GeV/c)");
ed8bc1ca 1175 fHistoTruePrimaryEtaInvMassPt[iCut]->Sumw2();
1176 fTrueList[iCut]->Add(fHistoTruePrimaryEtaInvMassPt[iCut]);
1177
1178 fHistoTruePrimaryPi0W0WeightingInvMassPt[iCut] = new TH2F("ESD_TruePrimaryPi0W0Weights_InvMass_Pt", "ESD_TruePrimaryPi0W0Weights_InvMass_Pt", 800,0,0.8,250,0,25);
e764f3ba 1179 fHistoTruePrimaryPi0W0WeightingInvMassPt[iCut]->SetXTitle("M_{inv,prim #pi^{0}} (GeV/c^{2})");
1180 fHistoTruePrimaryPi0W0WeightingInvMassPt[iCut]->SetYTitle("#pi^{0} p_{T} (GeV/c)");
ed8bc1ca 1181 fTrueList[iCut]->Add(fHistoTruePrimaryPi0W0WeightingInvMassPt[iCut]);
e764f3ba 1182
ed8bc1ca 1183 fHistoTruePrimaryEtaW0WeightingInvMassPt[iCut] = new TH2F("ESD_TruePrimaryEtaW0Weights_InvMass_Pt", "ESD_TruePrimaryEtaW0Weights_InvMass_Pt", 800,0,0.8,250,0,25);
e764f3ba 1184 fHistoTruePrimaryEtaW0WeightingInvMassPt[iCut]->SetXTitle("M_{inv,prim #eta} (GeV/c^{2})");
1185 fHistoTruePrimaryEtaW0WeightingInvMassPt[iCut]->SetYTitle("#eta p_{T} (GeV/c)");
ed8bc1ca 1186 fTrueList[iCut]->Add(fHistoTruePrimaryEtaW0WeightingInvMassPt[iCut]);
1187
1188 fProfileTruePrimaryPi0WeightsInvMassPt[iCut] = new TProfile2D("ESD_TruePrimaryPi0Weights_InvMass_Pt", "ESD_TruePrimaryPi0Weights_InvMass_Pt", 800,0,0.8,250,0,25);
e764f3ba 1189 fProfileTruePrimaryPi0WeightsInvMassPt[iCut]->SetXTitle("M_{inv,prim #pi^{0}} (GeV/c^{2})");
1190 fProfileTruePrimaryPi0WeightsInvMassPt[iCut]->SetYTitle("#pi^{0} p_{T} (GeV/c)");
ed8bc1ca 1191 fProfileTruePrimaryPi0WeightsInvMassPt[iCut]->Sumw2();
1192 fTrueList[iCut]->Add(fProfileTruePrimaryPi0WeightsInvMassPt[iCut]);
1193 fProfileTruePrimaryEtaWeightsInvMassPt[iCut] = new TProfile2D("ESD_TruePrimaryEtaWeights_InvMass_Pt", "ESD_TruePrimaryEtaWeights_InvMass_Pt", 800,0,0.8,250,0,25);
e764f3ba 1194 fProfileTruePrimaryEtaWeightsInvMassPt[iCut]->SetXTitle("M_{inv,prim #eta} (GeV/c^{2})");
1195 fProfileTruePrimaryEtaWeightsInvMassPt[iCut]->SetYTitle("#eta p_{T} (GeV/c)");
ed8bc1ca 1196 fProfileTruePrimaryEtaWeightsInvMassPt[iCut]->Sumw2();
1197 fTrueList[iCut]->Add(fProfileTruePrimaryEtaWeightsInvMassPt[iCut]);
20af4b69 1198
ed8bc1ca 1199 fHistoTrueSecondaryPi0InvMassPt[iCut] = new TH2F("ESD_TrueSecondaryPi0_InvMass_Pt", "ESD_TrueSecondaryPi0_InvMass_Pt", 800,0,0.8,250,0,25);
e764f3ba 1200 fHistoTrueSecondaryPi0InvMassPt[iCut]->SetXTitle("M_{inv,sec #pi^{0}} (GeV/c^{2})");
1201 fHistoTrueSecondaryPi0InvMassPt[iCut]->SetYTitle("#pi^{0} p_{T} (GeV/c)");
ed8bc1ca 1202 fHistoTrueSecondaryPi0InvMassPt[iCut]->Sumw2();
1203 fTrueList[iCut]->Add(fHistoTrueSecondaryPi0InvMassPt[iCut]);
ed8bc1ca 1204
1205 fHistoTrueSecondaryPi0FromK0sInvMassPt[iCut] = new TH2F("ESD_TrueSecondaryPi0FromK0s_InvMass_Pt","ESD_TrueSecondaryPi0FromK0s_InvMass_Pt",800,0,0.8,250,0,25);
e764f3ba 1206 fHistoTrueSecondaryPi0FromK0sInvMassPt[iCut]->SetXTitle("M_{inv,#pi^{0} from K^{0}_{S}} (GeV/c^{2})");
1207 fHistoTrueSecondaryPi0FromK0sInvMassPt[iCut]->SetYTitle("#pi^{0} p_{T} (GeV/c)");
ed8bc1ca 1208 fHistoTrueSecondaryPi0FromK0sInvMassPt[iCut]->Sumw2();
1209 fTrueList[iCut]->Add(fHistoTrueSecondaryPi0FromK0sInvMassPt[iCut]);
1210 fHistoTrueSecondaryPi0FromEtaInvMassPt[iCut] = new TH2F("ESD_TrueSecondaryPi0FromEta_InvMass_Pt","ESD_TrueSecondaryPi0FromEta_InvMass_Pt",800,0,0.8,250,0,25);
e764f3ba 1211 fHistoTrueSecondaryPi0FromEtaInvMassPt[iCut]->SetXTitle("M_{inv,#pi^{0} from #eta} (GeV/c^{2})");
1212 fHistoTrueSecondaryPi0FromEtaInvMassPt[iCut]->SetYTitle("#pi^{0} p_{T} (GeV/c)");
ed8bc1ca 1213 fTrueList[iCut]->Add(fHistoTrueSecondaryPi0FromEtaInvMassPt[iCut]);
1214 fHistoTrueSecondaryPi0FromLambdaInvMassPt[iCut] = new TH2F("ESD_TrueSecondaryPi0FromLambda_InvMass_Pt","ESD_TrueSecondaryPi0FromLambda_InvMass_Pt",800,0,0.8,250,0,25);
e764f3ba 1215 fHistoTrueSecondaryPi0FromLambdaInvMassPt[iCut]->SetXTitle("M_{inv,#pi^{0} from #Lambda} (GeV/c^{2})");
1216 fHistoTrueSecondaryPi0FromLambdaInvMassPt[iCut]->SetYTitle("#pi^{0} p_{T} (GeV/c)");
ed8bc1ca 1217 fTrueList[iCut]->Add(fHistoTrueSecondaryPi0FromLambdaInvMassPt[iCut]);
ea1bc51e 1218
1219 fHistoTruePrimaryPi0PhotonPairPtconv[iCut] = new TH2F("ESD_TruePrimaryPi0_InvMass_PtConv","",800,0,0.8,250,0,25);
1220 fHistoTruePrimaryPi0PhotonPairPtconv[iCut]->SetXTitle("M_{inv,#pi^{0}} (GeV/c^{2})");
1221 fHistoTruePrimaryPi0PhotonPairPtconv[iCut]->SetYTitle("#gamma^{conv} p_{T} (GeV/c)");
1222 fHistoTruePrimaryPi0PhotonPairPtconv[iCut]->Sumw2();
1223 fTrueList[iCut]->Add(fHistoTruePrimaryPi0PhotonPairPtconv[iCut]);
1224
1225 fHistoTrueSecondaryPi0PhotonPairPtconv[iCut] = new TH2F("ESD_TrueSecondaryPi0_InvMass_PtConv","",800,0,0.8,250,0,25);
1226 fHistoTrueSecondaryPi0PhotonPairPtconv[iCut]->SetXTitle("M_{inv,#pi^{0}} (GeV/c^{2})");
1227 fHistoTrueSecondaryPi0PhotonPairPtconv[iCut]->SetYTitle("#gamma^{conv} p_{T} (GeV/c)");
1228 fHistoTrueSecondaryPi0PhotonPairPtconv[iCut]->Sumw2();
1229 fTrueList[iCut]->Add(fHistoTrueSecondaryPi0PhotonPairPtconv[iCut]);
1230
1231 fHistoTruePrimaryEtaPhotonPairPtconv[iCut] = new TH2F("ESD_TruePrimaryEta_InvMass_PtConv","",800,0,0.8,250,0,25);
1232 fHistoTruePrimaryEtaPhotonPairPtconv[iCut]->SetXTitle("M_{inv,#eta} (GeV/c^{2})");
1233 fHistoTruePrimaryEtaPhotonPairPtconv[iCut]->SetYTitle("#gamma^{conv} p_{T} (GeV/c)");
1234 fHistoTruePrimaryEtaPhotonPairPtconv[iCut]->Sumw2();
1235 fTrueList[iCut]->Add(fHistoTruePrimaryEtaPhotonPairPtconv[iCut]);
1236
e764f3ba 1237 fHistoTruePrimaryPi0DCPtconv[iCut] = new TH1F("ESD_TruePrimaryPi0DC_PtConv","",250,0,25);
1238 fHistoTruePrimaryPi0DCPtconv[iCut]->SetXTitle("#gamma^{conv} p_{T} (GeV/c)");
1239 fHistoTruePrimaryPi0DCPtconv[iCut]->Sumw2();
1240 fTrueList[iCut]->Add(fHistoTruePrimaryPi0DCPtconv[iCut]);
1241
1242 fHistoTrueSecondaryPi0DCPtconv[iCut] = new TH1F("ESD_TrueSecondaryPi0DC_PtConv","",250,0,25);
1243 fHistoTrueSecondaryPi0DCPtconv[iCut]->SetXTitle("#gamma^{conv} p_{T} (GeV/c)");
1244 fHistoTrueSecondaryPi0DCPtconv[iCut]->Sumw2();
1245 fTrueList[iCut]->Add(fHistoTrueSecondaryPi0DCPtconv[iCut]);
1246
1247 fHistoTruePrimaryEtaDCPtconv[iCut] = new TH1F("ESD_TruePrimaryEtaDC_PtConv","",250,0,25);
1248 fHistoTruePrimaryEtaDCPtconv[iCut]->SetXTitle("#gamma^{conv} p_{T} (GeV/c)");
1249 fHistoTruePrimaryEtaDCPtconv[iCut]->Sumw2();
1250 fTrueList[iCut]->Add(fHistoTruePrimaryEtaDCPtconv[iCut]);
1251
1252 fHistoTruePrimaryPi0MissingPtconv[iCut] = new TH1F("ESD_TruePrimaryPi0Missing_PtConv","",250,0,25);
1253 fHistoTruePrimaryPi0MissingPtconv[iCut]->SetXTitle("#gamma^{conv} p_{T} (GeV/c)");
1254 fHistoTruePrimaryPi0MissingPtconv[iCut]->Sumw2();
1255 fTrueList[iCut]->Add(fHistoTruePrimaryPi0MissingPtconv[iCut]);
1256
1257 fHistoTrueSecondaryPi0MissingPtconv[iCut] = new TH1F("ESD_TrueSecondaryPi0Missing_PtConv","",250,0,25);
1258 fHistoTrueSecondaryPi0MissingPtconv[iCut]->SetXTitle("#gamma^{conv} p_{T} (GeV/c)");
1259 fHistoTrueSecondaryPi0MissingPtconv[iCut]->Sumw2();
1260 fTrueList[iCut]->Add(fHistoTrueSecondaryPi0MissingPtconv[iCut]);
1261
1262 fHistoTruePrimaryEtaMissingPtconv[iCut] = new TH1F("ESD_TruePrimaryEtaMissing_PtConv","",250,0,25);
1263 fHistoTruePrimaryEtaMissingPtconv[iCut]->SetXTitle("#gamma^{conv} p_{T} (GeV/c)");
1264 fHistoTruePrimaryEtaMissingPtconv[iCut]->Sumw2();
1265 fTrueList[iCut]->Add(fHistoTruePrimaryEtaMissingPtconv[iCut]);
ea1bc51e 1266
ed8bc1ca 1267 if (fDoMesonQA > 0){
1268 fHistoTruePi0CaloPhotonInvMassPt[iCut] = new TH2F("ESD_TruePi0CaloPhoton_InvMass_Pt","ESD_TruePi0CaloPhoton_InvMass_Pt",800,0,0.8,250,0,25);
e764f3ba 1269 fHistoTruePi0CaloPhotonInvMassPt[iCut]->SetXTitle("M_{inv,#pi^{0}} (GeV/c^{2}) #gamma #gamma");
1270 fHistoTruePi0CaloPhotonInvMassPt[iCut]->SetYTitle("#pi^{0} p_{T} (GeV/c)");
ed8bc1ca 1271 fTrueList[iCut]->Add(fHistoTruePi0CaloPhotonInvMassPt[iCut]);
e764f3ba 1272
ed8bc1ca 1273 fHistoTrueEtaCaloPhotonInvMassPt[iCut] = new TH2F("ESD_TrueEtaCaloPhoton_InvMass_Pt","ESD_TrueEtaCaloPhoton_InvMass_Pt",800,0,0.8,250,0,25);
e764f3ba 1274 fHistoTrueEtaCaloPhotonInvMassPt[iCut]->SetXTitle("M_{inv,#eta} (GeV/c^{2}) #gamma #gamma");
1275 fHistoTrueEtaCaloPhotonInvMassPt[iCut]->SetYTitle("#eta p_{T} (GeV/c)");
ed8bc1ca 1276 fTrueList[iCut]->Add(fHistoTrueEtaCaloPhotonInvMassPt[iCut]);
e764f3ba 1277
20af4b69 1278 fHistoTruePi0CaloConvertedPhotonInvMassPt[iCut] = new TH2F("ESD_TruePi0CaloConvertedPhoton_InvMass_Pt","ESD_TruePi0CaloConvertedPhoton_InvMass_Pt",800,0,0.8,250,0,25);
e764f3ba 1279 fHistoTruePi0CaloConvertedPhotonInvMassPt[iCut]->SetXTitle("M_{inv,#pi^{0}} (GeV/c^{2}) #gamma #gamma_{conv}");
1280 fHistoTruePi0CaloConvertedPhotonInvMassPt[iCut]->SetYTitle("#pi^{0} p_{T} (GeV/c)");
20af4b69 1281 fTrueList[iCut]->Add(fHistoTruePi0CaloConvertedPhotonInvMassPt[iCut]);
e764f3ba 1282
20af4b69 1283 fHistoTruePi0CaloConvertedPhotonMatchedInvMassPt[iCut] = new TH2F("ESD_TruePi0CaloConvertedPhotonMatched_InvMass_Pt","ESD_TruePi0CaloConvertedPhotonMatched_InvMass_Pt",800,0,0.8,250,0,25);
e764f3ba 1284 fHistoTruePi0CaloConvertedPhotonMatchedInvMassPt[iCut]->SetXTitle("M_{inv,#pi^{0}} (GeV/c^{2}) #gamma #gamma_{conv,matched}");
1285 fHistoTruePi0CaloConvertedPhotonMatchedInvMassPt[iCut]->SetYTitle("#pi^{0} p_{T} (GeV/c)");
20af4b69 1286 fTrueList[iCut]->Add(fHistoTruePi0CaloConvertedPhotonMatchedInvMassPt[iCut]);
e764f3ba 1287
20af4b69 1288 fHistoTrueEtaCaloConvertedPhotonInvMassPt[iCut] = new TH2F("ESD_TrueEtaCaloConvertedPhoton_InvMass_Pt","ESD_TrueEtaCaloConvertedPhoton_InvMass_Pt",800,0,0.8,250,0,25);
e764f3ba 1289 fHistoTrueEtaCaloConvertedPhotonInvMassPt[iCut]->SetXTitle("M_{inv,#eta} (GeV/c^{2}) #gamma #gamma_{conv}");
1290 fHistoTrueEtaCaloConvertedPhotonInvMassPt[iCut]->SetYTitle("#eta p_{T} (GeV/c)");
20af4b69 1291 fTrueList[iCut]->Add(fHistoTrueEtaCaloConvertedPhotonInvMassPt[iCut]);
e764f3ba 1292
20af4b69 1293 fHistoTrueEtaCaloConvertedPhotonMatchedInvMassPt[iCut] = new TH2F("ESD_TrueEtaCaloConvertedPhotonMatched_InvMass_Pt","ESD_TrueEtaCaloConvertedPhotonMatched_InvMass_Pt",800,0,0.8,250,0,25);
e764f3ba 1294 fHistoTrueEtaCaloConvertedPhotonMatchedInvMassPt[iCut]->SetXTitle("M_{inv,#eta} (GeV/c^{2}) #gamma #gamma_{conv,matched}");
1295 fHistoTrueEtaCaloConvertedPhotonMatchedInvMassPt[iCut]->SetYTitle("#eta p_{T} (GeV/c)");
20af4b69 1296 fTrueList[iCut]->Add(fHistoTrueEtaCaloConvertedPhotonMatchedInvMassPt[iCut]);
1297
d404157c 1298 fHistoTruePi0CaloElectronInvMassPt[iCut] = new TH2F("ESD_TruePi0CaloElectron_InvMass_Pt","ESD_TruePi0CaloElectron_InvMass_Pt",800,0,0.8,250,0,25);
e764f3ba 1299 fHistoTruePi0CaloElectronInvMassPt[iCut]->SetXTitle("M_{inv,#pi^{0}} (GeV/c^{2}) #gamma e^{#pm}");
1300 fHistoTruePi0CaloElectronInvMassPt[iCut]->SetYTitle("#pi^{0} p_{T} (GeV/c)");
ed8bc1ca 1301 fTrueList[iCut]->Add(fHistoTruePi0CaloElectronInvMassPt[iCut]);
1302 fHistoTrueEtaCaloElectronInvMassPt[iCut] = new TH2F("ESD_TrueEtaCaloElectron_InvMass_Pt","ESD_TrueEtaCaloElectron_InvMass_Pt",800,0,0.8,250,0,25);
e764f3ba 1303 fHistoTrueEtaCaloElectronInvMassPt[iCut]->SetXTitle("M_{inv,#eta} (GeV/c^{2}) #gamma e^{#pm}");
1304 fHistoTrueEtaCaloElectronInvMassPt[iCut]->SetYTitle("#eta p_{T} (GeV/c)");
ed8bc1ca 1305 fTrueList[iCut]->Add(fHistoTrueEtaCaloElectronInvMassPt[iCut]);
1306
1307 fHistoTruePi0CaloMergedClusterInvMassPt[iCut] = new TH2F("ESD_TruePi0CaloMergedCluster_InvMass_Pt","ESD_TruePi0CaloMergedCluster_InvMass_Pt",800,0,0.8,250,0,25);
e764f3ba 1308 fHistoTruePi0CaloMergedClusterInvMassPt[iCut]->SetXTitle("M_{inv,#pi^{0}} (GeV/c^{2}) #gamma merged cluster");
1309 fHistoTruePi0CaloMergedClusterInvMassPt[iCut]->SetYTitle("#pi^{0} p_{T} (GeV/c)");
ed8bc1ca 1310 fTrueList[iCut]->Add(fHistoTruePi0CaloMergedClusterInvMassPt[iCut]);
1311 fHistoTrueEtaCaloMergedClusterInvMassPt[iCut] = new TH2F("ESD_TrueEtaCaloMergedCluster_InvMass_Pt","ESD_TrueEtaCaloMergedCluster_InvMass_Pt",800,0,0.8,250,0,25);
e764f3ba 1312 fHistoTrueEtaCaloMergedClusterInvMassPt[iCut]->SetXTitle("M_{inv,#eta} (GeV/c^{2}) #gamma merged cluster");
1313 fHistoTrueEtaCaloMergedClusterInvMassPt[iCut]->SetYTitle("#eta p_{T} (GeV/c)");
ed8bc1ca 1314 fTrueList[iCut]->Add(fHistoTrueEtaCaloMergedClusterInvMassPt[iCut]);
1315
fd94f234 1316 fHistoTrueMotherCaloEMNonLeadingInvMassPt[iCut] = new TH2F("ESD_TrueMotherCaloEMNonLeading_InvMass_Pt","ESD_TrueMotherCaloEMNonLeading_InvMass_Pt",800,0,0.8,250,0,25);
e764f3ba 1317 fHistoTrueMotherCaloEMNonLeadingInvMassPt[iCut]->SetXTitle("M_{inv} (GeV/c^{2}) #gamma cluster no leading EM");
1318 fHistoTrueMotherCaloEMNonLeadingInvMassPt[iCut]->SetYTitle("#pair p_{T} (GeV/c)");
fd94f234 1319 fTrueList[iCut]->Add(fHistoTrueMotherCaloEMNonLeadingInvMassPt[iCut]);
ed8bc1ca 1320 fHistoTruePi0CaloMergedClusterPartConvInvMassPt[iCut] = new TH2F("ESD_TruePi0CaloMergedClusterPartConv_InvMass_Pt","ESD_TruePi0CaloMergedClusterPartConv_InvMass_Pt",800,0,0.8,250,0,25);
e764f3ba 1321 fHistoTruePi0CaloMergedClusterPartConvInvMassPt[iCut]->SetXTitle("M_{inv,#pi^{0}} (GeV/c^{2}) #gamma merged cluster, part conv");
1322 fHistoTruePi0CaloMergedClusterPartConvInvMassPt[iCut]->SetYTitle("#pi^{0} p_{T} (GeV/c)");
ed8bc1ca 1323 fTrueList[iCut]->Add(fHistoTruePi0CaloMergedClusterPartConvInvMassPt[iCut]);
1324 fHistoTrueEtaCaloMergedClusterPartConvInvMassPt[iCut] = new TH2F("ESD_TrueEtaCaloMergedClusterPartConv_InvMass_Pt","ESD_TrueEtaCaloMergedClusterPartConv_InvMass_Pt",800,0,0.8,250,0,25);
e764f3ba 1325 fHistoTrueEtaCaloMergedClusterPartConvInvMassPt[iCut]->SetXTitle("M_{inv,#eta} (GeV/c^{2}) #gamma merged cluster, part conv");
1326 fHistoTrueEtaCaloMergedClusterPartConvInvMassPt[iCut]->SetYTitle("#eta p_{T} (GeV/c)");
ed8bc1ca 1327 fTrueList[iCut]->Add(fHistoTrueEtaCaloMergedClusterPartConvInvMassPt[iCut]);
fd94f234 1328
8bdca7f1 1329 fHistoTruePrimaryPi0MCPtResolPt[iCut] = new TH2F("ESD_TruePrimaryPi0_MCPt_ResolPt","ESD_TruePrimaryPi0_ResolPt_MCPt",500,0.03,25,1000,-1.,1.);
e764f3ba 1330 fHistoTruePrimaryPi0MCPtResolPt[iCut]->SetXTitle("#pi^{0} p_{T,MC} (GeV/c)");
1331 fHistoTruePrimaryPi0MCPtResolPt[iCut]->SetYTitle("#pi^{0} (p_{T,rec}-p_{T,MC})/p_{T,MC} ()");
8bdca7f1 1332 fHistoTruePrimaryPi0MCPtResolPt[iCut]->Sumw2();
1333 SetLogBinningXTH2(fHistoTruePrimaryPi0MCPtResolPt[iCut]);
1334 fTrueList[iCut]->Add(fHistoTruePrimaryPi0MCPtResolPt[iCut]);
e764f3ba 1335
8bdca7f1 1336 fHistoTruePrimaryEtaMCPtResolPt[iCut] = new TH2F("ESD_TruePrimaryEta_MCPt_ResolPt","ESD_TruePrimaryEta_ResolPt_MCPt",500,0.03,25,1000,-1.,1.);
e764f3ba 1337 fHistoTruePrimaryEtaMCPtResolPt[iCut]->SetXTitle("#eta p_{T,MC} (GeV/c)");
1338 fHistoTruePrimaryEtaMCPtResolPt[iCut]->SetYTitle("#eta (p_{T,rec}-p_{T,MC})/p_{T,MC} ()");
8bdca7f1 1339 fHistoTruePrimaryEtaMCPtResolPt[iCut]->Sumw2();
1340 SetLogBinningXTH2(fHistoTruePrimaryEtaMCPtResolPt[iCut]);
1341 fTrueList[iCut]->Add(fHistoTruePrimaryEtaMCPtResolPt[iCut]);
e764f3ba 1342
8bdca7f1 1343 fHistoTrueBckGGInvMassPt[iCut] = new TH2F("ESD_TrueBckGG_InvMass_Pt","ESD_TrueBckGG_InvMass_Pt",800,0,0.8,250,0,25);
e764f3ba 1344 fHistoTrueBckGGInvMassPt[iCut]->SetXTitle("M_{inv} (GeV/c^{2}) #gamma #gamma no signal");
1345 fHistoTrueBckGGInvMassPt[iCut]->SetYTitle("#pair p_{T} (GeV/c)");
8bdca7f1 1346 fTrueList[iCut]->Add(fHistoTrueBckGGInvMassPt[iCut]);
1347 fHistoTrueBckContInvMassPt[iCut] = new TH2F("ESD_TrueBckCont_InvMass_Pt","ESD_TrueBckCont_InvMass_Pt",800,0,0.8,250,0,25);
e764f3ba 1348 fHistoTrueBckContInvMassPt[iCut]->SetXTitle("M_{inv} (GeV/c^{2}) contamination");
1349 fHistoTrueBckContInvMassPt[iCut]->SetYTitle("#pair p_{T} (GeV/c)");
8bdca7f1 1350 fTrueList[iCut]->Add(fHistoTrueBckContInvMassPt[iCut]);
1351 fHistoTrueK0sWithPi0DaughterMCPt[iCut] = new TH1F("ESD_TrueK0sWithPi0Daughter_MCPt","ESD_TrueK0sWithPi0Daughter_MCPt",250,0,25);
e764f3ba 1352 fHistoTrueK0sWithPi0DaughterMCPt[iCut]->SetXTitle("K^{0}_{s} p_{MC,T} (GeV/c) for K^{0}_{s} where #pi^{0} rec ");
8bdca7f1 1353 fTrueList[iCut]->Add(fHistoTrueK0sWithPi0DaughterMCPt[iCut]);
1354 fHistoTrueEtaWithPi0DaughterMCPt[iCut] = new TH1F("ESD_TrueEtaWithPi0Daughter_MCPt","ESD_TrueEtaWithPi0Daughter_MCPt",250,0,25);
e764f3ba 1355 fHistoTrueEtaWithPi0DaughterMCPt[iCut]->SetXTitle("#eta p_{MC,T} (GeV/c) for #eta where #pi^{0} rec ");
8bdca7f1 1356 fTrueList[iCut]->Add(fHistoTrueEtaWithPi0DaughterMCPt[iCut]);
1357 fHistoTrueLambdaWithPi0DaughterMCPt[iCut] = new TH1F("ESD_TrueLambdaWithPi0Daughter_MCPt","ESD_TrueLambdaWithPi0Daughter_MCPt",250,0,25);
e764f3ba 1358 fHistoTrueLambdaWithPi0DaughterMCPt[iCut]->SetXTitle("#Lambda p_{MC,T} (GeV/c) for #Lambda where #pi^{0} rec ");
8bdca7f1 1359 fTrueList[iCut]->Add(fHistoTrueLambdaWithPi0DaughterMCPt[iCut]);
1360
1361 fHistoTruePi0PtY[iCut] = new TH2F("ESD_TruePi0_Pt_Y","ESD_TruePi0_Pt_Y",150,0.03,15.,150,-1.5,1.5);
e764f3ba 1362 fHistoTruePi0PtY[iCut]->SetYTitle("Y_{#pi^{0}}");
1363 fHistoTruePi0PtY[iCut]->SetXTitle("#pi^{0} p_{T} (GeV/c)");
8bdca7f1 1364 SetLogBinningXTH2(fHistoTruePi0PtY[iCut]);
1365 fTrueList[iCut]->Add(fHistoTruePi0PtY[iCut]);
1366 fHistoTrueEtaPtY[iCut] = new TH2F("ESD_TrueEta_Pt_Y","ESD_TrueEta_Pt_Y",150,0.03,15.,150,-1.5,1.5);
e764f3ba 1367 fHistoTrueEtaPtY[iCut]->SetYTitle("Y_{#eta}");
1368 fHistoTrueEtaPtY[iCut]->SetXTitle("#eta p_{T} (GeV/c)");
8bdca7f1 1369 SetLogBinningXTH2(fHistoTrueEtaPtY[iCut]);
1370 fTrueList[iCut]->Add(fHistoTrueEtaPtY[iCut]);
1371 fHistoTruePi0PtAlpha[iCut] = new TH2F("ESD_TruePi0_Pt_Alpha","ESD_TruePi0_Pt_Alpha",150,0.03,15.,100,0,1);
e764f3ba 1372 fHistoTruePi0PtAlpha[iCut]->SetYTitle("#alpha_{#pi^{0}}");
1373 fHistoTruePi0PtAlpha[iCut]->SetXTitle("#pi^{0} p_{T} (GeV/c)");
8bdca7f1 1374 SetLogBinningXTH2(fHistoTruePi0PtAlpha[iCut]);
1375 fTrueList[iCut]->Add(fHistoTruePi0PtAlpha[iCut]);
1376 fHistoTrueEtaPtAlpha[iCut] = new TH2F("ESD_TrueEta_Pt_Alpha","ESD_TrueEta_Pt_Alpha",150,0.03,15.,100,0,1);
e764f3ba 1377 fHistoTrueEtaPtAlpha[iCut]->SetYTitle("#alpha_{#eta}");
1378 fHistoTrueEtaPtAlpha[iCut]->SetXTitle("#eta p_{T} (GeV/c)");
8bdca7f1 1379 SetLogBinningXTH2(fHistoTrueEtaPtAlpha[iCut]);
1380 fTrueList[iCut]->Add(fHistoTrueEtaPtAlpha[iCut]);
1381
1382 fHistoTruePi0PtOpenAngle[iCut] = new TH2F("ESD_TruePi0_Pt_OpenAngle","ESD_TruePi0_Pt_OpenAngle",150,0.03,15.,200,0,2*TMath::Pi());
e764f3ba 1383 fHistoTruePi0PtOpenAngle[iCut]->SetYTitle("#theta_{#pi^{0}}");
1384 fHistoTruePi0PtOpenAngle[iCut]->SetXTitle("#pi^{0} p_{T} (GeV/c)");
8bdca7f1 1385 SetLogBinningXTH2(fHistoTruePi0PtOpenAngle[iCut]);
1386 fTrueList[iCut]->Add(fHistoTruePi0PtOpenAngle[iCut]);
1387 fHistoTrueEtaPtOpenAngle[iCut] = new TH2F("ESD_TrueEta_Pt_OpenAngle","ESD_TrueEta_Pt_OpenAngle",150,0.03,15.,200,0,2*TMath::Pi());
e764f3ba 1388 fHistoTrueEtaPtOpenAngle[iCut]->SetYTitle("#theta_{#eta}");
1389 fHistoTrueEtaPtOpenAngle[iCut]->SetXTitle("#eta p_{T} (GeV/c)");
8bdca7f1 1390 SetLogBinningXTH2(fHistoTrueEtaPtOpenAngle[iCut]);
1391 fTrueList[iCut]->Add(fHistoTrueEtaPtOpenAngle[iCut]);
ee4b3d66 1392
e764f3ba 1393 fHistoTrueMotherPi0ConvPhotonEtaPhi[iCut] = new TH2F("ESD_TrueMotherPi0ConvPhoton_Eta_Phi","conv photons for true #pi^{0}",600,0,2*TMath::Pi(),400,-2,2);
1394 fHistoTrueMotherPi0ConvPhotonEtaPhi[iCut]->SetXTitle("#phi_{#gamma_{conv}} (rad)");
1395 fHistoTrueMotherPi0ConvPhotonEtaPhi[iCut]->SetYTitle("#eta_{#gamma_{conv}}");
ee4b3d66 1396 fTrueList[iCut]->Add(fHistoTrueMotherPi0ConvPhotonEtaPhi[iCut]);
e764f3ba 1397 fHistoTrueMotherEtaConvPhotonEtaPhi[iCut] = new TH2F("ESD_TrueMotherEtaConvPhoton_Eta_Phi","conv photons for true #eta",600,0,2*TMath::Pi(),400,-2,2);
1398 fHistoTrueMotherEtaConvPhotonEtaPhi[iCut]->SetXTitle("#phi_{#gamma_{conv}} (rad)");
1399 fHistoTrueMotherEtaConvPhotonEtaPhi[iCut]->SetYTitle("#eta_{#gamma_{conv}}");
ee4b3d66 1400 fTrueList[iCut]->Add(fHistoTrueMotherEtaConvPhotonEtaPhi[iCut]);
1401
8bdca7f1 1402 }
1403 }
1404 }
1405 }
1406
1407 fV0Reader=(AliV0ReaderV1*)AliAnalysisManager::GetAnalysisManager()->GetTask("V0ReaderV1");
1408 if(!fV0Reader){printf("Error: No V0 Reader");return;} // GetV0Reader
1409
1410 if(fV0Reader)
344100c4 1411 if((AliConversionPhotonCuts*)fV0Reader->GetConversionCuts())
1412 if(((AliConversionPhotonCuts*)fV0Reader->GetConversionCuts())->GetCutHistograms())
1413 fOutputContainer->Add(((AliConversionPhotonCuts*)fV0Reader->GetConversionCuts())->GetCutHistograms());
1414 if(fV0Reader)
1415 if((AliConvEventCuts*)fV0Reader->GetEventCuts())
1416 if(((AliConvEventCuts*)fV0Reader->GetEventCuts())->GetCutHistograms())
1417 fOutputContainer->Add(((AliConvEventCuts*)fV0Reader->GetEventCuts())->GetCutHistograms());
1418
1419
8bdca7f1 1420 for(Int_t iCut = 0; iCut<fnCuts;iCut++){
344100c4 1421 if(!((AliConvEventCuts*)fEventCutArray->At(iCut))) continue;
1422 if(((AliConvEventCuts*)fEventCutArray->At(iCut))->GetCutHistograms()){
1423 fCutFolder[iCut]->Add(((AliConvEventCuts*)fEventCutArray->At(iCut))->GetCutHistograms());
1424 }
1425 if(!((AliConversionPhotonCuts*)fCutArray->At(iCut))) continue;
1426 if(((AliConversionPhotonCuts*)fCutArray->At(iCut))->GetCutHistograms()){
1427 fCutFolder[iCut]->Add(((AliConversionPhotonCuts*)fCutArray->At(iCut))->GetCutHistograms());
8bdca7f1 1428 }
1429 if(!((AliCaloPhotonCuts*)fClusterCutArray->At(iCut))) continue;
1430 if(((AliCaloPhotonCuts*)fClusterCutArray->At(iCut))->GetCutHistograms()){
1431 fCutFolder[iCut]->Add(((AliCaloPhotonCuts*)fClusterCutArray->At(iCut))->GetCutHistograms());
1432 }
1433 if(fDoMesonAnalysis){
1434 if(!((AliConversionMesonCuts*)fMesonCutArray->At(iCut))) continue;
1435 if(((AliConversionMesonCuts*)fMesonCutArray->At(iCut))->GetCutHistograms()){
1436 fCutFolder[iCut]->Add(((AliConversionMesonCuts*)fMesonCutArray->At(iCut))->GetCutHistograms());
1437 }
1438 }
1439 }
1440 PostData(1, fOutputContainer);
1441}
1442//_____________________________________________________________________________
1443Bool_t AliAnalysisTaskGammaConvCalo::Notify()
1444{
1445 for(Int_t iCut = 0; iCut<fnCuts;iCut++){
344100c4 1446 if(!((AliConvEventCuts*)fEventCutArray->At(iCut))->GetDoEtaShift()){
1447 fProfileEtaShift[iCut]->Fill(0.,(((AliConvEventCuts*)fEventCutArray->At(iCut))->GetEtaShift()));
8bdca7f1 1448 continue; // No Eta Shift requested, continue
1449 }
344100c4 1450 if(((AliConvEventCuts*)fEventCutArray->At(iCut))->GetEtaShift() == 0.0){ // Eta Shift requested but not set, get shift automatically
1451 ((AliConvEventCuts*)fEventCutArray->At(iCut))->GetCorrectEtaShiftFromPeriod(fV0Reader->GetPeriodName());
1452 fProfileEtaShift[iCut]->Fill(0.,(((AliConvEventCuts*)fEventCutArray->At(iCut))->GetEtaShift()));
1453 ((AliConvEventCuts*)fEventCutArray->At(iCut))->DoEtaShift(kFALSE); // Eta Shift Set, make sure that it is called only once
8bdca7f1 1454 continue;
1455 }
1456 else{
1457 printf(" Gamma Conversion Task %s :: Eta Shift Manually Set to %f \n\n",
344100c4 1458 (((AliConvEventCuts*)fEventCutArray->At(iCut))->GetCutNumber()).Data(),((AliConvEventCuts*)fEventCutArray->At(iCut))->GetEtaShift());
1459 fProfileEtaShift[iCut]->Fill(0.,(((AliConvEventCuts*)fEventCutArray->At(iCut))->GetEtaShift()));
1460 ((AliConvEventCuts*)fEventCutArray->At(iCut))->DoEtaShift(kFALSE); // Eta Shift Set, make sure that it is called only once
8bdca7f1 1461 }
1462 }
1463
1464 return kTRUE;
1465}
1466//_____________________________________________________________________________
1467void AliAnalysisTaskGammaConvCalo::UserExec(Option_t *)
1468{
1469 //
1470 // Called for each event
1471 //
344100c4 1472 Int_t eventQuality = ((AliConvEventCuts*)fV0Reader->GetEventCuts())->GetEventQuality();
8bdca7f1 1473 if(eventQuality == 2 || eventQuality == 3){// Event Not Accepted due to MC event missing or wrong trigger for V0ReaderV1
1474 for(Int_t iCut = 0; iCut<fnCuts; iCut++){
1475 fHistoNEvents[iCut]->Fill(eventQuality);
1476 }
1477 return;
1478 }
1479
1480 if(fIsMC) fMCEvent = MCEvent();
1481 if(fMCEvent == NULL) fIsMC = kFALSE;
1482
1483 fInputEvent = InputEvent();
1484
1485 if(fIsMC && fInputEvent->IsA()==AliESDEvent::Class()){
1486 fMCStack = fMCEvent->Stack();
1487 if(fMCStack == NULL) fIsMC = kFALSE;
1488 }
1489
d404157c 1490 if(fInputEvent->IsA()==AliAODEvent::Class()){
1491 fInputEvent->InitMagneticField();
1492 }
1493
8bdca7f1 1494 fReaderGammas = fV0Reader->GetReconstructedGammas(); // Gammas from default Cut
1495
1496 // ------------------- BeginEvent ----------------------------
1497
1498 AliEventplane *EventPlane = fInputEvent->GetEventplane();
1499 if(fIsHeavyIon ==1)fEventPlaneAngle = EventPlane->GetEventplane("V0",fInputEvent,2);
1500 else fEventPlaneAngle=0.0;
1501
1502 if(fIsMC && fInputEvent->IsA()==AliAODEvent::Class() && !(fV0Reader->AreAODsRelabeled())){
1503 RelabelAODPhotonCandidates(kTRUE); // In case of AODMC relabeling MC
1504 fV0Reader->RelabelAODs(kTRUE);
1505 }
1506
1507
1508 for(Int_t iCut = 0; iCut<fnCuts; iCut++){
1509
1510 fiCut = iCut;
7f070437 1511
1512 Bool_t isRunningEMCALrelAna = kFALSE;
1513 if (((AliCaloPhotonCuts*)fClusterCutArray->At(fiCut))->GetClusterType() == 1) isRunningEMCALrelAna = kTRUE;
1514
1515 Int_t eventNotAccepted = ((AliConvEventCuts*)fEventCutArray->At(iCut))->IsEventAcceptedByCut(fV0Reader->GetEventCuts(),fInputEvent,fMCEvent,fIsHeavyIon,isRunningEMCALrelAna);
8bdca7f1 1516
1517 if(eventNotAccepted){
1518 // cout << "event rejected due to wrong trigger: " <<eventNotAccepted << endl;
1519 fHistoNEvents[iCut]->Fill(eventNotAccepted); // Check Centrality, PileUp, SDD and V0AND --> Not Accepted => eventQuality = 1
1520 continue;
1521 }
1522
1523 if(eventQuality != 0){// Event Not Accepted
1524 //cout << "event rejected due to: " <<eventQuality << endl;
1525 fHistoNEvents[iCut]->Fill(eventQuality);
1526 continue;
1527 }
1528
1529 fHistoNEvents[iCut]->Fill(eventQuality); // Should be 0 here
1530 fHistoNGoodESDTracks[iCut]->Fill(fV0Reader->GetNumberOfPrimaryTracks());
344100c4 1531 if(((AliConvEventCuts*)fEventCutArray->At(iCut))->IsHeavyIon() == 2) fHistoNV0Tracks[iCut]->Fill(fInputEvent->GetVZEROData()->GetMTotV0A());
8bdca7f1 1532 else fHistoNV0Tracks[iCut]->Fill(fInputEvent->GetVZEROData()->GetMTotV0A()+fInputEvent->GetVZEROData()->GetMTotV0C());
1533
1534 if(fIsMC){
1535 // Process MC Particle
e764f3ba 1536 fStringRecTruePi0s[iCut] = "";
1537 fStringRecTrueEtas[iCut] = "";
344100c4 1538 if(((AliConvEventCuts*)fEventCutArray->At(iCut))->GetSignalRejection() != 0){
8bdca7f1 1539 if(fInputEvent->IsA()==AliESDEvent::Class()){
344100c4 1540 ((AliConvEventCuts*)fEventCutArray->At(iCut))->GetNotRejectedParticles(((AliConvEventCuts*)fEventCutArray->At(iCut))->GetSignalRejection(),
1541 ((AliConvEventCuts*)fEventCutArray->At(iCut))->GetAcceptedHeader(),
8bdca7f1 1542 fMCEvent);
1543 }
1544 else if(fInputEvent->IsA()==AliAODEvent::Class()){
344100c4 1545 ((AliConvEventCuts*)fEventCutArray->At(iCut))->GetNotRejectedParticles(((AliConvEventCuts*)fEventCutArray->At(iCut))->GetSignalRejection(),
1546 ((AliConvEventCuts*)fEventCutArray->At(iCut))->GetAcceptedHeader(),
8bdca7f1 1547 fInputEvent);
1548 }
1549
344100c4 1550 if(((AliConvEventCuts*)fEventCutArray->At(iCut))->GetAcceptedHeader()){
1551 for(Int_t i = 0;i<(((AliConvEventCuts*)fEventCutArray->At(iCut))->GetAcceptedHeader())->GetEntries();i++){
8bdca7f1 1552 TString nameBin= fHistoMCHeaders[iCut]->GetXaxis()->GetBinLabel(i+1);
1553 if (nameBin.CompareTo("")== 0){
344100c4 1554 TString nameHeader = ((TObjString*)((TList*)((AliConvEventCuts*)fEventCutArray->At(iCut))
1555 ->GetAcceptedHeader())->At(i))->GetString();
1556 fHistoMCHeaders[iCut]->GetXaxis()->SetBinLabel(i+1,nameHeader.Data());
8bdca7f1 1557 }
1558 }
1559 }
1560 }
1561 }
1562 if(fIsMC){
e764f3ba 1563 if(fInputEvent->IsA()==AliESDEvent::Class())
1564 ProcessMCParticles();
1565 if(fInputEvent->IsA()==AliAODEvent::Class())
1566 ProcessAODMCParticles();
8bdca7f1 1567 }
1568
1569 // 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)
1570 ProcessClusters(); // process calo clusters
1571 ProcessPhotonCandidates(); // Process this cuts gammas
1572
1573 fHistoNGammaCandidates[iCut]->Fill(fGammaCandidates->GetEntries());
1574 fHistoNGoodESDTracksVsNGammaCanditates[iCut]->Fill(fV0Reader->GetNumberOfPrimaryTracks(),fGammaCandidates->GetEntries());
1575 if(fDoMesonAnalysis){ // Meson Analysis
1576 if(((AliConversionMesonCuts*)fMesonCutArray->At(iCut))->UseMCPSmearing() && fIsMC){
1577 fUnsmearedPx = new Double_t[fGammaCandidates->GetEntries()]; // Store unsmeared Momenta
1578 fUnsmearedPy = new Double_t[fGammaCandidates->GetEntries()];
1579 fUnsmearedPz = new Double_t[fGammaCandidates->GetEntries()];
1580 fUnsmearedE = new Double_t[fGammaCandidates->GetEntries()];
1581
1582 for(Int_t gamma=0;gamma<fGammaCandidates->GetEntries();gamma++){ // Smear the AODPhotons in MC
1583 fUnsmearedPx[gamma] = ((AliAODConversionPhoton*)fGammaCandidates->At(gamma))->Px();
1584 fUnsmearedPy[gamma] = ((AliAODConversionPhoton*)fGammaCandidates->At(gamma))->Py();
1585 fUnsmearedPz[gamma] = ((AliAODConversionPhoton*)fGammaCandidates->At(gamma))->Pz();
1586 fUnsmearedE[gamma] = ((AliAODConversionPhoton*)fGammaCandidates->At(gamma))->E();
1587 ((AliConversionMesonCuts*)fMesonCutArray->At(iCut))->SmearParticle(dynamic_cast<AliAODConversionPhoton*>(fGammaCandidates->At(gamma)));
1588 }
1589 }
1590
8bdca7f1 1591 CalculatePi0Candidates(); // Combine Gammas from conversion and from calo
1592
1593 if(((AliConversionMesonCuts*)fMesonCutArray->At(iCut))->DoBGCalculation()){
1594 if(((AliConversionMesonCuts*)fMesonCutArray->At(iCut))->BackgroundHandlerType() == 0){
ea1bc51e 1595 CalculateBackground(); // Combinatorial Background
1596 UpdateEventByEventData(); // Store Event for mixed Events
8bdca7f1 1597 }
1598 else{
ea1bc51e 1599 CalculateBackgroundRP(); // Combinatorial Background
1600 fBGHandlerRP[iCut]->AddEvent(fGammaCandidates,fInputEvent); // Store Event for mixed Events
1601 fBGClusHandlerRP[iCut]->AddEvent(fClusterCandidates,fInputEvent); // Store Event for mixed Events
8bdca7f1 1602 }
1603 }
e764f3ba 1604
1605 if(fIsMC && fInputEvent->IsA()==AliAODEvent::Class()){
1606 ProcessConversionPhotonsForMissingTagsAOD(); //Count missing tags
1607 } else if (fIsMC && fInputEvent->IsA()==AliESDEvent::Class()){
1608 ProcessConversionPhotonsForMissingTags(); //Count missing tags
1609 }
1610
8bdca7f1 1611 if(((AliConversionMesonCuts*)fMesonCutArray->At(iCut))->UseMCPSmearing() && fIsMC){
1612 for(Int_t gamma=0;gamma<fGammaCandidates->GetEntries();gamma++){ // Smear the AODPhotons in MC
1613 ((AliAODConversionPhoton*)fGammaCandidates->At(gamma))->SetPx(fUnsmearedPx[gamma]); // Reset Unsmeared Momenta
1614 ((AliAODConversionPhoton*)fGammaCandidates->At(gamma))->SetPy(fUnsmearedPy[gamma]);
1615 ((AliAODConversionPhoton*)fGammaCandidates->At(gamma))->SetPz(fUnsmearedPz[gamma]);
1616 ((AliAODConversionPhoton*)fGammaCandidates->At(gamma))->SetE(fUnsmearedE[gamma]);
1617 }
1618 delete[] fUnsmearedPx; fUnsmearedPx = 0x0;
1619 delete[] fUnsmearedPy; fUnsmearedPy = 0x0;
1620 delete[] fUnsmearedPz; fUnsmearedPz = 0x0;
1621 delete[] fUnsmearedE; fUnsmearedE = 0x0;
1622 }
1623 }
1624
1625 fGammaCandidates->Clear(); // delete this cuts good gammas
1626 fClusterCandidates->Clear(); // delete cluster candidates
1627 }
1628
1629 if(fIsMC && fInputEvent->IsA()==AliAODEvent::Class() && !(fV0Reader->AreAODsRelabeled())){
1630 RelabelAODPhotonCandidates(kFALSE); // Back to ESDMC Label
1631 fV0Reader->RelabelAODs(kFALSE);
1632 }
1633
1634 PostData(1, fOutputContainer);
1635}
1636
1637//________________________________________________________________________
1638void AliAnalysisTaskGammaConvCalo::ProcessClusters()
1639{
1640
1641 Int_t nclus = 0;
1642 nclus = fInputEvent->GetNumberOfCaloClusters();
1643
9df9736d 1644// cout << nclus << endl;
8bdca7f1 1645
1646 if(nclus == 0) return;
1647
1648 // vertex
1649 Double_t vertex[3] = {0};
1650 InputEvent()->GetPrimaryVertex()->GetXYZ(vertex);
1651
1652 // Loop over EMCal clusters
d53bf4ac 1653 for(Long_t i = 0; i < nclus; i++){
8bdca7f1 1654
20af4b69 1655 AliVCluster* clus = NULL;
1656 clus = fInputEvent->GetCaloCluster(i);
8bdca7f1 1657 if (!clus) continue;
1658 if(!((AliCaloPhotonCuts*)fClusterCutArray->At(fiCut))->ClusterIsSelected(clus,fInputEvent,fIsMC)) continue;
1659 // TLorentzvector with cluster
1660 TLorentzVector clusterVector;
1661 clus->GetMomentum(clusterVector,vertex);
1662
1663 TLorentzVector* tmpvec = new TLorentzVector();
1664 tmpvec->SetPxPyPzE(clusterVector.Px(),clusterVector.Py(),clusterVector.Pz(),clusterVector.E());
1665
1666 // convert to AODConversionPhoton
1667 AliAODConversionPhoton *PhotonCandidate=new AliAODConversionPhoton(tmpvec);
1668 if(!PhotonCandidate) continue;
fd94f234 1669
1670 // Flag Photon as CaloPhoton
1671 PhotonCandidate->SetIsCaloPhoton();
d53bf4ac 1672 PhotonCandidate->SetCaloClusterRef(i);
8bdca7f1 1673 // get MC label
8bdca7f1 1674 if(fIsMC){
fd94f234 1675 Int_t* mclabelsCluster = clus->GetLabels();
1676 PhotonCandidate->SetNCaloPhotonMCLabels(clus->GetNLabels());
1677// cout << clus->GetNLabels() << endl;
1678 if (clus->GetNLabels()>0){
1679 for (Int_t k =0; k< (Int_t)clus->GetNLabels(); k++){
cc579963 1680 if (k< 20)PhotonCandidate->SetCaloPhotonMCLabel(k,mclabelsCluster[k]);
fd94f234 1681// Int_t pdgCode = fMCStack->Particle(mclabelsCluster[k])->GetPdgCode();
1682// cout << "label " << k << "\t" << mclabelsCluster[k] << " pdg code: " << pdgCode << endl;
1683 }
1684 }
8bdca7f1 1685 }
1686
fd94f234 1687 fIsFromMBHeader = kTRUE;
ecd3e131 1688 fIsOverlappingWithOtherHeader = kFALSE;
fd94f234 1689 // test whether largest contribution to cluster orginates in added signals
1690 if (fIsMC && ((AliConvEventCuts*)fEventCutArray->At(fiCut))->IsParticleFromBGEvent(PhotonCandidate->GetCaloPhotonMCLabel(0), fMCStack, fInputEvent) == 0) fIsFromMBHeader = kFALSE;
ecd3e131 1691 if (fIsMC ){
1692 if (clus->GetNLabels()>1){
1693 Int_t* mclabelsCluster = clus->GetLabels();
1694 for (Int_t l = 1; l < (Int_t)clus->GetNLabels(); l++ ){
1695 if (((AliConvEventCuts*)fEventCutArray->At(fiCut))->IsParticleFromBGEvent(mclabelsCluster[l], fMCStack, fInputEvent) == 0) fIsOverlappingWithOtherHeader = kTRUE;
1696 }
1697 }
1698 }
1699
1700 if (fIsFromMBHeader && !fIsOverlappingWithOtherHeader){
1701 fHistoClusGammaPt[fiCut]->Fill(PhotonCandidate->Pt());
1702 fClusterCandidates->Add(PhotonCandidate); // if no second loop is required add to events good gammas
1703 }
1704 if (fIsFromMBHeader && fIsOverlappingWithOtherHeader) fHistoClusOverlapHeadersGammaPt[fiCut]->Fill(PhotonCandidate->Pt());
8bdca7f1 1705
8bdca7f1 1706 if(fIsMC){
fd94f234 1707 if(fInputEvent->IsA()==AliESDEvent::Class()){
1708 ProcessTrueClusterCandidates(PhotonCandidate);
1709 } else {
1710 ProcessTrueClusterCandidatesAOD(PhotonCandidate);
1711 }
8bdca7f1 1712 }
1713
344100c4 1714 delete tmpvec;
8bdca7f1 1715 }
1716
1717}
1718
1719//________________________________________________________________________
1720void AliAnalysisTaskGammaConvCalo::ProcessTrueClusterCandidates(AliAODConversionPhoton *TruePhotonCandidate)
1721{
fd94f234 1722
1723 TParticle *Photon = NULL;
1724 if (!TruePhotonCandidate->GetIsCaloPhoton()) AliFatal("CaloPhotonFlag has not been set task will abort");
1725 fHistoTrueNLabelsInClus[fiCut]->Fill(TruePhotonCandidate->GetNCaloPhotonMCLabels());
8bdca7f1 1726
fd94f234 1727 if (TruePhotonCandidate->GetNCaloPhotonMCLabels()>0)Photon = fMCStack->Particle(TruePhotonCandidate->GetCaloPhotonMCLabel(0));
1728 else return;
1729
8bdca7f1 1730 if(Photon == NULL){
1731 // cout << "no photon" << endl;
1732 return;
1733 }
fd94f234 1734
1735 TruePhotonCandidate->SetCaloPhotonMCFlags(fMCStack);
8bdca7f1 1736
1737 // True Photon
ecd3e131 1738 if(fIsFromMBHeader && !fIsOverlappingWithOtherHeader){
fd94f234 1739 if (TruePhotonCandidate->IsLargestComponentPhoton() || TruePhotonCandidate->IsLargestComponentElectron() )fHistoTrueClusGammaPt[fiCut]->Fill(TruePhotonCandidate->Pt());
1740 else fHistoTrueClusEMNonLeadingPt[fiCut]->Fill(TruePhotonCandidate->Pt());
1741 if (fDoClusterQA > 0){
20af4b69 1742 if (TruePhotonCandidate->IsLargestComponentPhoton()){
fd94f234 1743 fHistoTrueClusUnConvGammaPt[fiCut]->Fill(TruePhotonCandidate->Pt());
20af4b69 1744 fHistoTrueClusUnConvGammaMCPt[fiCut]->Fill(Photon->Pt());
1745 }
fd94f234 1746 if (TruePhotonCandidate->IsLargestComponentElectron())
1747 fHistoTrueClusElectronPt[fiCut]->Fill(TruePhotonCandidate->Pt());
20af4b69 1748 if (TruePhotonCandidate->IsLargestComponentElectron() && TruePhotonCandidate->IsConversion()){
fd94f234 1749 fHistoTrueClusConvGammaPt[fiCut]->Fill(TruePhotonCandidate->Pt());
20af4b69 1750 fHistoTrueClusConvGammaMCPt[fiCut]->Fill(((TParticle*)fMCStack->Particle(Photon->GetMother(0)))->Pt());
1751 }
fd94f234 1752 if (TruePhotonCandidate->IsLargestComponentElectron() && TruePhotonCandidate->IsConversion() && TruePhotonCandidate->IsConversionFullyContained())
1753 fHistoTrueClusConvGammaFullyPt[fiCut]->Fill(TruePhotonCandidate->Pt());
1754 if (TruePhotonCandidate->IsMerged() || TruePhotonCandidate->IsMergedPartConv() || TruePhotonCandidate->IsDalitzMerged())
1755 fHistoTrueClusMergedGammaPt[fiCut]->Fill(TruePhotonCandidate->Pt());
1756 if (TruePhotonCandidate->IsMergedPartConv())
1757 fHistoTrueClusMergedPartConvGammaPt[fiCut]->Fill(TruePhotonCandidate->Pt());
1758 if (TruePhotonCandidate->IsDalitz())
1759 fHistoTrueClusDalitzPt[fiCut]->Fill(TruePhotonCandidate->Pt());
1760 if (TruePhotonCandidate->IsDalitzMerged())
1761 fHistoTrueClusDalitzMergedPt[fiCut]->Fill(TruePhotonCandidate->Pt());
1762 if (TruePhotonCandidate->IsPhotonWithElecMother())
1763 fHistoTrueClusPhotonFromElecMotherPt[fiCut]->Fill(TruePhotonCandidate->Pt());
1764 if (TruePhotonCandidate->IsShower())
1765 fHistoTrueClusShowerPt[fiCut]->Fill(TruePhotonCandidate->Pt());
cc579963 1766 if (TruePhotonCandidate->IsSubLeadingEM())
1767 fHistoTrueClusSubLeadingPt[fiCut]->Fill(TruePhotonCandidate->Pt());
1768 fHistoTrueClusNParticles[fiCut]->Fill(TruePhotonCandidate->GetNCaloPhotonMotherMCLabels());
fd94f234 1769 }
8bdca7f1 1770 }
1771
1772 if(Photon->GetMother(0) <= fMCStack->GetNprimary()){
1773 // Count just primary MC Gammas as true --> For Ratio esdtruegamma / mcconvgamma
1774 if(fIsFromMBHeader){
344100c4 1775 fHistoTruePrimaryClusGammaPt[fiCut]->Fill(TruePhotonCandidate->Pt());
1776 fHistoTruePrimaryClusGammaESDPtMCPt[fiCut]->Fill(TruePhotonCandidate->Pt(),Photon->Pt()); // Allways Filled
8bdca7f1 1777 }
fd94f234 1778 }
1779 return;
1780}
1781
1782
1783//________________________________________________________________________
1784void AliAnalysisTaskGammaConvCalo::ProcessTrueClusterCandidatesAOD(AliAODConversionPhoton *TruePhotonCandidate)
1785{
1786 AliAODMCParticle *Photon = NULL;
1787 TClonesArray *AODMCTrackArray = dynamic_cast<TClonesArray*>(fInputEvent->FindListObject(AliAODMCParticle::StdBranchName()));
1788 if (AODMCTrackArray){
1789 if (!TruePhotonCandidate->GetIsCaloPhoton()) AliFatal("CaloPhotonFlag has not been set task will abort");
1790 if (TruePhotonCandidate->GetNCaloPhotonMCLabels()>0) Photon = (AliAODMCParticle*) AODMCTrackArray->At(TruePhotonCandidate->GetCaloPhotonMCLabel(0));
1791 else return;
1792 } else {
1793 AliInfo("AODMCTrackArray could not be loaded");
1794 return;
8bdca7f1 1795 }
1796
fd94f234 1797 if(Photon == NULL){
cc579963 1798 // cout << "no photon" << endl;
fd94f234 1799 return;
1800 }
1801 TruePhotonCandidate->SetCaloPhotonMCFlagsAOD(fInputEvent);
d404157c 1802 fHistoTrueNLabelsInClus[fiCut]->Fill(TruePhotonCandidate->GetNCaloPhotonMCLabels());
fd94f234 1803 // True Photon
ecd3e131 1804 if(fIsFromMBHeader && !fIsOverlappingWithOtherHeader){
fd94f234 1805 if (TruePhotonCandidate->IsLargestComponentPhoton() || TruePhotonCandidate->IsLargestComponentElectron() )fHistoTrueClusGammaPt[fiCut]->Fill(TruePhotonCandidate->Pt());
1806 else fHistoTrueClusEMNonLeadingPt[fiCut]->Fill(TruePhotonCandidate->Pt());
1807 if (fDoClusterQA > 0){
20af4b69 1808 if (TruePhotonCandidate->IsLargestComponentPhoton()) {
fd94f234 1809 fHistoTrueClusUnConvGammaPt[fiCut]->Fill(TruePhotonCandidate->Pt());
20af4b69 1810 fHistoTrueClusUnConvGammaMCPt[fiCut]->Fill(Photon->Pt());
1811 }
fd94f234 1812 if (TruePhotonCandidate->IsLargestComponentElectron())
1813 fHistoTrueClusElectronPt[fiCut]->Fill(TruePhotonCandidate->Pt());
20af4b69 1814 if (TruePhotonCandidate->IsLargestComponentElectron() && TruePhotonCandidate->IsConversion()) {
fd94f234 1815 fHistoTrueClusConvGammaPt[fiCut]->Fill(TruePhotonCandidate->Pt());
20af4b69 1816 AliAODMCParticle *Mother = (AliAODMCParticle*) AODMCTrackArray->At(Photon->GetMother());
1817 fHistoTrueClusConvGammaMCPt[fiCut]->Fill(Mother->Pt());
1818 }
fd94f234 1819 if (TruePhotonCandidate->IsLargestComponentElectron() && TruePhotonCandidate->IsConversion() && TruePhotonCandidate->IsConversionFullyContained())
1820 fHistoTrueClusConvGammaFullyPt[fiCut]->Fill(TruePhotonCandidate->Pt());
1821 if (TruePhotonCandidate->IsMerged() || TruePhotonCandidate->IsMergedPartConv() || TruePhotonCandidate->IsDalitzMerged())
1822 fHistoTrueClusMergedGammaPt[fiCut]->Fill(TruePhotonCandidate->Pt());
1823 if (TruePhotonCandidate->IsMergedPartConv())
1824 fHistoTrueClusMergedPartConvGammaPt[fiCut]->Fill(TruePhotonCandidate->Pt());
1825 if (TruePhotonCandidate->IsDalitz())
1826 fHistoTrueClusDalitzPt[fiCut]->Fill(TruePhotonCandidate->Pt());
1827 if (TruePhotonCandidate->IsDalitzMerged())
1828 fHistoTrueClusDalitzMergedPt[fiCut]->Fill(TruePhotonCandidate->Pt());
1829 if (TruePhotonCandidate->IsPhotonWithElecMother())
1830 fHistoTrueClusPhotonFromElecMotherPt[fiCut]->Fill(TruePhotonCandidate->Pt());
1831 if (TruePhotonCandidate->IsShower())
1832 fHistoTrueClusShowerPt[fiCut]->Fill(TruePhotonCandidate->Pt());
cc579963 1833 if (TruePhotonCandidate->IsSubLeadingEM())
1834 fHistoTrueClusSubLeadingPt[fiCut]->Fill(TruePhotonCandidate->Pt());
1835 fHistoTrueClusNParticles[fiCut]->Fill(TruePhotonCandidate->GetNCaloPhotonMotherMCLabels());
fd94f234 1836 }
1837 }
8bdca7f1 1838
fd94f234 1839 // True Photon
1840 if(fIsFromMBHeader){
1841 fHistoTrueClusGammaPt[fiCut]->Fill(TruePhotonCandidate->Pt());
1842// if (fDoPhotonQA > 0) fHistoTrueConvGammaEta[fiCut]->Fill(TruePhotonCandidate->Eta());
1843 }
1844
1845 if(Photon->IsPrimary()){
1846 // Count just primary MC Gammas as true --> For Ratio esdtruegamma / mcconvgamma
1847 if(fIsFromMBHeader){
1848 fHistoTruePrimaryClusGammaPt[fiCut]->Fill(TruePhotonCandidate->Pt());
1849 fHistoTruePrimaryClusGammaESDPtMCPt[fiCut]->Fill(TruePhotonCandidate->Pt(),Photon->Pt()); // Allways Filled
1850 }
1851 }
1852}
8bdca7f1 1853
1854//________________________________________________________________________
1855void AliAnalysisTaskGammaConvCalo::ProcessPhotonCandidates()
1856{
1857 Int_t nV0 = 0;
1858 TList *GammaCandidatesStepOne = new TList();
1859 TList *GammaCandidatesStepTwo = new TList();
1860 // Loop over Photon Candidates allocated by ReaderV1
1861 for(Int_t i = 0; i < fReaderGammas->GetEntriesFast(); i++){
1862 AliAODConversionPhoton* PhotonCandidate = (AliAODConversionPhoton*) fReaderGammas->At(i);
1863 if(!PhotonCandidate) continue;
1864 fIsFromMBHeader = kTRUE;
344100c4 1865 if(fIsMC && ((AliConvEventCuts*)fEventCutArray->At(fiCut))->GetSignalRejection() != 0){
1866 Int_t isPosFromMBHeader = ((AliConvEventCuts*)fEventCutArray->At(fiCut))->IsParticleFromBGEvent(PhotonCandidate->GetMCLabelPositive(), fMCStack, fInputEvent);
1867 if(isPosFromMBHeader == 0 && ((AliConvEventCuts*)fEventCutArray->At(fiCut))->GetSignalRejection() != 3) continue;
1868 Int_t isNegFromMBHeader = ((AliConvEventCuts*)fEventCutArray->At(fiCut))->IsParticleFromBGEvent(PhotonCandidate->GetMCLabelNegative(), fMCStack, fInputEvent);
1869 if(isNegFromMBHeader == 0 && ((AliConvEventCuts*)fEventCutArray->At(fiCut))->GetSignalRejection() != 3) continue;
8bdca7f1 1870 if( (isNegFromMBHeader+isPosFromMBHeader) != 4) fIsFromMBHeader = kFALSE;
1871 }
1872
344100c4 1873 if(!((AliConversionPhotonCuts*)fCutArray->At(fiCut))->PhotonIsSelected(PhotonCandidate,fInputEvent)) continue;
1874 if(!((AliConversionPhotonCuts*)fCutArray->At(fiCut))->InPlaneOutOfPlaneCut(PhotonCandidate->GetPhotonPhi(),fEventPlaneAngle)) continue;
1875 if(!((AliConversionPhotonCuts*)fCutArray->At(fiCut))->UseElecSharingCut() &&
1876 !((AliConversionPhotonCuts*)fCutArray->At(fiCut))->UseToCloseV0sCut()){
8bdca7f1 1877 fGammaCandidates->Add(PhotonCandidate); // if no second loop is required add to events good gammas
1878
1879 if(fIsFromMBHeader){
1880 fHistoConvGammaPt[fiCut]->Fill(PhotonCandidate->Pt());
1881 if (fDoPhotonQA > 0){
1882 fHistoConvGammaR[fiCut]->Fill(PhotonCandidate->GetConversionRadius());
1883 fHistoConvGammaEta[fiCut]->Fill(PhotonCandidate->Eta());
1884 }
1885 }
1886 if(fIsMC){
1887 if(fInputEvent->IsA()==AliESDEvent::Class())
1888 ProcessTruePhotonCandidates(PhotonCandidate);
1889 if(fInputEvent->IsA()==AliAODEvent::Class())
1890 ProcessTruePhotonCandidatesAOD(PhotonCandidate);
1891 }
1892 if (fIsFromMBHeader && fDoPhotonQA == 2){
1893 if (fIsHeavyIon == 1 && PhotonCandidate->Pt() > 0.399 && PhotonCandidate->Pt() < 12.){
344100c4 1894 fPtGamma = PhotonCandidate->Pt();
1895 fDCAzPhoton = PhotonCandidate->GetDCAzToPrimVtx();
1896 fRConvPhoton = PhotonCandidate->GetConversionRadius();
1897 fEtaPhoton = PhotonCandidate->GetPhotonEta();
1898 fCharCatPhoton = PhotonCandidate->GetPhotonQuality();
1899 fTreeConvGammaPtDcazCat[fiCut]->Fill();
8bdca7f1 1900 } else if ( PhotonCandidate->Pt() > 0.299 && PhotonCandidate->Pt() < 16.){
344100c4 1901 fPtGamma = PhotonCandidate->Pt();
1902 fDCAzPhoton = PhotonCandidate->GetDCAzToPrimVtx();
1903 fRConvPhoton = PhotonCandidate->GetConversionRadius();
1904 fEtaPhoton = PhotonCandidate->GetPhotonEta();
1905 fCharCatPhoton = PhotonCandidate->GetPhotonQuality();
1906 fTreeConvGammaPtDcazCat[fiCut]->Fill();
8bdca7f1 1907 }
1908 }
344100c4 1909 } else if(((AliConversionPhotonCuts*)fCutArray->At(fiCut))->UseElecSharingCut()){ // if Shared Electron cut is enabled, Fill array, add to step one
1910 ((AliConversionPhotonCuts*)fCutArray->At(fiCut))->FillElectonLabelArray(PhotonCandidate,nV0);
8bdca7f1 1911 nV0++;
1912 GammaCandidatesStepOne->Add(PhotonCandidate);
344100c4 1913 } else if(!((AliConversionPhotonCuts*)fCutArray->At(fiCut))->UseElecSharingCut() &&
1914 ((AliConversionPhotonCuts*)fCutArray->At(fiCut))->UseToCloseV0sCut()){ // shared electron is disabled, step one not needed -> step two
8bdca7f1 1915 GammaCandidatesStepTwo->Add(PhotonCandidate);
1916 }
1917 }
344100c4 1918 if(((AliConversionPhotonCuts*)fCutArray->At(fiCut))->UseElecSharingCut()){
8bdca7f1 1919 for(Int_t i = 0;i<GammaCandidatesStepOne->GetEntries();i++){
1920 AliAODConversionPhoton *PhotonCandidate= (AliAODConversionPhoton*) GammaCandidatesStepOne->At(i);
1921 if(!PhotonCandidate) continue;
1922 fIsFromMBHeader = kTRUE;
344100c4 1923 if(fMCStack && ((AliConvEventCuts*)fEventCutArray->At(fiCut))->GetSignalRejection() != 0){
1924 Int_t isPosFromMBHeader = ((AliConvEventCuts*)fEventCutArray->At(fiCut))->IsParticleFromBGEvent(PhotonCandidate->GetMCLabelPositive(), fMCStack, fInputEvent);
1925 Int_t isNegFromMBHeader = ((AliConvEventCuts*)fEventCutArray->At(fiCut))->IsParticleFromBGEvent(PhotonCandidate->GetMCLabelNegative(), fMCStack, fInputEvent);
8bdca7f1 1926 if( (isNegFromMBHeader+isPosFromMBHeader) != 4) fIsFromMBHeader = kFALSE;
1927 }
344100c4 1928 if(!((AliConversionPhotonCuts*)fCutArray->At(fiCut))->RejectSharedElectronV0s(PhotonCandidate,i,GammaCandidatesStepOne->GetEntries())) continue;
1929 if(!((AliConversionPhotonCuts*)fCutArray->At(fiCut))->UseToCloseV0sCut()){ // To Colse v0s cut diabled, step two not needed
8bdca7f1 1930 fGammaCandidates->Add(PhotonCandidate);
1931 if(fIsFromMBHeader){
1932 fHistoConvGammaPt[fiCut]->Fill(PhotonCandidate->Pt());
1933 if (fDoPhotonQA > 0){
1934 fHistoConvGammaR[fiCut]->Fill(PhotonCandidate->GetConversionRadius());
1935 fHistoConvGammaEta[fiCut]->Fill(PhotonCandidate->Eta());
1936 }
1937 }
1938 }
1939 if(fIsMC){
1940 if(fInputEvent->IsA()==AliESDEvent::Class())
1941 ProcessTruePhotonCandidates(PhotonCandidate);
1942 if(fInputEvent->IsA()==AliAODEvent::Class())
1943 ProcessTruePhotonCandidatesAOD(PhotonCandidate);
1944 } else GammaCandidatesStepTwo->Add(PhotonCandidate); // Close v0s cut enabled -> add to list two
1945
1946 if (fIsFromMBHeader && fDoPhotonQA == 2){
1947 if (fIsHeavyIon ==1 && PhotonCandidate->Pt() > 0.399 && PhotonCandidate->Pt() < 12.){
1948 fPtGamma = PhotonCandidate->Pt();
1949 fDCAzPhoton = PhotonCandidate->GetDCAzToPrimVtx();
1950 fRConvPhoton = PhotonCandidate->GetConversionRadius();
1951 fEtaPhoton = PhotonCandidate->GetPhotonEta();
1952 fCharCatPhoton = PhotonCandidate->GetPhotonQuality();
1953 fTreeConvGammaPtDcazCat[fiCut]->Fill();
1954 } else if ( PhotonCandidate->Pt() > 0.299 && PhotonCandidate->Pt() < 16.){
1955 fPtGamma = PhotonCandidate->Pt();
1956 fDCAzPhoton = PhotonCandidate->GetDCAzToPrimVtx();
1957 fRConvPhoton = PhotonCandidate->GetConversionRadius();
1958 fEtaPhoton = PhotonCandidate->GetPhotonEta();
1959 fCharCatPhoton = PhotonCandidate->GetPhotonQuality();
1960 fTreeConvGammaPtDcazCat[fiCut]->Fill();
1961 }
1962 }
1963 }
1964 }
344100c4 1965 if(((AliConversionPhotonCuts*)fCutArray->At(fiCut))->UseToCloseV0sCut()){
8bdca7f1 1966 for(Int_t i = 0;i<GammaCandidatesStepTwo->GetEntries();i++){
1967 AliAODConversionPhoton* PhotonCandidate = (AliAODConversionPhoton*) GammaCandidatesStepTwo->At(i);
1968 if(!PhotonCandidate) continue;
1969 fIsFromMBHeader = kTRUE;
344100c4 1970 if(fMCStack && ((AliConvEventCuts*)fEventCutArray->At(fiCut))->GetSignalRejection() != 0){
1971 Int_t isPosFromMBHeader = ((AliConvEventCuts*)fEventCutArray->At(fiCut))->IsParticleFromBGEvent(PhotonCandidate->GetMCLabelPositive(), fMCStack, fInputEvent);
1972 Int_t isNegFromMBHeader = ((AliConvEventCuts*)fEventCutArray->At(fiCut))->IsParticleFromBGEvent(PhotonCandidate->GetMCLabelNegative(), fMCStack, fInputEvent);
8bdca7f1 1973 if( (isNegFromMBHeader+isPosFromMBHeader) != 4) fIsFromMBHeader = kFALSE;
1974 }
344100c4 1975 if(!((AliConversionPhotonCuts*)fCutArray->At(fiCut))->RejectToCloseV0s(PhotonCandidate,GammaCandidatesStepTwo,i)) continue;
8bdca7f1 1976 fGammaCandidates->Add(PhotonCandidate); // Add gamma to current cut TList
1977 if(fIsFromMBHeader){
1978 fHistoConvGammaPt[fiCut]->Fill(PhotonCandidate->Pt());
1979 if (fDoPhotonQA > 0){
1980 fHistoConvGammaR[fiCut]->Fill(PhotonCandidate->GetConversionRadius());
1981 fHistoConvGammaEta[fiCut]->Fill(PhotonCandidate->Eta());
1982 }
1983 }
1984 if(fIsMC){
1985 if(fInputEvent->IsA()==AliESDEvent::Class())
1986 ProcessTruePhotonCandidates(PhotonCandidate);
1987 if(fInputEvent->IsA()==AliAODEvent::Class())
1988 ProcessTruePhotonCandidatesAOD(PhotonCandidate);
1989 }
1990 if (fIsFromMBHeader){
1991 if (fIsHeavyIon == 1 && PhotonCandidate->Pt() > 0.399 && PhotonCandidate->Pt() < 12.){
1992 fPtGamma = PhotonCandidate->Pt();
1993 fDCAzPhoton = PhotonCandidate->GetDCAzToPrimVtx();
1994 fRConvPhoton = PhotonCandidate->GetConversionRadius();
1995 fEtaPhoton = PhotonCandidate->GetPhotonEta();
1996 fCharCatPhoton = PhotonCandidate->GetPhotonQuality();
1997 fTreeConvGammaPtDcazCat[fiCut]->Fill();
1998 } else if ( PhotonCandidate->Pt() > 0.299 && PhotonCandidate->Pt() < 16.){
1999 fPtGamma = PhotonCandidate->Pt();
2000 fDCAzPhoton = PhotonCandidate->GetDCAzToPrimVtx();
2001 fRConvPhoton = PhotonCandidate->GetConversionRadius();
2002 fEtaPhoton = PhotonCandidate->GetPhotonEta();
2003 fCharCatPhoton = PhotonCandidate->GetPhotonQuality();
2004 fTreeConvGammaPtDcazCat[fiCut]->Fill();
2005 }
2006 }
2007 }
2008 }
2009
2010 delete GammaCandidatesStepOne;
2011 GammaCandidatesStepOne = 0x0;
2012 delete GammaCandidatesStepTwo;
2013 GammaCandidatesStepTwo = 0x0;
2014
2015}
e764f3ba 2016
8bdca7f1 2017//________________________________________________________________________
2018void AliAnalysisTaskGammaConvCalo::ProcessTruePhotonCandidatesAOD(AliAODConversionPhoton *TruePhotonCandidate)
2019{
2020
2021 Double_t magField = fInputEvent->GetMagneticField();
2022 if( magField < 0.0 ){
2023 magField = 1.0;
2024 }
2025 else {
2026 magField = -1.0;
2027 }
2028
2029 TClonesArray *AODMCTrackArray = dynamic_cast<TClonesArray*>(fInputEvent->FindListObject(AliAODMCParticle::StdBranchName()));
2030 AliAODMCParticle *posDaughter = (AliAODMCParticle*) AODMCTrackArray->At(TruePhotonCandidate->GetMCLabelPositive());
2031 AliAODMCParticle *negDaughter = (AliAODMCParticle*) AODMCTrackArray->At(TruePhotonCandidate->GetMCLabelNegative());
2032 fCharPhotonMCInfo = 0;
2033
2034 if(posDaughter == NULL || negDaughter == NULL) return; // One particle does not exist
2035 Int_t pdgCode[2] = {abs(posDaughter->GetPdgCode()),abs(negDaughter->GetPdgCode())};
2036
2037 if(posDaughter->GetMother() != negDaughter->GetMother()){
2038 FillPhotonCombinatorialBackgroundHist(TruePhotonCandidate, pdgCode);
2039 fCharPhotonMCInfo = 1;
2040 return;
2041 }
2042 else if(posDaughter->GetMother() == -1){
2043 FillPhotonCombinatorialBackgroundHist(TruePhotonCandidate, pdgCode);
2044 fCharPhotonMCInfo = 1;
2045 return;
2046 }
2047
2048 if(pdgCode[0]!=11 || pdgCode[1]!=11){
2049 fCharPhotonMCInfo = 1;
2050 return; //One Particle is not a electron
2051 }
fd94f234 2052
8bdca7f1 2053 if(posDaughter->GetPdgCode()==negDaughter->GetPdgCode()){
2054 fCharPhotonMCInfo = 1;
2055 return; // Same Charge
2056 }
2057
fd94f234 2058 AliAODMCParticle *Photon = (AliAODMCParticle*) AODMCTrackArray->At(posDaughter->GetMother());
8bdca7f1 2059 if(Photon->GetPdgCode() != 22){
8bdca7f1 2060 fCharPhotonMCInfo = 1;
2061 return; // Mother is no Photon
2062 }
2063
2064 if(((posDaughter->GetMCProcessCode())) != 5 || ((negDaughter->GetMCProcessCode())) != 5){
2065 fCharPhotonMCInfo = 1;
2066 return;// check if the daughters come from a conversion
2067 }
2068 // STILL A BUG IN ALIROOT >>8 HAS TPO BE REMOVED AFTER FIX
2069
2070
2071
2072 // True Photon
2073 if(fIsFromMBHeader){
2074 fHistoTrueConvGammaPt[fiCut]->Fill(TruePhotonCandidate->Pt());
2075 if (fDoPhotonQA > 0) fHistoTrueConvGammaEta[fiCut]->Fill(TruePhotonCandidate->Eta());
2076 }
8bdca7f1 2077 if(Photon->IsPrimary()){
2078 // Count just primary MC Gammas as true --> For Ratio esdtruegamma / mcconvgamma
2079 if(fIsFromMBHeader){
2080 fCharPhotonMCInfo = 6;
2081 fHistoTruePrimaryConvGammaPt[fiCut]->Fill(TruePhotonCandidate->Pt());
2082 fHistoTruePrimaryConvGammaESDPtMCPt[fiCut]->Fill(TruePhotonCandidate->Pt(),Photon->Pt()); // Allways Filled
2083 }
2084 // (Not Filled for i6, Extra Signal Gamma (parambox) are secondary)
2085 } else {
2086 if(fIsFromMBHeader){
2087 fHistoTrueSecondaryConvGammaPt[fiCut]->Fill(TruePhotonCandidate->Pt());
2088 fCharPhotonMCInfo = 2;
2089 if(((AliAODMCParticle*)AODMCTrackArray->At(Photon->GetMother()))->GetMother() > -1 &&
2090 ((AliAODMCParticle*)AODMCTrackArray->At(((AliAODMCParticle*)AODMCTrackArray->At(Photon->GetMother()))->GetMother()))->GetPdgCode() == 3122){
2091 fCharPhotonMCInfo = 5;
2092 fHistoTrueSecondaryConvGammaFromXFromLambdaPt[fiCut]->Fill(TruePhotonCandidate->Pt());
2093 }
2094 if(((AliAODMCParticle*)AODMCTrackArray->At(Photon->GetMother()))->GetMother() > -1 &&
2095 ((AliAODMCParticle*)AODMCTrackArray->At(((AliAODMCParticle*)AODMCTrackArray->At(Photon->GetMother()))->GetMother()))->GetPdgCode() == 310){
2096 fCharPhotonMCInfo = 4;
2097 fHistoTrueSecondaryConvGammaFromXFromK0sPt[fiCut]->Fill(TruePhotonCandidate->Pt());
2098 }
2099 if(((AliAODMCParticle*)AODMCTrackArray->At(Photon->GetMother()))->GetMother() > -1 &&
2100 ((AliAODMCParticle*)AODMCTrackArray->At(((AliAODMCParticle*)AODMCTrackArray->At(Photon->GetMother()))->GetMother()))->GetPdgCode() == 221){
2101 fCharPhotonMCInfo = 3;
2102 }
2103 }
e764f3ba 2104 }
2105 TruePhotonCandidate->SetIsTrueConvertedPhoton();
8bdca7f1 2106}
e764f3ba 2107
8bdca7f1 2108//________________________________________________________________________
2109void AliAnalysisTaskGammaConvCalo::ProcessTruePhotonCandidates(AliAODConversionPhoton *TruePhotonCandidate)
2110{
cc579963 2111
8bdca7f1 2112 Double_t magField = fInputEvent->GetMagneticField();
2113 if( magField < 0.0 ){
2114 magField = 1.0;
2115 }
2116 else {
2117 magField = -1.0;
2118 }
cc579963 2119
8bdca7f1 2120 // Process True Photons
2121 TParticle *posDaughter = TruePhotonCandidate->GetPositiveMCDaughter(fMCStack);
2122 TParticle *negDaughter = TruePhotonCandidate->GetNegativeMCDaughter(fMCStack);
2123 fCharPhotonMCInfo = 0;
2124
2125 if(posDaughter == NULL || negDaughter == NULL) return; // One particle does not exist
2126 Int_t pdgCode[2] = {abs(posDaughter->GetPdgCode()),abs(negDaughter->GetPdgCode())};
2127 fCharPhotonMCInfo = 1;
2128 if(posDaughter->GetMother(0) != negDaughter->GetMother(0)){
2129 FillPhotonCombinatorialBackgroundHist(TruePhotonCandidate, pdgCode);
2130 return;
2131 }
2132 else if(posDaughter->GetMother(0) == -1){
2133 FillPhotonCombinatorialBackgroundHist(TruePhotonCandidate, pdgCode);
2134 return;
2135 }
2136
2137 if(pdgCode[0]!=11 || pdgCode[1]!=11) return; //One Particle is not a electron
2138
2139 if(posDaughter->GetPdgCode()==negDaughter->GetPdgCode()) return; // Same Charge
cc579963 2140
8bdca7f1 2141 TParticle *Photon = TruePhotonCandidate->GetMCParticle(fMCStack);
8bdca7f1 2142
2143 if(Photon->GetPdgCode() != 22){
8bdca7f1 2144 return; // Mother is no Photon
2145 }
2146
2147 if(posDaughter->GetUniqueID() != 5 || negDaughter->GetUniqueID() !=5) return;// check if the daughters come from a conversion
2148
8bdca7f1 2149 // True Photon
2150 if(fIsFromMBHeader){
2151 fHistoTrueConvGammaPt[fiCut]->Fill(TruePhotonCandidate->Pt());
2152 if (fDoPhotonQA > 0) fHistoTrueConvGammaEta[fiCut]->Fill(TruePhotonCandidate->Eta());
2153 }
8bdca7f1 2154 if(posDaughter->GetMother(0) <= fMCStack->GetNprimary()){
2155 // Count just primary MC Gammas as true --> For Ratio esdtruegamma / mcconvgamma
2156 if(fIsFromMBHeader){
2157 fCharPhotonMCInfo = 6;
2158 fHistoTruePrimaryConvGammaPt[fiCut]->Fill(TruePhotonCandidate->Pt());
2159 fHistoTruePrimaryConvGammaESDPtMCPt[fiCut]->Fill(TruePhotonCandidate->Pt(),Photon->Pt()); // Allways Filled
8bdca7f1 2160 }
2161 // (Not Filled for i6, Extra Signal Gamma (parambox) are secondary)
e764f3ba 2162 } else {
8bdca7f1 2163 if(fIsFromMBHeader){
2164 fCharPhotonMCInfo = 2;
2165 fHistoTrueSecondaryConvGammaPt[fiCut]->Fill(TruePhotonCandidate->Pt());
2166 if(fMCStack->Particle(Photon->GetMother(0))->GetMother(0) > -1 &&
2167 fMCStack->Particle(fMCStack->Particle(Photon->GetMother(0))->GetMother(0))->GetPdgCode() == 3122){
2168 fHistoTrueSecondaryConvGammaFromXFromLambdaPt[fiCut]->Fill(TruePhotonCandidate->Pt());
2169 fCharPhotonMCInfo = 5;
2170 }
2171 if(fMCStack->Particle(Photon->GetMother(0))->GetMother(0) > -1 &&
2172 fMCStack->Particle(fMCStack->Particle(Photon->GetMother(0))->GetMother(0))->GetPdgCode() == 310){
2173 fHistoTrueSecondaryConvGammaFromXFromK0sPt[fiCut]->Fill(TruePhotonCandidate->Pt());
2174 fCharPhotonMCInfo = 4;
2175 }
2176 if(fMCStack->Particle(Photon->GetMother(0))->GetMother(0) > -1 &&
2177 fMCStack->Particle(fMCStack->Particle(Photon->GetMother(0))->GetMother(0))->GetPdgCode() == 221){
2178 fCharPhotonMCInfo = 3;
2179 }
2180 }
2181 }
e764f3ba 2182 TruePhotonCandidate->SetIsTrueConvertedPhoton();
cc579963 2183 return;
8bdca7f1 2184}
2185//________________________________________________________________________
2186void AliAnalysisTaskGammaConvCalo::ProcessAODMCParticles()
2187{
2188
2189 TClonesArray *AODMCTrackArray = dynamic_cast<TClonesArray*>(fInputEvent->FindListObject(AliAODMCParticle::StdBranchName()));
2190
2191 // Loop over all primary MC particle
2192 for(Int_t i = 0; i < AODMCTrackArray->GetEntriesFast(); i++) {
2193
2194 AliAODMCParticle* particle = static_cast<AliAODMCParticle*>(AODMCTrackArray->At(i));
2195 if (!particle) continue;
2196 if (!particle->IsPrimary()) continue;
2197
2198 Int_t isMCFromMBHeader = -1;
344100c4 2199 if(((AliConvEventCuts*)fEventCutArray->At(fiCut))->GetSignalRejection() != 0){
2200 isMCFromMBHeader = ((AliConvEventCuts*)fEventCutArray->At(fiCut))->IsParticleFromBGEvent(i, fMCStack, fInputEvent);
2201 if(isMCFromMBHeader == 0 && ((AliConvEventCuts*)fEventCutArray->At(fiCut))->GetSignalRejection() != 3) continue;
8bdca7f1 2202 }
2203
344100c4 2204 if(!((AliConversionPhotonCuts*)fCutArray->At(fiCut))->InPlaneOutOfPlaneCut(particle->Phi(),fEventPlaneAngle,kFALSE)) continue;
2205 if(((AliConversionPhotonCuts*)fCutArray->At(fiCut))->PhotonIsSelectedAODMC(particle,AODMCTrackArray,kFALSE)){
8bdca7f1 2206 fHistoMCAllGammaPt[fiCut]->Fill(particle->Pt()); // All MC Gamma
d404157c 2207 if (abs(particle->Eta()) < 0.66 ){
2208 if (particle->Phi() > 1.39626 && particle->Phi() < 3.125) fHistoMCAllGammaEMCALAccPt[fiCut]->Fill(particle->Pt());
8bdca7f1 2209 }
d404157c 2210 if(particle->GetMother() >-1){ // Meson Decay Gamma
2211 switch((static_cast<AliAODMCParticle*>(AODMCTrackArray->At(particle->GetMother())))->GetPdgCode()){
2212 case 111: // Pi0
2213 fHistoMCDecayGammaPi0Pt[fiCut]->Fill(particle->Pt());
2214 break;
2215 case 113: // Rho0
2216 fHistoMCDecayGammaRhoPt[fiCut]->Fill(particle->Pt());
2217 break;
2218 case 221: // Eta
2219 fHistoMCDecayGammaEtaPt[fiCut]->Fill(particle->Pt());
2220 break;
2221 case 223: // Omega
2222 fHistoMCDecayGammaOmegaPt[fiCut]->Fill(particle->Pt());
2223 break;
2224 case 331: // Eta'
2225 fHistoMCDecayGammaEtapPt[fiCut]->Fill(particle->Pt());
2226 break;
2227 case 333: // Phi
2228 fHistoMCDecayGammaPhiPt[fiCut]->Fill(particle->Pt());
2229 break;
2230 case 3212: // Sigma
2231 fHistoMCDecayGammaSigmaPt[fiCut]->Fill(particle->Pt());
2232 break;
8bdca7f1 2233 }
d404157c 2234 }
2235 }
2236 if(((AliConversionPhotonCuts*)fCutArray->At(fiCut))->PhotonIsSelectedAODMC(particle,AODMCTrackArray,kTRUE)){
2237 Double_t rConv = 0;
2238 for(Int_t daughterIndex=particle->GetDaughter(0);daughterIndex<=particle->GetDaughter(1);daughterIndex++){
2239 AliAODMCParticle *tmpDaughter = static_cast<AliAODMCParticle*>(AODMCTrackArray->At(daughterIndex));
2240 if(!tmpDaughter) continue;
2241 if(abs(tmpDaughter->GetPdgCode()) == 11){
2242 rConv = sqrt( (tmpDaughter->Xv()*tmpDaughter->Xv()) + (tmpDaughter->Yv()*tmpDaughter->Yv()) );
8bdca7f1 2243 }
2244 }
d404157c 2245 fHistoMCConvGammaPt[fiCut]->Fill(particle->Pt());
2246 if (fDoPhotonQA > 0){
2247 fHistoMCConvGammaR[fiCut]->Fill(rConv);
2248 fHistoMCConvGammaEta[fiCut]->Fill(particle->Eta());
2249 }
2250 }
2251 // Converted MC Gamma
2252 if(fDoMesonAnalysis){
8bdca7f1 2253 if(particle->GetPdgCode() == 310 && fDoMesonQA > 0){
2254 Double_t mesonY = 10.;
2255 if(particle->E() - particle->Pz() == 0 || particle->E() + particle->Pz() == 0){
344100c4 2256 mesonY=10.-((AliConvEventCuts*)fEventCutArray->At(fiCut))->GetEtaShift();
8bdca7f1 2257 } else {
344100c4 2258 mesonY = 0.5*(TMath::Log((particle->E()+particle->Pz()) / (particle->E()-particle->Pz())))-((AliConvEventCuts*)fEventCutArray->At(fiCut))->GetEtaShift();
8bdca7f1 2259 }
2260 Float_t weightedK0s= 1;
344100c4 2261 if(((AliConvEventCuts*)fEventCutArray->At(fiCut))->IsParticleFromBGEvent(i, fMCStack, fInputEvent)){
8bdca7f1 2262 if (particle->Pt()>0.005){
344100c4 2263 weightedK0s= ((AliConvEventCuts*)fEventCutArray->At(fiCut))->GetWeightForMeson(fV0Reader->GetPeriodName(),i, 0x0, fInputEvent);
8bdca7f1 2264 //cout << "MC input \t"<<i << "\t" << particle->Pt()<<"\t"<<weighted << endl;
2265 }
2266 }
2267 fHistoMCK0sPt[fiCut]->Fill(particle->Pt(),weightedK0s);
2268 fHistoMCK0sWOWeightPt[fiCut]->Fill(particle->Pt());
2269 fHistoMCK0sPtY[fiCut]->Fill(particle->Pt(),mesonY,weightedK0s);
2270 }
2271 if(((AliConversionMesonCuts*)fMesonCutArray->At(fiCut))
344100c4 2272 ->MesonIsSelectedAODMC(particle,AODMCTrackArray,((AliConvEventCuts*)fEventCutArray->At(fiCut))->GetEtaShift())){
8bdca7f1 2273 AliAODMCParticle* daughter0 = static_cast<AliAODMCParticle*>(AODMCTrackArray->At(particle->GetDaughter(0)));
2274 AliAODMCParticle* daughter1 = static_cast<AliAODMCParticle*>(AODMCTrackArray->At(particle->GetDaughter(1)));
2275 Float_t weighted= 1;
344100c4 2276 if(((AliConvEventCuts*)fEventCutArray->At(fiCut))->IsParticleFromBGEvent(i, fMCStack, fInputEvent)){
8bdca7f1 2277 if (particle->Pt()>0.005){
344100c4 2278 weighted= ((AliConvEventCuts*)fEventCutArray->At(fiCut))->GetWeightForMeson(fV0Reader->GetPeriodName(),i, 0x0, fInputEvent);
8bdca7f1 2279 // if(particle->GetPdgCode() == 221){
2280 // cout << "MC input \t"<<i << "\t" << particle->Pt()<<"\t"<<weighted << endl;
2281 // }
2282 }
2283 }
2284 Double_t mesonY = 10.;
2285 if(particle->E() - particle->Pz() == 0 || particle->E() + particle->Pz() == 0){
344100c4 2286 mesonY=10.-((AliConvEventCuts*)fEventCutArray->At(fiCut))->GetEtaShift();
8bdca7f1 2287 } else{
344100c4 2288 mesonY = 0.5*(TMath::Log((particle->E()+particle->Pz()) / (particle->E()-particle->Pz())))-((AliConvEventCuts*)fEventCutArray->At(fiCut))->GetEtaShift();
8bdca7f1 2289 }
2290
de752898 2291 Double_t alpha = -1;
2292 if (particle->GetPdgCode() == 111 || particle->GetPdgCode() == 221){
2293 alpha = TMath::Abs((daughter0->E() - daughter1->E()))/(daughter0->E() + daughter1->E());
2294 }
2295
2296
8bdca7f1 2297 if(particle->GetPdgCode() == 111){
2298 fHistoMCPi0Pt[fiCut]->Fill(particle->Pt(),weighted); // All MC Pi0
2299 fHistoMCPi0WOWeightPt[fiCut]->Fill(particle->Pt());
de752898 2300 if (fDoMesonQA > 0){
2301 fHistoMCPi0PtY[fiCut]->Fill(particle->Pt(),mesonY,weighted); // All MC Pi0
2302 fHistoMCPi0PtAlpha[fiCut]->Fill(particle->Pt(),alpha); // All MC Pi0
2303 }
8bdca7f1 2304 } else if(particle->GetPdgCode() == 221){
2305 fHistoMCEtaPt[fiCut]->Fill(particle->Pt(),weighted); // All MC Eta
2306 fHistoMCEtaWOWeightPt[fiCut]->Fill(particle->Pt());
de752898 2307 if (fDoMesonQA > 0){
2308 fHistoMCEtaPtY[fiCut]->Fill(particle->Pt(),mesonY,weighted); // All MC Pi0
2309 fHistoMCEtaPtAlpha[fiCut]->Fill(particle->Pt(),alpha); // All MC Pi0
2310 }
8bdca7f1 2311 }
2312
2313 // Check the acceptance for both gammas
344100c4 2314 if(((AliConversionPhotonCuts*)fCutArray->At(fiCut))->PhotonIsSelectedAODMC(daughter0,AODMCTrackArray,kFALSE) &&
2315 ((AliConversionPhotonCuts*)fCutArray->At(fiCut))->PhotonIsSelectedAODMC(daughter1,AODMCTrackArray,kFALSE) &&
2316 ((AliConversionPhotonCuts*)fCutArray->At(fiCut))->InPlaneOutOfPlaneCut(daughter0->Phi(),fEventPlaneAngle,kFALSE) &&
2317 ((AliConversionPhotonCuts*)fCutArray->At(fiCut))->InPlaneOutOfPlaneCut(daughter1->Phi(),fEventPlaneAngle,kFALSE)){
8bdca7f1 2318
2319 if(particle->GetPdgCode() == 111){
2320 fHistoMCPi0InAccPt[fiCut]->Fill(particle->Pt(),weighted); // MC Pi0 with gamma in acc
2321 } else if(particle->GetPdgCode() == 221){
2322 fHistoMCEtaInAccPt[fiCut]->Fill(particle->Pt(),weighted); // MC Eta with gamma in acc
2323 }
2324 }
2325 }
2326 }
2327 }
2328
2329}
2330//________________________________________________________________________
2331void AliAnalysisTaskGammaConvCalo::ProcessMCParticles()
2332{
2333 // Loop over all primary MC particle
2334 for(Int_t i = 0; i < fMCStack->GetNprimary(); i++) {
2335 TParticle* particle = (TParticle *)fMCStack->Particle(i);
2336 if (!particle) continue;
2337
2338 Int_t isMCFromMBHeader = -1;
344100c4 2339 if(((AliConvEventCuts*)fEventCutArray->At(fiCut))->GetSignalRejection() != 0){
2340 isMCFromMBHeader = ((AliConvEventCuts*)fEventCutArray->At(fiCut))->IsParticleFromBGEvent(i, fMCStack, fInputEvent);
2341 if(isMCFromMBHeader == 0 && ((AliConvEventCuts*)fEventCutArray->At(fiCut))->GetSignalRejection() != 3) continue;
8bdca7f1 2342 }
2343
344100c4 2344 if(!((AliConversionPhotonCuts*)fCutArray->At(fiCut))->InPlaneOutOfPlaneCut(particle->Phi(),fEventPlaneAngle,kFALSE)) continue;
2345 if(((AliConversionPhotonCuts*)fCutArray->At(fiCut))->PhotonIsSelectedMC(particle,fMCStack,kFALSE)){
8bdca7f1 2346 fHistoMCAllGammaPt[fiCut]->Fill(particle->Pt()); // All MC Gamma
20af4b69 2347 if (abs(particle->Eta()) < 0.66 ){
2348 if (particle->Phi() > 1.39626 && particle->Phi() < 3.125) fHistoMCAllGammaEMCALAccPt[fiCut]->Fill(particle->Pt());
2349 }
2350
8bdca7f1 2351 if(particle->GetMother(0) >-1){ // Meson Decay Gamma
2352 switch(fMCStack->Particle(particle->GetMother(0))->GetPdgCode()){
2353 case 111: // Pi0
2354 fHistoMCDecayGammaPi0Pt[fiCut]->Fill(particle->Pt());
2355 break;
2356 case 113: // Rho0
2357 fHistoMCDecayGammaRhoPt[fiCut]->Fill(particle->Pt());
2358 break;
2359 case 221: // Eta
2360 fHistoMCDecayGammaEtaPt[fiCut]->Fill(particle->Pt());
2361 break;
2362 case 223: // Omega
2363 fHistoMCDecayGammaOmegaPt[fiCut]->Fill(particle->Pt());
2364 break;
2365 case 331: // Eta'
2366 fHistoMCDecayGammaEtapPt[fiCut]->Fill(particle->Pt());
2367 break;
2368 case 333: // Phi
2369 fHistoMCDecayGammaPhiPt[fiCut]->Fill(particle->Pt());
2370 break;
2371 case 3212: // Sigma
2372 fHistoMCDecayGammaSigmaPt[fiCut]->Fill(particle->Pt());
2373 break;
2374 }
2375 }
2376 }
344100c4 2377 if(((AliConversionPhotonCuts*)fCutArray->At(fiCut))->PhotonIsSelectedMC(particle,fMCStack,kTRUE)){
8bdca7f1 2378 fHistoMCConvGammaPt[fiCut]->Fill(particle->Pt());
2379 if (fDoPhotonQA > 0){
2380 fHistoMCConvGammaR[fiCut]->Fill(((TParticle*)fMCStack->Particle(particle->GetFirstDaughter()))->R());
2381 fHistoMCConvGammaEta[fiCut]->Fill(particle->Eta());
2382 }
2383 } // Converted MC Gamma
2384 if(fDoMesonAnalysis){
2385 if(particle->GetPdgCode() == 310 && fDoMesonQA > 0){
2386 Double_t mesonY = 10.;
2387 if(particle->Energy() - particle->Pz() == 0 || particle->Energy() + particle->Pz() == 0){
344100c4 2388 mesonY=10.-((AliConvEventCuts*)fEventCutArray->At(fiCut))->GetEtaShift();
8bdca7f1 2389 } else{
344100c4 2390 mesonY = 0.5*(TMath::Log((particle->Energy()+particle->Pz()) / (particle->Energy()-particle->Pz())))-((AliConvEventCuts*)fEventCutArray->At(fiCut))->GetEtaShift();
8bdca7f1 2391 }
2392 Float_t weightedK0s= 1;
344100c4 2393 if(((AliConvEventCuts*)fEventCutArray->At(fiCut))->IsParticleFromBGEvent(i, fMCStack, fInputEvent)){
8bdca7f1 2394 if (particle->Pt()>0.005){
344100c4 2395 weightedK0s= ((AliConvEventCuts*)fEventCutArray->At(fiCut))->GetWeightForMeson(fV0Reader->GetPeriodName(),i, fMCStack, fInputEvent);
8bdca7f1 2396 //cout << "MC input \t"<<i << "\t" << particle->Pt()<<"\t"<<weighted << endl;
2397 }
2398 }
2399 if (fMCStack->IsPhysicalPrimary(i)){
2400 fHistoMCK0sPt[fiCut]->Fill(particle->Pt(),weightedK0s);
2401 fHistoMCK0sWOWeightPt[fiCut]->Fill(particle->Pt());
2402 fHistoMCK0sPtY[fiCut]->Fill(particle->Pt(),mesonY,weightedK0s);
2403 }
2404 }
2405 if(((AliConversionMesonCuts*)fMesonCutArray->At(fiCut))
344100c4 2406 ->MesonIsSelectedMC(particle,fMCStack,((AliConvEventCuts*)fEventCutArray->At(fiCut))->GetEtaShift())){
8bdca7f1 2407 TParticle* daughter0 = (TParticle*)fMCStack->Particle(particle->GetFirstDaughter());
2408 TParticle* daughter1 = (TParticle*)fMCStack->Particle(particle->GetLastDaughter());
2409
2410 Float_t weighted= 1;
344100c4 2411 if(((AliConvEventCuts*)fEventCutArray->At(fiCut))->IsParticleFromBGEvent(i, fMCStack, fInputEvent)){
8bdca7f1 2412 if (particle->Pt()>0.005){
344100c4 2413 weighted= ((AliConvEventCuts*)fEventCutArray->At(fiCut))->GetWeightForMeson(fV0Reader->GetPeriodName(),i, fMCStack, fInputEvent);
8bdca7f1 2414 // if(particle->GetPdgCode() == 221){
2415 // cout << "MC input \t"<<i << "\t" << particle->Pt()<<"\t"<<weighted << endl;
2416 // }
2417 }
2418 }
2419 Double_t mesonY = 10.;
2420 if(particle->Energy() - particle->Pz() == 0 || particle->Energy() + particle->Pz() == 0){
344100c4 2421 mesonY=10.-((AliConvEventCuts*)fEventCutArray->At(fiCut))->GetEtaShift();
8bdca7f1 2422 } else{
344100c4 2423 mesonY = 0.5*(TMath::Log((particle->Energy()+particle->Pz()) / (particle->Energy()-particle->Pz())))-((AliConvEventCuts*)fEventCutArray->At(fiCut))->GetEtaShift();
8bdca7f1 2424 }
de752898 2425
2426 Double_t alpha = -1;
2427 if (particle->GetPdgCode() == 111 || particle->GetPdgCode() == 221){
2428 alpha = TMath::Abs((daughter0->Energy() - daughter1->Energy()))/(daughter0->Energy() + daughter1->Energy());
2429 }
2430
8bdca7f1 2431 if(particle->GetPdgCode() == 111){
2432 fHistoMCPi0Pt[fiCut]->Fill(particle->Pt(),weighted); // All MC Pi0
2433 fHistoMCPi0WOWeightPt[fiCut]->Fill(particle->Pt());
de752898 2434 if (fDoMesonQA > 0){
2435 fHistoMCPi0PtY[fiCut]->Fill(particle->Pt(),mesonY,weighted); // All MC Pi0
2436 fHistoMCPi0PtAlpha[fiCut]->Fill(particle->Pt(),alpha); // All MC Pi0
2437 }
8bdca7f1 2438 } else if(particle->GetPdgCode() == 221){
2439 fHistoMCEtaPt[fiCut]->Fill(particle->Pt(),weighted); // All MC Eta
2440 fHistoMCEtaWOWeightPt[fiCut]->Fill(particle->Pt());
de752898 2441 if (fDoMesonQA > 0){
2442 fHistoMCEtaPtY[fiCut]->Fill(particle->Pt(),mesonY,weighted); // All MC Pi0
2443 fHistoMCEtaPtAlpha[fiCut]->Fill(particle->Pt(),alpha); // All MC Pi0
2444 }
8bdca7f1 2445 }
2446
2447 // Check the acceptance for both gammas
344100c4 2448 if(((AliConversionPhotonCuts*)fCutArray->At(fiCut))->PhotonIsSelectedMC(daughter0,fMCStack,kFALSE) &&
2449 ((AliConversionPhotonCuts*)fCutArray->At(fiCut))->PhotonIsSelectedMC(daughter1,fMCStack,kFALSE) &&
2450 ((AliConversionPhotonCuts*)fCutArray->At(fiCut))->InPlaneOutOfPlaneCut(daughter0->Phi(),fEventPlaneAngle,kFALSE) &&
2451 ((AliConversionPhotonCuts*)fCutArray->At(fiCut))->InPlaneOutOfPlaneCut(daughter1->Phi(),fEventPlaneAngle,kFALSE)){
8bdca7f1 2452
2453 if(particle->GetPdgCode() == 111){
2454 fHistoMCPi0InAccPt[fiCut]->Fill(particle->Pt(),weighted); // MC Pi0 with gamma in acc
2455 } else if(particle->GetPdgCode() == 221){
2456 fHistoMCEtaInAccPt[fiCut]->Fill(particle->Pt(),weighted); // MC Eta with gamma in acc
2457 }
2458 }
2459 }
2460 }
2461 }
2462
2463 if (fDoMesonQA){
2464 for(Int_t i = fMCStack->GetNprimary(); i < fMCStack->GetNtrack(); i++) {
2465 TParticle* particle = (TParticle *)fMCStack->Particle(i);
2466 if (!particle) continue;
2467
2468 Int_t isMCFromMBHeader = -1;
344100c4 2469 if(((AliConvEventCuts*)fEventCutArray->At(fiCut))->GetSignalRejection() != 0){
2470 isMCFromMBHeader = ((AliConvEventCuts*)fEventCutArray->At(fiCut))->IsParticleFromBGEvent(i, fMCStack, fInputEvent);
2471 if(isMCFromMBHeader == 0 && ((AliConvEventCuts*)fEventCutArray->At(fiCut))->GetSignalRejection() != 3) continue;
8bdca7f1 2472 }
2473
2474 if(fDoMesonAnalysis){
344100c4 2475 if(((AliConversionMesonCuts*)fMesonCutArray->At(fiCut))->MesonIsSelectedMC(particle,fMCStack,((AliConvEventCuts*)fEventCutArray->At(fiCut))->GetEtaShift())){
8bdca7f1 2476 Float_t weighted= 1;
344100c4 2477 if(((AliConvEventCuts*)fEventCutArray->At(fiCut))->IsParticleFromBGEvent(i, fMCStack, fInputEvent)){
8bdca7f1 2478 if (particle->Pt()>0.005){
344100c4 2479 weighted= ((AliConvEventCuts*)fEventCutArray->At(fiCut))->GetWeightForMeson(fV0Reader->GetPeriodName(),i, fMCStack, fInputEvent);
8bdca7f1 2480 // if(particle->GetPdgCode() == 221){
2481 // cout << "MC input \t"<<i << "\t" << particle->Pt()<<"\t"<<weighted << endl;
2482 // }
2483 }
2484 }
2485
2486 if(particle->GetPdgCode() == 111){
2487 Int_t pdgCode = ((TParticle*)fMCStack->Particle( particle->GetFirstMother() ))->GetPdgCode();
2488 Int_t source = GetSourceClassification(111,pdgCode);
2489 fHistoMCSecPi0PtvsSource[fiCut]->Fill(particle->Pt(),source,weighted); // All MC Pi0
2490 fHistoMCSecPi0Source[fiCut]->Fill(pdgCode);
2491 } else if(particle->GetPdgCode() == 221){
2492 Int_t pdgCode = ((TParticle*)fMCStack->Particle( particle->GetFirstMother() ))->GetPdgCode();
2493 fHistoMCSecEtaPt[fiCut]->Fill(particle->Pt(),weighted); // All MC Pi0
2494 fHistoMCSecEtaSource[fiCut]->Fill(pdgCode);
2495 }
2496 }
2497 }
2498 }
2499 }
2500}
2501
8bdca7f1 2502//________________________________________________________________________
2503void AliAnalysisTaskGammaConvCalo::CalculatePi0Candidates(){
2504
2505 // Conversion Gammas
2506 if(fGammaCandidates->GetEntries()>0){
2507
2508 // vertex
2509 Double_t vertex[3] = {0};
2510 InputEvent()->GetPrimaryVertex()->GetXYZ(vertex);
2511
2512 for(Int_t firstGammaIndex=0;firstGammaIndex<fGammaCandidates->GetEntries();firstGammaIndex++){
2513 AliAODConversionPhoton *gamma0=dynamic_cast<AliAODConversionPhoton*>(fGammaCandidates->At(firstGammaIndex));
2514 if (gamma0==NULL) continue;
2515
2516 for(Int_t secondGammaIndex=0;secondGammaIndex<fClusterCandidates->GetEntries();secondGammaIndex++){
d53bf4ac 2517 Bool_t matched = kFALSE;
8bdca7f1 2518 AliAODConversionPhoton *gamma1=dynamic_cast<AliAODConversionPhoton*>(fClusterCandidates->At(secondGammaIndex));
2519 if (gamma1==NULL) continue;
2520
d53bf4ac 2521 if (gamma1->GetIsCaloPhoton()){
2522 AliVCluster* cluster = fInputEvent->GetCaloCluster(gamma1->GetCaloClusterRef());
2523 matched = ((AliCaloPhotonCuts*)fClusterCutArray->At(fiCut))->MatchConvPhotonToCluster(gamma0,cluster, fInputEvent );
2524 }
2525
8bdca7f1 2526 AliAODConversionMother *pi0cand = new AliAODConversionMother(gamma0,gamma1);
2527 pi0cand->SetLabels(firstGammaIndex,secondGammaIndex);
2528
d53bf4ac 2529
2530
344100c4 2531 if((((AliConversionMesonCuts*)fMesonCutArray->At(fiCut))->MesonIsSelected(pi0cand,kTRUE,((AliConvEventCuts*)fEventCutArray->At(fiCut))->GetEtaShift()))){
d53bf4ac 2532 if (matched){
2533 fHistoMotherMatchedInvMassPt[fiCut]->Fill(pi0cand->M(),pi0cand->Pt());
2534 } else {
2535 fHistoMotherInvMassPt[fiCut]->Fill(pi0cand->M(),pi0cand->Pt());
2536 }
8bdca7f1 2537 // fill new histograms
d53bf4ac 2538 if (!matched){
ea1bc51e 2539 fHistoPhotonPairPtconv[fiCut]->Fill(pi0cand->M(),gamma0->Pt());
d53bf4ac 2540 if(pi0cand->GetAlpha()<0.1)
2541 fHistoMotherInvMassEalpha[fiCut]->Fill(pi0cand->M(),pi0cand->E());
2542
2543 if (fDoMesonQA > 0){
2544 if ( pi0cand->M() > 0.05 && pi0cand->M() < 0.17){
2545 fHistoMotherPi0PtY[fiCut]->Fill(pi0cand->Pt(),pi0cand->Rapidity()-((AliConvEventCuts*)fEventCutArray->At(fiCut))->GetEtaShift());
2546 fHistoMotherPi0PtAlpha[fiCut]->Fill(pi0cand->Pt(),pi0cand->GetAlpha());
4e8dcc76 2547 fHistoMotherPi0PtOpenAngle[fiCut]->Fill(pi0cand->Pt(),pi0cand->GetOpeningAngle());
2548 fHistoMotherPi0ConvPhotonEtaPhi[fiCut]->Fill(gamma0->GetPhotonPhi(), gamma0->GetPhotonEta());
8bdca7f1 2549 }
d53bf4ac 2550 if ( pi0cand->M() > 0.45 && pi0cand->M() < 0.65){
2551 fHistoMotherEtaPtY[fiCut]->Fill(pi0cand->Pt(),pi0cand->Rapidity()-((AliConvEventCuts*)fEventCutArray->At(fiCut))->GetEtaShift());
2552 fHistoMotherEtaPtAlpha[fiCut]->Fill(pi0cand->Pt(),pi0cand->GetAlpha());
2553 fHistoMotherEtaPtOpenAngle[fiCut]->Fill(pi0cand->Pt(),pi0cand->GetOpeningAngle());
4e8dcc76 2554 fHistoMotherEtaConvPhotonEtaPhi[fiCut]->Fill(gamma0->GetPhotonPhi(), gamma0->GetPhotonEta());
d53bf4ac 2555 }
2556 }
2557 if(((AliConversionMesonCuts*)fMesonCutArray->At(fiCut))->DoBGCalculation()){
2558 Int_t zbin = 0;
2559 Int_t mbin = 0;
2560
2561 if(((AliConversionMesonCuts*)fMesonCutArray->At(fiCut))->BackgroundHandlerType() == 0){
2562 zbin = fBGHandler[fiCut]->GetZBinIndex(fInputEvent->GetPrimaryVertex()->GetZ());
2563 if(((AliConversionMesonCuts*)fMesonCutArray->At(fiCut))->UseTrackMultiplicity()){
2564 mbin = fBGHandler[fiCut]->GetMultiplicityBinIndex(fV0Reader->GetNumberOfPrimaryTracks());
2565 } else {
2566 mbin = fBGHandler[fiCut]->GetMultiplicityBinIndex(fGammaCandidates->GetEntries());
2567 }
2568 } else{
2569 zbin = fBGHandlerRP[fiCut]->GetZBinIndex(fInputEvent->GetPrimaryVertex()->GetZ());
2570 if(((AliConversionMesonCuts*)fMesonCutArray->At(fiCut))->UseTrackMultiplicity()){
2571 mbin = fBGHandlerRP[fiCut]->GetMultiplicityBinIndex(fV0Reader->GetNumberOfPrimaryTracks());
2572 } else {
2573 mbin = fBGHandlerRP[fiCut]->GetMultiplicityBinIndex(fGammaCandidates->GetEntries());
2574 }
8bdca7f1 2575 }
d53bf4ac 2576 Double_t sparesFill[4] = {pi0cand->M(),pi0cand->Pt(),(Double_t)zbin,(Double_t)mbin};
2577 fSparseMotherInvMassPtZM[fiCut]->Fill(sparesFill,1);
8bdca7f1 2578 }
8bdca7f1 2579 }
2580
8bdca7f1 2581 if(fIsMC){
2582 if(fInputEvent->IsA()==AliESDEvent::Class())
d53bf4ac 2583 ProcessTrueMesonCandidates(pi0cand,gamma0,gamma1, matched);
8bdca7f1 2584 if(fInputEvent->IsA()==AliAODEvent::Class())
d53bf4ac 2585 ProcessTrueMesonCandidatesAOD(pi0cand,gamma0,gamma1, matched);
8bdca7f1 2586 }
d53bf4ac 2587 if (!matched){
d53bf4ac 2588 if (fDoMesonQA == 1){
2589 fHistoMotherInvMassECalib[fiCut]->Fill(pi0cand->M(),gamma1->E());
2590 if(pi0cand->GetAlpha()<0.1)
2591 fHistoMotherInvMassECalibalpha[fiCut]->Fill(pi0cand->M(),gamma1->E());
8bdca7f1 2592 }
2593 }
2594 }
2595 delete pi0cand;
2596 pi0cand=0x0;
2597 }
2598 }
2599 }
2600}
2601//______________________________________________________________________
d53bf4ac 2602void AliAnalysisTaskGammaConvCalo::ProcessTrueMesonCandidates(AliAODConversionMother *Pi0Candidate, AliAODConversionPhoton *TrueGammaCandidate0, AliAODConversionPhoton *TrueGammaCandidate1, Bool_t matched)
8bdca7f1 2603{
2604 // Process True Mesons
8bdca7f1 2605 if(TrueGammaCandidate0->GetV0Index()<fInputEvent->GetNumberOfV0s()){
2606 Bool_t isTruePi0 = kFALSE;
2607 Bool_t isTrueEta = kFALSE;
e764f3ba 2608 Int_t gamma0MCLabel = -1;
8bdca7f1 2609 Int_t gamma0MotherLabel = -1;
e764f3ba 2610 if (TrueGammaCandidate0->IsTrueConvertedPhoton()){
2611 gamma0MCLabel = TrueGammaCandidate0->GetMCParticleLabel(fMCStack);
2612 TParticle * gammaMC0 = (TParticle*)fMCStack->Particle(gamma0MCLabel);
2613 gamma0MotherLabel=gammaMC0->GetFirstMother();
2614
fd94f234 2615 }
2616 if (!TrueGammaCandidate1->GetIsCaloPhoton()) AliFatal("CaloPhotonFlag has not been set. Aborting");
2617
2618 Int_t gamma1MCLabel = TrueGammaCandidate1->GetCaloPhotonMCLabel(0); // get most probable MC label
2619 Int_t gamma1MotherLabel = -1;
2620 // check if
2621
2622 if(gamma1MCLabel != -1){ // Gamma is Combinatorial; MC Particles don't belong to the same Mother
2623 // Daughters Gamma 1
e764f3ba 2624 TParticle * gammaMC1 = (TParticle*)fMCStack->Particle(gamma1MCLabel);
fd94f234 2625 if (TrueGammaCandidate1->IsLargestComponentPhoton() || TrueGammaCandidate1->IsLargestComponentElectron()){ // largest component is electro magnetic
2626 // get mother of interest (pi0 or eta)
2627 if (TrueGammaCandidate1->IsLargestComponentPhoton()){ // for photons its the direct mother
2628 gamma1MotherLabel=gammaMC1->GetMother(0);
2629 } else if (TrueGammaCandidate1->IsLargestComponentElectron()){ // for electrons its either the direct mother or for conversions the grandmother
e764f3ba 2630 if (TrueGammaCandidate1->IsConversion()) gamma1MotherLabel=fMCStack->Particle(gammaMC1->GetMother(0))->GetMother(0);
fd94f234 2631 else gamma1MotherLabel=gammaMC1->GetMother(0);
2632 }
2633 } else {
2634 if (fDoMesonQA > 0) fHistoTrueMotherCaloEMNonLeadingInvMassPt[fiCut]->Fill(Pi0Candidate->M(),Pi0Candidate->Pt());
2635 }
2636 }
2637
2638 if(gamma0MotherLabel>=0 && gamma0MotherLabel==gamma1MotherLabel){
e764f3ba 2639 if(((TParticle*)fMCStack->Particle(gamma1MotherLabel))->GetPdgCode() == 111){
fd94f234 2640 isTruePi0=kTRUE;
8bdca7f1 2641 }
e764f3ba 2642 if(((TParticle*)fMCStack->Particle(gamma1MotherLabel))->GetPdgCode() == 221){
fd94f234 2643 isTrueEta=kTRUE;
8bdca7f1 2644 }
2645 }
fd94f234 2646
2647 if(isTruePi0 || isTrueEta){// True Pion or Eta
ed8bc1ca 2648 if (!matched){
2649 if (isTruePi0)fHistoTruePi0InvMassPt[fiCut]->Fill(Pi0Candidate->M(),Pi0Candidate->Pt());
2650 if (isTrueEta)fHistoTrueEtaInvMassPt[fiCut]->Fill(Pi0Candidate->M(),Pi0Candidate->Pt());
2651 }
fd94f234 2652 if (fDoMesonQA > 0){
ed8bc1ca 2653 if (TrueGammaCandidate1->IsLargestComponentPhoton() && !matched){
2654 if(isTruePi0) fHistoTruePi0CaloPhotonInvMassPt[fiCut]->Fill(Pi0Candidate->M(),Pi0Candidate->Pt());
2655 if(isTrueEta) fHistoTrueEtaCaloPhotonInvMassPt[fiCut]->Fill(Pi0Candidate->M(),Pi0Candidate->Pt());
2656 }
2657 if (TrueGammaCandidate1->IsLargestComponentElectron() && !matched){
2658 if(isTruePi0) fHistoTruePi0CaloElectronInvMassPt[fiCut]->Fill(Pi0Candidate->M(),Pi0Candidate->Pt());
2659 if(isTrueEta) fHistoTrueEtaCaloElectronInvMassPt[fiCut]->Fill(Pi0Candidate->M(),Pi0Candidate->Pt());
2660 }
d53bf4ac 2661 if (TrueGammaCandidate1->IsLargestComponentElectron() && TrueGammaCandidate1->IsConversion() ){
d53bf4ac 2662 if (isTruePi0 && !matched)fHistoTruePi0CaloConvertedPhotonInvMassPt[fiCut]->Fill(Pi0Candidate->M(),Pi0Candidate->Pt());
2663 if (isTrueEta && !matched)fHistoTrueEtaCaloConvertedPhotonInvMassPt[fiCut]->Fill(Pi0Candidate->M(),Pi0Candidate->Pt());
2664 if ((TrueGammaCandidate0->GetMCLabelPositive() == gamma1MCLabel || TrueGammaCandidate0->GetMCLabelNegative() == gamma1MCLabel) && isTruePi0){
20af4b69 2665 fHistoTruePi0CaloConvertedPhotonMatchedInvMassPt[fiCut]->Fill(Pi0Candidate->M(),Pi0Candidate->Pt());
d53bf4ac 2666 }
2667 if ((TrueGammaCandidate0->GetMCLabelPositive() == gamma1MCLabel || TrueGammaCandidate0->GetMCLabelNegative() == gamma1MCLabel) && isTrueEta){
20af4b69 2668 fHistoTrueEtaCaloConvertedPhotonMatchedInvMassPt[fiCut]->Fill(Pi0Candidate->M(),Pi0Candidate->Pt());
d53bf4ac 2669 }
20af4b69 2670 }
ed8bc1ca 2671 if ((TrueGammaCandidate1->IsMerged() || TrueGammaCandidate1->IsMergedPartConv() || TrueGammaCandidate1->IsDalitzMerged()) && !matched ){
2672 if (isTruePi0 )fHistoTruePi0CaloMergedClusterInvMassPt[fiCut]->Fill(Pi0Candidate->M(),Pi0Candidate->Pt());
2673 if (isTrueEta )fHistoTrueEtaCaloMergedClusterInvMassPt[fiCut]->Fill(Pi0Candidate->M(),Pi0Candidate->Pt());
2674 }
2675 if (TrueGammaCandidate1->IsMergedPartConv() && !matched){
2676 if (isTruePi0) fHistoTruePi0CaloMergedClusterPartConvInvMassPt[fiCut]->Fill(Pi0Candidate->M(),Pi0Candidate->Pt());
2677 if (isTrueEta) fHistoTrueEtaCaloMergedClusterPartConvInvMassPt[fiCut]->Fill(Pi0Candidate->M(),Pi0Candidate->Pt());
2678 }
fd94f234 2679 }
d53bf4ac 2680 if (!matched){
2681 if (fDoMesonQA > 0){
2682 if (isTruePi0){
2683 if ( Pi0Candidate->M() > 0.05 && Pi0Candidate->M() < 0.17){
2684 fHistoTruePi0PtY[fiCut]->Fill(Pi0Candidate->Pt(),Pi0Candidate->Rapidity()-((AliConvEventCuts*)fEventCutArray->At(fiCut))->GetEtaShift());
2685 fHistoTruePi0PtAlpha[fiCut]->Fill(Pi0Candidate->Pt(),Pi0Candidate->GetAlpha());
2686 fHistoTruePi0PtOpenAngle[fiCut]->Fill(Pi0Candidate->Pt(),Pi0Candidate->GetOpeningAngle());
ee4b3d66 2687 fHistoTrueMotherPi0ConvPhotonEtaPhi[fiCut]->Fill(TrueGammaCandidate0->GetPhotonPhi(), TrueGammaCandidate0->GetPhotonEta());
d53bf4ac 2688 }
2689 } else if (isTrueEta){
2690 if ( Pi0Candidate->M() > 0.45 && Pi0Candidate->M() < 0.65){
2691 fHistoTrueEtaPtY[fiCut]->Fill(Pi0Candidate->Pt(),Pi0Candidate->Rapidity()-((AliConvEventCuts*)fEventCutArray->At(fiCut))->GetEtaShift());
2692 fHistoTrueEtaPtAlpha[fiCut]->Fill(Pi0Candidate->Pt(),Pi0Candidate->GetAlpha());
2693 fHistoTrueEtaPtOpenAngle[fiCut]->Fill(Pi0Candidate->Pt(),Pi0Candidate->GetOpeningAngle());
ee4b3d66 2694 fHistoTrueMotherEtaConvPhotonEtaPhi[fiCut]->Fill(TrueGammaCandidate0->GetPhotonPhi(), TrueGammaCandidate0->GetPhotonEta());
d53bf4ac 2695 }
8bdca7f1 2696 }
2697 }
d53bf4ac 2698
e764f3ba 2699 if(gamma0MotherLabel >= fMCStack->GetNprimary()){ // Secondary Meson
2700 Int_t secMotherLabel = ((TParticle*)fMCStack->Particle(gamma0MotherLabel))->GetMother(0);
d53bf4ac 2701 Float_t weightedSec= 1;
e764f3ba 2702 if(((AliConvEventCuts*)fEventCutArray->At(fiCut))->IsParticleFromBGEvent(secMotherLabel, fMCStack, fInputEvent) && fMCStack->Particle(secMotherLabel)->GetPdgCode()==310){
d53bf4ac 2703 weightedSec= ((AliConvEventCuts*)fEventCutArray->At(fiCut))->GetWeightForMeson(fV0Reader->GetPeriodName(),secMotherLabel, fMCStack, fInputEvent)/2.; //invariant mass is additive thus the weight for the daughters has to be devide by two for the K0s at a certain pt
2704 //cout << "MC input \t"<<i << "\t" << particle->Pt()<<"\t"<<weighted << endl;
8bdca7f1 2705 }
ea1bc51e 2706 if (isTruePi0){
2707 fHistoTrueSecondaryPi0InvMassPt[fiCut]->Fill(Pi0Candidate->M(),Pi0Candidate->Pt(),weightedSec);
2708 fHistoTrueSecondaryPi0PhotonPairPtconv[fiCut]->Fill(Pi0Candidate->M(),TrueGammaCandidate0->Pt(),weightedSec);
e764f3ba 2709 if(CheckIfContainedInString(fStringRecTruePi0s[fiCut],gamma0MotherLabel)){
2710 fHistoTrueSecondaryPi0DCPtconv[fiCut]->Fill(TrueGammaCandidate0->Pt(),weightedSec);
2711 }
ea1bc51e 2712 }
d53bf4ac 2713 if (secMotherLabel >-1){
e764f3ba 2714 if(fMCStack->Particle(secMotherLabel)->GetPdgCode()==310 && isTruePi0 ){
ed8bc1ca 2715 fHistoTrueSecondaryPi0FromK0sInvMassPt[fiCut]->Fill(Pi0Candidate->M(),Pi0Candidate->Pt(),weightedSec);
e764f3ba 2716 if (fDoMesonQA > 0)fHistoTrueK0sWithPi0DaughterMCPt[fiCut]->Fill(fMCStack->Particle(secMotherLabel)->Pt());
d53bf4ac 2717 }
e764f3ba 2718 if(fMCStack->Particle(secMotherLabel)->GetPdgCode()==221 && isTruePi0){
ed8bc1ca 2719 fHistoTrueSecondaryPi0FromEtaInvMassPt[fiCut]->Fill(Pi0Candidate->M(),Pi0Candidate->Pt(),weightedSec);
e764f3ba 2720 if (fDoMesonQA > 0)fHistoTrueEtaWithPi0DaughterMCPt[fiCut]->Fill(fMCStack->Particle(secMotherLabel)->Pt());
d53bf4ac 2721 }
e764f3ba 2722 if(fMCStack->Particle(secMotherLabel)->GetPdgCode()==3122 && isTruePi0){
ed8bc1ca 2723 fHistoTrueSecondaryPi0FromLambdaInvMassPt[fiCut]->Fill(Pi0Candidate->M(),Pi0Candidate->Pt(),weightedSec);
e764f3ba 2724 if (fDoMesonQA > 0)fHistoTrueLambdaWithPi0DaughterMCPt[fiCut]->Fill(fMCStack->Particle(secMotherLabel)->Pt());
d53bf4ac 2725 }
8bdca7f1 2726 }
d53bf4ac 2727 } else { // Only primary pi0 for efficiency calculation
d53bf4ac 2728 Float_t weighted= 1;
2729 if(((AliConvEventCuts*)fEventCutArray->At(fiCut))->IsParticleFromBGEvent(gamma1MotherLabel, fMCStack, fInputEvent)){
e764f3ba 2730 if (((TParticle*)fMCStack->Particle(gamma1MotherLabel))->Pt()>0.005){
d53bf4ac 2731 weighted= ((AliConvEventCuts*)fEventCutArray->At(fiCut))->GetWeightForMeson(fV0Reader->GetPeriodName(),gamma1MotherLabel, fMCStack, fInputEvent);
2732 // cout << "rec \t " <<gamma1MotherLabel << "\t" << weighted << endl;
2733 }
fd94f234 2734 }
ed8bc1ca 2735 if (isTruePi0){
2736 fHistoTruePrimaryPi0InvMassPt[fiCut]->Fill(Pi0Candidate->M(),Pi0Candidate->Pt(),weighted);
ea1bc51e 2737 fHistoTruePrimaryPi0PhotonPairPtconv[fiCut]->Fill(Pi0Candidate->M(),TrueGammaCandidate0->Pt(),weighted);
ed8bc1ca 2738 fHistoTruePrimaryPi0W0WeightingInvMassPt[fiCut]->Fill(Pi0Candidate->M(),Pi0Candidate->Pt());
2739 fProfileTruePrimaryPi0WeightsInvMassPt[fiCut]->Fill(Pi0Candidate->M(),Pi0Candidate->Pt(),weighted);
e764f3ba 2740 if(CheckIfContainedInString(fStringRecTruePi0s[fiCut],gamma0MotherLabel)){
2741 fHistoTruePrimaryPi0DCPtconv[fiCut]->Fill(TrueGammaCandidate0->Pt(),weighted);
2742 }
2743
ed8bc1ca 2744 } else if (isTrueEta) {
2745 fHistoTruePrimaryEtaInvMassPt[fiCut]->Fill(Pi0Candidate->M(),Pi0Candidate->Pt(),weighted);
ea1bc51e 2746 fHistoTruePrimaryEtaPhotonPairPtconv[fiCut]->Fill(Pi0Candidate->M(),TrueGammaCandidate0->Pt(),weighted);
ed8bc1ca 2747 fHistoTruePrimaryEtaW0WeightingInvMassPt[fiCut]->Fill(Pi0Candidate->M(),Pi0Candidate->Pt());
2748 fProfileTruePrimaryEtaWeightsInvMassPt[fiCut]->Fill(Pi0Candidate->M(),Pi0Candidate->Pt(),weighted);
e764f3ba 2749 if(CheckIfContainedInString(fStringRecTrueEtas[fiCut],gamma0MotherLabel)){
2750 fHistoTruePrimaryEtaDCPtconv[fiCut]->Fill(TrueGammaCandidate0->Pt(),weighted);
2751 }
ed8bc1ca 2752 }
d53bf4ac 2753
2754 if (fDoMesonQA > 0){
2755 if(isTruePi0){ // Only primary pi0 for resolution
e764f3ba 2756 fHistoTruePrimaryPi0MCPtResolPt[fiCut]->Fill(((TParticle*)fMCStack->Particle(gamma1MotherLabel))->Pt(),(Pi0Candidate->Pt()-((TParticle*)fMCStack->Particle(gamma1MotherLabel))->Pt())/((TParticle*)fMCStack->Particle(gamma1MotherLabel))->Pt(),weighted);
d53bf4ac 2757 }
2758 if (isTrueEta){ // Only primary eta for resolution
e764f3ba 2759 fHistoTruePrimaryEtaMCPtResolPt[fiCut]->Fill(((TParticle*)fMCStack->Particle(gamma1MotherLabel))->Pt(),(Pi0Candidate->Pt()-((TParticle*)fMCStack->Particle(gamma1MotherLabel))->Pt())/((TParticle*)fMCStack->Particle(gamma1MotherLabel))->Pt(),weighted);
d53bf4ac 2760 }
8bdca7f1 2761 }
2762 }
d53bf4ac 2763 }
fd94f234 2764 } else if(!isTruePi0 && !isTrueEta){ // Background
2765 if (fDoMesonQA > 0){
2766 if(gamma0MotherLabel>-1 && gamma1MotherLabel>-1){ // Both Tracks are Photons and have a mother but not Pi0 or Eta
2767 fHistoTrueBckGGInvMassPt[fiCut]->Fill(Pi0Candidate->M(),Pi0Candidate->Pt());
fd94f234 2768 } else { // No photon or without mother
2769 fHistoTrueBckContInvMassPt[fiCut]->Fill(Pi0Candidate->M(),Pi0Candidate->Pt());
8bdca7f1 2770 }
2771 }
2772 }
e764f3ba 2773 if (isTrueEta && !matched){
2774 fStringRecTrueEtas[fiCut].Append(Form("%i,",gamma0MotherLabel));
2775 }
2776 if (isTruePi0 && !matched){
2777 fStringRecTruePi0s[fiCut].Append(Form("%i,",gamma0MotherLabel));
2778 }
2779
8bdca7f1 2780 }
2781}
2782//______________________________________________________________________
d53bf4ac 2783void AliAnalysisTaskGammaConvCalo::ProcessTrueMesonCandidatesAOD(AliAODConversionMother *Pi0Candidate, AliAODConversionPhoton *TrueGammaCandidate0, AliAODConversionPhoton *TrueGammaCandidate1, Bool_t matched)
8bdca7f1 2784{
2785
2786 // Process True Mesons
2787 TClonesArray *AODMCTrackArray = dynamic_cast<TClonesArray*>(fInputEvent->FindListObject(AliAODMCParticle::StdBranchName()));
2788 Bool_t isTruePi0 = kFALSE;
2789 Bool_t isTrueEta = kFALSE;
8bdca7f1 2790
2791 AliAODMCParticle *positiveMC = static_cast<AliAODMCParticle*>(AODMCTrackArray->At(TrueGammaCandidate0->GetMCLabelPositive()));
2792 AliAODMCParticle *negativeMC = static_cast<AliAODMCParticle*>(AODMCTrackArray->At(TrueGammaCandidate0->GetMCLabelNegative()));
2793
8bdca7f1 2794 Int_t gamma0MCLabel = -1;
2795 Int_t gamma0MotherLabel = -1;
2796 if(!positiveMC||!negativeMC)
2797 return;
2798
e764f3ba 2799 if (TrueGammaCandidate0->IsTrueConvertedPhoton()){
8bdca7f1 2800 gamma0MCLabel = positiveMC->GetMother();
8bdca7f1 2801 AliAODMCParticle * gammaMC0 = static_cast<AliAODMCParticle*>(AODMCTrackArray->At(gamma0MCLabel));
e764f3ba 2802 gamma0MotherLabel=gammaMC0->GetMother();
fd94f234 2803 }
2804
e764f3ba 2805 if (!TrueGammaCandidate1->GetIsCaloPhoton()) AliFatal("CaloPhotonFlag has not been set. Aborting");
fd94f234 2806 Int_t gamma1MCLabel = TrueGammaCandidate1->GetCaloPhotonMCLabel(0); // get most probable MC label
8bdca7f1 2807 Int_t gamma1MotherLabel = -1;
fd94f234 2808 // check if
2809
8bdca7f1 2810 if(gamma1MCLabel != -1){ // Gamma is Combinatorial; MC Particles don't belong to the same Mother
2811 // Daughters Gamma 1
2812 AliAODMCParticle * gammaMC1 = static_cast<AliAODMCParticle*>(AODMCTrackArray->At(gamma1MCLabel));
fd94f234 2813 if (TrueGammaCandidate1->IsLargestComponentPhoton() || TrueGammaCandidate1->IsLargestComponentElectron()){ // largest component is electro magnetic
2814 // get mother of interest (pi0 or eta)
2815 if (TrueGammaCandidate1->IsLargestComponentPhoton()){ // for photons its the direct mother
8bdca7f1 2816 gamma1MotherLabel=gammaMC1->GetMother();
fd94f234 2817 } else if (TrueGammaCandidate1->IsLargestComponentElectron()){ // for electrons its either the direct mother or for conversions the grandmother
2818 if (TrueGammaCandidate1->IsConversion()){
2819 AliAODMCParticle * gammaGrandMotherMC1 = static_cast<AliAODMCParticle*>(AODMCTrackArray->At(gammaMC1->GetMother()));
2820 gamma1MotherLabel=gammaGrandMotherMC1->GetMother();
2821 } else gamma1MotherLabel=gammaMC1->GetMother();
8bdca7f1 2822 }
fd94f234 2823 } else {
2824 if (fDoMesonQA > 0) fHistoTrueMotherCaloEMNonLeadingInvMassPt[fiCut]->Fill(Pi0Candidate->M(),Pi0Candidate->Pt());
2825 }
8bdca7f1 2826 }
fd94f234 2827
8bdca7f1 2828 if(gamma0MotherLabel>=0 && gamma0MotherLabel==gamma1MotherLabel){
fd94f234 2829 if(((AliAODMCParticle*)AODMCTrackArray->At(gamma1MotherLabel))->GetPdgCode() == 111){
8bdca7f1 2830 isTruePi0=kTRUE;
2831 }
fd94f234 2832 if(((AliAODMCParticle*)AODMCTrackArray->At(gamma1MotherLabel))->GetPdgCode() == 221){
8bdca7f1 2833 isTrueEta=kTRUE;
2834 }
2835 }
2836
8bdca7f1 2837 if(isTruePi0 || isTrueEta){// True Pion or Eta
ed8bc1ca 2838 if (!matched){
2839 if (isTruePi0)fHistoTruePi0InvMassPt[fiCut]->Fill(Pi0Candidate->M(),Pi0Candidate->Pt());
2840 if (isTrueEta)fHistoTrueEtaInvMassPt[fiCut]->Fill(Pi0Candidate->M(),Pi0Candidate->Pt());
2841 }
fd94f234 2842 if (fDoMesonQA > 0){
ed8bc1ca 2843 if (TrueGammaCandidate1->IsLargestComponentPhoton() && !matched){
2844 if (isTruePi0) fHistoTruePi0CaloPhotonInvMassPt[fiCut]->Fill(Pi0Candidate->M(),Pi0Candidate->Pt());
2845 if (isTrueEta) fHistoTrueEtaCaloPhotonInvMassPt[fiCut]->Fill(Pi0Candidate->M(),Pi0Candidate->Pt());
2846 }
2847 if (TrueGammaCandidate1->IsLargestComponentElectron() && !matched) {
2848 if (isTruePi0) fHistoTruePi0CaloElectronInvMassPt[fiCut]->Fill(Pi0Candidate->M(),Pi0Candidate->Pt());
2849 if (isTrueEta) fHistoTrueEtaCaloElectronInvMassPt[fiCut]->Fill(Pi0Candidate->M(),Pi0Candidate->Pt());
2850 }
20af4b69 2851 if (TrueGammaCandidate1->IsLargestComponentElectron() && TrueGammaCandidate1->IsConversion()){
d53bf4ac 2852 if (isTruePi0 && !matched)fHistoTruePi0CaloConvertedPhotonInvMassPt[fiCut]->Fill(Pi0Candidate->M(),Pi0Candidate->Pt());
2853 if (isTrueEta && !matched)fHistoTrueEtaCaloConvertedPhotonInvMassPt[fiCut]->Fill(Pi0Candidate->M(),Pi0Candidate->Pt());
20af4b69 2854 if ((TrueGammaCandidate0->GetMCLabelPositive() == gamma1MCLabel || TrueGammaCandidate0->GetMCLabelNegative() == gamma1MCLabel) && isTruePi0)
2855 fHistoTruePi0CaloConvertedPhotonMatchedInvMassPt[fiCut]->Fill(Pi0Candidate->M(),Pi0Candidate->Pt());
2856 if ((TrueGammaCandidate0->GetMCLabelPositive() == gamma1MCLabel || TrueGammaCandidate0->GetMCLabelNegative() == gamma1MCLabel) && isTrueEta)
2857 fHistoTrueEtaCaloConvertedPhotonMatchedInvMassPt[fiCut]->Fill(Pi0Candidate->M(),Pi0Candidate->Pt());
2858 }
ed8bc1ca 2859 if ((TrueGammaCandidate1->IsMerged() || TrueGammaCandidate1->IsMergedPartConv() || TrueGammaCandidate1->IsDalitzMerged()) && !matched ){
2860 if (isTruePi0) fHistoTruePi0CaloMergedClusterInvMassPt[fiCut]->Fill(Pi0Candidate->M(),Pi0Candidate->Pt());
2861 if (isTrueEta) fHistoTrueEtaCaloMergedClusterInvMassPt[fiCut]->Fill(Pi0Candidate->M(),Pi0Candidate->Pt());
2862 }
2863 if (TrueGammaCandidate1->IsMergedPartConv() && !matched) {
2864 if (isTruePi0) fHistoTruePi0CaloMergedClusterPartConvInvMassPt[fiCut]->Fill(Pi0Candidate->M(),Pi0Candidate->Pt());
2865 if (isTrueEta) fHistoTrueEtaCaloMergedClusterPartConvInvMassPt[fiCut]->Fill(Pi0Candidate->M(),Pi0Candidate->Pt());
2866 }
fd94f234 2867 }
2868
d53bf4ac 2869 if ( !matched){
2870 if (fDoMesonQA > 0){
2871 if (isTruePi0){
2872 if ( Pi0Candidate->M() > 0.05 && Pi0Candidate->M() < 0.17){
ee4b3d66 2873 fHistoTruePi0PtY[fiCut]->Fill(Pi0Candidate->Pt(),Pi0Candidate->Rapidity()-((AliConvEventCuts*)fEventCutArray->At(fiCut))->GetEtaShift());
2874 fHistoTruePi0PtAlpha[fiCut]->Fill(Pi0Candidate->Pt(),Pi0Candidate->GetAlpha());
2875 fHistoTruePi0PtOpenAngle[fiCut]->Fill(Pi0Candidate->Pt(),Pi0Candidate->GetOpeningAngle());
2876 fHistoTrueMotherPi0ConvPhotonEtaPhi[fiCut]->Fill(TrueGammaCandidate0->GetPhotonPhi(), TrueGammaCandidate0->GetPhotonEta());
d53bf4ac 2877 }
2878 } else if (isTrueEta){
2879 if ( Pi0Candidate->M() > 0.45 && Pi0Candidate->M() < 0.65){
ee4b3d66 2880 fHistoTrueEtaPtY[fiCut]->Fill(Pi0Candidate->Pt(),Pi0Candidate->Rapidity()-((AliConvEventCuts*)fEventCutArray->At(fiCut))->GetEtaShift());
2881 fHistoTrueEtaPtAlpha[fiCut]->Fill(Pi0Candidate->Pt(),Pi0Candidate->GetAlpha());
2882 fHistoTrueEtaPtOpenAngle[fiCut]->Fill(Pi0Candidate->Pt(),Pi0Candidate->GetOpeningAngle());
2883 fHistoTrueMotherEtaConvPhotonEtaPhi[fiCut]->Fill(TrueGammaCandidate0->GetPhotonPhi(), TrueGammaCandidate0->GetPhotonEta());
d53bf4ac 2884 }
8bdca7f1 2885 }
2886 }
d53bf4ac 2887 if(!(static_cast<AliAODMCParticle*>(AODMCTrackArray->At(gamma0MotherLabel))->IsPrimary())){ // Secondary Meson
2888 Int_t secMotherLabel = static_cast<AliAODMCParticle*>(AODMCTrackArray->At(gamma1MotherLabel))->GetMother();
2889 Float_t weightedSec= 1;
2890 if(((AliConvEventCuts*)fEventCutArray->At(fiCut))->IsParticleFromBGEvent(secMotherLabel, 0x0, fInputEvent) && static_cast<AliAODMCParticle*>(AODMCTrackArray->At(secMotherLabel))->GetPdgCode()==310){
2891 weightedSec= ((AliConvEventCuts*)fEventCutArray->At(fiCut))->GetWeightForMeson(fV0Reader->GetPeriodName(),secMotherLabel, 0x0, fInputEvent)/2.; //invariant mass is additive thus the weight for the daughters has to be devide by two for the K0s at a certain pt
2892 //cout << "MC input \t"<<i << "\t" << particle->Pt()<<"\t"<<weighted << endl;
8bdca7f1 2893 }
ea1bc51e 2894 if (isTruePi0){
2895 fHistoTrueSecondaryPi0InvMassPt[fiCut]->Fill(Pi0Candidate->M(),Pi0Candidate->Pt(),weightedSec);
2896 fHistoTrueSecondaryPi0PhotonPairPtconv[fiCut]->Fill(Pi0Candidate->M(),TrueGammaCandidate0->Pt(),weightedSec);
e764f3ba 2897 if(CheckIfContainedInString(fStringRecTruePi0s[fiCut],gamma0MotherLabel)){
2898 fHistoTrueSecondaryPi0DCPtconv[fiCut]->Fill(TrueGammaCandidate0->Pt(),weightedSec);
2899 }
ea1bc51e 2900 }
d53bf4ac 2901 if (secMotherLabel >-1){
ed8bc1ca 2902 if(static_cast<AliAODMCParticle*>(AODMCTrackArray->At(secMotherLabel))->GetPdgCode()==310 && isTruePi0){
ed8bc1ca 2903 fHistoTrueSecondaryPi0FromK0sInvMassPt[fiCut]->Fill(Pi0Candidate->M(),Pi0Candidate->Pt(),weightedSec);
d53bf4ac 2904 if (fDoMesonQA > 0)fHistoTrueK0sWithPi0DaughterMCPt[fiCut]->Fill(static_cast<AliAODMCParticle*>(AODMCTrackArray->At(secMotherLabel))->Pt());
2905 }
ed8bc1ca 2906 if(static_cast<AliAODMCParticle*>(AODMCTrackArray->At(secMotherLabel))->GetPdgCode()==221 && isTruePi0){
ed8bc1ca 2907 fHistoTrueSecondaryPi0FromEtaInvMassPt[fiCut]->Fill(Pi0Candidate->M(),Pi0Candidate->Pt(),weightedSec);
d53bf4ac 2908 if (fDoMesonQA > 0)fHistoTrueEtaWithPi0DaughterMCPt[fiCut]->Fill(static_cast<AliAODMCParticle*>(AODMCTrackArray->At(secMotherLabel))->Pt());
2909 }
ed8bc1ca 2910 if(static_cast<AliAODMCParticle*>(AODMCTrackArray->At(secMotherLabel))->GetPdgCode()==3122 && isTruePi0){
ed8bc1ca 2911 fHistoTrueSecondaryPi0FromLambdaInvMassPt[fiCut]->Fill(Pi0Candidate->M(),Pi0Candidate->Pt(),weightedSec);
d53bf4ac 2912 if (fDoMesonQA > 0)fHistoTrueLambdaWithPi0DaughterMCPt[fiCut]->Fill(static_cast<AliAODMCParticle*>(AODMCTrackArray->At(secMotherLabel))->Pt());
2913 }
8bdca7f1 2914 }
d53bf4ac 2915 } else{ // Only primary pi0 for efficiency calculation
2916 Float_t weighted= 1;
d53bf4ac 2917 if(((AliConvEventCuts*)fEventCutArray->At(fiCut))->IsParticleFromBGEvent(gamma1MotherLabel, 0x0, fInputEvent)){
2918 if (static_cast<AliAODMCParticle*>(AODMCTrackArray->At(gamma1MotherLabel))->Pt()>0.005){
2919 weighted= ((AliConvEventCuts*)fEventCutArray->At(fiCut))->GetWeightForMeson(fV0Reader->GetPeriodName(),gamma1MotherLabel, 0x0, fInputEvent);
2920 // cout << "rec \t " <<gamma1MotherLabel << "\t" << weighted << endl;
2921 }
8bdca7f1 2922 }
ed8bc1ca 2923 if (isTruePi0){
2924 fHistoTruePrimaryPi0InvMassPt[fiCut]->Fill(Pi0Candidate->M(),Pi0Candidate->Pt(),weighted);
2925 fHistoTruePrimaryPi0W0WeightingInvMassPt[fiCut]->Fill(Pi0Candidate->M(),Pi0Candidate->Pt());
ea1bc51e 2926 fHistoTruePrimaryPi0PhotonPairPtconv[fiCut]->Fill(Pi0Candidate->M(),TrueGammaCandidate0->Pt(),weighted);
ed8bc1ca 2927 fProfileTruePrimaryPi0WeightsInvMassPt[fiCut]->Fill(Pi0Candidate->M(),Pi0Candidate->Pt(),weighted);
e764f3ba 2928 if(CheckIfContainedInString(fStringRecTruePi0s[fiCut],gamma0MotherLabel)){
2929 fHistoTruePrimaryPi0DCPtconv[fiCut]->Fill(TrueGammaCandidate0->Pt(),weighted);
2930 }
ed8bc1ca 2931 } else if (isTrueEta){
2932 fHistoTruePrimaryEtaInvMassPt[fiCut]->Fill(Pi0Candidate->M(),Pi0Candidate->Pt(),weighted);
2933 fHistoTruePrimaryEtaW0WeightingInvMassPt[fiCut]->Fill(Pi0Candidate->M(),Pi0Candidate->Pt());
ea1bc51e 2934 fHistoTruePrimaryEtaPhotonPairPtconv[fiCut]->Fill(Pi0Candidate->M(),TrueGammaCandidate0->Pt(),weighted);
ed8bc1ca 2935 fProfileTruePrimaryEtaWeightsInvMassPt[fiCut]->Fill(Pi0Candidate->M(),Pi0Candidate->Pt(),weighted);
e764f3ba 2936 if(CheckIfContainedInString(fStringRecTrueEtas[fiCut],gamma0MotherLabel)){
2937 fHistoTruePrimaryEtaDCPtconv[fiCut]->Fill(TrueGammaCandidate0->Pt(),weighted);
2938 }
ed8bc1ca 2939 }
d53bf4ac 2940 if (fDoMesonQA > 0){
2941 if(isTruePi0){ // Only primary pi0 for resolution
2942 fHistoTruePrimaryPi0MCPtResolPt[fiCut]->Fill(static_cast<AliAODMCParticle*>(AODMCTrackArray->At(gamma1MotherLabel))->Pt(),
2943 (Pi0Candidate->Pt()-static_cast<AliAODMCParticle*>(AODMCTrackArray->At(gamma1MotherLabel))->Pt())/static_cast<AliAODMCParticle*>(AODMCTrackArray->At(gamma1MotherLabel))->Pt(),weighted);
2944
2945 }
2946 if (isTrueEta){ // Only primary eta for resolution
2947 fHistoTruePrimaryEtaMCPtResolPt[fiCut]->Fill(static_cast<AliAODMCParticle*>(AODMCTrackArray->At(gamma1MotherLabel))->Pt(),
2948 (Pi0Candidate->Pt()-static_cast<AliAODMCParticle*>(AODMCTrackArray->At(gamma1MotherLabel))->Pt())/static_cast<AliAODMCParticle*>(AODMCTrackArray->At(gamma1MotherLabel))->Pt(),weighted);
2949 }
8bdca7f1 2950 }
2951 }
d53bf4ac 2952 }
8bdca7f1 2953 } else if(!isTruePi0 && !isTrueEta) { // Background
2954 if (fDoMesonQA > 0){
2955 if(gamma0MotherLabel>-1 && gamma1MotherLabel>-1){ // Both Tracks are Photons and have a mother but not Pi0 or Eta
2956 fHistoTrueBckGGInvMassPt[fiCut]->Fill(Pi0Candidate->M(),Pi0Candidate->Pt());
8bdca7f1 2957 } else { // No photon or without mother
2958 fHistoTrueBckContInvMassPt[fiCut]->Fill(Pi0Candidate->M(),Pi0Candidate->Pt());
2959 }
2960 }
8bdca7f1 2961 }
e764f3ba 2962
2963 if (isTrueEta && !matched){
2964 fStringRecTrueEtas[fiCut].Append(Form("%i,",gamma0MotherLabel));
2965 }
2966 if (isTruePi0 && !matched){
2967 fStringRecTruePi0s[fiCut].Append(Form("%i,",gamma0MotherLabel));
2968 }
2969
2970
2971
8bdca7f1 2972}
344100c4 2973
8bdca7f1 2974//________________________________________________________________________
2975void AliAnalysisTaskGammaConvCalo::CalculateBackground(){
2976
2977 Int_t zbin= fBGClusHandler[fiCut]->GetZBinIndex(fInputEvent->GetPrimaryVertex()->GetZ());
2978 Int_t mbin = 0;
2979
2980 if(((AliConversionMesonCuts*)fMesonCutArray->At(fiCut))->UseTrackMultiplicity()){
2981 mbin = fBGClusHandler[fiCut]->GetMultiplicityBinIndex(fV0Reader->GetNumberOfPrimaryTracks());
2982 } else {
2983 mbin = fBGClusHandler[fiCut]->GetMultiplicityBinIndex(fGammaCandidates->GetEntries());
2984 }
2985
2986 AliGammaConversionAODBGHandler::GammaConversionVertex *bgEventVertex = NULL;
2987 if(((AliConversionMesonCuts*)fMesonCutArray->At(fiCut))->UseTrackMultiplicity()){
2988 for(Int_t nEventsInBG=0;nEventsInBG<fBGClusHandler[fiCut]->GetNBGEvents();nEventsInBG++){
2989 AliGammaConversionAODVector *previousEventV0s = fBGClusHandler[fiCut]->GetBGGoodV0s(zbin,mbin,nEventsInBG);
2990 if(fMoveParticleAccordingToVertex == kTRUE){
2991 bgEventVertex = fBGClusHandler[fiCut]->GetBGEventVertex(zbin,mbin,nEventsInBG);
2992 }
2993
2994 for(Int_t iCurrent=0;iCurrent<fGammaCandidates->GetEntries();iCurrent++){
2995 AliAODConversionPhoton currentEventGoodV0 = *(AliAODConversionPhoton*)(fGammaCandidates->At(iCurrent));
2996 for(UInt_t iPrevious=0;iPrevious<previousEventV0s->size();iPrevious++){
2997 AliAODConversionPhoton previousGoodV0 = (AliAODConversionPhoton)(*(previousEventV0s->at(iPrevious)));
2998 if(fMoveParticleAccordingToVertex == kTRUE){
2999 MoveParticleAccordingToVertex(&previousGoodV0,bgEventVertex);
3000 }
344100c4 3001 if(((AliConversionPhotonCuts*)fCutArray->At(fiCut))->GetInPlaneOutOfPlaneCut() != 0){
8bdca7f1 3002 RotateParticleAccordingToEP(&previousGoodV0,bgEventVertex->fEP,fEventPlaneAngle);
3003 }
3004
3005 AliAODConversionMother *backgroundCandidate = new AliAODConversionMother(&currentEventGoodV0,&previousGoodV0);
3006 backgroundCandidate->CalculateDistanceOfClossetApproachToPrimVtx(fInputEvent->GetPrimaryVertex());
3007 if((((AliConversionMesonCuts*)fMesonCutArray->At(fiCut))
344100c4 3008 ->MesonIsSelected(backgroundCandidate,kFALSE,((AliConvEventCuts*)fEventCutArray->At(fiCut))->GetEtaShift()))){
8bdca7f1 3009 fHistoMotherBackInvMassPt[fiCut]->Fill(backgroundCandidate->M(),backgroundCandidate->Pt());
ea1bc51e 3010 fHistoPhotonPairMixedEventPtconv[fiCut]->Fill(backgroundCandidate->M(),currentEventGoodV0.Pt());
8bdca7f1 3011 Double_t sparesFill[4] = {backgroundCandidate->M(),backgroundCandidate->Pt(),(Double_t)zbin,(Double_t)mbin};
3012 fSparseMotherBackInvMassPtZM[fiCut]->Fill(sparesFill,1);
3013 }
3014 delete backgroundCandidate;
3015 backgroundCandidate = 0x0;
3016 }
3017 }
3018 }
3019 } else {
3020 for(Int_t nEventsInBG=0;nEventsInBG <fBGClusHandler[fiCut]->GetNBGEvents();nEventsInBG++){
3021 AliGammaConversionAODVector *previousEventV0s = fBGClusHandler[fiCut]->GetBGGoodV0s(zbin,mbin,nEventsInBG);
3022 if(previousEventV0s){
3023 if(fMoveParticleAccordingToVertex == kTRUE){
3024 bgEventVertex = fBGClusHandler[fiCut]->GetBGEventVertex(zbin,mbin,nEventsInBG);
3025 }
3026 for(Int_t iCurrent=0;iCurrent<fGammaCandidates->GetEntries();iCurrent++){
3027 AliAODConversionPhoton currentEventGoodV0 = *(AliAODConversionPhoton*)(fGammaCandidates->At(iCurrent));
3028 for(UInt_t iPrevious=0;iPrevious<previousEventV0s->size();iPrevious++){
3029
3030 AliAODConversionPhoton previousGoodV0 = (AliAODConversionPhoton)(*(previousEventV0s->at(iPrevious)));
3031
3032 if(fMoveParticleAccordingToVertex == kTRUE){
3033 MoveParticleAccordingToVertex(&previousGoodV0,bgEventVertex);
3034 }
344100c4 3035 if(((AliConversionPhotonCuts*)fCutArray->At(fiCut))->GetInPlaneOutOfPlaneCut() != 0){
8bdca7f1 3036 RotateParticleAccordingToEP(&previousGoodV0,bgEventVertex->fEP,fEventPlaneAngle);
3037 }
3038
8bdca7f1 3039 AliAODConversionMother *backgroundCandidate = new AliAODConversionMother(&currentEventGoodV0,&previousGoodV0);
3040 backgroundCandidate->CalculateDistanceOfClossetApproachToPrimVtx(fInputEvent->GetPrimaryVertex());
344100c4 3041 if((((AliConversionMesonCuts*)fMesonCutArray->At(fiCut))->MesonIsSelected(backgroundCandidate,kFALSE,((AliConvEventCuts*)fEventCutArray->At(fiCut))->GetEtaShift()))){
8bdca7f1 3042 fHistoMotherBackInvMassPt[fiCut]->Fill(backgroundCandidate->M(),backgroundCandidate->Pt());
ea1bc51e 3043 fHistoPhotonPairMixedEventPtconv[fiCut]->Fill(backgroundCandidate->M(),currentEventGoodV0.Pt());
8bdca7f1 3044 Double_t sparesFill[4] = {backgroundCandidate->M(),backgroundCandidate->Pt(),(Double_t)zbin,(Double_t)mbin};
3045 fSparseMotherBackInvMassPtZM[fiCut]->Fill(sparesFill,1);
3046 }
3047 delete backgroundCandidate;
3048 backgroundCandidate = 0x0;
3049 }
3050 }
3051 }
3052 }
e764f3ba 3053 }
8bdca7f1 3054}
3055
3056//________________________________________________________________________
3057void AliAnalysisTaskGammaConvCalo::CalculateBackgroundRP(){
3058
3059 Int_t zbin= fBGHandlerRP[fiCut]->GetZBinIndex(fInputEvent->GetPrimaryVertex()->GetZ());
3060 Int_t mbin = 0;
3061 if(((AliConversionMesonCuts*)fMesonCutArray->At(fiCut))->UseTrackMultiplicity()){
3062 mbin = fBGHandlerRP[fiCut]->GetMultiplicityBinIndex(fV0Reader->GetNumberOfPrimaryTracks());
3063 } else {
3064 mbin = fBGHandlerRP[fiCut]->GetMultiplicityBinIndex(fGammaCandidates->GetEntries());
3065 }
3066
3067
3068 //Rotation Method
3069 if(((AliConversionMesonCuts*)fMesonCutArray->At(fiCut))->UseRotationMethod()){
3070 // Correct for the number of rotations
3071 // BG is for rotation the same, except for factor NRotations
3072 Double_t weight=1./Double_t(((AliConversionMesonCuts*)fMesonCutArray->At(fiCut))->GetNumberOfBGEvents());
3073
3074 for(Int_t firstGammaIndex=0;firstGammaIndex<fGammaCandidates->GetEntries();firstGammaIndex++){
3075
3076 AliAODConversionPhoton *gamma0=dynamic_cast<AliAODConversionPhoton*>(fGammaCandidates->At(firstGammaIndex));
3077 if (gamma0==NULL) continue;
3078 for(Int_t secondGammaIndex=firstGammaIndex+1;secondGammaIndex<fGammaCandidates->GetEntries();secondGammaIndex++){
3079 AliAODConversionPhoton *gamma1=dynamic_cast<AliAODConversionPhoton*>(fGammaCandidates->At(secondGammaIndex));
3080 if (gamma1 == NULL) continue;
344100c4 3081 if(!((AliConversionPhotonCuts*)fCutArray->At(fiCut))->PhotonIsSelected(gamma1,fInputEvent))continue;
8bdca7f1 3082 for(Int_t nRandom=0;nRandom<((AliConversionMesonCuts*)fMesonCutArray->At(fiCut))->GetNumberOfBGEvents();nRandom++){
3083
3084 RotateParticle(gamma1);
3085 AliAODConversionMother backgroundCandidate(gamma0,gamma1);
3086 backgroundCandidate.CalculateDistanceOfClossetApproachToPrimVtx(fInputEvent->GetPrimaryVertex());
3087 if(((AliConversionMesonCuts*)fMesonCutArray->At(fiCut))
344100c4 3088 ->MesonIsSelected(&backgroundCandidate,kFALSE,((AliConvEventCuts*)fEventCutArray->At(fiCut))->GetEtaShift())){
8bdca7f1 3089 fHistoMotherBackInvMassPt[fiCut]->Fill(backgroundCandidate.M(),backgroundCandidate.Pt());
ea1bc51e 3090 fHistoPhotonPairMixedEventPtconv[fiCut]->Fill(backgroundCandidate.M(),gamma0->Pt());
8bdca7f1 3091 Double_t sparesFill[4] = {backgroundCandidate.M(),backgroundCandidate.Pt(),(Double_t)zbin,(Double_t)mbin};
3092 fSparseMotherBackInvMassPtZM[fiCut]->Fill(sparesFill,weight);
3093 }
3094 }
3095 }
3096 }
344100c4 3097 } else {
8bdca7f1 3098 // Do Event Mixing
3099 for(Int_t nEventsInBG=0;nEventsInBG <fBGHandlerRP[fiCut]->GetNBGEvents(fGammaCandidates,fInputEvent);nEventsInBG++){
3100
3101 AliGammaConversionPhotonVector *previousEventGammas = fBGHandlerRP[fiCut]->GetBGGoodGammas(fGammaCandidates,fInputEvent,nEventsInBG);
3102
3103 if(previousEventGammas){
3104 // test weighted background
3105 Double_t weight=1.0;
3106 // Correct for the number of eventmixing:
3107 // N gammas -> (N-1) + (N-2) +(N-3) ...+ (N-(N-1)) using sum formula sum(i)=N*(N-1)/2 -> N*(N-1)/2
3108 // real combinations (since you cannot combine a photon with its own)
3109 // but BG leads to N_{a}*N_{b} combinations
3110 weight*=0.5*(Double_t(fGammaCandidates->GetEntries()-1))/Double_t(previousEventGammas->size());
3111
3112 for(Int_t iCurrent=0;iCurrent<fGammaCandidates->GetEntries();iCurrent++){
3113 AliAODConversionPhoton *gamma0 = (AliAODConversionPhoton*)(fGammaCandidates->At(iCurrent));
3114 for(UInt_t iPrevious=0;iPrevious<previousEventGammas->size();iPrevious++){
3115
3116 AliAODConversionPhoton *gamma1 = (AliAODConversionPhoton*)(previousEventGammas->at(iPrevious));
3117
3118 AliAODConversionMother backgroundCandidate(gamma0,gamma1);
3119 backgroundCandidate.CalculateDistanceOfClossetApproachToPrimVtx(fInputEvent->GetPrimaryVertex());
3120 if(((AliConversionMesonCuts*)fMesonCutArray->At(fiCut))
344100c4 3121 ->MesonIsSelected(&backgroundCandidate,kFALSE,((AliConvEventCuts*)fEventCutArray->At(fiCut))->GetEtaShift())){
ea1bc51e 3122 fHistoMotherBackInvMassPt[fiCut]->Fill(backgroundCandidate.M(),backgroundCandidate.Pt());
3123 fHistoPhotonPairMixedEventPtconv[fiCut]->Fill(backgroundCandidate.M(),gamma0->Pt());
3124 Double_t sparesFill[4] = {backgroundCandidate.M(),backgroundCandidate.Pt(),(Double_t)zbin,(Double_t)mbin};
3125 fSparseMotherBackInvMassPtZM[fiCut]->Fill(sparesFill,weight);
8bdca7f1 3126 }
3127 }
3128 }
3129 }
3130 }
3131 }
3132}
3133//________________________________________________________________________
3134void AliAnalysisTaskGammaConvCalo::RotateParticle(AliAODConversionPhoton *gamma){
3135 Int_t fNDegreesPMBackground= ((AliConversionMesonCuts*)fMesonCutArray->At(fiCut))->NDegreesRotation();
3136 Double_t nRadiansPM = fNDegreesPMBackground*TMath::Pi()/180;
3137 Double_t rotationValue = fRandom.Rndm()*2*nRadiansPM + TMath::Pi()-nRadiansPM;
3138 gamma->RotateZ(rotationValue);
3139}
3140
3141//________________________________________________________________________
3142void AliAnalysisTaskGammaConvCalo::RotateParticleAccordingToEP(AliAODConversionPhoton *gamma, Double_t previousEventEP, Double_t thisEventEP){
3143
3144 previousEventEP=previousEventEP+TMath::Pi();
3145 thisEventEP=thisEventEP+TMath::Pi();
3146 Double_t rotationValue= thisEventEP-previousEventEP;
3147 gamma->RotateZ(rotationValue);
3148}
3149
3150//________________________________________________________________________
3151void AliAnalysisTaskGammaConvCalo::MoveParticleAccordingToVertex(AliAODConversionPhoton* particle,const AliGammaConversionAODBGHandler::GammaConversionVertex *vertex){
3152 //see header file for documentation
3153
3154 Double_t dx = vertex->fX - fInputEvent->GetPrimaryVertex()->GetX();
3155 Double_t dy = vertex->fY - fInputEvent->GetPrimaryVertex()->GetY();
3156 Double_t dz = vertex->fZ - fInputEvent->GetPrimaryVertex()->GetZ();
3157
3158 Double_t movedPlace[3] = {particle->GetConversionX() - dx,particle->GetConversionY() - dy,particle->GetConversionZ() - dz};
3159 particle->SetConversionPoint(movedPlace);
3160}
3161//________________________________________________________________________
3162void AliAnalysisTaskGammaConvCalo::UpdateEventByEventData(){
3163 //see header file for documentation
3164 if(fGammaCandidates->GetEntries() >0 ){
3165 if(((AliConversionMesonCuts*)fMesonCutArray->At(fiCut))->UseTrackMultiplicity()){
3166 fBGHandler[fiCut]->AddEvent(fGammaCandidates,fInputEvent->GetPrimaryVertex()->GetX(),fInputEvent->GetPrimaryVertex()->GetY(),fInputEvent->GetPrimaryVertex()->GetZ(),fV0Reader->GetNumberOfPrimaryTracks(),fEventPlaneAngle);
3167 fBGClusHandler[fiCut]->AddEvent(fClusterCandidates,fInputEvent->GetPrimaryVertex()->GetX(),fInputEvent->GetPrimaryVertex()->GetY(),fInputEvent->GetPrimaryVertex()->GetZ(),fV0Reader->GetNumberOfPrimaryTracks(),fEventPlaneAngle);
3168 } else { // means we use #V0s for multiplicity
3169 fBGHandler[fiCut]->AddEvent(fGammaCandidates,fInputEvent->GetPrimaryVertex()->GetX(),fInputEvent->GetPrimaryVertex()->GetY(),fInputEvent->GetPrimaryVertex()->GetZ(),fGammaCandidates->GetEntries(),fEventPlaneAngle);
3170 fBGClusHandler[fiCut]->AddEvent(fClusterCandidates,fInputEvent->GetPrimaryVertex()->GetX(),fInputEvent->GetPrimaryVertex()->GetY(),fInputEvent->GetPrimaryVertex()->GetZ(),fGammaCandidates->GetEntries(),fEventPlaneAngle);
3171 }
3172 }
3173}
3174
3175
3176//________________________________________________________________________
3177void AliAnalysisTaskGammaConvCalo::FillPhotonCombinatorialBackgroundHist(AliAODConversionPhoton *TruePhotonCandidate, Int_t pdgCode[])
3178{
3179 // Combinatorial Bck = 0 ee, 1 ep,i 2 ek, 3 ep, 4 emu, 5 pipi, 6 pik, 7 pip, 8 pimu, 9 kk, 10 kp, 11 kmu, 12 pp, 13 pmu, 14 mumu, 15 Rest
3180 if(pdgCode[0]==11 && pdgCode[1]==11){if(fIsFromMBHeader)fHistoCombinatorialPt[fiCut]->Fill(TruePhotonCandidate->Pt(),0);}
3181 else if( (pdgCode[0]==11 && pdgCode[1]==211) || (pdgCode[0]==211 && pdgCode[1]==11) )
3182 {if(fIsFromMBHeader)fHistoCombinatorialPt[fiCut]->Fill(TruePhotonCandidate->Pt(),1);}
3183 else if( (pdgCode[0]==11 && pdgCode[1]==321) || (pdgCode[0]==321 && pdgCode[1]==11) )
3184 {if(fIsFromMBHeader)fHistoCombinatorialPt[fiCut]->Fill(TruePhotonCandidate->Pt(),2);}
3185 else if( (pdgCode[0]==11 && pdgCode[1]==2212) || (pdgCode[0]==2212 && pdgCode[1]==11) )
3186 {if(fIsFromMBHeader)fHistoCombinatorialPt[fiCut]->Fill(TruePhotonCandidate->Pt(),3);}
3187 else if( (pdgCode[0]==11 && pdgCode[1]==13) || (pdgCode[0]==13 && pdgCode[1]==11) )
3188 {if(fIsFromMBHeader)fHistoCombinatorialPt[fiCut]->Fill(TruePhotonCandidate->Pt(),4);}
3189 else if( pdgCode[0]==211 && pdgCode[1]==211 ){if(fIsFromMBHeader)fHistoCombinatorialPt[fiCut]->Fill(TruePhotonCandidate->Pt(),5);}
3190 else if( (pdgCode[0]==211 && pdgCode[1]==321) || (pdgCode[0]==321 && pdgCode[1]==211) )
3191 {if(fIsFromMBHeader)fHistoCombinatorialPt[fiCut]->Fill(TruePhotonCandidate->Pt(),6);}
3192 else if( (pdgCode[0]==211 && pdgCode[1]==2212) || (pdgCode[0]==2212 && pdgCode[1]==211) )
3193 {if(fIsFromMBHeader)fHistoCombinatorialPt[fiCut]->Fill(TruePhotonCandidate->Pt(),7);}
3194 else if( (pdgCode[0]==211 && pdgCode[1]==13) || (pdgCode[0]==13 && pdgCode[1]==211) )
3195 {if(fIsFromMBHeader)fHistoCombinatorialPt[fiCut]->Fill(TruePhotonCandidate->Pt(),8);}
3196 else if( pdgCode[0]==321 && pdgCode[1]==321 ){if(fIsFromMBHeader)fHistoCombinatorialPt[fiCut]->Fill(TruePhotonCandidate->Pt(),9);}
3197 else if( (pdgCode[0]==321 && pdgCode[1]==2212) || (pdgCode[0]==2212 && pdgCode[1]==321) )
3198 {if(fIsFromMBHeader)fHistoCombinatorialPt[fiCut]->Fill(TruePhotonCandidate->Pt(),10);}
3199 else if( (pdgCode[0]==321 && pdgCode[1]==13) || (pdgCode[0]==13 && pdgCode[1]==321) )
3200 {if(fIsFromMBHeader)fHistoCombinatorialPt[fiCut]->Fill(TruePhotonCandidate->Pt(),11);}
3201 else if( pdgCode[0]==2212 && pdgCode[1]==2212 ){if(fIsFromMBHeader)fHistoCombinatorialPt[fiCut]->Fill(TruePhotonCandidate->Pt(),12);}
3202 else if( (pdgCode[0]==2212 && pdgCode[1]==13) || (pdgCode[0]==13 && pdgCode[1]==2212) )
3203 {if(fIsFromMBHeader)fHistoCombinatorialPt[fiCut]->Fill(TruePhotonCandidate->Pt(),13);}
3204 else if( pdgCode[0]==13 && pdgCode[1]==13 ){if(fIsFromMBHeader)fHistoCombinatorialPt[fiCut]->Fill(TruePhotonCandidate->Pt(),14);}
3205 else {if(fIsFromMBHeader)fHistoCombinatorialPt[fiCut]->Fill(TruePhotonCandidate->Pt(),15);}
3206}
3207//________________________________________________________________________
3208void AliAnalysisTaskGammaConvCalo::RelabelAODPhotonCandidates(Bool_t mode){
3209
3210 // Relabeling For AOD Event
3211 // ESDiD -> AODiD
3212 // MCLabel -> AODMCLabel
3213
3214 if(mode){
3215 fMCStackPos = new Int_t[fReaderGammas->GetEntries()];
3216 fMCStackNeg = new Int_t[fReaderGammas->GetEntries()];
3217 fESDArrayPos = new Int_t[fReaderGammas->GetEntries()];
3218 fESDArrayNeg = new Int_t[fReaderGammas->GetEntries()];
3219 }
3220
3221 for(Int_t iGamma = 0;iGamma<fReaderGammas->GetEntries();iGamma++){
3222 AliAODConversionPhoton* PhotonCandidate = (AliAODConversionPhoton*) fReaderGammas->At(iGamma);
3223 if(!PhotonCandidate) continue;
3224 if(!mode){// Back to ESD Labels
3225 PhotonCandidate->SetMCLabelPositive(fMCStackPos[iGamma]);
3226 PhotonCandidate->SetMCLabelNegative(fMCStackNeg[iGamma]);
3227 PhotonCandidate->SetLabelPositive(fESDArrayPos[iGamma]);
3228 PhotonCandidate->SetLabelNegative(fESDArrayNeg[iGamma]);
3229 continue;
3230 }
3231 fMCStackPos[iGamma] = PhotonCandidate->GetMCLabelPositive();
3232 fMCStackNeg[iGamma] = PhotonCandidate->GetMCLabelNegative();
3233 fESDArrayPos[iGamma] = PhotonCandidate->GetTrackLabelPositive();
3234 fESDArrayNeg[iGamma] = PhotonCandidate->GetTrackLabelNegative();
3235
3236 Bool_t AODLabelPos = kFALSE;
3237 Bool_t AODLabelNeg = kFALSE;
3238
3239 for(Int_t i = 0; i<fInputEvent->GetNumberOfTracks();i++){
3240 AliAODTrack *tempDaughter = static_cast<AliAODTrack*>(fInputEvent->GetTrack(i));
3241 if(!AODLabelPos){
3242 if( tempDaughter->GetID() == PhotonCandidate->GetTrackLabelPositive() ){
3243 PhotonCandidate->SetMCLabelPositive(abs(tempDaughter->GetLabel()));
3244 PhotonCandidate->SetLabelPositive(i);
3245 AODLabelPos = kTRUE;
3246 }
3247 }
3248 if(!AODLabelNeg){
3249 if( tempDaughter->GetID() == PhotonCandidate->GetTrackLabelNegative()){
3250 PhotonCandidate->SetMCLabelNegative(abs(tempDaughter->GetLabel()));
3251 PhotonCandidate->SetLabelNegative(i);
3252 AODLabelNeg = kTRUE;
3253 }
3254 }
3255 if(AODLabelNeg && AODLabelPos){
3256 break;
3257 }
3258 }
3259 if(!AODLabelPos || !AODLabelNeg){
3260 cout<<"WARNING!!! AOD TRACKS NOT FOUND FOR"<<endl;
3261 }
3262 }
3263
3264
3265 if(!mode){
3266 delete[] fMCStackPos;
3267 delete[] fMCStackNeg;
3268 delete[] fESDArrayPos;
3269 delete[] fESDArrayNeg;
3270 }
3271}
3272
3273void AliAnalysisTaskGammaConvCalo::SetLogBinningXTH2(TH2* histoRebin){
3274 TAxis *axisafter = histoRebin->GetXaxis();
3275 Int_t bins = axisafter->GetNbins();
3276 Double_t from = axisafter->GetXmin();
3277 Double_t to = axisafter->GetXmax();
3278 Double_t *newbins = new Double_t[bins+1];
3279 newbins[0] = from;
3280 Double_t factor = TMath::Power(to/from, 1./bins);
3281 for(Int_t i=1; i<=bins; ++i) newbins[i] = factor * newbins[i-1];
3282 axisafter->Set(bins, newbins);
3283 delete [] newbins;
3284}
3285
3286//________________________________________________________________________
3287void AliAnalysisTaskGammaConvCalo::Terminate(const Option_t *)
3288{
3289
3290 //fOutputContainer->Print(); // Will crash on GRID
3291}
3292
3293//________________________________________________________________________
3294Int_t AliAnalysisTaskGammaConvCalo::GetSourceClassification(Int_t daughter, Int_t pdgCode){
3295
3296 if (daughter == 111) {
3297 if (abs(pdgCode) == 310) return 1; // k0s
3298 else if (abs(pdgCode) == 3122) return 2; // Lambda
3299 else if (abs(pdgCode) == 130) return 3; // K0L
3300 else if (abs(pdgCode) == 2212) return 4; // proton
3301 else if (abs(pdgCode) == 2112) return 5; // neutron
3302 else if (abs(pdgCode) == 211) return 6; // pion
3303 else if (abs(pdgCode) == 321) return 7; // kaon
3304 else if (abs(pdgCode) == 113 || abs(pdgCode) == 213 ) return 8; // rho 0,+,-
3305 else if (abs(pdgCode) == 3222 || abs(pdgCode) == 3212 || abs(pdgCode) == 3112 ) return 9; // Sigma
3306 else if (abs(pdgCode) == 2224 || abs(pdgCode) == 2214 || abs(pdgCode) == 2114 || abs(pdgCode) == 1114 ) return 10; // Delta
3307 else if (abs(pdgCode) == 313 || abs(pdgCode) == 323 ) return 11; // K*
3308 else return 15;
3309 }
3310 return 15;
3311
3312}
e764f3ba 3313
3314//_________________________________________________________________________________
3315Bool_t AliAnalysisTaskGammaConvCalo::CheckIfContainedInString(TString input, Int_t tobechecked){
3316 TObjArray *arr = input.Tokenize(",");
3317 for (Int_t i = 0; i < arr->GetEntriesFast();i++){
3318 TString tempStr = ((TObjString*)arr->At(i))->GetString();
3319 if (tempStr.Atoi() == tobechecked) return kTRUE;
3320 }
3321 return kFALSE;
3322}
3323
3324//_________________________________________________________________________________
3325Bool_t AliAnalysisTaskGammaConvCalo::CheckIfContainedInStringAndAppend(TString &input, Int_t tobechecked){
3326 TObjArray *arr = input.Tokenize(",");
3327 Bool_t isContained = kFALSE;
3328 for (Int_t i = 0; i < arr->GetEntriesFast();i++){
3329 TString tempStr = ((TObjString*)arr->At(i))->GetString();
3330 if (tempStr.Atoi() == tobechecked) isContained= kTRUE;
3331 }
3332 if (!isContained)input.Append(Form("%i,",tobechecked));
3333 return isContained;
3334}
3335
3336//_________________________________________________________________________________
3337void AliAnalysisTaskGammaConvCalo::ProcessConversionPhotonsForMissingTags (){
3338
3339 if (!fMCStack) return;
3340
3341 for(Int_t firstGammaIndex=0;firstGammaIndex<fGammaCandidates->GetEntries();firstGammaIndex++){
3342 AliAODConversionPhoton *gamma0=dynamic_cast<AliAODConversionPhoton*>(fGammaCandidates->At(firstGammaIndex));
3343 if (gamma0->IsTrueConvertedPhoton()){
3344 Int_t gamma0MotherLabel = -1;
3345 Int_t gamma0MCLabel = gamma0->GetMCParticleLabel(fMCStack);
3346 if(gamma0MCLabel != -1){
3347 TParticle * gammaMC0 = (TParticle*)fMCStack->Particle(gamma0MCLabel);
3348 gamma0MotherLabel=gammaMC0->GetFirstMother();
3349 if (gamma0MotherLabel>-1){
3350 if(((TParticle*)fMCStack->Particle(gamma0MotherLabel))->GetPdgCode() == 111){
3351 if (!CheckIfContainedInStringAndAppend(fStringRecTruePi0s[fiCut],gamma0MotherLabel)){
3352 if (gamma0MotherLabel >= fMCStack->GetNprimary()){
3353 Int_t secMotherLabel = ((TParticle*)fMCStack->Particle(gamma0MotherLabel))->GetMother(0);
3354 Float_t weightedSec= 1;
3355 if(((AliConvEventCuts*)fEventCutArray->At(fiCut))->IsParticleFromBGEvent(secMotherLabel, fMCStack, fInputEvent) && fMCStack->Particle(secMotherLabel)->GetPdgCode()==310){
3356 weightedSec= ((AliConvEventCuts*)fEventCutArray->At(fiCut))->GetWeightForMeson(fV0Reader->GetPeriodName(),secMotherLabel, fMCStack, fInputEvent)/2.; //invariant mass is additive thus the weight for the daughters has to be devide by two for the K0s at a certain pt
3357 }
3358 fHistoTrueSecondaryPi0MissingPtconv[fiCut]->Fill(gamma0->Pt(),weightedSec);
3359 } else {
3360 Float_t weighted= 1;
3361 if(((AliConvEventCuts*)fEventCutArray->At(fiCut))->IsParticleFromBGEvent(gamma0MotherLabel, fMCStack, fInputEvent)){
3362 if (((TParticle*)fMCStack->Particle(gamma0MotherLabel))->Pt()>0.005){
3363 weighted= ((AliConvEventCuts*)fEventCutArray->At(fiCut))->GetWeightForMeson(fV0Reader->GetPeriodName(),gamma0MotherLabel, fMCStack, fInputEvent);
3364 }
3365 }
3366 fHistoTruePrimaryPi0MissingPtconv[fiCut]->Fill(gamma0->Pt(),weighted);
3367 }
3368 }
3369 } else if(((TParticle*)fMCStack->Particle(gamma0MotherLabel))->GetPdgCode() == 221){
3370 if (!CheckIfContainedInStringAndAppend(fStringRecTrueEtas[fiCut],gamma0MotherLabel)){
3371 Float_t weighted= 1;
3372 if(((AliConvEventCuts*)fEventCutArray->At(fiCut))->IsParticleFromBGEvent(gamma0MotherLabel, fMCStack, fInputEvent)){
3373 if (((TParticle*)fMCStack->Particle(gamma0MotherLabel))->Pt()>0.005){
3374 weighted= ((AliConvEventCuts*)fEventCutArray->At(fiCut))->GetWeightForMeson(fV0Reader->GetPeriodName(),gamma0MotherLabel, fMCStack, fInputEvent);
3375 }
3376 }
3377 fHistoTruePrimaryEtaMissingPtconv[fiCut]->Fill(gamma0->Pt(),weighted);
3378 }
3379 }
3380 }
3381 }
3382 }
3383 }
3384 return;
3385}
3386
3387//_________________________________________________________________________________
3388void AliAnalysisTaskGammaConvCalo::ProcessConversionPhotonsForMissingTagsAOD (){
3389
3390 TClonesArray *AODMCTrackArray = dynamic_cast<TClonesArray*>(fInputEvent->FindListObject(AliAODMCParticle::StdBranchName()));
3391
3392 for(Int_t firstGammaIndex=0;firstGammaIndex<fGammaCandidates->GetEntries();firstGammaIndex++){
3393 AliAODConversionPhoton *gamma0=dynamic_cast<AliAODConversionPhoton*>(fGammaCandidates->At(firstGammaIndex));
3394
3395 if (gamma0->IsTrueConvertedPhoton()){
3396 AliAODMCParticle *positiveMC = static_cast<AliAODMCParticle*>(AODMCTrackArray->At(gamma0->GetMCLabelPositive()));
3397 AliAODMCParticle *negativeMC = static_cast<AliAODMCParticle*>(AODMCTrackArray->At(gamma0->GetMCLabelNegative()));
3398
3399 Int_t gamma0MCLabel = -1;
3400 Int_t gamma0MotherLabel = -1;
3401 if(!positiveMC||!negativeMC)
3402 return;
3403
3404 if (gamma0->IsTrueConvertedPhoton()){
3405 gamma0MCLabel = positiveMC->GetMother();
3406 AliAODMCParticle * gammaMC0 = static_cast<AliAODMCParticle*>(AODMCTrackArray->At(gamma0MCLabel));
3407 gamma0MotherLabel=gammaMC0->GetMother();
3408
3409 if (gamma0MotherLabel>-1){
3410 if(((AliAODMCParticle*)AODMCTrackArray->At(gamma0MotherLabel))->GetPdgCode() == 111){
3411 if (!CheckIfContainedInStringAndAppend(fStringRecTruePi0s[fiCut],gamma0MotherLabel)){
3412 if (!(static_cast<AliAODMCParticle*>(AODMCTrackArray->At(gamma0MotherLabel))->IsPrimary())){
3413 Int_t secMotherLabel = static_cast<AliAODMCParticle*>(AODMCTrackArray->At(gamma0MotherLabel))->GetMother();
3414 Float_t weightedSec= 1;
3415 if(((AliConvEventCuts*)fEventCutArray->At(fiCut))->IsParticleFromBGEvent(secMotherLabel, 0x0, fInputEvent) && static_cast<AliAODMCParticle*>(AODMCTrackArray->At(secMotherLabel))->GetPdgCode()==310){
3416 weightedSec= ((AliConvEventCuts*)fEventCutArray->At(fiCut))->GetWeightForMeson(fV0Reader->GetPeriodName(),secMotherLabel, 0x0, fInputEvent)/2.; //invariant mass is additive thus the weight for the daughters has to be devide by two for the K0s at a certain pt
3417 }
3418 fHistoTrueSecondaryPi0MissingPtconv[fiCut]->Fill(gamma0->Pt(),weightedSec);
3419 } else {
3420 Float_t weighted= 1;
3421 if(((AliConvEventCuts*)fEventCutArray->At(fiCut))->IsParticleFromBGEvent(gamma0MotherLabel, 0x0, fInputEvent)){
3422 if (static_cast<AliAODMCParticle*>(AODMCTrackArray->At(gamma0MotherLabel))->Pt()>0.005){
3423 weighted= ((AliConvEventCuts*)fEventCutArray->At(fiCut))->GetWeightForMeson(fV0Reader->GetPeriodName(),gamma0MotherLabel, 0x0, fInputEvent);
3424 }
3425 }
3426 fHistoTruePrimaryPi0MissingPtconv[fiCut]->Fill(gamma0->Pt(),weighted);
3427 }
3428 }
3429 } else if(((AliAODMCParticle*)AODMCTrackArray->At(gamma0MotherLabel))->GetPdgCode() == 221){
3430 if (!CheckIfContainedInStringAndAppend(fStringRecTrueEtas[fiCut],gamma0MotherLabel)){
3431 Float_t weighted= 1;
3432 if(((AliConvEventCuts*)fEventCutArray->At(fiCut))->IsParticleFromBGEvent(gamma0MotherLabel, 0x0, fInputEvent)){
3433 if (static_cast<AliAODMCParticle*>(AODMCTrackArray->At(gamma0MotherLabel))->Pt()>0.005){
3434 weighted= ((AliConvEventCuts*)fEventCutArray->At(fiCut))->GetWeightForMeson(fV0Reader->GetPeriodName(),gamma0MotherLabel, 0x0, fInputEvent);
3435 }
3436 }
3437 fHistoTruePrimaryEtaMissingPtconv[fiCut]->Fill(gamma0->Pt(),weighted);
3438 }
3439 }
3440 }
3441 }
3442 }
3443 }
3444 return;
3445}