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

Bounds for a polygonal prism shaped Volume, the orientedSurface(...) method creates a vector of 8 surfaces: 2 Diamond Shape Surfaces (see. More...

#include <Acts/Geometry/DiamondVolumeBounds.hpp>

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

Public Types

enum  BoundValues : unsigned int {
  eHalfLengthX1 = 0 , eHalfLengthX2 = 1 , eHalfLengthX3 = 2 , eLengthY1 = 3 ,
  eLengthY2 = 4 , eHalfLengthZ = 5 , eAlphaAngle = 6 , eBetaAngle = 7 ,
  eSize
}
 for access / streaming More...
enum class  Face : unsigned int {
  NegativeZFaceXY = 0 , PositiveZFaceXY = 1 , NegativeXFaceYZ12 = 2 , PositiveXFaceYZ12 ,
  NegativeXFaceYZ23 , PositiveXFaceYZ23 , NegativeYFaceZX = 6 , PositiveYFaceZX = 7
}
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

 DiamondVolumeBounds (const DiamondVolumeBounds &other)=default
 Copy constructor.
 DiamondVolumeBounds (DiamondVolumeBounds &&other)=default
 Move constructor.
 DiamondVolumeBounds (double x1, double x2, double x3, double y1, double y2, double halez) noexcept(false)
 Constructor - the polygonal prism boundaries.
 ~DiamondVolumeBounds () override=default
 Default destructor.
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.
double get (BoundValues bValue) const
 Access to the bound values.
bool inside (const Vector3 &pos, double tol=0.) const final
 This method checks if position in the 3D volume frame is inside the cylinder.
DiamondVolumeBoundsoperator= (const DiamondVolumeBounds &other)=default
 Copy constructor assignment.
DiamondVolumeBoundsoperator= (DiamondVolumeBounds &&other)=default
 Move constructor assignment.
std::vector< OrientedSurfaceorientedSurfaces (const Transform3 &transform=Transform3::Identity()) const final
 Oriented surfaces, i.e.
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
virtual std::vector< AxisDirectioncanonicalAxes () const
 Get the canonical axis direction that fully describe the shape's extent.
virtual double referenceBorder (AxisDirection aDir) const
 Binning borders in double.
virtual Vector3 referenceOffset (AxisDirection aDir) const
 Binning offset - overloaded for some R-binning types.

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

Bounds for a polygonal prism shaped Volume, the orientedSurface(...) method creates a vector of 8 surfaces: 2 Diamond Shape Surfaces (see.

)

and 6 Rectangular Shape Surfaces.

BoundarySurfaceFace [index]:

  • negativeFaceXY [0] : Diamond Acts::PlaneSurface, parallel to \( xy \) plane at negative \( z \)
  • positiveFaceXY [1] : Diamond Acts::PlaneSurface, parallel to \( xy \) plane at positive \( z \)
  • negativeXFaceYZ12 [2] : Rectangular Acts::PlaneSurface, parallel to \( yz \) plane at negative \( x \) attached at [-x1,-y1] and [-x2,0]
  • positiveXFaceYZ12 [3] : Rectangular Acts::PlaneSurface, parallel to \( yz \) plane at positive \( x \) attached at [x1,-y1] and [x2,0]
  • negativeXFaceYZ23 [4] : Rectangular Acts::PlaneSurface, parallel to \( yz \) plane at negative \( x \) attached at [-x2,0] and [-x3,y2]
  • positiveXFaceYZ23 [5] : Rectangular Acts::PlaneSurface, parallel to \( yz \) plane at positive \( x \) attached at [x2,0] and [x3,y2]
  • negativeYFaceZX [6] : Rectangular Acts::PlaneSurface, parallel to \( zx \) plane at negative \( y \)
  • positiveYFaceZX [7] : Rectangular Acts::PlaneSurface, parallel to \( zx \) plane at positive \( y \)

Member Enumeration Documentation

◆ BoundValues

for access / streaming

Enumerator
eHalfLengthX1 

half length in x at positive y1

eHalfLengthX2 

half length in x at y=0

eHalfLengthX3 

half length in x at negative y2

eLengthY1 

length in positive y1

eLengthY2 

length in negative y2

eHalfLengthZ 

half length in z

eAlphaAngle 

angle alpha between negYFaceZX and faceYZ12

eBetaAngle 

angle beta between FaceYZ12 and FaceYZ23

eSize 

length of the bounds vector

◆ Face

enum class Acts::DiamondVolumeBounds::Face : unsigned int
strong
Enumerator
NegativeZFaceXY 
PositiveZFaceXY 
NegativeXFaceYZ12 
PositiveXFaceYZ12 
NegativeXFaceYZ23 
PositiveXFaceYZ23 
NegativeYFaceZX 
PositiveYFaceZX 

Constructor & Destructor Documentation

◆ DiamondVolumeBounds() [1/3]

Acts::DiamondVolumeBounds::DiamondVolumeBounds ( double x1,
double x2,
double x3,
double y1,
double y2,
double halez )

Constructor - the polygonal prism boundaries.

Parameters
x1is the half length in x at negative y1
x2is the half length in x at y=0
x3is the half length in x at positive y2
y1is the positive y extent
y2is the negative y extent
halezis the half length in z

◆ DiamondVolumeBounds() [2/3]

Acts::DiamondVolumeBounds::DiamondVolumeBounds ( const DiamondVolumeBounds & other)
default

Copy constructor.

Parameters
otherThe other DiamondVolumeBounds to copy from

◆ DiamondVolumeBounds() [3/3]

Acts::DiamondVolumeBounds::DiamondVolumeBounds ( DiamondVolumeBounds && other)
default

Move constructor.

Parameters
otherThe other DiamondVolumeBounds to move from

◆ ~DiamondVolumeBounds()

Acts::DiamondVolumeBounds::~DiamondVolumeBounds ( )
overridedefault

Default destructor.

Member Function Documentation

◆ boundingBox()

Volume::BoundingBox Acts::DiamondVolumeBounds::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.

◆ get()

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

Access to the bound values.

Parameters
bValuethe class nested enum for the array access
Returns
The bound value at the specified index

◆ inside()

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

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

Parameters
posis the global position to be checked
tolis the tolerance applied
Returns
boolean indicator if position is inside

Implements Acts::VolumeBounds.

◆ operator=() [1/2]

DiamondVolumeBounds & Acts::DiamondVolumeBounds::operator= ( const DiamondVolumeBounds & other)
default

Copy constructor assignment.

Parameters
otherThe other DiamondVolumeBounds to copy from

◆ operator=() [2/2]

DiamondVolumeBounds & Acts::DiamondVolumeBounds::operator= ( DiamondVolumeBounds && other)
default

Move constructor assignment.

Parameters
otherThe other DiamondVolumeBounds to move from

◆ orientedSurfaces()

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

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.

◆ toStream()

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

Output Method for std::ostream.

Parameters
osis the output stream
Returns
Modified ostream for chaining

Implements Acts::VolumeBounds.

◆ type()

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

Return the bounds type - for persistency optimization.

Returns
is a BoundsType enum

Implements Acts::VolumeBounds.

◆ values()

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

Return the bound values as dynamically sized vector.

Returns
this returns a copy of the internal values

Implements Acts::VolumeBounds.