35 double phiHalf =
get(eHalfPhiSector) + tol1;
37 bool insidePhi = (-phiHalf <=
phi) && (phi < phiHalf);
39 (
get(eInnerRx) <= tol0) || (
get(eOuterRx) <= tol0) ||
45 return (insidePhi && insideInner && insideOuter);
56 double r =
perp(lposition);
58 return std::min(
get(eInnerRx),
get(eOuterRx));
62 double cs = lposition[
eLOC_Y] /
r;
66 if (
get(eHalfPhiSector) <
M_PI) {
67 double df =
std::abs(dF) -
get(eHalfPhiSector);
68 sf = r * std::sin(df);
77 double a = cs /
get(eInnerRy);
78 double b = sn /
get(eOuterRy);
79 double sr0 = r - 1. / std::hypot(a, b);
83 a = cs /
get(eInnerRx);
84 b = sn /
get(eOuterRx);
85 double sr1 = 1. / std::hypot(a, b) -
r;
99 fb = (dF > 0.) ? (
get(eAveragePhi) +
get(eHalfPhiSector))
100 : (
get(eAveragePhi) -
get(eHalfPhiSector));
103 double a = cs /
get(eInnerRy);
104 double b = sn /
get(eOuterRy);
105 double sr0 = r - 1. / std::hypot(a, b);
107 return std::hypot(sr0, sf);
109 a = cs /
get(eInnerRx);
110 b = sn /
get(eOuterRx);
111 double sr1 = (1. / std::hypot(a, b)) - r;
113 return std::hypot(sr1, sf);
119 unsigned int lseg)
const {
121 get(eInnerRx),
get(eInnerRy),
get(eOuterRx),
get(eOuterRy),
122 get(eAveragePhi),
get(eHalfPhiSector), lseg);
126 return m_boundingBox;
131 sl << std::setiosflags(std::ios::fixed);
132 sl << std::setprecision(7);
133 sl <<
"Acts::EllipseBounds: (innerRadius0, outerRadius0, innerRadius1, "
134 "outerRadius1, hPhiSector, averagePhi) = ";
135 sl <<
"(" <<
get(eInnerRx) <<
", " <<
get(eInnerRy) <<
", " <<
get(eOuterRx)
136 <<
", " <<
get(eOuterRy) <<
", " <<
get(eAveragePhi) <<
", "
137 <<
get(eHalfPhiSector) <<
", " <<
get(eAveragePhi) <<
")";
138 sl << std::setprecision(-1);