30 double ros =
perp(gpos);
32 bool insideR = (ros >=
get(
eMinR) - tol) && (ros <=
get(
eMaxR) + tol);
35 if (!insideR || !insideZ) {
41 bool insideRInner = ros <=
get(
eMedR) - tol;
44 return !insideRInner || !insideZInner;
51 if (
get(eMinR) == 0.) {
59 Surface::makeShared<CylinderSurface>(
transform, m_outerCylinderBounds);
64 Surface::makeShared<CylinderSurface>(
transform, m_cutoutCylinderBounds);
69 double hlChoke = (
get(eHalfLengthZ) -
get(eHalfLengthZcutout)) * 0.5;
70 double zChoke =
get(eHalfLengthZcutout) + hlChoke;
72 if (m_innerCylinderBounds !=
nullptr) {
74 auto posInner = Surface::makeShared<CylinderSurface>(posChokeTrf,
75 m_innerCylinderBounds);
79 auto negInner = Surface::makeShared<CylinderSurface>(negChokeTrf,
80 m_innerCylinderBounds);
88 Surface::makeShared<DiscSurface>(posOutDiscTrf, m_outerDiscBounds);
95 Surface::makeShared<DiscSurface>(negOutDiscTrf, m_outerDiscBounds);
103 Surface::makeShared<DiscSurface>(posInDiscTrf, m_innerDiscBounds);
109 Surface::makeShared<DiscSurface>(negInDiscTrf, m_innerDiscBounds);
123 vmax = {
get(eMaxR),
get(eMaxR),
get(eHalfLengthZ)};
124 vmin = {-
get(eMaxR), -
get(eMaxR), -
get(eHalfLengthZ)};
128 return trf ==
nullptr ? box : box.
transformed(*trf);
132 std::ostream& sl)
const {
133 sl <<
"Acts::CutoutCylinderVolumeBounds(\n";
134 sl <<
"rmin = " <<
get(eMinR) <<
" rmed = " <<
get(eMedR)
135 <<
" rmax = " <<
get(eMaxR) <<
"\n";
136 sl <<
"dz1 = " <<
get(eHalfLengthZ) <<
" dz2 = " <<
get(eHalfLengthZcutout);
142 double hlChoke = (
get(eHalfLengthZ) -
get(eHalfLengthZcutout)) * 0.5;
143 m_innerCylinderBounds =
144 std::make_shared<CylinderBounds>(
get(eMinR), hlChoke);
147 m_cutoutCylinderBounds =
148 std::make_shared<CylinderBounds>(
get(eMedR),
get(eHalfLengthZcutout));
150 m_outerCylinderBounds =
151 std::make_shared<CylinderBounds>(
get(eMaxR),
get(eHalfLengthZ));
153 m_innerDiscBounds = std::make_shared<RadialBounds>(
get(eMinR),
get(eMedR));
155 m_outerDiscBounds = std::make_shared<RadialBounds>(
get(eMinR),
get(eMaxR));