00001 #ifndef __MdcID_h__ 00002 #define __MdcID_h__ 00003 00004 #include "Identifier/BesDetectorID.h" 00005 #include <string> 00006 #include <assert.h> 00007 00008 class MdcID : public BesDetectorID 00009 { 00010 public: 00011 typedef Identifier::size_type size_type; 00012 typedef Identifier::value_type value_type; 00013 00015 MdcID(); 00016 00018 ~MdcID(); 00019 00021 static Identifier wire_id ( int wireType, 00022 int layer, 00023 int wire 00024 ) ; 00025 00026 static Identifier wire_id ( int layer, int wire ); 00027 00028 00029 static value_type getIntID( unsigned int wireType, 00030 unsigned int layer, 00031 unsigned int wire 00032 ); 00033 00034 static value_type getIntID( unsigned int layer, 00035 unsigned int wire 00036 ); 00037 00038 static value_type getAXIAL_LAYER_MAX(); 00039 static value_type getSTEREO_LAYER_MAX(); 00040 static value_type getAXIAL_WIRE_MAX(); 00041 static value_type getSTEREO_WIRE_MAX(); 00042 static value_type getAXIAL_WIRE(); 00043 static value_type getSTEREO_WIRE(); 00044 00045 00046 static bool values_ok ( const unsigned int wireType, 00047 const unsigned int layer, 00048 const unsigned int wire 00049 ) ; 00051 // bool MdcID::is_axial (const Identifier& id); 00052 bool is_axial (const Identifier& id); 00053 00055 static int layer (const Identifier& id) ; 00056 static int wire (const Identifier& id) ; 00057 00058 00060 int layer_max (const Identifier& id) ; 00061 int wire_max (const Identifier& id) ; 00062 00063 private: 00064 00065 typedef std::vector<Identifier> id_vec; 00066 typedef id_vec::const_iterator id_vec_it; 00067 00068 static const unsigned int AXIAL_WIRE = 0; 00069 static const unsigned int STEREO_WIRE = 1; 00070 00071 static const unsigned int WIRETYPE_INDEX = 15; 00072 static const unsigned int WIRETYPE_MASK = 0x00008000; 00073 00074 //LAYER numbering not seperating AXIAL and STEREO 00075 static const unsigned int LAYER_INDEX = 9; 00076 static const unsigned int LAYER_MASK = 0x00007E00; 00077 00078 00079 static const unsigned int WIRE_INDEX = 0; 00080 static const unsigned int WIRE_MASK = 0x000001FF; 00081 00082 static const unsigned int AXIAL_LAYER_MAX = 18; 00083 static const unsigned int INNER_AXIAL_LAYER_MAX = 12; 00084 static const unsigned int OUTER_AXIAL_LAYER_MAX = 7; 00085 00086 static const unsigned int LAYER_MAX = 43; 00087 00088 00089 static const unsigned int STEREO_LAYER_MAX = 23; 00090 static const unsigned int INNER_STEREO_LAYER_MAX = 8; 00091 static const unsigned int OUTER_STEREO_LAYER_MAX =16; 00092 00093 static const unsigned int AXIAL_WIRE_MAX = 287; 00094 static const unsigned int STEREO_WIRE_MAX = 239; 00095 }; 00096 00097 #endif