00c4251d2103ae9e63047d97a865fe1cf5fa855d
[u/mrichter/AliRoot.git] / PWG2 / RESONANCES / AliRsnCutPIDTPC.h
1 //
2 // *** Class AliRsnCutPIDTPC ***
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, TPC and TOF.
8 //
9 // authors: Martin Vala (martin.vala@cern.ch)
10 //          Alberto Pulvirenti (alberto.pulvirenti@ct.infn.it)
11 //
12
13 #ifndef ALIRSNCUTPIDTPC_H
14 #define ALIRSNCUTPIDTPC_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 AliRsnCutPIDTPC : public AliRsnCut
28 {
29   public:
30
31     AliRsnCutPIDTPC(const char *name       = "cutTPC",
32                     EPARTYPE type          = AliPID::kKaon,
33                     Double_t nSigmaMin     = -3.,
34                     Double_t nSigmaMax     =  3.,
35                     Bool_t   rejectOutside = kTRUE);
36                     
37     AliRsnCutPIDTPC(const AliRsnCutPIDTPC& copy);
38     AliRsnCutPIDTPC& operator=(const AliRsnCutPIDTPC& copy);
39     virtual ~AliRsnCutPIDTPC() { }
40
41     AliESDpid*       ESDpid()  {return &fESDpid;}
42     AliAODpidUtil*   AODpid()  {return &fAODpid;}
43
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     void             SetBBParam(Double_t *p)                       {SetBBParam(p[0], p[1], p[2], p[3], p[4]);}
49     void             SetBBParam(Double_t p0, Double_t p1, Double_t p2, Double_t p3, Double_t p4);
50
51     Bool_t           IsTPC(AliVTrack *vtrack);
52     virtual Bool_t   IsSelected(TObject *object);
53     virtual void     Print(const Option_t *option = "") const;
54
55   private:
56
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(AliRsnCutPIDTPC, 1)
65 };
66
67 inline Bool_t AliRsnCutPIDTPC::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   {
75     AliWarning("NULL argument: impossible to check status");
76     return kFALSE;
77   }
78   
79   Bool_t isTPCin     = ((vtrack->GetStatus() & AliESDtrack::kTPCin) != 0);
80   Bool_t isITSrefit  = ((vtrack->GetStatus() & AliESDtrack::kITSrefit) != 0);
81   Bool_t isITSpid    = ((vtrack->GetStatus() & AliESDtrack::kITSpid) != 0);
82   
83   return ( isTPCin && isITSrefit && isITSpid );
84   
85   return kTRUE;
86 }
87
88 #endif