]>
Commit | Line | Data |
---|---|---|
c580e182 | 1 | //-*- Mode: C++ -*- |
81d62bb4 | 2 | // $Id$ |
52f67e50 | 3 | #ifndef ALIHLTGLOBALTRIGGERCONFIG_H |
4 | #define ALIHLTGLOBALTRIGGERCONFIG_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 AliHLTGlobalTriggerConfig.h | |
10 | /// @author Artur Szostak <artursz@iafrica.com> | |
11 | /// @date 28 Dec 2008 | |
12 | /// @brief Declaration of the AliHLTGlobalTriggerConfig class. | |
13 | ||
14 | #include "TObject.h" | |
15 | ||
16 | class AliHLTComponentDataType; | |
17 | class AliHLTTriggerMenu; | |
acc7214e | 18 | class AliHLTTriggerDomain; |
52f67e50 | 19 | |
20 | /** | |
21 | * \class AliHLTGlobalTriggerConfig | |
22 | * This class is a user interface class used to make it easy to create HLT global | |
23 | * trigger configurations (trigger menus). | |
81d62bb4 | 24 | * |
25 | * \note The following symbol names are reserved and should not be used in any | |
26 | * of the trigger conditions, merging expressions or trigger menu symbols: | |
27 | * _domain_ | |
28 | * _description_ | |
29 | * _item_result_ | |
30 | * _group_result_ | |
31 | * _previous_match_ | |
32 | * _trigger_matched_ | |
52f67e50 | 33 | */ |
34 | class AliHLTGlobalTriggerConfig | |
35 | { | |
36 | public: | |
37 | ||
38 | /** | |
39 | * Default constructor. | |
40 | */ | |
41 | AliHLTGlobalTriggerConfig(const char* name = NULL); | |
42 | ||
43 | /** | |
44 | * Default destructor. | |
45 | */ | |
46 | virtual ~AliHLTGlobalTriggerConfig(); | |
47 | ||
4d40957a | 48 | /** |
49 | * Inherited from TObject, this prints the contents of the current trigger menu | |
50 | * being manipulated. Specifically fgMenu. | |
51 | * \param option This is passed on to the printing routine of the trigger menu. | |
52 | */ | |
53 | virtual void Print(Option_t* option = "") const; | |
54 | ||
52f67e50 | 55 | /** |
56 | * Creates a new trigger menu. If a trigger menu is already active then the existing | |
57 | * one is replaced with the new menu. | |
58 | * \param name The name of the new trigger menu. | |
59 | */ | |
60 | static void NewMenu(const char* name); | |
61 | ||
62 | /** | |
63 | * Deletes the current trigger menu. | |
64 | */ | |
65 | static void Clear(); | |
66 | ||
67 | /** | |
68 | * Returns the current trigger menu. | |
69 | */ | |
70 | static const AliHLTTriggerMenu* Menu() { return fgMenu; } | |
71 | ||
e8b1e4ab | 72 | /** |
73 | * Adds a new constant symbol to the current trigger menu. | |
74 | * This is useful to add symbols that are used as constants in the trigger | |
75 | * menu condition or merging expressions. | |
76 | * \param name The name of the symbol. It must be a valid C++ variable name. | |
77 | * \param type The data type of the symbol. It must be a valid C++ data type. | |
78 | * \param defaultExpr The default value to use for the symbol. It must be a | |
79 | * valid C++ expression. | |
80 | */ | |
81 | static void AddSymbol( | |
82 | const char* name, const char* type, const char* defaultExpr | |
83 | ); | |
84 | ||
52f67e50 | 85 | /** |
86 | * Adds a new symbol to the current trigger menu. | |
87 | * \param name The name of the symbol. It must be a valid C++ variable name. | |
88 | * \param type The data type of the symbol. It must be a valid C++ data type. | |
89 | * \param assignExpr The assignment expression for the symbol. It must be a | |
90 | * valid C++ expression. The 'this' keyword is used as a place holder for | |
91 | * the object found in the data block. | |
92 | * \param defaultExpr The default value to use for the symbol. It must be a | |
93 | * valid C++ expression. | |
94 | * \param className The class name of the object found in the data block from | |
95 | * which to fetch the symbol's value. | |
96 | */ | |
97 | static void AddSymbol( | |
98 | const char* name, const char* type, const char* assignExpr, | |
99 | const char* defaultExpr, const char* className = "TObject" | |
100 | ); | |
101 | ||
102 | /** | |
103 | * Adds a new symbol to the current trigger menu. | |
104 | * \param name The name of the symbol. It must be a valid C++ variable name. | |
105 | * \param type The data type of the symbol. It must be a valid C++ data type. | |
106 | * \param assignExpr The assignment expression for the symbol. It must be a | |
107 | * valid C++ expression. The 'this' keyword is used as a place holder for | |
108 | * the object found in the data block. | |
109 | * \param defaultExpr The default value to use for the symbol. It must be a | |
110 | * valid C++ expression. | |
111 | * \param className The class name of the object found in the data block from | |
112 | * which to fetch the symbol's value. | |
113 | * \param blockType The data block type and origin from which to fetch the | |
114 | * symbol's value. | |
115 | */ | |
116 | static void AddSymbol( | |
117 | const char* name, const char* type, const char* assignExpr, | |
118 | const char* defaultExpr, const char* className, | |
119 | const AliHLTComponentDataType& blockType | |
120 | ); | |
121 | ||
122 | /** | |
123 | * Adds a new symbol to the current trigger menu. | |
124 | * \param name The name of the symbol. It must be a valid C++ variable name. | |
125 | * \param type The data type of the symbol. It must be a valid C++ data type. | |
126 | * \param assignExpr The assignment expression for the symbol. It must be a | |
127 | * valid C++ expression. The 'this' keyword is used as a place holder for | |
128 | * the object found in the data block. | |
129 | * \param defaultExpr The default value to use for the symbol. It must be a | |
130 | * valid C++ expression. | |
131 | * \param className The class name of the object found in the data block from | |
132 | * which to fetch the symbol's value. | |
133 | * \param blockType The data block type and origin from which to fetch the | |
134 | * symbol's value. | |
135 | * \param spec The data block specification to use. | |
136 | */ | |
137 | static void AddSymbol( | |
138 | const char* name, const char* type, const char* assignExpr, | |
139 | const char* defaultExpr, const char* className, | |
140 | const AliHLTComponentDataType& blockType, UInt_t spec | |
141 | ); | |
142 | ||
143 | /** | |
144 | * Adds a new symbol to the current trigger menu. | |
145 | * \param name The name of the symbol. It must be a valid C++ variable name. | |
146 | * \param type The data type of the symbol. It must be a valid C++ data type. | |
147 | * \param assignExpr The assignment expression for the symbol. It must be a | |
148 | * valid C++ expression. The 'this' keyword is used as a place holder for | |
149 | * the object found in the data block. | |
150 | * \param defaultExpr The default value to use for the symbol. It must be a | |
151 | * valid C++ expression. | |
152 | * \param className The class name of the object found in the data block from | |
153 | * which to fetch the symbol's value. | |
154 | * \param blockType The data block type string of the data block. The value | |
155 | * kAliHLTAnyDataTypeID can be used to specify the any type wild card value. | |
156 | * \param origin The origin of the data block, such as the detector name. | |
157 | * The value kAliHLTDataOriginAny can be used to specify the any origin | |
158 | * wild card value. | |
159 | */ | |
160 | static void AddSymbol( | |
161 | const char* name, const char* type, const char* assignExpr, | |
162 | const char* defaultExpr, const char* className, | |
163 | const char* blockType, const char* origin | |
164 | ); | |
165 | ||
166 | /** | |
167 | * Adds a new symbol to the current trigger menu. | |
168 | * \param name The name of the symbol. It must be a valid C++ variable name. | |
169 | * \param type The data type of the symbol. It must be a valid C++ data type. | |
170 | * \param assignExpr The assignment expression for the symbol. It must be a | |
171 | * valid C++ expression. The 'this' keyword is used as a place holder for | |
172 | * the object found in the data block. | |
173 | * \param defaultExpr The default value to use for the symbol. It must be a | |
174 | * valid C++ expression. | |
175 | * \param className The class name of the object found in the data block from | |
176 | * which to fetch the symbol's value. | |
177 | * \param blockType The data block type string of the data block. The value | |
178 | * kAliHLTAnyDataTypeID can be used to specify the any type wild card value. | |
179 | * \param origin The origin of the data block, such as the detector name. | |
180 | * The value kAliHLTDataOriginAny can be used to specify the any origin | |
181 | * wild card value. | |
182 | * \param spec The data block specification to use. | |
183 | */ | |
184 | static void AddSymbol( | |
185 | const char* name, const char* type, const char* assignExpr, | |
186 | const char* defaultExpr, const char* className, | |
187 | const char* blockType, const char* origin, UInt_t spec | |
188 | ); | |
189 | ||
81d62bb4 | 190 | /** |
191 | * Adds a new trigger menu item to the current trigger menu with a particular priority. | |
192 | * \param priority The priority group this entry should be part of. Higher numbers | |
193 | * indicate higher priorities. | |
194 | * \param conditionExpr The trigger condition expression. It must be a valid | |
195 | * C++ expression, where the symbol names must be either defined in the | |
196 | * menu or the names of AliHLTTrigger components. | |
197 | * \param domainExpr The trigger domain merging expression. It must be a | |
198 | * valid C++ expression, where the symbol names must be either defined in | |
199 | * the menu or the names of AliHLTTrigger components. | |
200 | * \param prescalar The prescalar value to use (Zero if not used). | |
201 | * \param description Optional description string which will be used in the | |
202 | * global result. | |
f925a066 | 203 | * \param defaultResult The default result to use for the global trigger decision |
204 | * if this item's trigger condition is matched. | |
81d62bb4 | 205 | */ |
206 | static void AddItem( | |
207 | UInt_t priority, const char* conditionExpr, const char* domainExpr, | |
f925a066 | 208 | UInt_t prescalar, const char* description = NULL, bool defaultResult = true |
81d62bb4 | 209 | ); |
210 | ||
52f67e50 | 211 | /** |
f925a066 | 212 | * Adds a new trigger menu item to the current trigger menu with a particular priority. |
213 | * \param priority The priority group this entry should be part of. Higher numbers | |
214 | * indicate higher priorities. | |
52f67e50 | 215 | * \param conditionExpr The trigger condition expression. It must be a valid |
216 | * C++ expression, where the symbol names must be either defined in the | |
217 | * menu or the names of AliHLTTrigger components. | |
218 | * \param domainExpr The trigger domain merging expression. It must be a | |
219 | * valid C++ expression, where the symbol names must be either defined in | |
220 | * the menu or the names of AliHLTTrigger components. | |
52f67e50 | 221 | * \param description Optional description string which will be used in the |
222 | * global result. | |
f925a066 | 223 | * \param scaledown The scale-down factor to use as a percentage in the range [0..100]. |
224 | * \param defaultResult The default result to use for the global trigger decision | |
225 | * if this item's trigger condition is matched. | |
52f67e50 | 226 | */ |
227 | static void AddItem( | |
f925a066 | 228 | UInt_t priority, const char* conditionExpr, const char* domainExpr, |
229 | const char* description = NULL, Double_t scaledown = 100, bool defaultResult = true | |
52f67e50 | 230 | ); |
231 | ||
81d62bb4 | 232 | /** |
f925a066 | 233 | * Adds a new trigger menu item to the current trigger menu. |
81d62bb4 | 234 | * \param conditionExpr The trigger condition expression. It must be a valid |
235 | * C++ expression, where the symbol names must be either defined in the | |
236 | * menu or the names of AliHLTTrigger components. | |
237 | * \param domainExpr The trigger domain merging expression. It must be a | |
238 | * valid C++ expression, where the symbol names must be either defined in | |
239 | * the menu or the names of AliHLTTrigger components. | |
f925a066 | 240 | * \param prescalar The prescalar value to use (Zero if not used). |
81d62bb4 | 241 | * \param description Optional description string which will be used in the |
242 | * global result. | |
243 | */ | |
244 | static void AddItem( | |
f925a066 | 245 | const char* conditionExpr, const char* domainExpr, UInt_t prescalar, |
81d62bb4 | 246 | const char* description = NULL |
247 | ); | |
248 | ||
52f67e50 | 249 | /** |
250 | * Adds a new trigger menu item to the current trigger menu. | |
251 | * \param conditionExpr The trigger condition expression. It must be a valid | |
252 | * C++ expression, where the symbol names must be either defined in the | |
253 | * menu or the names of AliHLTTrigger components. | |
254 | * \param domainExpr The trigger domain merging expression. It must be a | |
255 | * valid C++ expression, where the symbol names must be either defined in | |
256 | * the menu or the names of AliHLTTrigger components. | |
257 | * \param description Optional description string which will be used in the | |
258 | * global result. | |
259 | */ | |
260 | static void AddItem( | |
261 | const char* conditionExpr, const char* domainExpr, | |
262 | const char* description = NULL | |
263 | ); | |
264 | ||
acc7214e | 265 | /** |
266 | * Sets the default trigger description string that should be used by the global | |
267 | * trigger component for trigger decisions that have a negative (false) trigger | |
268 | * result. | |
269 | * \param description The trigger description string to use. | |
270 | */ | |
271 | static void SetDefaultTriggerDescription(const char* description); | |
272 | ||
273 | /** | |
274 | * This method sets the default trigger domain to use by the global trigger | |
275 | * component or trigger decisions that have a negative (false) trigger result. | |
276 | * \param domain The new value of the default trigger domain. | |
277 | */ | |
278 | static void SetDefaultTriggerDomain(const AliHLTTriggerDomain& domain); | |
279 | ||
280 | /** | |
281 | * Fetches the default trigger domain that will be used by the global trigger | |
282 | * component or trigger decisions that have a negative (false) trigger result. | |
283 | * \returns The default trigger domain for the current trigger menu. | |
284 | */ | |
285 | static AliHLTTriggerDomain& DefaultTriggerDomain(); | |
286 | ||
81d62bb4 | 287 | /** |
288 | * This method sets the default operator used to merge trigger conditions from | |
289 | * the same trigger menu priority group. | |
290 | * The trigger menu normally uses the 'or' operator. | |
291 | * \param op The new default operator to use. | |
292 | */ | |
293 | static void SetDefaultConditionOperator(const char* op); | |
294 | ||
295 | /** | |
296 | * This method sets the default operator used to merge trigger domains from | |
297 | * the same trigger menu priority group that get matched. | |
298 | * The trigger menu normally uses the '|' operator. | |
299 | * \param op The new default operator to use. | |
300 | */ | |
301 | static void SetDefaultDomainOperator(const char* op); | |
302 | ||
f925a066 | 303 | /** |
304 | * Set the default result for the global trigger if no item is matched. | |
305 | */ | |
306 | static void SetDefaultResult(bool value); | |
307 | ||
52f67e50 | 308 | private: |
309 | ||
310 | /// Not implemented. Do not allow copying of this object. | |
311 | AliHLTGlobalTriggerConfig(const AliHLTGlobalTriggerConfig& obj); | |
312 | /// Not implemented. Do not allow copying of this object. | |
313 | AliHLTGlobalTriggerConfig& operator = (const AliHLTGlobalTriggerConfig& obj); | |
314 | ||
315 | static AliHLTTriggerMenu* fgMenu; /// Trigger menu which is created by this interface class. | |
316 | ||
317 | ClassDef(AliHLTGlobalTriggerConfig, 0) // Interface class used to construct a global HLT trigger menu configuration. | |
318 | }; | |
319 | ||
320 | #endif // ALIHLTGLOBALTRIGGERCONFIG_H | |
321 |