Alignment with PrKalmanFilter
Adapt AlignAlgorithm
, TrackResidualHelper
, VertexResidualTool
, AlResiduals
and more to be compatible with PrKalmanFitResult
and PrFitNode
and make alignment work with PrKalmanFilter
in general. Depends on Rec!2671 (merged).
Addresses #16
The code contains some rough spots due to how LHCb::FitNode
and new PrFitNode
work internally in a different way, suggestions for improvements are welcome.
The parts of AlignAlgorithm
which are common for both fitters are now defined by AlignAlgorithmBase
. The AlignAlgorithm
then inherits from the base class and is templated on the fit node type and fit result type. AlignAlgorithmBase
is also used in AlignAlgorithmHelper
to access methods of AlignAlgorithm
outside of the main execution, this is used in gaudiiter.py
.
Note that the configuration for VELO alignment in Humboldt
was also adapted - one has to use AlignAlgorithm_PrKalman
to run alignment and the VELO backward tracks have to be fitted separately as they are not provided by the make_fastest_reco
function.
Potential issues I found during testing:
- The problem with backward VELO tracks fit with
PrKalmanFilter
will be addressed on track fit side by Rec!2734 (merged). However, when running the alignment with this change there are still error messages regarding bad offdiagonal elements for number of VELO backward tracks. The warning is produced here. - To carry out the test Wouter suggested, where we align the whole detector as a single unit with no external constraints, we need the "Tracker" alignable which is outdated a.t.m.
- Trying to modify the Tracker alignable and using it for the test with the old fitter results in "no alignable degrees of freedom" error message, see the alignment log
- Same happens when aligning the VP as a whole using the old fitter and
'Long'
tracks while ignoring UT and FT hits with the measurement provider - Followed up in #24