File indexing completed on 2024-04-06 12:14:35
0001 #include "Geometry/EcalCommonData/interface/ESTBNumberingScheme.h"
0002 #include "DataFormats/EcalDetId/interface/ESDetId.h"
0003
0004 #include <iostream>
0005
0006 ESTBNumberingScheme::ESTBNumberingScheme() : EcalNumberingScheme() {
0007 int ix[30] = {3, 2, 4, 3, 2, 1, 4, 3, 2, 1, 4, 3, 2, 1, 1, 1, 1, 1, 2, 2, 2, 2, 3, 3, 3, 3, 4, 4, 4, 4};
0008 int iy[30] = {4, 4, 3, 3, 3, 3, 2, 2, 2, 2, 1, 1, 1, 1, 1, 2, 3, 4, 1, 2, 3, 4, 1, 2, 3, 4, 1, 2, 3, 4};
0009
0010 int i;
0011 for (i = 0; i < 30; ++i) {
0012 iX[i] = ix[i];
0013 iY[i] = iy[i];
0014 }
0015
0016 edm::LogInfo("EcalGeom") << "Creating ESTBNumberingScheme";
0017 }
0018
0019 ESTBNumberingScheme::~ESTBNumberingScheme() { edm::LogInfo("EcalGeom") << "Deleting ESTBNumberingScheme"; }
0020
0021 uint32_t ESTBNumberingScheme::getUnitID(const EcalBaseNumber& baseNumber) const {
0022 int level = baseNumber.getLevels();
0023 uint32_t intIndex = 0;
0024 if (level > 0) {
0025
0026 int layer = 0;
0027 if (baseNumber.getLevelName(0) == "SFSX") {
0028 layer = 1;
0029 } else if (baseNumber.getLevelName(0) == "SFSY") {
0030 layer = 2;
0031 } else {
0032 edm::LogWarning("EcalGeom") << "ESTBNumberingScheme: Wrong name"
0033 << " of Presh. Si. Strip : " << baseNumber.getLevelName(0);
0034 }
0035
0036
0037 int zside = baseNumber.getCopyNumber("EREG");
0038 zside = 2 * (1 - zside) + 1;
0039
0040 int wafer = baseNumber.getCopyNumber(3);
0041 int x = 0, y = 0;
0042
0043 int strip = baseNumber.getCopyNumber(0);
0044
0045 x = iX[wafer];
0046 y = iY[wafer];
0047
0048 intIndex = ESDetId(strip, x, y, layer, zside).rawId();
0049
0050 LogDebug("EcalGeom") << "ESTBNumberingScheme : zside " << zside << " layer " << layer << " wafer " << wafer << " X "
0051 << x << " Y " << y << " strip " << strip << " UnitID 0x" << std::hex << intIndex << std::dec;
0052 for (int ich = 0; ich < level; ich++) {
0053 LogDebug("EcalGeom") << "Name = " << baseNumber.getLevelName(ich) << " copy = " << baseNumber.getCopyNumber(ich);
0054 }
0055 }
0056
0057 return intIndex;
0058 }