204 JParser<> zap(
"Program to compare acoustics event data.");
206 zap[
'f'] =
make_field(inputFile,
"two outputs of JAcousticsEventBuilder[.sh]");
207 zap[
'n'] =
make_field(numberOfEvents) = JLimit::max();
212 catch(
const exception &error) {
213 FATAL(error.what() << endl);
216 if (inputFile.size() != 2
u) {
217 FATAL(
"Wrong number of input files " << inputFile.size() << endl);
220 const size_t width = max(inputFile[0].size(), inputFile[1].size());
225 for (
int i = 0; i != 2; ++i) {
228 buffer[i].push_back(*
in.next());
234 for (
int i = 0; i != 2; ++i) {
236 sort(buffer[i].begin(), buffer[i].end());
244 int count[] = { 0, 0 };
247 p0 = buffer[0].begin(),
248 p1 = buffer[1].begin(); p0 != buffer[0].end() &&
p1 != buffer[1].end(); ) {
250 for ( ; p0 != buffer[0].end() &&
p1 != buffer[1].end() && *p0 < *
p1; ++p0, ++count[1]) {
251 print(cout, inputFile[0],
distance(buffer[0].cbegin(),p0), *p0,
">>",
"");
254 for ( ; p0 != buffer[0].end() && p1 != buffer[1].end() && *p1 < *p0; ++
p1, ++count[1]) {
255 print(cout, inputFile[1],
distance(buffer[1].cbegin(),p1), *p1,
"<<",
"");
258 if (p0 != buffer[0].end() && p1 != buffer[1].end()) {
264 print(cout, inputFile[0],
distance(buffer[0].cbegin(),p0), *p0,
"",
"\\");
265 print(cout, inputFile[1],
distance(buffer[1].cbegin(),p1), *p1,
"",
"/ ");
271 if (p0->getOID() == p1->getOID() &&
272 p0->getCounter() == p1->getCounter() &&
273 p0->getID() == p1->getID()) {
275 print(cout, inputFile[0],
distance(buffer[0].cbegin(),p0), *p0,
"",
"");
276 print(cout, inputFile[1],
distance(buffer[1].cbegin(),p1), *p1,
"",
"");
278 JEvent::const_iterator i0 = p0->begin();
279 JEvent::const_iterator i1 = p1->begin();
281 for ( ; i0 != p0->end() && i1 != p1->end(); ++i0, ++i1) {
283 print(cout, *i0,
">>",
"");
284 print(cout, *i1,
"<<",
"");
288 for ( ; i0 != p0->end(); ++i0) {
289 print(cout, *i0,
">>",
"");
292 for ( ; i1 != p1->end(); ++i1) {
293 print(cout, *i1,
"<<",
"");
298 print(cout, inputFile[0],
distance(buffer[0].cbegin(),p0), *p0,
">>",
"");
299 print(cout, inputFile[1],
distance(buffer[1].cbegin(),p1), *p1,
"<<",
"");
303 if (*p0 < *p1 || *p1 < *p0) {
313 STATUS(
"Number of differences / events: " << count[1] <<
" / " << count[0] << endl);
315 if (buffer[0].size() != buffer[1].size()) {
316 FATAL(
"Different size " << buffer[0].size() <<
' ' << buffer[1].size() << endl);
320 FATAL(
"Number of differences " << count[1] << endl);
Utility class to parse command line options.
JComparator< JResult_t T::*, JComparison::lt > make_comparator(JResult_t T::*member)
Helper method to create comparator between values of data member.
std::vector< T >::difference_type distance(typename std::vector< T >::const_iterator first, typename PhysicsEvent::const_iterator< T > second)
Specialisation of STL distance.
Auxiliary class for defining the range of iterations of objects.
#define make_field(A,...)
macro to convert parameter to JParserTemplateElement object
static struct JACOUSTICS::@4 compare
Auxiliary data structure to sort transmissions.
Object reading from a list of files.
then fatal Wrong number of arguments fi set_variable DETECTOR $argv[1] set_variable INPUT_FILE $argv[2] eval JPrintDetector a $DETECTOR O IDENTIFIER eval JPrintDetector a $DETECTOR O SUMMARY JAcoustics sh $DETECTOR_ID source JAcousticsToolkit sh CHECK_EXIT_CODE typeset A EMITTERS get_tripods $WORKDIR tripod txt EMITTERS get_transmitters $WORKDIR transmitter txt EMITTERS for EMITTER in