Geant4 9.6.0
Toolkit for the simulation of the passage of particles through matter
Loading...
Searching...
No Matches
G4GMocrenMessenger.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//
27// $Id$
28//
29//
30// Created: Mar. 31, 2009 Akinori Kimura
31//
32#include "G4GMocrenMessenger.hh"
33
34#include "G4UIdirectory.hh"
35#include "G4UIcmdWithABool.hh"
36#include "G4UIcmdWithAString.hh"
38#include "G4UIcommand.hh"
39#include "G4Tokenizer.hh"
40
42 : suffix (""), geometry(true), solids(true), invisibles(true),
43 kgMocrenVolumeName("gMocrenVolume"),
44 kgMocrenScoringMeshName("gMocrenScoringMesh"),
45 kDrawVolumeGrid(false) {
46
47 kgMocrenDirectory = new G4UIdirectory("/vis/gMocren/");
48 kgMocrenDirectory->SetGuidance("gMocren commands.");
49
50 setEventNumberSuffixCommand = new G4UIcmdWithAString("/vis/gMocren/setEventNumberSuffix", this);
51 setEventNumberSuffixCommand->SetGuidance("Write separate event files, appended with given suffix.");
52 setEventNumberSuffixCommand->SetGuidance("Define the suffix with a pattern such as '-0000'.");
53 setEventNumberSuffixCommand->SetParameterName("suffix",false);
54 setEventNumberSuffixCommand->SetDefaultValue("");
55 setEventNumberSuffixCommand->AvailableForStates(G4State_Idle);
56
57 appendGeometryCommand = new G4UIcmdWithABool("/vis/gMocren/appendGeometry", this);
58 appendGeometryCommand->SetGuidance("Appends copy of geometry to every event.");
59 appendGeometryCommand->SetParameterName("flag",false);
60 appendGeometryCommand->SetDefaultValue(true);
61 appendGeometryCommand->AvailableForStates(G4State_Idle);
62
63 addPointAttributesCommand = new G4UIcmdWithABool("/vis/gMocren/addPointAttributes", this);
64 addPointAttributesCommand->SetGuidance("Adds point attributes to the points of trajectories.");
65 addPointAttributesCommand->SetParameterName("flag",false);
66 addPointAttributesCommand->SetDefaultValue(false);
67 addPointAttributesCommand->AvailableForStates(G4State_Idle);
68
69 useSolidsCommand = new G4UIcmdWithABool("/vis/gMocren/useSolids", this);
70 useSolidsCommand->SetGuidance("Use GMocren Solids, rather than Geant4 Primitives.");
71 useSolidsCommand->SetParameterName("flag",false);
72 useSolidsCommand->SetDefaultValue(true);
73 useSolidsCommand->AvailableForStates(G4State_Idle);
74
75 /* Not Enabled Yet
76 writeInvisiblesCommand = new G4UIcmdWithABool("/vis/gMocren/writeInvisibles", this);
77 writeInvisiblesCommand->SetGuidance("Write invisible objects.");
78 writeInvisiblesCommand->SetParameterName("flag",false);
79 writeInvisiblesCommand->SetDefaultValue(true);
80 writeInvisiblesCommand->AvailableForStates(G4State_Idle);
81 */
82
83 kSetgMocrenVolumeNameCommand = new G4UIcmdWithAString("/vis/gMocren/setVolumeName", this);
84 kSetgMocrenVolumeNameCommand->SetGuidance("detector name for a volume data in gMocren data.");
85 kSetgMocrenVolumeNameCommand->SetParameterName("kgMocrenVolumeName",false);
86 kSetgMocrenVolumeNameCommand->SetDefaultValue("gMocrenVolume");
87 kSetgMocrenVolumeNameCommand->AvailableForStates(G4State_Idle);
88
89 kAddgMocrenHitNameCommand = new G4UIcmdWithAString("/vis/gMocren/addHitName", this);
90 kAddgMocrenHitNameCommand->SetGuidance("hit name for a dose distribution in gMocren data.");
91 kAddgMocrenHitNameCommand->SetParameterName("kgMocrenHitName",false);
92 kAddgMocrenHitNameCommand->AvailableForStates(G4State_Idle);
93
94 kResetgMocrenHitNameCommand = new G4UIcmdWithoutParameter("/vis/gMocren/resetHitNames", this);
95 kResetgMocrenHitNameCommand->SetGuidance("reset all hit names.");
96 kResetgMocrenHitNameCommand->AvailableForStates(G4State_Idle);
97
98 kSetgMocrenScoringMeshNameCommand = new G4UIcmdWithAString("/vis/gMocren/setScoringMeshName", this);
99 kSetgMocrenScoringMeshNameCommand->SetGuidance("scoring mesh name for a dose distribution in gMocren data.");
100 kSetgMocrenScoringMeshNameCommand->SetParameterName("kgMocrenScoringMeshName",false);
101 kSetgMocrenScoringMeshNameCommand->SetDefaultValue("gMocrenScoringMesh");
102 kSetgMocrenScoringMeshNameCommand->AvailableForStates(G4State_Idle);
103
104 kAddgMocrenHitScorerNameCommand = new G4UIcmdWithAString("/vis/gMocren/addHitScorerName", this);
105 kAddgMocrenHitScorerNameCommand->SetGuidance("hit scorer name for a dose distribution in gMocren data.");
106 kAddgMocrenHitScorerNameCommand->SetParameterName("kgMocrenHitScorerNames",false);
107 kAddgMocrenHitScorerNameCommand->AvailableForStates(G4State_Idle);
108
109 kResetgMocrenHitScorerNameCommand = new G4UIcmdWithoutParameter("/vis/gMocren/resetHitScorerName", this);
110 kResetgMocrenHitScorerNameCommand->SetGuidance("reset all hit scorer names.");
111 kResetgMocrenHitScorerNameCommand->AvailableForStates(G4State_Idle);
112
113 kSetgMocrenNoVoxelsCommand = new G4UIcommand("/vis/gMocren/setNumberOfVoxels", this);
114 kSetgMocrenNoVoxelsCommand->SetGuidance("set number of voxels.");
115 kSetgMocrenNoVoxelsCommand->AvailableForStates(G4State_Idle);
116 G4UIparameter * param = new G4UIparameter("nX", 'i', false);
117 param->SetDefaultValue("1");
118 param->SetParameterRange("nX>0");
119 kSetgMocrenNoVoxelsCommand->SetParameter(param);
120 param = new G4UIparameter("nY", 'i', false);
121 param->SetDefaultValue("1");
122 param->SetParameterRange("nY>0");
123 kSetgMocrenNoVoxelsCommand->SetParameter(param);
124 param = new G4UIparameter("nZ", 'i', false);
125 param->SetDefaultValue("1");
126 param->SetParameterRange("nZ>0");
127 kSetgMocrenNoVoxelsCommand->SetParameter(param);
128
129 kListgMocrenCommand = new G4UIcmdWithoutParameter("/vis/gMocren/list", this);
130 kListgMocrenCommand->SetGuidance("list gMocren command parameters.");
131 kListgMocrenCommand->AvailableForStates(G4State_Idle);
132
133 kDrawVolumeGridCommand = new G4UIcmdWithABool("/vis/gMocren/drawVolumeGrid", this);
134 kDrawVolumeGridCommand->SetGuidance("Add grid of the volume.");
135 kDrawVolumeGridCommand->SetParameterName("kDrawVolumeGrid",false);
136 kDrawVolumeGridCommand->SetDefaultValue(false);
137 kDrawVolumeGridCommand->AvailableForStates(G4State_Idle);
138
139}
140
142 delete setEventNumberSuffixCommand;
143 delete appendGeometryCommand;
144 delete addPointAttributesCommand;
145 delete useSolidsCommand;
146 // delete writeInvisiblesCommand;
147 delete kSetgMocrenVolumeNameCommand;
148 delete kAddgMocrenHitNameCommand;
149 delete kResetgMocrenHitNameCommand;
150 //
151 delete kSetgMocrenScoringMeshNameCommand;
152 delete kAddgMocrenHitScorerNameCommand;
153 delete kResetgMocrenHitScorerNameCommand;
154 //
155 delete kSetgMocrenNoVoxelsCommand;
156 //
157 delete kgMocrenDirectory;
158 //
159 delete kDrawVolumeGridCommand;
160}
161
163 if (command==setEventNumberSuffixCommand) {
164 return suffix;
165 } else if (command==appendGeometryCommand) {
166 return appendGeometryCommand->ConvertToString(geometry);
167 } else if (command==addPointAttributesCommand) {
168 return addPointAttributesCommand->ConvertToString(pointAttributes);
169 } else if (command==useSolidsCommand) {
170 return useSolidsCommand->ConvertToString(solids);
171 // } else if (command==writeInvisiblesCommand) {
172 // return writeInvisiblesCommand->ConvertToString(invisibles);
173 } else if (command == kSetgMocrenVolumeNameCommand) {
174 return kgMocrenVolumeName;
175 } else if (command == kAddgMocrenHitNameCommand) {
176 G4String strval;
177 std::vector<G4String>::iterator itr = kgMocrenHitNames.begin();
178 for(; itr != kgMocrenHitNames.end(); itr++) {
179 strval += *itr;
180 strval += " ";
181 }
182 return strval;
183 } else if (command == kSetgMocrenScoringMeshNameCommand) {
184 return kgMocrenScoringMeshName;
185 } else if (command == kAddgMocrenHitScorerNameCommand) {
186 G4String strval;
187 std::vector<G4String>::iterator itr = kgMocrenHitScorerNames.begin();
188 for(; itr != kgMocrenHitScorerNames.end(); itr++) {
189 strval += *itr;
190 strval += " ";
191 }
192 return strval;
193 } else if (command==kDrawVolumeGridCommand) {
194 return kDrawVolumeGridCommand->ConvertToString(kDrawVolumeGrid);
195 } else {
196 return "";
197 }
198}
199
201 if (command==setEventNumberSuffixCommand) {
202 suffix = newValue;
203 } else if (command==appendGeometryCommand) {
204 geometry = appendGeometryCommand->GetNewBoolValue(newValue);
205 } else if (command==addPointAttributesCommand) {
206 pointAttributes = addPointAttributesCommand->GetNewBoolValue(newValue);
207 } else if (command==useSolidsCommand) {
208 solids = useSolidsCommand->GetNewBoolValue(newValue);
209 // } else if (command==writeInvisiblesCommand) {
210 // invisibles = writeInvisiblesCommand->GetNewBoolValue(newValue);
211 } else if (command == kSetgMocrenVolumeNameCommand) {
212 kgMocrenVolumeName = newValue;
213 } else if (command == kAddgMocrenHitNameCommand) {
214 kgMocrenHitNames.push_back(newValue);
215 } else if (command == kResetgMocrenHitNameCommand) {
216 kgMocrenHitNames.clear();
217 } else if (command == kSetgMocrenScoringMeshNameCommand) {
218 kgMocrenScoringMeshName = newValue;
219 } else if (command == kAddgMocrenHitScorerNameCommand) {
220 kgMocrenHitScorerNames.push_back(newValue);
221 } else if (command == kResetgMocrenHitScorerNameCommand) {
222 kgMocrenHitScorerNames.clear();
223 } else if (command == kListgMocrenCommand) {
224 list();
225 } else if (command == kSetgMocrenNoVoxelsCommand) {
226 G4Tokenizer next(newValue);
227 for(int i = 0; i < 3; i++) {
228 kgMocrenNoVoxels[i] = StoI(next());
229 }
230 } else if (command==kDrawVolumeGridCommand) {
231 kDrawVolumeGrid = kDrawVolumeGridCommand->GetNewBoolValue(newValue);
232 }
233}
234
236 return suffix;
237}
238
240 return geometry;
241}
242
244 return pointAttributes;
245}
246
248 return solids;
249}
250
252 return invisibles;
253}
254
256 return kgMocrenVolumeName;
257}
258
259std::vector<G4String> G4GMocrenMessenger::getHitNames() {
260 return kgMocrenHitNames;
261}
262
264 return kgMocrenScoringMeshName;
265}
266
268 return kgMocrenHitScorerNames;
269}
270
272 G4cout << " Current valuess of gMocren command parameters:" << G4endl;
273 //
274 G4cout << " volume name: " << kgMocrenVolumeName << G4endl;
275 //
276 G4cout << " hit names: ";
277 if(kgMocrenHitNames.size() > 0) {
278 std::vector<G4String>::iterator itr = kgMocrenHitNames.begin();
279 for(; itr != kgMocrenHitNames.end(); itr++)
280 G4cout << *itr << " " << G4endl;
281 } else {
282 G4cout << G4endl;
283 }
284 //
285 G4cout << " scoring mesh name: " << kgMocrenScoringMeshName << G4endl;
286 //
287 G4cout << " scorer names: ";
288 if(kgMocrenHitScorerNames.size() > 0) {
289 std::vector<G4String>::iterator itr = kgMocrenHitScorerNames.begin();
290 for(; itr != kgMocrenHitScorerNames.end(); itr++)
291 G4cout << *itr << " " << G4endl;
292 } else {
293 G4cout << G4endl;
294 }
295 G4cout << G4endl;
296}
297
298void G4GMocrenMessenger::getNoVoxels(G4int & nx, G4int & ny, G4int & nz) const {
299 nx = kgMocrenNoVoxels[0];
300 ny = kgMocrenNoVoxels[1];
301 nz = kgMocrenNoVoxels[2];
302}
@ G4State_Idle
int G4int
Definition: G4Types.hh:66
bool G4bool
Definition: G4Types.hh:67
#define G4endl
Definition: G4ios.hh:52
G4DLLIMPORT std::ostream G4cout
virtual G4bool useSolids()
virtual std::vector< G4String > getHitNames()
virtual std::vector< G4String > getHitScorerNames()
virtual void getNoVoxels(G4int &nx, G4int &ny, G4int &nz) const
virtual G4bool appendGeometry()
virtual G4String GetCurrentValue(G4UIcommand *command)
virtual G4bool writeInvisibles()
virtual G4String getVolumeName()
virtual G4bool addPointAttributes()
virtual G4String getScoringMeshName()
virtual G4String getEventNumberSuffix()
virtual void SetNewValue(G4UIcommand *command, G4String newValue)
static G4bool GetNewBoolValue(const char *paramString)
void SetParameterName(const char *theName, G4bool omittable, G4bool currentAsDefault=false)
void SetDefaultValue(G4bool defVal)
void SetParameterName(const char *theName, G4bool omittable, G4bool currentAsDefault=false)
void SetDefaultValue(const char *defVal)
static G4String ConvertToString(G4bool boolVal)
Definition: G4UIcommand.cc:349
void SetParameter(G4UIparameter *const newParameter)
Definition: G4UIcommand.hh:147
void SetGuidance(const char *aGuidance)
Definition: G4UIcommand.hh:156
void AvailableForStates(G4ApplicationState s1)
Definition: G4UIcommand.cc:219
G4int StoI(G4String s)
void SetDefaultValue(const char *theDefaultValue)
void SetParameterRange(const char *theRange)