did not behave well on the HLT cluster. Basically the operator &= and |= were not entered when using
to AliHLTReadoutList objects in the HLTGlobalTrigger to mask the readout according to the CTP classes
adding helper function to get active trigger mask from CTPData
return 0;
}
+AliHLTUInt64_t AliHLTCTPData::ActiveTriggers(const AliHLTComponentTriggerData& trigData)
+{
+ // extract active triggers from the trigger data
+
+ if (trigData.fDataSize != sizeof(AliHLTEventTriggerData)) return (AliHLTUInt64_t)0;
+
+ // trigger mask is 50 bit wide and is stored in word 5 and 6 of the CDH
+ AliHLTEventTriggerData* evtData=reinterpret_cast<AliHLTEventTriggerData*>(trigData.fData);
+ AliHLTUInt64_t triggerMask=evtData->fCommonHeader[6]&0x3ffff;
+ triggerMask<<=32;
+ triggerMask|=evtData->fCommonHeader[5];
+ return triggerMask;
+}
+
bool AliHLTCTPData::EvaluateCTPTriggerClass(const char* expression, AliHLTComponentTriggerData& trigData) const
{
// see header file for function documentation
*/
int InitCTPTriggerClasses(const char* ctpString);
+ /// etract the active trigger mask from the trigger data
+ static AliHLTUInt64_t ActiveTriggers(const AliHLTComponentTriggerData& trigData);
+
/**
* Evaluate an expression of trigger class ids with respect to the trigger mask.
*/
{
// This operator performs a bitwise inclusive or operation on all DDL bits.
// See header file for more details.
+ this->OrEq(list);
+ return *this;
+}
+
+AliHLTReadoutList& AliHLTReadoutList::OrEq(const AliHLTReadoutList& list)
+{
+ // a bitwise inclusive or operation on all DDL bits.
+ // See header file for more details.
assert( fReadoutList.fCount == (unsigned)gkAliHLTDDLListSize );
for (Int_t i = 0; i < gkAliHLTDDLListSize; i++)
{
// This operator performs a bitwise exclusive or (xor) operation on all DDL bits.
// See header file for more details.
+
+ this->XorEq(list);
+ return *this;
+}
+
+AliHLTReadoutList& AliHLTReadoutList::XorEq(const AliHLTReadoutList& list)
+{
+ // bitwise exclusive or (xor) operation on all DDL bits.
+ // See header file for more details.
assert( fReadoutList.fCount == (unsigned)gkAliHLTDDLListSize );
for (Int_t i = 0; i < gkAliHLTDDLListSize; i++)
{
// This operator performs a bitwise and operation on all DDL bits.
// See header file for more details.
-
+
+ this->AndEq(list);
+ return *this;
+}
+
+AliHLTReadoutList& AliHLTReadoutList::AndEq(const AliHLTReadoutList& list)
+{
+ // bitwise and operation on all DDL bits.
+ // See header file for more details.
+
assert( fReadoutList.fCount == (unsigned)gkAliHLTDDLListSize );
for (Int_t i = 0; i < gkAliHLTDDLListSize; i++)
{
return *this;
}
-
AliHLTReadoutList& AliHLTReadoutList::operator -= (const AliHLTReadoutList& list)
{
// This operator removes all the DDLs specified in list from this readout list.
* \return A reference to this object.
*/
AliHLTReadoutList& operator |= (const AliHLTReadoutList& list);
+
+ /// same as operator |=
+ AliHLTReadoutList& OrEq(const AliHLTReadoutList& list);
/**
* This operator performs a bitwise exclusive or (xor) operation on all DDL
* \return A reference to this object.
*/
AliHLTReadoutList& operator ^= (const AliHLTReadoutList& list);
+
+ /// same as operator ^=
+ AliHLTReadoutList& XorEq(const AliHLTReadoutList& list);
/**
* This operator performs a bitwise and operation on all DDL bits between
* \return A reference to this object.
*/
AliHLTReadoutList& operator &= (const AliHLTReadoutList& list);
+
+ /// same as operator &=
+ AliHLTReadoutList& AndEq(const AliHLTReadoutList& list);
/**
* This operator performs the effective operation of "this and (this xor list)".