Class Acts::GeometryHierarchyMap¶
-
template<typename value_t>
class Acts::GeometryHierarchyMap¶ Store values mapped into the geometry hierarchy.
The core functionality is to find an equivalent element, i.e. an identifier-value pair, for a given geometry identifier via
auto it = container.find(GeometryIdentifier(...)); if (it != container.end()) { ... }
- tparam value_t
stored value type
Trailing zero levels of stored geometry identifiers are used as broadcast values to refer to higher-level objects within the geometry, e.g. a geometry identifier with vanishing approach and sensitive index identifies a layer. An entry will all geometry identifier levels set to zero acts as the global default value.
The container also supports range-based iteration over all stored elements
for (const auto& element : container) { ... }
and index-based access to stored elements and associated geometry identifiers
GeometryIdentifier id3 = container.idAt(3); const auto& element4 = container.valueAt(4);
Adding elements is potentially expensive as the internal lookup structure must be updated. In addition, modifying an element in-place could change its identifier which would also break the lookup. Thus, the container can not be modified after construction to prevent misuse.
Note
No guarantees are given for the element order when using range-based or index-based access. Any apparent ordering must be considered an implementation detail and might change.
Public Types
-
using InputElement = typename std::pair<GeometryIdentifier, value_t>¶
Combined geometry identifier and value element. Only used for input.
Public Functions
-
inline GeometryHierarchyMap(std::vector<InputElement> elements)¶
Construct the container from the given elements.
- Parameters
elements – input elements (must be unique with respect to identifier)
-
inline GeometryHierarchyMap(std::initializer_list<InputElement> elements)¶
Construct the container from an initializer list.
- Parameters
elements – input initializer list
-
GeometryHierarchyMap() = default¶
-
GeometryHierarchyMap(const GeometryHierarchyMap&) = default¶
-
GeometryHierarchyMap(GeometryHierarchyMap&&) = default¶
-
~GeometryHierarchyMap() = default¶
-
inline bool empty() const¶
Check if any elements are stored.
-
inline Iterator find(GeometryIdentifier id) const¶
Find the most specific value for a given geometry identifier.
This can be either from the element matching exactly to the given geometry id, if it exists, or from the element for the next available higher level within the geometry hierachy.
- Parameters
id – geometry identifier for which information is requested
- Returns
iterator – to an existing value
<tt>.end()</tt> – iterator if no matching element exists
-
inline GeometryIdentifier idAt(Size index) const¶
Access the geometry identifier for the i-th element with bounds check.
- Throws
std::out_of_range – for invalid indices
-
GeometryHierarchyMap &operator=(const GeometryHierarchyMap&) = default¶
-
GeometryHierarchyMap &operator=(GeometryHierarchyMap&&) = default¶