9#ifndef TRKVOLUMES_TRAPEZOIDVOLUMESBOUNDS_H
10#define TRKVOLUMES_TRAPEZOIDVOLUMESBOUNDS_H
93 bool forceInside = false)
const override;
114 MsgStream&
dump(MsgStream& sl)
const override final;
Eigen::Affine3d Transform3D
Bounds for a rectangular, planar surface.
Abstract Base Class for tracking surfaces.
Bounds for a trapezoidal, planar Surface.
double halflengthZ() const
This method returns the halflength in local z.
double m_halfZ
halflength in z
std::shared_ptr< RectangleBounds > faceAlphaRectangleBounds() const
This method returns the associated RecantleBounds of the face PlaneSurface attached to alpha (negativ...
ObjectAccessor boundarySurfaceAccessor(const Amg::Vector3D &gp, const Amg::Vector3D &dir, bool forceInside=false) const override
Provide accessor for BoundarySurfaces.
std::shared_ptr< RectangleBounds > faceZXRectangleBoundsBottom() const
This method returns the associated RecantleBounds of the face PlaneSurface parallel to local zx plane...
double minHalflengthX() const
This method returns the minimal halflength in local x.
double halflengthY() const
This method returns the halflength in local y.
virtual std::vector< std::unique_ptr< Trk::Surface > > decomposeToSurfaces(const Amg::Transform3D &transform) override final
Method to decompose the Bounds into Surfaces.
double m_alpha
opening angle alpha (in point A)
SixObjectsAccessor m_objectAccessor
There's only one single object Acessor for the moment has to be implemented if Cuboids are used more ...
TrapezoidVolumeBounds()
Default Constructor.
std::shared_ptr< RectangleBounds > faceZXRectangleBoundsTop() const
This method returns the associated RecantleBounds of the face PlaneSurface parallel to local zx plane...
double alpha() const
This method returns the opening angle in point A (negative local x)
std::shared_ptr< TrapezoidBounds > faceXYTrapezoidBounds() const
This method returns the associated TrapezoidBounds of the face PlaneSurface parallel to local xy plan...
TrapezoidVolumeBounds & operator=(const TrapezoidVolumeBounds &bobo)
Assignment operator.
double m_maxHalfX
maximal halflength in x
double m_beta
opening angle beta (in point B)
virtual ~TrapezoidVolumeBounds()
Destructor.
double m_minHalfX
minimal halflength in x
double m_halfY
halflength in y
double beta() const
This method returns the opening angle in point B (negative local x)
std::shared_ptr< RectangleBounds > faceBetaRectangleBounds() const
This method returns the associated RecantleBounds of the face PlaneSurface attached to beta (positive...
double maxHalflengthX() const
This method returns the maximal halflength in local x.
bool inside(const Amg::Vector3D &, double tol=0.) const override final
This method checks if position in the 3D volume frame is inside the cylinder.
TrapezoidVolumeBounds * clone() const override final
Virtual constructor.
VolumeBounds()
Default Constructor.
Definition of ATLAS Math & Geometry primitives (Amg)
Eigen::Matrix< double, 3, 1 > Vector3D
Ensure that the ATLAS eigen extensions are properly loaded.
std::array< ObjectAccessor::value_type, 6 > SixObjectsAccessor