Import Geant4 11.0.0 source tree

This commit is contained in:
Gabriele Cosmo
2021-12-10 14:46:44 +01:00
committed by Ben Morgan
parent 6399a014b6
commit 80e2389dd8
3932 changed files with 202519 additions and 246221 deletions
@@ -184,7 +184,7 @@ namespace G4INCL {
/** Bias apply for this reaction in order to get the same
* ParticleBias for all stange particles.
* Can be reduced after because of the watchdog.
* Can be reduced after because of the safeguard.
*/
G4double bias_apply = 1.;
if(bias != 1.) bias_apply = Particle::getBiasFromVector(Particle::MergeVectorBias(particle1,particle2)) * bias;
@@ -148,10 +148,13 @@ namespace G4INCL {
// Fill in the global information
theGlobalInfo.At = theConfig->getTargetA();
theGlobalInfo.Zt = theConfig->getTargetZ();
theGlobalInfo.St = theConfig->getTargetS();
const ParticleSpecies theSpecies = theConfig->getProjectileSpecies();
theGlobalInfo.Ap = theSpecies.theA;
theGlobalInfo.Zp = theSpecies.theZ;
theGlobalInfo.Sp = theSpecies.theS;
theGlobalInfo.Ep = theConfig->getProjectileKineticEnergy();
theGlobalInfo.biasFactor = theConfig->getBias();
#endif
fixedImpactParameter = theConfig->getImpactParameter();
@@ -86,7 +86,7 @@ namespace G4INCL {
// From Kamano
else {
const G4double pi=std::acos(-1.0);
const G4double pi=std::acos(-1.0);
G4double x1;
G4double u1;
G4double fteta;
@@ -86,7 +86,7 @@ namespace G4INCL {
const std::map<G4int,InterpolationTable*>::const_iterator mapEntry = rpCorrelationTableCache->find(nuclideID);
if(mapEntry == rpCorrelationTableCache->end()) {
INCL_DEBUG("Creating r-p correlation function for " << ((t==Proton) ? "protons" : "neutrons") << " in A=" << A << ", Z=" << Z << std::endl);
INCL_DEBUG("Creating r-p correlation function for " << ((t==Proton) ? "protons" : ((t==Neutron) ? "neutrons" : "lambdas")) << " in A=" << A << ", Z=" << Z << std::endl);
IFunction1D *rpCorrelationFunction;
if(A > 19) {
@@ -105,9 +105,11 @@ namespace G4INCL {
vSigmaZero = -16.; // hypothesis: same potential for each sigma
vSigmaPlus = -16.;
vLambda = 28.;
vLambda = 30.;
const G4double asy = (theA - 2.*theZ)/theA;
if(asy>0.11)vLambda = 56.549-678.73*asy+4905.35*std::pow(asy,2.)-9789.1*std::pow(asy,3.); // Jose Luis Rodriguez-Sanchez et al., Rapid Communication PRC
// Jose Luis Rodriguez-Sanchez et al., Rapid Communication PRC 98, 021602 (2018)
if (asy > 0.236) vLambda = 40.91;
else if (asy > 0.133) vLambda = 56.549 - 678.73*asy + 4905.35*asy*asy - 9789.1*asy*asy*asy;
const G4double theLambdaSeparationEnergy = ParticleTable::getSeparationEnergy(Lambda,theA,theZ);
@@ -96,7 +96,7 @@ namespace G4INCL {
omega->setEnergy(ee);
G4double pn=std::sqrt(en*en-mn*mn);
/*// test isotropy
const G4double pi=std::acos(-1.0);
const G4double pi=std::acos(-1.0);
G4double x1;
G4double u1;
G4double fteta;
@@ -48,11 +48,12 @@
namespace G4INCL {
ParticleSampler::ParticleSampler(const G4int A, const G4int Z) :
ParticleSampler::ParticleSampler(const G4int A, const G4int Z, const G4int S) :
sampleOneProton(&ParticleSampler::sampleOneParticleWithoutRPCorrelation),
sampleOneNeutron(&ParticleSampler::sampleOneParticleWithoutRPCorrelation),
theA(A),
theZ(Z),
theS(S),
theDensity(NULL),
thePotential(NULL)
{
@@ -61,6 +62,7 @@ namespace G4INCL {
std::fill(rpCorrelationCoefficient, rpCorrelationCoefficient + UnknownParticle, 1.);
rpCorrelationCoefficient[Proton] = ParticleTable::getRPCorrelationCoefficient(Proton);
rpCorrelationCoefficient[Neutron] = ParticleTable::getRPCorrelationCoefficient(Neutron);
rpCorrelationCoefficient[Lambda] = ParticleTable::getRPCorrelationCoefficient(Lambda);
}
ParticleSampler::~ParticleSampler() {
@@ -108,6 +110,8 @@ namespace G4INCL {
thePCDFTable[Proton] = NuclearDensityFactory::createPCDFTable(Proton, theA, theZ);
theRCDFTable[Neutron] = NuclearDensityFactory::createRCDFTable(Neutron, theA, theZ);
thePCDFTable[Neutron] = NuclearDensityFactory::createPCDFTable(Neutron, theA, theZ);
theRCDFTable[Lambda] = NuclearDensityFactory::createRCDFTable(Lambda, theA, theZ);
thePCDFTable[Lambda] = NuclearDensityFactory::createPCDFTable(Lambda, theA, theZ);
}
theList.resize(theA);
@@ -116,9 +120,10 @@ namespace G4INCL {
ParticleSamplerMethod sampleOneParticle = sampleOneProton;
for(G4int i = 0; i < theA; ++i) {
if(i == theZ) { // Nucleons [Z..A-1] are neutrons
type = Neutron;
sampleOneParticle = sampleOneNeutron;
type = Lambda;
sampleOneParticle = sampleOneNeutron; // hypothesis: Lambdas follow the same rules than neutrons
}
if(i == theZ - theS) type = Neutron;
Particle *p = (this->*sampleOneParticle)(type);
p->setPosition(position + p->getPosition());
theList[i] = p;
@@ -89,7 +89,7 @@ namespace G4INCL {
G4double ECM=G4INCL::KinematicsUtils::totalEnergyInCM(particle1,particle2);
const G4double pi=std::acos(-1.0);
const G4double pi=std::acos(-1.0);
G4double x1;
G4double u1;
G4double fteta;
@@ -74,14 +74,15 @@ namespace G4INCL {
}
void ProjectileRemnant::removeParticle(Particle * const p, const G4double theProjectileCorrection) {
// assert(p->isNucleon());
// assert(p->isNucleon() || p->isLambda());
INCL_DEBUG("The following Particle is about to be removed from the ProjectileRemnant:"
<< '\n' << p->print()
<< "theProjectileCorrection=" << theProjectileCorrection << '\n');
// Update A, Z, momentum and energy of the projectile remnant
// Update A, Z, S, momentum, and energy of the projectile remnant
theA -= p->getA();
theZ -= p->getZ();
theS -= p->getS();
ThreeVector const &oldMomentum = p->getMomentum();
const G4double oldEnergy = p->getEnergy();