From 394192ac8ae8ed1fbe341eb51afabd5b68fb871a Mon Sep 17 00:00:00 2001 From: Carlo Varni <75478407+CarloVarni@users.noreply.github.com> Date: Fri, 17 Nov 2023 11:08:28 +0100 Subject: [PATCH] fix: Fitters: connect void default accessors (#2688) Default void accessors that throws an error if the user forgets to set them. Right now this may cause crashes if the user forgets as @toyamaza has noticed in Athena --- Core/include/Acts/TrackFitting/GlobalChiSquareFitter.hpp | 1 + Core/include/Acts/TrackFitting/GsfOptions.hpp | 3 +++ Core/include/Acts/TrackFitting/KalmanFitter.hpp | 1 + .../Acts/TrackFitting/detail/VoidFitterComponents.hpp | 7 +++++++ 4 files changed, 12 insertions(+) diff --git a/Core/include/Acts/TrackFitting/GlobalChiSquareFitter.hpp b/Core/include/Acts/TrackFitting/GlobalChiSquareFitter.hpp index d477e12f1fe..59b12e53f87 100644 --- a/Core/include/Acts/TrackFitting/GlobalChiSquareFitter.hpp +++ b/Core/include/Acts/TrackFitting/GlobalChiSquareFitter.hpp @@ -83,6 +83,7 @@ struct Gx2FitterExtensions { calibrator.template connect<&detail::voidFitterCalibrator>(); updater.template connect<&detail::voidFitterUpdater>(); outlierFinder.template connect<&detail::voidOutlierFinder>(); + surfaceAccessor.connect<&detail::voidSurfaceAccessor>(); } }; diff --git a/Core/include/Acts/TrackFitting/GsfOptions.hpp b/Core/include/Acts/TrackFitting/GsfOptions.hpp index 0cf35fb11e6..488d07db12f 100644 --- a/Core/include/Acts/TrackFitting/GsfOptions.hpp +++ b/Core/include/Acts/TrackFitting/GsfOptions.hpp @@ -82,6 +82,9 @@ struct GsfExtensions { calibrator.template connect<&detail::voidFitterCalibrator>(); updater.template connect<&detail::voidFitterUpdater>(); outlierFinder.template connect<&detail::voidOutlierFinder>(); + surfaceAccessor.connect<&detail::voidSurfaceAccessor>(); + mixtureReducer + .template connect<&detail::voidComponentReducer>(); } }; diff --git a/Core/include/Acts/TrackFitting/KalmanFitter.hpp b/Core/include/Acts/TrackFitting/KalmanFitter.hpp index 377e290e951..014fd75e9bd 100644 --- a/Core/include/Acts/TrackFitting/KalmanFitter.hpp +++ b/Core/include/Acts/TrackFitting/KalmanFitter.hpp @@ -107,6 +107,7 @@ struct KalmanFitterExtensions { outlierFinder.template connect<&detail::voidOutlierFinder>(); reverseFilteringLogic .template connect<&detail::voidReverseFilteringLogic>(); + surfaceAccessor.connect<&detail::voidSurfaceAccessor>(); } }; diff --git a/Core/include/Acts/TrackFitting/detail/VoidFitterComponents.hpp b/Core/include/Acts/TrackFitting/detail/VoidFitterComponents.hpp index 7987f60eacd..ebc4ffabcef 100644 --- a/Core/include/Acts/TrackFitting/detail/VoidFitterComponents.hpp +++ b/Core/include/Acts/TrackFitting/detail/VoidFitterComponents.hpp @@ -63,4 +63,11 @@ bool voidReverseFilteringLogic( inline const Surface* voidSurfaceAccessor(const SourceLink& /*sourceLink*/) { throw std::runtime_error{"voidSurfaceAccessor should not ever execute"}; } + +template +void voidComponentReducer(std::vector& /*components*/, + std::size_t /*n*/, const Surface& /*surface*/) { + throw std::runtime_error{"voidComponentReducer should not ever execute"}; +} + } // namespace Acts::detail