10#include <tracking/trackFindingCDC/eventdata/segments/CDCSegment2D.h>
11#include <tracking/trackFindingCDC/eventdata/trajectories/CDCTrajectory2D.h>
12#include <tracking/trackFindingCDC/hough/phi0_curv/Phi0CurvBox.h>
13#include <tracking/trackFindingCDC/geometry/Vector2D.h>
20 namespace TrackFindingCDC {
36 const Phi0CurvBox* phi0CurvBox)
38 if (segment->empty())
return NAN;
40 Weight weight =
operator()(&trajectory2D, phi0CurvBox);
41 return weight * segment->size();
49 const Phi0CurvBox* phi0CurvBox)
52 const Vector2D& phi0Vec = trajectory2D->getStartUnitMom2D();
64 const Phi0CurvBox* phi0CurvBox)
69 const Vector2D phiVec = line.tangential().unit();
86 const double curvature,
87 const Phi0CurvBox* phi0CurvBox)
90 const Vector2D& lowerPhi0Vec = phi0CurvBox->getLowerPhi0Vec();
91 const Vector2D& upperPhi0Vec = phi0CurvBox->getUpperPhi0Vec();
94 if (phi0CurvBox->isIn<1>(curvature)) {
95 return phi0Vec.
isBetween(lowerPhi0Vec, upperPhi0Vec);
97 }
else if (phi0CurvBox->isIn<1>(-curvature)) {
98 return (-phi0Vec).isBetween(lowerPhi0Vec, upperPhi0Vec);
Class representing a triple of neighboring oriented wire with additional trajectory information.
ParameterLine2D getStartToEndLine() const
Getter for the tangential line from the first to the third hit.
Vector2D getMiddleRecoPos2D() const
Getter for the reconstructed position at the second hit on the fit line.
A reconstructed sequence of two dimensional hits in one super layer.
Particle trajectory as it is seen in xy projection represented as a circle.
double getCurvature() const
Getter for the curvature as seen from the xy projection.
A line with a support point and tangential vector.
Predicate class to check for the containment of segments in a phi0 curv hough space part.
bool isPhi0CurvPointIn(const Vector2D &phi0Vec, const double curvature, const Phi0CurvBox *phi0CurvBox)
Predicate checking if the phi0 vector and curvature are contained in the given box.
Weight operator()(const CDCSegment2D *segment, const Phi0CurvBox *phi0CurvBox)
Checks if the segment is contained in a phi0 curv hough space.
Weight operator()(const CDCTrajectory2D *trajectory2D, const Phi0CurvBox *phi0CurvBox)
Checks if the given trajectory is considered part of the hough box in phi0, curvature space.
Weight operator()(const CDCFacet *facet, const Phi0CurvBox *phi0CurvBox)
Checks if the given hit triplet is considered part of the hough box in phi0, curvature space.
A two dimensional vector which is equipped with functions for correct handling of orientation relate...
double cross(const Vector2D &rhs) const
Calculated the two dimensional cross product.
bool isBetween(const Vector2D &lower, const Vector2D &upper) const
Checks if this vector is between two other vectors Between means here that when rotating the lower ve...
double normSquared() const
Calculates .
Vector2D flippedOver(const Vector2D &reflectionLine) const
Reflects this vector over line designated by the given vector.
Abstract base class for different kinds of events.