9 #include <rawdata/modules/PrintEventRate.h>
15 #define EVENT_UNIT 75000
16 #define BYTES_PER_WORD 4
41 addParam(
"PrintInterval", m_print_interval,
"Print Interval", 60);
62 PrintEventRateModule::~PrintEventRateModule()
68 void PrintEventRateModule::initialize()
70 B2INFO(
"PrintDataTemplate: initialize() started.");
77 B2INFO(
"PrintDataTemplate: initialize() done.");
83 void PrintEventRateModule::printCOPPEREvent(
RawCOPPER* raw_copper,
int i)
86 m_cur_event = raw_copper->
GetEveNo(i);
90 unsigned int error_flag = 0;
91 error_flag = (
unsigned int)(raw_copper->
GetDataType(i));
93 printf(
"!!!!!!!!! ERROR (RawCOPPER hdr) !!!!!!!!!! : run %d sub %d event %u errflag %.8x nodeID %.8x\n",
94 m_run, m_subrun, m_cur_event, error_flag , raw_copper->
GetNodeID(i));
99 m_tot_bytes += (double)(BYTES_PER_WORD * raw_copper->
GetBlockNwords(i));
104 if (m_first_evt == 0) {
106 m_start_utime = m_cur_utime;
107 m_start_event = m_cur_event;
108 m_prev_utime = m_cur_utime;
109 m_prev_event = m_cur_event;
110 m_prev_tot_bytes = 0;
116 void PrintEventRateModule::endRun()
118 int interval = m_cur_utime - m_prev_utime;
119 int total_time = m_cur_utime - m_start_utime;
120 time_t timer = (time_t)m_cur_utime;
123 localtime_r(&timer, &t_st);
126 printf(
"END %d/%d/%d/%d:%d:%d run %d sub %d Event %u Rate %lf [kHz] %lf [MB/s] RunTime %d [s] interval %d [s] total %lf [bytes] cpr %d s %d c %d to %d a %d e %d k %d tr %d other %d erreve %d errcpr %d\n",
127 t_st.tm_year + 1900, t_st.tm_mon + 1, t_st.tm_mday, t_st.tm_hour, t_st.tm_min, t_st.tm_sec,
128 m_run, m_subrun, m_n_basf2evt, (
double)(m_n_basf2evt - m_prev_event) / interval / 1.e3,
129 (
double)(m_tot_bytes - m_prev_tot_bytes) / interval / 1.e6,
130 total_time, interval, m_tot_bytes / 1.e6,
131 m_cpr, m_cpr_svd, m_cpr_cdc, m_cpr_top, m_cpr_arich, m_cpr_ecl, m_cpr_klm, m_cpr_trg, m_cpr_others, m_erreve, m_errcpr);
134 printf(
"END %d/%d/%d/%d:%d:%d run %d sub %d Event %u Rate %lf [kHz] %lf [MB/s] RunTime %d [s] interval %d [s] total %lf [bytes] cpr %d s %d c %d to %d a %d e %d k %d tr %d other %d erreve %d errcpr %d\n",
135 t_st.tm_year + 1900, t_st.tm_mon + 1, t_st.tm_mday, t_st.tm_hour, t_st.tm_min, t_st.tm_sec,
136 m_run, m_subrun, m_n_basf2evt, 0., 0.,
137 total_time, interval, m_tot_bytes / 1.e6,
138 m_cpr, m_cpr_svd, m_cpr_cdc, m_cpr_top, m_cpr_arich, m_cpr_ecl, m_cpr_klm, m_cpr_trg, m_cpr_others, m_erreve, m_errcpr);
143 void PrintEventRateModule::event()
159 int datablk_blknum = raw_datablkarray.
getEntries();
167 int arich_blknum = raw_aricharray.
getEntries();
174 if (m_n_basf2evt == 0) {
189 m_cpr_svd = svd_blknum;
190 m_cpr_cdc = cdc_blknum;
191 m_cpr_top = top_blknum;
192 m_cpr_arich = arich_blknum;
193 m_cpr_ecl = ecl_blknum;
194 m_cpr_klm = klm_blknum;
195 m_cpr_trg = trg_blknum;
210 for (
int i = 0; i < datablk_blknum; i++) {
211 for (
int j = 0; j < raw_datablkarray[ i ]->GetNumEntries(); j++) {
212 int* temp_buf = raw_datablkarray[ i ]->GetBuffer(j);
213 int nwords = raw_datablkarray[ i ]->GetBlockNwords(j);
217 if (raw_datablkarray[ i ]->CheckFTSWID(j)) {
219 }
else if (raw_datablkarray[ i ]->CheckTLUID(j)) {
225 temp_raw_copper.
SetBuffer(temp_buf, nwords, delete_flag, num_nodes, num_events);
226 printCOPPEREvent(&temp_raw_copper, 0);
232 for (
int i = 0; i < cpr_blknum; i++) {
233 for (
int j = 0; j < raw_cprarray[ i ]->GetNumEntries(); j++) {
234 printCOPPEREvent(raw_cprarray[ i ], j);
238 for (
int i = 0; i < svd_blknum; i++) {
239 for (
int j = 0; j < raw_svdarray[ i ]->GetNumEntries(); j++) {
240 printCOPPEREvent(raw_svdarray[ i ], j);
244 for (
int i = 0; i < cdc_blknum; i++) {
245 for (
int j = 0; j < raw_cdcarray[ i ]->GetNumEntries(); j++) {
246 printCOPPEREvent(raw_cdcarray[ i ], j);
250 for (
int i = 0; i < top_blknum; i++) {
251 for (
int j = 0; j < raw_toparray[ i ]->GetNumEntries(); j++) {
252 printCOPPEREvent(raw_toparray[ i ], j);
256 for (
int i = 0; i < arich_blknum; i++) {
257 for (
int j = 0; j < raw_aricharray[ i ]->GetNumEntries(); j++) {
258 printCOPPEREvent(raw_aricharray[ i ], j);
262 for (
int i = 0; i < ecl_blknum; i++) {
263 for (
int j = 0; j < raw_eclarray[ i ]->GetNumEntries(); j++) {
264 printCOPPEREvent(raw_eclarray[ i ], j);
268 for (
int i = 0; i < klm_blknum; i++) {
269 for (
int j = 0; j < raw_klmarray[ i ]->GetNumEntries(); j++) {
270 printCOPPEREvent(raw_klmarray[ i ], j);
274 for (
int i = 0; i < trg_blknum; i++) {
275 for (
int j = 0; j < raw_trgarray[ i ]->GetNumEntries(); j++) {
276 printCOPPEREvent(raw_trgarray[ i ], j);
280 if (m_eventMetaDataPtr->getErrorFlag()) {
281 printf(
"!!!!!!!!! ERROR (EventMetaData) !!!!!!!!!! : run %d sub %d event %d errflag %.8x\n",
282 m_eventMetaDataPtr->getRun(), m_eventMetaDataPtr->getSubrun(),
283 m_eventMetaDataPtr->getEvent(), m_eventMetaDataPtr->getErrorFlag());
287 int interval = (m_cur_utime - m_prev_utime);
288 if (interval >= m_print_interval) {
289 int total_time = m_cur_utime - m_start_utime;
291 time_t timer = (time_t)m_cur_utime;
294 localtime_r(&timer, &t_st);
296 printf(
"MID %d/%d/%d/%d:%d:%d run %d sub %d Event %u Rate %lf [kHz] %lf [MB/s] RunTime %d [s] interval %d [s] total %lf [bytes]\n",
297 t_st.tm_year + 1900, t_st.tm_mon + 1, t_st.tm_mday, t_st.tm_hour, t_st.tm_min, t_st.tm_sec,
298 m_run, m_subrun, m_n_basf2evt, (
double)(m_n_basf2evt - m_prev_event) / interval / 1.e3,
299 (
double)(m_tot_bytes - m_prev_tot_bytes) / interval / 1.e6,
300 total_time, interval, m_tot_bytes / 1.e6);
303 m_prev_utime = m_cur_utime;
304 m_prev_tot_bytes = m_tot_bytes;
305 m_prev_event = m_n_basf2evt;
308 m_prev_tot_bytes = m_tot_bytes;
310 m_prev_event = m_n_basf2evt;
312 m_prev_utime = m_cur_utime;
Print event rate of input data.
The Raw COPPER class This class stores data received by COPPER via belle2linkt Data from all detector...
void SetBuffer(int *bufin, int nwords, int delete_flag, int num_events, int num_nodes) OVERRIDE_CPP17
set buffer ( delete_flag : m_buffer is freeed( = 0 )/ not freeed( = 1 ) in Destructer )
virtual int GetBlockNwords(int n)
get size of a data block
Accessor to arrays stored in the data store.
int getEntries() const
Get the number of objects in the array.
#define REG_MODULE(moduleName)
Register the given module (without 'Module' suffix) with the framework.
unsigned int GetEveNo(int n)
get subrun #(8bit)
unsigned int GetTTUtime(int n)
Check if COPPER Magic words are correct.
int GetSubRunNo(int n)
get run # (14bit)
int GetDataType(int n)
get contents of header
unsigned int GetNodeID(int n)
get node-ID from data
int GetRunNo(int n)
Exp# (10bit) run# (14bit) restart # (8bit)
Abstract base class for different kinds of events.