ACTS
Experiment-independent tracking
Loading...
Searching...
No Matches
Acts::CylinderVolumeBounds Class Reference

[0] and [1] at positive \( \phi \) More...

#include <Acts/Geometry/CylinderVolumeBounds.hpp>

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

Public Types

enum  BoundValues : unsigned int {
  eMinR = 0 , eMaxR = 1 , eHalfLengthZ = 2 , eHalfPhiSector = 3 ,
  eAveragePhi = 4 , eBevelMinZ = 5 , eBevelMaxZ = 6 , eSize
}
 for streaming and access More...
enum class  Face : unsigned int {
  PositiveDisc = BoundarySurfaceFace::positiveFaceXY , NegativeDisc = BoundarySurfaceFace::negativeFaceXY , OuterCylinder = BoundarySurfaceFace::tubeOuterCover , InnerCylinder = BoundarySurfaceFace::tubeInnerCover ,
  NegativePhiPlane = BoundarySurfaceFace::tubeSectorNegativePhi , PositivePhiPlane = BoundarySurfaceFace::tubeSectorPositivePhi
}
 Enum describing the possible faces of a cylinder volume. More...
Public Types inherited from Acts::VolumeBounds
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

 CylinderVolumeBounds ()=delete
 CylinderVolumeBounds (const CylinderBounds &cBounds, double thickness)
 Constructor - extruded from cylinder bounds and thickness.
 CylinderVolumeBounds (const CylinderVolumeBounds &cylbo)
 Copy Constructor.
 CylinderVolumeBounds (const RadialBounds &rBounds, double thickness)
 Constructor - extruded from radial bounds and thickness.
 CylinderVolumeBounds (const std::array< double, eSize > &values)
 Constructor - from a fixed size array.
 CylinderVolumeBounds (double rmin, double rmax, double halfz, double halfphi=std::numbers::pi, double avgphi=0., double bevelMinZ=0., double bevelMaxZ=0.)
 Constructor.
 ~CylinderVolumeBounds () override=default
Volume::BoundingBox boundingBox (const Transform3 *trf=nullptr, const Vector3 &envelope={0, 0, 0}, const Volume *entity=nullptr) const final
 Construct bounding box for this shape.
std::vector< AxisDirectioncanonicalAxes () const override
 Get the canonical binning directions, i.e.
double get (BoundValues bValue) const
 Access to the bound values.
bool inside (const Vector3 &pos, double tol=0.) const override
 This method checks if position in the 3D volume frame is inside the cylinder.
CylinderVolumeBoundsoperator= (const CylinderVolumeBounds &cylbo)=default
 Assignment operator.
std::vector< OrientedSurfaceorientedSurfaces (const Transform3 &transform=Transform3::Identity()) const override
 Oriented surfaces, i.e.
double referenceBorder (AxisDirection aDir) const override
 Binning borders in double.
Vector3 referenceOffset (AxisDirection aDir) const override
 Binning offset - overloaded for some R-binning types.
void set (BoundValues bValue, double value)
 Set a bound value.
void set (std::initializer_list< std::pair< BoundValues, double > > keyValues)
 Set a range of bound values.
std::ostream & toStream (std::ostream &os) const override
 Output Method for std::ostream.
VolumeBounds::BoundsType type () const final
 Return the bounds type - for persistency optimization.
std::vector< double > values () const final
 Return the bound values as dynamically sized vector.
Public Member Functions inherited from Acts::VolumeBounds
 VolumeBounds ()=default
virtual ~VolumeBounds ()=default

Additional Inherited Members

Static Public Attributes inherited from Acts::VolumeBounds
static const std::vector< std::string > s_boundsTypeNames
 Static member to get the name of the BoundsType.

Detailed Description

[0] and [1] at positive \( \phi \)

Bounds for a cylindrical Volume, the orientedSurfaces(..) method creates a vector of up to 6 surfaces:

