00001 //-------------------------------------------------------------------------- 00002 // File and Version Information: 00003 // $Id: MdcTrackListBase.h,v 1.15 2010/07/19 06:41:49 zhangy Exp $ 00004 // 00005 // Description: 00006 // Base class for track lists, which are where tracks found in MdcTrkRecon 00007 // are temporarily stored, and where much of the finding code is. 00008 // 00009 // Environment: 00010 // Software developed for the BaBar Detector at the SLAC B-Factory. 00011 // 00012 // Author(s): 00013 // Steve Schaffner 00014 // Zhang Yao(zhangyao@ihep.ac.cn) Migrate to BESIII 00015 // 00016 //------------------------------------------------------------------------ 00017 #ifndef MDCTRACKLISTBASE_H 00018 #define MDCTRACKLISTBASE_H 00019 #include "MdcTrkRecon/MdcTrackParams.h" 00020 #include "CLHEP/Alist/AList.h" 00021 #include "TrkBase/TrkRecoTrk.h" 00022 #include "MdcRecEvent/RecMdcTrack.h" 00023 #include "MdcRecEvent/RecMdcHit.h" 00024 00025 class MdcSegList; 00026 class MdcTrack; 00027 class MdcDetector; 00028 class MdcSegGrouper; 00029 class MdcHitMap; 00030 class TrkContext; 00031 00032 // Class definition// 00033 class MdcTrackListBase : public HepAList<MdcTrack> { 00034 00035 public: 00036 MdcTrackListBase(const MdcTrackParams &tkPar); 00037 virtual ~MdcTrackListBase(); 00038 00039 int nTrack() const {return length();} 00040 void setPlot(int plotFlag) { tkParam.lPlot = plotFlag;}; 00041 void newParams(const MdcTrackParams &tkPar); 00042 void plot() const; 00043 void store(RecMdcTrackCol* ,RecMdcHitCol*); 00044 00045 virtual int createFromSegs(MdcSegList *, const MdcHitMap*, 00046 const MdcDetector*, TrkContext&, 00047 double bunchTime ) = 0; 00048 00049 int arbitrateHits(); // return # of tracks deleted 00050 void dropMultiHotInLayer(const MdcTrack* tk); 00051 00052 //Remove and delete: 00053 void remove( MdcTrack *atrack ); 00054 #ifdef MDCPATREC_RESLAYER 00055 void setResLayer(int layer){m_resLayer=layer;} 00056 #endif 00057 void setD0Cut(double d0Cut){m_d0Cut = d0Cut;}//yzhang add 00058 void setZ0Cut(double z0Cut){m_z0Cut = z0Cut;}//yzhang add 2010-05-21 00059 void setPtCut(double ptCut){m_ptCut = ptCut;}//yzhang add 2009-10-27 00060 static double m_d0Cut;//yzhang add 00061 static double m_z0Cut;//yzhang add 2010-05-21 00062 static double m_ptCut;//yzhang add 2009-10-27 00063 00064 private: 00065 MdcTrackListBase& operator= (const MdcTrackListBase&); 00066 MdcTrackListBase(const MdcTrackListBase &); 00067 void transferTrack(); 00068 #ifdef MDCPATREC_RESLAYER 00069 int m_resLayer; 00070 #endif 00071 protected: 00072 MdcTrackParams tkParam; 00073 }; 00074 00075 00076 #endif 00077 00078 00079 00080 00081 00082 00083