File indexing completed on 2026-07-26 08:22:13
0001
0002
0003
0004
0005
0006
0007
0008
0009 #include "traccc/options/track_fitting.hpp"
0010
0011 #include "traccc/examples/utils/printable.hpp"
0012 #include "traccc/utils/particle.hpp"
0013
0014
0015 #include <format>
0016
0017 namespace traccc::opts {
0018
0019
0020 namespace po = boost::program_options;
0021
0022 track_fitting::track_fitting() : interface("Track Fitting Options") {
0023 m_desc.add_options()(
0024 "fit-num-iterations",
0025 po::value(&m_config.n_iterations)->default_value(m_config.n_iterations),
0026 "Number of iterations for the track fit");
0027 m_desc.add_options()(
0028 "fit-particle-hypothesis",
0029 po::value(&m_pdg)->value_name("PDG")->default_value(m_pdg),
0030 "Particle hypothesis for the track fit");
0031 m_desc.add_options()(
0032 "fit-covariance-inflation-factor",
0033 po::value(&m_config.covariance_inflation_factor)
0034 ->default_value(m_config.covariance_inflation_factor),
0035 "Covariance inflation factor for the track fit");
0036 m_desc.add_options()(
0037 "geo_id-sequence-size-factor",
0038 po::value(&m_config.surface_sequence_size_factor)
0039 ->default_value(m_config.surface_sequence_size_factor),
0040 "Size factor for the geometry identifier sequence used in the backward "
0041 "filter");
0042 m_desc.add_options()(
0043 "min-geo_id-sequence-capacity",
0044 po::value(&m_config.min_surface_sequence_capacity)
0045 ->default_value(m_config.min_surface_sequence_capacity),
0046 "Minimum capacity of geometry identifier sequence");
0047 m_desc.add_options()(
0048 "min-total-momentum",
0049 po::value(&m_config.min_p)->default_value(m_config.min_p),
0050 "Minimum total track momentum [GeV]");
0051 m_desc.add_options()(
0052 "min-transverse-momentum",
0053 po::value(&m_config.min_pT)->default_value(m_config.min_pT),
0054 "Minimum transverse track momentum [GeV]");
0055 }
0056
0057 void track_fitting::read(const po::variables_map &) {
0058 m_config.min_p *= traccc::unit<float>::GeV;
0059 m_config.min_pT *= traccc::unit<float>::GeV;
0060 }
0061
0062 track_fitting::operator fitting_config() const {
0063 fitting_config out = m_config;
0064
0065 out.ptc_hypothesis = detail::particle_from_pdg_number<traccc::scalar>(m_pdg);
0066
0067 return out;
0068 }
0069
0070 std::unique_ptr<configuration_printable> track_fitting::as_printable() const {
0071 auto cat = std::make_unique<configuration_category>(m_description);
0072
0073 cat->add_child(std::make_unique<configuration_kv_pair>(
0074 "Number of iterations", std::to_string(m_config.n_iterations)));
0075 cat->add_child(std::make_unique<configuration_kv_pair>(
0076 "Particle hypothesis PDG", std::to_string(m_pdg)));
0077 cat->add_child(std::make_unique<configuration_kv_pair>(
0078 "Covariance inflation factor",
0079 std::to_string(m_config.covariance_inflation_factor)));
0080 cat->add_child(std::make_unique<configuration_kv_pair>(
0081 "Geometry identifier sequence size factor",
0082 std::to_string(m_config.surface_sequence_size_factor)));
0083 cat->add_child(std::make_unique<configuration_kv_pair>(
0084 "Minimum capacity of geometry identifier sequence",
0085 std::to_string(m_config.min_surface_sequence_capacity)));
0086 cat->add_child(std::make_unique<configuration_kv_pair>(
0087 "Minimum pT",
0088 std::format("{} GeV", m_config.min_pT / traccc::unit<float>::GeV)));
0089 cat->add_child(std::make_unique<configuration_kv_pair>(
0090 "Minimum p",
0091 std::format("{} GeV", m_config.min_p / traccc::unit<float>::GeV)));
0092
0093 return cat;
0094 }
0095 }