case A) 3 Surfaces (full cylindrical tube): BoundarySurfaceFace [index]:

  • negativeFaceXY [0] : Acts::DiscSurface with \( r_{inner}=0 \), parallel to \( xy \) plane at negative \( z\)
  • positiveFaceXY [1] : Acts::DiscSurface with \( r_{inner}=0 \), parallel to \( xy \) plane at positive \( z\)
  • cylinderCover [2] : Acts::CylinderSurface confining the Acts::Volume

case B) 4 Surfaces (tube with inner and outer radius): BoundarySurfaceFace [index]:

  • negativeFaceXY [0] : Acts::DiscSurface with \( r_{inner}>0 \), parallel to \( xy \) plane at negative \( z\)
  • positiveFaceXY [1] : Acts::DiscSurface with \( r_{inner}>0 \), parallel to \( xy \) plane at positive \( z\)
  • tubeOuterCover [2] : Acts::CylinderSurface with \( r = r_{outer} \)
  • tubeInnerCover [3] : Acts::CylinderSurface with \( r = r_{inner} \)

case C) 6 Surfaces (sectoral tube with inner and outer radius): BoundarySurfaceFace [index]:

  • negativeFaceXY [0] : Acts::DiscSurface with \( r_{inner}>0\) and \( \phi < \pi \), parallel to \( xy \) plane at negative \(z\)
  • positiveFaceXY [1] : Acts::DiscSurface with \( r_{inner}>0 \) and \( \phi < \pi \), parallel to \( xy \) plane at positive \(z\)
  • tubeSectorOuterCover [2] : Acts::CylinderSurface with \( r = r_{outer}\)
  • tubeSectorInnerCover [3] : Acts::CylinderSurface with \( r = r_{inner} \)
  • tubeSectorNegativePhi [4] : Rectangular Acts::PlaneSurface attached to [0] and [1] at negative \( \phi \)
    • tubeSectorNegativePhi [5] :

Member Enumeration Documentation

◆ BoundValues

for streaming and access

Enumerator
eMinR 
eMaxR 
eHalfLengthZ 
eHalfPhiSector 
eAveragePhi 
eBevelMinZ 
eBevelMaxZ 
eSize 

◆ Face

enum class Acts::CylinderVolumeBounds::Face : unsigned int
strong

Enum describing the possible faces of a cylinder volume.

Note
These values are synchronized with the BoundarySurfaceFace enum. Once Gen1 is removed, this can be changed.
Enumerator
PositiveDisc 
NegativeDisc 
OuterCylinder 
InnerCylinder 
NegativePhiPlane 
PositivePhiPlane 

Constructor & Destructor Documentation

◆ CylinderVolumeBounds() [1/6]

Acts::CylinderVolumeBounds::CylinderVolumeBounds ( )
delete

◆ CylinderVolumeBounds() [2/6]

Acts::CylinderVolumeBounds::CylinderVolumeBounds ( double rmin,
double rmax,
double halfz,
double halfphi = std::numbers::pi,
double avgphi = 0.,
double bevelMinZ = 0.,
double bevelMaxZ = 0. )

Constructor.

Parameters
rminThe inner radius of the cylinder
rmaxThe outer radius of the cylinder
halfzThe half length in z
halfphiThe half lopening angle
avgphiThe average phi value
bevelMinZThe bevel angle, in radians, for the negative side
bevelMaxZThe bevel angle, in radians, for the positive side

◆ CylinderVolumeBounds() [3/6]

Acts::CylinderVolumeBounds::CylinderVolumeBounds ( const std::array< double, eSize > & values)
explicit

Constructor - from a fixed size array.

Parameters
valuesThe bound values

◆ CylinderVolumeBounds() [4/6]

Acts::CylinderVolumeBounds::CylinderVolumeBounds ( const CylinderBounds & cBounds,
double thickness )

Constructor - extruded from cylinder bounds and thickness.

Parameters
cBoundsthe cylinder bounds
thicknessof the extrusion

◆ CylinderVolumeBounds() [5/6]

