Geant4 11.2.2
Toolkit for the simulation of the passage of particles through matter
Loading...
Searching...
No Matches
G4FissionFragmentGenerator.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 * File: G4FissionFragmentGenerator.hh
28 * Author: B. Wendt ([email protected])
29 *
30 * Created on May 11, 2011, 12:04 PM
31 */
32
33#ifndef G4FISSIONFRAGMENTGENERATOR_HH
34#define G4FISSIONFRAGMENTGENERATOR_HH
35
36#include "G4FFGEnumerations.hh"
38#include "G4HadFinalState.hh"
39#include "G4HadProjectile.hh"
40#include "G4Ions.hh"
41#include "G4TableTemplate.hh"
42#include "globals.hh"
43
44/** G4FissionFragmentGenerator is the front end class to be used by the user for
45 * handling all fission event generation.
46 *
47 * This class is intended to be instantiated for one type of fission event for
48 * as specific isotope/isomer, fission type, and incident neutron energy. For
49 * this reason no functions exist to change or modify these values once the
50 * class in constructed. A new class must be created by the user for each type
51 * of fission event, if such functionality is desired.
52 */
54{
55 public:
56 // Constructor definition
57 /** Default constructor
58 * - Usage: No arguments required
59 *
60 * - Notes:
61 * - There are methods that should be called to set operating
62 * parameters before generating any fission events with
63 * G4FissionFragmentGenerator. These are:
64 * - G4SetIsotope()
65 * - G4SetMetaState()
66 * - G4SetCause()
67 * - G4SetIncidentEnergy()
68 * - G4SetYieldType()
69 * - G4SetAlphaProduction()
70 * - G4SetAlphaProductionProbability()
71 * - G4SetSamplingScheme()
72 * - If any or all of these parameters are not set by the user, then
73 * default values will be used.
74 * - Isotope: \p 92238
75 * - Metastable state: \p GROUND_STATE
76 * - Cause: \p SPONTANEOUS
77 * - Incident energy: \p 0.025 eV
78 * - Yield type: \p INDEPENDENT
79 * - Alpha production: \p 0
80 * - Alpha production probability: \p 0
81 * - Sampling scheme: \p NORMAL
82 */
84 /** Overloaded constructor
85 * - Usage:
86 * - \p Verbosity: Verbosity level
87 *
88 * - Notes:
89 - Refer to the documentation for the default constructor for
90 * setting up the operating parameters.
91 */
93
94 protected:
95 /** Initialize is a common function called by all constructors. */
96 void Initialize();
97
98 public:
99 // Functions
100 /** Generates a single fission event
101 * - Usage: No arguments required
102 *
103 * - Notes:
104 * - Generates a single fission event by calling the overloaded function
105 * and passing an argument of '1'
106 */
108 /** Generates a single fission event
109 * - Usage:
110 * -\p Projectile: G4HadProjectile of the fission-inducing particle
111 *
112 * - Notes:
113 * - Generates a single fission event by calling the overloaded function
114 * and passing an argument of '1'
115 */
117 /** Generates NumberOfFissions fission events
118 * - Usage:
119 * -\p NumberOfFissions: The number of fission events to generate
120 *
121 * - Notes:
122 * - Generates \p NumberOfFissions fission events
123 */
124 const std::vector<G4DynamicParticleVector*>
125 G4GenerateFission(G4long NumberOfFissions, const G4HadProjectile& Projectile);
126 /** Returns a randomly sampled fission product */
128 /** Returns the production rate of alpha particles for fission events */
130 /** Returns the probability of ternary fission */
132 /** Returns the FissionCause of the fission event. */
134 /** Returns the energy of the fission inducing particle. */
136 /** Returns the code of the fission isotope in ZZZAAA format. */
138 /** Returns the MetaState of the fission isotope. */
140 /** Returns the FissionSamplingScheme that is currently in use. */
142 /** Returns the yield type that is currently in use */
144 /** Initializes a new \p G4FPY...Dist class based on the class descriptor
145 * variables of G4FissionFragmentGenerator.
146 */
147 bool InitializeFissionProductYieldClass(std::istringstream& dataFile);
148 /** Converts the Z, A and M of an isotope into an integer representation **/
150 /** Sets the number of alpha particles produced in fission.
151 * - Usage:
152 * - if \p AlphaProduction is negative then alpha particles are sampled
153 * on a Gaussian with a mean of \p abs(AlphaProduction).
154 *
155 * - Notes:
156 * - The maximum number of alpha particles that may be created is
157 * physically limited by the nucleons present in the parent nucleus.
158 * Setting the AlphaProduction too high will have unpredictable
159 * results on the sampling of the fission products.
160 */
161 void G4SetAlphaProduction(G4double WhatAlphaProduction);
162 /** Sets the probability of ternary fission
163 * - Usage:
164 * - \p WhatAlphaProductionProbability: Probability of generating alpha
165 * particles for a fission event. 1 = 100% chance of alpha production
166 *
167 * - Notes:
168 */
169 void G4SetTernaryProbability(G4double WhatTernaryProbability);
170 /** Sets the cause of fission event.
171 * - Usage:
172 * - \p WhichCause: \p SPONTANEOUS, \p N_INDUCED, \p P_INDUCED, or
173 * \p G_INDUCED
174 *
175 * - Notes:
176 */
178 /** Sets the incident energy, if any, of the particle that cause fission.
179 * - Usage:
180 * - \p WhatIncidentEnergy: Kinetic energy of the particle with units applied;
181 *
182 * - Notes:
183 */
184 void G4SetIncidentEnergy(G4double WhatIncidentEnergy);
185 /** Sets the fission isotope
186 * - Usage:
187 * - \p WhichIsotope: Code of the isotope in ZZZAAA format
188 *
189 * - Notes:
190 */
191 void G4SetIsotope(G4int WhichIsotope);
192 /** Sets the metastable state of the fission isotope.
193 * - Usage:
194 * - \p WhichMetaState: \p GROUND_STATE, \p META_1, or \p META_2
195 *
196 * - Notes:
197 */
198 void G4SetMetaState(G4FFGEnumerations::MetaState WhichMetaState);
199 /** Set the sampling scheme.
200 * - Usage:
201 * - NewScheme: The G4FissionSamplingScheme value for the sampling
202 * scheme to use.
203 *
204 * - Notes:
205 * - \p NORMAL: Sets the parameters of this class to sample fission
206 * events without any biasing.
207 * - \p LIGHT_FRAGMENT: Sets the parameters of this class to bias the
208 * fragment generation by always selecting a light fragment
209 * (A < 115) first.
210 * - \p WENDT: Sets the parameters of this class to sample fission
211 * events according to the Wendt sampling scheme. Please refer to
212 * the code documentation for G4FPYWendtSamplingDist for a more
213 * detailed explanation.
214 */
216 /** Sets the ENDF yield type to be used for the data
217 * - Usage:
218 * - \p WhichYieldType: \p INDEPENDENT or \p COMULATIVE
219 *
220 * - Notes:
221 */
222 void G4SetYieldType(G4FFGEnumerations::YieldType WhichYieldType);
223 /** Sets the verbosity levels
224 * - Usage:
225 * - \p WhichVerbosity: Combination of levels
226 *
227 * - Notes:
228 * - \p SILENT: All verbose output is repressed
229 * - \p UPDATES: Only high-level internal changes are reported
230 * - \p DAUGHTER_INFO: Displays information about daughter product sampling
231 * - \p NEUTRON_INFO: Displays information about neutron sampling
232 * - \p GAMMA_INFO: Displays information about gamma sampling
233 * - \p ALPHA_INFO: Displays information about alpha sampling
234 * - \p MOMENTUM_INFO: Displays information about momentum balancing
235 * - \p EXTRAPOLATION_INTERPOLATION_INFO: Displays information about any data extrapolation
236 * or interpolation that occurs
237 * - \p DEBUG: Reports program flow as it steps through functions
238 * - \p PRINT_ALL: Displays any and all output
239 */
240 void G4SetVerbosity(G4int WhatVerbosity);
241
242 protected:
243 // Variables
244 // Class descriptor variables
245 /** Number in ZZZAAA format of the isotope that
246 * G4FissionFragmentGenerator references
247 */
249 /** MetaState information of the isotope that G4FissionFragmentGenerator
250 * references
251 * \n A value of 0 refers to the ground state
252 */
254 /** The cause of fission: \p SPONTANEOUS or \p N_INDUCED. */
256 /** Kinetic energy, if any, of the incident particle in GeV. */
258 /** The type of yield to be used: \p INDEPENDET or \p CUMULATIVE */
260 /** Sets the ternary fission probability. Valid ranges are [0, 1] */
262 /** Controls whether alpha particles are emitted, and how many */
264 /** If Isotope_, MetaState_, Cause_, or IncidentEnergy_ are changed in
265 * the middle of a run then the class pointed at by YieldData_ will
266 * need to be reconstructed
267 */
269 /** Verbosity level */
271
272 // Defines the current sampling scheme and the respective class
273 /** The sampling scheme that is used: \p NORMAL, \p LIGHT_FRAGMENT, or
274 * \p WENDT.
275 */
277 /** Pointer to G4FissionProductYieldDist class that holds all the
278 * probabilistic yield data
279 */
281
282 // Destructor function(s)
283 public:
284 /** Default deconstructor */
286};
287
288#endif /* G4FISSIONFRAGMENTGENERATOR_HH */
std::vector< G4DynamicParticle * > G4DynamicParticleVector
#define M(row, col)
double G4double
Definition G4Types.hh:83
long G4long
Definition G4Types.hh:87
bool G4bool
Definition G4Types.hh:86
int G4int
Definition G4Types.hh:85
const G4double A[17]
G4FFGEnumerations::MetaState MetaState_
bool InitializeFissionProductYieldClass(std::istringstream &dataFile)
G4FFGEnumerations::YieldType YieldType_
void G4SetYieldType(G4FFGEnumerations::YieldType WhichYieldType)
G4FFGEnumerations::MetaState G4GetMetaState()
G4FissionProductYieldDist * YieldData_
G4FFGEnumerations::FissionCause Cause_
void G4SetMetaState(G4FFGEnumerations::MetaState WhichMetaState)
void G4SetAlphaProduction(G4double WhatAlphaProduction)
void G4SetSamplingScheme(G4FFGEnumerations::FissionSamplingScheme NewScheme)
G4FFGEnumerations::FissionSamplingScheme SamplingScheme_
G4FFGEnumerations::YieldType G4GetYieldType()
G4FFGEnumerations::FissionCause G4GetCause()
static G4int G4MakeIsotopeCode(G4int Z, G4int A, G4int M)
G4FFGEnumerations::FissionSamplingScheme G4GetSamplingScheme()
void G4SetCause(G4FFGEnumerations::FissionCause WhichCause)
void G4SetTernaryProbability(G4double WhatTernaryProbability)
void G4SetIncidentEnergy(G4double WhatIncidentEnergy)
void G4SetVerbosity(G4int WhatVerbosity)
G4DynamicParticleVector * G4GenerateFission()