181 #include "StObject.h"
182 #include "StContainers.h"
184 #include "StTrackTopologyMap.h"
186 #include "StTrackFitTraits.h"
188 ostream& operator<<(ostream& os,
const StTrack& t);
205 virtual StTrackType type()
const = 0;
207 virtual int key()
const {
return mKey; }
209 unsigned int flagExtension()
const {
return mFlagExtension; }
210 unsigned short encodedMethod()
const;
211 bool finderMethod(StTrackFinderMethod)
const;
212 StTrackFittingMethod fittingMethod()
const;
213 float impactParameter()
const;
214 float length()
const;
215 unsigned short numberOfPossiblePoints()
const;
216 unsigned short numberOfPossiblePoints(StDetectorId)
const;
223 const StExtGeometry* extGeometry()
const {
return mExtGeometry;}
228 const StSPtrVecTrackPidTraits& pidTraits()
const;
229 StSPtrVecTrackPidTraits& pidTraits();
230 StPtrVecTrackPidTraits pidTraits(StDetectorId)
const;
235 unsigned short seedQuality()
const {
return mSeedQuality;}
236 bool isCtbMatched()
const {
return testBit(kCtbMatched);}
237 bool isToFMatched()
const {
return testBit(kToFMatched);}
238 bool isBToFMatched()
const {
return testBit(kToFMatched);}
239 bool isBemcMatched()
const {
return testBit(kBemcMatched);}
240 bool isEemcMatched()
const {
return testBit(kEemcMatched);}
242 bool isCtbNotMatched()
const {
return testBit(kCtbNotMatched);}
243 bool isToFNotMatched()
const {
return testBit(kToFNotMatched);}
244 bool isBToFNotMatched()
const {
return testBit(kToFNotMatched);}
245 bool isBemcNotMatched()
const {
return testBit(kBemcNotMatched);}
246 bool isEemcNotMatched()
const {
return testBit(kEemcNotMatched);}
248 bool isDecayTrack()
const {
return testBit(kDecayTrack);}
249 bool isPromptTrack()
const {
return testBit(kPromptTrack);}
250 bool isPostXTrack()
const {
return testBit(kPostXTrack);}
251 bool isMembraneCrossingTrack()
const {
return testBit(kXMembrane);}
252 bool isShortTrack2EMC()
const {
return testBit(kShortTrack2EMC);}
253 bool isRejected()
const {
return testBit(kRejectedTrack);}
254 bool isWestTpcOnly()
const {
return testBit(kWestTpcOnlyTrack);}
255 bool isEastTpcOnly()
const {
return testBit(kEastTpcOnlyTrack);}
257 virtual void setCtbMatched() {setBit(kCtbMatched);}
258 virtual void setToFMatched() {setBit(kToFMatched);}
259 virtual void setBToFMatched() {setBit(kToFMatched);}
260 virtual void setBemcMatched() {setBit(kBemcMatched);}
261 virtual void setEemcMatched() {setBit(kEemcMatched);}
263 virtual void setCtbNotMatched() {setBit(kCtbNotMatched);}
264 virtual void setToFNotMatched() {setBit(kToFNotMatched);}
265 virtual void setBToFNotMatched() {setBit(kToFNotMatched);}
266 virtual void setBemcNotMatched() {setBit(kBemcNotMatched);}
267 virtual void setEemcNotMatched() {setBit(kEemcNotMatched);}
268 virtual void setDecayTrack() {setBit(kDecayTrack);}
269 virtual void setPromptTrack() {setBit(kPromptTrack);}
270 virtual void setPostCrossingTrack() {setBit(kPostXTrack);}
271 virtual void setMembraneCrossingTrack(){setBit(kXMembrane);}
272 virtual void setShortTrack2EMC() {reSetBit(kRejectedTrack); setBit(kShortTrack2EMC);}
273 virtual void setShortTrack2ETOF() {reSetBit(kRejectedTrack); setBit(kShortTrack2ETOF);}
274 virtual void setRejected() {setBit(kRejectedTrack);}
275 virtual void setWestTpcOnly() {setBit(kWestTpcOnlyTrack);}
276 virtual void setEastTpcOnly() {setBit(kEastTpcOnlyTrack);}
277 virtual void setFlagExtension(
unsigned int i){mFlagExtension = i;}
279 void setKey(
int val) { mKey = val; }
280 void setEncodedMethod(UShort_t);
281 void setImpactParameter(
float);
282 void setLength(
float);
292 void setNumberOfPossiblePoints(
unsigned char, StDetectorId);
293 void setSeedQuality(UShort_t qa) {mSeedQuality = qa;}
294 int idTruth()
const {
return mIdTruth;}
295 int qaTruth()
const {
return mQuality; }
296 int idParentVx()
const {
return mIdParentVx;}
297 void setIdTruth(
int idtru,
int qatru=0) {mIdTruth = idtru; mQuality =
static_cast<unsigned short>(qatru);}
299 void setIdParentVx(
int id) {mIdParentVx = id;}
301 void setBit(
unsigned int f,
bool set) {(set) ? setBit(f) : reSetBit(f);}
302 void setBit(
unsigned int f) { mFlagExtension |= f; }
303 void reSetBit(
unsigned int f) { mFlagExtension &= ~(f); }
304 bool testBit(
unsigned int f)
const {
return (
bool) ((mFlagExtension & f) != 0); }
305 int testBits(
unsigned int f)
const {
return (
int) (mFlagExtension & f); }
306 void invertBit(
unsigned int f) { mFlagExtension ^= f; }
307 void Print(Option_t *option=
"")
const {cout << option << *
this << endl; }
310 void setNumberOfPossiblePoints(UShort_t);
314 UInt_t mFlagExtension;
315 UShort_t mEncodedMethod;
316 UShort_t mSeedQuality;
317 UChar_t mNumberOfPossiblePointsTpc;
318 UChar_t mNumberOfPossiblePointsFtpcWest;
319 UChar_t mNumberOfPossiblePointsFtpcEast;
320 UChar_t mNumberOfPossiblePointsSvt;
321 UChar_t mNumberOfPossiblePointsSsd;
322 UChar_t mNumberOfPossiblePointsSst;
323 UChar_t mNumberOfPossiblePointsPxl;
324 UChar_t mNumberOfPossiblePointsIst;
325 UChar_t mNumberOfPossiblePointsFts;
326 Float_t mImpactParameter;
348 StSPtrVecTrackPidTraits mPidTraitsVec;