ECCE @ EIC Software
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
Acts::KalmanFitter< propagator_t, updater_t, smoother_t, outlier_finder_t, calibrator_t, input_converter_t, output_converter_t > Class Template Reference

Kalman fitter implementation of Acts as a plugin. More...

#include <acts/blob/master/Core/include/Acts/Fitter/KalmanFitter.hpp>

Classes

class  Aborter
 
class  Actor
 Propagator Actor plugin for the KalmanFilter. More...
 

Public Types

using MeasurementSurfaces = std::multimap< const Layer *, const Surface * >
 Shorthand definition.
 
using KalmanNavigator = typename propagator_t::Navigator
 The navigator type.
 

Public Member Functions

 KalmanFitter ()=delete
 Default constructor is deleted.
 
 KalmanFitter (propagator_t pPropagator, std::unique_ptr< const Logger > logger=getDefaultLogger("KalmanFilter", Logging::INFO), input_converter_t pInputCnv=input_converter_t(), output_converter_t pOutputCnv=output_converter_t())
 Constructor from arguments.
 
template<typename source_link_t , typename start_parameters_t , typename kalman_fitter_options_t , typename parameters_t = BoundParameters, typename result_t = Result<KalmanFitterResult<source_link_t>>>
auto fit (const std::vector< source_link_t > &sourcelinks, const start_parameters_t &sParameters, const kalman_fitter_options_t &kfOptions) const -> std::enable_if_t<!isDirectNavigator, result_t >
 
template<typename source_link_t , typename start_parameters_t , typename kalman_fitter_options_t , typename parameters_t = BoundParameters, typename result_t = Result<KalmanFitterResult<source_link_t>>>
auto fit (const std::vector< source_link_t > &sourcelinks, const start_parameters_t &sParameters, const kalman_fitter_options_t &kfOptions, const std::vector< const Surface * > &sSequence) const -> std::enable_if_t< isDirectNavigator, result_t >
 

Static Public Attributes

static constexpr bool isDirectNavigator
 The navigator has DirectNavigator type or not.
 

Private Member Functions

const Loggerlogger () const
 Logger getter to support macros.
 

Private Attributes

propagator_t m_propagator
 The propgator for the transport and material update.
 
input_converter_t m_inputConverter
 The input converter to Fittable measurements.
 
output_converter_t m_outputConverter
 The output converter into a given format.
 
std::shared_ptr< const Loggerm_logger
 Owned logging instance.
 

Detailed Description

template<typename propagator_t, typename updater_t = VoidKalmanUpdater, typename smoother_t = VoidKalmanSmoother, typename outlier_finder_t = VoidOutlierFinder, typename calibrator_t = VoidMeasurementCalibrator, typename input_converter_t = VoidKalmanComponents, typename output_converter_t = VoidKalmanComponents>
class Acts::KalmanFitter< propagator_t, updater_t, smoother_t, outlier_finder_t, calibrator_t, input_converter_t, output_converter_t >

Kalman fitter implementation of Acts as a plugin.

to the Propgator

Template Parameters
propagator_tType of the propagation class
updater_tType of the kalman updater class
smoother_tType of the kalman smoother class
outlier_finder_tType of the outlier finder class
calibrator_tType of the calibrator class
input_converter_tType of the input converter class
output_converter_tType of the output converter class

The Kalman filter contains an Actor and a Sequencer sub-class. The Sequencer has to be part of the Navigator of the Propagator in order to initialize and provide the measurement surfaces.

The Actor is part of the Propagation call and does the Kalman update and eventually the smoothing. Updater, Smoother and Calibrator are given to the Actor for further use:

  • The Updater is the implemented kalman updater formalism, it runs via a visitor pattern through the measurements.
  • The Smoother is called at the end of the forward fit by the Actor.
  • The outlier finder is called during the filtering by the Actor. It determines if the measurement is an outlier
  • The Calibrator is a dedicated calibration algorithm that allows to calibrate measurements using track information, this could be e.g. sagging for wires, module deformations, etc.

