Skip to content

Commit 1c85202

Browse files
authored
Merge pull request #1115 from stephenswat/refactor/seed_track_matching_options
Split up matching options for seeds and tracks
2 parents 1dcc794 + 6c37468 commit 1c85202

20 files changed

+276
-63
lines changed

examples/options/CMakeLists.txt

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -38,11 +38,13 @@ traccc_add_library( traccc_options options TYPE SHARED
3838
"src/output_data.cpp"
3939
"src/performance.cpp"
4040
"src/program_options.cpp"
41+
"src/seed_matching.cpp"
4142
"src/telescope_detector.cpp"
4243
"src/threading.cpp"
4344
"src/throughput.cpp"
4445
"src/track_finding.cpp"
4546
"src/track_fitting.cpp"
47+
"src/track_matching.cpp"
4648
"src/track_propagation.cpp"
4749
"src/track_resolution.cpp"
4850
"src/track_seeding.cpp"
Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
/** TRACCC library, part of the ACTS project (R&D line)
2+
*
3+
* (c) 2023-2024 CERN for the benefit of the ACTS project
4+
*
5+
* Mozilla Public License Version 2.0
6+
*/
7+
8+
#pragma once
9+
10+
#include <boost/program_options.hpp>
11+
12+
#include "traccc/definitions/common.hpp"
13+
#include "traccc/options/details/config_provider.hpp"
14+
#include "traccc/options/details/interface.hpp"
15+
#include "traccc/utils/seed_matching_config.hpp"
16+
17+
namespace traccc::opts {
18+
class seed_matching : public interface,
19+
public config_provider<seed_matching_config> {
20+
21+
public:
22+
float m_matching_ratio = 0.5f;
23+
24+
seed_matching();
25+
26+
operator seed_matching_config() const override;
27+
28+
std::unique_ptr<configuration_printable> as_printable() const override;
29+
};
30+
} // namespace traccc::opts
Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
/** TRACCC library, part of the ACTS project (R&D line)
2+
*
3+
* (c) 2023-2024 CERN for the benefit of the ACTS project
4+
*
5+
* Mozilla Public License Version 2.0
6+
*/
7+
8+
#pragma once
9+
10+
#include <boost/program_options.hpp>
11+
12+
#include "traccc/definitions/common.hpp"
13+
#include "traccc/options/details/config_provider.hpp"
14+
#include "traccc/options/details/interface.hpp"
15+
#include "traccc/utils/track_matching_config.hpp"
16+
17+
namespace traccc::opts {
18+
class track_matching : public interface,
19+
public config_provider<track_matching_config> {
20+
21+
public:
22+
float m_matching_ratio = 0.5f;
23+
bool m_double_matching = true;
24+
25+
track_matching();
26+
27+
operator track_matching_config() const override;
28+
29+
std::unique_ptr<configuration_printable> as_printable() const override;
30+
};
31+
} // namespace traccc::opts

examples/options/include/traccc/options/truth_finding.hpp

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -23,9 +23,7 @@ class truth_finding : public interface,
2323
float m_z_min = -500.f * unit<float>::mm;
2424
float m_z_max = 500.f * unit<float>::mm;
2525
float m_r_max = 200.f * unit<float>::mm;
26-
float m_matching_ratio = 0.5f;
2726
unsigned int m_min_track_candidates = 3;
28-
bool m_double_matching = true;
2927

3028
truth_finding();
3129

Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
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+
#include "traccc/options/seed_matching.hpp"
9+
10+
#include <format>
11+
12+
#include "traccc/definitions/common.hpp"
13+
#include "traccc/examples/utils/printable.hpp"
14+
15+
namespace traccc::opts {
16+
17+
seed_matching::seed_matching() : interface("Seed Matching Options") {
18+
m_desc.add_options()("seed-matching-ratio",
19+
boost::program_options::value(&m_matching_ratio)
20+
->default_value(m_matching_ratio),
21+
"Minimum track state matching ratio");
22+
}
23+
24+
seed_matching::operator seed_matching_config() const {
25+
return seed_matching_config{
26+
.matching_ratio = m_matching_ratio,
27+
};
28+
}
29+
30+
std::unique_ptr<configuration_printable> seed_matching::as_printable() const {
31+
auto cat = std::make_unique<configuration_category>(m_description);
32+
33+
cat->add_child(std::make_unique<configuration_kv_pair>(
34+
"Matching ratio", std::format("{}", m_matching_ratio)));
35+
36+
return cat;
37+
}
38+
} // namespace traccc::opts
Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,43 @@
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+
#include "traccc/options/track_matching.hpp"
9+
10+
#include <format>
11+
12+
#include "traccc/definitions/common.hpp"
13+
#include "traccc/examples/utils/printable.hpp"
14+
15+
namespace traccc::opts {
16+
17+
track_matching::track_matching() : interface("Track Matching Options") {
18+
m_desc.add_options()("track-matching-ratio",
19+
boost::program_options::value(&m_matching_ratio)
20+
->default_value(m_matching_ratio),
21+
"Minimum track state matching ratio");
22+
m_desc.add_options()("track-double-matching",
23+
boost::program_options::value(&m_double_matching)
24+
->default_value(m_double_matching),
25+
"Enable double truth-reco matching");
26+
}
27+
28+
track_matching::operator track_matching_config() const {
29+
return track_matching_config{.matching_ratio = m_matching_ratio,
30+
.double_matching = m_double_matching};
31+
}
32+
33+
std::unique_ptr<configuration_printable> track_matching::as_printable() const {
34+
auto cat = std::make_unique<configuration_category>(m_description);
35+
36+
cat->add_child(std::make_unique<configuration_kv_pair>(
37+
"Matching ratio", std::format("{}", m_matching_ratio)));
38+
cat->add_child(std::make_unique<configuration_kv_pair>(
39+
"Double matching", std::format("{}", m_double_matching)));
40+
41+
return cat;
42+
}
43+
} // namespace traccc::opts

examples/options/src/truth_finding.cpp

Lines changed: 6 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -31,18 +31,10 @@ truth_finding::truth_finding() : interface("Truth Track Finding Options") {
3131
"truth-finding-max-r",
3232
boost::program_options::value(&m_r_max)->default_value(m_r_max),
3333
"Candidate particle max r cut [mm]");
34-
m_desc.add_options()("truth-finding-matching-ratio",
35-
boost::program_options::value(&m_matching_ratio)
36-
->default_value(m_matching_ratio),
37-
"Minimum track state matching ratio");
3834
m_desc.add_options()("truth-finding-min-track-candidates",
3935
boost::program_options::value(&m_min_track_candidates)
4036
->default_value(m_min_track_candidates),
4137
"Minimum track candidates on track");
42-
m_desc.add_options()("truth-finding-double-matching",
43-
boost::program_options::bool_switch(&m_double_matching)
44-
->default_value(m_double_matching),
45-
"Enable double truth-reco matching");
4638
}
4739

