64 boxId =
GetBoxId( part, segment, layer );
66 if ( part == EEID ) { strId = boxId * E_STR_NUM + strSubId; }
67 else if ( part == BRID )
69 strId = STR_PER_PART[0];
71 if ( segment > B_TOP ) strId += segment * B_STR_PER_SEG[0] + E_STR_NUM;
72 else strId += segment * B_STR_PER_SEG[0];
74 strId += ( ( 1 + layer ) / 2 ) * B_ZSTR_NUM;
75 strId += ( layer / 2 ) * ( ( segment == B_TOP ) ? B_TOPSTR_NUM : B_PHISTR_NUM );
81 strId = STR_PER_PART[0] + STR_PER_PART[1];
82 strId += ( boxId - BOX_SUM[1] ) * E_STR_NUM + strSubId;
91 if ( ( boxId < 0 ) || ( boxId > BOX_MAX - 1 ) )
96 cout <<
"box id out range:\t" << boxId <<
"!" << endl;
101 if ( boxId < BOX_SUM[0] ) { *part = 0; }
102 else if ( boxId < BOX_SUM[1] )
116 *segment = boxId / B_LAY_NUM;
117 *layer = boxId % B_LAY_NUM;
121 *segment = boxId / E_LAY_NUM;
122 *layer = boxId % E_LAY_NUM;
131 if ( ( stripId < 0 ) || ( stripId > STRIP_MAX - 1 ) )
137 cout <<
"strip id out range:\t" << stripId <<
"!" << endl;
142 if ( stripId < STR_SUM[0] ) { *part = 0; }
143 else if ( stripId < STR_SUM[1] )
146 stripId -= STR_SUM[0];
151 stripId -= STR_SUM[1];
158 if ( stripId >= 2 * B_STR_PER_SEG[0] &&
159 stripId < 2 * B_STR_PER_SEG[0] + B_STR_PER_SEG[1] )
164 stripId -= 2 * B_STR_PER_SEG[0];
165 temp = stripId % ( B_ZSTR_NUM + B_TOPSTR_NUM );
168 if ( temp < B_ZSTR_NUM ) *layer = 2 * ( stripId / ( B_ZSTR_NUM + B_TOPSTR_NUM ) );
169 else *layer = 2 * ( stripId / ( B_ZSTR_NUM + B_TOPSTR_NUM ) ) + 1;
172 if ( temp < B_ZSTR_NUM ) *strSubId = temp;
173 else *strSubId = temp - B_ZSTR_NUM;
178 if ( stripId >= 2 * B_STR_PER_SEG[0] + B_STR_PER_SEG[1] ) stripId -= E_STR_NUM;
181 *segment = stripId / B_STR_PER_SEG[0];
183 stripId %= B_STR_PER_SEG[0];
184 temp = stripId % ( B_ZSTR_NUM + B_PHISTR_NUM );
187 if ( temp < B_ZSTR_NUM ) *layer = 2 * ( stripId / ( B_ZSTR_NUM + B_PHISTR_NUM ) );
188 else *layer = 2 * ( stripId / ( B_ZSTR_NUM + B_PHISTR_NUM ) ) + 1;
191 if ( temp < B_ZSTR_NUM ) *strSubId = temp;
192 else *strSubId = temp - B_ZSTR_NUM;
197 *strSubId = stripId % E_STR_NUM;
198 *layer = ( stripId / E_STR_NUM ) % E_LAY_NUM;
199 *segment = ( stripId / E_STR_NUM ) / E_LAY_NUM;