Guard against use of invalid pattern track parameter covariance
The Trk::PatternTrackParameters
class contains, like the other track
parameter classes, an optional covariance matrix. In other track
parameter classes, the nullability of the covariance matrix is modelled
using pointers. The pattern track parameters, on the contrary, always
contain a covariance matrix, and use a boolean flag to indicate whether
the data stored in this covariance matrix data member is valid or not.
The pattern track parameters class provides a newCovarianceMatrix
method which updates the covariance matrix of the current instance
according to a Jacobian matrix and the covariance matrix of a second set
of track parameters. The implementation of this method assumes that the
covariance matrix stored in the second set of parameters is valid, and
also marks the covariance of the object on which it is called as valid.
It follows from this that the method should only be called if the second
parameter has a valid and properly initialized covariance matrix.
I was able to find two cases in which the validity of the covariance matrix is not checked: in the Runge-Kutta propagator and in the SI trajectory element. This may lead to unsanitary behaviour, and I believe this to be a bug in terms of physics performance. Investigation reveals that there are indeed cases where this method is called for parameters with invalid covariance matrices.
To counteract this effect, I have added additional safeguards to prevent the execution of the aforementioned method in cases where the second set of track parameters has an invalid covariance matrix, thereby ensuring that invalid covariance information is not propagated to other parts of the code base.
This commit introduces slight changes in physics output, but these changes are accounted for and I believe them to be improvements over the old output.
Merge request reports
Activity
added InnerDetector Tracking master review-pending-level-1 labels
CI Result FAILURE (hash ad24668b)Athena AthSimulation AthGeneration AnalysisBase externals cmake make required tests optional tests Full details available on this CI monitor view
Athena: number of compilation errors 0, warnings 0
AthSimulation: number of compilation errors 0, warnings 0
AthGeneration: number of compilation errors 0, warnings 0
AnalysisBase: number of compilation errors 0, warnings 0
For experts only: Jenkins output [CI-MERGE-REQUEST-CC7 21708] CI Result FAILURE (hash ad24668b)Athena AthSimulation AthGeneration AnalysisBase externals cmake make required tests optional tests Full details available on this CI monitor view
Athena: number of compilation errors 0, warnings 0
AthSimulation: number of compilation errors 0, warnings 0
AthGeneration: number of compilation errors 0, warnings 0
AnalysisBase: number of compilation errors 0, warnings 0
For experts only: Jenkins output [CI-MERGE-REQUEST-CC7 21769]But then the reference files need to be updated?
Edited by Johannes Junggeburthadded 21.0-mc16a review-user-action-required labels and removed review-pending-level-1 label
removed 21.0-mc16a label
Hi, yes the reference will need to updated, as otherwise all sebsequent MR CI will fail (if they are not updated and they pick this up).
@sswatman you can use the output of the CI above as diff. and apply it to the 2 ref files.
- Resolved by Stephen Nicholas Swatman
Hi @goblirsc,
do You understand why there can be track parameters without a valid covariance at these locations? I just was wondering whether the actual bug, which allows for invalid track parameters to be propagated, is somewhere else.
Cheers, Götz
added 2 commits
added Tools review-pending-level-1 labels and removed review-user-action-required label
added review-approved label and removed Tools review-pending-level-1 labels
added Tools label
CI Result SUCCESS (hash 00cb1273)Athena AthSimulation AthGeneration AnalysisBase externals cmake make required tests optional tests Full details available on this CI monitor view
Athena: number of compilation errors 0, warnings 0
AthSimulation: number of compilation errors 0, warnings 0
AthGeneration: number of compilation errors 0, warnings 0
AnalysisBase: number of compilation errors 0, warnings 0
For experts only: Jenkins output [CI-MERGE-REQUEST-CC7 21820]