Import Geant4 10.2.0 source tree
This commit is contained in:
@@ -15,7 +15,7 @@ CPPFLAGS += -DG4HADRONIC_ALLOC_EXPORT
|
||||
CPPFLAGS += -I$(G4BASE)/global/management/include \
|
||||
-I$(G4BASE)/global/HEPRandom/include \
|
||||
-I$(G4BASE)/processes/hadronic/util/include \
|
||||
-I$(G4BASE)/processes/hadronic/models/neutron_hp/include \
|
||||
-I$(G4BASE)/processes/hadronic/models/particle_hp/include \
|
||||
-I$(G4BASE)/materials/include \
|
||||
-I$(G4BASE)/global/HEPGeometry/include \
|
||||
-I$(G4BASE)/particles/management/include \
|
||||
|
||||
@@ -14,6 +14,41 @@ code and to keep track of all tags.
|
||||
* Please list in reverse chronological order (last date on top)
|
||||
---------------------------------------------------------------
|
||||
|
||||
5 November 2015 Alberto Ribon (hadr-fission-V10-01-07)
|
||||
-------------------------------------------------------
|
||||
- Removed neutron_hp/
|
||||
|
||||
3 November 2015 Tatsumi Koi (hadr-fission-V10-01-06)
|
||||
----------------------------------------------------
|
||||
- Loop checking
|
||||
|
||||
16 October 2015 Tatsumi Koi (hadr-fission-V10-01-05)
|
||||
----------------------------------------------------
|
||||
- Fix problem on previous tag
|
||||
|
||||
13 October 2015 Tatsumi Koi (hadr-fission-V10-01-04)
|
||||
----------------------------------------------------
|
||||
- Migration to fast-math functions
|
||||
|
||||
9 June 2015 Tatsumi Koi (hadr-fission-V10-01-03)
|
||||
----------------------------------------------------
|
||||
-Set A and Z of actual target of reaction to "targetNucleus" from HadronicProcess
|
||||
-Reset isotope pointer to the target G4Nucleus object of reaction
|
||||
-By this, warning message about ReactionWhiteBoard" disappeared
|
||||
src/G4FissLib.cc
|
||||
|
||||
4 June 2015 Tatsumi Koi (hadr-fission-V10-01-02)
|
||||
----------------------------------------------------
|
||||
- Re-tag for testing
|
||||
|
||||
3 June 2015 Tatsumi Koi (hadr-fission-V10-01-01)
|
||||
----------------------------------------------------
|
||||
- src/G4FissionLibrary.cc: Interface change along with "hadr-hpp-V10-01-10"
|
||||
|
||||
29 April 2015 Tatsumi Koi (hadr-fission-V10-01-00)
|
||||
----------------------------------------------------
|
||||
- Use ParticleHP instead of NeutronHP
|
||||
|
||||
9 November 2014 Tatsumi Koi (hadr-fission-V10-00-09)
|
||||
----------------------------------------------------
|
||||
- Re-tag for testing
|
||||
@@ -24,7 +59,7 @@ code and to keep track of all tags.
|
||||
|
||||
26 October 2014 Tatsumi Koi (hadr-fission-V10-00-07)
|
||||
----------------------------------------------------
|
||||
- G4FissionLibrary.hh: Interface change along with "hadr-hpn-V10-00-28"
|
||||
- src/G4FissionLibrary.cc: Interface change along with "hadr-hpn-V10-00-28"
|
||||
|
||||
8 July 2014 Jerome Verbeke (hadr-fission-V10-00-06)
|
||||
----------------------------------------------------
|
||||
|
||||
@@ -124,9 +124,9 @@
|
||||
// Class Description - End
|
||||
|
||||
#include "globals.hh"
|
||||
#include "G4NeutronHPChannel.hh"
|
||||
#include "G4ParticleHPChannel.hh"
|
||||
#include "G4HadronicInteraction.hh"
|
||||
#include "G4NeutronHPThermalBoost.hh"
|
||||
#include "G4ParticleHPThermalBoost.hh"
|
||||
#include "G4FissionLibrary.hh"
|
||||
// #include "G4FissLib.hh"
|
||||
|
||||
@@ -145,7 +145,7 @@ class G4FissLib : public G4HadronicInteraction
|
||||
|
||||
private:
|
||||
G4double* xSec;
|
||||
G4NeutronHPChannel* theFission;
|
||||
G4ParticleHPChannel* theFission;
|
||||
G4String dirName;
|
||||
G4int numEle;
|
||||
};
|
||||
|
||||
@@ -62,19 +62,19 @@
|
||||
#include "G4HadProjectile.hh"
|
||||
#include "G4DynamicParticleVector.hh"
|
||||
#include "G4HadFinalState.hh"
|
||||
#include "G4NeutronHPFinalState.hh"
|
||||
#include "G4NeutronHPNames.hh"
|
||||
#include "G4NeutronHPNeutronYield.hh"
|
||||
#include "G4NeutronHPFissionERelease.hh"
|
||||
#include "G4NeutronHPEnergyDistribution.hh"
|
||||
#include "G4NeutronHPPhotonDist.hh"
|
||||
#include "G4NeutronHPAngular.hh"
|
||||
#include "G4ParticleHPFinalState.hh"
|
||||
#include "G4ParticleHPNames.hh"
|
||||
#include "G4ParticleHPParticleYield.hh"
|
||||
#include "G4ParticleHPFissionERelease.hh"
|
||||
#include "G4ParticleHPEnergyDistribution.hh"
|
||||
#include "G4ParticleHPPhotonDist.hh"
|
||||
#include "G4ParticleHPAngular.hh"
|
||||
#include "G4Nucleus.hh"
|
||||
#include "Randomize.hh"
|
||||
#include "G4LLNLFission.hh"
|
||||
#include "G4fissionEvent.hh"
|
||||
|
||||
class G4FissionLibrary : public G4NeutronHPFinalState
|
||||
class G4FissionLibrary : public G4ParticleHPFinalState
|
||||
{
|
||||
public:
|
||||
|
||||
@@ -82,9 +82,10 @@ class G4FissionLibrary : public G4NeutronHPFinalState
|
||||
~G4FissionLibrary();
|
||||
|
||||
//void Init (G4double A, G4double Z, G4String & dirName, G4String &);
|
||||
void Init (G4double A, G4double Z, G4int M, G4String & dirName, G4String &);
|
||||
//void Init (G4double A, G4double Z, G4int M, G4String & dirName, G4String &);
|
||||
void Init (G4double A, G4double Z, G4int M, G4String & dirName, G4String &, G4ParticleDefinition* );
|
||||
G4HadFinalState * ApplyYourself(const G4HadProjectile & theTrack);
|
||||
G4NeutronHPFinalState * New() ;
|
||||
G4ParticleHPFinalState * New() ;
|
||||
|
||||
private:
|
||||
G4fissionEvent* fe;
|
||||
@@ -92,15 +93,15 @@ class G4FissionLibrary : public G4NeutronHPFinalState
|
||||
G4double targetMass;
|
||||
void SampleMult(const G4HadProjectile & theTrack, G4int* nPrompt,
|
||||
G4int* gPrompt, G4double eKinetic);
|
||||
inline G4NeutronHPFissionERelease * GetEnergyRelease() {
|
||||
inline G4ParticleHPFissionERelease * GetEnergyRelease() {
|
||||
return &theEnergyRelease;
|
||||
}
|
||||
G4NeutronHPNeutronYield theFinalStateNeutrons;
|
||||
G4NeutronHPEnergyDistribution thePromptNeutronEnDis;
|
||||
G4NeutronHPEnergyDistribution theDelayedNeutronEnDis;
|
||||
G4NeutronHPAngular theNeutronAngularDis;
|
||||
G4ParticleHPParticleYield theFinalStateNeutrons;
|
||||
G4ParticleHPEnergyDistribution thePromptNeutronEnDis;
|
||||
G4ParticleHPEnergyDistribution theDelayedNeutronEnDis;
|
||||
G4ParticleHPAngular theNeutronAngularDis;
|
||||
|
||||
G4NeutronHPPhotonDist theFinalStatePhotons;
|
||||
G4NeutronHPFissionERelease theEnergyRelease;
|
||||
G4ParticleHPPhotonDist theFinalStatePhotons;
|
||||
G4ParticleHPFissionERelease theEnergyRelease;
|
||||
};
|
||||
#endif
|
||||
|
||||
@@ -34,7 +34,7 @@ include_directories(${CMAKE_SOURCE_DIR}/source/particles/management/include)
|
||||
include_directories(${CMAKE_SOURCE_DIR}/source/processes/hadronic/cross_sections/include)
|
||||
include_directories(${CMAKE_SOURCE_DIR}/source/processes/hadronic/management/include)
|
||||
include_directories(${CMAKE_SOURCE_DIR}/source/processes/hadronic/models/management/include)
|
||||
include_directories(${CMAKE_SOURCE_DIR}/source/processes/hadronic/models/neutron_hp/include)
|
||||
include_directories(${CMAKE_SOURCE_DIR}/source/processes/hadronic/models/particle_hp/include)
|
||||
include_directories(${CMAKE_SOURCE_DIR}/source/processes/hadronic/processes/include)
|
||||
include_directories(${CMAKE_SOURCE_DIR}/source/processes/hadronic/util/include)
|
||||
include_directories(${CMAKE_SOURCE_DIR}/source/processes/management/include)
|
||||
@@ -86,6 +86,7 @@ GEANT4_DEFINE_MODULE(NAME G4had_fission
|
||||
G4globman
|
||||
G4had_mod_man
|
||||
G4had_neu_hp
|
||||
G4had_par_hp
|
||||
G4hadronic_mgt
|
||||
G4hadronic_proc
|
||||
G4hadronic_util
|
||||
|
||||
@@ -75,7 +75,7 @@ G4FissLib::G4FissLib()
|
||||
G4String tString = "/Fission/";
|
||||
dirName = dirName + tString;
|
||||
numEle = G4Element::GetNumberOfElements();
|
||||
theFission = new G4NeutronHPChannel[numEle];
|
||||
theFission = new G4ParticleHPChannel[numEle];
|
||||
|
||||
for (G4int i=0; i<numEle; i++)
|
||||
{
|
||||
@@ -94,8 +94,10 @@ G4FissLib::~G4FissLib()
|
||||
}
|
||||
|
||||
G4HadFinalState*
|
||||
G4FissLib::ApplyYourself(const G4HadProjectile& aTrack, G4Nucleus&)
|
||||
G4FissLib::ApplyYourself(const G4HadProjectile& aTrack, G4Nucleus& aNucleus)
|
||||
{
|
||||
G4ParticleHPManager::GetInstance()->OpenReactionWhiteBoard();
|
||||
|
||||
const G4Material* theMaterial = aTrack.GetMaterial();
|
||||
G4int n = theMaterial->GetNumberOfElements();
|
||||
G4int index = theMaterial->GetElement(0)->GetIndex();
|
||||
@@ -107,7 +109,7 @@ G4FissLib::ApplyYourself(const G4HadProjectile& aTrack, G4Nucleus&)
|
||||
G4int imat;
|
||||
const G4double * NumAtomsPerVolume = theMaterial->GetVecNbOfAtomsPerVolume();
|
||||
G4double rWeight;
|
||||
G4NeutronHPThermalBoost aThermalE;
|
||||
G4ParticleHPThermalBoost aThermalE;
|
||||
for (i = 0; i < n; i++) {
|
||||
imat = theMaterial->GetElement(i)->GetIndex();
|
||||
rWeight = NumAtomsPerVolume[i];
|
||||
@@ -128,7 +130,20 @@ G4FissLib::ApplyYourself(const G4HadProjectile& aTrack, G4Nucleus&)
|
||||
delete [] xSec;
|
||||
}
|
||||
|
||||
return theFission[index].ApplyYourself(aTrack);
|
||||
//return theFission[index].ApplyYourself(aTrack);
|
||||
//Overwrite target parameters
|
||||
G4HadFinalState* result = theFission[index].ApplyYourself(aTrack);
|
||||
aNucleus.SetParameters(G4ParticleHPManager::GetInstance()->GetReactionWhiteBoard()->GetTargA(),G4ParticleHPManager::GetInstance()->GetReactionWhiteBoard()->GetTargZ());
|
||||
const G4Element* target_element = (*G4Element::GetElementTable())[index];
|
||||
const G4Isotope* target_isotope=NULL;
|
||||
G4int iele = target_element->GetNumberOfIsotopes();
|
||||
for ( G4int j = 0 ; j != iele ; j++ ) {
|
||||
target_isotope=target_element->GetIsotope( j );
|
||||
if ( target_isotope->GetN() == G4ParticleHPManager::GetInstance()->GetReactionWhiteBoard()->GetTargA() ) break;
|
||||
}
|
||||
aNucleus.SetIsotope( target_isotope );
|
||||
G4ParticleHPManager::GetInstance()->CloseReactionWhiteBoard();
|
||||
return result;
|
||||
}
|
||||
|
||||
const std::pair<G4double, G4double> G4FissLib::GetFatalEnergyCheckLevels() const
|
||||
|
||||
@@ -61,11 +61,11 @@
|
||||
//
|
||||
|
||||
#include "G4FissionLibrary.hh"
|
||||
#include "G4NeutronHPManager.hh"
|
||||
#include "G4ParticleHPManager.hh"
|
||||
#include "G4SystemOfUnits.hh"
|
||||
|
||||
G4FissionLibrary::G4FissionLibrary()
|
||||
: G4NeutronHPFinalState(), theIsotope(0), targetMass(0.0)
|
||||
: G4ParticleHPFinalState(), theIsotope(0), targetMass(0.0)
|
||||
{
|
||||
hasXsec = false;
|
||||
fe=0;
|
||||
@@ -74,19 +74,19 @@ G4FissionLibrary::G4FissionLibrary()
|
||||
G4FissionLibrary::~G4FissionLibrary()
|
||||
{}
|
||||
|
||||
G4NeutronHPFinalState * G4FissionLibrary::New()
|
||||
G4ParticleHPFinalState * G4FissionLibrary::New()
|
||||
{
|
||||
G4FissionLibrary * theNew = new G4FissionLibrary;
|
||||
return theNew;
|
||||
}
|
||||
|
||||
//void G4FissionLibrary::Init (G4double A, G4double Z, G4String & dirName, G4String &)
|
||||
void G4FissionLibrary::Init (G4double A, G4double Z, G4int M, G4String & dirName, G4String &)
|
||||
void G4FissionLibrary::Init (G4double A, G4double Z, G4int M, G4String & dirName, G4String &, G4ParticleDefinition*)
|
||||
{
|
||||
G4String tString = "/FS/";
|
||||
G4bool dbool;
|
||||
theIsotope = static_cast<G4int>(1000*Z+A);
|
||||
G4NeutronHPDataUsed aFile = theNames.GetName(static_cast<G4int>(A), static_cast<G4int>(Z), M, dirName, tString, dbool);
|
||||
G4ParticleHPDataUsed aFile = theNames.GetName(static_cast<G4int>(A), static_cast<G4int>(Z), M, dirName, tString, dbool);
|
||||
G4String filename = aFile.GetName();
|
||||
|
||||
if(!dbool)
|
||||
@@ -98,12 +98,12 @@ void G4FissionLibrary::Init (G4double A, G4double Z, G4int M, G4String & dirName
|
||||
}
|
||||
//std::ifstream theData(filename, std::ios::in);
|
||||
std::istringstream theData(std::ios::in);
|
||||
G4NeutronHPManager::GetInstance()->GetDataStream(filename,theData);
|
||||
G4ParticleHPManager::GetInstance()->GetDataStream(filename,theData);
|
||||
|
||||
// here it comes
|
||||
G4int infoType, dataType;
|
||||
hasFSData = false;
|
||||
while (theData >> infoType)
|
||||
while (theData >> infoType) // Loop checking, 11.03.2015, T. Koi
|
||||
{
|
||||
hasFSData = true;
|
||||
theData >> dataType;
|
||||
@@ -159,7 +159,8 @@ G4HadFinalState* G4FissionLibrary::ApplyYourself(const G4HadProjectile & theTrac
|
||||
theTarget = aNucleus.GetBiasedThermalNucleus( targetMass, neuVelo, theTrack.GetMaterial()->GetTemperature());
|
||||
|
||||
// set neutron and target in the FS classes
|
||||
theNeutronAngularDis.SetNeutron(theNeutron);
|
||||
//theNeutronAngularDis.SetNeutron(theNeutron);
|
||||
theNeutronAngularDis.SetProjectileRP(theNeutron);
|
||||
theNeutronAngularDis.SetTarget(theTarget);
|
||||
|
||||
// boost to target rest system
|
||||
|
||||
@@ -43,6 +43,9 @@
|
||||
|
||||
#include "G4LFission.hh"
|
||||
#include "globals.hh"
|
||||
#include "G4Exp.hh"
|
||||
#include "G4Log.hh"
|
||||
#include "G4Pow.hh"
|
||||
#include "G4PhysicalConstants.hh"
|
||||
#include "G4SystemOfUnits.hh"
|
||||
#include "Randomize.hh"
|
||||
@@ -77,11 +80,11 @@ void G4LFission::init()
|
||||
G4int i;
|
||||
G4double xx = 1. - 0.5;
|
||||
G4double xxx = std::sqrt(2.29*xx);
|
||||
spneut[0] = std::exp(-xx/0.965)*(std::exp(xxx) - std::exp(-xxx))/2.;
|
||||
spneut[0] = G4Exp(-xx/0.965)*(G4Exp(xxx) - G4Exp(-xxx))/2.;
|
||||
for (i = 2; i <= 10; i++) {
|
||||
xx = i*1. - 0.5;
|
||||
xxx = std::sqrt(2.29*xx);
|
||||
spneut[i-1] = spneut[i-2] + std::exp(-xx/0.965)*(std::exp(xxx) - std::exp(-xxx))/2.;
|
||||
spneut[i-1] = spneut[i-2] + G4Exp(-xx/0.965)*(G4Exp(xxx) - G4Exp(-xxx))/2.;
|
||||
}
|
||||
for (i = 1; i <= 10; i++) {
|
||||
spneut[i-1] = spneut[i-1]/spneut[9];
|
||||
@@ -145,13 +148,13 @@ G4HadFinalState* G4LFission::ApplyYourself(const G4HadProjectile& aTrack,
|
||||
if (e1 < 1.) e1 = 1.;
|
||||
|
||||
// Average number of neutrons
|
||||
G4double avern = 2.569 + 0.559*std::log(e1);
|
||||
G4double avern = 2.569 + 0.559*G4Log(e1);
|
||||
G4bool photofission = 0; // For now
|
||||
// Take the following value if photofission is not included
|
||||
if (!photofission) avern = 2.569 + 0.900*std::log(e1);
|
||||
if (!photofission) avern = 2.569 + 0.900*G4Log(e1);
|
||||
|
||||
// Average number of gammas
|
||||
G4double averg = 9.500 + 0.600*std::log(e1);
|
||||
G4double averg = 9.500 + 0.600*G4Log(e1);
|
||||
|
||||
G4double ran = G4RandGauss::shoot();
|
||||
// Number of neutrons
|
||||
@@ -188,7 +191,7 @@ G4HadFinalState* G4LFission::ApplyYourself(const G4HadProjectile& aTrack,
|
||||
G4DynamicParticle* aGamma;
|
||||
for (i = 1; i <= ng; i++) {
|
||||
ran = G4UniformRand();
|
||||
G4double ekin = -0.87*std::log(ran);
|
||||
G4double ekin = -0.87*G4Log(ran);
|
||||
exg = exg + ekin;
|
||||
aGamma = new G4DynamicParticle(G4Gamma::GammaDefinition(),
|
||||
G4ParticleMomentum(1.,0.,0.),
|
||||
@@ -265,13 +268,14 @@ G4double G4LFission::Atomas(const G4double A, const G4double Z)
|
||||
return rma; //Alpha
|
||||
}
|
||||
|
||||
G4Pow* Pow=G4Pow::GetInstance();
|
||||
G4double mass = (A - Z)*rmn + Z*rmp + Z*rmel - 15.67*A
|
||||
+ 17.23*std::pow(A, 2./3.)
|
||||
+ 17.23*Pow->A23(A)
|
||||
+ 93.15*(A/2. - Z)*(A/2. - Z)/A
|
||||
+ 0.6984523*Z*Z/std::pow(A, 1./3.);
|
||||
+ 0.6984523*Z*Z/Pow->A13(A);
|
||||
G4int ipp = (ia - iz)%2;
|
||||
G4int izz = iz%2;
|
||||
if (ipp == izz) mass = mass + (ipp + izz -1)*12.*std::pow(A, -0.5);
|
||||
if (ipp == izz) mass = mass + (ipp + izz -1)*12.*Pow->powA(A, -0.5);
|
||||
|
||||
return mass;
|
||||
}
|
||||
|
||||
@@ -57,6 +57,8 @@
|
||||
//
|
||||
|
||||
#include <cmath>
|
||||
#include "G4Log.hh"
|
||||
#include "G4Pow.hh"
|
||||
#include "G4fissionEvent.hh"
|
||||
|
||||
G4double G4fissionEvent::G4SmpGEng() {
|
||||
@@ -78,35 +80,36 @@ G4double G4fissionEvent::G4SmpGEng() {
|
||||
/*
|
||||
Calculate the energy of photons emitted from fission
|
||||
*/
|
||||
G4Pow* Pow=G4Pow::GetInstance();
|
||||
r=fisslibrng();
|
||||
|
||||
if (r == 0.0) return 0.085;
|
||||
|
||||
if (r <= 0.0001) return 0.0855+0.01692*(r/0.0001)-0.02401*std::pow(r/0.0001,2.)+0.01274*std::pow(r/0.0001,3.);
|
||||
if (r <= 0.0001) return 0.0855+0.01692*(r/0.0001)-0.02401*Pow->powA(r/0.0001,2.)+0.01274*Pow->powA(r/0.0001,3.);
|
||||
|
||||
if (r > 0.0001 && r <= 0.01) return 0.09141 + 0.23846*((r-0.0001)/0.0099)
|
||||
- 1.75947*std::pow((r-.0001)/0.0099,2.)
|
||||
+ 10.98611*std::pow((r-0.0001)/0.0099,3.)
|
||||
- 43.19181*std::pow((r-.0001)/0.0099,4.)
|
||||
+105.70005*std::pow((r-.0001)/.0099,5.)
|
||||
-160.72894*std::pow((r-.0001)/.0099,6.)
|
||||
+147.43399*std::pow((r-.0001)/.0099,7.)
|
||||
- 74.60043*std::pow((r-.0001)/0.0099,8.)
|
||||
+ 15.97547*std::pow((r-.0001)/0.0099,9.);
|
||||
- 1.75947*Pow->powA((r-.0001)/0.0099,2.)
|
||||
+ 10.98611*Pow->powA((r-0.0001)/0.0099,3.)
|
||||
- 43.19181*Pow->powA((r-.0001)/0.0099,4.)
|
||||
+105.70005*Pow->powA((r-.0001)/.0099,5.)
|
||||
-160.72894*Pow->powA((r-.0001)/.0099,6.)
|
||||
+147.43399*Pow->powA((r-.0001)/.0099,7.)
|
||||
- 74.60043*Pow->powA((r-.0001)/0.0099,8.)
|
||||
+ 15.97547*Pow->powA((r-.0001)/0.0099,9.);
|
||||
|
||||
if (r > 0.01 && r <= 0.1537) return 0.14486 + 0.40914*((r-.01)/.1437)
|
||||
- 1.28150*std::pow((r-0.01)/0.1437,2.)
|
||||
+ 5.07377*std::pow((r-0.01)/0.1437,3.)
|
||||
-15.42031*std::pow((r-0.01)/0.1437,4.)
|
||||
+31.96346*std::pow((r-0.01)/0.1437,5.)
|
||||
-43.12605*std::pow((r-0.01)/0.1437,6.)
|
||||
+36.02908*std::pow((r-0.01)/0.1437,7.)
|
||||
-16.87185*std::pow((r-0.01)/0.1437,8.)
|
||||
+ 3.37941*std::pow((r-0.01)/0.1437,9.);
|
||||
- 1.28150*Pow->powA((r-0.01)/0.1437,2.)
|
||||
+ 5.07377*Pow->powA((r-0.01)/0.1437,3.)
|
||||
-15.42031*Pow->powA((r-0.01)/0.1437,4.)
|
||||
+31.96346*Pow->powA((r-0.01)/0.1437,5.)
|
||||
-43.12605*Pow->powA((r-0.01)/0.1437,6.)
|
||||
+36.02908*Pow->powA((r-0.01)/0.1437,7.)
|
||||
-16.87185*Pow->powA((r-0.01)/0.1437,8.)
|
||||
+ 3.37941*Pow->powA((r-0.01)/0.1437,9.);
|
||||
|
||||
if (r > 0.1537 && r <= 0.7114) return (-1./2.3)*std::log(0.71956*(0.1537-r)+0.50158);
|
||||
if (r > 0.1537 && r <= 0.7114) return (-1./2.3)*G4Log(0.71956*(0.1537-r)+0.50158);
|
||||
|
||||
if (r > 0.7114 && r <= 1.0) return (-1./1.1)*std::log(1.15292*(0.7114-r)+0.33287);
|
||||
if (r > 0.7114 && r <= 1.0) return (-1./1.1)*G4Log(1.15292*(0.7114-r)+0.33287);
|
||||
//
|
||||
// Fall through
|
||||
//
|
||||
|
||||
@@ -58,6 +58,7 @@
|
||||
|
||||
#include <cmath>
|
||||
#include "G4fissionEvent.hh"
|
||||
#include "G4Pow.hh"
|
||||
#include "G4PhysicalConstants.hh"
|
||||
|
||||
void G4fissionEvent::G4SmpIsoDir(G4double* cosdiru, G4double* cosdirv, G4double* cosdirw) {
|
||||
@@ -80,8 +81,9 @@ void G4fissionEvent::G4SmpIsoDir(G4double* cosdiru, G4double* cosdirv, G4double*
|
||||
Choose emission angle isotropically.
|
||||
Select a polar angle direction cosine.
|
||||
*/
|
||||
G4Pow* Pow=G4Pow::GetInstance();
|
||||
cospolang = 1.-2.*fisslibrng();
|
||||
sinpolang = std::sqrt(1.-std::pow(cospolang, 2.));
|
||||
sinpolang = std::sqrt(1.-Pow->powA(cospolang, 2.));
|
||||
/*
|
||||
Select an azimuthal angle uniformly on (0,2*pi)
|
||||
*/
|
||||
|
||||
@@ -57,6 +57,8 @@
|
||||
//
|
||||
|
||||
#include <cmath>
|
||||
#include "G4Log.hh"
|
||||
#include "G4Pow.hh"
|
||||
#include "G4fissionEvent.hh"
|
||||
|
||||
G4double G4fissionEvent::G4SmpNEngCf252(G4int option) {
|
||||
@@ -75,6 +77,8 @@ G4double G4fissionEvent::G4SmpNEngCf252(G4int option) {
|
||||
energy of neutron emitted by spontaneous fission
|
||||
*/
|
||||
|
||||
G4Pow* Pow=G4Pow::GetInstance();
|
||||
|
||||
G4double a,b;
|
||||
G4double gpar;
|
||||
G4double g2;
|
||||
@@ -89,118 +93,118 @@ G4double G4fissionEvent::G4SmpNEngCf252(G4int option) {
|
||||
if(option == 0) {
|
||||
if(r == 0) return 0.000001;
|
||||
if (r > 0.0 && r <= 0.0005)
|
||||
return 0.00003 + 0.04992*(r/0.0005) - 0.59473*std::pow(r/0.0005,2)
|
||||
+ 5.44877*std::pow(r/0.0005,3) - 29.38086*std::pow(r/0.0005,4)
|
||||
+ 97.14014*std::pow(r/0.0005,5) - 202.82112*std::pow(r/0.0005,6)
|
||||
+ 268.2301*std::pow(r/0.0005,7) - 217.75316*std::pow(r/0.0005,8)
|
||||
+ 98.96285*std::pow(r/0.0005,9) - 19.27077*std::pow(r/0.0005,10);
|
||||
return 0.00003 + 0.04992*(r/0.0005) - 0.59473*Pow->powN(r/0.0005,2)
|
||||
+ 5.44877*Pow->powN(r/0.0005,3) - 29.38086*Pow->powN(r/0.0005,4)
|
||||
+ 97.14014*Pow->powN(r/0.0005,5) - 202.82112*Pow->powN(r/0.0005,6)
|
||||
+ 268.2301*Pow->powN(r/0.0005,7) - 217.75316*Pow->powN(r/0.0005,8)
|
||||
+ 98.96285*Pow->powN(r/0.0005,9) - 19.27077*Pow->powN(r/0.0005,10);
|
||||
|
||||
if (r > 0.0005 && r <= 0.005)
|
||||
return 0.01118 + 0.06715*((r-.0005)/.0045)
|
||||
- 0.09236*std::pow((r-.0005)/.0045,2) + 0.26224*std::pow((r-.0005)/.0045,3)
|
||||
- 0.64784*std::pow((r-.0005)/.0045,4) + 1.16830*std::pow((r-.0005)/.0045,5)
|
||||
- 1.43858*std::pow((r-.0005)/.0045,6) + 1.13771*std::pow((r-.0005)/.0045,7)
|
||||
- 0.51839*std::pow((r-.0005)/.0045,8) + 0.10302*std::pow((r-.0005)/.0045,9);
|
||||
- 0.09236*Pow->powN((r-.0005)/.0045,2) + 0.26224*Pow->powN((r-.0005)/.0045,3)
|
||||
- 0.64784*Pow->powN((r-.0005)/.0045,4) + 1.16830*Pow->powN((r-.0005)/.0045,5)
|
||||
- 1.43858*Pow->powN((r-.0005)/.0045,6) + 1.13771*Pow->powN((r-.0005)/.0045,7)
|
||||
- 0.51839*Pow->powN((r-.0005)/.0045,8) + 0.10302*Pow->powN((r-.0005)/.0045,9);
|
||||
|
||||
if (r > 0.005 && r <= 0.05)
|
||||
return 0.05244+0.32101*((r-.005)/.045)
|
||||
- 0.52574*std::pow((r-.005)/.045,2) + 2.80540*std::pow((r-.005)/.045,3)
|
||||
- 14.88036*std::pow((r-.005)/.045,4) + 55.46869*std::pow((r-.005)/.045,5)
|
||||
-133.64517*std::pow((r-.005)/.045,6) + 202.88434*std::pow((r-.005)/.045,7)
|
||||
-186.86758*std::pow((r-.005)/.045,8) + 95.19530*std::pow((r-.005)/.045,9)
|
||||
- 20.55275*std::pow((r-.005)/.045,10);
|
||||
- 0.52574*Pow->powN((r-.005)/.045,2) + 2.80540*Pow->powN((r-.005)/.045,3)
|
||||
- 14.88036*Pow->powN((r-.005)/.045,4) + 55.46869*Pow->powN((r-.005)/.045,5)
|
||||
-133.64517*Pow->powN((r-.005)/.045,6) + 202.88434*Pow->powN((r-.005)/.045,7)
|
||||
-186.86758*Pow->powN((r-.005)/.045,8) + 95.19530*Pow->powN((r-.005)/.045,9)
|
||||
- 20.55275*Pow->powN((r-.005)/.045,10);
|
||||
|
||||
if(r > 0.05 && r <= 0.25) return 0.25585+0.75532*((r-.05)/.2)-0.73676*std::pow((r-.05)/.2,2)+3.65653*std::pow((r-.05)/.2,3)-13.80528*std::pow((r-.05)/.2,4)+33.35932*std::pow((r-.05)/.2,5)-50.0410*std::pow((r-.05)/.2,6)+45.13793*std::pow((r-.05)/.2,7)-22.4072*std::pow((r-.05)/.2,8)+4.70141*std::pow((r-.05)/.2,9);
|
||||
if(r > 0.05 && r <= 0.25) return 0.25585+0.75532*((r-.05)/.2)-0.73676*Pow->powN((r-.05)/.2,2)+3.65653*Pow->powN((r-.05)/.2,3)-13.80528*Pow->powN((r-.05)/.2,4)+33.35932*Pow->powN((r-.05)/.2,5)-50.0410*Pow->powN((r-.05)/.2,6)+45.13793*Pow->powN((r-.05)/.2,7)-22.4072*Pow->powN((r-.05)/.2,8)+4.70141*Pow->powN((r-.05)/.2,9);
|
||||
|
||||
if(r > 0.25 && r <= 0.50) return 0.87609+0.74687*((r-.25)/.25)+0.02849*std::pow((r-.25)/.25,2)+0.06145*std::pow((r-.25)/.25,3)-0.09589*std::pow((r-.25)/.25,4)+0.29798*std::pow((r-.25)/.25,5)-0.57707*std::pow((r-.25)/.25,6)+0.66181*std::pow((r-.25)/.25,7)-0.40720*std::pow((r-.25)/.25,8)+0.10370*std::pow((r-.25)/.25,9);
|
||||
if(r > 0.25 && r <= 0.50) return 0.87609+0.74687*((r-.25)/.25)+0.02849*Pow->powN((r-.25)/.25,2)+0.06145*Pow->powN((r-.25)/.25,3)-0.09589*Pow->powN((r-.25)/.25,4)+0.29798*Pow->powN((r-.25)/.25,5)-0.57707*Pow->powN((r-.25)/.25,6)+0.66181*Pow->powN((r-.25)/.25,7)-0.40720*Pow->powN((r-.25)/.25,8)+0.10370*Pow->powN((r-.25)/.25,9);
|
||||
|
||||
if(r > 0.5 && r <= 0.75) return 1.69622+0.93896*((r-.5)/.25)+0.16428*std::pow((r-.5)/.25,2)+0.21761*std::pow((r-.5)/.25,3)-0.96904*std::pow((r-.5)/.25,4)+3.34951*std::pow((r-.5)/.25,5)-6.35177*std::pow((r-.5)/.25,6)+6.90120*std::pow((r-.5)/.25,7)-3.98682*std::pow((r-.5)/.25,8)+0.95276*std::pow((r-.5)/.25,9);
|
||||
if(r > 0.5 && r <= 0.75) return 1.69622+0.93896*((r-.5)/.25)+0.16428*Pow->powN((r-.5)/.25,2)+0.21761*Pow->powN((r-.5)/.25,3)-0.96904*Pow->powN((r-.5)/.25,4)+3.34951*Pow->powN((r-.5)/.25,5)-6.35177*Pow->powN((r-.5)/.25,6)+6.90120*Pow->powN((r-.5)/.25,7)-3.98682*Pow->powN((r-.5)/.25,8)+0.95276*Pow->powN((r-.5)/.25,9);
|
||||
|
||||
if(r > 0.75 && r <= 0.95) return 2.91217+1.52474*((r-.75)/.2)-4.99340*std::pow((r-.75)/.2,2)+58.72977*std::pow((r-.75)/.2,3)-313.30984*std::pow((r-.75)/.2,4)+946.0791*std::pow((r-.75)/.2,5)-1679.85559*std::pow((r-.75)/.2,6)+1740.83984*std::pow((r-.75)/.2,7)-973.51886*std::pow((r-.75)/.2,8)+227.06831*std::pow((r-.75)/.2,9);
|
||||
if(r > 0.95 && r <= 0.975) return 5.50137-0.99765*((r-.95)/.025)+27.57678*std::pow((r-.95)/.025,2)-218.47931*std::pow((r-.95)/.025,3)+1024.0426*std::pow((r-.95)/.025,4)-3005.86182*std::pow((r-.95)/.025,5)+5684.52295*std::pow((r-.95)/.025,6)-6919.36182*std::pow((r-.95)/.025,7)+5235.71777*std::pow((r-.95)/.025,8)-2240.06934*std::pow((r-.95)/.025,9)+413.9299*std::pow((r-.95)/.025,10);
|
||||
if(r > 0.75 && r <= 0.95) return 2.91217+1.52474*((r-.75)/.2)-4.99340*Pow->powN((r-.75)/.2,2)+58.72977*Pow->powN((r-.75)/.2,3)-313.30984*Pow->powN((r-.75)/.2,4)+946.0791*Pow->powN((r-.75)/.2,5)-1679.85559*Pow->powN((r-.75)/.2,6)+1740.83984*Pow->powN((r-.75)/.2,7)-973.51886*Pow->powN((r-.75)/.2,8)+227.06831*Pow->powN((r-.75)/.2,9);
|
||||
if(r > 0.95 && r <= 0.975) return 5.50137-0.99765*((r-.95)/.025)+27.57678*Pow->powN((r-.95)/.025,2)-218.47931*Pow->powN((r-.95)/.025,3)+1024.0426*Pow->powN((r-.95)/.025,4)-3005.86182*Pow->powN((r-.95)/.025,5)+5684.52295*Pow->powN((r-.95)/.025,6)-6919.36182*Pow->powN((r-.95)/.025,7)+5235.71777*Pow->powN((r-.95)/.025,8)-2240.06934*Pow->powN((r-.95)/.025,9)+413.9299*Pow->powN((r-.95)/.025,10);
|
||||
|
||||
if(r > 0.975 && r <= 0.995) return 6.52172+1.21273*((r-.975)/.02)+0.69998*std::pow((r-.975)/.02,2)-1.78886*std::pow((r-.975)/.02,3)+11.57883*std::pow((r-.975)/.02,4)-39.41592*std::pow((r-.975)/.02,5)+88.32992*std::pow((r-.975)/.02,6)-127.68685*std::pow((r-.975)/.02,7)+115.97678*std::pow((r-.975)/.02,8)-60.09069*std::pow((r-.975)/.02,9)+13.66798*std::pow((r-.975)/.02,10);
|
||||
if(r > 0.995 && r <= 0.999) return 9.00502+1.31798*((r-.995)/.004)-1.17448*std::pow((r-.995)/.004,2)+20.15941*std::pow((r-.995)/.004,3)-114.27763*std::pow((r-.995)/.004,4)+370.04855*std::pow((r-.995)/.004,5)-701.888*std::pow((r-.995)/.004,6)+776.28204*std::pow((r-.995)/.004,7)-462.68823*std::pow((r-.995)/.004,8)+115.05296*std::pow((r-.995)/.004,9);
|
||||
if(r > 0.999 && r <= 0.9997) return 11.83792-1.8952*((r-.999)/.0007)+50.30901*std::pow((r-.999)/.0007,2)-239.56978*std::pow((r-.999)/.0007,3)+514.90747*std::pow((r-.999)/.0007,4)-508.73672*std::pow((r-.999)/.0007,5)+191.09637*std::pow((r-.999)/.0007,6);
|
||||
if(r > 0.975 && r <= 0.995) return 6.52172+1.21273*((r-.975)/.02)+0.69998*Pow->powN((r-.975)/.02,2)-1.78886*Pow->powN((r-.975)/.02,3)+11.57883*Pow->powN((r-.975)/.02,4)-39.41592*Pow->powN((r-.975)/.02,5)+88.32992*Pow->powN((r-.975)/.02,6)-127.68685*Pow->powN((r-.975)/.02,7)+115.97678*Pow->powN((r-.975)/.02,8)-60.09069*Pow->powN((r-.975)/.02,9)+13.66798*Pow->powN((r-.975)/.02,10);
|
||||
if(r > 0.995 && r <= 0.999) return 9.00502+1.31798*((r-.995)/.004)-1.17448*Pow->powN((r-.995)/.004,2)+20.15941*Pow->powN((r-.995)/.004,3)-114.27763*Pow->powN((r-.995)/.004,4)+370.04855*Pow->powN((r-.995)/.004,5)-701.888*Pow->powN((r-.995)/.004,6)+776.28204*Pow->powN((r-.995)/.004,7)-462.68823*Pow->powN((r-.995)/.004,8)+115.05296*Pow->powN((r-.995)/.004,9);
|
||||
if(r > 0.999 && r <= 0.9997) return 11.83792-1.8952*((r-.999)/.0007)+50.30901*Pow->powN((r-.999)/.0007,2)-239.56978*Pow->powN((r-.999)/.0007,3)+514.90747*Pow->powN((r-.999)/.0007,4)-508.73672*Pow->powN((r-.999)/.0007,5)+191.09637*Pow->powN((r-.999)/.0007,6);
|
||||
if(r > 0.9997) return 20.;
|
||||
}
|
||||
/*
|
||||
Madland-Nix Spectrum
|
||||
*/
|
||||
if(option == 1) {
|
||||
if(r <= 1.001065092e-03) return 1.946313876*std::pow(r,0.6667261950);
|
||||
else if(r > 1.001065092e-03 && r <= 1.001389105e-02) return 2.00504119*std::pow(r,0.6709990736);
|
||||
else if(r > 1.001389105e-02 && r <= 5.022359145e-02) return 2.107978578*std::pow(r,0.7077041191);
|
||||
else if(r > 5.022359145e-02 && r <= 1.000989427e-01) return 2.280517358*std::pow(r,0.7077041191);
|
||||
else if(r > 1.000989427e-01 && r <= 1.500872491e-01) return 2.444108408*std::pow(r,0.73764526215);
|
||||
else if(r > 1.500872491e-01 && r <= 2.002079974e-01) return 2.621855634*std::pow(r,0.7745779546);
|
||||
else if(r > 2.002079974e-01 && r <= 2.25221648e-01) return 2.753099265*std::pow(r,0.8044994010);
|
||||
else if(r > 2.25221648e-01 && r <= 2.501564538e-01) return 2.834010751*std::pow(r,0.8239187384);
|
||||
else if(r > 2.501564538e-01 && r <= 2.752546770e-01) return 2.911676280*std::pow(r,0.8434235719);
|
||||
else if(r > 2.752546770e-01 && r <= 3.000964724e-01) return 2.988430135*std::pow(r,0.8635883266);
|
||||
else if(r > 3.000964724e-01 && r <= 3.500470095e-01) return 3.099471293*std::pow(r,0.8942289512);
|
||||
else if(r > 3.500470095e-01 && r <= 4.001118970e-01) return 3.244686176*std::pow(r,0.9378302608);
|
||||
else if(r > 4.001118970e-01 && r <= 5.000461778e-01) return 3.543403932*std::pow(r,1.0411008510);
|
||||
else if(r > 5.000461778e-01 && r <= 5.501318506e-01) return 3.708358099*std::pow(r,1.1068317830);
|
||||
else if(r > 5.501318506e-01 && r <= 6.000655433e-01) return 3.889805304*std::pow(r,1.1868908770);
|
||||
else if(r > 6.000655433e-01 && r <= 6.500147305e-01) return 4.092497225*std::pow(r,1.2865658570);
|
||||
else if(r > 6.500147305e-01 && r <= 7.000271284e-01) return 4.322906068*std::pow(r,1.4140909190);
|
||||
else if(r > 7.000271284e-01 && r <= 7.501159110e-01) return 4.589909069*std::pow(r,1.5828217210);
|
||||
else if(r > 7.501159110e-01 && r <= 8.000662513e-01) return 4.906598744*std::pow(r,1.8162034790);
|
||||
else if(r > 8.000662513e-01 && r <= 8.500772033e-01) return 5.297053797*std::pow(r,2.1626825870);
|
||||
else if(r > 8.500772033e-01 && r <= 8.750123088e-01) return 5.650277904*std::pow(r,2.5517142900);
|
||||
else if(r > 8.750123088e-01 && r <= 9.000106866e-01) return 5.947741976*std::pow(r,2.9383159800);
|
||||
else if(r > 9.000106866e-01 && r <= 9.250286977e-01) return 6.317014169*std::pow(r,3.5155713570);
|
||||
else if(r > 9.250286977e-01 && r <= 9.350074655e-01) return 6.625757778*std::pow(r,4.1118364020);
|
||||
else if(r > 9.350074655e-01 && r <= 9.400070002e-01) return 6.784126941*std::pow(r,4.4594479870);
|
||||
else if(r > 9.400070002e-01 && r <= 9.500026229e-01) return 6.969180156*std::pow(r,4.9019105900);
|
||||
else if(r > 9.500026229e-01 && r <= 9.600065896e-01) return 7.254643542*std::pow(r,5.6894827520);
|
||||
else if(r > 9.600065896e-01 && r <= 9.700165577e-01) return 7.613500497*std::pow(r,6.8841593900);
|
||||
else if(r > 9.700165577e-01 && r <= 9.750157135e-01) return 7.944100103*std::pow(r,8.2544400860);
|
||||
else if(r > 9.750157135e-01 && r <= 9.800101585e-01) return 8.228439642*std::pow(r,9.6531190300);
|
||||
else if(r > 9.800101585e-01 && r <= 9.850018119e-01) return 8.586524083*std::pow(r,11.783756400);
|
||||
else if(r > 9.850018119e-01 && r <= 9.875072929e-01) return 8.917364901*std::pow(r,14.240137310);
|
||||
else if(r > 9.875072929e-01 && r <= 9.900006975e-01) return 9.202675761*std::pow(r,16.76089029);
|
||||
else if(r > 9.900006975e-01 && r <= 9.925048152e-01) return 9.562781386*std::pow(r,20.61962568);
|
||||
else if(r > 9.925048152e-01 && r <= 9.935030103e-01) return 9.867915664*std::pow(r,24.69147261);
|
||||
else if(r > 9.935030103e-01 && r <= 9.945000177e-01) return 10.08727342*std::pow(r,28.07701487);
|
||||
else if(r > 9.945000177e-01 && r <= 9.950025127e-01) return 10.27382614*std::pow(r,31.36001051);
|
||||
else if(r > 9.950025127e-01 && r <= 9.955029368e-01) return 10.41724243*std::pow(r,34.13127669);
|
||||
else if(r > 9.955029368e-01 && r <= 9.960005970e-01) return 10.57636221*std::pow(r,37.50088614);
|
||||
else if(r > 9.960005970e-01 && r <= 9.965016080e-01) return 10.75639015*std::pow(r,41.72354164);
|
||||
else if(r > 9.965016080e-01 && r <= 9.970001795e-01) return 10.96366661*std::pow(r,47.18729543);
|
||||
else if(r > 9.970001795e-01 && r <= 9.975004375e-01) return 11.20771170*std::pow(r,54.54899604);
|
||||
else if(r > 9.975004375e-01 && r <= 9.978504408e-01) return 11.45202216*std::pow(r,63.11906699);
|
||||
if(r <= 1.001065092e-03) return 1.946313876*Pow->powA(r,0.6667261950);
|
||||
else if(r > 1.001065092e-03 && r <= 1.001389105e-02) return 2.00504119*Pow->powA(r,0.6709990736);
|
||||
else if(r > 1.001389105e-02 && r <= 5.022359145e-02) return 2.107978578*Pow->powA(r,0.7077041191);
|
||||
else if(r > 5.022359145e-02 && r <= 1.000989427e-01) return 2.280517358*Pow->powA(r,0.7077041191);
|
||||
else if(r > 1.000989427e-01 && r <= 1.500872491e-01) return 2.444108408*Pow->powA(r,0.73764526215);
|
||||
else if(r > 1.500872491e-01 && r <= 2.002079974e-01) return 2.621855634*Pow->powA(r,0.7745779546);
|
||||
else if(r > 2.002079974e-01 && r <= 2.25221648e-01) return 2.753099265*Pow->powA(r,0.8044994010);
|
||||
else if(r > 2.25221648e-01 && r <= 2.501564538e-01) return 2.834010751*Pow->powA(r,0.8239187384);
|
||||
else if(r > 2.501564538e-01 && r <= 2.752546770e-01) return 2.911676280*Pow->powA(r,0.8434235719);
|
||||
else if(r > 2.752546770e-01 && r <= 3.000964724e-01) return 2.988430135*Pow->powA(r,0.8635883266);
|
||||
else if(r > 3.000964724e-01 && r <= 3.500470095e-01) return 3.099471293*Pow->powA(r,0.8942289512);
|
||||
else if(r > 3.500470095e-01 && r <= 4.001118970e-01) return 3.244686176*Pow->powA(r,0.9378302608);
|
||||
else if(r > 4.001118970e-01 && r <= 5.000461778e-01) return 3.543403932*Pow->powA(r,1.0411008510);
|
||||
else if(r > 5.000461778e-01 && r <= 5.501318506e-01) return 3.708358099*Pow->powA(r,1.1068317830);
|
||||
else if(r > 5.501318506e-01 && r <= 6.000655433e-01) return 3.889805304*Pow->powA(r,1.1868908770);
|
||||
else if(r > 6.000655433e-01 && r <= 6.500147305e-01) return 4.092497225*Pow->powA(r,1.2865658570);
|
||||
else if(r > 6.500147305e-01 && r <= 7.000271284e-01) return 4.322906068*Pow->powA(r,1.4140909190);
|
||||
else if(r > 7.000271284e-01 && r <= 7.501159110e-01) return 4.589909069*Pow->powA(r,1.5828217210);
|
||||
else if(r > 7.501159110e-01 && r <= 8.000662513e-01) return 4.906598744*Pow->powA(r,1.8162034790);
|
||||
else if(r > 8.000662513e-01 && r <= 8.500772033e-01) return 5.297053797*Pow->powA(r,2.1626825870);
|
||||
else if(r > 8.500772033e-01 && r <= 8.750123088e-01) return 5.650277904*Pow->powA(r,2.5517142900);
|
||||
else if(r > 8.750123088e-01 && r <= 9.000106866e-01) return 5.947741976*Pow->powA(r,2.9383159800);
|
||||
else if(r > 9.000106866e-01 && r <= 9.250286977e-01) return 6.317014169*Pow->powA(r,3.5155713570);
|
||||
else if(r > 9.250286977e-01 && r <= 9.350074655e-01) return 6.625757778*Pow->powA(r,4.1118364020);
|
||||
else if(r > 9.350074655e-01 && r <= 9.400070002e-01) return 6.784126941*Pow->powA(r,4.4594479870);
|
||||
else if(r > 9.400070002e-01 && r <= 9.500026229e-01) return 6.969180156*Pow->powA(r,4.9019105900);
|
||||
else if(r > 9.500026229e-01 && r <= 9.600065896e-01) return 7.254643542*Pow->powA(r,5.6894827520);
|
||||
else if(r > 9.600065896e-01 && r <= 9.700165577e-01) return 7.613500497*Pow->powA(r,6.8841593900);
|
||||
else if(r > 9.700165577e-01 && r <= 9.750157135e-01) return 7.944100103*Pow->powA(r,8.2544400860);
|
||||
else if(r > 9.750157135e-01 && r <= 9.800101585e-01) return 8.228439642*Pow->powA(r,9.6531190300);
|
||||
else if(r > 9.800101585e-01 && r <= 9.850018119e-01) return 8.586524083*Pow->powA(r,11.783756400);
|
||||
else if(r > 9.850018119e-01 && r <= 9.875072929e-01) return 8.917364901*Pow->powA(r,14.240137310);
|
||||
else if(r > 9.875072929e-01 && r <= 9.900006975e-01) return 9.202675761*Pow->powA(r,16.76089029);
|
||||
else if(r > 9.900006975e-01 && r <= 9.925048152e-01) return 9.562781386*Pow->powA(r,20.61962568);
|
||||
else if(r > 9.925048152e-01 && r <= 9.935030103e-01) return 9.867915664*Pow->powA(r,24.69147261);
|
||||
else if(r > 9.935030103e-01 && r <= 9.945000177e-01) return 10.08727342*Pow->powA(r,28.07701487);
|
||||
else if(r > 9.945000177e-01 && r <= 9.950025127e-01) return 10.27382614*Pow->powA(r,31.36001051);
|
||||
else if(r > 9.950025127e-01 && r <= 9.955029368e-01) return 10.41724243*Pow->powA(r,34.13127669);
|
||||
else if(r > 9.955029368e-01 && r <= 9.960005970e-01) return 10.57636221*Pow->powA(r,37.50088614);
|
||||
else if(r > 9.960005970e-01 && r <= 9.965016080e-01) return 10.75639015*Pow->powA(r,41.72354164);
|
||||
else if(r > 9.965016080e-01 && r <= 9.970001795e-01) return 10.96366661*Pow->powA(r,47.18729543);
|
||||
else if(r > 9.970001795e-01 && r <= 9.975004375e-01) return 11.20771170*Pow->powA(r,54.54899604);
|
||||
else if(r > 9.975004375e-01 && r <= 9.978504408e-01) return 11.45202216*Pow->powA(r,63.11906699);
|
||||
else if(r > 9.978504408e-01 && r <= 9.989524675e-01)
|
||||
return 2.72756636666e5-5.47258138432e5*r+2.74514044871e5*std::pow(r,2);
|
||||
return 2.72756636666e5-5.47258138432e5*r+2.74514044871e5*Pow->powN(r,2);
|
||||
else if(r > 9.989524675e-01 && r <= 9.994929298e-01)
|
||||
return 1.14946879661e6-2.30252188973e6*r+1.15306661788e6*std::pow(r,2);
|
||||
return 1.14946879661e6-2.30252188973e6*r+1.15306661788e6*Pow->powN(r,2);
|
||||
else if(r > 9.994929298e-01 && r <= 9.997558922e-01)
|
||||
return 4.90621526236e6-9.81982943883e6*r+4.91362868673e6*std::pow(r,2);
|
||||
return 4.90621526236e6-9.81982943883e6*r+4.91362868673e6*Pow->powN(r,2);
|
||||
else if(r > 9.997558922e-01 && r <= 9.998830120e-01)
|
||||
return 2.11365688795184e7-4.22884732250404e7*r+2.11519198434219e7*std::pow(r,2);
|
||||
return 2.11365688795184e7-4.22884732250404e7*r+2.11519198434219e7*Pow->powN(r,2);
|
||||
else if(r > 9.998830120e-01 && r <= 9.999441620e-01)
|
||||
return 9.18987945911229e7-1.83829506875257e8*r+9.19307287711182e7*std::pow(r,2);
|
||||
return 9.18987945911229e7-1.83829506875257e8*r+9.19307287711182e7*Pow->powN(r,2);
|
||||
else if(r > 9.999441620e-01 && r <= 9.999734440e-01)
|
||||
return 4.02781481130433e8-8.05629656768407e8*r+4.02848193115356e8*std::pow(r,2);
|
||||
return 4.02781481130433e8-8.05629656768407e8*r+4.02848193115356e8*Pow->powN(r,2);
|
||||
else if(r > 9.999734440e-01 && r <= 9.999874120e-01)
|
||||
return 1.77804635135775e9-3.55623257045546e9*r+1.77818623756641e9*std::pow(r,2);
|
||||
return 1.77804635135775e9-3.55623257045546e9*r+1.77818623756641e9*Pow->powN(r,2);
|
||||
else if(r > 9.999874120e-01 && r <= 9.999940510e-01)
|
||||
return 7.90099032702915e9-1.58022749659903e10*r+7.90128465842187e9*std::pow(r,2);
|
||||
return 7.90099032702915e9-1.58022749659903e10*r+7.90128465842187e9*Pow->powN(r,2);
|
||||
else if(r > 9.999940510e-01 && r <= 9.999971960e-01)
|
||||
return 3.53223507413091e10-7.06453227162775e10*r+3.53229719954219e10*std::pow(r,2);
|
||||
return 3.53223507413091e10-7.06453227162775e10*r+3.53229719954219e10*Pow->powN(r,2);
|
||||
else if(r > 9.999971960e-01 && r <= 9.999986820e-01)
|
||||
return 1.58786475903785e11-3.17574266841213e11*r+1.58787790958875e11*std::pow(r,2);
|
||||
return 1.58786475903785e11-3.17574266841213e11*r+1.58787790958875e11*Pow->powN(r,2);
|
||||
else if(r > 9.999986820e-01 && r <= 9.999993820e-01)
|
||||
return 7.17433904438156e11-1.43487059972047e12*r+7.17436695304750e11*std::pow(r,2);
|
||||
return 7.17433904438156e11-1.43487059972047e12*r+7.17436695304750e11*Pow->powN(r,2);
|
||||
else if(r > 9.999993820e-01 && r <= 9.999997110e-01)
|
||||
return 3.257374123945330e12-6.514754184993900e12*r+3.257380061072000e12*std::pow(r,2);
|
||||
return 3.257374123945330e12-6.514754184993900e12*r+3.257380061072000e12*Pow->powN(r,2);
|
||||
else if(r > 9.999997110e-01 && r <= 9.999998650e-01)
|
||||
return 1.48641255466171e13-2.97282637539286e13*r+1.48641382073360e13*std::pow(r,2);
|
||||
return 1.48641255466171e13-2.97282637539286e13*r+1.48641382073360e13*Pow->powN(r,2);
|
||||
else if(r > 9.999998650e-01 && r <= 9.999999370e-01)
|
||||
return 6.82056055248876e13-1.36411238119518e14*r+6.82056325946560e13*std::pow(r,2);
|
||||
return 6.82056055248876e13-1.36411238119518e14*r+6.82056325946560e13*Pow->powN(r,2);
|
||||
else if(r > 9.999999370e-01 && r <= 1.000000000e00)
|
||||
return 3.14919363013517e14-6.29838784079090e14*r+3.14919421065600e14*std::pow(r,2);
|
||||
return 3.14919363013517e14-6.29838784079090e14*r+3.14919421065600e14*Pow->powN(r,2);
|
||||
}
|
||||
/*
|
||||
Frohner Watt Spectrum
|
||||
@@ -209,11 +213,21 @@ G4double G4fissionEvent::G4SmpNEngCf252(G4int option) {
|
||||
a=1.175;
|
||||
b=1.040;
|
||||
|
||||
G4int icounter=0;
|
||||
G4int icounter_max=1024;
|
||||
do {
|
||||
gpar = std::sqrt(std::pow(1+0.125*a*b,2.)-1)+(1+0.125*a*b);
|
||||
g2=-std::log(fisslibrng());
|
||||
gpar = std::sqrt(Pow->powA(1+0.125*a*b,2.)-1)+(1+0.125*a*b);
|
||||
g2=-G4Log(fisslibrng());
|
||||
ferg=a*gpar*g2;
|
||||
} while (std::pow((1-gpar)*(1+g2)-std::log(fisslibrng()),2.) > b*ferg);
|
||||
|
||||
icounter++;
|
||||
if ( icounter > icounter_max ) {
|
||||
G4cout << "Loop-counter exceeded the threshold value at " << __LINE__ << "th line of " << __FILE__ << "." << G4endl;
|
||||
break;
|
||||
}
|
||||
|
||||
} while (Pow->powA((1-gpar)*(1+g2)-G4Log(fisslibrng()),2.) > b*ferg);
|
||||
// Loop checking, 11.03.2015, T. Koi
|
||||
return ferg;
|
||||
}
|
||||
|
||||
|
||||
@@ -57,6 +57,7 @@
|
||||
//
|
||||
|
||||
#include <cmath>
|
||||
#include "G4Pow.hh"
|
||||
#include "G4fissionEvent.hh"
|
||||
|
||||
G4int G4fissionEvent::G4SmpNuDistDataPu239(G4double erg) {
|
||||
@@ -91,76 +92,77 @@ G4int G4fissionEvent::G4SmpNuDistDataPu239(G4double erg) {
|
||||
/*
|
||||
Pu-239 nu distribution
|
||||
*/
|
||||
G4Pow* Pow=G4Pow::GetInstance();
|
||||
if (eng <= 5.0) pnu[0] = 0.0108826e0 - 0.00207694e0*eng
|
||||
- 6.5e-4*std::pow(eng,2) + 4.023e-4*std::pow(eng,3)
|
||||
- 7.93e-5*std::pow(eng,4) + 5.53666667e-6*std::pow(eng,5);
|
||||
- 6.5e-4*Pow->powN(eng,2) + 4.023e-4*Pow->powN(eng,3)
|
||||
- 7.93e-5*Pow->powN(eng,4) + 5.53666667e-6*Pow->powN(eng,5);
|
||||
if (eng > 5 && eng <= 10) pnu[0] = 0.078606e0 - 5.17531e-2*eng
|
||||
+ 1.42034e-2*std::pow(eng,2) - 1.96292e-3*std::pow(eng,3)
|
||||
+ 1.34512e-4*std::pow(eng,4) - 3.63416e-6*std::pow(eng,5);
|
||||
+ 1.42034e-2*Pow->powN(eng,2) - 1.96292e-3*Pow->powN(eng,3)
|
||||
+ 1.34512e-4*Pow->powN(eng,4) - 3.63416e-6*Pow->powN(eng,5);
|
||||
if (r <= pnu[0]) return 0;
|
||||
|
||||
|
||||
if (eng <= 5.0) pnu[1] = 0.0994916e0 - 0.01979542e0*eng
|
||||
- 0.00236583e0*std::pow(eng,2) + 0.0020581e0*std::pow(eng,3)
|
||||
- 4.14016667e-4*std::pow(eng,4) + 2.85666667e-5*std::pow(eng,5);
|
||||
- 0.00236583e0*Pow->powN(eng,2) + 0.0020581e0*Pow->powN(eng,3)
|
||||
- 4.14016667e-4*Pow->powN(eng,4) + 2.85666667e-5*Pow->powN(eng,5);
|
||||
if (eng > 5 && eng <= 10) pnu[1] = 0.10052e0 - 2.61361e-2*eng
|
||||
+ 3.78355e-3*std::pow(eng,2) - 3.70667e-4*std::pow(eng,3)
|
||||
+ 1.95458e-5*std::pow(eng,4) - 3.87499e-7*std::pow(eng,5);
|
||||
+ 3.78355e-3*Pow->powN(eng,2) - 3.70667e-4*Pow->powN(eng,3)
|
||||
+ 1.95458e-5*Pow->powN(eng,4) - 3.87499e-7*Pow->powN(eng,5);
|
||||
cpnu=pnu[0]+pnu[1];
|
||||
if (r <= cpnu) return 1;
|
||||
|
||||
|
||||
if (eng <= 5.0) pnu[2] = 0.2748898e0 - 0.01565248e0*eng
|
||||
- 0.00749681e0*std::pow(eng,2) + 0.00217121e0*std::pow(eng,3)
|
||||
- 3.13041667e-4*std::pow(eng,4) + 1.88183333e-5*std::pow(eng,5);
|
||||
- 0.00749681e0*Pow->powN(eng,2) + 0.00217121e0*Pow->powN(eng,3)
|
||||
- 3.13041667e-4*Pow->powN(eng,4) + 1.88183333e-5*Pow->powN(eng,5);
|
||||
if (eng > 5 && eng <= 10) pnu[2] = 0.282487e0 - 0.0261342e0*eng
|
||||
- 1.16895e-3*std::pow(eng,2) + 1.9888e-4*std::pow(eng,3)
|
||||
- 6.41257e-6*std::pow(eng,4) + 1.02502e-7*std::pow(eng,5);
|
||||
- 1.16895e-3*Pow->powN(eng,2) + 1.9888e-4*Pow->powN(eng,3)
|
||||
- 6.41257e-6*Pow->powN(eng,4) + 1.02502e-7*Pow->powN(eng,5);
|
||||
cpnu=cpnu+pnu[2];
|
||||
if (r <= cpnu) return 2;
|
||||
|
||||
if (eng <= 5.0) pnu[3] = 0.3269196e0 + 0.00428312e0*eng
|
||||
- 0.00189322e0*std::pow(eng,2) - 4.31925001e-4*std::pow(eng,3)
|
||||
+ 1.18466667e-4*std::pow(eng,4) - 9.04166668e-6*std::pow(eng,5);
|
||||
- 0.00189322e0*Pow->powN(eng,2) - 4.31925001e-4*Pow->powN(eng,3)
|
||||
+ 1.18466667e-4*Pow->powN(eng,4) - 9.04166668e-6*Pow->powN(eng,5);
|
||||
if (eng > 5 && eng <= 10) pnu[3] = 0.329058e0 + 4.023e-3*eng
|
||||
- 3.06402e-3*std::pow(eng,2) + 2.2628e-4*std::pow(eng,3)
|
||||
- 1.50875e-5*std::pow(eng,4) + 4.39168e-7*std::pow(eng,5);
|
||||
- 3.06402e-3*Pow->powN(eng,2) + 2.2628e-4*Pow->powN(eng,3)
|
||||
- 1.50875e-5*Pow->powN(eng,4) + 4.39168e-7*Pow->powN(eng,5);
|
||||
cpnu=cpnu+pnu[3];
|
||||
if (r <= cpnu) return 3;
|
||||
|
||||
if (eng <= 5.0) pnu[4] = 0.2046061e0 + 0.02633899e0*eng
|
||||
+ 0.0041514e0*std::pow(eng,2) - 0.00275542e0*std::pow(eng,3)
|
||||
+ 5.0325e-4*std::pow(eng,4) - 3.32158333e-5*std::pow(eng,5);
|
||||
+ 0.0041514e0*Pow->powN(eng,2) - 0.00275542e0*Pow->powN(eng,3)
|
||||
+ 5.0325e-4*Pow->powN(eng,4) - 3.32158333e-5*Pow->powN(eng,5);
|
||||
if (eng > 5 && eng <= 10) pnu[4] = 0.18992e0 + 4.55188e-2*eng
|
||||
- 7.06316e-3*std::pow(eng,2) + 7.29916e-4*std::pow(eng,3)
|
||||
- 4.71791e-5*std::pow(eng,4) + 1.185e-6*std::pow(eng,5);
|
||||
- 7.06316e-3*Pow->powN(eng,2) + 7.29916e-4*Pow->powN(eng,3)
|
||||
- 4.71791e-5*Pow->powN(eng,4) + 1.185e-6*Pow->powN(eng,5);
|
||||
cpnu=cpnu+pnu[4];
|
||||
if (r <= cpnu) return 4;
|
||||
|
||||
if (eng <= 5.0) pnu[5] = 0.0726834e0 + 0.00116043e0*eng
|
||||
+ 0.007572e0*std::pow(eng,2) - 0.00161972e0*std::pow(eng,3)
|
||||
+ 2.3545e-4*std::pow(eng,4) - 1.546e-5*std::pow(eng,5);
|
||||
+ 0.007572e0*Pow->powN(eng,2) - 0.00161972e0*Pow->powN(eng,3)
|
||||
+ 2.3545e-4*Pow->powN(eng,4) - 1.546e-5*Pow->powN(eng,5);
|
||||
if (eng > 5 && eng <= 10) pnu[5] = 0.0779212e0 - 1.35849e-3*eng
|
||||
+ 6.68583e-3*std::pow(eng,2) - 7.98649e-4*std::pow(eng,3)
|
||||
+ 4.88625e-5*std::pow(eng,4) - 1.54167e-6*std::pow(eng,5);
|
||||
+ 6.68583e-3*Pow->powN(eng,2) - 7.98649e-4*Pow->powN(eng,3)
|
||||
+ 4.88625e-5*Pow->powN(eng,4) - 1.54167e-6*Pow->powN(eng,5);
|
||||
cpnu=cpnu+pnu[5];
|
||||
if (r <= cpnu) return 5;
|
||||
|
||||
if (eng <= 5.0) pnu[6] = 0.0097282e0 + 0.00494589e0*eng
|
||||
+ 0.00115294e0*std::pow(eng,2) - 3.25191667e-4*std::pow(eng,3)
|
||||
+ 6.00083333e-5*std::pow(eng,4) - 3.745e-6*std::pow(eng,5);
|
||||
+ 0.00115294e0*Pow->powN(eng,2) - 3.25191667e-4*Pow->powN(eng,3)
|
||||
+ 6.00083333e-5*Pow->powN(eng,4) - 3.745e-6*Pow->powN(eng,5);
|
||||
if (eng > 5 && eng <= 10) pnu[6] = 7.85432e-3 + 7.33182e-3*eng
|
||||
- 2.03705e-4*std::pow(eng,2) + 8.73787e-5*std::pow(eng,3)
|
||||
- 4.24164e-6*std::pow(eng,4) + 2.37499e-7*std::pow(eng,5);
|
||||
- 2.03705e-4*Pow->powN(eng,2) + 8.73787e-5*Pow->powN(eng,3)
|
||||
- 4.24164e-6*Pow->powN(eng,4) + 2.37499e-7*Pow->powN(eng,5);
|
||||
cpnu=cpnu+pnu[6];
|
||||
if (r <= cpnu) return 6;
|
||||
|
||||
if (eng <= 5.0) pnu[7] = 6.301e-4 + 1.10666667e-4*eng
|
||||
+ 4.28016667e-4*std::pow(eng,2) + 1.12041667e-5*std::pow(eng,3)
|
||||
- 4.31666667e-6*std::pow(eng,4) + 3.29166667e-7*std::pow(eng,5);
|
||||
+ 4.28016667e-4*Pow->powN(eng,2) + 1.12041667e-5*Pow->powN(eng,3)
|
||||
- 4.31666667e-6*Pow->powN(eng,4) + 3.29166667e-7*Pow->powN(eng,5);
|
||||
if (eng > 5 && eng <= 10) pnu[7] = 1.5323e-3 - 7.91857e-4*eng
|
||||
+ 8.01017e-4*std::pow(eng,2) - 6.82833e-5*std::pow(eng,3)
|
||||
+ 4.38333e-6*std::pow(eng,4) - 6.0e-8*std::pow(eng,5);
|
||||
+ 8.01017e-4*Pow->powN(eng,2) - 6.82833e-5*Pow->powN(eng,3)
|
||||
+ 4.38333e-6*Pow->powN(eng,4) - 6.0e-8*Pow->powN(eng,5);
|
||||
cpnu=cpnu+pnu[7];
|
||||
if (r <= cpnu) return 7;
|
||||
else return 8;
|
||||
|
||||
@@ -57,6 +57,7 @@
|
||||
//
|
||||
|
||||
#include <cmath>
|
||||
#include "G4Pow.hh"
|
||||
#include "G4fissionEvent.hh"
|
||||
|
||||
G4int G4fissionEvent::G4SmpNuDistDataPu239_241(G4double nubar) {
|
||||
@@ -88,15 +89,16 @@ G4int G4fissionEvent::G4SmpNuDistDataPu239_241(G4double nubar) {
|
||||
/*
|
||||
Use Zucker and Holden Data
|
||||
*/
|
||||
pnu[0]=-2.412937e-3*std::pow(nubar,3)+3.210687e-2*std::pow(nubar,2)-1.434037e-1*nubar+2.150733e-1;
|
||||
pnu[1]=-2.650615e-2*std::pow(nubar,3)+3.290389e-1*std::pow(nubar,2)-1.389007*nubar+2.002327;
|
||||
pnu[2]=3.232028e-2*std::pow(nubar,3)-3.176093e-1*std::pow(nubar,2)+8.605098e-1*nubar-3.411191e-1;
|
||||
pnu[3]=1.623289e-2*std::pow(nubar,3)-2.414705e-1*std::pow(nubar,2)+1.007282*nubar-9.583769e-1;
|
||||
pnu[4]=1.932275e-2*std::pow(nubar,3)-2.923666e-1*std::pow(nubar,2)+1.421383*nubar-1.924025;
|
||||
pnu[5]=-6.185679e-2*std::pow(nubar,3)+6.82888e-1*std::pow(nubar,2)-2.347653*nubar+2.647049;
|
||||
pnu[6]=1.79773e-2*std::pow(nubar,3)-1.60516e-1*std::pow(nubar,2)+5.228077e-1*nubar-5.939556e-1;
|
||||
pnu[7]=3.530038e-3*std::pow(nubar,4)-4.925425e-2*std::pow(nubar,3)+2.726784e-1*std::pow(nubar,2)-6.81281e-1*nubar+6.347577e-1;
|
||||
pnu[8]=2.837523e-3*std::pow(nubar,3)-2.678644e-2*std::pow(nubar,2)+8.545638e-2*nubar-9.156078e-2;
|
||||
G4Pow* Pow=G4Pow::GetInstance();
|
||||
pnu[0]=-2.412937e-3*Pow->powN(nubar,3)+3.210687e-2*Pow->powN(nubar,2)-1.434037e-1*nubar+2.150733e-1;
|
||||
pnu[1]=-2.650615e-2*Pow->powN(nubar,3)+3.290389e-1*Pow->powN(nubar,2)-1.389007*nubar+2.002327;
|
||||
pnu[2]=3.232028e-2*Pow->powN(nubar,3)-3.176093e-1*Pow->powN(nubar,2)+8.605098e-1*nubar-3.411191e-1;
|
||||
pnu[3]=1.623289e-2*Pow->powN(nubar,3)-2.414705e-1*Pow->powN(nubar,2)+1.007282*nubar-9.583769e-1;
|
||||
pnu[4]=1.932275e-2*Pow->powN(nubar,3)-2.923666e-1*Pow->powN(nubar,2)+1.421383*nubar-1.924025;
|
||||
pnu[5]=-6.185679e-2*Pow->powN(nubar,3)+6.82888e-1*Pow->powN(nubar,2)-2.347653*nubar+2.647049;
|
||||
pnu[6]=1.79773e-2*Pow->powN(nubar,3)-1.60516e-1*Pow->powN(nubar,2)+5.228077e-1*nubar-5.939556e-1;
|
||||
pnu[7]=3.530038e-3*Pow->powN(nubar,4)-4.925425e-2*Pow->powN(nubar,3)+2.726784e-1*Pow->powN(nubar,2)-6.81281e-1*nubar+6.347577e-1;
|
||||
pnu[8]=2.837523e-3*Pow->powN(nubar,3)-2.678644e-2*Pow->powN(nubar,2)+8.545638e-2*nubar-9.156078e-2;
|
||||
|
||||
sum=pnu[0]+pnu[1]+pnu[2]+pnu[3]+pnu[4]+pnu[5]+pnu[6]+pnu[7]+pnu[8];
|
||||
|
||||
|
||||
@@ -117,6 +117,7 @@ G4int G4fissionEvent::G4SmpNuDistDataPu239_241_MC(G4double nubar) {
|
||||
*/
|
||||
engind = 1;
|
||||
while (nubar > Pu239nubar[engind]){ engind++;}
|
||||
// Loop checking, 11.03.2015, T. Koi
|
||||
fraction = (nubar-Pu239nubar[engind-1])/(Pu239nubar[engind]-Pu239nubar[engind-1]);
|
||||
if(fisslibrng() > fraction) engind--;
|
||||
|
||||
@@ -124,6 +125,7 @@ G4int G4fissionEvent::G4SmpNuDistDataPu239_241_MC(G4double nubar) {
|
||||
nu = 0;
|
||||
cum = Pu239nu[engind][0];
|
||||
while (r > cum && nu < 8){
|
||||
// Loop checking, 11.03.2015, T. Koi
|
||||
nu++;
|
||||
cum += Pu239nu[engind][nu];
|
||||
}
|
||||
|
||||
@@ -57,6 +57,7 @@
|
||||
//
|
||||
|
||||
#include <cmath>
|
||||
#include "G4Pow.hh"
|
||||
#include "G4fissionEvent.hh"
|
||||
|
||||
G4int G4fissionEvent::G4SmpNuDistDataU232_234_236_238(G4double nubar) {
|
||||
@@ -88,15 +89,16 @@ G4int G4fissionEvent::G4SmpNuDistDataU232_234_236_238(G4double nubar) {
|
||||
/*
|
||||
Use Zucker and Holden Data
|
||||
*/
|
||||
pnu[0]=-7.705432e-3*std::pow(nubar,3)+8.904671e-2*std::pow(nubar,2)-3.488123e-1*nubar+4.627291e-1;
|
||||
pnu[1]=-2.879938e-2*std::pow(nubar,3)+3.629189e-1*std::pow(nubar,2)-1.545284*nubar+2.229503;
|
||||
pnu[2]=6.543684e-2*std::pow(nubar,3)-6.673117e-1*std::pow(nubar,2)+2.087358*nubar-1.771396;
|
||||
pnu[3]=1.412971e-2*std::pow(nubar,3)-2.309842e-1*std::pow(nubar,2)+1.022451*nubar-1.032235;
|
||||
pnu[4]=-5.163167e-2*std::pow(nubar,3)+4.457516e-1*std::pow(nubar,2)-1.114981*nubar+9.484241e-1;
|
||||
pnu[5]=8.758841e-4*std::pow(nubar,3)+3.707461e-2*std::pow(nubar,2)-1.565149e-1*nubar+1.851039e-1;
|
||||
pnu[6]=-3.871089e-5*std::pow(nubar,3)+1.936524e-2*std::pow(nubar,2)-8.091057e-2*nubar+9.019871e-2;
|
||||
pnu[7]=3.945995e-3*std::pow(nubar,3)-2.697509e-2*std::pow(nubar,2)+6.237296e-2*nubar-4.820745e-2;
|
||||
pnu[8]=1.708054e-3*std::pow(nubar,4)-1.706039e-2*std::pow(nubar,3)+6.550213e-2*std::pow(nubar,2)-1.135e-1*nubar+7.443828e-2;
|
||||
G4Pow* Pow=G4Pow::GetInstance();
|
||||
pnu[0]=-7.705432e-3*Pow->powN(nubar,3)+8.904671e-2*Pow->powN(nubar,2)-3.488123e-1*nubar+4.627291e-1;
|
||||
pnu[1]=-2.879938e-2*Pow->powN(nubar,3)+3.629189e-1*Pow->powN(nubar,2)-1.545284*nubar+2.229503;
|
||||
pnu[2]=6.543684e-2*Pow->powN(nubar,3)-6.673117e-1*Pow->powN(nubar,2)+2.087358*nubar-1.771396;
|
||||
pnu[3]=1.412971e-2*Pow->powN(nubar,3)-2.309842e-1*Pow->powN(nubar,2)+1.022451*nubar-1.032235;
|
||||
pnu[4]=-5.163167e-2*Pow->powN(nubar,3)+4.457516e-1*Pow->powN(nubar,2)-1.114981*nubar+9.484241e-1;
|
||||
pnu[5]=8.758841e-4*Pow->powN(nubar,3)+3.707461e-2*Pow->powN(nubar,2)-1.565149e-1*nubar+1.851039e-1;
|
||||
pnu[6]=-3.871089e-5*Pow->powN(nubar,3)+1.936524e-2*Pow->powN(nubar,2)-8.091057e-2*nubar+9.019871e-2;
|
||||
pnu[7]=3.945995e-3*Pow->powN(nubar,3)-2.697509e-2*Pow->powN(nubar,2)+6.237296e-2*nubar-4.820745e-2;
|
||||
pnu[8]=1.708054e-3*Pow->powN(nubar,4)-1.706039e-2*Pow->powN(nubar,3)+6.550213e-2*Pow->powN(nubar,2)-1.135e-1*nubar+7.443828e-2;
|
||||
|
||||
sum=pnu[0]+pnu[1]+pnu[2]+pnu[3]+pnu[4]+pnu[5]+pnu[6]+pnu[7]+pnu[8];
|
||||
|
||||
|
||||
@@ -117,6 +117,7 @@ G4int G4fissionEvent::G4SmpNuDistDataU232_234_236_238_MC(G4double nubar) {
|
||||
*/
|
||||
engind = 1;
|
||||
while (nubar > U238nubar[engind]){ engind++;}
|
||||
// Loop checking, 11.03.2015, T. Koi
|
||||
fraction = (nubar-U238nubar[engind-1])/(U238nubar[engind]-U238nubar[engind-1]);
|
||||
if(fisslibrng() > fraction) engind--;
|
||||
|
||||
@@ -124,6 +125,7 @@ G4int G4fissionEvent::G4SmpNuDistDataU232_234_236_238_MC(G4double nubar) {
|
||||
nu = 0;
|
||||
cum = U238nu[engind][0];
|
||||
while (r > cum && nu < 8){
|
||||
// Loop checking, 11.03.2015, T. Koi
|
||||
nu++;
|
||||
cum += U238nu[engind][nu];
|
||||
}
|
||||
|
||||
@@ -58,9 +58,12 @@
|
||||
|
||||
#include <cmath>
|
||||
#include "G4fissionEvent.hh"
|
||||
#include "G4Exp.hh"
|
||||
#include "G4Pow.hh"
|
||||
|
||||
int G4fissionEvent::G4SmpNuDistDataU233_235(G4double nubar) {
|
||||
|
||||
G4Pow* Pow = G4Pow::GetInstance();
|
||||
/*
|
||||
Description
|
||||
Sample Number of Neutrons from fission in U-233 and U-235 using
|
||||
@@ -88,26 +91,26 @@ int G4fissionEvent::G4SmpNuDistDataU233_235(G4double nubar) {
|
||||
/*
|
||||
Use Zucker and Holden Data
|
||||
*/
|
||||
if(nubar <= 2.8738) pnu[0]=-9.279554e-02*std::pow(nubar,3)+8.036687e-01*std::pow(nubar,2)-2.342684*nubar+2.309035;
|
||||
else if(nubar > 2.8738 && nubar <= 3.4272) pnu[0]=1.50072e-2*std::pow(nubar,2)-1.109109e-1*nubar+2.063133e-1;
|
||||
else pnu[0]=1.498897e+3*std::exp(-3.883864*nubar);
|
||||
if(nubar <= 2.8738) pnu[0]=-9.279554e-02*Pow->powN(nubar,3)+8.036687e-01*Pow->powN(nubar,2)-2.342684*nubar+2.309035;
|
||||
else if(nubar > 2.8738 && nubar <= 3.4272) pnu[0]=1.50072e-2*Pow->powN(nubar,2)-1.109109e-1*nubar+2.063133e-1;
|
||||
else pnu[0]=1.498897e+3*G4Exp(-3.883864*nubar);
|
||||
|
||||
if(nubar <= 3.2316) pnu[1]=3.531126e-2*std::pow(nubar,3)-2.787213e-1*std::pow(nubar,2)+5.824072e-1*nubar-1.067136e-1;
|
||||
else pnu[1]=6.574492e-2*std::pow(nubar,2)-5.425741e-1*nubar+1.123199;
|
||||
if(nubar <= 3.2316) pnu[1]=3.531126e-2*Pow->powN(nubar,3)-2.787213e-1*Pow->powN(nubar,2)+5.824072e-1*nubar-1.067136e-1;
|
||||
else pnu[1]=6.574492e-2*Pow->powN(nubar,2)-5.425741e-1*nubar+1.123199;
|
||||
|
||||
pnu[2]=1.274643e-2*std::pow(nubar,3)-1.387954e-1*std::pow(nubar,2)+3.264669e-1*nubar+1.77148e-1;
|
||||
pnu[2]=1.274643e-2*Pow->powN(nubar,3)-1.387954e-1*Pow->powN(nubar,2)+3.264669e-1*nubar+1.77148e-1;
|
||||
|
||||
pnu[3]=5.473738e-2*std::pow(nubar,5)-8.835826e-1*std::pow(nubar,4)+5.657201*std::pow(nubar,3)-1.802669e+1*std::pow(nubar,2)+2.867937e+1*nubar-1.794296e+1;
|
||||
pnu[3]=5.473738e-2*Pow->powN(nubar,5)-8.835826e-1*Pow->powN(nubar,4)+5.657201*Pow->powN(nubar,3)-1.802669e+1*Pow->powN(nubar,2)+2.867937e+1*nubar-1.794296e+1;
|
||||
|
||||
pnu[4]=-3.591076e-2*std::pow(nubar,3)+3.092624e-1*std::pow(nubar,2)-7.184805e-1*nubar+5.649400e-1;
|
||||
pnu[4]=-3.591076e-2*Pow->powN(nubar,3)+3.092624e-1*Pow->powN(nubar,2)-7.184805e-1*nubar+5.649400e-1;
|
||||
|
||||
if(nubar <= 2.8738) pnu[5]=1.699374e-2*std::pow(nubar,2)-1.069558e-3*nubar-6.981430e-2;
|
||||
else pnu[5]=2.100175e-2*std::pow(nubar,3)-1.705788e-1*std::pow(nubar,2)+5.575467e-1*nubar-6.245873e-1;
|
||||
if(nubar <= 2.8738) pnu[5]=1.699374e-2*Pow->powN(nubar,2)-1.069558e-3*nubar-6.981430e-2;
|
||||
else pnu[5]=2.100175e-2*Pow->powN(nubar,3)-1.705788e-1*Pow->powN(nubar,2)+5.575467e-1*nubar-6.245873e-1;
|
||||
|
||||
if(nubar <= 3.0387) pnu[6]=9.431919e-7*std::pow(nubar,8.958848);
|
||||
else pnu[6]=4.322428e-3*std::pow(nubar,3)-2.094790e-2*std::pow(nubar,2)+4.449671e-2*nubar-4.435987e-2;
|
||||
if(nubar <= 3.0387) pnu[6]=9.431919e-7*Pow->powA(nubar,8.958848);
|
||||
else pnu[6]=4.322428e-3*Pow->powN(nubar,3)-2.094790e-2*Pow->powN(nubar,2)+4.449671e-2*nubar-4.435987e-2;
|
||||
|
||||
pnu[7]=5.689084e-3*std::pow(nubar,4)-6.591895e-2*std::pow(nubar,3)+2.886861e-1*std::pow(nubar,2)-5.588146e-1*nubar+4.009166e-1;
|
||||
pnu[7]=5.689084e-3*Pow->powN(nubar,4)-6.591895e-2*Pow->powN(nubar,3)+2.886861e-1*Pow->powN(nubar,2)-5.588146e-1*nubar+4.009166e-1;
|
||||
|
||||
sum=pnu[0]+pnu[1]+pnu[2]+pnu[3]+pnu[4]+pnu[5]+pnu[6]+pnu[7];
|
||||
|
||||
|
||||
@@ -117,6 +117,7 @@ G4int G4fissionEvent::G4SmpNuDistDataU233_235_MC(G4double nubar) {
|
||||
*/
|
||||
engind = 1;
|
||||
while (nubar > U235nubar[engind]){ engind++;}
|
||||
// Loop checking, 11.03.2015, T. Koi
|
||||
fraction = (nubar-U235nubar[engind-1])/(U235nubar[engind]-U235nubar[engind-1]);
|
||||
if(fisslibrng() > fraction) engind--;
|
||||
|
||||
@@ -124,6 +125,7 @@ G4int G4fissionEvent::G4SmpNuDistDataU233_235_MC(G4double nubar) {
|
||||
nu = 0;
|
||||
cum = U235nu[engind][0];
|
||||
while (r > cum && nu < 7){
|
||||
// Loop checking, 11.03.2015, T. Koi
|
||||
nu++;
|
||||
cum += U235nu[engind][nu];
|
||||
}
|
||||
|
||||
@@ -57,6 +57,7 @@
|
||||
//
|
||||
|
||||
#include <cmath>
|
||||
#include "G4Pow.hh"
|
||||
#include "G4fissionEvent.hh"
|
||||
|
||||
G4int G4fissionEvent::G4SmpNuDistDataU235(G4double erg, G4int option) {
|
||||
@@ -99,88 +100,89 @@ G4int G4fissionEvent::G4SmpNuDistDataU235(G4double erg, G4int option) {
|
||||
/*
|
||||
U-235 nu distribution
|
||||
*/
|
||||
G4Pow* Pow=G4Pow::GetInstance();
|
||||
if (option == 0) {
|
||||
if (eng <= 3.0) pnu[0]=0.0317223e0-9.67117e-3*eng+1.9726e-3*std::pow(eng,2)-2.33933e-4*std::pow(eng,3);
|
||||
if (eng > 3 && eng <= 7) pnu[0]=-1.24147e-2+2.52982e-2*eng-7.88108e-3*std::pow(eng,2)+9.10008e-4*std::pow(eng,3)-3.67208e-5*std::pow(eng,4);
|
||||
if (eng > 7 && eng <= 10) pnu[0]=6.31258e-2-1.89764e-2*eng+1.94475e-3*std::pow(eng,2)-6.74e-5*std::pow(eng,3);
|
||||
if (eng <= 3.0) pnu[0]=0.0317223e0-9.67117e-3*eng+1.9726e-3*Pow->powN(eng,2)-2.33933e-4*Pow->powN(eng,3);
|
||||
if (eng > 3 && eng <= 7) pnu[0]=-1.24147e-2+2.52982e-2*eng-7.88108e-3*Pow->powN(eng,2)+9.10008e-4*Pow->powN(eng,3)-3.67208e-5*Pow->powN(eng,4);
|
||||
if (eng > 7 && eng <= 10) pnu[0]=6.31258e-2-1.89764e-2*eng+1.94475e-3*Pow->powN(eng,2)-6.74e-5*Pow->powN(eng,3);
|
||||
if (r <= pnu[0]) return 0;
|
||||
|
||||
if (eng <= 4.0) pnu[1]=0.171707e0-0.0178305e0*eng+3.42286e-3*std::pow(eng,2)-2.1168e-3*std::pow(eng,3)+3.84226e-4*std::pow(eng,4)-1.44289e-5*std::pow(eng,5);
|
||||
if (eng > 4 && eng <= 7) pnu[1]=9.8633e-2+3.53323e-2*eng-1.15037e-2*std::pow(eng,2)+7.4e-4*std::pow(eng,3);
|
||||
if (eng > 7 && eng <= 10) pnu[1]=0.628295-0.180677*eng+1.80664e-2*std::pow(eng,2)-6.2015e-4*std::pow(eng,3);
|
||||
if (eng <= 4.0) pnu[1]=0.171707e0-0.0178305e0*eng+3.42286e-3*Pow->powN(eng,2)-2.1168e-3*Pow->powN(eng,3)+3.84226e-4*Pow->powN(eng,4)-1.44289e-5*Pow->powN(eng,5);
|
||||
if (eng > 4 && eng <= 7) pnu[1]=9.8633e-2+3.53323e-2*eng-1.15037e-2*Pow->powN(eng,2)+7.4e-4*Pow->powN(eng,3);
|
||||
if (eng > 7 && eng <= 10) pnu[1]=0.628295-0.180677*eng+1.80664e-2*Pow->powN(eng,2)-6.2015e-4*Pow->powN(eng,3);
|
||||
cpnu=pnu[0]+pnu[1];
|
||||
if (r <= cpnu) return 1;
|
||||
|
||||
if (eng <= 4.0) pnu[2]=0.336199e0-1.59569e-2*eng+2.78036e-3*std::pow(eng,2)-1.59278e-3*std::pow(eng,3)+2.21742e-4*std::pow(eng,4);
|
||||
if (eng > 4 && eng <= 8) pnu[2]=0.229153e0+5.27561e-2*eng-1.29288e-2*std::pow(eng,2)+5.67233e-4*std::pow(eng,3)+8.06667e-6*std::pow(eng,4);
|
||||
if (eng > 8 && eng <= 10) pnu[2]=-0.395206e0+0.227399e0*eng-2.86051e-2*std::pow(eng,2)+1.08196e-3*std::pow(eng,3);
|
||||
if (eng <= 4.0) pnu[2]=0.336199e0-1.59569e-2*eng+2.78036e-3*Pow->powN(eng,2)-1.59278e-3*Pow->powN(eng,3)+2.21742e-4*Pow->powN(eng,4);
|
||||
if (eng > 4 && eng <= 8) pnu[2]=0.229153e0+5.27561e-2*eng-1.29288e-2*Pow->powN(eng,2)+5.67233e-4*Pow->powN(eng,3)+8.06667e-6*Pow->powN(eng,4);
|
||||
if (eng > 8 && eng <= 10) pnu[2]=-0.395206e0+0.227399e0*eng-2.86051e-2*Pow->powN(eng,2)+1.08196e-3*Pow->powN(eng,3);
|
||||
cpnu=cpnu+pnu[2];
|
||||
if (r <= cpnu) return 2;
|
||||
|
||||
if (eng <= 5.0) pnu[3]=0.30395461e0+0.01348261e0*eng-0.00262298e0*std::pow(eng,2)+1.99482407e-4*std::pow(eng,3);
|
||||
if (eng > 5 && eng <= 10) pnu[3]=0.10992355e0+0.09246839e0*eng-0.00885344e0*std::pow(eng,2)-7.60589252e-4*std::pow(eng,3)+1.50973591e-4*std::pow(eng,4)-6.20436503e-6*std::pow(eng,5);
|
||||
if (eng <= 5.0) pnu[3]=0.30395461e0+0.01348261e0*eng-0.00262298e0*Pow->powN(eng,2)+1.99482407e-4*Pow->powN(eng,3);
|
||||
if (eng > 5 && eng <= 10) pnu[3]=0.10992355e0+0.09246839e0*eng-0.00885344e0*Pow->powN(eng,2)-7.60589252e-4*Pow->powN(eng,3)+1.50973591e-4*Pow->powN(eng,4)-6.20436503e-6*Pow->powN(eng,5);
|
||||
cpnu=cpnu+pnu[3];
|
||||
if (r <= cpnu) return 3;
|
||||
|
||||
if (eng <= 4.0) pnu[4]=0.126946e0+1.64489e-2*eng+2.44029e-3*std::pow(eng,2)-2.1019e-3*std::pow(eng,3)+8.50104e-4*std::pow(eng,4)-1.10127e-4*std::pow(eng,5);
|
||||
if (eng > 4 && eng <= 8) pnu[4]=0.263373e0-7.47799e-2*eng+2.0588e-2*std::pow(eng,2)-1.55132e-3*std::pow(eng,3)+3.025e-5*std::pow(eng,4);
|
||||
if (eng > 8 && eng <= 10) pnu[4]=-0.277491e0+0.157606e0*eng-1.38467e-2*std::pow(eng,2)+4.20357e-4*std::pow(eng,3);
|
||||
if (eng <= 4.0) pnu[4]=0.126946e0+1.64489e-2*eng+2.44029e-3*Pow->powN(eng,2)-2.1019e-3*Pow->powN(eng,3)+8.50104e-4*Pow->powN(eng,4)-1.10127e-4*Pow->powN(eng,5);
|
||||
if (eng > 4 && eng <= 8) pnu[4]=0.263373e0-7.47799e-2*eng+2.0588e-2*Pow->powN(eng,2)-1.55132e-3*Pow->powN(eng,3)+3.025e-5*Pow->powN(eng,4);
|
||||
if (eng > 8 && eng <= 10) pnu[4]=-0.277491e0+0.157606e0*eng-1.38467e-2*Pow->powN(eng,2)+4.20357e-4*Pow->powN(eng,3);
|
||||
cpnu=cpnu+pnu[4];
|
||||
if (r <= cpnu) return 4;
|
||||
|
||||
if (eng <= 4.0) pnu[5]=0.0266793e0+9.05206e-3*eng-6.58754e-4*std::pow(eng,2)+6.26292e-4*std::pow(eng,3)-9.75958e-5*std::pow(eng,4);
|
||||
if (eng > 4 && eng <= 8) pnu[5]=0.0693092e0-1.46524e-2*eng+3.2841e-3*std::pow(eng,2)+1.50833e-4*std::pow(eng,3)-2.13e-5*std::pow(eng,4);
|
||||
if (eng > 8 && eng <= 10) pnu[5]=0.881442e0-0.271486e0*eng+3.15097e-2*std::pow(eng,2)-1.12095e-3*std::pow(eng,3);
|
||||
if (eng <= 4.0) pnu[5]=0.0266793e0+9.05206e-3*eng-6.58754e-4*Pow->powN(eng,2)+6.26292e-4*Pow->powN(eng,3)-9.75958e-5*Pow->powN(eng,4);
|
||||
if (eng > 4 && eng <= 8) pnu[5]=0.0693092e0-1.46524e-2*eng+3.2841e-3*Pow->powN(eng,2)+1.50833e-4*Pow->powN(eng,3)-2.13e-5*Pow->powN(eng,4);
|
||||
if (eng > 8 && eng <= 10) pnu[5]=0.881442e0-0.271486e0*eng+3.15097e-2*Pow->powN(eng,2)-1.12095e-3*Pow->powN(eng,3);
|
||||
cpnu=cpnu+pnu[5];
|
||||
if (r <= cpnu) return 5;
|
||||
|
||||
|
||||
if (eng <= 4.0) pnu[6]=0.0026322e0+2.44017e-4*eng+4.55992e-4*std::pow(eng,2)+1.25233e-4*std::pow(eng,3)-2.35417e-5*std::pow(eng,4);
|
||||
if (eng > 4 && eng <= 8) pnu[6]=-5.3989e-3+9.48298e-3*eng-2.95864e-3*std::pow(eng,2)+5.43025e-4*std::pow(eng,3)-2.75625e-5*std::pow(eng,4);
|
||||
if (eng > 8 && eng <= 10) pnu[6]=0.177058-5.57839e-2*eng+6.81359e-3*std::pow(eng,2)-2.35568e-4*std::pow(eng,3);
|
||||
if (eng <= 4.0) pnu[6]=0.0026322e0+2.44017e-4*eng+4.55992e-4*Pow->powN(eng,2)+1.25233e-4*Pow->powN(eng,3)-2.35417e-5*Pow->powN(eng,4);
|
||||
if (eng > 4 && eng <= 8) pnu[6]=-5.3989e-3+9.48298e-3*eng-2.95864e-3*Pow->powN(eng,2)+5.43025e-4*Pow->powN(eng,3)-2.75625e-5*Pow->powN(eng,4);
|
||||
if (eng > 8 && eng <= 10) pnu[6]=0.177058-5.57839e-2*eng+6.81359e-3*Pow->powN(eng,2)-2.35568e-4*Pow->powN(eng,3);
|
||||
cpnu=cpnu+pnu[6];
|
||||
if (r <= cpnu) return 6;
|
||||
else return 7;
|
||||
|
||||
} else if (option == 1) {
|
||||
if (eng <= 3.0) pnu[0]=0.0291000e0-4.836167e-3*eng-6.72500e-4*std::pow(eng,2)+2.076667e-4*std::pow(eng,3);
|
||||
if (eng > 3 && eng <= 7) pnu[0]=-1.23950e-2+2.52790e-2*eng-7.874333e-3*std::pow(eng,2)+9.09000e-4*std::pow(eng,3)-3.666667e-5*std::pow(eng,4);
|
||||
if (eng > 7 && eng <= 10) pnu[0]=6.328200e-2-1.903283e-2*eng+1.951500e-3*std::pow(eng,2)-6.766667e-5*std::pow(eng,3);
|
||||
if (eng <= 3.0) pnu[0]=0.0291000e0-4.836167e-3*eng-6.72500e-4*Pow->powN(eng,2)+2.076667e-4*Pow->powN(eng,3);
|
||||
if (eng > 3 && eng <= 7) pnu[0]=-1.23950e-2+2.52790e-2*eng-7.874333e-3*Pow->powN(eng,2)+9.09000e-4*Pow->powN(eng,3)-3.666667e-5*Pow->powN(eng,4);
|
||||
if (eng > 7 && eng <= 10) pnu[0]=6.328200e-2-1.903283e-2*eng+1.951500e-3*Pow->powN(eng,2)-6.766667e-5*Pow->powN(eng,3);
|
||||
if (r <= pnu[0]) return 0;
|
||||
|
||||
if (eng <= 4.0) pnu[1]=0.166000e0-0.005591833e0*eng-5.624500e-3*std::pow(eng,2)+7.673333e-4*std::pow(eng,3)-2.00000e-6*std::pow(eng,4);
|
||||
if (eng > 4 && eng <= 7) pnu[1]=9.860600e-2+3.534733e-2*eng-1.150650e-2*std::pow(eng,2)+7.401667e-4*std::pow(eng,3);
|
||||
if (eng > 7 && eng <= 10) pnu[1]=0.628401e0-0.1807157e0*eng+1.807100e-2*std::pow(eng,2)-6.203333e-4*std::pow(eng,3);
|
||||
if (eng <= 4.0) pnu[1]=0.166000e0-0.005591833e0*eng-5.624500e-3*Pow->powN(eng,2)+7.673333e-4*Pow->powN(eng,3)-2.00000e-6*Pow->powN(eng,4);
|
||||
if (eng > 4 && eng <= 7) pnu[1]=9.860600e-2+3.534733e-2*eng-1.150650e-2*Pow->powN(eng,2)+7.401667e-4*Pow->powN(eng,3);
|
||||
if (eng > 7 && eng <= 10) pnu[1]=0.628401e0-0.1807157e0*eng+1.807100e-2*Pow->powN(eng,2)-6.203333e-4*Pow->powN(eng,3);
|
||||
cpnu=pnu[0]+pnu[1];
|
||||
if (r <= cpnu) return 1;
|
||||
|
||||
if (eng <= 4.0) pnu[2]=0.336200e0-1.596058e-2*eng+2.783625e-3*std::pow(eng,2)-1.593917e-3*std::pow(eng,3)+2.21875e-4*std::pow(eng,4);
|
||||
if (eng > 4 && eng <= 8) pnu[2]=0.2292350e0+5.26925e-2*eng-1.291067e-2*std::pow(eng,2)+5.650000e-4*std::pow(eng,3)+8.166667e-6*std::pow(eng,4);
|
||||
if (eng > 8 && eng <= 10) pnu[2]=0.3838230e0-3.4439e-2*eng+6.0800e-4*std::pow(eng,2);
|
||||
if (eng <= 4.0) pnu[2]=0.336200e0-1.596058e-2*eng+2.783625e-3*Pow->powN(eng,2)-1.593917e-3*Pow->powN(eng,3)+2.21875e-4*Pow->powN(eng,4);
|
||||
if (eng > 4 && eng <= 8) pnu[2]=0.2292350e0+5.26925e-2*eng-1.291067e-2*Pow->powN(eng,2)+5.650000e-4*Pow->powN(eng,3)+8.166667e-6*Pow->powN(eng,4);
|
||||
if (eng > 8 && eng <= 10) pnu[2]=0.3838230e0-3.4439e-2*eng+6.0800e-4*Pow->powN(eng,2);
|
||||
cpnu=cpnu+pnu[2];
|
||||
if (r <= cpnu) return 2;
|
||||
|
||||
if (eng <= 4.0) pnu[3]=0.3074000e0+0.00794125e0*eng-0.0002580417e0*std::pow(eng,2)-1.875000e-5*std::pow(eng,3)-2.145833e-5*std::pow(eng,4);
|
||||
if (eng > 4 && eng <= 7) pnu[3]=0.3152270e0-2.623667e-3*eng+2.785000e-3*std::pow(eng,2)-3.273333e-4*std::pow(eng,3);
|
||||
if (eng > 7 && eng <= 10) pnu[3]=0.6476430e0-0.1046148e0*eng+1.181600e-2*std::pow(eng,2)-5.051667e-4*std::pow(eng,3);
|
||||
if (eng <= 4.0) pnu[3]=0.3074000e0+0.00794125e0*eng-0.0002580417e0*Pow->powN(eng,2)-1.875000e-5*Pow->powN(eng,3)-2.145833e-5*Pow->powN(eng,4);
|
||||
if (eng > 4 && eng <= 7) pnu[3]=0.3152270e0-2.623667e-3*eng+2.785000e-3*Pow->powN(eng,2)-3.273333e-4*Pow->powN(eng,3);
|
||||
if (eng > 7 && eng <= 10) pnu[3]=0.6476430e0-0.1046148e0*eng+1.181600e-2*Pow->powN(eng,2)-5.051667e-4*Pow->powN(eng,3);
|
||||
cpnu=cpnu+pnu[3];
|
||||
if (r <= cpnu) return 3;
|
||||
|
||||
if (eng <= 4.0) pnu[4]=0.133300e0+5.853750e-3*eng+6.200875e-3*std::pow(eng,2)-8.95250e-4*std::pow(eng,3)+1.36250e-5*std::pow(eng,4);
|
||||
if (eng > 4 && eng <= 7) pnu[4]=0.2379650e0-5.548167e-2*eng+1.517350e-2*std::pow(eng,2)-8.858333e-4*std::pow(eng,3);
|
||||
if (eng > 7 && eng <= 10) pnu[4]=-0.5408690e0+0.2461313e0*eng-2.372350e-2*std::pow(eng,2)+7.861667e-4*std::pow(eng,3);
|
||||
if (eng <= 4.0) pnu[4]=0.133300e0+5.853750e-3*eng+6.200875e-3*Pow->powN(eng,2)-8.95250e-4*Pow->powN(eng,3)+1.36250e-5*Pow->powN(eng,4);
|
||||
if (eng > 4 && eng <= 7) pnu[4]=0.2379650e0-5.548167e-2*eng+1.517350e-2*Pow->powN(eng,2)-8.858333e-4*Pow->powN(eng,3);
|
||||
if (eng > 7 && eng <= 10) pnu[4]=-0.5408690e0+0.2461313e0*eng-2.372350e-2*Pow->powN(eng,2)+7.861667e-4*Pow->powN(eng,3);
|
||||
cpnu=cpnu+pnu[4];
|
||||
if (r <= cpnu) return 4;
|
||||
|
||||
if (eng <= 4.0) pnu[5]=0.025900e0+1.067450e-2*eng-1.794000e-3*std::pow(eng,2)+9.50500e-4*std::pow(eng,3)-1.3000e-4*std::pow(eng,4);
|
||||
if (eng > 4 && eng <= 7) pnu[5]=0.0871960e0-2.823683e-2*eng+7.0955e-3*std::pow(eng,2)-3.176667e-4*std::pow(eng,3);
|
||||
if (eng > 7 && eng <= 10) pnu[5]=-0.591650e0+0.2236360e0*eng-2.373100e-2*std::pow(eng,2)+9.25000e-4*std::pow(eng,3);
|
||||
if (eng <= 4.0) pnu[5]=0.025900e0+1.067450e-2*eng-1.794000e-3*Pow->powN(eng,2)+9.50500e-4*Pow->powN(eng,3)-1.3000e-4*Pow->powN(eng,4);
|
||||
if (eng > 4 && eng <= 7) pnu[5]=0.0871960e0-2.823683e-2*eng+7.0955e-3*Pow->powN(eng,2)-3.176667e-4*Pow->powN(eng,3);
|
||||
if (eng > 7 && eng <= 10) pnu[5]=-0.591650e0+0.2236360e0*eng-2.373100e-2*Pow->powN(eng,2)+9.25000e-4*Pow->powN(eng,3);
|
||||
cpnu=cpnu+pnu[5];
|
||||
if (r <= cpnu) return 5;
|
||||
|
||||
if (eng <= 4.0) pnu[6]=0.002100e0+1.35500e-3*eng-3.235833e-4*std::pow(eng,2)+3.48500e-4*std::pow(eng,3)-4.591667e-5*std::pow(eng,4);
|
||||
if (eng > 4 && eng <= 8) pnu[6]=1.767200e-2-8.055667e-3*eng+1.96650e-3*std::pow(eng,2)-6.283333e-5*std::pow(eng,3);
|
||||
if (eng > 8 && eng <= 10) pnu[6]=-0.2485310e0+8.72590e-2*eng-9.14550e-3*std::pow(eng,2)+3.555000e-4*std::pow(eng,3);
|
||||
if (eng <= 4.0) pnu[6]=0.002100e0+1.35500e-3*eng-3.235833e-4*Pow->powN(eng,2)+3.48500e-4*Pow->powN(eng,3)-4.591667e-5*Pow->powN(eng,4);
|
||||
if (eng > 4 && eng <= 8) pnu[6]=1.767200e-2-8.055667e-3*eng+1.96650e-3*Pow->powN(eng,2)-6.283333e-5*Pow->powN(eng,3);
|
||||
if (eng > 8 && eng <= 10) pnu[6]=-0.2485310e0+8.72590e-2*eng-9.14550e-3*Pow->powN(eng,2)+3.555000e-4*Pow->powN(eng,3);
|
||||
cpnu=cpnu+pnu[6];
|
||||
if (r <= cpnu) return 6;
|
||||
else return 7;
|
||||
|
||||
@@ -57,6 +57,7 @@
|
||||
//
|
||||
|
||||
#include <cmath>
|
||||
#include "G4Pow.hh"
|
||||
#include "G4fissionEvent.hh"
|
||||
|
||||
G4int G4fissionEvent::G4SmpNuDistDataU238(G4double erg) {
|
||||
@@ -90,41 +91,42 @@ G4int G4fissionEvent::G4SmpNuDistDataU238(G4double erg) {
|
||||
/*
|
||||
U-238 nu distribution
|
||||
*/
|
||||
if (eng <= 5.0) pnu[0]=0.0396484e0-1.14202e-2*eng+1.94627e-3*std::pow(eng,2)-2.95412e-4*std::pow(eng,3)+2.98333e-5*std::pow(eng,4)-1.31417e-6*std::pow(eng,5);
|
||||
if (eng > 5 && eng <= 10) pnu[0]=0.0360013e0-8.06662e-3*eng+6.59461e-4*std::pow(eng,2)-3.54123e-5*std::pow(eng,3)+2.03749e-6*std::pow(eng,4)-5.91663e-8*std::pow(eng,5);
|
||||
G4Pow* Pow=G4Pow::GetInstance();
|
||||
if (eng <= 5.0) pnu[0]=0.0396484e0-1.14202e-2*eng+1.94627e-3*Pow->powN(eng,2)-2.95412e-4*Pow->powN(eng,3)+2.98333e-5*Pow->powN(eng,4)-1.31417e-6*Pow->powN(eng,5);
|
||||
if (eng > 5 && eng <= 10) pnu[0]=0.0360013e0-8.06662e-3*eng+6.59461e-4*Pow->powN(eng,2)-3.54123e-5*Pow->powN(eng,3)+2.03749e-6*Pow->powN(eng,4)-5.91663e-8*Pow->powN(eng,5);
|
||||
if (r <= pnu[0]) return 0;
|
||||
|
||||
if (eng <= 5.0) pnu[1]=0.252954e0-5.17151e-2*eng+2.84558e-3*std::pow(eng,2)+2.93563e-4*std::pow(eng,3)-5.99833e-5*std::pow(eng,4)+3.34417e-6*std::pow(eng,5);
|
||||
if (eng > 5 && eng <= 10) pnu[1]=0.259093e0-5.7936e-2*eng+5.50734e-3*std::pow(eng,2)-3.09607e-4*std::pow(eng,3)+1.20957e-5*std::pow(eng,4)-2.49997e-7*std::pow(eng,5);
|
||||
if (eng <= 5.0) pnu[1]=0.252954e0-5.17151e-2*eng+2.84558e-3*Pow->powN(eng,2)+2.93563e-4*Pow->powN(eng,3)-5.99833e-5*Pow->powN(eng,4)+3.34417e-6*Pow->powN(eng,5);
|
||||
if (eng > 5 && eng <= 10) pnu[1]=0.259093e0-5.7936e-2*eng+5.50734e-3*Pow->powN(eng,2)-3.09607e-4*Pow->powN(eng,3)+1.20957e-5*Pow->powN(eng,4)-2.49997e-7*Pow->powN(eng,5);
|
||||
cpnu=pnu[0]+pnu[1];
|
||||
if (r <= cpnu) return 1;
|
||||
|
||||
pnu[2]=0.29395353e0+0.01098908e0*eng-0.00565976e0*std::pow(eng,2)+3.14515399e-4*std::pow(eng,3)-5.66793415e-6*std::pow(eng,4)+1.54070513e-7*std::pow(eng,5);
|
||||
pnu[2]=0.29395353e0+0.01098908e0*eng-0.00565976e0*Pow->powN(eng,2)+3.14515399e-4*Pow->powN(eng,3)-5.66793415e-6*Pow->powN(eng,4)+1.54070513e-7*Pow->powN(eng,5);
|
||||
cpnu=cpnu+pnu[2];
|
||||
if (r <= cpnu) return 2;
|
||||
|
||||
if (eng <= 5.0) pnu[3]=0.264447e0+3.02825e-2*eng-3.12762e-3*std::pow(eng,2)-1.5875e-4*std::pow(eng,3)+4.91667e-5*std::pow(eng,4)-3.38667e-6*std::pow(eng,5);
|
||||
if (eng > 5 && eng <= 10) pnu[3]=0.262024e0+3.37134e-2*eng-5.01711e-3*std::pow(eng,2)+3.58761e-4*std::pow(eng,3)-2.17959e-5*std::pow(eng,4)+5.10834e-7*std::pow(eng,5);
|
||||
if (eng <= 5.0) pnu[3]=0.264447e0+3.02825e-2*eng-3.12762e-3*Pow->powN(eng,2)-1.5875e-4*Pow->powN(eng,3)+4.91667e-5*Pow->powN(eng,4)-3.38667e-6*Pow->powN(eng,5);
|
||||
if (eng > 5 && eng <= 10) pnu[3]=0.262024e0+3.37134e-2*eng-5.01711e-3*Pow->powN(eng,2)+3.58761e-4*Pow->powN(eng,3)-2.17959e-5*Pow->powN(eng,4)+5.10834e-7*Pow->powN(eng,5);
|
||||
cpnu=cpnu+pnu[3];
|
||||
if (r <= cpnu) return 3;
|
||||
|
||||
if (eng <= 5) pnu[4]=0.111176e0+1.66321e-2*eng+2.56307e-3*std::pow(eng,2)-2.17754e-4*std::pow(eng,3)-5.96667e-6*std::pow(eng,4)+7.44167e-7*std::pow(eng,5);
|
||||
if (eng > 5 && eng <= 10) pnu[4]=0.107859e0+1.88862e-2*eng+2.07521e-3*std::pow(eng,2)-2.08099e-4*std::pow(eng,3)+3.23745e-6*std::pow(eng,4)-1.24999e-7*std::pow(eng,5);
|
||||
if (eng <= 5) pnu[4]=0.111176e0+1.66321e-2*eng+2.56307e-3*Pow->powN(eng,2)-2.17754e-4*Pow->powN(eng,3)-5.96667e-6*Pow->powN(eng,4)+7.44167e-7*Pow->powN(eng,5);
|
||||
if (eng > 5 && eng <= 10) pnu[4]=0.107859e0+1.88862e-2*eng+2.07521e-3*Pow->powN(eng,2)-2.08099e-4*Pow->powN(eng,3)+3.23745e-6*Pow->powN(eng,4)-1.24999e-7*Pow->powN(eng,5);
|
||||
cpnu=cpnu+pnu[4];
|
||||
if (r <= cpnu) return 4;
|
||||
|
||||
if (eng <= 5.0) pnu[5]=0.0312261e0+4.12932e-3*eng+9.18413e-4*std::pow(eng,2)+4.36542e-5*std::pow(eng,3)-5.9125e-6*std::pow(eng,4)+3.20833e-7*std::pow(eng,5);
|
||||
if (eng > 5 && eng <= 10) pnu[5]=0.0324008e0+3.04772e-3*eng+1.3327e-3*std::pow(eng,2)-3.96916e-5*std::pow(eng,3)+2.94583e-6*std::pow(eng,4)-7.66666e-8*std::pow(eng,5);
|
||||
if (eng <= 5.0) pnu[5]=0.0312261e0+4.12932e-3*eng+9.18413e-4*Pow->powN(eng,2)+4.36542e-5*Pow->powN(eng,3)-5.9125e-6*Pow->powN(eng,4)+3.20833e-7*Pow->powN(eng,5);
|
||||
if (eng > 5 && eng <= 10) pnu[5]=0.0324008e0+3.04772e-3*eng+1.3327e-3*Pow->powN(eng,2)-3.96916e-5*Pow->powN(eng,3)+2.94583e-6*Pow->powN(eng,4)-7.66666e-8*Pow->powN(eng,5);
|
||||
cpnu=cpnu+pnu[5];
|
||||
if (r <= cpnu) return 5;
|
||||
|
||||
if (eng <= 5.0) pnu[6]=5.9347e-3+9.80023e-4*eng+4.24667e-4*std::pow(eng,2)+3.04458e-5*std::pow(eng,3)-6.46667e-6*std::pow(eng,4)+4.30833e-7*std::pow(eng,5);
|
||||
if (eng > 5 && eng <= 10) pnu[6]=6.5421e-3+3.07834e-4*eng+7.39454e-4*std::pow(eng,2)-4.70459e-5*std::pow(eng,3)+3.44583e-6*std::pow(eng,4)-8.91667e-8*std::pow(eng,5);
|
||||
if (eng <= 5.0) pnu[6]=5.9347e-3+9.80023e-4*eng+4.24667e-4*Pow->powN(eng,2)+3.04458e-5*Pow->powN(eng,3)-6.46667e-6*Pow->powN(eng,4)+4.30833e-7*Pow->powN(eng,5);
|
||||
if (eng > 5 && eng <= 10) pnu[6]=6.5421e-3+3.07834e-4*eng+7.39454e-4*Pow->powN(eng,2)-4.70459e-5*Pow->powN(eng,3)+3.44583e-6*Pow->powN(eng,4)-8.91667e-8*Pow->powN(eng,5);
|
||||
cpnu=cpnu+pnu[6];
|
||||
if (r <= cpnu) return 6;
|
||||
|
||||
if (eng <= 5.0) pnu[7]=5.436e-4+1.3756e-4*eng-5.0e-7*std::pow(eng,2)+1.35917e-5*std::pow(eng,3)+5.0e-7*std::pow(eng,4)-5.16667e-8*std::pow(eng,5);
|
||||
if (eng > 5 && eng <= 10) pnu[7]=9.212e-4-1.57585e-4*eng+8.41126e-5*std::pow(eng,2)+4.14166e-6*std::pow(eng,3)+5.37501e-7*std::pow(eng,4)-6.66668e-9*std::pow(eng,5);
|
||||
if (eng <= 5.0) pnu[7]=5.436e-4+1.3756e-4*eng-5.0e-7*Pow->powN(eng,2)+1.35917e-5*Pow->powN(eng,3)+5.0e-7*Pow->powN(eng,4)-5.16667e-8*Pow->powN(eng,5);
|
||||
if (eng > 5 && eng <= 10) pnu[7]=9.212e-4-1.57585e-4*eng+8.41126e-5*Pow->powN(eng,2)+4.14166e-6*Pow->powN(eng,3)+5.37501e-7*Pow->powN(eng,4)-6.66668e-9*Pow->powN(eng,5);
|
||||
cpnu=cpnu+pnu[7];
|
||||
if (r <= cpnu) return 7;
|
||||
else return 8;
|
||||
|
||||
@@ -58,6 +58,9 @@
|
||||
|
||||
#include <cmath>
|
||||
#include "G4fissionEvent.hh"
|
||||
#include "G4Exp.hh"
|
||||
#include "G4Log.hh"
|
||||
#include "G4Pow.hh"
|
||||
|
||||
#define nfissg 40
|
||||
#define alphanegbin 26
|
||||
@@ -133,12 +136,13 @@ G4int G4fissionEvent::G4SmpNugDist(G4int isotope, G4double nubar) {
|
||||
*/
|
||||
A = (G4int) (isotope-1000*((G4int)(isotope/1000)));
|
||||
Z = (G4int) ((isotope-A)/1000);
|
||||
nubarg = ((2.51-1.13e-5*std::pow(G4double(Z),2.)*std::sqrt(G4double(A)))*nubar+4.0)
|
||||
/(-1.33+119.6*std::pow(G4double(Z),1./3.)/G4double(A));
|
||||
G4Pow* Pow = G4Pow::GetInstance();
|
||||
nubarg = ((2.51-1.13e-5*Pow->powA(G4double(Z),2.)*std::sqrt(G4double(A)))*nubar+4.0)
|
||||
/(-1.33+119.6*Pow->A13(G4double(Z))/G4double(A));
|
||||
p = 1.*alphanegbin/(alphanegbin+nubarg);
|
||||
q = 1.-p;
|
||||
cpi[0] = std::exp(logcoeff[0]+26.*std::log(p));
|
||||
for (i=1; i<=nfissg; i++) cpi[i] = cpi[i-1] + std::exp(logcoeff[i]+26.*std::log(p)+i*std::log(q));
|
||||
cpi[0] = G4Exp(logcoeff[0]+26.*G4Log(p));
|
||||
for (i=1; i<=nfissg; i++) cpi[i] = cpi[i-1] + G4Exp(logcoeff[i]+26.*G4Log(p)+i*G4Log(q));
|
||||
for (i=0; i<=nfissg; i++) cpi[i] = cpi[i]/cpi[nfissg-1];
|
||||
|
||||
r=fisslibrng();
|
||||
|
||||
@@ -57,6 +57,8 @@
|
||||
//
|
||||
|
||||
#include <cmath>
|
||||
#include "G4Exp.hh"
|
||||
#include "G4Log.hh"
|
||||
#include "G4fissionEvent.hh"
|
||||
|
||||
#define TWOPI 6.283185307
|
||||
@@ -96,14 +98,22 @@ G4double G4fissionEvent::G4SmpTerrell(G4double nubar) {
|
||||
temp1 = nubar + 0.5;
|
||||
temp2 = temp1/width;
|
||||
temp2 *= temp2;
|
||||
expo = std::exp(-temp2);
|
||||
expo = G4Exp(-temp2);
|
||||
cshift = temp1 + BSHIFT * WIDTH * expo/(1. - expo);
|
||||
|
||||
G4int icounter = 0;
|
||||
G4int icounter_max = 1024;
|
||||
do {
|
||||
rw = std::sqrt(-std::log(fisslibrng()));
|
||||
rw = std::sqrt(-G4Log(fisslibrng()));
|
||||
theta = TWOPI * fisslibrng();
|
||||
sampleg = width * rw * std::cos(theta) + cshift;
|
||||
icounter++;
|
||||
if ( icounter > icounter_max ) {
|
||||
G4cout << "Loop-counter exceeded the threshold value at " << __LINE__ << "th line of " << __FILE__ << "." << G4endl;
|
||||
break;
|
||||
}
|
||||
} while (sampleg < 0.0);
|
||||
// Loop checking, 11.03.2015, T. Koi
|
||||
|
||||
return std::floor(sampleg);
|
||||
}
|
||||
|
||||
@@ -61,6 +61,7 @@
|
||||
#define WATTEMAX 20.0
|
||||
|
||||
#include <cmath>
|
||||
#include "G4Log.hh"
|
||||
#include "G4fissionEvent.hh"
|
||||
|
||||
G4double G4fissionEvent::G4SmpWatt(G4double ePart, G4int iso) {
|
||||
@@ -159,15 +160,23 @@ G4double G4fissionEvent::G4SmpWatt(G4double ePart, G4int iso) {
|
||||
y= (x + std::sqrt(x*x-1.))/a;
|
||||
z= a*y - 1.;
|
||||
|
||||
G4int icounter = 0;
|
||||
G4int icounter_max = 1024;
|
||||
do {
|
||||
|
||||
rand1= -std::log(fisslibrng());
|
||||
rand2= -std::log(fisslibrng());
|
||||
rand1= -G4Log(fisslibrng());
|
||||
rand2= -G4Log(fisslibrng());
|
||||
eSmp= y*rand1;
|
||||
|
||||
icounter++;
|
||||
if ( icounter > icounter_max ) {
|
||||
G4cout << "Loop-counter exceeded the threshold value at " << __LINE__ << "th line of " << __FILE__ << "." << G4endl;
|
||||
break;
|
||||
}
|
||||
|
||||
} while ((rand2-z*(rand1+1.))*(rand2-z*(rand1+1.)) > b*y*rand1 ||
|
||||
eSmp < WATTEMIN || eSmp > WATTEMAX);
|
||||
|
||||
// Loop checking, 11.03.2015, T. Koi
|
||||
|
||||
return eSmp;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user