]> git.uio.no Git - u/mrichter/AliRoot.git/blob - PWGGA/GammaConv/AliConversionMesonCuts.h
sync with GSI svn for gammaConv + changes by Hongheng in PHOS directory
[u/mrichter/AliRoot.git] / PWGGA / GammaConv / AliConversionMesonCuts.h
1 #ifndef ALICONVERSIONMESONCUTS_H
2 #define ALICONVERSIONMESONCUTS_H
3
4 // Class handling all kinds of selection cuts for Gamma Conversion analysis
5 // Authors: Svein Lindal, Daniel Lohner                                                                                         *
6
7 #include "AliAODpidUtil.h"
8 #include "AliConversionPhotonBase.h"
9 #include "AliAODConversionMother.h"
10 #include "AliAODTrack.h"
11 #include "AliESDtrack.h"
12 #include "AliVTrack.h"
13 #include "AliAODTrack.h"
14 #include "AliStack.h"
15 #include "AliAnalysisCuts.h"
16 #include "TH1F.h"
17
18 class AliESDEvent;
19 class AliAODEvent;
20 class AliConversionPhotonBase;
21 class AliKFVertex;
22 class TH1F;
23 class TH2F;
24 class AliPIDResponse;
25 class AliAnalysisCuts;
26 class iostream;
27 class TList;
28 class AliAnalysisManager;
29
30
31 using namespace std;
32
33 class AliConversionMesonCuts : public AliAnalysisCuts {
34         
35  public: 
36
37
38   enum cutIds {
39         kMesonKind,
40         kBackgroundScheme,            
41         kNumberOfBGEvents,           
42         kDegreesForRotationMethod,    
43         kRapidityMesonCut,    
44         kRCut,
45         kalphaMesonCut,               
46         kchi2MesonCut,
47         kElecShare,
48         kToCloseV0s,
49         kuseMCPSmearing,
50         kNCuts
51   };
52
53   Bool_t SetCutIds(TString cutString); 
54   Int_t fCuts[kNCuts];
55   Bool_t SetCut(cutIds cutID, Int_t cut);
56   Bool_t UpdateCutString();
57
58   static const char * fgkCutNames[kNCuts];
59
60   Bool_t InitializeCutsFromCutString(const TString analysisCutSelection);
61   void FillElectonLabelArray(AliAODConversionPhoton* photon, Int_t nV0);
62    
63   AliConversionMesonCuts(const char *name="MesonCuts", const char * title="Meson Cuts");
64   AliConversionMesonCuts(const AliConversionMesonCuts&);
65   AliConversionMesonCuts& operator=(const AliConversionMesonCuts&);
66
67   virtual ~AliConversionMesonCuts();                            //virtual destructor
68
69   virtual Bool_t IsSelected(TObject* /*obj*/){return kTRUE;}
70   virtual Bool_t IsSelected(TList* /*list*/) {return kTRUE;}
71
72   TString GetCutNumber();
73
74   // Cut Selection
75   Bool_t MesonIsSelected(AliAODConversionMother *pi0,Bool_t IsSignal=kTRUE, Double_t fRapidityShift=0.);
76   Bool_t MesonIsSelectedMC(TParticle *fMCMother,AliStack *fMCStack, Double_t fRapidityShift=0.);
77   Bool_t MesonIsSelectedMCDalitz(TParticle *fMCMother,AliStack *fMCStack, Double_t fRapidityShift=0.);
78   Bool_t MesonIsSelectedMCChiC(TParticle *fMCMother,AliStack *fMCStack, Int_t &, Int_t &, Int_t &, Double_t fRapidityShift=0. );
79   void PrintCuts();
80
81   void InitCutHistograms(TString name="");
82   void SetFillCutHistograms(TString name=""){if(!fHistograms){InitCutHistograms(name);};}
83   TList *GetCutHistograms(){return fHistograms;}
84   void SmearParticle(AliAODConversionPhoton * photon);
85   
86   ///Cut functions
87   Bool_t RejectSharedElectronV0s(AliAODConversionPhoton* photon, Int_t nV0, Int_t nV0s);
88   Bool_t RejectToCloseV0s(AliAODConversionPhoton* photon, TList *photons, Int_t nV0);
89   // Set Individual Cuts
90   Bool_t SetRCut(Int_t RCut);
91   Bool_t SetMesonKind(Int_t mesonKind);
92   Bool_t SetChi2MesonCut(Int_t chi2MesonCut);
93   Bool_t SetAlphaMesonCut(Int_t alphaMesonCut);
94   Bool_t SetRapidityMesonCut(Int_t RapidityMesonCut);
95   Bool_t SetBackgroundScheme(Int_t BackgroundScheme);
96   Bool_t SetNDegreesForRotationMethod(Int_t DegreesForRotationMethod);
97   Bool_t SetNumberOfBGEvents(Int_t NumberOfBGEvents);
98   Bool_t SetMCPSmearing(Int_t useMCPSmearing);
99   Bool_t SetSharedElectronCut(Int_t sharedElec);
100   Bool_t SetToCloseV0sCut(Int_t toClose);
101
102
103   // Request Flags
104   Bool_t UseRotationMethod(){return fUseRotationMethodInBG;}
105   Bool_t UseTrackMultiplicity(){return fUseTrackMultiplicityForBG;}
106   Int_t GetNumberOfBGEvents(){return fNumberOfBGEvents;}
107   Int_t NDegreesRotation(){return fnDegreeRotationPMForBG;}
108   Bool_t DoBGCalculation(){return fDoBG;}
109   Bool_t DoBGProbability(){return fdoBGProbability;}
110   Bool_t UseElecSharingCut(){return fDoSharedElecCut;}
111   Bool_t UseToCloseV0sCut(){return fDoToCloseV0sCut;}
112   Bool_t UseMCPSmearing(){return fUseMCPSmearing;}
113   Int_t BackgroundHandlerType(){return fBackgroundHandler;}
114   
115   protected:
116   TList *fHistograms;
117   //cuts
118   Int_t fMesonKind;
119   Double_t fMaxR; //r cut  
120   Double_t fChi2CutMeson; //chicut meson
121   Double_t fAlphaMinCutMeson; // min value for meson alpha cut
122   Double_t fAlphaCutMeson; // max value for meson alpha cut
123   Double_t fRapidityCutMeson; // max value for meson rapidity
124   Bool_t fUseRotationMethodInBG; // flag to apply rotation method for meson bg estimation
125   Bool_t fDoBG; // flag to intialize BG
126   Bool_t fdoBGProbability; // flag to use probability method for meson bg estimation
127   Bool_t fUseTrackMultiplicityForBG; // flag to use track multiplicity for meson bg estimation (else V0 mult)
128   Int_t fnDegreeRotationPMForBG; //
129   Int_t fNumberOfBGEvents; //
130   Float_t fOpeningAngle; // min opening angle for meson
131   Bool_t fDoToCloseV0sCut; //
132   Double_t fminV0Dist; //
133   Bool_t fDoSharedElecCut; //
134   Bool_t fUseMCPSmearing; // flag
135   Double_t fPBremSmearing;//
136   Double_t fPSigSmearing; //
137   Double_t fPSigSmearingCte; //
138   TF1 *fBrem; //
139   TRandom3 fRandom; //
140   Int_t fElectronLabelArraySize;
141   Int_t *fElectronLabelArray; //[fElectronLabelArraySize] Array with elec/pos v0 label
142   Int_t fBackgroundHandler; //
143   
144   // Histograms
145   TObjString *fCutString; // cut number used for analysis
146   TH1F *hMesonCuts; // bookkeeping for meson cuts
147   TH1F *hMesonBGCuts; // bookkeeping for meson bg cuts
148
149
150 private:
151
152
153   ClassDef(AliConversionMesonCuts,3)
154 };
155
156
157 #endif