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

Bounds for a trapezoidal shaped Volume, the orientedSurface(...) method creates a vector of 6 surfaces: More...

#include <Acts/Geometry/TrapezoidVolumeBounds.hpp>

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

Public Types

enum  BoundValues : unsigned int {
  eHalfLengthXnegY = 0 , eHalfLengthXposY = 1 , eHalfLengthY = 2 , eHalfLengthZ = 3 ,
  eAlpha = 4 , eBeta = 5 , eSize
}
 for access / streaming More...
enum class  Face : unsigned int {
  NegativeZFaceXY = BoundarySurfaceFace::negativeFaceXY , PositiveZFaceXY = BoundarySurfaceFace::positiveFaceXY , TrapezoidFaceAlpha , TrapezoidFaceBeta ,
  NegativeYFaceZX = BoundarySurfaceFace::negativeFaceZX , PositiveYFaceZX = BoundarySurfaceFace::positiveFaceZX
}
 Enum describing the possible faces of a trapezoidal 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

 TrapezoidVolumeBounds ()=delete
 TrapezoidVolumeBounds (const std::array< double, eSize > &values) noexcept(false)
 Constructor - from a fixed size array.
 TrapezoidVolumeBounds (const TrapezoidVolumeBounds &trabo)=default
 Copy constructor.
 TrapezoidVolumeBounds (double minhalex, double haley, double halez, double alpha, double beta) noexcept(false)
 Constructor - the trapezoid boundaries (arbitrary trapezoid).
 TrapezoidVolumeBounds (double minhalex, double maxhalex, double haley, double halez) noexcept(false)
 Constructor - the trapezoid boundaries (symmetric trapezoid).
 ~TrapezoidVolumeBounds () 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 override
 This method checks if position in the 3D volume frame is inside the cylinder.
TrapezoidVolumeBoundsoperator= (const TrapezoidVolumeBounds &trabo)=default
 Copy assignment operator.
std::vector< OrientedSurfaceorientedSurfaces (const Transform3 &transform=Transform3::Identity()) const override
 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 trapezoidal shaped Volume, the orientedSurface(...) method creates a vector of 6 surfaces:

BoundarySurfaceFace [index]:

  • negativeFaceXY [0] : Trazpezoidal Acts::PlaneSurface, parallel to \( xy \) plane at negative \(z\)
  • positiveFaceXY [1] : Trazpezoidal Acts::PlaneSurface, parallel to \( xy \) plane at positive \(z\)
  • trapezoidFaceAlpha [2] : Rectangular Acts::PlaneSurface, attached to [0] and [1] at negative \(x\) (associated to alpha)
  • trapezoidFaceBeta [3] : Rectangular Acts::PlaneSurface, attached to [0] and [1] at positive \( x\) (associated to beta)
  • negativeFaceZX [4] : Rectangular Acts::PlaneSurface, parallel to \( zx \) plane at negative \(y\)
  • positiveFaceZX [5] : Rectangular Acts::PlaneSurface, parallel to \( zx \) plane at positive \(y\)
| |
| | +----------------------------------+
| v | |
| + +--+------------------------------++ |
| /| / | +-+ |
| / | / | +-+ | +
+---+ / | / | +-+ | ++
| / | / +----------------------+-+---------+ +-+|
| / | / +-+ +-+ |
| / + / +-+ +-+ |
| / / / +-+ +-+ |
v/ / / +-+ +-+ +
/ / / +-+ +-+ +-
/ / / +------------------+-+------------++ +-+ +-+
/ / / / +-+ +-+ +-+ +-+
/ / / / +-+ +-+ +-+ +-+
/ / +----X-----------------+ +-+ +-+ +-+
+ / / +-+ +-+ +-+
| +--X------X------------+ +-+ -+ +-+
| | / / | +-+ + +-+
| |/ / | +-+ | +-+ ^
| X / | +-+ | +-+ |
|/| / | +-+ | +-+ |
+ | / | +-+ | +-+ | z ^ ^ y
+---X------------------+ +-+ ^ |-+ +-----+ | /
/ ^ +-+ | + | | /
+---------++-----------+ | | |/
| | | X------> x
@ PositiveZFaceXY
Definition TrapezoidVolumeBounds.hpp:102
@ NegativeYFaceZX
Definition TrapezoidVolumeBounds.hpp:110
@ TrapezoidFaceAlpha
Definition TrapezoidVolumeBounds.hpp:103
@ TrapezoidFaceBeta
Definition TrapezoidVolumeBounds.hpp:107
@ NegativeZFaceXY
Definition TrapezoidVolumeBounds.hpp:101
@ PositiveYFaceZX
Definition TrapezoidVolumeBounds.hpp:111
@ X
X coordinate.
Definition SpacePointContainer2.hpp:47

