ACTS
Experiment-independent tracking
Loading...
Searching...
No Matches
detector_statistics.hpp
1// This file is part of the ACTS project.
2//
3// Copyright (C) 2016 CERN for the benefit of the ACTS project
4//
5// This Source Code Form is subject to the terms of the Mozilla Public
6// License, v. 2.0. If a copy of the MPL was not distributed with this
7// file, You can obtain one at https://mozilla.org/MPL/2.0/.
8
9#pragma once
10
11// Project include(s).
12#include "detray/core/concepts.hpp"
13#include "detray/definitions/algebra.hpp"
14#include "detray/definitions/detail/qualifiers.hpp"
15#include "detray/geometry/tracking_volume.hpp"
16
17// System include(s).
18#include <vector>
19
20namespace detray {
21
23template <concepts::detector detector_t>
24DETRAY_HOST_DEVICE inline std::size_t n_portals(const detector_t& det) {
25 std::size_t n_portals{0u};
26
27 for (const auto& vol_desc : det.volumes()) {
28 n_portals += tracking_volume{det, vol_desc}.n_portals();
29 }
30
31 return n_portals;
32}
33
35template <concepts::detector detector_t>
36DETRAY_HOST_DEVICE inline std::size_t n_sensitives(const detector_t& det) {
37 std::size_t n_sensitives{0u};
38
39 for (const auto& vol_desc : det.volumes()) {
40 n_sensitives += tracking_volume{det, vol_desc}.n_sensitives();
41 }
42
43 return n_sensitives;
44}
45
47template <concepts::detector detector_t>
48DETRAY_HOST_DEVICE inline std::size_t n_passives(const detector_t& det) {
49 std::size_t n_passives{0u};
50
51 for (const auto& vol_desc : det.volumes()) {
52 n_passives += tracking_volume{det, vol_desc}.n_passives();
53 }
54
55 return n_passives;
56}
57
63template <std::size_t I = 0u, typename store_t>
64DETRAY_HOST_DEVICE inline std::size_t n_grids(const store_t& store,
65 std::size_t n = 0u) {
66 constexpr auto coll_id{types::id_cast<typename store_t::value_types, I>};
67 using value_type = types::get<typename store_t::value_types, coll_id>;
68
70 n += store.template size<coll_id>();
71 }
72
73 if constexpr (I < store_t::n_collections() - 1u) {
74 return n_grids<I + 1>(store, n);
75 }
76 return n;
77}
78
80template <concepts::detector detector_t>
81DETRAY_HOST_DEVICE inline std::size_t n_surface_grids(const detector_t& det) {
82 return n_grids(det.accelerator_store());
83}
84
86template <concepts::detector detector_t>
87DETRAY_HOST_DEVICE inline std::size_t n_material_maps(const detector_t& det) {
88 return n_grids(det.material_store());
89}
90
93template <concepts::detector detector_t>
94DETRAY_HOST_DEVICE inline std::size_t n_material_slabs(const detector_t& det) {
96 constexpr auto slab_id{detector_t::material::id::e_material_slab};
97 return det.material_store().template size<slab_id>();
98 } else {
99 return 0u;
100 }
101}
102
104template <concepts::detector detector_t>
105DETRAY_HOST_DEVICE inline std::size_t n_material_rods(const detector_t& det) {
107 constexpr auto rod_id{detector_t::material::id::e_material_rod};
108 return det.material_store().template size<rod_id>();
109 } else {
110 return 0u;
111 }
112}
113
114} // namespace detray
Facade for a detray detector volume.
Definition tracking_volume.hpp:44
constexpr dindex n_sensitives() const
Definition tracking_volume.hpp:149
constexpr dindex n_portals() const
Definition tracking_volume.hpp:141
constexpr dindex n_passives() const
Definition tracking_volume.hpp:158
Definition concepts.hpp:64
Check for the the presence of material rods in a detector definition.
Definition concepts.hpp:146
Check for the the presence of material slabs in a detector definition.
Definition concepts.hpp:141
Detray include(s).
Definition array_operators.hpp:18
std::size_t n_material_rods(const detector_t &det)
Definition detector_statistics.hpp:105
std::size_t n_material_slabs(const detector_t &det)
Definition detector_statistics.hpp:94
std::size_t n_sensitives(const detector_t &det)
Definition detector_statistics.hpp:36
std::size_t n_passives(const detector_t &det)
Definition detector_statistics.hpp:48
std::size_t n_portals(const detector_t &det)
Definition detector_statistics.hpp:24
std::size_t n_surface_grids(const detector_t &det)
Definition detector_statistics.hpp:81
std::size_t n_material_maps(const detector_t &det)
Definition detector_statistics.hpp:87
std::size_t n_grids(const store_t &store, std::size_t n=0u)
Count grid collections in a detector store.
Definition detector_statistics.hpp:64