b8ba30c11a794d94d700a251f301dc78650a966b
[u/mrichter/AliRoot.git] / PWGHF / vertexingHF / AliRDHFCutsLctopKpi.h
1 #ifndef ALIRDHFCUTSLCTOPKPI_H
2 #define ALIRDHFCUTSLCTOPKPI_H
3 /* Copyright(c) 1998-2010, ALICE Experiment at CERN, All rights reserved. *
4  * See cxx source for full Copyright notice                               */
5
6 /* $Id$ */ 
7
8 //***********************************************************
9 // Class AliRDHFCutsLctopKpi
10 // class for cuts on AOD reconstructed Lc->pKpi
11 // Author: A.Dainese, andrea.dainese@pd.infn.it
12 //***********************************************************
13
14 #include "AliRDHFCuts.h"
15 #include "AliAODPidHF.h"
16 #include "AliAODRecoDecayHF3Prong.h"
17
18 class AliRDHFCutsLctopKpi : public AliRDHFCuts 
19 {
20  public:
21
22  enum EPIDStrategy {
23   kNSigma,
24   kCombined,
25   kCombinedSoft,
26   kNSigmaStrong,
27   kCombinedpPb,
28   kCombinedpPb2
29  };
30  enum ECutsStrategy {
31   kStandard,
32   kKF
33  };
34
35
36   AliRDHFCutsLctopKpi(const char* name="CutsLctopKpi");
37   
38   virtual ~AliRDHFCutsLctopKpi();
39
40   AliRDHFCutsLctopKpi(const AliRDHFCutsLctopKpi& source);
41   AliRDHFCutsLctopKpi& operator=(const AliRDHFCutsLctopKpi& source); 
42  
43   using AliRDHFCuts::GetCutVarsForOpt;
44   virtual void GetCutVarsForOpt(AliAODRecoDecayHF *d,Float_t *vars,Int_t nvars,Int_t *pdgdaughters){
45     return GetCutVarsForOpt(d,vars,nvars,pdgdaughters,0x0);
46   }
47   virtual void GetCutVarsForOpt(AliAODRecoDecayHF *d,Float_t *vars,Int_t nvars,Int_t *pdgdaughters,AliAODEvent *aod);
48
49   void SetPidpion(AliAODPidHF* pidPion) { 
50       if(fPidObjpion) delete fPidObjpion;
51       fPidObjpion=new AliAODPidHF(*pidPion);
52       }
53   void SetPidprot(AliAODPidHF* pidProt) {
54       if(fPidObjprot) delete fPidObjprot;
55       fPidObjprot=new AliAODPidHF(*pidProt);
56   }
57
58   virtual void SetStandardCutsPP2010();
59   virtual void SetStandardCutsPbPb2010();
60   virtual void SetStandardCutsPbPb2011();
61
62
63   AliAODPidHF* GetPidpion() const {return fPidObjpion;}
64   AliAODPidHF* GetPidprot() const {return fPidObjprot;}
65   void SetPIDStrategy(EPIDStrategy pidStrategy) {
66    fPIDStrategy=pidStrategy;
67   }
68   EPIDStrategy GetPIDStrategy() const {
69    return fPIDStrategy;
70   }
71   void SetCutsStrategy(ECutsStrategy cutsStrategy) {
72    fCutsStrategy=cutsStrategy;
73   }
74   ECutsStrategy GetCutsStrategy() const {
75    return fCutsStrategy;
76   }
77   void SetPIDThreshold(AliPID::EParticleType species,Double_t threshold) {
78    fPIDThreshold[static_cast<Int_t>(species)]=threshold;
79   }
80  Double_t GetPIDThreshold(AliPID::EParticleType species) const {
81   return fPIDThreshold[static_cast<Int_t>(species)];
82  }
83  Bool_t GetUseSpecialCut(){return fUseSpecialCut;}
84  void SetUseSpecialCut(Bool_t useSpecialCut=kTRUE){fUseSpecialCut=useSpecialCut;}
85
86   using AliRDHFCuts::IsSelected;
87   virtual Int_t IsSelected(TObject* obj,Int_t selectionLevel)
88                            {return IsSelected(obj,selectionLevel,0);}
89   virtual Int_t IsSelected(TObject* obj,Int_t selectionLevel,AliAODEvent *aod);
90   using AliRDHFCuts::IsSelectedPID;
91   virtual Int_t IsSelectedPID(AliAODRecoDecayHF* obj);
92   Int_t IsSelectedCombinedPID(AliAODRecoDecayHF* obj);
93   Int_t IsSelectedCombinedPIDSoft(AliAODRecoDecayHF* obj);
94   Int_t IsSelectedCombinedPIDpPb(AliAODRecoDecayHF* obj);
95   Int_t IsSelectedCombinedPIDpPb2(AliAODRecoDecayHF* obj);
96   Int_t IsSelectedPIDStrong(AliAODRecoDecayHF* obj);
97   Int_t CombinePIDCuts (Int_t returnvalue, Int_t returnvaluePID) const;
98
99   virtual Bool_t IsInFiducialAcceptance(Double_t pt,Double_t y) const;
100   
101   Float_t GetMassCut(Int_t iPtBin=0) const { return (GetCuts() ? fCutsRD[GetGlobalIndex(0,iPtBin)] : 1.e6);}
102   Float_t GetDCACut(Int_t iPtBin=0) const { return (GetCuts() ? fCutsRD[GetGlobalIndex(11,iPtBin)] : 1.e6);}
103
104   void SetUseImpParProdCorrCut(Bool_t use){
105     fUseImpParProdCorrCut=use;
106   }
107   Bool_t GetUseImpParProdCorrCut() const {
108     return fUseImpParProdCorrCut;
109   }
110
111   AliKFParticle* ReconstructKF(AliAODRecoDecayHF3Prong *d,Int_t *pdgs,Double_t field,Bool_t constraint) const;
112  protected:
113   AliAODPidHF *fPidObjprot;
114   AliAODPidHF *fPidObjpion;
115   Bool_t fUseImpParProdCorrCut; //switch for cut on d0p*d0K vs. d0K*d0pi 
116
117 private:
118   EPIDStrategy fPIDStrategy;                // PIS strategy (nsigma, combined)
119   Double_t fPIDThreshold[AliPID::kSPECIES]; // PID threshold for each species
120   ECutsStrategy fCutsStrategy;              // cut strategy (standard or KF)
121   Bool_t fUseSpecialCut;
122
123   ClassDef(AliRDHFCutsLctopKpi,7);  // class for cuts on AOD reconstructed Lc->pKpi
124 };
125
126 #endif
127
128