]> git.uio.no Git - u/mrichter/AliRoot.git/blob - PWGHF/vertexingHF/AliRDHFCutsLctoV0.h
Several updates: 1) it is no longer possible to run wo V0-daughter cuts object, 2...
[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 "AliAODPidHF.h"
14 #include "AliRDHFCuts.h"
15
16 class AliRDHFCutsLctoV0 : public AliRDHFCuts
17 {
18  public:
19
20   enum ELctoV0channel {
21     kLcToK0Spr=0x0001,
22     kLcToLBarpi=0x0002,
23     kLcToLpi=0x0004
24   };
25
26  enum ELctoV0pidStrategy {
27   kTOFandTPC=0,
28   kTOForTPCveto=1,
29   kTOFandTPCasym1=2,
30   kTOFandTPCasym2=3
31  };
32
33   AliRDHFCutsLctoV0(const char* name="CutsLctoV0", Short_t v0channel=0);
34
35   virtual ~AliRDHFCutsLctoV0();
36
37   AliRDHFCutsLctoV0(const AliRDHFCutsLctoV0& source);
38   AliRDHFCutsLctoV0& operator=(const AliRDHFCutsLctoV0& source);
39
40   using AliRDHFCuts::GetCutVarsForOpt;
41   virtual void GetCutVarsForOpt(AliAODRecoDecayHF *d,Float_t *vars,Int_t nvars,Int_t *pdgdaughters);
42
43   using AliRDHFCuts::IsSelected;
44   virtual Int_t IsSelected(TObject* obj,Int_t selectionLevel);
45
46   using AliRDHFCuts::IsSelectedPID;
47   virtual Int_t IsSelectedPID(AliAODRecoDecayHF* obj);
48
49   Int_t IsSelectedSingleCut(TObject* obj, Int_t selectionLevel, Int_t cutIndex);
50
51   Int_t CombineCuts (Int_t returnvalueTrack, Int_t returnvalue, Int_t returnvaluePID) const;
52
53   Float_t GetMassCut(Int_t iPtBin=0) const { return (GetCuts() ? fCutsRD[GetGlobalIndex(0,iPtBin)] : 1.e6);}
54   Float_t GetDCACut(Int_t iPtBin=0) const { return (GetCuts() ? fCutsRD[GetGlobalIndex(7,iPtBin)] : 1.e6);}
55
56   void SetPidSelectionFlag(Int_t a) {fPidSelectionFlag=a;}
57   Int_t GetPidSelectionFlag() {return fPidSelectionFlag;}
58
59   Bool_t AreLctoV0DaughtersSelected(AliAODRecoDecayHF *rd) const;
60
61   Int_t GetV0Type();
62
63   virtual void SetStandardCutsPP2010();
64   virtual void SetStandardCutsPbPb2010();
65   virtual void SetStandardCutsPbPb2011();
66
67   virtual Bool_t IsInFiducialAcceptance(Double_t pt,Double_t y) const;
68
69   void SetPidV0pos(AliAODPidHF* pidV0pos) {
70     if (fPidHFV0pos) delete fPidHFV0pos;
71     fPidHFV0pos = new AliAODPidHF(*pidV0pos);
72   }
73   void SetPidV0neg(AliAODPidHF* pidV0neg) {
74     if (fPidHFV0neg) delete fPidHFV0neg;
75     fPidHFV0neg = new AliAODPidHF(*pidV0neg);
76   }
77
78   AliAODPidHF * GetPidV0pos() { return fPidHFV0pos; }
79   AliAODPidHF * GetPidV0neg() { return fPidHFV0neg; }
80
81   void AddTrackCutsV0daughters(AliESDtrackCuts* v0daug)
82   { delete fV0daughtersCuts; fV0daughtersCuts = new AliESDtrackCuts(*v0daug); }
83   virtual AliESDtrackCuts *GetTrackCutsV0daughters() const {return fV0daughtersCuts;}
84
85   virtual void PrintAll() const;
86  protected:
87
88   void CheckPID(AliAODTrack *bachelor, AliAODTrack *v0Neg, AliAODTrack *v0Pos,
89                 Bool_t &isBachelorID1, Bool_t &isV0NegID2, Bool_t &isV0PosID4);
90
91  private:
92
93   Int_t fPidSelectionFlag;
94   AliAODPidHF *fPidHFV0pos;
95   AliAODPidHF *fPidHFV0neg;
96   AliESDtrackCuts *fV0daughtersCuts; // cuts for v0 daughters (AOD converted to ESD on the flight!)
97   Float_t     fV0Type; // V0 type -- should be defined as in AliRDHFCuts.h
98
99   //UShort_t fV0channel;
100
101   ClassDef(AliRDHFCutsLctoV0,4);  // class for cuts on AOD reconstructed Lc->V0+bachelor
102 };
103
104 #endif