adding a member for the active CTP trigger mask to the CTP data object and setting...
[u/mrichter/AliRoot.git] / HLT / BASE / AliHLTCTPData.h
index ee5fbf9556b2397cd2a7414a9e88335887edb7d0..3b85adf398c5e908db61a819f516a2a3a1419414 100644 (file)
@@ -46,19 +46,48 @@ class AliHLTCTPData: public TNamed, public AliHLTLogging
   AliHLTCTPData();
   /// standard constructor including initialization from CTP_TRIGGER_CLASS
   AliHLTCTPData(const char* parameter);
+  /// copy constructor
+  AliHLTCTPData(const AliHLTCTPData&);
+  ///assignment operator
+  AliHLTCTPData& operator=(const AliHLTCTPData&);
   /// destructor
   virtual ~AliHLTCTPData();
 
+  /// Add counters
+  AliHLTCTPData& operator += (const AliHLTCTPData&);
+  /// Add counters
+  AliHLTCTPData operator + (const AliHLTCTPData&) const;
+
+  /// Subtract counters
+  AliHLTCTPData& operator -= (const AliHLTCTPData&);
+  /// Subtract counters
+  AliHLTCTPData operator - (const AliHLTCTPData&) const;
+
   /**
    * Init the class ids and mapping from the CTP_TRIGGER_CLASS parameter.
    * The general format of the parameter is as follows:
    */
   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.
+   */
+  bool EvaluateCTPTriggerClass(const char* expression, const AliHLTComponentTriggerData& trigData) const;
+
   /**
    * Evaluate an expression of trigger class ids with respect to the trigger mask.
    */
-  bool EvaluateCTPTriggerClass(const char* expression, AliHLTComponentTriggerData& trigData) const;
+  bool EvaluateCTPTriggerClass(const char* expression, AliHLTUInt64_t triggerMask) const;
+
+  /**
+   * Evaluate an expression of trigger class ids with respect to the current trigger mask.
+   */
+  bool EvaluateCTPTriggerClass(const char* expression) const {
+    return EvaluateCTPTriggerClass(expression, fTriggers);
+  }
 
   /**
    * Reset all counters
@@ -107,6 +136,9 @@ class AliHLTCTPData: public TNamed, public AliHLTLogging
   virtual void Print(Option_t* option = "") const;
 
   AliHLTUInt64_t   Mask() const { return fMask; }
+  AliHLTUInt64_t   Triggers() const { return fTriggers; }
+  void             SetTriggers(AliHLTUInt64_t triggers) { fTriggers=triggers; }
+  void             SetTriggers(AliHLTComponentTriggerData trigData) {SetTriggers(ActiveTriggers(trigData));}
   const TArrayL64& Counters() const { return fCounters; }
   AliHLTUInt64_t   Counter(int index) const;
   AliHLTUInt64_t   Counter(const char* classId) const;
@@ -114,16 +146,21 @@ class AliHLTCTPData: public TNamed, public AliHLTLogging
 
  protected:
  private:
-  /// copy constructor prohibited
-  AliHLTCTPData(const AliHLTCTPData&);
-  ///assignment operator prohibited
-  AliHLTCTPData& operator=(const AliHLTCTPData&);
+  /**
+   * Add counters.
+   * Base methods for operators.
+   * @param src    instance to add
+   * @param factor +1/-1 for addition/subtraction
+   * @skipped      target to get the numner of not matching class names
+   */
+  int Add(const AliHLTCTPData& src, int factor, int &skipped);
 
   AliHLTUInt64_t fMask;      /// mask of initialized trigger classes
+  AliHLTUInt64_t fTriggers;  /// current trigger
   TClonesArray   fClassIds;  /// array of trigger class ids
   TArrayL64      fCounters;  /// trigger class counters
 
-  ClassDef(AliHLTCTPData, 0)
+  ClassDef(AliHLTCTPData, 1)
 };
 
 #endif