Skip to content

Commit 6c37468

Browse files
committed
Split up matching options for seeds and tracks
This commit splits up the matching options for seeds and tracks. Previously this was one object, but double matching is not relevant for seeds and it is also useful to have different matching ratios for the two kinds of objects.
1 parent 1dcc794 commit 6c37468

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)