65 G4int G4ProcessTableMessenger::NumberOfProcessType = 10;
69 :theProcessTable(pTable),
70 currentProcessTypeName(
"all"),
71 currentProcessName(
"all"),
72 currentParticleName(
"all")
76 thisDirectory->
SetGuidance(
"Process Table control commands.");
83 listCmd->
SetGuidance(
" type: process type [all:for all proceeses]");
86 SetNumberOfProcessType();
89 for (
G4int idx = 0; idx < NumberOfProcessType ; idx ++ ) {
97 verboseCmd->
SetGuidance(
"Set Verbose Level for Process Table");
102 verboseCmd->
SetRange(
"verbose >=0");
106 procVerboseCmd =
new G4UIcommand(
"/process/setVerbose",
this);
107 procVerboseCmd->
SetGuidance(
"Set verbose level for processes");
108 procVerboseCmd->
SetGuidance(
" setVerbose level [type or name] ");
109 procVerboseCmd->
SetGuidance(
" level: verbose level ");
110 procVerboseCmd->
SetGuidance(
" name : process name ");
111 procVerboseCmd->
SetGuidance(
" type : process type ");
112 procVerboseCmd->
SetGuidance(
" [all] for all proceeses ");
124 dumpCmd->
SetGuidance(
" name: process name or type name");
125 dumpCmd->
SetGuidance(
" particle: particle name [all: for all particles]");
134 activateCmd =
new G4UIcommand(
"/process/activate",
this);
136 activateCmd->
SetGuidance(
" Activate name [particle]");
137 activateCmd->
SetGuidance(
" name: process name or type name");
138 activateCmd->
SetGuidance(
" particle: particle name [all: for all particles]");
147 inactivateCmd =
new G4UIcommand(
"/process/inactivate",
this);
149 inactivateCmd->
SetGuidance(
"Inactivate processes ");
150 inactivateCmd->
SetGuidance(
" Inactivate name [particle]");
151 inactivateCmd->
SetGuidance(
" name: process name or type name");
152 inactivateCmd->
SetGuidance(
" particle: particle name [all: for all particles]");
165 delete inactivateCmd;
169 delete procVerboseCmd;
170 delete thisDirectory;
182 if( command == listCmd ){
185 if (newValue ==
"all") {
186 currentProcessTypeName = newValue;
188 type = GetProcessType(newValue);
192 currentProcessTypeName = newValue;
197 G4ProcessTable::G4ProcNameVector::iterator itr;
198 for (itr=procNameVector->begin(); itr!=procNameVector->end(); ++itr) {
201 if ( (type <0) || ( ((*tmpVector)(0)->GetProcessType()) == type) ) {
202 if ( counter%4 != 0)
G4cout <<
",";
203 G4cout << std::setw(19) <<*itr;
204 if ((counter++)%4 == 3) {
213 }
else if( command==procVerboseCmd ) {
220 const char* temp = (
const char*)(tmpS);
221 std::istringstream is((
char*)temp);
226 currentProcessTypeName =
G4String(next());
227 if (currentProcessTypeName.
isNull()) currentProcessTypeName =
"all";
228 G4bool isProcName =
false;
232 if (currentProcessTypeName ==
"all") {
235 type = GetProcessType(currentProcessTypeName);
238 currentProcessName = currentProcessTypeName;
239 currentProcessTypeName =
"";
243 G4ProcessTable::G4ProcNameVector::iterator itr;
244 for (itr=procNameVector->begin(); itr!=procNameVector->end(); ++itr) {
257 }
else if( command==verboseCmd ) {
266 currentProcessName =
G4String(next());
267 G4bool isProcName =
false;
268 G4ProcessTable::G4ProcNameVector::iterator itr;
269 for (itr=procNameVector->begin(); itr!=procNameVector->end(); ++itr) {
270 if ( (*itr) == currentProcessName ) {
276 type = GetProcessType(currentProcessName);
280 currentProcessName =
"";
286 currentParticleName =
G4String(next());
287 G4bool isParticleFound =
false;
289 if ( currentParticleName ==
"all" ) {
290 isParticleFound =
true;
294 if (isParticleFound) {
300 if ( !isParticleFound ) {
303 currentParticleName =
"";
307 if( command==dumpCmd ) {
311 tmpVector = theProcessTable->
FindProcesses(currentProcessName);
316 theProcessTable->
DumpInfo( (*tmpVector)(i), currentParticle );
321 }
else if ( (command==activateCmd) || (command==inactivateCmd)) {
323 G4bool fActive = (command==activateCmd);
325 if ( currentParticle == 0 ) {
334 if ( currentParticle == 0 ) {
359 std::ostringstream os;
364 if( command==verboseCmd ){
367 returnValue = os.str();
369 }
else if ( command==listCmd ){
372 for (idx = 0; idx < NumberOfProcessType ; idx ++ ) {
377 returnValue = currentProcessTypeName;
384 G4ProcessTable::G4ProcNameVector::iterator itr;
385 for (itr=procNameVector->begin(); itr!=procNameVector->end(); ++itr) {
386 candidates +=
" " + (*itr);
401 returnValue = currentProcessName +
" " + currentParticleName;
415 G4int G4ProcessTableMessenger::GetProcessType(
const G4String& aTypeName)
const
418 for (
G4int idx = 0; idx < NumberOfProcessType ; idx ++ ) {
429 void G4ProcessTableMessenger::SetNumberOfProcessType()
431 G4bool isFoundEndMark =
false;
433 for (idx = 0; idx < 1000 ; idx ++ ) {
435 isFoundEndMark = typeName.
contains(
"---");
436 if ( isFoundEndMark )
break;
438 if ( isFoundEndMark ) {
439 NumberOfProcessType = idx;
441 G4Exception(
"G4ProcessTableMessenger::SetNumberOfProcessType()",
"ProcMan014",