/* 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/SciFiCluster.hh" #include "gtest/gtest.h" namespace MAUS { class SciFiSpacePointTestDS : public ::testing::Test { protected: SciFiSpacePointTestDS() {} virtual ~SciFiSpacePointTestDS() {} virtual void SetUp() {} virtual void TearDown() {} }; TEST_F(SciFiSpacePointTestDS, test_getters_setters) { bool used = true; int spill = 1; int event = 2; int tracker = 1; int station = 3; double npe = 4.0; double time = 5.0; double chi2 = 6.0; double x = 7.0; double y = 8.0; double z = 9.0; ThreeVector pos(x, y, z); int plane1 = 1; int plane2 = 2; SciFiCluster * c1 = new SciFiCluster(); c1->set_plane(plane1); SciFiCluster * c2 = new SciFiCluster(); c2->set_plane(plane2); std::vector cvec; cvec.push_back(c1); cvec.push_back(c2); unsigned int size = 2; std::string type = "triplet"; SciFiSpacePoint sp; sp.set_used(used); sp.set_spill(spill); sp.set_event(event); sp.set_tracker(tracker); sp.set_station(station); sp.set_npe(npe); sp.set_time(time); sp.set_chi2(chi2); sp.set_position(pos); sp.set_channels_pointers(cvec); sp.set_type(type); EXPECT_EQ(used, sp.get_used()); EXPECT_EQ(spill, sp.get_spill()); EXPECT_EQ(event, sp.get_event()); EXPECT_EQ(tracker, sp.get_tracker()); EXPECT_EQ(station, sp.get_station()); EXPECT_EQ(npe, sp.get_npe()); EXPECT_EQ(time, sp.get_time()); EXPECT_EQ(chi2, sp.get_chi2()); EXPECT_EQ(x, sp.get_position().x()); EXPECT_EQ(y, sp.get_position().y()); EXPECT_EQ(z, sp.get_position().z()); ASSERT_EQ(size, sp.get_channels()->GetLast() + 1); EXPECT_EQ(plane1, sp.get_channels_pointers()[0]->get_plane()); EXPECT_EQ(plane2, sp.get_channels_pointers()[1]->get_plane()); EXPECT_EQ(type, sp.get_type()); } TEST_F(SciFiSpacePointTestDS, test_default_constructor) { unsigned int size = 0; SciFiSpacePoint sp; EXPECT_FALSE(sp.get_used()); EXPECT_EQ(0, sp.get_spill()); EXPECT_EQ(0, sp.get_event()); EXPECT_EQ(0, sp.get_tracker()); EXPECT_EQ(0, sp.get_station()); EXPECT_EQ(0.0, sp.get_npe()); EXPECT_EQ(0.0, sp.get_time()); EXPECT_EQ(0.0, sp.get_chi2()); EXPECT_EQ(0.0, sp.get_position().x()); EXPECT_EQ(0.0, sp.get_position().y()); EXPECT_EQ(0.0, sp.get_position().z()); EXPECT_EQ(size, sp.get_channels()->GetLast() + 1); EXPECT_EQ("", sp.get_type()); } TEST_F(SciFiSpacePointTestDS, test_copy_constructor) { bool used = true; int spill = 1; int event = 2; int tracker = 1; int station = 3; double npe = 4.0; double time = 5.0; double chi2 = 6.0; double x = 7.0; double y = 8.0; double z = 9.0; ThreeVector pos(x, y, z); int plane1 = 1; int plane2 = 2; SciFiCluster * c1 = new SciFiCluster(); c1->set_plane(plane1); SciFiCluster * c2 = new SciFiCluster(); c2->set_plane(plane2); std::vector cvec; cvec.push_back(c1); cvec.push_back(c2); unsigned int size = 2; std::string type = "triplet"; SciFiSpacePoint * sp1 = new SciFiSpacePoint(); sp1->set_used(used); sp1->set_spill(spill); sp1->set_event(event); sp1->set_tracker(tracker); sp1->set_station(station); sp1->set_npe(npe); sp1->set_time(time); sp1->set_chi2(chi2); sp1->set_position(pos); sp1->set_channels_pointers(cvec); sp1->set_type(type); SciFiSpacePoint * sp2 = new SciFiSpacePoint(*sp1); delete sp1; EXPECT_EQ(used, sp2->get_used()); EXPECT_EQ(spill, sp2->get_spill()); EXPECT_EQ(event, sp2->get_event()); EXPECT_EQ(tracker, sp2->get_tracker()); EXPECT_EQ(station, sp2->get_station()); EXPECT_EQ(npe, sp2->get_npe()); EXPECT_EQ(time, sp2->get_time()); EXPECT_EQ(chi2, sp2->get_chi2()); EXPECT_EQ(x, sp2->get_position().x()); EXPECT_EQ(y, sp2->get_position().y()); EXPECT_EQ(z, sp2->get_position().z()); ASSERT_EQ(size, sp2->get_channels()->GetLast() + 1); EXPECT_EQ(plane1, sp2->get_channels_pointers()[0]->get_plane()); EXPECT_EQ(plane2, sp2->get_channels_pointers()[1]->get_plane()); EXPECT_EQ(type, sp2->get_type()); } TEST_F(SciFiSpacePointTestDS, test_two_cluster_constructor) { int spill = 1; int event = 2; int tracker = 1; int station = 3; double npe1 = 4.0; double npe2 = 8.0; SciFiCluster * c1 = new SciFiCluster(); c1->set_spill(spill); c1->set_event(event); c1->set_tracker(tracker); c1->set_station(station); c1->set_npe(npe1); SciFiCluster * c2 = new SciFiCluster(); c2->set_spill(spill); c2->set_event(event); c2->set_tracker(tracker); c2->set_station(station); c2->set_npe(npe2); unsigned int size = 2; SciFiSpacePoint sp(c1, c2); EXPECT_FALSE(sp.get_used()); EXPECT_EQ(spill, sp.get_spill()); EXPECT_EQ(event, sp.get_event()); EXPECT_EQ(tracker, sp.get_tracker()); EXPECT_EQ(station, sp.get_station()); EXPECT_EQ(npe1+npe2, sp.get_npe()); EXPECT_EQ(0.0, sp.get_time()); EXPECT_EQ(0.0, sp.get_position().x()); EXPECT_EQ(0.0, sp.get_position().y()); EXPECT_EQ(0.0, sp.get_position().z()); ASSERT_EQ(size, sp.get_channels()->GetLast() + 1); EXPECT_EQ(true, sp.get_channels_pointers()[0]->is_used()); EXPECT_EQ(true, sp.get_channels_pointers()[1]->is_used()); EXPECT_EQ("duplet", sp.get_type()); delete c1; delete c2; } TEST_F(SciFiSpacePointTestDS, test_three_cluster_constructor) { int spill = 1; int event = 2; int tracker = 1; int station = 3; double npe1 = 4.0; double npe2 = 8.0; double npe3 = 2.0; SciFiCluster * c1 = new SciFiCluster(); c1->set_spill(spill); c1->set_event(event); c1->set_tracker(tracker); c1->set_station(station); c1->set_npe(npe1); SciFiCluster * c2 = new SciFiCluster(); c2->set_spill(spill); c2->set_event(event); c2->set_tracker(tracker); c2->set_station(station); c2->set_npe(npe2); SciFiCluster * c3 = new SciFiCluster(); c3->set_spill(spill); c3->set_event(event); c3->set_tracker(tracker); c3->set_station(station); c3->set_npe(npe3); unsigned int size = 3; SciFiSpacePoint sp(c1, c2, c3); EXPECT_FALSE(sp.get_used()); EXPECT_EQ(spill, sp.get_spill()); EXPECT_EQ(event, sp.get_event()); EXPECT_EQ(tracker, sp.get_tracker()); EXPECT_EQ(station, sp.get_station()); EXPECT_EQ(npe1+npe2+npe3, sp.get_npe()); EXPECT_EQ(0.0, sp.get_time()); EXPECT_EQ(0.0, sp.get_position().x()); EXPECT_EQ(0.0, sp.get_position().y()); EXPECT_EQ(0.0, sp.get_position().z()); ASSERT_EQ(size, sp.get_channels()->GetLast() + 1); EXPECT_EQ(true, sp.get_channels_pointers()[0]->is_used()); EXPECT_EQ(true, sp.get_channels_pointers()[1]->is_used()); EXPECT_EQ(true, sp.get_channels_pointers()[2]->is_used()); EXPECT_EQ("triplet", sp.get_type()); delete c1; delete c2; delete c3; } TEST_F(SciFiSpacePointTestDS, test_assignment_operator) { bool used = true; int spill = 1; int event = 2; int tracker = 1; int station = 3; double npe = 4.0; double time = 5.0; double chi2 = 6.0; double x = 7.0; double y = 8.0; double z = 9.0; ThreeVector pos(x, y, z); int plane1 = 1; int plane2 = 2; SciFiCluster * c1 = new SciFiCluster(); c1->set_plane(plane1); SciFiCluster * c2 = new SciFiCluster(); c2->set_plane(plane2); std::vector cvec; cvec.push_back(c1); cvec.push_back(c2); unsigned int size = 2; std::string type = "triplet"; SciFiSpacePoint * sp1 = new SciFiSpacePoint(); sp1->set_used(used); sp1->set_spill(spill); sp1->set_event(event); sp1->set_tracker(tracker); sp1->set_station(station); sp1->set_npe(npe); sp1->set_time(time); sp1->set_chi2(chi2); sp1->set_position(pos); sp1->set_channels_pointers(cvec); sp1->set_type(type); SciFiSpacePoint * sp2 = new SciFiSpacePoint(); *sp2 = *sp1; delete sp1; EXPECT_EQ(used, sp2->get_used()); EXPECT_EQ(spill, sp2->get_spill()); EXPECT_EQ(event, sp2->get_event()); EXPECT_EQ(tracker, sp2->get_tracker()); EXPECT_EQ(station, sp2->get_station()); EXPECT_EQ(npe, sp2->get_npe()); EXPECT_EQ(time, sp2->get_time()); EXPECT_EQ(chi2, sp2->get_chi2()); EXPECT_EQ(x, sp2->get_position().x()); EXPECT_EQ(y, sp2->get_position().y()); EXPECT_EQ(z, sp2->get_position().z()); ASSERT_EQ(size, sp2->get_channels()->GetLast() + 1); EXPECT_EQ(plane1, sp2->get_channels_pointers()[0]->get_plane()); EXPECT_EQ(plane2, sp2->get_channels_pointers()[1]->get_plane()); EXPECT_EQ(type, sp2->get_type()); } } // ~namespace MAUS