10#ifndef TRKSURFACES_ELLIPSEBOUNDS_H
11#define TRKSURFACES_ELLIPSEBOUNDS_H
70 EllipseBounds(
double minrad1,
double minrad2,
double maxrad1,
double maxrad2,
double hphisec =
M_PI);
73 EllipseBounds(
double minrad1,
double minrad2,
double maxrad1,
double maxrad2,
double avephi,
double hphisec);
112 virtual
double r()
const override final;
121 virtual MsgStream&
dump(MsgStream& sl)
const override;
154 return (insideInner && insideOuter && insidePhi);
174 return (insideInner && insideOuter);
The BoundaryCheck class allows to steer the way surface boundaries are used for inside/outside checks...
double toleranceLoc2
absolute tolerance in local 2 coordinate
double toleranceLoc1
absolute tolerance in local 1 coordinate
EllipseBounds(const EllipseBounds &discbo)=default
Copy constructor.
double rMinX() const
This method returns first inner radius.
double rMinY() const
This method returns second inner radius.
virtual bool insideLoc1(const Amg::Vector2D &locpo, double tol1=0.) const override final
Check for inside first local coordinate.
virtual double minDistance(const Amg::Vector2D &pos) const override final
Minimal distance to boundary ( > 0 if outside and <=0 if inside)
virtual bool insideLoc2(const Amg::Vector2D &locpo, double tol2=0.) const override final
Check for inside second local coordinate.
EllipseBounds & operator=(const EllipseBounds &discbo)=default
Assignment operator.
virtual ~EllipseBounds()=default
Destructor.
EllipseBounds()
Default Constructor.
virtual BoundsType type() const override final
Return the type of the bounds for persistency.
double averagePhi() const
This method returns the average phi.
std::vector< TDD_real_t > m_boundValues
The internal storage of the bounds can be float/double.
double rMaxY() const
This method returns second outer radius.
virtual bool operator==(const SurfaceBounds &sbo) const override
Equality operator.
EllipseBounds(EllipseBounds &&discbo) noexcept=default
Move constructor.
double halfPhiSector() const
This method returns the halfPhiSector which is covered by the disc.
double rMaxX() const
This method returns first outer radius.
virtual EllipseBounds * clone() const override final
Virtual constructor.
virtual double r() const override final
This method returns the maximum expansion on the plane (=max(rMaxX,rMaxY))
virtual bool inside(const Amg::Vector2D &locpo, double tol1=0., double tol2=0.) const override final
This method checks if the point given in the local coordinates is between two ellipsoids if only tol1...
double square(double x) const
helper function for squaring
EllipseBounds & operator=(EllipseBounds &&discbo) noexcept=default
Move assignment operator.
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.