]> git.uio.no Git - u/mrichter/AliRoot.git/blob - PWGGA/GammaConv/AliAnalysisTaskGammaConvDalitzV1.h
Merge branch 'master' into TRDdev
[u/mrichter/AliRoot.git] / PWGGA / GammaConv / AliAnalysisTaskGammaConvDalitzV1.h
1 #ifndef ALIANALYSISTASKGAMMACONVDALITZV1_H
2 #define ALIANALYSISTASKGAMMACONVDALITZV1_H
3
4 /* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
5  * See cxx source for full Copyright notice                               */
6
7 // Analysis task for pi0->e+e-gamma (Dalitz decay)
8
9 #include "AliAnalysisTaskSE.h"
10 #include "AliV0ReaderV1.h"
11 #include "AliKFConversionPhoton.h"
12 #include "AliDalitzElectronSelector.h"
13 #include "AliConversionMesonCuts.h"
14 #include "AliGammaConversionAODBGHandler.h"
15 #include "TProfile2D.h"
16
17 class AliESDInputHandler;
18 class AliMCEventHandler;
19 class AliESDEvent;
20 class AliESDtrack;
21 class AliESDtrackCuts;
22 class AliESDpidCuts;
23 class AliV0Reader;
24 class AliGammaConversionHistograms;
25 class AliTriggerAnalysis;
26
27 class AliAnalysisTaskGammaConvDalitzV1: public AliAnalysisTaskSE
28 {
29   public:
30
31         AliAnalysisTaskGammaConvDalitzV1();
32         AliAnalysisTaskGammaConvDalitzV1( const char* name );
33         virtual ~AliAnalysisTaskGammaConvDalitzV1();
34
35         virtual void UserExec(Option_t *);
36         virtual void UserCreateOutputObjects();
37         virtual Bool_t Notify();
38         virtual void Terminate(const Option_t *);
39
40
41
42          
43         void SetMoveParticleAccordingToVertex(Bool_t flag){fMoveParticleAccordingToVertex = flag;}
44          
45         void SetIsHeavyIon(Int_t flag){
46                 if (flag == 1 || flag ==2 ){
47                         fIsHeavyIon = 1;    
48                 } else {
49                         fIsHeavyIon = 0;    
50                 }
51         }
52         
53         void SetIsMC(Bool_t isMC){fIsMC=isMC;}
54         void SetConversionCutList(Int_t nCuts, TList *CutArray){
55                 fnCuts= nCuts;
56                 fCutGammaArray = CutArray;
57         }
58         void SetElectronCutList(TList *CutArray){
59                 fCutElectronArray = CutArray;
60         }
61         void SetMesonCutList(TList *CutArray){
62                 fCutMesonArray = CutArray;
63         }
64         void SetDoChicAnalysis(Bool_t flag){ fDoChicAnalysis = flag; }
65         void SetDoMesonQA(Bool_t flag){ fDoMesonQA = flag; }
66         void SetProductionVertextoVGamma(Bool_t flag) { fSetProductionVertextoVGamma = flag; }
67   
68
69         private:
70
71                 void InitBack();
72                 void ProcessPhotonCandidates();
73                 void ProcessTruePhotonCandidates(AliAODConversionPhoton*);
74                 void ProcessTrueMesonCandidates(AliAODConversionMother *Pi0Candidate, AliAODConversionPhoton *TrueGammaCandidate, AliAODConversionPhoton *TrueVirtualGammaCandidate);
75                 void MoveParticleAccordingToVertex(AliAODConversionPhoton* particle,const AliGammaConversionAODBGHandler::GammaConversionVertex *vertex);
76                 void ProcessElectronCandidates();
77                 void ProcessMCParticles();
78                 void CountESDTracks();
79                 void CalculatePi0DalitzCandidates();
80                 void CalculateBackground();
81                 void UpdateEventByEventData();
82                 void FillElectronQAHistos(AliAODConversionPhoton *Vgamma) const;
83                 Double_t GetPsiPair( const AliESDtrack *trackPos, const AliESDtrack *trackNeg ) const;
84                 Bool_t IsDalitz(TParticle *fMCMother) const;
85                 Bool_t IsPi0DalitzDaughter( Int_t label ) const;
86                 
87                 
88
89     AliV0ReaderV1 *fV0Reader;
90     AliDalitzElectronSelector* fElecSelector;
91     AliGammaConversionAODBGHandler **fBGHandler;
92     AliESDEvent *fESDEvent;
93     AliMCEvent *fMCEvent;
94     AliStack *fMCStack;
95     TList **fCutFolder;
96     TList **fESDList;
97     TList **fBackList;
98     TList **fMotherList;
99     TList **fTrueList;
100     TList **fMCList;
101     TList **fQAFolder;
102     TList *fOutputContainer;
103     TClonesArray *fReaderGammas;
104     vector<Int_t> fSelectorElectronIndex;
105     vector<Int_t> fSelectorPositronIndex;
106     TList *fGoodGammas;
107     TList *fGoodVirtualGammas;
108     TList *fGoodElectrons;
109     TList *fGoodPositrons;
110     TList *fCutGammaArray;
111     TList *fCutElectronArray;
112     TList *fCutMesonArray;
113     TList **fGammasPool;
114     AliConversionCuts *fConversionCuts;
115     TH1F **hESDConvGammaPt;
116     TH1F **hESDConvGammaEta;
117     TH2F **hESDConvGammaZR;
118     TH1F **hESDDalitzElectronPt;
119     TH1F **hESDDalitzPositronPt;
120     TH1F **hESDDalitzElectronPhi;
121     TH1F **hESDDalitzPositronPhi;
122     TH1F **hESDDalitzElectronAfterPt;
123     TH1F **hESDDalitzPositronAfterPt;
124     TH1F **hESDDalitzElectronAfterEta;
125     TH1F **hESDDalitzPositronAfterEta;
126     TH1F **hESDDalitzElectronAfterPhi;
127     TH1F **hESDDalitzPositronAfterPhi;
128     TH1F **hESDDalitzElectronAfterNClsITS;
129     TH1F **hESDDalitzPositronAfterNClsITS;
130     TH2F **hESDDalitzElectronAfterNFindClsTPC;
131     TH2F **hESDDalitzPositronAfterNFindClsTPC;
132     TH2F **hESDDalitzElectronAfterNClsTPC;
133     TH2F **hESDDalitzPositronAfterNClsTPC;
134     TH2F **hESDDalitzElectronAfterNCrossedRowsTPC;
135     TH2F **hESDDalitzPositronAfterNCrossedRowsTPC;
136     TH2F **hESDDalitzPosEleAfterDCAxy;
137     TH2F **hESDDalitzPosEleAfterDCAz;
138     TH2F **hESDDalitzElectronAfterTPCdEdxVsP;
139     TH2F **hESDDalitzPositronAfterTPCdEdxVsP;
140     TH2F **hESDDalitzElectronAfterTPCdEdxSignalVsP;
141     TH2F **hESDDalitzPositronAfterTPCdEdxSignalVsP;
142     TH2F **hESDDalitzElectronAfterTPCdEdxVsEta;
143     TH2F **hESDDalitzPositronAfterTPCdEdxVsEta;
144     TH2F **hESDDalitzElectronAfterTPCdEdxVsPhi;
145     TH2F **hESDDalitzPositronAfterTPCdEdxVsPhi;
146     TH1F **hESDMotherPhi;
147     TH2F **hESDEposEnegPsiPairDPhi;
148     TH2F **hESDEposEnegInvMassPt;
149     TH2F **hESDEposEnegLikeSignBackInvMassPt;
150     TH2F **hESDMotherInvMassPt;
151     TH2F **hESDPi0MotherInvMassPt;
152     TH2F **hESDPi0MotherDiffInvMassPt;
153     TH2F **hESDPi0MotherDiffLimInvMassPt;
154     THnSparseF **sESDMotherInvMassPtZM;
155     TH2F **hESDMotherBackInvMassPt;
156     THnSparseF **sESDMotherBackInvMassPtZM;
157     TH1F **hMCAllGammaPt;
158     TH1F **hMCConvGammaPt;
159     TH1F **hMCConvGammaRSPt;
160     TH1F **hMCAllPositronsPt;
161     TH1F **hMCAllElectronsPt;
162     TH1F **hMCConvGammaEta;
163     TH1F **hMCAllPositronsEta;
164     TH1F **hMCAllElectronsEta;
165     TH1F **hMCPi0DalitzGammaPt;
166     TH1F **hMCPi0DalitzElectronPt;
167     TH1F **hMCPi0DalitzPositronPt;
168     TH1F **hMCPi0Pt;
169     TH1F **hMCPi0GGPt;
170     TH1F **hMCEtaPt;
171     TH1F **hMCEtaGGPt;
172     TH1F **hMCPi0InAccPt;
173     TH1F **hMCEtaInAccPt;
174     TH1F **hMCChiCPt;
175     TH1F **hMCChiCInAccPt;
176     TH2F **hMCPi0EposEnegInvMassPt;
177     TH2F **hMCEtaEposEnegInvMassPt;
178     TH2F **hESDEposEnegTruePi0DalitzInvMassPt;
179     TH1F **hESDEposEnegTruePrimPi0DalitzInvMass;
180     TH2F **hESDEposEnegTruePi0DalitzPsiPairDPhi;
181     TH2F **hESDEposEnegTrueEtaDalitzInvMassPt;
182     TH1F **hESDEposEnegTruePrimEtaDalitzInvMass;
183     TH2F **hESDEposEnegTrueEtaDalitzPsiPairDPhi;
184     TH2F **hESDEposEnegTruePhotonInvMassPt;
185     TH2F **hESDEposEnegTrueInvMassPt;
186     TH2F **hESDEposEnegTruePhotonPsiPairDPhi;
187     TH2F **hESDEposEnegTrueJPsiInvMassPt;
188     TH2F **hESDTrueMotherChiCInvMassPt;
189     TH2F **hESDTrueMotherChiCDiffInvMassPt;
190     TH2F **hESDTrueMotherInvMassPt;
191     TH2F **hESDTrueMotherDalitzInvMassPt;
192     TH2F **hESDTrueMotherPi0GGInvMassPt;
193     TH2F **hESDTruePrimaryMotherPi0GGInvMassPt;
194     TH2F **hESDTrueSecondaryMotherPi0GGInvMassPt;
195     TH2F **hESDTruePrimaryMotherInvMassMCPt;
196     TH2F **hESDTruePrimaryMotherInvMassPt;
197     TH2F **hESDTruePrimaryMotherW0WeightingInvMassPt;
198     TH2F **hESDTruePrimaryPi0DalitzESDPtMCPt;
199     TH2F **hESDTrueSecondaryMotherInvMassPt;
200     TH2F **hESDTrueSecondaryMotherFromK0sInvMassPt;
201     TH2F **hESDTrueBckGGInvMassPt;
202     TH2F **hESDTrueBckContInvMassPt;
203     TH2F **hESDTrueMotherGGInvMassPt;
204     TH1F **hESDTrueConvGammaPt;
205     TH1F **hESDTruePositronPt;
206     TH1F **hESDTrueElectronPt;
207     TH1F **hESDTrueSecConvGammaPt;
208     TH1F **hESDTrueSecPositronPt;
209     TH1F **hESDTrueSecElectronPt;
210     TH1F **hESDTruePi0DalitzConvGammaPt;
211     TH1F **hESDTruePi0DalitzPositronPt;
212     TH1F **hESDTruePi0DalitzElectronPt;
213     TH1F **hESDTruePi0DalitzSecConvGammaPt;
214     TH1F **hESDTruePi0DalitzSecPositronPt;
215     TH1F **hESDTruePi0DalitzSecElectronPt;
216       //if(fDoMesonAnalysis){
217
218
219     TH1I **hNEvents;
220     TH1I **hNGoodESDTracks;
221     TH2F **hNGoodESDTracksVsNGoodGammas;
222     TH2F **hNGoodESDTracksVsNGoodVGammas;
223     TProfile **hEtaShift;
224         
225     TRandom3 fRandom;
226     Double_t *fUnsmearedPx;
227     Double_t *fUnsmearedPy;
228     Double_t *fUnsmearedPz;
229     Double_t *fUnsmearedE;
230     Int_t fnCuts;
231     Int_t fiCut;
232     Int_t fNumberOfESDTracks;
233     Int_t fNumberOfESDTrackskBoth;
234     Bool_t fMoveParticleAccordingToVertex;
235     Bool_t fIsHeavyIon;
236     Bool_t fDoMesonAnalysis;
237     Bool_t fDoChicAnalysis;
238     Bool_t fDoMesonQA;
239     Bool_t fSetProductionVertextoVGamma;
240     Bool_t fIsFromMBHeader;
241     Bool_t fIsMC;
242
243         private:
244                 AliAnalysisTaskGammaConvDalitzV1( const AliAnalysisTaskGammaConvDalitzV1& ); // Not implemented
245                 AliAnalysisTaskGammaConvDalitzV1& operator=( const AliAnalysisTaskGammaConvDalitzV1& ); // Not implemented
246
247                 ClassDef( AliAnalysisTaskGammaConvDalitzV1, 3 );
248 };
249
250 #endif // ALIANALYSISTASKGAMMACONVDALITZV1_H
251