AliPhysics  6b290e4 (6b290e4)
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
AliAnalysisTaskGammaPureMC.cxx
Go to the documentation of this file.
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 
18 //----------------------------------------------------------------
19 // Class used to do analysis on conversion photons + calo photons
20 //----------------------------------------------------------------
22 #include "TChain.h"
23 #include "TTree.h"
24 #include "TBranch.h"
25 #include "TFile.h"
26 #include "TH1F.h"
27 #include "TH2F.h"
28 #include "TPDGCode.h"
29 #include "TProfile.h"
30 #include "THnSparse.h"
31 #include "TCanvas.h"
32 #include "TNtuple.h"
33 #include "AliAnalysisTask.h"
34 #include "AliAnalysisManager.h"
35 #include "AliESDEvent.h"
36 #include "AliESDInputHandler.h"
37 #include "AliMCEventHandler.h"
38 #include "AliMCEvent.h"
39 #include "AliMCParticle.h"
40 #include "AliStack.h"
42 #include "AliVParticle.h"
43 #include "AliGenCocktailEventHeader.h"
44 #include "AliGenDPMjetEventHeader.h"
45 #include "AliGenPythiaEventHeader.h"
46 #include "AliGenHijingEventHeader.h"
47 #include "AliEventplane.h"
48 #include "AliInputEventHandler.h"
49 #include <algorithm>
50 #include <array>
51 #include <vector>
52 #include <map>
53 
55 
56 //________________________________________________________________________
58  fOutputContainer(nullptr),
59  fMCStack(nullptr),
60  fHistNEvents(nullptr),
61  fHistXSection(nullptr),
62  fHistPtHard(nullptr),
63  fHistPtYPi0(nullptr),
64  fHistPtYPiPl(nullptr),
65  fHistPtYPiMi(nullptr),
66  fHistPtYEta(nullptr),
67  fHistPtYEtaPrim(nullptr),
68  fHistPtYOmega(nullptr),
69  fHistPtYRho0(nullptr),
70  fHistPtYRhoPl(nullptr),
71  fHistPtYRhoMi(nullptr),
72  fHistPtYPhi(nullptr),
73  fHistPtYJPsi(nullptr),
74  fHistPtYSigma0(nullptr),
75  fHistPtYK0s(nullptr),
76  fHistPtYK0l(nullptr),
77  fHistPtYK0star(nullptr),
78  fHistPtYDeltaPlPl(nullptr),
79  fHistPtYDeltaPl(nullptr),
80  fHistPtYDeltaMi(nullptr),
81  fHistPtYDelta0(nullptr),
82  fHistPtYLambda(nullptr),
83  fHistPtYPi0FromEta(nullptr),
84  fHistPtYPi0FromLambda(nullptr),
85  fHistPtYPi0FromK(nullptr),
86  fHistPtYPiPlFromK(nullptr),
87  fHistPtYPiMiFromK(nullptr),
88  fHistPtYPi0GG(nullptr),
89  fHistPtYPi0GGPCMAcc(nullptr),
90  fHistPtYPi0GGEMCAcc(nullptr),
91  fHistPtYPi0GGPHOAcc(nullptr),
92  fHistPtYPi0GGPCMEMCAcc(nullptr),
93  fHistPtYPi0GGPCMPHOAcc(nullptr),
94  fHistPtAlphaPi0GGPCMAcc(nullptr),
95  fHistPtAlphaPi0GGEMCAcc(nullptr),
96  fHistPtAlphaPi0GGPHOAcc(nullptr),
97  fHistPtAlphaPi0GGPCMEMCAcc(nullptr),
98  fHistPtAlphaPi0GGPCMPHOAcc(nullptr),
99  fHistPtYEtaGG(nullptr),
100  fHistPtYEtaGGPCMAcc(nullptr),
101  fHistPtYEtaGGEMCAcc(nullptr),
102  fHistPtYEtaGGPHOAcc(nullptr),
103  fHistPtYEtaGGPCMEMCAcc(nullptr),
104  fHistPtYEtaGGPCMPHOAcc(nullptr),
105  fHistPtAlphaEtaGGPCMAcc(nullptr),
106  fHistPtAlphaEtaGGEMCAcc(nullptr),
107  fHistPtAlphaEtaGGPHOAcc(nullptr),
108  fHistPtAlphaEtaGGPCMEMCAcc(nullptr),
109  fHistPtAlphaEtaGGPCMPHOAcc(nullptr),
110  fHistPtYEtaPrimGG(nullptr),
111  fHistPtYEtaPrimGGPCMAcc(nullptr),
112  fHistPtYEtaPrimGGEMCAcc(nullptr),
113  fHistPtYEtaPrimGGPHOAcc(nullptr),
114  fHistPtYEtaPrimGGPCMEMCAcc(nullptr),
115  fHistPtYEtaPrimGGPCMPHOAcc(nullptr),
116  fHistPtYPi0FromKGG(nullptr),
117  fHistPtYPi0FromKGGPCMAcc(nullptr),
118  fHistPtYPi0FromKGGEMCAcc(nullptr),
119  fHistPtYPi0FromKGGPCMEMCAcc(nullptr),
120  fHistPtYPi0FromKGGEMCPCMAcc(nullptr),
121  fHistPtYPi0FromKGGEMCAccSamePi0(nullptr),
122  fHistPtYPi0FromKGGEMCAccDiffPi0(nullptr),
123  fIsK0(1),
124  fIsMC(1)
125 {
126 
127 }
128 
129 //________________________________________________________________________
131  AliAnalysisTaskSE(name),
132  fOutputContainer(nullptr),
133  fMCStack(nullptr),
134  fHistNEvents(nullptr),
135  fHistXSection(nullptr),
136  fHistPtHard(nullptr),
137  fHistPtYPi0(nullptr),
138  fHistPtYPiPl(nullptr),
139  fHistPtYPiMi(nullptr),
140  fHistPtYEta(nullptr),
141  fHistPtYEtaPrim(nullptr),
142  fHistPtYOmega(nullptr),
143  fHistPtYRho0(nullptr),
144  fHistPtYRhoPl(nullptr),
145  fHistPtYRhoMi(nullptr),
146  fHistPtYPhi(nullptr),
147  fHistPtYJPsi(nullptr),
148  fHistPtYSigma0(nullptr),
149  fHistPtYK0s(nullptr),
150  fHistPtYK0l(nullptr),
151  fHistPtYK0star(nullptr),
152  fHistPtYDeltaPlPl(nullptr),
153  fHistPtYDeltaPl(nullptr),
154  fHistPtYDeltaMi(nullptr),
155  fHistPtYDelta0(nullptr),
156  fHistPtYLambda(nullptr),
157  fHistPtYPi0FromEta(nullptr),
158  fHistPtYPi0FromLambda(nullptr),
159  fHistPtYPi0FromK(nullptr),
160  fHistPtYPiPlFromK(nullptr),
161  fHistPtYPiMiFromK(nullptr),
162  fHistPtYPi0GG(nullptr),
163  fHistPtYPi0GGPCMAcc(nullptr),
164  fHistPtYPi0GGEMCAcc(nullptr),
165  fHistPtYPi0GGPHOAcc(nullptr),
166  fHistPtYPi0GGPCMEMCAcc(nullptr),
167  fHistPtYPi0GGPCMPHOAcc(nullptr),
168  fHistPtAlphaPi0GGPCMAcc(nullptr),
169  fHistPtAlphaPi0GGEMCAcc(nullptr),
170  fHistPtAlphaPi0GGPHOAcc(nullptr),
171  fHistPtAlphaPi0GGPCMEMCAcc(nullptr),
172  fHistPtAlphaPi0GGPCMPHOAcc(nullptr),
173  fHistPtYEtaGG(nullptr),
174  fHistPtYEtaGGPCMAcc(nullptr),
175  fHistPtYEtaGGEMCAcc(nullptr),
176  fHistPtYEtaGGPHOAcc(nullptr),
177  fHistPtYEtaGGPCMEMCAcc(nullptr),
178  fHistPtYEtaGGPCMPHOAcc(nullptr),
179  fHistPtAlphaEtaGGPCMAcc(nullptr),
180  fHistPtAlphaEtaGGEMCAcc(nullptr),
181  fHistPtAlphaEtaGGPHOAcc(nullptr),
182  fHistPtAlphaEtaGGPCMEMCAcc(nullptr),
183  fHistPtAlphaEtaGGPCMPHOAcc(nullptr),
184  fHistPtYEtaPrimGG(nullptr),
185  fHistPtYEtaPrimGGPCMAcc(nullptr),
186  fHistPtYEtaPrimGGEMCAcc(nullptr),
187  fHistPtYEtaPrimGGPHOAcc(nullptr),
188  fHistPtYEtaPrimGGPCMEMCAcc(nullptr),
189  fHistPtYEtaPrimGGPCMPHOAcc(nullptr),
190  fHistPtYPi0FromKGG(nullptr),
191  fHistPtYPi0FromKGGPCMAcc(nullptr),
192  fHistPtYPi0FromKGGEMCAcc(nullptr),
193  fHistPtYPi0FromKGGPCMEMCAcc(nullptr),
194  fHistPtYPi0FromKGGEMCPCMAcc(nullptr),
195  fHistPtYPi0FromKGGEMCAccSamePi0(nullptr),
196  fHistPtYPi0FromKGGEMCAccDiffPi0(nullptr),
197  fIsK0(1),
198  fIsMC(1)
199 {
200  // Define output slots here
201  DefineOutput(1, TList::Class());
202 }
203 
205 {
206 
207 }
208 
209 //________________________________________________________________________
211 
212  // Create histograms
213  if(fOutputContainer != nullptr){
214  delete fOutputContainer;
215  fOutputContainer = nullptr;
216  }
217  if(fOutputContainer == nullptr){
218  fOutputContainer = new TList();
219  fOutputContainer->SetOwner(kTRUE);
220  }
221 
222  fHistNEvents = new TH1F("NEvents", "NEvents", 3, -0.5, 2.5);
223  fHistNEvents->Sumw2();
225 
226  fHistXSection = new TH1D("XSection", "XSection", 1000000, 0, 1e4);
227 
228  // SetLogBinningXTH1(fHistXSection);
229  fHistXSection->Sumw2();
231 
232  fHistPtHard = new TH1F("PtHard", "PtHard", 400, 0, 200);
233  fHistPtHard->Sumw2();
235 
236  fHistPtYPi0 = new TH2F("Pt_Y_Pi0","Pt_Y_Pi0", 1000,0, 100, 200, -1.0, 1.0);
237  fHistPtYPi0->Sumw2();
239 
240  fHistPtYPiPl = new TH2F("Pt_Y_PiPl","Pt_Y_PiPl", 1000,0, 100, 200, -1.0, 1.0);
241  fHistPtYPiPl->Sumw2();
243 
244  fHistPtYPiMi = new TH2F("Pt_Y_PiMi","Pt_Y_PiMi", 1000,0, 100, 200, -1.0, 1.0);
245  fHistPtYPiMi->Sumw2();
247 
248  fHistPtYEta = new TH2F("Pt_Y_Eta","Pt_Y_Eta", 1000,0, 100, 200, -1.0, 1.0);
249  fHistPtYEta->Sumw2();
251 
252  fHistPtYEtaPrim = new TH2F("Pt_Y_EtaPrim","Pt_Y_EtaPrim", 1000,0, 100, 200, -1.0, 1.0);
253  fHistPtYEtaPrim->Sumw2();
255 
256  fHistPtYOmega = new TH2F("Pt_Y_Omega","Pt_Y_Omega", 1000,0, 100, 200, -1.0, 1.0);
257  fHistPtYOmega->Sumw2();
259 
260  fHistPtYRho0 = new TH2F("Pt_Y_Rho0","Pt_Y_Rho0", 1000,0, 100, 200, -1.0, 1.0);
261  fHistPtYRho0->Sumw2();
263 
264  fHistPtYRhoPl = new TH2F("Pt_Y_RhoPl","Pt_Y_RhoPl", 1000,0, 100, 200, -1.0, 1.0);
265  fHistPtYRhoPl->Sumw2();
267 
268  fHistPtYRhoMi = new TH2F("Pt_Y_RhoMi","Pt_Y_RhoMi", 1000,0, 100, 200, -1.0, 1.0);
269  fHistPtYRhoMi->Sumw2();
271 
272  fHistPtYPhi = new TH2F("Pt_Y_Phi","Pt_Y_Phi", 1000,0, 100, 200, -1.0, 1.0);
273  fHistPtYPhi->Sumw2();
275 
276  fHistPtYJPsi = new TH2F("Pt_Y_JPsi","Pt_Y_JPsi", 1000,0, 100, 200, -1.0, 1.0);
277  fHistPtYJPsi->Sumw2();
279 
280  fHistPtYSigma0 = new TH2F("Pt_Y_Sigma0","Pt_Y_Sigma0", 1000,0, 100, 200, -1.0, 1.0);
281  fHistPtYSigma0->Sumw2();
283 
284  fHistPtYK0s = new TH2F("Pt_Y_K0s","Pt_Y_K0s", 1000,0, 100, 200, -1.0, 1.0);
285  fHistPtYK0s->Sumw2();
287 
288  fHistPtYK0l = new TH2F("Pt_Y_K0l","Pt_Y_K0l", 1000,0, 100, 200, -1.0, 1.0);
289  fHistPtYK0l->Sumw2();
291 
292  fHistPtYK0star = new TH2F("Pt_Y_K0star","Pt_Y_K0star", 1000,0, 100, 200, -1.0, 1.0);
293  fHistPtYK0star->Sumw2();
295 
296  fHistPtYDeltaPlPl = new TH2F("Pt_Y_DeltaPlPl","Pt_Y_DeltaPlPl", 1000,0, 100, 200, -1.0, 1.0);
297  fHistPtYDeltaPlPl->Sumw2();
299 
300  fHistPtYDeltaPl = new TH2F("Pt_Y_DeltaPl","Pt_Y_DeltaPl", 1000,0, 100, 200, -1.0, 1.0);
301  fHistPtYDeltaPl->Sumw2();
303 
304  fHistPtYDeltaMi = new TH2F("Pt_Y_DeltaMi","Pt_Y_DeltaMi", 1000,0, 100, 200, -1.0, 1.0);
305  fHistPtYDeltaMi->Sumw2();
307 
308  fHistPtYDelta0 = new TH2F("Pt_Y_Delta0","Pt_Y_Delta0", 1000,0, 100, 200, -1.0, 1.0);
309  fHistPtYDelta0->Sumw2();
311 
312  fHistPtYLambda = new TH2F("Pt_Y_Lambda","Pt_Y_Lambda", 1000,0, 100, 200, -1.0, 1.0);
313  fHistPtYLambda->Sumw2();
315 
316  fHistPtYPi0FromEta = new TH2F("Pt_Y_Pi0FromEta","Pt_Y_Pi0FromEta", 1000,0, 100, 200, -1.0, 1.0);
317  fHistPtYPi0FromEta->Sumw2();
319 
320  fHistPtYPi0FromLambda = new TH2F("Pt_Y_Pi0FromLambda","Pt_Y_Pi0FromLambda", 1000,0, 100, 200, -1.0, 1.0);
321  fHistPtYPi0FromLambda->Sumw2();
323 
324  fHistPtYPi0FromK = new TH2F("Pt_Y_Pi0FromK","Pt_Y_Pi0FromK", 1000,0, 100, 200, -1.0, 1.0);
325  fHistPtYPi0FromK->Sumw2();
327 
328  fHistPtYPiPlFromK = new TH2F("Pt_Y_PiPlFromK","Pt_Y_PiPlFromK", 1000,0, 100, 200, -1.0, 1.0);
329  fHistPtYPiPlFromK->Sumw2();
331 
332  fHistPtYPiMiFromK = new TH2F("Pt_Y_PiMiFromK","Pt_Y_PiMiFromK", 1000,0, 100, 200, -1.0, 1.0);
333  fHistPtYPiMiFromK->Sumw2();
335 
336 
337  fHistPtYPi0GG = new TH2F("Pt_Y_Pi0GG","Pt_Y_Pi0GG", 1000,0, 100, 200, -1.0, 1.0);
338  fHistPtYPi0GG->Sumw2();
340  fHistPtYPi0GGPCMAcc = new TH2F("Pt_Y_Pi0GGPCMAcc","Pt_Y_Pi0GGPCMAcc", 1000,0, 100, 200, -1.0, 1.0);
341  fHistPtYPi0GGPCMAcc->Sumw2();
343  fHistPtYPi0GGEMCAcc = new TH2F("Pt_Y_Pi0GGEMCAcc","Pt_Y_Pi0GGEMCAcc", 1000,0, 100, 200, -1.0, 1.0);
344  fHistPtYPi0GGEMCAcc->Sumw2();
346  fHistPtYPi0GGPHOAcc = new TH2F("Pt_Y_Pi0GGPHOAcc","Pt_Y_Pi0GGPHOAcc", 1000,0, 100, 200, -1.0, 1.0);
347  fHistPtYPi0GGPHOAcc->Sumw2();
349  fHistPtYPi0GGPCMEMCAcc = new TH2F("Pt_Y_Pi0GGPCMEMCAcc","Pt_Y_Pi0GGPCMEMCAcc", 1000,0, 100, 200, -1.0, 1.0);
350  fHistPtYPi0GGPCMEMCAcc->Sumw2();
352  fHistPtYPi0GGPCMPHOAcc = new TH2F("Pt_Y_Pi0GGPCMPHOAcc","Pt_Y_Pi0GGPCMPHOAcc", 1000,0, 100, 200, -1.0, 1.0);
353  fHistPtYPi0GGPCMPHOAcc->Sumw2();
355 
356  fHistPtYEtaGG = new TH2F("Pt_Y_EtaGG","Pt_Y_EtaGG", 1000,0, 100, 200, -1.0, 1.0);
357  fHistPtYEtaGG->Sumw2();
359  fHistPtYEtaGGPCMAcc = new TH2F("Pt_Y_EtaGGPCMAcc","Pt_Y_EtaGGPCMAcc", 1000,0, 100, 200, -1.0, 1.0);
360  fHistPtYEtaGGPCMAcc->Sumw2();
362  fHistPtYEtaGGEMCAcc = new TH2F("Pt_Y_EtaGGEMCAcc","Pt_Y_EtaGGEMCAcc", 1000,0, 100, 200, -1.0, 1.0);
363  fHistPtYEtaGGEMCAcc->Sumw2();
365  fHistPtYEtaGGPHOAcc = new TH2F("Pt_Y_EtaGGPHOAcc","Pt_Y_EtaGGPHOAcc", 1000,0, 100, 200, -1.0, 1.0);
366  fHistPtYEtaGGPHOAcc->Sumw2();
368  fHistPtYEtaGGPCMEMCAcc = new TH2F("Pt_Y_EtaGGPCMEMCAcc","Pt_Y_EtaGGPCMEMCAcc", 1000,0, 100, 200, -1.0, 1.0);
369  fHistPtYEtaGGPCMEMCAcc->Sumw2();
371  fHistPtYEtaGGPCMPHOAcc = new TH2F("Pt_Y_EtaGGPCMPHOAcc","Pt_Y_EtaGGPCMPHOAcc", 1000,0, 100, 200, -1.0, 1.0);
372  fHistPtYEtaGGPCMPHOAcc->Sumw2();
374 
375  fHistPtYEtaPrimGG = new TH2F("Pt_Y_EtaPrimGG","Pt_Y_EtaPrimGG", 1000,0, 100, 200, -1.0, 1.0);
376  fHistPtYEtaPrimGG->Sumw2();
378  fHistPtYEtaPrimGGPCMAcc = new TH2F("Pt_Y_EtaPrimGGPCMAcc","Pt_Y_EtaPrimGGPCMAcc", 1000,0, 100, 200, -1.0, 1.0);
379  fHistPtYEtaPrimGGPCMAcc->Sumw2();
381  fHistPtYEtaPrimGGEMCAcc = new TH2F("Pt_Y_EtaPrimGGEMCAcc","Pt_Y_EtaPrimGGEMCAcc", 1000,0, 100, 200, -1.0, 1.0);
382  fHistPtYEtaPrimGGEMCAcc->Sumw2();
384  fHistPtYEtaPrimGGPHOAcc = new TH2F("Pt_Y_EtaPrimGGPHOAcc","Pt_Y_EtaPrimGGPHOAcc", 1000,0, 100, 200, -1.0, 1.0);
385  fHistPtYEtaPrimGGPHOAcc->Sumw2();
387  fHistPtYEtaPrimGGPCMEMCAcc = new TH2F("Pt_Y_EtaPrimGGPCMEMCAcc","Pt_Y_EtaPrimGGPCMEMCAcc", 1000,0, 100, 200, -1.0, 1.0);
390  fHistPtYEtaPrimGGPCMPHOAcc = new TH2F("Pt_Y_EtaPrimGGPCMPHOAcc","Pt_Y_EtaPrimGGPCMPHOAcc", 1000,0, 100, 200, -1.0, 1.0);
393 
394  fHistPtAlphaPi0GGPCMAcc = new TH2F("Pt_Alpha_Pi0GGPCMAcc","Pt_Alpha_Pi0GGPCMAcc", 500,0.1, 50, 100, 0., 1.);
396  fHistPtAlphaPi0GGPCMAcc->Sumw2();
398  fHistPtAlphaPi0GGEMCAcc = new TH2F("Pt_Alpha_Pi0GGEMCAcc","Pt_Alpha_Pi0GGEMCAcc", 500,0.1, 50, 100, 0., 1.);
400  fHistPtAlphaPi0GGEMCAcc->Sumw2();
402  fHistPtAlphaPi0GGPHOAcc = new TH2F("Pt_Alpha_Pi0GGPHOAcc","Pt_Alpha_Pi0GGPHOAcc", 500,0.1, 50, 100, 0., 1.);
404  fHistPtAlphaPi0GGPHOAcc->Sumw2();
406  fHistPtAlphaPi0GGPCMEMCAcc = new TH2F("Pt_Alpha_Pi0GGPCMEMCAcc","Pt_Alpha_Pi0GGPCMEMCAcc", 500,0.1, 50, 200, -1., 1.);
410  fHistPtAlphaPi0GGPCMPHOAcc = new TH2F("Pt_Alpha_Pi0GGPCMPHOAcc","Pt_Alpha_Pi0GGPCMPHOAcc", 500,0.1, 50, 200, -1., 1.);
414 
415  fHistPtAlphaEtaGGPCMAcc = new TH2F("Pt_Alpha_EtaGGPCMAcc","Pt_Alpha_EtaGGPCMAcc", 500,0.1, 50, 100, 0., 1.);
417  fHistPtAlphaEtaGGPCMAcc->Sumw2();
419  fHistPtAlphaEtaGGEMCAcc = new TH2F("Pt_Alpha_EtaGGEMCAcc","Pt_Alpha_EtaGGEMCAcc", 500,0.1, 50, 100, 0., 1.);
421  fHistPtAlphaEtaGGEMCAcc->Sumw2();
423  fHistPtAlphaEtaGGPHOAcc = new TH2F("Pt_Alpha_EtaGGPHOAcc","Pt_Alpha_EtaGGPHOAcc", 500,0.1, 50, 100, 0., 1.);
425  fHistPtAlphaEtaGGPHOAcc->Sumw2();
427  fHistPtAlphaEtaGGPCMEMCAcc = new TH2F("Pt_Alpha_EtaGGPCMEMCAcc","Pt_Alpha_EtaGGPCMEMCAcc", 500,0.1, 50, 200, -1., 1.);
431  fHistPtAlphaEtaGGPCMPHOAcc = new TH2F("Pt_Alpha_EtaGGPCMPHOAcc","Pt_Alpha_EtaGGPCMPHOAcc", 500,0.1, 50, 200, -1., 1.);
435 
436  if (fIsK0 == 1){
437  fHistPtYPi0FromKGG = new TH2F("Pt_Y_Pi0FromKGG","Pt_Y_Pi0FromKGG", 1000,0, 100, 200, -1.0, 1.0);
438  fHistPtYPi0FromKGG->Sumw2();
440  fHistPtYPi0FromKGGPCMAcc = new TH2F("Pt_Y_Pi0FromKGGPCMAcc","Pt_Y_Pi0FromKGGPCMAcc", 1000,0, 100, 200, -1.0, 1.0);
441  fHistPtYPi0FromKGGPCMAcc->Sumw2();
443  fHistPtYPi0FromKGGEMCAcc = new TH2F("Pt_Y_Pi0FromKGGEMCAcc","Pt_Y_Pi0FromKGGEMCAcc", 1000,0, 100, 200, -1.0, 1.0);
444  fHistPtYPi0FromKGGEMCAcc->Sumw2();
446  fHistPtYPi0FromKGGPCMEMCAcc = new TH2F("Pt_Y_Pi0FromKGGPCMEMCAcc","Pt_Y_Pi0FromKGGPCMEMCAcc", 1000,0, 100, 200, -1.0, 1.0);
449  fHistPtYPi0FromKGGEMCPCMAcc = new TH2F("Pt_Y_Pi0FromKGGEMCPCMAcc","Pt_Y_Pi0FromKGGEMCPCMAcc", 1000,0, 100, 200, -1.0, 1.0);
452  fHistPtYPi0FromKGGEMCAccSamePi0 = new TH2F("Pt_Y_Pi0FromKGGEMCAccSamePi0","Pt_Y_Pi0FromKGGEMCAccSamePi0", 1000,0, 100, 200, -1.0, 1.0);
455  fHistPtYPi0FromKGGEMCAccDiffPi0 = new TH2F("Pt_Y_Pi0FromKGGEMCAccDiffPi0","Pt_Y_Pi0FromKGGEMCAccDiffPi0", 1000,0, 100, 200, -1.0, 1.0);
458  }
459 
460 
461 
462  PostData(1, fOutputContainer);
463 }
464 
465 //_____________________________________________________________________________
467 {
468 
469  fInputEvent = InputEvent();
470  // cout << "I found an Event" << endl;
471 
472  fMCEvent = MCEvent();
473  if(fMCEvent == nullptr) fIsMC = 0;
474  if (fIsMC==0) return;
475  // cout << "I found an MC header" << endl;
476 
477  fMCStack = fMCEvent->Stack();
478  if(fMCStack == nullptr) fIsMC = 0;
479  if (fIsMC==0) return;
480 
481  // cout << "the stack is intact" << endl;
482 
483  const AliVVertex* primVtxMC = fMCEvent->GetPrimaryVertex();
484  Double_t mcProdVtxZ = primVtxMC->GetZ();
485 
486  if (TMath::Abs(mcProdVtxZ) < 10 ){
487  fHistNEvents->Fill(0);
488  } else {
489  fHistNEvents->Fill(1);
490  }
491 
492  AliGenEventHeader* mcEH = fMCEvent->GenEventHeader();
493  AliGenPythiaEventHeader *pyH = dynamic_cast<AliGenPythiaEventHeader*>(mcEH);
494  AliGenHijingEventHeader *hiH = 0;
495  AliGenDPMjetEventHeader *dpmH = 0;
496 
497  // it can be only one save some casts
498  // assuming PYTHIA and HIJING are the most likely ones...
499  if(!pyH){
500  hiH = dynamic_cast<AliGenHijingEventHeader*>(mcEH);
501  if(!hiH){
502  dpmH = dynamic_cast<AliGenDPMjetEventHeader*>(mcEH);
503  }
504  }
505 
506  // fetch the trials on a event by event basis, not from pyxsec.root otherwise
507  // we will get a problem when running on proof since Notify may be called
508  // more than once per file
509  // consider storing this information in the AOD output via AliAODHandler
510  Float_t ntrials = 0;
511  if (!pyH || !hiH || dpmH) {
512  AliGenCocktailEventHeader *ccEH = dynamic_cast<AliGenCocktailEventHeader *>(mcEH);
513  if (ccEH) {
514  TList *genHeaders = ccEH->GetHeaders();
515  for (int imch=0; imch<genHeaders->GetEntries(); imch++) {
516  if(!pyH)pyH = dynamic_cast<AliGenPythiaEventHeader*>(genHeaders->At(imch));
517  if(!hiH)hiH = dynamic_cast<AliGenHijingEventHeader*>(genHeaders->At(imch));
518  if(!dpmH)dpmH = dynamic_cast<AliGenDPMjetEventHeader*>(genHeaders->At(imch));
519  }
520  }
521  }
522 
523  // take the trials from the p+p event
524  if(hiH)ntrials = hiH->Trials();
525  if(dpmH)ntrials = dpmH->Trials();
526  if(pyH)ntrials = pyH->Trials();
527  if(ntrials)fHistNEvents->Fill(2,ntrials);
528 
529  Double_t xSection = 0;
530  Double_t ptHard = 0;
531  if (pyH) xSection = pyH->GetXsection();
532  if (pyH) ptHard = pyH->GetPtHard();
533  if (xSection) fHistXSection->Fill(xSection);
534  if (ptHard) fHistPtHard->Fill(ptHard);
535 
537 
538 
539  PostData(1, fOutputContainer);
540 }
541 
542 
543 //________________________________________________________________________
545 {
546  // Loop over all primary MC particle
547  for(Long_t i = 0; i < fMCStack->GetNtrack(); i++) {
548  // fill primary histograms
549  TParticle* particle = nullptr;
550  particle = (TParticle *)fMCStack->Particle(i);
551  if (!particle) continue;
552  Bool_t hasMother = kFALSE;
553  // cout << i << "\t"<< particle->GetMother(0) << endl;
554  if (particle->GetMother(0)>-1)
555  hasMother = kTRUE;
556  TParticle* motherParticle = nullptr;
557  if( hasMother )
558  motherParticle = (TParticle *)fMCStack->Particle(particle->GetMother(0));
559  if (motherParticle)
560  hasMother = kTRUE;
561  else
562  hasMother = kFALSE;
563 
565  if(std::find(kAcceptPdgCodes.begin(), kAcceptPdgCodes.end(), TMath::Abs(particle->GetPdgCode())) == kAcceptPdgCodes.end()) continue; // species not supported
566 
567  if (!(TMath::Abs(particle->Energy()-particle->Pz())>0.)) continue;
568  Double_t yPre = (particle->Energy()+particle->Pz())/(particle->Energy()-particle->Pz());
569  // cout << i << "\t"<< particle->GetPdgCode() << "\t"<< particle->Pz() << "\t" << particle->Energy()<< "\t" << particle->Energy()-particle->Pz() << "\t"<< yPre << endl;
570  if (yPre == 0.) continue;
571 
572  Double_t y = 0.5*TMath::Log(yPre);
573 
574 
575  if (y > 1.000) continue;
576  switch(particle->GetPdgCode()){
577  case kPdgPi0:
578  fHistPtYPi0->Fill(particle->Pt(), particle->Y());
579  if (hasMother){
580  if (TMath::Abs(motherParticle->GetPdgCode()) == kPdgK0Short ||
581  TMath::Abs(motherParticle->GetPdgCode()) == kPdgK0Long ||
582  TMath::Abs(motherParticle->GetPdgCode()) == kPdgKPlus
583  )
584  fHistPtYPi0FromK->Fill(particle->Pt(), particle->Y());
585  if (TMath::Abs(motherParticle->GetPdgCode()) == kPdgLambda)
586  fHistPtYPi0FromLambda->Fill(particle->Pt(), particle->Y());
587  if (motherParticle->GetPdgCode() == kPdgEta)
588  fHistPtYPi0FromEta->Fill(particle->Pt(), particle->Y());
589  }
590  break;
591  case kPdgEta:
592  fHistPtYEta->Fill(particle->Pt(), particle->Y());
593  break;
594  case kPdgEtaPrime:
595  fHistPtYEtaPrim->Fill(particle->Pt(), particle->Y());
596  break;
597  case kPdgOmega:
598  fHistPtYOmega->Fill(particle->Pt(), particle->Y());
599  break;
600  case kPdgPiPlus:
601  fHistPtYPiPl->Fill(particle->Pt(), particle->Y());
602  if (hasMother){
603  if (TMath::Abs(motherParticle->GetPdgCode()) == kPdgK0Short ||
604  TMath::Abs(motherParticle->GetPdgCode()) == kPdgK0Long ||
605  TMath::Abs(motherParticle->GetPdgCode()) == kPdgKPlus
606  )
607  fHistPtYPiPlFromK->Fill(particle->Pt(), particle->Y());
608  }
609  break;
610  case kPdgPiMinus:
611  fHistPtYPiMi->Fill(particle->Pt(), particle->Y());
612  if (hasMother){
613  if (TMath::Abs(motherParticle->GetPdgCode()) == kPdgK0Short ||
614  TMath::Abs(motherParticle->GetPdgCode()) == kPdgK0Long ||
615  TMath::Abs(motherParticle->GetPdgCode()) == kPdgKPlus
616  )
617  fHistPtYPiMiFromK->Fill(particle->Pt(), particle->Y());
618  }
619  break;
620  case kPdgRho0:
621  fHistPtYRho0->Fill(particle->Pt(), particle->Y());
622  break;
623  case kPdgRhoPlus:
624  fHistPtYRhoPl->Fill(particle->Pt(), particle->Y());
625  break;
626  case kPdgRhoMinus:
627  fHistPtYRhoMi->Fill(particle->Pt(), particle->Y());
628  break;
629  case kPdgPhi:
630  fHistPtYPhi->Fill(particle->Pt(), particle->Y());
631  break;
632  case kPdgJPsi:
633  fHistPtYJPsi->Fill(particle->Pt(), particle->Y());
634  break;
635  case 3212:
636  fHistPtYSigma0->Fill(particle->Pt(), particle->Y());
637  break;
638  case kPdgK0Short:
639  fHistPtYK0s->Fill(particle->Pt(), particle->Y());
640  break;
641  case kPdgK0Long:
642  fHistPtYK0l->Fill(particle->Pt(), particle->Y());
643  break;
644  case kPdgKStar:
645  fHistPtYK0star->Fill(particle->Pt(), particle->Y());
646  break;
647  case kPdgDeltaPlusPlus:
648  fHistPtYDeltaPlPl->Fill(particle->Pt(), particle->Y());
649  break;
650  case kPdgDeltaPlus:
651  fHistPtYDeltaPl->Fill(particle->Pt(), particle->Y());
652  break;
653  case kPdgDeltaMinus:
654  fHistPtYDeltaMi->Fill(particle->Pt(), particle->Y());
655  break;
656  case kPdgDelta0:
657  fHistPtYDelta0->Fill(particle->Pt(), particle->Y());
658  break;
659  case kPdgLambda:
660  fHistPtYLambda->Fill(particle->Pt(), particle->Y());
661  break;
662  }
663 
664  // from here on, we are only intested in particles considered primaries in ALICE
665  if ((particle->GetPdgCode()== kPdgPi0 || particle->GetPdgCode()== kPdgEta) && hasMother){
666  if (TMath::Abs(motherParticle->GetPdgCode()) == kPdgK0Short ||
667  TMath::Abs(motherParticle->GetPdgCode()) == kPdgK0Long ||
668  TMath::Abs(motherParticle->GetPdgCode()) == kPdgKPlus ||
669  TMath::Abs(motherParticle->GetPdgCode()) == kPdgLambda ||
670  TMath::Abs(motherParticle->GetPdgCode()) == kPdgSigma0 ||
671  TMath::Abs(motherParticle->GetPdgCode()) == kPdgSigmaPlus ||
672  TMath::Abs(motherParticle->GetPdgCode()) == kPdgSigmaMinus ||
673  TMath::Abs(motherParticle->GetPdgCode()) == kPdgXi0 ||
674  TMath::Abs(motherParticle->GetPdgCode()) == kPdgXiMinus
675  )
676  continue;
677  }
678 
679  // just looking at pi0, etas, etaprims
680  if (particle->GetPdgCode()==kPdgPi0 || particle->GetPdgCode()==kPdgEta || particle->GetPdgCode() == kPdgEtaPrime){
681  if (particle->GetNDaughters() != 2) continue; // only the two particle decays
682  UChar_t acceptanceGamma[2] = {0,0};
683  Double_t energyGamma[2] = {0,0};
684  Bool_t allOK[2] = {kFALSE,kFALSE};
685 
686 
687  for(Int_t j=0;j<2;j++){
688  TParticle *daughter=fMCStack->Particle(particle->GetDaughter(j));
689  if (!daughter) continue;
690 
691  // Is Daughter a Photon?
692  if(daughter->GetPdgCode() == 22) allOK[j] =kTRUE;
693  if(IsInPCMAcceptance(daughter)) SETBIT(acceptanceGamma[j], kPCMAcceptance);
694  if(IsInPHOSAcceptance(daughter)) SETBIT(acceptanceGamma[j], kPHOSAcceptance);
695  if(IsInEMCalAcceptance(daughter)) SETBIT(acceptanceGamma[j], kEMCALAcceptance);
696  energyGamma[j] = daughter->Energy();
697 
698 
699  }
700 
701  if (!(allOK[0] && allOK[1])) continue;
702 
703  Double_t alpha = (energyGamma[0]-energyGamma[1])/(energyGamma[0]+energyGamma[1]);
704 
705  if (particle->GetPdgCode()==kPdgPi0){
706  fHistPtYPi0GG->Fill(particle->Pt(), particle->Y());
707  if (TESTBIT(acceptanceGamma[0], kPCMAcceptance) && TESTBIT(acceptanceGamma[1], kPCMAcceptance)){
708  fHistPtYPi0GGPCMAcc->Fill(particle->Pt(), particle->Y());
709  fHistPtAlphaPi0GGPCMAcc->Fill(particle->Pt(), TMath::Abs(alpha));
710  }
711  if (TESTBIT(acceptanceGamma[0], kEMCALAcceptance) && TESTBIT(acceptanceGamma[1], kEMCALAcceptance)){
712  fHistPtYPi0GGEMCAcc->Fill(particle->Pt(), particle->Y());
713  fHistPtAlphaPi0GGEMCAcc->Fill(particle->Pt(), TMath::Abs(alpha));
714  }
715  if (TESTBIT(acceptanceGamma[0], kPHOSAcceptance) && TESTBIT(acceptanceGamma[1], kPHOSAcceptance)){
716  fHistPtYPi0GGPHOAcc->Fill(particle->Pt(), particle->Y());
717  fHistPtAlphaPi0GGPHOAcc->Fill(particle->Pt(), TMath::Abs(alpha));
718  }
719  if ( (TESTBIT(acceptanceGamma[0], kPCMAcceptance) && TESTBIT(acceptanceGamma[1], kEMCALAcceptance)) ||
720  (TESTBIT(acceptanceGamma[1], kPCMAcceptance) && TESTBIT(acceptanceGamma[0], kPCMAcceptance))
721  ){
722  fHistPtYPi0GGPCMEMCAcc->Fill(particle->Pt(), particle->Y());
723  if (!TESTBIT(acceptanceGamma[1], kEMCALAcceptance)) alpha = (energyGamma[1]-energyGamma[0])/(energyGamma[0]+energyGamma[1]);
724  fHistPtAlphaPi0GGPCMEMCAcc->Fill(particle->Pt(), alpha);
725  }
726  if ( (TESTBIT(acceptanceGamma[0], kPCMAcceptance) && TESTBIT(acceptanceGamma[1], kPHOSAcceptance)) ||
727  (TESTBIT(acceptanceGamma[1], kPCMAcceptance) && TESTBIT(acceptanceGamma[0], kPHOSAcceptance))
728  ){
729  fHistPtYPi0GGPCMPHOAcc->Fill(particle->Pt(), particle->Y());
730  if (!TESTBIT(acceptanceGamma[1], kPHOSAcceptance)) alpha = (energyGamma[1]-energyGamma[0])/(energyGamma[0]+energyGamma[1]);
731  fHistPtAlphaPi0GGPCMPHOAcc->Fill(particle->Pt(), alpha);
732  }
733  }
734  if (particle->GetPdgCode()==kPdgEta){
735  fHistPtYEtaGG->Fill(particle->Pt(), particle->Y());
736  if (TESTBIT(acceptanceGamma[0], kPCMAcceptance) && TESTBIT(acceptanceGamma[1], kPCMAcceptance)){
737  fHistPtYEtaGGPCMAcc->Fill(particle->Pt(), particle->Y());
738  fHistPtAlphaEtaGGPCMAcc->Fill(particle->Pt(), TMath::Abs(alpha));
739  }
740  if (TESTBIT(acceptanceGamma[0], kEMCALAcceptance) && TESTBIT(acceptanceGamma[1], kEMCALAcceptance)){
741  fHistPtYEtaGGEMCAcc->Fill(particle->Pt(), particle->Y());
742  fHistPtAlphaEtaGGEMCAcc->Fill(particle->Pt(), TMath::Abs(alpha));
743  }
744  if (TESTBIT(acceptanceGamma[0], kPHOSAcceptance) && TESTBIT(acceptanceGamma[1], kPHOSAcceptance)){
745  fHistPtYEtaGGPHOAcc->Fill(particle->Pt(), particle->Y());
746  fHistPtAlphaEtaGGPHOAcc->Fill(particle->Pt(), TMath::Abs(alpha));
747  }
748  if ( (TESTBIT(acceptanceGamma[0], kPCMAcceptance) && TESTBIT(acceptanceGamma[1], kEMCALAcceptance)) ||
749  (TESTBIT(acceptanceGamma[1], kPCMAcceptance) && TESTBIT(acceptanceGamma[0], kEMCALAcceptance))
750  ){
751  fHistPtYEtaGGPCMEMCAcc->Fill(particle->Pt(), particle->Y());
752  if (!TESTBIT(acceptanceGamma[1], kEMCALAcceptance)) alpha = (energyGamma[1]-energyGamma[0])/(energyGamma[0]+energyGamma[1]);
753  fHistPtAlphaEtaGGPCMEMCAcc->Fill(particle->Pt(), alpha);
754  }
755  if ( (TESTBIT(acceptanceGamma[0], kPCMAcceptance) && TESTBIT(acceptanceGamma[1], kPHOSAcceptance)) ||
756  (TESTBIT(acceptanceGamma[1], kPCMAcceptance) && TESTBIT(acceptanceGamma[0], kPHOSAcceptance))
757  ){
758  fHistPtYEtaGGPCMPHOAcc->Fill(particle->Pt(), particle->Y());
759  if (TESTBIT(!acceptanceGamma[1],kPHOSAcceptance)) alpha = (energyGamma[1]-energyGamma[0])/(energyGamma[0]+energyGamma[1]);
760  fHistPtAlphaEtaGGPCMPHOAcc->Fill(particle->Pt(), alpha);
761  }
762  }
763  if (particle->GetPdgCode()==kPdgEtaPrime){
764  fHistPtYEtaPrimGG->Fill(particle->Pt(), particle->Y());
765  if (TESTBIT(acceptanceGamma[0], kPCMAcceptance) && TESTBIT(acceptanceGamma[1], kPCMAcceptance))
766  fHistPtYEtaPrimGGPCMAcc->Fill(particle->Pt(), particle->Y());
767  if (TESTBIT(acceptanceGamma[0], kEMCALAcceptance) && TESTBIT(acceptanceGamma[1], kEMCALAcceptance))
768  fHistPtYEtaPrimGGEMCAcc->Fill(particle->Pt(), particle->Y());
769  if (TESTBIT(acceptanceGamma[0], kPHOSAcceptance) && TESTBIT(acceptanceGamma[1], kPHOSAcceptance))
770  fHistPtYEtaPrimGGPHOAcc->Fill(particle->Pt(), particle->Y());
771  if ( (TESTBIT(acceptanceGamma[0], kPCMAcceptance) && TESTBIT(acceptanceGamma[1], kEMCALAcceptance)) ||
772  (TESTBIT(acceptanceGamma[1], kPCMAcceptance) && TESTBIT(acceptanceGamma[0], kEMCALAcceptance))
773  )
774  fHistPtYEtaPrimGGPCMEMCAcc->Fill(particle->Pt(), particle->Y());
775  if ( (TESTBIT(acceptanceGamma[0], kPCMAcceptance) && TESTBIT(acceptanceGamma[1], kPHOSAcceptance)) ||
776  (TESTBIT(acceptanceGamma[1], kPCMAcceptance) && TESTBIT(acceptanceGamma[0], kPHOSAcceptance))
777  )
778  fHistPtYEtaPrimGGPCMPHOAcc->Fill(particle->Pt(), particle->Y());
779  }
780  }
781 
782 
783  if(fIsK0 == 0) continue;
784  if( particle->GetPdgCode() == kPdgK0Short){
785  if (particle->GetNDaughters() != 2) continue;
786  UChar_t acceptanceGamma[2] = {0,0};
787  Double_t energyGamma[2] = {0,0};
788  Bool_t allOK[2] = {kFALSE,kFALSE};
789  UChar_t gdAcceptanceGamma[4] = {0,0,0,0};
790  Double_t gdEnergyGamma[4] = {0,0,0,0};
791  Bool_t allGDOK[4] = {kFALSE, kFALSE, kFALSE,kFALSE};
792  for(Int_t k=0;k<2;k++){
793  TParticle *daughter=fMCStack->Particle(particle->GetDaughter(k));
794  if (!daughter) continue;
795 
796  // Is Daughter a pi0?
797  if (daughter->GetPdgCode() == kPdgPi0){
798  allOK[k] = kTRUE;
799  if(daughter->GetNDaughters() != 2) continue;
800 
801  for(Int_t h=0;h<2;h++){
802  TParticle *granddaughter = fMCStack->Particle(daughter->GetDaughter(k));
803  if(granddaughter->GetPdgCode() == 22) allGDOK[2*k + h] = kTRUE;
804  if(IsInPCMAcceptance(granddaughter)) SETBIT(gdAcceptanceGamma[2*k+h], kPCMAcceptance);
805  if(IsInEMCalAcceptance(granddaughter)) SETBIT(gdAcceptanceGamma[2*k+h], kEMCALAcceptance);
806  gdEnergyGamma[2*k+h] = granddaughter->Energy();
807  }
808  }
809  }
810 
811  if(allOK[0] && allOK[1]){
812  fHistPtYPi0FromKGG->Fill(particle->Pt(), particle->Y());
813  }
814 
815  if (!(allGDOK[0] && allGDOK[1] && allGDOK[2] && allGDOK[3])) continue;
816 
817  if (TESTBIT(gdAcceptanceGamma[0], kPCMAcceptance) && TESTBIT(gdAcceptanceGamma[1], kPCMAcceptance)
818  && TESTBIT(gdAcceptanceGamma[2], kPCMAcceptance) && TESTBIT(gdAcceptanceGamma[3], kPCMAcceptance) )
819  fHistPtYPi0FromKGGPCMAcc->Fill(particle->Pt(),particle->Y());
820 
821  if (TESTBIT(gdAcceptanceGamma[0], kEMCALAcceptance) && TESTBIT(gdAcceptanceGamma[1], kEMCALAcceptance)
822  && TESTBIT(gdAcceptanceGamma[2], kEMCALAcceptance) && TESTBIT(gdAcceptanceGamma[3], kEMCALAcceptance) )
823  fHistPtYPi0FromKGGEMCAcc->Fill(particle->Pt(),particle->Y());
824 
825  if ((TESTBIT(gdAcceptanceGamma[0], kEMCALAcceptance) && TESTBIT(gdAcceptanceGamma[1], kPCMAcceptance)
826  && TESTBIT(gdAcceptanceGamma[2], kPCMAcceptance) && TESTBIT(gdAcceptanceGamma[3], kPCMAcceptance)) ||
827  (TESTBIT(gdAcceptanceGamma[0], kPCMAcceptance) && TESTBIT(gdAcceptanceGamma[1], kEMCALAcceptance)
828  && TESTBIT(gdAcceptanceGamma[2], kPCMAcceptance) && TESTBIT(gdAcceptanceGamma[3], kPCMAcceptance)) ||
829  (TESTBIT(gdAcceptanceGamma[0], kPCMAcceptance) && TESTBIT(gdAcceptanceGamma[1], kPCMAcceptance)
830  && TESTBIT(gdAcceptanceGamma[2], kEMCALAcceptance) && TESTBIT(gdAcceptanceGamma[3], kPCMAcceptance)) ||
831  (TESTBIT(gdAcceptanceGamma[0], kPCMAcceptance) && TESTBIT(gdAcceptanceGamma[1], kPCMAcceptance)
832  && TESTBIT(gdAcceptanceGamma[2], kPCMAcceptance) && TESTBIT(gdAcceptanceGamma[3], kEMCALAcceptance)))
833 
834  fHistPtYPi0FromKGGPCMEMCAcc->Fill(particle->Pt(),particle->Y());
835 
836  if ((TESTBIT(gdAcceptanceGamma[0], kPCMAcceptance) && TESTBIT(gdAcceptanceGamma[1], kEMCALAcceptance)
837  && TESTBIT(gdAcceptanceGamma[2], kEMCALAcceptance) && TESTBIT(gdAcceptanceGamma[3], kEMCALAcceptance)) ||
838  (TESTBIT(gdAcceptanceGamma[0], kEMCALAcceptance) && TESTBIT(gdAcceptanceGamma[1], kPCMAcceptance)
839  && TESTBIT(gdAcceptanceGamma[2], kEMCALAcceptance) && TESTBIT(gdAcceptanceGamma[3], kEMCALAcceptance)) ||
840  (TESTBIT(gdAcceptanceGamma[0], kEMCALAcceptance) && TESTBIT(gdAcceptanceGamma[1], kEMCALAcceptance)
841  && TESTBIT(gdAcceptanceGamma[2], kPCMAcceptance) && TESTBIT(gdAcceptanceGamma[3], kEMCALAcceptance)) ||
842  (TESTBIT(gdAcceptanceGamma[0], kEMCALAcceptance) && TESTBIT(gdAcceptanceGamma[1], kEMCALAcceptance)
843  && TESTBIT(gdAcceptanceGamma[2], kEMCALAcceptance) && TESTBIT(gdAcceptanceGamma[3], kPCMAcceptance)))
844 
845  fHistPtYPi0FromKGGEMCPCMAcc->Fill(particle->Pt(),particle->Y());
846 
847  if ((TESTBIT(gdAcceptanceGamma[0], kEMCALAcceptance) && TESTBIT(gdAcceptanceGamma[1], kEMCALAcceptance) &&
848  TESTBIT(gdAcceptanceGamma[2], kPCMAcceptance) && TESTBIT(gdAcceptanceGamma[3], kPCMAcceptance))||
849  (TESTBIT(gdAcceptanceGamma[0], kPCMAcceptance) && TESTBIT(gdAcceptanceGamma[1], kPCMAcceptance) &&
850  TESTBIT(gdAcceptanceGamma[2], kEMCALAcceptance) && TESTBIT(gdAcceptanceGamma[3], kEMCALAcceptance)))
851 
852  fHistPtYPi0FromKGGEMCAccSamePi0->Fill(particle->Pt(),particle->Y());
853 
854  if ((TESTBIT(gdAcceptanceGamma[0], kEMCALAcceptance) && TESTBIT(gdAcceptanceGamma[2], kEMCALAcceptance)&&
855  TESTBIT(gdAcceptanceGamma[1], kPCMAcceptance) && TESTBIT(gdAcceptanceGamma[3], kPCMAcceptance))||
856  (TESTBIT(gdAcceptanceGamma[0], kEMCALAcceptance) && TESTBIT(gdAcceptanceGamma[3], kEMCALAcceptance)&&
857  TESTBIT(gdAcceptanceGamma[1], kPCMAcceptance) && TESTBIT(gdAcceptanceGamma[2], kPCMAcceptance))||
858  (TESTBIT(gdAcceptanceGamma[1], kEMCALAcceptance) && TESTBIT(gdAcceptanceGamma[2], kEMCALAcceptance)&&
859  TESTBIT(gdAcceptanceGamma[0], kPCMAcceptance) && TESTBIT(gdAcceptanceGamma[3], kPCMAcceptance))||
860  (TESTBIT(gdAcceptanceGamma[1], kEMCALAcceptance) && TESTBIT(gdAcceptanceGamma[3], kEMCALAcceptance)&&
861  TESTBIT(gdAcceptanceGamma[0], kPCMAcceptance) && TESTBIT(gdAcceptanceGamma[2], kPCMAcceptance)))
862 
863  fHistPtYPi0FromKGGEMCAccDiffPi0->Fill(particle->Pt(),particle->Y());
864  }
865  }
866 }
867 
868 //________________________________________________________________________
870  const Double_t kBoundaryEta = 0.900001;
871  if (part->Pt() > 0.050 && TMath::Abs(part->Eta()) < kBoundaryEta) return true;
872 
873  return false;
874 }
875 
876 //________________________________________________________________________
878  const Double_t kBoundaryEtaMin = -0.13;
879  const Double_t kBoundaryEtaMax = 0.13;
880  const Double_t kBoundaryPhiMin = 4.54;
881  const Double_t kBoundaryPhiMax = 5.59;
882  if (part->Pt() < 0.300) return false;
883  if (part->Eta() > kBoundaryEtaMax || part->Eta() < kBoundaryEtaMin) return false;
884  if (part->Phi() > kBoundaryPhiMax || part->Phi() < kBoundaryPhiMin) return false;
885  return true;
886 }
887 
888 //________________________________________________________________________
890  const Double_t kBoundaryEtaMin = -0.6687;
891  const Double_t kBoundaryEtaMax = 0.66465;
892  const Double_t kBoundaryPhiMin = 1.39626;
893  const Double_t kBoundaryPhiMax = 3.15;
894  if (part->Pt() < 0.400) return false;
895  if (part->Eta() > kBoundaryEtaMax || part->Eta() < kBoundaryEtaMin) return false;
896  if (part->Phi() > kBoundaryPhiMax || part->Phi() < kBoundaryPhiMin) return false;
897  return true;
898 }
899 
900 //________________________________________________________________________
902 {
903 
904  //fOutputContainer->Print(); // Will crash on GRID
905 }
906 
907 
908 //_________________________________________________________________________________
910  TAxis *axisafter = histoRebin->GetXaxis();
911  Int_t bins = axisafter->GetNbins();
912  Double_t from = axisafter->GetXmin();
913  Double_t to = axisafter->GetXmax();
914  Double_t *newbins = new Double_t[bins+1];
915  newbins[0] = from;
916  Double_t factor = TMath::Power(to/from, 1./bins);
917  for(Int_t i=1; i<=bins; ++i) newbins[i] = factor * newbins[i-1];
918  axisafter->Set(bins, newbins);
919  delete [] newbins;
920 }
921 
922 //_________________________________________________________________________________
924  TAxis *axisafter = histoRebin->GetXaxis();
925  Int_t bins = axisafter->GetNbins();
926  Double_t from = axisafter->GetXmin();
927  Double_t to = axisafter->GetXmax();
928  Double_t *newbins = new Double_t[bins+1];
929  newbins[0] = from;
930  Double_t factor = TMath::Power(to/from, 1./bins);
931  for(Int_t i=1; i<=bins; ++i) newbins[i] = factor * newbins[i-1];
932  axisafter->Set(bins, newbins);
933  delete [] newbins;
934 }
TH2F * fHistPtYPi0FromKGGEMCAccDiffPi0
histo for Pi0 from K gamma gamma channel, acceptance by same pi0
TH2F * fHistPtYEtaGGPCMEMCAcc
histo for Etas gamma gamma channel, PHOS acceptance
TH2F * fHistPtYPi0FromKGGEMCAccSamePi0
histo for Pi0 from K gamma gamma channel, EMC-PCM acceptance
double Double_t
Definition: External.C:58
Definition: External.C:236
TH2F * fHistPtAlphaPi0GGPHOAcc
histo for Pi0s gamma gamma channel, EMCal acceptance
TH2F * fHistPtYPi0FromKGGEMCPCMAcc
histo for Pi0 from K gamma gamma channel, PCM-EMC acceptance
TH2F * fHistPtAlphaEtaGGPCMAcc
histo for Etas gamma gamma channel, PCM-PHOS acceptance
TH2F * fHistPtYEtaPrimGGPCMEMCAcc
histo for EtaPrims gamma gamma channel, PHOS acceptance
virtual void Terminate(const Option_t *)
TH2F * fHistPtYPi0GGEMCAcc
histo for Pi0s gamma gamma channel, PCM acceptance
TH2F * fHistPtYDeltaMi
histo for Delta+
TH2F * fHistPtYPi0GGPCMAcc
histo for Pi0s gamma gamma channel
TH2F * fHistPtYEtaGGPCMPHOAcc
histo for Etas gamma gamma channel, PCM-EMCal acceptance
bool IsInPCMAcceptance(TParticle *part) const
TH2F * fHistPtAlphaEtaGGPCMEMCAcc
histo for Etas gamma gamma channel, PHOS acceptance
TH2F * fHistPtYEtaGGPHOAcc
histo for Etas gamma gamma channel, EMCal acceptance
TH2F * fHistPtYEtaGG
histo for Pi0s gamma gamma channel, PCM-PHOS acceptance
TH2F * fHistPtYSigma0
histo for J/psi
TH1F * fHistNEvents
Output container.
int Int_t
Definition: External.C:63
TH2F * fHistPtYDeltaPl
histo for Delta++
float Float_t
Definition: External.C:68
TH2F * fHistPtYPi0GGPCMEMCAcc
histo for Pi0s gamma gamma channel, PHOS acceptance
TH2F * fHistPtYPi0GG
histo for Pi-s from Ks
TH2F * fHistPtAlphaPi0GGPCMPHOAcc
histo for Pi0s gamma gamma channel, PCM-EMCal acceptance
TH2F * fHistPtYPi0GGPHOAcc
histo for Pi0s gamma gamma channel, EMCal acceptance
TH2F * fHistPtYEtaPrimGGPCMPHOAcc
histo for EtaPrims gamma gamma channel, PCM-EMCal acceptance
TH2F * fHistPtYEtaGGEMCAcc
histo for Etas gamma gamma channel, PCM acceptance
bool IsInEMCalAcceptance(TParticle *part) const
TH2F * fHistPtYPiMiFromK
histo for Pi+s form Ks
Definition: External.C:212
TH2F * fHistPtYRho0
histo for Omegas
TH2F * fHistPtAlphaEtaGGPCMPHOAcc
histo for Etas gamma gamma channel, PCM-EMCal acceptance
TH2F * fHistPtYPi0FromKGGEMCAcc
histo for Pi0 from K gamma gamma channel, PCM acceptance
TH2F * fHistPtYEtaPrimGGPHOAcc
histo for EtaPrims gamma gamma channel, EMCal acceptance
TH2F * fHistPtYPi0GGPCMPHOAcc
histo for Pi0s gamma gamma channel, PCM-EMCal acceptance
TH2F * fHistPtYLambda
histo for Delta0
TH2F * fHistPtAlphaPi0GGPCMAcc
histo for Pi0s gamma gamma channel, PCM-PHOS acceptance
TH1D * fHistXSection
number of events histo
TH2F * fHistPtAlphaPi0GGPCMEMCAcc
histo for Pi0s gamma gamma channel, PHOS acceptance
TH2F * fHistPtYPi0FromK
histo for Pi0s from Lambdas
TH2F * fHistPtYDelta0
histo for Delta-
TH2F * fHistPtYEtaPrimGG
histo for Etas gamma gamma channel, PCM-PHOS acceptance
ClassImp(AliAnalysisTaskGammaPureMC) AliAnalysisTaskGammaPureMC
TH2F * fHistPtYEtaPrimGGEMCAcc
histo for EtaPrims gamma gamma channel, PCM acceptance
Definition: External.C:220
TH2F * fHistPtYK0s
histo for Sigma0
TH2F * fHistPtAlphaPi0GGEMCAcc
histo for Pi0s gamma gamma channel, PCM acceptance
TH2F * fHistPtYPi0FromKGG
histo for Pi0s gamma gamma channel, PCM-PHOS acceptance
TH2F * fHistPtYEtaGGPCMAcc
histo for Etas gamma gamma channel
TH2F * fHistPtYOmega
histo for EtaPrims
TH2F * fHistPtYPiPlFromK
histo for Pi0s from Ks
const char Option_t
Definition: External.C:48
bool IsInPHOSAcceptance(TParticle *part) const
bool Bool_t
Definition: External.C:53
TH2F * fHistPtAlphaEtaGGEMCAcc
histo for Etas gamma gamma channel, PCM acceptance
TH2F * fHistPtAlphaEtaGGPHOAcc
histo for Etas gamma gamma channel, EMCal acceptance
TList * fOutputContainer
stack belonging to MC event
Int_t fIsK0
histo for Pi0 from K gamma gamma channel, mixed acceptance
TH2F * fHistPtYPi0FromLambda
histo for Pi0s from Etas
TH2F * fHistPtYPi0FromKGGPCMAcc
histo for Pi0 from K gamma gamma channel
TH2F * fHistPtYEtaPrimGGPCMAcc
histo for Etas gamma gamma channel
TH2F * fHistPtYPi0FromEta
histo for Lambda
Definition: External.C:196
TH2F * fHistPtYPi0FromKGGPCMEMCAcc
histo for Pi0 from K gamma gamma channel, EMC acceptance