/* 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 "src/common_cpp/DataStructure/SciFiSpacePoint.hh" #include "src/common_cpp/DataStructure/SciFiHelicalPRTrack.hh" #include "gtest/gtest.h" namespace MAUS { class SciFiHelicalPRTrackTestDS : public ::testing::Test { protected: SciFiHelicalPRTrackTestDS() {} virtual ~SciFiHelicalPRTrackTestDS() {} virtual void SetUp() {} virtual void TearDown() {} }; TEST_F(SciFiHelicalPRTrackTestDS, test_default_constructor) { unsigned int size = 0; SciFiHelicalPRTrack prtrack; EXPECT_EQ(prtrack.get_x0(), -1.0); EXPECT_EQ(prtrack.get_y0(), -1.0); EXPECT_EQ(prtrack.get_z0(), -1.0); EXPECT_EQ(prtrack.get_phi0(), -1.0); EXPECT_EQ(prtrack.get_psi0(), -1.0); EXPECT_EQ(prtrack.get_dsdz(), -1.0); EXPECT_EQ(prtrack.get_R(), -1.0); EXPECT_EQ(prtrack.get_chisq(), -1.0); EXPECT_EQ(prtrack.get_chisq_dof(), -1.0); EXPECT_EQ(prtrack.get_line_sz_chisq(), -1.0); EXPECT_EQ(prtrack.get_circle_x0(), -1.0); EXPECT_EQ(prtrack.get_circle_y0(), -1.0); EXPECT_EQ(prtrack.get_circle_chisq(), -1.0); EXPECT_EQ(prtrack.get_tracker(), -1); EXPECT_EQ(prtrack.get_num_points(), -1); EXPECT_EQ(prtrack.get_charge(), 0); EXPECT_EQ(prtrack.get_spacepoints().size(), size); } TEST_F(SciFiHelicalPRTrackTestDS, test_parameter_constructor) { SciFiHelicalPRTrack prtrack(0, 3, -1, 1.0, 2.0, 1100.0, 4.0, 2.4, 0.02, 15.0, 30.0); EXPECT_EQ(prtrack.get_x0(), 1.0); EXPECT_EQ(prtrack.get_y0(), 2.0); EXPECT_EQ(prtrack.get_z0(), 1100.0); EXPECT_EQ(prtrack.get_phi0(), 4.0); EXPECT_EQ(prtrack.get_psi0(), 2.4); EXPECT_EQ(prtrack.get_dsdz(), 0.02); EXPECT_EQ(prtrack.get_tracker(), 0); EXPECT_EQ(prtrack.get_num_points(), 3); EXPECT_EQ(prtrack.get_charge(), -1); EXPECT_EQ(prtrack.get_chisq(), 30.0); } TEST_F(SciFiHelicalPRTrackTestDS, test_simplefit_constructor) { double phi0 = 3.0; double psi0 = -1.0; ThreeVector pos0(1.0, 2.0, 1100.0); SimpleLine line_sz; SimpleCircle circle; line_sz.set_c(1.0); line_sz.set_m(0.03); line_sz.set_chisq(7.0); circle.set_R(13.0); circle.set_chisq(6.0); SciFiHelicalPRTrack prtrack(0, 5, -1, pos0, phi0, psi0, circle, line_sz); EXPECT_EQ(prtrack.get_x0(), 1.0); EXPECT_EQ(prtrack.get_y0(), 2.0); EXPECT_EQ(prtrack.get_z0(), 1100.0); EXPECT_EQ(prtrack.get_phi0(), phi0); EXPECT_EQ(prtrack.get_psi0(), psi0); EXPECT_EQ(prtrack.get_dsdz(), 0.03); EXPECT_EQ(prtrack.get_R(), 13.0); EXPECT_EQ(prtrack.get_line_sz_chisq(), 7.0); EXPECT_EQ(prtrack.get_circle_chisq(), 6.0); EXPECT_EQ(prtrack.get_tracker(), 0); EXPECT_EQ(prtrack.get_num_points(), 5); EXPECT_EQ(prtrack.get_charge(), -1); } TEST_F(SciFiHelicalPRTrackTestDS, test_copy_constructor) { int tracker = 0; int num_points = 3; int charge = -1; double x0 = 1.0; double y0 = 2.0; double z0 = 1100.0; double phi0 = 4.0; double psi0 = 2.4; double dsdz = 0.02; double R = 15.0; double chisq = 30.0; double chisq_dof = 10.0; double line_sz_chisq = 5.0; double circle_x0 = 6.0; double circle_y0 = 7.0; double circle_chisq = 8.0; SciFiHelicalPRTrack trk1(tracker, num_points, charge, x0, y0, z0, phi0, psi0, dsdz, R, chisq); trk1.set_chisq_dof(chisq_dof); trk1.set_line_sz_chisq(line_sz_chisq); trk1.set_circle_x0(circle_x0); trk1.set_circle_y0(circle_y0); trk1.set_circle_chisq(circle_chisq); SciFiSpacePoint *spoint = new SciFiSpacePoint(); spoint->set_tracker(tracker); SciFiSpacePointPArray spoints; spoints.push_back(spoint); trk1.set_spacepoints(spoints); std::vector phi_i(0); phi_i.push_back(1.0); phi_i.push_back(-2.0); SciFiHelicalPRTrack trk2(trk1); EXPECT_EQ(trk2.get_x0(), x0); EXPECT_EQ(trk2.get_y0(), y0); EXPECT_EQ(trk2.get_z0(), z0); EXPECT_EQ(trk2.get_phi0(), phi0); EXPECT_EQ(trk2.get_psi0(), psi0); EXPECT_EQ(trk2.get_dsdz(), dsdz); EXPECT_EQ(trk2.get_R(), R); EXPECT_EQ(trk2.get_chisq(), chisq); EXPECT_EQ(trk2.get_chisq_dof(), chisq_dof); EXPECT_EQ(trk2.get_line_sz_chisq(), line_sz_chisq); EXPECT_EQ(trk2.get_circle_x0(), circle_x0); EXPECT_EQ(trk2.get_circle_y0(), circle_y0); EXPECT_EQ(trk2.get_circle_chisq(), circle_chisq); EXPECT_EQ(trk2.get_tracker(), tracker); EXPECT_EQ(trk2.get_num_points(), num_points); EXPECT_EQ(trk2.get_charge(), charge); EXPECT_EQ(trk2.get_spacepoints()[0]->get_tracker(), tracker); } TEST_F(SciFiHelicalPRTrackTestDS, test_helix_constructor) { int tracker = 0; int num_points = 3; int charge = -1; double x0 = 1.0; double y0 = 2.0; double z0 = 1100.0; double phi0 = 4.0; double dsdz = 0.02; double R = 15.0; double chisq = 30.0; double chisq_dof = 10.0; SimpleHelix hlx; hlx.set_R(R); hlx.set_Phi_0(phi0); hlx.set_dsdz(dsdz); hlx.set_chisq(chisq); hlx.set_chisq_dof(chisq_dof); ThreeVector pos(x0, y0, z0); SciFiHelicalPRTrack prtrack(tracker, num_points, charge, pos, hlx); unsigned int size = 0; EXPECT_EQ(prtrack.get_x0(), x0); EXPECT_EQ(prtrack.get_y0(), y0); EXPECT_EQ(prtrack.get_z0(), z0); EXPECT_EQ(prtrack.get_phi0(), phi0); EXPECT_EQ(prtrack.get_psi0(), -1); EXPECT_EQ(prtrack.get_dsdz(), dsdz); EXPECT_EQ(prtrack.get_R(), R); EXPECT_EQ(prtrack.get_chisq(), chisq); EXPECT_EQ(prtrack.get_chisq_dof(), chisq_dof); EXPECT_EQ(prtrack.get_line_sz_chisq(), -1); EXPECT_EQ(prtrack.get_circle_x0(), -1); EXPECT_EQ(prtrack.get_circle_y0(), -1); EXPECT_EQ(prtrack.get_circle_chisq(), -1); EXPECT_EQ(prtrack.get_spacepoints().size(), size); EXPECT_EQ(prtrack.get_tracker(), tracker); EXPECT_EQ(prtrack.get_num_points(), num_points); EXPECT_EQ(prtrack.get_charge(), charge); } TEST_F(SciFiHelicalPRTrackTestDS, test_assignment_operator) { int tracker = 0; int num_points = 3; int charge = -1; double x0 = 1.0; double y0 = 2.0; double z0 = 1100.0; double phi0 = 4.0; double psi0 = 2.4; double dsdz = 0.02; double R = 15.0; double chisq = 30.0; double chisq_dof = 10.0; double line_sz_chisq = 5.0; double circle_x0 = 6.0; double circle_y0 = 7.0; double circle_chisq = 8.0; SciFiHelicalPRTrack trk1(tracker, num_points, charge, x0, y0, z0, phi0, psi0, dsdz, R, chisq); trk1.set_chisq_dof(chisq_dof); trk1.set_line_sz_chisq(line_sz_chisq); trk1.set_circle_x0(circle_x0); trk1.set_circle_y0(circle_y0); trk1.set_circle_chisq(circle_chisq); SciFiSpacePoint *spoint = new SciFiSpacePoint(); spoint->set_tracker(tracker); SciFiSpacePointPArray spoints; spoints.push_back(spoint); trk1.set_spacepoints(spoints); SciFiHelicalPRTrack trk2; trk2 = trk1; EXPECT_EQ(trk2.get_x0(), x0); EXPECT_EQ(trk2.get_y0(), y0); EXPECT_EQ(trk2.get_z0(), z0); EXPECT_EQ(trk2.get_phi0(), phi0); EXPECT_EQ(trk2.get_psi0(), psi0); EXPECT_EQ(trk2.get_dsdz(), dsdz); EXPECT_EQ(trk2.get_R(), R); EXPECT_EQ(trk2.get_chisq(), chisq); EXPECT_EQ(trk2.get_chisq_dof(), chisq_dof); EXPECT_EQ(trk2.get_line_sz_chisq(), line_sz_chisq); EXPECT_EQ(trk2.get_circle_x0(), circle_x0); EXPECT_EQ(trk2.get_circle_y0(), circle_y0); EXPECT_EQ(trk2.get_circle_chisq(), circle_chisq); EXPECT_EQ(trk2.get_tracker(), tracker); EXPECT_EQ(trk2.get_num_points(), num_points); EXPECT_EQ(trk2.get_charge(), charge); EXPECT_EQ(trk2.get_spacepoints()[0]->get_tracker(), tracker); } TEST_F(SciFiHelicalPRTrackTestDS, test_setters_getters) { int tracker = 0; int num_points = 3; int charge = -1; double x0 = 1.0; double y0 = 2.0; double z0 = 1100.0; double phi0 = 4.0; double psi0 = 2.4; double dsdz = 0.02; double R = 15.0; double chisq = 30.0; double chisq_dof = 10.0; double line_sz_chisq = 5.0; double circle_x0 = 6.0; double circle_y0 = 7.0; double circle_chisq = 8.0; SciFiSpacePoint *spoint = new SciFiSpacePoint(); spoint->set_tracker(tracker); SciFiSpacePointPArray spoints; spoints.push_back(spoint); SciFiHelicalPRTrack prtrack; prtrack.set_x0(x0); prtrack.set_y0(y0); prtrack.set_z0(z0); prtrack.set_phi0(phi0); prtrack.set_psi0(psi0); prtrack.set_dsdz(dsdz); prtrack.set_R(R); prtrack.set_chisq(chisq); prtrack.set_chisq_dof(chisq_dof); prtrack.set_line_sz_chisq(line_sz_chisq); prtrack.set_circle_x0(circle_x0); prtrack.set_circle_y0(circle_y0); prtrack.set_circle_chisq(circle_chisq); prtrack.set_tracker(tracker); prtrack.set_num_points(num_points); prtrack.set_charge(-1); prtrack.set_spacepoints(spoints); EXPECT_EQ(prtrack.get_x0(), x0); EXPECT_EQ(prtrack.get_y0(), y0); EXPECT_EQ(prtrack.get_z0(), z0); EXPECT_EQ(prtrack.get_phi0(), phi0); EXPECT_EQ(prtrack.get_psi0(), psi0); EXPECT_EQ(prtrack.get_dsdz(), dsdz); EXPECT_EQ(prtrack.get_R(), R); EXPECT_EQ(prtrack.get_chisq(), chisq); EXPECT_EQ(prtrack.get_chisq_dof(), chisq_dof); EXPECT_EQ(prtrack.get_line_sz_chisq(), line_sz_chisq); EXPECT_EQ(prtrack.get_circle_x0(), circle_x0); EXPECT_EQ(prtrack.get_circle_y0(), circle_y0); EXPECT_EQ(prtrack.get_circle_chisq(), circle_chisq); EXPECT_EQ(prtrack.get_tracker(), tracker); EXPECT_EQ(prtrack.get_num_points(), num_points); EXPECT_EQ(prtrack.get_charge(), charge); EXPECT_EQ(prtrack.get_spacepoints()[0]->get_tracker(), tracker); } } // ~namespace MAUS