96{
   99  
  103 
  104  try {
  105 
  106    JParser<> zap(
"Program to compare toa data.");
 
  107    
  108    zap[
'f'] = 
make_field(inputFile,    
"two outputs of JToA");
 
  111 
  112    zap(argc, argv);
  113  }
  114  catch(const exception &error) {
  115    FATAL(error.what() << endl);
 
  116  }
  117 
  118  if (inputFile.size() != 2u) {
  119    FATAL(
"Wrong number of input files " << inputFile.size() << endl); 
 
  120  }
  121 
  122  const size_t width = max(inputFile[0].size(), inputFile[1].size());
  123 
  125 
  126  for (int i = 0; i != 2; ++i) {
  127    
  129      buffer[i].push_back(*in.next());
  130    }
  131 
  132    sort(buffer[i].begin(), buffer[i].end(), compare);
  133  }
  134  
  135  int count[] = { 0, 0 };
  136  
  137  for (vector<JToA>::const_iterator
  138         p0 = buffer[0].begin(),
  139         p1 = buffer[1].begin(); p0 != buffer[0].end() && 
p1 != buffer[1].end(); ) {
 
  140 
  141    for ( ; p0 != buffer[0].end() && 
p1 != buffer[1].end() && compare(*p0,*
p1); ++p0, ++count[1]) {
 
  142      DEBUG(
">> " << setw(width) << left << inputFile[0] << right << 
' ' << *p0 << endl);
 
  143    }
  144 
  145    for ( ; p0 != buffer[0].end() && 
p1 != buffer[1].end() && compare(*
p1,*p0); ++
p1, ++count[1]) {
 
  146      DEBUG(
"<< " << setw(width) << left << inputFile[1] << right << 
' ' << *
p1 << endl);
 
  147    }
  148 
  149    if (p0 != buffer[0].end() && 
p1 != buffer[1].end() && !compare(*p0,*
p1) && !compare(*
p1,*p0)) {
 
  150 
  151      ++count[0];
  152 
  153      DEBUG(setw(width) << left << inputFile[0] << right << 
' ' << *p0 << 
" \\" << endl);
 
  154      DEBUG(setw(width) << left << inputFile[1] << right << 
' ' << *
p1 << 
" / " << endl);
 
  155 
  156      ++p0;
  158    }
  159  }
  160 
  161  STATUS(
"Number of differences / events: " << count[1] << 
" / " << count[0] << endl);
 
  162 
  163  if (buffer[0].size() != buffer[1].size()) {
  164    FATAL(
"Different size " << buffer[0].size() << 
' ' << buffer[1].size() << endl);
 
  165  }
  166    
  167  if (count[1] != 0) {
  168    FATAL(
"Number of differences " << count[1] << endl);
 
  169  }
  170}
#define DEBUG(A)
Message macros.
 
#define make_field(A,...)
macro to convert parameter to JParserTemplateElement object
 
Utility class to parse command line options.
 
Object reading from a list of files.
 
virtual bool hasNext() override
Check availability of next element.
 
This name space includes all other name spaces (except KM3NETDAQ, KM3NET and ANTARES).
 
Auxiliary class for defining the range of iterations of objects.
 
static counter_type max()
Get maximum counter value.