Import Geant4 10.5.0 source tree

This commit is contained in:
Gabriele Cosmo
2018-12-07 15:15:39 +01:00
parent 6aa23be517
commit db49709b53
11370 changed files with 187480 additions and 160142 deletions
@@ -24,7 +24,6 @@
// ********************************************************************
//
//
// $Id: G4CompetitiveFission.cc 107060 2017-11-01 15:00:04Z gcosmo $
//
// Hadronic Process: Nuclear De-excitations
// by V. Lara (Oct 1998)
@@ -54,10 +53,9 @@ G4CompetitiveFission::G4CompetitiveFission() : G4VEvaporationChannel("fission")
theLevelDensityPtr = new G4FissionLevelDensityParameter;
MyOwnLevelDensity = true;
MaximalKineticEnergy = -1000.0;
MaximalKineticEnergy = 0.0;
FissionBarrier = 0.0;
FissionProbability = 0.0;
LevelDensityParameter = 0.0;
pairingCorrection = G4NuclearLevelData::GetInstance()->GetPairingCorrection();
}
@@ -71,32 +69,28 @@ G4CompetitiveFission::~G4CompetitiveFission()
G4double G4CompetitiveFission::GetEmissionProbability(G4Fragment* fragment)
{
G4int anA = fragment->GetA_asInt();
G4int aZ = fragment->GetZ_asInt();
G4double ExEnergy = fragment->GetExcitationEnergy() -
pairingCorrection->GetFissionPairingCorrection(anA,aZ);
FissionProbability = 0.0;
if (anA >= 65) {
G4int aZ = fragment->GetZ_asInt();
G4double ExEnergy = fragment->GetExcitationEnergy() -
pairingCorrection->GetFissionPairingCorrection(anA,aZ);
// Saddle point excitation energy ---> A = 65
// Fission is excluded for A < 65
if (anA >= 65 && ExEnergy > 0.0) {
FissionBarrier = theFissionBarrierPtr->FissionBarrier(anA,aZ,ExEnergy);
MaximalKineticEnergy = ExEnergy - FissionBarrier;
LevelDensityParameter =
theLevelDensityPtr->LevelDensityParameter(anA,aZ,ExEnergy);
FissionProbability =
theFissionProbabilityPtr->EmissionProbability(*fragment,
MaximalKineticEnergy);
// Saddle point excitation energy ---> A = 65
// Fission is excluded for A < 65
if (ExEnergy > 0.0) {
FissionBarrier = theFissionBarrierPtr->FissionBarrier(anA,aZ,ExEnergy);
MaximalKineticEnergy = ExEnergy - FissionBarrier;
FissionProbability =
theFissionProbabilityPtr->EmissionProbability(*fragment,
MaximalKineticEnergy);
}
else {
MaximalKineticEnergy = -1000.0;
LevelDensityParameter = 0.0;
FissionProbability = 0.0;
}
return FissionProbability;
}
G4Fragment* G4CompetitiveFission::EmittedFragment(G4Fragment* theNucleus)
{
G4Fragment * Fragment1 = 0;
G4Fragment * Fragment1 = nullptr;
// Nucleus data
// Atomic number of nucleus
G4int A = theNucleus->GetA_asInt();
@@ -166,12 +160,10 @@ G4Fragment* G4CompetitiveFission::EmittedFragment(G4Fragment* theNucleus)
// excitation energy
FragmentsExcitationEnergy =
// Tmax - FragmentsKineticEnergy;
Tmax - FragmentsKineticEnergy + pcorr;
// Loop checking, 05-Aug-2015, Vladimir Ivanchenko
} while (FragmentsExcitationEnergy < 0.0
&& ++Trials < 100);
} while (FragmentsExcitationEnergy < 0.0 && ++Trials < 100);
if (FragmentsExcitationEnergy <= 0.0) {
throw G4HadronicException(__FILE__, __LINE__,
@@ -0,0 +1,78 @@
//
// ********************************************************************
// * License and Disclaimer *
// * *
// * The Geant4 software is copyright of the Copyright Holders of *
// * the Geant4 Collaboration. It is provided under the terms and *
// * conditions of the Geant4 Software License, included in the file *
// * LICENSE and available at http://cern.ch/geant4/license . These *
// * include a list of copyright holders. *
// * *
// * Neither the authors of this software system, nor their employing *
// * institutes,nor the agencies providing financial support for this *
// * work make any representation or warranty, express or implied, *
// * regarding this software system or assume any liability for its *
// * use. Please see the license in the file LICENSE and URL above *
// * for the full disclaimer and the limitation of liability. *
// * *
// * This code implementation is the result of the scientific and *
// * technical work of the GEANT4 collaboration. *
// * By using, copying, modifying or distributing the software (or *
// * any work based on the software) you agree to acknowledge its *
// * use in resulting scientific publications, and indicate your *
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
//
// Hadronic Process: Nuclear De-excitations
// by V. Lara (Oct 1998)
//
// Modified:
// 21.03.2013 V.Ivanchenko redesigned and comment out unused part
#include "G4EvaporationLevelDensityParameter.hh"
#include "G4NuclearLevelData.hh"
G4EvaporationLevelDensityParameter::G4EvaporationLevelDensityParameter()
{
fNucData = G4NuclearLevelData::GetInstance();
}
G4EvaporationLevelDensityParameter::~G4EvaporationLevelDensityParameter()
{}
G4double
G4EvaporationLevelDensityParameter::LevelDensityParameter(G4int A, G4int Z, G4double U) const
{
return fNucData->GetLevelDensity(Z, A, U);
}
/*
#include "G4ShellCorrections.hh"
#include "G4SystemOfUnits.hh"
// Those values are from table 3 in
// A.S. Iljinov et al. Nucl Phys A543 (1992) 517-557
// Table 3. alpha, beta and gamma for Cameron Shell corrections
// whithout collective effects. f-factor = 2.31.
//JMQ 17-04-08 these are not used at present in G4Evaporation
const G4double
G4EvaporationLevelDensityParameter::ConstEvapLevelDensityParameter = 0.125/MeV;
const G4double
G4EvaporationLevelDensityParameter::ConstEvapLevelDensityParameter= 0.0769231/MeV;
const G4double G4EvaporationLevelDensityParameter::alpha = 0.072/MeV;
const G4double G4EvaporationLevelDensityParameter::beta = 0.257/MeV;
const G4double G4EvaporationLevelDensityParameter::gamma = 0.059/MeV;
const G4double G4EvaporationLevelDensityParameter::Bs = 1.0;
// Asymptotic Level Density Parameter
//G4double AsymptoticLDP = (alpha*A + beta*g4pow-Z23(A)*Bs)/MeV;
// Shape of the LDP U dependence
G4double exponent = -gamma*U;
G4double f = 1.;
if (exponent > -300.) f -= G4Exp(exponent);
G4double a = AsymptoticLDP*(1. + ShellCorrection(Z,N)*f/U);
return a;
*/
@@ -23,7 +23,6 @@
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
// $Id: G4FissionBarrier.cc 105799 2017-08-21 07:35:55Z gcosmo $
//
// Hadronic Process: Nuclear De-excitations
// by V. Lara (Oct 1998)
@@ -24,7 +24,6 @@
// ********************************************************************
//
//
// $Id: G4FissionLevelDensityParameter.cc 67983 2013-03-13 10:42:03Z gcosmo $
//
// Hadronic Process: Nuclear De-excitations
// by V. Lara (Oct 1998)
@@ -34,39 +33,24 @@
// J.M.Quesada (30.10.09): retuning for IAEA spallation data
#include "G4FissionLevelDensityParameter.hh"
#include "G4HadronicException.hh"
#include "G4NuclearLevelData.hh"
G4FissionLevelDensityParameter::G4FissionLevelDensityParameter()
{}
{
fNucData = G4NuclearLevelData::GetInstance();
}
G4FissionLevelDensityParameter::~G4FissionLevelDensityParameter()
{}
G4double G4FissionLevelDensityParameter::
LevelDensityParameter(G4int A, G4int Z, G4double U) const
{
G4double EvapLDP =
theEvaporationLevelDensityParameter.LevelDensityParameter(A,Z,U);
G4double EvapLDP = fNucData->GetLevelDensity(Z, A, U);
if(Z >= 89) { EvapLDP *= 1.02; }
else if(Z >= 85) { EvapLDP *= (1.02 + 0.004*(89 - Z)); }
else { EvapLDP *= 1.04; }
if(Z >= 89) { EvapLDP *= 1.05; }
else if(Z <= 85) { EvapLDP *= 1.03; }
else { EvapLDP *= (1.03 + 0.005*(Z - 85)); }
/*
if(Z >= 89) { EvapLDP *= 1.01; }
else if(Z >= 85) { EvapLDP *= (1.01 + 0.002*(89 - Z)); }
else { EvapLDP *= 1.02; }
*/
return EvapLDP;
/*
if(Z >= 89) EvapLDP *= 1.04;
else if(Z >= 85) EvapLDP *= (1.04 + 0.01*(89 - Z));
else EvapLDP *= 1.09;
//JMQ 310509
return 1.07*EvapLDP;
*/
}
@@ -24,34 +24,31 @@
// ********************************************************************
//
//
// $Id: G4FissionLevelDensityParameterINCLXX.cc 67983 2013-03-13 10:42:03Z gcosmo $
//
// Hadronic Process: Nuclear De-excitations
// by D. Mancusi (6th October 2014)
//
#include "G4FissionLevelDensityParameterINCLXX.hh"
#include "G4HadronicException.hh"
#include "G4NuclearLevelData.hh"
G4FissionLevelDensityParameterINCLXX::G4FissionLevelDensityParameterINCLXX() :
afanLow(1.02),
afanHigh(1.02),
afanLow(1.03),
afanHigh(1.05),
ZLow(84),
ZHigh(89)
{
UpdateAfanSlope();
fNucData = G4NuclearLevelData::GetInstance();
}
G4FissionLevelDensityParameterINCLXX::~G4FissionLevelDensityParameterINCLXX()
{}
G4double G4FissionLevelDensityParameterINCLXX::
LevelDensityParameter(G4int A, G4int Z, G4double U) const
{
G4double EvapLDP =
theEvaporationLevelDensityParameter.LevelDensityParameter(A,Z,U);
G4double EvapLDP = fNucData->GetLevelDensity(Z, A, U);
if(Z >= ZHigh) { EvapLDP *= afanHigh; }
else if(Z <= ZLow) { EvapLDP *= afanLow; }
@@ -63,7 +60,7 @@ LevelDensityParameter(G4int A, G4int Z, G4double U) const
void G4FissionLevelDensityParameterINCLXX::UpdateAfanSlope() {
if(ZHigh!=ZLow)
afanSlope = (afanHigh-afanLow)/((double)(ZHigh-ZLow));
afanSlope = (afanHigh-afanLow)/((G4double)(ZHigh-ZLow));
else
afanSlope = 0.;
}
@@ -24,7 +24,6 @@
// ********************************************************************
//
//
// $Id: G4FissionParameters.cc 89550 2015-04-17 08:38:15Z gcosmo $
//
// Hadronic Process: Nuclear De-excitations
// by V. Lara (Oct 1998)
@@ -24,7 +24,6 @@
// ********************************************************************
//
//
// $Id: G4FissionProbability.cc 105799 2017-08-21 07:35:55Z gcosmo $
//
// Hadronic Process: Nuclear De-excitations
// by V. Lara (Oct 1998)
@@ -69,8 +68,8 @@ G4FissionProbability::EmissionProbability(const G4Fragment & fragment,
G4double U = fragment.GetExcitationEnergy();
G4double Ucompound = U - fPairCorr->GetPairingCorrection(A,Z);
G4double Ufission = U - fPairCorr->GetFissionPairingCorrection(A,Z);
if(Ucompound < 0.0 || Ufission < 0.0) { return 0.0; }
G4double SystemEntropy =
2.0*std::sqrt(theEvapLDP->LevelDensityParameter(A,Z,Ucompound)*Ucompound);
@@ -78,22 +77,11 @@ G4FissionProbability::EmissionProbability(const G4Fragment & fragment,
G4double afission = theFissLDP->LevelDensityParameter(A,Z,Ufission);
G4double Cf = 2.0*std::sqrt(afission*MaximalKineticEnergy);
// G4double Q1 = 1.0 + (Cf - 1.0)*G4Exp(Cf);
// G4double Q2 = 4.0*pi*afission*G4Exp(SystemEntropy);
// G4double probability = Q1/Q2;
G4double Exp1 = 0.0;
if (SystemEntropy <= 160.0) { Exp1 = G4Exp(-SystemEntropy); }
// @@@@@@@@@@@@@@@@@ hpw changed max to min - cannot notify vicente now
G4double Exp2 = G4Exp( std::min(300.0,Cf-SystemEntropy) );
G4double Exp1 = (SystemEntropy <= 160.0) ? G4Exp(-SystemEntropy) : 0.0;
G4double Exp2 = (SystemEntropy-Cf <= 160.0) ? G4Exp(-SystemEntropy+Cf) : 0.0;
// JMQ 14/02/09 BUG fixed in fission probability (missing parenthesis
// at denominator)
//AH fix from Vincente: G4double probability =
// (Exp1 + (1.0-Cf)*Exp2) / 4.0*pi*afission;
// G4double probability = (Exp1 + (Cf-1.0)*Exp2) / 4.0*pi*afission;
G4double probability = (Exp1 + (Cf-1.0)*Exp2) / (4.0*pi*afission);
return probability;
@@ -24,7 +24,6 @@
// ********************************************************************
//
//
// $Id: G4VFissionBarrier.cc 67983 2013-03-13 10:42:03Z gcosmo $
//
// Hadronic Process: Nuclear De-excitations
// by V. Lara (Oct 1998)