/* 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 . * */ // C headers #include // Other headers #include "Config/MiceModule.hh" #include "src/common_cpp/DataStructure/SciFiEvent.hh" #include "src/common_cpp/DataStructure/SciFiSpacePoint.hh" #include "src/common_cpp/DataStructure/SciFiCluster.hh" #include "src/common_cpp/Recon/SciFi/SciFiSpacePointRec.hh" #include "gtest/gtest.h" namespace MAUS { class SciFiSpacePointRecTest : public ::testing::Test { protected: SciFiSpacePointRecTest() {} virtual ~SciFiSpacePointRecTest() {} virtual void SetUp() {} virtual void TearDown() {} }; TEST_F(SciFiSpacePointRecTest, test_process) { int tracker = 1; int station = 2; int plane = 0; int channel = 106; double npe = 3.2; double time = 12.2; ThreeVector direction(0.0, 0.0, 1.0); ThreeVector position(1.0, 2.0, 3.0); SciFiCluster *Cluster = new SciFiCluster(); Cluster->set_tracker(tracker); Cluster->set_station(station); Cluster->set_plane(plane); Cluster->set_channel(channel); Cluster->set_npe(npe); Cluster->set_time(time); Cluster->set_direction(direction); Cluster->set_position(position); SciFiEvent event; event.add_cluster(Cluster); SciFiSpacePointRec test; test.process(event); int size = event.spacepoints().size(); EXPECT_EQ(0., size); SciFiCluster *Cluster2 = new SciFiCluster(); Cluster2->set_tracker(tracker); Cluster2->set_station(station); Cluster2->set_plane(1); Cluster2->set_channel(channel); Cluster->set_npe(npe); Cluster2->set_time(time); Cluster2->set_direction(direction); Cluster2->set_position(position); } TEST_F(SciFiSpacePointRecTest, test_duplet_radius) { SciFiSpacePointRec a_test; SciFiCluster* c1 = new SciFiCluster(); SciFiCluster* c2 = new SciFiCluster(); ThreeVector pos1(5.78222, -11.6053, -751.132); ThreeVector pos2(-50.6352, -0.604, -749.828); ThreeVector dir1(-0.866025, -0.5, 0); ThreeVector dir2(0.866025, -0.5, 0); c1->set_direction(dir1); c2->set_direction(dir2); c1->set_position(pos1); c2->set_position(pos2); bool test_1 = a_test.duplet_within_radius(c1, c2); EXPECT_TRUE(test_1); ThreeVector pos3(300.0, -11.6053, -751.132); ThreeVector pos4(300.0, -0.604, -749.828); c1->set_direction(pos3); c2->set_direction(pos4); bool test_2 = a_test.duplet_within_radius(c1, c2); EXPECT_FALSE(test_2); } TEST_F(SciFiSpacePointRecTest, test_clusters_arent_used) { SciFiCluster* c1 = new SciFiCluster(); SciFiCluster* c2 = new SciFiCluster(); SciFiCluster* c3 = new SciFiCluster(); SciFiSpacePointRec a_test; bool expect_true_triplets = a_test.clusters_are_not_used(c1, c2, c3); bool expect_true_duplets = a_test.clusters_are_not_used(c1, c2); EXPECT_TRUE(expect_true_triplets); EXPECT_TRUE(expect_true_duplets); c1->set_used(true); bool expect_false_triplets = a_test.clusters_are_not_used(c1, c2, c3); bool expect_false_duplets = a_test.clusters_are_not_used(c1, c2); EXPECT_FALSE(expect_false_triplets); EXPECT_FALSE(expect_false_duplets); } TEST_F(SciFiSpacePointRecTest, test_kuno_test) { SciFiCluster* c1 = new SciFiCluster(); SciFiCluster* c2 = new SciFiCluster(); SciFiCluster* c3 = new SciFiCluster(); c1->set_tracker(0); c2->set_tracker(0); c3->set_tracker(0); c1->set_station(1); c2->set_station(1); c3->set_station(1); c1->set_plane(0); c2->set_plane(1); c3->set_plane(2); c1->set_channel(106); c2->set_channel(106); c3->set_channel(106); SciFiSpacePointRec a_test; bool expect_true = a_test.kuno_accepts(c1, c2, c3); EXPECT_TRUE(expect_true); c1->set_station(4); bool expect_false = a_test.kuno_accepts(c1, c2, c3); EXPECT_FALSE(expect_false); } TEST_F(SciFiSpacePointRecTest, test_make_cluster_container) { SciFiEvent event; // Create 12 clusters belonging to dif planes... int tracker = 0; int station = 1; int plane = 0; for ( int i = 0; i < 60; ++i ) { SciFiCluster* cluster = new SciFiCluster(); cluster->set_tracker(tracker); cluster->set_station(station); cluster->set_plane(plane); event.add_cluster(cluster); tracker < 1 ? tracker += 1 : 0; station < 5 ? station += 1 : 1; plane < 2 ? plane += 1 : 0; } std::vector clusters[2][6][3]; SciFiSpacePointRec a_test; a_test.make_cluster_container(event, clusters); for ( int tracker = 0; tracker < 1; ++tracker ) { for ( int station = 1; station < 6; ++station ) { for ( int plane = 0; plane < 3; ++plane ) { int numb_clusters = clusters[tracker][station][plane].size(); for ( int clust_i = 0; clust_i < numb_clusters; ++clust_i ) { SciFiCluster* cluster = (clusters[tracker][station][plane])[clust_i]; int cluster_tracker = cluster->get_tracker(); int cluster_station = cluster->get_station(); int cluster_plane = cluster->get_plane(); EXPECT_EQ(tracker, cluster_tracker); EXPECT_EQ(station, cluster_station); EXPECT_EQ(plane, cluster_plane); } } } } } /* TEST_F(SciFiSpacePointRecTest, test_builds) { SciFiCluster* c1 = new SciFiCluster(); SciFiCluster* c2 = new SciFiCluster(); SciFiCluster* c3 = new SciFiCluster(); c1->set_spill(1); c1->set_event(1); c1->set_npe(3.); c2->set_npe(3.); c3->set_npe(3.); SciFiSpacePoint* triplet(c1, c2, c3); SciFiSpacePointRec a_test; a_test.build_triplet(triplet); _tracker = clust1->get_tracker(); _station = clust1->get_station(); } */ } // ~namespace MAUS