60 JParser<> zap(
"Example program to monitor acoustic events.");
62 zap[
'f'] =
make_field(inputFile,
"output of JAcousticEventBuilder[.sh]");
63 zap[
'n'] =
make_field(numberOfEvents) = JLimit::max();
67 zap[
'x'] =
make_field(
x,
"histogram x-binning") = JHistogram_t(100000, -2.0e-2, +2.0e-2);
68 zap[
'E'] =
make_field(
id,
"emitter identifier (-1 = all)") = -1;
73 catch(
const exception &error) {
74 FATAL(error.what() << endl);
90 receivers[
i->getID()] =
i->getLocation();
99 while (inputFile.hasNext()) {
101 STATUS(
"input " << setw(6) << inputFile.getCounter() <<
'\r');
DEBUG(endl);
103 const JEvent* evt = inputFile.next();
105 zbuf[evt->
getID()].push_back(*evt);
112 STATUS(
"Emitter " << setw(2) << emitter->first <<
' ' << setw(6) << emitter->second.size() << endl);
114 if (emitter->first ==
id ||
id == -1) {
116 if (emitter->second.size() > 1) {
118 sort(emitter->second.begin(), emitter->second.end());
122 if (!p->empty() && !q->empty()) {
124 DEBUG(
"Time difference " <<
FIXED(7,3) << q->begin()->getToE() - p->begin()->getToE() << endl);
126 if (T_s(q->begin()->getToE() - p->begin()->getToE())) {
133 JEvent::const_iterator __p = p->begin();
134 JEvent::const_iterator __q = q->begin();
136 while (__p != p->end() && __q != q->end()) {
138 while (__p != p->end() && __q != q->end() && __p->getID() < __q->getID()) { ++__p; }
139 while (__p != p->end() && __q != q->end() && __q->getID() < __p->getID()) { ++__q; }
141 if (__p != p->end() && __q != q->end() && __q->getID() == __p->getID()) {
143 if (receivers.has(__p->getID())) {
145 const JLocation& location = receivers[__p->getID()];
146 const double t1 = __q->getToA() - __p->getToA();
148 buffer[location] = t1;
156 if (buffer.size() > 1) {
160 if (p->first.getString() == q->first.getString() && p->first.getFloor() + 1 == q->first.getFloor()) {
162 const double t1 = q->second - p->second;
164 H1[p->first]->Fill(t1);
Utility class to parse command line options.
JComparator< JResult_t T::*, JComparison::lt > make_comparator(JResult_t T::*member)
Helper method to create comparator between values of data member.
Auxiliary data structure for floating point format specification.
Auxiliary class for defining the range of iterations of objects.
Type definition of range.
Auxiliary class to manage set of compatible ROOT objects (e.g. histograms) using unique keys...
Logical location of module.
#define make_field(A,...)
macro to convert parameter to JParserTemplateElement object
void load(const std::string &file_name, JDetector &detector)
Load detector from input file.
General purpose class for object reading from a list of file names.
const JLimit & getLimit() const
Get limit.
do set_variable DETECTOR_TXT $WORKDIR detector
int getID() const
Get emitter identifier.
#define DEBUG(A)
Message macros.