Geant4 11.1.1
Toolkit for the simulation of the passage of particles through matter
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
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 (wendbryc@isu.edu)
29 *
30 * Created on May 11, 2011, 12:04 PM
31 */
32
33#ifndef G4FISSIONFRAGMENTGENERATOR_HH
34#define G4FISSIONFRAGMENTGENERATOR_HH
35
36#include "G4Ions.hh"
37#include "globals.hh"
38#include "G4HadFinalState.hh"
39#include "G4HadProjectile.hh"
40
41#include "G4FFGEnumerations.hh"
43#include "G4TableTemplate.hh"
44
45/** G4FissionFragmentGenerator is the front end class to be used by the user for
46 * handling all fission event generation.
47 *
48 * This class is intended to be instantiated for one type of fission event for
49 * as specific isotope/isomer, fission type, and incident neutron energy. For
50 * this reason no functions exist to change or modify these values once the
51 * class in constructed. A new class must be created by the user for each type
52 * of fission event, if such functionality is desired.
53 */
55public:
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 */
93protected:
94 /** Initialize is a common function called by all constructors. */
95 void Initialize( void );
96
97public:
98// Functions
99 /** Generates a single fission event
100 * - Usage: No arguments required
101 *
102 * - Notes:
103 * - Generates a single fission event by calling the overloaded function
104 * and passing an argument of '1'
105 */
107 /** Generates a single fission event
108 * - Usage:
109 * -\p Projectile: G4HadProjectile of the fission-inducing particle
110 *
111 * - Notes:
112 * - Generates a single fission event by calling the overloaded function
113 * and passing an argument of '1'
114 */
116 /** Generates NumberOfFissions fission events
117 * - Usage:
118 * -\p NumberOfFissions: The number of fission events to generate
119 *
120 * - Notes:
121 * - Generates \p NumberOfFissions fission events
122 */
123 const std::vector< G4DynamicParticleVector* > G4GenerateFission( G4long NumberOfFissions,
124 const G4HadProjectile& Projectile );
125 /** Returns a randomly sampled fission product */
127 /** Returns the production rate of alpha particles for fission events */
129 /** Returns the probability of ternary fission */
131 /** Returns the FissionCause of the fission event. */
133 /** Returns the energy of the fission inducing particle. */
135 /** Returns the code of the fission isotope in ZZZAAA format. */
136 G4int G4GetIsotope( void );
137 /** Returns the MetaState of the fission isotope. */
139 /** Returns the FissionSamplingScheme that is currently in use. */
141 /** Returns the yield type that is currently in use */
143 /** Initializes a new \p G4FPY...Dist class based on the class descriptor
144 * variables of G4FissionFragmentGenerator.
145 */
146 bool InitializeFissionProductYieldClass( std::istringstream& dataFile );
147 /** Converts the Z, A and M of an isotope into an integer representation **/
149 /** Sets the number of alpha particles produced in fission.
150 * - Usage:
151 * - if \p AlphaProduction is negative then alpha particles are sampled
152 * on a Gaussian with a mean of \p abs(AlphaProduction).
153 *
154 * - Notes:
155 * - The maximum number of alpha particles that may be created is
156 * physically limited by the nucleons present in the parent nucleus.
157 * Setting the AlphaProduction too high will have unpredictable
158 * results on the sampling of the fission products.
159 */
160 void G4SetAlphaProduction( G4double WhatAlphaProduction );
161 /** Sets the probability of ternary fission
162 * - Usage:
163 * - \p WhatAlphaProductionProbability: Probability of generating alpha
164 * particles for a fission event. 1 = 100% chance of alpha production
165 *
166 * - Notes:
167 */
168 void G4SetTernaryProbability( G4double WhatTernaryProbability );
169 /** Sets the cause of fission event.
170 * - Usage:
171 * - \p WhichCause: \p SPONTANEOUS, \p N_INDUCED, \p P_INDUCED, or
172 * \p G_INDUCED
173 *
174 * - Notes:
175 */
177 /** Sets the incident energy, if any, of the particle that cause fission.
178 * - Usage:
179 * - \p WhatIncidentEnergy: Kinetic energy of the particle with units applied;
180 *
181 * - Notes:
182 */
183 void G4SetIncidentEnergy( G4double WhatIncidentEnergy );
184 /** Sets the fission isotope
185 * - Usage:
186 * - \p WhichIsotope: Code of the isotope in ZZZAAA format
187 *
188 * - Notes:
189 */
190 void G4SetIsotope( G4int WhichIsotope );
191 /** Sets the metastable state of the fission isotope.
192 * - Usage:
193 * - \p WhichMetaState: \p GROUND_STATE, \p META_1, or \p META_2
194 *
195 * - Notes:
196 */
197 void G4SetMetaState( G4FFGEnumerations::MetaState WhichMetaState );
198 /** Set the sampling scheme.
199 * - Usage:
200 * - NewScheme: The G4FissionSamplingScheme value for the sampling
201 * scheme to use.
202 *
203 * - Notes:
204 * - \p NORMAL: Sets the parameters of this class to sample fission
205 * events without any biasing.
206 * - \p LIGHT_FRAGMENT: Sets the parameters of this class to bias the
207 * fragment generation by always selecting a light fragment
208 * (A < 115) first.
209 * - \p WENDT: Sets the parameters of this class to sample fission
210 * events according to the Wendt sampling scheme. Please refer to
211 * the code documentation for G4FPYWendtSamplingDist for a more
212 * detailed explanation.
213 */
215 /** Sets the ENDF yield type to be used for the data
216 * - Usage:
217 * - \p WhichYieldType: \p INDEPENDENT or \p COMULATIVE
218 *
219 * - Notes:
220 */
221 void G4SetYieldType( G4FFGEnumerations::YieldType WhichYieldType );
222 /** Sets the verbosity levels
223 * - Usage:
224 * - \p WhichVerbosity: Combination of levels
225 *
226 * - Notes:
227 * - \p SILENT: All verbose output is repressed
228 * - \p UPDATES: Only high-level internal changes are reported
229 * - \p DAUGHTER_INFO: Displays information about daughter product sampling
230 * - \p NEUTRON_INFO: Displays information about neutron sampling
231 * - \p GAMMA_INFO: Displays information about gamma sampling
232 * - \p ALPHA_INFO: Displays information about alpha sampling
233 * - \p MOMENTUM_INFO: Displays information about momentum balancing
234 * - \p EXTRAPOLATION_INTERPOLATION_INFO: Displays information about any data extrapolation or interpolation that occurs
235 * - \p DEBUG: Reports program flow as it steps through functions
236 * - \p PRINT_ALL: Displays any and all output
237 */
238 void G4SetVerbosity( G4int WhatVerbosity );
239
240protected:
241// Variables
242 // Class descriptor variables
243 /** Number in ZZZAAA format of the isotope that
244 * G4FissionFragmentGenerator references
245 */
247 /** MetaState information of the isotope that G4FissionFragmentGenerator
248 * references
249 * \n A value of 0 refers to the ground state
250 */
252 /** The cause of fission: \p SPONTANEOUS or \p N_INDUCED. */
254 /** Kinetic energy, if any, of the incident particle in GeV. */
256 /** The type of yield to be used: \p INDEPENDET or \p CUMULATIVE */
258 /** Sets the ternary fission probability. Valid ranges are [0, 1] */
260 /** Controls whether alpha particles are emitted, and how many */
262 /** If Isotope_, MetaState_, Cause_, or IncidentEnergy_ are changed in
263 * the middle of a run then the class pointed at by YieldData_ will
264 * need to be reconstructed
265 */
267 /** Verbosity level */
269
270 // Defines the current sampling scheme and the respective class
271 /** The sampling scheme that is used: \p NORMAL, \p LIGHT_FRAGMENT, or
272 * \p WENDT.
273 */
275 /** Pointer to G4FissionProductYieldDist class that holds all the
276 * probabilistic yield data
277 */
279
280// Destructor function(s)
281public:
282 /** Default deconstructor */
284};
285
286#endif /* G4FISSIONFRAGMENTGENERATOR_HH */
287
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 G4int Z[17]
const G4double A[17]
G4FFGEnumerations::MetaState MetaState_
G4FFGEnumerations::YieldType G4GetYieldType(void)
bool InitializeFissionProductYieldClass(std::istringstream &dataFile)
G4FFGEnumerations::MetaState G4GetMetaState(void)
G4FFGEnumerations::YieldType YieldType_
G4FFGEnumerations::FissionSamplingScheme G4GetSamplingScheme(void)
void G4SetYieldType(G4FFGEnumerations::YieldType WhichYieldType)
G4DynamicParticleVector * G4GenerateFission(void)
G4FissionProductYieldDist * YieldData_
G4FFGEnumerations::FissionCause Cause_
void G4SetMetaState(G4FFGEnumerations::MetaState WhichMetaState)
void G4SetAlphaProduction(G4double WhatAlphaProduction)
void G4SetSamplingScheme(G4FFGEnumerations::FissionSamplingScheme NewScheme)
G4FFGEnumerations::FissionSamplingScheme SamplingScheme_
static G4int G4MakeIsotopeCode(G4int Z, G4int A, G4int M)
G4FFGEnumerations::FissionCause G4GetCause(void)
void G4SetCause(G4FFGEnumerations::FissionCause WhichCause)
void G4SetTernaryProbability(G4double WhatTernaryProbability)
void G4SetIsotope(G4int WhichIsotope)
void G4SetIncidentEnergy(G4double WhatIncidentEnergy)
void G4SetVerbosity(G4int WhatVerbosity)
Definition: G4Ions.hh:52