File indexing completed on 2026-07-26 08:22:13
0001
0002
0003
0004
0005
0006
0007
0008
0009 #include "traccc/options/telescope_detector.hpp"
0010
0011 #include "traccc/definitions/common.hpp"
0012 #include "traccc/examples/utils/printable.hpp"
0013
0014
0015 #include <sstream>
0016
0017 namespace traccc::opts {
0018
0019
0020 namespace po = boost::program_options;
0021
0022 telescope_detector::telescope_detector()
0023 : interface("Telescope Detector Options") {
0024 m_desc.add_options()("empty-material", po::bool_switch(&empty_material),
0025 "Build detector without materials");
0026 m_desc.add_options()("n-planes",
0027 po::value(&n_planes)->default_value(n_planes),
0028 "Number of planes");
0029 m_desc.add_options()("thickness-mm",
0030 po::value(&thickness)->default_value(thickness),
0031 "Slab thickness in [mm]");
0032 m_desc.add_options()("spacing", po::value(&spacing)->default_value(spacing),
0033 "Space between planes in [mm]");
0034 m_desc.add_options()("smearing-um",
0035 po::value(&smearing)->default_value(smearing),
0036 "Measurement smearing in [um]");
0037 m_desc.add_options()("half-length-mm",
0038 po::value(&half_length)->default_value(half_length),
0039 "Half length of plane [mm]");
0040 m_desc.add_options()("align-vector",
0041 po::value(&align_vector)
0042 ->value_name("X:Y:Z")
0043 ->default_value(align_vector),
0044 "Vector for plane placement");
0045 }
0046
0047 void telescope_detector::read(const po::variables_map &) {
0048 thickness *= traccc::unit<float>::mm;
0049 spacing *= traccc::unit<float>::mm;
0050 smearing *= traccc::unit<float>::um;
0051 half_length *= traccc::unit<float>::mm;
0052 }
0053
0054 std::unique_ptr<configuration_printable> telescope_detector::as_printable()
0055 const {
0056 auto cat = std::make_unique<configuration_category>(m_description);
0057
0058 cat->add_child(std::make_unique<configuration_kv_pair>(
0059 "Empty material", empty_material ? "yes" : "no"));
0060 cat->add_child(std::make_unique<configuration_kv_pair>(
0061 "Number of planes", std::to_string(n_planes)));
0062 cat->add_child(std::make_unique<configuration_kv_pair>(
0063 "Slab thickness",
0064 std::to_string(thickness / traccc::unit<float>::mm) + " mm"));
0065 cat->add_child(std::make_unique<configuration_kv_pair>(
0066 "Spacing", std::to_string(spacing / traccc::unit<float>::mm) + " mm"));
0067 cat->add_child(std::make_unique<configuration_kv_pair>(
0068 "Smearing", std::to_string(thickness / traccc::unit<float>::um) + " um"));
0069 cat->add_child(std::make_unique<configuration_kv_pair>(
0070 "Half length",
0071 std::to_string(half_length / traccc::unit<float>::mm) + " mm"));
0072 std::ostringstream align_ss;
0073 align_ss << align_vector;
0074 cat->add_child(std::make_unique<configuration_kv_pair>("Alignment axis",
0075 align_ss.str()));
0076
0077 return cat;
0078 }
0079
0080 }