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.
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.
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