316 SVector2 m_k(p[0], p[1]), r_k_kminus1;
323 SMatrix22 invResCov = (V_k + ROOT::Math::Similarity(H_k, mCovariances));
327 SMatrix52 K_k = mCovariances * ROOT::Math::Transpose(H_k) * invResCov;
335 auto& CP = mCovariances;
336 auto& sigmax2 = cov[0];
337 auto& sigmay2 = cov[1];
338 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));
339 auto AX =
A * sigmax2;
340 auto AY =
A * sigmay2;
341 auto B = sigmax2 * sigmay2;
342 auto C = (sigmax2 + CP(0, 0)) * (sigmay2 + CP(1, 1));
343 auto D = 1 / (-C + CP(0, 1) * CP(0, 1));
344 auto E = sigmax2 + CP(0, 0);
345 auto F = sigmay2 + CP(1, 1);
346 auto G = -C + CP(0, 1) * CP(0, 1);
349 updatedCov(0, 0) = AX * (sigmay2 * CP(0, 0) + CP(0, 0) * CP(1, 1) - CP(0, 1) * CP(0, 1));
350 updatedCov(0, 1) = AX * sigmay2 * CP(0, 1);
351 updatedCov(0, 2) = AX * (sigmay2 * CP(0, 2) - CP(0, 1) * CP(1, 2) + CP(0, 2) * CP(1, 1));
352 updatedCov(0, 3) = AX * (sigmay2 * CP(0, 3) - CP(0, 1) * CP(1, 3) + CP(0, 3) * CP(1, 1));
353 updatedCov(0, 4) = AX * (sigmay2 * CP(0, 4) - CP(0, 1) * CP(1, 4) + CP(0, 4) * CP(1, 1));
354 updatedCov(1, 1) = AY * (sigmax2 * CP(1, 1) + CP(0, 0) * CP(1, 1) - CP(0, 1) * CP(0, 1));
355 updatedCov(1, 2) = AY * (sigmax2 * CP(1, 2) + CP(0, 0) * CP(1, 2) - CP(0, 1) * CP(0, 2));
356 updatedCov(1, 3) = AY * (sigmax2 * CP(1, 3) + CP(0, 0) * CP(1, 3) - CP(0, 1) * CP(0, 3));
357 updatedCov(1, 4) = AY * (sigmax2 * CP(1, 4) + CP(0, 0) * CP(1, 4) - CP(0, 1) * CP(0, 4));
358 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)));
359 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)));
360 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)));
361 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)));
362 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)));
363 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)));
365 mCovariances(0, 0) = updatedCov(0, 0);
366 mCovariances(0, 1) = updatedCov(0, 1);
367 mCovariances(0, 2) = updatedCov(0, 2);
368 mCovariances(0, 3) = updatedCov(0, 3);
369 mCovariances(0, 4) = updatedCov(0, 4);
370 mCovariances(1, 1) = updatedCov(1, 1);
371 mCovariances(1, 2) = updatedCov(1, 2);
372 mCovariances(1, 3) = updatedCov(1, 3);
373 mCovariances(1, 4) = updatedCov(1, 4);
374 mCovariances(2, 2) = updatedCov(2, 2);
375 mCovariances(2, 3) = updatedCov(2, 3);
376 mCovariances(2, 4) = updatedCov(2, 4);
377 mCovariances(3, 3) = updatedCov(3, 3);
378 mCovariances(3, 4) = updatedCov(3, 4);
379 mCovariances(4, 4) = updatedCov(4, 4);
381 auto addChi2Track = ROOT::Math::Similarity(r_k_kminus1, invResCov);
479 auto px = pt * std::sqrt((1. -
getSnp()) * (1. +
getSnp()));
484 cv[0] = mCovariances(0, 0);
485 cv[1] = mCovariances(1, 0);
486 cv[2] = mCovariances(1, 1);
490 cv[6] = -mCovariances(0, 2) * py - mCovariances(0, 4) * px * pt * q;
491 cv[7] = -mCovariances(1, 2) * py - mCovariances(1, 4) * px * pt * q;
493 cv[9] = 2 * mCovariances(2, 4) * px * py * q * pt + mCovariances(2, 2) * py * py + mCovariances(4, 4) * px * px * pt * pt;
494 cv[10] = mCovariances(0, 2) * px - mCovariances(0, 4) * py * pt * q;
495 cv[11] = mCovariances(1, 2) * px - mCovariances(1, 4) * py * pt * q;
497 cv[13] = mCovariances(2, 4) * (py * py - px * px) * q * pt - mCovariances(2, 2) * px * py + mCovariances(4, 4) * px * py * pt * pt;
498 cv[14] = -2 * mCovariances(2, 4) * px * py * q * pt + mCovariances(2, 2) * px * px + mCovariances(4, 4) * py * py * pt * pt;
499 cv[15] = mCovariances(0, 3) * pt - mCovariances(0, 4) * pt * pz * q;
500 cv[16] = mCovariances(1, 3) * pt - mCovariances(1, 4) * pt * pz * q;
502 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;
503 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;
504 cv[20] = -2 * mCovariances(3, 4) * pz * q * pt * pt + mCovariances(3, 3) * pt * pt + mCovariances(4, 4) * pz * pz * pt * pt;
597 auto csa = TMath::Cos(
alpha), sna = TMath::Sin(
alpha);
599 t.setX(csa *
getX() + sna *
getY());
600 t.setY(-sna *
getX() + csa *
getY());
622 const T b1 = -
getTgl() * csa;
623 const T b2 = -
getTgl() * sna;
627 T(a1 * a1 * C(0, 0) + 2 * a1 * a2 * C(0, 1) + a2 * a2 * C(1, 1)),
628 T(a1 * b1 * C(0, 0) + (a1 * b2 + a2 * b1) * C(0, 1) + a2 * b2 * C(1, 1)),
629 T(b1 * b1 * C(0, 0) + 2 * b1 * b2 * C(0, 1) + b2 * b2 * C(1, 1)),
630 T(csa * (a1 * C(0, 2) + a2 * C(1, 2))),
631 T(csa * (b1 * C(0, 2) + b2 * C(1, 2))),
632 T(csa * csa * C(2, 2)),
633 T(a1 * C(0, 3) + a2 * C(1, 3)),
634 T(b1 * C(0, 3) + b2 * C(1, 3)),
637 T(a1 * C(0, 4) + a2 * C(1, 4)),
638 T(b1 * C(0, 4) + b2 * C(1, 4)),