From 23c027925e98edee75fadd2364a34865583fd6cc Mon Sep 17 00:00:00 2001 From: Benjamin Huth Date: Thu, 19 Dec 2024 17:18:40 +0100 Subject: [PATCH] add var inflation in refitting algorithm --- .../ActsExamples/TrackFitting/RefittingAlgorithm.hpp | 2 ++ .../Algorithms/TrackFitting/src/RefittingAlgorithm.cpp | 8 +++++++- Examples/Python/src/TrackFitting.cpp | 2 +- Examples/Scripts/Python/truth_tracking_gsf_refitting.py | 1 + .../Scripts/Python/truth_tracking_kalman_refitting.py | 1 + 5 files changed, 12 insertions(+), 2 deletions(-) diff --git a/Examples/Algorithms/TrackFitting/include/ActsExamples/TrackFitting/RefittingAlgorithm.hpp b/Examples/Algorithms/TrackFitting/include/ActsExamples/TrackFitting/RefittingAlgorithm.hpp index 19e08f7572f..f9b133772c0 100644 --- a/Examples/Algorithms/TrackFitting/include/ActsExamples/TrackFitting/RefittingAlgorithm.hpp +++ b/Examples/Algorithms/TrackFitting/include/ActsExamples/TrackFitting/RefittingAlgorithm.hpp @@ -33,6 +33,8 @@ class RefittingAlgorithm final : public IAlgorithm { std::shared_ptr fit; /// Pick a single track for debugging (-1 process all tracks) int pickTrack = -1; + /// Inflate initial covariance. + std::array initialVarInflation = {1., 1., 1., 1., 1., 1.}; }; /// Constructor of the fitting algorithm diff --git a/Examples/Algorithms/TrackFitting/src/RefittingAlgorithm.cpp b/Examples/Algorithms/TrackFitting/src/RefittingAlgorithm.cpp index 79eb367589b..a0cc4675d7f 100644 --- a/Examples/Algorithms/TrackFitting/src/RefittingAlgorithm.cpp +++ b/Examples/Algorithms/TrackFitting/src/RefittingAlgorithm.cpp @@ -80,10 +80,16 @@ ActsExamples::ProcessCode ActsExamples::RefittingAlgorithm::execute( Acts::PropagatorPlainOptions(ctx.geoContext, ctx.magFieldContext)}; options.doRefit = true; - const Acts::BoundTrackParameters initialParams( + Acts::BoundTrackParameters initialParams( track.referenceSurface().getSharedPtr(), track.parameters(), track.covariance(), track.particleHypothesis()); + if (initialParams.covariance()) { + for (auto i = 0ul; i < m_cfg.initialVarInflation.size(); ++i) { + (*initialParams.covariance())(i, i) *= m_cfg.initialVarInflation.at(i); + } + } + trackSourceLinks.clear(); surfSequence.clear(); diff --git a/Examples/Python/src/TrackFitting.cpp b/Examples/Python/src/TrackFitting.cpp index 4a02c9bb83c..fd7b4c145b1 100644 --- a/Examples/Python/src/TrackFitting.cpp +++ b/Examples/Python/src/TrackFitting.cpp @@ -41,7 +41,7 @@ void addTrackFitting(Context& ctx) { ACTS_PYTHON_DECLARE_ALGORITHM(ActsExamples::RefittingAlgorithm, mex, "RefittingAlgorithm", inputTracks, outputTracks, - fit, pickTrack); + fit, pickTrack, initialVarInflation); { py::class_>( diff --git a/Examples/Scripts/Python/truth_tracking_gsf_refitting.py b/Examples/Scripts/Python/truth_tracking_gsf_refitting.py index 245eec9a2f4..0a419871854 100755 --- a/Examples/Scripts/Python/truth_tracking_gsf_refitting.py +++ b/Examples/Scripts/Python/truth_tracking_gsf_refitting.py @@ -47,6 +47,7 @@ def runRefittingGsf( acts.logging.INFO, inputTracks="kf_tracks", outputTracks="gsf_refit_tracks", + initialVarInflation=6 * [100.0], fit=acts.examples.makeGsfFitterFunction( trackingGeometry, field, **gsfOptions ), diff --git a/Examples/Scripts/Python/truth_tracking_kalman_refitting.py b/Examples/Scripts/Python/truth_tracking_kalman_refitting.py index cbe69aa7e63..a01b1623a44 100755 --- a/Examples/Scripts/Python/truth_tracking_kalman_refitting.py +++ b/Examples/Scripts/Python/truth_tracking_kalman_refitting.py @@ -45,6 +45,7 @@ def runRefittingKf( level=acts.logging.INFO, inputTracks="kf_tracks", outputTracks="kf_refit_tracks", + initialVarInflation=6 * [100.0], fit=acts.examples.makeKalmanFitterFunction( trackingGeometry, field, **kalmanOptions ),