Applying the proper fix to cope with setups with multiple trigger clusters.
authorrichterm <richterm@f7af4fe6-9843-0410-8265-dc069ae4e863>
Tue, 8 Sep 2009 22:32:43 +0000 (22:32 +0000)
committerrichterm <richterm@f7af4fe6-9843-0410-8265-dc069ae4e863>
Tue, 8 Sep 2009 22:32:43 +0000 (22:32 +0000)
Since the fancy AliHLTReadoutList operator functions did not work on the
HLT cluster (reason still unknown), explicite functions are now added and
used. The readout list specified in the configuration of the HLTGlobalTrigger
is now masked with the readout list from the CTP classes. The quick fix
just used the readout list from the CTP classes, however, HLT bits have
not been set there.

HLT/BASE/AliHLTCTPData.cxx
HLT/trigger/AliHLTGlobalTriggerComponent.cxx

index 0a3b5186aeb8f75575e54d0948bbbd32a8170fd6..7ab0322f4fc0711115a2528d0a0ec124b31bec93 100644 (file)
@@ -398,14 +398,7 @@ AliHLTEventDDL AliHLTCTPData::ReadoutList(const AliHLTComponentTriggerData& trig
     if (i>fClassIds.GetLast()) break;
     if ((triggerMask&((AliHLTUInt64_t)0x1<<i))==0) continue;
     AliHLTReadoutList* tcrl=(AliHLTReadoutList*)fClassIds.At(i);
-    // 2009-08-27: this is a temorary bugfix:
-    // the operator functions of the AliHLTReadoutList class did not work
-    // when running online on the HLT cluster. The fix for the moment is
-    // to send out the readout list only for the first matching trigger
-    // class instead of merging the list. This is sufficient for the
-    // current trigger setups but needs to be corrected
-    return *tcrl;
-    list|=*tcrl;
+    list.OrEq(*tcrl);
   }
 
   return list;
index 64ff7e2a45c5b5e594fdf2792b4732c941d72e73..01de4fe74b878a46fa252e255b99d85ee7a6d4fe 100644 (file)
@@ -338,13 +338,10 @@ int AliHLTGlobalTriggerComponent::DoTrigger()
   if (pCTPData && pCTPData->Mask()) {
     AliHLTEventDDL eventDDL=pCTPData->ReadoutList(*GetTriggerData());
     AliHLTReadoutList ctpreadout(eventDDL);
-//     AliHLTReadoutList maskedList=decision.ReadoutList();
-//     maskedList&=ctpreadout;
-
-    // bugfix 2009-08-27: since the AliHLTReadoutList operator function did not
-    // work properly (no clue why), we just use the readout list created from the
-    // detectors of the active CTP trigger class(es) 
-    decision.ReadoutList(ctpreadout);
+    ctpreadout.Enable(AliHLTReadoutList::kHLT);
+    AliHLTReadoutList maskedList=decision.ReadoutList();
+    maskedList.AndEq(ctpreadout);
+    decision.ReadoutList(maskedList);
   }
 
   decision.SetCounters(fTrigger->Counters(), GetEventCount()+1);