35 inline bool operator()(
const JFit&
first,
const JFit& second)
const
37 if (first.
id == second.
id) {
39 if (first.
tx == second.
tx) {
41 return first.
ty < second.
ty;
45 return first.
tx < second.
tx;
50 return first.
id < second.
id;
62 inline bool operator()(
const JEvt& first,
const JEvt& second)
const
64 if (first.
oid == second.
oid) {
74 if (first.size() == second.size()) {
76 for (JEvt::const_iterator
78 p1 = second.begin(); p0 != first.end() &&
p1 != second.end(); ++p0, ++
p1) {
80 if ((*
this)(*p0, *
p1)) {
89 return first.size() < second.size();
114 return first.
oid < second.
oid;
145 out << prefix << (prefix ==
"" ?
"" :
" ")
146 << setw(width) << left << filename << right <<
' '
147 <<
"[" <<
FILL(6,
'0') << index <<
"]" <<
FILL() <<
' '
151 << (postfix ==
"" ?
"" :
" ") << postfix << endl;
173 out << prefix << (prefix ==
"" ?
"" :
" ")
174 <<
FILL(4,
'0') <<
object.id <<
FILL() <<
' '
175 <<
FIXED(9,6) <<
object.tx <<
' '
176 <<
FIXED(9,6) <<
object.ty <<
' '
177 << (postfix ==
"" ?
"" :
" ") << postfix << endl;
191 int main(
int argc,
char **argv)
202 JParser<> zap(
"Program to compare acoustics fit data.");
204 zap[
'f'] =
make_field(inputFile,
"two outputs of JKatoomba[.sh]");
205 zap[
'n'] =
make_field(numberOfEvents) = JLimit::max();
210 catch(
const exception &error) {
211 FATAL(error.what() << endl);
214 if (inputFile.size() != 2
u) {
215 FATAL(
"Wrong number of input files " << inputFile.size() << endl);
218 const size_t width = max(inputFile[0].size(), inputFile[1].size());
223 for (
int i = 0;
i != 2; ++
i) {
226 buffer[
i].push_back(*
in.next());
229 sort(buffer[i].begin(), buffer[i].end());
233 for (
int i = 0;
i != 2; ++
i) {
240 int count[] = { 0, 0 };
243 p0 = buffer[0].begin(),
244 p1 = buffer[1].begin(); p0 != buffer[0].end() &&
p1 != buffer[1].end(); ) {
246 for ( ; p0 != buffer[0].end() &&
p1 != buffer[1].end() && compare(*p0,*
p1); ++p0, ++count[1]) {
247 print(cout, inputFile[0],
distance(buffer[0].cbegin(),p0), *p0,
">>",
"");
250 for ( ; p0 != buffer[0].end() &&
p1 != buffer[1].end() && compare(*
p1,*p0); ++
p1, ++count[1]) {
254 if (p0 != buffer[0].end() &&
p1 != buffer[1].end()) {
256 if (!compare(*p0,*
p1) && !compare(*
p1,*p0)) {
260 print(cout, inputFile[0],
distance(buffer[0].cbegin(),p0), *p0,
"",
"\\");
267 if (p0->oid ==
p1->oid &&
268 p0->UNIXTimeStart ==
p1->UNIXTimeStart &&
269 p0->UNIXTimeStop ==
p1->UNIXTimeStop) {
271 print(cout, inputFile[0],
distance(buffer[0].cbegin(),p0), *p0,
"",
"");
274 JEvt::const_iterator i0 = p0->begin();
275 JEvt::const_iterator i1 =
p1->begin();
277 for ( ; i0 != p0->end() && i1 !=
p1->end(); ++i0, ++i1) {
278 if (compare(*i0, *i1) || compare(*i1,*i0)) {
279 print(cout, *i0,
">>",
"");
280 print(cout, *i1,
"<<",
"");
284 for ( ; i0 != p0->end(); ++i0) {
285 print(cout, *i0,
">>",
"");
288 for ( ; i1 !=
p1->end(); ++i1) {
289 print(cout, *i1,
"<<",
"");
294 print(cout, inputFile[0],
distance(buffer[0].cbegin(),p0), *p0,
">>",
"");
299 if (compare(*p0,*
p1) || compare(*
p1,*p0)) {
309 STATUS(
"Number of differences / events: " << count[1] <<
" / " << count[0] << endl);
311 if (buffer[0].size() != buffer[1].size()) {
312 FATAL(
"Different size " << buffer[0].size() <<
' ' << buffer[1].size() << endl);
316 FATAL(
"Number of differences " << count[1] << endl);
Utility class to parse command line options.
int npar
number of fit parameters
int main(int argc, char *argv[])
JComparator< JResult_t T::*, JComparison::lt > make_comparator(JResult_t T::*member)
Helper method to create comparator between values of data member.
std::string oid
detector identifier
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.
Auxiliary data structure for floating point format specification.
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...
double UNIXTimeStop
stop time
Auxiliary class for defining the range of iterations of objects.
#define make_field(A,...)
macro to convert parameter to JParserTemplateElement object
General purpose messaging.
Auxiliary data structure for sequence of same character.
double UNIXTimeStart
start time
Utility class to parse command line options.
Object reading from a list of files.
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