File indexing completed on 2023-03-17 11:24:32
0001
0002
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012
0013
0014 #include <iostream>
0015
0016
0017 #include "SimG4CMS/Calo/interface/HcalTestNumberingScheme.h"
0018 #include "DataFormats/HcalDetId/interface/HcalSubdetector.h"
0019 #include "FWCore/MessageLogger/interface/MessageLogger.h"
0020 #include "SimG4CMS/HcalTestBeam/interface/HcalTBNumberingScheme.h"
0021
0022
0023
0024
0025
0026
0027 uint32_t HcalTBNumberingScheme::getUnitID(const uint32_t idHit, const int mode) {
0028 int subdet, zside, group, ieta, iphi, lay;
0029 HcalTestNumbering::unpackHcalIndex(idHit, subdet, zside, group, ieta, iphi, lay);
0030 #ifdef EDM_ML_DEBUG
0031 edm::LogVerbatim("HcalTBSim") << "HcalTBNumberingScheme: i/p ID 0x" << std::hex << idHit << std::dec << " det "
0032 << zside << " group " << group << " layer " << lay << " eta " << ieta << " phi "
0033 << iphi;
0034 #endif
0035 uint32_t idunit;
0036 if (subdet == static_cast<int>(HcalBarrel)) {
0037 if (lay <= 17)
0038 group = 1;
0039 else
0040 group = 2;
0041 }
0042 if (mode > 0) {
0043 if (subdet == static_cast<int>(HcalBarrel) && iphi > 4) {
0044 if (lay <= 17) {
0045
0046 if (ieta > 4 && ieta < 10) {
0047 idunit = HcalTestNumbering::packHcalIndex(0, 0, 1, 0, iphi, lay);
0048 } else {
0049 idunit = HcalTestNumbering::packHcalIndex(0, 0, 1, ieta, iphi, group);
0050 }
0051 } else {
0052
0053 idunit = HcalTestNumbering::packHcalIndex(0, 0, 1, ieta, iphi, 18);
0054 }
0055 } else {
0056
0057 idunit = HcalTestNumbering::packHcalIndex(0, 0, 1, ieta, iphi, group);
0058 }
0059 } else {
0060 idunit = HcalTestNumbering::packHcalIndex(0, 0, 1, ieta, iphi, group);
0061 }
0062
0063 HcalTestNumbering::unpackHcalIndex(idunit, subdet, zside, group, ieta, iphi, lay);
0064 #ifdef EDM_ML_DEBUG
0065 edm::LogVerbatim("HcalTBSim") << "HcalTBNumberingScheme: idHit 0x" << std::hex << idHit << " idunit 0x" << idunit
0066 << std::dec << "\n"
0067 << "HcalTBNumberingScheme: o/p ID 0x" << std::hex << idunit << std::dec << " det "
0068 << zside << " group " << group << " layer " << lay << " eta " << ieta << " phi "
0069 << iphi;
0070 #endif
0071 return idunit;
0072 }
0073
0074 std::vector<uint32_t> HcalTBNumberingScheme::getUnitIDs(const int type, const int mode) {
0075 std::vector<uint32_t> tmp;
0076 int iphi, ieta, lay;
0077 uint32_t id;
0078
0079 if (type != 1) {
0080
0081 if (mode > 0) {
0082
0083 for (ieta = 1; ieta < 17; ieta++) {
0084 for (iphi = 1; iphi < 9; iphi++) {
0085 id = HcalTestNumbering::packHcalIndex(0, 0, 1, ieta, iphi, 1);
0086 tmp.push_back(id);
0087 }
0088 }
0089
0090 for (ieta = 1; ieta < 16; ieta++) {
0091 for (iphi = 2; iphi < 5; iphi++) {
0092 id = HcalTestNumbering::packHcalIndex(0, 0, 1, ieta, iphi, 2);
0093 tmp.push_back(id);
0094 }
0095 }
0096
0097 for (lay = 1; lay < 18; lay++) {
0098 for (iphi = 5; iphi < 9; iphi++) {
0099 id = HcalTestNumbering::packHcalIndex(0, 0, 1, 0, iphi, lay);
0100 tmp.push_back(id);
0101 }
0102 }
0103
0104 lay = 18;
0105 for (ieta = 1; ieta < 16; ieta++) {
0106 for (iphi = 5; iphi < 8; iphi++) {
0107 id = HcalTestNumbering::packHcalIndex(0, 0, 1, ieta, iphi, lay);
0108 tmp.push_back(id);
0109 }
0110 }
0111 } else {
0112
0113 for (ieta = 1; ieta < 17; ieta++) {
0114 for (iphi = 1; iphi < 9; iphi++) {
0115 id = HcalTestNumbering::packHcalIndex(0, 0, 1, ieta, iphi, 1);
0116 tmp.push_back(id);
0117 }
0118 }
0119
0120 for (ieta = 1; ieta < 16; ieta++) {
0121 for (iphi = 2; iphi < 8; iphi++) {
0122 id = HcalTestNumbering::packHcalIndex(0, 0, 1, ieta, iphi, 2);
0123 tmp.push_back(id);
0124 }
0125 }
0126 }
0127 }
0128
0129 if (type > 0) {
0130
0131 for (ieta = 15; ieta < 17; ieta++) {
0132 for (iphi = 3; iphi < 7; iphi++) {
0133 id = HcalTestNumbering::packHcalIndex(0, 0, 1, ieta, iphi, 3);
0134 tmp.push_back(id);
0135 }
0136 }
0137 for (iphi = 3; iphi < 7; iphi++) {
0138 id = HcalTestNumbering::packHcalIndex(0, 0, 1, 17, iphi, 1);
0139 tmp.push_back(id);
0140 }
0141 for (ieta = 18; ieta < 21; ieta++) {
0142 for (iphi = 3; iphi < 7; iphi++) {
0143 for (int idep = 1; idep < 3; idep++) {
0144 id = HcalTestNumbering::packHcalIndex(0, 0, 1, ieta, iphi, idep);
0145 tmp.push_back(id);
0146 }
0147 }
0148 }
0149 for (ieta = 21; ieta < 26; ieta++) {
0150 for (iphi = 2; iphi < 4; iphi++) {
0151 for (int idep = 1; idep < 3; idep++) {
0152 id = HcalTestNumbering::packHcalIndex(0, 0, 1, ieta, iphi, idep);
0153 tmp.push_back(id);
0154 }
0155 }
0156 }
0157 }
0158
0159 return tmp;
0160 }