File indexing completed on 2025-10-31 08:22:22
0001 
0002 
0003 
0004 
0005 
0006 
0007 
0008 
0009 
0010 
0011 
0012 
0013 
0014 
0015 
0016 
0017 
0018 
0019 
0020 
0021 
0022 
0023 
0024 
0025 
0026 
0027 
0028 
0029 
0030 
0031 #include "PhysicsListMessenger.hh"
0032 #include "PhysicsList.hh"
0033 #include "G4SystemOfUnits.hh"
0034 #include "G4UIdirectory.hh"
0035 #include "G4UIcmdWithAString.hh"
0036 #include "G4UIcmdWithADoubleAndUnit.hh"
0037 
0038 PhysicsListMessenger::PhysicsListMessenger(PhysicsList* pPhys)
0039   :G4UImessenger(),fPhysicsList(pPhys),fMaxChargedStep(1*CLHEP::mm)
0040 {
0041   fPhysDir = new G4UIdirectory("/testem/phys/");
0042   fPhysDir->SetGuidance("physics list commands");
0043 
0044   fListCmd = new G4UIcmdWithAString("/testem/phys/addPhysics",this);  
0045   fListCmd->SetGuidance("Add modula physics list.");
0046   fListCmd->SetParameterName("PList",false);
0047   fListCmd->AvailableForStates(G4State_PreInit);
0048   fListCmd->SetToBeBroadcasted(false);      
0049 
0050   fStepMaxCmd = new G4UIcmdWithADoubleAndUnit("/testem/stepMax",this);
0051   fStepMaxCmd->SetGuidance("Set max allowed step length");
0052   fStepMaxCmd->SetParameterName("mxStep",false);
0053   fStepMaxCmd->SetRange("mxStep>0.");
0054   fStepMaxCmd->SetUnitCategory("Length");
0055   fStepMaxCmd->AvailableForStates(G4State_PreInit, G4State_Idle);
0056 }
0057 
0058 PhysicsListMessenger::~PhysicsListMessenger()
0059 {
0060   delete fListCmd;
0061   delete fPhysDir;
0062   delete fStepMaxCmd;
0063 }
0064 
0065 void PhysicsListMessenger::SetNewValue(G4UIcommand* command, G4String newValue)
0066 { 
0067   if( command == fListCmd )
0068     { fPhysicsList->AddPhysicsList(newValue); }
0069   if (command == fStepMaxCmd)
0070     { fMaxChargedStep = fStepMaxCmd->GetNewDoubleValue(newValue); }
0071 }
0072