12#include "detray/builders/detector_builder.hpp"
13#include "detray/io/frontend/detail/detector_components_reader.hpp"
14#include "detray/io/frontend/detector_reader_config.hpp"
15#include "detray/io/frontend/impl/json_readers.hpp"
16#include "detray/utils/consistency_checker.hpp"
17#include "detray/utils/logging.hpp"
18#include "detray/utils/print_detector.hpp"
35template <
class detector_t, std::
size_t CAP = 0u, std::
size_t DIM = 2u>
40 detail::detector_components_reader<detector_t> readers;
43 detail::add_json_readers<CAP, DIM>(readers, file_names);
46 if (readers.size() != file_names.size()) {
47 std::stringstream err_str{};
48 for (
const auto& [file_name, reader] : readers.readers_map()) {
49 err_str <<
"-> " << file_name << std::endl;
51 DETRAY_ERROR_HOST(
"Not all files were registered to a reader. "
52 <<
"Successfully registered files:\n"
57 readers.read(det_builder);
72template <
class detector_t, std::size_t CAP = 0u, std::size_t DIM = 2u,
77 typename detector_t::name_map names{};
81 DETRAY_INFO_HOST(
"Reading detector files... ");
87 DETRAY_INFO_HOST(
"Done reading files");
90 auto det = det_builder.
build(resc, cfg.builder_options(), names);
94 detray::detail::check_consistency(det, cfg.verbose_check(), names);
97 DETRAY_DEBUG_HOST(
"\n" << detray::utils::print_detector(det, names));
99 return std::make_pair(std::move(det), std::move(names));
Provides functionality to build a detray detector volume by volume.
Definition detector_builder.hpp:40
auto build(vecmem::memory_resource &resource, const volume_builder_options &opt) -> detector_type
Assembles the final detector from the volumes builders and allocates the detector containers with the...
Definition detector_builder.hpp:133
Provides basic functionality to build detector volumes.
Definition volume_builder.hpp:36
The following enums are global for all detectors.
Definition concepts.hpp:18
auto read_detector(vecmem::memory_resource &resc, const detector_reader_config &cfg) noexcept(false)
Reader function for detray detectors.
Definition detector_reader.hpp:74
void read_components_from_file(const std::vector< std::string > &file_names, detector_builder< typename detector_t::metadata, volume_builder > &det_builder)
Read detector components from a list of files.
Definition detector_reader.hpp:36
config struct for detector reading.
Definition detector_reader_config.hpp:22