Geant4 10.7.0
Toolkit for the simulation of the passage of particles through matter
Loading...
Searching...
No Matches
G4ProcessTableMessenger Class Reference

#include <G4ProcessTableMessenger.hh>

+ Inheritance diagram for G4ProcessTableMessenger:

Public Member Functions

 G4ProcessTableMessenger (G4ProcessTable *pTable)
 
virtual ~G4ProcessTableMessenger ()
 
 G4ProcessTableMessenger (const G4ProcessTableMessenger &)=delete
 
G4ProcessTableMessengeroperator= (const G4ProcessTableMessenger &)=delete
 
virtual void SetNewValue (G4UIcommand *command, G4String newValues)
 
virtual G4String GetCurrentValue (G4UIcommand *command)
 
- Public Member Functions inherited from G4UImessenger
 G4UImessenger ()
 
 G4UImessenger (const G4String &path, const G4String &dsc, G4bool commandsToBeBroadcasted=true)
 
virtual ~G4UImessenger ()
 
virtual G4String GetCurrentValue (G4UIcommand *command)
 
virtual void SetNewValue (G4UIcommand *command, G4String newValue)
 
G4bool operator== (const G4UImessenger &messenger) const
 
G4bool operator!= (const G4UImessenger &messenger) const
 
G4bool CommandsShouldBeInMaster () const
 

Additional Inherited Members

- Protected Member Functions inherited from G4UImessenger
G4String ItoS (G4int i)
 
G4String DtoS (G4double a)
 
G4String BtoS (G4bool b)
 
G4int StoI (G4String s)
 
G4long StoL (G4String s)
 
G4double StoD (G4String s)
 
G4bool StoB (G4String s)
 
void AddUIcommand (G4UIcommand *newCommand)
 
void CreateDirectory (const G4String &path, const G4String &dsc, G4bool commandsToBeBroadcasted=true)
 
template<typename T >
T * CreateCommand (const G4String &cname, const G4String &dsc)
 
- Protected Attributes inherited from G4UImessenger
G4UIdirectorybaseDir = nullptr
 
G4String baseDirName = ""
 
G4bool commandsShouldBeInMaster = false
 

Detailed Description

Definition at line 55 of file G4ProcessTableMessenger.hh.

Constructor & Destructor Documentation

◆ G4ProcessTableMessenger() [1/2]

G4ProcessTableMessenger::G4ProcessTableMessenger ( G4ProcessTable pTable)

Definition at line 52 of file G4ProcessTableMessenger.cc.