4840
void truth_finding::read(const boost::program_options::variables_map &) {
@@ -53,13 +45,12 @@ void truth_finding::read(const boost::program_options::variables_map &) {
5345
}
5446

5547
truth_finding::operator truth_matching_config() const {
56-
return truth_matching_config{.pT_min = m_pT_min,
57-
.z_min = m_z_min,
58-
.z_max = m_z_max,
59-
.r_max = m_r_max,
60-
.matching_ratio = m_matching_ratio,
61-
.min_track_candidates = m_min_track_candidates,
62-
.double_matching = m_double_matching};
48+
return truth_matching_config{
49+
.pT_min = m_pT_min,
50+
.z_min = m_z_min,
51+
.z_max = m_z_max,
52+
.r_max = m_r_max,
53+
.min_track_candidates = m_min_track_candidates};
6354
}
6455

6556
std::unique_ptr<configuration_printable> truth_finding::as_printable() const {
@@ -73,12 +64,8 @@ std::unique_ptr<configuration_printable> truth_finding::as_printable() const {
7364
"Maximum z", std::format("{} mm", m_z_max / unit<float>::mm)));
7465
cat->add_child(std::make_unique<configuration_kv_pair>(
7566
"Maximum r", std::format("{} mm", m_r_max / unit<float>::mm)));
76-
cat->add_child(std::make_unique<configuration_kv_pair>(
77-
"Matching ratio", std::format("{}", m_matching_ratio)));
7867
cat->add_child(std::make_unique<configuration_kv_pair>(
7968
"Minimum track candidates", std::format("{}", m_min_track_candidates)));
80-
cat->add_child(std::make_unique<configuration_kv_pair>(
81-
"Double matching", std::format("{}", m_double_matching)));
8269

8370
return cat;
8471
}

