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

refactor!: Decouple navigation and stepping #3449

Merged
merged 78 commits into from
Jan 15, 2025
Merged
Show file tree
Hide file tree
Changes from 72 commits
Commits
Show all changes
78 commits
Select commit Hold shift + click to select a range
8a66c9f
refactor!: Decouple navigation and stepping
andiwand Aug 19, 2024
9b02bf9
fix try all
andiwand Aug 20, 2024
2a39cbe
reduce changes
andiwand Aug 20, 2024
5c43d94
refactor and fix
andiwand Aug 20, 2024
8d02fc8
fix
andiwand Aug 20, 2024
3c2406b
fix extrapolator tests
andiwand Aug 21, 2024
7d571e1
fix
andiwand Aug 21, 2024
bac5c03
fix direction bug
andiwand Aug 21, 2024
83ecbb9
quick ignore unit test failure
andiwand Aug 21, 2024
e5fc792
hack test again
andiwand Aug 21, 2024
63a1960
disable tests for ubuntu
andiwand Aug 21, 2024
c92beea
Merge branch 'main' of github.com:acts-project/acts into decouple-nav…
andiwand Nov 16, 2024
7013105
Merge branch 'main' of github.com:acts-project/acts into decouple-nav…
andiwand Nov 23, 2024
3f6ee96
port void navigator; clean navigator interface
andiwand Nov 23, 2024
8108cd2
clean includes
andiwand Nov 23, 2024
7308c8f
port direct navigator
andiwand Nov 23, 2024
0b85ef8
implement direct navigator
andiwand Nov 23, 2024
639bb67
port try all navigators
andiwand Nov 23, 2024
587d600
remove dead code
andiwand Nov 23, 2024
c7e3e86
refine interface
andiwand Nov 23, 2024
27c5a0e
navigation target
andiwand Nov 23, 2024
b333f1c
fix
andiwand Nov 23, 2024
d295f1f
Merge branch 'main' of github.com:acts-project/acts into decouple-nav…
andiwand Nov 23, 2024
a7c705a
fix try all navigators
andiwand Nov 24, 2024
6230cad
port detector navigator
andiwand Nov 24, 2024
a324b88
fix unused variable
andiwand Nov 24, 2024
4419bfd
fix gsf
andiwand Nov 24, 2024
8325a18
simplify propagation code
andiwand Nov 24, 2024
981b6ee
clean
andiwand Nov 24, 2024
9ce8e1e
simplify interface; major navigator refactor
andiwand Nov 24, 2024
35bb79d
renavigation for navigator; cleanup; fix direct navigator
andiwand Nov 24, 2024
41ed6d4
doc
andiwand Nov 25, 2024
2468cf5
fix doc
andiwand Nov 25, 2024
99bf37b
fix docs
andiwand Nov 25, 2024
37ef3d9
revert tests; update navigator unit test
andiwand Nov 25, 2024
b60681f
update detector navigator unit test
andiwand Nov 25, 2024
1896876
re-enable tests
andiwand Nov 25, 2024
004ed2c
Merge branch 'main' of github.com:acts-project/acts into decouple-nav…
andiwand Nov 27, 2024
9465c39
Merge branch 'main' into decouple-navigation-stepping
andiwand Dec 9, 2024
f0e2b25
pr feedback
andiwand Dec 9, 2024
059d4a9
fix candidate iteration for `TryAllOverstepNavigator`
andiwand Dec 9, 2024
eefbe50
fix test after propagator change; rename constrained step slots
andiwand Dec 9, 2024
4b44b5c
handle navigation reset gracefully
andiwand Dec 9, 2024
8e4ee9b
fix sonar cloud issue
andiwand Dec 9, 2024
21cd2d0
Merge branch 'main' of github.com:acts-project/acts into decouple-nav…
andiwand Dec 9, 2024
00ffc14
Merge branch 'main' of github.com:acts-project/acts into decouple-nav…
andiwand Dec 13, 2024
48d5905
pr feedback
andiwand Dec 13, 2024
448ccca
ci and ai feedback
andiwand Dec 13, 2024
5ab184d
fix some unit tests
andiwand Dec 13, 2024
1adb9be
fix navigator
andiwand Dec 13, 2024
f621b53
minor
andiwand Dec 13, 2024
e919b19
clean stepper state creation further
andiwand Dec 13, 2024
0e7747a
fix doc
andiwand Dec 13, 2024
8a4efd8
fix more doc
andiwand Dec 13, 2024
56d3f93
fix tests
andiwand Dec 13, 2024
2f506b2
fix tracking volume resolution
andiwand Dec 13, 2024
005eba6
Merge branch 'main' of github.com:acts-project/acts into decouple-nav…
andiwand Dec 16, 2024
833f510
avoid some gsf diff
andiwand Dec 16, 2024
d789c17
Merge branch 'main' of github.com:acts-project/acts into decouple-nav…
andiwand Jan 9, 2025
1168209
fix propagator test
andiwand Jan 9, 2025
6e6dec6
Merge branch 'main' into decouple-navigation-stepping
andiwand Jan 10, 2025
d01f1d6
update hashes
andiwand Jan 10, 2025
d758a82
update root refs
andiwand Jan 10, 2025
88cc416
use forced surface reached for multi stepper
andiwand Jan 13, 2025
689ff9e
another attempt to fix the GSF
andiwand Jan 13, 2025
236c22f
fix: Don't reset component state in `MultiStepperSurfaceReached`
andiwand Jan 13, 2025
c171040
use forced surface reached for multi stepper
andiwand Jan 13, 2025
60addcf
Revert "another attempt to fix the GSF"
andiwand Jan 13, 2025
8f4c436
Merge branch 'main' of github.com:acts-project/acts into decouple-nav…
andiwand Jan 13, 2025
813e103
reset component status after each step
andiwand Jan 13, 2025
dab01f9
Merge branch 'multi-surface-reached-dont-reset-status' of github.com:…
andiwand Jan 13, 2025
1ce7bce
hash seeding test: filter for input particles in beam pipe
andiwand Jan 14, 2025
31495cf
Merge branch 'main' of github.com:acts-project/acts into decouple-nav…
andiwand Jan 15, 2025
82360f4
update hashes
andiwand Jan 15, 2025
5fa08bd
revert cmake
andiwand Jan 15, 2025
fa21ba7
update ref
andiwand Jan 15, 2025
cf2b28a
work around gsf fpe
andiwand Jan 15, 2025
1288d9f
Merge branch 'main' into decouple-navigation-stepping
andiwand Jan 15, 2025
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
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file modified CI/physmon/reference/trackfitting_gsf/performance_trackfitting.root
Binary file not shown.
338 changes: 132 additions & 206 deletions Core/include/Acts/Navigation/DetectorNavigator.hpp

