#include #include #include #include #include #include "JDAQ/JDAQEventIO.hh" #include "JDAQ/JDAQSummarysliceIO.hh" #include "JSupport/JSingleFileScanner.hh" #include "JSupport/JSummaryFileRouter.hh" #include "JSupport/JSupport.hh" #include "JTools/JQuantile.hh" #include "Jeep/JParser.hh" #include "Jeep/JMessage.hh" /** * \file * * Program to test JSUPPORT::JSummaryFileRouter. * \author mdejong */ int main(int argc, char **argv) { using namespace std; using namespace JPP; using namespace KM3NETDAQ; JSingleFileScanner inputFile; JLimit_t& numberOfEvents = inputFile.getLimit(); double rate_Hz; int debug; try { JParser<> zap("Program to test router of summary data."); zap['f'] = make_field(inputFile); zap['n'] = make_field(numberOfEvents) = JLimit::max(); zap['B'] = make_field(rate_Hz) = 0.0; zap['d'] = make_field(debug) = 2; zap(argc, argv); } catch(const exception& error) { FATAL(error.what() << endl); } JSummaryFileRouter router(inputFile.getFilename(), rate_Hz); map zmap; while (inputFile.hasNext()) { STATUS("event: " << setw(10) << inputFile.getCounter() << '\r'); DEBUG(endl); JDAQEvent* event = inputFile.next(); router.update(*event); for (JDAQEvent::const_iterator hit = event->begin(); hit != event->end(); ++hit) { const JDAQPMTIdentifier id(hit->getModuleID(), hit->getPMT()); const double R = router.getRate(id); zmap[id].put(R); } } for (map::const_iterator i = zmap.begin(); i != zmap.end(); ++i) { cout << setw(10) << i->first.getModuleID() << '.' << FILL(2,'0') << i->first.getPMTAddress() << FILL() << ' ' << FIXED(9,2) << i->second.getMean(); if (i->second.getCount() > 2) { cout << " +/- " << FIXED(9,2) << i->second.getSTDev(); } cout << endl; } }