Import Geant4 10.6.0.beta source tree

This commit is contained in:
Gabriele Cosmo
2019-06-28 11:59:04 +02:00
parent 28a70706e0
commit d0f911957d
1056 changed files with 95168 additions and 78160 deletions
@@ -13,7 +13,13 @@ introduced in the code and keeptrack of all tags.
* Reverse chronological order (last date on top), please *
----------------------------------------------------------
05-Mar-2019, A. Ribon (phys-ctor-helastic-V10-04-06)
08-May-2019, V. Ivanchenko (phys-ctor-helastic-V10-05-01)
- G4HadronElasticPhysics : use Glauber-Gribov x-section for hyperons
- G4HadronDElasticPhysics, G4HadronDElasticPhysics : use
Glauber-Gribov x-section for hyperons, d, t, He3, He4
- G4HadronElasticPhysicsXS, G4IonElasticPhysics - removed commented lines
05-Mar-2019, A. Ribon (phys-ctor-helastic-V10-05-00)
- G4HadronElasticPhysics : for deuteron, triton and alpha, use Glauber-Gribov
elastic cross sections (instead of Gheisha ones, which returns zero).
@@ -45,7 +45,7 @@
class G4ThermalNeutrons : public G4VHadronPhysics {
public:
explicit G4ThermalNeutrons(G4int ver);
explicit G4ThermalNeutrons(G4int ver=1);
virtual ~G4ThermalNeutrons();
void ConstructProcess() override;
@@ -23,7 +23,6 @@
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
//
//---------------------------------------------------------------------------
//
// ClassName: G4HadronDElasticPhysics
@@ -70,6 +69,8 @@
#include "G4BGGPionElasticXS.hh"
#include "G4NeutronElasticXS.hh"
#include "G4ComponentGGHadronNucleusXsc.hh"
#include "G4ComponentGGNuclNuclXsc.hh"
#include "G4CrossSectionDataSetRegistry.hh"
#include "G4ChipsKaonPlusElasticXS.hh"
@@ -124,6 +125,12 @@ void G4HadronDElasticPhysics::ConstructProcess()
G4CrossSectionElastic* anucxs =
new G4CrossSectionElastic(anuc->GetComponentCrossSection());
G4VCrossSectionDataSet* theComponentGGHadronNucleusData =
new G4CrossSectionElastic( new G4ComponentGGHadronNucleusXsc );
G4VCrossSectionDataSet* theComponentGGNuclNuclData =
new G4CrossSectionElastic( new G4ComponentGGNuclNuclXsc );
G4HadronElastic* lhep0 = new G4HadronElastic();
G4HadronElastic* lhep1 = new G4HadronElastic();
lhep1->SetMaxEnergy(10.1*MeV);
@@ -159,6 +166,7 @@ void G4HadronDElasticPhysics::ConstructProcess()
hel = new G4HadronElasticProcess();
hel->RegisterMe(lhep0);
hel->AddDataSet( theComponentGGHadronNucleusData );
pmanager->AddDiscreteProcess(hel);
if(verbose > 1) {
G4cout << "### HadronDElasticPhysics: " << hel->GetProcessName()
@@ -178,11 +186,10 @@ void G4HadronDElasticPhysics::ConstructProcess()
G4cout << "### HadronDElasticPhysics: " << hel->GetProcessName()
<< " added for " << particle->GetParticleName() << G4endl;
}
} else if(pname == "neutron") {
hel = new G4HadronElasticProcess();
hel->AddDataSet(G4CrossSectionDataSetRegistry::Instance()->GetCrossSectionDataSet(G4NeutronElasticXS::Default_Name()));
hel->AddDataSet(new G4NeutronElasticXS());
model = new G4DiffuseElastic();
hel->RegisterMe(lhep1);
hel->RegisterMe(model);
@@ -192,7 +199,6 @@ void G4HadronDElasticPhysics::ConstructProcess()
<< hel->GetProcessName()
<< " added for " << particle->GetParticleName() << G4endl;
}
} else if (pname == "pi+" || pname == "pi-") {
hel = new G4HadronElasticProcess();
@@ -205,45 +211,36 @@ void G4HadronDElasticPhysics::ConstructProcess()
G4cout << "### HadronDElasticPhysics: " << hel->GetProcessName()
<< " added for " << particle->GetParticleName() << G4endl;
}
} else if(pname == "kaon-") {
hel = new G4HadronElasticProcess();
hel->AddDataSet(G4CrossSectionDataSetRegistry::Instance()->GetCrossSectionDataSet(G4ChipsKaonMinusElasticXS::Default_Name()));
model = new G4DiffuseElastic();
hel->RegisterMe(lhep1);
hel->RegisterMe(model);
pmanager->AddDiscreteProcess(hel);
if(verbose > 1) {
G4cout << "### HadronElasticPhysics: " << hel->GetProcessName()
<< " added for " << particle->GetParticleName() << G4endl;
}
} else if(pname == "kaon+") {
hel = new G4HadronElasticProcess();
hel->AddDataSet(G4CrossSectionDataSetRegistry::Instance()->GetCrossSectionDataSet(G4ChipsKaonPlusElasticXS::Default_Name()));
model = new G4DiffuseElastic();
hel->RegisterMe(lhep1);
hel->RegisterMe(model);
pmanager->AddDiscreteProcess(hel);
if(verbose > 1) {
G4cout << "### HadronElasticPhysics: " << hel->GetProcessName()
<< " added for " << particle->GetParticleName() << G4endl;
}
} else if(pname == "kaon0S" ||
} else if(pname == "kaon-" ||
pname == "kaon+" ||
pname == "kaon0S" ||
pname == "kaon0L"
) {
hel = new G4HadronElasticProcess();
hel->AddDataSet(G4CrossSectionDataSetRegistry::Instance()->GetCrossSectionDataSet(G4ChipsKaonZeroElasticXS::Default_Name()));
model = new G4DiffuseElastic();
hel->RegisterMe(lhep1);
hel->RegisterMe(model);
hel->AddDataSet( theComponentGGHadronNucleusData );
pmanager->AddDiscreteProcess(hel);
if(verbose > 1) {
G4cout << "### HadronElasticPhysics: " << hel->GetProcessName()
<< " added for " << particle->GetParticleName() << G4endl;
}
} else if(pname == "alpha" ||
pname == "deuteron" ||
pname == "triton" ||
pname == "He3"
) {
hel = new G4HadronElasticProcess();
hel->AddDataSet(theComponentGGNuclNuclData);
hel->RegisterMe(lhep0);
pmanager->AddDiscreteProcess(hel);
if(verbose > 1) {
G4cout << "### HadronElasticPhysics: " << hel->GetProcessName()
<< " added for " << particle->GetParticleName() << G4endl;
}
} else if(
pname == "anti_proton" ||
pname == "anti_alpha" ||
@@ -130,6 +130,9 @@ void G4HadronElasticPhysics::ConstructProcess()
G4VCrossSectionDataSet* theComponentGGHadronNucleusData =
new G4CrossSectionElastic( new G4ComponentGGHadronNucleusXsc );
G4VCrossSectionDataSet* theComponentGGNuclNuclData =
new G4CrossSectionElastic( new G4ComponentGGNuclNuclXsc );
G4HadronElasticProcess* hel = nullptr;
auto myParticleIterator=GetParticleIterator();
@@ -155,6 +158,7 @@ void G4HadronElasticPhysics::ConstructProcess()
hel = new G4HadronElasticProcess();
hel->RegisterMe(lhep0);
hel->AddDataSet( theComponentGGHadronNucleusData );
pmanager->AddDiscreteProcess(hel);
if(verbose > 1) {
G4cout << "### HadronElasticPhysics: " << hel->GetProcessName()
@@ -167,8 +171,6 @@ void G4HadronElasticPhysics::ConstructProcess()
pname == "He3"
) {
hel = new G4HadronElasticProcess();
G4VCrossSectionDataSet* theComponentGGNuclNuclData =
new G4CrossSectionElastic(new G4ComponentGGNuclNuclXsc());
hel->AddDataSet(theComponentGGNuclNuclData);
hel->RegisterMe(lhep0);
pmanager->AddDiscreteProcess(hel);
@@ -181,9 +183,6 @@ void G4HadronElasticPhysics::ConstructProcess()
hel = new G4HadronElasticProcess();
hel->AddDataSet(new G4BGGNucleonElasticXS(particle));
//hel->AddDataSet(G4CrossSectionDataSetRegistry::Instance()->GetCrossSectionDataSet(G4ChipsProtonElasticXS::Default_Name()));
hel->RegisterMe(new G4ChipsElasticModel());
pmanager->AddDiscreteProcess(hel);
if(verbose > 1) {
@@ -194,7 +193,7 @@ void G4HadronElasticPhysics::ConstructProcess()
} else if(pname == "neutron") {
hel = new G4HadronElasticProcess();
hel->AddDataSet(G4CrossSectionDataSetRegistry::Instance()->GetCrossSectionDataSet(G4NeutronElasticXS::Default_Name()));
hel->AddDataSet(new G4NeutronElasticXS());
hel->RegisterMe(new G4ChipsElasticModel());
pmanager->AddDiscreteProcess(hel);
if(verbose > 1) {
@@ -23,7 +23,6 @@
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
//
//---------------------------------------------------------------------------
//
// ClassName: G4HadronElasticPhysicsXS
@@ -68,14 +67,5 @@ G4HadronElasticPhysicsXS::~G4HadronElasticPhysicsXS()
void G4HadronElasticPhysicsXS::ConstructProcess()
{
G4HadronElasticPhysics::ConstructProcess();
/*
const G4ParticleDefinition* part = G4Proton::Proton();
AddXSection(part, new G4BGGNucleonElasticXS(part));
if(verbose > 1) {
G4cout << "### G4HadronElasticPhysicsXS is constructed "
<< G4endl;
}
*/
}
@@ -23,7 +23,6 @@
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
//
//---------------------------------------------------------------------------
//
// ClassName: G4HadronHElasticPhysics
@@ -133,6 +132,8 @@ void G4HadronHElasticPhysics::ConstructProcess() {
G4HadronElastic* lhep = new G4HadronElastic();
lhep->SetMaxEnergy( elimitAntiNuc + delta );
G4HadronElastic* lhep0 = new G4HadronElastic();
// Three instances of Chips elastic model: one used everywhere,
// one used below a energy threshold, and one used only for the
// hydrogen element.
@@ -223,7 +224,7 @@ void G4HadronHElasticPhysics::ConstructProcess() {
} else if ( pname == "neutron" ) {
hel = new G4HadronElasticProcess();
hel->AddDataSet(G4CrossSectionDataSetRegistry::Instance()->GetCrossSectionDataSet(G4NeutronElasticXS::Default_Name()) );
hel->AddDataSet(new G4NeutronElasticXS() );
// To preserve reproducibility, a different instance of
// G4DiffuseElastic must be used for each particle type.
G4DiffuseElastic* neutronDiffuseElastic = new G4DiffuseElastic();
@@ -238,31 +239,15 @@ void G4HadronHElasticPhysics::ConstructProcess() {
<< " added for " << particle->GetParticleName() << G4endl;
}
} else if ( pname == "pi-" ) {
} else if ( pname == "pi-" || pname == "pi+" ) {
hel = new G4HadronElasticProcess();
hel->AddDataSet( new G4BGGPionElasticXS( particle ) );
// To preserve reproducibility, a different instance of
// G4DiffuseElastic must be used for each particle type.
G4DiffuseElastic* pionMinusDiffuseElastic = new G4DiffuseElastic();
pionMinusDiffuseElastic->SetMinEnergy( elimitDiffuse );
G4DiffuseElastic* dElastic = new G4DiffuseElastic();
dElastic->SetMinEnergy( elimitDiffuse );
hel->RegisterMe( chipsH ); // Use Chips only for Hydrogen element
hel->RegisterMe( pionMinusDiffuseElastic );
pmanager->AddDiscreteProcess( hel );
if(fDiffraction) { hel->SetDiffraction(diffGen, diffRatio); }
if ( verbose > 1 ) {
G4cout << "### HadronElasticPhysics: " << hel->GetProcessName()
<< " added for " << particle->GetParticleName() << G4endl;
}
} else if ( pname == "pi+" ) {
hel = new G4HadronElasticProcess();
hel->AddDataSet( new G4BGGPionElasticXS( particle ) );
// To preserve reproducibility, a different instance of
// G4DiffuseElastic must be used for each particle type.
G4DiffuseElastic* pionPlusDiffuseElastic = new G4DiffuseElastic();
hel->RegisterMe( chipsH ); // Use Chips only for Hydrogen element
pionPlusDiffuseElastic->SetMinEnergy( elimitDiffuse );
hel->RegisterMe( pionPlusDiffuseElastic );
hel->RegisterMe( dElastic );
pmanager->AddDiscreteProcess( hel );
if(fDiffraction) { hel->SetDiffraction(diffGen, diffRatio); }
if ( verbose > 1 ) {
@@ -291,17 +276,16 @@ void G4HadronHElasticPhysics::ConstructProcess() {
<< " added for " << particle->GetParticleName() << G4endl;
}
} else if (
pname == "deuteron" ||
pname == "triton" ||
pname == "He3" ||
pname == "alpha"
) {
} else if(pname == "alpha" ||
pname == "deuteron" ||
pname == "triton" ||
pname == "He3"
) {
hel = new G4HadronElasticProcess();
hel->AddDataSet( theComponentGGNuclNuclData );
hel->RegisterMe( diffuseNuclNuclElastic );
pmanager->AddDiscreteProcess( hel );
if ( verbose > 1 ) {
hel->AddDataSet(theComponentGGNuclNuclData);
hel->RegisterMe(lhep0);
pmanager->AddDiscreteProcess(hel);
if(verbose > 1) {
G4cout << "### HadronElasticPhysics: " << hel->GetProcessName()
<< " added for " << particle->GetParticleName() << G4endl;
}
@@ -331,16 +315,6 @@ void G4HadronHElasticPhysics::ConstructProcess() {
G4cout << "### HadronElasticPhysics: " << hel->GetProcessName()
<< " added for " << particle->GetParticleName() << G4endl;
}
} else if ( pname == "GenericIon" ) {
hel = new G4HadronElasticProcess();
hel->AddDataSet( theComponentGGNuclNuclData );
hel->RegisterMe( diffuseNuclNuclElastic );
pmanager->AddDiscreteProcess( hel );
if ( verbose > 1 ) {
G4cout << "### HadronElasticPhysics: " << hel->GetProcessName()
<< " added for " << particle->GetParticleName() << G4endl;
}
}
}
}
@@ -23,7 +23,6 @@
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
//
//---------------------------------------------------------------------------
//
// ClassName: G4IonElasticPhysics