ECCE @ EIC Software
Reference for
ECCE @ EIC
simulation and reconstruction software on GitHub
Home page
Related Pages
Modules
Namespaces
Classes
Files
External Links
File List
File Members
All
Classes
Namespaces
Files
Functions
Variables
Typedefs
Enumerations
Enumerator
Friends
Macros
Groups
Pages
HadrontherapyModulatorMessenger.cc
Go to the documentation of this file.
Or view
the newest version in sPHENIX GitHub for file HadrontherapyModulatorMessenger.cc
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
// This is the *BASIC* version of Hadrontherapy, a Geant4-based application
27
// See more at: http://g4advancedexamples.lngs.infn.it/Examples/hadrontherapy
28
//
29
// Visit the Hadrontherapy web site (http://www.lns.infn.it/link/Hadrontherapy) to request
30
// the *COMPLETE* version of this program, together with its documentation;
31
// Hadrontherapy (both basic and full version) are supported by the Italian INFN
32
// Institute in the framework of the MC-INFN Group
33
//
34
35
36
#include "
HadrontherapyModulatorMessenger.hh
"
37
#include "
HadrontherapyModulator.hh
"
38
#include "
G4UIdirectory.hh
"
39
#include "
G4UIcmdWithADoubleAndUnit.hh
"
40
#include "
G4UIcmdWithAString.hh
"
41
#include "
G4UIcmdWith3VectorAndUnit.hh
"
42
43
44
HadrontherapyModulatorMessenger::HadrontherapyModulatorMessenger
(
HadrontherapyModulator
* Mod)
45
:Modulator(Mod)
46
47
{
48
modulatorDir
=
new
G4UIdirectory
(
"/modulator/"
);
49
modulatorDir
-> SetGuidance(
"Command to change the modulator wheel proprties"
);
50
51
modulatorMatCmd
=
new
G4UIcmdWithAString
(
"/modulator/RMWMat"
,
this
);
52
modulatorMatCmd
-> SetGuidance(
"Set material of modulatorWheel"
);
53
modulatorMatCmd
-> SetParameterName(
"Material"
,
false
);
54
modulatorMatCmd
-> AvailableForStates(
G4State_Idle
);
55
56
modulatorExternalFile
=
new
G4UIcmdWithAString
(
"/modulator/ReadData"
,
this
);
57
modulatorExternalFile
-> SetGuidance(
"set properties of modulator steps via a external file"
);
58
modulatorExternalFile
-> SetParameterName(
"FileName"
,
true
,
false
);
59
modulatorExternalFile
-> SetDefaultValue (
"default"
);
60
modulatorExternalFile
-> AvailableForStates(
G4State_Idle
);
61
62
modulatorPositionCmd
=
new
G4UIcmdWith3VectorAndUnit
(
"/modulator/position"
,
this
);
63
modulatorPositionCmd
-> SetGuidance(
"Set position of modulato"
);
64
modulatorPositionCmd
-> SetParameterName(
"PositionAlongX"
,
65
"PositionAlongY"
,
66
"PositionAlongZ"
,
false
);
67
modulatorPositionCmd
-> SetDefaultUnit(
"mm"
);
68
modulatorPositionCmd
-> SetUnitCandidates(
"mm cm m"
);
69
modulatorPositionCmd
-> AvailableForStates(
G4State_Idle
);
70
71
72
modulatorOuterRadiusCmd
=
new
G4UIcmdWithADoubleAndUnit
(
"/modulator/outRadius"
,
this
);
73
modulatorOuterRadiusCmd
-> SetGuidance(
"Set size of outer radius"
);
74
modulatorOuterRadiusCmd
-> SetParameterName(
"Size"
,
false
);
75
modulatorOuterRadiusCmd
-> SetDefaultUnit(
"mm"
);
76
modulatorOuterRadiusCmd
-> SetUnitCandidates(
"mm cm m"
);
77
modulatorOuterRadiusCmd
-> AvailableForStates(
G4State_Idle
);
78
79
modulatorInnerRadiusCmd
=
new
G4UIcmdWithADoubleAndUnit
(
"/modulator/innerRadius"
,
this
);
80
modulatorInnerRadiusCmd
-> SetGuidance(
"Set size of inner radius"
);
81
modulatorInnerRadiusCmd
-> SetParameterName(
"Size"
,
false
);
82
modulatorInnerRadiusCmd
-> SetDefaultUnit(
"mm"
);
83
modulatorInnerRadiusCmd
-> SetUnitCandidates(
"mm cm m"
);
84
modulatorInnerRadiusCmd
-> AvailableForStates(
G4State_Idle
);
85
86
modulatorAngleCmd
=
new
G4UIcmdWithADoubleAndUnit
(
"/modulator/angle"
,
this
);
87
modulatorAngleCmd
-> SetGuidance(
"Set Modulator Angle"
);
88
modulatorAngleCmd
-> SetParameterName(
"Size"
,
false
);
89
modulatorAngleCmd
-> SetRange(
"Size>=0."
);
90
modulatorAngleCmd
-> SetUnitCategory(
"Angle"
);
91
modulatorAngleCmd
-> AvailableForStates(
G4State_Idle
);
92
}
93
94
HadrontherapyModulatorMessenger::~ HadrontherapyModulatorMessenger
()
95
{
96
delete
modulatorAngleCmd
;
97
delete
modulatorMatCmd
;
98
delete
modulatorPositionCmd
;
99
delete
modulatorInnerRadiusCmd
;
100
delete
modulatorOuterRadiusCmd
;
101
delete
modulatorDir
;
102
}
103
104
105
106
107
void
HadrontherapyModulatorMessenger::SetNewValue
(
G4UIcommand
* command,
G4String
newValue)
108
{
109
if
( command ==
modulatorAngleCmd
)
110
{
Modulator
-> SetModulatorAngle
111
(
modulatorAngleCmd
-> GetNewDoubleValue(newValue));}
112
113
else
if
( command ==
modulatorMatCmd
)
114
{
Modulator
-> SetModulatorMaterial(newValue);}
115
116
else
if
(command==
modulatorExternalFile
)
117
{
Modulator
->
GetDataFromFile
(newValue);}
118
119
else
if
( command ==
modulatorPositionCmd
)
120
{
G4ThreeVector
size =
modulatorPositionCmd
-> GetNew3VectorValue(newValue);
121
Modulator
-> SetModulatorPosition(size);}
122
123
else
if
( command ==
modulatorOuterRadiusCmd
)
124
{
Modulator
-> SetModulatorOuterRadius(
125
modulatorOuterRadiusCmd
-> GetNewDoubleValue(newValue));}
126
127
else
if
( command ==
modulatorInnerRadiusCmd
)
128
{
Modulator
-> SetModulatorInnerRadius(
129
modulatorInnerRadiusCmd
-> GetNewDoubleValue(newValue));}
130
}
131
geant4
tree
geant4-10.6-release
examples
advanced
hadrontherapy
src
HadrontherapyModulatorMessenger.cc
Built by
Jin Huang
. updated:
Wed Jun 29 2022 17:24:58
using
1.8.2 with
ECCE GitHub integration