// TrackMatch_t.cpp #include "TrackMatch.h" #include #include #include "trfbase/MCTrack.h" #include "trfbase/SurfTest.h" #include "trfbase/TrackVector.h" #include "trfbase/ETrack.h" using std::cout; using std::cerr; using std::endl; using std::string; using namespace trf; //********************************************************************** int main( ) { string component = "TrackMatch"; string ok_prefix = component + " (I): "; string error_prefix = component + " test (E): "; cout << ok_prefix << "---------- Testing component " + component + ". ----------" << endl; // Make sure assert is enabled. bool assert_flag = false; assert ( ( assert_flag = true, assert_flag ) ); if ( ! assert_flag ) { cerr << "Assert is disabled" << endl; return 1; } //******************************************************************** cout << ok_prefix << "Build some MC tracks." << endl; MCTrackList mctracks; SurfacePtr psrf( new SurfTest(50.0) ); TrackVector vec; vec(0) = 1.0; vec(1) = 20.0; vec(2) = 0.3; vec(3) = 0.4; vec(4) = 0.005; mctracks.push_back( MCTrackPtr(new MCTrack(psrf,vec)) ); MCTrackPtr pmc1 = mctracks.back(); vec(0) = 2.0; mctracks.push_back( MCTrackPtr(new MCTrack(psrf,vec)) ); MCTrackPtr pmc2 = mctracks.back(); vec(0) = 3.0; mctracks.push_back( MCTrackPtr(new MCTrack(psrf,vec)) ); MCTrackPtr pmc3 = mctracks.back(); //******************************************************************** cout << ok_prefix << "Build some reco tracks." << endl; RTrackList rtracks; TrackError err; err(0,0) = 0.01; err(1,1) = 1.0; err(2,2) = 0.01; err(3,3) = 0.01; err(4,4) = 0.000001; vec(0) = 2.2; rtracks.push_back( RTrackPtr(new RTrack( ETrack(psrf,vec,err) )) ); RTrackPtr preco1 = rtracks.back(); vec(0) = 2.1; rtracks.push_back( RTrackPtr(new RTrack( ETrack(psrf,vec,err) )) ); RTrackPtr preco2 = rtracks.back(); vec(0) = 1.1; rtracks.push_back( RTrackPtr(new RTrack( ETrack(psrf,vec,err) )) ); RTrackPtr preco3 = rtracks.back(); vec(0) = 1.1; err(0,0) = 0.02; rtracks.push_back( RTrackPtr(new RTrack( ETrack(psrf,vec,err) )) ); RTrackPtr preco4 = rtracks.back(); //******************************************************************** cout << ok_prefix << "Match tracks." << endl; TrackMatch match( mctracks, rtracks ); cout << match << endl; assert( match.get_list1().size() == 3 ); assert( match.get_list2().size() == 4 ); assert( match.get_matched1().size() == 2 ); assert( match.get_matched1().size() == 2 ); assert( match.get_unmatched1().size() == 1 ); assert( match.get_unmatched2().size() == 2 ); MCTrackList mc_match = match.get_matched1(); RTrackList reco_match = match.get_matched2_in_order1(); MCTrackList mc_unmatch = match.get_unmatched1(); RTrackList reco_unmatch = match.get_unmatched2(); assert( mc_match.front() == pmc1 ); assert( mc_match.back() == pmc2 ); assert( mc_unmatch.front() == pmc3 ); assert( reco_match.front() == preco4 ); assert( reco_match.back() == preco2 ); assert( reco_unmatch.front() == preco1 ); assert( reco_unmatch.back() == preco3 ); //******************************************************************** cout << ok_prefix << "------------- All tests passed. -------------" << endl; return 0; //******************************************************************** }