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*);
38 void SetIsHeavyIon(Int_t flag){
43 void SetDoMesonAnalysis(Bool_t flag){fDoMesonAnalysis = flag;}
44 void SetDoMesonQA(Int_t flag){fDoMesonQA = flag;}
45 void SetDoPhotonQA(Int_t flag){fDoPhotonQA = flag;}
46 void ProcessPhotonCandidates();
47 // void CalculatePi0Candidates();
48 //void CalculateBackground();
49 // void CalculateBackgroundRP();
51 void RelabelAODPhotonCandidates(Bool_t mode);
53 //void RotateParticle(AliAODConversionPhoton *gamma);
54 //void RotateParticleAccordingToEP(AliAODConversionPhoton *gamma, Double_t previousEventEP, Double_t thisEventEP);
56 void SetEventCutList(Int_t nCuts, TList *CutArray){
58 fEventCutArray = CutArray;
60 void SetConversionCutList(Int_t nCuts, TList *CutArray){
64 // void SetMesonCutList(Int_t nCuts, TList *CutArray){
66 // fMesonCutArray = CutArray;
70 // void SetMoveParticleAccordingToVertex(Bool_t flag){fMoveParticleAccordingToVertex = flag;}
71 void FillPhotonCombinatorialBackgroundHist(AliAODConversionPhoton *TruePhotonCandidate, Int_t pdgCode[]);
72 // void MoveParticleAccordingToVertex(AliAODConversionPhoton* particle,const AliGammaConversionAODBGHandler::GammaConversionVertex *vertex);
73 void UpdateEventByEventData();
74 void SetLogBinningXTH2(TH2* histoRebin);
75 // Int_t GetSourceClassification(Int_t daughter, Int_t pdgCode);
78 //=========================================Flow Staff=========================================================================================
79 template <typename T> void SetNullCuts(T* esd);
80 void PrepareFlowEvent(Int_t iMulti, AliFlowEvent *FlowEv) const;
81 void SetRPCuts(AliFlowTrackCuts *cutsRP) { fCutsRP = cutsRP; }
82 void ProcessPhotonCandidatesforV2();
83 void MakeTrack(Double_t mass, Double_t pt, Double_t phi, Double_t eta/*, Int_t nDau, Int_t iID[]*/) const;
84 //=========================================ENd Flow Staff=========================================================================================
88 AliV0ReaderV1 *fV0Reader; //
89 AliGammaConversionAODBGHandler **fBGHandler; //
90 AliConversionAODBGHandlerRP **fBGHandlerRP; //
91 AliVEvent *fInputEvent; //
92 // AliMCEvent *fMCEvent; //
93 // AliStack *fMCStack; //
94 TList **fCutFolder; //
97 TList **fMotherList; //
98 TList **fPhotonDCAList; //
99 TList **fMesonDCAList; //
100 // TList **fTrueList; //
101 // TList **fMCList; //
102 TList **fHeaderNameList; //
103 TList *fOutputContainer; //
104 TClonesArray *fReaderGammas; //
105 TList *fGammaCandidates; //
106 TList *fEventCutArray; //
107 AliConvEventCuts *fEventCuts; //
109 AliConversionPhotonCuts *fConversionCuts; //
110 TList *fMesonCutArray; //
111 AliConversionMesonCuts *fMesonCuts; //
112 TH1F **hESDConvGammaPt; //
113 TH1F **hESDConvGammaR; //
114 TH1F **hESDConvGammaEta; //
115 // TTree **tESDConvGammaPtDcazCat; //
117 Float_t fDCAzPhoton; //
118 Float_t fRConvPhoton; //
119 Float_t fEtaPhoton; //
120 UChar_t iCatPhoton; //
121 UChar_t iPhotonMCInfo; //
124 // 2: secondary photon not from eta or k0s,
125 // 3: secondary photon from eta,
126 // 4: secondary photon from k0s,
129 TH2F **hESDMotherInvMassPt; //
130 // THnSparseF **sESDMotherInvMassPtZM; //
131 TH2F **hESDMotherBackInvMassPt; //
132 // THnSparseF **sESDMotherBackInvMassPtZM; //
133 TH2F **hESDMotherInvMassEalpha; //
134 TH2F **hESDMotherPi0PtY; //
135 TH2F **hESDMotherEtaPtY; //
136 TH2F **hESDMotherPi0PtAlpha; //
137 TH2F **hESDMotherEtaPtAlpha; //
138 TH2F **hESDMotherPi0PtOpenAngle; //
139 TH2F **hESDMotherEtaPtOpenAngle; //
142 TH1I **hNGoodESDTracks; //
143 TH1I **hNGammaCandidates; //
144 TH2F **hNGoodESDTracksVsNGammaCanditates; //
145 TH1I **hNV0Tracks; //
146 TProfile **hEtaShift; //
147 TTree **tESDMesonsInvMassPtDcazMinDcazMaxFlag; //
150 Float_t fDCAzGammaMin; //
151 Float_t fDCAzGammaMax; //
153 UChar_t iMesonMCInfo; //
156 // 2: secondary meson not from eta or k0s,
157 // 3: secondary meson from eta,
158 // 4: secondary meson from k0s,
160 // 6: primary meson gamma-gamma-channel
161 Double_t fEventPlaneAngle; // EventPlaneAngle
163 Int_t fnGammaCandidates; //
164 Double_t *fUnsmearedPx; //[fnGammaCandidates]
165 Double_t *fUnsmearedPy; //[fnGammaCandidates]
166 Double_t *fUnsmearedPz; //[fnGammaCandidates]
167 Double_t *fUnsmearedE; //[fnGammaCandidates]
168 Int_t *fMCStackPos; //[fnGammaCandidates]
169 Int_t *fMCStackNeg; //[fnGammaCandidates]
170 Int_t *fESDArrayPos; //[fnGammaCandidates]
171 Int_t *fESDArrayNeg; //[fnGammaCandidates]
174 Bool_t fMoveParticleAccordingToVertex; //
175 Int_t fIsHeavyIon; //
176 Bool_t fDoMesonAnalysis; //
178 Int_t fDoPhotonQA; //
179 Bool_t fIsFromMBHeader; //
182 TObjArray *fCandidates; // candidate array
183 Int_t fDebug; // debug level (0 none, 1 fcn calls, 2 verbose)
184 AliFlowTrackCuts *fCutsRP; // track cuts for reference particles
185 AliFlowTrackCuts *fNullCuts; // dummy cuts for flow event tracks
186 AliFlowEvent *fFlowEvent; //! flow events
192 AliAnalysisTaskGammaConvFlow(const AliAnalysisTaskGammaConvFlow&); // Prevent copy-construction
193 AliAnalysisTaskGammaConvFlow &operator=(const AliAnalysisTaskGammaConvFlow&); // Prevent assignment
194 ClassDef(AliAnalysisTaskGammaConvFlow, 2);