/* This file is part of MAUS: http://micewww.pp.rl.ac.uk:8080/projects/maus * * MAUS is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * MAUS is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with MAUS. If not, see . * */ #include "TMatrixD.h" #include "src/common_cpp/DataStructure/SciFiSpacePoint.hh" #include "src/common_cpp/DataStructure/SciFiStraightPRTrack.hh" #include "gtest/gtest.h" namespace MAUS { class SciFiStraightPRTrackTestDS : public ::testing::Test { protected: SciFiStraightPRTrackTestDS() {} virtual ~SciFiStraightPRTrackTestDS() {} virtual void SetUp() {} virtual void TearDown() {} }; TEST_F(SciFiStraightPRTrackTestDS, test_default_constructor) { SciFiStraightPRTrack prtrack; EXPECT_EQ(prtrack.get_x0(), -1.0); EXPECT_EQ(prtrack.get_mx(), -1.0); EXPECT_EQ(prtrack.get_x_chisq(), -1.0); EXPECT_EQ(prtrack.get_y0(), -1.0); EXPECT_EQ(prtrack.get_my(), -1.0); EXPECT_EQ(prtrack.get_y_chisq(), -1.0); EXPECT_EQ(prtrack.get_global_x0(), -1.0); EXPECT_EQ(prtrack.get_global_mx(), -1.0); EXPECT_EQ(prtrack.get_global_y0(), -1.0); EXPECT_EQ(prtrack.get_global_my(), -1.0); EXPECT_EQ(prtrack.get_tracker(), -1); EXPECT_EQ(prtrack.get_num_points(), 0); EXPECT_EQ(prtrack.get_covariance().size(), 0); } TEST_F(SciFiStraightPRTrackTestDS, test_parameter_constructor) { std::vector cov(0); cov.push_back(10.0); SciFiStraightPRTrack prtrack(0, 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, cov); EXPECT_EQ(prtrack.get_x0(), 1.0); EXPECT_EQ(prtrack.get_mx(), 2.0); EXPECT_EQ(prtrack.get_x_chisq(), 3.0); EXPECT_EQ(prtrack.get_y0(), 4.0); EXPECT_EQ(prtrack.get_my(), 5.0); EXPECT_EQ(prtrack.get_y_chisq(), 6.0); EXPECT_EQ(prtrack.get_global_x0(), -1.0); EXPECT_EQ(prtrack.get_global_mx(), -1.0); EXPECT_EQ(prtrack.get_global_y0(), -1.0); EXPECT_EQ(prtrack.get_global_my(), -1.0); EXPECT_EQ(prtrack.get_tracker(), 0); EXPECT_EQ(prtrack.get_num_points(), 0); ASSERT_EQ(prtrack.get_covariance().size(), 1); EXPECT_EQ(prtrack.get_covariance()[0], 10.0); } TEST_F(SciFiStraightPRTrackTestDS, test_simpleline_constructor) { SimpleLine lx, ly; std::vector cov(0); cov.push_back(10.0); lx.set_c(1.0); lx.set_m(2.0); lx.set_chisq(3.0); ly.set_c(4.0); ly.set_m(5.0); ly.set_chisq(6.0); SciFiStraightPRTrack prtrack(0, lx, ly, cov); EXPECT_EQ(prtrack.get_x0(), 1.0); EXPECT_EQ(prtrack.get_mx(), 2.0); EXPECT_EQ(prtrack.get_x_chisq(), 3.0); EXPECT_EQ(prtrack.get_y0(), 4.0); EXPECT_EQ(prtrack.get_my(), 5.0); EXPECT_EQ(prtrack.get_y_chisq(), 6.0); EXPECT_EQ(prtrack.get_global_x0(), -1.0); EXPECT_EQ(prtrack.get_global_mx(), -1.0); EXPECT_EQ(prtrack.get_global_y0(), -1.0); EXPECT_EQ(prtrack.get_global_my(), -1.0); EXPECT_EQ(prtrack.get_tracker(), 0); EXPECT_EQ(prtrack.get_num_points(), 0); ASSERT_EQ(prtrack.get_covariance().size(), 1); EXPECT_EQ(prtrack.get_covariance()[0], 10.0); } TEST_F(SciFiStraightPRTrackTestDS, test_copy_constructor) { std::vector cov(0); cov.push_back(10.0); SciFiStraightPRTrack trk1(0, 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, cov); trk1.set_global_x0(7.0); trk1.set_global_mx(8.0); trk1.set_global_y0(9.0); trk1.set_global_my(10.0); SciFiSpacePoint *spoint = new SciFiSpacePoint(); spoint->set_tracker(1); SciFiSpacePointPArray spoints; spoints.push_back(spoint); trk1.set_spacepoints_pointers(spoints); SciFiStraightPRTrack trk2(trk1); EXPECT_EQ(trk2.get_x0(), 1.0); EXPECT_EQ(trk2.get_mx(), 2.0); EXPECT_EQ(trk2.get_x_chisq(), 3.0); EXPECT_EQ(trk2.get_y0(), 4.0); EXPECT_EQ(trk2.get_my(), 5.0); EXPECT_EQ(trk2.get_y_chisq(), 6.0); EXPECT_EQ(trk2.get_global_x0(), 7.0); EXPECT_EQ(trk2.get_global_mx(), 8.0); EXPECT_EQ(trk2.get_global_y0(), 9.0); EXPECT_EQ(trk2.get_global_my(), 10.0); EXPECT_EQ(trk2.get_tracker(), 0); EXPECT_EQ(trk2.get_num_points(), 1); EXPECT_EQ(trk2.get_spacepoints_pointers()[0]->get_tracker(), 1); ASSERT_EQ(trk2.get_covariance().size(), 1); EXPECT_EQ(trk2.get_covariance()[0], 10.0); } TEST_F(SciFiStraightPRTrackTestDS, test_equality_operator) { std::vector cov(0); cov.push_back(10.0); SciFiStraightPRTrack trk1(0, 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, cov); trk1.set_global_x0(7.0); trk1.set_global_mx(8.0); trk1.set_global_y0(9.0); trk1.set_global_my(10.0); SciFiSpacePoint *spoint = new SciFiSpacePoint(); spoint->set_tracker(1); SciFiSpacePointPArray spoints; spoints.push_back(spoint); trk1.set_spacepoints_pointers(spoints); SciFiStraightPRTrack trk2; trk2 = trk1; EXPECT_EQ(trk2.get_x0(), 1.0); EXPECT_EQ(trk2.get_mx(), 2.0); EXPECT_EQ(trk2.get_x_chisq(), 3.0); EXPECT_EQ(trk2.get_y0(), 4.0); EXPECT_EQ(trk2.get_my(), 5.0); EXPECT_EQ(trk2.get_y_chisq(), 6.0); EXPECT_EQ(trk2.get_global_x0(), 7.0); EXPECT_EQ(trk2.get_global_mx(), 8.0); EXPECT_EQ(trk2.get_global_y0(), 9.0); EXPECT_EQ(trk2.get_global_my(), 10.0); EXPECT_EQ(trk2.get_tracker(), 0); EXPECT_EQ(trk2.get_num_points(), 1); EXPECT_EQ(trk2.get_spacepoints_pointers()[0]->get_tracker(), 1); ASSERT_EQ(trk2.get_covariance().size(), 1); EXPECT_EQ(trk2.get_covariance()[0], 10.0); } TEST_F(SciFiStraightPRTrackTestDS, test_setters_getters) { double x0 = 1.0; double mx = 2.0; double x_chisq = 3.0; double y0 = 4.0; double my = 5.0; double y_chisq = 6.0; double gx0 = 7.0; double gmx = 8.0; double gy0 = 9.0; double gmy = 10.0; int tracker = 1; int num_points = 5; SciFiSpacePointPArray spoints; for (int it_p = 0; it_p < num_points; ++it_p) { SciFiSpacePoint *spoint = new SciFiSpacePoint(); spoint->set_tracker(tracker); spoints.push_back(spoint); } std::vector cov(0); cov.push_back(10.0); SciFiStraightPRTrack prtrack; prtrack.set_x0(x0); prtrack.set_mx(mx); prtrack.set_x_chisq(x_chisq); prtrack.set_y0(y0); prtrack.set_my(my); prtrack.set_y_chisq(y_chisq); prtrack.set_global_x0(gx0); prtrack.set_global_mx(gmx); prtrack.set_global_y0(gy0); prtrack.set_global_my(gmy); prtrack.set_tracker(tracker); prtrack.set_spacepoints_pointers(spoints); prtrack.set_covariance(cov); EXPECT_EQ(prtrack.get_x0(), x0); EXPECT_EQ(prtrack.get_mx(), mx); EXPECT_EQ(prtrack.get_x_chisq(), x_chisq); EXPECT_EQ(prtrack.get_y0(), y0); EXPECT_EQ(prtrack.get_my(), my); EXPECT_EQ(prtrack.get_y_chisq(), y_chisq); EXPECT_EQ(prtrack.get_global_x0(), gx0); EXPECT_EQ(prtrack.get_global_mx(), gmx); EXPECT_EQ(prtrack.get_global_y0(), gy0); EXPECT_EQ(prtrack.get_global_my(), gmy); EXPECT_EQ(prtrack.get_tracker(), tracker); EXPECT_EQ(prtrack.get_num_points(), num_points); EXPECT_EQ(prtrack.get_spacepoints_pointers()[0]->get_tracker(), tracker); ASSERT_EQ(prtrack.get_covariance().size(), 1); EXPECT_EQ(prtrack.get_covariance()[0], 10.0); } } // ~namespace MAUS