00001 //-------------------------------------------------------------------------- 00002 // File and Version Information: 00003 // $Id: TrkHitUse.h,v 1.1.1.1 2005/04/21 06:01:42 zhangy Exp $ 00004 // 00005 // Description: 00006 // Carries information about how a hit is to be used on a track, and 00007 // is able to create the appropriate kind of HitOnTrk. Abstract base class. 00008 // 00009 // Environment: 00010 // Software developed for the BaBar Detector at the SLAC B-Factory. 00011 // 00012 // Author(s): Steve Schaffner 00013 // 00014 //------------------------------------------------------------------------ 00015 #ifndef TRKHITUSE_HH 00016 #define TRKHITUSE_HH 00017 00018 class TrkFundHit; 00019 class TrkHitOnTrk; 00020 class TrkRep; 00021 //class SvtHit; 00022 class MdcHit; 00023 00024 // Class interface // 00025 class TrkHitUse { 00026 00027 public: 00028 TrkHitUse(const TrkFundHit&, double fltLen, bool active=true, 00029 int usable=1); 00030 virtual ~TrkHitUse(); 00031 00032 bool isActive() const {return _isActive;} 00033 int isUsable() const {return _isUsable;} 00034 double fltLen() const {return _fltLen;} 00035 const TrkFundHit& hit() const {return _hit;} 00036 virtual const MdcHit* mdcHit() const; 00037 // virtual const SvtHit* svtHit() const; 00038 00039 virtual TrkHitOnTrk* createHitOnTrk(const TrkRep&) const = 0; 00040 void setFltLen(double flt) {_fltLen = flt;} 00041 00042 // operator== tests on equality of contents: FundHit address and anything 00043 // relevant in the derived classes (e.g. ambiguity for Mdc). It does 00044 // not test flight length. 00045 virtual bool operator==(const TrkHitUse&) const = 0; 00046 00047 private: 00048 const TrkFundHit& _hit; 00049 bool _isActive; 00050 int _isUsable; 00051 double _fltLen; 00052 00053 // Preempt 00054 TrkHitUse& operator= (const TrkHitUse&); 00055 TrkHitUse(const TrkHitUse &); 00056 }; 00057 00058 #endif