00001 //-------------------------------------------------------------------------- 00002 // File and Version Information: 00003 // $Id: TrkExpectedHot.h,v 1.1.1.1 2005/04/21 06:01:42 zhangy Exp $ 00004 // 00005 // Description: 00006 // Defines a Expected hit on a track, and stores information about it. 00007 // 00008 // Environment: 00009 // Software developed for the BaBar Detector at the SLAC B-Factory. 00010 // 00011 // Authors: Eric Charles UW Madison 00012 // 00013 // 00014 //------------------------------------------------------------------------ 00015 00016 #ifndef TRKEXPECTEDHOT_HH 00017 #define TRKEXPECTEDHOT_HH 00018 00019 //--------------- 00020 // C++ Headers -- 00021 //--------------- 00022 00023 #include <iostream> 00024 #include "TrkBase/TrkDetElemId.h" 00025 00026 //---------------- 00027 // BaBar Headers 00028 //---------------- 00029 00030 class TrkExpectedTrk; 00031 class TrkHitOnTrk; 00032 class TrkDifPoca; 00033 00034 #include <vector> 00035 00036 // Class interface // 00037 class TrkExpectedHot { 00038 00039 public: 00040 00041 // copy c'tor 00042 TrkExpectedHot( const TrkExpectedHot& ); 00043 00044 // Destructor 00045 virtual ~TrkExpectedHot(); 00046 00047 // access to the internal id of the associated element 00048 // ( offset by subsystem ) 00049 const TrkDetElemId& id() const{ return _id; } 00050 00051 // sorting 00052 // sorting uses the internal id 00053 bool operator == ( const TrkExpectedHot& rhs ) const; 00054 bool operator < ( const TrkExpectedHot& rhs ) const; 00055 00056 virtual bool setHot( const TrkHitOnTrk* aHot ) = 0; 00057 virtual bool setHots( const TrkExpectedHot* aHot ) = 0; 00058 00059 virtual bool hasHot( ) const = 0; 00060 virtual bool hasGHit( ) const = 0; 00061 00062 bool isSvt() const; 00063 bool isMdc() const; 00064 00065 virtual bool getHots( std::vector<TrkHitOnTrk*>& hots ) const=0; 00066 00067 virtual void printAll( std::ostream& os ) const = 0; 00068 00069 const TrkExpectedTrk* exTrk() const { return _exTrk; }; 00070 00071 protected: 00072 00073 // c'tors are protected, only called by concrete classes 00074 TrkExpectedHot( const TrkDetElemId& id ); 00075 TrkExpectedHot( const int& id, TrkDetElemId::systemIndex sysInd ); 00076 00077 void setExTrk( const TrkExpectedTrk* anExTrk ) { _exTrk = anExTrk; } 00078 00079 private: 00080 00081 // elem id 00082 const TrkDetElemId _id; 00083 const TrkExpectedTrk* _exTrk; 00084 00085 friend class TrkExpectedHotSet; 00086 00087 }; 00088 00089 #endif 00090