Geant4 9.6.0
Toolkit for the simulation of the passage of particles through matter
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros
G4GeneralParticleSourceMessenger.hh
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//
28// MODULE: G4GeneralParticleSourceMessenger.hh
29//
30// Version: 2.0
31// Date: 5/02/04
32// Author: Fan Lei
33// Organisation: QinetiQ ltd.
34// Customer: ESA/ESTEC
35//
36///////////////////////////////////////////////////////////////////////////////
37//
38// CHANGE HISTORY
39// --------------
40//
41// Version 2.0, 05/02/2004, Fan Lei, Created.
42// After changes to version 1.1 as in Geant4 v6.0
43// - Mutilple particle source definition
44// - Re-structured commands
45// - old commonds have been retained for backward compatibility, will be
46// removed in the future.
47//
48///////////////////////////////////////////////////////////////////////////////
49//
50//
51// Class Description:
52//
53// The function of the G4GeneralParticleSourceMessenger is to allow the user to
54// enter commands either in interactive command line mode or through macros to
55// control the G4GeneralParticleSource.
56//
57///////////////////////////////////////////////////////////////////////////////
58//
59// MEMBER FUNCTIONS
60// ----------------
61//
62// G4GeneralParticleSourceMessenger(G4GeneralParticleSource *fPtclGun)
63// Constructor: Sets up commands.
64//
65// ~G4GeneralParticleSourceMessenger()
66// Destructor: Deletes commands.
67//
68// void SetParticleGun(G4SingleParticleSource *fpg) { fParticleGun = fpg; } ;
69// To selecte the particle gun to be defined/modified.
70// void SetNewValue(G4UIcommand *command, G4String newValues)
71// Uses the appropriate methods in the G4GeneralParticleSource to carry out
72// the user commands.
73// G4String GetCurrentValue(G4UIcommand *command)
74// Allows the user to retrieve the current values of parameters.
75// Not implemented yet.
76//
77///////////////////////////////////////////////////////////////////////////////
78//
79#ifndef G4GeneralParticleSourceMessenger_h
80#define G4GeneralParticleSourceMessenger_h 1
81
82#include "G4UImessenger.hh"
83#include "globals.hh"
84
85class G4ParticleTable;
86class G4UIcommand;
87class G4UIdirectory;
97
100
102{
103public:
106
107 void SetParticleGun(G4SingleParticleSource *fpg) { fParticleGun = fpg; } ;
108 // To selecte the particle gun to be defined/modified.
109 void SetNewValue(G4UIcommand *command, G4String newValues);
110 // Identifies the command which has been invoked by the user, extracts the
111 // parameters associated with that command (held in newValues), and uses
112 // these values with the appropriate member function of G4GeneralParticleSource.
114
115private:
116 void IonCommand(G4String newValues);
117
118private:
120 G4SingleParticleSource *fParticleGun;
121 G4ParticleTable *particleTable;
122 G4String histtype;
123
124private: //commands
125 G4UIdirectory *gpsDirectory;
126 // multiple source control commands
127 G4UIdirectory *sourceDirectory;
128 G4UIcmdWithADouble *addsourceCmd;
129 G4UIcmdWithoutParameter *listsourceCmd;
130 G4UIcmdWithoutParameter *clearsourceCmd;
131 G4UIcmdWithoutParameter *getsourceCmd;
132 G4UIcmdWithAnInteger *setsourceCmd;
133 G4UIcmdWithADouble *setintensityCmd;
134 G4UIcmdWithAnInteger *deletesourceCmd;
135 G4UIcmdWithABool *multiplevertexCmd;
136 G4UIcmdWithABool *flatsamplingCmd;
137 // positional commands
138 G4UIdirectory *positionDirectory;
139 G4UIcmdWithAString *typeCmd1;
140 G4UIcmdWithAString *shapeCmd1;
141 G4UIcmdWith3VectorAndUnit *centreCmd1;
142 G4UIcmdWith3Vector *posrot1Cmd1;
143 G4UIcmdWith3Vector *posrot2Cmd1;
144 G4UIcmdWithADoubleAndUnit *halfxCmd1;
145 G4UIcmdWithADoubleAndUnit *halfyCmd1;
146 G4UIcmdWithADoubleAndUnit *halfzCmd1;
147 G4UIcmdWithADoubleAndUnit *radiusCmd1;
148 G4UIcmdWithADoubleAndUnit *radius0Cmd1;
149 G4UIcmdWithADoubleAndUnit *possigmarCmd1;
150 G4UIcmdWithADoubleAndUnit *possigmaxCmd1;
151 G4UIcmdWithADoubleAndUnit *possigmayCmd1;
152 G4UIcmdWithADoubleAndUnit *paralpCmd1;
153 G4UIcmdWithADoubleAndUnit *partheCmd1;
154 G4UIcmdWithADoubleAndUnit *parphiCmd1;
155 G4UIcmdWithAString *confineCmd1;
156 //old ones, will be reomved soon
157 G4UIcmdWithAString *typeCmd;
158 G4UIcmdWithAString *shapeCmd;
159 G4UIcmdWith3VectorAndUnit *centreCmd;
160 G4UIcmdWith3Vector *posrot1Cmd;
161 G4UIcmdWith3Vector *posrot2Cmd;
165 G4UIcmdWithADoubleAndUnit *radiusCmd;
166 G4UIcmdWithADoubleAndUnit *radius0Cmd;
167 G4UIcmdWithADoubleAndUnit *possigmarCmd;
168 G4UIcmdWithADoubleAndUnit *possigmaxCmd;
169 G4UIcmdWithADoubleAndUnit *possigmayCmd;
170 G4UIcmdWithADoubleAndUnit *paralpCmd;
171 G4UIcmdWithADoubleAndUnit *partheCmd;
172 G4UIcmdWithADoubleAndUnit *parphiCmd;
173 G4UIcmdWithAString *confineCmd;
174 // angular commands
175 G4UIdirectory *angularDirectory;
176 G4UIcmdWithAString *angtypeCmd1;
177 G4UIcmdWith3Vector *angrot1Cmd1;
178 G4UIcmdWith3Vector *angrot2Cmd1;
179 G4UIcmdWithADoubleAndUnit *minthetaCmd1;
180 G4UIcmdWithADoubleAndUnit *maxthetaCmd1;
181 G4UIcmdWithADoubleAndUnit *minphiCmd1;
182 G4UIcmdWithADoubleAndUnit *maxphiCmd1;
183 G4UIcmdWithADoubleAndUnit *angsigmarCmd1;
184 G4UIcmdWithADoubleAndUnit *angsigmaxCmd1;
185 G4UIcmdWithADoubleAndUnit *angsigmayCmd1;
186 G4UIcmdWith3VectorAndUnit *angfocusCmd;
187 G4UIcmdWithABool *useuserangaxisCmd1;
188 G4UIcmdWithABool *surfnormCmd1;
189 // old ones, will be removed soon
190 G4UIcmdWithAString *angtypeCmd;
191 G4UIcmdWith3Vector *angrot1Cmd;
192 G4UIcmdWith3Vector *angrot2Cmd;
193 G4UIcmdWithADoubleAndUnit *minthetaCmd;
194 G4UIcmdWithADoubleAndUnit *maxthetaCmd;
195 G4UIcmdWithADoubleAndUnit *minphiCmd;
196 G4UIcmdWithADoubleAndUnit *maxphiCmd;
197 G4UIcmdWithADoubleAndUnit *angsigmarCmd;
198 G4UIcmdWithADoubleAndUnit *angsigmaxCmd;
199 G4UIcmdWithADoubleAndUnit *angsigmayCmd;
200 G4UIcmdWithABool *useuserangaxisCmd;
201 G4UIcmdWithABool *surfnormCmd;
202 // energy commands
203 G4UIdirectory *energyDirectory;
204 G4UIcmdWithAString *energytypeCmd1;
207 G4UIcmdWithADoubleAndUnit *monoenergyCmd1;
208 G4UIcmdWithADoubleAndUnit *engsigmaCmd1;
209 G4UIcmdWithADouble *alphaCmd1;
210 G4UIcmdWithADouble *tempCmd1;
211 G4UIcmdWithADouble *ezeroCmd1;
212 G4UIcmdWithADouble *gradientCmd1;
213 G4UIcmdWithADouble *interceptCmd1;
214 G4UIcmdWithADouble *arbeintCmd1;
215 G4UIcmdWithoutParameter *calculateCmd1;
216 G4UIcmdWithABool *energyspecCmd1;
217 G4UIcmdWithABool *diffspecCmd1;
218 // old ones, will be removed soon
219 G4UIcmdWithAString *energytypeCmd;
222 G4UIcmdWithADoubleAndUnit *monoenergyCmd;
223 G4UIcmdWithADoubleAndUnit *engsigmaCmd;
224 G4UIcmdWithADouble *alphaCmd;
225 G4UIcmdWithADouble *tempCmd;
226 G4UIcmdWithADouble *ezeroCmd;
227 G4UIcmdWithADouble *gradientCmd;
228 G4UIcmdWithADouble *interceptCmd;
229 G4UIcmdWithoutParameter *calculateCmd;
230 G4UIcmdWithABool *energyspecCmd;
231 G4UIcmdWithABool *diffspecCmd;
232 // histogram commands
233 G4UIdirectory *histDirectory;
234 G4UIcmdWith3Vector *histpointCmd;
235 G4UIcmdWithAString *histnameCmd;
236 G4UIcmdWithAString *arbintCmd;
237 G4UIcmdWithAString *resethistCmd;
238 // old ones, will be removed soon
239 G4UIcmdWith3Vector *histpointCmd1;
240 G4UIcmdWithAString *histfileCmd1;
241 G4UIcmdWithAString *histnameCmd1;
242 G4UIcmdWithAString *arbintCmd1;
243 G4UIcmdWithAString *resethistCmd1;
244
245 //
246 G4UIcmdWithAnInteger *verbosityCmd;
247
248 // below are commands from G4ParticleGun
249
250 G4UIcommand *ionCmd;
251 G4UIcmdWithAString *particleCmd;
253 G4UIcmdWith3Vector *polCmd;
254 G4UIcmdWithAnInteger *numberCmd;
255 G4UIcmdWith3VectorAndUnit *positionCmd;
256 G4UIcmdWith3Vector *directionCmd;
257 G4UIcmdWithADoubleAndUnit *energyCmd;
259
260
261 private: // for ion shooting
262 G4bool fShootIon;
263 G4int fAtomicNumber;
264 G4int fAtomicMass;
265 G4int fIonCharge;
266 G4double fIonExciteEnergy;
267
268};
269
270#endif
271
double G4double
Definition: G4Types.hh:64
int G4int
Definition: G4Types.hh:66
bool G4bool
Definition: G4Types.hh:67
void SetParticleGun(G4SingleParticleSource *fpg)
void SetNewValue(G4UIcommand *command, G4String newValues)