]> git.uio.no Git - u/mrichter/AliRoot.git/blob - PWGGA/GammaConv/AliAnalysisTaskGammaConvDalitzV1.h
sync with GSI svn
[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
16 class AliESDInputHandler;
17 class AliMCEventHandler;
18 class AliESDEvent;
19 class AliESDtrack;
20 class AliESDtrackCuts;
21 class AliESDpidCuts;
22 class AliV0Reader;
23 class AliGammaConversionHistograms;
24 class AliTriggerAnalysis;
25
26 class AliAnalysisTaskGammaConvDalitzV1: public AliAnalysisTaskSE
27 {
28   public:
29
30         AliAnalysisTaskGammaConvDalitzV1();
31         AliAnalysisTaskGammaConvDalitzV1( const char* name );
32         virtual ~AliAnalysisTaskGammaConvDalitzV1();
33
34         virtual void UserExec(Option_t *);
35         virtual void UserCreateOutputObjects();
36         virtual void Terminate(const Option_t *);
37
38
39
40          
41          void SetMoveParticleAccordingToVertex(Bool_t flag){fMoveParticleAccordingToVertex = flag;}
42          void SetIsHeavyIon(Bool_t flag){fIsHeavyIon = flag;}
43          void SetConversionCutList(Int_t nCuts, TList *CutArray){
44                         fnCuts= nCuts;
45                         fCutGammaArray = CutArray;
46                 }
47          void SetElectronCutList(TList *CutArray){
48                         fCutElectronArray = CutArray;
49                 }
50          void SetMesonCutList(TList *CutArray){
51                         fCutMesonArray = CutArray;
52                 }
53                 
54
55         private:
56
57                 void InitBack();
58                 void ProcessPhotonCandidates();
59                 void ProcessTruePhotonCandidates(AliAODConversionPhoton*);
60                 void ProcessTrueMesonCandidates(AliAODConversionMother *Pi0Candidate, AliAODConversionPhoton *TrueGammaCandidate, AliAODConversionPhoton *TrueVirtualGammaCandidate);
61                 void MoveParticleAccordingToVertex(AliAODConversionPhoton* particle,const AliGammaConversionAODBGHandler::GammaConversionVertex *vertex);
62                 void ProcessElectronCandidates();
63                 void ProcessMCParticles();
64                 void CountESDTracks();
65                 void CalculatePi0DalitzCandidates();
66                 void CalculateBackground();
67                 void UpdateEventByEventData();
68                 Double_t GetPsiPair( const AliESDtrack *trackPos, const AliESDtrack *trackNeg ) const;
69                 Bool_t IsDalitz(TParticle *fMCMother,Int_t &labelgamma, Int_t &labelelectron,Int_t &labelpositron);
70                 Bool_t IsPi0DalitzDaughter( Int_t label ) const;
71                 
72                 
73
74     AliV0ReaderV1 *fV0Reader;
75     AliDalitzElectronSelector* fElecSelector;
76     AliGammaConversionAODBGHandler **fBGHandler;
77     AliESDEvent *fESDEvent;
78     AliMCEvent *fMCEvent;
79     AliStack *fMCStack;
80     TList **fCutFolder;
81     TList **fESDList;
82     TList **fBackList;
83     TList **fTrueList;
84     TList **fMCList;
85     TList *fOutputContainer;
86     TClonesArray *fReaderGammas;
87     vector<Int_t> fSelectorElectronIndex;
88     vector<Int_t> fSelectorPositronIndex;
89     TList *fGoodGammas;
90     TList *fGoodVirtualGammas;
91     TList *fGoodElectrons;
92     TList *fGoodPositrons;
93     TList *fCutGammaArray;
94     TList *fCutElectronArray;
95     TList *fCutMesonArray;
96     TList **fGammasPool;
97     AliConversionCuts *fConversionCuts;
98     TH1F **hESDConvGammaPt;
99     TH1F **hESDDalitzElectronPt;
100     TH1F **hESDDalitzPositronPt;
101     TH2F **hESDEposEnegPsiPairDPhi;
102     TH2F **hESDEposEnegInvMassPt;
103     TH2F **hESDEposEnegLikeSignBackInvMassPt;
104     TH2F **hESDMotherInvMassPt;
105     TH2F **hESDPi0MotherInvMassPt;
106     TH2F **hESDPi0MotherDiffInvMassPt;
107     THnSparseF **sESDMotherInvMassPtZM;
108     TH2F **hESDMotherBackInvMassPt;
109     THnSparseF **sESDMotherBackInvMassPtZM;
110     TH1F **hMCAllGammaPt;
111     TH1F **hMCAllPositronsPt;
112     TH1F **hMCAllElectronsPt;
113     TH1F **hMCPi0DalitzGammaPt;
114     TH1F **hMCPi0DalitzElectronPt;
115     TH1F **hMCPi0DalitzPositronPt;
116     TH1F **hMCPi0Pt;
117     TH1F **hMCPi0GGPt;
118     TH1F **hMCEtaPt;
119     TH1F **hMCEtaGGPt;
120     TH1F **hMCPi0InAccPt;
121     TH1F **hMCEtaInAccPt;
122     TH2F **hESDEposEnegTruePi0DalitzInvMassPt;
123     TH2F **hESDEposEnegTrueEtaDalitzInvMassPt;
124     TH2F **hESDEposEnegTruePhotonInvMassPt;
125     TH2F **hESDTrueMotherInvMassPt;
126     TH2F **hESDTrueMotherPi0GGInvMassPt;
127     TH2F **hESDTruePrimaryMotherInvMassMCPt;
128     TH2F **hESDTruePrimaryPi0DalitzESDPtMCPt;
129     TH2F **hESDTrueSecondaryMotherInvMassPt;
130     TH2F **hESDTrueSecondaryMotherFromK0sInvMassPt;
131     TH2F **hESDTrueBckGGInvMassPt;
132     TH2F **hESDTrueBckContInvMassPt;
133     TH2F **hESDTrueMotherGGInvMassPt;
134     TH1F **hESDTrueConvGammaPt;
135     TH1F **hESDTruePositronPt;
136     TH1F **hESDTrueElectronPt;
137     TH1F **hESDTruePi0DalitzConvGammaPt;
138     TH1F **hESDTruePi0DalitzPositronPt;
139     TH1F **hESDTruePi0DalitzElectronPt;
140       //if(fDoMesonAnalysis){
141
142
143     TH1I **hNEvents;
144     TH1I **hNGoodESDTracks;
145         
146     TRandom3 fRandom;
147     Double_t *fUnsmearedPx;
148     Double_t *fUnsmearedPy;
149     Double_t *fUnsmearedPz;
150     Double_t *fUnsmearedE;
151     Int_t fnCuts;
152     Int_t fiCut;
153     Int_t fNumberOfESDTracks;
154     Bool_t fMoveParticleAccordingToVertex;
155     Bool_t fIsHeavyIon;
156     Bool_t fDoMesonAnalysis;
157    
158         private:
159                 AliAnalysisTaskGammaConvDalitzV1( const AliAnalysisTaskGammaConvDalitzV1& ); // Not implemented
160                 AliAnalysisTaskGammaConvDalitzV1& operator=( const AliAnalysisTaskGammaConvDalitzV1& ); // Not implemented
161
162                 ClassDef( AliAnalysisTaskGammaConvDalitzV1, 2 );
163 };
164
165 #endif // ALIANALYSISTASKGAMMACONVDALITZV1_H
166