9#ifndef TRKVOLUMES_BEVELLEDCYLINDERVOLUMESBOUNDS_H
10#define TRKVOLUMES_BEVELLEDCYLINDERVOLUMESBOUNDS_H
33 double deltax = xprime-
px;
36 segLength = sqrt(deltax*deltax+deltay*deltay);
43 class TrapezoidBounds;
44 class RectangleBounds;
130 bool forceInside=
false)
const override;
160 MsgStream&
dump(MsgStream& sl)
const override;
163 std::ostream&
dump(std::ostream& sl)
const override;
183 std::shared_ptr<DiscBounds>
discBounds()
const;
192#ifdef TRKDETDESCR_USEFLOATPRECISON
202#ifdef TRKDETDESCR_USEFLOATPRECISON
222 double ros = pos.perp();
224 double cphi = cos(pos.phi());
225 bool insideR = insidePhi;
Cached unique_ptr with atomic update.
Different Accessor types for a cylindrical Volume, if returs accessors to the volume boundary surface...
std::shared_ptr< RectangleBounds > outerBevelledPlaneBounds() const
This method returns the associated BevelledCylinderBounds of the outer BevelledCylinderSurfaces.
std::shared_ptr< DiscBounds > discBounds() const
This method returns the associated DiscBounds for the bottom/top DiscSurface.
void createBoundarySurfaceAccessors()
Private method to construct the accessors.
virtual std::vector< std::unique_ptr< Trk::Surface > > decomposeToSurfaces(const Amg::Transform3D &transform) override
Method to decompose the Bounds into boundarySurfaces.
std::shared_ptr< EllipseBounds > bottomEllipseBounds() const
This method returns the associated EllipseBounds for the bottom/top EllipseSurface.
virtual ~BevelledCylinderVolumeBounds()
Destructor.
Volume * subtractedVolume() const
This method returns the bevelled area volume.
int type() const
This method returns the type.
double thetaPlus() const
This method returns the thetaPlus.
ObjectAccessor boundarySurfaceAccessor(const Amg::Vector3D &gp, const Amg::Vector3D &dir, bool forceInside=false) const override
Provide accessor for BoundarySurfaces.
double deltaRadius() const
This method returns the delta radius.
std::shared_ptr< RectangleBounds > innerBevelledPlaneBounds() const
This method returns the associated plane surface bounds of the inner bevelled surface.
static const double s_numericalStable
numerical stability
CxxUtils::CachedUniquePtr< Trk::Volume > m_subtractedVolume
double halflengthZ() const
This method returns the halflengthZ.
double mediumRadius() const
This method returns the medium radius.
double innerRadius() const
This method returns the inner radius.
std::shared_ptr< TrapezoidBounds > sectorTrdBounds() const
This method returns the associated PlaneBounds limiting a sectoral BevelledCylinderVolume.
BevelledCylinderVolumeBounds & operator=(const BevelledCylinderVolumeBounds &cylbo)
Assignment operator.
std::shared_ptr< CylinderBounds > outerBevelledCylinderBounds() const
This method returns the associated BevelledCylinderBounds of the outer BevelledCylinderSurfaces.
std::shared_ptr< CylinderBounds > outerCylinderBounds() const
This method returns the associated CylinderBounds of the outer CylinderSurfaces.
std::shared_ptr< RectangleBounds > sectorPlaneBounds() const
double outerRadius() const
This method returns the outer radius.
std::shared_ptr< EllipseBounds > topEllipseBounds() const
This method returns the associated EllipseBounds for the bottom/top EllipseSurface.
double halfPhiSector() const
This method returns the halfPhiSector angle.
std::shared_ptr< CylinderBounds > innerBevelledCylinderBounds() const
This method returns the associated BevelledCylinderBounds of the inner BevelledCylinderSurfaces.
BevelledCylinderVolumeBounds()
Default Constructor.
BevelledCylinderVolumeBoundaryAccessors m_boundaryAccessors
Accessors for Boundary surface access - static is not possible due to mismatched delete() / free () w...
bool inside(const Amg::Vector3D &, double tol=0.) const override
This method checks if position in the 3D volume frame is inside the cylinder.
BevelledCylinderVolumeBounds * clone() const override
Virtual constructor.
std::shared_ptr< CylinderBounds > innerCylinderBounds() const
This method returns the associated CylinderBounds of the inner CylinderSurfaces.
double thetaMinus() const
This method returns the thetaMinus.
VolumeBounds()
Default Constructor.
Base class for all volumes inside the tracking realm, it defines the interface for inherited Volume c...
Eigen::Affine3d Transform3D
Eigen::Matrix< double, 3, 1 > Vector3D
CachedUniquePtrT< const T > CachedUniquePtr
Ensure that the ATLAS eigen extensions are properly loaded.
double segLength
length of the line segment
double yOfX
the result of x
BevelledBoundaryIntersector(double px, double py, double k, double xprime)