Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

fix: More precise track parameter estimation for high curvature tracks #2982

Merged
merged 9 commits into from
Mar 12, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
18 changes: 6 additions & 12 deletions Core/include/Acts/Seeding/EstimateTrackParamsFromSeed.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -235,19 +235,13 @@ std::optional<BoundVector> estimateTrackParamsFromSeed(
// the line passes through P = (0.5 * (x2 + x1), 0.5 * y2)
ActsScalar b = 0.5 * (local2(1) + 1. / a * sumX21);
circleCenter(1) = -1. / a * circleCenter(0) + b;
// Radius is distance between circleCenter and first sp, which is at (0, 0) in
// the new frame
// Sign depends on the slope a (positive vs negative)
// Radius is a signed distance between circleCenter and first sp, which is at
// (0, 0) in the new frame. Sign depends on the slope a (positive vs negative)
int sign = a > 0 ? -1 : 1;
ActsScalar rho = sign / circleCenter.norm();

// The projection of the top space point on the transverse plane of the new
// frame
ActsScalar rn = local2.x() * local2.x() + local2.y() * local2.y();
// The (1/tanTheta) of momentum in the new frame,
static constexpr ActsScalar G = static_cast<ActsScalar>(1. / 24.);
const ActsScalar R = circleCenter.norm();
ActsScalar invTanTheta =
local2.z() * std::sqrt(1. / rn) / (1. + G * rho * rho * rn);
local2.z() /
(2.f * R * std::asin(std::hypot(local2.x(), local2.y()) / (2.f * R)));
// The momentum direction in the new frame (the center of the circle has the
// coordinate (-1.*A/(2*B), 1./(2*B)))
ActsScalar A = -circleCenter(0) / circleCenter(1);
Expand Down Expand Up @@ -279,7 +273,7 @@ std::optional<BoundVector> estimateTrackParamsFromSeed(

// The estimated q/pt in [GeV/c]^-1 (note that the pt is the projection of
// momentum on the transverse plane of the new frame)
ActsScalar qOverPt = rho * (UnitConstants::m) / (0.3 * bFieldInTesla);
ActsScalar qOverPt = sign * (UnitConstants::m) / (0.3 * bFieldInTesla * R);
// The estimated q/p in [GeV/c]^-1
params[eBoundQOverP] = qOverPt / std::hypot(1., invTanTheta);

Expand Down
22 changes: 11 additions & 11 deletions Examples/Python/tests/root_file_hashes.txt
Original file line number Diff line number Diff line change
Expand Up @@ -3,15 +3,15 @@ test_fatras__particles_simulation.root: 4ce0feb0ecb234143f418789a7a0d377f4a653d5
test_fatras__hits.root: 2e47d9ba55fa1b377f70c361107fe811e9880d14c42cb3d7a9cd4616a6f33a54
test_geant4__particles_simulation.root: 29fb3ed0c9ea48bc64cb6e4a83f4f6ca535415ab7a71051ca385943ce3dea31f
test_geant4__hits.root: 1ed8ad8d3081980d8eb5b3cdd940f862f03c7683b7dda1cf6fe6ac900ac510be
test_seeding__estimatedparams.root: 7aaf6f92aeced00aba73ffa7b44db76e1f6be9820f864d8a27646feee9e64544
test_seeding__estimatedparams.root: 1fa2e879142059344e32ab62e3763dce14b5138b591c6e919073cb985782075f
test_seeding__performance_seeding.root: 992f9c611d30dde0d3f3ab676bab19ada61ab6a4442828e27b65ec5e5b7a2880
test_seeding__particles.root: 4e70285c8dfbe4b2672fd3474d5a3649c7164181abefe7cba070b9e06792ae96
test_seeding__particles_simulation.root: b306d43dd4949fe9300a3a4ac6212e1d743c8ba0423b50e86b3de19d9b89606c
test_seeding_orthogonal__estimatedparams.root: 19d76dfc901bb96e40631f62f830614fd30005cb4cd42a1e6e60770a2491443f
test_seeding_orthogonal__estimatedparams.root: 77bf34e870bce0e44942525214f1101ace6e423a92be1d270f9991ffaf81450a
test_seeding_orthogonal__performance_seeding.root: 60fbedcf5cb2b37cd8e526251940564432890d3a159d231ed819e915a904682c
test_seeding_orthogonal__particles.root: 4e70285c8dfbe4b2672fd3474d5a3649c7164181abefe7cba070b9e06792ae96
test_seeding_orthogonal__particles_simulation.root: b306d43dd4949fe9300a3a4ac6212e1d743c8ba0423b50e86b3de19d9b89606c
test_itk_seeding__estimatedparams.root: a6759b6039ed6fd957b5550aeac416188a18b1c494d4555835125412ca32ad7a
test_itk_seeding__estimatedparams.root: 7e3acb54fcaabae19fe5b8601bd5bd3e5f65d6a1e6d5a2b59c4e8affd27e526c
test_itk_seeding__performance_seeding.root: 78ebda54cd0f026ba4b7f316724ffd946de56a932735914baf1b7bba9505c29d
test_itk_seeding__particles.root: cf270be1d1e2eb2e847a8206471fc8e90625453d2a3b5ef7e529f3f6012aede6
test_itk_seeding__particles_simulation.root: 6bbbca85d0702e845cfdde71c4625600932c142a8e2442f06cf43d6104260723
Expand Down Expand Up @@ -44,19 +44,19 @@ test_digitization_example_input[smeared]__particles.root: 7eec62018b6944fea565da
test_digitization_example_input[smeared]__measurements.root: 0c168d371d0130c68d1ee44bd77eeeb3cf702a77c2afbf12bed8354b61a29262
test_digitization_example_input[geometric]__particles.root: 7eec62018b6944fea565dad75aa41ef87d1f2737b2a814fbab189817ac8180fe
test_digitization_example_input[geometric]__measurements.root: 0c6d88b4de3ee7365103b8f0d6be6b4db3d7b7f2a59d3db58a1e5f89fa8130b3
test_ckf_tracks_example[generic-full_seeding]__trackstates_ckf.root: 461c3b8a6dce204ef94a19e68da5b2c7d85768924e49c119a3d50d3cd20968bc
test_ckf_tracks_example[generic-full_seeding]__tracksummary_ckf.root: 11cb69794ccd1e99c4cbc1685d1fe824855f6330664ca393c95d5e8d5abe8b5c
test_ckf_tracks_example[generic-full_seeding]__trackstates_ckf.root: 74fec9229975a9e1b56ce880a3dded68646064c1d0354b90310ad9f085a49ed2
test_ckf_tracks_example[generic-full_seeding]__tracksummary_ckf.root: 6e3d7adf72d6885dfa5a47f4284708e0679c5f054b62351400bb382d941f3457
test_ckf_tracks_example[generic-full_seeding]__performance_seeding_trees.root: 0e0676ffafdb27112fbda50d1cf627859fa745760f98073261dcf6db3f2f991e
test_ckf_tracks_example[generic-truth_estimated]__trackstates_ckf.root: bba2de7e517374a6a347892d23c873c139fad9d708b6ca7d28925ce411d6ce9a
test_ckf_tracks_example[generic-truth_estimated]__tracksummary_ckf.root: 9dbd629f6c68cc9af08a5431d20dcf71882c85650523fe1edb5902af96f2d6ed
test_ckf_tracks_example[generic-truth_estimated]__trackstates_ckf.root: b0d1e19005d4f28c653073759d9fb1566ccd52f38285500d6e8e63c0770fe722
test_ckf_tracks_example[generic-truth_estimated]__tracksummary_ckf.root: d1a7e859f5a2ad56a8938de08bcd744613d0a5b5f93dc1edabe1d850e50c8922
test_ckf_tracks_example[generic-truth_estimated]__performance_seeding.root: 1facb05c066221f6361b61f015cdf0918e94d9f3fce2269ec7b6a4dffeb2bc7e
test_ckf_tracks_example[generic-truth_smeared]__trackstates_ckf.root: 36cb2554ab9a54246672e979c9bd81bb59f1861cbb05f8169bea6adc6ece21a0
test_ckf_tracks_example[generic-truth_smeared]__tracksummary_ckf.root: 83189dbf4933eceabebebc888c84125d85e6bb640c6d633db4c27fa47c297a7f
test_ckf_tracks_example[odd-full_seeding]__trackstates_ckf.root: b732cca8d0ea41dc433e2c9fa135dd26d6e2c257d93b98cdc01fc567298055cc
test_ckf_tracks_example[odd-full_seeding]__tracksummary_ckf.root: 43649de8325abf3ab9affb52e281f2e18b5b74d31e5164a68f816c79df1e02b8
test_ckf_tracks_example[odd-full_seeding]__trackstates_ckf.root: c8728e8ab6cacae039f204fdfb4391aa8d4e257f5a1f28dc35b5890f813108b9
test_ckf_tracks_example[odd-full_seeding]__tracksummary_ckf.root: e4d16c179c56844dd9e7fdf3cb5cde7a235cf85a7b6c9ba3024efdd2e27a24e3
test_ckf_tracks_example[odd-full_seeding]__performance_seeding_trees.root: 43c58577aafe07645e5660c4f43904efadf91d8cda45c5c04c248bbe0f59814f
test_ckf_tracks_example[odd-truth_estimated]__trackstates_ckf.root: c64e0c56bf071ad305571422c38b15838e7a4cbd41d0635a7e274ae99fefca82
test_ckf_tracks_example[odd-truth_estimated]__tracksummary_ckf.root: 85b5abe160e2bfc6680e12c204ee9cbe9d781c7274d08a2de8740cedac146dc0
test_ckf_tracks_example[odd-truth_estimated]__trackstates_ckf.root: 33a6034183dbf01442c8b7ba953ec67c881c365cf836f6f49abb9939d204d139
test_ckf_tracks_example[odd-truth_estimated]__tracksummary_ckf.root: d850aa0422d36b4ff5d96160d449a1b2780f24f85f06557c36d87c7b3f78caef
test_ckf_tracks_example[odd-truth_estimated]__performance_seeding.root: 1a36b7017e59f1c08602ef3c2cb0483c51df248f112e3780c66594110719c575
test_ckf_tracks_example[odd-truth_smeared]__trackstates_ckf.root: e59deb01fcd6a8d211a333fc3cba2fb3ba43b434bea681f3f012fa9bf528fc68
test_ckf_tracks_example[odd-truth_smeared]__tracksummary_ckf.root: 95e9653ee14bf2d18c5d5df3afe5dfd9dfccc48ee198586a9000f19abe81e282
Expand Down
Loading