12 #include <tracking/trackFindingCDC/eventdata/segments/CDCSegment2D.h>
13 #include <tracking/trackFindingCDC/eventdata/trajectories/CDCTrajectory2D.h>
14 #include <tracking/trackFindingCDC/hough/phi0_curv/Phi0CurvBox.h>
15 #include <tracking/trackFindingCDC/geometry/Vector2D.h>
22 namespace TrackFindingCDC {
28 class SegmentInPhi0CurvBox {
38 const Phi0CurvBox* phi0CurvBox)
40 if (segment->empty())
return NAN;
41 const CDCTrajectory2D& trajectory2D = segment->getTrajectory2D();
42 Weight weight =
operator()(&trajectory2D, phi0CurvBox);
43 return weight * segment->size();
51 const Phi0CurvBox* phi0CurvBox)
54 const Vector2D& phi0Vec = trajectory2D->getStartUnitMom2D();
66 const Phi0CurvBox* phi0CurvBox)
71 const Vector2D phiVec = line.tangential().unit();
88 const double curvature,
89 const Phi0CurvBox* phi0CurvBox)
92 const Vector2D& lowerPhi0Vec = phi0CurvBox->getLowerPhi0Vec();
93 const Vector2D& upperPhi0Vec = phi0CurvBox->getUpperPhi0Vec();
96 if (phi0CurvBox->isIn<1>(curvature)) {
97 return phi0Vec.
isBetween(lowerPhi0Vec, upperPhi0Vec);
99 }
else if (phi0CurvBox->isIn<1>(-curvature)) {
100 return (-phi0Vec).isBetween(lowerPhi0Vec, upperPhi0Vec);