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

#include <Acts/Surfaces/DiamondBounds.hpp>

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

Public Types

enum  BoundValues {
  eHalfLengthXnegY = 0 , eHalfLengthXzeroY = 1 , eHalfLengthXposY = 2 , eHalfLengthYneg = 3 ,
  eHalfLengthYpos = 4 , eSize = 5
}
 Enumeration for the bound values. More...
Public Types inherited from Acts::SurfaceBounds
enum  BoundsType : int {
  eCone = 0 , eCylinder = 1 , eDiamond = 2 , eDisc = 3 ,
  eEllipse = 4 , eLine = 5 , eRectangle = 6 , eTrapezoid = 7 ,
  eTriangle = 8 , eDiscTrapezoid = 9 , eConvexPolygon = 10 , eAnnulus = 11 ,
  eBoundless = 12 , eOther = 13
}
 This is nested to the SurfaceBounds, as also VolumeBounds will have Bounds Type. More...

Public Member Functions

 DiamondBounds (const std::array< double, eSize > &values) noexcept(false)
 Constructor - from fixed size array.
 DiamondBounds (double halfXnegY, double halfXzeroY, double halfXposY, double halfYneg, double halfYpos) noexcept(false)
 Constructor for convex hexagon symmetric about the y axis.
const RectangleBoundsboundingBox () const final
 Bounding box parameters.
Vector2 center () const final
 Calculate the center of the surface bounds in local coordinates.
Vector2 closestPoint (const Vector2 &lposition, const SquareMatrix2 &metric) const final
 Calculates the closest point on the bounds to a given local position.
double get (BoundValues bValue) const
 Access to the bound values.
bool inside (const Vector2 &lposition) const final
 Inside check for the bounds object.
virtual bool inside (const Vector2 &lposition, const BoundaryTolerance &boundaryTolerance) const
 Inside check for the bounds object given a boundary tolerance.
std::ostream & toStream (std::ostream &sl) const final
 Output Method for std::ostream.
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.
std::vector< Vector2vertices (unsigned int ignoredSegments=0u) const final
 Return the vertices that describe this shape.
Public Member Functions inherited from Acts::PlanarBounds
SquareMatrix2 boundToCartesianJacobian (const Vector2 &lposition) const final
 Computes the bound to cartesian jacobian at a given local position.
SquareMatrix2 boundToCartesianMetric (const Vector2 &lposition) const final
 Computes the bound to cartesian metric at a given local position.
bool isCartesian () const final
 Check if the bound coordinates are cartesian.
Public Member Functions inherited from Acts::SurfaceBounds
virtual ~SurfaceBounds ()=default
virtual double distance (const Vector2 &lposition) const
 Calculates the distance to the bounds from a given local position.

Detailed Description

Bounds for a double trapezoidal ("diamond"), planar Surface.

Member Enumeration Documentation

◆ BoundValues

Enumeration for the bound values.

Enumerator
eHalfLengthXnegY 
eHalfLengthXzeroY 
eHalfLengthXposY 
eHalfLengthYneg 
eHalfLengthYpos 
eSize 

Constructor & Destructor Documentation

◆ DiamondBounds() [1/2]

Acts::DiamondBounds::DiamondBounds ( double halfXnegY,
double halfXzeroY,
double halfXposY,
double halfYneg,
double halfYpos )

Constructor for convex hexagon symmetric about the y axis.

Parameters
halfXnegYis the halflength in x at minimal y
halfXzeroYis the halflength in x at y = 0
halfXposYis the halflength in x at maximal y
halfYnegis the halflength into y < 0
halfYposis the halflength into y > 0

◆ DiamondBounds() [2/2]

Acts::DiamondBounds::DiamondBounds ( const std::array< double, eSize > & values)
explicitnoexcept

Constructor - from fixed size array.

Parameters
valuesThe parameter values

Member Function Documentation

◆ boundingBox()

const RectangleBounds & Acts::DiamondBounds::boundingBox ( ) const
finalvirtual

Bounding box parameters.

Returns
rectangle bounds for a bounding box

Implements Acts::PlanarBounds.

◆ center()

Vector2 Acts::DiamondBounds::center ( ) const
finalvirtual

Calculate the center of the surface bounds in local coordinates.

This method returns a representative center point of the bounds region. The exact definition varies by bounds type and coordinate system:

Cartesian bounds (Rectangle, Diamond, Trapezoid):

  • Returns the geometric center or center of symmetry
  • For symmetric shapes: center of bounding box or origin (0,0)

Polar/Cylindrical bounds (Radial, Cylinder, Cone):

  • Returns (r, phi) where r is average radius, phi is average angle
  • Coordinates are in the bounds' natural coordinate system

Complex bounds (Annulus, ConvexPolygon):

  • Annulus: Pre-calculated from corner vertices (accounts for coordinate transforms)
  • Polygon: Average of all vertices (vertex centroid, not area centroid)

Infinite bounds: Returns conceptual center at (0,0)

Note
The returned point is guaranteed to be a reasonable representative center, but may not be the true geometric centroid for all shapes.
Returns
Vector2 representing the center position in local coordinates
Note
For DiamondBounds: returns center of symmetry (0,0)

Implements Acts::SurfaceBounds.

◆ closestPoint()

Vector2 Acts::DiamondBounds::closestPoint ( const Vector2 & lposition,
const SquareMatrix2 & metric ) const
finalvirtual

Calculates the closest point on the bounds to a given local position.

Parameters
lpositionis the local position
metricto be used for the distance calculation
Returns
the closest point on the bounds

Implements Acts::SurfaceBounds.

◆ get()

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

Access to the bound values.

Parameters
bValuethe class nested enum for the array access
Returns
Value of the specified bound parameter

◆ inside() [1/2]

bool Acts::DiamondBounds::inside ( const Vector2 & lposition) const
finalvirtual

Inside check for the bounds object.

Parameters
lpositionis the local position
Returns
true if the local position is inside the bounds

Implements Acts::SurfaceBounds.

◆ inside() [2/2]

virtual bool Acts::SurfaceBounds::inside ( const Vector2 & lposition,
const BoundaryTolerance & boundaryTolerance ) const
virtual

Inside check for the bounds object given a boundary tolerance.

Parameters
lpositionis the local position
boundaryToleranceis the boundary tolerance object
Returns
true if the local position is inside the bounds and tolerance

Reimplemented from Acts::SurfaceBounds.

◆ toStream()

std::ostream & Acts::DiamondBounds::toStream ( std::ostream & sl) const
finalvirtual

Output Method for std::ostream.

Parameters
slis the ostream in which it is dumped
Returns
Reference to the output stream after writing

Implements Acts::SurfaceBounds.

◆ type()

BoundsType Acts::DiamondBounds::type ( ) const
finalvirtual

Return the bounds type - for persistency optimization.

Returns
the bounds type

Implements Acts::SurfaceBounds.

◆ values()

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

Return the bound values as dynamically sized vector.

Returns
this returns a copy of the internal values

Implements Acts::SurfaceBounds.

◆ vertices()

std::vector< Vector2 > Acts::DiamondBounds::vertices ( unsigned int ignoredSegments = 0u) const
finalvirtual

Return the vertices that describe this shape.

Parameters
ignoredSegmentsis an ignored parameter only used for curved bound segments
Returns
vector for vertices in 2D

Implements Acts::PlanarBounds.