/data3/calcul/jacquem/working_dir/Micromegas/micromegasFrameWork/src/geometry/GassiplexBoardStrip.cpp

Go to the documentation of this file.
00001 /* @version $Revision: 1328 $ * @modifiedby $Author: jacquem $ * @lastmodified $Date: 2011-10-03 17:04:17 +0200 (Mon, 03 Oct 2011) $ */
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 //map<ui16,ui16> GassiplexBoardStrip::m1;  // key is strip Number, value is hardId 
00015 //map<ui16,ui16> GassiplexBoardStrip::m2;  // key is strip Number, value is hardId 
00016 map<ui16,ui16> GassiplexBoardStrip::m3;  // key is strip Number, value is hardId 
00017 
00018 
00019 //--------------------------//
00020 void GassiplexBoardStrip::initMap()
00021 {
00022  //map<ui16,ui16> mapping;  // key is strip Number, value is hardId
00023 
00024 /*
00025  m1[0]= 71; m1[1]= 70; m1[2]= 67; m1[3]= 66; m1[4]= 63; m1[5]= 62; m1[6]= 59; m1[7]= 58; m1[8]= 55; m1[9]= 54; 
00026  m1[10]=51; m1[11]=50; m1[12]=47; m1[13]=46; m1[14]=43; m1[15]=42; m1[16]=39; m1[17]=38; m1[18]=35; m1[19]=34; 
00027  m1[20]=31; m1[21]=30; m1[22]=27; m1[23]=26; m1[24]=23; m1[25]=22; m1[26]=19; m1[27]=18; m1[28]=15; m1[29]=14; 
00028  m1[30]=11; m1[31]=10; m1[32]=7 ; m1[33]=6 ; m1[34]=3 ; m1[35]=2 ; m1[36]=1 ; m1[37]=0 ; m1[38]=5 ; m1[39]=4 ;
00029  m1[40]=9 ; m1[41]=8 ; m1[42]=13; m1[43]=12; m1[44]=17; m1[45]=16; m1[46]=21; m1[47]=20; m1[48]=25; m1[49]=24;
00030  m1[50]=29; m1[51]=28; m1[52]=33; m1[53]=32; m1[54]=37; m1[55]=36; m1[56]=41; m1[57]=40; m1[58]=45; m1[59]=44;
00031  m1[60]=49; m1[61]=48; m1[62]=53; m1[63]=52; m1[64]=57; m1[65]=56; m1[66]=61; m1[67]=60; m1[68]=65; m1[69]=64;
00032  m1[70]=69; m1[71]=68; m1[72]=72; m1[73]=73; m1[74]=74; m1[75]=75; m1[76]=76; m1[77]=77; m1[78]=78; m1[79]=79;
00033  m1[80]=80; m1[81]=81; m1[82]=82; m1[83]=83; m1[84]=84; m1[85]=85; m1[86]=86; m1[87]=87; m1[88]=88; m1[89]=89;
00034  m1[90]=90; m1[91]=91; m1[92]=92; m1[93]=93; m1[94]=94; m1[95]=95; m1[96]=96;
00035 
00036 
00037  m2[0] =80 ;m2[1] =79 ;m2[2] =81 ;m2[3] =78 ;m2[4] =82 ;m2[5] =77 ;m2[6] =83 ;m2[7] =76 ;m2[8] =84 ;m2[9] =75 ;
00038  m2[10]=85 ;m2[11]=74 ;m2[12]=86 ;m2[13]=73 ;m2[14]=87 ;m2[15]=72 ;m2[16]=88 ;m2[17]=71 ;m2[18]=89 ;m2[19]=70 ;
00039  m2[20]=90 ;m2[21]=69 ;m2[22]=91 ;m2[23]=68 ;m2[24]=92 ;m2[25]=67 ;m2[26]=93 ;m2[27]=66 ;m2[28]=94 ;m2[29]=65 ;
00040  m2[30]=95 ;m2[31]=64 ;m2[32]=48 ;m2[33]=47 ;m2[34]=49 ;m2[35]=46 ;m2[36]=50 ;m2[37]=45 ;m2[38]=51 ;m2[39]=44 ;
00041  m2[40]=52 ;m2[41]=43 ;m2[42]=53 ;m2[43]=42 ;m2[44]=54 ;m2[45]=41 ;m2[46]=55 ;m2[47]=40 ;m2[48]=56 ;m2[49]=39 ;
00042  m2[50]=57 ;m2[51]=38 ;m2[52]=58 ;m2[53]=37 ;m2[54]=59 ;m2[55]=36 ;m2[56]=60 ;m2[57]=35 ;m2[58]=61 ;m2[59]=34 ;
00043  m2[60]=62 ;m2[61]=33 ;m2[62]=63 ;m2[63]=32 ;m2[64]=16 ;m2[65]=15 ;m2[66]=17 ;m2[67]=14 ;m2[68]=18 ;m2[69]=13 ;
00044  m2[70]=19 ;m2[71]=12 ;m2[72]=20 ;m2[73]=11 ;m2[74]=21 ;m2[75]=10 ;m2[76]=22 ;m2[77]= 9 ;m2[78]=23 ;m2[79]=8 ;
00045  m2[80]=24 ;m2[81]=7  ;m2[82]=25 ;m2[83]=6  ;m2[84]=26 ;m2[85]=5  ;m2[86]=27 ;m2[87]=4  ;m2[88]=28 ;m2[89]=3 ;
00046  m2[90]=29 ;m2[91] =2 ;m2[92]=30 ;m2[93]= 1 ;m2[94]=31 ;m2[95]=0 ;
00047 
00048  m3[0]=80;m3[1]=79;m3[2]=81;m3[3]=78;m3[4]=82;m3[5]=77;m3[6]=83;m3[7]=76;m3[8]=84;m3[9]=75;
00049  m3[10]=85;m3[11]=74;m3[12]=86;m3[13]=73;m3[14]=87;m3[15]=72;m3[16]=88;m3[17]=71;m3[18]=89;m3[19]=70;
00050  m3[20]=90;m3[21]=69;m3[22]=91;m3[23]=68;m3[24]=92;m3[25]=67;m3[26]=93;m3[27]=66;m3[28]=94;m3[29]=65;
00051  m3[30]=95;m3[31]=64;m3[32]=48;m3[33]=47;m3[34]=49;m3[35]=46;m3[36]=50;m3[37]=45;m3[38]=51;m3[39]=44;
00052  m3[40]=52;m3[41]=43;m3[42]=53;m3[43]=42;m3[44]=54;m3[45]=41;m3[46]=55;m3[47]=40;m3[48]=56;m3[49]=39;
00053  m3[50]=57;m3[51]=38;m3[52]=58;m3[53]=37;m3[54]=59;m3[55]=36;m3[56]=60;m3[57]=35;m3[58]=61;m3[59]=34;
00054  m3[60]=62;m3[61]=33;m3[62]=63;m3[63]=32;m3[64]=16;m3[65]=15;m3[66]=17;m3[67]=14;m3[68]=18;m3[69]=13;
00055  m3[70]=19;m3[71]=12;m3[72]=20;m3[73]=11;m3[74]=21;m3[75]=10;m3[76]=22;m3[77]=9;m3[78]=23;m3[79]=8;
00056  m3[80]=24;m3[81]=7;m3[82]=25;m3[83]=6;m3[84]=26;m3[85]=5;m3[86]=27;m3[87]=4;m3[88]=28;m3[89]=3;
00057  m3[90]=29;m3[91]=2;m3[92]=30;m3[93]=1;m3[94]=31;m3[95]=0;
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         { // Strip vertical
00189           stripNum = GassiplexBoardStrip::m3.find(index)->first;
00190           hardId = GassiplexBoardStrip::m3.find(index)->second;
00191           col = stripNum ;
00192         }
00193         else
00194         { // Strip horizontal
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 //      cout << "chamber[" << this->getChamber().getId() << "], hardId["<< hardId << "] strip[" << stripNum << "]" <<  endl;
00202 
00203     }
00204   }
00205   catch (...) {exit(-1);}
00206 
00207 
00208 }

Generated on Mon Jan 7 13:15:22 2013 for MicromegasFramework by  doxygen 1.4.7