30 : m_name(computeNameWithNoNamespace(fv.
name())),
33 m_trans(fv.translation()),
37 m_diamondBoxParams(computeDiamondDimensions(m_isABox, m_isDD4hep, m_params)),
38 m_sensorType(computeSensorType(fv.logicalPart().
name().fullname())),
39 m_geographicalID(computeDetID(m_name, fv.copyNumbers(), fv.copyno())),
40 m_z(fv.translation().
z())
47 : m_name(computeNameWithNoNamespace(fv.
name())),
52 m_params(computeParameters(fv)),
54 m_diamondBoxParams(computeDiamondDimensions(m_isABox, m_isDD4hep, m_params)),
55 m_sensorType(computeSensorType(fv.
name())),
56 m_geographicalID(computeDetIDFromDD4hep(m_name, fv.copyNos(), fv.copyNum())),
88 edm::LogVerbatim(
"DetGeomDesc::print") <<
"............................." << std::endl;
125 const auto& semiColonPos = nameFromView.find(
":");
126 const std::string name{(semiColonPos != std::string::npos ? nameFromView.substr(semiColonPos + 1) : nameFromView)};
134 auto myShape = fv.
solid();
135 const std::vector<double>&
parameters = myShape.dimensions();
147 const std::vector<double>&
params)
const {
160 return boxShapeParameters;
173 if (copyNos.size() < 3)
175 <<
"size of copyNumbers for strip sensor is " << copyNos.size() <<
". It must be >= 3.";
178 const unsigned int decRPId = copyNos[copyNos.size() - 3];
179 const unsigned int arm = decRPId / 100;
180 const unsigned int station = (decRPId % 100) / 10;
181 const unsigned int rp = decRPId % 10;
182 const unsigned int detector = copyNos[copyNos.size() - 1];
188 unsigned int decRPId = copyNum;
191 if (decRPId >= 10000) {
192 decRPId = decRPId % 10000;
193 const unsigned int armIdx = (decRPId / 100) % 10;
194 const unsigned int stIdx = (decRPId / 10) % 10;
195 const unsigned int rpIdx = decRPId % 10;
198 const unsigned int armIdx = (decRPId / 100) % 10;
199 const unsigned int stIdx = (decRPId / 10) % 10;
200 const unsigned int rpIdx = decRPId % 10;
207 if (copyNos.size() < 4)
209 <<
"size of copyNumbers for TOTEM timing sensor is " << copyNos.size() <<
". It must be >= 4.";
211 const unsigned int decRPId = copyNos[copyNos.size() - 4];
212 const unsigned int arm = decRPId / 100,
station = (decRPId % 100) / 10, rp = decRPId % 10;
213 const unsigned int plane = copyNos[copyNos.size() - 2], channel = copyNos[copyNos.size() - 1];
218 const unsigned int arm = copyNum / 100,
station = (copyNum % 100) / 10, rp = copyNum % 10;
225 if (copyNos.size() < 4)
227 <<
"size of copyNumbers for pixel sensor is " << copyNos.size() <<
". It must be >= 4.";
230 const unsigned int decRPId = copyNos[copyNos.size() - 4] % 10000;
231 const unsigned int arm = decRPId / 100;
232 const unsigned int station = (decRPId % 100) / 10;
233 const unsigned int rp = decRPId % 10;
234 const unsigned int detector = copyNos[copyNos.size() - 2] - 1;
240 const unsigned int id = copyNos[copyNos.size() - 1];
241 const unsigned int arm = copyNos[1] - 1;
242 const unsigned int station = 1;
243 const unsigned int rp = 6;
244 const unsigned int plane = (
id / 100);
245 const unsigned int channel =
id % 100;
253 if (copyNos.size() < 2)
255 <<
"size of copyNumbers for diamond RP is " << copyNos.size() <<
". It must be >= 2.";
257 const unsigned int arm = copyNos[1] - 1;
258 const unsigned int station = 1;
259 const unsigned int rp = 6;
271 const std::vector<int>& copyNos,
272 unsigned int copyNum)
const {
273 std::vector<int> copyNosOldDD = {copyNos.rbegin() + 1, copyNos.rend()};
288 if (foundFromDB != std::string::npos) {
295 if (foundFromXML != std::string::npos) {