00001 #ifndef DCHSEGLIST_H 00002 #define DCHSEGLIST_H 00003 00004 // MdcSegList.hh -- holds list of track segs. Actually holds array of 00005 // linked lists, one list for each superlayer. 00006 00007 // Interface Dependencies ---------------------------------------------- 00008 00009 #include "MdcTrkRecon/MdcSegParams.h" 00010 00011 class MdcSegFinder; 00012 class MdcDetector; 00013 class GmsList; 00014 class MdcSeg; 00015 class MdcSuperLayer; 00016 00017 // End Interface Dependencies ----------------------------------------- 00018 00019 // Class definition// 00020 class MdcSegList { 00021 00022 friend class MdcSegFinder; 00023 00024 public: 00025 MdcSegList(int nSupers, const MdcSegParams segParms); 00026 ~MdcSegList(); 00027 00028 // void newParams(const MdcSegParams &segPar); 00029 void setPlot(int lPlt); 00030 void plot() const; 00031 const GmsList *oneList(int slayIndex) const; 00032 void append(MdcSeg *aSeg); 00033 int count() const; 00034 00035 void destroySegs(); 00036 MdcSeg *getSeed( int iview, int goodOnly ); 00037 void resetSeed(const MdcDetector *gm); 00038 MdcSegParams *segPar() {return &segParam;} 00039 00040 private: 00041 MdcSegParams segParam; 00042 GmsList *segList; // eff. array (by slayer) of lists of segments 00043 int _nsupers; 00044 MdcSeg *seedSeg[3]; // next seed segment to be returned for given view 00045 const MdcSuperLayer *seedSlay[3]; // slayer of next seed 00046 00047 void sortByPhi(); 00048 void zeroSeed(); 00049 void tagAmbig(); 00050 void deleteDups(bool drop); 00051 void massageSegs(); 00052 }; 00053 00054 #endif 00055 00056 00057 00058 00059 00060 00061