1 #ifndef ALICONVERSIONMESONCUTS_H
2 #define ALICONVERSIONMESONCUTS_H
4 // Class handling all kinds of selection cuts for Gamma Conversion analysis
5 // Authors: Svein Lindal, Daniel Lohner *
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"
15 #include "AliAnalysisCuts.h"
17 #include "AliAODMCParticle.h"
21 class AliConversionPhotonBase;
26 class AliAnalysisCuts;
29 class AliAnalysisManager;
34 class AliConversionMesonCuts : public AliAnalysisCuts {
43 kDegreesForRotationMethod,
57 Bool_t SetCutIds(TString cutString);
59 Bool_t SetCut(cutIds cutID, Int_t cut);
60 Bool_t UpdateCutString();
62 static const char * fgkCutNames[kNCuts];
64 Bool_t InitializeCutsFromCutString(const TString analysisCutSelection);
65 void FillElectonLabelArray(AliAODConversionPhoton* photon, Int_t nV0);
67 AliConversionMesonCuts(const char *name="MesonCuts", const char * title="Meson Cuts");
68 AliConversionMesonCuts(const AliConversionMesonCuts&);
69 AliConversionMesonCuts& operator=(const AliConversionMesonCuts&);
71 virtual ~AliConversionMesonCuts(); //virtual destructor
73 virtual Bool_t IsSelected(TObject* /*obj*/){return kTRUE;}
74 virtual Bool_t IsSelected(TList* /*list*/) {return kTRUE;}
76 TString GetCutNumber();
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 MesonIsSelectedMCPiPlPiMiPiZero(TParticle *fMCMother,AliStack *fMCStack, Int_t &labelNegPion, Int_t &labelPosPion, Int_t &labelNeutPion, Double_t fRapidityShift=0);
85 Bool_t MesonIsSelectedMCChiC(TParticle *fMCMother,AliStack *fMCStack, Int_t &, Int_t &, Int_t &, Double_t fRapidityShift=0. );
87 void PrintCutsWithValues();
89 void InitCutHistograms(TString name="",Bool_t additionalHists=kFALSE);
90 void SetFillCutHistograms(TString name=""){if(!fHistograms){InitCutHistograms(name);};}
91 TList *GetCutHistograms(){return fHistograms;}
92 void SmearParticle(AliAODConversionPhoton * photon);
93 void SmearVirtualPhoton(AliAODConversionPhoton* photon);
94 TLorentzVector SmearElectron(TLorentzVector particle);
96 Bool_t RejectSharedElectronV0s(AliAODConversionPhoton* photon, Int_t nV0, Int_t nV0s);
97 Bool_t RejectToCloseV0s(AliAODConversionPhoton* photon, TList *photons, Int_t nV0);
98 // Set Individual Cuts
99 Bool_t SetRCut(Int_t RCut);
100 Bool_t SetMesonKind(Int_t mesonKind);
101 Bool_t SetChi2MesonCut(Int_t chi2MesonCut);
102 Bool_t SetAlphaMesonCut(Int_t alphaMesonCut);
103 Bool_t SetRapidityMesonCut(Int_t RapidityMesonCut);
104 Bool_t SetBackgroundScheme(Int_t BackgroundScheme);
105 Bool_t SetNDegreesForRotationMethod(Int_t DegreesForRotationMethod);
106 Bool_t SetNumberOfBGEvents(Int_t NumberOfBGEvents);
107 Bool_t SetMCPSmearing(Int_t useMCPSmearing);
108 Bool_t SetSharedElectronCut(Int_t sharedElec);
109 Bool_t SetToCloseV0sCut(Int_t toClose);
110 Bool_t SetDCAGammaGammaCut(Int_t DCAGammaGamma);
111 Bool_t SetDCAZMesonPrimVtxCut(Int_t DCAZMesonPrimVtx);
112 Bool_t SetDCARMesonPrimVtxCut(Int_t DCARMesonPrimVtx);
115 Bool_t UseRotationMethod(){return fUseRotationMethodInBG;}
116 Bool_t UseTrackMultiplicity(){return fUseTrackMultiplicityForBG;}
117 Int_t GetNumberOfBGEvents(){return fNumberOfBGEvents;}
118 Int_t NDegreesRotation(){return fnDegreeRotationPMForBG;}
119 Bool_t DoBGCalculation(){return fDoBG;}
120 Bool_t DoBGProbability(){return fdoBGProbability;}
121 Bool_t UseElecSharingCut(){return fDoSharedElecCut;}
122 Bool_t UseToCloseV0sCut(){return fDoToCloseV0sCut;}
123 Bool_t UseMCPSmearing(){return fUseMCPSmearing;}
124 Int_t BackgroundHandlerType(){return fBackgroundHandler;}
130 Double_t fMaxR; //r cut
131 Double_t fChi2CutMeson; //chicut meson
132 Double_t fAlphaMinCutMeson; // min value for meson alpha cut
133 Double_t fAlphaCutMeson; // max value for meson alpha cut
134 Double_t fRapidityCutMeson; // max value for meson rapidity
135 Bool_t fUseRotationMethodInBG; // flag to apply rotation method for meson bg estimation
136 Bool_t fDoBG; // flag to intialize BG
137 Bool_t fdoBGProbability; // flag to use probability method for meson bg estimation
138 Bool_t fUseTrackMultiplicityForBG; // flag to use track multiplicity for meson bg estimation (else V0 mult)
139 Int_t fnDegreeRotationPMForBG; //
140 Int_t fNumberOfBGEvents; //
141 Float_t fOpeningAngle; // min opening angle for meson
142 Bool_t fDoToCloseV0sCut; //
143 Double_t fminV0Dist; //
144 Bool_t fDoSharedElecCut; //
145 Bool_t fUseMCPSmearing; // flag
146 Double_t fPBremSmearing;//
147 Double_t fPSigSmearing; //
148 Double_t fPSigSmearingCte; //
152 Bool_t fAlphaPtDepCut;
153 Int_t fElectronLabelArraySize;
154 Int_t *fElectronLabelArray; //[fElectronLabelArraySize] Array with elec/pos v0 label
155 Double_t fDCAGammaGammaCut; // cut value for the maximum distance between the two photons [cm]
156 Double_t fDCAZMesonPrimVtxCut; // cut value for the maximum distance in Z between the production point of the Meson & the primary vertex [cm]
157 Double_t fDCARMesonPrimVtxCut; // cut value for the maximum distance in R between the production point of the Meson & the primary vertex [cm]
158 Int_t fBackgroundHandler; //
161 TObjString *fCutString; // cut number used for analysis
162 TH1F *hMesonCuts; // bookkeeping for meson cuts
163 TH1F *hMesonBGCuts; // bookkeeping for meson bg cuts
164 TH1F *hDCAGammaGammaMesonBefore;
165 TH1F *hDCAZMesonPrimVtxBefore;
166 TH1F *hDCARMesonPrimVtxBefore;
167 TH1F *hDCAGammaGammaMesonAfter;
168 TH2F *hDCAZMesonPrimVtxAfter;
169 TH1F *hDCARMesonPrimVtxAfter;
174 ClassDef(AliConversionMesonCuts,5)