Loading...
Searching...
No Matches
DetectorMessenger.cc
Go to the documentation of this file.
1//
2// ********************************************************************
3// * License and Disclaimer *
4// * *
5// * The Geant4 software is copyright of the Copyright Holders of *
6// * the Geant4 Collaboration. It is provided under the terms and *
7// * conditions of the Geant4 Software License, included in the file *
8// * LICENSE and available at http://cern.ch/geant4/license . These *
9// * include a list of copyright holders. *
10// * *
11// * Neither the authors of this software system, nor their employing *
12// * institutes,nor the agencies providing financial support for this *
13// * work make any representation or warranty, express or implied, *
14// * regarding this software system or assume any liability for its *
15// * use. Please see the license in the file LICENSE and URL above *
16// * for the full disclaimer and the limitation of liability. *
17// * *
18// * This code implementation is the result of the scientific and *
19// * technical work of the GEANT4 collaboration. *
20// * By using, copying, modifying or distributing the software (or *
21// * any work based on the software) you agree to acknowledge its *
22// * use in resulting scientific publications, and indicate your *
23// * acceptance of all terms of the Geant4 Software license. *
24// ********************************************************************
25//
26//
27/// \file radiobiology/src/DetectorMessenger.cc
28/// \brief Implementation of the RadioBio::DetectorMessenger class
29
30#include "DetectorMessenger.hh"
31
32#include "G4UIcmdWith3VectorAndUnit.hh"
33#include "G4UIcmdWithADoubleAndUnit.hh"
34#include "G4UIcmdWithAString.hh"
35#include "G4UIcommand.hh"
36#include "G4UIdirectory.hh"
37#include "G4UIparameter.hh"
38
39#include "DetectorConstruction.hh"
40
41namespace RadioBio
42{
43
44//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
45
47{
48 fGeometryDir = new G4UIdirectory("/detectorGeom/");
49 fGeometryDir->SetGuidance("commands to change geometry material and size");
50
51 fMaterCmd = new G4UIcmdWithAString("/detectorGeom/setMat", this);
52 fMaterCmd->SetGuidance("Select material of the box.");
53 fMaterCmd->SetParameterName("choice", false);
54 fMaterCmd->AvailableForStates(G4State_PreInit, G4State_Idle);
55 fMaterCmd->SetToBeBroadcasted(false);
56
57 fSizeCmd = new G4UIcmdWithADoubleAndUnit("/detectorGeom/setSize", this);
58 fSizeCmd->SetGuidance("Set size of the cubic box");
59 fSizeCmd->SetParameterName("Size", false);
60 fSizeCmd->SetRange("Size>0.");
61 fSizeCmd->SetUnitCategory("Length");
62 fSizeCmd->AvailableForStates(G4State_PreInit, G4State_Idle);
63 fSizeCmd->SetToBeBroadcasted(false);
64
65 fSizeVectorCmd = new G4UIcmdWith3VectorAndUnit("/detectorGeom/setBoxSizes", this);
66 fSizeVectorCmd->SetGuidance("Insert sizes X Y and Z");
67 fSizeVectorCmd->SetParameterName("SizeAlongX", "SizeAlongY", "SizeAlongZ", false);
68 fSizeVectorCmd->SetRange("SizeAlongX>0. && SizeAlongY>0. && SizeAlongZ>0.");
69 fSizeVectorCmd->SetUnitCategory("Length");
70 fSizeVectorCmd->AvailableForStates(G4State_PreInit, G4State_Idle);
71 fSizeVectorCmd->SetToBeBroadcasted(false);
72
73 fSizeXCmd = new G4UIcmdWithADoubleAndUnit("/detectorGeom/setSizeX", this);
74 fSizeXCmd->SetGuidance("Set X size of the box");
75 fSizeXCmd->SetParameterName("Size", false);
76 fSizeXCmd->SetRange("Size>0.");
77 fSizeXCmd->SetUnitCategory("Length");
78 fSizeXCmd->AvailableForStates(G4State_PreInit, G4State_Idle);
79 fSizeXCmd->SetToBeBroadcasted(false);
80
81 fSizeYCmd = new G4UIcmdWithADoubleAndUnit("/detectorGeom/setSizeY", this);
82 fSizeYCmd->SetGuidance("Set Y size of the box");
83 fSizeYCmd->SetParameterName("Size", false);
84 fSizeYCmd->SetRange("Size>0.");
85 fSizeYCmd->SetUnitCategory("Length");
86 fSizeYCmd->AvailableForStates(G4State_PreInit, G4State_Idle);
87 fSizeYCmd->SetToBeBroadcasted(false);
88
89 fSizeZCmd = new G4UIcmdWithADoubleAndUnit("/detectorGeom/setSizeZ", this);
90 fSizeZCmd->SetGuidance("Set Z size of the box");
91 fSizeZCmd->SetParameterName("Size", false);
92 fSizeZCmd->SetRange("Size>0.");
93 fSizeZCmd->SetUnitCategory("Length");
94 fSizeZCmd->AvailableForStates(G4State_PreInit, G4State_Idle);
95 fSizeZCmd->SetToBeBroadcasted(false);
96}
97
98//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
99
101{
102 delete fGeometryDir;
103 delete fMaterCmd;
104 delete fSizeCmd;
105 delete fSizeVectorCmd;
106 delete fSizeXCmd;
107 delete fSizeYCmd;
108 delete fSizeZCmd;
109}
110
111//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
112
114{
115 if (command == fMaterCmd) {
116 fDetector->SetMaterial(newValue);
117 }
118
119 if (command == fSizeCmd) {
120 fDetector->SetSize(fSizeCmd->GetNewDoubleValue(newValue));
121 }
122
123 if (command == fSizeVectorCmd) {
124 fDetector->SetSize(fSizeVectorCmd->GetNew3VectorValue(newValue));
125 }
126
127 if (command == fSizeXCmd) {
128 fDetector->SetSizeX(fSizeXCmd->GetNewDoubleValue(newValue));
129 }
130
131 if (command == fSizeYCmd) {
132 fDetector->SetSizeY(fSizeYCmd->GetNewDoubleValue(newValue));
133 }
134
135 if (command == fSizeZCmd) {
136 fDetector->SetSizeZ(fSizeZCmd->GetNewDoubleValue(newValue));
137 }
138}
139
140//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
141
142} // namespace RadioBio
Mandatory class for the construction of geometry.
void SetSizeY(G4double y)
Method to set the Y width of the world volume.
void SetSize(G4double)
Method to set the world volume to be cubical with given side.
void SetSizeZ(G4double z)
Method to set the Z width of the world volume.
void SetSizeX(G4double x)
Method to set the X width of the world volume.
void SetMaterial(G4String mat)
Method to set the world material.
G4UIcmdWithAString * fMaterCmd
G4UIcmdWithADoubleAndUnit * fSizeYCmd
DetectorMessenger(DetectorConstruction *)
G4UIcmdWithADoubleAndUnit * fSizeCmd
G4UIcmdWithADoubleAndUnit * fSizeXCmd
G4UIcmdWith3VectorAndUnit * fSizeVectorCmd
G4UIcmdWithADoubleAndUnit * fSizeZCmd
DetectorConstruction * fDetector
void SetNewValue(G4UIcommand *, G4String) override

Applications | User Support | Publications | Collaboration