File indexing completed on 2026-07-26 08:22:00
0001
0002
0003
0004
0005
0006
0007
0008 #pragma once
0009
0010
0011 #include "traccc/definitions/primitives.hpp"
0012
0013
0014
0015
0016
0017 #include <detray/utils/quiet_log_start.hpp>
0018 #include <detray/core/detector.hpp>
0019 #include <detray/utils/quiet_log_end.hpp>
0020
0021
0022 #include <detray/detectors/default_metadata.hpp>
0023 #include <detray/detectors/itk_metadata.hpp>
0024 #include <detray/detectors/odd_metadata.hpp>
0025 #include <detray/detectors/telescope_metadata.hpp>
0026 #include <detray/detectors/toy_metadata.hpp>
0027 #include <detray/detectors/wire_chamber_metadata.hpp>
0028
0029
0030 #include <vecmem/containers/device_vector.hpp>
0031
0032
0033 #include <type_traits>
0034
0035 namespace traccc {
0036 namespace details {
0037
0038
0039
0040
0041
0042
0043
0044
0045
0046
0047
0048 struct device_detector_container_types {
0049
0050 template <typename T>
0051 using vector_type = vecmem::device_vector<std::add_const_t<T>>;
0052
0053 };
0054
0055 }
0056
0057
0058 template <typename metadata_t>
0059 struct detector_traits {
0060
0061 using metadata_type = metadata_t;
0062
0063
0064 using host = detray::detector<metadata_type, detray::host_container_types>;
0065
0066 using device =
0067 detray::detector<metadata_type, details::device_detector_container_types>;
0068
0069
0070 using view = typename host::const_view_type;
0071
0072
0073 using buffer = typename host::buffer_type;
0074
0075 };
0076
0077 template <typename T>
0078 concept is_detector_traits = requires {
0079 typename T::metadata_type;
0080 typename T::host;
0081 typename T::device;
0082 typename T::view;
0083 typename T::buffer;
0084 };
0085
0086
0087 using default_detector =
0088 detector_traits<detray::default_metadata<traccc::default_algebra>>;
0089
0090
0091 using itk_detector =
0092 detector_traits<detray::itk_metadata<traccc::default_algebra>>;
0093
0094
0095 using odd_detector =
0096 detector_traits<detray::odd_metadata<traccc::default_algebra>>;
0097
0098
0099 using telescope_detector = detector_traits<
0100 detray::telescope_metadata<traccc::default_algebra, detray::rectangle2D>>;
0101
0102
0103 using toy_detector =
0104 detector_traits<detray::toy_metadata<traccc::default_algebra>>;
0105
0106
0107 using wire_chamber =
0108 detector_traits<detray::wire_chamber_metadata<traccc::default_algebra>>;
0109
0110 }