]> git.uio.no Git - u/mrichter/AliRoot.git/blob - PWGGA/GammaConv/AliAnalysisTaskGammaConvDalitzV1.h
3ad7a5aa6e2ca099308e2e8102aba24eed2e5074
[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 ProcessVirtualGammasCandidates();
78                 void ProcessMCParticles();
79                 void CountESDTracks();
80                 void CalculatePi0DalitzCandidates();
81                 void CalculateBackground();
82                 void UpdateEventByEventData();
83                 void FillElectronQAHistos(AliAODConversionMother *Pi0Candidate,AliAODConversionPhoton *Vgamma) const;
84                 Double_t GetPsiPair( const AliESDtrack *trackPos, const AliESDtrack *trackNeg ) const;
85                 Bool_t IsDalitz(TParticle *fMCMother) const;
86                 Bool_t IsPi0DalitzDaughter( Int_t label ) const;
87                 
88                 
89
90     AliV0ReaderV1 *fV0Reader;
91     AliDalitzElectronSelector* fElecSelector;
92     AliGammaConversionAODBGHandler **fBGHandler;
93     AliESDEvent *fESDEvent;
94     AliMCEvent *fMCEvent;
95     AliStack *fMCStack;
96     TList **fCutFolder;
97     TList **fESDList;
98     TList **fBackList;
99     TList **fMotherList;
100     TList **fTrueList;
101     TList **fMCList;
102     TList **fQAFolder;
103     TList *fOutputContainer;
104     TClonesArray *fReaderGammas;
105     vector<Int_t> fSelectorElectronIndex;
106     vector<Int_t> fSelectorPositronIndex;
107     TList *fGoodGammas;
108     TList *fGoodVirtualGammas;
109     TList *fGoodElectrons;
110     TList *fGoodPositrons;
111     TList *fCutGammaArray;
112     TList *fCutElectronArray;
113     TList *fCutMesonArray;
114     TList **fGammasPool;
115     AliConversionCuts *fConversionCuts;
116     TH1F **hESDConvGammaPt;
117     TH1F **hESDConvGammaEta;
118     TH2F **hESDConvGammaZR;
119     TH1F **hESDDalitzElectronPt;
120     TH1F **hESDDalitzPositronPt;
121     TH1F **hESDDalitzElectronPhi;
122     TH1F **hESDDalitzPositronPhi;
123     TH1F **hESDDalitzElectronAfterPt;
124     TH1F **hESDDalitzPositronAfterPt;
125     TH1F **hESDDalitzElectronAfterEta;
126     TH1F **hESDDalitzPositronAfterEta;
127     TH1F **hESDDalitzElectronAfterPhi;
128     TH1F **hESDDalitzPositronAfterPhi;
129     TH1F **hESDDalitzElectronAfterNClsITS;
130     TH1F **hESDDalitzPositronAfterNClsITS;
131     TH2F **hESDDalitzElectronAfterNFindClsTPC;
132     TH2F **hESDDalitzPositronAfterNFindClsTPC;
133     TH2F **hESDDalitzElectronAfterNClsTPC;
134     TH2F **hESDDalitzPositronAfterNClsTPC;
135     TH2F **hESDDalitzElectronAfterNCrossedRowsTPC;
136     TH2F **hESDDalitzPositronAfterNCrossedRowsTPC;
137     TH2F **hESDDalitzPosEleAfterDCAxy;
138     TH2F **hESDDalitzPosEleAfterDCAz;
139     TH2F **hESDDalitzElectronAfterTPCdEdxVsP;
140     TH2F **hESDDalitzPositronAfterTPCdEdxVsP;
141     TH2F **hESDDalitzElectronAfterTPCdEdxSignalVsP;
142     TH2F **hESDDalitzPositronAfterTPCdEdxSignalVsP;
143     TH2F **hESDDalitzElectronAfterTPCdEdxVsEta;
144     TH2F **hESDDalitzPositronAfterTPCdEdxVsEta;
145     TH2F **hESDDalitzElectronAfterTPCdEdxVsPhi;
146     TH2F **hESDDalitzPositronAfterTPCdEdxVsPhi;
147     TH1F **hESDMotherPhi;
148     TH2F **hESDEposEnegPsiPairDPhi;
149     TH2F **hESDEposEnegInvMassPt;
150     TH2F **hESDEposEnegAfterMassCutInvMassPi0Pt;
151     TH2F **hESDEposEnegLikeSignBackInvMassPt;
152     TH2F **hESDMotherInvMassPt;
153     TH2F **hESDPi0MotherInvMassPt;
154     TH2F **hESDPi0MotherDiffInvMassPt;
155     TH2F **hESDPi0MotherDiffLimInvMassPt;
156     THnSparseF **sESDMotherInvMassPtZM;
157     TH2F **hESDMotherBackInvMassPt;
158     THnSparseF **sESDMotherBackInvMassPtZM;
159     TH1F **hMCAllGammaPt;
160     TH1F **hMCConvGammaPt;
161     TH1F **hMCConvGammaRSPt;
162     TH1F **hMCAllPositronsPt;
163     TH1F **hMCAllElectronsPt;
164     TH1F **hMCConvGammaEta;
165     TH1F **hMCAllPositronsEta;
166     TH1F **hMCAllElectronsEta;
167     TH1F **hMCPi0DalitzGammaPt;
168     TH1F **hMCPi0DalitzElectronPt;
169     TH1F **hMCPi0DalitzPositronPt;
170     TH1F **hMCPi0Pt;
171     TH1F **hMCPi0GGPt;
172     TH1F **hMCEtaPt;
173     TH1F **hMCEtaGGPt;
174     TH1F **hMCPi0InAccPt;
175     TH1F **hMCEtaInAccPt;
176     TH1F **hMCChiCPt;
177     TH1F **hMCChiCInAccPt;
178     TH2F **hMCPi0EposEnegInvMassPt;
179     TH2F **hMCEtaEposEnegInvMassPt;
180     TH2F **hESDEposEnegTruePi0DalitzInvMassPt;
181     TH1F **hESDEposEnegTruePrimPi0DalitzInvMass;
182     TH2F **hESDEposEnegTruePi0DalitzPsiPairDPhi;
183     TH2F **hESDEposEnegTrueEtaDalitzInvMassPt;
184     TH1F **hESDEposEnegTruePrimEtaDalitzInvMass;
185     TH2F **hESDEposEnegTrueEtaDalitzPsiPairDPhi;
186     TH2F **hESDEposEnegTruePhotonInvMassPt;
187     TH2F **hESDEposEnegTrueInvMassPt;
188     TH2F **hESDEposEnegTruePhotonPsiPairDPhi;
189     TH2F **hESDEposEnegTruePhotonPsiPairDPhiPtCut;
190     TH2F **hESDEposEnegTrueJPsiInvMassPt;
191     TH2F **hESDTrueMotherChiCInvMassPt;
192     TH2F **hESDTrueMotherChiCDiffInvMassPt;
193     TH2F **hESDTrueMotherInvMassPt;
194     TH2F **hESDTrueMotherDalitzInvMassPt;
195     TH2F **hESDTrueMotherPi0GGInvMassPt;
196     TH2F **hESDTruePrimaryMotherPi0GGInvMassPt;
197     TH2F **hESDTrueSecondaryMotherPi0GGInvMassPt;
198     TH2F **hESDTruePrimaryMotherInvMassMCPt;
199     TH2F **hESDTruePrimaryMotherInvMassPt;
200     TH2F **hESDTruePrimaryMotherW0WeightingInvMassPt;
201     TH2F **hESDTruePrimaryPi0DalitzESDPtMCPt;
202     TH2F **hESDTrueSecondaryMotherInvMassPt;
203     TH2F **hESDTrueSecondaryMotherFromK0sInvMassPt;
204     TH2F **hESDTrueBckGGInvMassPt;
205     TH2F **hESDTrueBckContInvMassPt;
206     TH2F **hESDTrueMotherGGInvMassPt;
207     TH1F **hESDTrueConvGammaPt;
208     TH1F **hESDTruePositronPt;
209     TH1F **hESDTrueElectronPt;
210     TH1F **hESDTrueSecConvGammaPt;
211     TH1F **hESDTrueSecPositronPt;
212     TH1F **hESDTrueSecElectronPt;
213     TH1F **hESDTruePi0DalitzConvGammaPt;
214     TH1F **hESDTruePi0DalitzPositronPt;
215     TH1F **hESDTruePi0DalitzElectronPt;
216     TH1F **hESDTruePi0DalitzSecConvGammaPt;
217     TH1F **hESDTruePi0DalitzSecPositronPt;
218     TH1F **hESDTruePi0DalitzSecElectronPt;
219       //if(fDoMesonAnalysis){
220
221
222     TH1I **hNEvents;
223     TH1I **hNGoodESDTracks;
224     TH2F **hNGoodESDTracksVsNGoodGammas;
225     TH2F **hNGoodESDTracksVsNGoodVGammas;
226     TH1I **hNV0Tracks;
227     TProfile **hEtaShift;
228         
229     TRandom3 fRandom;
230     Double_t *fUnsmearedPx;
231     Double_t *fUnsmearedPy;
232     Double_t *fUnsmearedPz;
233     Double_t *fUnsmearedE;
234     Double_t *fUnsmearedVPx;
235     Double_t *fUnsmearedVPy;
236     Double_t *fUnsmearedVPz;
237     Double_t *fUnsmearedVE;
238     
239     
240     Int_t fnCuts;
241     Int_t fiCut;
242     Int_t fNumberOfESDTracks;
243     Int_t fNumberOfESDTrackskBoth;
244     Bool_t fMoveParticleAccordingToVertex;
245     Bool_t fIsHeavyIon;
246     Bool_t fDoMesonAnalysis;
247     Bool_t fDoChicAnalysis;
248     Bool_t fDoMesonQA;
249     Bool_t fSetProductionVertextoVGamma;
250     Bool_t fIsFromMBHeader;
251     Bool_t fIsMC;
252
253         private:
254                 AliAnalysisTaskGammaConvDalitzV1( const AliAnalysisTaskGammaConvDalitzV1& ); // Not implemented
255                 AliAnalysisTaskGammaConvDalitzV1& operator=( const AliAnalysisTaskGammaConvDalitzV1& ); // Not implemented
256
257                 ClassDef( AliAnalysisTaskGammaConvDalitzV1, 3 );
258 };
259
260 #endif // ALIANALYSISTASKGAMMACONVDALITZV1_H
261