File indexing completed on 2026-04-12 07:40:31
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 "G4UIcmdWith3Vector.hh"
0034 #include "G4UIcmdWithADoubleAndUnit.hh"
0035 #include "G4UIcmdWithAString.hh"
0036 #include "G4UIcmdWithoutParameter.hh"
0037 #include "G4UIdirectory.hh"
0038
0039
0040
0041 DetectorMessenger::DetectorMessenger(DetectorConstruction* Det) : fDetector(Det)
0042 {
0043 fTestemDir = new G4UIdirectory("/testem/");
0044 fTestemDir->SetGuidance(" detector control.");
0045
0046 fDetDir = new G4UIdirectory("/testem/det/");
0047 fDetDir->SetGuidance("detector construction commands");
0048
0049 fMaterCmd = new G4UIcmdWithAString("/testem/det/setMat", this);
0050 fMaterCmd->SetGuidance("Select Material.");
0051 fMaterCmd->SetParameterName("material", false);
0052 fMaterCmd->AvailableForStates(G4State_PreInit, G4State_Idle);
0053 fMaterCmd->SetToBeBroadcasted(false);
0054
0055 fLBinCmd = new G4UIcmdWith3Vector("/testem/det/setLbin", this);
0056 fLBinCmd->SetGuidance("set longitudinal bining");
0057 fLBinCmd->SetGuidance("nb of bins; bin thickness (in radl)");
0058 fLBinCmd->SetParameterName("nLtot", "dLradl", " ", true);
0059 fLBinCmd->SetRange("nLtot>=1 && dLradl>0");
0060 fLBinCmd->AvailableForStates(G4State_PreInit, G4State_Idle);
0061 fLBinCmd->SetToBeBroadcasted(false);
0062
0063 fRBinCmd = new G4UIcmdWith3Vector("/testem/det/setRbin", this);
0064 fRBinCmd->SetGuidance("set radial bining");
0065 fRBinCmd->SetGuidance("nb of bins; bin thickness (in radl)");
0066 fRBinCmd->SetParameterName("nRtot", "dRradl", " ", true);
0067 fRBinCmd->SetRange("nRtot>=1 && dRradl>0");
0068 fRBinCmd->AvailableForStates(G4State_PreInit, G4State_Idle);
0069 fRBinCmd->SetToBeBroadcasted(false);
0070 }
0071
0072
0073
0074 DetectorMessenger::~DetectorMessenger()
0075 {
0076 delete fMaterCmd;
0077 delete fLBinCmd;
0078 delete fRBinCmd;
0079 delete fDetDir;
0080 delete fTestemDir;
0081 }
0082
0083
0084
0085 void DetectorMessenger::SetNewValue(G4UIcommand* command, G4String newValue)
0086 {
0087 if (command == fMaterCmd) {
0088 fDetector->SetMaterial(newValue);
0089 }
0090
0091 if (command == fLBinCmd) {
0092 fDetector->SetLBining(fLBinCmd->GetNew3VectorValue(newValue));
0093 }
0094
0095 if (command == fRBinCmd) {
0096 fDetector->SetRBining(fRBinCmd->GetNew3VectorValue(newValue));
0097 }
0098 }
0099
0100