4 #include <gtest/gtest.h>
6 #include "analysis/VertexFitting/TreeFitter/FitParams.h"
7 #include "analysis/VertexFitting/TreeFitter/KalmanCalculator.h"
12 class TreeFitterKalmanCalculatorTest :
public ::testing::Test {
17 TEST_F(TreeFitterKalmanCalculatorTest, Functions)
22 fitParDim6.getStateVector() << Eigen::Matrix<double, 6, 1>::Zero(6, 1);
24 fitParDim6.getCovariance() = 2 * Eigen::Matrix<double, 6, 6>::Identity(6, 6);
26 Eigen::Matrix<double, 3, 6> G;
29 G << 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 1;
31 const Eigen::Matrix<double, 3, 6>& c_G = G;
41 Eigen::Matrix<double, 3, 1> residuals;
43 residuals << .1, .2, .3;
44 const Eigen::Matrix<double, 3, 1>& c_r = residuals;
46 kalman.calculateGainMatrix(c_r, c_G, fitParDim6,
nullptr, 0);
48 kalman.updateState(fitParDim6);
50 Eigen::Matrix<double, 6, 1> expectedUpdatedFitpars;
52 expectedUpdatedFitpars << -0.05, -0.1, -0.15, -0.05, -0.1, -0.15;
54 EXPECT_TRUE(expectedUpdatedFitpars.isApprox(fitParDim6.getStateVector().segment(0, 6))) <<
"fitpar update failed.";
56 Eigen::Matrix<double, 6, 6> expectedUpdatedCov = Eigen::Matrix<double, 6, 6>::Identity(6, 6);
58 expectedUpdatedCov.diagonal < -3 > () << -1, -1, -1;
60 expectedUpdatedCov.diagonal<3>() << -1, -1, -1;
62 kalman.updateCovariance(fitParDim6);
63 Eigen::Matrix<double, 6, 6> updatedCov = fitParDim6.getCovariance().selfadjointView<Eigen::Lower>();
66 EXPECT_TRUE(updatedCov.isApprox(expectedUpdatedCov)) <<
"covariance update failed.";