]> git.uio.no Git - u/mrichter/AliRoot.git/blob - PWG2/RESONANCES/AliRsnCutESD2010.h
Add new version of macros for RSN analysis
[u/mrichter/AliRoot.git] / PWG2 / RESONANCES / AliRsnCutESD2010.h
1 //
2 // *** Class AliRsnCutESD2010 ***
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 ALIRSNCUTESD2010_H
14 #define ALIRSNCUTESD2010_H
15
16 #include "AliPID.h"
17 #include "AliESDtrack.h"
18 #include "AliESDtrackCuts.h"
19 #include "AliESDpid.h"
20 #include "AliRsnCut.h"
21
22 class AliESDpid;
23
24 class AliRsnCutESD2010 : public AliRsnCut {
25 public:
26
27    AliRsnCutESD2010(const char *name = "cutESD2010", Bool_t isMC = kFALSE);
28    AliRsnCutESD2010(const AliRsnCutESD2010& copy);
29    AliRsnCutESD2010& operator=(const AliRsnCutESD2010& copy);
30    virtual ~AliRsnCutESD2010() {;};
31
32    AliESDpid*       GetESDpid()  {return &fESDpid;}
33    AliESDtrackCuts* GetCutsTPC() {return &fESDtrackCutsTPC;}
34    AliESDtrackCuts* GetCutsITS() {return &fESDtrackCutsITS;}
35    void             CopyCutsTPC(const AliESDtrackCuts *cuts) {fESDtrackCutsTPC = (*cuts);}
36    void             CopyCutsITS(const AliESDtrackCuts *cuts) {fESDtrackCutsITS = (*cuts);}
37    //void             CopyCutsTPC(AliESDtrackCuts cuts)        {fESDtrackCutsTPC = cuts;}
38    //void             CopyCutsITS(AliESDtrackCuts cuts)        {fESDtrackCutsITS = cuts;}
39    virtual Bool_t   IsSelected(TObject *object);
40    virtual void     Print(const Option_t *option = "") const;
41
42    void             SetMC(Bool_t yn = kTRUE);
43    void             SetCheckITS(Bool_t yn = kTRUE) {fCheckITS = yn;}
44    void             SetCheckTPC(Bool_t yn = kTRUE) {fCheckTPC = yn;}
45    void             SetCheckTOF(Bool_t yn = kTRUE) {fCheckTOF = yn;}
46    void             SetUseITSTPC(Bool_t yn = kTRUE) {fUseITSTPC = yn;}
47    void             SetUseITSSA(Bool_t yn = kTRUE) {fUseITSSA = yn;}
48    void             SetPID(AliPID::EParticleType t) {fPID = t;}
49
50    void             SetMaxITSPIDmom(Double_t v) {fMaxITSPIDmom = v;}
51    void             SetITSband(Double_t v)      {fMaxITSband = v;}
52
53    void             SetTPCpLimit(Double_t v) {fTPCpLimit = v;}
54    void             SetTPCrange(Double_t min, Double_t max) {fMinTPCband = min; fMaxTPCband = max;}
55    void             SetTPCpar(Double_t p0, Double_t p1, Double_t p2, Double_t p3, Double_t p4)
56    {fTPCpar[0] = p0; fTPCpar[1] = p1; fTPCpar[2] = p2; fTPCpar[3] = p3; fTPCpar[4] = p4;}
57
58    void             SetTOFrange(Double_t v1, Double_t v2) {fMinTOF = v1; fMaxTOF = v2;}
59
60 protected:
61
62    Bool_t  OkQuality(AliESDtrack *d);  // check track quality parameters and DCA
63    Bool_t  OkITSPID(AliESDtrack *d);   // check ITS PID
64    Bool_t  OkTPCPID(AliESDtrack *d);   // check TPC PID
65    Bool_t  OkTOFPID(AliESDtrack *d);   // check TOF PID
66    Bool_t  IsITSTPC(AliESDtrack *d);   // check that the track is TPC+ITS
67    Bool_t  IsITSSA(AliESDtrack *d);    // check that the track is ITS standalone
68    Bool_t  MatchTOF(AliESDtrack *d);   // check that the track matches the TOF
69
70    Bool_t                  fIsMC;             //  switch for MC analysis
71    Bool_t                  fCheckITS;         //  switch for ITS dE/dx check
72    Bool_t                  fCheckTPC;         //  switch for TPC dE/dx check
73    Bool_t                  fCheckTOF;         //  switch for TOF time check
74    Bool_t                  fUseITSTPC;        //  switch to use TPC global tracks
75    Bool_t                  fUseITSSA;         //  switch to use ITS standalone tracks
76    AliPID::EParticleType   fPID;              //  PID reference type used for checks
77
78    Double_t                fMaxITSPIDmom;     //  maximum momentum where ITS PID is used for TPC+ITS tracks
79    Double_t                fMaxITSband;       //  range for ITS de/dx band
80
81    Double_t                fTPCpLimit;        //  limit to choose what band to apply
82    Double_t                fTPCpar[5];        //  parameters for TPC bethe-Bloch
83    Double_t                fMinTPCband;       //  range for TPC de/dx band - min
84    Double_t                fMaxTPCband;       //  range for TPC de/dx band - max
85
86    AliESDpid               fESDpid;           //  ESD PID object
87    AliESDtrackCuts         fESDtrackCutsTPC;  //  ESD standard defined track cuts for TPC tracks
88    AliESDtrackCuts         fESDtrackCutsITS;  //  ESD standard defined track cuts for ITS-SA tracks
89    Double_t                fMinTOF;           //  range for TOF PID (min)
90    Double_t                fMaxTOF;           //  range for TOF PID (max)
91
92    ClassDef(AliRsnCutESD2010, 1)
93 };
94
95 inline Bool_t AliRsnCutESD2010::IsITSTPC(AliESDtrack *vtrack)
96 {
97 //
98 // Checks if the track has the status flags required for a global track
99 //
100
101    if (!vtrack) {
102       AliWarning("NULL argument: impossible to check status");
103       return kFALSE;
104    }
105
106    return vtrack->IsOn(AliESDtrack::kTPCin);
107
108    return kTRUE;
109 }
110
111 inline Bool_t AliRsnCutESD2010::IsITSSA(AliESDtrack *vtrack)
112 {
113 //
114 // Checks if the track has the status flags required for an ITS standalone track
115 //
116
117    if (!vtrack) {
118       AliWarning("NULL argument: impossible to check status");
119       return kFALSE;
120    }
121
122    Bool_t isTPCin     = vtrack->IsOn(AliESDtrack::kTPCin);
123    Bool_t isITSrefit  = vtrack->IsOn(AliESDtrack::kITSrefit);
124    Bool_t isITSpureSA = vtrack->IsOn(AliESDtrack::kITSpureSA);
125    Bool_t isITSpid    = vtrack->IsOn(AliESDtrack::kITSpid);
126
127    return ((!isTPCin) && isITSrefit && (!isITSpureSA) && isITSpid);
128
129    return kTRUE;
130 }
131
132
133 inline Bool_t AliRsnCutESD2010::MatchTOF(AliESDtrack *vtrack)
134 {
135 //
136 // Checks if the track has matched the TOF detector
137 //
138
139    if (!vtrack) {
140       AliWarning("NULL argument: impossible to check status");
141       return kFALSE;
142    }
143
144    // require a minimum length to have meaningful match
145    if (vtrack->GetIntegratedLength() < 350.) return kFALSE;
146
147    Bool_t isTOFout = vtrack->IsOn(AliESDtrack::kTOFout);
148    Bool_t isTIME   = vtrack->IsOn(AliESDtrack::kTIME);
149
150    return (isTOFout && isTIME);
151
152    return kTRUE;
153 }
154
155 #endif