]> git.uio.no Git - u/mrichter/AliRoot.git/blob - PWGGA/GammaConv/AliConversionMesonCuts.h
- changes in Conversion & Meson cuts to print full list of cuts during intialization
[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 #include "AliAODMCParticle.h"
18
19 class AliESDEvent;
20 class AliAODEvent;
21 class AliConversionPhotonBase;
22 class AliKFVertex;
23 class TH1F;
24 class TH2F;
25 class AliPIDResponse;
26 class AliAnalysisCuts;
27 class iostream;
28 class TList;
29 class AliAnalysisManager;
30
31
32 using namespace std;
33
34 class AliConversionMesonCuts : public AliAnalysisCuts {
35         
36  public: 
37
38
39   enum cutIds {
40         kMesonKind,
41         kBackgroundScheme,            
42         kNumberOfBGEvents,           
43         kDegreesForRotationMethod,    
44         kRapidityMesonCut,    
45         kRCut,
46         kalphaMesonCut,               
47         kchi2MesonCut,
48         kElecShare,
49         kToCloseV0s,
50         kuseMCPSmearing,
51    kDcaGammaGamma,
52    kDcaRPrimVtx,
53    kDcaZPrimVtx,
54         kNCuts
55   };
56
57   Bool_t SetCutIds(TString cutString); 
58   Int_t fCuts[kNCuts];
59   Bool_t SetCut(cutIds cutID, Int_t cut);
60   Bool_t UpdateCutString();
61
62   static const char * fgkCutNames[kNCuts];
63
64   Bool_t InitializeCutsFromCutString(const TString analysisCutSelection);
65   void FillElectonLabelArray(AliAODConversionPhoton* photon, Int_t nV0);
66    
67   AliConversionMesonCuts(const char *name="MesonCuts", const char * title="Meson Cuts");
68   AliConversionMesonCuts(const AliConversionMesonCuts&);
69   AliConversionMesonCuts& operator=(const AliConversionMesonCuts&);
70
71   virtual ~AliConversionMesonCuts();                            //virtual destructor
72
73   virtual Bool_t IsSelected(TObject* /*obj*/){return kTRUE;}
74   virtual Bool_t IsSelected(TList* /*list*/) {return kTRUE;}
75
76   TString GetCutNumber();
77
78   // Cut Selection
79   Bool_t MesonIsSelected(AliAODConversionMother *pi0,Bool_t IsSignal=kTRUE, Double_t fRapidityShift=0.);
80   Bool_t MesonIsSelectedMC(TParticle *fMCMother,AliStack *fMCStack, Double_t fRapidityShift=0.);
81   Bool_t MesonIsSelectedAODMC(AliAODMCParticle *MCMother,TClonesArray *AODMCArray, Double_t fRapidityShift=0.);
82   Bool_t MesonIsSelectedMCDalitz(TParticle *fMCMother,AliStack *fMCStack, Int_t &labelelectron, Int_t &labelpositron, Int_t &labelgamma,Double_t fRapidityShift=0.);
83   Bool_t MesonIsSelectedMCEtaPiPlPiMiGamma(TParticle *fMCMother,AliStack *fMCStack, Int_t &labelNegPion, Int_t &labelPosPion, Int_t &labelGamma, Double_t fRapidityShift=0);
84   Bool_t MesonIsSelectedMCChiC(TParticle *fMCMother,AliStack *fMCStack, Int_t &, Int_t &, Int_t &, Double_t fRapidityShift=0. );
85   void PrintCuts();
86   void PrintCutsWithValues();
87   
88   void InitCutHistograms(TString name="",Bool_t additionalHists=kFALSE);
89   void SetFillCutHistograms(TString name=""){if(!fHistograms){InitCutHistograms(name);};}
90   TList *GetCutHistograms(){return fHistograms;}
91   void SmearParticle(AliAODConversionPhoton * photon);
92   void SmearVirtualPhoton(AliAODConversionPhoton* photon);
93   TLorentzVector SmearElectron(TLorentzVector particle);
94   ///Cut functions
95   Bool_t RejectSharedElectronV0s(AliAODConversionPhoton* photon, Int_t nV0, Int_t nV0s);
96   Bool_t RejectToCloseV0s(AliAODConversionPhoton* photon, TList *photons, Int_t nV0);
97   // Set Individual Cuts
98   Bool_t SetRCut(Int_t RCut);
99   Bool_t SetMesonKind(Int_t mesonKind);
100   Bool_t SetChi2MesonCut(Int_t chi2MesonCut);
101   Bool_t SetAlphaMesonCut(Int_t alphaMesonCut);
102   Bool_t SetRapidityMesonCut(Int_t RapidityMesonCut);
103   Bool_t SetBackgroundScheme(Int_t BackgroundScheme);
104   Bool_t SetNDegreesForRotationMethod(Int_t DegreesForRotationMethod);
105   Bool_t SetNumberOfBGEvents(Int_t NumberOfBGEvents);
106   Bool_t SetMCPSmearing(Int_t useMCPSmearing);
107   Bool_t SetSharedElectronCut(Int_t sharedElec);
108   Bool_t SetToCloseV0sCut(Int_t toClose);
109   Bool_t SetDCAGammaGammaCut(Int_t DCAGammaGamma);
110   Bool_t SetDCAZMesonPrimVtxCut(Int_t DCAZMesonPrimVtx);
111   Bool_t SetDCARMesonPrimVtxCut(Int_t DCARMesonPrimVtx);
112
113   // Request Flags
114   Bool_t UseRotationMethod(){return fUseRotationMethodInBG;}
115   Bool_t UseTrackMultiplicity(){return fUseTrackMultiplicityForBG;}
116   Int_t GetNumberOfBGEvents(){return fNumberOfBGEvents;}
117   Int_t NDegreesRotation(){return fnDegreeRotationPMForBG;}
118   Bool_t DoBGCalculation(){return fDoBG;}
119   Bool_t DoBGProbability(){return fdoBGProbability;}
120   Bool_t UseElecSharingCut(){return fDoSharedElecCut;}
121   Bool_t UseToCloseV0sCut(){return fDoToCloseV0sCut;}
122   Bool_t UseMCPSmearing(){return fUseMCPSmearing;}
123   Int_t BackgroundHandlerType(){return fBackgroundHandler;}
124   
125   protected:
126   TList *fHistograms;
127   //cuts
128   Int_t fMesonKind;
129   Double_t fMaxR; //r cut  
130   Double_t fChi2CutMeson; //chicut meson
131   Double_t fAlphaMinCutMeson; // min value for meson alpha cut
132   Double_t fAlphaCutMeson; // max value for meson alpha cut
133   Double_t fRapidityCutMeson; // max value for meson rapidity
134   Bool_t fUseRotationMethodInBG; // flag to apply rotation method for meson bg estimation
135   Bool_t fDoBG; // flag to intialize BG
136   Bool_t fdoBGProbability; // flag to use probability method for meson bg estimation
137   Bool_t fUseTrackMultiplicityForBG; // flag to use track multiplicity for meson bg estimation (else V0 mult)
138   Int_t fnDegreeRotationPMForBG; //
139   Int_t fNumberOfBGEvents; //
140   Float_t fOpeningAngle; // min opening angle for meson
141   Bool_t fDoToCloseV0sCut; //
142   Double_t fminV0Dist; //
143   Bool_t fDoSharedElecCut; //
144   Bool_t fUseMCPSmearing; // flag
145   Double_t fPBremSmearing;//
146   Double_t fPSigSmearing; //
147   Double_t fPSigSmearingCte; //
148   TF1 *fBrem; //
149   TRandom3 fRandom; //
150   TF1 *fFAlphaCut;
151   Bool_t fAlphaPtDepCut;
152   Int_t fElectronLabelArraySize;
153   Int_t *fElectronLabelArray; //[fElectronLabelArraySize] Array with elec/pos v0 label
154   Double_t fDCAGammaGammaCut; // cut value for the maximum distance between the two photons [cm]
155   Double_t fDCAZMesonPrimVtxCut; // cut value for the maximum distance in Z between the production point of the Meson & the primary vertex [cm]
156   Double_t fDCARMesonPrimVtxCut; // cut value for the maximum distance in R between the production point of the Meson & the primary vertex [cm]
157   Int_t fBackgroundHandler; //
158   
159   // Histograms
160   TObjString *fCutString; // cut number used for analysis
161   TH1F *hMesonCuts; // bookkeeping for meson cuts
162   TH1F *hMesonBGCuts; // bookkeeping for meson bg cuts
163   TH1F *hDCAGammaGammaMesonBefore;
164   TH1F *hDCAZMesonPrimVtxBefore;
165   TH1F *hDCARMesonPrimVtxBefore;
166   TH1F *hDCAGammaGammaMesonAfter;
167   TH2F *hDCAZMesonPrimVtxAfter;
168   TH1F *hDCARMesonPrimVtxAfter;
169
170 private:
171
172
173   ClassDef(AliConversionMesonCuts,5)
174 };
175
176
177 #endif