applying data type definition of {DAQRDOUT} instead of string
[u/mrichter/AliRoot.git] / HLT / BASE / AliHLTTriggerDecision.h
1 //-*- Mode: C++ -*-
2 // $Id$
3 #ifndef ALIHLTTRIGGERDECISION_H
4 #define ALIHLTTRIGGERDECISION_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   AliHLTTriggerDecision.h
10 /// @author Artur Szostak <artursz@iafrica.com>
11 /// @date   21 Nov 2008
12 /// @brief  Declaration of the AliHLTTriggerDecision class storing the a AliHLTTrigger component's decision.
13
14 #include "TString.h"
15 #include "AliHLTReadoutList.h"
16 #include "AliHLTTriggerDomain.h"
17
18 /**
19  * \class AliHLTTriggerDecision
20  * Stores the information and result of a trigger decision made by a component
21  * deriving from AliHLTTrigger. The information includes the DDL readout list
22  * indicating which DDLs to readout and the trigger domain specifying which HLT
23  * raw data blocks to forward to HLTOUT.
24  */
25 class AliHLTTriggerDecision : public TObject
26 {
27  public:
28   
29   /**
30    * Default constructor.
31    */
32   AliHLTTriggerDecision();
33   
34   /**
35    * Constructor specifying the result and trigger name.
36    * \param result  The result of the trigger decision.
37    * \param name  The name of the trigger decision. Should be the name of the
38    *     AliHLTTrigger component.
39    */
40   AliHLTTriggerDecision(bool result, const char* name);
41   
42   /**
43    * Constructor specifying all information fields.
44    * \param result  The result of the trigger decision.
45    * \param name  The name of the trigger decision. Should be the name of the
46    *     AliHLTTrigger component.
47    * \param triggerDomain  The trigger domain for the trigger decision.
48    * \param description  The description of (reason for) the trigger decision.
49    */
50   AliHLTTriggerDecision(
51       bool result, const char* name, const AliHLTTriggerDomain& triggerDomain,
52       const char* description = ""
53     );
54   
55   /**
56    * Default destructor.
57    */
58   virtual ~AliHLTTriggerDecision();
59   
60   /**
61    * Inherited from TObject. Returns the name of the trigger decision.
62    */
63   virtual const char* GetName() const { return fName.Data(); }
64   
65   /**
66    * Inherited from TObject. Returns the description of the trigger decision.
67    */
68   virtual const char* GetTitle() const { return fDescription.Data(); }
69   
70   /**
71    * Inherited from TObject. This prints the contents of the trigger decision.
72    * \param option  Can be "short" which will print the short format.
73    */
74   virtual void Print(Option_t* option = "") const;
75
76   /**
77    * Inherited from TObject. Copy this to the specified object.
78    */
79   virtual void Copy(TObject &object) const;
80
81   /**
82    * Inherited from TObject. Create a new clone.
83    */
84   virtual TObject *Clone(const char *newname="") const;
85
86   /**
87    * Inherited from TObject. Return the result of the trigger.
88    * @return   "0" or "1" (note: its a string)
89    */
90   virtual Option_t *GetOption() const;
91
92   /**
93    * Returns the result of the trigger decision.
94    * \returns true if the event was triggered and should be readout.
95    */
96   bool EventTriggered() const { return Result(); }
97   
98   /**
99    * Returns the result of the trigger decision.
100    * The decision is stored in bit 15 of the fBits field.
101    * \returns true if the event was triggered and should be readout.
102    */
103   bool Result() const { return TestBit(15) == 1; }
104   
105   /**
106    * Sets the result of the trigger decision.
107    * The decision is stored in bit 15 of the fBits field.
108    * \param value  The value to set; true if the event triggered and should be
109    *     readout and false otherwise.
110    */
111   void Result(bool value) { SetBit(15, value); }
112   
113   /**
114    * Returns the name of the trigger decision.
115    */
116   const char* Name() const { return fName.Data(); }
117   
118   /**
119    * Sets the name of the trigger decision.
120    */
121   void Name(const char* name) { fName = name; }
122   
123   /**
124    * Returns the description of (reason for) the trigger decision.
125    */
126   const char* Description() const { return fDescription.Data(); }
127   
128   /**
129    * Sets the description of the trigger decision.
130    */
131   void Description(const char* value) { fDescription = value; }
132   
133   /**
134    * Returns the DDL readout list associated with this trigger decision.
135    */
136   AliHLTReadoutList ReadoutList() const { return AliHLTReadoutList(fTriggerDomain); }
137   
138   /**
139    * Sets the DDL readout list associated with this trigger decision.
140    */
141   void ReadoutList(const AliHLTReadoutList& value)
142   {
143     fTriggerDomain.Remove(kAliHLTDAQRDOUTDataTypeID, kAliHLTDataOriginAny);
144     fTriggerDomain.Add(value);
145   }
146   
147   /**
148    * Returns the trigger domain associated with this trigger decision.
149    */
150   const AliHLTTriggerDomain& TriggerDomain() const { return fTriggerDomain; }
151   
152   /**
153    * Returns the trigger domain associated with this trigger decision for editing.
154    */
155   AliHLTTriggerDomain& TriggerDomain() { return fTriggerDomain; }
156   
157   /**
158    * Sets the trigger domain associated with this trigger decision.
159    */
160   void TriggerDomain(const AliHLTTriggerDomain& value) { fTriggerDomain = value; }
161   
162  private:
163   
164   TString fName; /// The name of the trigger decision. Should be the name of the trigger component that generated it.
165   TString fDescription; /// Optional descriptive text giving the reason for the trigger.
166   AliHLTTriggerDomain fTriggerDomain;  /// The trigger domain associated with this trigger. i.e. the HLT data blocks to read out.
167   
168   ClassDef(AliHLTTriggerDecision, 1) // HLT trigger decision object storing information about the readout list, trigger domain and result.
169 };
170
171 #endif // ALIHLTTRIGGERDECISION_H
172