9#ifndef TRKVOLUMES_CYLINDERVOLUMESBOUNDS_H
10#define TRKVOLUMES_CYLINDERVOLUMESBOUNDS_H
108 bool forceInside = false)
const override final;
129 MsgStream&
dump(MsgStream& sl)
const override final;
177 double ros = pos.perp();
183 bool insideZ = insideR ? (fabs(pos.z()) <=
m_halfZ + tol) :
false;
184 return (insideZ && insideR && insidePhi);
Eigen::Affine3d Transform3D
Bounds for a cylindrical Surface.
Different Accessor types for a cylindrical Volume, if returs accessors to the volume boundary surface...
double mediumRadius() const
This method returns the medium radius.
virtual std::vector< std::unique_ptr< Trk::Surface > > decomposeToSurfaces(const Amg::Transform3D &transform) override final
Method to decompose the Bounds into boundarySurfaces.
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.
CylinderVolumeBoundaryAccessors m_boundaryAccessors
Accessors for Boundary surface access - static is not possible due to mismatched delete() / free () w...
virtual ~CylinderVolumeBounds()
Destructor.
double innerRadius() const
This method returns the inner radius.
double halflengthZ() const
This method returns the halflengthZ.
double deltaRadius() const
This method returns the delta radius.
static const double s_numericalStable
numerical stability
std::shared_ptr< CylinderBounds > outerCylinderBounds() const
This method returns the associated CylinderBounds of the outer CylinderSurfaces.
void createBoundarySurfaceAccessors()
Private method to construct the accessors.
std::shared_ptr< DiscBounds > bottomDiscBounds() const
This method returns the associated DiscBounds for the bottom/top DiscSurface.
CylinderVolumeBounds & operator=(const CylinderVolumeBounds &cylbo)
Assignment operator.
CylinderVolumeBounds()
Default Constructor.
double outerRadius() const
This method returns the outer radius.
std::shared_ptr< DiscBounds > topDiscBounds() const
This method returns the associated DiscBounds for the bottom/top DiscSurface.
double halfPhiSector() const
This method returns the halfPhiSector angle.
CylinderVolumeBounds * clone() const override
Virtual constructor.
ObjectAccessor boundarySurfaceAccessor(const Amg::Vector3D &gp, const Amg::Vector3D &dir, bool forceInside=false) const override final
Provide accessor for BoundarySurfaces.
std::shared_ptr< CylinderBounds > innerCylinderBounds() const
This method returns the associated CylinderBounds of the inner CylinderSurfaces.
std::shared_ptr< RectangleBounds > sectorPlaneBounds() const
This method returns the associated PlaneBounds limiting a sectoral CylinderVolume.
Class to describe the bounds for a planar DiscSurface.
Bounds for a rectangular, planar surface.
Abstract Base Class for tracking surfaces.
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.