00001
00002
00003 #include "geometry/GassiplexBoardStrip.hh"
00004 #include "geometry/GassiplexStripChip.hh"
00005 #include "geometry/GassiplexStripChamber1.hh"
00006 #include "geometry/GassiplexChannel.hh"
00007 #include <iostream>
00008 #include <map>
00009 #include "tools/Log.hh"
00010
00011 #define NBCHANNEL 96
00012
00013 using namespace std;
00014
00015
00016 map<ui16,ui16> GassiplexBoardStrip::m3;
00017
00018
00019
00020 void GassiplexBoardStrip::initMap()
00021 {
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033
00034
00035
00036
00037
00038
00039
00040
00041
00042
00043
00044
00045
00046
00047
00048
00049
00050
00051
00052
00053
00054
00055
00056
00057
00058
00059
00060 GassiplexBoardStrip::m3[0]=80;
00061 GassiplexBoardStrip::m3[1]=79;
00062 GassiplexBoardStrip::m3[2]=81;
00063 GassiplexBoardStrip::m3[3]=78;
00064 GassiplexBoardStrip::m3[4]=82;
00065 GassiplexBoardStrip::m3[5]=77;
00066 GassiplexBoardStrip::m3[6]=83;
00067 GassiplexBoardStrip::m3[7]=76;
00068 GassiplexBoardStrip::m3[8]=84;
00069 GassiplexBoardStrip::m3[9]=75;
00070 GassiplexBoardStrip::m3[10]=85;
00071 GassiplexBoardStrip::m3[11]=74;
00072 GassiplexBoardStrip::m3[12]=86;
00073 GassiplexBoardStrip::m3[13]=73;
00074 GassiplexBoardStrip::m3[14]=87;
00075 GassiplexBoardStrip::m3[15]=72;
00076 GassiplexBoardStrip::m3[16]=88;
00077 GassiplexBoardStrip::m3[17]=71;
00078 GassiplexBoardStrip::m3[18]=89;
00079 GassiplexBoardStrip::m3[19]=70;
00080 GassiplexBoardStrip::m3[20]=90;
00081 GassiplexBoardStrip::m3[21]=69;
00082 GassiplexBoardStrip::m3[22]=91;
00083 GassiplexBoardStrip::m3[23]=68;
00084 GassiplexBoardStrip::m3[24]=92;
00085 GassiplexBoardStrip::m3[25]=67;
00086 GassiplexBoardStrip::m3[26]=93;
00087 GassiplexBoardStrip::m3[27]=66;
00088 GassiplexBoardStrip::m3[28]=94;
00089 GassiplexBoardStrip::m3[29]=65;
00090 GassiplexBoardStrip::m3[30]=95;
00091 GassiplexBoardStrip::m3[31]=64;
00092 GassiplexBoardStrip::m3[32]=48;
00093 GassiplexBoardStrip::m3[33]=47;
00094 GassiplexBoardStrip::m3[34]=49;
00095 GassiplexBoardStrip::m3[35]=46;
00096 GassiplexBoardStrip::m3[36]=50;
00097 GassiplexBoardStrip::m3[37]=45;
00098 GassiplexBoardStrip::m3[38]=51;
00099 GassiplexBoardStrip::m3[39]=44;
00100 GassiplexBoardStrip::m3[40]=52;
00101 GassiplexBoardStrip::m3[41]=43;
00102 GassiplexBoardStrip::m3[42]=53;
00103 GassiplexBoardStrip::m3[43]=42;
00104 GassiplexBoardStrip::m3[44]=54;
00105 GassiplexBoardStrip::m3[45]=41;
00106 GassiplexBoardStrip::m3[46]=55;
00107 GassiplexBoardStrip::m3[47]=40;
00108 GassiplexBoardStrip::m3[48]=56;
00109 GassiplexBoardStrip::m3[49]=39;
00110 GassiplexBoardStrip::m3[50]=57;
00111 GassiplexBoardStrip::m3[51]=38;
00112 GassiplexBoardStrip::m3[52]=58;
00113 GassiplexBoardStrip::m3[53]=37;
00114 GassiplexBoardStrip::m3[54]=59;
00115 GassiplexBoardStrip::m3[55]=36;
00116 GassiplexBoardStrip::m3[56]=60;
00117 GassiplexBoardStrip::m3[57]=35;
00118 GassiplexBoardStrip::m3[58]=61;
00119 GassiplexBoardStrip::m3[59]=34;
00120 GassiplexBoardStrip::m3[60]=62;
00121 GassiplexBoardStrip::m3[61]=33;
00122 GassiplexBoardStrip::m3[62]=63;
00123 GassiplexBoardStrip::m3[63]=32;
00124 GassiplexBoardStrip::m3[64]=16;
00125 GassiplexBoardStrip::m3[65]=15;
00126 GassiplexBoardStrip::m3[66]=17;
00127 GassiplexBoardStrip::m3[67]=14;
00128 GassiplexBoardStrip::m3[68]=18;
00129 GassiplexBoardStrip::m3[69]=13;
00130 GassiplexBoardStrip::m3[70]=19;
00131 GassiplexBoardStrip::m3[71]=12;
00132 GassiplexBoardStrip::m3[72]=20;
00133 GassiplexBoardStrip::m3[73]=11;
00134 GassiplexBoardStrip::m3[74]=21;
00135 GassiplexBoardStrip::m3[75]=10;
00136 GassiplexBoardStrip::m3[76]=22;
00137 GassiplexBoardStrip::m3[77]=9;
00138 GassiplexBoardStrip::m3[78]=23;
00139 GassiplexBoardStrip::m3[79]=8;
00140 GassiplexBoardStrip::m3[80]=24;
00141 GassiplexBoardStrip::m3[81]=7;
00142 GassiplexBoardStrip::m3[82]=25;
00143 GassiplexBoardStrip::m3[83]=6;
00144 GassiplexBoardStrip::m3[84]=26;
00145 GassiplexBoardStrip::m3[85]=5;
00146 GassiplexBoardStrip::m3[86]=27;
00147 GassiplexBoardStrip::m3[87]=4;
00148 GassiplexBoardStrip::m3[88]=28;
00149 GassiplexBoardStrip::m3[89]=3;
00150 GassiplexBoardStrip::m3[90]=29;
00151 GassiplexBoardStrip::m3[91]=2;
00152 GassiplexBoardStrip::m3[92]=30;
00153 GassiplexBoardStrip::m3[93]=1;
00154 GassiplexBoardStrip::m3[94]=31;
00155 GassiplexBoardStrip::m3[95]=0;
00156 }
00157
00158 GassiplexBoardStrip::GassiplexBoardStrip(const Chamber& aChamber, const i32 aCol, const i32 aRow, const ui32 nbColumns, const ui32 nbRows,const i32 aId)
00159 : Board(aChamber, aCol, aRow, nbColumns, nbRows, aId)
00160 {
00161 FILE_LOG(logDEBUG) << "GassiplexBoardStrip constructor" << endl;
00162 GassiplexBoardStrip::initMap();
00163 init();
00164 };
00165
00166
00167 GassiplexBoardStrip::~GassiplexBoardStrip()
00168 {
00169 FILE_LOG(logDEBUG) << "GassiplexBoardStrip destructor" << endl;
00170 };
00171
00172
00173 void GassiplexBoardStrip::init()
00174 {
00175 int nbchannel = NBCHANNEL;
00176
00177 try
00178 {
00179 const GassiplexStripChamber1 &chamber = dynamic_cast< const GassiplexStripChamber1 &> (this->chamber);
00180 for (int index = 0; index < nbchannel; index++)
00181 {
00182
00183 unsigned int col = 0; unsigned int row = 0;
00184 unsigned int hardId = 0; unsigned stripNum = 0;
00185
00186 Chip *chip = NULL;
00187 if ( chamber.getHorizontal() == false )
00188 {
00189 stripNum = GassiplexBoardStrip::m3.find(index)->first;
00190 hardId = GassiplexBoardStrip::m3.find(index)->second;
00191 col = stripNum ;
00192 }
00193 else
00194 {
00195 stripNum = GassiplexBoardStrip::m3.find(index)->first;
00196 hardId = GassiplexBoardStrip::m3.find(index)->second;
00197 row = stripNum ;
00198 }
00199 chip = new GassiplexStripChip(*this, col, row, 1, 1 , hardId,0);
00200 chips.insert(make_pair(hardId, chip));
00201
00202
00203 }
00204 }
00205 catch (...) {exit(-1);}
00206
00207
00208 }