18 : theTopology(nullptr), extTopology(&ht) {
48 if (
geom->cornersMgr() ==
nullptr)
50 if (
geom->parMgr() ==
nullptr)
55 std::vector<HcalCastorDetId> castorIds;
60 for (
int imodule(firstCell); imodule <= lastCell; ++imodule) {
64 castorIds.emplace_back(
id);
73 for (std::vector<HcalCastorDetId>::const_iterator castorIdItr(castorIds.begin()); castorIdItr != castorIds.end();
82 const int module(detId.
module());
83 const int isect(detId.
sector());
84 const double sector(1.0 * isect);
88 const double sign(0 == isect % 2 ? -1 : 1);
92 static const double an(atan(1.));
93 static const double can(
cos(an));
94 static const double san(
sin(an));
95 static const double dxlEM(1.55 / 2.);
96 static const double dxhEM(5.73 / 2.);
97 static const double dhEM(14.26 / 2.);
98 static const double dR(0.1 + 2. * dhEM * san * dxlEM / (dxhEM - dxlEM));
99 static const double dhHAD(19.88 / 2.);
101 static const double dxhHAD(dxhEM * (2. * dhHAD * san +
dR) /
102 (2. * dhEM * san +
dR));
103 static const double zm(1439.0);
104 static const double dzEM(5.45 / 2);
105 static const double dzHAD(10.075 / 2);
109 const double dxl(
sign * dxlEM);
115 const double delz(
dh *
can);
116 const double dy(
dh * san);
117 const double dx((dxl + dxh) / 2.);
118 const double leg(
dR +
dy);
119 const double len(
sqrt(leg * leg +
dx *
dx));
123 const double fphi(atan(
dx / (
dR +
dy)));
125 const double phi(0 == isect % 2 ? (sector - 1.) * dphi - fphi : sector * dphi - fphi);
127 const double sphi(
sin(
phi));
128 const double cphi(
cos(
phi));
130 const double xc(len * cphi);
131 const double yc(len * sphi);
134 (zm + delz + (module < 3 ? (1. * module - 1.0) * 2. * dzEM : 4. * dzEM + (1. * (module - 2) - 1) * 2. * dzHAD)));
138 std::vector<CCGFloat>
zz;
140 zz.emplace_back(dxl);
141 zz.emplace_back(dxh);