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;
 
  117 int main(
int argc, 
char **argv)
 
  128     JParser<> zap(
"Program to compare toa data.");
 
  130     zap[
'f'] = 
make_field(inputFile,    
"two outputs of JToA");
 
  131     zap[
'n'] = 
make_field(numberOfEvents)                                    = JLimit::max();    
 
  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 };
 
  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).
 
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.