#include #include #include #include #include "TROOT.h" #include "TFile.h" #include "TH1D.h" #include "JDAQ/JDAQEventIO.hh" #include "JDAQ/JDAQSummarysliceIO.hh" #include "JDAQ/JDAQEvaluator.hh" #include "JSupport/JMultipleFileScanner.hh" #include "JSupport/JTreeScanner.hh" #include "JSupport/JSupport.hh" #include "Jeep/JParser.hh" #include "Jeep/JMessage.hh" /** * \file * * Program to test ordered reading using JSUPPORT::JTreeScanner. * \author mdejong */ int main(int argc, char **argv) { using namespace std; using namespace JPP; using namespace KM3NETDAQ; JMultipleFileScanner<> inputFile; JLimit_t& numberOfEvents = inputFile.getLimit(); string outputFile; int debug; try { JParser<> zap("Program to test ordered reading from a ROOT TTree."); zap['f'] = make_field(inputFile); zap['n'] = make_field(numberOfEvents) = JLimit::max(); zap['o'] = make_field(outputFile) = "histogram.root"; zap['d'] = make_field(debug) = 2; zap(argc, argv); } catch(const exception& error) { FATAL(error.what() << endl); } TFile out(outputFile.c_str(), "recreate"); TH1D h0("h0", NULL, 401, -200.5, +200.5); TH1D h1("h1", NULL, 401, -200.5, +200.5); JTreeScanner::debug = debug; JTreeScanner scan(inputFile); int frame_index = 0; for (JTreeScanner in(inputFile); in.hasNext(); ) { STATUS("event: " << setw(10) << in.getCounter() << '\r'); DEBUG(endl); JDAQEvent* event = in.next(); Long64_t index = scan.find(*event); JDAQSummaryslice* summary = scan.getEntry(index); h0.Fill(event ->getFrameIndex() - frame_index); h1.Fill(summary->getFrameIndex() - event->getFrameIndex()); frame_index = event->getFrameIndex(); } out.Write(); out.Close(); }