ROOT logo
//
// *** Class AliRsnCutPIDITS ***
//
// This class implements all cuts which have to be used for the 2010 runs
// for phi and generic resonance analysis.
// It contains an AliESDtrackCuts object for track quality selection
// and some criteria for particle identification with ITS, ITS and TOF.
//
// authors: Martin Vala (martin.vala@cern.ch)
//          Alberto Pulvirenti (alberto.pulvirenti@ct.infn.it)
//

#ifndef ALIRSNCUTPIDITS_H
#define ALIRSNCUTPIDITS_H

#include "AliPID.h"

#include "AliESDtrack.h"
#include "AliESDpid.h"
#include "AliAODpidUtil.h"

#include "AliRsnCut.h"

class AliESDtrackCuts;
class AliAODpidUtil;
class AliRsnDaughter;

class AliRsnCutPIDITS : public AliRsnCut {
public:

   AliRsnCutPIDITS(const char *name          = "cutITS",
                   EPARTYPE    ref           = AliPID::kKaon,
                   Double_t    nSigmaMin     = -3.,
                   Double_t    nSigmaMax     =  3.,
                   Bool_t      rejectOutside = kTRUE);

   AliRsnCutPIDITS(const AliRsnCutPIDITS &copy);
   AliRsnCutPIDITS &operator=(const AliRsnCutPIDITS &copy);
   virtual ~AliRsnCutPIDITS() { }

   AliESDpid       *ESDpid()  {return fESDpid;}
   AliAODpidUtil   *AODpid()  {return fAODpid;}

   void             SetMC(Bool_t mc = kTRUE)                      {fIsMC = mc;}
   void             SetRejectOutside(Bool_t yn = kTRUE)           {fRejectOutside = yn;}
   void             SetMomentumRange(Double_t min, Double_t max)  {fMomMin = min; fMomMax = max;}
   void             SetNSigmaRange(Double_t min, Double_t max)    {fMinD = min; fMaxD = max;}
   void             SetRefType(EPARTYPE type)                     {fRefType = type;}

   Bool_t           IsTPC(const AliVTrack *vtrack);
   Bool_t           IsSA(const AliVTrack *vtrack);
   virtual Bool_t   IsSelected(TObject *object);
   virtual void     Print(const Option_t *option = "") const;

private:

   Bool_t          fIsMC;           //  needed to initialize the pid object
   Bool_t          fRejectOutside;  //  choose if tracks outside momentum range are rejected or not
   Double_t        fMomMin;         //  min p in range where this cut is checked
   Double_t        fMomMax;         //  max p in range where this cut is checked
   EPARTYPE        fRefType;        //  particle type for which PID is checked
   AliESDpid      *fESDpid;         //! ESD PID object
   AliAODpidUtil  *fAODpid;         //! AOD PID object

   ClassDef(AliRsnCutPIDITS, 1)
};

inline Bool_t AliRsnCutPIDITS::IsTPC(const AliVTrack *vtrack)
{
//
// Checks if the track has the status flags required for a global track
//

   if (!vtrack) {
      AliWarning("NULL argument: impossible to check status");
      return kFALSE;
   }

   Bool_t isTPCin = ((vtrack->GetStatus() & AliESDtrack::kTPCin) != 0);

   return (isTPCin);
}

inline Bool_t AliRsnCutPIDITS::IsSA(const AliVTrack *vtrack)
{
//
// Checks if the track has the status flags required for an ITS standalone track
//

   if (!vtrack) {
      AliWarning("NULL argument: impossible to check status");
      return kFALSE;
   }

   Bool_t isTPCin     = ((vtrack->GetStatus() & AliESDtrack::kTPCin) != 0);
   Bool_t isITSrefit  = ((vtrack->GetStatus() & AliESDtrack::kITSrefit) != 0);
   Bool_t isITSpureSA = ((vtrack->GetStatus() & AliESDtrack::kITSpureSA) != 0);
   Bool_t isITSpid    = ((vtrack->GetStatus() & AliESDtrack::kITSpid) != 0);

   return ((!isTPCin) && isITSrefit && (!isITSpureSA) && isITSpid);

   return kTRUE;
}

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