314 SVector2 m_k(p[0], p[1]), r_k_kminus1;
321 SMatrix22 invResCov = (V_k + ROOT::Math::Similarity(H_k, mCovariances));
325 SMatrix52 K_k = mCovariances * ROOT::Math::Transpose(H_k) * invResCov;
333 auto& CP = mCovariances;
334 auto& sigmax2 = cov[0];
335 auto& sigmay2 = cov[1];
336 auto A = 1. / (sigmax2 * sigmay2 + sigmax2 * CP(1, 1) + sigmay2 * CP(0, 0) + CP(0, 0) * CP(1, 1) - CP(0, 1) * CP(0, 1));
337 auto AX =
A * sigmax2;
338 auto AY =
A * sigmay2;
339 auto B = sigmax2 * sigmay2;
340 auto C = (sigmax2 + CP(0, 0)) * (sigmay2 + CP(1, 1));
341 auto D = 1 / (-C + CP(0, 1) * CP(0, 1));
342 auto E = sigmax2 + CP(0, 0);
343 auto F = sigmay2 + CP(1, 1);
344 auto G = -C + CP(0, 1) * CP(0, 1);
347 updatedCov(0, 0) = AX * (sigmay2 * CP(0, 0) + CP(0, 0) * CP(1, 1) - CP(0, 1) * CP(0, 1));
348 updatedCov(0, 1) = AX * sigmay2 * CP(0, 1);
349 updatedCov(0, 2) = AX * (sigmay2 * CP(0, 2) - CP(0, 1) * CP(1, 2) + CP(0, 2) * CP(1, 1));
350 updatedCov(0, 3) = AX * (sigmay2 * CP(0, 3) - CP(0, 1) * CP(1, 3) + CP(0, 3) * CP(1, 1));
351 updatedCov(0, 4) = AX * (sigmay2 * CP(0, 4) - CP(0, 1) * CP(1, 4) + CP(0, 4) * CP(1, 1));
352 updatedCov(1, 1) = AY * (sigmax2 * CP(1, 1) + CP(0, 0) * CP(1, 1) - CP(0, 1) * CP(0, 1));
353 updatedCov(1, 2) = AY * (sigmax2 * CP(1, 2) + CP(0, 0) * CP(1, 2) - CP(0, 1) * CP(0, 2));
354 updatedCov(1, 3) = AY * (sigmax2 * CP(1, 3) + CP(0, 0) * CP(1, 3) - CP(0, 1) * CP(0, 3));
355 updatedCov(1, 4) = AY * (sigmax2 * CP(1, 4) + CP(0, 0) * CP(1, 4) - CP(0, 1) * CP(0, 4));
356 updatedCov(2, 2) = D * (G * CP(2, 2) - CP(0, 2) * (-F * CP(0, 2) + CP(0, 1) * CP(1, 2)) - CP(1, 2) * (-E * CP(1, 2) + CP(0, 1) * CP(0, 2)));
357 updatedCov(2, 3) = D * (G * CP(2, 3) - CP(0, 2) * (-F * CP(0, 3) + CP(0, 1) * CP(1, 3)) - CP(1, 2) * (-E * CP(1, 3) + CP(0, 1) * CP(0, 3)));
358 updatedCov(2, 4) = D * (G * CP(2, 4) - CP(0, 2) * (-F * CP(0, 4) + CP(0, 1) * CP(1, 4)) - CP(1, 2) * (-E * CP(1, 4) + CP(0, 1) * CP(0, 4)));
359 updatedCov(3, 3) = D * (G * CP(3, 3) - CP(0, 3) * (-F * CP(0, 3) + CP(0, 1) * CP(1, 3)) - CP(1, 3) * (-E * CP(1, 3) + CP(0, 1) * CP(0, 3)));
360 updatedCov(3, 4) = D * (G * CP(3, 4) - CP(0, 3) * (-F * CP(0, 4) + CP(0, 1) * CP(1, 4)) - CP(1, 3) * (-E * CP(1, 4) + CP(0, 1) * CP(0, 4)));
361 updatedCov(4, 4) = D * (G * CP(4, 4) - CP(0, 4) * (-F * CP(0, 4) + CP(0, 1) * CP(1, 4)) - CP(1, 4) * (-E * CP(1, 4) + CP(0, 1) * CP(0, 4)));
363 mCovariances(0, 0) = updatedCov(0, 0);
364 mCovariances(0, 1) = updatedCov(0, 1);
365 mCovariances(0, 2) = updatedCov(0, 2);
366 mCovariances(0, 3) = updatedCov(0, 3);
367 mCovariances(0, 4) = updatedCov(0, 4);
368 mCovariances(1, 1) = updatedCov(1, 1);
369 mCovariances(1, 2) = updatedCov(1, 2);
370 mCovariances(1, 3) = updatedCov(1, 3);
371 mCovariances(1, 4) = updatedCov(1, 4);
372 mCovariances(2, 2) = updatedCov(2, 2);
373 mCovariances(2, 3) = updatedCov(2, 3);
374 mCovariances(2, 4) = updatedCov(2, 4);
375 mCovariances(3, 3) = updatedCov(3, 3);
376 mCovariances(3, 4) = updatedCov(3, 4);
377 mCovariances(4, 4) = updatedCov(4, 4);
379 auto addChi2Track = ROOT::Math::Similarity(r_k_kminus1, invResCov);
477 auto px = pt * std::sqrt((1. -
getSnp()) * (1. +
getSnp()));
482 cv[0] = mCovariances(0, 0);
483 cv[1] = mCovariances(1, 0);
484 cv[2] = mCovariances(1, 1);
488 cv[6] = -mCovariances(0, 2) * py - mCovariances(0, 4) * px * pt * q;
489 cv[7] = -mCovariances(1, 2) * py - mCovariances(1, 4) * px * pt * q;
491 cv[9] = 2 * mCovariances(2, 4) * px * py * q * pt + mCovariances(2, 2) * py * py + mCovariances(4, 4) * px * px * pt * pt;
492 cv[10] = mCovariances(0, 2) * px - mCovariances(0, 4) * py * pt * q;
493 cv[11] = mCovariances(1, 2) * px - mCovariances(1, 4) * py * pt * q;
495 cv[13] = mCovariances(2, 4) * (py * py - px * px) * q * pt - mCovariances(2, 2) * px * py + mCovariances(4, 4) * px * py * pt * pt;
496 cv[14] = -2 * mCovariances(2, 4) * px * py * q * pt + mCovariances(2, 2) * px * px + mCovariances(4, 4) * py * py * pt * pt;
497 cv[15] = mCovariances(0, 3) * pt - mCovariances(0, 4) * pt * pz * q;
498 cv[16] = mCovariances(1, 3) * pt - mCovariances(1, 4) * pt * pz * q;
500 cv[18] = -mCovariances(2, 3) * py * pt - mCovariances(3, 4) * px * q * pt * pt + mCovariances(2, 4) * py * pz * q * pt + mCovariances(4, 4) * px * pz * pt * pt;
501 cv[19] = mCovariances(2, 3) * px * pt - mCovariances(3, 4) * q * pt * pt * py - mCovariances(2, 4) * px * pz * q * pt + mCovariances(4, 4) * py * pz * pt * pt;
502 cv[20] = -2 * mCovariances(3, 4) * pz * q * pt * pt + mCovariances(3, 3) * pt * pt + mCovariances(4, 4) * pz * pz * pt * pt;