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
G4FPYNormalFragmentDist.cc
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: G4FPYNormalFragmentDist.cc
28 * Author: B. Wendt (wendbryc@isu.edu)
29 *
30 * Created on July 26, 2011, 12:26 PM
31 */
32
33#include "G4Ions.hh"
34#include "Randomize.hh"
35#include "globals.hh"
36
38#include "G4FFGEnumerations.hh"
41
43G4FPYNormalFragmentDist( G4int WhichIsotope,
44 G4FFGEnumerations::MetaState WhichMetaState,
46 G4FFGEnumerations::YieldType WhichYieldType,
47 std::istringstream& dataFile)
48: G4FissionProductYieldDist( WhichIsotope,
49 WhichMetaState,
50 WhichCause,
51 WhichYieldType,
52 dataFile)
53{
54 // Initialize the class
55 Initialize();
56}
57
59G4FPYNormalFragmentDist( G4int WhichIsotope,
60 G4FFGEnumerations::MetaState WhichMetaState,
62 G4FFGEnumerations::YieldType WhichYieldType,
63 G4int Verbosity,
64 std::istringstream& dataFile)
65: G4FissionProductYieldDist( WhichIsotope,
66 WhichMetaState,
67 WhichCause,
68 WhichYieldType,
69 Verbosity,
70 dataFile)
71{
72 // Initialize the class
73 Initialize();
74}
75
77Initialize( void )
78{
80
81 // Nothing here yet
82
84}
85
88{
90
91 G4Ions* Particle=nullptr;
92
93 // Generate a (0, 1] random number and return the respective particle.
94 // The ENDF data tables lists 72172 as the largest fission fragment produced
95 // for any fission event. The maximum alpha production is 10 and the
96 // smallest fissile isotope is 90227. This means that if isotope 72172 were
97 // selected as the first daughter product, then at 10 alpha particles only
98 // 15 nucleons and -2 protons would remain for the second daughter product.
99 // Although the actual probability of this occurring is very small, or 0 in
100 // this case, a check should still be made to ensure that the second
101 // daughter product can be physically realized. This would prevent a
102 // situation such as this extreme example which results in a nucleus of 13
103 // neutrons and 2 anti-protons.
104 // This quick sanity check may become even more valid if the ENDF data
105 // tables are expanded in the future and include larger fission products.
106
107 G4int icounter=0;
108 G4int icounter_max=1024;
109 do
110 {
111 icounter++;
112 if ( icounter > icounter_max ) {
113 G4cout << "Loop-counter exceeded the threshold value at " << __LINE__ << "th line of " << __FILE__ << "." << G4endl;
114 break;
115 }
117 } while(Particle->GetAtomicMass() > RemainingA_ + 1
118 || Particle->GetAtomicNumber() > RemainingZ_ + 1);
119 // Loop checking, 11.05.2015, T. Koi
120
122 return Particle;
123}
124
126{
128
129 // Empty - all the data elements to be deconstructed are removed by
130 // ~G4FissionProductYieldDist()
131
133}
#define G4FFG_FUNCTIONLEAVE__
#define G4FFG_FUNCTIONENTER__
int G4int
Definition: G4Types.hh:85
#define G4endl
Definition: G4ios.hh:57
G4GLOB_DLL std::ostream G4cout
virtual G4Ions * GetFissionProduct(void)
G4FPYNormalFragmentDist(G4int WhichIsotope, G4FFGEnumerations::MetaState WhichMetaState, G4FFGEnumerations::FissionCause WhichCause, G4FFGEnumerations::YieldType WhichYieldType, std::istringstream &dataFile)
G4double G4SampleUniform(void)
G4Ions * FindParticle(G4double RandomParticle)
Definition: G4Ions.hh:52