00001 //-------------------------------------------------------------------------- 00002 // File and Version Information: 00003 // $Id: TrkHotListFull.h,v 1.1.1.1 2005/04/21 06:01:42 zhangy Exp $ 00004 // 00005 // Description: List of hits (as HitOnTrk objects) associated with a 00006 // reconstructed track. This derived class is for tracks that actually 00007 // have hits on them. 00008 // 00009 // Environment: 00010 // Software developed for the BaBar Detector at the SLAC B-Factory. 00011 // 00012 // Author(s): Steve Schaffner 00013 // 00014 // Modified 3-july-97 by Leon Rochester to use Roguewave Sorted Vector 00015 // to store the list of Hots. At some point the HepAList will go away. 00016 //------------------------------------------------------------------------ 00017 00018 #ifndef TRKHOTLISTFULL_HH 00019 #define TRKHOTLISTFULL_HH 00020 #include "TrkBase/TrkHotList.h" 00021 #include "TrkBase/TrkHitOnTrkUpdater.h" 00022 #include "TrkBase/TrkFunctors.h" 00023 00024 class TrkFundHit; 00025 class TrkHitOnTrk; 00026 class TrkRep; 00027 00028 // Class interface // 00029 class TrkHotListFull : public TrkHotList, TrkHitOnTrkUpdater { 00030 public: 00031 // constructors and such 00032 TrkHotListFull(); 00033 // create new HotList, cloning old Hots and making the clones point at rep 00034 TrkHotListFull(const TrkHotList& inHots, TrkBase::Functors::cloneHot func); // clone hots 00035 TrkHotListFull( TrkHotList& inHots, TrkBase::Functors::setParent func); // steal hots 00036 TrkHotList* clone(TrkBase::Functors::cloneHot func) const; 00037 virtual ~TrkHotListFull(); 00038 00039 virtual bool hitCapable() const; 00040 virtual int nActive(TrkEnums::TrkViewInfo view=TrkEnums::bothView) const; 00041 virtual int nMdc(TrkEnums::TrkViewInfo view=TrkEnums::bothView) const; 00042 virtual int nSvt(TrkEnums::TrkViewInfo view=TrkEnums::bothView) const; 00043 virtual int nHit(TrkEnums::TrkViewInfo view=TrkEnums::bothView) const; 00044 virtual TrkView svtView(int layer) const; 00045 virtual unsigned firstMdcLayer() const; 00046 virtual unsigned lastMdcLayer() const; 00047 virtual double startFoundRange() const; 00048 virtual double endFoundRange() const; 00049 virtual bool isActive(unsigned ihot) const; 00050 00051 void append(TrkHitOnTrk* ); 00052 void remove(TrkHitOnTrk* ); 00053 TrkHitOnTrk* findHot(const TrkFundHit*) const; 00054 void updateHots(); 00055 00056 protected: 00057 virtual const std::vector<TrkHitOnTrk*>& hotlist() const; 00058 virtual std::vector<TrkHitOnTrk*>& hotlist(); 00059 private: 00060 00061 static size_t dfltCapac(); // default capacity of vector 00062 std::vector<TrkHitOnTrk*> _hotlist; // hits are owned by vector 00063 00064 // Preempt: Hots have to be cloned, not naively copied 00065 TrkHotListFull(const TrkHotListFull& rhs); //copy ctor 00066 TrkHotListFull& operator= (const TrkHotListFull&); 00067 }; 00068 00069 #endif 00070