Geant4 11.1.1
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 "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