{
// add a readout filter to the EventDoneData
int iResult=0;
- unsigned entries=domain.GetNofEntries();
+ unsigned nofEntries=domain.GetNofEntries();
// we need:
// 1 word eventually for the monitor event command
// 1 word for the readout filter command
// 1 word for the readout filter size
// 4*n words for the filter list
- if ((iResult=ReserveEventDoneData((entries*4 + 3) * sizeof(AliHLTUInt32_t)))<0) return iResult;
+ if ((iResult=ReserveEventDoneData((nofEntries*4 + 3) * sizeof(AliHLTUInt32_t)))<0) return iResult;
AliHLTUInt32_t eddbuffer[4];
if (type==4) {
// in the case of the monitoring filter we also add the monitor event command
// now the readout list command and the block count
eddbuffer[0]=type;
if ((iResult=PushEventDoneData(eddbuffer[0]))<0) return iResult;
- eddbuffer[0]=entries;
- if ((iResult=PushEventDoneData(eddbuffer[0]))<0) return iResult;
- for (unsigned block=0; block<entries; block++) {
+ // find the valid entries
+ unsigned block=0;
+ vector<const AliHLTDomainEntry*> entries;
+ for (block=0; block<nofEntries; block++) {
// skip all DAQ readout entries as they are handled by the readout list
if (domain[block]==AliHLTDomainEntry(kAliHLTDataTypeDAQRDOUT)) continue;
if (domain[block].Exclusive()) {
HLTWarning("exclusive trigger domain entries are currently not handled, skipping entry %s", domain[block].AsString().Data());
continue;
}
- domain[block].AsBinary(eddbuffer);
+ entries.push_back(&(domain[block]));
+ }
+ eddbuffer[0]=entries.size();
+ if ((iResult=PushEventDoneData(eddbuffer[0]))<0) return iResult;
+
+ for (vector<const AliHLTDomainEntry*>::iterator entry=entries.begin();
+ entry!=entries.end(); entry++) {
+ (*entry)->AsBinary(eddbuffer);
for (int n=0; n<4; n++)
if ((iResult=PushEventDoneData(eddbuffer[n]))<0) return iResult;
}