ECCE @ EIC Software
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
G4FPYNormalFragmentDist.cc
Go to the documentation of this file. Or view the newest version in sPHENIX GitHub for file G4FPYNormalFragmentDist.cc
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 
37 #include "G4FFGDebuggingMacros.hh"
38 #include "G4FFGEnumerations.hh"
41 
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 
60  G4FFGEnumerations::MetaState WhichMetaState,
62  G4FFGEnumerations::YieldType WhichYieldType,
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 
77 Initialize( void )
78 {
80 
81  // Nothing here yet
82 
84 }
85 
88 {
90 
91  G4Ions* Particle;
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 }