00001 //------------------------------------------------------------------------------| 00002 // [File ]: MucMark.h | 00003 // [Brief ]: Header file of MucMark class for encapsulation | 00004 // [Author]: Xie Yuguang, <ygxie@mail.ihep.ac.cn> | 00005 // [Date ]: Oct 19, 2006 | 00006 //------------------------------------------------------------------------------| 00007 00008 #ifndef MUC_MARK_H 00009 #define MUC_MARK_H 00010 00011 #include<iostream> 00012 #include<vector> 00013 00014 using namespace std; 00015 00016 class MucMark; 00017 typedef vector< MucMark* > mark_col; 00018 00019 class MucMark { 00020 public: 00021 MucMark() {}; 00022 MucMark( int part, int segment, int layer, int strip ); 00023 ~MucMark(); 00024 00025 bool operator ==( MucMark &other ); 00026 00027 bool SetPart( int part ); 00028 bool SetSegment( int segment ); 00029 bool SetLayer( int layer ); 00030 bool SetStrip( int strip ); 00031 00032 int Part(); 00033 int Segment(); 00034 int Layer(); 00035 int Strip(); 00036 00037 int NumInCol( mark_col &aCol ); 00038 int IsInCol( int part, int segment, int layer, int strip, mark_col &aCol ); 00039 int IsInCol( mark_col &aCol ); 00040 int IsInCol( vector< mark_col > &aClusterCol ); 00041 bool IsInSegWith( MucMark &other ); 00042 bool IsInBoxWith( MucMark &other ); 00043 bool IsNeighborWith( MucMark &other ); 00044 bool IsNeighborWith( mark_col &aCol ); 00045 00046 vector< mark_col > CreateClusterCol( int buildMode, mark_col &aMarkCol ); 00047 vector< mark_col > CreateClusterCol_A( mark_col &aMarkCol ); // basic, fastest 00048 vector< mark_col > CreateClusterCol_B( mark_col &aMarkCol ); 00049 vector< mark_col > CreateClusterCol_C( mark_col &aMarkCol ); 00050 vector< mark_col > CreateClusterCol_D( mark_col &aMarkCol ); 00051 00052 void Print(); 00053 void Print( mark_col &aMarkCol ); 00054 void Print( vector< mark_col > &aClusterCol ); 00055 00056 private: 00057 00058 int m_Part; 00059 int m_Segment; 00060 int m_Layer; 00061 int m_Strip; 00062 }; 00063 00064 #endif 00065