Measurements are not required to be ordered for the KalmanFilter, measurement ordering needs to be figured out by the navigation of the propagator.

The Input converter is a converter that transforms the input measurement/track/segments into a set of FittableMeasurements

The Output converter is a converter that transforms the set of track states into a given track/track particle class

The void components are provided mainly for unit testing.

Definition at line 188 of file KalmanFitter.hpp.

View newest version in sPHENIX GitHub at line 188 of file KalmanFitter.hpp

Member Typedef Documentation

template<typename propagator_t , typename updater_t = VoidKalmanUpdater, typename smoother_t = VoidKalmanSmoother, typename outlier_finder_t = VoidOutlierFinder, typename calibrator_t = VoidMeasurementCalibrator, typename input_converter_t = VoidKalmanComponents, typename output_converter_t = VoidKalmanComponents>
using Acts::KalmanFitter< propagator_t, updater_t, smoother_t, outlier_finder_t, calibrator_t, input_converter_t, output_converter_t >::KalmanNavigator = typename propagator_t::Navigator

The navigator type.

Definition at line 193 of file KalmanFitter.hpp.

View newest version in sPHENIX GitHub at line 193 of file KalmanFitter.hpp

template<typename propagator_t , typename updater_t = VoidKalmanUpdater, typename smoother_t = VoidKalmanSmoother, typename outlier_finder_t = VoidOutlierFinder, typename calibrator_t = VoidMeasurementCalibrator, typename input_converter_t = VoidKalmanComponents, typename output_converter_t = VoidKalmanComponents>
using Acts::KalmanFitter< propagator_t, updater_t, smoother_t, outlier_finder_t, calibrator_t, input_converter_t, output_converter_t >::MeasurementSurfaces = std::multimap<const Layer*, const Surface*>

Shorthand definition.

Definition at line 191 of file KalmanFitter.hpp.

View newest version in sPHENIX GitHub at line 191 of file KalmanFitter.hpp

Constructor & Destructor Documentation

template<typename propagator_t , typename updater_t = VoidKalmanUpdater, typename smoother_t = VoidKalmanSmoother, typename outlier_finder_t = VoidOutlierFinder, typename calibrator_t = VoidMeasurementCalibrator, typename input_converter_t = VoidKalmanComponents, typename output_converter_t = VoidKalmanComponents>
Acts::KalmanFitter< propagator_t, updater_t, smoother_t, outlier_finder_t, calibrator_t, input_converter_t, output_converter_t >::KalmanFitter ( )
delete

Default constructor is deleted.

template<typename propagator_t , typename updater_t = VoidKalmanUpdater, typename smoother_t = VoidKalmanSmoother, typename outlier_finder_t = VoidOutlierFinder, typename calibrator_t = VoidMeasurementCalibrator, typename input_converter_t = VoidKalmanComponents, typename output_converter_t = VoidKalmanComponents>
Acts::KalmanFitter< propagator_t, updater_t, smoother_t, outlier_finder_t, calibrator_t, input_converter_t, output_converter_t >::KalmanFitter ( propagator_t  pPropagator,
std::unique_ptr< const Logger logger = getDefaultLogger("KalmanFilter", Logging::INFO),
input_converter_t  pInputCnv = input_converter_t(),
output_converter_t  pOutputCnv = output_converter_t() 
)
inline

Constructor from arguments.

Definition at line 203 of file KalmanFitter.hpp.

View newest version in sPHENIX GitHub at line 203 of file KalmanFitter.hpp

Member Function Documentation

template<typename propagator_t , typename updater_t = VoidKalmanUpdater, typename smoother_t = VoidKalmanSmoother, typename outlier_finder_t = VoidOutlierFinder, typename calibrator_t = VoidMeasurementCalibrator, typename input_converter_t = VoidKalmanComponents, typename output_converter_t = VoidKalmanComponents>
template<typename source_link_t , typename start_parameters_t , typename kalman_fitter_options_t , typename parameters_t = BoundParameters, typename result_t = Result<KalmanFitterResult<source_link_t>>>
auto Acts::KalmanFitter< propagator_t, updater_t, smoother_t, outlier_finder_t, calibrator_t, input_converter_t, output_converter_t >::fit ( const std::vector< source_link_t > &  sourcelinks,
const start_parameters_t &  sParameters,
const kalman_fitter_options_t &  kfOptions 
) const -> std::enable_if_t<!isDirectNavigator, result_t>
inline

