Back to home page

EIC code displayed by LXR

 
 

    


File indexing completed on 2026-07-26 08:22:13

0001 /** TRACCC library, part of the ACTS project (R&D line)
0002  *
0003  * (c) 2023-2025 CERN for the benefit of the ACTS project
0004  *
0005  * Mozilla Public License Version 2.0
0006  */
0007 
0008 // Project include(s).
0009 #include "traccc/options/track_fitting.hpp"
0010 
0011 #include "traccc/examples/utils/printable.hpp"
0012 #include "traccc/utils/particle.hpp"
0013 
0014 // System include(s).
0015 #include <format>
0016 
0017 namespace traccc::opts {
0018 
0019 /// Convenience namespace shorthand
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 }  // namespace traccc::opts