-Move cent, z axis into sparse
[u/mrichter/AliRoot.git] / PWGGA / GammaConv / AliConversionSelection.h
1 #ifndef AliConversionSelection_cxx
2 #define AliConversionSelection_cxx
3
4 #include "AliAODConversionMother.h"
5 #include "AliConversionPhotonBase.h"
6 #include "AliAODConversionPhoton.h"
7 #include "AliConversionAODBGHandlerRP.h"
8 #include "AliConversionCuts.h"
9 #include "AliConversionMesonCuts.h"
10 #include "TRandom3.h"
11 #include "AliVEvent.h"
12 #include "AliMCEvent.h"
13 #include "TClonesArray.h"
14 #include "AliESDtrackCuts.h"
15
16 class AliConversionSelection : public TObject{
17
18 public:
19
20     AliConversionSelection(AliConversionCuts *convCut=NULL, AliConversionMesonCuts *mesonCut=NULL);
21     AliConversionSelection(TString convCut, TString mesonCut);
22     AliConversionSelection(const AliConversionSelection&);
23     AliConversionSelection& operator=(const AliConversionSelection&); // not implemented
24
25     virtual ~AliConversionSelection();
26
27     // Main Functions
28     Bool_t ProcessEvent(TClonesArray *photons,AliVEvent *inputEvent,AliMCEvent *mcEvent);
29    
30     // public getter functions
31
32     Int_t GetNumberOfPi0s(){return fPi0Candidates->GetEntriesFast();}
33     Int_t GetNumberOfBGs(){return fBGPi0s->GetEntriesFast();}
34     Int_t GetNumberOfPhotons(){return fGoodGammas->GetEntriesFast();}
35
36     Double_t GetMultiplicity(AliVEvent *inputEvent);
37
38     AliAODConversionMother* GetPi0(Int_t index);
39     AliAODConversionMother* GetBG(Int_t index);
40     AliAODConversionPhoton* GetPhoton(Int_t index);
41
42     TClonesArray *GetPi0Candidates(){return fPi0Candidates;}
43     TClonesArray *GetBGPi0s(){return fBGPi0s;}
44
45     // public Set Functions
46     void SetInvMassRange(Double_t low,Double_t up){fInvMassRange[0]=low;fInvMassRange[1]=up;};
47     void SetInvMassRange(Double_t range[2]){SetInvMassRange(range[0],range[1]);};
48
49     Double_t* GetInvMassRange(){return fInvMassRange;}
50
51     TObjArray *GetGoodGammas(){return fGoodGammas;}
52
53     Int_t GetNumberOfChargedTracks(AliVEvent *inputEvent);
54     Double_t GetSPDMult(AliVEvent *inputEvent);
55     Double_t GetVZEROMult(AliVEvent *inputEvent);
56
57     Int_t GetEventNumber(AliVEvent *inputEvent);
58
59     TString GetCutString();
60
61 protected:
62    
63     void InitializeBGHandler();
64     void CalculatePi0Candidates();
65     void CalculateBackground();
66
67     void RotateParticle(AliAODConversionPhoton *gamma,Int_t nDegreesPMBackground);
68
69     Bool_t MesonInMassWindow(AliAODConversionMother *pi0cand);
70
71     AliVEvent *fInputEvent;
72     AliMCEvent *fMCEvent;
73     AliConversionCuts *fConversionCut;
74     AliConversionMesonCuts *fMesonCut;
75     AliESDtrackCuts *fESDTrackCuts;
76     TObjArray *fGoodGammas; // Pointer to selected photons
77     TClonesArray *fPi0Candidates;
78     TClonesArray *fBGPi0s;
79     TRandom3 *fRandomizer; // Randomizer for Rotation
80     AliConversionAODBGHandlerRP *fBGHandler;
81     Double_t fInvMassRange[2];
82     Int_t fCurrentEventNumber; // Current Event Number
83     Bool_t fIsOwner; // Cuts will be deleted when the destructor is called
84
85     ClassDef(AliConversionSelection, 2); // example of analysis
86 };
87
88 #endif
89