Skip to content

Commit 4bdc833

Browse files
committed
Improvements to track finding and seeding CLI
This commit expands on #1088 which added more CLI options but did not cover the entire parameter space. This commit adds the remaining relevant parameters and also fixes some typos, bugs and improves the printing of some parameters.
1 parent d6d6045 commit 4bdc833

File tree

2 files changed

+54
-9
lines changed

2 files changed

+54
-9
lines changed

examples/options/src/track_finding.cpp

Lines changed: 12 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -64,13 +64,18 @@ track_finding::track_finding() : interface("Track Finding Options") {
6464
po::value(&m_pdg_number)->default_value(m_pdg_number),
6565
"PDG number for the particle hypothesis");
6666
m_desc.add_options()(
67-
"min-total-momentum [GeV]",
67+
"min-total-momentum",
6868
po::value(&m_config.min_p_mag)->default_value(m_config.min_p_mag),
69-
"Minimum total track momentum");
69+
"Minimum total track momentum [GeV]");
7070
m_desc.add_options()(
71-
"min-transverse-momentum [GeV]",
71+
"min-transverse-momentum",
7272
po::value(&m_config.min_p_mag)->default_value(m_config.min_p_mag),
73-
"Minimum transverse track momentum");
73+
"Minimum transverse track momentum [GeV]");
74+
m_desc.add_options()(
75+
"duplicate-removal-minimum-length",
76+
po::value(&m_config.duplicate_removal_minimum_length)
77+
->default_value(m_config.duplicate_removal_minimum_length),
78+
"Minimum track length for deduplication (0 to disable) [cardinal]");
7479
}
7580

