Juggler
Juggling algorithms and event processing using gaudi framework
|
Go to the documentation of this file.
13 #include "Acts/Geometry/GeometryIdentifier.hpp"
19 #include <boost/container/flat_map.hpp>
20 #include <boost/container/flat_set.hpp>
27 constexpr Acts::GeometryIdentifier
operator()(Acts::GeometryIdentifier geometryId)
const {
31 constexpr Acts::GeometryIdentifier
operator()(Acts::GeometryIdentifier::Value encoded)
const {
32 return Acts::GeometryIdentifier(encoded);
37 const std::pair<Acts::GeometryIdentifier, T>& mapItem)
const {
43 -> decltype(thing.geometryId(), Acts::GeometryIdentifier()) {
44 return thing.geometryId();
52 template <
typename Left,
typename Right>
53 constexpr
bool operator()(Left&& lhs, Right&& rhs)
const {
71 boost::container::flat_multiset<T, detail::CompareGeometryId>;
93 auto cmp = Acts::GeometryIdentifier().setVolume(volume);
94 auto beg = std::lower_bound(container.begin(), container.end(), cmp,
97 cmp = Acts::GeometryIdentifier().setVolume(volume + 1u);
105 template <
typename T>
107 Acts::GeometryIdentifier
id) {
112 template <
typename T>
115 Acts::GeometryIdentifier::Value layer) {
116 auto cmp = Acts::GeometryIdentifier().setVolume(volume).setLayer(layer);
117 auto beg = std::lower_bound(container.begin(), container.end(), cmp,
120 cmp = Acts::GeometryIdentifier().setVolume(volume).setLayer(layer + 1u);
128 template <
typename T>
130 Acts::GeometryIdentifier
id) {
131 return selectLayer(container,
id.volume(),
id.layer());
135 template <
typename T>
139 return makeRange(container.equal_range(geoId));
141 template <
typename T>
143 Acts::GeometryIdentifier::Value volume,
144 Acts::GeometryIdentifier::Value layer,
145 Acts::GeometryIdentifier::Value module) {
148 Acts::GeometryIdentifier().setVolume(volume).setLayer(layer).setSensitive(
153 template <
typename T>
154 inline GroupBy<typename GeometryIdMultiset<T>::const_iterator,
155 detail::GeometryIdGetter>
Range< typename GeometryIdMultiset< T >::const_iterator > selectVolume(const GeometryIdMultiset< T > &container, Acts::GeometryIdentifier::Value volume)
Select all elements within the given volume.
Definition: GeometryContainers.hpp:91
constexpr Acts::GeometryIdentifier operator()(Acts::GeometryIdentifier geometryId) const
Definition: GeometryContainers.hpp:27
boost::container::flat_multiset< T, detail::CompareGeometryId > GeometryIdMultiset
Definition: GeometryContainers.hpp:71
auto makeGroupBy(const Container &container, KeyGetter keyGetter) -> GroupBy< decltype(std::begin(container)), KeyGetter >
Construct the group-by proxy for a container.
Definition: GroupBy.hpp:136
auto operator()(const T &thing) const -> decltype(thing.geometryId(), Acts::GeometryIdentifier())
Definition: GeometryContainers.hpp:42
void is_transparent
Definition: GeometryContainers.hpp:50
Range< typename GeometryIdMultiset< T >::const_iterator > selectLayer(const GeometryIdMultiset< T > &container, Acts::GeometryIdentifier::Value volume, Acts::GeometryIdentifier::Value layer)
Select all elements within the given layer.
Definition: GeometryContainers.hpp:113
GeometryIdMultiset< std::pair< Acts::GeometryIdentifier, T > > GeometryIdMultimap
Definition: GeometryContainers.hpp:87
constexpr Acts::GeometryIdentifier operator()(Acts::GeometryIdentifier::Value encoded) const
Definition: GeometryContainers.hpp:31
Definition: GeometryContainers.hpp:48
Definition: DD4hepBField.h:22
constexpr bool operator()(Left &&lhs, Right &&rhs) const
Definition: GeometryContainers.hpp:53
Range< Iterator > makeRange(Iterator begin, Iterator end)
Definition: Range.hpp:47
constexpr Acts::GeometryIdentifier operator()(const std::pair< Acts::GeometryIdentifier, T > &mapItem) const
Definition: GeometryContainers.hpp:36
Range< typename GeometryIdMultiset< T >::const_iterator > selectModule(const GeometryIdMultiset< T > &container, Acts::GeometryIdentifier geoId)
Select all elements for the given module / sensitive surface.
Definition: GeometryContainers.hpp:136
Definition: GeometryContainers.hpp:25
GroupBy< typename GeometryIdMultiset< T >::const_iterator, detail::GeometryIdGetter > groupByModule(const GeometryIdMultiset< T > &container)
Iterate over groups of elements belonging to each module/ sensitive surface.
Definition: GeometryContainers.hpp:156