introducing functions in addition some of the operator functions since the operator...
authorrichterm <richterm@f7af4fe6-9843-0410-8265-dc069ae4e863>
Tue, 8 Sep 2009 21:01:24 +0000 (21:01 +0000)
committerrichterm <richterm@f7af4fe6-9843-0410-8265-dc069ae4e863>
Tue, 8 Sep 2009 21:01:24 +0000 (21:01 +0000)
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

HLT/BASE/AliHLTCTPData.cxx
HLT/BASE/AliHLTCTPData.h
HLT/BASE/AliHLTReadoutList.cxx
HLT/BASE/AliHLTReadoutList.h

index 2d45479..0a3b518 100644 (file)
@@ -215,6 +215,20 @@ int AliHLTCTPData::InitCTPTriggerClasses(const char* ctpString)
   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
index 4cfc95a..7c07818 100644 (file)
@@ -69,6 +69,9 @@ class AliHLTCTPData: public TNamed, public AliHLTLogging
    */
   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.
    */
index 08545c1..2d04a4f 100644 (file)
@@ -414,6 +414,14 @@ AliHLTReadoutList& AliHLTReadoutList::operator |= (const AliHLTReadoutList& list
 {
   // 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++)
@@ -428,6 +436,15 @@ AliHLTReadoutList& AliHLTReadoutList::operator ^= (const AliHLTReadoutList& list
 {
   // 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++)
@@ -442,7 +459,16 @@ AliHLTReadoutList& AliHLTReadoutList::operator &= (const AliHLTReadoutList& list
 {
   // 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++)
   {
@@ -451,7 +477,6 @@ AliHLTReadoutList& AliHLTReadoutList::operator &= (const AliHLTReadoutList& list
   return *this;
 }
 
-
 AliHLTReadoutList& AliHLTReadoutList::operator -= (const AliHLTReadoutList& list)
 {
   // This operator removes all the DDLs specified in list from this readout list.
index 7a1f7a0..3686f77 100644 (file)
@@ -240,6 +240,9 @@ class AliHLTReadoutList : public TNamed
    * \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
@@ -248,6 +251,9 @@ class AliHLTReadoutList : public TNamed
    * \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
@@ -256,6 +262,9 @@ class AliHLTReadoutList : public TNamed
    * \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)".