7681
void track_finding::read(const po::variables_map &vm) {
@@ -116,6 +121,9 @@ std::unique_ptr<configuration_printable> track_finding::as_printable() const {
116121
cat->add_child(std::make_unique<configuration_kv_pair>(
117122
"Max holes per candidate",
118123
std::to_string(m_config.max_num_skipping_per_cand)));
124+
cat->add_child(std::make_unique<configuration_kv_pair>(
125+
"Min track length for deduplication",
126+
std::to_string(m_config.duplicate_removal_minimum_length)));
119127
cat->add_child(std::make_unique<configuration_kv_pair>(
120128
"PDG number", std::to_string(m_pdg_number)));
121129
// How to interpret the minimum track momentum value

examples/options/src/track_seeding.cpp

Lines changed: 42 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,7 @@ track_seeding::track_seeding() : interface("Track Seeding Options") {
4747
m_desc.add_options()(
4848
"seedfinder-deltaR-range",
4949
po::value(&m_delta_r_range)->default_value(m_delta_r_range),
50-
"Distance range in radious between measurements within one seed [mm]");
50+
"Radial distance between measurements [mm]");
5151

5252
m_desc.add_options()(
5353
"seedfinder-impactMax",
@@ -62,7 +62,7 @@ track_seeding::track_seeding() : interface("Track Seeding Options") {
6262
"seedfinder-maxPtScattering",
6363
po::value(&m_seedfinder.maxPtScattering)
6464
->default_value(m_seedfinder.maxPtScattering / unit<float>::GeV),
65-
"Upper pt limit for scattering calculation [GeV]");
65+
"Upper pT limit for scattering [GeV]");
6666

6767
m_desc.add_options()("seedfinder-maxSeedsPerSpM",
6868
po::value(&m_seedfinder.maxSeedsPerSpM)
@@ -73,6 +73,24 @@ track_seeding::track_seeding() : interface("Track Seeding Options") {
7373
po::value(&m_seedfinder.bFieldInZ)
7474
->default_value(m_seedfinder.bFieldInZ / unit<float>::T),
7575
"B-field in Z direction [T]");
76+
m_desc.add_options()(
77+
"seedfinder-deltaInvHelixDiameter",
78+
po::value(&m_seedfilter.deltaInvHelixDiameter)
79+
->default_value(m_seedfilter.deltaInvHelixDiameter *
80+
unit<float>::mm),
81+
"Inverted radius delta for compatible seeds [mm^-1]");
82+
m_desc.add_options()("seedfinder-impactWeightFactor",
83+
po::value(&m_seedfilter.impactWeightFactor)
84+
->default_value(m_seedfilter.impactWeightFactor),
85+
"Weight factor for impact parameter [unitless]");
86+
m_desc.add_options()("seedfinder-compatSeedWeight",
87+
po::value(&m_seedfilter.compatSeedWeight)
88+
->default_value(m_seedfilter.compatSeedWeight),
89+
"Weight per compatible seed [unitless]");
90+
m_desc.add_options()("seedfinder-compatSeedLimit",
91+
po::value(&m_seedfilter.compatSeedLimit)
92+
->default_value(m_seedfilter.compatSeedLimit),
93+
"Maximum weighted compatible seeds [cardinal]");
7694
}
7795

7896
track_seeding::operator seedfinder_config() const {
@@ -111,6 +129,8 @@ void track_seeding::read(const po::variables_map&) {
111129
m_seedfinder.maxPtScattering *= unit<float>::GeV;
112130
m_seedfinder.bFieldInZ *= unit<float>::T;
113131

132+
m_seedfilter.deltaInvHelixDiameter /= unit<float>::mm;
133+
114134
m_seedfinder.setup();
115135
}
116136

@@ -135,11 +155,15 @@ std::unique_ptr<configuration_printable> track_seeding::as_printable() const {
135155
cat->add_child(std::make_unique<configuration_kv_pair>(
136156
"Minimum track momentum",
137157
std::format("{:.2f} GeV", m_seedfinder.minPt / unit<float>::GeV)));
158+
159+
float theta = std::atan(1.f / m_seedfinder.cotThetaMax);
160+
float eta = -std::log(std::tan(theta / 2.f));
161+
138162
cat->add_child(std::make_unique<configuration_kv_pair>(
139163
"Maximum cotangent of theta angle",
140-
std::format("{:.4f}", m_seedfinder.cotThetaMax)));
164+
std::format("{:.4f} (eta = {:.2f})", m_seedfinder.cotThetaMax, eta)));
141165
cat->add_child(std::make_unique<configuration_kv_pair>(
142-
"Distance range in radious between measurements within one seed",
166+
"Radial distance between measurements",
143167
std::format("[{:.2f} - {:.2f}] mm",
144168
m_seedfinder.deltaRMin / unit<float>::mm,
145169
m_seedfinder.deltaRMax / unit<float>::mm)));
@@ -150,7 +174,7 @@ std::unique_ptr<configuration_printable> track_seeding::as_printable() const {
150174
"Scattering angle sigma",
151175
std::format("{:.2f}", m_seedfinder.sigmaScattering)));
152176
cat->add_child(std::make_unique<configuration_kv_pair>(
153-
"Upper pt limit for scattering calculation",
177+
"Upper pT limit for scattering",
154178
std::format("{:.2f} GeV",
155179
m_seedfinder.maxPtScattering / unit<float>::GeV)));
156180
cat->add_child(std::make_unique<configuration_kv_pair>(
@@ -159,6 +183,19 @@ std::unique_ptr<configuration_printable> track_seeding::as_printable() const {
159183
cat->add_child(std::make_unique<configuration_kv_pair>(
160184
"B-field in Z direction",
161185
std::format("{:.2f} T", m_seedfinder.bFieldInZ / unit<float>::T)));
186+
cat->add_child(std::make_unique<configuration_kv_pair>(
187+
"Inverted radius delta for compatible seeds",
188+
std::format("{:.5f} mm^-1",
189+
m_seedfilter.deltaInvHelixDiameter * unit<float>::mm)));
190+
cat->add_child(std::make_unique<configuration_kv_pair>(
191+
"Weight factor for impact parameter",
192+
std::format("{:.2f}", m_seedfilter.impactWeightFactor)));
193+
cat->add_child(std::make_unique<configuration_kv_pair>(
194+
"Weight per compatible seed",
195+
std::format("{:.2f}", m_seedfilter.compatSeedWeight)));
196+
cat->add_child(std::make_unique<configuration_kv_pair>(
197+
"Maximum weighted compatible seed",
198+
std::format("{:d}", m_seedfilter.compatSeedLimit)));
162199

163200
return cat;
164201
}

0 commit comments

Comments
 (0)