73 {
74
75 double m[4][4] = { { a11, a12, a13, a14 },
76 { a21, a22, a23, a24 },
77 { a31, a32, a33, a34 },
78 { a41, a42, a43, a44 } };
79
80 double scalerow =
m[0][0] +
m[1][1] +
m[2][2];
81
82 if (scalerow > 0.0) {
83 double s = ::sqrt(scalerow + m[3][3]);
86
90 }
91 else {
93 if (m[1][1] > m[0][0])
i = 1;
94 if (m[2][2] > m[i][i])
i = 2;
95
98
99 double s = ::sqrt((m[i][i] - (m[j][j] + m[k][k])) + m[3][3]);
100
103
107 }
108
109 if (m[3][3] != 1.0) {
110 m_quat *= (1.0/::sqrt(m[3][3]));
111 }
112}
float j(const xAOD::IParticle &, const xAOD::TrackMeasurementValidation &hit, const Eigen::Matrix3d &jab_inv)