StRoot  1
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Groups Pages
StFlowCutTrack.h
1 //
3 // $Id: StFlowCutTrack.h,v 1.20 2003/09/02 17:58:11 perev Exp $
4 //
5 // Author: Art Poskanzer and Raimond Snellings, LBNL, Nov 1999
6 // FTPC added by Markus Oldenburg, MPI, Dec 2000
7 // MuDst enabled by Kirill Filimonov, LBNL, Jun 2002
8 //
9 // Description: Class for applying flow track cuts
10 // If lo >= hi no cut is applied
11 // All functions and data members are static
12 // Therefor, no need to instantiate
13 // Just use StFlowCutTrack::func();
14 //
16 
17 #ifndef _StFlowCutTrack_INCLUDED_
18 #define _StFlowCutTrack_INCLUDED_
19 #include <Stiostream.h>
20 #include <stdlib.h>
21 #include "Rtypes.h"
22 class StTrack;
23 class StFlowPicoTrack;
24 class StMuTrack;
25 
27 
28  public:
29 
31  virtual ~StFlowCutTrack();
32 
33  static Int_t CheckTrack(StTrack* pTrack);
34  static Int_t CheckTrack(StFlowPicoTrack* pPicoTrack);
35  static Int_t CheckTrack(StMuTrack* pMuTrack);
36  static void PrintCutList();
37  static UInt_t EtaSymPosTpc();
38  static UInt_t EtaSymNegTpc();
39  static UInt_t EtaSymPosFtpc();
40  static UInt_t EtaSymNegFtpc();
41  static void EtaSymClear();
42  static void SetFitPtsTpc(Int_t lo, Int_t hi);
43  static void SetFitPtsFtpc(Int_t lo, Int_t hi);
44  static void SetFitOverMaxPts(Float_t lo, Float_t hi);
45  static void SetChiSqTpc(Float_t lo, Float_t hi);
46  static void SetChiSqFtpc(Float_t lo, Float_t hi);
47  static void SetDcaFtpc(Float_t lo, Float_t hi);
48  static void SetDcaGlobalFtpc(Float_t lo, Float_t hi);
49  static void SetPtTpc(Float_t lo, Float_t hi);
50  static void SetPtFtpc(Float_t lo, Float_t hi);
51  static void SetEtaTpc(Float_t lo, Float_t hi);
52  static void SetEtaFtpc(Float_t lo_neg, Float_t hi_neg, Float_t lo_pos, Float_t hi_pos);
53  static void SetChgTpc(Int_t lo, Int_t hi);
54  static void SetChgFtpc(Int_t lo, Int_t hi);
55  static void IncludeTpcTracks(Bool_t tpc_include);
56  static void IncludeFtpcTracks(Bool_t ftpc_include);
57 
58  private:
59 
60  static UInt_t mTrackN; // number of tracks
61  static UInt_t mTpcTrackN; // number of Tpc tracks
62  static UInt_t mFtpcTrackN; // number of Ftpc tracks
63  static UInt_t mFtpcEastTrackN; // number of Ftpc east tracks
64  static UInt_t mFtpcWestTrackN; // number of Ftpc west tracks
65 
66  static UInt_t mGoodTrackN; // number of accepted tracks
67  static UInt_t mGoodTpcTrackN; // number of accepted Tpc tracks
68  static UInt_t mGoodFtpcTrackN; // number of accepted Ftpc tracks
69 
70  static UInt_t mEtaSymPosTpcN; // number of positive Eta Tpc tracks
71  static UInt_t mEtaSymNegTpcN; // number of negative Eta Tpc tracks
72  static UInt_t mEtaSymPosFtpcN; // number of positive Eta Ftpc tracks
73  static UInt_t mEtaSymNegFtpcN; // number of negative Eta Ftpc tracks
74 
75  static UInt_t mFitPtsTpcCutN; // number not accepted
76  static Int_t mFitPtsTpcCuts[2]; // range
77 
78  static UInt_t mFitPtsFtpcCutN; // number not accepted
79  static Int_t mFitPtsFtpcCuts[2]; // range
80 
81  static UInt_t mFitOverMaxCutN; // number not accepted (all)
82  static UInt_t mFitOverMaxTpcCutN; // number not accepted (Tpc)
83  static UInt_t mFitOverMaxFtpcCutN; // number not accepted (Ftpc)
84  static Float_t mFitOverMaxCuts[2]; // range
85 
86  static UInt_t mChiSqTpcCutN; // number not accepted
87  static Float_t mChiSqTpcCuts[2]; // range
88 
89  static UInt_t mChiSqFtpcCutN; // number not accepted
90  static Float_t mChiSqFtpcCuts[2]; // range
91 
92  static UInt_t mDcaFtpcCutN; // number not accepted
93  static Float_t mDcaFtpcCuts[2]; // range
94 
95  static UInt_t mDcaGlobalFtpcCutN; // number not accepted
96  static Float_t mDcaGlobalFtpcCuts[2]; // range
97 
98  static UInt_t mPtTpcCutN; // number not accepted
99  static Float_t mPtTpcCuts[2]; // range
100 
101  static UInt_t mPtFtpcCutN; // number not accepted
102  static Float_t mPtFtpcCuts[2]; // range
103 
104  static UInt_t mEtaTpcCutN; // number not accepted
105  static Float_t mEtaTpcCuts[2]; // range
106 
107  static UInt_t mEtaFtpcCutN; // number not accepted
108  static Float_t mEtaFtpcCuts[4]; // range
109 
110  static UInt_t mChgTpcCutN; // number not accepted
111  static Int_t mChgTpcCuts[2]; // range
112 
113  static UInt_t mChgFtpcCutN; // number not accepted
114  static Int_t mChgFtpcCuts[2]; // range
115 
116  static UInt_t mTpcTrackCutN; // number not accepted
117  static Bool_t mTpcTrackCut; // cut or don't cut (kTRUE, kFALSE)
118 
119  static UInt_t mFtpcTrackCutN; // number not accepted
120  static Bool_t mFtpcTrackCut; // cut or don't cut (kTRUE, kFALSE)
121 
122  ClassDef(StFlowCutTrack,1) // macro for rootcint
123 };
124 
125 inline UInt_t StFlowCutTrack::EtaSymPosTpc() { return mEtaSymPosTpcN; }
126 
127 inline UInt_t StFlowCutTrack::EtaSymNegTpc() { return mEtaSymNegTpcN; }
128 
129 inline UInt_t StFlowCutTrack::EtaSymPosFtpc() { return mEtaSymPosFtpcN; }
130 
131 inline UInt_t StFlowCutTrack::EtaSymNegFtpc() { return mEtaSymNegFtpcN; }
132 
133 inline void StFlowCutTrack::EtaSymClear() { mEtaSymPosTpcN = 0; mEtaSymNegTpcN = 0;
134  mEtaSymPosFtpcN = 0; mEtaSymNegFtpcN = 0; }
135 
136 inline void StFlowCutTrack::SetFitPtsTpc(Int_t lo, Int_t hi) {
137  mFitPtsTpcCuts[0] = lo; mFitPtsTpcCuts[1] = hi; }
138 
139 inline void StFlowCutTrack::SetFitPtsFtpc(Int_t lo, Int_t hi) {
140  mFitPtsFtpcCuts[0] = lo; mFitPtsFtpcCuts[1] = hi; }
141 
142 inline void StFlowCutTrack::SetFitOverMaxPts(Float_t lo, Float_t hi) {
143  mFitOverMaxCuts[0] = lo; mFitOverMaxCuts[1] = hi; }
144 
145 inline void StFlowCutTrack::SetChiSqTpc(Float_t lo, Float_t hi) {
146  mChiSqTpcCuts[0] = lo; mChiSqTpcCuts[1] = hi; }
147 
148 inline void StFlowCutTrack::SetChiSqFtpc(Float_t lo, Float_t hi) {
149  mChiSqFtpcCuts[0] = lo; mChiSqFtpcCuts[1] = hi; }
150 
151 inline void StFlowCutTrack::SetDcaFtpc(Float_t lo, Float_t hi) {
152  mDcaFtpcCuts[0] = lo; mDcaFtpcCuts[1] = hi; }
153 
154 inline void StFlowCutTrack::SetDcaGlobalFtpc(Float_t lo, Float_t hi) {
155  mDcaGlobalFtpcCuts[0] = lo; mDcaGlobalFtpcCuts[1] = hi; }
156 
157 inline void StFlowCutTrack::SetPtTpc(Float_t lo, Float_t hi) {
158  mPtTpcCuts[0] = lo; mPtTpcCuts[1] = hi; }
159 
160 inline void StFlowCutTrack::SetPtFtpc(Float_t lo, Float_t hi) {
161  mPtFtpcCuts[0] = lo; mPtFtpcCuts[1] = hi; }
162 
163 inline void StFlowCutTrack::SetEtaTpc(Float_t lo, Float_t hi) {
164  mEtaTpcCuts[0] = lo; mEtaTpcCuts[1] = hi; }
165 
166 inline void StFlowCutTrack::SetEtaFtpc(Float_t lo_neg, Float_t hi_neg,
167  Float_t lo_pos, Float_t hi_pos) {
168  mEtaFtpcCuts[0] = lo_neg; mEtaFtpcCuts[1] = hi_neg;
169  mEtaFtpcCuts[2] = lo_pos; mEtaFtpcCuts[3] = hi_pos; }
170 
171 inline void StFlowCutTrack::SetChgTpc(Int_t lo, Int_t hi) {
172  mChgTpcCuts[0] = lo; mChgTpcCuts[1] = hi; }
173 
174 inline void StFlowCutTrack::SetChgFtpc(Int_t lo, Int_t hi) {
175  mChgFtpcCuts[0] = lo; mChgFtpcCuts[1] = hi; }
176 
177 inline void StFlowCutTrack::IncludeTpcTracks(Bool_t tpc_include) {
178  mTpcTrackCut = !tpc_include; }
179 
180 inline void StFlowCutTrack::IncludeFtpcTracks(Bool_t ftpc_include) {
181  mFtpcTrackCut = !ftpc_include; }
182 
183 #endif
184 
186 //
187 // $Log: StFlowCutTrack.h,v $
188 // Revision 1.20 2003/09/02 17:58:11 perev
189 // gcc 3.2 updates + WarnOff
190 //
191 // Revision 1.19 2003/01/14 14:14:16 oldi
192 // Possibility to exclude TPC tracks completely (= FTPC only).
193 //
194 // Revision 1.18 2003/01/10 16:42:05 oldi
195 // Several changes to comply with FTPC tracks:
196 // - Switch to include/exclude FTPC tracks introduced.
197 // The same switch changes the range of the eta histograms.
198 // - Eta symmetry plots for FTPC tracks added and separated from TPC plots.
199 // - PhiWgts and related histograms for FTPC tracks split in FarEast, East,
200 // West, FarWest (depending on vertex.z()).
201 // - Psi_Diff plots for 2 different selections and the first 2 harmonics added.
202 // - Cut to exclude mu-events with no primary vertex introduced.
203 // (This is possible for UPC events and FTPC tracks.)
204 // - Global DCA cut for FTPC tracks added.
205 // - Global DCA cuts for event plane selection separated for TPC and FTPC tracks.
206 // - Charge cut for FTPC tracks added.
207 //
208 // Revision 1.17 2002/06/10 22:50:59 posk
209 // pt and eta weighting now default.
210 // DcaGlobalPart default now 0 to 1 cm.
211 // Event cut order changed.
212 //
213 // Revision 1.16 2002/06/07 22:18:40 kirill
214 // Introduced MuDst reader
215 //
216 // Revision 1.15 2002/02/13 22:29:17 posk
217 // Pt Weight now also weights Phi Weights. Added Eta Weight, default=FALSE.
218 //
219 // Revision 1.14 2002/01/31 21:43:14 aihong
220 // add SetChgTpc()
221 //
222 // Revision 1.13 2001/11/09 21:10:34 posk
223 // Switched from CERNLIB to TMath. Little q is now normalized.
224 //
225 // Revision 1.12 2001/07/27 01:26:10 snelling
226 // Added and changed variables for picoEvent. Changed trackCut class to StTrack
227 //
228 // Revision 1.11 2001/05/22 20:17:23 posk
229 // Now can do pseudorapidity subevents.
230 //
231 // Revision 1.10 2000/12/12 20:22:05 posk
232 // Put log comments at end of files.
233 // Deleted persistent StFlowEvent (old micro DST).
234 //
235 // Revision 1.9 2000/12/10 02:01:13 oldi
236 // A new member (StTrackTopologyMap mTopology) was added to StFlowPicoTrack.
237 // The evaluation of either a track originates from the FTPC or not is
238 // unambiguous now. The evaluation itself is easily extendible for other
239 // detectors (e.g. SVT+TPC). Old flowpicoevent.root files are treated as if
240 // they contain TPC tracks only (backward compatibility).
241 //
242 // Revision 1.7 2000/12/08 17:03:38 oldi
243 // Phi weights for both FTPCs included.
244 //
245 // Revision 1.6 2000/12/06 15:38:46 oldi
246 // Including FTPC.
247 //
248 // Revision 1.5 2000/10/12 22:46:35 snelling
249 // Added support for the new pDST's and the probability pid method
250 //
251 // Revision 1.4 2000/08/31 18:58:20 posk
252 // For picoDST, added version number, runID, and multEta for centrality.
253 // Added centrality cut when reading picoDST.
254 // Added pt and eta selections for particles corr. wrt event plane.
255 //
256 // Revision 1.3 2000/08/10 23:00:21 posk
257 // New centralities. pt and eta cuts.
258 //
259 // Revision 1.2 2000/07/12 17:54:36 posk
260 // Added chi2 and dca cuts. Multiplied EtaSym by ::sqrt(mult).
261 // Apply cuts when reading picoevent file.
262 //
263 // Revision 1.1 2000/03/02 23:02:43 posk
264 // Changed extensions from .hh and .cc to .h and .cxx .
265 //
266 // Revision 1.4 1999/12/15 22:01:24 posk
267 // Added StFlowConstants.hh
268 //
269 // Revision 1.3 1999/11/30 18:52:50 snelling
270 // First modification for the new StEvent
271 //
272 // Revision 1.2 1999/11/24 18:17:11 posk
273 // Put the methods which act on the data in with the data in StFlowEvent.
274 //
275 // Revision 1.1 1999/11/05 00:06:45 posk
276 // First versions of Flow cut classes.
277 //