289 const int numberOfStraws[74] = { 0, 15, 31, 47, 63, 79, 96, 113, 130, 147, 164, 182, 200, 218, 236, 254, 273, 292, 311, 329,
290 348, 368, 388, 408, 428, 448, 469, 490, 511, 532, 553, 575, 597, 619, 641, 663, 686, 709, 732, 755, 778, 802, 826, 849,
291 872, 896, 920, 944, 968, 993, 1018, 1043, 1068, 1093, 1119, 1145, 1171, 1197, 1223, 1250, 1277, 1304, 1331, 1358, 1386, 1414, 1442, 1470, 1498, 1527, 1556, 1585, 1614, 1642 };
293 if (LayerNumber==1) strawlayerNumber+= 19;
294 else if (LayerNumber==2) strawlayerNumber+= 43;
296 return ( numberOfStraws[strawlayerNumber+1] - strawNumber -1 );
313 assert( std::abs(
side)==2 );
315 static int count = 0;
316 static int *map_A0 =
new int[12];
317 static int *map_A8 =
new int[12];
318 static int *map_C0 =
new int[12];
319 static int *map_C8 =
new int[12];
322 int chipIndexToChipHardware_A0[] = {2, 1, 3, 0, 6, 5, 7, 4, 10, 9, 11, 8};
323 int chipIndexToChipHardware_A8[] = {8, 11, 9, 10, 4, 7, 5, 6, 0, 3, 1, 2};
324 int chipIndexToChipHardware_C0[] = {1, 2, 0, 3, 5, 6, 4, 7, 9, 10, 8, 11};
325 int chipIndexToChipHardware_C8[] = {11, 8, 10, 9, 7, 4, 6, 5, 3, 0, 2, 1};
326 int *map_list[] = {map_A0, map_A8, map_C0, map_C8};
327 int *chip_list[] = {chipIndexToChipHardware_A0, chipIndexToChipHardware_A8, chipIndexToChipHardware_C0, chipIndexToChipHardware_C8};
328 for (
int i=0; i<4; i++)
for (
int j=0; j<12; j++) map_list[i][j] = chip_list[i][j];
331 int chip = (strawNumber - strawNumber%4) / 2;
332 if (strawLayerNumber%8 >= 4) chip++;
334 int nominal_reversed = 1 - ( (
phi -
phi%8)/8 ) %2 ;
336 if (
side==2)
map = nominal_reversed ? map_A8 : map_A0;
337 if (
side==-2)
map = nominal_reversed ? map_C8 : map_C0;
339 throw std::runtime_error(
"map pointer is null in TRT_StrawMap.h");