1 #ifndef ALIANLYSISTASKGAMMACONVFLOW_cxx
2 #define ALIANLYSISTASKGAMMACONVFLOW_cxx
4 #include "AliAnalysisTaskSE.h"
5 #include "AliESDtrack.h"
6 #include "AliV0ReaderV1.h"
7 #include "AliConvEventCuts.h"
8 #include "AliKFConversionPhoton.h"
9 #include "AliGammaConversionAODBGHandler.h"
10 #include "AliConversionAODBGHandlerRP.h"
11 #include "AliConversionMesonCuts.h"
12 #include "AliAnalysisManager.h"
13 #include "TProfile2D.h"
18 class AliFlowTrackCuts;
21 class AliFlowCandidateTrack;
22 class AliFlowEventSimple;
25 class AliAnalysisTaskGammaConvFlow : public AliAnalysisTaskSE {
28 AliAnalysisTaskGammaConvFlow();
29 AliAnalysisTaskGammaConvFlow(const char *name);
30 virtual ~AliAnalysisTaskGammaConvFlow();
32 virtual void UserCreateOutputObjects();
33 virtual Bool_t Notify();
34 virtual void UserExec(Option_t *);
35 virtual void Terminate(const Option_t*);
37 void SetIsHeavyIon(Int_t flag){
42 void SetDoMesonAnalysis(Bool_t flag){fDoMesonAnalysis = flag;}
43 void SetDoMesonQA(Int_t flag){fDoMesonQA = flag;}
44 void SetDoPhotonQA(Int_t flag){fDoPhotonQA = flag;}
45 void ProcessPhotonCandidates();
46 // void CalculatePi0Candidates();
47 //void CalculateBackground();
48 // void CalculateBackgroundRP();
50 // void RelabelAODPhotonCandidates(Bool_t mode);
52 //void RotateParticle(AliAODConversionPhoton *gamma);
53 //void RotateParticleAccordingToEP(AliAODConversionPhoton *gamma, Double_t previousEventEP, Double_t thisEventEP);
55 void SetEventCutList(Int_t nCuts, TList *CutArray){
57 fEventCutArray = CutArray;
59 void SetConversionCutList(Int_t nCuts, TList *CutArray){
63 // void SetMesonCutList(Int_t nCuts, TList *CutArray){
65 // fMesonCutArray = CutArray;
69 // void SetMoveParticleAccordingToVertex(Bool_t flag){fMoveParticleAccordingToVertex = flag;}
70 // void FillPhotonCombinatorialBackgroundHist(AliAODConversionPhoton *TruePhotonCandidate, Int_t pdgCode[]);
71 // void MoveParticleAccordingToVertex(AliAODConversionPhoton* particle,const AliGammaConversionAODBGHandler::GammaConversionVertex *vertex);
72 void UpdateEventByEventData();
73 void SetLogBinningXTH2(TH2* histoRebin);
74 // Int_t GetSourceClassification(Int_t daughter, Int_t pdgCode);
77 template <typename T> void SetNullCuts(T* aod);
78 void PrepareFlowEvent(Int_t iMulti, AliFlowEvent *FlowEv) const;
79 void SetRPCuts(AliFlowTrackCuts *cutsRP) { fCutsRP = cutsRP; }
80 void ProcessPhotonCandidatesforV2();
84 AliV0ReaderV1 *fV0Reader; //
85 AliGammaConversionAODBGHandler **fBGHandler; //
86 AliConversionAODBGHandlerRP **fBGHandlerRP; //
87 AliVEvent *fInputEvent; //
88 // AliMCEvent *fMCEvent; //
89 // AliStack *fMCStack; //
90 TList **fCutFolder; //
93 TList **fMotherList; //
94 TList **fPhotonDCAList; //
95 TList **fMesonDCAList; //
96 // TList **fTrueList; //
97 // TList **fMCList; //
98 TList **fHeaderNameList; //
99 TList *fOutputContainer; //
100 TClonesArray *fReaderGammas; //
101 TList *fGammaCandidates; //
102 TList *fEventCutArray; //
103 AliConvEventCuts *fEventCuts; //
105 AliConversionPhotonCuts *fConversionCuts; //
106 TList *fMesonCutArray; //
107 AliConversionMesonCuts *fMesonCuts; //
108 TH1F **hESDConvGammaPt; //
109 TH1F **hESDConvGammaR; //
110 TH1F **hESDConvGammaEta; //
112 Float_t fDCAzPhoton; //
113 Float_t fRConvPhoton; //
114 Float_t fEtaPhoton; //
115 UChar_t iCatPhoton; //
116 UChar_t iPhotonMCInfo; //
119 // 2: secondary photon not from eta or k0s,
120 // 3: secondary photon from eta,
121 // 4: secondary photon from k0s,
124 TH2F **hESDMotherInvMassPt; //
125 // THnSparseF **sESDMotherInvMassPtZM; //
126 TH2F **hESDMotherBackInvMassPt; //
127 // THnSparseF **sESDMotherBackInvMassPtZM; //
128 TH2F **hESDMotherInvMassEalpha; //
129 TH2F **hESDMotherPi0PtY; //
130 TH2F **hESDMotherEtaPtY; //
131 TH2F **hESDMotherPi0PtAlpha; //
132 TH2F **hESDMotherEtaPtAlpha; //
133 TH2F **hESDMotherPi0PtOpenAngle; //
134 TH2F **hESDMotherEtaPtOpenAngle; //
137 TH1I **hNGoodESDTracks; //
138 TH1I **hNGammaCandidates; //
139 TH2F **hNGoodESDTracksVsNGammaCanditates; //
140 TH1I **hNV0Tracks; //
141 TProfile **hEtaShift; //
142 TTree **tESDMesonsInvMassPtDcazMinDcazMaxFlag; //
145 Float_t fDCAzGammaMin; //
146 Float_t fDCAzGammaMax; //
148 UChar_t iMesonMCInfo; //
151 // 2: secondary meson not from eta or k0s,
152 // 3: secondary meson from eta,
153 // 4: secondary meson from k0s,
155 // 6: primary meson gamma-gamma-channel
156 Double_t fEventPlaneAngle; // EventPlaneAngle
158 Int_t fnGammaCandidates; //
159 Double_t *fUnsmearedPx; //[fnGammaCandidates]
160 Double_t *fUnsmearedPy; //[fnGammaCandidates]
161 Double_t *fUnsmearedPz; //[fnGammaCandidates]
162 Double_t *fUnsmearedE; //[fnGammaCandidates]
163 Int_t *fMCStackPos; //[fnGammaCandidates]
164 Int_t *fMCStackNeg; //[fnGammaCandidates]
165 Int_t *fESDArrayPos; //[fnGammaCandidates]
166 Int_t *fESDArrayNeg; //[fnGammaCandidates]
169 Bool_t fMoveParticleAccordingToVertex; //
170 Int_t fIsHeavyIon; //
171 Bool_t fDoMesonAnalysis; //
173 Int_t fDoPhotonQA; //
174 Bool_t fIsFromMBHeader; //
175 TH1D *fhistoEPVZ; //!
179 Bool_t fDebug; //! enable debug mode
180 AliFlowTrackCuts *fCutsRP; // track cuts for reference particles
181 AliFlowTrackCuts *fNullCuts; // dummy cuts for flow event tracks
182 AliFlowEvent *fFlowEvent; //! flow events Inclusive e
184 AliAnalysisTaskGammaConvFlow(const AliAnalysisTaskGammaConvFlow&); // Prevent copy-construction
185 AliAnalysisTaskGammaConvFlow &operator=(const AliAnalysisTaskGammaConvFlow&); // Prevent assignment
186 ClassDef(AliAnalysisTaskGammaConvFlow, 2);