]> git.uio.no Git - u/mrichter/AliRoot.git/blame - 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
CommitLineData
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
19class AliESDEvent;
20class AliAODEvent;
21class AliConversionPhotonBase;
22class AliKFVertex;
23class TH1F;
24class TH2F;
25class AliPIDResponse;
26class AliAnalysisCuts;
27class iostream;
28class TList;
29class AliAnalysisManager;
30
31
32using namespace std;
33
34class 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,
4803eb1f 51 kDcaGammaGamma,
52 kDcaRPrimVtx,
53 kDcaZPrimVtx,
2bb2434e 54 kNCuts
55 };
56
57 Bool_t SetCutIds(TString cutString);
58 Int_t fCuts[kNCuts];
59 Bool_t SetCut(cutIds cutID, Int_t cut);
e5b6e8a6 60 Bool_t UpdateCutString();
2bb2434e 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");
1d9e6011 68 AliConversionMesonCuts(const AliConversionMesonCuts&);
a280ac15 69 AliConversionMesonCuts& operator=(const AliConversionMesonCuts&);
1d9e6011 70
2bb2434e 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
11c1e680 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.);
ae947965 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.);
209b710e 83 Bool_t MesonIsSelectedMCEtaPiPlPiMiGamma(TParticle *fMCMother,AliStack *fMCStack, Int_t &labelNegPion, Int_t &labelPosPion, Int_t &labelGamma, Double_t fRapidityShift=0);
0f8c33c1 84 Bool_t MesonIsSelectedMCChiC(TParticle *fMCMother,AliStack *fMCStack, Int_t &, Int_t &, Int_t &, Double_t fRapidityShift=0. );
2bb2434e 85 void PrintCuts();
e656a821 86 void PrintCutsWithValues();
87
4803eb1f 88 void InitCutHistograms(TString name="",Bool_t additionalHists=kFALSE);
e5b6e8a6 89 void SetFillCutHistograms(TString name=""){if(!fHistograms){InitCutHistograms(name);};}
2bb2434e 90 TList *GetCutHistograms(){return fHistograms;}
ca91a3e1 91 void SmearParticle(AliAODConversionPhoton * photon);
a1c2f90c 92 void SmearVirtualPhoton(AliAODConversionPhoton* photon);
7ab8e97e 93 TLorentzVector SmearElectron(TLorentzVector particle);
2bb2434e 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);
ca91a3e1 105 Bool_t SetNumberOfBGEvents(Int_t NumberOfBGEvents);
106 Bool_t SetMCPSmearing(Int_t useMCPSmearing);
2bb2434e 107 Bool_t SetSharedElectronCut(Int_t sharedElec);
108 Bool_t SetToCloseV0sCut(Int_t toClose);
4803eb1f 109 Bool_t SetDCAGammaGammaCut(Int_t DCAGammaGamma);
110 Bool_t SetDCAZMesonPrimVtxCut(Int_t DCAZMesonPrimVtx);
111 Bool_t SetDCARMesonPrimVtxCut(Int_t DCARMesonPrimVtx);
2bb2434e 112
113 // Request Flags
114 Bool_t UseRotationMethod(){return fUseRotationMethodInBG;}
ca91a3e1 115 Bool_t UseTrackMultiplicity(){return fUseTrackMultiplicityForBG;}
e5b6e8a6 116 Int_t GetNumberOfBGEvents(){return fNumberOfBGEvents;}
2bb2434e 117 Int_t NDegreesRotation(){return fnDegreeRotationPMForBG;}
e5b6e8a6 118 Bool_t DoBGCalculation(){return fDoBG;}
2bb2434e 119 Bool_t DoBGProbability(){return fdoBGProbability;}
120 Bool_t UseElecSharingCut(){return fDoSharedElecCut;}
121 Bool_t UseToCloseV0sCut(){return fDoToCloseV0sCut;}
ca91a3e1 122 Bool_t UseMCPSmearing(){return fUseMCPSmearing;}
e5b6e8a6 123 Int_t BackgroundHandlerType(){return fBackgroundHandler;}
ca91a3e1 124
2bb2434e 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
e5b6e8a6 135 Bool_t fDoBG; // flag to intialize BG
2bb2434e 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; //
ca91a3e1 139 Int_t fNumberOfBGEvents; //
2bb2434e 140 Float_t fOpeningAngle; // min opening angle for meson
141 Bool_t fDoToCloseV0sCut; //
142 Double_t fminV0Dist; //
143 Bool_t fDoSharedElecCut; //
ca91a3e1 144 Bool_t fUseMCPSmearing; // flag
145 Double_t fPBremSmearing;//
146 Double_t fPSigSmearing; //
147 Double_t fPSigSmearingCte; //
148 TF1 *fBrem; //
2bb2434e 149 TRandom3 fRandom; //
976b1f89 150 TF1 *fFAlphaCut;
151 Bool_t fAlphaPtDepCut;
a280ac15 152 Int_t fElectronLabelArraySize;
153 Int_t *fElectronLabelArray; //[fElectronLabelArraySize] Array with elec/pos v0 label
4803eb1f 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]
e5b6e8a6 157 Int_t fBackgroundHandler; //
2bb2434e 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
4803eb1f 163 TH1F *hDCAGammaGammaMesonBefore;
164 TH1F *hDCAZMesonPrimVtxBefore;
165 TH1F *hDCARMesonPrimVtxBefore;
166 TH1F *hDCAGammaGammaMesonAfter;
167 TH2F *hDCAZMesonPrimVtxAfter;
168 TH1F *hDCARMesonPrimVtxAfter;
2bb2434e 169
a280ac15 170private:
171
172
e656a821 173 ClassDef(AliConversionMesonCuts,5)
2bb2434e 174};
175
176
177#endif