// // Created by Matthieu Hentz on 14/02/2018. // #include "RunAction.hh" #include "RunActionMessenger.hh" #include "G4UIdirectory.hh" #include "G4UIcmdWithAnInteger.hh" #include "G4UIcmdWithABool.hh" #include "G4UIcmdWithADouble.hh" RunActionMessenger::RunActionMessenger( RunAction* runAction ) :G4UImessenger(), fRunAction(runAction), fRunActionDir(0), fBufferCmd(0), fDumpModeCmd(0), fDetSpacingCmd(0), fDetDistanceCmd(0) { fRunActionDir = new G4UIdirectory( "/user/run/" ); fRunActionDir->SetGuidance( " user run action control." ); fBufferCmd = new G4UIcmdWithAnInteger( "/user/run/buffer", this ); fBufferCmd->SetGuidance( "Set accumulator buffer size." ); fBufferCmd->SetParameterName( "bufferSize", false ); fBufferCmd->AvailableForStates( G4State_PreInit ); fDumpModeCmd = new G4UIcmdWithABool( "/user/run/dump/single", this ); fDumpModeCmd->SetGuidance( "Set accumulator dump mode." ); fDumpModeCmd->SetParameterName( "dumpSingle", false ); fDumpModeCmd->AvailableForStates( G4State_PreInit ); fDetSpacingCmd = new G4UIcmdWithADouble( "/user/run/detector/spacing", this ); fDetSpacingCmd->SetGuidance( "Set detector spacing" ); fDetSpacingCmd->SetParameterName( "detSpacing", false ); fDetSpacingCmd->AvailableForStates( G4State_PreInit ); fDetDistanceCmd = new G4UIcmdWithADouble( "/user/run/detector/distance", this ); fDetDistanceCmd->SetGuidance( "Set detector distance" ); fDetDistanceCmd->SetParameterName( "containerLength", false ); fDetDistanceCmd->AvailableForStates( G4State_PreInit ); fDetPositionCmd = new G4UIcmdWithADouble( "/user/run/detector/position", this ); fDetPositionCmd->SetGuidance( "Set detector position" ); fDetPositionCmd->SetParameterName( "detPosition", false ); fDetPositionCmd->AvailableForStates( G4State_PreInit ); } RunActionMessenger::~RunActionMessenger() { delete fDumpModeCmd; delete fDetSpacingCmd; delete fDetDistanceCmd; delete fDetPositionCmd; delete fBufferCmd; delete fRunActionDir; } void RunActionMessenger::SetNewValue( G4UIcommand* command, G4String newValue ) { if( command == fBufferCmd ) { fRunAction->SetBufferSize( fBufferCmd->GetNewIntValue(newValue) ); } if( command == fDumpModeCmd ) { fRunAction->SetDumpMode( fDumpModeCmd->GetNewBoolValue(newValue) ); } if( command == fDetSpacingCmd ) { fRunAction->SetDetSpacing( fDetSpacingCmd->GetNewDoubleValue(newValue) ); } if( command == fDetDistanceCmd ) { fRunAction->SetDetDistance( fDetDistanceCmd->GetNewDoubleValue(newValue) ); } if( command == fDetPositionCmd ) { fRunAction->SetDetPosition( fDetPositionCmd->GetNewDoubleValue(newValue) ); } }