|
||||
File indexing completed on 2025-01-18 09:58:17
0001 // 0002 // ******************************************************************** 0003 // * License and Disclaimer * 0004 // * * 0005 // * The Geant4 software is copyright of the Copyright Holders of * 0006 // * the Geant4 Collaboration. It is provided under the terms and * 0007 // * conditions of the Geant4 Software License, included in the file * 0008 // * LICENSE and available at http://cern.ch/geant4/license . These * 0009 // * include a list of copyright holders. * 0010 // * * 0011 // * Neither the authors of this software system, nor their employing * 0012 // * institutes,nor the agencies providing financial support for this * 0013 // * work make any representation or warranty, express or implied, * 0014 // * regarding this software system or assume any liability for its * 0015 // * use. Please see the license in the file LICENSE and URL above * 0016 // * for the full disclaimer and the limitation of liability. * 0017 // * * 0018 // * This code implementation is the result of the scientific and * 0019 // * technical work of the GEANT4 collaboration. * 0020 // * By using, copying, modifying or distributing the software (or * 0021 // * any work based on the software) you agree to acknowledge its * 0022 // * use in resulting scientific publications, and indicate your * 0023 // * acceptance of all terms of the Geant4 Software license. * 0024 // ******************************************************************** 0025 // 0026 /* 0027 * File: G4FissionFragmentGenerator.hh 0028 * Author: B. Wendt (wendbryc@isu.edu) 0029 * 0030 * Created on May 11, 2011, 12:04 PM 0031 */ 0032 0033 #ifndef G4FISSIONFRAGMENTGENERATOR_HH 0034 #define G4FISSIONFRAGMENTGENERATOR_HH 0035 0036 #include "G4FFGEnumerations.hh" 0037 #include "G4FissionProductYieldDist.hh" 0038 #include "G4HadFinalState.hh" 0039 #include "G4HadProjectile.hh" 0040 #include "G4Ions.hh" 0041 #include "G4TableTemplate.hh" 0042 #include "globals.hh" 0043 0044 /** G4FissionFragmentGenerator is the front end class to be used by the user for 0045 * handling all fission event generation. 0046 * 0047 * This class is intended to be instantiated for one type of fission event for 0048 * as specific isotope/isomer, fission type, and incident neutron energy. For 0049 * this reason no functions exist to change or modify these values once the 0050 * class in constructed. A new class must be created by the user for each type 0051 * of fission event, if such functionality is desired. 0052 */ 0053 class G4FissionFragmentGenerator 0054 { 0055 public: 0056 // Constructor definition 0057 /** Default constructor 0058 * - Usage: No arguments required 0059 * 0060 * - Notes: 0061 * - There are methods that should be called to set operating 0062 * parameters before generating any fission events with 0063 * G4FissionFragmentGenerator. These are: 0064 * - G4SetIsotope() 0065 * - G4SetMetaState() 0066 * - G4SetCause() 0067 * - G4SetIncidentEnergy() 0068 * - G4SetYieldType() 0069 * - G4SetAlphaProduction() 0070 * - G4SetAlphaProductionProbability() 0071 * - G4SetSamplingScheme() 0072 * - If any or all of these parameters are not set by the user, then 0073 * default values will be used. 0074 * - Isotope: \p 92238 0075 * - Metastable state: \p GROUND_STATE 0076 * - Cause: \p SPONTANEOUS 0077 * - Incident energy: \p 0.025 eV 0078 * - Yield type: \p INDEPENDENT 0079 * - Alpha production: \p 0 0080 * - Alpha production probability: \p 0 0081 * - Sampling scheme: \p NORMAL 0082 */ 0083 G4FissionFragmentGenerator(); 0084 /** Overloaded constructor 0085 * - Usage: 0086 * - \p Verbosity: Verbosity level 0087 * 0088 * - Notes: 0089 - Refer to the documentation for the default constructor for 0090 * setting up the operating parameters. 0091 */ 0092 G4FissionFragmentGenerator(G4int Verbosity); 0093 0094 protected: 0095 /** Initialize is a common function called by all constructors. */ 0096 void Initialize(); 0097 0098 public: 0099 // Functions 0100 /** Generates a single fission event 0101 * - Usage: No arguments required 0102 * 0103 * - Notes: 0104 * - Generates a single fission event by calling the overloaded function 0105 * and passing an argument of '1' 0106 */ 0107 G4DynamicParticleVector* G4GenerateFission(); 0108 /** Generates a single fission event 0109 * - Usage: 0110 * -\p Projectile: G4HadProjectile of the fission-inducing particle 0111 * 0112 * - Notes: 0113 * - Generates a single fission event by calling the overloaded function 0114 * and passing an argument of '1' 0115 */ 0116 G4DynamicParticleVector* G4GenerateFission(const G4HadProjectile& Projectile); 0117 /** Generates NumberOfFissions fission events 0118 * - Usage: 0119 * -\p NumberOfFissions: The number of fission events to generate 0120 * 0121 * - Notes: 0122 * - Generates \p NumberOfFissions fission events 0123 */ 0124 const std::vector<G4DynamicParticleVector*> 0125 G4GenerateFission(G4long NumberOfFissions, const G4HadProjectile& Projectile); 0126 /** Returns a randomly sampled fission product */ 0127 G4Ions* G4GenerateFissionProduct(); 0128 /** Returns the production rate of alpha particles for fission events */ 0129 G4double G4GetAlphaProduction(); 0130 /** Returns the probability of ternary fission */ 0131 G4double G4GetTernaryProbability(); 0132 /** Returns the FissionCause of the fission event. */ 0133 G4FFGEnumerations::FissionCause G4GetCause(); 0134 /** Returns the energy of the fission inducing particle. */ 0135 G4double G4GetIncidentEnergy(); 0136 /** Returns the code of the fission isotope in ZZZAAA format. */ 0137 G4int G4GetIsotope(); 0138 /** Returns the MetaState of the fission isotope. */ 0139 G4FFGEnumerations::MetaState G4GetMetaState(); 0140 /** Returns the FissionSamplingScheme that is currently in use. */ 0141 G4FFGEnumerations::FissionSamplingScheme G4GetSamplingScheme(); 0142 /** Returns the yield type that is currently in use */ 0143 G4FFGEnumerations::YieldType G4GetYieldType(); 0144 /** Initializes a new \p G4FPY...Dist class based on the class descriptor 0145 * variables of G4FissionFragmentGenerator. 0146 */ 0147 bool InitializeFissionProductYieldClass(std::istringstream& dataFile); 0148 /** Converts the Z, A and M of an isotope into an integer representation **/ 0149 static G4int G4MakeIsotopeCode(G4int Z, G4int A, G4int M); 0150 /** Sets the number of alpha particles produced in fission. 0151 * - Usage: 0152 * - if \p AlphaProduction is negative then alpha particles are sampled 0153 * on a Gaussian with a mean of \p abs(AlphaProduction). 0154 * 0155 * - Notes: 0156 * - The maximum number of alpha particles that may be created is 0157 * physically limited by the nucleons present in the parent nucleus. 0158 * Setting the AlphaProduction too high will have unpredictable 0159 * results on the sampling of the fission products. 0160 */ 0161 void G4SetAlphaProduction(G4double WhatAlphaProduction); 0162 /** Sets the probability of ternary fission 0163 * - Usage: 0164 * - \p WhatAlphaProductionProbability: Probability of generating alpha 0165 * particles for a fission event. 1 = 100% chance of alpha production 0166 * 0167 * - Notes: 0168 */ 0169 void G4SetTernaryProbability(G4double WhatTernaryProbability); 0170 /** Sets the cause of fission event. 0171 * - Usage: 0172 * - \p WhichCause: \p SPONTANEOUS, \p N_INDUCED, \p P_INDUCED, or 0173 * \p G_INDUCED 0174 * 0175 * - Notes: 0176 */ 0177 void G4SetCause(G4FFGEnumerations::FissionCause WhichCause); 0178 /** Sets the incident energy, if any, of the particle that cause fission. 0179 * - Usage: 0180 * - \p WhatIncidentEnergy: Kinetic energy of the particle with units applied; 0181 * 0182 * - Notes: 0183 */ 0184 void G4SetIncidentEnergy(G4double WhatIncidentEnergy); 0185 /** Sets the fission isotope 0186 * - Usage: 0187 * - \p WhichIsotope: Code of the isotope in ZZZAAA format 0188 * 0189 * - Notes: 0190 */ 0191 void G4SetIsotope(G4int WhichIsotope); 0192 /** Sets the metastable state of the fission isotope. 0193 * - Usage: 0194 * - \p WhichMetaState: \p GROUND_STATE, \p META_1, or \p META_2 0195 * 0196 * - Notes: 0197 */ 0198 void G4SetMetaState(G4FFGEnumerations::MetaState WhichMetaState); 0199 /** Set the sampling scheme. 0200 * - Usage: 0201 * - NewScheme: The G4FissionSamplingScheme value for the sampling 0202 * scheme to use. 0203 * 0204 * - Notes: 0205 * - \p NORMAL: Sets the parameters of this class to sample fission 0206 * events without any biasing. 0207 * - \p LIGHT_FRAGMENT: Sets the parameters of this class to bias the 0208 * fragment generation by always selecting a light fragment 0209 * (A \< 115) first. 0210 * - \p WENDT: Sets the parameters of this class to sample fission 0211 * events according to the Wendt sampling scheme. Please refer to 0212 * the code documentation for G4FPYWendtSamplingDist for a more 0213 * detailed explanation. 0214 */ 0215 void G4SetSamplingScheme(G4FFGEnumerations::FissionSamplingScheme NewScheme); 0216 /** Sets the ENDF yield type to be used for the data 0217 * - Usage: 0218 * - \p WhichYieldType: \p INDEPENDENT or \p COMULATIVE 0219 * 0220 * - Notes: 0221 */ 0222 void G4SetYieldType(G4FFGEnumerations::YieldType WhichYieldType); 0223 /** Sets the verbosity levels 0224 * - Usage: 0225 * - \p WhichVerbosity: Combination of levels 0226 * 0227 * - Notes: 0228 * - \p SILENT: All verbose output is repressed 0229 * - \p UPDATES: Only high-level internal changes are reported 0230 * - \p DAUGHTER_INFO: Displays information about daughter product sampling 0231 * - \p NEUTRON_INFO: Displays information about neutron sampling 0232 * - \p GAMMA_INFO: Displays information about gamma sampling 0233 * - \p ALPHA_INFO: Displays information about alpha sampling 0234 * - \p MOMENTUM_INFO: Displays information about momentum balancing 0235 * - \p EXTRAPOLATION_INTERPOLATION_INFO: Displays information about any data extrapolation 0236 * or interpolation that occurs 0237 * - \p DEBUG: Reports program flow as it steps through functions 0238 * - \p PRINT_ALL: Displays any and all output 0239 */ 0240 void G4SetVerbosity(G4int WhatVerbosity); 0241 0242 protected: 0243 // Variables 0244 // Class descriptor variables 0245 /** Number in ZZZAAA format of the isotope that 0246 * G4FissionFragmentGenerator references 0247 */ 0248 G4int Isotope_; 0249 /** MetaState information of the isotope that G4FissionFragmentGenerator 0250 * references 0251 * \n A value of 0 refers to the ground state 0252 */ 0253 G4FFGEnumerations::MetaState MetaState_; 0254 /** The cause of fission: \p SPONTANEOUS or \p N_INDUCED. */ 0255 G4FFGEnumerations::FissionCause Cause_; 0256 /** Kinetic energy, if any, of the incident particle in GeV. */ 0257 G4double IncidentEnergy_; 0258 /** The type of yield to be used: \p INDEPENDET or \p CUMULATIVE */ 0259 G4FFGEnumerations::YieldType YieldType_; 0260 /** Sets the ternary fission probability. Valid ranges are [0, 1] */ 0261 G4double TernaryProbability_; 0262 /** Controls whether alpha particles are emitted, and how many */ 0263 G4double AlphaProduction_; 0264 /** If Isotope_, MetaState_, Cause_, or IncidentEnergy_ are changed in 0265 * the middle of a run then the class pointed at by YieldData_ will 0266 * need to be reconstructed 0267 */ 0268 G4bool IsReconstructionNeeded_; 0269 /** Verbosity level */ 0270 G4int Verbosity_; 0271 0272 // Defines the current sampling scheme and the respective class 0273 /** The sampling scheme that is used: \p NORMAL, \p LIGHT_FRAGMENT, or 0274 * \p WENDT. 0275 */ 0276 G4FFGEnumerations::FissionSamplingScheme SamplingScheme_; 0277 /** Pointer to G4FissionProductYieldDist class that holds all the 0278 * probabilistic yield data 0279 */ 0280 G4FissionProductYieldDist* YieldData_; 0281 0282 // Destructor function(s) 0283 public: 0284 /** Default deconstructor */ 0285 ~G4FissionFragmentGenerator(); 0286 }; 0287 0288 #endif /* G4FISSIONFRAGMENTGENERATOR_HH */
[ Source navigation ] | [ Diff markup ] | [ Identifier search ] | [ general search ] |
This page was automatically generated by the 2.3.7 LXR engine. The LXR team |