]> git.uio.no Git - u/mrichter/AliRoot.git/blob - HLT/trigger/AliHLTGlobalTriggerConfig.cxx
4a0e8d3dbffd04121d98f7f4a08befc41bc97cbe
[u/mrichter/AliRoot.git] / HLT / trigger / AliHLTGlobalTriggerConfig.cxx
1 /**************************************************************************
2  * This file is property of and copyright by the ALICE HLT Project        *
3  * ALICE Experiment at CERN, All rights reserved.                         *
4  *                                                                        *
5  * Primary Authors: Artur Szostak <artursz@iafrica.com>                   *
6  *                  for The ALICE HLT Project.                            *
7  *                                                                        *
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  **************************************************************************/
16
17 /// @file   AliHLTGlobalTriggerConfig.cxx
18 /// @author Artur Szostak <artursz@iafrica.com>
19 /// @date   28 Dec 2008
20 /// @brief  Implementation of the AliHLTGlobalTriggerConfig class.
21 ///
22 /// The AliHLTGlobalTriggerConfigComponent class is an interface class used to create
23 /// global HLT trigger menu configurations.
24
25 #include "AliHLTGlobalTriggerConfig.h"
26 #include "AliHLTTriggerMenu.h"
27 #include "Riostream.h"
28
29 ClassImp(AliHLTGlobalTriggerConfig)
30
31 AliHLTTriggerMenu* AliHLTGlobalTriggerConfig::fgMenu = NULL;
32
33
34 AliHLTGlobalTriggerConfig::AliHLTGlobalTriggerConfig(const char* name)
35 {
36   // Default constructor.
37   
38   NewMenu(name);
39 }
40
41
42 AliHLTGlobalTriggerConfig::~AliHLTGlobalTriggerConfig()
43 {
44   // Default destructor.
45 }
46
47
48 void AliHLTGlobalTriggerConfig::NewMenu(const char* name)
49 {
50   // Creates a new trigger menu.
51   
52   if (fgMenu != NULL)
53   {
54     delete fgMenu;
55     fgMenu = NULL;
56   }
57   fgMenu = new AliHLTTriggerMenu;
58   fgMenu->Name(name);
59 }
60
61
62 void AliHLTGlobalTriggerConfig::Clear()
63 {
64   // Deletes the current trigger menu.
65   
66   if (fgMenu != NULL)
67   {
68     delete fgMenu;
69     fgMenu = NULL;
70   }
71 }
72
73
74 void AliHLTGlobalTriggerConfig::AddSymbol(
75     const char* name, const char* type, const char* assignExpr,
76     const char* defaultExpr, const char* className
77   )
78 {
79   // Adds a new symbol to the trigger menu.
80   
81   if (fgMenu == NULL) NewMenu("");
82   
83   AliHLTTriggerMenuSymbol entry;
84   entry.Name(name);
85   entry.Type(type);
86   entry.ObjectClass(className);
87   entry.AssignExpression(assignExpr);
88   entry.DefaultValue(defaultExpr);
89   fgMenu->AddSymbol(entry);
90 }
91
92
93 void AliHLTGlobalTriggerConfig::AddSymbol(
94     const char* name, const char* type, const char* assignExpr,
95     const char* defaultExpr, const char* className,
96     const AliHLTComponentDataType& blockType
97   )
98 {
99   // Adds a new symbol to the trigger menu.
100   
101   if (fgMenu == NULL) NewMenu("");
102   
103   AliHLTTriggerMenuSymbol entry;
104   entry.Name(name);
105   entry.Type(type);
106   entry.ObjectClass(className);
107   entry.AssignExpression(assignExpr);
108   entry.DefaultValue(defaultExpr);
109   entry.BlockType(blockType);
110   fgMenu->AddSymbol(entry);
111 }
112
113
114 void AliHLTGlobalTriggerConfig::AddSymbol(
115     const char* name, const char* type, const char* assignExpr,
116     const char* defaultExpr, const char* className,
117     const AliHLTComponentDataType& blockType, UInt_t spec
118   )
119 {
120   // Adds a new symbol to the trigger menu.
121   
122   if (fgMenu == NULL) NewMenu("");
123   
124   AliHLTTriggerMenuSymbol entry;
125   entry.Name(name);
126   entry.Type(type);
127   entry.ObjectClass(className);
128   entry.AssignExpression(assignExpr);
129   entry.DefaultValue(defaultExpr);
130   entry.BlockType(blockType, spec);
131   fgMenu->AddSymbol(entry);
132 }
133
134
135 void AliHLTGlobalTriggerConfig::AddSymbol(
136     const char* name, const char* type, const char* assignExpr,
137     const char* defaultExpr, const char* className,
138     const char* blockType, const char* origin
139   )
140 {
141   // Adds a new symbol to the trigger menu.
142   
143   if (fgMenu == NULL) NewMenu("");
144   
145   AliHLTTriggerMenuSymbol entry;
146   entry.Name(name);
147   entry.Type(type);
148   entry.ObjectClass(className);
149   entry.AssignExpression(assignExpr);
150   entry.DefaultValue(defaultExpr);
151   entry.BlockType(blockType, origin);
152   fgMenu->AddSymbol(entry);
153 }
154
155
156 void AliHLTGlobalTriggerConfig::AddSymbol(
157     const char* name, const char* type, const char* assignExpr,
158     const char* defaultExpr, const char* className,
159     const char* blockType, const char* origin, UInt_t spec
160   )
161 {
162   // Adds a new symbol to the trigger menu.
163   
164   if (fgMenu == NULL) NewMenu("");
165   
166   AliHLTTriggerMenuSymbol entry;
167   entry.Name(name);
168   entry.Type(type);
169   entry.ObjectClass(className);
170   entry.AssignExpression(assignExpr);
171   entry.DefaultValue(defaultExpr);
172   entry.BlockType(blockType, origin, spec);
173   fgMenu->AddSymbol(entry);
174 }
175
176
177 void AliHLTGlobalTriggerConfig::AddItem(
178     const char* conditionExpr, const char* domainExpr, UInt_t prescalar,
179     const char* description
180   )
181 {
182   // Adds a new entry to the trigger menu.
183   
184   if (fgMenu == NULL) NewMenu("");
185   
186   AliHLTTriggerMenuItem entry;
187   entry.TriggerCondision(conditionExpr);
188   entry.MergeExpression(domainExpr);
189   entry.PreScalar(prescalar);
190   if (description != NULL) entry.Description(description);
191   fgMenu->AddItem(entry);
192 }
193
194
195 void AliHLTGlobalTriggerConfig::AddItem(
196     const char* conditionExpr, const char* domainExpr, const char* description
197   )
198 {
199   // Adds a new entry to the trigger menu.
200   
201   if (fgMenu == NULL) NewMenu("");
202   
203   AliHLTTriggerMenuItem entry;
204   entry.TriggerCondision(conditionExpr);
205   entry.MergeExpression(domainExpr);
206   if (description != NULL) entry.Description(description);
207   fgMenu->AddItem(entry);
208 }
209
210
211 void AliHLTGlobalTriggerConfig::Print(Option_t* option) const
212 {
213   // Prints the contents of the current trigger menu being manipulated.
214   
215   if (fgMenu != NULL)
216   {
217     fgMenu->Print(option);
218   }
219   else
220   {
221     cout << "No trigger menu currently being configured, it is empty." << endl;
222   }
223 }
224