1 /**************************************************************************
2 * This file is property of and copyright by the ALICE HLT Project *
3 * ALICE Experiment at CERN, All rights reserved. *
5 * Primary Authors: Artur Szostak <artursz@iafrica.com> *
6 * for The ALICE HLT Project. *
8 * Permission to use, copy, modify and distribute this software and its *
9 * documentation strictly for non-commercial purposes is hereby granted *
10 * without fee, provided that the above copyright notice appears in all *
11 * copies and that both the copyright notice and this permission notice *
12 * appear in the supporting documentation. The authors make no claims *
13 * about the suitability of this software for any purpose. It is *
14 * provided "as is" without express or implied warranty. *
15 **************************************************************************/
17 /// @file AliHLTGlobalTriggerConfig.cxx
18 /// @author Artur Szostak <artursz@iafrica.com>
20 /// @brief Implementation of the AliHLTGlobalTriggerConfig class.
22 /// The AliHLTGlobalTriggerConfigComponent class is an interface class used to create
23 /// global HLT trigger menu configurations.
25 #include "AliHLTGlobalTriggerConfig.h"
26 #include "AliHLTTriggerMenu.h"
27 #include "Riostream.h"
29 ClassImp(AliHLTGlobalTriggerConfig)
31 AliHLTTriggerMenu* AliHLTGlobalTriggerConfig::fgMenu = NULL;
34 AliHLTGlobalTriggerConfig::AliHLTGlobalTriggerConfig(const char* name)
36 // Default constructor.
42 AliHLTGlobalTriggerConfig::~AliHLTGlobalTriggerConfig()
44 // Default destructor.
48 void AliHLTGlobalTriggerConfig::NewMenu(const char* name)
50 // Creates a new trigger menu.
57 fgMenu = new AliHLTTriggerMenu;
62 void AliHLTGlobalTriggerConfig::Clear()
64 // Deletes the current trigger menu.
74 void AliHLTGlobalTriggerConfig::AddSymbol(
75 const char* name, const char* type, const char* defaultExpr
78 // Adds a new constant symbol to the trigger menu.
80 if (fgMenu == NULL) NewMenu("");
82 AliHLTTriggerMenuSymbol entry;
85 entry.ObjectClass("");
86 entry.AssignExpression("");
87 entry.DefaultValue(defaultExpr);
88 fgMenu->AddSymbol(entry);
92 void AliHLTGlobalTriggerConfig::AddSymbol(
93 const char* name, const char* type, const char* assignExpr,
94 const char* defaultExpr, const char* className
97 // Adds a new symbol to the trigger menu.
99 if (fgMenu == NULL) NewMenu("");
101 AliHLTTriggerMenuSymbol entry;
104 entry.ObjectClass(className);
105 entry.AssignExpression(assignExpr);
106 entry.DefaultValue(defaultExpr);
107 fgMenu->AddSymbol(entry);
111 void AliHLTGlobalTriggerConfig::AddSymbol(
112 const char* name, const char* type, const char* assignExpr,
113 const char* defaultExpr, const char* className,
114 const AliHLTComponentDataType& blockType
117 // Adds a new symbol to the trigger menu.
119 if (fgMenu == NULL) NewMenu("");
121 AliHLTTriggerMenuSymbol entry;
124 entry.ObjectClass(className);
125 entry.AssignExpression(assignExpr);
126 entry.DefaultValue(defaultExpr);
127 entry.BlockType(blockType);
128 fgMenu->AddSymbol(entry);
132 void AliHLTGlobalTriggerConfig::AddSymbol(
133 const char* name, const char* type, const char* assignExpr,
134 const char* defaultExpr, const char* className,
135 const AliHLTComponentDataType& blockType, UInt_t spec
138 // Adds a new symbol to the trigger menu.
140 if (fgMenu == NULL) NewMenu("");
142 AliHLTTriggerMenuSymbol entry;
145 entry.ObjectClass(className);
146 entry.AssignExpression(assignExpr);
147 entry.DefaultValue(defaultExpr);
148 entry.BlockType(blockType, spec);
149 fgMenu->AddSymbol(entry);
153 void AliHLTGlobalTriggerConfig::AddSymbol(
154 const char* name, const char* type, const char* assignExpr,
155 const char* defaultExpr, const char* className,
156 const char* blockType, const char* origin
159 // Adds a new symbol to the trigger menu.
161 if (fgMenu == NULL) NewMenu("");
163 AliHLTTriggerMenuSymbol entry;
166 entry.ObjectClass(className);
167 entry.AssignExpression(assignExpr);
168 entry.DefaultValue(defaultExpr);
169 entry.BlockType(blockType, origin);
170 fgMenu->AddSymbol(entry);
174 void AliHLTGlobalTriggerConfig::AddSymbol(
175 const char* name, const char* type, const char* assignExpr,
176 const char* defaultExpr, const char* className,
177 const char* blockType, const char* origin, UInt_t spec
180 // Adds a new symbol to the trigger menu.
182 if (fgMenu == NULL) NewMenu("");
184 AliHLTTriggerMenuSymbol entry;
187 entry.ObjectClass(className);
188 entry.AssignExpression(assignExpr);
189 entry.DefaultValue(defaultExpr);
190 entry.BlockType(blockType, origin, spec);
191 fgMenu->AddSymbol(entry);
195 void AliHLTGlobalTriggerConfig::AddItem(
196 const char* conditionExpr, const char* domainExpr, UInt_t prescalar,
197 const char* description
200 // Adds a new entry to the trigger menu.
202 if (fgMenu == NULL) NewMenu("");
204 AliHLTTriggerMenuItem entry;
205 entry.TriggerCondision(conditionExpr);
206 entry.MergeExpression(domainExpr);
207 entry.PreScalar(prescalar);
208 if (description != NULL) entry.Description(description);
209 fgMenu->AddItem(entry);
213 void AliHLTGlobalTriggerConfig::AddItem(
214 const char* conditionExpr, const char* domainExpr, const char* description
217 // Adds a new entry to the trigger menu.
219 if (fgMenu == NULL) NewMenu("");
221 AliHLTTriggerMenuItem entry;
222 entry.TriggerCondision(conditionExpr);
223 entry.MergeExpression(domainExpr);
224 if (description != NULL) entry.Description(description);
225 fgMenu->AddItem(entry);
229 void AliHLTGlobalTriggerConfig::SetDefaultTriggerDescription(const char* description)
231 // Sets the default trigger decription.
233 if (fgMenu == NULL) NewMenu("");
234 fgMenu->DefaultDescription(description);
238 void AliHLTGlobalTriggerConfig::SetDefaultTriggerDomain(const AliHLTTriggerDomain& domain)
240 // Sets the default trigger domain.
242 if (fgMenu == NULL) NewMenu("");
243 fgMenu->DefaultTriggerDomain(domain);
247 AliHLTTriggerDomain& AliHLTGlobalTriggerConfig::DefaultTriggerDomain()
249 // Returns the default trigger domain for the current trigger menu.
251 if (fgMenu == NULL) NewMenu("");
252 return fgMenu->DefaultTriggerDomain();
256 void AliHLTGlobalTriggerConfig::Print(Option_t* option) const
258 // Prints the contents of the current trigger menu being manipulated.
262 fgMenu->Print(option);
266 cout << "No trigger menu currently being configured, it is empty." << endl;