Geant4 10.7.0
Toolkit for the simulation of the passage of particles through matter
Loading...
Searching...
No Matches
G4FPYBiasedLightFragmentDist Class Reference

#include <G4FPYBiasedLightFragmentDist.hh>

+ Inheritance diagram for G4FPYBiasedLightFragmentDist:

Public Member Functions

 G4FPYBiasedLightFragmentDist (G4int WhichIsotope, G4FFGEnumerations::MetaState WhichMetaState, G4FFGEnumerations::FissionCause WhichCause, G4FFGEnumerations::YieldType WhichYieldType, std::istringstream &dataStream)
 
 G4FPYBiasedLightFragmentDist (G4int WhichIsotope, G4FFGEnumerations::MetaState WhichMetaState, G4FFGEnumerations::FissionCause WhichCause, G4FFGEnumerations::YieldType WhichYieldType, G4int Verbosity, std::istringstream &dataStream)
 
virtual ~G4FPYBiasedLightFragmentDist (void)
 
- Public Member Functions inherited from G4FissionProductYieldDist
 G4FissionProductYieldDist (G4int WhichIsotope, G4FFGEnumerations::MetaState WhichMetaState, G4FFGEnumerations::FissionCause WhichCause, G4FFGEnumerations::YieldType WhichYieldType, std::istringstream &dataStream)
 
 G4FissionProductYieldDist (G4int WhichIsotope, G4FFGEnumerations::MetaState WhichMetaState, G4FFGEnumerations::FissionCause WhichCause, G4FFGEnumerations::YieldType WhichYieldType, G4int Verbosity, std::istringstream &dataStream)
 
G4DynamicParticleVectorG4GetFission (void)
 
G4IonsG4GetFissionProduct (void)
 
void G4SetAlphaProduction (G4double WhatAlphaProduction)
 
void G4SetEnergy (G4double WhatIncidentEnergy)
 
void G4SetTernaryProbability (G4double TernaryProbability)
 
void G4SetVerbosity (G4int WhatVerbosity)
 
virtual ~G4FissionProductYieldDist (void)
 

Protected Member Functions

void Initialize (void)
 
virtual G4IonsGetFissionProduct (void)
 
- Protected Member Functions inherited from G4FissionProductYieldDist
void CheckAlphaSanity (void)
 
G4IonsFindParticle (G4double RandomParticle)
 
G4IonsFindParticleExtrapolation (G4double RandomParticle, G4bool LowerEnergyGroupExists)
 
G4IonsFindParticleInterpolation (G4double RandomParticle, G4int LowerEnergyGroup)
 
G4IonsFindParticleBranchSearch (ProbabilityBranch *Branch, G4double RandomParticle, G4int EnergyGroup1, G4int EnergyGroup2)
 
virtual void GenerateAlphas (std::vector< G4ReactionProduct * > *Alphas)
 
virtual void GenerateNeutrons (std::vector< G4ReactionProduct * > *Neutrons)
 
virtual G4IonsGetFissionProduct (void)=0
 
G4IonsGetParticleDefinition (G4int Product, G4FFGEnumerations::MetaState MetaState)
 
G4String MakeDirectoryName (void)
 
G4String MakeFileName (G4int Isotope, G4FFGEnumerations::MetaState MetaState)
 
G4DynamicParticleMakeG4DynamicParticle (G4ReactionProduct *)
 
G4String MakeIsotopeName (G4int Isotope, G4FFGEnumerations::MetaState MetaState)
 
virtual void MakeTrees (void)
 
virtual void ReadProbabilities (void)
 
void Renormalize (ProbabilityBranch *Branch)
 
void SampleAlphaEnergies (std::vector< G4ReactionProduct * > *Alphas)
 
void SampleGammaEnergies (std::vector< G4ReactionProduct * > *Gammas)
 
void SampleNeutronEnergies (std::vector< G4ReactionProduct * > *Neutrons)
 
void SetNubar (void)
 
virtual void SortProbability (G4ENDFYieldDataContainer *YieldData)
 
void BurnTree (ProbabilityBranch *Branch)
 

Protected Attributes

G4int HalfWeight_
 
- Protected Attributes inherited from G4FissionProductYieldDist
const G4int Isotope_
 
const G4FFGEnumerations::MetaState MetaState_
 
const G4FFGEnumerations::FissionCause Cause_
 
const G4FFGEnumerations::YieldType YieldType_
 
G4ENDFTapeReadENDFData_
 
G4IonsAlphaDefinition_
 
G4double AlphaProduction_
 
G4double TernaryProbability_
 
G4GammaGammaDefinition_
 
G4double IncidentEnergy_
 
G4double MeanGammaEnergy_
 
G4IonsNeutronDefinition_
 
G4double Nubar_
 
G4double NubarWidth_
 
G4int RemainingZ_
 
G4int RemainingA_
 
G4double RemainingEnergy_
 
G4int Verbosity_
 
ProbabilityTreeTrees_
 
G4IonsSmallestZ_
 
G4IonsSmallestA_
 
G4IonsLargestZ_
 
G4IonsLargestA_
 
G4int YieldEnergyGroups_
 
G4doubleYieldEnergies_
 
G4doubleMaintainNormalizedData_
 
G4doubleDataTotal_
 
G4int TreeCount_
 
G4int BranchCount_
 
G4IonTableIonTable_
 
G4ParticleHPNamesElementNames_
 
G4FPYSamplingOpsRandomEngine_
 

Detailed Description

