5 #ifndef XAODTRACKING_TRACKINGDETAILS_H
6 #define XAODTRACKING_TRACKINGDETAILS_H
9 #include "Math/Vector4D.h"
14 namespace TrackingDetails
38 using GenVecFourMom_t = ROOT::Math::LorentzVector<ROOT::Math::PxPyPzM4D<double> >;
56 float sinTheta=
sin(thetaT);
57 float px =
p*sinTheta*
cos(phiT);
58 float py =
p*sinTheta*
sin(phiT);
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 );