Large diffs are not rendered by default.

11 changes: 0 additions & 11 deletions Core/include/Acts/Navigation/NavigationState.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -10,9 +10,7 @@

#include "Acts/Definitions/Algebra.hpp"
#include "Acts/Definitions/Units.hpp"
#include "Acts/Geometry/GeometryContext.hpp"
#include "Acts/Surfaces/BoundaryTolerance.hpp"
#include "Acts/Utilities/Delegate.hpp"
#include "Acts/Utilities/Intersection.hpp"

#include <any>
Expand Down Expand Up @@ -59,15 +57,6 @@ struct NavigationState {
/// The current direction
Vector3 direction = Vector3(0., 0., 0.);

/// The current absolute momentum
double absMomentum = 0.;

/// The current absolute charge
double absCharge = 0.;

/// The current magnetic field
Vector3 magneticField = Vector3(0., 0., 0.);

/// The current detector in processing
const Detector* currentDetector = nullptr;

Expand Down
14 changes: 7 additions & 7 deletions Core/include/Acts/Propagator/AtlasStepper.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -28,10 +28,11 @@

#include <cmath>

// This is based original stepper code from the ATLAS RungeKuttaPropagator
namespace Acts {

/// @brief the AtlasStepper implementation for the
///
/// This is based original stepper code from the ATLAS RungeKuttaPropagator
class AtlasStepper {
public:
using Jacobian = BoundMatrix;
Expand Down Expand Up @@ -78,7 +79,7 @@ class AtlasStepper {
bool needgradient = false;
bool newfield = true;
// internal parameters to be used
Vector3 field;
Vector3 field = Vector3::Zero();
std::array<double, 60> pVector{};

/// Storage pattern of pVector
Expand Down Expand Up @@ -115,9 +116,6 @@ class AtlasStepper {
// Previous step size for overstep estimation
double previousStepSize = 0.;

/// The tolerance for the stepping
double tolerance = s_onSurfaceTolerance;

/// It caches the current magnetic field cell and stays (and interpolates)
/// within as long as this is valid. See step() code for details.
MagneticFieldProvider::Cache fieldCache;
Expand All @@ -143,11 +141,13 @@ class AtlasStepper {
const BoundTrackParameters& par) const {
State state{options, m_bField->makeCache(options.magFieldContext)};

state.particleHypothesis = par.particleHypothesis();

// The rest of this constructor is copy&paste of AtlasStepper::update() -
// this is a nasty but working solution for the stepper state without
// functions

const auto pos = par.position(state.options.geoContext);
const auto pos = par.position(options.geoContext);
const auto Vp = par.parameters();

double Sf = std::sin(Vp[eBoundPhi]);
Expand Down Expand Up @@ -179,7 +179,7 @@ class AtlasStepper {
state.covTransport = true;
state.useJacobian = true;
const auto transform = par.referenceSurface().referenceFrame(
state.options.geoContext, pos, par.direction());
options.geoContext, pos, par.direction());

pVector[8] = transform(0, eBoundLoc0);
pVector[16] = transform(0, eBoundLoc1);
Expand Down
Loading
Loading