45       if (cta != ToA_t && cta != ToE_t) {
 
   53           if ((cta == ToA_t && first.
getToA() == second.
getToA()) ||
 
   67             if (cta == ToA_t) { 
return first.
getToA() < second.
getToA(); }
 
   68             if (cta == ToE_t) { 
return first.
getToE() < second.
getToE(); }
 
   92     inline bool operator()(
const JEvent& first, 
const JEvent& second)
 const 
   98           if (first.size() == second.size()) {
 
  100             for (JEvent::const_iterator
 
  102                    p1 = second.begin(); p0 != first.end() && 
p1 != second.end(); ++p0, ++
p1) {
 
  104               if ((*
this)(*p0, *
p1)) {
 
  113             return first.size() < second.size();
 
  154         out << prefix << (prefix == 
"" ? 
"" : 
" ")
 
  155             << setw(width)  << left << filename << right    << 
' ' 
  156             << 
"[" << 
FILL(6,
'0') << index << 
"]" << 
FILL() << 
' ' 
  159             << setw(2)      << evt.
getID()                  << 
' ' 
  160             << 
FIXED(12,6)  << evt. begin()->getToA()       << 
' ' 
  161             << 
FIXED(12,6)  << evt.rbegin()->getToA()
 
  162             << (postfix == 
"" ? 
"" :  
" ") << postfix       << endl;
 
  184         out << prefix << (prefix == 
"" ? 
"" : 
" ")
 
  185             << setw(8) << 
object.
getID()                     << 
' ' 
  186             << setw(8) << 
object.getRunNumber()              << 
' ' 
  187             << 
FIXED(13,7) << 
object.getToA()                << 
' ' 
  188             << 
FIXED(13,7) << 
object.getToE()                << 
' ' 
  189             << 
FIXED(8,0) << 
object.getQ() 
 
  190             << (postfix == 
"" ? 
"" :  
" ") << postfix        << endl;
 
  205   static inline bool toa(
const JEvent& first, 
const JEvent& second)
 
  207     return first.begin()->getToA() < second.begin()->getToA();
 
  218   static inline bool toe(
const JEvent& first, 
const JEvent& second)
 
  220     return first.begin()->getToE() < second.begin()->getToE();
 
  239 int main(
int argc, 
char **argv)
 
  251     JParser<> zap(
"Program to compare acoustics event data.");
 
  253     zap[
'f'] = 
make_field(inputFile,  
"two outputs of JAcousticsEventBuilder[.sh]");
 
  254     zap[
'n'] = 
make_field(numberOfEvents)                                    = JLimit::max();    
 
  255     zap[
'O'] = 
make_field(option,     Null_t << 
" -> nothing " << Sort_t << 
" -> sort")  = Null_t, Sort_t;
 
  256     zap[
'C'] = 
make_field(cta,        ToA_t  << 
" -> ToA "     << ToE_t  << 
" -> ToE")   = ToA_t,  ToE_t;
 
  261   catch(
const exception &error) {
 
  262     FATAL(error.what() << endl);
 
  265   if (inputFile.size() != 2
u) {
 
  266     FATAL(
"Wrong number of input files " << inputFile.size() << endl); 
 
  269   const size_t  width = max(inputFile[0].size(), inputFile[1].size());
 
  274   for (
int i = 0; 
i != 2; ++
i) {
 
  277       buffer[
i].push_back(*
in.next());
 
  281   if (option == Sort_t) {
 
  283     for (
int i = 0; 
i != 2; ++
i) {
 
  285       for (
JEvent& evt : buffer[
i]) {
 
  286         sort(evt.begin(), evt.end(), compare);
 
  289       if (cta == ToA_t) { sort(buffer[i].begin(), buffer[i].end(), toa); }
 
  290       if (cta == ToE_t) { sort(buffer[i].begin(), buffer[i].end(), toe); }
 
  293         sort(p->begin(), p->end(), compare);
 
  298   int count[] = { 0, 0 };
 
  301          p0 = buffer[0].begin(),
 
  302          p1 = buffer[1].begin(); p0 != buffer[0].end() && 
p1 != buffer[1].end(); ) {
 
  304     for ( ; p0 != buffer[0].end() && 
p1 != buffer[1].end() && ((cta == ToA_t && toa(*p0,*
p1)) || (cta == ToE_t && toe(*p0,*
p1))); ++p0, ++count[1]) {
 
  305       print(cout, inputFile[0], 
distance(buffer[0].cbegin(),p0), *p0, 
">>", 
"");
 
  308     for ( ; p0 != buffer[0].end() && 
p1 != buffer[1].end() && ((cta == ToA_t && toa(*
p1,*p0)) || (cta == ToE_t && toe(*
p1,*p0))); ++
p1, ++count[1]) {
 
  312     if (p0 != buffer[0].end() && 
p1 != buffer[1].end()) {
 
  314       if (!compare(*p0,*
p1) && !compare(*
p1,*p0)) {
 
  318         print(cout, inputFile[0], 
distance(buffer[0].cbegin(),p0), *p0, 
"", 
"\\");
 
  325         print(cout, inputFile[0], 
distance(buffer[0].cbegin(),p0), *p0, 
"", 
"*");
 
  328         if (p0->getOID()     == 
p1->getOID()     &&
 
  329             p0->getCounter() == 
p1->getCounter() &&
 
  330             p0->getID()      == 
p1->getID()) {
 
  332           JEvent::const_iterator i0 = p0->begin();
 
  333           JEvent::const_iterator i1 = 
p1->begin();
 
  335           while (i0 != p0->end() && i1 != 
p1->end()) {
 
  337             for ( ; i0 != p0->end() && i1 != 
p1->end() && compare(*i0,*i1); ++i0) {
 
  338               print(cout, *i0, 
">>", 
"");
 
  341             for ( ; i0 != p0->end() && i1 != 
p1->end() && compare(*i1,*i0); ++i1) {
 
  342               print(cout, *i1, 
"<<", 
"");
 
  345             if (i0 != p0->end() && i1 != 
p1->end()) {
 
  346               if (!compare(*i0, *i1) && !compare(*i1,*i0)) {
 
  353           for ( ; i0 != p0->end(); ++i0) {
 
  354             print(cout, *i0, 
">>", 
"");
 
  357           for ( ; i1 != 
p1->end(); ++i1) {
 
  358             print(cout, *i1, 
"<<", 
"");
 
  363           print(cout, inputFile[0], 
distance(buffer[0].cbegin(),p0), *p0, 
">>", 
"");
 
  368       if (toa(*p0,*
p1) || toa(*
p1,*p0)) {
 
  378   STATUS(
"Number of differences / events: " << count[1] << 
" / " << count[0] << endl);
 
  380   if (buffer[0].size() != buffer[1].size()) {
 
  381     FATAL(
"Different size " << buffer[0].size() << 
' ' << buffer[1].size() << endl);
 
  385     FATAL(
"Number of differences " << count[1] << endl);
 
Utility class to parse command line options. 
 
int main(int argc, char *argv[])
 
double getQ() const 
Get quality. 
 
int getRunNumber() const 
Get run number. 
 
std::vector< T >::difference_type distance(typename std::vector< T >::const_iterator first, typename PhysicsEvent::const_iterator< T > second)
Specialisation of STL distance. 
 
ROOT TTree parameter settings. 
 
int getCounter() const 
Get counter. 
 
#define THROW(JException_t, A)
Marco for throwing exception with std::ostream compatible message. 
 
Auxiliary data structure for floating point format specification. 
 
double getToE() const 
Get estimated time of emission. 
 
then echo The file $DIR KM3NeT_00000001_00000000 root already please rename or remove it first
 
Scanning of objects from a single file according a format that follows from the extension of each fil...
 
Auxiliary class for defining the range of iterations of objects. 
 
double getW() const 
Get normalisation. 
 
#define make_field(A,...)
macro to convert parameter to JParserTemplateElement object 
 
const std::string & getOID() const 
Get detector identifier. 
 
General purpose messaging. 
 
Auxiliary data structure for sequence of same character. 
 
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
 
Utility class to parse command line options. 
 
double getToA() const 
Get calibrated time of arrival. 
 
int getID() const 
Get identifier. 
 
Object reading from a list of files. 
 
Exception for accessing a value in a collection that is outside of its range. 
 
int getID() const 
Get emitter identifier.