/* 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 . * */ /** @class TrackerData * * A class to hold the data for one of the tracker detectors from multiple events, * in a format (vectors of doubles, ints, etc) which can be easily plotted using ROOT via * the SciFiTrackerDataManager class. * */ #ifndef _SRC_COMMON_CPP_RECON_SCIFI_TRACKERDATA_ #define _SRC_COMMON_CPP_RECON_SCIFI_TRACKERDATA_ // C++ headers #include // ROOT headers #include "TArc.h" #include "TF1.h" #include "gtest/gtest_prod.h" // MAUS headers namespace MAUS { class TrackerData { public: /** Make various classes a friend, far easier than writing all the getters and setters */ friend class TrackerDataManager; friend class ReduceCppPatternRecognition; friend class TrackerDataPlotterBase; friend class TrackerDataPlotterXYZ; friend class TrackerDataPlotterSZ; friend class TrackerDataPlotterTracks; friend class TrackerDataPlotterSpoints; friend class TrackerDataPlotterInfoBox; // Macros to allow friendship with the gtests FRIEND_TEST(TrackerDataTest, TestConstructor); FRIEND_TEST(TrackerDataTest, TestClear); FRIEND_TEST(TrackerDataManagerTest, TestProcess); FRIEND_TEST(TrackerDataManagerTest, TestProcessDigits); FRIEND_TEST(TrackerDataManagerTest, TestProcessClusters); FRIEND_TEST(TrackerDataManagerTest, TestProcessSpoints); FRIEND_TEST(TrackerDataManagerTest, TestProcessStrks); FRIEND_TEST(TrackerDataManagerTest, TestProcessHtrks); FRIEND_TEST(TrackerDataPlotterInfoBoxTest, TestBrackets); FRIEND_TEST(TrackerDataPlotterSpointsTest, TestBrackets); /** Constructor */ TrackerData(); /** Destructor */ ~TrackerData(); /** Clear all data, and set all vectors to zero size */ void clear(); protected: int _spill_num; int _trker_num; int _num_events; int _num_digits; int _num_clusters; int _num_spoints; int _num_seeds; int _num_stracks_5pt; int _num_stracks_4pt; int _num_stracks_3pt; int _num_htracks_5pt; int _num_htracks_4pt; int _num_htracks_3pt; int _num_pos_tracks; int _num_neg_tracks; // Spacepoint data std::vector _spoints_x; std::vector _spoints_y; std::vector _spoints_z; // Data associated specifically with spacepoints associated with tracks // (2D vectors as have multiple tracks in multiple events) std::vector< std::vector > _seeds_x; std::vector< std::vector > _seeds_y; std::vector< std::vector > _seeds_z; std::vector< std::vector > _seeds_phi; std::vector< std::vector > _seeds_s; // Vectors of the functions representing the helical tracks in various projections std::vector _trks_str_xz; std::vector _trks_str_yz; std::vector _trks_xy; std::vector _trks_xz; std::vector _trks_yz; std::vector _trks_sz; }; } // ~namespace MAUS #endif