12 #include "GaudiKernel/MsgStream.h"
27 double maxhalex,
double haley1,
double haley2)
28 : m_boundValues(
DiamondBounds::bv_length, 0.), m_alpha1(0.), m_alpha2(0.) {
34 if (minhalex > maxhalex)
63 return this->insideFull(locpo, tol1, tol2);
74 double max_ell = bchk.lCovariance(0, 0) > bchk.lCovariance(1, 1)
75 ? bchk.lCovariance(0, 0)
76 : bchk.lCovariance(1, 1);
83 double fabsX = std::abs(locpo[
Trk::locX]);
87 double min_ell = bchk.lCovariance(0, 0) < bchk.lCovariance(1, 1)
88 ? bchk.lCovariance(0, 0)
89 : bchk.lCovariance(1, 1);
102 std::vector<KDOP> elementKDOP(5);
103 std::vector<Amg::Vector2D> elementP(6);
105 (bchk.lCovariance(1, 0) != 0 &&
106 (bchk.lCovariance(1, 1) - bchk.lCovariance(0, 0)) != 0)
107 ? .5 * bchk.
FastArcTan(2 * bchk.lCovariance(1, 0) /
108 (bchk.lCovariance(1, 1) - bchk.lCovariance(0, 0)))
115 normal << 0, -1, 1, 0;
121 elementP[0] = (rotMatrix * (
p - locpo));
123 elementP[1] = (rotMatrix * (
p - locpo));
126 elementP[2] = (rotMatrix * (
p - locpo));
129 elementP[3] = (rotMatrix * (
p - locpo));
131 elementP[4] = (rotMatrix * (
p - locpo));
134 elementP[5] = (rotMatrix * (
p - locpo));
135 std::vector<Amg::Vector2D>
axis = { normal * (elementP[1] - elementP[0]),
136 normal * (elementP[2] - elementP[1]),
137 normal * (elementP[3] - elementP[2]),
138 normal * (elementP[4] - elementP[3]),
139 normal * (elementP[5] - elementP[4]) };
142 std::vector<KDOP> errelipseKDOP(5);
159 double absX = std::abs(locpo[
Trk::locX]);
171 double k = halfH ? 0.5*(halfBaseUp - halfBaseLo)/halfH : 0.;
172 double sign = (
k < 0) ? -1. : 1.;
202 double Y[6] = { -
y1, 0.,
y2,
y2, 0., -
y1 };
208 for (
int i = 0;
i != Np; ++
i) {
210 int j = (
i == Np-1 ? 0 :
i+1);
214 double dx =
X[j] -
X[
i];
215 double dy =
Y[j] -
Y[
i];
220 double d =
x *
x +
y *
y;
226 double d = (
A *
A) /
a;
231 if (
i && in && Ao *
A < 0.)
245 sl << std::setiosflags(std::ios::fixed);
246 sl << std::setprecision(7);
247 sl <<
"Trk::DiamondBounds: (minHlenghtX, medHlengthX, maxHlengthX, hlengthY1, hlengthY2 ) = ";
251 sl << std::setprecision(-1);
258 sl << std::setiosflags(std::ios::fixed);
259 sl << std::setprecision(7);
260 sl <<
"Trk::DiamondBounds: (minHlenghtX, medHlengthX, maxHlengthX, hlengthY1, hlengthY2 ) = ";
264 sl << std::setprecision(-1);