File GeometryIdentifier.hpp

namespace Acts


This file is foreseen for the Geometry module to replace Extent


this is foreseen for the ‘Geometry’ module


std::ostream &operator<<(std::ostream &os, GeometryIdentifier id)
class GeometryIdentifier
#include <Acts/Geometry/GeometryIdentifier.hpp>

Identifier for geometry nodes within the geometry hierarchy.

An identifier can be split into the following components. They define a hierarchy of objects starting from the high-level volumes:

  • Volume

  • Boundary surfaces (for a volume)

  • Layers (confined within a volume)

  • Approach surfaces (for a layer)

  • Sensitive surfaces (confined to a layer, also called modules)

Public Types

using Value = uint64_t

Public Functions

inline constexpr GeometryIdentifier(Value encoded)

Construct from an already encoded value.

GeometryIdentifier() = default

Construct default GeometryIdentifier with all values set to zero.

GeometryIdentifier(GeometryIdentifier&&) = default
GeometryIdentifier(const GeometryIdentifier&) = default
~GeometryIdentifier() = default
inline constexpr Value approach() const

Return the approach identifier.

inline constexpr Value boundary() const

Return the boundary identifier.

inline constexpr Value extra() const

Return the extra identifier Usage can be experiment-specific, like tagging which kind of detector a surface object corresponds to, or which subsystem it belongs to.

inline constexpr Value layer() const

Return the layer identifier.

GeometryIdentifier &operator=(GeometryIdentifier&&) = default
GeometryIdentifier &operator=(const GeometryIdentifier&) = default
inline constexpr Value sensitive() const

Return the sensitive identifier.

inline constexpr GeometryIdentifier &setApproach(Value approach)

Set the approach identifier.

inline constexpr GeometryIdentifier &setBoundary(Value boundary)

Set the boundary identifier.

inline constexpr GeometryIdentifier &setExtra(Value extra)

Set the extra identifier.

inline constexpr GeometryIdentifier &setLayer(Value layer)

Set the layer identifier.

inline constexpr GeometryIdentifier &setSensitive(Value sensitive)

Set the sensitive identifier.

inline constexpr GeometryIdentifier &setVolume(Value volume)

Set the volume identifier.

inline constexpr Value value() const

Return the encoded value.

inline constexpr Value volume() const

Return the volume identifier.

Private Functions

inline constexpr Value getBits(Value mask) const

Extract the masked bits from the encoded value.

inline constexpr GeometryIdentifier &setBits(Value mask, Value id)

Set the masked bits to id in the encoded value.

Private Members

Value m_value = 0

Private Static Functions

static inline constexpr int extractShift(Value mask)

Extract the bit shift necessary to access the masked values.

Private Static Attributes

static constexpr Value kApproachMask = 0x0000000ff0000000
static constexpr Value kBoundaryMask = 0x00ff000000000000
static constexpr Value kExtraMask = 0x00000000000000ff
static constexpr Value kLayerMask = 0x0000fff000000000
static constexpr Value kSensitiveMask = 0x000000000fffff00
static constexpr Value kVolumeMask = 0xff00000000000000


inline friend constexpr bool operator!=(GeometryIdentifier lhs, GeometryIdentifier rhs)
inline friend constexpr bool operator<(GeometryIdentifier lhs, GeometryIdentifier rhs)
inline friend constexpr bool operator==(GeometryIdentifier lhs, GeometryIdentifier rhs)
struct GeometryIdentifierHook
#include <Acts/Geometry/GeometryIdentifier.hpp>

Base class for hooks that can be used to modify the Geometry Identifier during construction.

Most common use case is setting the extra bit fields.

Public Functions

virtual ~GeometryIdentifierHook() = default
virtual Acts::GeometryIdentifier decorateIdentifier(Acts::GeometryIdentifier identifier, const Acts::Surface &surface) const