Skip to content

Commit 302ffa8

Browse files
committed
Build detectors with custom metadata
1 parent a7cadd5 commit 302ffa8

File tree

6 files changed

+48
-9
lines changed

6 files changed

+48
-9
lines changed

CMakeLists.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -87,7 +87,7 @@ endif()
8787
# In order to generate specializations for our kernels, we need to have both
8888
# a working Python interpreter, and a list of supported detectors.
8989
find_package (Python COMPONENTS Interpreter REQUIRED)
90-
set(TRACCC_SUPPORTED_DETECTORS "default_detector;telescope_detector;toy_detector")
90+
set(TRACCC_SUPPORTED_DETECTORS "default_detector;telescope_detector;toy_detector;itk_detector;odd_detector")
9191

9292
# Set up build profiling for the project.
9393
if( CTEST_USE_LAUNCHERS )

core/include/traccc/geometry/detector.hpp

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,8 @@
1313
// Detray include(s).
1414
#include <detray/core/detector.hpp>
1515
#include <detray/detectors/default_metadata.hpp>
16+
#include <detray/detectors/itk_metadata.hpp>
17+
#include <detray/detectors/odd_metadata.hpp>
1618
#include <detray/detectors/telescope_metadata.hpp>
1719
#include <detray/detectors/toy_metadata.hpp>
1820

@@ -87,5 +89,14 @@ using telescope_detector = detector_traits<
8789
using toy_detector =
8890
detector_traits<detray::toy_metadata<traccc::default_algebra>>;
8991

90-
using detector_type_list = std::tuple<default_detector, telescope_detector>;
92+
/// ITk detector
93+
using itk_detector =
94+
detector_traits<detray::itk_metadata<traccc::default_algebra>>;
95+
96+
/// ITk detector
97+
using odd_detector =
98+
detector_traits<detray::odd_metadata<traccc::default_algebra>>;
99+
100+
using detector_type_list = std::tuple<default_detector, telescope_detector,
101+
itk_detector, odd_detector>;
91102
} // namespace traccc

device/sycl/src/utils/detector_types.hpp

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,8 @@ namespace traccc::sycl {
1818
*/
1919
struct default_detector_kernel_tag {};
2020
struct telescope_detector_kernel_tag {};
21+
struct odd_detector_kernel_tag {};
22+
struct itk_detector_kernel_tag {};
2123

2224
template <typename T>
2325
struct detector_tag_selector {};
@@ -32,6 +34,16 @@ struct detector_tag_selector<telescope_detector> {
3234
using type = telescope_detector_kernel_tag;
3335
};
3436

37+
template <>
38+
struct detector_tag_selector<odd_detector> {
39+
using type = odd_detector_kernel_tag;
40+
};
41+
42+
template <>
43+
struct detector_tag_selector<itk_detector> {
44+
using type = itk_detector_kernel_tag;
45+
};
46+
3547
template <typename T>
3648
using detector_tag_selector_t = typename detector_tag_selector<T>::type;
3749

extern/detray/CMakeLists.txt

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,8 @@ message( STATUS "Building Detray as part of the TRACCC project" )
1313

1414
# Declare where to get Detray from.
1515
set( TRACCC_DETRAY_SOURCE
16-
"URL;https://github.com/acts-project/detray/archive/refs/tags/v0.106.0.tar.gz;URL_MD5;cf79d6936866a4d6e8b6cf3ee56b05a6"
16+
GIT_REPOSITORY https://github.com/niermann999/detray.git
17+
GIT_TAG origin/feat-volume-finder
1718
CACHE STRING "Source for Detray, when built as part of this project" )
1819
mark_as_advanced( TRACCC_DETRAY_SOURCE )
1920
FetchContent_Declare( Detray SYSTEM ${TRACCC_DETRAY_SOURCE} )

io/src/read_detector.cpp

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -59,8 +59,11 @@ void read_detector(host_detector& detector, vecmem::memory_resource& mr,
5959

6060
// TODO: Update this
6161
if (header.detector == "Cylindrical detector from DD4hep blueprint") {
62-
::read_detector<default_detector>(detector, mr, geometry_file,
63-
material_file, grid_file);
62+
::read_detector<odd_detector>(detector, mr, geometry_file,
63+
material_file, grid_file);
64+
} else if (header.detector == "detray_detector") {
65+
::read_detector<itk_detector>(detector, mr, geometry_file,
66+
material_file, grid_file);
6467
} else {
6568
// TODO: Warning here
6669
::read_detector<default_detector>(detector, mr, geometry_file,

io/src/read_detector_description.cpp

Lines changed: 16 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@
1515

1616
// Detray include(s)
1717
#include <detray/geometry/tracking_surface.hpp>
18+
#include <detray/io/frontend/impl/json_readers.hpp>
1819
#include <detray/utils/type_registry.hpp>
1920

2021
// VecMem include(s).
@@ -49,8 +50,8 @@ void read_json_dd_impl(traccc::silicon_detector_description::host& dd,
4950
const traccc::digitization_config& digi)
5051
requires(traccc::is_detector_traits<detector_traits_t>)
5152
{
52-
const traccc::default_detector::host& detector_host =
53-
detector.as<traccc::default_detector>();
53+
const typename detector_traits_t::host& detector_host =
54+
detector.as<detector_traits_t>();
5455

5556
// Iterate over the surfaces of the detector.
5657
const typename detector_traits_t::host::surface_lookup_container& surfaces =
@@ -118,8 +119,19 @@ void read_json_dd(traccc::silicon_detector_description::host& dd,
118119
traccc::host_detector detector;
119120
traccc::io::read_detector(detector, mr, geometry_file);
120121

121-
read_json_dd_impl<traccc::default_detector>(dd, detector, digi);
122-
// detector_buffer_visitor
122+
// TODO: Implement detector visitor!
123+
// Peek at the header to determine the kind of detector that is needed
124+
const auto header = detray::io::detail::deserialize_json_header(
125+
traccc::io::get_absolute_path(geometry_file));
126+
127+
if (header.detector == "Cylindrical detector from DD4hep blueprint") {
128+
read_json_dd_impl<traccc::odd_detector>(dd, detector, digi);
129+
} else if (header.detector == "detray_detector") {
130+
read_json_dd_impl<traccc::itk_detector>(dd, detector, digi);
131+
} else {
132+
// TODO: Warning here
133+
read_json_dd_impl<traccc::default_detector>(dd, detector, digi);
134+
}
123135
}
124136

125137
} // namespace

0 commit comments

Comments
 (0)