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

/* $Id$ */ 

//***********************************************************
// Class AliRDHFCutsLctopKpi
// class for cuts on AOD reconstructed Lc->pKpi
// Author: A.Dainese, andrea.dainese@pd.infn.it
//***********************************************************

#include "AliRDHFCuts.h"
#include "AliAODPidHF.h"
#include "AliAODRecoDecayHF3Prong.h"

class AliRDHFCutsLctopKpi : public AliRDHFCuts 
{
 public:

 enum EPIDStrategy {
  kNSigma,
  kCombined,
  kCombinedSoft,
  kNSigmaStrong,
  kCombinedpPb,
  kCombinedpPb2,
  kNSigmaPbPb
 };
 enum ECutsStrategy {
  kStandard,
  kKF
 };


  AliRDHFCutsLctopKpi(const char* name="CutsLctopKpi");
  
  virtual ~AliRDHFCutsLctopKpi();

  AliRDHFCutsLctopKpi(const AliRDHFCutsLctopKpi& source);
  AliRDHFCutsLctopKpi& operator=(const AliRDHFCutsLctopKpi& source); 
 
  using AliRDHFCuts::GetCutVarsForOpt;
  virtual void GetCutVarsForOpt(AliAODRecoDecayHF *d,Float_t *vars,Int_t nvars,Int_t *pdgdaughters){
    return GetCutVarsForOpt(d,vars,nvars,pdgdaughters,0x0);
  }
  virtual void GetCutVarsForOpt(AliAODRecoDecayHF *d,Float_t *vars,Int_t nvars,Int_t *pdgdaughters,AliAODEvent *aod);

  void SetPidpion(AliAODPidHF* pidPion) { 
      if(fPidObjpion) delete fPidObjpion;
      fPidObjpion=new AliAODPidHF(*pidPion);
      }
  void SetPidprot(AliAODPidHF* pidProt) {
      if(fPidObjprot) delete fPidObjprot;
      fPidObjprot=new AliAODPidHF(*pidProt);
  }

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


  AliAODPidHF* GetPidpion() const {return fPidObjpion;}
  AliAODPidHF* GetPidprot() const {return fPidObjprot;}
  void SetPIDStrategy(EPIDStrategy pidStrategy) {
   fPIDStrategy=pidStrategy;
  }
  EPIDStrategy GetPIDStrategy() const {
   return fPIDStrategy;
  }
  void SetCutsStrategy(ECutsStrategy cutsStrategy) {
   fCutsStrategy=cutsStrategy;
  }
  ECutsStrategy GetCutsStrategy() const {
   return fCutsStrategy;
  }
  void SetPIDThreshold(AliPID::EParticleType species,Double_t threshold) {
   fPIDThreshold[static_cast<Int_t>(species)]=threshold;
  }
 Double_t GetPIDThreshold(AliPID::EParticleType species) const {
  return fPIDThreshold[static_cast<Int_t>(species)];
 }
 Bool_t GetUseSpecialCut(){return fUseSpecialCut;}
 void SetUseSpecialCut(Bool_t useSpecialCut=kTRUE){fUseSpecialCut=useSpecialCut;}

  using AliRDHFCuts::IsSelected;
  virtual Int_t IsSelected(TObject* obj,Int_t selectionLevel)
                           {return IsSelected(obj,selectionLevel,0);}
  virtual Int_t IsSelected(TObject* obj,Int_t selectionLevel,AliAODEvent *aod);
  using AliRDHFCuts::IsSelectedPID;
  virtual Int_t IsSelectedPID(AliAODRecoDecayHF* obj);
  Int_t IsSelectedCombinedPID(AliAODRecoDecayHF* obj);
  Int_t IsSelectedCombinedPIDSoft(AliAODRecoDecayHF* obj);
  Int_t IsSelectedCombinedPIDpPb(AliAODRecoDecayHF* obj);
  Int_t IsSelectedCombinedPIDpPb2(AliAODRecoDecayHF* obj);
  Int_t IsSelectedPIDStrong(AliAODRecoDecayHF* obj);
  Int_t IsSelectedNSigmaPbPb(AliAODRecoDecayHF* obj);
  Int_t CombinePIDCuts (Int_t returnvalue, Int_t returnvaluePID) const;

