]> git.uio.no Git - u/mrichter/AliRoot.git/blob - HLT/BASE/AliHLTTriggerDecision.h
Updates in D-meson PID class:
[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    * Copy constructor performs a deep copy.
36    */
37   AliHLTTriggerDecision(const AliHLTTriggerDecision& obj);
38   
39   /**
40    * Constructor specifying the result and trigger name.
41    * \param result  The result of the trigger decision.
42    * \param name  The name of the trigger decision. Should be the name of the
43    *     AliHLTTrigger component.
44    */
45   AliHLTTriggerDecision(bool result, const char* name);
46   
47   /**
48    * Constructor specifying all information fields.
49    * \param result  The result of the trigger decision.
50    * \param name  The name of the trigger decision. Should be the name of the
51    *     AliHLTTrigger component.
52    * \param triggerDomain  The trigger domain for the trigger decision.
53    * \param description  The description of (reason for) the trigger decision.
54    */
55   AliHLTTriggerDecision(
56       bool result, const char* name, const AliHLTTriggerDomain& triggerDomain,
57       const char* description = ""
58     );
59   
60   /**
61    * Default destructor.
62    */
63   virtual ~AliHLTTriggerDecision();
64   
65   /**
66    * Inherited from TObject. Returns the name of the trigger decision.
67    */
68   virtual const char* GetName() const { return fName.Data(); }
69   
70   /**
71    * Inherited from TObject. Returns the description of the trigger decision.
72    */
73   virtual const char* GetTitle() const { return fDescription.Data(); }
74   
75   /**
76    * Inherited from TObject. This prints the contents of the trigger decision.
77    * \param option  Can be "short" which will print the short format.
78    */
79   virtual void Print(Option_t* option = "") const;
80
81   /**
82    * Inherited from TObject. Copy this to the specified object.
83    */
84   virtual void Copy(TObject &object) const;
85
86   /**
87    * Inherited from TObject. Create a new clone.
88    */
89   virtual TObject *Clone(const char *newname="") const;
90
91   /**
92    * Inherited from TObject. Return the result of the trigger.
93    * @return   "0" or "1" (note: its a string)
94    */
95   virtual Option_t *GetOption() const;
96
97   /**
98    * Returns the result of the trigger decision.
99    * \returns true if the event was triggered and should be readout.
100    */
101   bool EventTriggered() const { return Result(); }
102   
103   /**
104    * Returns the result of the trigger decision.
105    * The decision is stored in bit 15 of the fBits field.
106    * \returns true if the event was triggered and should be readout.
107    */
108   bool Result() const;
109   
110   /**
111    * Sets the result of the trigger decision.
112    * The decision is stored in bit 15 of the fBits field.
113    * \param value  The value to set; true if the event triggered and should be
114    *     readout and false otherwise.
115    */
116   void Result(bool value);
117   
118   /**
119    * Returns the name of the trigger decision.
120    */
121   const char* Name() const { return fName.Data(); }
122   
123   /**
124    * Sets the name of the trigger decision.
125    */
126   void Name(const char* name) { fName = name; }
127   
128   /**
129    * Returns the description of (reason for) the trigger decision.
130    */
131   const char* Description() const { return fDescription.Data(); }
132   
133   /**
134    * Sets the description of the trigger decision.
135    */
136   void Description(const char* value) { fDescription = value; }
137   
138   /**
139    * Returns the DDL readout list associated with this trigger decision.
140    */
141   AliHLTReadoutList ReadoutList() const { return AliHLTReadoutList(fTriggerDomain); }
142   
143   /**
144    * Sets the DDL readout list associated with this trigger decision.
145    */
146   void ReadoutList(const AliHLTReadoutList& value);
147   
148   /**
149    * Returns the trigger domain associated with this trigger decision.
150    */
151   const AliHLTTriggerDomain& TriggerDomain() const { return fTriggerDomain; }
152   
153   /**
154    * Returns the trigger domain associated with this trigger decision for editing.
155    */
156   AliHLTTriggerDomain& TriggerDomain() { return fTriggerDomain; }
157   
158   /**
159    * Sets the trigger domain associated with this trigger decision.
160    */
161   void TriggerDomain(const AliHLTTriggerDomain& value) { fTriggerDomain = value; }
162   
163   /**
164    * Assignment operator performs a deep copy.
165    */
166   AliHLTTriggerDecision& operator = (const AliHLTTriggerDecision& obj);
167   
168   /**
169    * This method clears the trigger domain and sets the decision result to false.
170    * \param  option  This is passed onto the trigger domain clear method.
171    * The method is inherited from TObject.
172    */
173   virtual void Clear(Option_t* option = "C");
174   
175  private:
176   
177   TString fName; /// The name of the trigger decision. Should be the name of the trigger component that generated it.
178   TString fDescription; /// Optional descriptive text giving the reason for the trigger.
179   AliHLTTriggerDomain fTriggerDomain;  /// The trigger domain associated with this trigger. i.e. the HLT data blocks to read out.
180   
181   ClassDef(AliHLTTriggerDecision, 2) // HLT trigger decision object storing information about the readout list, trigger domain and result.
182 };
183
184 #endif // ALIHLTTRIGGERDECISION_H
185