ACTS
Experiment-independent tracking
Loading...
Searching...
No Matches
Acts::VolumeBounds Class Referenceabstract

Pure Absract Base Class for Volume bounds. More...

#include <Acts/Geometry/VolumeBounds.hpp>

Inheritance diagram for Acts::VolumeBounds:
[legend]
Collaboration diagram for Acts::VolumeBounds:
[legend]

Public Types

enum class  BoundsType {
  eCone , eCuboid , eCutoutCylinder , eCylinder ,
  eGenericCuboid , eTrapezoid , eDiamond , eOther
}
 This is nested to the VolumeBounds, as also SurfaceBounds will have Bounds Type. More...

Public Member Functions

 VolumeBounds ()=default
virtual ~VolumeBounds ()=default
virtual Volume::BoundingBox boundingBox (const Transform3 *trf=nullptr, const Vector3 &envelope={0, 0, 0}, const Volume *entity=nullptr) const =0
 Construct bounding box for this shape.
virtual std::vector< AxisDirectioncanonicalAxes () const
 Get the canonical axis direction that fully describe the shape's extent.
virtual bool inside (const Vector3 &gpos, double tol=0.) const =0
 Checking if position given in volume frame is inside.
virtual std::vector< OrientedSurfaceorientedSurfaces (const Transform3 &transform=Transform3::Identity()) const =0
 Oriented surfaces, i.e.
virtual double referenceBorder (AxisDirection aDir) const
 Binning borders in double.
virtual Vector3 referenceOffset (AxisDirection aDir) const
 Binning offset - overloaded for some R-binning types.
virtual std::ostream & toStream (std::ostream &sl) const =0
 Output Method for std::ostream, to be overloaded by child classes.
virtual BoundsType type () const =0
 Return the bounds type - for persistency optimization.
virtual std::vector< double > values () const =0
 Access method for bound values, this is a dynamically sized vector containing the parameters needed to describe these bounds.

Static Public Attributes

static const std::vector< std::string > s_boundsTypeNames
 Static member to get the name of the BoundsType.

Detailed Description

Pure Absract Base Class for Volume bounds.

Acts::VolumeBounds are a set of up to six confining Surfaces that are stored in a std::vector. Each type of Acts::VolumeBounds has to implement a orientedSurfaces() and a inside() method.

The Volume, retrieving a set of Surfaces from the VolumeBounds, can turn the Surfaces into BoundarySurfaces.

Member Enumeration Documentation

◆ BoundsType

enum class Acts::VolumeBounds::BoundsType
strong

This is nested to the VolumeBounds, as also SurfaceBounds will have Bounds Type.

Enumerator
eCone 
eCuboid 
eCutoutCylinder 
eCylinder 
eGenericCuboid 
eTrapezoid 
eDiamond 
eOther 

Constructor & Destructor Documentation

◆ VolumeBounds()

Acts::VolumeBounds::VolumeBounds ( )
default

◆ ~VolumeBounds()

virtual Acts::VolumeBounds::~VolumeBounds ( )
virtualdefault

Member Function Documentation

◆ boundingBox()

virtual Volume::BoundingBox Acts::VolumeBounds::boundingBox ( const Transform3 * trf = nullptr,
const Vector3 & envelope = {0, 0, 0},
const Volume * entity = nullptr ) const
pure virtual

Construct bounding box for this shape.

Parameters
trfOptional transform
envelopeOptional envelope to add / subtract from min/max
entityEntity to associate this bounding box with
Returns
Constructed bounding box

Implemented in Acts::ConeVolumeBounds, Acts::CuboidVolumeBounds, Acts::CutoutCylinderVolumeBounds, Acts::CylinderVolumeBounds, Acts::DiamondVolumeBounds, Acts::GenericCuboidVolumeBounds, and Acts::TrapezoidVolumeBounds.

◆ canonicalAxes()

virtual std::vector< AxisDirection > Acts::VolumeBounds::canonicalAxes ( ) const
virtual

