36 template <
typename propagator_state_t,
typename stepper_t,
37 typename extensions_t,
typename traj_t>
42 const size_t lastTrackIndex,
bool doCovTransport,
const Logger &
logger,
48 const size_t currentTrackIndex =
49 fittedStates.addTrackState(mask, lastTrackIndex);
52 typename traj_t::TrackStateProxy trackStateProxy =
53 fittedStates.getTrackState(currentTrackIndex);
58 trackStateProxy.setReferenceSurface(surface.
getSharedPtr());
60 auto res = stepper.boundState(state.stepping, surface, doCovTransport,
61 freeToBoundCorrection);
64 <<
" failed: " << res.error());
67 auto &[boundParams, jacobian,
pathLength] = *res;
70 trackStateProxy.predicted() =
std::move(boundParams.parameters());
71 if (boundParams.covariance().has_value()) {
72 trackStateProxy.predictedCovariance() =
76 trackStateProxy.jacobian() =
std::move(jacobian);
82 extensions.calibrator(state.geoContext, calibrationContext, source_link,
87 auto typeFlags = trackStateProxy.typeFlags();
99 if (not extensions.outlierFinder(trackStateProxy)) {
101 auto updateRes = extensions.updater(state.geoContext, trackStateProxy,
102 state.options.direction, logger);
103 if (!updateRes.ok()) {
104 ACTS_ERROR(
"Update step failed: " << updateRes.error());
105 return updateRes.error();
111 "Filtering step successful. But measurement is determined "
112 "to be an outlier. Stepping state is not updated.")
115 trackStateProxy.shareFrom(trackStateProxy, TrackStatePropMask::Predicted,
116 TrackStatePropMask::Filtered);
120 return trackStateProxy;
138 template <
typename propagator_state_t,
typename stepper_t,
typename traj_t>
140 propagator_state_t &state,
const stepper_t &stepper,
const Surface &surface,
141 traj_t &fittedStates,
const size_t lastTrackIndex,
bool doCovTransport,
148 ~(TrackStatePropMask::Calibrated | TrackStatePropMask::Filtered);
149 const size_t currentTrackIndex =
150 fittedStates.addTrackState(mask, lastTrackIndex);
153 typename traj_t::TrackStateProxy trackStateProxy =
154 fittedStates.getTrackState(currentTrackIndex);
159 trackStateProxy.setReferenceSurface(surface.
getSharedPtr());
161 auto res = stepper.boundState(state.stepping, surface, doCovTransport,
162 freeToBoundCorrection);
166 auto &[boundParams, jacobian,
pathLength] = *res;
169 trackStateProxy.predicted() =
std::move(boundParams.parameters());
170 if (boundParams.covariance().has_value()) {
171 trackStateProxy.predictedCovariance() =
175 trackStateProxy.jacobian() =
std::move(jacobian);
180 trackStateProxy.shareFrom(trackStateProxy, TrackStatePropMask::Predicted,
181 TrackStatePropMask::Filtered);
185 auto typeFlags = trackStateProxy.typeFlags();
198 return trackStateProxy;