File indexing completed on 2026-07-26 08:22:19
0001
0002
0003
0004
0005
0006
0007
0008
0009 #include "traccc/io/read_detector.hpp"
0010
0011 #include "traccc/geometry/detector.hpp"
0012 #include "traccc/geometry/host_detector.hpp"
0013 #include "traccc/io/detector.hpp"
0014 #include "traccc/io/utils.hpp"
0015
0016
0017 #include <string>
0018
0019 namespace {
0020
0021
0022 template <typename detector_t>
0023 void read_detector(traccc::host_detector& detector, vecmem::memory_resource& mr,
0024 const std::string_view& geometry_file,
0025 const std::string_view& material_file,
0026 const std::string_view& grid_file,
0027 const bool do_consistency_check = false) {
0028
0029 detray::io::detector_reader_config cfg;
0030 cfg.do_check(do_consistency_check);
0031
0032 cfg.add_file(traccc::io::get_absolute_path(geometry_file));
0033 if (material_file.empty() == false) {
0034 cfg.add_file(traccc::io::get_absolute_path(material_file));
0035 }
0036 if (grid_file.empty() == false) {
0037 cfg.add_file(traccc::io::get_absolute_path(grid_file));
0038 }
0039
0040
0041 auto det = detray::io::read_detector<typename detector_t::host>(mr, cfg);
0042 detector.set<detector_t>(std::move(det.first));
0043 }
0044
0045 }
0046
0047 namespace traccc::io {
0048
0049 void read_detector(host_detector& detector, vecmem::memory_resource& mr,
0050 const std::string_view& geometry_file,
0051 const std::string_view& material_file,
0052 const std::string_view& grid_file) {
0053
0054 const auto header = detray::io::detail::deserialize_json_header(
0055 traccc::io::get_absolute_path(geometry_file));
0056
0057
0058 if (header.detector == "Cylindrical detector from DD4hep blueprint") {
0059 ::read_detector<odd_detector>(detector, mr, geometry_file, material_file,
0060 grid_file);
0061 } else if (header.detector == "detray_detector") {
0062 ::read_detector<itk_detector>(detector, mr, geometry_file, material_file,
0063 grid_file);
0064 } else {
0065
0066 ::read_detector<default_detector>(detector, mr, geometry_file,
0067 material_file, grid_file);
0068 }
0069 }
0070
0071 }