00001 //-------------------------------------------------------------------------- 00002 // File and Version Information: 00003 // $Id: TrkHotListUnowned.h,v 1.1.1.1 2005/04/21 06:01:42 zhangy Exp $ 00004 // 00005 // Description: class TrkHotListUnowned. A copy of TrkHotListFull where the 00006 // hots are not owned by this class. This is useful in nested reps like the 00007 // mini-rep, where only 1 can truely own the hots but both may need access to 00008 // them. 00009 // 00010 // Environment: 00011 // Software developed for the BaBar Detector at the SLAC B-Factory. 00012 // 00014 // Copyright (C) 2000 Lawrence Berkeley Laboratory 00015 // 00016 // Author List: 00017 // Dave Brown 11/6/00 00018 //------------------------------------------------------------------------ 00019 00020 #ifndef TRKHOTLISTUNOWNED_HH 00021 #define TRKHOTLISTUNOWNED_HH 00022 #include "TrkBase/TrkHotList.h" 00023 #include "TrkBase/TrkHitOnTrkUpdater.h" 00024 00025 class TrkFundHit; 00026 class TrkHitOnTrk; 00027 class TrkRep; 00028 00029 // Class interface // 00030 class TrkHotListUnowned : public TrkHotList, TrkHitOnTrkUpdater { 00031 public: 00032 // create new HotList from another 00033 TrkHotListUnowned(TrkHotList* other,bool takehotlist=false); 00034 // copy and assignment are OK for this class 00035 TrkHotListUnowned(const TrkHotListUnowned& rhs); 00036 TrkHotListUnowned& operator= (const TrkHotListUnowned&); 00037 // cloning 00038 TrkHotList* clone(TrkBase::Functors::cloneHot) const; 00039 virtual ~TrkHotListUnowned(); 00040 00041 virtual bool hitCapable() const; 00042 virtual int nActive(TrkEnums::TrkViewInfo view=TrkEnums::bothView) const; 00043 virtual int nMdc(TrkEnums::TrkViewInfo view=TrkEnums::bothView) const; 00044 virtual int nSvt(TrkEnums::TrkViewInfo view=TrkEnums::bothView) const; 00045 virtual int nHit(TrkEnums::TrkViewInfo view=TrkEnums::bothView) const; 00046 virtual TrkView svtView(int layer) const; 00047 virtual unsigned firstMdcLayer() const; 00048 virtual unsigned lastMdcLayer() const; 00049 virtual double startFoundRange() const; 00050 virtual double endFoundRange() const; 00051 virtual bool isActive(unsigned ihot) const; 00052 00053 void append(TrkHitOnTrk* ); 00054 void remove(TrkHitOnTrk* ); 00055 TrkHitOnTrk* findHot(const TrkFundHit*) const; 00056 virtual void updateHots(); 00057 // special function for this class 00058 const TrkHotList* myHotList() const { return _hotl; } 00059 // take ownership 00060 TrkHotList* takeHotList(); 00061 protected: 00062 virtual const std::vector<TrkHitOnTrk*>& hotlist() const; 00063 virtual std::vector<TrkHitOnTrk*>& hotlist(); 00064 private: 00065 // reference to the real HotList 00066 TrkHotList* _hotl; 00067 bool _ownhots; // do I own these or not? 00068 }; 00069 00070 #endif