00001 #ifndef TSegmentCurl_FLAG_ 00002 #define TSegmentCurl_FLAG_ 00003 00004 #ifdef TRKRECO_DEBUG_DETAIL 00005 #ifndef TRKRECO_DEBUG 00006 #define TRKRECO_DEBUG 00007 #endif 00008 #endif 00009 #include "TrkReco/TMLink.h" 00010 #include "TrkReco/TCurlFinderParameters.h" 00011 #include "CLHEP/Alist/AList.h" 00012 00013 class TSegmentCurl 00014 { 00015 public: 00016 TSegmentCurl(const unsigned superLayerId = 9999, 00017 const unsigned max = 9999); 00018 TSegmentCurl(TSegmentCurl &); 00019 TSegmentCurl(TSegmentCurl *); 00020 00021 ~TSegmentCurl(void); 00022 00023 const unsigned maxLocalLayerId(void) const; 00024 const unsigned superLayerId(void) const; 00025 const unsigned seqOfLayer(const unsigned); 00026 const unsigned sizeOfLayer(const unsigned); 00027 00028 const unsigned maxSeq(void) const; 00029 const unsigned layerIdOfMaxSeq(void); 00030 const unsigned numOfSeqOneLayer(void); 00031 const unsigned numOfLargeSeqLayer(void); 00032 00033 void setMaxSeq(const unsigned); 00034 void releaseMaxSeq(void); 00035 00036 inline const unsigned size(void){ return m_list.length(); } 00037 00038 const unsigned maxLocalLayerId(const unsigned); 00039 const unsigned superLayerId(const unsigned); 00040 00041 void append(TMLink&); 00042 void append(TMLink*); 00043 void append(AList<TMLink>&); 00044 00045 void remove(TMLink&); 00046 void remove(TMLink*); 00047 void remove(AList<TMLink>&); 00048 00049 void removeAll(void); 00050 00051 inline const AList<TMLink> & list(void){ return m_list; } 00052 inline const AList<TMLink> & list(unsigned i){ return m_layer[i]; } 00053 00054 TSegmentCurl & operator=(const TSegmentCurl &); 00055 00056 void dump(void); 00057 00058 unsigned wires(const unsigned) const; 00059 00060 void update(void); 00061 private: 00062 // main private members 00063 // flag for the update 00064 bool m_flagOfUpdate; 00065 00066 // elements 00067 AList<TMLink> m_list; 00068 // max local layer id = 0,1,2... 00069 unsigned m_MaxLocalLayerId; 00070 // super layer id = 0,1,2... 00071 unsigned m_superLayerId; 00072 // seq. num. of each layer 00073 unsigned m_seqOfLayer[4]; 00074 // size of each layer 00075 unsigned m_sizeOfLayer[4]; //Liuqg, origin is 6 00076 00077 // sub private members 00078 AList<TMLink> m_layer[4]; //for each superlayer. Liuqg, origin is 6 00079 void calcuSeq(unsigned); 00080 00081 unsigned m_maxSeq; 00082 unsigned m_layerIdOfMaxSeq; 00083 unsigned m_numOfSeqOneLayer; 00084 unsigned m_numOfLargeSeqLayer; 00085 }; 00086 00087 #endif /* TSegmentCurl_FLAG_ */