ROOT logo
#ifndef ALIRDHFCUTSLCTOV0_H
#define ALIRDHFCUTSLCTOV0_H
/* Copyright(c) 1998-2010, ALICE Experiment at CERN, All rights reserved. *
 * See cxx source for full Copyright notice                               */

/* $Id$ */

//***********************************************************
// Class AliRDHFCutsLctoV0
// class for cuts on AOD reconstructed Lc-> V0 + bachelor
//***********************************************************

#include "AliRDHFCuts.h"

class AliRDHFCutsLctoV0 : public AliRDHFCuts
{
 public:

  enum ELctoV0channel {
    kLcToK0Spr=0x0001,
    kLcToLBarpi=0x0002,
    kLcToLpi=0x0004
  };

 enum ELctoV0pidStrategy {
  kTOFandTPC=0,
  kTOForTPCveto=1,
  kTOFandTPCasym1=2,
  kTOFandTPCasym2=3,
  kTPClowTOFhigh=4,
  kTPClowTOFintermediateTOForTPChigh=5
 };

  AliRDHFCutsLctoV0(const char* name="CutsLctoV0", Short_t v0channel=0);

  virtual ~AliRDHFCutsLctoV0();

  AliRDHFCutsLctoV0(const AliRDHFCutsLctoV0& source);
  AliRDHFCutsLctoV0& operator=(const AliRDHFCutsLctoV0& source);

  using AliRDHFCuts::GetCutVarsForOpt;
  virtual void GetCutVarsForOpt(AliAODRecoDecayHF *d,Float_t *vars,Int_t nvars,Int_t *pdgdaughters);

  using AliRDHFCuts::IsSelected;
  virtual Int_t IsSelected(TObject* obj,Int_t selectionLevel);

  using AliRDHFCuts::IsSelectedPID;
  virtual Int_t IsSelectedPID(AliAODRecoDecayHF* obj);

  Int_t IsSelectedSingleCut(TObject* obj, Int_t selectionLevel, Int_t cutIndex);

  Int_t CombineCuts (Int_t returnvalueTrack, Int_t returnvalue, Int_t returnvaluePID) const;

  Float_t GetMassCut(Int_t iPtBin=0) const { return (GetCuts() ? fCutsRD[GetGlobalIndex(0,iPtBin)] : 1.e6);}
  Float_t GetDCACut(Int_t iPtBin=0) const { return (GetCuts() ? fCutsRD[GetGlobalIndex(7,iPtBin)] : 1.e6);}

  void SetPidSelectionFlag(Int_t a) {fPidSelectionFlag=a;}
  Int_t GetPidSelectionFlag() {return fPidSelectionFlag;}

  Bool_t AreLctoV0DaughtersSelected(AliAODRecoDecayHF *rd) const;

  Int_t GetV0Type();

  void SetHighPtCut(Float_t highPtCut) {fHighPtCut=highPtCut;};
  Float_t GetHighPtCut() const {return fHighPtCut;};

  void SetLowPtCut(Float_t lowPtCut) {fLowPtCut=lowPtCut;};
  Float_t GetLowPtCut() const {return fLowPtCut;};

  void SetExcludedCut(Int_t excludedCut) {fExcludedCut=excludedCut;}
  Int_t GetExcludedCut(){return fExcludedCut;}

  virtual void SetStandardCutsPP2010();
  virtual void SetStandardCutsPbPb2010();
  virtual void SetStandardCutsPbPb2011();

  virtual Bool_t IsInFiducialAcceptance(Double_t pt,Double_t y) const;

  void AddTrackCutsV0daughters(AliESDtrackCuts* v0daug)
  { delete fV0daughtersCuts; fV0daughtersCuts = new AliESDtrackCuts(*v0daug); }
  virtual AliESDtrackCuts *GetTrackCutsV0daughters() const {return fV0daughtersCuts;}

  virtual void PrintAll() const;
 protected:

  void CheckPID(AliAODTrack *bachelor, AliAODTrack * /*v0Neg*/, AliAODTrack * /*v0Pos*/,
		Bool_t &isBachelorID1, Bool_t &isBachelorID2, Bool_t &isBachelorID4);

 private:

  Int_t fPidSelectionFlag;
  AliESDtrackCuts *fV0daughtersCuts; // cuts for v0 daughters (AOD converted to ESD on the flight!)
  Float_t     fV0Type; // V0 type -- should be defined as in AliRDHFCuts.h
  Float_t fHighPtCut;  // high pT cut separation for proton identification
  Float_t fLowPtCut;   // low pT cut separation for proton identification
  Int_t   fExcludedCut; // cut to be excluded (-1=none)

  //UShort_t fV0channel;

  ClassDef(AliRDHFCutsLctoV0,6);  // class for cuts on AOD reconstructed Lc->V0+bachelor
};

