The track fitting algorithms estimate the track parameters. It is part of the pattern recognition/track reconstruction/tracking. We can run the track fitting algorithms, after we allocated all hits to single tracks with the help of a track finding algorithm. It is not necessary, that all points of a track are present.
Currently we have implementations for three different fitters:
Global Chi-Square Fitter (GX2F) [wip] Even though all of them are least-squares fits, the concepts are quite different. Therefore, we should not expect identical results from all of them.
Kalman Filter (KF) [wip]¶
The Kalman Filter is an iterative fitter. It successively combines measurements to obtain an estimate of the track parameters. The KF needs an estimate as a starting point. The procedure alternates between two methods:
Extrapolate the current state to the next surface.
Update the extrapolation using the measurement of the new surface.1 The meaning of “this surface” and “the next surface” changes with the context. There are three different interpretations for this. The KF can give us those three interpretations as sets of track parameters:
predicted: Uses “older” data (i.e. from the last surfaces) to make the prediction. This prediction is an extrapolation from the old data onto the current surface.
filtered: Uses the “current” data (i.e. the predicted data updated with the measurement on the current surface). It is some kind of weighted mean.
smoothed: Uses the “future” data to predict the current parameters. This can only be evaluated if the whole propagation is finished once. This can be done in to ways: one uses backwards-propagation and one does not.
This chapter will be extended in the future.
Gaussian Sum Filter¶
The GSF is not considered as production ready yet, therefore it is located in the namespace
The GSF is an extension of the Kalman-Filter that allows to handle non-gaussian errors by modelling the track state as a gaussian mixture:
A common use case of this is electron fitting. The energy-loss of Bremsstrahlung for electrons in matter are highly non-gaussian, and thus are not modeled accurately by the default material interactions in the Kalman Filter. Instead, the Bremsstrahlung is modeled as a Bethe-Heitler distribution, which is approximated as a gaussian mixture.
To implement the GSF, a special stepper is needed, that can handle a multi-component state internally: The
Acts::MultiEigenStepperLoop. On a surface with material, the Bethe-Heitler energy-loss distribution is approximated with a fixed number of gaussian distributions for each component. Since the number of components would grow exponentially with each material interaction, components that are close in terms of their Kullback–Leibler divergence are merged to limit the computational cost. The Kalman update mechanism is based on the code for the
At the end of the fit the multi-component state must be reduced to a single set of parameters with a corresponding covariance matrix. This is supported by the
Acts::MultiEigenStepperLoop in two different ways currently: The mean method computes the mean of the state and the covariance matrix of the multi-component state, whereas the maximum weight method just returns the component with the maximum weight. This can be configured in the constructor of the
Acts::MultiEigenStepperLoop with the
Acts::FinalReductionMethod. In the future there is planned to add a mode finding method as well.
In practice it turned out that the maximum weight method leads to better results so far.
Using the GSF¶
The GSF is implemented in the class
Acts::Experimental::GaussianSumFitter. The interface of its
fit(...)-functions is very similar to the one of the
Acts::KalmanFitter (one for the standard
Acts::Navigator and one for the
Acts::DirectNavigator that takes an additional
std::vector<const Acts::Surface *> as an argument):
template<typename propagator_t, typename bethe_heitler_approx_t, typename traj_t>
The fit can be customized with several options, e.g., the maximum number of components. All options can be found in the
To simplify integration, the GSF returns a
Acts::KalmanFitterResult object, the same as the
Acts::KalmanFitter. This allows to use the same analysis tools for both fitters. Currently, the states of the individual components are not returned by the fitter.
A GSF example can be found in the Acts Examples Framework here.
Customizing the Bethe-Heitler approximation¶
The GSF needs an approximation of the Bethe-Heitler distribution as a Gaussian mixture on each material interaction (see above). This task is delegated to a separate class, that can be provided by a template parameter to
Acts::Experimental::GaussianSumFitter, so in principle it can be implemented in different ways.
However, ACTS ships with the class
Acts::Experimental::AtlasBetheHeitlerApprox that implements the ATLAS strategy for this task: To be able to evaluate the approximation of the Bethe-Heitler distribution for different materials and thicknesses, the individual Gaussian components (weight, mean, variance of the ratio \(E_f/E_i\)) are parametrised as polynomials in \(x/x_0\). This class can load files in the ATLAS format that can be found here. A default parameterization can be created with
Acts::Experimental::AtlasBetheHeitlerApprox is constructed with two parameterizations, allowing to use different parameterizations for different \(x/x_0\). In particular, it has this behaviour:
\(x/x_0 < 0.0001\): Return no change
\(x/x_0 < 0.002\): Return a single gaussian approximation
\(x/x_0 < 0.1\): Return the approximation for low \(x/x_0\).
\(x/x_0 \geq 0.1\): Return the approximation for high \(x/x_0\). The maximum possible value is \(x/x_0 = 0.2\), for higher values it is clipped to 0.2 and the GSF emits a warning.