Skip to content

Commit 6dd73d2

Browse files
authored
Merge pull request #1105 from stephenswat/impr/better_seeding_finding_opts
Improvements to track finding and seeding CLI
2 parents d6d6045 + 4bdc833 commit 6dd73d2

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)