9#ifndef TRKSURFACES_ANNULUSBOUNDS_H
10#define TRKSURFACES_ANNULUSBOUNDS_H
22#ifdef TRKDETDESCR_USEFLOATPRECISON
116 std::array<std::pair<double, double>, 4>
corners()
const;
119 virtual double r()
const override;
171 virtual MsgStream&
dump(MsgStream& sl)
const override;
193 static
bool isAbove(
const Amg::Vector2D& locpo,
double tol1,
double tol2,
double x1,
double y1,
double x2,
double y2) ;
195 static
bool isRight(
const Amg::Vector2D& locpo,
double tol1,
double tol2,
double x1,
double y1,
double x2,
double y2) ;
197 static
bool isLeft(
const Amg::Vector2D& locpo,
double tol1,
double tol2,
double x1,
double y1,
double x2,
double y2) ;
249#include "TrkSurfaces/AnnulusBounds.icc"
Header file for AthHistogramAlgorithm.
AnnulusBounds(const AnnulusBounds &annbo)=default
Copy constructor.
static bool isAbove(const Amg::Vector2D &locpo, double tol1, double tol2, double x1, double y1, double x2, double y2)
isAbove() method for checking whether a point lies above or under a straight line
AnnulusBounds & operator=(const AnnulusBounds &sbo)=default
Assignment operator.
double minR() const
This method returns the smaller radius.
bool operator==(const SurfaceBounds &annbo) const override
Equality operator.
double maxR() const
This method returns the bigger radius.
static std::vector< double > circleLineIntersection(double R, double k, double d)
Circle and line intersection.
virtual double minDistance(const Amg::Vector2D &pos) const override final
Minimal distance to boundary ( > 0 if outside and <=0 if inside)
static double distanceToLine(const Amg::Vector2D &locpo, const std::vector< TDD_real_t > &P1, const std::vector< TDD_real_t > &P2)
Distance to line.
static bool isLeft(const Amg::Vector2D &locpo, double tol1, double tol2, double x1, double y1, double x2, double y2)
virtual bool inside(const Amg::Vector2D &locpo, double tol1=0., double tol2=0.) const override final
This method returns the opening angle alpha in point A (negative local phi)
virtual AnnulusBounds * clone() const override
Virtual constructor.
std::array< TDD_real_t, 4 > getEdgeLines() const
Returns the gradient and y-intercept of the left and right module edges.
static bool EllipseIntersectLine(const Amg::Vector2D &locpo, double h, double k, double x1, double y1, double x2, double y2)
AnnulusBounds(AnnulusBounds &&annbo)=default
Move constructor.
const std::vector< TDD_real_t > & getBoundsValues() const
virtual ~AnnulusBounds()=default
Destructor.
std::vector< TDD_real_t > m_solution_L_min
std::vector< TDD_real_t > m_solution_R_max
double phiS() const
This method returns the tilt angle.
virtual BoundsType type() const override
Return the type of the bounds for persistency.
double phi() const
This method returns the opening angle.
virtual double r() const override
This method returns the maximal extension on the local plane.
BoundValues
NB bv_R is the radius of the wafer centre which may different from the assumed surface centre.
std::vector< TDD_real_t > m_solution_R_min
virtual bool insideLoc2(const Amg::Vector2D &locpo, double tol2=0.) const override final
This method checks inside bounds in loc2.
static bool isRight(const Amg::Vector2D &locpo, double tol1, double tol2, double x1, double y1, double x2, double y2)
virtual bool insideLoc1(const Amg::Vector2D &locpo, double tol1=0.) const override final
This method checks inside bounds in loc1.
AnnulusBounds()
Default Constructor, needed for persistency.
AnnulusBounds & operator=(AnnulusBounds &&sbo)=default
Move assignment.
static double distanceToArc(const Amg::Vector2D &locpo, double R, const std::vector< TDD_real_t > &sL, const std::vector< TDD_real_t > &sR)
Distance to arc.
double waferCentreR() const
This method returns the R-parameter from design of sensors, which is the radius that the original cen...
std::vector< TDD_real_t > m_solution_L_max
std::array< std::pair< double, double >, 4 > corners() const
Returns the four corners of the bounds.
std::vector< TDD_real_t > m_boundValues
The BoundaryCheck class allows to steer the way surface boundaries are used for inside/outside checks...
Abstract base class for surface bounds to be specified.
SurfaceBounds()=default
Default Constructor.
BoundsType
This enumerator simplifies the persistency, by saving a dynamic_cast to happen.
Definition of ATLAS Math & Geometry primitives (Amg)
Eigen::Matrix< double, 2, 1 > Vector2D
Ensure that the ATLAS eigen extensions are properly loaded.