#ifndef ALIRDHFCUTSLCTOV0_H
#define ALIRDHFCUTSLCTOV0_H
#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 * , AliAODTrack * ,
Bool_t &isBachelorID1, Bool_t &isBachelorID2, Bool_t &isBachelorID4);
private:
Int_t fPidSelectionFlag;
AliESDtrackCuts *fV0daughtersCuts;
Float_t fV0Type;
Float_t fHighPtCut;
Float_t fLowPtCut;
Int_t fExcludedCut;
ClassDef(AliRDHFCutsLctoV0,6);
};
#endif