Member Enumeration Documentation

◆ BoundValues

for access / streaming

Enumerator
eHalfLengthXnegY 

halflength in x at negative y

eHalfLengthXposY 

halflength in x at positive y

eHalfLengthY 

halflength in y

eHalfLengthZ 

halflength in z

eAlpha 

opening angle alpha (in point A)

eBeta 

opening angle beta (in point B)

eSize 

length of the bounds vector

◆ Face

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

Enum describing the possible faces of a trapezoidal volume.

Note
These values are synchronized with the BoundarySurfaceFace enum. Once Gen1 is removed, this can be changed.
Enumerator
NegativeZFaceXY 
PositiveZFaceXY 
TrapezoidFaceAlpha 
TrapezoidFaceBeta 
NegativeYFaceZX 
PositiveYFaceZX 

Constructor & Destructor Documentation

◆ TrapezoidVolumeBounds() [1/5]

Acts::TrapezoidVolumeBounds::TrapezoidVolumeBounds ( )
delete

◆ TrapezoidVolumeBounds() [2/5]

Acts::TrapezoidVolumeBounds::TrapezoidVolumeBounds ( double minhalex,
double maxhalex,
double haley,
double halez )

Constructor - the trapezoid boundaries (symmetric trapezoid).

Parameters
minhalexis the half length in x at minimal y
maxhalexis the half length in x at maximal y
haleyis the half length in y
halezis the half length in z

◆ TrapezoidVolumeBounds() [3/5]

Acts::TrapezoidVolumeBounds::TrapezoidVolumeBounds ( double minhalex,
double haley,
double halez,
double alpha,
double beta )

Constructor - the trapezoid boundaries (arbitrary trapezoid).

Parameters
minhalexis the half length in x at minimal y
haleyis the half length in y
halezis the half length in z
alphais the opening angle at -x,-y
betais the opening angle at +x,-y

◆ TrapezoidVolumeBounds() [4/5]

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

Constructor - from a fixed size array.

Parameters
valuesThe bound values

◆ TrapezoidVolumeBounds() [5/5]

Acts::TrapezoidVolumeBounds::TrapezoidVolumeBounds ( const TrapezoidVolumeBounds & trabo)
default

Copy constructor.

Parameters
traboSource trapezoidal volume bounds to copy from

◆ ~TrapezoidVolumeBounds()

Acts::TrapezoidVolumeBounds::~TrapezoidVolumeBounds ( )
overridedefault

Default destructor.

Member Function Documentation

◆ boundingBox()

Volume::BoundingBox Acts::TrapezoidVolumeBounds::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::TrapezoidVolumeBounds::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::TrapezoidVolumeBounds::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 the global position to be checked
tolis the tolerance applied
Returns
boolean indicator if position is inside

Implements Acts::VolumeBounds.

◆ operator=()

TrapezoidVolumeBounds & Acts::TrapezoidVolumeBounds::operator= ( const TrapezoidVolumeBounds & trabo)
default

Copy assignment operator.

Parameters
traboSource trapezoidal volume bounds to assign from
Returns
Reference to this object

◆ orientedSurfaces()

std::vector< OrientedSurface > Acts::TrapezoidVolumeBounds::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.

◆ toStream()

std::ostream & Acts::TrapezoidVolumeBounds::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::TrapezoidVolumeBounds::type ( ) const
finalvirtual

Return the bounds type - for persistency optimization.

Returns
is a BoundsType enum

Implements Acts::VolumeBounds.

◆ values()

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

Return the bound values as dynamically sized vector.

Returns
this returns a copy of the internal values

Implements Acts::VolumeBounds.