Geant4
11.2.2
Toolkit for the simulation of the passage of particles through matter
Loading...
Searching...
No Matches
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 (
[email protected]
)
29
*
30
* Created on June 2, 2011, 11:02 AM
31
*/
32
33
#include "
G4FPYBiasedLightFragmentDist.hh
"
34
35
#include "
G4FFGDebuggingMacros.hh
"
36
#include "
G4FFGEnumerations.hh
"
37
#include "
G4FissionProductYieldDist.hh
"
38
#include "
G4Ions.hh
"
39
#include "
Randomize.hh
"
40
#include "
globals.hh
"
41
42
G4FPYBiasedLightFragmentDist::G4FPYBiasedLightFragmentDist
(
43
G4int
WhichIsotope,
G4FFGEnumerations::MetaState
WhichMetaState,
44
G4FFGEnumerations::FissionCause
WhichCause,
G4FFGEnumerations::YieldType
WhichYieldType,
45
std::istringstream& dataStream)
46
:
G4FissionProductYieldDist
(WhichIsotope, WhichMetaState, WhichCause, WhichYieldType, dataStream)
47
{
48
// Initialize the class
49
Initialize
();
50
}
51
52
G4FPYBiasedLightFragmentDist::G4FPYBiasedLightFragmentDist
(
53
G4int
WhichIsotope,
G4FFGEnumerations::MetaState
WhichMetaState,
54
G4FFGEnumerations::FissionCause
WhichCause,
G4FFGEnumerations::YieldType
WhichYieldType,
55
G4int
Verbosity, std::istringstream& dataStream)
56
:
G4FissionProductYieldDist
(WhichIsotope, WhichMetaState, WhichCause, WhichYieldType, Verbosity,
57
dataStream)
58
{
59
// Initialize the class
60
Initialize
();
61
}
62
63
void
G4FPYBiasedLightFragmentDist::Initialize
()
64
{
65
G4FFG_FUNCTIONENTER__
66
67
// Initialize the half-weight for fission product sampling
68
HalfWeight_
= (
G4int
)floor((
Isotope_
% 1000) / 2.0);
69
70
G4FFG_FUNCTIONLEAVE__
71
}
72
73
G4Ions
*
G4FPYBiasedLightFragmentDist::GetFissionProduct
()
74
{
75
G4FFG_FUNCTIONENTER__
76
77
G4Ions
* Particle;
78
G4bool
IsHeavy;
79
G4bool
IsNotFeasable;
80
G4int
Counter
;
81
82
Counter
= 0;
83
do
{
84
// If we have sampled too many times then we may need to do something else
85
if
(
Counter
== 1000) {
86
Particle =
nullptr
;
87
break
;
88
}
89
90
// Generate a (0, 1] random number, then find the corresponding particle
91
Particle =
FindParticle
(
RandomEngine_
->
G4SampleUniform
());
92
93
// If the daughter is heavier than half of the original nucleus weight
94
// or not physically feasable then set the flags to sample again
95
IsHeavy = (Particle->GetAtomicMass() >
HalfWeight_
);
96
IsNotFeasable = (Particle->GetAtomicMass() >
RemainingA_
+ 1
97
|| Particle->GetAtomicNumber() >
RemainingZ_
+ 1);
98
99
Counter
++;
100
}
while
(IsHeavy || IsNotFeasable);
// Loop checking, 11.05.2015, T. Koi
101
102
// Something went wrong, so figure out how to fix it
103
if
(Particle ==
nullptr
) {
104
/// \todo Figure out what to do if a suitable particle is not found in 1000 iterations
105
}
106
107
// Return the G4ParticleDefintion pointer to the random light fragment
108
G4FFG_FUNCTIONLEAVE__
109
return
Particle;
110
}
111
112
G4FPYBiasedLightFragmentDist::~G4FPYBiasedLightFragmentDist
()
113
{
114
G4FFG_FUNCTIONENTER__
115
116
// Empty - all the data elements to be deconstructed are removed by
117
// ~G4FissionProductYieldDist()
118
G4FFG_FUNCTIONLEAVE__
119
}
G4FFGDebuggingMacros.hh
G4FFG_FUNCTIONLEAVE__
#define G4FFG_FUNCTIONLEAVE__
Definition
G4FFGDebuggingMacros.hh:211
G4FFG_FUNCTIONENTER__
#define G4FFG_FUNCTIONENTER__
Definition
G4FFGDebuggingMacros.hh:207
G4FFGEnumerations.hh
G4FPYBiasedLightFragmentDist.hh
G4FissionProductYieldDist.hh
G4Ions.hh
G4bool
bool G4bool
Definition
G4Types.hh:86
G4int
int G4int
Definition
G4Types.hh:85
Randomize.hh
G4FPYBiasedLightFragmentDist::Initialize
void Initialize()
Definition
G4FPYBiasedLightFragmentDist.cc:63
G4FPYBiasedLightFragmentDist::HalfWeight_
G4int HalfWeight_
Definition
G4FPYBiasedLightFragmentDist.hh:96
G4FPYBiasedLightFragmentDist::~G4FPYBiasedLightFragmentDist
~G4FPYBiasedLightFragmentDist() override
Definition
G4FPYBiasedLightFragmentDist.cc:112
G4FPYBiasedLightFragmentDist::G4FPYBiasedLightFragmentDist
G4FPYBiasedLightFragmentDist(G4int WhichIsotope, G4FFGEnumerations::MetaState WhichMetaState, G4FFGEnumerations::FissionCause WhichCause, G4FFGEnumerations::YieldType WhichYieldType, std::istringstream &dataStream)
Definition
G4FPYBiasedLightFragmentDist.cc:42
G4FPYBiasedLightFragmentDist::GetFissionProduct
G4Ions * GetFissionProduct() override
Definition
G4FPYBiasedLightFragmentDist.cc:73
G4FPYSamplingOps::G4SampleUniform
G4double G4SampleUniform()
Definition
G4FPYSamplingOps.cc:229
G4FissionProductYieldDist
Definition
G4FissionProductYieldDist.hh:54
G4FissionProductYieldDist::Isotope_
const G4int Isotope_
Definition
G4FissionProductYieldDist.hh:170
G4FissionProductYieldDist::RandomEngine_
G4FPYSamplingOps * RandomEngine_
Definition
G4FissionProductYieldDist.hh:259
G4FissionProductYieldDist::RemainingZ_
G4int RemainingZ_
Definition
G4FissionProductYieldDist.hh:215
G4FissionProductYieldDist::FindParticle
G4Ions * FindParticle(G4double RandomParticle)
Definition
G4FissionProductYieldDist.cc:652
G4FissionProductYieldDist::RemainingA_
G4int RemainingA_
Definition
G4FissionProductYieldDist.hh:217
G4Ions
Definition
G4Ions.hh:48
globals.hh
G4FFGEnumerations::FissionCause
FissionCause
Definition
G4FFGEnumerations.hh:66
G4FFGEnumerations::MetaState
MetaState
Definition
G4FFGEnumerations.hh:109
G4FFGEnumerations::YieldType
YieldType
Definition
G4FFGEnumerations.hh:49
Counter
Definition
G4OpenInventorViewer.cc:593
geant4-v11.2.2
source
processes
hadronic
models
particle_hp
src
G4FPYBiasedLightFragmentDist.cc
Generated by
1.12.0