12 #include <tracking/trackFindingCDC/hough/boxes/Box.h>
13 #include <tracking/trackFindingCDC/topology/ILayer.h>
23 namespace TrackFindingCDC {
26 class InPhi0ImpactBox {
55 const std::array<DiscretePhi0, 2>& phi0Vec = houghBox.getBounds<
DiscretePhi0>();
56 const std::array<ContinuousImpact, 2>& impact = houghBox.getBounds<
ContinuousImpact>();
58 std::array<float, 2> xRot;
59 xRot[0] = x * phi0Vec[0]->x() + y * phi0Vec[0]->y();
60 xRot[1] = x * phi0Vec[1]->x() + y * phi0Vec[1]->y();
63 if (onlyPositiveArm) {
65 if (xRot[0] < 0 and xRot[1] < 0)
return ESign::c_Invalid;
68 std::array<float, 2> yRotPlusL;
69 yRotPlusL[0] = -x * phi0Vec[0]->y() + y * phi0Vec[0]->x() + l;
70 yRotPlusL[1] = -x * phi0Vec[1]->y() + y * phi0Vec[1]->x() + l;
73 std::array<float, 4> dist;
74 dist[0b00] = yRotPlusL[0] -
static_cast<float>(impact[0]);
75 dist[0b10] = yRotPlusL[1] -
static_cast<float>(impact[0]);
76 dist[0b01] = yRotPlusL[0] -
static_cast<float>(impact[1]);
77 dist[0b11] = yRotPlusL[1] -
static_cast<float>(impact[1]);