Geant4  10.00.p02
G4FPYBiasedLightFragmentDist.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: G4FPYBiasedLightFragmentDist.cc
28  * Author: B. Wendt (wendbryc@isu.edu)
29  *
30  * Created on June 2, 2011, 11:02 AM
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& dataStream )
48 : G4FissionProductYieldDist( WhichIsotope,
49  WhichMetaState,
50  WhichCause,
51  WhichYieldType,
52  dataStream)
53 {
54  // Initialize the class
55  Initialize();
56 }
57 
60  G4FFGEnumerations::MetaState WhichMetaState,
62  G4FFGEnumerations::YieldType WhichYieldType,
64  std::istringstream& dataStream)
65 : G4FissionProductYieldDist( WhichIsotope,
66  WhichMetaState,
67  WhichCause,
68  WhichYieldType,
69  Verbosity,
70  dataStream )
71 {
72  // Initialize the class
73  Initialize();
74 }
75 
77 Initialize( void )
78 {
80 
81  // Initialize the half-weight for fission product sampling
82  HalfWeight_ = (G4int)floor((Isotope_ % 1000) / 2.0);
83 
85 }
86 
89 {
91 
92  G4Ions* Particle;
93  G4bool IsHeavy;
94  G4bool IsNotFeasable;
95  G4int Counter;
96 
97  Counter = 0;
98  do
99  {
100  // If we have sampled too many times then we may need to do something else
101  if(Counter == 1000)
102  {
103  Particle = NULL;
104  break;
105  }
106 
107  // Generate a (0, 1] random number, then find the corresponding particle
109 
110  // If the daughter is heavier than half of the original nucleus weight
111  // or not physically feasable then set the flags to sample again
112  IsHeavy = (Particle->GetAtomicMass() > HalfWeight_);
113  IsNotFeasable = (Particle->GetAtomicMass() > RemainingA_ + 1
114  || Particle->GetAtomicNumber() > RemainingZ_ + 1);
115  } while (IsHeavy || IsNotFeasable);
116 
117  // Something went wrong, so figure out how to fix it
118  if(Particle == NULL)
119  {
121  }
122 
123  // Return the G4ParticleDefintion pointer to the random light fragment
125  return Particle;
126 }
127 
129 {
131 
132  // Empty - all the data elements to be deconstructed are removed by
133  // ~G4FissionProductYieldDist()
135 }
MetaState
ENDF format provides for 3 isomers - 1 ground state and 2 meta states.
virtual ~G4FPYBiasedLightFragmentDist(void)
Default deconstructor.
G4double G4SampleUniform(void)
Returns a double value evenly distributed in the range (0, 1].
G4Ions * FindParticle(G4double RandomParticle)
Returns the G4Ions definitions pointer for the particle whose probability segment contains the (0...
G4FPYSamplingOps * RandomEngine_
Pointer to the CLHEP library random engine.
G4FPYBiasedLightFragmentDist(G4int WhichIsotope, G4FFGEnumerations::MetaState WhichMetaState, G4FFGEnumerations::FissionCause WhichCause, G4FFGEnumerations::YieldType WhichYieldType, std::istringstream &dataStream)
Default constructor.
YieldType
The two types of fission data available.
int G4int
Definition: G4Types.hh:78
G4int RemainingA_
Counter for the number of nucleons available to the fission event.
FissionCause
Causes of fission.
G4FissionProductYieldDist is the base class for storing all the fission data and generating fission e...
Verbosity
These are the verbosity levels.
Definition: G4Ions.hh:51
bool G4bool
Definition: G4Types.hh:79
virtual G4Ions * GetFissionProduct(void)
Selects a fission product from the probability tree, limited by the number of nucleons available to t...
void Initialize(void)
Initialize is a common function called by all constructors.
const G4int Isotope_
Number in ZZZAAA format of the isotope that G4FissionProductYieldDist references. ...
#define G4FFG_FUNCTIONLEAVE__
#define G4FFG_FUNCTIONENTER__
G4int RemainingZ_
Counter for the number of protons available to the fission event.
G4int HalfWeight_
Defines the half-weight of the fission isotope.