examples/run/alpaka/seeding_example_alpaka.cpp

Lines changed: 15 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -34,8 +34,10 @@
3434
#include "traccc/options/input_data.hpp"
3535
#include "traccc/options/performance.hpp"
3636
#include "traccc/options/program_options.hpp"
37+
#include "traccc/options/seed_matching.hpp"
3738
#include "traccc/options/track_finding.hpp"
3839
#include "traccc/options/track_fitting.hpp"
40+
#include "traccc/options/track_matching.hpp"
3941
#include "traccc/options/track_propagation.hpp"
4042
#include "traccc/options/track_seeding.hpp"
4143
#include "traccc/options/truth_finding.hpp"
@@ -65,6 +67,8 @@ int seq_run(const traccc::opts::track_seeding& seeding_opts,
6567
const traccc::opts::performance& performance_opts,
6668
const traccc::opts::accelerator& accelerator_opts,
6769
const traccc::opts::truth_finding& truth_finding_opts,
70+
const traccc::opts::seed_matching& seed_matching_opts,
71+
const traccc::opts::track_matching& track_matching_opts,
6872
[[maybe_unused]] std::unique_ptr<const traccc::Logger> ilogger) {
6973
TRACCC_LOCAL_LOGGER(std::move(ilogger));
7074

@@ -79,12 +83,14 @@ int seq_run(const traccc::opts::track_seeding& seeding_opts,
7983

8084
// Performance writer
8185
traccc::seeding_performance_writer sd_performance_writer(
82-
traccc::seeding_performance_writer::config{.truth_config =
83-
truth_finding_opts},
86+
traccc::seeding_performance_writer::config{
87+
.truth_config = truth_finding_opts,
88+
.seed_truth_config = seed_matching_opts},
8489
logger().clone("SeedingPerformanceWriter"));
8590
traccc::finding_performance_writer find_performance_writer(
86-
traccc::finding_performance_writer::config{.truth_config =
87-
truth_finding_opts},
91+
traccc::finding_performance_writer::config{
92+
.truth_config = truth_finding_opts,
93+
.track_truth_config = track_matching_opts},
8894
logger().clone("FindingPerformanceWriter"));
8995
traccc::fitting_performance_writer fit_performance_writer(
9096
traccc::fitting_performance_writer::config{},
@@ -459,17 +465,20 @@ int main(int argc, char* argv[]) {
459465
traccc::opts::performance performance_opts;
460466
traccc::opts::accelerator accelerator_opts;
461467
traccc::opts::truth_finding truth_finding_opts;
468+
traccc::opts::seed_matching seed_matching_opts;
469+
traccc::opts::track_matching track_matching_opts;
462470
traccc::opts::program_options program_opts{
463471
"Full Tracking Chain Using Alpaka (without clusterization)",
464472
{detector_opts, bfield_opts, input_opts, seeding_opts, finding_opts,
465473
propagation_opts, fitting_opts, performance_opts, accelerator_opts,
466-
truth_finding_opts},
474+
truth_finding_opts, seed_matching_opts, track_matching_opts},
467475
argc,
468476
argv,
469477
logger->cloneWithSuffix("Options")};
470478

471479
// Run the application.
472480
return seq_run(seeding_opts, finding_opts, propagation_opts, fitting_opts,
473481
input_opts, detector_opts, bfield_opts, performance_opts,
474-
accelerator_opts, truth_finding_opts, logger->clone());
482+
accelerator_opts, truth_finding_opts, seed_matching_opts,
483+
track_matching_opts, logger->clone());
475484
}

examples/run/cpu/seeding_example.cpp

Lines changed: 14 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -38,8 +38,10 @@
3838
#include "traccc/options/magnetic_field.hpp"
3939
#include "traccc/options/performance.hpp"
4040
#include "traccc/options/program_options.hpp"
41+
#include "traccc/options/seed_matching.hpp"
4142
#include "traccc/options/track_finding.hpp"
4243
#include "traccc/options/track_fitting.hpp"
44+
#include "traccc/options/track_matching.hpp"
4345
#include "traccc/options/track_propagation.hpp"
4446
#include "traccc/options/track_resolution.hpp"
4547
#include "traccc/options/track_seeding.hpp"
@@ -66,6 +68,8 @@ int seq_run(const traccc::opts::track_seeding& seeding_opts,
6668
const traccc::opts::magnetic_field& bfield_opts,
6769
const traccc::opts::performance& performance_opts,
6870
const traccc::opts::truth_finding& truth_finding_opts,
71+
const traccc::opts::seed_matching& seed_matching_opts,
72+
const traccc::opts::track_matching& track_matching_opts,
6973
std::unique_ptr<const traccc::Logger> ilogger) {
7074
TRACCC_LOCAL_LOGGER(std::move(ilogger));
7175

@@ -77,12 +81,14 @@ int seq_run(const traccc::opts::track_seeding& seeding_opts,
7781

7882
// Performance writer
7983
traccc::seeding_performance_writer sd_performance_writer(
80-
traccc::seeding_performance_writer::config{.truth_config =
81-
truth_finding_opts},
84+
traccc::seeding_performance_writer::config{
85+
.truth_config = truth_finding_opts,
86+
.seed_truth_config = seed_matching_opts},
8287
logger().clone("SeedingPerformanceWriter"));
8388
traccc::finding_performance_writer find_performance_writer(
84-
traccc::finding_performance_writer::config{.truth_config =
85-
truth_finding_opts},
89+
traccc::finding_performance_writer::config{
90+
.truth_config = truth_finding_opts,
91+
.track_truth_config = track_matching_opts},
8692
logger().clone("FindingPerformanceWriter"));
8793
traccc::finding_performance_writer::config ar_writer_cfg;
8894
ar_writer_cfg.file_path = "performance_track_ambiguity_resolution.root";
@@ -290,11 +296,13 @@ int main(int argc, char* argv[]) {
290296
traccc::opts::track_fitting fitting_opts;
291297
traccc::opts::performance performance_opts;
292298
traccc::opts::truth_finding truth_finding_opts;
299+
traccc::opts::seed_matching seed_matching_opts;
300+
traccc::opts::track_matching track_matching_opts;
293301
traccc::opts::program_options program_opts{
294302
"Full Tracking Chain on the Host (without clusterization)",
295303
{detector_opts, bfield_opts, input_opts, seeding_opts, finding_opts,
296304
propagation_opts, resolution_opts, fitting_opts, performance_opts,
297-
truth_finding_opts},
305+
truth_finding_opts, seed_matching_opts, track_matching_opts},
298306
argc,
299307
argv,
300308
logger->cloneWithSuffix("Options")};
@@ -303,5 +311,5 @@ int main(int argc, char* argv[]) {
303311
return seq_run(seeding_opts, finding_opts, propagation_opts,
304312
resolution_opts, fitting_opts, input_opts, detector_opts,
305313
bfield_opts, performance_opts, truth_finding_opts,
306-
logger->clone());
314+
seed_matching_opts, track_matching_opts, logger->clone());
307315
}

0 commit comments

Comments
 (0)