G4FPYBiasedLightFragmentDist is an inherited class of G4FissionProductYield that only samples the 'light' fission fragments, defined by A < 115

  • This inherited class of G4FissionProductYield samples only the lighter fission fragments, defined by A < 115
  • This biasing was implemented because of an artifact that is introduced due to random sampling of fission fragments. Typically small fission fragments (neutrons, alphas, gammas) are sampled after the first fragment is sampled. If a heavy fragment (A >= 115) is sampled first then the resulting lighter fission fragment, after all the other particles have been removed from the available mass, will most likely land far off the neutron drip line.
  • This implementation reduces the probability that such an improbable nucleus will be created by first sampling the lighter fission fragment and allowing the heavy fission fragment, which has a lot more flexibility for varying neutron populations, to make up the slack.

Definition at line 58 of file G4FPYBiasedLightFragmentDist.hh.

Constructor & Destructor Documentation

◆ G4FPYBiasedLightFragmentDist() [1/2]

G4FPYBiasedLightFragmentDist::G4FPYBiasedLightFragmentDist ( G4int  WhichIsotope,
G4FFGEnumerations::MetaState  WhichMetaState,
G4FFGEnumerations::FissionCause  WhichCause,
G4FFGEnumerations::YieldType  WhichYieldType,
std::istringstream &  dataStream 
)

Default constructor

  • Usage:
    • WhichIsotope: Isotope number of the element in ZZZAAA form
    • WhichMetaState: GROUND_STATE, META_1, or META_2
    • WhichCause: SPONTANEOUS or N_INDUCED
    • WhichYieldType: INDEPENDENT or CUMULATIVE
  • Notes:

Definition at line 42 of file G4FPYBiasedLightFragmentDist.cc.

48: G4FissionProductYieldDist( WhichIsotope,
49 WhichMetaState,
50 WhichCause,
51 WhichYieldType,
52 dataStream)
53{
54 // Initialize the class
55 Initialize();
56}

◆ G4FPYBiasedLightFragmentDist() [2/2]

G4FPYBiasedLightFragmentDist::G4FPYBiasedLightFragmentDist ( G4int  WhichIsotope,
G4FFGEnumerations::MetaState  WhichMetaState,
G4FFGEnumerations::FissionCause  WhichCause,
G4FFGEnumerations::YieldType  WhichYieldType,
G4int  Verbosity,
std::istringstream &  dataStream 
)

Overloaded constructor

  • Usage:
    • WhichIsotope: Isotope number of the element in ZZZAAA form
    • WhichMetaState: GROUND_STATE, META_1, or META_2
    • WhichCause: SPONTANEOUS or N_INDUCED
    • WhichYieldType: INDEPENDENT or CUMULATIVE
    • Verbosity: Verbosity level
  • Notes:

Definition at line 58 of file G4FPYBiasedLightFragmentDist.cc.

65: G4FissionProductYieldDist( WhichIsotope,
66 WhichMetaState,
67 WhichCause,
68 WhichYieldType,
69 Verbosity,
70 dataStream )
71{
72 // Initialize the class
73 Initialize();
74}

◆ ~G4FPYBiasedLightFragmentDist()

G4FPYBiasedLightFragmentDist::~G4FPYBiasedLightFragmentDist ( void  )
virtual

Default deconstructor. It is a virtual function since G4FPYBiasedLightFragmentDist inherits from G4FissionProductYieldDist

Definition at line 130 of file G4FPYBiasedLightFragmentDist.cc.

131{
133
134 // Empty - all the data elements to be deconstructed are removed by
135 // ~G4FissionProductYieldDist()
137}
#define G4FFG_FUNCTIONLEAVE__
#define G4FFG_FUNCTIONENTER__

Member Function Documentation

◆ GetFissionProduct()

G4Ions * G4FPYBiasedLightFragmentDist::GetFissionProduct ( void  )
protectedvirtual

Selects a fission product from the probability tree, limited by the number of nucleons available to the system

Todo:
Figure out what to do if a suitable particle is not found in 1000 iterations

Implements G4FissionProductYieldDist.

Definition at line 87 of file G4FPYBiasedLightFragmentDist.cc.

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
116 Counter++;
117 } while (IsHeavy || IsNotFeasable); // Loop checking, 11.05.2015, T. Koi
118
119 // Something went wrong, so figure out how to fix it
120 if(Particle == NULL)
121 {
122 /// \todo Figure out what to do if a suitable particle is not found in 1000 iterations
123 }
124
125 // Return the G4ParticleDefintion pointer to the random light fragment
127 return Particle;
128}
bool G4bool
Definition: G4Types.hh:86
int G4int
Definition: G4Types.hh:85
G4double G4SampleUniform(void)
G4Ions * FindParticle(G4double RandomParticle)
Definition: G4Ions.hh:52

◆ Initialize()

void G4FPYBiasedLightFragmentDist::Initialize ( void  )
protected

Initialize is a common function called by all constructors.

Definition at line 76 of file G4FPYBiasedLightFragmentDist.cc.

78{
80
81 // Initialize the half-weight for fission product sampling
82 HalfWeight_ = (G4int)floor((Isotope_ % 1000) / 2.0);
83
85}

Referenced by G4FPYBiasedLightFragmentDist().

Member Data Documentation

◆ HalfWeight_

G4int G4FPYBiasedLightFragmentDist::HalfWeight_
protected

Defines the half-weight of the fission isotope

Definition at line 100 of file G4FPYBiasedLightFragmentDist.hh.

Referenced by GetFissionProduct(), and Initialize().


The documentation for this class was generated from the following files: