9 #include <framework/modules/core/EventInfoPrinterModule.h>
11 #include <boost/format.hpp>
30 setDescription(
"Prints the current event meta data information (exp, run, event numbers). LogLevel need to be set to INFO, at least for this module.");
32 addParam(
"printTime", m_printTime,
"Print time in addition to exp/run/evt numbers.",
false);
35 EventInfoPrinterModule::~EventInfoPrinterModule() =
default;
37 void EventInfoPrinterModule::initialize()
39 m_eventMetaData.isRequired();
42 void EventInfoPrinterModule::beginRun()
44 B2INFO(
"========================================================================");
45 B2INFO(
">>> Start new run: " << m_eventMetaData->getRun());
46 B2INFO(
"------------------------------------------------------------------------");
50 void EventInfoPrinterModule::event()
53 if (!m_eventMetaData)
return;
55 B2INFO(boost::format(
"EXP: %5d RUN: %6d EVT: %8d TIME: %s") % m_eventMetaData->getExperiment() % m_eventMetaData->getRun() %
56 m_eventMetaData->getEvent() % formatDateTime(m_eventMetaData->getTime()));
58 B2INFO(boost::format(
"EXP: %8d RUN: %8d EVT: %8d") % m_eventMetaData->getExperiment() % m_eventMetaData->getRun() %
59 m_eventMetaData->getEvent());
64 void EventInfoPrinterModule::endRun()
66 B2INFO(
"------------------------------------------------------------------------");
67 B2INFO(
"<<< End run: " << m_eventMetaData->getRun());
68 B2INFO(
"========================================================================");
71 std::string EventInfoPrinterModule::formatDateTime(
unsigned long long int nsec)
73 using namespace chrono;
74 high_resolution_clock::time_point time(duration_cast<high_resolution_clock::duration>(nanoseconds(nsec)));
75 time_t ttime = high_resolution_clock::to_time_t(time);
76 tm* tm = gmtime(&ttime);
79 strftime(timeStr, 32,
"%F %T", tm);
80 unsigned int sec_decimals = (nsec / 1000) % 1000000;
82 return str(boost::format(
"%s.%06d") % timeStr % sec_decimals);
The event meta data info module.
#define REG_MODULE(moduleName)
Register the given module (without 'Module' suffix) with the framework.
Abstract base class for different kinds of events.