ROOT logo
#ifndef ALIRSNCUTSETDAUGHTERPARTICLE_H
#define ALIRSNCUTSETDAUGHTERPARTICLE_H

//
// Cuts collection for selecting good daughter candidates for rsn analysis
//Requires:
// 1) choice of existing cuts among the enum list
// 2) PID ipothesis for the daughter particle
//
// Author: Francesca Bellini (fbellini@cern.ch)
//

#include "AliVTrack.h"
#include "AliRsnCut.h"
#include "AliRsnCutSet.h"
#include "AliRsnCutTrackQuality.h"
#include "AliRsnCutPIDNSigma.h"
#include "AliRsnCutTOFMatch.h"
#include "AliRsnCutPhi.h"

class AliRsnCutSetDaughterParticle : public AliRsnCutSet {

public:

  enum ERsnDaughterCutSet {
    kNoCuts,
    kQualityStd2010,//quality only
    kQualityStd2011,
    kQualityStd2011HighPt,    
    kTOFMatch,  
    kFastTPCpidNsigma, //PbPb analysis
    kFastTOFpidNsigma,
    kTPCTOFpidKstarPP2010,
    kTOFpidKstarPbPb2010,
    kTOFTPCmismatchKstarPbPb2010,
    kTOFMatchTRD2010,
    kTOFMatchNoTRD2010,
    kTOFpidKstarPbPbTRD2010,
    kTOFpidKstarPbPbNoTRD2010,
    kTOFMatchTPCpidNsigma,     
    kQualityStd2010TRD,
    kQualityStd2010NoTRD,    
    kTOFMatchPPB2011, //pA analysis
    kTPCpidKstarPPB2011,
    kTOFpidKstarPPB2011,
    kTPCTOFpidKstarPPB2011,
    kTPCTOFtightPidKStarPPB2011, //TPC 2.0 (3.0) sigma pid & TOF at 3.0 (5.0) sigma 
    kTPCpidMatchPPB2011, //Match with nsigma = fNsigmaTPC
    kTPCpidTOFveto4s, //TPC n sigma + 4.0 sigma TOF veto
    kTPCpidTOFveto3s, //TPC n sigma + 3.0 sigma TOF veto
    kCombinedPidBestPtDep, 
    kTPCPidPtDep,
    kTOFPidPtDep,
    kTPCRejPtDepTOFNsigma,
    kTPCNsigmaTOFVetoPtDep,
    kTPCTOFpidLstar,//cuts for L* in pA
    kNDaughterCuts
  };

  enum ECustomQualityCuts { 
    kDisableCustom = -1,
    kFilterBitCustom,
    kStdLooserDCAXY, 
    kStdLooserDCAZ, 
    kStdCrossedRows60, 
    kStdCrossedRows80, 
    kStdRowsToCls075, 
    kStdRowsToCls085, 
    kStdCls70, 
    kStdChi2TPCCls35,
    kStdUseTPCNcls,
    kNcustomQualityCuts
  };
  
   AliRsnCutSetDaughterParticle();
   AliRsnCutSetDaughterParticle(const char *name,
                                AliRsnCutSetDaughterParticle::ERsnDaughterCutSet cutSetID,
                                AliPID::EParticleType pid,
                                Float_t nsigmaFast,
                                Int_t AODfilterBit,
				Bool_t useTPCCrossedRows);
   AliRsnCutSetDaughterParticle(const char *name, 
				AliRsnCutTrackQuality *rsnTrackQualityCut, 
				AliRsnCutSetDaughterParticle::ERsnDaughterCutSet cutSetID, 
				AliPID::EParticleType pid, 
				Float_t nSigmaFast);
   AliRsnCutSetDaughterParticle(const AliRsnCutSetDaughterParticle &copy);
   AliRsnCutSetDaughterParticle &operator=(const AliRsnCutSetDaughterParticle &copy);
   virtual ~AliRsnCutSetDaughterParticle();

   void           Init();
   void           InitStdQualityCuts(Bool_t useTPCCrossedRows=kTRUE);
   void           SetNsigmaForFastTPCpid(Float_t nsigma) {fNsigmaTPC=nsigma; return;};
   void           SetNsigmaForFastTOFpid(Float_t nsigma) {fNsigmaTOF=nsigma; return;};
   void           SetAODTrackCutFilterBit(Int_t ibit) {fAODTrkCutFilterBit=ibit; return;}
   void           SetUseFilterBitOnly(Bool_t useFilterBitOnly=kTRUE) {fCheckOnlyFilterBit=useFilterBitOnly; return;}   
   void           EnableCustomCuts(Bool_t useCustom=kFALSE) {fUseCustomQualityCuts=useCustom; return;}
   void           SetPtRange(Double_t a, Double_t b)        {fPtRange[0] = TMath::Min(a, b); fPtRange[1] = TMath::Max(a, b); return;}
   void           SetEtaRange(Double_t a, Double_t b)       {fEtaRange[0] = TMath::Min(a, b); fEtaRange[1] = TMath::Max(a, b); return;}
   void           SetUse2011StdQualityCuts(Bool_t use2011=kFALSE) {fIsUse2011stdQualityCuts=use2011; return;}
   void           SetUse2011StdQualityCutsHighPt(Bool_t use2011HighPt=kFALSE) {fIsUse2011stdQualityCutsHighPt=use2011HighPt; return;}
   //getters
   const char   *GetAppliedDaughterCutSetName() { return GetName();}
   Int_t         GetAppliedDaughterCutSetId() { return fAppliedCutSetID;}
   const AliRsnCutTrackQuality *GetQualityCut() {return fCutQuality;};
   void          PrintTrackQualityCuts();

 private:
   
   AliPID::EParticleType fPID;              // PID for track
   AliRsnCutSetDaughterParticle::ERsnDaughterCutSet    fAppliedCutSetID;     // ID of applied cut
   Float_t               fNsigmaTPC;         // number of TPC sigmas for fast pid cut only
   Float_t               fNsigmaTOF;         // number of TOF sigmas for fast pid cut only
   AliRsnCutTrackQuality *fCutQuality;       //pointer to quality cut object
   Int_t                 fAODTrkCutFilterBit; //AOD filter bit for track cuts
   Bool_t                fCheckOnlyFilterBit; //flag to use only filter bit cut
   Bool_t                fUseCustomQualityCuts; //flag to enable the usage of custom quality cuts
   Float_t               fPtRange[2]; //single track pt range (min, max)
   Float_t               fEtaRange[2]; //single track eta range (min, max)
   Bool_t                fIsUse2011stdQualityCuts;//flag to enalble std quality cuts 2011 
   Bool_t                fIsUse2011stdQualityCutsHighPt;//flag to enalble std quality cuts 2011 

   ClassDef(AliRsnCutSetDaughterParticle, 5) // cut definitions for K*

};

#endif

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