12#include "detray/definitions/algebra.hpp"
15#include "detray/options/options_handling.hpp"
16#include "detray/test/common/build_toy_detector.hpp"
19#include "detray/options/boost_program_options.hpp"
25namespace detray::options {
30template <concepts::scalar scalar_t>
31void add_toy_det_options(boost::program_options::options_description &desc,
32 const toy_det_config<scalar_t> &cfg) {
35 boost::program_options::value<unsigned int>()->default_value(
37 "number of barrel layers [0-4]")(
39 boost::program_options::value<unsigned int>()->default_value(
41 "number of endcap layers on either side [0-7]")(
42 "homogeneous_material",
43 "Generate homogeneous material description (default)")(
44 "material_maps",
"Generate material maps");
48template <concepts::scalar scalar_t>
49void configure_toy_det_options(
const boost::program_options::variables_map &vm,
50 toy_det_config<scalar_t> &cfg) {
51 cfg.n_brl_layers(vm[
"barrel_layers"].as<unsigned int>());
52 cfg.n_edc_layers(vm[
"endcap_layers"].as<unsigned int>());
54 if (vm.count(
"homogeneous_material") != 0u &&
55 vm.count(
"material_maps") != 0u) {
56 throw std::invalid_argument(
"Please specify only one material description");
58 if (vm.count(
"homogeneous_material") != 0u) {
59 cfg.use_material_maps(
false);
61 if (vm.count(
"material_maps") != 0u) {
62 cfg.use_material_maps(
true);
71void add_options<toy_det_config<float>>(
72 boost::program_options::options_description &desc,
73 const toy_det_config<float> &cfg) {
74 detail::add_toy_det_options(desc, cfg);
78void add_options<toy_det_config<double>>(
79 boost::program_options::options_description &desc,
80 const toy_det_config<double> &cfg) {
81 detail::add_toy_det_options(desc, cfg);
88void configure_options<toy_det_config<float>>(
89 const boost::program_options::variables_map &vm,
90 toy_det_config<float> &cfg) {
91 detail::configure_toy_det_options(vm, cfg);
95void configure_options<toy_det_config<double>>(
96 const boost::program_options::variables_map &vm,
97 toy_det_config<double> &cfg) {
98 detail::configure_toy_det_options(vm, cfg);