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
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.
Object reading from a list of files.