Updates in LC->Kos+proton code (Annalisa)
[u/mrichter/AliRoot.git] / PWGHF / vertexingHF / AliRDHFCutsLctoV0.h
1 #ifndef ALIRDHFCUTSLCTOV0_H
2 #define ALIRDHFCUTSLCTOV0_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 AliRDHFCutsLctoV0
10 // class for cuts on AOD reconstructed Lc-> V0 + bachelor
11 //***********************************************************
12
13 #include "AliRDHFCuts.h"
14
15 class AliRDHFCutsLctoV0 : public AliRDHFCuts
16 {
17  public:
18
19   enum ELctoV0channel {
20     kLcToK0Spr=0x0001,
21     kLcToLBarpi=0x0002,
22     kLcToLpi=0x0004
23   };
24
25  enum ELctoV0pidStrategy {
26   kTOFandTPC=0,
27   kTOForTPCveto=1,
28   kTOFandTPCasym1=2,
29   kTOFandTPCasym2=3,
30   kTPClowTOFhigh=4,
31   kTPClowTOFintermediateTOForTPChigh=5
32  };
33
34   AliRDHFCutsLctoV0(const char* name="CutsLctoV0", Short_t v0channel=0);
35
36   virtual ~AliRDHFCutsLctoV0();
37
38   AliRDHFCutsLctoV0(const AliRDHFCutsLctoV0& source);
39   AliRDHFCutsLctoV0& operator=(const AliRDHFCutsLctoV0& source);
40
41   using AliRDHFCuts::GetCutVarsForOpt;
42   virtual void GetCutVarsForOpt(AliAODRecoDecayHF *d,Float_t *vars,Int_t nvars,Int_t *pdgdaughters);
43
44   using AliRDHFCuts::IsSelected;
45   virtual Int_t IsSelected(TObject* obj,Int_t selectionLevel);
46
47   using AliRDHFCuts::IsSelectedPID;
48   virtual Int_t IsSelectedPID(AliAODRecoDecayHF* obj);
49
50   Int_t IsSelectedSingleCut(TObject* obj, Int_t selectionLevel, Int_t cutIndex);
51
52   Int_t CombineCuts (Int_t returnvalueTrack, Int_t returnvalue, Int_t returnvaluePID) const;
53
54   Float_t GetMassCut(Int_t iPtBin=0) const { return (GetCuts() ? fCutsRD[GetGlobalIndex(0,iPtBin)] : 1.e6);}
55   Float_t GetDCACut(Int_t iPtBin=0) const { return (GetCuts() ? fCutsRD[GetGlobalIndex(7,iPtBin)] : 1.e6);}
56
57   void SetPidSelectionFlag(Int_t a) {fPidSelectionFlag=a;}
58   Int_t GetPidSelectionFlag() {return fPidSelectionFlag;}
59
60   Bool_t AreLctoV0DaughtersSelected(AliAODRecoDecayHF *rd) const;
61
62   Int_t GetV0Type();
63
64   void SetHighPtCut(Float_t highPtCut) {fHighPtCut=highPtCut;};
65   Float_t GetHighPtCut() const {return fHighPtCut;};
66
67   void SetLowPtCut(Float_t lowPtCut) {fLowPtCut=lowPtCut;};
68   Float_t GetLowPtCut() const {return fLowPtCut;};
69
70   virtual void SetStandardCutsPP2010();
71   virtual void SetStandardCutsPbPb2010();
72   virtual void SetStandardCutsPbPb2011();
73
74   virtual Bool_t IsInFiducialAcceptance(Double_t pt,Double_t y) const;
75
76   void AddTrackCutsV0daughters(AliESDtrackCuts* v0daug)
77   { delete fV0daughtersCuts; fV0daughtersCuts = new AliESDtrackCuts(*v0daug); }
78   virtual AliESDtrackCuts *GetTrackCutsV0daughters() const {return fV0daughtersCuts;}
79
80   virtual void PrintAll() const;
81  protected:
82
83   void CheckPID(AliAODTrack *bachelor, AliAODTrack * /*v0Neg*/, AliAODTrack * /*v0Pos*/,
84                 Bool_t &isBachelorID1, Bool_t &isBachelorID2, Bool_t &isBachelorID4);
85
86  private:
87
88   Int_t fPidSelectionFlag;
89   AliESDtrackCuts *fV0daughtersCuts; // cuts for v0 daughters (AOD converted to ESD on the flight!)
90   Float_t     fV0Type; // V0 type -- should be defined as in AliRDHFCuts.h
91   Float_t fHighPtCut;  // high pT cut separation for proton identification
92   Float_t fLowPtCut;   // low pT cut separation for proton identification
93
94   //UShort_t fV0channel;
95
96   ClassDef(AliRDHFCutsLctoV0,5);  // class for cuts on AOD reconstructed Lc->V0+bachelor
97 };
98
99 #endif