20     const std::array<double, eSize>& 
values) noexcept(
false)
 
   25       Eigen::Translation<double, 2>(
Vector2D(0, -
get(eAveragePhi)));
 
   46     double m = std::tan(
phi);
 
   48     double x1 = (O_x + O_y * m -
 
   49                  std::sqrt(-std::pow(O_x, 2) * std::pow(m, 2) +
 
   50                            2 * O_x * O_y * m - std::pow(O_y, 2) +
 
   51                            std::pow(m, 2) * std::pow(r, 2) + std::pow(r, 2))) /
 
   53     double x2 = (O_x + O_y * m +
 
   54                  std::sqrt(-std::pow(O_x, 2) * std::pow(m, 2) +
 
   55                            2 * O_x * O_y * m - std::pow(O_y, 2) +
 
   56                            std::pow(m, 2) * std::pow(r, 2) + std::pow(r, 2))) /
 
   70       circIx(m_moduleOrigin[eBoundLoc0], m_moduleOrigin[eBoundLoc1], 
get(eMinR),
 
   73       circIx(m_moduleOrigin[eBoundLoc0], m_moduleOrigin[eBoundLoc1], 
get(eMaxR),
 
   76       circIx(m_moduleOrigin[eBoundLoc0], m_moduleOrigin[eBoundLoc1], 
get(eMinR),
 
  102     unsigned int lseg)
 const {
 
  104   std::vector<Acts::Vector2D> rvertices;
 
  111   std::vector<double> phisInner =
 
  113   std::vector<double> phisOuter =
 
  117   for (
unsigned int iseg = 0; iseg < phisInner.size() - 1; ++iseg) {
 
  118     int addon = (iseg == phisInner.size() - 2) ? 1 : 0;
 
  119     detail::VerticesHelper::createSegment<Vector2D, Transform2D>(
 
  120         rvertices, {
get(eMinR), 
get(eMinR)}, phisInner[iseg],
 
  121         phisInner[iseg + 1], lseg, addon);
 
  124   for (
unsigned int iseg = 0; iseg < phisOuter.size() - 1; ++iseg) {
 
  125     int addon = (iseg == phisOuter.size() - 2) ? 1 : 0;
 
  126     detail::VerticesHelper::createSegment<Vector2D, Transform2D>(
 
  127         rvertices, {
get(eMaxR), 
get(eMaxR)}, phisOuter[iseg],
 
  128         phisOuter[iseg + 1], lseg, addon);
 
  135                                  double tolPhi)
 const {
 
  142   if (phiLoc < (
get(eMinPhiRel) - tolPhi) ||
 
  143       phiLoc > (
get(eMaxPhiRel) + tolPhi)) {
 
  154     if (r_mod2 < 
get(eMinR) * 
get(eMinR) || r_mod2 > 
get(eMaxR) * 
get(eMaxR)) {
 
  163     if (r_mod < (
get(eMinR) - tolR) || r_mod > (
get(eMaxR) + tolR)) {
 
  173   if (bcheck.
type() == BoundaryCheck::Type::eAbsolute) {
 
  179     if (inside(lposition, 0., 0.)) {
 
  191     double dphi = m_phiAvg;
 
  252     double cosDPhiPhiStrip = 
std::cos(dphi - phi_strip);
 
  253     double sinDPhiPhiStrip = std::sin(dphi - phi_strip);
 
  255     double A = O_x * O_x + 2 * O_x * r_strip * cosDPhiPhiStrip + O_y * O_y -
 
  256                2 * O_y * r_strip * sinDPhiPhiStrip + r_strip * r_strip;
 
  257     double sqrtA = std::sqrt(A);
 
  259     double B = cosDPhiPhiStrip;
 
  260     double C = -sinDPhiPhiStrip;
 
  261     Eigen::Matrix<double, 2, 2> jacobianStripPCToModulePC;
 
  262     jacobianStripPCToModulePC(0, 0) = (B * O_x + C * O_y + r_strip) / sqrtA;
 
  263     jacobianStripPCToModulePC(0, 1) =
 
  264         r_strip * (B * O_y + O_x * sinDPhiPhiStrip) / sqrtA;
 
  265     jacobianStripPCToModulePC(1, 0) = -(B * O_y - C * O_x) / A;
 
  266     jacobianStripPCToModulePC(1, 1) =
 
  267         r_strip * (B * O_x + C * O_y + r_strip) / A;
 
  272     auto covModulePC = jacobianStripPCToModulePC * covStripPC *
 
  273                        jacobianStripPCToModulePC.transpose();
 
  276     auto weightStripPC = covStripPC.inverse();
 
  277     auto weightModulePC = covModulePC.inverse();
 
  288                                       locpo_rotated, weightStripPC);
 
  289     currentDist = squaredNorm(locpo_rotated - currentClosest, weightStripPC);
 
  290     minDist = currentDist;
 
  293                                       locpo_rotated, weightStripPC);
 
  294     currentDist = squaredNorm(locpo_rotated - currentClosest, weightStripPC);
 
  295     if (currentDist < minDist) {
 
  296       minDist = currentDist;
 
  302         locpo_rotated[eBoundLoc0] * 
std::cos(locpo_rotated[eBoundLoc1]),
 
  303         locpo_rotated[eBoundLoc0] * std::sin(locpo_rotated[eBoundLoc1]));
 
  304     Vector2D locpoModulePC = stripXYToModulePC(locpoStripXY);
 
  310                                       locpoModulePC, weightModulePC);
 
  311     currentDist = squaredNorm(locpoModulePC - currentClosest, weightModulePC);
 
  312     if (currentDist < minDist) {
 
  313       minDist = currentDist;
 
  317                                       locpoModulePC, weightModulePC);
 
  318     currentDist = squaredNorm(locpoModulePC - currentClosest, weightModulePC);
 
  319     if (currentDist < minDist) {
 
  320       minDist = currentDist;
 
  338     const Eigen::Matrix<double, 2, 2>& weight)
 const {
 
  342   auto f = (
n.transpose() * weight * 
n).
value();
 
  344   auto u = ((p - a).transpose() * weight * 
n).
value() / f;
 
  350     const Vector2D& 
v, 
const Eigen::Matrix<double, 2, 2>& weight)
 const {
 
  351   return (v.transpose() * weight * 
v).
value();
 
  355   return Eigen::Rotation2D<double>(m_phiAvg) * m_moduleOrigin;
 
  360   sl << std::setiosflags(std::ios::fixed);
 
  361   sl << std::setprecision(7);
 
  362   sl << 
"Acts::AnnulusBounds:  (innerRadius, outerRadius, minPhi, maxPhi) = ";
 
  363   sl << 
"(" << 
get(eMinR) << 
", " << 
get(eMaxR) << 
", " << 
phiMin() << 
", " 
  364      << phiMax() << 
")" << 
'\n';
 
  369   sl << std::setprecision(-1);