]>
Commit | Line | Data |
---|---|---|
650b3ced | 1 | #ifndef ALIRDHFCUTSD0TOKPI_H |
2 | #define ALIRDHFCUTSD0TOKPI_H | |
3 | /* Copyright(c) 1998-2010, ALICE Experiment at CERN, All rights reserved. * | |
4 | * See cxx source for full Copyright notice */ | |
5 | ||
27de2dfb | 6 | /* $Id$ */ |
7 | ||
650b3ced | 8 | //*********************************************************** |
9 | // Class AliRDHFCutsD0toKpi | |
10 | // class for cuts on AOD reconstructed D0->Kpi | |
11 | // Author: A.Dainese, andrea.dainese@pd.infn.it | |
12 | //*********************************************************** | |
13 | ||
14 | #include "AliRDHFCuts.h" | |
15 | ||
937e1290 | 16 | class AliAODEvent; |
17 | class AliAODRecoDecayHF; | |
5f25117b | 18 | class AliAODRecoDecayHF2Prong; |
937e1290 | 19 | |
650b3ced | 20 | class AliRDHFCutsD0toKpi : public AliRDHFCuts |
21 | { | |
22 | public: | |
23 | ||
c2ec6218 | 24 | |
a9b75906 | 25 | AliRDHFCutsD0toKpi(const char* name="CutsD0toKpi"); |
650b3ced | 26 | |
e2aa82b6 | 27 | virtual ~AliRDHFCutsD0toKpi(); |
650b3ced | 28 | |
29 | AliRDHFCutsD0toKpi(const AliRDHFCutsD0toKpi& source); | |
30 | AliRDHFCutsD0toKpi& operator=(const AliRDHFCutsD0toKpi& source); | |
a6003e0a | 31 | |
32 | using AliRDHFCuts::GetCutVarsForOpt; | |
33 | virtual void GetCutVarsForOpt(AliAODRecoDecayHF *d,Float_t *vars,Int_t nvars,Int_t *pdgdaughters){ | |
34 | return GetCutVarsForOpt(d,vars,nvars,pdgdaughters,0x0); | |
35 | } | |
36 | virtual void GetCutVarsForOpt(AliAODRecoDecayHF *d,Float_t *vars,Int_t nvars,Int_t *pdgdaughters,AliAODEvent *aod); | |
650b3ced | 37 | |
38 | using AliRDHFCuts::IsSelected; | |
937e1290 | 39 | virtual Int_t IsSelected(TObject* obj,Int_t selectionLevel) |
40 | {return IsSelected(obj,selectionLevel,0);} | |
41 | virtual Int_t IsSelected(TObject* obj,Int_t selectionLevel,AliAODEvent* aod); | |
42 | ||
e2aa82b6 | 43 | virtual Int_t IsSelectedCombPID(AliAODRecoDecayHF* d); |
e2aa82b6 | 44 | virtual void CalculateBayesianWeights(AliAODRecoDecayHF* d); |
45 | ||
3cbc09cd | 46 | Float_t GetMassCut(Int_t iPtBin=0) const { return (GetCuts() ? fCutsRD[GetGlobalIndex(0,iPtBin)] : 1.e6);} |
47 | Float_t GetDCACut(Int_t iPtBin=0) const { return (GetCuts() ? fCutsRD[GetGlobalIndex(1,iPtBin)] : 1.e6);} | |
937e1290 | 48 | Int_t CombineSelectionLevels(Int_t selectionvalTrack,Int_t selectionvalCand,Int_t selectionvalPID)const; |
c96634a2 | 49 | virtual Bool_t IsInFiducialAcceptance(Double_t pt,Double_t y) const; |
b14fe7f1 | 50 | virtual void SetStandardCutsPP2010(); |
fc051756 | 51 | virtual void SetStandardCutsPP2011_276TeV(); |
0c22e2ac | 52 | virtual void SetStandardCutsPbPb2010(); |
53 | virtual void SetStandardCutsPbPb2011(); | |
c1235da7 | 54 | void SetStandardCutsPbPb2010Peripherals(); |
937e1290 | 55 | virtual Int_t IsSelectedPID(AliAODRecoDecayHF *rd); |
08ea5c32 | 56 | Int_t IsSelectedPIDdefault(AliAODRecoDecayHF *rd); |
937e1290 | 57 | Int_t IsSelectedSpecialCuts(AliAODRecoDecayHF *d) const; |
58 | void SetUseSpecialCuts(Bool_t useSpecialCuts) {fUseSpecialCuts=useSpecialCuts;} | |
849ad3e5 | 59 | void SetMaximumPtSpecialCuts(Double_t pt) { fPtMaxSpecialCuts=pt; } |
1d9bf4ef | 60 | void SetMaximumPforPID(Double_t p){fmaxPtrackForPID=p;} |
61 | Double_t GetMaximumPforPID(){return fmaxPtrackForPID;} | |
849ad3e5 | 62 | Double_t GetMaximumPtSpecialCuts() const { return fPtMaxSpecialCuts; } |
39827ef5 | 63 | void SetLowPt(Bool_t lowpt,Double_t ptlow=2.) {fLowPt=lowpt;fPtLowPID=ptlow;} |
937e1290 | 64 | Bool_t GetUseSpecialCuts() const {return fUseSpecialCuts;} |
08ea5c32 | 65 | void SetUseDefaultPID(Bool_t defPID){fDefaultPID=defPID;} |
66 | Bool_t GetIsUsedDefPID(){return fDefaultPID;} | |
39827ef5 | 67 | Double_t GetPtForPIDtight()const {return fPtLowPID;} |
5f25117b | 68 | void SetUseKF(Bool_t useKF); |
69 | Bool_t GetIsUsedKF() const {return fUseKF;} | |
e2aa82b6 | 70 | void SetWeightsPositive(Double_t* weights){ |
71 | for (Int_t i = 0; i<AliPID::kSPECIES; i++) { | |
72 | fWeightsPositive[i] = weights[i]; | |
73 | } | |
74 | } | |
75 | Double_t *GetWeightsPositive() const {return fWeightsPositive;} | |
76 | void SetWeightsNegative(Double_t* weights){ | |
77 | for (Int_t i = 0; i<AliPID::kSPECIES; i++) { | |
78 | fWeightsNegative[i] = weights[i]; | |
79 | } | |
80 | } | |
81 | Double_t *GetWeightsNegative() const {return fWeightsNegative;} | |
82 | void SetBayesianStrategy(Int_t strat) {fBayesianStrategy=strat;} | |
83 | Int_t GetBayesianStrategy() const {return fBayesianStrategy;} | |
84 | ||
85 | enum EBayesianStrategy { | |
86 | kBayesMomentum, | |
87 | kBayesWeight, | |
88 | kBayesWeightNoFilter, | |
89 | kBayesSimple | |
90 | }; | |
c2ec6218 | 91 | |
b8f433ab | 92 | |
93 | enum EBayesianCondition { | |
94 | kMaxProb, | |
95 | kAbovePrior, | |
96 | kThreshold | |
97 | }; | |
98 | ||
99 | void SetBayesianCondition(Int_t cond) {fBayesianCondition=cond;} | |
100 | Int_t GetBayesianCondition() const {return fBayesianCondition;} | |
e2aa82b6 | 101 | void SetCombPID(Bool_t CombPID){fCombPID=CombPID;} |
102 | Bool_t GetCombPID() const {return fCombPID;} | |
b8f433ab | 103 | void SetBayesProbThreshold(Double_t thresh){fProbThreshold=thresh;} |
104 | Double_t GetBayesProbThreshold() const {return fProbThreshold;} | |
105 | ||
0c22e2ac | 106 | |
650b3ced | 107 | protected: |
c2ec6218 | 108 | |
5f25117b | 109 | Int_t IsSelectedKF(AliAODRecoDecayHF2Prong* d,AliAODEvent* aod) const; |
110 | ||
111 | Bool_t fUseSpecialCuts; // flag to switch on/off special cuts | |
08ea5c32 | 112 | Bool_t fLowPt; // flag to switch on/off different pid for low pt D0 |
113 | Bool_t fDefaultPID; // flag to switch on/off the default pid | |
e2aa82b6 | 114 | |
5f25117b | 115 | Bool_t fUseKF; // flag to switch on/off D0 selection via KF |
39827ef5 | 116 | Double_t fPtLowPID; // transverse momentum below which the strong PID is applied |
849ad3e5 | 117 | Double_t fPtMaxSpecialCuts; // transverse momentum below which the special cuts are applied |
e2aa82b6 | 118 | |
849ad3e5 | 119 | // if set to zero, used for all pt |
1d9bf4ef | 120 | Double_t fmaxPtrackForPID; // max momentum for applying PID |
5f25117b | 121 | |
e2aa82b6 | 122 | Bool_t fCombPID; //switch for Bayesian |
c2ec6218 | 123 | Int_t fnSpecies; //number of species (used only for array declaration) |
124 | Double_t* fWeightsPositive; //[fnSpecies] Bayesian weights for positive track | |
125 | Double_t* fWeightsNegative; //[fnSpecies] Bayesian weights for negative track | |
e2aa82b6 | 126 | |
b8f433ab | 127 | Double_t fProbThreshold; //Probability threshold for kaon to be accepted in Bayesian method (only applied if fBayesianCondition==kThreshold) |
128 | ||
129 | Int_t fBayesianStrategy; // Switch for which Bayesian PID strategy to use | |
130 | Int_t fBayesianCondition; //Switch for conition applied to kaons | |
131 | ||
132 | ClassDef(AliRDHFCutsD0toKpi,11); // class for cuts on AOD reconstructed D0->Kpi | |
650b3ced | 133 | }; |
134 | ||
135 | #endif | |
aa8d25fe | 136 |