48G4UserPhysicsListMessenger::
50 : thePhysicsList(pParticleList)
55 theDirectory->
SetGuidance(
"Commands for G4VUserPhysicsList.");
59 verboseCmd->
SetGuidance(
"Set the Verbose level of G4VUserPhysicsList.");
61 verboseCmd->
SetGuidance(
" 1 : Display warning messages");
65 verboseCmd->
SetRange(
"level >=0 && level <=3");
77 setCutForAGivenParticleCmd =
78 new G4UIcommand(
"/run/setCutForAGivenParticle",
this);
80 "Set a cut value to a specific particle ");
82 "Usage: /run/setCutForAGivenParticle gamma 1. mm");
96 getCutForAGivenParticleCmd =
99 "Get a cut value to a specific particle ");
101 "Usage: /run/getCutForAGivenParticle gamma ");
103 getCutForAGivenParticleCmd->
SetCandidates(
"e- e+ gamma proton");
108 setCutRCmd =
new G4UIcommand(
"/run/setCutForRegion",
this);
109 setCutRCmd->
SetGuidance(
"Set cut value for a region");
124 dumpListCmd->
SetGuidance(
"Dump List of particles in G4VUserPhysicsList. ");
129 addProcManCmd->
SetGuidance(
"add process manager to specified particle type");
137 buildPTCmd->
SetGuidance(
"build physics table of specified particle type");
154 retrieveCmd->
SetGuidance(
"Retrieve Physics Table");
155 retrieveCmd->
SetGuidance(
" Enter directory name or OFF to switch off");
163 "Switch on/off ascii mode in store/retrieve Physics Table");
164 asciiCmd->
SetGuidance(
" Enter 0(binary) or 1(ascii)");
168 asciiCmd->
SetRange(
"ascii ==0 || ascii ==1");
171 applyCutsCmd =
new G4UIcommand(
"/run/particle/applyCuts",
this);
172 applyCutsCmd->
SetGuidance(
"Set applyCuts flag for a particle.");
174 " Some EM processes which do not have infrared divergence");
176 "may generate gamma, e- and/or e+ with kinetic energies");
178 "below the production threshold. By setting this flag,");
180 "such secondaries below threshold are eliminated and");
182 "kinetic energies of such secondaries are accumulated");
183 applyCutsCmd->
SetGuidance(
"to the energy deposition of their mother.");
185 " Note that 'applyCuts' makes sense only for gamma,");
187 "e- and e+. If this command is issued for other particle,");
189 "a warning message is displayed and the command is");
192 " If particle name is 'all', this command affects on");
206 "Dump a list of production threshold values in range and energy");
207 dumpCutValuesCmd->
SetGuidance(
"for all registered material-cuts-couples.");
209 "Dumping a list takes place when you issue 'beamOn' and");
211 "actual conversion tables from range to energy are available.");
213 "If you want a list 'immediately', use '/run/dumpRegion' for threshold");
215 "list given in range only. Also, '/run/dumpCouples' gives you the");
217 "current list if you have already issued 'run/beamOn' at least once.");
225 dumpOrdParamCmd->
SetGuidance(
"Dump a list of ordering parameter ");
237 delete setCutForAGivenParticleCmd;
238 delete getCutForAGivenParticleCmd;
241 delete addProcManCmd;
247 delete dumpCutValuesCmd;
248 delete dumpOrdParamCmd;
257 if(command == setCutCmd)
263 else if(command == setCutForAGivenParticleCmd)
267 std::istringstream str(newValue);
268 str >> particleName >> cut >> unit;
271 else if(command == getCutForAGivenParticleCmd)
275 else if(command == setCutRCmd)
277 std::istringstream is(newValue);
281 is >> regName >> cVal >> uniName;
284 ed <<
"illegal arguments : " << newValue;
291 else if(command == verboseCmd)
295 else if(command == dumpListCmd)
299 else if(command == dumpOrdParamCmd)
305 else if(command == addProcManCmd)
309 if(particle ==
nullptr)
311 ed <<
" Particle is not found : " << newValue;
317 ed <<
" Particle is not initialized : " << newValue;
323 else if(command == buildPTCmd)
327 if(particle ==
nullptr)
329 ed <<
" Particle is not found : " << newValue;
336 else if(command == storeCmd)
340 else if(command == retrieveCmd)
342 if((newValue ==
"OFF") || (newValue ==
"off"))
351 else if(command == asciiCmd)
362 else if(command == applyCutsCmd)
368 G4bool flag = (temp ==
"true" || temp ==
"TRUE");
375 else if(command == dumpCutValuesCmd)
388 if(command == setCutCmd)
392 else if(command == verboseCmd)
396 else if(command == addProcManCmd)
408 else if(command == buildPTCmd)
420 else if(command == storeCmd)
424 else if(command == retrieveCmd)
435 else if(command == asciiCmd)
std::ostringstream G4ExceptionDescription
G4GLOB_DLL std::ostream G4cout
G4ProcessManager * GetProcessManager() const
const G4String & GetParticleName() const
G4PTblDicIterator * GetIterator() const
static G4ParticleTable * GetParticleTable()
static G4PhysicsListHelper * GetPhysicsListHelper()
void DumpOrdingParameterTable(G4int subType=-1) const
void SetDefaultValue(G4double defVal)
void SetDefaultUnit(const char *defUnit)
static G4double GetNewDoubleValue(const char *paramString)
void SetParameterName(const char *theName, G4bool omittable, G4bool currentAsDefault=false)
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)
static G4int GetNewIntValue(const char *paramString)
void SetDefaultValue(G4int defVal)
void SetToBeBroadcasted(G4bool val)
static G4String CategoryOf(const char *unitName)
static G4double ValueOf(const char *unitName)
static G4String ConvertToString(G4bool boolVal)
void SetParameter(G4UIparameter *const newParameter)
void SetGuidance(const char *aGuidance)
void CommandFailed(G4int errCode, G4ExceptionDescription &ed)
static G4String UnitsList(const char *unitCategory)
void SetRange(const char *rs)
void AvailableForStates(G4ApplicationState s1)
void SetDefaultValue(const char *theDefaultValue)
void SetParameterRange(const char *theRange)
void SetParameterCandidates(const char *theString)
void SetDefaultUnit(const char *theDefaultUnit)
virtual G4String GetCurrentValue(G4UIcommand *command)
virtual void SetNewValue(G4UIcommand *command, G4String newValues)
G4VUserPhysicsList * thePhysicsList
virtual ~G4UserPhysicsListMessenger()
G4double GetCutValue(const G4String &pname) const
void SetDefaultCutValue(G4double newCutValue)
void SetPhysicsTableRetrieved(const G4String &directory="")
void PreparePhysicsTable(G4ParticleDefinition *)
void SetCutValue(G4double aCut, const G4String &pname)
G4bool IsStoredInAscii() const
void ResetStoredInAscii()
void SetCutsForRegion(G4double aCut, const G4String &rname)
void AddProcessManager(G4ParticleDefinition *newParticle, G4ProcessManager *newManager=nullptr)
G4bool StorePhysicsTable(const G4String &directory=".")
void SetVerboseLevel(G4int value)
G4int GetVerboseLevel() const
void SetApplyCuts(G4bool value, const G4String &name)
const G4String & GetPhysicsTableDirectory() const
G4bool IsPhysicsTableRetrieved() const
void DumpCutValuesTable(G4int flag=1)
void ResetPhysicsTableRetrieved()
G4double GetDefaultCutValue() const