1 #ifndef ALIANLYSISTASKGAMMACONVV1_cxx
2 #define ALIANLYSISTASKGAMMACONVV1_cxx
4 #include "AliAnalysisTaskSE.h"
5 #include "AliESDtrack.h"
6 #include "AliV0ReaderV1.h"
7 #include "AliKFConversionPhoton.h"
8 #include "AliGammaConversionAODBGHandler.h"
9 #include "AliConversionAODBGHandlerRP.h"
10 #include "AliConversionMesonCuts.h"
11 #include "AliAnalysisManager.h"
12 #include "TProfile2D.h"
16 class AliAnalysisTaskGammaConvV1 : public AliAnalysisTaskSE {
19 AliAnalysisTaskGammaConvV1();
20 AliAnalysisTaskGammaConvV1(const char *name);
21 virtual ~AliAnalysisTaskGammaConvV1();
23 virtual void UserCreateOutputObjects();
24 virtual Bool_t Notify();
25 virtual void UserExec(Option_t *);
26 virtual void Terminate(const Option_t*);
29 void SetIsHeavyIon(Int_t flag){
30 if (flag == 1 || flag ==2 ){
37 void SetIsMC(Bool_t isMC){fIsMC=isMC;}
38 void SetDoMesonAnalysis(Bool_t flag){fDoMesonAnalysis = flag;}
39 void SetDoMesonQA(Bool_t flag){fDoMesonQA = flag;}
40 void SetDoPhotonQA(Bool_t flag){fDoPhotonQA = flag;}
41 void ProcessPhotonCandidates();
42 void CalculatePi0Candidates();
43 void CalculateBackground();
44 void CalculateBackgroundRP();
45 void ProcessMCParticles();
46 void ProcessAODMCParticles();
47 void RelabelAODPhotonCandidates(Bool_t mode);
48 void ProcessTruePhotonCandidates( AliAODConversionPhoton* TruePhotonCandidate);
49 void ProcessTruePhotonCandidatesAOD( AliAODConversionPhoton* TruePhotonCandidate);
50 void ProcessTrueMesonCandidates( AliAODConversionMother *Pi0Candidate, AliAODConversionPhoton *TrueGammaCandidate0, AliAODConversionPhoton *TrueGammaCandidate1);
51 void ProcessTrueMesonCandidatesAOD(AliAODConversionMother *Pi0Candidate, AliAODConversionPhoton *TrueGammaCandidate0, AliAODConversionPhoton *TrueGammaCandidate1);
52 void RotateParticle(AliAODConversionPhoton *gamma);
53 void SetConversionCutList(Int_t nCuts, TList *CutArray){
57 void SetMesonCutList(Int_t nCuts, TList *CutArray){
59 fMesonCutArray = CutArray;
63 void SetMoveParticleAccordingToVertex(Bool_t flag){fMoveParticleAccordingToVertex = flag;}
64 void FillPhotonCombinatorialBackgroundHist(AliAODConversionPhoton *TruePhotonCandidate, Int_t pdgCode[]);
65 void MoveParticleAccordingToVertex(AliAODConversionPhoton* particle,const AliGammaConversionAODBGHandler::GammaConversionVertex *vertex);
66 void UpdateEventByEventData();
69 AliV0ReaderV1 *fV0Reader;
70 AliGammaConversionAODBGHandler **fBGHandler;
71 AliConversionAODBGHandlerRP **fBGHandlerRP;
72 AliVEvent *fInputEvent;
79 TList **fPhotonDCAList;
80 TList **fMesonDCAList;
82 TList **fTrueMotherRapList;
84 TList **fHeaderNameList;
85 TList *fOutputContainer;
86 TClonesArray *fReaderGammas;
87 TList *fGammaCandidates;
89 AliConversionCuts *fConversionCuts;
90 TList *fMesonCutArray;
91 AliConversionMesonCuts *fMesonCuts;
92 TH1F **hESDConvGammaPt;
93 TTree **tESDConvGammaPtDcazCat;
99 UChar_t iPhotonMCInfo; // 0: garbage,
101 // 2: secondary photon not from eta or k0s,
102 // 3: secondary photon from eta,
103 // 4: secondary photon from k0s,
106 TH2F **hESDMotherInvMassPt;
107 THnSparseF **sESDMotherInvMassPtZM;
108 TH2F **hESDMotherBackInvMassPt;
109 THnSparseF **sESDMotherBackInvMassPtZM;
110 TH2F **hESDMotherInvMassEalpha;
112 TH1F **hMCAllGammaPt;
113 TH1F **hMCDecayGammaPi0Pt;
114 TH1F **hMCDecayGammaRhoPt;
115 TH1F **hMCDecayGammaEtaPt;
116 TH1F **hMCDecayGammaOmegaPt;
117 TH1F **hMCDecayGammaEtapPt;
118 TH1F **hMCDecayGammaPhiPt;
119 TH1F **hMCDecayGammaSigmaPt;
120 TH1F **hMCConvGammaPt;
121 TH1F **hMCConvGammaR;
122 TH1F **hMCConvGammaEta;
123 TH1F **hMCConvGammaRSPt;
124 TH1F **hMCConvGammaRSR;
125 TH1F **hMCConvGammaRSEta;
127 TH1F **hMCPi0WOWeightPt;
129 TH1F **hMCPi0InAccPt;
130 TH1F **hMCEtaInAccPt;
134 TH1F **hMCK0sWOWeightPt;
136 TH2F **hESDTrueMotherInvMassPt;
137 TH2F **hESDTruePrimaryMotherInvMassPt;
138 TH2F **hESDTruePrimaryMotherW0WeightingInvMassPt;
139 TProfile2D **pESDTruePrimaryMotherWeightsInvMassPt;
140 TH2F **hESDTruePrimaryPi0MCPtResolPt;
141 TH2F **hESDTruePrimaryEtaMCPtResolPt;
142 TH2F **hESDTrueSecondaryMotherInvMassPt;
143 TH2F **hESDTrueSecondaryMotherFromK0sInvMassPt;
144 TH1F **hESDTrueK0sWithPi0DaughterMCPt;
145 TH2F **hESDTrueSecondaryMotherFromEtaInvMassPt;
146 TH1F **hESDTrueEtaWithPi0DaughterMCPt;
147 TH2F **hESDTrueBckGGInvMassPt;
148 TH2F **hESDTrueBckContInvMassPt;
149 TH2F **hESDTrueMotherDalitzInvMassPt;
150 TH1F **hESDTrueConvGammaPt;
151 TH2F **hESDCombinatorialPt;
152 TH1F **hESDTruePrimaryConvGammaPt;
153 TH2F **hESDTruePrimaryConvGammaESDPtMCPt;
154 TH2F **hESDTruePrimaryConvGammaRSESDPtMCPt;
155 TH1F **hESDTrueSecondaryConvGammaPt;
156 TH1F **hESDTrueSecondaryConvGammaFromXFromK0sPt;
157 TH1F **hESDTrueSecondaryConvGammaFromXFromLambdaPt;
158 TH2F **hESDTrueDalitzPsiPairDeltaPhi;
159 TH2F **hESDTrueGammaPsiPairDeltaPhi;
161 TH1I **hNGoodESDTracks;
162 TH1I **hNGammaCandidates;
164 TProfile **hEtaShift;
165 TTree **tESDMesonsInvMassPtDcazMinDcazMaxFlag;
168 Float_t fDCAzGammaMin;
169 Float_t fDCAzGammaMax;
171 UChar_t iMesonMCInfo; // 0: garbage,
173 // 2: secondary meson not from eta or k0s,
174 // 3: secondary meson from eta,
175 // 4: secondary meson from k0s,
177 // 6: primary meson gamma-gamma-channel
179 Int_t fnGammaCandidates;
180 Double_t *fUnsmearedPx; //[fnGammaCandidates]
181 Double_t *fUnsmearedPy; //[fnGammaCandidates]
182 Double_t *fUnsmearedPz; //[fnGammaCandidates]
183 Double_t *fUnsmearedE; //[fnGammaCandidates]
184 Int_t *fMCStackPos; //[fnGammaCandidates]
185 Int_t *fMCStackNeg; //[fnGammaCandidates]
186 Int_t *fESDArrayPos; //[fnGammaCandidates]
187 Int_t *fESDArrayNeg; //[fnGammaCandidates]
190 Bool_t fMoveParticleAccordingToVertex;
192 Bool_t fDoMesonAnalysis;
195 Bool_t fIsFromMBHeader;
200 AliAnalysisTaskGammaConvV1(const AliAnalysisTaskGammaConvV1&); // Prevent copy-construction
201 AliAnalysisTaskGammaConvV1 &operator=(const AliAnalysisTaskGammaConvV1&); // Prevent assignment
204 ClassDef(AliAnalysisTaskGammaConvV1, 7);