File indexing completed on 2025-02-23 09:22:00
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 #include "DetectorMessenger.hh"
0028
0029 #include "DetectorConstruction.hh"
0030
0031 #include "G4UIcmdWith3VectorAndUnit.hh"
0032 #include "G4UIcmdWithADoubleAndUnit.hh"
0033 #include "G4UIdirectory.hh"
0034
0035
0036
0037 DetectorMessenger::DetectorMessenger(DetectorConstruction* detConstruction)
0038 : fpDetectorConstruction(detConstruction),
0039 fpWorldGeometryDirectory(nullptr),
0040 fpWorldSideLength(nullptr),
0041 fpCellGeometryDirectory(nullptr),
0042 fpCellRadius(nullptr)
0043 {
0044
0045 fpWorldGeometryDirectory = new G4UIdirectory("/world/");
0046 fpWorldGeometryDirectory->SetGuidance("Commands for world geometry params");
0047
0048 fpWorldSideLength = new G4UIcmdWithADoubleAndUnit("/world/worldSize", this);
0049 fpWorldSideLength->SetGuidance("Side length for the world");
0050 fpWorldSideLength->SetParameterName("Side length", false);
0051
0052
0053 fpCellGeometryDirectory = new G4UIdirectory("/cell/");
0054 fpCellGeometryDirectory->SetGuidance("Commands for world geometry params");
0055 fpCellRadius = new G4UIcmdWith3VectorAndUnit("/cell/radiusSize", this);
0056 fpCellRadius->SetGuidance("Set Semi-Major axes for cell (x, y, z) - unset, whole world is water");
0057 fpCellRadius->SetParameterName("xradius", "yradius", "zradius", false);
0058 }
0059
0060
0061
0062 DetectorMessenger::~DetectorMessenger()
0063 {
0064
0065 delete fpCellRadius;
0066 delete fpWorldSideLength;
0067 delete fpCellGeometryDirectory;
0068 delete fpWorldGeometryDirectory;
0069 }
0070
0071
0072
0073 void DetectorMessenger::SetNewValue(G4UIcommand* command, G4String newValue)
0074 {
0075
0076 if (command == fpWorldSideLength) {
0077 fpDetectorConstruction->SetWorldSideLength(
0078 ((G4UIcmdWithADoubleAndUnit*)command)->GetNewDoubleValue(newValue));
0079 }
0080 else if (command == fpCellRadius) {
0081 fpDetectorConstruction->SetCellRadius(
0082 ((G4UIcmdWith3VectorAndUnit*)command)->GetNew3VectorValue(newValue));
0083 }
0084 }
0085