9 #include <rawdata/modules/PrintEventRate.h>
15 #define EVENT_UNIT 75000
16 #define BYTES_PER_WORD 4
29 addParam(
"PrintInterval", m_print_interval,
"Print Interval", 60);
50 PrintEventRateModule::~PrintEventRateModule()
56 void PrintEventRateModule::initialize()
58 B2INFO(
"PrintDataTemplate: initialize() started.");
65 B2INFO(
"PrintDataTemplate: initialize() done.");
71 void PrintEventRateModule::printCOPPEREvent(
RawCOPPER* raw_copper,
int i)
74 m_cur_event = raw_copper->
GetEveNo(i);
78 unsigned int error_flag = 0;
79 error_flag = (
unsigned int)(raw_copper->
GetDataType(i));
81 printf(
"!!!!!!!!! ERROR (RawCOPPER hdr) !!!!!!!!!! : run %d sub %d event %u errflag %.8x nodeID %.8x\n",
82 m_run, m_subrun, m_cur_event, error_flag , raw_copper->
GetNodeID(i));
87 m_tot_bytes += (double)(BYTES_PER_WORD * raw_copper->
GetBlockNwords(i));
92 if (m_first_evt == 0) {
94 m_start_utime = m_cur_utime;
95 m_start_event = m_cur_event;
96 m_prev_utime = m_cur_utime;
97 m_prev_event = m_cur_event;
104 void PrintEventRateModule::endRun()
106 int interval = m_cur_utime - m_prev_utime;
107 int total_time = m_cur_utime - m_start_utime;
108 time_t timer = (time_t)m_cur_utime;
111 localtime_r(&timer, &t_st);
114 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",
115 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,
116 m_run, m_subrun, m_n_basf2evt, (
double)(m_n_basf2evt - m_prev_event) / interval / 1.e3,
117 (
double)(m_tot_bytes - m_prev_tot_bytes) / interval / 1.e6,
118 total_time, interval, m_tot_bytes / 1.e6,
119 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);
122 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",
123 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,
124 m_run, m_subrun, m_n_basf2evt, 0., 0.,
125 total_time, interval, m_tot_bytes / 1.e6,
126 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);
131 void PrintEventRateModule::event()
147 int datablk_blknum = raw_datablkarray.
getEntries();
155 int arich_blknum = raw_aricharray.
getEntries();
162 if (m_n_basf2evt == 0) {
177 m_cpr_svd = svd_blknum;
178 m_cpr_cdc = cdc_blknum;
179 m_cpr_top = top_blknum;
180 m_cpr_arich = arich_blknum;
181 m_cpr_ecl = ecl_blknum;
182 m_cpr_klm = klm_blknum;
183 m_cpr_trg = trg_blknum;
198 for (
int i = 0; i < datablk_blknum; i++) {
199 for (
int j = 0; j < raw_datablkarray[ i ]->GetNumEntries(); j++) {
200 int* temp_buf = raw_datablkarray[ i ]->GetBuffer(j);
201 int nwords = raw_datablkarray[ i ]->GetBlockNwords(j);
205 if (raw_datablkarray[ i ]->CheckFTSWID(j)) {
207 }
else if (raw_datablkarray[ i ]->CheckTLUID(j)) {
213 temp_raw_copper.
SetBuffer(temp_buf, nwords, delete_flag, num_nodes, num_events);
214 printCOPPEREvent(&temp_raw_copper, 0);
220 for (
int i = 0; i < cpr_blknum; i++) {
221 for (
int j = 0; j < raw_cprarray[ i ]->GetNumEntries(); j++) {
222 printCOPPEREvent(raw_cprarray[ i ], j);
226 for (
int i = 0; i < svd_blknum; i++) {
227 for (
int j = 0; j < raw_svdarray[ i ]->GetNumEntries(); j++) {
228 printCOPPEREvent(raw_svdarray[ i ], j);
232 for (
int i = 0; i < cdc_blknum; i++) {
233 for (
int j = 0; j < raw_cdcarray[ i ]->GetNumEntries(); j++) {
234 printCOPPEREvent(raw_cdcarray[ i ], j);
238 for (
int i = 0; i < top_blknum; i++) {
239 for (
int j = 0; j < raw_toparray[ i ]->GetNumEntries(); j++) {
240 printCOPPEREvent(raw_toparray[ i ], j);
244 for (
int i = 0; i < arich_blknum; i++) {
245 for (
int j = 0; j < raw_aricharray[ i ]->GetNumEntries(); j++) {
246 printCOPPEREvent(raw_aricharray[ i ], j);
250 for (
int i = 0; i < ecl_blknum; i++) {
251 for (
int j = 0; j < raw_eclarray[ i ]->GetNumEntries(); j++) {
252 printCOPPEREvent(raw_eclarray[ i ], j);
256 for (
int i = 0; i < klm_blknum; i++) {
257 for (
int j = 0; j < raw_klmarray[ i ]->GetNumEntries(); j++) {
258 printCOPPEREvent(raw_klmarray[ i ], j);
262 for (
int i = 0; i < trg_blknum; i++) {
263 for (
int j = 0; j < raw_trgarray[ i ]->GetNumEntries(); j++) {
264 printCOPPEREvent(raw_trgarray[ i ], j);
268 if (m_eventMetaDataPtr->getErrorFlag()) {
269 printf(
"!!!!!!!!! ERROR (EventMetaData) !!!!!!!!!! : run %d sub %d event %d errflag %.8x\n",
270 m_eventMetaDataPtr->getRun(), m_eventMetaDataPtr->getSubrun(),
271 m_eventMetaDataPtr->getEvent(), m_eventMetaDataPtr->getErrorFlag());
275 int interval = (m_cur_utime - m_prev_utime);
276 if (interval >= m_print_interval) {
277 int total_time = m_cur_utime - m_start_utime;
279 time_t timer = (time_t)m_cur_utime;
282 localtime_r(&timer, &t_st);
284 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",
285 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,
286 m_run, m_subrun, m_n_basf2evt, (
double)(m_n_basf2evt - m_prev_event) / interval / 1.e3,
287 (
double)(m_tot_bytes - m_prev_tot_bytes) / interval / 1.e6,
288 total_time, interval, m_tot_bytes / 1.e6);
291 m_prev_utime = m_cur_utime;
292 m_prev_tot_bytes = m_tot_bytes;
293 m_prev_event = m_n_basf2evt;
297 m_prev_tot_bytes = m_tot_bytes;
298 m_prev_event = m_n_basf2evt;
299 m_prev_utime = m_cur_utime;