00001
00002
00003 #include "geometry/GassiplexBoardBeta24.hh"
00004 #include "geometry/GassiplexChip.hh"
00005 #include "geometry/GassiplexChannel.hh"
00006 #include <iostream>
00007 #include "tools/Log.hh"
00008
00009 #define NBCHANNEL 96
00010
00011 using namespace std;
00012
00013
00014
00015
00016 static int chMap(int boardId, const int chNum) {
00017 static const int g4map[4][96] = {
00018
00019
00020
00021
00022 { 0, 31, 1, 30, 2, 29 ,
00023 3, 28, 4, 27, 5, 26 ,
00024 6, 25, 7, 24, 8, 23 ,
00025 9, 22, 10, 21, 11, 20 ,
00026 12, 19, 13, 18, 14, 17 ,
00027 15, 16, 32, 63, 33, 62 ,
00028 34, 61, 35, 60, 36, 59 ,
00029 37, 58, 38, 57, 39, 56 ,
00030 40, 55, 41, 54, 42, 53 ,
00031 43, 52, 44, 51, 45, 50 ,
00032 46, 49, 47, 48, 64, 95 ,
00033 65, 94, 66, 93, 67, 92 ,
00034 68, 91, 69, 90, 70, 89 ,
00035 71, 88, 72, 87, 73, 86 ,
00036 74, 85, 75, 84, 76, 83 ,
00037 77, 82, 78, 81, 79, 80 },
00038
00039
00040 { 96, 127, 97, 126, 98, 125 ,
00041 99, 124, 100, 123, 101, 122 ,
00042 102, 121, 103, 120, 104, 119 ,
00043 105, 118, 106, 117, 107, 116 ,
00044 108, 115, 109, 114, 110, 113 ,
00045 111, 112, 128, 159, 129, 158 ,
00046 130, 157, 131, 156, 132, 155 ,
00047 133, 154, 134, 153, 135, 152 ,
00048 136, 151, 137, 150, 138, 149 ,
00049 139, 148, 140, 147, 141, 146 ,
00050 142, 145, 143, 144, 160, 191 ,
00051 161, 190, 162, 189, 163, 188 ,
00052 164, 187, 165, 186, 166, 185 ,
00053 167, 184, 168, 183, 169, 182 ,
00054 170, 181, 171, 180, 172, 179 ,
00055 173, 178, 174, 177, 175, 176 },
00056
00057
00058 { 272, 271, 273, 270, 274, 269 ,
00059 275, 268, 276, 267, 277, 266 ,
00060 278, 265, 279, 264, 280, 263 ,
00061 281, 262, 282, 261, 283, 260 ,
00062 284, 259, 285, 258, 286, 257 ,
00063 287, 256, 240, 239, 241, 238 ,
00064 242, 237, 243, 236, 244, 235 ,
00065 245, 234, 246, 233, 247, 232 ,
00066 248, 231, 249, 230, 250, 229 ,
00067 251, 228, 252, 227, 253, 226 ,
00068 254, 225, 255, 224, 208, 207 ,
00069 209, 206, 210, 205, 211, 204 ,
00070 212, 203, 213, 202, 214, 201 ,
00071 215, 200, 216, 199, 217, 198 ,
00072 218, 197, 219, 196, 220, 195 ,
00073 221, 194, 222, 193, 223, 192 },
00074
00075
00076 { 368, 367, 369, 366, 370, 365 ,
00077 371, 364, 372, 363, 373, 362 ,
00078 374, 361, 375, 360, 376, 359 ,
00079 377, 358, 378, 357, 379, 356 ,
00080 380, 355, 381, 354, 382, 353 ,
00081 383, 352, 336, 335, 337, 334 ,
00082 338, 333, 339, 332, 340, 331 ,
00083 341, 330, 342, 329, 343, 328 ,
00084 344, 327, 345, 326, 346, 325 ,
00085 347, 324, 348, 323, 349, 322 ,
00086 350, 321, 351, 320, 304, 303 ,
00087 305, 302, 306, 301, 307, 300 ,
00088 308, 299, 309, 298, 310, 297 ,
00089 311, 296, 312, 295, 313, 294 ,
00090 314, 293, 315, 292, 316, 291 ,
00091 317, 290, 318, 289, 319, 288 }
00092 };
00093
00094 for ( int i = 0 ; i < 96 ; i++)
00095 {
00096 if ( g4map[boardId-1][i] == chNum)
00097 {
00098 return i;
00099 }
00100 }
00101
00102 }
00103
00104
00105
00106
00107
00108
00109
00110
00111
00112
00113
00114
00115
00116
00117
00118
00119 GassiplexBoardBeta24::GassiplexBoardBeta24(const Chamber& aChamber, const i32 aCol, const i32 aRow, const ui32 nbColumns, const ui32 nbRows,const i32 aId)
00120 : Board(aChamber, aCol, aRow, nbColumns, nbRows, aId)
00121 {
00122
00123 init();
00124 };
00125
00126
00127 GassiplexBoardBeta24::~GassiplexBoardBeta24()
00128 {
00129
00130 };
00131
00132
00133 void GassiplexBoardBeta24::init()
00134 {
00135
00136 for (int chipNum = 0; chipNum < NBCHANNEL; chipNum++)
00137 {
00138 int chipMap = chMap(id, chipNum+ 96 * (id-1));
00139
00140 int col, row = 0;
00141 if ( id == 1 || id == 2)
00142 {
00143 row = chipMap % 6;
00144 col = chipMap / 6 ;
00145 }
00146 else if ( id == 3 || id == 4)
00147 {
00148 row = chipMap % 6 ;
00149 col = chipMap / 6 ;
00150 }
00151
00152
00153 i32 chipId = chipNum + (id-1) * NBCHANNEL;
00154
00155
00156 Chip *chip = new GassiplexChip(*this, col, row, 1, 1 , chipId, 0);
00157
00158 chips.insert(make_pair(chipId, chip));
00159 }
00160 }
00161
00162
00163