added EMCAL electron trigger component and related modifications
[u/mrichter/AliRoot.git] / HLT / trigger / AliHLTGlobalTriggerConfig.h
CommitLineData
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
16class AliHLTComponentDataType;
17class AliHLTTriggerMenu;
acc7214e 18class 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 */
34class 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
48 /**
4d40957a 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
55 /**
52f67e50 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
72 /**
e8b1e4ab 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
85 /**
52f67e50 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
190 /**
81d62bb4 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
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
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
249 /**
52f67e50 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