Back to home page

EIC code displayed by LXR

 
 

    


Warning, /acts/docs/core/reconstruction/pattern_recognition/track_finding.md is written in an unsupported language. File is not indexed.

0001 (track_finding)=
0002 # Track Finding
0003 
0004 :::{todo}
0005 Write CKF documentation
0006 :::
0007 
0008 (ckf_core)=
0009 ## Combinatorial Kalman Filter
0010 
0011 ACTS provides a Combinatorial Kalman Filter (CKF) implementation for track finding
0012 ({class}`Acts::CombinatorialKalmanFilter`). Its usage is demonstrated in the
0013 example algorithm `ActsExamples::TrackFindingAlgorithm`.
0014 
0015 The CKF requires as input a track seed i.e. an estimation of the track parameters,
0016 and a list of measurements with an association to the (sensitive) surfaces of the
0017 tracking geometry. The CKF propagates track states initialised by the track
0018 parameter estimates in direction of the momentum (forward propagation). Whenever
0019 a surface is reached, the CKF searches for compatible measurements. In case of multiple
0020 compatible measurements the trajectory is branched. The track states of all
0021 branches are updated and smoothed following the Kalman filter prescription. The
0022 propagation is aborted if either the maximum path length is exceeded or if user
0023 customizable abort conditions are reached.
0024 
0025 The CKF is customizable via template parameters, and options. The template parameters
0026 allow
0027 
0028 1. to steer the propagation of the track states e.g. {class}`Acts::Propagator`, and
0029 2. to define the storage container for the trajectories and its track states
0030    e.g. {class}`Acts::VectorMultiTrajectory`
0031 
0032 The options {struct}`Acts::CombinatorialKalmanFilterOptions` are also customizable via
0033 template parameters:
0034 
0035 1. an iterator to iterate over links to (selected) measurements per tracking
0036    surface and which returns an {class}`Acts::SourceLink` when dereferenced.
0037 
0038 2. the storage container for the trajectories and states which must be the same as
0039    for the CKF.
0040 
0041 and provide:
0042 
0043 1. user defined geometry (e.g. alignment), magnetic field and measurement
0044    calibration context which are unused by ACTS but passed to the possibly
0045    user defined delegates.
0046 
0047 2. the reference surface with respect to which the track defining parameters are
0048    expressed (perigee)
0049 
0050 3. delegates {class}`Acts::Delegate` mostly via the
0051    {struct}`Acts::CombinatorialKalmanFilterExtensions` to define
0052    - updater e.g. {class}`Acts::GainMatrixUpdater`
0053    - smoother e.g. {class}`Acts::GainMatrixSmoother`
0054    - measurement selector e.g. {class}`Acts::MeasurementSelector`
0055    - SourceLinkAccessor
0056    - measurement calibrator
0057    - branch stopper (optional)
0058 
0059 Typically, users have to provide the tracking geometry, an implementation of a
0060 {class}`Acts::MagneticFieldProvider`, which is needed by the stepper
0061 e.g. {class}`Acts::EigenStepper` which is needed by the propagator, a
0062 source link accessor and a measurement calibrator. An implementation of a source link
0063 accessor and the measurement calibrator can be found among the examples
0064 `ActsExamples::IndexSourceLinkAccessor`, and `ActsExamples::MeasurementCalibratorAdapter`
0065 
0066 
0067 % Functional approach
0068 % Implementation as an actor
0069 % Limitations (no inward filtering)
0070 % Requirement to copy out after smoothing if smoothed track states are desired
0071 
0072 ## Machine-Learning based Track Finding
0073 
0074 There is a lot of research ongoing about machine-learning based approaches to Track Finding. Because these are not yet stable and bullet-prove, there are no such algorithms distributed with the core library. However, there exists a [plugin](exatrkxplugin), that implements the *Exa.TrkX* algorithm in ACTS.