55std::vector<FMT_ID>
eq;
73 printf(
"Duplicate eventID[%d] between Eq:%s & %s ",
eq[
jj].
id,
eq[
jj].Eqname,
75 printf(
"Dumping event in raw format\n");
84 strcpy(
eq[*
i].Fmt,
"GIVEN");
89 strcpy(
eq[*
i].Fmt,
"DUPLICATE");
104 printf(
"%irun 0x%4.4uxid 0x%4.4uxmsk %5dmevt#", runno,
e->event_id,
e->trigger_mask,
seqno);
105 printf(
"%5del/x%x %5dserial\n",
int(
e->data.size()),
int(
e->data.size()),
e->serial_number);
110 static char bars[] =
"|/-\\";
136 runno =
e->serial_number;
138 printf(
"Skipping event_# ... ");
189 runno =
e->serial_number;
195 }
else if (
e->serial_number !=
prev_e.serial_number + 1) {
197 printf(
"\nLast - Evid:%4.4x- Mask:%4.4x- Serial:%i- Time:0x%x- Dsize:%i/0x%x\n",
200 printf(
"Now - Evid:%4.4x- Mask:%4.4x- Serial:%i- Time:0x%x- Dsize:%i/0x%x\n",
201 e->event_id,
e->trigger_mask,
e->serial_number,
202 e->time_stamp,
e->data_size,
e->data_size);
205 printf(
"Consistency check: %c - %i (Data size:%i)\r",
bars[
i_bar++ % 4],
220 printf(
"Evid:%4.4x- Mask:%4.4x- Serial:%d- Time:0x%x- Dsize:%d/0x%x\n",
221 e->event_id,
e->trigger_mask,
e->serial_number,
e->time_stamp,
222 e->data_size,
e->data_size);
225 for (
unsigned b=0; b<
e->banks.size(); b++) {
228 printf(
"#banks:%i Bank list:-%s-\n",
int(
e->banks.size()),
banklist.c_str());
231 printf(
"------------------------ Event# %i --------------------------------\n",
i++);
256 printf(
"------------------------ Event# %i --------------------------------\n",
i++);
260 printf(
"------------------------ Event# %i --------------------------------\n",
i++);
281 static char bars[] =
"|/-\\";
298 printf(
"\nLast - Evid:%4.4x- Mask:%4.4x- Serial:%i- Time:0x%x- Dsize:%i/0x%x\n",
301 printf(
"Now - Evid:%4.4x- Mask:%4.4x- Serial:%i- Time:0x%x- Dsize:%i/0x%x\n",
305 printf(
"Consistency check: %c - %i (Data size:%i)\r",
bars[
i_bar++ % 4],
321 printf(
"------------------------ Event# %i ------------------------\n",
347 printf(
"Evid:%4.4x- Mask:%4.4x- Serial:%d- Time:0x%x- Dsize:%d/0x%x\n",
356 printf(
"Data format not supported: \"%s\"\n",
eq[
index].Fmt);
427 else if (
argv[
i][0] ==
'-') {
476 printf(
"mdump for replay -x file name : file to inspect\n");
477 printf(
" -m mode : Display mode either Bank or raw\n");
478 printf(
" -b bank name : search for bank name (case sensitive)\n");
479 printf(
" -i evt_id (any) : event id from the FE\n");
480 printf(
" -[single] : Request single bank only (to be used with -b)\n");
481 printf(
" -y : Serial number consistency check(-i supported)\n");
482 printf(
" -j : Display # of banks and bank name list only for all the event\n");
483 printf(
" -k mask (any) : trigger_mask from FE setting\n");
484 printf(
">>> -i and -k are valid for YBOS ONLY if EVID bank is present in the event\n");
485 printf(
" -w what : [h]eader, [r]ecord, [l]ength\n");
486 printf(
" [e]vent, [j]bank_list (same as -j)\n");
487 printf(
">>> Header & Record are not supported for MIDAS as no physical record structure exists\n");
488 printf(
" -f format (auto): data representation ([x]/[d]/[a]scii) def:bank header content\n");
489 printf(
" -r # : skip event(MIDAS) to #\n");
490 printf(
" -a bytes : max event size to support (defaults to %d bytes)\n",
507 else if (
argv[
i][0] ==
'-') {
554 printf(
"mdump for online -l # : display # events (look 1)\n");
556 (
" -f format (auto): data representation ([x]/[d]/[a]scii) def:bank header content\n");
558 (
" -w time : insert wait in [sec] between each display\n");
560 (
" -m mode : Display mode either Bank or raw\n");
562 (
" -j : Display # of banks and bank name list only for all the event\n");
564 (
" -b bank name : search for bank name (case sensitive)\n");
566 (
" -i evt_id (any) : event id from the FE\n");
568 (
" -k mask (any) : trigger_mask from FE setting\n");
570 (
" -g type : sampling mode either SOME or all)\n");
572 (
" -s : report buffer data rate and fill level\n");
574 (
" -s -d : for use with -s: also report all buffer clients and requests\n");
576 (
" -t type (auto) : Bank format (Midas/Ybos)\n");
578 (
" -x Source : Data source selection def:online (see -x -h)\n");
580 (
" -y : Serial number consistency check\n");
582 (
">>> in case of -y it is recommented to used -g all\n");
584 (
" -z buffer name : Midas buffer name default:[SYSTEM]\n");
586 (
" [-h Hostname] [-e Experiment]\n\n");
608 printf(
"\n>>> data type (-t) should be set by hand in -x mode for tape <<< \n\n");
617 (
"\n>>> data type (-t) should be set by hand in -x mode for tape <<< \n\n");
630 printf(
"mdump-F- <-display arg> out of range (1:9999)\n");
635 printf(
"mdump-F- <-delay arg> out of range (1:100)\n");
665 printf(
"- MIDAS revision: %s -- Enter <!> to Exit ------- Midas Dump in Speed test mode ---\n",
711 strcpy(
eq[l].Fmt,
"MIDAS");
714 strcpy(
eq[l].Fmt,
"FIXED");
718 strcpy(
eq[l].Fmt,
"UNKNOWN");
745 strcpy(
eq[l].Fmt,
"MIDAS");
747 printf(
"Format unknown for Event Builder \"%s\"\n",
str);
756 printf(
"ID\tMask\tFormat\tEq_name\n");
757 while (
eq.size() > 0 &&
eq[
i].fmt) {
785 printf(
"buffer name [%s], clients: %d, max: %d, size: %d, rp: %d, wp: %d, ine: %d, oute: %d\n",
800 used += buffer_header.
size;
809 printf(
" client %d: name [%s], pid: %d, port: %d, rp: %d, used: %d, max_req: %d, read_wait: %d, write_wait: %d, wake_up: %d, get_all: %d, active: %d, timeout: %d\n",
826 printf(
" request %d: id: %d, valid: %d, event_id: %d, trigger_mask: 0x%x, type: %d\n",
836 printf(
"buffer name [%s], ", buffer_header.
name);
854 if ((
char)
ch ==
'!')
BOOL bk_is32a(const void *event)
BOOL bk_is32(const void *event)
INT bk_list(const void *event, char *bklist)
INT bk_find(const BANK_HEADER *pbkh, const char *name, DWORD *bklen, DWORD *bktype, void **pdata)
INT bm_open_buffer(const char *buffer_name, INT buffer_size, INT *buffer_handle)
INT bm_request_event(HNDLE buffer_handle, short int event_id, short int trigger_mask, INT sampling_type, HNDLE *request_id, EVENT_HANDLER *func)
INT bm_set_cache_size(INT buffer_handle, size_t read_size, size_t write_size)
INT cm_yield(INT millisec)
INT cm_get_experiment_database(HNDLE *hDB, HNDLE *hKeyClient)
INT cm_connect_experiment(const char *host_name, const char *exp_name, const char *client_name, void(*func)(char *))
INT cm_disconnect_experiment(void)
INT cm_get_environment(char *host_name, int host_name_size, char *exp_name, int exp_name_size)
const char * cm_get_revision()
INT cm_set_watchdog_params(BOOL call_watchdog, DWORD timeout)
void md_event_display(const void *pevent, INT data_fmt, INT dsp_mode, INT dsp_fmt, const char *bn)
INT md_event_swap(INT data_fmt, void *pevent)
void md_bank_display(void *pmbh, void *pbk, INT data_fmt, INT dsp_mode, INT dsp_fmt)
INT ss_getchar(BOOL reset)
INT ss_sleep(INT millisec)
INT cm_msg(INT message_type, const char *filename, INT line, const char *routine, const char *format,...)
INT cm_set_msg_print(INT system_mask, INT user_mask, int(*func)(const char *))
BOOL equal_ustring(const char *str1, const char *str2)
INT db_get_value(HNDLE hDB, HNDLE hKeyRoot, const char *key_name, void *data, INT *buf_size, DWORD type, BOOL create)
INT db_get_key(HNDLE hDB, HNDLE hKey, KEY *key)
INT db_find_key(HNDLE hDB, HNDLE hKey, const char *key_name, HNDLE *subhKey)
INT db_enum_key(HNDLE hDB, HNDLE hKey, INT idx, HNDLE *subkey_handle)
BOOL debug
debug printouts
char host_name[HOST_NAME_LENGTH]
DWORD data_format_check(EVENT_HEADER *pevent, INT *i)
void process_event(HNDLE hBuf, HNDLE request_id, EVENT_HEADER *pheader, void *pevent)
int replog(int data_fmt, char *rep_file, int bl, int action, int max_event_size)
void md_all_info_display(int seqno, int runno, TMEvent *e)
char expt_name[NAME_LENGTH]
INT bm_get_buffer_info(INT buffer_handle, BUFFER_HEADER *buffer_header)
std::string msprintf(const char *format,...)
#define DEFAULT_MAX_EVENT_SIZE
#define DEFAULT_BUFFER_SIZE
#define EVENT_BUFFER_NAME
#define STRING_BANKLIST_MAX
TH1X EXPRT * h1_book(const char *name, const char *title, int bins, double min, double max)
EVENT_REQUEST event_request[MAX_EVENT_REQUESTS]
BUFFER_CLIENT client[MAX_CLIENTS]