57 std::vector<DetId>
ids;
62 edm::LogVerbatim(
"HGCalGeom") <<
"Type:WaferU:WaferV " <<
id.iType <<
":" <<
id.iCell1 <<
":" <<
id.iCell2
72 addHGCSiliconId(ids,
id.det,
id.zSide,
id.iType,
id.iLay,
id.iSec1,
id.iSec2,
id.iCell1 + 1,
id.iCell2);
73 addHGCSiliconId(ids,
id.det,
id.zSide,
id.iType,
id.iLay,
id.iSec1,
id.iSec2,
id.iCell1,
id.iCell2 - 1);
74 addHGCSiliconId(ids,
id.det,
id.zSide,
id.iType,
id.iLay,
id.iSec1,
id.iSec2,
id.iCell1 - 1,
id.iCell2 - 1);
75 addHGCSiliconId(ids,
id.det,
id.zSide,
id.iType,
id.iLay,
id.iSec1,
id.iSec2,
id.iCell1 - 1,
id.iCell2);
76 addHGCSiliconId(ids,
id.det,
id.zSide,
id.iType,
id.iLay,
id.iSec1,
id.iSec2,
id.iCell1,
id.iCell2 + 1);
77 addHGCSiliconId(ids,
id.det,
id.zSide,
id.iType,
id.iLay,
id.iSec1,
id.iSec2,
id.iCell1 + 1,
id.iCell2 + 1);
82 int wu1(
id.iSec1), wv1(
id.iSec2 - 1);
88 <<
":" << wu1 <<
":" << wv1 <<
":" << t1 <<
":" << N1 <<
":" << v1;
90 addHGCSiliconId(ids,
id.det,
id.zSide,
id.iType,
id.iLay,
id.iSec1,
id.iSec2,
id.iCell1 + 1,
id.iCell2);
91 addHGCSiliconId(ids,
id.det,
id.zSide,
id.iType,
id.iLay,
id.iSec1,
id.iSec2,
id.iCell1,
id.iCell2 - 1);
92 addHGCSiliconId(ids,
id.det,
id.zSide, t1,
id.iLay, wu1, wv1, 2 * N1 - 1, v1 + N1 - 1);
93 addHGCSiliconId(ids,
id.det,
id.zSide, t1,
id.iLay, wu1, wv1, 2 * N1 - 1, v1 + N1);
94 addHGCSiliconId(ids,
id.det,
id.zSide,
id.iType,
id.iLay,
id.iSec1,
id.iSec2,
id.iCell1,
id.iCell2 + 1);
95 addHGCSiliconId(ids,
id.det,
id.zSide,
id.iType,
id.iLay,
id.iSec1,
id.iSec2,
id.iCell1 + 1,
id.iCell2 + 1);
100 int wu1(
id.iSec1 + 1), wv1(
id.iSec2);
106 <<
":" << wu1 <<
":" << wv1 <<
":" << t1 <<
":" << N1 <<
":" <<
u1;
108 addHGCSiliconId(ids,
id.det,
id.zSide,
id.iType,
id.iLay,
id.iSec1,
id.iSec2,
id.iCell1 + 1,
id.iCell2);
109 addHGCSiliconId(ids,
id.det,
id.zSide, t1,
id.iLay, wu1, wv1, u1 + N1, 2 * N1 - 1);
110 addHGCSiliconId(ids,
id.det,
id.zSide, t1,
id.iLay, wu1, wv1, u1 + N1 - 1, 2 * N1 - 1);
111 addHGCSiliconId(ids,
id.det,
id.zSide,
id.iType,
id.iLay,
id.iSec1,
id.iSec2,
id.iCell1 - 1,
id.iCell2);
112 addHGCSiliconId(ids,
id.det,
id.zSide,
id.iType,
id.iLay,
id.iSec1,
id.iSec2,
id.iCell1,
id.iCell2 + 1);
113 addHGCSiliconId(ids,
id.det,
id.zSide,
id.iType,
id.iLay,
id.iSec1,
id.iSec2,
id.iCell1 + 1,
id.iCell2 + 1);
118 int wu1(
id.iSec1 + 1), wv1(
id.iSec2 + 1);
124 <<
":" << wu1 <<
":" << wv1 <<
":" << t1 <<
":" << N1 <<
":" << v1;
126 addHGCSiliconId(ids,
id.det,
id.zSide, t1,
id.iLay, wu1, wv1, v1 + 1, v1 + N1);
127 addHGCSiliconId(ids,
id.det,
id.zSide, t1,
id.iLay, wu1, wv1, v1, v1 + N1 - 1);
128 addHGCSiliconId(ids,
id.det,
id.zSide,
id.iType,
id.iLay,
id.iSec1,
id.iSec2,
id.iCell1 - 1,
id.iCell2 - 1);
129 addHGCSiliconId(ids,
id.det,
id.zSide,
id.iType,
id.iLay,
id.iSec1,
id.iSec2,
id.iCell1 - 1,
id.iCell2);
130 addHGCSiliconId(ids,
id.det,
id.zSide,
id.iType,
id.iLay,
id.iSec1,
id.iSec2,
id.iCell1,
id.iCell2 + 1);
131 addHGCSiliconId(ids,
id.det,
id.zSide,
id.iType,
id.iLay,
id.iSec1,
id.iSec2,
id.iCell1 + 1,
id.iCell2 + 1);
136 int wu1(
id.iSec1), wv1(
id.iSec2 + 1);
142 <<
":" << wu1 <<
":" << wv1 <<
":" << t1 <<
":" << N1 <<
":" << v1;
144 addHGCSiliconId(ids,
id.det,
id.zSide, t1,
id.iLay, wu1, wv1, 0, v1 - N1);
145 addHGCSiliconId(ids,
id.det,
id.zSide,
id.iType,
id.iLay,
id.iSec1,
id.iSec2,
id.iCell1,
id.iCell2 - 1);
146 addHGCSiliconId(ids,
id.det,
id.zSide,
id.iType,
id.iLay,
id.iSec1,
id.iSec2,
id.iCell1 - 1,
id.iCell2 - 1);
147 addHGCSiliconId(ids,
id.det,
id.zSide,
id.iType,
id.iLay,
id.iSec1,
id.iSec2,
id.iCell1 - 1,
id.iCell2);
148 addHGCSiliconId(ids,
id.det,
id.zSide,
id.iType,
id.iLay,
id.iSec1,
id.iSec2,
id.iCell1,
id.iCell2 + 1);
149 addHGCSiliconId(ids,
id.det,
id.zSide, t1,
id.iLay, wu1, wv1, 0, v1 - N1 + 1);
154 int wu1(
id.iSec1 - 1), wv1(
id.iSec2);
160 <<
":" << wu1 <<
":" << wv1 <<
":" << t1 <<
":" << N1 <<
":" <<
u1;
162 addHGCSiliconId(ids,
id.det,
id.zSide,
id.iType,
id.iLay,
id.iSec1,
id.iSec2,
id.iCell1 + 1,
id.iCell2);
163 addHGCSiliconId(ids,
id.det,
id.zSide,
id.iType,
id.iLay,
id.iSec1,
id.iSec2,
id.iCell1,
id.iCell2 - 1);
164 addHGCSiliconId(ids,
id.det,
id.zSide,
id.iType,
id.iLay,
id.iSec1,
id.iSec2,
id.iCell1 - 1,
id.iCell2 - 1);
165 addHGCSiliconId(ids,
id.det,
id.zSide,
id.iType,
id.iLay,
id.iSec1,
id.iSec2,
id.iCell1 - 1,
id.iCell2);
166 addHGCSiliconId(ids,
id.det,
id.zSide, t1,
id.iLay, wu1, wv1, u1 - N1, 0);
167 addHGCSiliconId(ids,
id.det,
id.zSide, t1,
id.iLay, wu1, wv1, u1 - N1 + 1, 0);
172 int wu1(
id.iSec1 - 1), wv1(
id.iSec2 - 1);
178 <<
":" << wu1 <<
":" << wv1 <<
":" << t1 <<
":" << N1 <<
":" <<
u1;
180 addHGCSiliconId(ids,
id.det,
id.zSide,
id.iType,
id.iLay,
id.iSec1,
id.iSec2,
id.iCell1 + 1,
id.iCell2);
181 addHGCSiliconId(ids,
id.det,
id.zSide,
id.iType,
id.iLay,
id.iSec1,
id.iSec2,
id.iCell1,
id.iCell2 - 1);
182 addHGCSiliconId(ids,
id.det,
id.zSide,
id.iType,
id.iLay,
id.iSec1,
id.iSec2,
id.iCell1 - 1,
id.iCell2 - 1);
183 addHGCSiliconId(ids,
id.det,
id.zSide, t1,
id.iLay, wu1, wv1, u1 + N1 - 1, u1 - 1);
184 addHGCSiliconId(ids,
id.det,
id.zSide, t1,
id.iLay, wu1, wv1, u1 + N1, u1);
185 addHGCSiliconId(ids,
id.det,
id.zSide,
id.iType,
id.iLay,
id.iSec1,
id.iSec2,
id.iCell1 + 1,
id.iCell2 + 1);
190 int wu1(
id.iSec1), wv1(
id.iSec2 - 1);
194 int wu2(
id.iSec1 - 1), wv2(
id.iSec2 - 1);
200 <<
":" << wu1 <<
":" << wv1 <<
":" << t1 <<
":" << N1 <<
":" << v1 <<
":" << t2
201 <<
":" << N2 <<
":" <<
u2;
203 addHGCSiliconId(ids,
id.det,
id.zSide,
id.iType,
id.iLay,
id.iSec1,
id.iSec2,
id.iCell1 + 1,
id.iCell2);
204 addHGCSiliconId(ids,
id.det,
id.zSide,
id.iType,
id.iLay,
id.iSec1,
id.iSec2,
id.iCell1,
id.iCell2 - 1);
205 addHGCSiliconId(ids,
id.det,
id.zSide, t1,
id.iLay, wu1, wv1, 2 * N1 - 1, v1 + N1 - 1);
206 addHGCSiliconId(ids,
id.det,
id.zSide, t1,
id.iLay, wu1, wv1, 2 * N1 - 1, v1 + N1);
207 addHGCSiliconId(ids,
id.det,
id.zSide, t2,
id.iLay, wu2, wv2, u2 + N2, u2);
208 addHGCSiliconId(ids,
id.det,
id.zSide,
id.iType,
id.iLay,
id.iSec1,
id.iSec2,
id.iCell1 + 1,
id.iCell2 + 1);
213 int wu1(
id.iSec1 + 1), wv1(
id.iSec2);
217 int wu2(
id.iSec1), wv2(
id.iSec2 - 1);
223 <<
":" << wu1 <<
":" << wv1 <<
":" << t1 <<
":" << N1 <<
":" << u1 <<
":" << t2
224 <<
":" << N2 <<
":" << v2;
226 addHGCSiliconId(ids,
id.det,
id.zSide,
id.iType,
id.iLay,
id.iSec1,
id.iSec2,
id.iCell1 + 1,
id.iCell2);
227 addHGCSiliconId(ids,
id.det,
id.zSide, t1,
id.iLay, wu1, wv1, u1 + N1, 2 * N1 - 1);
228 addHGCSiliconId(ids,
id.det,
id.zSide, t2,
id.iLay, wu2, wv2, 2 * N2 - 1, v2 + N2 - 1);
229 addHGCSiliconId(ids,
id.det,
id.zSide, t2,
id.iLay, wu2, wv2, 2 * N2 - 1, v2 + N2);
230 addHGCSiliconId(ids,
id.det,
id.zSide,
id.iType,
id.iLay,
id.iSec1,
id.iSec2,
id.iCell1,
id.iCell2 + 1);
231 addHGCSiliconId(ids,
id.det,
id.zSide,
id.iType,
id.iLay,
id.iSec1,
id.iSec2,
id.iCell1 + 1,
id.iCell2 + 1);
236 int wu1(
id.iSec1 + 1), wv1(
id.iSec2 + 1);
240 int wu2(
id.iSec1 + 1), wv2(
id.iSec2);
246 <<
":" << wu1 <<
":" << wv1 <<
":" << t1 <<
":" << N1 <<
":" << v1 <<
":" << t2
247 <<
":" << N2 <<
":" <<
u2;
249 addHGCSiliconId(ids,
id.det,
id.zSide, t1,
id.iLay, wu1, wv1, v1 + 1, N1 + v1);
250 addHGCSiliconId(ids,
id.det,
id.zSide, t1,
id.iLay, wu1, wv1, v1, N1 + v1 - 1);
251 addHGCSiliconId(ids,
id.det,
id.zSide, t2,
id.iLay, wu2, wv2, u2 + N2 - 1, 2 * N2 - 1);
252 addHGCSiliconId(ids,
id.det,
id.zSide,
id.iType,
id.iLay,
id.iSec1,
id.iSec2,
id.iCell1 - 1,
id.iCell2);
253 addHGCSiliconId(ids,
id.det,
id.zSide,
id.iType,
id.iLay,
id.iSec1,
id.iSec2,
id.iCell1,
id.iCell2 + 1);
254 addHGCSiliconId(ids,
id.det,
id.zSide,
id.iType,
id.iLay,
id.iSec1,
id.iSec2,
id.iCell1 + 1,
id.iCell2 + 1);
259 int wu1(
id.iSec1 + 1), wv1(
id.iSec2 + 1);
263 int wu2(
id.iSec1), wv2(
id.iSec2 + 1);
269 <<
":" << wu1 <<
":" << wv1 <<
":" << t1 <<
":" << N1 <<
":" << v1 <<
":" << t2
270 <<
":" << N2 <<
":" << v2;
272 addHGCSiliconId(ids,
id.det,
id.zSide, t1,
id.iLay, wu1, wv1, v1 + 1, v1 + N1);
273 addHGCSiliconId(ids,
id.det,
id.zSide, t1,
id.iLay, wu1, wv1, v1, v1 + N1 - 1);
274 addHGCSiliconId(ids,
id.det,
id.zSide,
id.iType,
id.iLay,
id.iSec1,
id.iSec2,
id.iCell1 - 1,
id.iCell2 - 1);
275 addHGCSiliconId(ids,
id.det,
id.zSide,
id.iType,
id.iLay,
id.iSec1,
id.iSec2,
id.iCell1 - 1,
id.iCell2);
276 addHGCSiliconId(ids,
id.det,
id.zSide,
id.iType,
id.iLay,
id.iSec1,
id.iSec2,
id.iCell1,
id.iCell2 + 1);
277 addHGCSiliconId(ids,
id.det,
id.zSide, t2,
id.iLay, wu2, wv2, 0, v2 - N2 + 1);
282 int wu1(
id.iSec1), wv1(
id.iSec2 + 1);
286 int wu2(
id.iSec1 - 1), wv2(
id.iSec2);
292 <<
":" << wu1 <<
":" << wv1 <<
":" << t1 <<
":" << N1 <<
":" << v1 <<
":" << t2
293 <<
":" << N2 <<
":" <<
u2;
295 addHGCSiliconId(ids,
id.det,
id.zSide, t1,
id.iLay, wu1, wv1, 0, v1 - N1);
296 addHGCSiliconId(ids,
id.det,
id.zSide,
id.iType,
id.iLay,
id.iSec1,
id.iSec2,
id.iCell1,
id.iCell2 - 1);
297 addHGCSiliconId(ids,
id.det,
id.zSide,
id.iType,
id.iLay,
id.iSec1,
id.iSec2,
id.iCell1 - 1,
id.iCell2 - 1);
298 addHGCSiliconId(ids,
id.det,
id.zSide,
id.iType,
id.iLay,
id.iSec1,
id.iSec2,
id.iCell1 - 1,
id.iCell2);
299 addHGCSiliconId(ids,
id.det,
id.zSide, t2,
id.iLay, wu2, wv2, u2 - N2, 0);
300 addHGCSiliconId(ids,
id.det,
id.zSide, t2,
id.iLay, wu2, wv2, u2 - N2 + 1, 0);
305 int wu1(
id.iSec1 - 1), wv1(
id.iSec2 - 1);
309 int wu2(
id.iSec1 - 1), wv2(
id.iSec2);
315 <<
":" << wu1 <<
":" << wv1 <<
":" << t1 <<
":" << N1 <<
":" << u1 <<
":" << t2
316 <<
":" << N2 <<
":" <<
u2;
318 addHGCSiliconId(ids,
id.det,
id.zSide,
id.iType,
id.iLay,
id.iSec1,
id.iSec2,
id.iCell1 + 1,
id.iCell2);
319 addHGCSiliconId(ids,
id.det,
id.zSide,
id.iType,
id.iLay,
id.iSec1,
id.iSec2,
id.iCell1,
id.iCell2 - 1);
320 addHGCSiliconId(ids,
id.det,
id.zSide,
id.iType,
id.iLay,
id.iSec1,
id.iSec2,
id.iCell1 - 1,
id.iCell2 - 1);
321 addHGCSiliconId(ids,
id.det,
id.zSide, t1,
id.iLay, wu1, wv1, u1 + N1 - 1, u1 - 1);
322 addHGCSiliconId(ids,
id.det,
id.zSide, t2,
id.iLay, wu2, wv2, u2 - N2, 0);
323 addHGCSiliconId(ids,
id.det,
id.zSide, t2,
id.iLay, wu2, wv2, u2 - N2 + 1, 0);
329 edm::LogWarning(
"HGCalGeom") <<
"u:v " <<
id.iCell1 <<
":" <<
id.iCell2 <<
" Tests " << (
id.iCell1 > 2 * N - 1)
330 <<
":" << (
id.iCell2 > 2 * N - 1) <<
":" << (
id.iCell2 >= (
id.iCell1 +
N)) <<
":" 331 << (
id.iCell1 > (
id.iCell2 +
N)) <<
" ERROR";
334 int iphi1 = (
id.iCell1 > 1) ?
id.iCell1 - 1 :
hdcons_.
getUVMax(
id.iType);
335 int iphi2 = (
id.iCell1 <
hdcons_.
getUVMax(
id.iType)) ?
id.iCell1 + 1 : 1;
352 int type = (
id.iType > 0) ? 1 : 0;
353 idx = (uint32_t)(((
id.zSide > 0) ?
kHGhalf_ : 0) +
356 edm::LogVerbatim(
"HGCalGeom") <<
"Input Hex " <<
id.zSide <<
":" <<
id.iLay <<
":" <<
id.iSec1 <<
":" <<
id.iCell1
362 (uint32_t)(((
id.zSide > 0) ?
kHGhalf_ : 0) +
365 edm::LogVerbatim(
"HGCalGeom") <<
"Input Trap " <<
id.zSide <<
":" <<
id.iLay <<
":" <<
id.iSec1 <<
":" <<
id.iCell1
371 (uint32_t)(((
id.zSide > 0) ?
kHGhalf_ : 0) +
378 edm::LogVerbatim(
"HGCalGeom") <<
"Input Hex8 " <<
id.zSide <<
":" <<
id.iLay <<
":" <<
id.iSec1 <<
":" <<
id.iSec2
379 <<
":" <<
id.iCell1 <<
":" <<
id.iCell2 <<
":" <<
id.iType <<
" Constants " 394 id.iType = (type == 0 ? -1 : 1);
399 edm::LogVerbatim(
"HGCalGeom") <<
"Input Hex " << hi <<
" o/p " <<
id.zSide <<
":" <<
id.iLay <<
":" <<
id.iType
400 <<
":" <<
id.iSec1 <<
":" <<
id.iCell1;
409 edm::LogVerbatim(
"HGCalGeom") <<
"Input Trap " << hi <<
" o/p " <<
id.zSide <<
":" <<
id.iLay <<
":" <<
id.iType
410 <<
":" <<
id.iSec1 <<
":" <<
id.iCell1;
421 di = (di -
id.iLay + 1) /
layers_;
423 id.iCell1 = (di -
id.iCell2) /
cellMax_;
425 edm::LogVerbatim(
"HGCalGeom") <<
"Input Hex8 " << hi <<
" o/p " <<
id.zSide <<
":" <<
id.iLay <<
":" <<
id.iType
426 <<
":" <<
id.iSec1 <<
":" <<
id.iSec2 <<
":" <<
id.iCell1 <<
":" <<
id.iCell2;
437 idx = (uint32_t)(((
id.zSide > 0) ?
kHGeomHalf_ : 0) + (
id.iLay - 1) *
sectors_ +
id.iSec1);
439 edm::LogVerbatim(
"HGCalGeom") <<
"Geom Hex I/P " <<
id.zSide <<
":" <<
id.iLay <<
":" <<
id.iSec1 <<
":" <<
id.iType
444 idx = (uint32_t)(((
id.zSide > 0) ?
kHGeomHalf_ : 0) +
447 edm::LogVerbatim(
"HGCalGeom") <<
"Geom Trap I/P " <<
id.zSide <<
":" <<
id.iLay <<
":" <<
id.iSec1 <<
":" 452 idx = (uint32_t)(((
id.zSide > 0) ?
kHGeomHalf_ : 0) +
455 edm::LogVerbatim(
"HGCalGeom") <<
"Geom Hex8 I/P " <<
id.zSide <<
":" <<
id.iLay <<
":" <<
id.iSec1 <<
":" 468 id.iLay > 0 &&
id.iLay <=
layers_ &&
id.iSec1 >= 0 &&
id.iSec1 <=
sectors_);
507 id.iType = ((di -
id.iLay + 1) /
layers_ == 0) ? -1 : 1;
509 edm::LogVerbatim(
"HGCalGeom") <<
"Geom Hex I/P " << hi <<
" O/P " <<
id.zSide <<
":" <<
id.iType <<
":" <<
id.iLay
514 di = (di -
id.iCell1 + 1) /
cellMax_;
516 di = (di -
id.iSec1 + 1) /
sectors_;
520 edm::LogVerbatim(
"HGCalGeom") <<
"Geom Trap I/P " << hi <<
" O/P " <<
id.zSide <<
":" <<
id.iType <<
":" 521 <<
id.iLay <<
":" <<
id.iSec1 <<
":" <<
id.iCell1;
529 id.iType = (di -
id.iLay + 1) /
layers_;
531 edm::LogVerbatim(
"HGCalGeom") <<
"Geom Hex8 I/P " << hi <<
" O/P " <<
id.zSide <<
":" <<
id.iType <<
":" 532 <<
id.iLay <<
":" <<
id.iSec1 <<
":" <<
id.iSec2;
540 std::vector<DetId>&
ids,
int zside,
int type,
int lay,
int iradius,
int iphi)
const {
542 edm::LogVerbatim(
"HGCalGeom") <<
"addHGCSCintillatorId " << zside <<
":" << type <<
":" << lay <<
":" << iradius
547 ids.emplace_back(
DetId(
id));
552 std::vector<DetId>&
ids,
int det,
int zside,
int type,
int lay,
int waferU,
int waferV,
int cellU,
int cellV)
const {
554 edm::LogVerbatim(
"HGCalGeom") <<
"addHGCSiliconId " << det <<
":" << zside <<
":" << type <<
":" << lay <<
":" 555 << waferU <<
":" << waferV <<
":" << cellU <<
":" << cellV <<
" ==> Validity " 560 ids.emplace_back(
DetId(
id));
570 idx.
iLay =
id.layer();
571 idx.
iSec1 =
id.wafer();
573 idx.
iType =
id.waferType();
574 idx.
zSide =
id.zside();
575 idx.
det =
id.subdetId();
580 idx.
iLay =
id.layer();
581 idx.
iSec1 =
id.ietaAbs();
583 idx.
iType =
id.type();
584 idx.
zSide =
id.zside();
585 idx.
det = (
int)(
id.subdet());
590 idx.
iLay =
id.layer();
591 idx.
iSec1 =
id.waferU();
592 idx.
iSec2 =
id.waferV();
593 idx.
iType =
id.type();
594 idx.
zSide =
id.zside();
595 idx.
det = (
int)(
id.subdet());
600 idx.
iLay =
id.layer();
601 idx.
iSec1 =
id.waferU();
602 idx.
iSec2 =
id.waferV();
603 idx.
iType =
id.type();
604 idx.
zSide =
id.zside();
605 idx.
det = (
int)(
id.subdet());
bool isValidTrap(int lay, int ieta, int iphi) const
bool validHashIndex(uint32_t ix) const
unsigned int allGeomModules() const
DetId changeXY(const DetId &id, int nrStepsX, int nrStepsY) const
move the nagivator along x, y
DetId changeZ(const DetId &id, int nrStepsZ) const
move the nagivator along z
HGCalGeometryMode::GeometryMode mode_
constexpr uint32_t rawId() const
get the raw id
int getTypeHex(int layer, int waferU, int waferV) const
DetId denseId2detId(uint32_t denseId) const override
bool isValidHex(int lay, int mod, int cell, bool reco) const
DetId offsetBy(const DetId startId, int nrStepsX, int nrStepsY) const
unsigned int totalGeomModules() const
unsigned int layers(bool reco) const
bool isValidHex8(int lay, int modU, int modV, int cellU, int cellV) const
virtual uint32_t detId2denseGeomId(const DetId &id) const
void addHGCSCintillatorId(std::vector< DetId > &ids, int zside, int type, int lay, int iradius, int iphi) const
add DetId of Scintillator and Silicon type if valid
DetId encode(const DecodedDetId &id_) const
constexpr int subdetId() const
get the contents of the subdetector field (not cast into any detector's numbering enum) ...
CellType cellType(int type, int waferU, int waferV) const
uint32_t detId2denseId(const DetId &id) const override
Dense indexing.
HGCalGeometryMode::GeometryMode geomMode() const
DecodedDetId geomDenseId2decId(const uint32_t &hi) const
ForwardSubdetector subdet_
const HGCalDDDConstants & hdcons_
#define TYPELOOKUP_DATA_REG(_dataclass_)
DecodedDetId decode(const DetId &id) const
int numberCells(bool reco) const
DetId switchZSide(const DetId startId) const
void addHGCSiliconId(std::vector< DetId > &ids, int det, int zside, int type, int lay, int waferU, int waferV, int cellU, int cellV) const
std::vector< DetId > neighbors(const DetId &id) const
unsigned int kSizeForDenseIndexing
bool valid(const DetId &id) const override
Is this a valid cell id.
HGCalTopology(const HGCalDDDConstants &hdcons, int subdet)
create a new Topology
int maxCells(bool reco) const
int modifyUV(int uv, int type1, int type2) const
int getUVMax(int type) const
constexpr Detector det() const
get the detector field from this detid