12 #include "GaudiKernel/MsgStream.h"
26 m_rotMat = Eigen::Rotation2D{
alpha};
71 const double fabsX = std::abs(locpo[
Trk::locX]);
72 double max_ell = bchk.lCovariance(0, 0) > bchk.lCovariance(1, 1)
73 ? bchk.lCovariance(0, 0)
74 : bchk.lCovariance(1, 1);
79 const double fabsY = std::abs(locpo[
Trk::locY]);
83 double min_ell = bchk.lCovariance(0, 0) < bchk.lCovariance(1, 1)
84 ? bchk.lCovariance(0, 0)
85 : bchk.lCovariance(1, 1);
92 std::vector<KDOP> elementKDOP(3);
93 std::vector<Amg::Vector2D> elementP(4);
95 (bchk.lCovariance(1, 0) != 0 &&
96 (bchk.lCovariance(1, 1) - bchk.lCovariance(0, 0)) != 0)
97 ? .5 * bchk.
FastArcTan(2 * bchk.lCovariance(1, 0) /
98 (bchk.lCovariance(1, 1) - bchk.lCovariance(0, 0)))
105 normal << 0, -1, 1, 0;
111 elementP[0] = (rotMatrix * (
p - locpo));
114 elementP[1] = (rotMatrix * (
p - locpo));
117 elementP[2] = (rotMatrix * (
p - locpo));
120 elementP[3] = (rotMatrix * (
p - locpo));
121 std::vector<Amg::Vector2D>
axis = { normal * (elementP[1] - elementP[0]),
122 normal * (elementP[3] - elementP[1]),
123 normal * (elementP[2] - elementP[0]) };
126 std::vector<KDOP> errelipseKDOP(3);
139 double fabsX = std::abs(locpo[
Trk::locX]);
140 double fabsY = std::abs(locpo[
Trk::locY]);
151 return (isBelow(locpo[
Trk::locX], fabsY, tol1, tol2));
159 return ((m_kappa * (
locX + tol1) + m_delta) > fabsLocY - tol2);
166 constexpr
int Np = 4;
181 for (
int i = 0;
i != Np; ++
i) {
183 int j = (
i == Np-1 ? 0 :
i+1);
187 double dx =
X[j] -
X[
i];
188 double dy =
Y[j] -
Y[
i];
193 double d =
x *
x +
y *
y;
199 double d = (
A *
A) /
a;
204 if (
i && in && Ao *
A < 0.)
209 return -std::sqrt(
dm);
211 return std::sqrt(
dm);
219 sl << std::setiosflags(std::ios::fixed);
220 sl << std::setprecision(7);
221 sl <<
"Trk::RotatedTrapezoidBounds: (halfX, minHalfX, maxHalfY) = "
225 sl << std::setprecision(-1);
232 sl << std::setiosflags(std::ios::fixed);
233 sl << std::setprecision(7);
234 sl <<
"Trk::RotatedTrapezoidBounds: (halfX, minHalfX, maxHalfY) = "
238 sl << std::setprecision(-1);