28  inline bool compare(
const JToA& first, 
const JToA& second)
 
   32      if (first.
RUN == second.
RUN) {
 
   79        return first.
RUN < second.
RUN;
 
  100    out << setw(8)     << 
object.RUN           << 
' ' 
  101        << setw(8)     << 
object.DOMID         << 
' ' 
  102        << setw(2)     << 
object.WAVEFORMID    << 
' ' 
  103        << 
FIXED(15,1) << (
static_cast<double>(
object.SECONDS) + 
static_cast<double>(
object.TICKS)*16E-9)  << 
' ' 
  104        << 
FIXED( 9,6) << 
object.TOA_NS         << 
' ' 
  105        << 
FIXED( 9,3) << 
object.QUALITYFACTOR;
 
  128    JParser<> zap(
"Program to compare toa data.");
 
  130    zap[
'f'] = 
make_field(inputFile,    
"two outputs of JToA");
 
  136  catch(
const exception &error) {
 
  137    FATAL(error.what() << endl);
 
  140  if (inputFile.size() != 2u) {
 
  141    FATAL(
"Wrong number of input files " << inputFile.size() << endl); 
 
  144  const size_t width = max(inputFile[0].size(), inputFile[1].size());
 
  148  for (
int i = 0; i != 2; ++i) {
 
  151      buffer[i].push_back(*in.next());
 
  154    sort(buffer[i].begin(), buffer[i].end(), compare);
 
  157  int count[] = { 0, 0 };
 
  159  for (vector<JToA>::const_iterator
 
  160         p0 = buffer[0].begin(),
 
  161         p1 = buffer[1].begin(); p0 != buffer[0].end() && 
p1 != buffer[1].end(); ) {
 
  163    for ( ; p0 != buffer[0].end() && 
p1 != buffer[1].end() && compare(*p0,*
p1); ++p0, ++count[1]) {
 
  164      DEBUG(
">> " << setw(width) << left << inputFile[0] << right << 
' ' << *p0 << endl);
 
  167    for ( ; p0 != buffer[0].end() && 
p1 != buffer[1].end() && compare(*
p1,*p0); ++
p1, ++count[1]) {
 
  168      DEBUG(
"<< " << setw(width) << left << inputFile[1] << right << 
' ' << *
p1 << endl);
 
  171    if (p0 != buffer[0].end() && 
p1 != buffer[1].end() && !compare(*p0,*
p1) && !compare(*
p1,*p0)) {
 
  175      DEBUG(setw(width) << left << inputFile[0] << right << 
' ' << *p0 << 
" \\" << endl);
 
  176      DEBUG(setw(width) << left << inputFile[1] << right << 
' ' << *
p1 << 
" / " << endl);
 
  183  STATUS(
"Number of differences / events: " << count[1] << 
" / " << count[0] << endl);
 
  185  if (buffer[0].size() != buffer[1].size()) {
 
  186    FATAL(
"Different size " << buffer[0].size() << 
' ' << buffer[1].size() << endl);
 
  190    FATAL(
"Number of differences " << count[1] << endl);
 
 
ROOT TTree parameter settings.
 
int main(int argc, char **argv)
 
General purpose messaging.
 
#define DEBUG(A)
Message macros.
 
Utility class to parse command line options.
 
#define make_field(A,...)
macro to convert parameter to JParserTemplateElement object
 
Scanning of objects from a single file according a format that follows from the extension of each fil...
 
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).
 
JWriter & operator<<(JWriter &out, const JDAQChronometer &chronometer)
Write DAQ chronometer to output.
 
Auxiliary data structure for floating point format specification.
 
Time-of-arrival data from acoustic piezo sensor or hydrophone.
 
uint32_t SECONDS
Time of Arrival, in ns (relative to Unix epoch, 1 January 1970 00:00:00 UTC)
 
uint32_t DOMID
DAQ run number.
 
int64_t TOA_NS
Unique ID of the waveform that best described the signal around TOA_NS.
 
uint32_t QUALITYFACTOR
The ticks (16ns) part of the DAQ frame timestamp.
 
uint32_t QUALITYNORMALISATION
A measure of how good the waveform match was to the signal.
 
int32_t WAVEFORMID
DOM unique identifeir.
 
int32_t RUN
detector identifier
 
uint32_t TICKS
The seconds part of the DAQ frame timestamp.
 
Auxiliary class for defining the range of iterations of objects.
 
static counter_type max()
Get maximum counter value.