Skip to content

Commit 279618e

Browse files
Mark Brettellstephenswat
authored andcommitted
Add GBTS command-line options and config reading
1 parent 65a0df5 commit 279618e

5 files changed

Lines changed: 146 additions & 2 deletions

File tree

device/cuda/include/traccc/cuda/gbts_seeding/gbts_seeding_algorithm.hpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,7 @@ class gbts_seeding_algorithm
4747
/// @param str The CUDA stream to perform the operations in
4848
///
4949
gbts_seeding_algorithm(
50-
const gbts_seedfinder_config& cfg, traccc::memory_resource& mr,
50+
const gbts_seedfinder_config& cfg, const traccc::memory_resource& mr,
5151
vecmem::copy& copy, stream& str,
5252
std::unique_ptr<const Logger> logger = getDummyLogger().clone());
5353

device/cuda/src/gbts_seeding/gbts_seeding_algorithm.cu

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -111,7 +111,7 @@ struct gbts_ctx {
111111
};
112112

113113
gbts_seeding_algorithm::gbts_seeding_algorithm(
114-
const gbts_seedfinder_config& cfg, traccc::memory_resource& mr,
114+
const gbts_seedfinder_config& cfg, const traccc::memory_resource& mr,
115115
vecmem::copy& copy, stream& str, std::unique_ptr<const Logger> logger)
116116
: messaging(logger->clone()),
117117
m_config(cfg),

examples/options/CMakeLists.txt

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@ traccc_add_library( traccc_options options TYPE SHARED
2727
"include/traccc/options/track_propagation.hpp"
2828
"include/traccc/options/track_resolution.hpp"
2929
"include/traccc/options/track_seeding.hpp"
30+
"include/traccc/options/track_gbts_seeding.hpp"
3031
# source files
3132
"src/details/interface.cpp"
3233
"src/accelerator.cpp"
@@ -49,6 +50,7 @@ traccc_add_library( traccc_options options TYPE SHARED
4950
"src/track_propagation.cpp"
5051
"src/track_resolution.cpp"
5152
"src/track_seeding.cpp"
53+
"src/track_gbts_seeding.cpp"
5254
"src/truth_finding.cpp"
5355
)
5456
target_link_libraries( traccc_options
Lines changed: 47 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,47 @@
1+
/** TRACCC library, part of the ACTS project (R&D line)
2+
*
3+
* (c) 2022-2024 CERN for the benefit of the ACTS project
4+
*
5+
* Mozilla Public License Version 2.0
6+
*/
7+
8+
#pragma once
9+
10+
// Project include(s).
11+
#include "traccc/gbts_seeding/gbts_seeding_config.hpp"
12+
#include "traccc/options/details/interface.hpp"
13+
14+
// System include(s).
15+
#include <cstddef>
16+
17+
namespace traccc::opts {
18+
19+
/// Option(s) for multi-threaded code execution
20+
class track_gbts_seeding : public interface {
21+
22+
public:
23+
/// @name Options
24+
/// @{
25+
26+
bool useGBTS = false;
27+
std::string config_dir = "DEFAULT";
28+
29+
/// @}
30+
// config info from file
31+
std::vector<std::pair<uint64_t, short>> barcodeBinning;
32+
std::vector<std::pair<int, std::vector<int>>> binTables;
33+
traccc::device::gbts_layerInfo layerInfo;
34+
35+
/// Constructor
36+
track_gbts_seeding();
37+
38+
/// Read/process the command line options
39+
///
40+
/// @param vm The command line options to interpret/read
41+
///
42+
void read(const boost::program_options::variables_map& vm) override;
43+
44+
std::unique_ptr<configuration_printable> as_printable() const override;
45+
};
46+
47+
} // namespace traccc::opts
Lines changed: 95 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,95 @@
1+
/** TRACCC library, part of the ACTS project (R&D line)
2+
*
3+
* (c) 2022-2025 CERN for the benefit of the ACTS project
4+
*
5+
* Mozilla Public License Version 2.0
6+
*/
7+
8+
// Local include(s).
9+
#include "traccc/options/track_gbts_seeding.hpp"
10+
11+
#include "traccc/examples/utils/printable.hpp"
12+
13+
// System include(s).
14+
#include <filesystem>
15+
#include <fstream>
16+
#include <stdexcept>
17+
18+
namespace traccc::opts {
19+
20+
track_gbts_seeding::track_gbts_seeding() : interface("GBTS Options") {
21+
m_desc.add_options()("useGBTS",
22+
boost::program_options::bool_switch(&useGBTS),
23+
"use gbts algorithm");
24+
25+
m_desc.add_options()(
26+
"gbts_config_dir",
27+
boost::program_options::value(&config_dir)->default_value(config_dir),
28+
"directory for gbts config files");
29+
}
30+
31+
void track_gbts_seeding::read(const boost::program_options::variables_map &) {
32+
// fill config
33+
if (!useGBTS) {
34+
return;
35+
}
36+
std::ifstream barcodeBinningFile(
37+
std::filesystem::path(config_dir + "/barcodeBinning.txt"));
38+
39+
unsigned int nBarcodes = 0;
40+
barcodeBinningFile >> nBarcodes;
41+
barcodeBinning.reserve(nBarcodes);
42+
43+
std::pair<uint64_t, short> barcodeLayerPair;
44+
for (; nBarcodes > 0u; --nBarcodes) {
45+
barcodeBinningFile >> barcodeLayerPair.first;
46+
barcodeBinningFile >> barcodeLayerPair.second;
47+
48+
barcodeBinning.push_back(barcodeLayerPair);
49+
}
50+
51+
std::ifstream binTablesFile(
52+
std::filesystem::path(config_dir + "/binTables.txt"));
53+
54+
unsigned int nBinPairs = 0;
55+
binTablesFile >> nBinPairs;
56+
binTables.reserve(nBinPairs);
57+
int bin1 = 0;
58+
std::vector<int> bin2 = {0};
59+
for (; nBinPairs > 0; --nBinPairs) {
60+
binTablesFile >> bin1;
61+
binTablesFile >> bin2[0];
62+
binTables.emplace_back(bin1, bin2);
63+
}
64+
65+
std::ifstream layerInfoFile(
66+
std::filesystem::path(config_dir + "/layerInfo.txt"));
67+
68+
unsigned int nLayers = 0;
69+
layerInfoFile >> nLayers;
70+
layerInfo.reserve(nLayers);
71+
int type = 0;
72+
std::array<int, 2> info = {0, 0};
73+
std::array<float, 2> geo = {0, 0};
74+
for (; nLayers > 0u; --nLayers) {
75+
layerInfoFile >> type;
76+
layerInfoFile >> info[0] >> info[1];
77+
layerInfoFile >> geo[0] >> geo[1];
78+
layerInfo.addLayer(static_cast<char>(type), info[0], info[1], geo[0],
79+
geo[1]);
80+
}
81+
}
82+
83+
std::unique_ptr<configuration_printable> track_gbts_seeding::as_printable()
84+
const {
85+
auto cat = std::make_unique<configuration_category>(m_description);
86+
87+
cat->add_child(std::make_unique<configuration_kv_pair>(
88+
"using gbts algorithm ", std::to_string(useGBTS)));
89+
cat->add_child(std::make_unique<configuration_kv_pair>(
90+
"gbts config directory ", config_dir));
91+
92+
return cat;
93+
}
94+
95+
} // namespace traccc::opts

0 commit comments

Comments
 (0)