  virtual Bool_t IsInFiducialAcceptance(Double_t pt,Double_t y) 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(11,iPtBin)] : 1.e6);}

  void SetUseImpParProdCorrCut(Bool_t use){
    fUseImpParProdCorrCut=use;
  }
  Bool_t GetUseImpParProdCorrCut() const {
    return fUseImpParProdCorrCut;
  }

  AliKFParticle* ReconstructKF(AliAODRecoDecayHF3Prong *d,Int_t *pdgs,Double_t field,Bool_t constraint) const;
 protected:
  AliAODPidHF *fPidObjprot;
  AliAODPidHF *fPidObjpion;
  Bool_t fUseImpParProdCorrCut; //switch for cut on d0p*d0K vs. d0K*d0pi 

private:
  EPIDStrategy fPIDStrategy;                // PIS strategy (nsigma, combined)
  Double_t fPIDThreshold[AliPID::kSPECIES]; // PID threshold for each species
  ECutsStrategy fCutsStrategy;              // cut strategy (standard or KF)
  Bool_t fUseSpecialCut;

  ClassDef(AliRDHFCutsLctopKpi,9);  // class for cuts on AOD reconstructed Lc->pKpi
};

#endif


 AliRDHFCutsLctopKpi.h:1
 AliRDHFCutsLctopKpi.h:2
 AliRDHFCutsLctopKpi.h:3
 AliRDHFCutsLctopKpi.h:4
 AliRDHFCutsLctopKpi.h:5
 AliRDHFCutsLctopKpi.h:6
 AliRDHFCutsLctopKpi.h:7
 AliRDHFCutsLctopKpi.h:8
 AliRDHFCutsLctopKpi.h:9
 AliRDHFCutsLctopKpi.h:10
 AliRDHFCutsLctopKpi.h:11
 AliRDHFCutsLctopKpi.h:12
 AliRDHFCutsLctopKpi.h:13
 AliRDHFCutsLctopKpi.h:14
 AliRDHFCutsLctopKpi.h:15
 AliRDHFCutsLctopKpi.h:16
 AliRDHFCutsLctopKpi.h:17
 AliRDHFCutsLctopKpi.h:18
 AliRDHFCutsLctopKpi.h:19
 AliRDHFCutsLctopKpi.h:20
 AliRDHFCutsLctopKpi.h:21
 AliRDHFCutsLctopKpi.h:22
 AliRDHFCutsLctopKpi.h:23
 AliRDHFCutsLctopKpi.h:24
 AliRDHFCutsLctopKpi.h:25
 AliRDHFCutsLctopKpi.h:26
 AliRDHFCutsLctopKpi.h:27
 AliRDHFCutsLctopKpi.h:28
 AliRDHFCutsLctopKpi.h:29
 AliRDHFCutsLctopKpi.h:30
 AliRDHFCutsLctopKpi.h:31
 AliRDHFCutsLctopKpi.h:32
 AliRDHFCutsLctopKpi.h:33
 AliRDHFCutsLctopKpi.h:34
 AliRDHFCutsLctopKpi.h:35
 AliRDHFCutsLctopKpi.h:36
 AliRDHFCutsLctopKpi.h:37
 AliRDHFCutsLctopKpi.h:38
 AliRDHFCutsLctopKpi.h:39
 AliRDHFCutsLctopKpi.h:40
 AliRDHFCutsLctopKpi.h:41
 AliRDHFCutsLctopKpi.h:42
 AliRDHFCutsLctopKpi.h:43
 AliRDHFCutsLctopKpi.h:44
 AliRDHFCutsLctopKpi.h:45
 AliRDHFCutsLctopKpi.h:46
 AliRDHFCutsLctopKpi.h:47
 AliRDHFCutsLctopKpi.h:48
 AliRDHFCutsLctopKpi.h:49
 AliRDHFCutsLctopKpi.h:50
 AliRDHFCutsLctopKpi.h:51
 AliRDHFCutsLctopKpi.h:52
 AliRDHFCutsLctopKpi.h:53
 AliRDHFCutsLctopKpi.h:54
 AliRDHFCutsLctopKpi.h:55
 AliRDHFCutsLctopKpi.h:56
 AliRDHFCutsLctopKpi.h:57
 AliRDHFCutsLctopKpi.h:58
 AliRDHFCutsLctopKpi.h:59
 AliRDHFCutsLctopKpi.h:60
 AliRDHFCutsLctopKpi.h:61
 AliRDHFCutsLctopKpi.h:62
 AliRDHFCutsLctopKpi.h:63
 AliRDHFCutsLctopKpi.h:64
 AliRDHFCutsLctopKpi.h:65
 AliRDHFCutsLctopKpi.h:66
 AliRDHFCutsLctopKpi.h:67
 AliRDHFCutsLctopKpi.h:68
 AliRDHFCutsLctopKpi.h:69
 AliRDHFCutsLctopKpi.h:70
 AliRDHFCutsLctopKpi.h:71
 AliRDHFCutsLctopKpi.h:72
 AliRDHFCutsLctopKpi.h:73
 AliRDHFCutsLctopKpi.h:74
 AliRDHFCutsLctopKpi.h:75
 AliRDHFCutsLctopKpi.h:76
 AliRDHFCutsLctopKpi.h:77
 AliRDHFCutsLctopKpi.h:78
 AliRDHFCutsLctopKpi.h:79
 AliRDHFCutsLctopKpi.h:80
 AliRDHFCutsLctopKpi.h:81
 AliRDHFCutsLctopKpi.h:82
 AliRDHFCutsLctopKpi.h:83
 AliRDHFCutsLctopKpi.h:84
 AliRDHFCutsLctopKpi.h:85
 AliRDHFCutsLctopKpi.h:86
 AliRDHFCutsLctopKpi.h:87
 AliRDHFCutsLctopKpi.h:88
 AliRDHFCutsLctopKpi.h:89
 AliRDHFCutsLctopKpi.h:90
 AliRDHFCutsLctopKpi.h:91
 AliRDHFCutsLctopKpi.h:92
 AliRDHFCutsLctopKpi.h:93
 AliRDHFCutsLctopKpi.h:94
 AliRDHFCutsLctopKpi.h:95
 AliRDHFCutsLctopKpi.h:96
 AliRDHFCutsLctopKpi.h:97
 AliRDHFCutsLctopKpi.h:98
 AliRDHFCutsLctopKpi.h:99
 AliRDHFCutsLctopKpi.h:100
 AliRDHFCutsLctopKpi.h:101
 AliRDHFCutsLctopKpi.h:102
 AliRDHFCutsLctopKpi.h:103
 AliRDHFCutsLctopKpi.h:104
 AliRDHFCutsLctopKpi.h:105
 AliRDHFCutsLctopKpi.h:106
 AliRDHFCutsLctopKpi.h:107
 AliRDHFCutsLctopKpi.h:108
 AliRDHFCutsLctopKpi.h:109
 AliRDHFCutsLctopKpi.h:110
 AliRDHFCutsLctopKpi.h:111
 AliRDHFCutsLctopKpi.h:112
 AliRDHFCutsLctopKpi.h:113
 AliRDHFCutsLctopKpi.h:114
 AliRDHFCutsLctopKpi.h:115
 AliRDHFCutsLctopKpi.h:116
 AliRDHFCutsLctopKpi.h:117
 AliRDHFCutsLctopKpi.h:118
 AliRDHFCutsLctopKpi.h:119
 AliRDHFCutsLctopKpi.h:120
 AliRDHFCutsLctopKpi.h:121
 AliRDHFCutsLctopKpi.h:122
 AliRDHFCutsLctopKpi.h:123
 AliRDHFCutsLctopKpi.h:124
 AliRDHFCutsLctopKpi.h:125
 AliRDHFCutsLctopKpi.h:126
 AliRDHFCutsLctopKpi.h:127
 AliRDHFCutsLctopKpi.h:128
 AliRDHFCutsLctopKpi.h:129
 AliRDHFCutsLctopKpi.h:130
 AliRDHFCutsLctopKpi.h:131