Acts::CylinderVolumeBounds::CylinderVolumeBounds ( const RadialBounds & rBounds,
double thickness )

Constructor - extruded from radial bounds and thickness.

Parameters
rBoundsthe Radial bounds
thickness

◆ CylinderVolumeBounds() [6/6]

Acts::CylinderVolumeBounds::CylinderVolumeBounds ( const CylinderVolumeBounds & cylbo)

Copy Constructor.

Parameters
cylbois the source cylinder volume bounds for the copy

◆ ~CylinderVolumeBounds()

Acts::CylinderVolumeBounds::~CylinderVolumeBounds ( )
overridedefault

Member Function Documentation

◆ boundingBox()

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

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

Implements Acts::VolumeBounds.

◆ canonicalAxes()

std::vector< AxisDirection > Acts::CylinderVolumeBounds::canonicalAxes ( ) const
overridevirtual

Get the canonical binning directions, i.e.

the axis directions that fully describe the shape's extent

Returns
vector of canonical binning values

Reimplemented from Acts::VolumeBounds.

◆ get()

double Acts::CylinderVolumeBounds::get ( BoundValues bValue) const

Access to the bound values.

Parameters
bValuethe class nested enum for the array access
Returns
The requested bound value

◆ inside()

bool Acts::CylinderVolumeBounds::inside ( const Vector3 & pos,
double tol = 0. ) const
overridevirtual

This method checks if position in the 3D volume frame is inside the cylinder.

Parameters
posis a global position to be checked
tolis the tolerance for the check
Returns
True if the position is inside the cylinder bounds

Implements Acts::VolumeBounds.

◆ operator=()

CylinderVolumeBounds & Acts::CylinderVolumeBounds::operator= ( const CylinderVolumeBounds & cylbo)
default

Assignment operator.

Parameters
cylboSource cylinder volume bounds to copy from
Returns
Reference to this object after assignment

◆ orientedSurfaces()

std::vector< OrientedSurface > Acts::CylinderVolumeBounds::orientedSurfaces ( const Transform3 & transform = Transform3::Identity()) const
overridevirtual

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

Implements Acts::VolumeBounds.

◆ referenceBorder()

double Acts::CylinderVolumeBounds::referenceBorder ( AxisDirection aDir) const
overridevirtual

Binning borders in double.

Parameters
aDiris the axis direction used for the binning
Returns
Reference border value for the given axis direction

Reimplemented from Acts::VolumeBounds.

◆ referenceOffset()

Vector3 Acts::CylinderVolumeBounds::referenceOffset ( AxisDirection aDir) const
overridevirtual

Binning offset - overloaded for some R-binning types.

Parameters
aDiris the axis direction used for the binning
Returns
Reference offset vector for the given axis direction

Reimplemented from Acts::VolumeBounds.

◆ set() [1/2]

void Acts::CylinderVolumeBounds::set ( BoundValues bValue,
double value )

Set a bound value.

Parameters
bValuethe bound value identifier
valuethe value to be set

◆ set() [2/2]

void Acts::CylinderVolumeBounds::set ( std::initializer_list< std::pair< BoundValues, double > > keyValues)

Set a range of bound values.

Parameters
keyValuesthe initializer list of key value pairs

◆ toStream()

std::ostream & Acts::CylinderVolumeBounds::toStream ( std::ostream & os) const
overridevirtual

Output Method for std::ostream.

Parameters
osis the output stream
Returns
Reference to the output stream after writing

Implements Acts::VolumeBounds.

◆ type()

VolumeBounds::BoundsType Acts::CylinderVolumeBounds::type ( ) const
finalvirtual

Return the bounds type - for persistency optimization.

Returns
is a BoundsType enum

Implements Acts::VolumeBounds.

◆ values()

std::vector< double > Acts::CylinderVolumeBounds::values ( ) const
finalvirtual

Return the bound values as dynamically sized vector.

Returns
this returns a copy of the internal values

Implements Acts::VolumeBounds.