File Intersection.hpp

namespace Acts

Note

This file is foreseen for the Geometry module to replace Extent

Typedefs

using Intersection2D = Intersection<2>
using Intersection3D = Intersection<3>
using MultiIntersection3D = boost::container::static_vector<Intersection3D, s_maximumNumberOfIntersections>

Enums

enum class IntersectionStatus : int

Status enum.

Values:

enumerator missed
enumerator unreachable
enumerator reachable
enumerator onSurface

Functions

inline std::ostream &operator<<(std::ostream &os, IntersectionStatus status)

Ostream-operator for the IntersectionStatus enum.

Variables

static constexpr std::uint8_t s_maximumNumberOfIntersections = 2
template<unsigned int DIM>
struct Intersection
#include <Acts/Utilities/Intersection.hpp>

Intersection struct used for position.

Public Types

using Position = ActsVector<DIM>

Position type.

using Status = IntersectionStatus

Status enum.

Public Functions

inline constexpr Intersection(const Position &position, double pathLength, Status status)

Constructor with arguments.

Parameters
  • position – is the position of the intersection

  • pathLength – is the path length to the intersection

  • status – is an enum indicating the status of the intersection

inline explicit constexpr operator bool() const

Returns whether the intersection was successful or not.

inline constexpr ActsScalar pathLength() const
inline constexpr const Position &position() const
inline constexpr Status status() const

Public Static Functions

static inline constexpr bool closestOrder(const Intersection &aIntersection, const Intersection &bIntersection)

Comparison function for closest order i.e.

intersection closest to 0 will be first.

static inline constexpr bool forwardOrder(const Intersection &aIntersection, const Intersection &bIntersection)

Comparison function for forward order i.e.

intersection closest to -inf will be first.

static inline constexpr Intersection invalid()

Private Functions

constexpr Intersection() = default

Private Members

ActsScalar m_pathLength = std::numeric_limits<double>::infinity()

Signed path length to the intersection (if valid)

Position m_position = Position::Zero()

Position of the intersection.

Status m_status = Status::unreachable

The Status of the intersection.

template<typename object_t, typename representation_t = object_t>
class ObjectIntersection
#include <Acts/Utilities/Intersection.hpp>

class extensions to return also the object and a representation

Public Functions

inline constexpr ObjectIntersection(const Intersection3D &intersection, const object_t *object, const representation_t *representation, std::uint8_t index = 0)

Object intersection.

Parameters
  • intersection – is the intersection

  • object – is the object to be instersected

  • representation – is the object representation

  • index – is the intersection index

template<typename T = representation_t, std::enable_if_t<std::is_same<T, object_t>::value, int> = 0>
inline constexpr ObjectIntersection(const Intersection3D &intersection, const object_t *object, std::uint8_t index = 0)

Object intersection - symmetric setup.

Parameters
  • intersection – is the intersection

  • object – is the object to be instersected

  • index – is the intersection index

inline constexpr std::uint8_t index() const
inline constexpr const Intersection3D &intersection() const
inline constexpr const object_t *object() const
inline explicit constexpr operator bool() const

Returns whether the intersection was successful or not.

inline constexpr ActsScalar pathLength() const
inline constexpr const Intersection3D::Position &position() const
inline constexpr const representation_t *representation() const
inline constexpr Intersection3D::Status status() const

Public Static Functions

static inline constexpr bool closestOrder(const ObjectIntersection &aIntersection, const ObjectIntersection &bIntersection)
static inline constexpr bool forwardOrder(const ObjectIntersection &aIntersection, const ObjectIntersection &bIntersection)
static inline constexpr ObjectIntersection invalid()

Private Functions

constexpr ObjectIntersection() = default

Private Members

std::uint8_t m_index = 0

The intersection index.

Intersection3D m_intersection = Intersection3D::invalid()

The intersection itself.

const object_t *m_object = nullptr

The object that was (tried to be) intersected.

const representation_t *m_representation = nullptr

The representation of this object.

template<typename object_t, typename representation_t = object_t>
class ObjectMultiIntersection
#include <Acts/Utilities/Intersection.hpp>

class extensions to return also the object and a representation

Public Types

using SplitIntersections = boost::container::static_vector<ObjectIntersection<object_t, representation_t>, s_maximumNumberOfIntersections>

Public Functions

template<typename T = representation_t, std::enable_if_t<std::is_same<T, object_t>::value, int> = 0>
inline constexpr ObjectMultiIntersection(const MultiIntersection3D &intersections, const object_t *object)

Object intersection - symmetric setup.

Parameters
  • intersections – are the intersections

  • object – is the object to be instersected

inline constexpr ObjectMultiIntersection(const MultiIntersection3D &intersections, const object_t *object, const representation_t *representation)

Object intersection.

Parameters
  • intersections – are the intersections

  • object – is the object to be instersected

  • representation – is the object representation

inline constexpr ObjectIntersection<object_t, representation_t> closest() const
inline constexpr const object_t *object() const
inline constexpr ObjectIntersection<object_t, representation_t> operator[](std::uint8_t index) const
inline constexpr const representation_t *representation() const
inline constexpr std::size_t size() const
inline constexpr SplitIntersections split() const

Private Members

MultiIntersection3D m_intersections

The intersections.

const object_t *m_object = nullptr

The object that was (tried to be) intersected.

const representation_t *m_representation = nullptr

The representation of this object.