ACTS
Experiment-independent tracking
Loading...
Searching...
No Matches
detray::detail::bit_encoder< value_t > Class Template Reference

Sets masked bits to a given value. More...

#include <detray/utils/bit_encoder.hpp>

Inheritance diagram for detray::detail::bit_encoder< value_t >:
[legend]

Static Public Member Functions

template<value_t mask>
requires (mask != static_cast<value_t>(0))
static constexpr value_t get_bits (const value_t v) noexcept
 Extract the field selected by mask from an encoded value.
template<value_t... masks>
static constexpr bool is_invalid (value_t v) noexcept
 Check whether v sets every bit in any of the supplied invalid masks.
template<value_t mask>
requires (mask != static_cast<value_t>(0))
static constexpr void set_bits (value_t &v, const value_t id) noexcept
 Set the masked bits to id in the encoded value.

Detailed Description

template<typename value_t = std::uint64_t>
class detray::detail::bit_encoder< value_t >

Sets masked bits to a given value.

Given a mask and an input value, the corresponding bits are set on a target value. Used e.g. in the surface identifier.

See also
https://github.com/acts-project/acts/blob/main/Core/include/Acts/Geometry/GeometryIdentifier.hpp

Member Function Documentation

◆ get_bits()

template<typename value_t = std::uint64_t>
template<value_t mask>
requires (mask != static_cast<value_t>(0))
constexpr value_t detray::detail::bit_encoder< value_t >::get_bits ( const value_t v)
staticconstexprnoexcept

Extract the field selected by mask from an encoded value.

Template Parameters
masknonzero bit mask selecting the field
Parameters
vencoded value to inspect
Returns
the masked bits from the encoded value as value of the same type.

◆ is_invalid()

template<typename value_t = std::uint64_t>
template<value_t... masks>
constexpr bool detray::detail::bit_encoder< value_t >::is_invalid ( value_t v)
staticconstexprnoexcept

Check whether v sets every bit in any of the supplied invalid masks.

Template Parameters
masksmasks whose all-ones encoding is reserved as invalid
Parameters
vencoded value to inspect
Returns
true if at least one mask is fully set in v

◆ set_bits()

template<typename value_t = std::uint64_t>
template<value_t mask>
requires (mask != static_cast<value_t>(0))
constexpr void detray::detail::bit_encoder< value_t >::set_bits ( value_t & v,
const value_t id )
staticconstexprnoexcept

Set the masked bits to id in the encoded value.

Template Parameters
masknonzero bit mask selecting the field
Parameters
vencoded value to update
idfield value to encode