]>
Commit | Line | Data |
---|---|---|
2bb2434e | 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" | |
ae947965 | 17 | #include "AliAODMCParticle.h" |
2bb2434e | 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, | |
2bb2434e | 41 | kBackgroundScheme, |
ca91a3e1 | 42 | kNumberOfBGEvents, |
2bb2434e | 43 | kDegreesForRotationMethod, |
ca91a3e1 | 44 | kRapidityMesonCut, |
45 | kRCut, | |
46 | kalphaMesonCut, | |
47 | kchi2MesonCut, | |
2bb2434e | 48 | kElecShare, |
49 | kToCloseV0s, | |
e5b6e8a6 | 50 | kuseMCPSmearing, |
2bb2434e | 51 | kNCuts |
52 | }; | |
53 | ||
54 | Bool_t SetCutIds(TString cutString); | |
55 | Int_t fCuts[kNCuts]; | |
56 | Bool_t SetCut(cutIds cutID, Int_t cut); | |
e5b6e8a6 | 57 | Bool_t UpdateCutString(); |
2bb2434e | 58 | |
59 | static const char * fgkCutNames[kNCuts]; | |
60 | ||
61 | Bool_t InitializeCutsFromCutString(const TString analysisCutSelection); | |
62 | void FillElectonLabelArray(AliAODConversionPhoton* photon, Int_t nV0); | |
63 | ||
64 | AliConversionMesonCuts(const char *name="MesonCuts", const char * title="Meson Cuts"); | |
1d9e6011 | 65 | AliConversionMesonCuts(const AliConversionMesonCuts&); |
a280ac15 | 66 | AliConversionMesonCuts& operator=(const AliConversionMesonCuts&); |
1d9e6011 | 67 | |
2bb2434e | 68 | virtual ~AliConversionMesonCuts(); //virtual destructor |
69 | ||
70 | virtual Bool_t IsSelected(TObject* /*obj*/){return kTRUE;} | |
71 | virtual Bool_t IsSelected(TList* /*list*/) {return kTRUE;} | |
72 | ||
73 | TString GetCutNumber(); | |
74 | ||
75 | // Cut Selection | |
11c1e680 | 76 | Bool_t MesonIsSelected(AliAODConversionMother *pi0,Bool_t IsSignal=kTRUE, Double_t fRapidityShift=0.); |
77 | Bool_t MesonIsSelectedMC(TParticle *fMCMother,AliStack *fMCStack, Double_t fRapidityShift=0.); | |
ae947965 | 78 | Bool_t MesonIsSelectedAODMC(AliAODMCParticle *MCMother,TClonesArray *AODMCArray, Double_t fRapidityShift=0.); |
79 | Bool_t MesonIsSelectedMCDalitz(TParticle *fMCMother,AliStack *fMCStack, Int_t &labelelectron, Int_t &labelpositron, Int_t &labelgamma,Double_t fRapidityShift=0.); | |
0f8c33c1 | 80 | Bool_t MesonIsSelectedMCChiC(TParticle *fMCMother,AliStack *fMCStack, Int_t &, Int_t &, Int_t &, Double_t fRapidityShift=0. ); |
2bb2434e | 81 | void PrintCuts(); |
82 | ||
e5b6e8a6 | 83 | void InitCutHistograms(TString name=""); |
84 | void SetFillCutHistograms(TString name=""){if(!fHistograms){InitCutHistograms(name);};} | |
2bb2434e | 85 | TList *GetCutHistograms(){return fHistograms;} |
ca91a3e1 | 86 | void SmearParticle(AliAODConversionPhoton * photon); |
2bb2434e | 87 | ///Cut functions |
88 | Bool_t RejectSharedElectronV0s(AliAODConversionPhoton* photon, Int_t nV0, Int_t nV0s); | |
89 | Bool_t RejectToCloseV0s(AliAODConversionPhoton* photon, TList *photons, Int_t nV0); | |
90 | // Set Individual Cuts | |
91 | Bool_t SetRCut(Int_t RCut); | |
92 | Bool_t SetMesonKind(Int_t mesonKind); | |
93 | Bool_t SetChi2MesonCut(Int_t chi2MesonCut); | |
94 | Bool_t SetAlphaMesonCut(Int_t alphaMesonCut); | |
95 | Bool_t SetRapidityMesonCut(Int_t RapidityMesonCut); | |
96 | Bool_t SetBackgroundScheme(Int_t BackgroundScheme); | |
97 | Bool_t SetNDegreesForRotationMethod(Int_t DegreesForRotationMethod); | |
ca91a3e1 | 98 | Bool_t SetNumberOfBGEvents(Int_t NumberOfBGEvents); |
99 | Bool_t SetMCPSmearing(Int_t useMCPSmearing); | |
2bb2434e | 100 | Bool_t SetSharedElectronCut(Int_t sharedElec); |
101 | Bool_t SetToCloseV0sCut(Int_t toClose); | |
102 | ||
103 | ||
104 | // Request Flags | |
105 | Bool_t UseRotationMethod(){return fUseRotationMethodInBG;} | |
ca91a3e1 | 106 | Bool_t UseTrackMultiplicity(){return fUseTrackMultiplicityForBG;} |
e5b6e8a6 | 107 | Int_t GetNumberOfBGEvents(){return fNumberOfBGEvents;} |
2bb2434e | 108 | Int_t NDegreesRotation(){return fnDegreeRotationPMForBG;} |
e5b6e8a6 | 109 | Bool_t DoBGCalculation(){return fDoBG;} |
2bb2434e | 110 | Bool_t DoBGProbability(){return fdoBGProbability;} |
111 | Bool_t UseElecSharingCut(){return fDoSharedElecCut;} | |
112 | Bool_t UseToCloseV0sCut(){return fDoToCloseV0sCut;} | |
ca91a3e1 | 113 | Bool_t UseMCPSmearing(){return fUseMCPSmearing;} |
e5b6e8a6 | 114 | Int_t BackgroundHandlerType(){return fBackgroundHandler;} |
ca91a3e1 | 115 | |
2bb2434e | 116 | protected: |
117 | TList *fHistograms; | |
118 | //cuts | |
119 | Int_t fMesonKind; | |
120 | Double_t fMaxR; //r cut | |
121 | Double_t fChi2CutMeson; //chicut meson | |
122 | Double_t fAlphaMinCutMeson; // min value for meson alpha cut | |
123 | Double_t fAlphaCutMeson; // max value for meson alpha cut | |
124 | Double_t fRapidityCutMeson; // max value for meson rapidity | |
125 | Bool_t fUseRotationMethodInBG; // flag to apply rotation method for meson bg estimation | |
e5b6e8a6 | 126 | Bool_t fDoBG; // flag to intialize BG |
2bb2434e | 127 | Bool_t fdoBGProbability; // flag to use probability method for meson bg estimation |
128 | Bool_t fUseTrackMultiplicityForBG; // flag to use track multiplicity for meson bg estimation (else V0 mult) | |
129 | Int_t fnDegreeRotationPMForBG; // | |
ca91a3e1 | 130 | Int_t fNumberOfBGEvents; // |
2bb2434e | 131 | Float_t fOpeningAngle; // min opening angle for meson |
132 | Bool_t fDoToCloseV0sCut; // | |
133 | Double_t fminV0Dist; // | |
134 | Bool_t fDoSharedElecCut; // | |
ca91a3e1 | 135 | Bool_t fUseMCPSmearing; // flag |
136 | Double_t fPBremSmearing;// | |
137 | Double_t fPSigSmearing; // | |
138 | Double_t fPSigSmearingCte; // | |
139 | TF1 *fBrem; // | |
2bb2434e | 140 | TRandom3 fRandom; // |
a280ac15 | 141 | Int_t fElectronLabelArraySize; |
142 | Int_t *fElectronLabelArray; //[fElectronLabelArraySize] Array with elec/pos v0 label | |
e5b6e8a6 | 143 | Int_t fBackgroundHandler; // |
2bb2434e | 144 | |
145 | // Histograms | |
146 | TObjString *fCutString; // cut number used for analysis | |
147 | TH1F *hMesonCuts; // bookkeeping for meson cuts | |
148 | TH1F *hMesonBGCuts; // bookkeeping for meson bg cuts | |
149 | ||
a280ac15 | 150 | private: |
151 | ||
152 | ||
ae947965 | 153 | ClassDef(AliConversionMesonCuts,4) |
2bb2434e | 154 | }; |
155 | ||
156 | ||
157 | #endif |