Fit implementation of the foward filter, calls the the forward filter and backward smoother

Template Parameters
source_link_tSource link type identifying uncalibrated input measurements.
start_parameters_tType of the initial parameters
kalman_fitter_options_tType of the kalman fitter options
parameters_tType of parameters used for local parameters
Parameters
sourcelinksThe fittable uncalibrated measurements
sParametersThe initial track parameters
kfOptionsKalmanOptions steering the fit
Note
The input measurements are given in the form of SourceLinks. It's calibrator_t's job to turn them into calibrated measurements used in the fit.
Returns
the output as an output track

Get the result of the fit

It could happen that the fit ends in zero processed states. The result gets meaningless so such case is regarded as fit failure.

Definition at line 928 of file KalmanFitter.hpp.

View newest version in sPHENIX GitHub at line 928 of file KalmanFitter.hpp

References Acts::PropagatorOptions< action_list_t, aborter_list_t >::actionList, ACTS_ERROR, and ACTS_VERBOSE.

Referenced by Acts::Test::BOOST_AUTO_TEST_CASE().

+ Here is the caller graph for this function:

template<typename propagator_t , typename updater_t = VoidKalmanUpdater, typename smoother_t = VoidKalmanSmoother, typename outlier_finder_t = VoidOutlierFinder, typename calibrator_t = VoidMeasurementCalibrator, typename input_converter_t = VoidKalmanComponents, typename output_converter_t = VoidKalmanComponents>
template<typename source_link_t , typename start_parameters_t , typename kalman_fitter_options_t , typename parameters_t = BoundParameters, typename result_t = Result<KalmanFitterResult<source_link_t>>>
auto Acts::KalmanFitter< propagator_t, updater_t, smoother_t, outlier_finder_t, calibrator_t, input_converter_t, output_converter_t >::fit ( const std::vector< source_link_t > &  sourcelinks,
const start_parameters_t &  sParameters,
const kalman_fitter_options_t &  kfOptions,
const std::vector< const Surface * > &  sSequence 
) const -> std::enable_if_t<isDirectNavigator, result_t>
inline

Fit implementation of the foward filter, calls the the forward filter and backward smoother

Template Parameters
source_link_tSource link type identifying uncalibrated input measurements.
start_parameters_tType of the initial parameters
kalman_fitter_options_tType of the kalman fitter options
parameters_tType of parameters used for local parameters
Parameters
sourcelinksThe fittable uncalibrated measurements
sParametersThe initial track parameters
kfOptionsKalmanOptions steering the fit
sSequencesurface sequence used to initialize a DirectNavigator
Note
The input measurements are given in the form of SourceLinks. It's calibrator_t's job to turn them into calibrated measurements used in the fit.
Returns
the output as an output track

Get the result of the fit

It could happen that the fit ends in zero processed states. The result gets meaningless so such case is regarded as fit failure.

Definition at line 1027 of file KalmanFitter.hpp.

View newest version in sPHENIX GitHub at line 1027 of file KalmanFitter.hpp

References Acts::PropagatorOptions< action_list_t, aborter_list_t >::actionList, ACTS_ERROR, and ACTS_VERBOSE.

template<typename propagator_t , typename updater_t = VoidKalmanUpdater, typename smoother_t = VoidKalmanSmoother, typename outlier_finder_t = VoidOutlierFinder, typename calibrator_t = VoidMeasurementCalibrator, typename input_converter_t = VoidKalmanComponents, typename output_converter_t = VoidKalmanComponents>
const Logger& Acts::KalmanFitter< propagator_t, updater_t, smoother_t, outlier_finder_t, calibrator_t, input_converter_t, output_converter_t >::logger ( ) const
inlineprivate

Logger getter to support macros.

Definition at line 224 of file KalmanFitter.hpp.

