adding class for handling of CTP information
[u/mrichter/AliRoot.git] / HLT / BASE / AliHLTCTPData.h
1 //-*- Mode: C++ -*-
2 // $Id$
3
4 #ifndef ALIHLTCTPDATA_H
5 #define ALIHLTCTPDATA_H
6 //* This file is property of and copyright by the ALICE HLT Project        * 
7 //* ALICE Experiment at CERN, All rights reserved.                         *
8 //* See cxx source for full Copyright notice                               *
9
10 /** @file   AliHLTCTPData.h
11     @author Matthias Richter
12     @date   2009-08-20
13     @brief  Container for CTP trigger classes and counters
14 */
15
16 #include "TNamed.h"
17 #include "TClonesArray.h"
18 #include "TArrayL64.h"
19 #include "AliHLTLogging.h"
20 #include "AliHLTDataTypes.h"
21
22 /**
23  * @class AliHLTCTPData
24  * This is a container for the CTP trigger classes, the mapping to the bit
25  * field, and counters.
26  *
27  * The object is also stored as part of the HLTGlobalTriggerDecision
28  * @ingroup alihlt_trigger
29  */
30 class AliHLTCTPData: public TNamed, public AliHLTLogging
31 {
32  public:
33   /// default constructor
34   AliHLTCTPData();
35   /// standard constructor including initialization from CTP_TRIGGER_CLASS
36   AliHLTCTPData(const char* parameter);
37   /// destructor
38   virtual ~AliHLTCTPData();
39
40   /**
41    * Init the class ids and mapping from the CTP_TRIGGER_CLASS parameter.
42    * The general format of the parameter is as follows:
43    */
44   int InitCTPTriggerClasses(const char* ctpString);
45
46   /**
47    * Evaluate an expression of trigger class ids with respect to the trigger mask.
48    */
49   bool EvaluateCTPTriggerClass(const char* expression, AliHLTComponentTriggerData& trigData) const;
50
51   /**
52    * Reset all counters
53    */
54   void ResetCounters();
55
56   /**
57    * Get index of a trigger class in the tigger pattern
58    */
59   int Index(const char* name) const;
60
61   /**
62    * Increment counter for CTP trigger classes
63    * @param classIds  comma separated list of class ids
64    */
65   void Increment(const char* classIds);
66
67   /**
68    * Increment counter for CTP trigger classes
69    * @param triggerPattern  corresponds to the 50bit trigger mask in the CDH
70    */
71   void Increment(AliHLTUInt64_t triggerPattern);
72
73   /**
74    * Increment counter for a CTP trigger class
75    * @param classIdx  index of the class in the 50bit trigger mask
76    */
77   void Increment(int classIdx);
78
79   /**
80    * Increment counters according to the trigger data struct.
81    * First extract trigger pattern from the CDH and then
82    * increment from the trigger pattern.
83    */
84   int Increment(AliHLTComponentTriggerData& trigData);
85
86   /**
87    * Inherited from TObject, this prints the contents of the trigger decision.
88    */
89   virtual void Print(Option_t* option = "") const;
90
91   AliHLTUInt64_t   Mask() const { return fMask; }
92   const TArrayL64& Counters() const { return fCounters; }
93   AliHLTUInt64_t   Counter(int index) const;
94   AliHLTUInt64_t   Counter(const char* classId) const;
95   const char*      Name(int index) const;
96
97  protected:
98  private:
99   /// copy constructor prohibited
100   AliHLTCTPData(const AliHLTCTPData&);
101   ///assignment operator prohibited
102   AliHLTCTPData& operator=(const AliHLTCTPData&);
103
104   AliHLTUInt64_t fMask;      /// mask of initialized trigger classes
105   TClonesArray   fClassIds;  /// array of trigger class ids
106   TArrayL64      fCounters;  /// trigger class counters
107
108   ClassDef(AliHLTCTPData, 0)
109 };
110
111 #endif