Get the canonical axis direction that fully describe the shape's extent.

Returns
vector of canonical axis directions
Note
This is the default implementation that returns the bounding box binning. Individual shapes should override this method

Reimplemented in Acts::CuboidVolumeBounds, Acts::CutoutCylinderVolumeBounds, Acts::CylinderVolumeBounds, and Acts::GenericCuboidVolumeBounds.

◆ inside()

virtual bool Acts::VolumeBounds::inside ( const Vector3 & gpos,
double tol = 0. ) const
pure virtual

Checking if position given in volume frame is inside.

Parameters
gposis the global position to be checked
tolis the tolerance applied for the inside check
Returns
boolean indicating if the position is inside

Implemented in Acts::ConeVolumeBounds, Acts::CuboidVolumeBounds, Acts::CutoutCylinderVolumeBounds, Acts::CylinderVolumeBounds, Acts::DiamondVolumeBounds, Acts::GenericCuboidVolumeBounds, and Acts::TrapezoidVolumeBounds.

◆ orientedSurfaces()

virtual std::vector< OrientedSurface > Acts::VolumeBounds::orientedSurfaces ( const Transform3 & transform = Transform3::Identity()) const
pure virtual

Oriented surfaces, i.e.

the decomposed boundary surfaces and the according navigation direction into the volume given the normal vector on the surface

Parameters
transformis the 3D transform to be applied to the boundary surfaces to position them in 3D space

It will throw an exception if the orientation prescription is not adequate

Returns
a vector of surfaces bounding this volume

Implemented in Acts::ConeVolumeBounds, Acts::CuboidVolumeBounds, Acts::CutoutCylinderVolumeBounds, Acts::CylinderVolumeBounds, Acts::DiamondVolumeBounds, Acts::GenericCuboidVolumeBounds, and Acts::TrapezoidVolumeBounds.

◆ referenceBorder()

double Acts::VolumeBounds::referenceBorder ( AxisDirection aDir) const
virtual

Binning borders in double.

Parameters
aDiris the binning schema used
Returns
float offset to be used for the binning

Reimplemented in Acts::CuboidVolumeBounds, and Acts::CylinderVolumeBounds.

◆ referenceOffset()

Vector3 Acts::VolumeBounds::referenceOffset ( AxisDirection aDir) const
virtual

Binning offset - overloaded for some R-binning types.

Parameters
aDiris the binning schema used
Returns
vector 3D to be used for the binning

Reimplemented in Acts::CylinderVolumeBounds.

◆ toStream()

virtual std::ostream & Acts::VolumeBounds::toStream ( std::ostream & sl) const
pure virtual

Output Method for std::ostream, to be overloaded by child classes.

Parameters
slis the output stream to be dumped into
Returns
Modified ostream for chaining

Implemented in Acts::ConeVolumeBounds, Acts::CuboidVolumeBounds, Acts::CutoutCylinderVolumeBounds, Acts::CylinderVolumeBounds, Acts::DiamondVolumeBounds, Acts::GenericCuboidVolumeBounds, and Acts::TrapezoidVolumeBounds.

◆ type()

virtual BoundsType Acts::VolumeBounds::type ( ) const
pure virtual

◆ values()

virtual std::vector< double > Acts::VolumeBounds::values ( ) const
pure virtual

Access method for bound values, this is a dynamically sized vector containing the parameters needed to describe these bounds.

Returns
of the stored values for this SurfaceBounds object

Implemented in Acts::ConeVolumeBounds, Acts::CuboidVolumeBounds, Acts::CutoutCylinderVolumeBounds, Acts::CylinderVolumeBounds, Acts::DiamondVolumeBounds, Acts::GenericCuboidVolumeBounds, and Acts::TrapezoidVolumeBounds.

Member Data Documentation

◆ s_boundsTypeNames

const std::vector<std::string> Acts::VolumeBounds::s_boundsTypeNames
static

Static member to get the name of the BoundsType.