00001 //-------------------------------------------------------------------------- 00002 // File and Version Information: 00003 // $Id: TrkExpectedHotSet.h,v 1.1.1.1 2005/04/21 06:01:42 zhangy Exp $ 00004 // 00005 // Description: 00006 // Defines a set of Expected hit on a track. 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 #ifndef TRKEXPECTEDHOTSET_HH 00016 #define TRKEXPECTEDHOTSET_HH 00017 00018 //--------------- 00019 // C++ Headers -- 00020 //--------------- 00021 00022 #include <iostream> 00023 #include "TrkBase/TrkDetElemId.h" 00024 00025 //---------------- 00026 // BaBar Headers 00027 //---------------- 00028 00029 #include <vector> 00030 00031 class TrkExpectedTrk; 00032 class TrkExpectedHot; 00033 class TrkFitTypeKey; 00034 class TrkFundHit; 00035 class TrkHitOnTrk; 00036 class TrkHitList; 00037 00038 // Class interface // 00039 class TrkExpectedHotSet { 00040 00041 public: 00042 00043 // Construct from the cell and the hit 00044 TrkExpectedHotSet( const TrkDetElemId& elemId, 00045 const int& maxFits ); 00046 00047 // Destructor 00048 virtual ~TrkExpectedHotSet(); 00049 00050 // operator == for vectors, check identity 00051 bool operator== ( const TrkExpectedHotSet& rhs ) { 00052 return this == &rhs; 00053 } 00054 00055 // Access to the cell id (offset by subsystem) 00056 const TrkDetElemId& elemId() const{ 00057 return _elemId; 00058 }; 00059 00060 // access to the hot ( from the key ) 00061 const TrkExpectedHot* exHot( const TrkFitTypeKey& key ) const; 00062 // the "reference" exHot 00063 const TrkExpectedHot* exHot( ) const; 00064 00065 // access to the other hots from fund hits 00066 void getHots( std::vector<TrkHitOnTrk*>& hots ) const; 00067 00068 // is this fit type already in? 00069 bool hasFitType( const TrkFitTypeKey& key ) const; 00070 00071 // other access 00072 const std::vector<int>& fitTypeMap() const { return _fitTypeMap; } 00073 std::vector<TrkExpectedHot*> theHots() const { return _theHots; } 00074 00075 // add info from a track 00076 bool addInfo( TrkExpectedHot* aHot, 00077 const TrkFitTypeKey& key ); 00078 00079 void printFit( const TrkFitTypeKey& key, 00080 std::ostream& os = std::cout ) const; 00081 00082 bool isSvt() const; 00083 bool isMdc() const; 00084 00085 const TrkExpectedTrk* exTrk() const { return _exTrk; } 00086 00087 protected: 00088 00089 void setExTrk( const TrkExpectedTrk* anExTrk ); 00090 00091 private: 00092 00093 const TrkDetElemId _elemId; 00094 int _nFit; 00095 00096 std::vector<int> _fitTypeMap; 00097 std::vector<TrkExpectedHot*> _theHots; 00098 00099 friend class TrkExpectedTrk; 00100 friend class TrkExpectedHotFactory; 00101 00102 const TrkExpectedTrk* _exTrk; 00103 00104 }; 00105 00106 #endif 00107 00108 00109 00110 00111