-static char *rcsId = "$Header: /misc/hadesprojects/daq/cvsroot/eventbuilder/hadaq/evtbuild.c,v 6.107 2010-06-05 23:02:18 hadaq Exp $";
+static char *rcsId = "$Header: /misc/hadesprojects/daq/cvsroot/eventbuilder/hadaq/evtbuild.c,v 6.108 2010-06-14 14:37:43 hadaq Exp $";
 
 #define _POSIX_C_SOURCE 199309L
 #define SYSLOG_NAMES
-#undef RFIO
+#define RFIO
 
 #include <unistd.h>
 #include <getopt.h>
        unsigned long *bytesWritten;
        unsigned long *evtId[NEVTIDS];
        unsigned long *trigNr[MAXINPATH];
+       unsigned long *errBit[MAXINPATH];
        unsigned long *evtsRes;
        unsigned long *evtbuildBuff[MAXINPATH];
        unsigned long *nrOfMsgs;
        dT = t - t_0;
 
        if (dT >= interval) {
+
+               printf("\n");
+               printf("%s ", "%");
+
                for (i = 0; i < theArgs->nrOfMsgs; i++) {
                        buffSize = 2 * theArgs->queueSize[i];
                        queueSize = HadTuQueue_size(shmtr[i]->rdQueue);
                        fillLevel = (unsigned long) (100. * queueSize + 0.5) / buffSize;
                        (*my->evtbuildBuff[i]) = fillLevel;
 
-                       /* printf("q[%02d]%5d\%\n",i,fillLevel); */
+                       printf("%3d", fillLevel);
                }
                t_0 = t;
+
+               printf("\n");
+               printf("Q ", i, fillLevel);
+               for (i = 0; i < theArgs->nrOfMsgs; i++) {
+                       printf("%3d", i);
+               }
+               printf("\n");
        }
 }
 
                if (dT >= interval) {
                        int col = 0;
 
-                       fputs("==============================================================================\n", stderr);
-                       fprintf(stderr, "%19s:%6s", "evtsComplete  ", unit(*my->evtsComplete));
-                       fprintf(stderr, "%19s:%6s", "evtsDiscarded  ", unit(*my->evtsDiscarded));
-                       fprintf(stderr, "%19s:%6s", "bytesWritten  ", unit(*my->bytesWritten));
-                       fputc('\n', stderr);
-                       fprintf(stderr, "%19s:%6s", "evtsDataError  ", unit(*my->evtsDataError));
-                       fprintf(stderr, "%19s:%6s", "evtsTagError  ", unit(*my->evtsTagError));
-                       fputc('\n', stderr);
-
-                       if ((long) (*my->evtsComplete) - (long) lastEC < 0) {
-                               lastEC = 0;
-                               lastED = 0;
-                               lastBW = 0;
-                               lastEE = 0;
-                               lastTE = 0;
+                       fputs
+                               ("=======================================================================================================================\n",
+                                stderr);
+                       if ((long) (*my->evtsComplete) - (long) lastEC > 0) {
+                               fprintf(stderr, "%13s:%6s", "evtsComplete", unit(*my->evtsComplete));
+                               fprintf(stderr, "%17s:%6s", "evtsComplete/s", unit((*my->evtsComplete - lastEC) / dT));
+                               fprintf(stderr, "%17s:%6s", "evtsDiscarded", unit(*my->evtsDiscarded));
+                               fprintf(stderr, "%17s:%6s", "evtsDiscarded/s", unit((*my->evtsDiscarded - lastED) / dT));
+                               fprintf(stderr, "%17s:%7s", "bytesWritten", unit(*my->bytesWritten));
+                               fputc('\n', stderr);
+                               fprintf(stderr, "%13s:%6s", "evtsDataError", unit(*my->evtsDataError));
+                               fprintf(stderr, "%17s:%6s", "evtsDataError/s", unit((*my->evtsDataError - lastEE) / dT));
+                               fprintf(stderr, "%17s:%6s", "evtsTagError", unit(*my->evtsTagError));
+                               fprintf(stderr, "%17s:%6s", "evtsTagError/s", unit((*my->evtsTagError - lastTE) / dT));
+                               fprintf(stderr, "%17s:%6s", "bytesWritten/s", unit((*my->bytesWritten - lastBW) / dT));
+                               fputc('\n', stderr);
+                       } else {
+                               fprintf(stderr, "%13s:%6s", "evtsComplete", unit(*my->evtsComplete));
+                               fprintf(stderr, "%17s:%6s", "evtsComplete/s", "0");
+                               fprintf(stderr, "%17s:%6s", "evtsDiscarded", unit(*my->evtsDiscarded));
+                               fprintf(stderr, "%17s:%6s", "evtsDiscarded/s", "0");
+                               fprintf(stderr, "%17s:%7s", "bytesWritten", unit(*my->bytesWritten));
+                               fputc('\n', stderr);
+                               fprintf(stderr, "%13s:%6s", "evtsDataError", unit(*my->evtsDataError));
+                               fprintf(stderr, "%17s:%6s", "evtsDataError/s", "0");
+                               fprintf(stderr, "%17s:%6s", "evtsTagError", unit(*my->evtsTagError));
+                               fprintf(stderr, "%17s:%6s", "evtsTagError/s", "0");
+                               fprintf(stderr, "%17s:%6s", "bytesWritten/s", "0");
+                               fputc('\n', stderr);
                        }
 
-                       fprintf(stderr, "%19s:%6s", "evtsComplete/s", unit((*my->evtsComplete - lastEC) / dT));
-                       fprintf(stderr, "%19s:%6s", "evtsDiscarded/s", unit((*my->evtsDiscarded - lastED) / dT));
-                       fprintf(stderr, "%19s:%6s", "bytesWritten/s", unit((*my->bytesWritten - lastBW) / dT));
-                       fputc('\n', stderr);
-                       fprintf(stderr, "%19s:%6s", "evtsDataError/s", unit((*my->evtsDataError - lastEE) / dT));
-                       fprintf(stderr, "%19s:%6s", "evtsTagError/s", unit((*my->evtsTagError - lastTE) / dT));
-                       fputc('\n', stderr);
-
                        if (*my->evtsDiscarded - lastED > 0)
                                storeEvtStat(theArgs, *my->evtsDiscarded - lastED);
 
                        lastED = *my->evtsDiscarded;
                        lastBW = *my->bytesWritten;
 
-                       fputs("------------------------------------------------------------------------------\n", stderr);
+                       fputs
+                               ("-----------------------------------------------------------------------------------------------------------------------\n",
+                                stderr);
                        col = 0;
                        for (i = 0; i < NEVTIDS; i++) {
                                if (*my->evtId[i] != 0) {
                        if (col != 0) {
                                fputc('\n', stderr);
                        }
+
+                       fputs
+                               ("---------------------------- trigger numbers --------------------------------------------------------------------------\n",
+                                stderr);
                        col = 0;
+                       for (i = 0; i < theArgs->nrOfMsgs; i++) {
+                               fprintf(stderr, "%2d: 0x%08x ", i, *my->trigNr[i]);
+                               if (++col == 8) {
+                                       fputc('\n', stderr);
+                                       col = 0;
+                               }
+                       }
+                       if (col != 0) {
+                               fputc('\n', stderr);
+                       }
 
-                       fputs("------------------------------------------------------------------------------\n", stderr);
+                       fputs
+                               ("---------------------------- error bits -------------------------------------------------------------------------------\n",
+                                stderr);
+                       col = 0;
                        for (i = 0; i < theArgs->nrOfMsgs; i++) {
-                               fprintf(stderr, "%12s%02d: 0x%08x", "trigNr", i, *my->trigNr[i]);
-                               if (++col == 3) {
+                               fprintf(stderr, "%2d: 0x%08x ", i, *my->errBit[i]);
+                               if (++col == 8) {
                                        fputc('\n', stderr);
                                        col = 0;
                                }
                        if (col != 0) {
                                fputc('\n', stderr);
                        }
+
                        t0 = t;
                }
        }
                sprintf(buf, "trigNr%d", i);
                theStats->trigNr[i] = Worker_addStatistic(worker, buf);
        }
+       for (i = 0; i < theArgs->nrOfMsgs; i++) {
+               char buf[WORKER_MAX_NAME_LEN];
+
+               sprintf(buf, "errBit%d", i);
+               theStats->errBit[i] = Worker_addStatistic(worker, buf);
+       }
 
        /* Add statistic for fill levels of buffers. */
        for (i = 0; i < theArgs->nrOfMsgs; i++) {
        rfio_openConnection(theArgs);
 #endif
 
+       uint32_t lastCurrTrigNr = 0;
+       int gap = 0;
+
        currId = 0;
        while (setjmp(terminateJmp) == 0) {
                void *evt;
 #endif
 
                        (*theStats->trigNr[i]) = SubEvt_trigNr(subEvt);
+                       (*theStats->errBit[i]) = SubEvt_errBit(subEvt);
 
                        if (i == 0) {
                                currTrigNr = SubEvt_trigNr(subEvt) >> 8;