Import Geant4 10.6.0 source tree

This commit is contained in:
Gabriele Cosmo
2019-12-06 15:12:28 +01:00
parent b2a62ae692
commit 5baee230e9
2997 changed files with 141580 additions and 98673 deletions
@@ -59,7 +59,7 @@ class G4ParticleHPChannel
public:
G4ParticleHPChannel(G4ParticleDefinition* projectile)
: wendtFissionGenerator(getenv("G4NEUTRON_HP_USE_WENDT_FISSION_MODEL") == NULL ? NULL : G4WendtFissionFragmentGenerator::GetInstance())
: wendtFissionGenerator(std::getenv("G4NEUTRON_HP_USE_WENDT_FISSION_MODEL") == NULL ? NULL : G4WendtFissionFragmentGenerator::GetInstance())
{
theProjectile = const_cast<G4ParticleDefinition*>(projectile);
theChannelData = new G4ParticleHPVector;
@@ -73,7 +73,7 @@ public:
}
G4ParticleHPChannel()
: wendtFissionGenerator(getenv("G4NEUTRON_HP_USE_WENDT_FISSION_MODEL") == NULL ? NULL : G4WendtFissionFragmentGenerator::GetInstance())
: wendtFissionGenerator(std::getenv("G4NEUTRON_HP_USE_WENDT_FISSION_MODEL") == NULL ? NULL : G4WendtFissionFragmentGenerator::GetInstance())
{
theProjectile = G4Neutron::Neutron();
theChannelData = new G4ParticleHPVector;
@@ -94,7 +94,7 @@ class G4ParticleHPContAngularPar
G4double GetEnergy()
{
if( getenv("G4PHPTEST") )
if( std::getenv("G4PHPTEST") )
G4cout << this << " G4ParticleHPContAngularPar::GetEnergy "
<< theEnergy << " nE " << nEnergies << G4endl;
return theEnergy;
@@ -90,7 +90,7 @@ class G4ParticleHPDeExGammas
inline G4ParticleHPLevel * GetLevel(G4int i)
{
if(getenv("G4PHPTEST")) G4cout << this << " GetLEVEL " << i << " n " << nLevels << G4endl;
if(std::getenv("G4PHPTEST")) G4cout << this << " GetLEVEL " << i << " n " << nLevels << G4endl;
if(i>nLevels-1) return 0;
return theLevels+i;
}
@@ -47,7 +47,7 @@ class G4ParticleHPDiscreteTwoBody : public G4VParticleHPEnergyAngular
{
theCoeff = 0;
bCheckDiffCoeffRepr = true;
if ( getenv( "G4PHP_DO_NOT_CHECK_DIFF_COEFF_REPR" ) ) bCheckDiffCoeffRepr = false;
if ( std::getenv( "G4PHP_DO_NOT_CHECK_DIFF_COEFF_REPR" ) ) bCheckDiffCoeffRepr = false;
nEnergy = 0;
}
~G4ParticleHPDiscreteTwoBody()
@@ -93,7 +93,7 @@ public:
inline void Init(std::istream & aDataFile)
{
bAdjustFinalState = true;
const char* ctmp = getenv("G4PHP_DO_NOT_ADJUST_FINAL_STATE");
const char* ctmp = std::getenv("G4PHP_DO_NOT_ADJUST_FINAL_STATE");
if( ctmp && G4String(ctmp) == "1" )
{
bAdjustFinalState = false;
@@ -62,7 +62,7 @@ public:
theNDLDataM = 0;
adjustResult = true;
if ( getenv( "G4PHP_DO_NOT_ADJUST_FINAL_STATE" ) ) adjustResult = false;
if ( std::getenv( "G4PHP_DO_NOT_ADJUST_FINAL_STATE" ) ) adjustResult = false;
theProjectile = G4Neutron::Neutron();
@@ -44,52 +44,63 @@ class G4ParticleHPInelasticBaseFS : public G4ParticleHPFinalState
{
public:
G4ParticleHPInelasticBaseFS()
{
hasXsec = true;
theXsection = new G4ParticleHPVector;
G4ParticleHPInelasticBaseFS()
{
hasXsec = true;
theXsection = new G4ParticleHPVector;
theEnergyDistribution = 0;
theFinalStatePhotons = 0;
theEnergyAngData = 0;
theAngularDistribution = 0;
theEnergyDistribution = 0;
theFinalStatePhotons = 0;
theEnergyAngData = 0;
theAngularDistribution = 0;
theNuclearMassDifference = 0.0;
theNuclearMassDifference = 0.0;
Qvalue = 0.0;
}
}
virtual ~G4ParticleHPInelasticBaseFS()
{
delete theXsection;
if(theEnergyDistribution!=0) delete theEnergyDistribution;
if(theFinalStatePhotons!=0) delete theFinalStatePhotons;
if(theEnergyAngData!=0) delete theEnergyAngData;
if(theAngularDistribution!=0) delete theAngularDistribution;
}
virtual ~G4ParticleHPInelasticBaseFS()
{
delete theXsection;
if (theEnergyDistribution != 0) delete theEnergyDistribution;
if (theFinalStatePhotons != 0) delete theFinalStatePhotons;
if (theEnergyAngData != 0) delete theEnergyAngData;
if (theAngularDistribution != 0) delete theAngularDistribution;
}
void Init (G4double A, G4double Z, G4int M, G4String & dirName, G4String & bit, G4ParticleDefinition*);
void BaseApply(const G4HadProjectile & theTrack, G4ParticleDefinition ** theDefs, G4int nDef);
void InitGammas(G4double AR, G4double ZR);
virtual G4HadFinalState * ApplyYourself(const G4HadProjectile & theTrack) = 0;
virtual G4ParticleHPFinalState * New() = 0;
virtual G4double GetXsec(G4double anEnergy)
{
return std::max(0., theXsection->GetY(anEnergy));
}
virtual G4ParticleHPVector * GetXsec() { return theXsection; }
void Init (G4double A, G4double Z, G4int M, G4String& dirName,
G4String& bit, G4ParticleDefinition*);
protected:
void BaseApply(const G4HadProjectile& theTrack,
G4ParticleDefinition** theDefs, G4int nDef);
void InitGammas(G4double AR, G4double ZR);
virtual G4HadFinalState* ApplyYourself(const G4HadProjectile& theTrack) = 0;
virtual G4ParticleHPFinalState* New() = 0;
G4ParticleHPVector * theXsection;
G4ParticleHPEnergyDistribution * theEnergyDistribution;
G4ParticleHPAngular * theAngularDistribution;
G4ParticleHPEnAngCorrelation * theEnergyAngData;
virtual G4double GetXsec(G4double anEnergy)
{
return std::max(0., theXsection->GetY(anEnergy));
}
virtual G4ParticleHPVector* GetXsec() {return theXsection;}
protected:
G4ParticleHPPhotonDist * theFinalStatePhotons;
G4double theNuclearMassDifference;
G4ParticleHPDeExGammas theGammas;
G4String gammaPath;
G4ParticleHPVector* theXsection;
G4ParticleHPEnergyDistribution* theEnergyDistribution;
G4ParticleHPAngular* theAngularDistribution;
G4ParticleHPEnAngCorrelation* theEnergyAngData;
G4ParticleHPPhotonDist* theFinalStatePhotons;
G4double theNuclearMassDifference;
G4ParticleHPDeExGammas theGammas;
G4String gammaPath;
G4double Qvalue;
private:
};
#endif
@@ -26,6 +26,11 @@
//
// P. Arce, June-2014 Conversion neutron_hp to particle_hp
//
// June-2019 - E. Mendoza - re-build "two_body_reaction", to be used by
// incident charged particles (now isotropic emission in the CMS).
// Also restrict nresp use below 20 MeV (for future developments).
// Add photon emission when no data available.
#ifndef G4ParticleHPInelasticCompFS_h
#define G4ParticleHPInelasticCompFS_h 1
@@ -46,87 +51,94 @@ class G4ParticleHPInelasticCompFS : public G4ParticleHPFinalState
{
public:
G4ParticleHPInelasticCompFS()
{
QI.resize(51);
LR.resize(51);
for(G4int i=0; i<51; i++)
G4ParticleHPInelasticCompFS()
{
hasXsec = true;
theXsection[i] = 0;
theEnergyDistribution[i] = 0;
theAngularDistribution[i] = 0;
theEnergyAngData[i] = 0;
theFinalStatePhotons[i] = 0;
QI[i]=0.0;
LR[i]=0;
QI.resize(51);
LR.resize(51);
for(G4int i=0; i<51; i++) {
hasXsec = true;
theXsection[i] = 0;
theEnergyDistribution[i] = 0;
theAngularDistribution[i] = 0;
theEnergyAngData[i] = 0;
theFinalStatePhotons[i] = 0;
QI[i] = 0.0;
LR[i] = 0;
}
}
}
virtual ~G4ParticleHPInelasticCompFS()
{
for(G4int i=0; i<51; i++)
virtual ~G4ParticleHPInelasticCompFS()
{
if(theXsection[i] != 0) delete theXsection[i];
if(theEnergyDistribution[i] != 0) delete theEnergyDistribution[i];
if(theAngularDistribution[i] != 0) delete theAngularDistribution[i];
if(theEnergyAngData[i] != 0) delete theEnergyAngData[i];
if(theFinalStatePhotons[i] != 0) delete theFinalStatePhotons[i];
for(G4int i=0; i<51; i++) {
if (theXsection[i] != 0) delete theXsection[i];
if (theEnergyDistribution[i] != 0) delete theEnergyDistribution[i];
if (theAngularDistribution[i] != 0) delete theAngularDistribution[i];
if (theEnergyAngData[i] != 0) delete theEnergyAngData[i];
if (theFinalStatePhotons[i] != 0) delete theFinalStatePhotons[i];
}
}
}
void Init (G4double A, G4double Z, G4int M, G4String & dirName, G4String & aSFType, G4ParticleDefinition*);
void InitGammas(G4double AR, G4double ZR);
virtual G4HadFinalState * ApplyYourself(const G4HadProjectile & theTrack) = 0;
virtual G4ParticleHPFinalState * New() = 0;
virtual G4double GetXsec(G4double anEnergy)
{
return std::max(0., theXsection[50]->GetY(anEnergy));
}
virtual G4ParticleHPVector * GetXsec() { return theXsection[50]; }
G4int SelectExitChannel(G4double eKinetic);
void CompositeApply(const G4HadProjectile & theTrack, G4ParticleDefinition * aHadron);
inline void InitDistributionInitialState(G4ReactionProduct & anIncidentPart,
G4ReactionProduct & aTarget,
G4int it)
{
if(theAngularDistribution[it]!=0)
void Init(G4double A, G4double Z, G4int M, G4String& dirName,
G4String& aSFType, G4ParticleDefinition*);
void InitGammas(G4double AR, G4double ZR);
virtual G4HadFinalState* ApplyYourself(const G4HadProjectile& theTrack) = 0;
virtual G4ParticleHPFinalState* New() = 0;
virtual G4double GetXsec(G4double anEnergy)
{
theAngularDistribution[it]->SetTarget(aTarget);
theAngularDistribution[it]->SetProjectileRP(anIncidentPart);
return std::max(0., theXsection[50]->GetY(anEnergy));
}
if(theEnergyAngData[it]!=0)
virtual G4ParticleHPVector* GetXsec() { return theXsection[50]; }
G4int SelectExitChannel(G4double eKinetic);
void CompositeApply(const G4HadProjectile& theTrack,
G4ParticleDefinition* aHadron);
inline void InitDistributionInitialState(G4ReactionProduct& anIncidentPart,
G4ReactionProduct& aTarget,
G4int it)
{
theEnergyAngData[it]->SetTarget(aTarget);
theEnergyAngData[it]->SetProjectileRP(anIncidentPart);
if (theAngularDistribution[it] != 0) {
theAngularDistribution[it]->SetTarget(aTarget);
theAngularDistribution[it]->SetProjectileRP(anIncidentPart);
}
if (theEnergyAngData[it] != 0) {
theEnergyAngData[it]->SetTarget(aTarget);
theEnergyAngData[it]->SetProjectileRP(anIncidentPart);
}
}
}
protected:
protected:
G4ParticleHPVector * theXsection[51];
G4ParticleHPEnergyDistribution * theEnergyDistribution[51];
G4ParticleHPAngular * theAngularDistribution[51];
G4ParticleHPEnAngCorrelation * theEnergyAngData[51];
G4ParticleHPVector* theXsection[51];
G4ParticleHPEnergyDistribution* theEnergyDistribution[51];
G4ParticleHPAngular* theAngularDistribution[51];
G4ParticleHPEnAngCorrelation* theEnergyAngData[51];
G4ParticleHPPhotonDist * theFinalStatePhotons[51];
G4ParticleHPPhotonDist* theFinalStatePhotons[51];
G4ParticleHPDeExGammas theGammas;
G4String gammaPath;
G4ParticleHPDeExGammas theGammas;
G4String gammaPath;
//G4double theCurrentA;
//G4double theCurrentZ;
protected:
std::vector<G4double> QI;
std::vector<G4int> LR;
protected:
std::vector < G4double > QI;
std::vector <G4int > LR;
private:
// (projectile, target, hadron, mu of hadron)
void two_body_reaction(G4ReactionProduct* proj, G4ReactionProduct* targ,
G4ReactionProduct* product, G4double resExcitationEnergy);
private:
// proj targ had mu of had
void two_body_reaction ( G4DynamicParticle* , G4DynamicParticle* , G4DynamicParticle* , G4double mu );
G4NRESP71M03 nresp71_model;
G4bool use_nresp71_model( const G4ParticleDefinition* aDefinition, const G4int it , const G4ReactionProduct& theTarget , G4ReactionProduct& boosted);
G4NRESP71M03 nresp71_model;
G4bool use_nresp71_model(const G4ParticleDefinition* aDefinition, const G4int it,
const G4ReactionProduct& theTarget, G4ReactionProduct& boosted);
};
#endif
@@ -26,6 +26,8 @@
//
// P. Arce, June-2014 Conversion neutron_hp to particle_hp
//
// June-2019 - E. Mendoza --> perform some corrections
#ifndef G4ParticleHPKallbachMannSyst_h
#define G4ParticleHPKallbachMannSyst_h 1
@@ -39,7 +41,8 @@ class G4ParticleHPKallbachMannSyst
G4double anIncidentEnergy, G4double anIncidentMass,
G4double aProductEnergy, G4double aProductMass,
G4double aResidualMass, G4int aResidualA, G4int aResidualZ,
G4double aTargetMass, G4int aTargetA, G4int aTargetZ)
G4double aTargetMass, G4int aTargetA, G4int aTargetZ,
G4int aProjectileA,G4int aProjectileZ,G4int aProductA,G4int aProductZ)
{
theCompoundFraction = aCompoundFraction;
theIncidentEnergy = anIncidentEnergy;
@@ -52,6 +55,10 @@ class G4ParticleHPKallbachMannSyst
theTargetMass = aTargetMass;
theTargetA = aTargetA;
theTargetZ = aTargetZ;
theProjectileA=aProjectileA;
theProjectileZ=aProjectileZ;
theProductA=aProductA;
theProductZ=aProductZ;
}
~G4ParticleHPKallbachMannSyst() {};
@@ -64,7 +71,7 @@ class G4ParticleHPKallbachMannSyst
G4double A(G4double anEnergy);
G4double SeparationEnergy(G4int Ac, G4int Nc, G4int AA, G4int ZA);
G4double SeparationEnergy(G4int Ac, G4int Nc, G4int AA, G4int ZA,G4int Abinding,G4int Zbinding);
private:
@@ -79,6 +86,10 @@ class G4ParticleHPKallbachMannSyst
G4int theResidualZ;
G4int theTargetA;
G4int theTargetZ;
G4int theProjectileA;
G4int theProjectileZ;
G4int theProductA;
G4int theProductZ;
};
#endif
@@ -68,7 +68,7 @@ public:
toBeCached val;
fCache.Put( val );
char * method = getenv( "G4PHP_MULTIPLICITY_METHOD" );
char * method = std::getenv( "G4PHP_MULTIPLICITY_METHOD" );
if( method )
{
if( G4String(method) == "Poisson" ) {
@@ -100,11 +100,11 @@ public:
{
aDataFile >> theMassCode>>theMass>>theIsomerFlag>>theDistLaw
>> theGroundStateQValue>>theActualStateQValue;
if( getenv("G4PHPTEST") )
if( std::getenv("G4PHPTEST") )
G4cout << " G4ParticleHPProduct :: Init MassCode "
<< theMassCode << " " << theMass << " theActualStateQValue "
<< theActualStateQValue << G4endl;// GDEB
if( getenv("G4PHPTEST") )
if( std::getenv("G4PHPTEST") )
G4cout << " G4ParticleHPProduct :: Init theActualStateQValue "
<< theActualStateQValue << G4endl;// GDEB
theGroundStateQValue*= CLHEP::eV;