74 [[nodiscard]]
inline xAOD::ParametersCovMatrix_t
definingParametersCovMatrix( std::span< const float > covMatrixDiag, std::span< const float > covMatrixOffDiag,
bool& valid ) {
77 xAOD::ParametersCovMatrix_t cov;
82 if( (
static_cast< int >( covMatrixDiag.size() ) == cov.rows() ) ) {
86 for(
int i = 0; i < cov.rows(); ++i ) {
87 cov( i, i ) = covMatrixDiag[ i ];
100 if( (
static_cast< int >( covMatrixOffDiag.size() ) == ( ( ( cov.rows() - 1 ) * cov.rows() ) / 2 ) ) ) {
103 std::size_t vecIndex = 0;
104 for(
int i = 1; i < cov.rows(); ++i ) {
105 for(
int j = 0; j < i; ++j, ++vecIndex ) {
106 float offDiagCoeff = cov(i,i)>0 && cov(j,j)>0 ? covMatrixOffDiag[vecIndex]*sqrt(cov(i,i)*cov(j,j)) : 0;
107 cov.fillSymmetric( i, j, offDiagCoeff );
124 std::pair<covMatrixIndex,covMatrixIndex> pairIndex = vecPairIndex[k];
127 float offDiagCoeff = cov(i,i)>0 && cov(j,j)>0 ? covMatrixOffDiag[k]*sqrt(cov(i,i)*cov(j,j)) : 0;
128 cov.fillSymmetric( i, j, offDiagCoeff );