#endif
 AliRDHFCutsLctoV0.h:1
 AliRDHFCutsLctoV0.h:2
 AliRDHFCutsLctoV0.h:3
 AliRDHFCutsLctoV0.h:4
 AliRDHFCutsLctoV0.h:5
 AliRDHFCutsLctoV0.h:6
 AliRDHFCutsLctoV0.h:7
 AliRDHFCutsLctoV0.h:8
 AliRDHFCutsLctoV0.h:9
 AliRDHFCutsLctoV0.h:10
 AliRDHFCutsLctoV0.h:11
 AliRDHFCutsLctoV0.h:12
 AliRDHFCutsLctoV0.h:13
 AliRDHFCutsLctoV0.h:14
 AliRDHFCutsLctoV0.h:15
 AliRDHFCutsLctoV0.h:16
 AliRDHFCutsLctoV0.h:17
 AliRDHFCutsLctoV0.h:18
 AliRDHFCutsLctoV0.h:19
 AliRDHFCutsLctoV0.h:20
 AliRDHFCutsLctoV0.h:21
 AliRDHFCutsLctoV0.h:22
 AliRDHFCutsLctoV0.h:23
 AliRDHFCutsLctoV0.h:24
 AliRDHFCutsLctoV0.h:25
 AliRDHFCutsLctoV0.h:26
 AliRDHFCutsLctoV0.h:27
 AliRDHFCutsLctoV0.h:28
 AliRDHFCutsLctoV0.h:29
 AliRDHFCutsLctoV0.h:30
 AliRDHFCutsLctoV0.h:31
 AliRDHFCutsLctoV0.h:32
 AliRDHFCutsLctoV0.h:33
 AliRDHFCutsLctoV0.h:34
 AliRDHFCutsLctoV0.h:35
 AliRDHFCutsLctoV0.h:36
 AliRDHFCutsLctoV0.h:37
 AliRDHFCutsLctoV0.h:38
 AliRDHFCutsLctoV0.h:39
 AliRDHFCutsLctoV0.h:40
 AliRDHFCutsLctoV0.h:41
 AliRDHFCutsLctoV0.h:42
 AliRDHFCutsLctoV0.h:43
 AliRDHFCutsLctoV0.h:44
 AliRDHFCutsLctoV0.h:45
 AliRDHFCutsLctoV0.h:46
 AliRDHFCutsLctoV0.h:47
 AliRDHFCutsLctoV0.h:48
 AliRDHFCutsLctoV0.h:49
 AliRDHFCutsLctoV0.h:50
 AliRDHFCutsLctoV0.h:51
 AliRDHFCutsLctoV0.h:52
 AliRDHFCutsLctoV0.h:53
 AliRDHFCutsLctoV0.h:54
 AliRDHFCutsLctoV0.h:55
 AliRDHFCutsLctoV0.h:56
 AliRDHFCutsLctoV0.h:57
 AliRDHFCutsLctoV0.h:58
 AliRDHFCutsLctoV0.h:59
 AliRDHFCutsLctoV0.h:60
 AliRDHFCutsLctoV0.h:61
 AliRDHFCutsLctoV0.h:62
 AliRDHFCutsLctoV0.h:63
 AliRDHFCutsLctoV0.h:64
 AliRDHFCutsLctoV0.h:65
 AliRDHFCutsLctoV0.h:66
 AliRDHFCutsLctoV0.h:67
 AliRDHFCutsLctoV0.h:68
 AliRDHFCutsLctoV0.h:69
 AliRDHFCutsLctoV0.h:70
 AliRDHFCutsLctoV0.h:71
 AliRDHFCutsLctoV0.h:72
 AliRDHFCutsLctoV0.h:73
 AliRDHFCutsLctoV0.h:74
 AliRDHFCutsLctoV0.h:75
 AliRDHFCutsLctoV0.h:76
 AliRDHFCutsLctoV0.h:77
 AliRDHFCutsLctoV0.h:78
 AliRDHFCutsLctoV0.h:79
 AliRDHFCutsLctoV0.h:80
 AliRDHFCutsLctoV0.h:81
 AliRDHFCutsLctoV0.h:82
 AliRDHFCutsLctoV0.h:83
 AliRDHFCutsLctoV0.h:84
 AliRDHFCutsLctoV0.h:85
 AliRDHFCutsLctoV0.h:86
 AliRDHFCutsLctoV0.h:87
 AliRDHFCutsLctoV0.h:88
 AliRDHFCutsLctoV0.h:89
 AliRDHFCutsLctoV0.h:90
 AliRDHFCutsLctoV0.h:91
 AliRDHFCutsLctoV0.h:92
 AliRDHFCutsLctoV0.h:93
 AliRDHFCutsLctoV0.h:94
 AliRDHFCutsLctoV0.h:95
 AliRDHFCutsLctoV0.h:96
 AliRDHFCutsLctoV0.h:97
 AliRDHFCutsLctoV0.h:98
 AliRDHFCutsLctoV0.h:99
 AliRDHFCutsLctoV0.h:100
 AliRDHFCutsLctoV0.h:101
 AliRDHFCutsLctoV0.h:102
 AliRDHFCutsLctoV0.h:103