View newest version in sPHENIX GitHub at line 224 of file KalmanFitter.hpp

References Acts::KalmanFitter< propagator_t, updater_t, smoother_t, outlier_finder_t, calibrator_t, input_converter_t, output_converter_t >::m_logger.

Member Data Documentation

template<typename propagator_t , typename updater_t = VoidKalmanUpdater, typename smoother_t = VoidKalmanSmoother, typename outlier_finder_t = VoidOutlierFinder, typename calibrator_t = VoidMeasurementCalibrator, typename input_converter_t = VoidKalmanComponents, typename output_converter_t = VoidKalmanComponents>
constexpr bool Acts::KalmanFitter< propagator_t, updater_t, smoother_t, outlier_finder_t, calibrator_t, input_converter_t, output_converter_t >::isDirectNavigator
static
Initial value:

The navigator has DirectNavigator type or not.

Definition at line 196 of file KalmanFitter.hpp.

View newest version in sPHENIX GitHub at line 196 of file KalmanFitter.hpp

template<typename propagator_t , typename updater_t = VoidKalmanUpdater, typename smoother_t = VoidKalmanSmoother, typename outlier_finder_t = VoidOutlierFinder, typename calibrator_t = VoidMeasurementCalibrator, typename input_converter_t = VoidKalmanComponents, typename output_converter_t = VoidKalmanComponents>
input_converter_t Acts::KalmanFitter< propagator_t, updater_t, smoother_t, outlier_finder_t, calibrator_t, input_converter_t, output_converter_t >::m_inputConverter
private

The input converter to Fittable measurements.

Definition at line 218 of file KalmanFitter.hpp.

View newest version in sPHENIX GitHub at line 218 of file KalmanFitter.hpp

template<typename propagator_t , typename updater_t = VoidKalmanUpdater, typename smoother_t = VoidKalmanSmoother, typename outlier_finder_t = VoidOutlierFinder, typename calibrator_t = VoidMeasurementCalibrator, typename input_converter_t = VoidKalmanComponents, typename output_converter_t = VoidKalmanComponents>
std::shared_ptr<const Logger> Acts::KalmanFitter< propagator_t, updater_t, smoother_t, outlier_finder_t, calibrator_t, input_converter_t, output_converter_t >::m_logger
private

Owned logging instance.

Definition at line 227 of file KalmanFitter.hpp.

View newest version in sPHENIX GitHub at line 227 of file KalmanFitter.hpp

Referenced by Acts::KalmanFitter< propagator_t, updater_t, smoother_t, outlier_finder_t, calibrator_t, input_converter_t, output_converter_t >::logger().

template<typename propagator_t , typename updater_t = VoidKalmanUpdater, typename smoother_t = VoidKalmanSmoother, typename outlier_finder_t = VoidOutlierFinder, typename calibrator_t = VoidMeasurementCalibrator, typename input_converter_t = VoidKalmanComponents, typename output_converter_t = VoidKalmanComponents>
output_converter_t Acts::KalmanFitter< propagator_t, updater_t, smoother_t, outlier_finder_t, calibrator_t, input_converter_t, output_converter_t >::m_outputConverter
private

The output converter into a given format.

Definition at line 221 of file KalmanFitter.hpp.

View newest version in sPHENIX GitHub at line 221 of file KalmanFitter.hpp

template<typename propagator_t , typename updater_t = VoidKalmanUpdater, typename smoother_t = VoidKalmanSmoother, typename outlier_finder_t = VoidOutlierFinder, typename calibrator_t = VoidMeasurementCalibrator, typename input_converter_t = VoidKalmanComponents, typename output_converter_t = VoidKalmanComponents>
propagator_t Acts::KalmanFitter< propagator_t, updater_t, smoother_t, outlier_finder_t, calibrator_t, input_converter_t, output_converter_t >::m_propagator
private

The propgator for the transport and material update.

Definition at line 215 of file KalmanFitter.hpp.

View newest version in sPHENIX GitHub at line 215 of file KalmanFitter.hpp


The documentation for this class was generated from the following file: