Checker if a position is contained in a family of curves over phi0, impact and curvature.
More...
#include <InPhi0ImpactCurvBox.h>
|
| InPhi0ImpactCurvBox (float curlCurv=NAN) |
| Constructor taking the curler curvature Curlers with high curvature than the curler curvature may obtain hits from both arms.
|
|
ESign | getDistanceSign (const HoughBox &houghBox, float x, float y, float l, float=0, float=0, ILayer=-1) const |
| Function that gives the sign of the distance from an observed drift circle to the familiy of curves. More...
|
|
|
float | m_curlCurv |
| Curler curvature - set to value greater zero to activate on arm exclusive finding.
|
|
Checker if a position is contained in a family of curves over phi0, impact and curvature.
Definition at line 34 of file InPhi0ImpactCurvBox.h.
◆ getDistanceSign()
ESign getDistanceSign |
( |
const HoughBox & |
houghBox, |
|
|
float |
x, |
|
|
float |
y, |
|
|
float |
l, |
|
|
float |
= 0 , |
|
|
float |
= 0 , |
|
|
ILayer |
= -1 |
|
) |
| const |
|
inline |
Function that gives the sign of the distance from an observed drift circle to the familiy of curves.
- Returns
- ESign::c_Plus if the drift circle is always on the positive / right site
- ESign::c_Minus means the drift circle is always on the negative / left site
- ESign::c_Zero if the dirft circle lies on any of the curves
- ESign::c_Invalid if the drift cirlce is on the the wrong arm of the curve.
Definition at line 58 of file InPhi0ImpactCurvBox.h.
71 if (xRot[0] < 0 and xRot[1] < 0)
return ESign::c_Invalid;
74 std::array<float, 2> yRot;
75 yRot[0] = -x * phi0Vec[0]->y() + y * phi0Vec[0]->x();
76 yRot[1] = -x * phi0Vec[1]->y() + y * phi0Vec[1]->x();
78 const std::array<ContinuousImpact, 2>& impact = houghBox.getBounds<ContinuousImpact>();
81 std::array<float, 4> yRotMinusI;
82 yRotMinusI[0b00] = yRot[0] - impact[0];
83 yRotMinusI[0b01] = yRot[0] - impact[1];
84 yRotMinusI[0b10] = yRot[1] - impact[0];
85 yRotMinusI[0b11] = yRot[1] - impact[1];
87 const float l2 = l * l;
88 std::array<float, 4> r2MinusI;
89 r2MinusI[0b00] = xRot[0] * xRot[0] + yRotMinusI[0b00] * yRotMinusI[0b00] - l2;
90 r2MinusI[0b01] = xRot[0] * xRot[0] + yRotMinusI[0b01] * yRotMinusI[0b01] - l2;
91 r2MinusI[0b10] = xRot[1] * xRot[1] + yRotMinusI[0b10] * yRotMinusI[0b10] - l2;
92 r2MinusI[0b11] = xRot[1] * xRot[1] + yRotMinusI[0b11] * yRotMinusI[0b11] - l2;
96 std::array<ESign, 2> distSign;
98 std::array<float, 4> dist;
99 float curvHalf =
static_cast<float>(curv[
c_Curv]) / 2;
100 dist[0b00] = - yRotMinusI[0b00] + r2MinusI[0b00] * curvHalf - l;
101 dist[0b01] = - yRotMinusI[0b01] + r2MinusI[0b01] * curvHalf - l;
102 dist[0b10] = - yRotMinusI[0b10] + r2MinusI[0b10] * curvHalf - l;
103 dist[0b11] = - yRotMinusI[0b11] + r2MinusI[0b11] * curvHalf - l;
The documentation for this class was generated from the following file: