313 SVector2 m_k(p[0], p[1]), r_k_kminus1;
320 SMatrix22 invResCov = (V_k + ROOT::Math::Similarity(H_k, mCovariances));
324 SMatrix52 K_k = mCovariances * ROOT::Math::Transpose(H_k) * invResCov;
332 auto& CP = mCovariances;
333 auto& sigmax2 = cov[0];
334 auto& sigmay2 = cov[1];
335 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));
336 auto AX =
A * sigmax2;
337 auto AY =
A * sigmay2;
338 auto B = sigmax2 * sigmay2;
339 auto C = (sigmax2 + CP(0, 0)) * (sigmay2 + CP(1, 1));
340 auto D = 1 / (-C + CP(0, 1) * CP(0, 1));
341 auto E = sigmax2 + CP(0, 0);
342 auto F = sigmay2 + CP(1, 1);
343 auto G = -C + CP(0, 1) * CP(0, 1);
346 updatedCov(0, 0) = AX * (sigmay2 * CP(0, 0) + CP(0, 0) * CP(1, 1) - CP(0, 1) * CP(0, 1));
347 updatedCov(0, 1) = AX * sigmay2 * CP(0, 1);
348 updatedCov(0, 2) = AX * (sigmay2 * CP(0, 2) - CP(0, 1) * CP(1, 2) + CP(0, 2) * CP(1, 1));
349 updatedCov(0, 3) = AX * (sigmay2 * CP(0, 3) - CP(0, 1) * CP(1, 3) + CP(0, 3) * CP(1, 1));
350 updatedCov(0, 4) = AX * (sigmay2 * CP(0, 4) - CP(0, 1) * CP(1, 4) + CP(0, 4) * CP(1, 1));
351 updatedCov(1, 1) = AY * (sigmax2 * CP(1, 1) + CP(0, 0) * CP(1, 1) - CP(0, 1) * CP(0, 1));
352 updatedCov(1, 2) = AY * (sigmax2 * CP(1, 2) + CP(0, 0) * CP(1, 2) - CP(0, 1) * CP(0, 2));
353 updatedCov(1, 3) = AY * (sigmax2 * CP(1, 3) + CP(0, 0) * CP(1, 3) - CP(0, 1) * CP(0, 3));
354 updatedCov(1, 4) = AY * (sigmax2 * CP(1, 4) + CP(0, 0) * CP(1, 4) - CP(0, 1) * CP(0, 4));
355 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)));
356 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)));
357 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)));
358 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)));
359 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)));
360 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)));
362 mCovariances(0, 0) = updatedCov(0, 0);
363 mCovariances(0, 1) = updatedCov(0, 1);
364 mCovariances(0, 2) = updatedCov(0, 2);
365 mCovariances(0, 3) = updatedCov(0, 3);
366 mCovariances(0, 4) = updatedCov(0, 4);
367 mCovariances(1, 1) = updatedCov(1, 1);
368 mCovariances(1, 2) = updatedCov(1, 2);
369 mCovariances(1, 3) = updatedCov(1, 3);
370 mCovariances(1, 4) = updatedCov(1, 4);
371 mCovariances(2, 2) = updatedCov(2, 2);
372 mCovariances(2, 3) = updatedCov(2, 3);
373 mCovariances(2, 4) = updatedCov(2, 4);
374 mCovariances(3, 3) = updatedCov(3, 3);
375 mCovariances(3, 4) = updatedCov(3, 4);
376 mCovariances(4, 4) = updatedCov(4, 4);
378 auto addChi2Track = ROOT::Math::Similarity(r_k_kminus1, invResCov);
476 auto px = pt * std::sqrt((1. -
getSnp()) * (1. +
getSnp()));
481 cv[0] = mCovariances(0, 0);
482 cv[1] = mCovariances(1, 0);
483 cv[2] = mCovariances(1, 1);
487 cv[6] = -mCovariances(0, 2) * py - mCovariances(0, 4) * px * pt * q;
488 cv[7] = -mCovariances(1, 2) * py - mCovariances(1, 4) * px * pt * q;
490 cv[9] = 2 * mCovariances(2, 4) * px * py * q * pt + mCovariances(2, 2) * py * py + mCovariances(4, 4) * px * px * pt * pt;
491 cv[10] = mCovariances(0, 2) * px - mCovariances(0, 4) * py * pt * q;
492 cv[11] = mCovariances(1, 2) * px - mCovariances(1, 4) * py * pt * q;
494 cv[13] = mCovariances(2, 4) * (py * py - px * px) * q * pt - mCovariances(2, 2) * px * py + mCovariances(4, 4) * px * py * pt * pt;
495 cv[14] = -2 * mCovariances(2, 4) * px * py * q * pt + mCovariances(2, 2) * px * px + mCovariances(4, 4) * py * py * pt * pt;
496 cv[15] = mCovariances(0, 3) * pt - mCovariances(0, 4) * pt * pz * q;
497 cv[16] = mCovariances(1, 3) * pt - mCovariances(1, 4) * pt * pz * q;
499 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;
500 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;
501 cv[20] = -2 * mCovariances(3, 4) * pz * q * pt * pt + mCovariances(3, 3) * pt * pt + mCovariances(4, 4) * pz * pz * pt * pt;