![]() |
![]() |
#include <Geometry/EcalCommonData/interface/EcalPreshowerNumberingScheme.h>
Public Member Functions | |
EcalPreshowerNumberingScheme () | |
virtual uint32_t | getUnitID (const EcalBaseNumber &baseNumber) const |
~EcalPreshowerNumberingScheme () | |
Private Attributes | |
int | L0ax [23] |
int | L0ay [23] |
int | L0bx [1] |
int | L0by [1] |
int | L0cx [1] |
int | L0cy [1] |
int | L1ax [26] |
int | L1ay [26] |
int | L1bx [1] |
int | L1by [1] |
int | L1cx [1] |
int | L1cy [1] |
int | L1dx [1] |
int | L1dy [1] |
int | L1ex [1] |
int | L1ey [1] |
int | L2ax [3] |
int | L2ay [3] |
int | L2bx [1] |
int | L2by [1] |
int | L3ax [3] |
int | L3ay [3] |
int | L3bx [1] |
int | L3by [1] |
Definition at line 10 of file EcalPreshowerNumberingScheme.h.
EcalPreshowerNumberingScheme::EcalPreshowerNumberingScheme | ( | ) |
Definition at line 12 of file EcalPreshowerNumberingScheme.cc.
References i, L0ax, L0ay, L0bx, L0by, L0cx, L0cy, L1ax, L1ay, L1bx, L1by, L1cx, L1cy, L1dx, L1dy, L1ex, L1ey, L2ax, L2ay, L2bx, L2by, L3ax, L3ay, L3bx, and L3by.
00012 : 00013 EcalNumberingScheme() { 00014 00015 // For SFLX2a, we use copy# 1-3 00016 int vL2ax[3] = { 4, 6, 10}; 00017 int vL2ay[3] = {29, 31, 35}; 00018 // For SFLX2b, we use copy# 1 00019 int vL2bx[1] = {2}; 00020 int vL2by[1] = {25}; 00021 // For SFLX3a, we use copy# 4-6 00022 int vL3ax[3] = {30, 34, 36}; 00023 int vL3ay[3] = {35, 31, 29}; 00024 // For SFLX3b, we use copy# 2 00025 int vL3bx[1] = {38}; 00026 int vL3by[1] = {25}; 00027 // For SFLX1a, we use odd number in copy# 1-52 00028 int vL1ax[26] = { 2, 4, 4, 8, 8, 8, 8, 10, 12, 12, 14, 14, 20, 20, 26, 26, 28, 28, 30, 32, 32, 32, 32, 36, 36, 38}; 00029 int vL1ay[26] = {21, 25, 21, 33, 29, 25, 21, 21, 25, 21, 31, 27, 32, 28, 31, 27, 25, 21, 21, 33, 29, 25, 21, 25, 21, 21}; 00030 // For SFLX1b, we use copy# 2 00031 int vL1bx[1] = {22}; 00032 int vL1by[1] = {27}; 00033 // For SFLX1c, we use copy# 1 00034 int vL1cx[1] = {18}; 00035 int vL1cy[1] = {27}; 00036 // For SFLX1d, we use copy# 2 00037 int vL1dx[1] = {26}; 00038 int vL1dy[1] = {23}; 00039 // For SFLX1e, we use copy# 1 00040 int vL1ex[1] = {14}; 00041 int vL1ey[1] = {23}; 00042 // For SFLX0a, we use odd number if copy# 1-46 00043 int vL0ax[23] = { 6, 6, 10, 10, 12, 12, 14, 16, 16, 18, 18, 20, 22, 22, 24, 24, 26, 28, 28, 30, 30, 34, 34}; 00044 int vL0ay[23] = {26, 21, 30, 25, 34, 29, 35, 36, 31, 36, 31, 36, 36, 31, 36, 31, 35, 34, 29, 30, 25, 26, 21}; 00045 // For SFL0b, we use copy# 2 00046 int vL0bx[1] = {24}; 00047 int vL0by[1] = {26}; 00048 // For SFL0c, we use copy# 1 00049 int vL0cx[1] = {16}; 00050 int vL0cy[1] = {26}; 00051 00052 for (int i=0; i<1; ++i) { 00053 L1bx[i] = vL1bx[i]; 00054 L1by[i] = vL1by[i]; 00055 L1cx[i] = vL1cx[i]; 00056 L1cy[i] = vL1cy[i]; 00057 L1dx[i] = vL1dx[i]; 00058 L1dy[i] = vL1dy[i]; 00059 L1ex[i] = vL1ex[i]; 00060 L1ey[i] = vL1ey[i]; 00061 L0bx[i] = vL0bx[i]; 00062 L0by[i] = vL0by[i]; 00063 L0cx[i] = vL0cx[i]; 00064 L0cy[i] = vL0cy[i]; 00065 L3bx[i] = vL3bx[i]; 00066 L3by[i] = vL3by[i]; 00067 L2bx[i] = vL2bx[i]; 00068 L2by[i] = vL2by[i]; 00069 } 00070 00071 for (int i=0; i<3; ++i) { 00072 L3ax[i] = vL3ax[i]; 00073 L3ay[i] = vL3ay[i]; 00074 L2ax[i] = vL2ax[i]; 00075 L2ay[i] = vL2ay[i]; 00076 } 00077 00078 for (int i=0; i<23; ++i) { 00079 L0ax[i] = vL0ax[i]; 00080 L0ay[i] = vL0ay[i]; 00081 } 00082 00083 for (int i=0; i<26; ++i) { 00084 L1ax[i] = vL1ax[i]; 00085 L1ay[i] = vL1ay[i]; 00086 } 00087 00088 edm::LogInfo("EcalGeom") << "Creating EcalPreshowerNumberingScheme"; 00089 }
EcalPreshowerNumberingScheme::~EcalPreshowerNumberingScheme | ( | ) |
Definition at line 91 of file EcalPreshowerNumberingScheme.cc.
00091 { 00092 edm::LogInfo("EcalGeom") << "Deleting EcalPreshowerNumberingScheme"; 00093 }
uint32_t EcalPreshowerNumberingScheme::getUnitID | ( | const EcalBaseNumber & | baseNumber | ) | const [virtual] |
Implements EcalNumberingScheme.
Definition at line 95 of file EcalPreshowerNumberingScheme.cc.
References EcalBaseNumber::getCopyNumber(), EcalBaseNumber::getLevelName(), EcalBaseNumber::getLevels(), id, int, L0ax, L0ay, L0bx, L0by, L0cx, L0cy, L1ax, L1ay, L1bx, L1by, L1cx, L1cy, L1dx, L1dy, L1ex, L1ey, L2ax, L2ay, L2bx, L2by, L3ax, L3ay, L3bx, L3by, level, LogDebug, strip(), x, and y.
00095 { 00096 00097 int level = baseNumber.getLevels(); 00098 uint32_t intIndex = 0; 00099 if (level > 0) { 00100 00101 // depth index - silicon layer 1-st or 2-nd 00102 int layer = 0; 00103 if(baseNumber.getLevelName(0) == "SFSX") { 00104 layer = 1; 00105 } else if (baseNumber.getLevelName(0) == "SFSY") { 00106 layer = 2; 00107 } else { 00108 edm::LogWarning("EcalGeom") << "EcalPreshowerNumberingScheme: Wrong name" 00109 << " of Presh. Si. Strip : " 00110 << baseNumber.getLevelName(0); 00111 } 00112 00113 // Z index +Z = 1 ; -Z = 2 00114 int zside = baseNumber.getCopyNumber("EREG"); 00115 zside=2*(1-zside)+1; 00116 00117 // box number 00118 int box = baseNumber.getCopyNumber(2); 00119 00120 int x,y,ix,iy,id; 00121 int mapX[10] ={0,0,0,0,0,0,0,0,0,0}; int mapY[10] ={0,0,0,0,0,0,0,0,0,0}; 00122 std::string ladd = baseNumber.getLevelName(3); 00123 int ladd_copy = baseNumber.getCopyNumber(3); 00124 00125 if(ladd=="SFLX0a" || ladd=="SFLY0a" ) { 00126 mapX[5] = mapX[6] = mapX[7] = mapX[8] = mapX[9] = 1; 00127 mapY[0] = 0; mapY[1] = 1; mapY[2] = 2; mapY[3] = 3; mapY[4] = 4; 00128 mapY[5] = 0; mapY[6] = 1; mapY[7] = 2; mapY[8] = 3; mapY[9] = 4; 00129 00130 id = (int) ((float)ladd_copy/2+0.5); 00131 00132 x = L0ax[id-1] + mapX[box-1000-1]; 00133 y = L0ay[id-1] + mapY[box-1000-1]; 00134 00135 if ((ladd_copy%2) == 0) { 00136 if (mapX[box-1000-1]==0) x += 1; 00137 else if (mapX[box-1000-1]==1) x -= 1; 00138 y = 41 - y; 00139 } 00140 } 00141 if(ladd=="SFLX0b" || ladd=="SFLY0b") { 00142 mapX[4] = mapX[5] = mapX[6] = mapX[7] = mapX[8] = 1; 00143 mapY[0] = 1; mapY[1] = 2; mapY[2] = 3; mapY[3] = 4; mapY[4] = 0; 00144 mapY[5] = 1; mapY[6] = 2; mapY[7] = 3; mapY[8] = 4; mapY[9] = 0; 00145 00146 x = L0bx[0] + mapX[box-2000-1]; 00147 y = L0by[0] + mapY[box-2000-1]; 00148 00149 if (ladd_copy == 1) { 00150 x = 41 - x; 00151 y = 41 - y; 00152 } 00153 } 00154 if(ladd=="SFLX0c" || ladd=="SFLY0c") { 00155 mapX[5] = mapX[6] = mapX[7] = mapX[8] = 1; 00156 mapY[0] = 0; mapY[1] = 1; mapY[2] = 2; mapY[3] = 3; mapY[4] = 4; 00157 mapY[5] = 1; mapY[6] = 2; mapY[7] = 3; mapY[8] = 4; mapY[9] = 0; 00158 00159 x = L0cx[0] + mapX[box-3000-1]; 00160 y = L0cy[0] + mapY[box-3000-1]; 00161 00162 if (ladd_copy == 2) { 00163 x = 41 - x; 00164 y = 41 - y; 00165 } 00166 } 00167 if(ladd=="SFLX1a" || ladd=="SFLY1a" ) { 00168 mapX[4] = mapX[5] = mapX[6] = mapX[7] = 1; 00169 mapY[0] = 0; mapY[1] = 1; mapY[2] = 2; mapY[3] = 3; mapY[4] = 0; 00170 mapY[5] = 1; mapY[6] = 2; mapY[7] = 3; mapY[8] = 0; mapY[9] = 0; 00171 00172 id = (int) ((float)ladd_copy/2+0.5); 00173 00174 x = L1ax[id-1] + mapX[box-4000-1]; 00175 y = L1ay[id-1] + mapY[box-4000-1]; 00176 00177 if ((ladd_copy%2) == 0) { 00178 if (mapX[box-4000-1]==0) x += 1; 00179 else if (mapX[box-4000-1]==1) x -= 1; 00180 y = 41 - y; 00181 } 00182 } 00183 if(ladd=="SFLX1b" || ladd=="SFLY1b" ) { 00184 mapX[3] = mapX[4] = mapX[5] = mapX[6] = 1; 00185 mapY[0] = 1; mapY[1] = 2; mapY[2] = 3; mapY[3] = 0; mapY[4] = 1; 00186 mapY[5] = 2; mapY[6] = 3; mapY[7] = 0; mapY[8] = 0; mapY[9] = 0; 00187 00188 x = L1bx[0] + mapX[box-5000-1]; 00189 y = L1by[0] + mapY[box-5000-1]; 00190 00191 if (ladd_copy == 1) { 00192 x = 41 - x; 00193 y = 41 - y; 00194 } 00195 } 00196 if(ladd=="SFLX1c" || ladd=="SFLY1c" ) { 00197 mapX[4] = mapX[5] = mapX[6] = 1; 00198 mapY[0] = 0; mapY[1] = 1; mapY[2] = 2; mapY[3] = 3; mapY[4] = 1; 00199 mapY[5] = 2; mapY[6] = 3; mapY[7] = 0; mapY[8] = 0; mapY[9] = 0; 00200 00201 x = L1cx[0] + mapX[box-6000-1]; 00202 y = L1cy[0] + mapY[box-6000-1]; 00203 00204 if (ladd_copy == 2) { 00205 x = 41 - x; 00206 y = 41 - y; 00207 } 00208 } 00209 if(ladd=="SFLX1d" || ladd=="SFLY1d" ) { 00210 mapX[2] = mapX[3] = mapX[4] = mapX[5] = 1; 00211 mapY[0] = 2; mapY[1] = 3; mapY[2] = 0; mapY[3] = 1; mapY[4] = 2; 00212 mapY[5] = 3; mapY[6] = 0; mapY[7] = 0; mapY[8] = 0; mapY[9] = 0; 00213 00214 x = L1dx[0] + mapX[box-7000-1]; 00215 y = L1dy[0] + mapY[box-7000-1]; 00216 00217 if (ladd_copy == 1) { 00218 x = 41 - x; 00219 y = 41 - y; 00220 } 00221 } 00222 if(ladd=="SFLX1e" || ladd=="SFLY1e") { 00223 mapX[4] = mapX[5] = 1; 00224 mapY[0] = 0; mapY[1] = 1; mapY[2] = 2; mapY[3] = 3; mapY[4] = 2; 00225 mapY[5] = 3; mapY[6] = 0; mapY[7] = 0; mapY[8] = 0; mapY[9] = 0; 00226 00227 x = L1ex[0] + mapX[box-8000-1]; 00228 y = L1ey[0] + mapY[box-8000-1]; 00229 00230 if (ladd_copy == 2) { 00231 x = 41 - x; 00232 y = 41 - y; 00233 } 00234 } 00235 if(ladd=="SFLX3a" || ladd=="SFLY3a" ) { 00236 mapX[4] = mapX[5] = mapX[6] = 1; 00237 mapY[0] = 0; mapY[1] = 1; mapY[2] = 2; mapY[3] = 3; mapY[4] = 0; 00238 mapY[5] = 1; mapY[6] = 2; mapY[7] = 0; mapY[8] = 0; mapY[9] = 0; 00239 00240 id = (ladd_copy>3)? ladd_copy-3 : 4-ladd_copy; 00241 00242 x = L3ax[id-1] + mapX[box-9000-1]; 00243 y = L3ay[id-1] + mapY[box-9000-1]; 00244 00245 if (ladd_copy<4) { 00246 x = 41 - x; 00247 y = 41 - y; 00248 } 00249 } 00250 if(ladd=="SFLX3b" || ladd=="SFLY3b") { 00251 mapX[4] = mapX[5] = 1; 00252 mapY[0] = 0; mapY[1] = 1; mapY[2] = 2; mapY[3] = 3; mapY[4] = 0; 00253 mapY[5] = 1; mapY[6] = 0; mapY[7] = 0; mapY[8] = 0; mapY[9] = 0; 00254 00255 x = L3bx[0] + mapX[box-11000-1]; 00256 y = L3by[0] + mapY[box-11000-1]; 00257 00258 if (ladd_copy == 1) { 00259 x = 41 - x; 00260 y = 41 - y; 00261 } 00262 } 00263 if(ladd=="SFLX2a" || ladd=="SFLY2a") { 00264 mapX[3] = mapX[4] = mapX[5] = mapX[6] = 1; 00265 mapY[0] = 0; mapY[1] = 1; mapY[2] = 2; mapY[3] = 0; mapY[4] = 1; 00266 mapY[5] = 2; mapY[6] = 3; mapY[7] = 0; mapY[8] = 0; mapY[9] = 0; 00267 00268 id = (ladd_copy>3)? 7-ladd_copy : ladd_copy; 00269 00270 x = L2ax[id-1] + mapX[box-10000-1]; 00271 y = L2ay[id-1] + mapY[box-10000-1]; 00272 00273 if (ladd_copy>3) { 00274 x = 41 - x; 00275 y = 41 - y; 00276 } 00277 } 00278 if(ladd=="SFLX2b" || ladd=="SFLY2b") { 00279 mapX[2] = mapX[3] = mapX[4] = mapX[5] = 1; 00280 mapY[0] = 0; mapY[1] = 1; mapY[2] = 0; mapY[3] = 1; mapY[4] = 2; 00281 mapY[5] = 3; mapY[6] = 0; mapY[7] = 0; mapY[8] = 0; mapY[9] = 0; 00282 00283 x = L2bx[0] + mapX[box-12000-1]; 00284 y = L2by[0] + mapY[box-12000-1]; 00285 00286 if (ladd_copy == 2) { 00287 x = 41 - x; 00288 y = 41 - y; 00289 } 00290 } 00291 00292 if (zside<0 && layer == 1) x = 41 - x; 00293 00294 ix = x; 00295 iy = y; 00296 00297 if (layer == 2) { 00298 x = (zside>0) ? iy : 41 - iy; 00299 y = 41 - ix; 00300 } 00301 00302 // strip number inside wafer 00303 int strip = baseNumber.getCopyNumber(0); 00304 00305 if (layer == 1) { 00306 if (zside>0 && y<=20) 00307 strip = 33 - strip; 00308 else if (zside<0 && y>20) 00309 strip = 33 - strip; 00310 } else if (layer == 2) { 00311 if (zside>0 && x<=20) 00312 strip = 33 - strip; 00313 else if (zside<0 && x>20) 00314 strip = 33 -strip; 00315 } 00316 00317 intIndex = ESDetId(strip, x, y, layer, zside).rawId(); 00318 00319 LogDebug("EcalGeom") << "EcalPreshowerNumberingScheme : zside "<<zside<<" Ladd "<< ladd << " ladd_copy: "<<ladd_copy<<" box "<<box<<" x "<<x<<" y "<<y<<" layer "<<layer<<" strip " << strip<<" UnitID 0x" << std::hex << intIndex << std::dec; 00320 00321 for (int ich = 0; ich < level; ich++) { 00322 LogDebug("EcalGeom") << "Name = " << baseNumber.getLevelName(ich) 00323 << " copy = " << baseNumber.getCopyNumber(ich); 00324 } 00325 } 00326 00327 return intIndex; 00328 }
int EcalPreshowerNumberingScheme::L0ax[23] [private] |
Definition at line 38 of file EcalPreshowerNumberingScheme.h.
Referenced by EcalPreshowerNumberingScheme(), and getUnitID().
int EcalPreshowerNumberingScheme::L0ay[23] [private] |
Definition at line 39 of file EcalPreshowerNumberingScheme.h.
Referenced by EcalPreshowerNumberingScheme(), and getUnitID().
int EcalPreshowerNumberingScheme::L0bx[1] [private] |
Definition at line 40 of file EcalPreshowerNumberingScheme.h.
Referenced by EcalPreshowerNumberingScheme(), and getUnitID().
int EcalPreshowerNumberingScheme::L0by[1] [private] |
Definition at line 41 of file EcalPreshowerNumberingScheme.h.
Referenced by EcalPreshowerNumberingScheme(), and getUnitID().
int EcalPreshowerNumberingScheme::L0cx[1] [private] |
Definition at line 42 of file EcalPreshowerNumberingScheme.h.
Referenced by EcalPreshowerNumberingScheme(), and getUnitID().
int EcalPreshowerNumberingScheme::L0cy[1] [private] |
Definition at line 43 of file EcalPreshowerNumberingScheme.h.
Referenced by EcalPreshowerNumberingScheme(), and getUnitID().
int EcalPreshowerNumberingScheme::L1ax[26] [private] |
Definition at line 28 of file EcalPreshowerNumberingScheme.h.
Referenced by EcalPreshowerNumberingScheme(), and getUnitID().
int EcalPreshowerNumberingScheme::L1ay[26] [private] |
Definition at line 29 of file EcalPreshowerNumberingScheme.h.
Referenced by EcalPreshowerNumberingScheme(), and getUnitID().
int EcalPreshowerNumberingScheme::L1bx[1] [private] |
Definition at line 30 of file EcalPreshowerNumberingScheme.h.
Referenced by EcalPreshowerNumberingScheme(), and getUnitID().
int EcalPreshowerNumberingScheme::L1by[1] [private] |
Definition at line 31 of file EcalPreshowerNumberingScheme.h.
Referenced by EcalPreshowerNumberingScheme(), and getUnitID().
int EcalPreshowerNumberingScheme::L1cx[1] [private] |
Definition at line 32 of file EcalPreshowerNumberingScheme.h.
Referenced by EcalPreshowerNumberingScheme(), and getUnitID().
int EcalPreshowerNumberingScheme::L1cy[1] [private] |
Definition at line 33 of file EcalPreshowerNumberingScheme.h.
Referenced by EcalPreshowerNumberingScheme(), and getUnitID().
int EcalPreshowerNumberingScheme::L1dx[1] [private] |
Definition at line 34 of file EcalPreshowerNumberingScheme.h.
Referenced by EcalPreshowerNumberingScheme(), and getUnitID().
int EcalPreshowerNumberingScheme::L1dy[1] [private] |
Definition at line 35 of file EcalPreshowerNumberingScheme.h.
Referenced by EcalPreshowerNumberingScheme(), and getUnitID().
int EcalPreshowerNumberingScheme::L1ex[1] [private] |
Definition at line 36 of file EcalPreshowerNumberingScheme.h.
Referenced by EcalPreshowerNumberingScheme(), and getUnitID().
int EcalPreshowerNumberingScheme::L1ey[1] [private] |
Definition at line 37 of file EcalPreshowerNumberingScheme.h.
Referenced by EcalPreshowerNumberingScheme(), and getUnitID().
int EcalPreshowerNumberingScheme::L2ax[3] [private] |
Definition at line 24 of file EcalPreshowerNumberingScheme.h.
Referenced by EcalPreshowerNumberingScheme(), and getUnitID().
int EcalPreshowerNumberingScheme::L2ay[3] [private] |
Definition at line 25 of file EcalPreshowerNumberingScheme.h.
Referenced by EcalPreshowerNumberingScheme(), and getUnitID().
int EcalPreshowerNumberingScheme::L2bx[1] [private] |
Definition at line 26 of file EcalPreshowerNumberingScheme.h.
Referenced by EcalPreshowerNumberingScheme(), and getUnitID().
int EcalPreshowerNumberingScheme::L2by[1] [private] |
Definition at line 27 of file EcalPreshowerNumberingScheme.h.
Referenced by EcalPreshowerNumberingScheme(), and getUnitID().
int EcalPreshowerNumberingScheme::L3ax[3] [private] |
Definition at line 20 of file EcalPreshowerNumberingScheme.h.
Referenced by EcalPreshowerNumberingScheme(), and getUnitID().
int EcalPreshowerNumberingScheme::L3ay[3] [private] |
Definition at line 21 of file EcalPreshowerNumberingScheme.h.
Referenced by EcalPreshowerNumberingScheme(), and getUnitID().
int EcalPreshowerNumberingScheme::L3bx[1] [private] |
Definition at line 22 of file EcalPreshowerNumberingScheme.h.
Referenced by EcalPreshowerNumberingScheme(), and getUnitID().
int EcalPreshowerNumberingScheme::L3by[1] [private] |
Definition at line 23 of file EcalPreshowerNumberingScheme.h.
Referenced by EcalPreshowerNumberingScheme(), and getUnitID().