53 : theProcessTable(pTable)
54{
55 // Command /particle/process
56 thisDirectory = new G4UIdirectory("/process/");
57 thisDirectory->SetGuidance("Process Table control commands.");
58
59 // Command /particle/process/list
60 listCmd = new G4UIcmdWithAString("/process/list",this);
61 listCmd->SetGuidance("List up process names");
62 listCmd->SetGuidance(" list [type] ");
63 listCmd->SetGuidance(" type: process type [all:for all processes]");
64 listCmd->SetParameterName("type", true);
65 listCmd->SetDefaultValue("all");
66 SetNumberOfProcessType();
67
68 G4String candidates("all");
69 for (G4int idx = 0; idx < NumberOfProcessType ; ++idx )
70 {
71 candidates += " " + G4VProcess::GetProcessTypeName(G4ProcessType(idx));
72 }
73 listCmd->SetCandidates((const char*)(candidates));
74
75 // Command /particle/process/verbose
76 verboseCmd = new G4UIcmdWithAnInteger("/process/verbose",this);
77 verboseCmd->SetGuidance("Set Verbose Level for Process Table");
78 verboseCmd->SetGuidance(" verbose [level]");
79 verboseCmd->SetGuidance(" level: verbose level");
80 verboseCmd->SetParameterName("verbose", true);
81 verboseCmd->SetDefaultValue(1);
82 verboseCmd->SetRange("verbose >=0");
84
85 // Command /particle/process/setVerbose
86 procVerboseCmd = new G4UIcommand("/process/setVerbose",this);
87 procVerboseCmd->SetGuidance("Set verbose level for processes");
88 procVerboseCmd->SetGuidance(" setVerbose level [type or name] ");
89 procVerboseCmd->SetGuidance(" level: verbose level ");
90 procVerboseCmd->SetGuidance(" name : process name ");
91 procVerboseCmd->SetGuidance(" type : process type ");
92 procVerboseCmd->SetGuidance(" [all] for all processes ");
93 G4UIparameter* param = new G4UIparameter("verbose",'i',false);
94 procVerboseCmd->SetParameter(param);
95 param = new G4UIparameter("type",'s',true);
96 param->SetDefaultValue("all");
97 procVerboseCmd->SetParameter(param);
99
100 // Command /particle/process/dump
101 dumpCmd = new G4UIcommand("/process/dump",this);
102 dumpCmd->SetGuidance("Dump process information");
103 dumpCmd->SetGuidance(" dump name [particle]");
104 dumpCmd->SetGuidance(" name: process name or type name");
105 dumpCmd->SetGuidance(" particle: particle name [all: for all particles]");
106 param = new G4UIparameter("procName",'s',false);
107 dumpCmd->SetParameter(param);
108 param = new G4UIparameter("particle",'s',true);
109 param->SetDefaultValue("all");
110 dumpCmd->SetParameter(param);
112
113 // Command /process/activate
114 activateCmd = new G4UIcommand("/process/activate",this);
115 activateCmd->SetGuidance("Activate processes ");
116 activateCmd->SetGuidance(" Activate name [particle]");
117 activateCmd->SetGuidance(" name: process name or type name");
118 activateCmd->SetGuidance(" particle: particle name [all: for all particles]");
119 param = new G4UIparameter("procName",'s',false);
120 activateCmd->SetParameter(param);
121 param = new G4UIparameter("particle",'s',true);
122 param->SetDefaultValue("all");
123 activateCmd->SetParameter(param);
124 activateCmd->AvailableForStates(G4State_Idle);
125
126 // Command /process/inactivate
127 inactivateCmd = new G4UIcommand("/process/inactivate",this);
128 inactivateCmd->SetGuidance("Inactivate process ");
129 inactivateCmd->SetGuidance("Inactivate processes ");
130 inactivateCmd->SetGuidance(" Inactivate name [particle]");
131 inactivateCmd->SetGuidance(" name: process name or type name");
132 inactivateCmd->SetGuidance(" particle: particle name [all: for all particles]");
133 param = new G4UIparameter("procName",'s',false);
134 inactivateCmd->SetParameter(param);
135 param = new G4UIparameter("particle",'s',true);
136 param->SetDefaultValue("all");
137 inactivateCmd->SetParameter(param);
138 inactivateCmd->AvailableForStates(G4State_Idle);
139}
@ G4State_EventProc
@ G4State_Init
@ G4State_Idle
@ G4State_GeomClosed
@ G4State_PreInit
G4ProcessType
int G4int
Definition: G4Types.hh:85
void SetCandidates(const char *candidateList)
void SetParameterName(const char *theName, G4bool omittable, G4bool currentAsDefault=false)
void SetDefaultValue(const char *defVal)
void SetParameterName(const char *theName, G4bool omittable, G4bool currentAsDefault=false)
void SetDefaultValue(G4int defVal)
void SetParameter(G4UIparameter *const newParameter)
Definition: G4UIcommand.hh:146
void SetGuidance(const char *aGuidance)
Definition: G4UIcommand.hh:156
void SetRange(const char *rs)
Definition: G4UIcommand.hh:120
void AvailableForStates(G4ApplicationState s1)
Definition: G4UIcommand.cc:273
void SetDefaultValue(const char *theDefaultValue)
static const G4String & GetProcessTypeName(G4ProcessType)
Definition: G4VProcess.cc:134

Referenced by G4ProcessTableMessenger().

◆ ~G4ProcessTableMessenger()

G4ProcessTableMessenger::~G4ProcessTableMessenger ( )
virtual

Definition at line 142 of file G4ProcessTableMessenger.cc.

143{
144 delete activateCmd;
145 delete inactivateCmd;
146 delete verboseCmd;
147 delete dumpCmd;
148 delete listCmd;
149 delete procVerboseCmd;
150 delete thisDirectory;
151}

◆ G4ProcessTableMessenger() [2/2]

G4ProcessTableMessenger::G4ProcessTableMessenger ( const G4ProcessTableMessenger )
delete

Member Function Documentation

◆ GetCurrentValue()

G4String G4ProcessTableMessenger::GetCurrentValue ( G4UIcommand command)
virtual

