-static char *rcsId = "$Header: /misc/hadesprojects/daq/cvsroot/eventbuilder/hadaq/evtbuild.c,v 6.49 2002-11-07 12:48:49 hadaq Exp $";
+static char *rcsId = "$Header: /misc/hadesprojects/daq/cvsroot/eventbuilder/hadaq/evtbuild.c,v 6.50 2002-11-07 20:40:41 hadaq Exp $";
#define _POSIX_C_SOURCE 199309L
unsigned long *evtsDiscarded;
unsigned long *evtsComplete;
unsigned long *evtsDataError;
+ unsigned long *evtsTagError;
unsigned long *bytesWritten;
unsigned long *triggerType[NTRIGTYPES];
unsigned long *trigNr[32];
static void statsDump(TheArgs *theArgs, TheStats *my, int interval) {
static unsigned long lastEC;
static unsigned long lastEE;
+ static unsigned long lastTE;
static unsigned long lastED;
static unsigned long lastBW;
static time_t lastTime = 0;
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);
fprintf(stderr, "%19s:%6s", "evtsComplete/s", unit(*my->evtsComplete - lastEC));
fprintf(stderr, "%19s:%6s", "bytesWritten/s", unit(*my->bytesWritten - lastBW));
fputc('\n', stderr);
fprintf(stderr, "%19s:%6s", "evtsDataError/s", unit(*my->evtsDataError - lastEE));
+ fprintf(stderr, "%19s:%6s", "evtsTagError/s", unit(*my->evtsTagError - lastTE));
fputc('\n', stderr);
lastEC = *my->evtsComplete;
lastEE = *my->evtsDataError;
+ lastTE = *my->evtsTagError;
lastED = *my->evtsDiscarded;
lastBW = *my->bytesWritten;
int scanWasSuccessful;
uint32_t currTrigNr;
+ uint32_t currTrigTag;
uint32_t currId;
ourTime = time(NULL);
theStats->evtsDiscarded = Worker_addStatistic(worker, "evtsDiscarded");
theStats->evtsComplete = Worker_addStatistic(worker, "evtsComplete");
theStats->evtsDataError = Worker_addStatistic(worker, "evtsDataError");
+ theStats->evtsTagError = Worker_addStatistic(worker, "evtsTagError");
theStats->bytesWritten = Worker_addStatistic(worker, "bytesWritten");
for (i = 0; i < NTRIGTYPES; i++) {
char buf[WORKER_MAX_NAME_LEN];
while (setjmp(terminateJmp) == 0) {
int step;
int evtIsBroken = 0;
+ int dataError = 0;
+ int tagError = 0;
statsDump(theArgs, theStats, 1);
evt = newEvt(EvtDecoding_64bitAligned, EvtId_data, theArgs->runNr, theArgs->expId);
for (i = 0; i < theArgs->nrOfMsgs && !evtIsBroken; i += step) {
uint32_t trigNr;
+ uint32_t trigTag;
if (hadTuQueue[i] == NULL) {
void *storage;
if (i == 0) {
currTrigNr = SubEvt_trigNr(subEvt) >> 8;
+ currTrigTag = SubEvt_trigNr(subEvt) & 0xff;
currId = SubEvt_pureId(subEvt);
Evt_setId(evt, currId);
#ifndef NDEBUG
syslog(LOG_DEBUG,
- "currTrigNr: 0x%08x, currId 0x%08x", currTrigNr, currId);
+ "currTrigNr: 0x%06x, currTrigTag 0x%02x, currId 0x%08x", currTrigNr, currTrigTag, currId);
#endif
}
trigNr = SubEvt_trigNr(subEvt) >> 8;
+ trigTag = SubEvt_trigNr(subEvt) & 0xff;
if (trigNr == currTrigNr) {
- if (SubEvt_dataError(subEvt)) {
- Evt_setDataError(evt);
+ if (SubEvt_size(subEvt) > SubEvt_hdrSize()) {
+ /* sub evt is not empty */
+ if (SubEvt_dataError(subEvt)) {
+ dataError = 1;
+ }
+ if (trigNr != currTrigNr) {
+ tagError = 1;
+ }
+ evt = Evt_appendSubEvt(evt, subEvt);
}
- evt = Evt_appendSubEvt(evt, subEvt);
HadTuQueue_pop(hadTuQueue[i]);
step = 1;
} else if (trigNr < currTrigNr) {
}
}
if (!evtIsBroken) {
+ if (dataError) {
+ Evt_setDataError(evt);
+ (*theStats->evtsDataError)++;
+ }
+ if (tagError) {
+ Evt_setDataError(evt);
+ (*theStats->evtsTagError)++;
+ }
if (outFile != NULL) {
fwrite(evt, 1, Evt_paddedSize(evt), outFile);
} else if (outTape != NULL) {
}
Evt_online(evt);
(*theStats->evtsComplete)++;
- if (Evt_dataError(evt)) {
- (*theStats->evtsDataError)++;
- }
(*theStats->triggerType[currId & (NTRIGTYPES - 1)])++;
(*theStats->bytesWritten) += Evt_size(evt);
} else {