Import Geant4 11.2.0 source tree
This commit is contained in:
@@ -4,6 +4,13 @@ See `CONTRIBUTING.rst` for details of **required** info/format for each entry,
|
||||
which **must** added in reverse chronological order (newest at the top). It must **not**
|
||||
be used as a substitute for writing good git commit messages!
|
||||
|
||||
## 2023-10-20 Jean-Christophe David (phys-ctor-hinelastic-V11-01-02)
|
||||
- Call G4HadronicBuilder::BuildAntiLightIonsINCLXX() to treat antiproton with INCLXX
|
||||
|
||||
## 2023-10-15 Vladimir Ivanchenko (phys-ctor-hinelastic-V11-01-01)
|
||||
- G4HadronInelasticQBBC - more accurate instantiation of the neutron general process
|
||||
- G4HadrocPhysicsQGSP_BERT_HP - used alternative HP models and cross sections
|
||||
|
||||
## 2023-04-19 Alberto Ribon (phys-ctor-hinelastic-V11-01-00)
|
||||
- Created the new class G4HadronInelasticQBBC_ABLA, which is similar to
|
||||
G4HadronInelasticQBBC_ABLA, except that, for the final-state of nuclear
|
||||
|
||||
@@ -31,6 +31,7 @@
|
||||
// Author: 2 October 2009 V. Ivanchenko
|
||||
//
|
||||
// Modified:
|
||||
// 12.10.2023 V.Ivanchenko added usage of the neutron general process
|
||||
//
|
||||
//----------------------------------------------------------------------------
|
||||
//
|
||||
|
||||
@@ -284,7 +284,7 @@ void G4HadronPhysicsINCLXX::Others()
|
||||
if( param->GetMaxEnergy() > param->EnergyThresholdForHeavyHadrons() ) {
|
||||
|
||||
// anti light ions
|
||||
G4HadronicBuilder::BuildAntiLightIonsFTFP();
|
||||
G4HadronicBuilder::BuildAntiLightIonsINCLXX();
|
||||
|
||||
if ( param->EnableHyperNuclei() ) {
|
||||
// INCLXX is currently capable of handling light hypernuclei projectiles,
|
||||
|
||||
+54
-47
@@ -33,10 +33,13 @@
|
||||
// Modified:
|
||||
// 15.12.2005 G.Folger: migration to non static particles
|
||||
// 08.06.2006 V.Ivanchenko: remove stopping
|
||||
// 20.06.2006 G.Folger: Bertini applies to Kaons, i.e. use SetMinEnergy instead of SetMinPionEnergy
|
||||
// 20.06.2006 G.Folger: Bertini applies to Kaons, i.e. use SetMinEnergy
|
||||
// instead of SetMinPionEnergy
|
||||
// 25.04.2007 G.Folger: Add code for quasielastic
|
||||
// 31.10.2012 A.Ribon: Use G4MiscBuilder
|
||||
// 19.03.2013 A.Ribon: Replace LEP with FTFP
|
||||
// 12.10.2023 V.Ivanchenko added usage of alternative neutron
|
||||
// HP model and cross section
|
||||
//
|
||||
//----------------------------------------------------------------------------
|
||||
//
|
||||
@@ -56,17 +59,21 @@
|
||||
#include "G4BertiniNeutronBuilder.hh"
|
||||
#include "G4NeutronPHPBuilder.hh"
|
||||
|
||||
#include "G4NeutronRadCapture.hh"
|
||||
#include "G4NeutronCaptureXS.hh"
|
||||
#include "G4ParticleHPCaptureData.hh"
|
||||
#include "G4LFission.hh"
|
||||
#include "G4HadronInelasticProcess.hh"
|
||||
#include "G4NeutronCaptureProcess.hh"
|
||||
#include "G4NeutronFissionProcess.hh"
|
||||
|
||||
#include "G4NeutronRadCaptureHP.hh"
|
||||
#include "G4NeutronHPCaptureXS.hh"
|
||||
#include "G4NeutronHPFissionXS.hh"
|
||||
#include "G4NeutronHPInelasticXS.hh"
|
||||
#include "G4NeutronHPInelasticVI.hh"
|
||||
#include "G4NeutronInelasticXS.hh"
|
||||
#include "G4ParticleHPInelastic.hh"
|
||||
#include "G4NeutronFissionVI.hh"
|
||||
#include "G4ProcessVector.hh"
|
||||
#include "G4ProcessManager.hh"
|
||||
|
||||
#include "G4CrossSectionDataSetRegistry.hh"
|
||||
|
||||
#include "G4PhysListUtil.hh"
|
||||
|
||||
#include "G4HadronicParameters.hh"
|
||||
|
||||
// factory
|
||||
@@ -84,6 +91,9 @@ G4HadronPhysicsQGSP_BERT_HP::G4HadronPhysicsQGSP_BERT_HP(const G4String& name, G
|
||||
: G4HadronPhysicsQGSP_BERT(name)
|
||||
{
|
||||
minBERT_neutron = 19.9*MeV;
|
||||
auto param = G4HadronicParameters::Instance();
|
||||
// HP is inconsistent with the neutron general process
|
||||
param->SetEnableNeutronGeneralProcess(false);
|
||||
}
|
||||
|
||||
void G4HadronPhysicsQGSP_BERT_HP::Neutron()
|
||||
@@ -91,43 +101,40 @@ void G4HadronPhysicsQGSP_BERT_HP::Neutron()
|
||||
G4HadronicParameters* param = G4HadronicParameters::Instance();
|
||||
G4bool useFactorXS = param->ApplyFactorXS();
|
||||
|
||||
auto neu = new G4NeutronBuilder( true ); // Fission on
|
||||
AddBuilder(neu);
|
||||
auto qgs = new G4QGSPNeutronBuilder(QuasiElasticQGS);
|
||||
AddBuilder(qgs);
|
||||
qgs->SetMinEnergy(minQGSP_neutron);
|
||||
neu->RegisterMe(qgs);
|
||||
auto ftf = new G4FTFPNeutronBuilder(QuasiElasticFTF);
|
||||
AddBuilder(ftf);
|
||||
ftf->SetMinEnergy(minFTFP_neutron);
|
||||
ftf->SetMaxEnergy(maxFTFP_neutron);
|
||||
neu->RegisterMe(ftf);
|
||||
auto bert = new G4BertiniNeutronBuilder;
|
||||
AddBuilder(bert);
|
||||
bert->SetMinEnergy(minBERT_neutron);
|
||||
bert->SetMaxEnergy(maxBERT_neutron);
|
||||
neu->RegisterMe(bert);
|
||||
auto hp = new G4NeutronPHPBuilder;
|
||||
AddBuilder(hp);
|
||||
neu->RegisterMe(hp);
|
||||
neu->Build();
|
||||
|
||||
const G4ParticleDefinition* neutron = G4Neutron::Neutron();
|
||||
G4HadronicProcess* inel = G4PhysListUtil::FindInelasticProcess( neutron );
|
||||
if(nullptr != inel) {
|
||||
if( useFactorXS ) inel->MultiplyCrossSectionBy( param->XSFactorNucleonInelastic() );
|
||||
}
|
||||
G4HadronicProcess* capture = G4PhysListUtil::FindCaptureProcess( neutron );
|
||||
if ( nullptr != capture ) {
|
||||
G4NeutronRadCapture* theNeutronRadCapture = new G4NeutronRadCapture;
|
||||
theNeutronRadCapture->SetMinEnergy( minBERT_neutron );
|
||||
capture->RegisterMe( theNeutronRadCapture );
|
||||
}
|
||||
G4HadronicProcess* fission = G4PhysListUtil::FindFissionProcess( neutron );
|
||||
if ( nullptr != fission ) {
|
||||
G4LFission* theNeutronLEPFission = new G4LFission;
|
||||
theNeutronLEPFission->SetMinEnergy( minBERT_neutron );
|
||||
theNeutronLEPFission->SetMaxEnergy( G4HadronicParameters::Instance()->GetMaxEnergy() );
|
||||
fission->RegisterMe( theNeutronLEPFission );
|
||||
}
|
||||
auto inel = new G4HadronInelasticProcess( "neutronInelastic", neutron );
|
||||
neutron->GetProcessManager()->AddDiscreteProcess(inel);
|
||||
|
||||
G4QGSPNeutronBuilder qgs(QuasiElasticQGS);
|
||||
qgs.SetMinEnergy(minQGSP_neutron);
|
||||
qgs.Build(inel);
|
||||
|
||||
G4FTFPNeutronBuilder ftf(QuasiElasticFTF);
|
||||
ftf.SetMinEnergy(minFTFP_neutron);
|
||||
ftf.SetMaxEnergy(maxFTFP_neutron);
|
||||
ftf.Build(inel);
|
||||
|
||||
G4BertiniNeutronBuilder bert;
|
||||
bert.SetMinEnergy(minBERT_neutron);
|
||||
bert.SetMaxEnergy(maxBERT_neutron);
|
||||
bert.Build(inel);
|
||||
|
||||
auto xsinel = new G4NeutronInelasticXS();
|
||||
inel->AddDataSet( xsinel );
|
||||
inel->AddDataSet( new G4NeutronHPInelasticXS() );
|
||||
auto mod = new G4NeutronHPInelasticVI();
|
||||
mod->SetMaxEnergy( 20*CLHEP::MeV );
|
||||
inel->RegisterMe( mod );
|
||||
if ( useFactorXS )
|
||||
inel->MultiplyCrossSectionBy( param->XSFactorNucleonInelastic() );
|
||||
|
||||
auto capture = new G4NeutronCaptureProcess( "nCaptureHP" );
|
||||
neutron->GetProcessManager()->AddDiscreteProcess(capture);
|
||||
capture->AddDataSet( new G4NeutronHPCaptureXS() );
|
||||
capture->RegisterMe( new G4NeutronRadCaptureHP() );
|
||||
|
||||
auto fission = new G4NeutronFissionProcess( "nFissionHP" );
|
||||
neutron->GetProcessManager()->AddDiscreteProcess(fission);
|
||||
fission->AddDataSet( new G4NeutronHPFissionXS() );
|
||||
fission->RegisterMe( new G4NeutronFissionVI() );
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user