File RadialBounds.hpp

namespace Acts

Note

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

Values:

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.

Parameters
  • 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.

Parameters

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.

Parameters

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.

Parameters
  • lposition – local position to be checked

  • bcheck – boundary check directive

Returns

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.

Parameters

sl – is the ostream to be dumped into

virtual SurfaceBounds::BoundsType type() const final

Return the bounds type - for persistency optimization.

Returns

is a BoundsType enum

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

Return the bound values as dynamically sized vector.

Returns

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.

Parameters

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.

Note

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

Parameters

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

Returns

vector for vertices in 2D

Private Members

std::array<double, eSize> m_values