11 #include <framework/modules/core/EventInfoPrinterModule.h>
13 #include <boost/format.hpp>
32 setDescription(
"Prints the current event meta data information (exp, run, event numbers). LogLevel need to be set to INFO, at least for this module.");
34 addParam(
"printTime", m_printTime,
"Print time in addition to exp/run/evt numbers.",
false);
37 EventInfoPrinterModule::~EventInfoPrinterModule() =
default;
39 void EventInfoPrinterModule::initialize()
41 m_eventMetaData.isRequired();
44 void EventInfoPrinterModule::beginRun()
46 B2INFO(
"========================================================================");
47 B2INFO(
">>> Start new run: " << m_eventMetaData->getRun());
48 B2INFO(
"------------------------------------------------------------------------");
52 void EventInfoPrinterModule::event()
55 if (!m_eventMetaData)
return;
57 B2INFO(boost::format(
"EXP: %5d RUN: %6d EVT: %8d TIME: %s") % m_eventMetaData->getExperiment() % m_eventMetaData->getRun() %
58 m_eventMetaData->getEvent() % formatDateTime(m_eventMetaData->getTime()));
60 B2INFO(boost::format(
"EXP: %8d RUN: %8d EVT: %8d") % m_eventMetaData->getExperiment() % m_eventMetaData->getRun() %
61 m_eventMetaData->getEvent());
66 void EventInfoPrinterModule::endRun()
68 B2INFO(
"------------------------------------------------------------------------");
69 B2INFO(
"<<< End run: " << m_eventMetaData->getRun());
70 B2INFO(
"========================================================================");
73 std::string EventInfoPrinterModule::formatDateTime(
unsigned long long int nsec)
75 using namespace chrono;
76 high_resolution_clock::time_point time(duration_cast<high_resolution_clock::duration>(nanoseconds(nsec)));
77 time_t ttime = high_resolution_clock::to_time_t(time);
78 tm* tm = gmtime(&ttime);
81 strftime(timeStr, 32,
"%F %T", tm);
82 unsigned int sec_decimals = (nsec / 1000) % 1000000;
84 return str(boost::format(
"%s.%06d") % timeStr % sec_decimals);