LCOV - code coverage report
Current view: top level - HLT/BASE - AliHLTTriggerMenuItem.h (source / functions) Hit Total Coverage
Test: coverage.info Lines: 2 16 12.5 %
Date: 2016-06-14 17:26:59 Functions: 3 22 13.6 %

          Line data    Source code
       1             : //-*- Mode: C++ -*-
       2             : // $Id$
       3             : #ifndef ALIHLTTRIGGERMENUITEM_H
       4             : #define ALIHLTTRIGGERMENUITEM_H
       5             : /* This file is property of and copyright by the ALICE HLT Project        *
       6             :  * ALICE Experiment at CERN, All rights reserved.                         *
       7             :  * See cxx source for full Copyright notice                               */
       8             : 
       9             : /// @file   AliHLTTriggerMenuItem.h
      10             : /// @author Artur Szostak <artursz@iafrica.com>
      11             : /// @date   19 Dec 2008
      12             : /// @brief  Declaration of the AliHLTTriggerMenuItem class.
      13             : 
      14             : #include "TObject.h"
      15             : #include "TString.h"
      16             : #include "TArrayL.h"
      17             : 
      18             : /**
      19             :  * \class AliHLTTriggerMenuItem
      20             :  * A trigger menu item is used to store the information for a single entry in the
      21             :  * HLT global trigger menu AliHLTTriggerMenu.
      22             :  * It stores information about the trigger condition, trigger domain merging
      23             :  * expression, trigger priority, trigger scale-down and the prescalar to apply.
      24             :  * The trigger condition is an expression which indicates what must be true
      25             :  * for the trigger menu entry to be fired. A fired item will then use the trigger
      26             :  * domain merging expression for the computation of the final global trigger domain.
      27             :  * All expressions must be valid C++.
      28             :  *
      29             :  * The symbols used in the trigger condition expressions are assumed to be AliHLTTrigger
      30             :  * names, unless they are predefined in the trigger menu symbols table. All symbols
      31             :  * should be valid C++ symbol names. However, the '-' and '.' characters are allowed
      32             :  * as a special extention. Neither the '-', nor '.' characters can be the first
      33             :  * character of the symbol and there cannot be any spaces between it and the
      34             :  * alphanumeric characters. If there are any spaces then the '-' or '.' character is
      35             :  * treated as the normal C++ minus or dereferencing operator respectively.
      36             :  * For example, "abc-xyz" is a single whole symbol, while "abc - xyz" are two symbols,
      37             :  * abc and xyz, separated by a minus operator.
      38             :  *
      39             :  * Merging expressions can use all the symbols defined in the trigger menu symbols table
      40             :  * including all the implicit symbols used in the trigger conditions which are assumed
      41             :  * to be AliHLTTrigger names. If a AliHLTTrigger name is not used in a trigger condition
      42             :  * expression, but one wants to use the trigger domain in a merging expression, then a
      43             :  * predefined symbol must be added to the trigger menu symbol table. As an example, in
      44             :  * the following manner:
      45             :  * \code
      46             :  * AliHLTGlobalTriggerConfig config("test config");
      47             :  * config.AddSymbol("myTriggerName", "bool", "this->Result()", "0", "AliHLTTriggerDecision");
      48             :  * \endcode
      49             :  * The trigger name "myTriggerName" should be replaced with the actual name of the
      50             :  * AliHLTTrigger from which one wants to use the trigger domain result.
      51             :  * Symbols with the '-' sign are be handled automatically and will be replaced
      52             :  * by their appropriate versions with the minus signs replaced by underscores.
      53             :  * This means that a minus sign in any other location is always treated as an operator.
      54             :  * If uncertain then just put spaces around the minus operator.
      55             :  *
      56             :  * \note The following symbol names are reserved and should not be used in either
      57             :  * the trigger condition or merging expressions:
      58             :  *   _trigger_result_
      59             :  *   _domain_
      60             :  *   _description_
      61             :  *   _item_result_
      62             :  *   _group_result_
      63             :  *   _previous_match_
      64             :  *   _trigger_matched_
      65             :  *   FillFromMenu
      66             :  *   NewEvent
      67             :  *   Add
      68             :  *   CalculateTriggerDecision
      69             :  *   GetCounters
      70             :  *   SetCounters
      71             :  *   CreateNew
      72             :  */
      73           0 : class AliHLTTriggerMenuItem : public TObject
      74             : {
      75             :  public:
      76             :   
      77             :   /**
      78             :    * Default constructor.
      79             :    */
      80             :   AliHLTTriggerMenuItem();
      81             :   
      82             :   /**
      83             :    * Default destructor.
      84             :    */
      85             :   virtual ~AliHLTTriggerMenuItem();
      86             :   
      87             :   /**
      88             :    * Inherited from TObject, this prints the contents of the menu item.
      89             :    * \param option  Can be "compact", which will print in the compact format.
      90             :    */
      91             :   virtual void Print(Option_t* option = "") const;
      92             :   
      93             :   /**
      94             :    * Returns the optional comment string.
      95             :    */
      96           0 :   const char* Description() const { return fDescription.Data(); }
      97             :   
      98             :   /**
      99             :    * Set the optional comment string.
     100             :    */
     101           0 :   void Description(const char* value) { fDescription = value; }
     102             :   
     103             :   /**
     104             :    * Returns the trigger condition expression.
     105             :    */
     106           0 :   const char* TriggerCondition() const { return fConditionExpr.Data(); }
     107             :   
     108             :   /**
     109             :    * Set the trigger condition expression.
     110             :    */
     111           0 :   void TriggerCondition(const char* value) { fConditionExpr = value; }
     112             :   
     113             :   /**
     114             :    * Returns the trigger domain merging expression.
     115             :    */
     116           0 :   const char* MergeExpression() const { return fDomainExpr.Data(); }
     117             :   
     118             :   /**
     119             :    * Set the trigger domain merging expression.
     120             :    */
     121           0 :   void MergeExpression(const char* value) { fDomainExpr = value; }
     122             :   
     123             :   /**
     124             :    * Returns the pre-scalar value.
     125             :    */
     126           0 :   UInt_t PreScalar() const { return fPrescalar; }
     127             :   
     128             :   /**
     129             :    * Set the pre-scalar value. A value of zero turns off the prescalar.
     130             :    * \param value Indicates that only every n'th trigger should be passed.
     131             :    *     HLT triggers will be scaled down by the amount 1/value.
     132             :    * \note If both the prescalar and the scale-down factors are set then the
     133             :    *     trigger rate reduction r will be higher and can be calculated by:
     134             :    *        r = 1/n * s
     135             :    *     where n is the prescalar value (an integer) and s is the scale down
     136             :    *     factor, which is a floating point number in the range [0..1].
     137             :    */
     138           0 :   void PreScalar(UInt_t value) { fPrescalar = value; }
     139             :   
     140             :   /**
     141             :    * Returns the priority value.
     142             :    */
     143           0 :   UInt_t Priority() const { return fPriority; }
     144             :   
     145             :   /**
     146             :    * Set the priority value. Higher values give a higher priority.
     147             :    */
     148           0 :   void Priority(UInt_t value) { fPriority = value; }
     149             :   
     150             :   /**
     151             :    * Returns the scale down factor in the range [0..1].
     152             :    */
     153           0 :   Double_t ScaleDown() const { return fScaleDown; }
     154             :   
     155             :   /**
     156             :    * Set the scale down factor.
     157             :    * \param value The scale down to set. Valid values are in the range [0..1].
     158             :    *     If <i>value</i> is outside the valid range it will be truncated the
     159             :    *     nearest valid value in the range.
     160             :    * \note A scale-down of 0 indicates no triggers are passes through, 1 indicates
     161             :    *     all triggers are passed through and all values between this range will
     162             :    *     cause the triggers to be vetoed randomally so as to reproduce:
     163             :    *       triggers passed / triggers dropped = scale-down
     164             :    */
     165           0 :   void ScaleDown(Double_t value) { fScaleDown = (value < 0 ? 0 : (value > 1 ? 1 : value)); }
     166             :   
     167             :   /**
     168             :    * Returns the default result for the global trigger if this item is matched.
     169             :    */
     170           0 :   bool DefaultResult() const { return TestBit(BIT(15)) == 1; }
     171             :   
     172             :   /**
     173             :    * Set the default result for the global trigger if this item is matched.
     174             :    */
     175          14 :   void DefaultResult(bool value) { SetBit(BIT(15), value); }
     176             : 
     177             :  private:
     178             :   
     179             :   TString fDescription;  /// Optional description or comment string.
     180             :   TString fConditionExpr;  /// The trigger condition expression.
     181             :   TString fDomainExpr;  /// Trigger domain merging expression.
     182             :   UInt_t fPrescalar;  /// Pre-scalar value used to optionally reduce the trigger rate. Every modulus n'th event is triggered, where n equals the pre-scalar value.
     183             :   UInt_t fPriority;  /// Priority of the trigger menu item. Higher values have higher priority.
     184             :   Double_t fScaleDown;  /// Trigger scale-down factor to apply to this item. Valid values are in the range [0..1].
     185             :   
     186         154 :   ClassDef(AliHLTTriggerMenuItem, 4) // Trigger menu item for global HLT trigger.
     187             : };
     188             : 
     189             : #endif // ALIHLTTRIGGERMENUITEM_H
     190             : 

Generated by: LCOV version 1.11