File indexing completed on 2026-04-30 07:32:47
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 #include "DetectorMessenger.hh"
0030
0031 #include "DetectorConstruction.hh"
0032
0033 #include "G4UIcmdWithADoubleAndUnit.hh"
0034 #include "G4UIcmdWithAString.hh"
0035 #include "G4UIcmdWithoutParameter.hh"
0036 #include "G4UIdirectory.hh"
0037
0038
0039
0040 DetectorMessenger::DetectorMessenger(DetectorConstruction* Det) : fDetector(Det)
0041 {
0042 fTestemDir = new G4UIdirectory("/testem/");
0043 fTestemDir->SetGuidance(" detector control.");
0044
0045 fDetDir = new G4UIdirectory("/testem/det/");
0046 fDetDir->SetGuidance("detector construction commands");
0047
0048 fWallMater = new G4UIcmdWithAString("/testem/det/wallMater", this);
0049 fWallMater->SetGuidance("Set material of the wall.");
0050 fWallMater->SetParameterName("wallMat", false);
0051 fWallMater->AvailableForStates(G4State_PreInit);
0052
0053 fWallThick = new G4UIcmdWithADoubleAndUnit("/testem/det/wallThickness", this);
0054 fWallThick->SetGuidance("Set tickness of the wall");
0055 fWallThick->SetParameterName("wallTick", false);
0056 fWallThick->SetRange("wallTick>0.");
0057 fWallThick->SetUnitCategory("Length");
0058 fWallThick->AvailableForStates(G4State_PreInit);
0059
0060 fCavMater = new G4UIcmdWithAString("/testem/det/cavityMater", this);
0061 fCavMater->SetGuidance("Set material of the cavity.");
0062 fCavMater->SetParameterName("cavMat", false);
0063 fCavMater->AvailableForStates(G4State_PreInit);
0064
0065 fCavThick = new G4UIcmdWithADoubleAndUnit("/testem/det/cavityThickness", this);
0066 fCavThick->SetGuidance("Set tickness of the cavity");
0067 fCavThick->SetParameterName("cavityTick", false);
0068 fCavThick->SetRange("cavityTick>0.");
0069 fCavThick->SetUnitCategory("Length");
0070 fCavThick->AvailableForStates(G4State_PreInit);
0071
0072 fCavRadius = new G4UIcmdWithADoubleAndUnit("/testem/det/cavityRadius", this);
0073 fCavRadius->SetGuidance("Set radius of the cavity");
0074 fCavRadius->SetParameterName("cavityRadius", false);
0075 fCavRadius->SetRange("cavityRadius>0.");
0076 fCavRadius->SetUnitCategory("Length");
0077 fCavRadius->AvailableForStates(G4State_PreInit);
0078 }
0079
0080
0081
0082 DetectorMessenger::~DetectorMessenger()
0083 {
0084 delete fWallMater;
0085 delete fWallThick;
0086
0087 delete fCavMater;
0088 delete fCavThick;
0089 delete fCavRadius;
0090
0091 delete fDetDir;
0092 delete fTestemDir;
0093 }
0094
0095
0096
0097 void DetectorMessenger::SetNewValue(G4UIcommand* command, G4String newValue)
0098 {
0099 if (command == fWallMater) {
0100 fDetector->SetWallMaterial(newValue);
0101 }
0102
0103 if (command == fWallThick) {
0104 fDetector->SetWallThickness(fWallThick->GetNewDoubleValue(newValue));
0105 }
0106
0107 if (command == fCavMater) {
0108 fDetector->SetCavityMaterial(newValue);
0109 }
0110
0111 if (command == fCavThick) {
0112 fDetector->SetCavityThickness(fCavThick->GetNewDoubleValue(newValue));
0113 }
0114
0115 if (command == fCavRadius) {
0116 fDetector->SetCavityRadius(fCavRadius->GetNewDoubleValue(newValue));
0117 }
0118 }
0119
0120