File RadialBounds.hpp

namespace Acts


This file is foreseen for the Geometry module to replace Extent

class RadialBounds : public Acts::DiscBounds
#include <Acts/Surfaces/RadialBounds.hpp>

Class to describe the bounds for a planar DiscSurface.

By providing an argument for hphisec, the bounds can be restricted to a phi-range around the center position.

Public Types

enum BoundValues


enumerator eMinR
enumerator eMaxR
enumerator eHalfPhiSector
enumerator eAveragePhi
enumerator eSize

Public Functions

RadialBounds() = delete
inline RadialBounds(double minR, double maxR, double halfPhi = M_PI, double avgPhi = 0.) noexcept(false)

Constructor for full disc of symmetric disc around phi=0.

  • minR – The inner radius (0 for full disc)

  • maxR – The outer radius

  • halfPhi – The half opening angle (Pi for full angular coverage)

  • avgPhi – The average phi for the disc/ring sector

inline RadialBounds(const std::array<double, eSize> &values) noexcept(false)

Constructor from array values.


values – The bound values

~RadialBounds() override = default
inline virtual double binningValuePhi() const final

Return a reference radius for binning.

inline virtual double binningValueR() const final

Return a reference radius for binning.

inline virtual bool coversFullAzimuth() const final

Returns true for full phi coverage.

inline double get(BoundValues bValue) const

Access to the bound values.


bValue – the class nested enum for the array access

virtual bool inside(const Vector2 &lposition, const BoundaryCheck &bcheck) const final

For disc surfaces the local position in (r,phi) is checked.

  • lposition – local position to be checked

  • bcheck – boundary check directive


is a boolean indicating the operation success

inline virtual bool insideRadialBounds(double R, double tolerance = 0.) const final

Checks if this is inside the radial coverage given the a tolerance.

inline virtual double rMax() const final

Return method for outer Radius.

inline virtual double rMin() const final

Return method for inner Radius.

virtual std::ostream &toStream(std::ostream &sl) const final

Outstream operator.


sl – is the ostream to be dumped into

virtual SurfaceBounds::BoundsType type() const final

Return the bounds type - for persistency optimization.


is a BoundsType enum

inline virtual std::vector<double> values() const final

Return the bound values as dynamically sized vector.


this returns a copy of the internal values

Private Functions

inline void checkConsistency() noexcept(false)

Check the input values for consistency, will throw a logic_exception if consistency is not given.

Vector2 shifted(const Vector2 &lposition) const

Private helper method to shift a local position within the bounds.


lposition – The local position in polar coordinates

virtual std::vector<Vector2> vertices(unsigned int lseg) const final

This method returns the xy coordinates of vertices along the radial bounds.


that the extremas are given, which may slightly alter the number of segments returned


lseg – the number of segments used to approximate and eventually curved line


vector for vertices in 2D

Private Members

std::array<double, eSize> m_values