9#ifndef TRKVOLUMES_DOUBLETRAPEZOIDVOLUMESBOUNDS_H
10#define TRKVOLUMES_DOUBLETRAPEZOIDVOLUMESBOUNDS_H
74 double maxhlengthx,
double hlenghty1,
75 double hlenghty2,
double hlengthz);
101 bool forceInside = false)
const override final;
128 MsgStream&
dump(MsgStream& sl)
const override final;
155#ifdef TRKDETDESCR_USEFLOATPRECISON
167#ifdef TRKDETDESCR_USEFLOATPRECISON
Eigen::Affine3d Transform3D
Bounds for a double trapezoidal ("diamond"), planar Surface.
double minHalflengthX() const
This method returns the X halflength at minimal Y.
std::shared_ptr< DiamondBounds > faceXYDiamondBounds() const
This method returns the associated DoubleTrapezoidBounds of the face PlaneSurface parallel to local x...
double m_alpha1
opening angle alpha (in point A)
double alpha2() const
This method returns the opening angle in point A' (negative local x)
Trk::EightObjectsAccessor m_objectAccessor
There's only one single object Acessor for the moment has to be implemented if Cuboids are used more ...
DoubleTrapezoidVolumeBounds & operator=(const DoubleTrapezoidVolumeBounds &bobo)
Assignment operator.
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.
double m_medHalfX
maximal halflength in x
double m_alpha2
opening angle alpha (in point A')
std::shared_ptr< RectangleBounds > faceBeta1RectangleBounds() const
This method returns the associated RecantleBounds of the face PlaneSurface attached to beta (positive...
double halflengthZ() const
This method returns the halflength in local z.
double m_minHalfX
minimal Y halflength in x
DoubleTrapezoidVolumeBounds * clone() const override final
Virtual constructor.
std::shared_ptr< RectangleBounds > faceZXRectangleBoundsBottom() const
This method returns the associated RecantleBounds of the face PlaneSurface parallel to local zx plane...
virtual std::vector< std::unique_ptr< Trk::Surface > > decomposeToSurfaces(const Amg::Transform3D &transform) override final
Method to decompose the Bounds into Surfaces.
double m_halfZ
halflength in z
DoubleTrapezoidVolumeBounds()
Default Constructor.
double m_halfY2
halflength in y
double halflengthY1() const
This method returns the halflength1 in local y.
std::shared_ptr< RectangleBounds > faceZXRectangleBoundsTop() const
This method returns the associated RecantleBounds of the face PlaneSurface parallel to local zx plane...
double alpha1() const
This method returns the opening angle in point A (negative local x)
double halflengthY2() const
This method returns the halflength2 in local y.
double m_halfY1
halflength in y
double m_maxHalfX
maximal Y halflength in x
std::shared_ptr< RectangleBounds > faceAlpha2RectangleBounds() const
double maxHalflengthX() const
This method returns the X halflength at maximal Y (local coordinates)
std::shared_ptr< RectangleBounds > faceBeta2RectangleBounds() const
double medHalflengthX() const
This method returns the (maximal) halflength in local x.
ObjectAccessor boundarySurfaceAccessor(const Amg::Vector3D &gp, const Amg::Vector3D &dir, bool forceInside=false) const override final
Provide accessor for BoundarySurfaces.
virtual ~DoubleTrapezoidVolumeBounds()
Destructor.
std::shared_ptr< RectangleBounds > faceAlpha1RectangleBounds() const
This method returns the associated RecantleBounds of the face PlaneSurface attached to alpha (negativ...
Bounds for a rectangular, planar surface.
Abstract Base Class for tracking surfaces.
Bounds for a trapezoidal, planar Surface.
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, 8 > EightObjectsAccessor