Reimplemented from G4UImessenger.

Definition at line 369 of file G4ProcessTableMessenger.cc.

370{
371 if( command==verboseCmd )
372 {
373 // Command /process/verbose
374 return verboseCmd->ConvertToString(theProcessTable->GetVerboseLevel());
375 }
376 else if ( command==listCmd )
377 {
378 // Command /process/list
379 return currentProcessTypeName;
380 }
381 else
382 {
383 // Command /process/dump, activate, inactivate
384 return (currentProcessName + " " + currentParticleName);
385 }
386
387 return "";
388}
G4int GetVerboseLevel() const
static G4String ConvertToString(G4bool boolVal)
Definition: G4UIcommand.cc:430

◆ operator=()

G4ProcessTableMessenger & G4ProcessTableMessenger::operator= ( const G4ProcessTableMessenger )
delete

◆ SetNewValue()

void G4ProcessTableMessenger::SetNewValue ( G4UIcommand command,
G4String  newValues 
)
virtual

Reimplemented from G4UImessenger.

Definition at line 155 of file G4ProcessTableMessenger.cc.

156{
157 G4ProcessTable::G4ProcNameVector* procNameVector
158 = theProcessTable->GetNameList();
159 G4int idx;
160 G4int type = -1;
162
163 if( command == listCmd )
164 {
165 // Command /process/list
166 type = -1;
167 if (newValue == "all")
168 {
169 currentProcessTypeName = newValue;
170 }
171 else
172 {
173 type = GetProcessType(newValue);
174 if (type <0)
175 {
176 G4cout << " illegal type !!! " << G4endl;
177 }
178 else
179 {
180 currentProcessTypeName = newValue;
181 }
182 }
183 G4int counter = 0;
184 idx = 0;
185 for (auto itr=procNameVector->cbegin(); itr!=procNameVector->cend(); ++itr)
186 {
187 ++idx;
188 G4ProcessVector* tmpVector = theProcessTable->FindProcesses(*itr);
189 if ( (type <0) || ( ((*tmpVector)(0)->GetProcessType()) == type) )
190 {
191 if ( counter%4 != 0) G4cout << ",";
192 G4cout << std::setw(19) << *itr;
193 if ((counter++)%4 == 3)
194 {
195 G4cout << G4endl;
196 }
197 }
198 delete tmpVector;
199 }
200 G4cout << G4endl;
201 }
202 else if( command==procVerboseCmd )
203 {
204 // Command /process/setVerbose
205 G4Tokenizer next( newValue );
206
207 // check 1st argument
208 G4String tmpS = G4String(next());
209 // inputstream for newValues
210 const char* temp = (const char*)(tmpS);
211 std::istringstream is((char*)temp);
212 G4int level;
213 is >>level;
214
215 // check 2nd argument
216 currentProcessTypeName = G4String(next());
217 if (currentProcessTypeName.isNull()) currentProcessTypeName = "all";
218 G4bool isProcName = false;
219 G4bool isAll = false;
220 type = -1;
221
222 if (currentProcessTypeName == "all")
223 {
224 isAll = true;
225 }
226 else
227 {
228 type = GetProcessType(currentProcessTypeName);
229 if (type<0)
230 {
231 isProcName = true;
232 currentProcessName = currentProcessTypeName;
233 currentProcessTypeName = "";
234 }
235 }
236 idx = 0;
237 for (auto itr=procNameVector->cbegin(); itr!=procNameVector->cend(); ++itr)
238 {
239 ++idx;
240 G4ProcessVector* tmpVector = theProcessTable->FindProcesses(*itr);
241 G4VProcess* p = (*tmpVector)(0);
242 if ( isAll ||
243 (!isProcName && ( p->GetProcessType() == type) ) ||
244 ( isProcName && ( p->GetProcessName()== currentProcessName) ) )
245 {
246 p->SetVerboseLevel(level);
247 }
248 delete tmpVector;
249 }
250 }
251 else if( command==verboseCmd )
252 {
253 // Command /process/verbose
254 theProcessTable->SetVerboseLevel(verboseCmd->GetNewIntValue(newValue));
255 }
256 else
257 {
258 G4Tokenizer next( newValue );
259
260 // check 1st argument
261 currentProcessName = G4String(next());
262 G4bool isProcName = false;
263 for (auto itr=procNameVector->cbegin(); itr!=procNameVector->cend(); ++itr)
264 {
265 if ( (*itr) == currentProcessName )
266 {
267 isProcName = true;
268 break;
269 }
270 }
271 if (!isProcName)
272 {
273 type = GetProcessType(currentProcessName);
274 if (type <0 )
275 {
276 // no processes with specified name
277 ed << " illegal process (or type) name ["
278 << currentProcessName << "]";
279 command->CommandFailed(ed);
280 currentProcessName = "";
281 return;
282 }
283 }
284
285 // check 2nd argument
286 currentParticleName = G4String(next());
287 G4bool isParticleFound = false;
288 G4ParticleDefinition* currentParticle = nullptr;
289 if ( currentParticleName == "all" )
290 {
291 isParticleFound = true;
292 }
293 else
294 {
295 isParticleFound = G4ParticleTable::GetParticleTable()
296 ->contains(currentParticleName);
297 if (isParticleFound)
298 {
299 currentParticle = G4ParticleTable::GetParticleTable()
300 ->FindParticle(currentParticleName);
301 }
302 }
303
304 if ( !isParticleFound )
305 {
306 // no particle with specified name
307 ed << " illegal particle name [" << currentParticleName << "]";
308 command->CommandFailed(ed);
309 currentParticleName = "";
310 return;
311 }
312
313 if( command==dumpCmd )
314 {
315 // process/dump
316 G4ProcessVector* tmpVector;
317 if (isProcName)
318 {
319 tmpVector = theProcessTable->FindProcesses(currentProcessName);
320 }
321 else
322 {
323 tmpVector = theProcessTable->FindProcesses(G4ProcessType(type));
324 }
325 for (std::size_t i=0; i<tmpVector->length(); ++i)
326 {
327 theProcessTable->DumpInfo( (*tmpVector)(i), currentParticle );
328 }
329 delete tmpVector;
330 }
331 else if ( (command==activateCmd) || (command==inactivateCmd))
332 {
333 // process/activate , inactivate
334 G4bool fActive = (command==activateCmd);
335 if (isProcName)
336 {
337 if ( currentParticle == nullptr )
338 {
339 theProcessTable->SetProcessActivation(currentProcessName,
340 fActive);
341 }
342 else
343 {
344 theProcessTable->SetProcessActivation(currentProcessName,
345 currentParticle,
346 fActive);
347 }
348 }
349 else
350 {
351 if ( currentParticle == nullptr )
352 {
353 theProcessTable->SetProcessActivation(G4ProcessType(type),
354 fActive);
355 }
356 else
357 {
358 theProcessTable->SetProcessActivation(G4ProcessType(type),
359 currentParticle,
360 fActive);
361 }
362 }
363 G4UImanager::GetUIpointer()->ApplyCommand("/run/physicsModified");
364 }
365 }
366}
std::ostringstream G4ExceptionDescription
Definition: G4Exception.hh:40
bool G4bool
Definition: G4Types.hh:86
#define G4endl
Definition: G4ios.hh:57
G4GLOB_DLL std::ostream G4cout
G4bool contains(const G4ParticleDefinition *particle) const
G4ParticleDefinition * FindParticle(G4int PDGEncoding)
static G4ParticleTable * GetParticleTable()
void DumpInfo(G4VProcess *process, const G4ParticleDefinition *particle=nullptr)
G4ProcNameVector * GetNameList()
void SetProcessActivation(const G4String &processName, G4bool fActive)
G4ProcessVector * FindProcesses()
void SetVerboseLevel(G4int value)
std::vector< G4String > G4ProcNameVector
std::size_t length() const
G4bool isNull() const
static G4int GetNewIntValue(const char *paramString)
void CommandFailed(G4int errCode, G4ExceptionDescription &ed)
Definition: G4UIcommand.hh:179
G4int ApplyCommand(const char *aCommand)
Definition: G4UImanager.cc:485
static G4UImanager * GetUIpointer()
Definition: G4UImanager.cc:77
void SetVerboseLevel(G4int value)
Definition: G4VProcess.hh:412
G4ProcessType GetProcessType() const
Definition: G4VProcess.hh:388
const G4String & GetProcessName() const
Definition: G4VProcess.hh:382

The documentation for this class was generated from the following files: