source: trunk/examples/advanced/radiation_monitor/analysis/src/RadmonAnalysisMessenger.cc @ 1321

Last change on this file since 1321 was 807, checked in by garnier, 16 years ago

update

File size: 11.5 KB
Line 
1//
2// ********************************************************************
3// * License and Disclaimer                                           *
4// *                                                                  *
5// * The  Geant4 software  is  copyright of the Copyright Holders  of *
6// * the Geant4 Collaboration.  It is provided  under  the terms  and *
7// * conditions of the Geant4 Software License,  included in the file *
8// * LICENSE and available at  http://cern.ch/geant4/license .  These *
9// * include a list of copyright holders.                             *
10// *                                                                  *
11// * Neither the authors of this software system, nor their employing *
12// * institutes,nor the agencies providing financial support for this *
13// * work  make  any representation or  warranty, express or implied, *
14// * regarding  this  software system or assume any liability for its *
15// * use.  Please see the license in the file  LICENSE  and URL above *
16// * for the full disclaimer and the limitation of liability.         *
17// *                                                                  *
18// * This  code  implementation is the result of  the  scientific and *
19// * technical work of the GEANT4 collaboration.                      *
20// * By using,  copying,  modifying or  distributing the software (or *
21// * any work based  on the software)  you  agree  to acknowledge its *
22// * use  in  resulting  scientific  publications,  and indicate your *
23// * acceptance of all terms of the Geant4 Software license.          *
24// ********************************************************************
25//
26//
27// File name:     RadmonAnalysisMessenger.cc
28// Creation date: Sep 2005
29// Main author:   Riccardo Capra <capra@ge.infn.it>
30//
31// Id:            $Id: RadmonAnalysisMessenger.cc,v 1.3 2006/06/29 16:07:39 gunter Exp $
32// Tag:           $Name:  $
33//
34
35// Messenger commands path
36#define COMMANDS_PATH "/radmon/analysis/"
37
38// Include files
39#include "RadmonAnalysisMessenger.hh"
40#include "RadmonVAnalysisLayout.hh"
41#include "G4UnitsTable.hh"
42
43
44
45                                                RadmonAnalysisMessenger :: RadmonAnalysisMessenger(RadmonVAnalysisLayout * layout)
46:
47 RadmonMessenger(COMMANDS_PATH, "Interactive analysis configuration commands."),
48 analysisLayout(layout),
49 RADMON_INITIALIZE_COMMAND(SetOutputFileName),
50 RADMON_INITIALIZE_COMMAND(SetOutputFileFormat),
51 RADMON_INITIALIZE_COMMAND(CreateSensitiveDetector),
52 RADMON_INITIALIZE_COMMAND(SetSensitiveDetectorType),
53 RADMON_INITIALIZE_COMMAND(RemoveSensitiveDetector),
54 RADMON_INITIALIZE_COMMAND(CreateSensitiveDetectorType),
55 RADMON_INITIALIZE_COMMAND(RemoveSensitiveDetectorType),
56 RADMON_INITIALIZE_COMMAND(AppendDataAnalysisToSensitiveDetectorType),
57 RADMON_INITIALIZE_COMMAND(SetDataAnalysisType),
58 RADMON_INITIALIZE_COMMAND(RemoveDataAnalysis),
59 RADMON_INITIALIZE_COMMAND(SetDataAnalysisAttribute),
60 RADMON_INITIALIZE_COMMAND(ClearDataAnalysisAttribute),
61 RADMON_INITIALIZE_COMMAND(DumpLayout),
62 RADMON_INITIALIZE_COMMAND(Load),
63 RADMON_INITIALIZE_COMMAND(Save)
64{
65 if (layout==0)
66  G4Exception("RadmonAnalysisMessenger::RadmonAnalysisMessenger: layout==0.");
67
68 RADMON_CREATE_COMMAND_1ARG (SetOutputFileName,                         "Sets the name of the analysis file",                         "fileName");
69 RADMON_CREATE_COMMAND_1ARG (SetOutputFileFormat,                       "Sets the format of the analysis file",                       "format");
70 RADMON_CREATE_COMMAND_2ARGS(CreateSensitiveDetector,                   "Creates a sensitive detector",                               "sensitiveDetectorName", "sensitiveDetectorType");
71 RADMON_CREATE_COMMAND_2ARGS(SetSensitiveDetectorType,                  "Changes the type of sensitive detector",                     "sensitiveDetectorName", "sensitiveDetectorType");
72 RADMON_CREATE_COMMAND_1ARG (RemoveSensitiveDetector,                   "Removes a sensitive detector",                               "sensitiveDetectorName");
73 RADMON_CREATE_COMMAND_1ARG (CreateSensitiveDetectorType,               "Creates a sensitive detector type",                          "sensitiveDetectorType");
74 RADMON_CREATE_COMMAND_1ARG (RemoveSensitiveDetectorType,               "Removes a sensitive detector type",                          "sensitiveDetectorType");
75 RADMON_CREATE_COMMAND_2ARGS(AppendDataAnalysisToSensitiveDetectorType, "Appends a analysis module to the sensitive detector type",   "sensitiveDetectorType", "analysisModuleLabel");
76 RADMON_CREATE_COMMAND_3ARGS(SetDataAnalysisType,                       "Sets the type of analysis module",                           "sensitiveDetectorType", "analysisModuleLabel", "analysisModuleType");
77 RADMON_CREATE_COMMAND_2ARGS(RemoveDataAnalysis,                        "Removes a analysis module from the sensitive detector type", "sensitiveDetectorType", "analysisModuleLabel");
78 RADMON_CREATE_COMMAND_4ARGS(SetDataAnalysisAttribute,                  "Sets an attribute of a analysis module",                     "sensitiveDetectorType", "analysisModuleLabel", "attributeName",     "attributeValue");
79 RADMON_CREATE_COMMAND_3ARGS(ClearDataAnalysisAttribute,                "Clears an attribute of a analysis module",                   "sensitiveDetectorType", "analysisModuleLabel", "attributeName");
80 RADMON_CREATE_COMMAND_0ARGS(DumpLayout,                                "Dumps the layout");
81 RADMON_CREATE_COMMAND_1ARG (Load,                                      "Loads the configuration from file",                          "fileName");
82 RADMON_CREATE_COMMAND_1ARG (Save,                                      "Saves the configuration from file",                          "fileName");
83}
84
85
86
87                                                RadmonAnalysisMessenger :: ~RadmonAnalysisMessenger()
88{
89 RADMON_DESTROY_COMMAND(Save);
90 RADMON_DESTROY_COMMAND(Load);
91 RADMON_DESTROY_COMMAND(DumpLayout);
92 RADMON_DESTROY_COMMAND(ClearDataAnalysisAttribute);
93 RADMON_DESTROY_COMMAND(SetDataAnalysisAttribute);
94 RADMON_DESTROY_COMMAND(RemoveDataAnalysis);
95 RADMON_DESTROY_COMMAND(SetDataAnalysisType);
96 RADMON_DESTROY_COMMAND(AppendDataAnalysisToSensitiveDetectorType);
97 RADMON_DESTROY_COMMAND(RemoveSensitiveDetectorType);
98 RADMON_DESTROY_COMMAND(CreateSensitiveDetectorType);
99 RADMON_DESTROY_COMMAND(RemoveSensitiveDetector);
100 RADMON_DESTROY_COMMAND(SetSensitiveDetectorType);
101 RADMON_DESTROY_COMMAND(CreateSensitiveDetector);
102 RADMON_DESTROY_COMMAND(SetOutputFileFormat);
103 RADMON_DESTROY_COMMAND(SetOutputFileName);
104}
105
106
107
108
109
110G4String                                        RadmonAnalysisMessenger :: GetCurrentValue(G4UIcommand * /* command */)
111{
112 G4cout << "RadmonAnalysisMessenger::GetCurrentValue(): Not supported" << G4endl;
113 
114 return G4String();
115}
116
117
118
119void                                            RadmonAnalysisMessenger :: SetNewValue(G4UIcommand * command, G4String newValue)
120{
121 RADMON_BEGIN_LIST_SET_COMMANDS
122  RADMON_SET_COMMAND(SetOutputFileName)
123  RADMON_SET_COMMAND(SetOutputFileFormat)
124  RADMON_SET_COMMAND(CreateSensitiveDetector)
125  RADMON_SET_COMMAND(SetSensitiveDetectorType)
126  RADMON_SET_COMMAND(RemoveSensitiveDetector)
127  RADMON_SET_COMMAND(CreateSensitiveDetectorType)
128  RADMON_SET_COMMAND(RemoveSensitiveDetectorType)
129  RADMON_SET_COMMAND(AppendDataAnalysisToSensitiveDetectorType)
130  RADMON_SET_COMMAND(SetDataAnalysisType)
131  RADMON_SET_COMMAND(RemoveDataAnalysis)
132  RADMON_SET_COMMAND(SetDataAnalysisAttribute)
133  RADMON_SET_COMMAND(ClearDataAnalysisAttribute)
134  RADMON_SET_COMMAND(DumpLayout)
135  RADMON_SET_COMMAND(Load)
136  RADMON_SET_COMMAND(Save)
137 RADMON_END_LIST_SET_COMMANDS
138}
139
140
141
142
143
144// Events
145void                                            RadmonAnalysisMessenger :: OnSetOutputFileName(const G4String & value)
146{
147 G4String args;
148
149 if (!ProcessArguments(value, 1, &args))
150  return; 
151 
152 analysisLayout->SetOutputFileName(args);
153}
154
155
156
157void                                            RadmonAnalysisMessenger :: OnSetOutputFileFormat(const G4String & value)
158{
159 G4String args;
160
161 if (!ProcessArguments(value, 1, &args))
162  return; 
163 
164 analysisLayout->SetOutputFileFormat(args);
165}
166
167
168
169void                                            RadmonAnalysisMessenger :: OnCreateSensitiveDetector(const G4String & value)
170{
171 G4String args[2];
172
173 if (!ProcessArguments(value, 2, args))
174  return; 
175 
176 analysisLayout->CreateSensitiveDetector(args[0], args[1]);
177}
178
179
180
181void                                            RadmonAnalysisMessenger :: OnSetSensitiveDetectorType(const G4String & value)
182{
183 G4String args[2];
184
185 if (!ProcessArguments(value, 2, args))
186  return; 
187 
188 analysisLayout->SetSensitiveDetectorType(args[0], args[1]);
189}
190
191
192
193void                                            RadmonAnalysisMessenger :: OnRemoveSensitiveDetector(const G4String & value)
194{
195 G4String args;
196
197 if (!ProcessArguments(value, 1, &args))
198  return; 
199 
200 analysisLayout->RemoveSensitiveDetector(args);
201}
202
203
204
205void                                            RadmonAnalysisMessenger :: OnCreateSensitiveDetectorType(const G4String & value)
206{
207 G4String args;
208
209 if (!ProcessArguments(value, 1, &args))
210  return; 
211 
212 analysisLayout->CreateSensitiveDetectorType(args);
213}
214
215
216
217void                                            RadmonAnalysisMessenger :: OnRemoveSensitiveDetectorType(const G4String & value)
218{
219 G4String args;
220
221 if (!ProcessArguments(value, 1, &args))
222  return; 
223 
224 analysisLayout->RemoveSensitiveDetectorType(args);
225}
226
227
228
229void                                            RadmonAnalysisMessenger :: OnAppendDataAnalysisToSensitiveDetectorType(const G4String & value)
230{
231 G4String args[2];
232
233 if (!ProcessArguments(value, 2, args))
234  return; 
235 
236 analysisLayout->AppendDataAnalysisToSensitiveDetectorType(args[0], args[1]);
237}
238
239
240
241void                                            RadmonAnalysisMessenger :: OnSetDataAnalysisType(const G4String & value)
242{
243 G4String args[3];
244
245 if (!ProcessArguments(value, 3, args))
246  return; 
247 
248 analysisLayout->SetDataAnalysisType(args[0], args[1], args[2]);
249}
250
251
252
253void                                            RadmonAnalysisMessenger :: OnRemoveDataAnalysis(const G4String & value)
254{
255 G4String args[2];
256
257 if (!ProcessArguments(value, 2, args))
258  return; 
259 
260 analysisLayout->RemoveDataAnalysis(args[0], args[1]);
261}
262
263
264
265void                                            RadmonAnalysisMessenger :: OnSetDataAnalysisAttribute(const G4String & value)
266{
267 G4String args[4];
268
269 if (!ProcessArguments(value, 4, args))
270  return; 
271 
272 analysisLayout->SetDataAnalysisAttribute(args[0], args[1], args[2], args[3]);
273}
274
275
276
277void                                            RadmonAnalysisMessenger :: OnClearDataAnalysisAttribute(const G4String & value)
278{
279 G4String args[3];
280
281 if (!ProcessArguments(value, 3, args))
282  return; 
283 
284 analysisLayout->ClearDataAnalysisAttribute(args[0], args[1], args[2]);
285}
286
287
288
289void                                            RadmonAnalysisMessenger :: OnDumpLayout(const G4String & /* value */)
290{
291 analysisLayout->DumpLayout(G4cout);
292 G4cout << G4endl;
293}
294
295
296
297void                                            RadmonAnalysisMessenger :: OnLoad(const G4String & value)
298{
299 G4String args;
300
301 if (!ProcessArguments(value, 1, &args))
302  return; 
303 
304 std::istream * in(OpenForInput(args));
305 
306 if (!in)
307  return;
308
309 if (!analysisLayout->Load(*in)) 
310  G4cout << "RadmonAnalysisMessenger::OnLoad(): Error reading from file \"" << args << "\"." << G4endl;
311 
312 delete in;
313}
314
315
316
317void                                            RadmonAnalysisMessenger :: OnSave(const G4String & value)
318{
319 G4String args;
320
321 if (!ProcessArguments(value, 1, &args))
322  return; 
323 
324 std::ostream * out(OpenForOutput(args));
325 
326 if (!out)
327  return;
328
329 if (!analysisLayout->Save(*out))
330  G4cout << "RadmonAnalysisMessenger::OnSave(): Cannot write layout into file \"" << args << "\"." << G4endl;
331 
332 delete out;
333}
Note: See TracBrowser for help on using the repository browser.