Geant4  10.03.p01
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
G4H3Messenger.cc
Go to the documentation of this file.
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 // $Id$
27 
28 // Author: Ivana Hrivnacova, 24/07/2014 (ivana@ipno.in2p3.fr)
29 
30 #include "G4H3Messenger.hh"
31 #include "G4VAnalysisManager.hh"
32 #include "G4AnalysisUtilities.hh"
33 
34 #include "G4UIdirectory.hh"
35 #include "G4UIcommand.hh"
36 #include "G4UIparameter.hh"
37 
38 #include <iostream>
39 
40 using namespace G4Analysis;
41 
42 //_____________________________________________________________________________
44  : G4UImessenger(),
45  fManager(manager),
46  fHelper(nullptr),
47  fDirectory(nullptr),
48  fCreateH3Cmd(nullptr),
49  fSetH3Cmd(nullptr),
50  fSetH3XCmd(nullptr),
51  fSetH3YCmd(nullptr),
52  fSetH3ZCmd(nullptr),
53  fSetH3TitleCmd(nullptr),
54  fSetH3XAxisCmd(nullptr),
55  fSetH3YAxisCmd(nullptr),
56  fSetH3ZAxisCmd(nullptr),
57  fXId(-1),
58  fYId(-1),
59  fXData(),
60  fYData()
61 {
62  fHelper = G4Analysis::make_unique<G4AnalysisMessengerHelper>("h3");
63 
64  fDirectory = fHelper->CreateHnDirectory();
65 
66  CreateH3Cmd();
67 
68  SetH3Cmd();
69  fSetH3XCmd = fHelper->CreateSetBinsCommand("x", this);
70  fSetH3YCmd = fHelper->CreateSetBinsCommand("y", this);
71 
72  fSetH3TitleCmd = fHelper->CreateSetTitleCommand(this);
73  fSetH3XAxisCmd = fHelper->CreateSetAxisCommand("x", this);
74  fSetH3YAxisCmd = fHelper->CreateSetAxisCommand("y", this);
75  fSetH3ZAxisCmd = fHelper->CreateSetAxisCommand("z", this);
76 }
77 
78 //_____________________________________________________________________________
80 {}
81 
82 //
83 // private functions
84 //
85 
86 //_____________________________________________________________________________
87 void G4H3Messenger::CreateH3Cmd()
88 {
89  auto h3Name = new G4UIparameter("name", 's', false);
90  h3Name->SetGuidance("Histogram name (label)");
91 
92  auto h3Title = new G4UIparameter("title", 's', false);
93  h3Title->SetGuidance("Histogram title");
94 
95  auto h3xNbins0 = new G4UIparameter("xnbins0", 'i', true);
96  h3xNbins0->SetGuidance("Number of x-bins (default = 100)");
97  h3xNbins0->SetGuidance("Can be reset with /analysis/h3/set command");
98  h3xNbins0->SetDefaultValue(100);
99 
100  auto h3xValMin0 = new G4UIparameter("xvalMin0", 'd', true);
101  h3xValMin0->SetGuidance("Minimum x-value, expressed in unit (default = 0.)");
102  h3xValMin0->SetGuidance("Can be reset with /analysis/h3/set command");
103  h3xValMin0->SetDefaultValue(0.);
104 
105  auto h3xValMax0 = new G4UIparameter("xvalMax0", 'd', true);
106  h3xValMax0->SetGuidance("Maximum x-value, expressed in unit (default = 1.)");
107  h3xValMax0->SetGuidance("Can be reset with /analysis/h3/set command");
108  h3xValMax0->SetDefaultValue(1.);
109 
110  auto h3xValUnit0 = new G4UIparameter("xvalUnit0", 's', true);
111  h3xValUnit0->SetGuidance("The unit applied to filled x-values and xvalMin0, xvalMax0");
112  h3xValUnit0->SetDefaultValue("none");
113 
114  auto h3xValFcn0 = new G4UIparameter("xvalFcn0", 's', true);
115  G4String fcnxGuidance = "The function applied to filled x-values (log, log10, exp, none).";
116  h3xValFcn0->SetGuidance(fcnxGuidance);
117  h3xValFcn0->SetParameterCandidates("log log10 exp none");
118  h3xValFcn0->SetDefaultValue("none");
119 
120  auto h3xValBinScheme0 = new G4UIparameter("xvalBinScheme0", 's', true);
121  G4String xbinSchemeGuidance = "The binning scheme (linear, log).";
122  h3xValBinScheme0->SetParameterCandidates("linear log");
123  h3xValBinScheme0->SetGuidance(xbinSchemeGuidance);
124  h3xValBinScheme0->SetDefaultValue("linear");
125 
126  auto h3yNbins0 = new G4UIparameter("ynbins0", 'i', true);
127  h3yNbins0->SetGuidance("Number of y-bins (default = 100)");
128  h3yNbins0->SetGuidance("Can be reset with /analysis/h3/set command");
129  h3yNbins0->SetDefaultValue(100);
130 
131  auto h3yValMin0 = new G4UIparameter("yvalMin0", 'd', true);
132  h3yValMin0->SetGuidance("Minimum y-value, expressed in unit (default = 0.)");
133  h3yValMin0->SetGuidance("Can be reset with /analysis/h3/set command");
134  h3yValMin0->SetDefaultValue(0.);
135 
136  auto h3yValMax0 = new G4UIparameter("yvalMax0", 'd', true);
137  h3yValMax0->SetGuidance("Maximum y-value, expressed in unit (default = 1.)");
138  h3yValMax0->SetGuidance("Can be reset with /analysis/h3/set command");
139  h3yValMax0->SetDefaultValue(1.);
140 
141  auto h3yValUnit0 = new G4UIparameter("yvalUnit0", 's', true);
142  h3yValUnit0->SetGuidance("The unit applied to filled y-values and yvalMin0, yvalMax0");
143  h3yValUnit0->SetDefaultValue("none");
144 
145  auto h3yValFcn0 = new G4UIparameter("yvalFcn0", 's', true);
146  G4String fcnyGuidance = "The function applied to filled y-values (log, log10, exp, none).";
147  h3yValFcn0->SetGuidance(fcnyGuidance);
148  h3yValFcn0->SetParameterCandidates("log log10 exp none");
149  h3yValFcn0->SetDefaultValue("none");
150 
151  auto h3yValBinScheme0 = new G4UIparameter("yvalBinScheme0", 's', true);
152  G4String ybinSchemeGuidance = "The binning scheme (linear, log).";
153  h3yValBinScheme0->SetParameterCandidates("linear log");
154  h3yValBinScheme0->SetGuidance(ybinSchemeGuidance);
155  h3yValBinScheme0->SetDefaultValue("linear");
156 
157  auto h3zNbins0 = new G4UIparameter("znbins0", 'i', true);
158  h3zNbins0->SetGuidance("Number of z-bins (default = 100)");
159  h3zNbins0->SetGuidance("Can be reset with /analysis/h3/set command");
160  h3zNbins0->SetDefaultValue(100);
161 
162  auto h3zValMin0 = new G4UIparameter("zvalMin0", 'd', true);
163  h3zValMin0->SetGuidance("Minimum z-value, expressed in unit (default = 0.)");
164  h3zValMin0->SetGuidance("Can be reset with /analysis/h3/set command");
165  h3zValMin0->SetDefaultValue(0.);
166 
167  auto h3zValMax0 = new G4UIparameter("zvalMax0", 'd', true);
168  h3zValMax0->SetGuidance("Maximum z-value, expressed in unit (default = 1.)");
169  h3zValMax0->SetGuidance("Can be reset with /analysis/h3/set command");
170  h3zValMax0->SetDefaultValue(1.);
171 
172  auto h3zValUnit0 = new G4UIparameter("zvalUnit0", 's', true);
173  h3zValUnit0->SetGuidance("The unit applied to filled z-values and zvalMin0, zvalMax0");
174  h3zValUnit0->SetDefaultValue("none");
175 
176  auto h3zValFcn0 = new G4UIparameter("zvalFcn0", 's', true);
177  G4String fcnzGuidance = "The function applied to filled z-values (log, log10, exp, none).";
178  h3zValFcn0->SetGuidance(fcnzGuidance);
179  h3zValFcn0->SetParameterCandidates("log log10 exp none");
180  h3zValFcn0->SetDefaultValue("none");
181 
182  auto h3zValBinScheme0 = new G4UIparameter("zvalBinScheme0", 's', true);
183  G4String zbinSchemeGuidance = "The binning scheme (linear, log).";
184  h3zValBinScheme0->SetParameterCandidates("linear log");
185  h3zValBinScheme0->SetGuidance(zbinSchemeGuidance);
186  h3zValBinScheme0->SetDefaultValue("linear");
187 
188  fCreateH3Cmd = G4Analysis::make_unique<G4UIcommand>("/analysis/h3/create", this);
189  fCreateH3Cmd->SetGuidance("Create 3D histogram");
190  fCreateH3Cmd->SetParameter(h3Name);
191  fCreateH3Cmd->SetParameter(h3Title);
192  fCreateH3Cmd->SetParameter(h3xNbins0);
193  fCreateH3Cmd->SetParameter(h3xValMin0);
194  fCreateH3Cmd->SetParameter(h3xValMax0);
195  fCreateH3Cmd->SetParameter(h3xValUnit0);
196  fCreateH3Cmd->SetParameter(h3xValFcn0);
197  fCreateH3Cmd->SetParameter(h3xValBinScheme0);
198  fCreateH3Cmd->SetParameter(h3yNbins0);
199  fCreateH3Cmd->SetParameter(h3yValMin0);
200  fCreateH3Cmd->SetParameter(h3yValMax0);
201  fCreateH3Cmd->SetParameter(h3yValUnit0);
202  fCreateH3Cmd->SetParameter(h3yValFcn0);
203  fCreateH3Cmd->SetParameter(h3yValBinScheme0);
204  fCreateH3Cmd->SetParameter(h3zNbins0);
205  fCreateH3Cmd->SetParameter(h3zValMin0);
206  fCreateH3Cmd->SetParameter(h3zValMax0);
207  fCreateH3Cmd->SetParameter(h3zValUnit0);
208  fCreateH3Cmd->SetParameter(h3zValFcn0);
209  fCreateH3Cmd->SetParameter(h3zValBinScheme0);
210  fCreateH3Cmd->AvailableForStates(G4State_PreInit, G4State_Idle);
211 }
212 
213 
214 //_____________________________________________________________________________
215 void G4H3Messenger::SetH3Cmd()
216 {
217  auto h3Id = new G4UIparameter("id", 'i', false);
218  h3Id->SetGuidance("Histogram id");
219  h3Id->SetParameterRange("id>=0");
220 
221  auto h3xNbins = new G4UIparameter("xnbins", 'i', false);
222  h3xNbins->SetGuidance("Number of x-bins");
223 
224  auto h3xValMin = new G4UIparameter("xvalMin", 'd', false);
225  h3xValMin->SetGuidance("Minimum x-value, expressed in unit");
226 
227  auto h3xValMax = new G4UIparameter("xvalMax", 'd', false);
228  h3xValMax->SetGuidance("Maximum x-value, expressed in unit");
229 
230  auto h3xValUnit = new G4UIparameter("xvalUnit", 's', false);
231  h3xValUnit->SetGuidance("The unit applied to filled x-values and xvalMin0, xvalMax0");
232  h3xValUnit->SetDefaultValue("none");
233 
234  auto h3xValFcn = new G4UIparameter("xvalFcn", 's', false);
235  h3xValFcn->SetParameterCandidates("log log10 exp none");
236  G4String fcnxGuidance = "The function applied to filled x-values (log, log10, exp, none).";
237  h3xValFcn->SetGuidance(fcnxGuidance);
238  h3xValFcn->SetDefaultValue("none");
239 
240  auto h3xValBinScheme = new G4UIparameter("xvalBinScheme", 's', true);
241  G4String xbinSchemeGuidance = "The binning scheme (linear, log).";
242  h3xValBinScheme->SetParameterCandidates("linear log");
243  h3xValBinScheme->SetGuidance(xbinSchemeGuidance);
244  h3xValBinScheme->SetDefaultValue("linear");
245 
246  auto h3yNbins = new G4UIparameter("nybins", 'i', false);
247  h3yNbins->SetGuidance("Number of y-bins");
248 
249  auto h3yValMin = new G4UIparameter("yvalMin", 'd', false);
250  h3yValMin->SetGuidance("Minimum y-value, expressed in unit");
251 
252  auto h3yValMax = new G4UIparameter("yvalMax", 'd', false);
253  h3yValMax->SetGuidance("Maximum y-value, expressed in unit");
254 
255  auto h3yValUnit = new G4UIparameter("yvalUnit", 's', true);
256  h3yValUnit->SetGuidance("The unit applied to filled y-values and yvalMin0, yvalMax0");
257  h3yValUnit->SetDefaultValue("none");
258 
259  auto h3yValFcn = new G4UIparameter("yvalFcn", 's', false);
260  h3yValFcn->SetParameterCandidates("log log10 exp none");
261  G4String fcnyGuidance = "The function applied to filled y-values (log, log10, exp, none).";
262  h3yValFcn->SetGuidance(fcnyGuidance);
263  h3yValFcn->SetDefaultValue("none");
264 
265  auto h3yValBinScheme = new G4UIparameter("yvalBinScheme", 's', true);
266  G4String ybinSchemeGuidance = "The binning scheme (linear, log).";
267  h3yValBinScheme->SetParameterCandidates("linear log");
268  h3yValBinScheme->SetGuidance(ybinSchemeGuidance);
269  h3yValBinScheme->SetDefaultValue("linear");
270 
271  auto h3zNbins = new G4UIparameter("nzbins", 'i', false);
272  h3zNbins->SetGuidance("Number of z-bins");
273 
274  auto h3zValMin = new G4UIparameter("zvalMin", 'd', false);
275  h3zValMin->SetGuidance("Minimum z-value, expressed in unit");
276 
277  auto h3zValMax = new G4UIparameter("zvalMax", 'd', false);
278  h3zValMax->SetGuidance("Maximum z-value, expressed in unit");
279 
280  auto h3zValUnit = new G4UIparameter("zvalUnit", 's', true);
281  h3zValUnit->SetGuidance("The unit applied to filled z-values and zvalMin0, zvalMax0");
282  h3zValUnit->SetDefaultValue("none");
283 
284  auto h3zValFcn = new G4UIparameter("zvalFcn", 's', false);
285  h3zValFcn->SetParameterCandidates("log log10 exp none");
286  G4String fcnzGuidance = "The function applied to filled z-values (log, log10, exp, none).";
287  h3zValFcn->SetGuidance(fcnzGuidance);
288  h3zValFcn->SetDefaultValue("none");
289 
290  auto h3zValBinScheme = new G4UIparameter("zvalBinScheme", 's', true);
291  G4String zbinSchemeGuidance = "The binning scheme (linear, log).";
292  h3zValBinScheme->SetParameterCandidates("linear log");
293  h3zValBinScheme->SetGuidance(zbinSchemeGuidance);
294  h3zValBinScheme->SetDefaultValue("linear");
295 
296  fSetH3Cmd = G4Analysis::make_unique<G4UIcommand>("/analysis/h3/set", this);
297  fSetH3Cmd->SetGuidance("Set parameters for the 3D histogram of given id:");
298  fSetH3Cmd->SetGuidance(" nxbins; xvalMin; xvalMax; xunit; xfunction; xbinScheme");
299  fSetH3Cmd->SetGuidance(" nybins; yvalMin; yvalMax; yunit; yfunction; ybinScheme");
300  fSetH3Cmd->SetGuidance(" nzbins; zvalMin; zvalMax; zunit; zfunction; zbinScheme");
301  fSetH3Cmd->SetParameter(h3Id);
302  fSetH3Cmd->SetParameter(h3xNbins);
303  fSetH3Cmd->SetParameter(h3xValMin);
304  fSetH3Cmd->SetParameter(h3xValMax);
305  fSetH3Cmd->SetParameter(h3xValUnit);
306  fSetH3Cmd->SetParameter(h3xValFcn);
307  fSetH3Cmd->SetParameter(h3xValBinScheme);
308  fSetH3Cmd->SetParameter(h3yNbins);
309  fSetH3Cmd->SetParameter(h3yValMin);
310  fSetH3Cmd->SetParameter(h3yValMax);
311  fSetH3Cmd->SetParameter(h3yValUnit);
312  fSetH3Cmd->SetParameter(h3yValFcn);
313  fSetH3Cmd->SetParameter(h3yValBinScheme);
314  fSetH3Cmd->SetParameter(h3zNbins);
315  fSetH3Cmd->SetParameter(h3zValMin);
316  fSetH3Cmd->SetParameter(h3zValMax);
317  fSetH3Cmd->SetParameter(h3zValUnit);
318  fSetH3Cmd->SetParameter(h3zValFcn);
319  fSetH3Cmd->SetParameter(h3zValBinScheme);
320  fSetH3Cmd->AvailableForStates(G4State_PreInit, G4State_Idle);
321 }
322 
323 
324 //
325 // public functions
326 //
327 
328 //_____________________________________________________________________________
330 {
331  // tokenize parameters in a vector
332  std::vector<G4String> parameters;
333  G4Analysis::Tokenize(newValues, parameters);
334  // check consistency
335  if ( G4int(parameters.size()) != command->GetParameterEntries() ) {
336  // Should never happen but let's check anyway for consistency
337  fHelper->WarnAboutParameters(command, parameters.size());
338  return;
339  }
340 
341  if ( command == fCreateH3Cmd.get() ) {
342  auto counter = 0;
343  auto name = parameters[counter++];
344  auto title = parameters[counter++];
346  fHelper->GetBinData(xdata, parameters, counter);
347  auto xunit = GetUnitValue(xdata.fSunit);
349  fHelper->GetBinData(ydata, parameters, counter);
350  auto yunit = GetUnitValue(ydata.fSunit);
352  fHelper->GetBinData(zdata, parameters, counter);
353  auto zunit = GetUnitValue(zdata.fSunit);
354  fManager->CreateH3(name, title,
355  xdata.fNbins, xdata.fVmin*xunit, xdata.fVmax*xunit,
356  ydata.fNbins, ydata.fVmin*yunit, ydata.fVmax*yunit,
357  zdata.fNbins, zdata.fVmin*zunit, zdata.fVmax*zunit,
358  xdata.fSunit, ydata.fSunit, zdata.fSunit,
359  xdata.fSfcn, ydata.fSfcn, zdata.fSfcn,
360  xdata.fSbinScheme, ydata.fSbinScheme, zdata.fSbinScheme);
361  }
362  else if ( command == fSetH3Cmd.get() ) {
363  auto counter = 0;
364  auto id = G4UIcommand::ConvertToInt(parameters[counter++]);
366  fHelper->GetBinData(xdata, parameters, counter);
367  auto xunit = GetUnitValue(xdata.fSunit);
369  fHelper->GetBinData(ydata, parameters, counter);
370  auto yunit = GetUnitValue(ydata.fSunit);
372  fHelper->GetBinData(zdata, parameters, counter);
373  auto zunit = GetUnitValue(zdata.fSunit);
374  fManager->SetH3(id,
375  xdata.fNbins, xdata.fVmin*xunit, xdata.fVmax*xunit,
376  ydata.fNbins, ydata.fVmin*yunit, ydata.fVmax*yunit,
377  zdata.fNbins, zdata.fVmin*zunit, zdata.fVmax*zunit,
378  xdata.fSunit, ydata.fSunit, zdata.fSunit,
379  xdata.fSfcn, ydata.fSfcn, zdata.fSfcn,
380  xdata.fSbinScheme, ydata.fSbinScheme, zdata.fSbinScheme);
381  }
382  else if ( command == fSetH3XCmd.get() ) {
383  // Only save values
384  auto counter = 0;
385  fXId = G4UIcommand::ConvertToInt(parameters[counter++]);
386  fHelper->GetBinData(fXData, parameters, counter);
387  }
388  else if ( command == fSetH3YCmd.get() ) {
389  // Only save values
390  auto counter = 0;
391  fYId = G4UIcommand::ConvertToInt(parameters[counter++]);
392  fHelper->GetBinData(fYData, parameters, counter);
393  }
394  else if ( command == fSetH3ZCmd.get() ) {
395  auto counter = 0;
396  auto id = G4UIcommand::ConvertToInt(parameters[counter++]);
397  // Check if setX and setY command was called
398  if ( fXId == -1 || fXId != id ||
399  fYId == -1 || fYId != id ) {
400  fHelper->WarnAboutSetCommands();
401  return;
402  }
403  auto xunit = GetUnitValue(fXData.fSunit);
404  auto yunit = GetUnitValue(fYData.fSunit);
406  fHelper->GetBinData(zdata, parameters, counter);
407  auto zunit = GetUnitValue(zdata.fSunit);
408  fManager->SetH3(id,
409  fXData.fNbins, fXData.fVmin*xunit, fXData.fVmax*xunit,
410  fYData.fNbins, fYData.fVmin*yunit, fYData.fVmax*yunit,
411  zdata.fNbins, zdata.fVmin*zunit, zdata.fVmax*zunit,
412  fXData.fSunit, fYData.fSunit, zdata.fSunit,
413  fXData.fSfcn, fYData.fSfcn, zdata.fSfcn,
414  fXData.fSbinScheme, fYData.fSbinScheme, zdata.fSbinScheme);
415  fXId = -1;
416  fYId = -1;
417  }
418  else if ( command == fSetH3TitleCmd.get() ) {
419  auto counter = 0;
420  auto id = G4UIcommand::ConvertToInt(parameters[counter++]);
421  auto title = parameters[counter++];
422  fManager->SetH3Title(id, title);
423  }
424  else if ( command == fSetH3XAxisCmd.get() ) {
425  auto counter = 0;
426  auto id = G4UIcommand::ConvertToInt(parameters[counter++]);
427  auto xaxis = parameters[counter++];
428  fManager->SetH3XAxisTitle(id, xaxis);
429  }
430  else if ( command == fSetH3YAxisCmd.get() ) {
431  auto counter = 0;
432  auto id = G4UIcommand::ConvertToInt(parameters[counter++]);
433  auto yaxis = parameters[counter++];
434  fManager->SetH3YAxisTitle(id, yaxis);
435  }
436  else if ( command == fSetH3ZAxisCmd.get() ) {
437  auto counter = 0;
438  auto id = G4UIcommand::ConvertToInt(parameters[counter++]);
439  auto zaxis = parameters[counter++];
440  fManager->SetH3ZAxisTitle(id, zaxis);
441  }
442 }
G4int CreateH3(const G4String &name, const G4String &title, G4int nxbins, G4double xmin, G4double xmax, G4int nybins, G4double ymin, G4double ymax, G4int nzbins, G4double zmin, G4double zmax, const G4String &xunitName="none", const G4String &yunitName="none", const G4String &zunitName="none", const G4String &xfcnName="none", const G4String &yfcnName="none", const G4String &zfcnName="none", const G4String &xbinSchemeName="linear", const G4String &ybinSchemeName="linear", const G4String &zbinSchemeName="linear")
const XML_Char * name
Definition: expat.h:151
virtual void SetNewValue(G4UIcommand *command, G4String value) final
G4H3Messenger(G4VAnalysisManager *manager)
int G4int
Definition: G4Types.hh:78
G4bool SetH3(G4int id, G4int nxbins, G4double xmin, G4double xmax, G4int nzbins, G4double zmin, G4double zmax, G4int nybins, G4double ymin, G4double ymax, const G4String &xunitName="none", const G4String &yunitName="none", const G4String &zunitName="none", const G4String &xfcnName="none", const G4String &yfcnName="none", const G4String &zfcnName="none", const G4String &xbinSchemeName="linear", const G4String &ybinSchemeName="linear", const G4String &zbinSchemeName="linear")
virtual ~G4H3Messenger()
G4bool SetH3Title(G4int id, const G4String &title)
G4double GetUnitValue(const G4String &unit)
static G4int ConvertToInt(const char *st)
Definition: G4UIcommand.cc:447
void Tokenize(const G4String &line, std::vector< G4String > &tokens)
G4bool SetH3XAxisTitle(G4int id, const G4String &title)
G4bool SetH3ZAxisTitle(G4int id, const G4String &title)
G4int GetParameterEntries() const
Definition: G4UIcommand.hh:143
G4bool SetH3YAxisTitle(G4int id, const G4String &title)