2bda631d9fe357f1632259d3dec6ffac1495763f
[u/mrichter/AliRoot.git] / PWG2 / RESONANCES / AliRsnCutPIDITS.h
1 //
2 // *** Class AliRsnCutPIDITS ***
3 //
4 // This class implements all cuts which have to be used for the 2010 runs
5 // for phi and generic resonance analysis.
6 // It contains an AliESDtrackCuts object for track quality selection
7 // and some criteria for particle identification with ITS, ITS and TOF.
8 //
9 // authors: Martin Vala (martin.vala@cern.ch)
10 //          Alberto Pulvirenti (alberto.pulvirenti@ct.infn.it)
11 //
12
13 #ifndef ALIRSNCUTPIDITS_H
14 #define ALIRSNCUTPIDITS_H
15
16 #include "AliPID.h"
17
18 #include "AliESDtrack.h"
19 #include "AliESDtrackCuts.h"
20 #include "AliESDpid.h"
21
22 #include "AliAODpidUtil.h"
23
24 #include "AliRsnDaughter.h"
25 #include "AliRsnCut.h"
26
27 class AliRsnCutPIDITS : public AliRsnCut {
28 public:
29
30    AliRsnCutPIDITS(const char *name          = "cutITS",
31                    EPARTYPE    ref           = AliPID::kKaon,
32                    Double_t    nSigmaMin     = -3.,
33                    Double_t    nSigmaMax     =  3.,
34                    Bool_t      rejectOutside = kTRUE);
35
36    AliRsnCutPIDITS(const AliRsnCutPIDITS& copy);
37    AliRsnCutPIDITS& operator=(const AliRsnCutPIDITS& copy);
38    virtual ~AliRsnCutPIDITS() { }
39
40    AliESDpid*       ESDpid()  {return fESDpid;}
41    AliAODpidUtil*   AODpid()  {return fAODpid;}
42
43    void             SetMC(Bool_t mc = kTRUE)                      {fIsMC = mc;}
44    void             SetRejectOutside(Bool_t yn = kTRUE)           {fRejectOutside = yn;}
45    void             SetMomentumRange(Double_t min, Double_t max)  {fMomMin = min; fMomMax = max;}
46    void             SetNSigmaRange(Double_t min, Double_t max)    {fMinD = min; fMaxD = max;}
47    void             SetRefType(EPARTYPE type)                     {fRefType = type;}
48
49    Bool_t           IsTPC(AliVTrack *vtrack);
50    Bool_t           IsSA(AliVTrack *vtrack);
51    virtual Bool_t   IsSelected(TObject *object);
52    virtual void     Print(const Option_t *option = "") const;
53
54 private:
55
56    Bool_t          fIsMC;           //  needed to initialize the pid object
57    Bool_t          fRejectOutside;  //  choose if tracks outside momentum range are rejected or not
58    Double_t        fMomMin;         //  min p in range where this cut is checked
59    Double_t        fMomMax;         //  max p in range where this cut is checked
60    EPARTYPE        fRefType;        //  particle type for which PID is checked
61    AliESDpid      *fESDpid;         //! ESD PID object
62    AliAODpidUtil  *fAODpid;         //! AOD PID object
63
64    ClassDef(AliRsnCutPIDITS, 1)
65 };
66
67 inline Bool_t AliRsnCutPIDITS::IsTPC(AliVTrack *vtrack)
68 {
69 //
70 // Checks if the track has the status flags required for a global track
71 //
72
73    if (!vtrack) {
74       AliWarning("NULL argument: impossible to check status");
75       return kFALSE;
76    }
77
78    Bool_t isTPCin = ((vtrack->GetStatus() & AliESDtrack::kTPCin) != 0);
79
80    return (isTPCin);
81 }
82
83 inline Bool_t AliRsnCutPIDITS::IsSA(AliVTrack *vtrack)
84 {
85 //
86 // Checks if the track has the status flags required for an ITS standalone track
87 //
88
89    if (!vtrack) {
90       AliWarning("NULL argument: impossible to check status");
91       return kFALSE;
92    }
93
94    Bool_t isTPCin     = ((vtrack->GetStatus() & AliESDtrack::kTPCin) != 0);
95    Bool_t isITSrefit  = ((vtrack->GetStatus() & AliESDtrack::kITSrefit) != 0);
96    Bool_t isITSpureSA = ((vtrack->GetStatus() & AliESDtrack::kITSpureSA) != 0);
97    Bool_t isITSpid    = ((vtrack->GetStatus() & AliESDtrack::kITSpid) != 0);
98
99    return ((!isTPCin) && isITSrefit && (!isITSpureSA) && isITSpid);
100
101    return kTRUE;
102 }
103
104 #endif