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
PassiveProtonBeamLineMessenger.cc
Go to the documentation of this file.
Or view
the newest version in sPHENIX GitHub for file PassiveProtonBeamLineMessenger.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
// Hadrontherapy advanced example for Geant4
27
// See more at: https://twiki.cern.ch/twiki/bin/view/Geant4/AdvancedExamplesHadrontherapy
28
29
#include "
PassiveProtonBeamLineMessenger.hh
"
30
#include "
PassiveProtonBeamLine.hh
"
31
#include "
G4UIdirectory.hh
"
32
#include "
G4UIcmdWithADoubleAndUnit.hh
"
33
#include "
G4UIcmdWithAString.hh
"
34
#include "
G4SystemOfUnits.hh
"
35
36
PassiveProtonBeamLineMessenger::PassiveProtonBeamLineMessenger
(
PassiveProtonBeamLine
* beamLine)
37
:passiveProton(beamLine)
38
39
{
40
changeTheBeamLineDir
=
new
G4UIdirectory
(
"/ChangeBeamLine/"
);
41
changeTheBeamLineDir
-> SetGuidance(
"Command to change the transport beam line"
);
42
43
changeTheBeamLineNameCmd
=
new
G4UIcmdWithAString
(
"/ChangeBeamLine/beamLineName"
,
this
);
44
changeTheBeamLineNameCmd
-> SetGuidance(
"Insert the name of the beam line you want simulate"
);
45
changeTheBeamLineNameCmd
-> SetParameterName(
"List"
,
false
);
46
changeTheBeamLineNameCmd
-> AvailableForStates(
G4State_PreInit
);
47
48
modulatorDir
=
new
G4UIdirectory
(
"/modulator/"
);
49
modulatorDir
-> SetGuidance(
"Command to rotate the modulator wheel"
);
50
51
beamLineDir
=
new
G4UIdirectory
(
"/beamLine/"
);
52
beamLineDir
-> SetGuidance(
"set specification of range shifter"
);
53
54
rangeShifterDir
=
new
G4UIdirectory
(
"/beamLine/RangeShifter/"
);
55
rangeShifterDir
-> SetGuidance(
"set specification of range shifter"
);
56
57
firstScatteringFoilDir
=
new
G4UIdirectory
(
"/beamLine/ScatteringFoil1/"
);
58
firstScatteringFoilDir
-> SetGuidance(
"set specification of first scattering foil"
);
59
60
secondScatteringFoilDir
=
new
G4UIdirectory
(
"/beamLine/ScatteringFoil2/"
);
61
secondScatteringFoilDir
-> SetGuidance(
"set specification of second scattering foil"
);
62
63
rangeStopperDir
=
new
G4UIdirectory
(
"/beamLine/Stopper/"
);
64
rangeStopperDir
-> SetGuidance(
"set specification of stopper"
);
65
66
finalCollimatorDir
=
new
G4UIdirectory
(
"/beamLine/FinalCollimator/"
);
67
finalCollimatorDir
-> SetGuidance(
"set specification of final collimator"
);
68
69
modulatorAngleCmd
=
new
G4UIcmdWithADoubleAndUnit
(
"/modulator/angle"
,
this
);
70
modulatorAngleCmd
-> SetGuidance(
"Set Modulator Angle"
);
71
modulatorAngleCmd
-> SetParameterName(
"Size"
,
false
);
72
modulatorAngleCmd
-> SetRange(
"Size>=0."
);
73
modulatorAngleCmd
-> SetUnitCategory(
"Angle"
);
74
modulatorAngleCmd
-> AvailableForStates(
G4State_Idle
);
75
76
rangeShifterMatCmd
=
new
G4UIcmdWithAString
(
"/beamLine/RangeShifter/RSMat"
,
this
);
77
rangeShifterMatCmd
-> SetGuidance(
"Set material of range shifter"
);
78
rangeShifterMatCmd
-> SetParameterName(
"choice"
,
false
);
79
rangeShifterMatCmd
-> AvailableForStates(
G4State_Idle
);
80
81
rangeShifterXSizeCmd
=
new
G4UIcmdWithADoubleAndUnit
(
"/beamLine/RangeShifter/thickness"
,
this
);
82
rangeShifterXSizeCmd
-> SetGuidance(
"Set half of the thickness of range shifter along X axis"
);
83
rangeShifterXSizeCmd
-> SetParameterName(
"Size"
,
false
);
84
rangeShifterXSizeCmd
-> SetDefaultUnit(
"mm"
);
85
rangeShifterXSizeCmd
-> SetUnitCandidates(
"mm cm m"
);
86
rangeShifterXSizeCmd
-> AvailableForStates(
G4State_Idle
);
87
88
rangeShifterXPositionCmd
=
new
G4UIcmdWithADoubleAndUnit
(
"/beamLine/RangeShifter/position"
,
this
);
89
rangeShifterXPositionCmd
-> SetGuidance(
"Set position of range shifter"
);
90
rangeShifterXPositionCmd
-> SetParameterName(
"Size"
,
false
);
91
rangeShifterXPositionCmd
-> SetDefaultUnit(
"mm"
);
92
rangeShifterXPositionCmd
-> SetUnitCandidates(
"mm cm m"
);
93
rangeShifterXPositionCmd
-> AvailableForStates(
G4State_Idle
);
94
95
firstScatteringFoilXSizeCmd
=
new
G4UIcmdWithADoubleAndUnit
(
"/beamLine/ScatteringFoil1/thickness"
,
this
);
96
firstScatteringFoilXSizeCmd
-> SetGuidance(
"Set half thickness of first scattering foil"
);
97
firstScatteringFoilXSizeCmd
-> SetParameterName(
"Size"
,
false
);
98
firstScatteringFoilXSizeCmd
-> SetDefaultUnit(
"mm"
);
99
firstScatteringFoilXSizeCmd
-> SetUnitCandidates(
"mm cm m"
);
100
firstScatteringFoilXSizeCmd
-> AvailableForStates(
G4State_Idle
);
101
102
secondScatteringFoilXSizeCmd
=
new
G4UIcmdWithADoubleAndUnit
(
"/beamLine/ScatteringFoil2/thickness"
,
this
);
103
secondScatteringFoilXSizeCmd
-> SetGuidance(
"Set half thickness of second scattering foil"
);
104
secondScatteringFoilXSizeCmd
-> SetParameterName(
"Size"
,
false
);
105
secondScatteringFoilXSizeCmd
-> SetDefaultUnit(
"mm"
);
106
secondScatteringFoilXSizeCmd
-> SetUnitCandidates(
"mm cm m"
);
107
secondScatteringFoilXSizeCmd
-> AvailableForStates(
G4State_Idle
);
108
109
outerRadiusStopperCmd
=
new
G4UIcmdWithADoubleAndUnit
(
"/beamLine/Stopper/outRadius"
,
this
);
110
outerRadiusStopperCmd
-> SetGuidance(
"Set size of outer radius"
);
111
outerRadiusStopperCmd
-> SetParameterName(
"Size"
,
false
);
112
outerRadiusStopperCmd
-> SetDefaultUnit(
"mm"
);
113
outerRadiusStopperCmd
-> SetUnitCandidates(
"mm cm m"
);
114
outerRadiusStopperCmd
-> AvailableForStates(
G4State_Idle
);
115
116
innerRadiusFinalCollimatorCmd
=
new
G4UIcmdWithADoubleAndUnit
(
"/beamLine/FinalCollimator/halfInnerRad"
,
this
);
117
innerRadiusFinalCollimatorCmd
-> SetGuidance(
"Set size of inner radius ( max 21.5 mm)"
);
118
innerRadiusFinalCollimatorCmd
-> SetParameterName(
"Size"
,
false
);
119
innerRadiusFinalCollimatorCmd
-> SetDefaultUnit(
"mm"
);
120
innerRadiusFinalCollimatorCmd
-> SetUnitCandidates(
"mm cm m"
);
121
innerRadiusFinalCollimatorCmd
-> AvailableForStates(
G4State_Idle
);
122
}
123
124
PassiveProtonBeamLineMessenger::~PassiveProtonBeamLineMessenger
()
125
{
126
delete
innerRadiusFinalCollimatorCmd
;
127
delete
outerRadiusStopperCmd
;
128
delete
secondScatteringFoilXSizeCmd
;
129
delete
firstScatteringFoilXSizeCmd
;
130
delete
rangeShifterXPositionCmd
;
131
delete
rangeShifterXSizeCmd
;
132
delete
rangeShifterMatCmd
;
133
delete
modulatorAngleCmd
;
134
delete
finalCollimatorDir
;
135
delete
rangeStopperDir
;
136
delete
secondScatteringFoilDir
;
137
delete
firstScatteringFoilDir
;
138
delete
rangeShifterDir
;
139
delete
beamLineDir
;
140
delete
modulatorDir
;
141
}
142
143
144
145
146
void
PassiveProtonBeamLineMessenger::SetNewValue
(
G4UIcommand
* command,
G4String
newValue)
147
{
148
if
( command ==
modulatorAngleCmd
)
149
{
passiveProton
-> SetModulatorAngle
150
(
modulatorAngleCmd
-> GetNewDoubleValue(newValue));}
151
152
else
if
( command ==
rangeShifterMatCmd
)
153
{
passiveProton
-> SetRSMaterial(newValue);}
154
155
else
if
( command ==
rangeShifterXSizeCmd
)
156
{
passiveProton
-> SetRangeShifterXSize
157
(
rangeShifterXSizeCmd
-> GetNewDoubleValue(newValue));}
158
159
else
if
( command ==
rangeShifterXPositionCmd
)
160
{
passiveProton
-> SetRangeShifterXPosition
161
(
rangeShifterXPositionCmd
-> GetNewDoubleValue(newValue));}
162
163
else
if
( command ==
firstScatteringFoilXSizeCmd
)
164
{
passiveProton
-> SetFirstScatteringFoilXSize
165
(
firstScatteringFoilXSizeCmd
-> GetNewDoubleValue(newValue));}
166
167
else
if
( command ==
secondScatteringFoilXSizeCmd
)
168
{
passiveProton
-> SetSecondScatteringFoilXSize
169
(
secondScatteringFoilXSizeCmd
-> GetNewDoubleValue(newValue));}
170
171
else
if
( command ==
outerRadiusStopperCmd
)
172
{
passiveProton
-> SetOuterRadiusStopper(
173
outerRadiusStopperCmd
-> GetNewDoubleValue(newValue));}
174
175
else
if
( command ==
innerRadiusFinalCollimatorCmd
)
176
{
passiveProton
-> SetInnerRadiusFinalCollimator
177
(
innerRadiusFinalCollimatorCmd
-> GetNewDoubleValue(newValue));}
178
}
179
geant4
tree
geant4-10.6-release
examples
advanced
hadrontherapy
src
PassiveProtonBeamLineMessenger.cc
Built by
Jin Huang
. updated:
Wed Jun 29 2022 17:24:58
using
1.8.2 with
ECCE GitHub integration