diff --git a/device/cuda/include/traccc/cuda/gbts_seeding/gbts_seeding_algorithm.hpp b/device/cuda/include/traccc/cuda/gbts_seeding/gbts_seeding_algorithm.hpp index 1e8903c8f2..05c1014dc7 100644 --- a/device/cuda/include/traccc/cuda/gbts_seeding/gbts_seeding_algorithm.hpp +++ b/device/cuda/include/traccc/cuda/gbts_seeding/gbts_seeding_algorithm.hpp @@ -47,7 +47,7 @@ class gbts_seeding_algorithm /// @param str The CUDA stream to perform the operations in /// gbts_seeding_algorithm( - const gbts_seedfinder_config& cfg, traccc::memory_resource& mr, + const gbts_seedfinder_config& cfg, const traccc::memory_resource& mr, vecmem::copy& copy, stream& str, std::unique_ptr logger = getDummyLogger().clone()); diff --git a/device/cuda/src/gbts_seeding/gbts_seeding_algorithm.cu b/device/cuda/src/gbts_seeding/gbts_seeding_algorithm.cu index 5646e7d7a0..93d5998493 100644 --- a/device/cuda/src/gbts_seeding/gbts_seeding_algorithm.cu +++ b/device/cuda/src/gbts_seeding/gbts_seeding_algorithm.cu @@ -111,7 +111,7 @@ struct gbts_ctx { }; gbts_seeding_algorithm::gbts_seeding_algorithm( - const gbts_seedfinder_config& cfg, traccc::memory_resource& mr, + const gbts_seedfinder_config& cfg, const traccc::memory_resource& mr, vecmem::copy& copy, stream& str, std::unique_ptr logger) : messaging(logger->clone()), m_config(cfg), diff --git a/examples/options/CMakeLists.txt b/examples/options/CMakeLists.txt index b57795b2c1..42466e4a8c 100644 --- a/examples/options/CMakeLists.txt +++ b/examples/options/CMakeLists.txt @@ -27,6 +27,7 @@ traccc_add_library( traccc_options options TYPE SHARED "include/traccc/options/track_propagation.hpp" "include/traccc/options/track_resolution.hpp" "include/traccc/options/track_seeding.hpp" + "include/traccc/options/track_gbts_seeding.hpp" # source files "src/details/interface.cpp" "src/accelerator.cpp" @@ -49,6 +50,7 @@ traccc_add_library( traccc_options options TYPE SHARED "src/track_propagation.cpp" "src/track_resolution.cpp" "src/track_seeding.cpp" + "src/track_gbts_seeding.cpp" "src/truth_finding.cpp" ) target_link_libraries( traccc_options diff --git a/examples/options/include/traccc/options/track_gbts_seeding.hpp b/examples/options/include/traccc/options/track_gbts_seeding.hpp new file mode 100644 index 0000000000..fd4ec5fec7 --- /dev/null +++ b/examples/options/include/traccc/options/track_gbts_seeding.hpp @@ -0,0 +1,47 @@ +/** TRACCC library, part of the ACTS project (R&D line) + * + * (c) 2022-2024 CERN for the benefit of the ACTS project + * + * Mozilla Public License Version 2.0 + */ + +#pragma once + +// Project include(s). +#include "traccc/gbts_seeding/gbts_seeding_config.hpp" +#include "traccc/options/details/interface.hpp" + +// System include(s). +#include + +namespace traccc::opts { + +/// Option(s) for multi-threaded code execution +class track_gbts_seeding : public interface { + + public: + /// @name Options + /// @{ + + bool m_use_gbts = false; + std::string m_config_dir = "DEFAULT"; + + /// @} + // config info from file + std::vector> barcodeBinning; + std::vector>> binTables; + traccc::device::gbts_layerInfo layerInfo; + + /// Constructor + track_gbts_seeding(); + + /// Read/process the command line options + /// + /// @param vm The command line options to interpret/read + /// + void read(const boost::program_options::variables_map& vm) override; + + std::unique_ptr as_printable() const override; +}; + +} // namespace traccc::opts diff --git a/examples/options/src/track_gbts_seeding.cpp b/examples/options/src/track_gbts_seeding.cpp new file mode 100644 index 0000000000..e7ddb5e3fa --- /dev/null +++ b/examples/options/src/track_gbts_seeding.cpp @@ -0,0 +1,95 @@ +/** TRACCC library, part of the ACTS project (R&D line) + * + * (c) 2022-2025 CERN for the benefit of the ACTS project + * + * Mozilla Public License Version 2.0 + */ + +// Local include(s). +#include "traccc/options/track_gbts_seeding.hpp" + +#include "traccc/examples/utils/printable.hpp" + +// System include(s). +#include +#include +#include + +namespace traccc::opts { + +track_gbts_seeding::track_gbts_seeding() : interface("GBTS Options") { + m_desc.add_options()("use-gbts", + boost::program_options::bool_switch(&m_use_gbts), + "Use gbts algorithm"); + + m_desc.add_options()("gbts-config-dir", + boost::program_options::value(&m_config_dir) + ->default_value(m_config_dir), + "Directory for GBTS config files"); +} + +void track_gbts_seeding::read(const boost::program_options::variables_map &) { + // fill config + if (!m_use_gbts) { + return; + } + std::ifstream barcodeBinningFile( + std::filesystem::path(m_config_dir + "/barcodeBinning.txt")); + + unsigned int nBarcodes = 0; + barcodeBinningFile >> nBarcodes; + barcodeBinning.reserve(nBarcodes); + + std::pair barcodeLayerPair; + for (; nBarcodes > 0u; --nBarcodes) { + barcodeBinningFile >> barcodeLayerPair.first; + barcodeBinningFile >> barcodeLayerPair.second; + + barcodeBinning.push_back(barcodeLayerPair); + } + + std::ifstream binTablesFile( + std::filesystem::path(m_config_dir + "/binTables.txt")); + + unsigned int nBinPairs = 0; + binTablesFile >> nBinPairs; + binTables.reserve(nBinPairs); + int bin1 = 0; + std::vector bin2 = {0}; + for (; nBinPairs > 0; --nBinPairs) { + binTablesFile >> bin1; + binTablesFile >> bin2[0]; + binTables.emplace_back(bin1, bin2); + } + + std::ifstream layerInfoFile( + std::filesystem::path(m_config_dir + "/layerInfo.txt")); + + unsigned int nLayers = 0; + layerInfoFile >> nLayers; + layerInfo.reserve(nLayers); + int type = 0; + std::array info = {0, 0}; + std::array geo = {0, 0}; + for (; nLayers > 0u; --nLayers) { + layerInfoFile >> type; + layerInfoFile >> info[0] >> info[1]; + layerInfoFile >> geo[0] >> geo[1]; + layerInfo.addLayer(static_cast(type), info[0], info[1], geo[0], + geo[1]); + } +} + +std::unique_ptr track_gbts_seeding::as_printable() + const { + auto cat = std::make_unique(m_description); + + cat->add_child(std::make_unique( + "Using GBTS algorithm", std::to_string(m_use_gbts))); + cat->add_child(std::make_unique( + "GBTS config directory ", m_config_dir)); + + return cat; +} + +} // namespace traccc::opts