Shows differences between to event-formatted files at the ROB level.
43 {
45
46 if ( argc != 3 )
47 {
48 std::cerr << "usage: " << argv[0] << " <file1> <file2>" << std::endl;
49 std::cerr << "OBS: The event order should be the same on both files" << std::endl;
50 std::exit( 1 );
51 }
52
53
54 size_t event_counter = 0;
55 std::fstream in1( argv[1], std::ios::in | std::ios::binary );
56 std::fstream in2( argv[2], std::ios::in | std::ios::binary );
59
62
63 while ( true )
64 {
67 break;
68 ++event_counter;
69 try
70 {
73 fe1.check_tree();
74 fe2.check_tree();
77 if ( s1 != s2 )
78 {
79 std::cerr << "The number of ROB's of event " << event_counter
80 << " is different in file `" << argv[1] << "' (" << s1 << ") and in file `"
81 << argv[2] << "' (" << s2 << "). Skipping comparison." << std::endl;
82 continue;
83 }
84
87 bool mark = false;
88 for ( size_t i = 0; i < s1; ++i )
89 {
92 if ( rob1.rod_source_id() != rob2.rod_source_id() )
93 {
94 std::cerr << "! ROB[" << i << "]" << std::endl
95 <<
"- " <<
HEX( rob1.rod_source_id() ) << std::endl
96 <<
"+ " <<
HEX( rob2.rod_source_id() ) << std::endl;
97 mark = true;
98 }
99 }
100 if ( mark ) { std::cerr << "Event #" << fe1.lvl1_id() << " differ." << std::endl; }
102 {
103 std::cerr << std::endl <<
"Uncaught eformat issue: " << ex.
what() << std::endl;
104 std::cout << "Trying to continue..." << std::endl;
105 continue;
107 {
108 std::cerr << std::endl <<
"Uncaught ERS issue: " << ex.
what() << std::endl;
109 delete[] event1;
110 delete[] event2;
111 std::exit( 1 );
112 } catch ( std::exception& ex )
113 {
114 std::cerr << std::endl << "Uncaught std exception: " << ex.what() << std::endl;
115 delete[] event1;
116 delete[] event2;
117 std::exit( 1 );
118 } catch ( ... )
119 {
120 std::cerr << std::endl << "Uncaught unknown exception" << std::endl;
121 delete[] event1;
122 delete[] event2;
123 std::exit( 1 );
124 }
125 }
126
127 std::cerr << "In the absence of remarks, files do NOT differ." << std::endl;
128
129 delete[] event1;
130 delete[] event2;
131 return 0;
132}
const size_t MAX_EVENT_SIZE
const char * what() const
Human description message.
int cmp_source_id(const uint32_t *p1, const uint32_t *p2)