]> git.uio.no Git - u/mrichter/AliRoot.git/blob - PWG2/RESONANCES/AliRsnCutESD2010.h
Update TPCCEda to write output file in parts (to avoid too big files produced in...
[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 "AliRsnCut.h"
20
21 class AliESDpid;
22 class AliTOFT0maker;
23 class AliTOFcalib;
24
25 class AliRsnCutESD2010 : public AliRsnCut
26 {
27   public:
28
29     AliRsnCutESD2010(const char *name = "cutESD2010", Bool_t isMC = kFALSE);
30     AliRsnCutESD2010(const AliRsnCutESD2010& copy);
31     AliRsnCutESD2010& operator=(const AliRsnCutESD2010& copy);
32     virtual ~AliRsnCutESD2010() {;};
33
34     const AliESDtrackCuts* GetCutsTPC() const {return &fESDtrackCutsTPC;}
35     const AliESDtrackCuts* GetCutsITS() const {return &fESDtrackCutsITS;}
36     virtual Bool_t         IsSelected(TObject *object);
37     
38     void             SetMC       (Bool_t yn = kTRUE);
39     void             SetCheckITS (Bool_t yn = kTRUE) {fCheckITS = yn;}
40     void             SetCheckTPC (Bool_t yn = kTRUE) {fCheckTPC = yn;}
41     void             SetCheckTOF (Bool_t yn = kTRUE) {fCheckTOF = yn;}
42     void             SetUseITSTPC(Bool_t yn = kTRUE) {fUseITSTPC = yn;}
43     void             SetUseITSSA (Bool_t yn = kTRUE) {fUseITSSA = yn;}
44     void             SetPID      (AliPID::EParticleType t) {fPID = t;}
45     
46     void             SetMaxITSPIDmom(Double_t v) {fMaxITSPIDmom = v;}
47     void             SetITSband(Double_t v)      {fMaxITSband = v;}
48     
49     void             SetTPCpLimit(Double_t v) {fTPCpLimit = v;}
50     void             SetTPCrange(Double_t min, Double_t max) {fMinTPCband = min; fMaxTPCband = max;}
51     void             SetTPCpar(Double_t p0, Double_t p1, Double_t p2, Double_t p3, Double_t p4)
52                        {fTPCpar[0]=p0;fTPCpar[1]=p1;fTPCpar[2]=p2;fTPCpar[3]=p3;fTPCpar[4]=p4;}
53
54     void             SetTOFcalibrateESD(Bool_t yn = kTRUE)  {fTOFcalibrateESD = yn;}
55     void             SetTOFcorrectTExp (Bool_t yn = kTRUE)  {fTOFcorrectTExp = yn;}
56     void             SetTOFuseT0       (Bool_t yn = kTRUE)  {fTOFuseT0 = yn;}
57     void             SetTOFtuneMC      (Bool_t yn = kTRUE)  {fTOFtuneMC = yn;}
58     void             SetTOFresolution  (Double_t v = 100.0) {fTOFresolution = v;}
59     void             SetTOFrange       (Double_t v1, Double_t v2) {fMinTOF = v1; fMaxTOF = v2;}
60     
61     virtual void     SetEvent(AliRsnEvent *event);
62
63   protected:
64   
65     Bool_t  OkQuality(AliESDtrack *d);  // check track quality parameters and DCA
66     Bool_t  OkITSPID (AliESDtrack *d);  // check ITS PID
67     Bool_t  OkTPCPID (AliESDtrack *d);  // check TPC PID
68     Bool_t  OkTOFPID (AliESDtrack *d);  // check TOF PID
69     Bool_t  IsITSTPC (AliESDtrack *d);  // check that the track is TPC+ITS
70     Bool_t  IsITSSA  (AliESDtrack *d);  // check that the track is ITS standalone
71     Bool_t  MatchTOF (AliESDtrack *d);  // check that the track matches the TOF
72   
73     Bool_t                  fIsMC;             //  switch for MC analysis
74     Bool_t                  fCheckITS;         //  switch for ITS dE/dx check
75     Bool_t                  fCheckTPC;         //  switch for TPC dE/dx check
76     Bool_t                  fCheckTOF;         //  switch for TOF time check
77     Bool_t                  fUseITSTPC;        //  switch to use TPC global tracks
78     Bool_t                  fUseITSSA;         //  switch to use ITS standalone tracks
79     AliPID::EParticleType   fPID;              //  PID reference type used for checks
80     
81     Double_t                fMaxITSPIDmom;     //  maximum momentum where ITS PID is used for TPC+ITS tracks
82     Double_t                fMaxITSband;       //  range for ITS de/dx band
83
84     Double_t                fTPCpLimit;        //  limit to choose what band to apply
85     Double_t                fTPCpar[5];        //  parameters for TPC bethe-Bloch
86     Double_t                fMinTPCband;       //  range for TPC de/dx band - min
87     Double_t                fMaxTPCband;       //  range for TPC de/dx band - max
88     
89     AliESDpid              *fESDpid;           //  ESD PID object
90     AliESDtrackCuts         fESDtrackCutsTPC;  //  ESD standard defined track cuts for TPC tracks
91     AliESDtrackCuts         fESDtrackCutsITS;  //  ESD standard defined track cuts for ITS-SA tracks
92     AliTOFT0maker          *fTOFmaker;         //! TOF time0 computator
93     AliTOFcalib            *fTOFcalib;         //! TOF calibration
94     Bool_t                  fTOFcalibrateESD;  //  TOF settings
95     Bool_t                  fTOFcorrectTExp;   //  TOF settings
96     Bool_t                  fTOFuseT0;         //  TOF settings
97     Bool_t                  fTOFtuneMC;        //  TOF settings
98     Double_t                fTOFresolution;    //  TOF settings
99     Double_t                fMinTOF;           //  range for TOF PID (min)
100     Double_t                fMaxTOF;           //  range for TOF PID (max)
101     
102     static Int_t            fgLastRun;         //! last run number
103
104     ClassDef(AliRsnCutESD2010, 1)
105 };
106
107 inline Bool_t AliRsnCutESD2010::IsITSTPC(AliESDtrack *vtrack)
108 {
109 //
110 // Checks if the track has the status flags required for a global track
111 //
112
113   if (!vtrack)
114   {
115     AliWarning("NULL argument: impossible to check status");
116     return kFALSE;
117   }
118   
119   ULong_t status = (ULong_t)vtrack->GetStatus();
120   ULong_t sTPCin = status & AliESDtrack::kTPCin;
121   
122   if (sTPCin == 0) return kFALSE;
123   
124   return kTRUE;
125 }
126
127 inline Bool_t AliRsnCutESD2010::IsITSSA(AliESDtrack *vtrack)
128 {
129 //
130 // Checks if the track has the status flags required for an ITS standalone track
131 //
132
133   if (!vtrack)
134   {
135     AliWarning("NULL argument: impossible to check status");
136     return kFALSE;
137   }
138   
139   ULong_t status     = (ULong_t)vtrack->GetStatus();
140   ULong_t sTPCin     = status & AliESDtrack::kTPCin;
141   ULong_t sITSrefit  = status & AliESDtrack::kITSrefit;
142   ULong_t sITSpureSA = status & AliESDtrack::kITSpureSA;
143   ULong_t sITSpid    = status & AliESDtrack::kITSpid;
144   
145   if (sTPCin     != 0) return kFALSE;
146   if (sITSrefit  == 0) return kFALSE;
147   if (sITSpureSA != 0) return kFALSE;
148   if (sITSpid    == 0) return kFALSE;
149   
150   return kTRUE;
151 }
152
153
154 inline Bool_t AliRsnCutESD2010::MatchTOF(AliESDtrack *vtrack)
155 {
156 //
157 // Checks if the track has matched the TOF detector
158 //
159
160   if (!vtrack)
161   {
162     AliWarning("NULL argument: impossible to check status");
163     return kFALSE;
164   }
165   
166   ULong_t status  = (ULong_t)vtrack->GetStatus();
167   ULong_t sTOFout = status & AliESDtrack::kTOFout;
168   ULong_t sTIME   = status & AliESDtrack::kTIME;
169   
170   if (sTOFout == 0) return kFALSE;
171   if (sTIME   == 0) return kFALSE;
172   
173   return kTRUE;
174 }
175
176 #endif