Import Geant4 11.2.0.beta source tree

This commit is contained in:
Gabriele Cosmo
2023-06-30 09:09:57 +02:00
parent aef78ca386
commit dd1f179cda
3780 changed files with 212808 additions and 142780 deletions
@@ -1,81 +0,0 @@
# ---------------------------------------------------------------------------
# GNUmakefile for physics_lists/constructors/factory library.
# Gunter Folger 10-Jan-2012.
# ---------------------------------------------------------------------------
name := G4phys_ctor_hinelastic
ifndef G4INSTALL
G4INSTALL = ../../../..
endif
include $(G4INSTALL)/config/architecture.gmk
CPPFLAGS += -DG4PROCESSES_EXPORT
ifdef G4LIB_BUILD_EXPAT
CPPFLAGS += -I$(G4BASE)/externals/expat/include
endif
CPPFLAGS += -I$(G4BASE)/global/management/include \
-I$(G4BASE)/global/HEPRandom/include \
-I$(G4BASE)/global/HEPNumerics/include \
-I$(G4BASE)/global/HEPGeometry/include \
-I$(G4BASE)/geometry/volumes/include \
-I$(G4BASE)/geometry/management/include \
-I$(G4BASE)/geometry/magneticfield/include \
-I$(G4BASE)/geometry/navigation/include \
-I$(G4BASE)/intercoms/include \
-I$(G4BASE)/track/include \
-I$(G4BASE)/particles/shortlived/include \
-I$(G4BASE)/particles/management/include \
-I$(G4BASE)/particles/leptons/include \
-I$(G4BASE)/particles/bosons/include \
-I$(G4BASE)/particles/hadrons/mesons/include \
-I$(G4BASE)/particles/hadrons/barions/include \
-I$(G4BASE)/particles/hadrons/ions/include \
-I$(G4BASE)/run/include \
-I$(G4BASE)/physics_lists/builders/include \
-I$(G4BASE)/physics_lists/util/include \
-I$(G4BASE)/physics_lists/constructors/factory/include \
-I$(G4BASE)/processes/management/include \
-I$(G4BASE)/processes/transportation/include \
-I$(G4BASE)/processes/decay/include \
-I$(G4BASE)/processes/cuts/include \
-I$(G4BASE)/processes/hadronic/cross_sections/include \
-I$(G4BASE)/processes/hadronic/stopping/include \
-I$(G4BASE)/processes/hadronic/management/include \
-I$(G4BASE)/processes/hadronic/processes/include \
-I$(G4BASE)/processes/hadronic/util/include \
-I$(G4BASE)/processes/hadronic/models/binary_cascade/include \
-I$(G4BASE)/processes/hadronic/models/cascade/cascade/include \
-I$(G4BASE)/processes/hadronic/models/qmd/include \
-I$(G4BASE)/processes/hadronic/models/coherent_elastic/include \
-I$(G4BASE)/processes/hadronic/models/de_excitation/evaporation/include \
-I$(G4BASE)/processes/hadronic/models/de_excitation/fermi_breakup/include \
-I$(G4BASE)/processes/hadronic/models/de_excitation/fission/include \
-I$(G4BASE)/processes/hadronic/models/de_excitation/handler/include \
-I$(G4BASE)/processes/hadronic/models/de_excitation/management/include \
-I$(G4BASE)/processes/hadronic/models/de_excitation/multifragmentation/include \
-I$(G4BASE)/processes/hadronic/models/de_excitation/photon_evaporation/include \
-I$(G4BASE)/processes/hadronic/models/de_excitation/util/include \
-I$(G4BASE)/processes/hadronic/models/fission/include \
-I$(G4BASE)/processes/hadronic/models/im_r_matrix/include \
-I$(G4BASE)/processes/hadronic/models/inclxx/utils/include \
-I$(G4BASE)/processes/hadronic/models/inclxx/incl_physics/include \
-I$(G4BASE)/processes/hadronic/models/inclxx/interface/include \
-I$(G4BASE)/processes/hadronic/models/lend/include \
-I$(G4BASE)/processes/hadronic/models/lepto_nuclear/include \
-I$(G4BASE)/processes/hadronic/models/particle_hp/include \
-I$(G4BASE)/processes/hadronic/models/parton_string/diffraction/include \
-I$(G4BASE)/processes/hadronic/models/parton_string/hadronization/include \
-I$(G4BASE)/processes/hadronic/models/parton_string/management/include \
-I$(G4BASE)/processes/hadronic/models/parton_string/qgsm/include \
-I$(G4BASE)/processes/hadronic/models/photolepton_hadron/muon_nuclear/include \
-I$(G4BASE)/processes/hadronic/models/pre_equilibrium/exciton_model/include \
-I$(G4BASE)/processes/hadronic/models/radioactive_decay/include \
-I$(G4BASE)/processes/hadronic/models/theo_high_energy/include \
-I$(G4BASE)/processes/hadronic/util/include \
-I$(G4BASE)/materials/include
include $(G4INSTALL)/config/common.gmk
@@ -4,6 +4,21 @@ 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-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
inelastic interactions of charged pions and nucleons projectiles,
the ABLA model (instead of the usual Precompound/de-excitation) is utilized
for nuclear de-excitation.
This is meant for testing purposes of the coupling between the hadronic
string models (FTF and QGS) and ABLA (via G4GeneratorPrecompoundInterface),
as well as of the coupling between intra-nuclear cascade models (BERT and BIC)
and ABLA.
In principle, these couplings with ABLA nuclear de-excitation can be
extended to all types of projectiles, and to other reference physics lists,
but, for the time being, in order to minimize code changes or new code,
it is restricted to pion+, pion-, proton and neutron, and only for QBBC.
## 2022-11-11 Alberto Ribon (phys-ctor-hinelastic-V11-00-02)
- G4HadronPhysicsFTFP_BERT, G4HadronPhysicsINCLXX : extension to inelastic
nuclear interactions of light hypernuclei (with either FTFP only or
@@ -35,6 +35,14 @@
- final-state: FTFP for all energies
G4HadronInelasticQBBC_ABLA
--------------------------
Similar to G4HadronInelasticQBBC, with the difference that for the final-state
of nuclear inelastic interactions of pion+, pion-, proton and neutron projectiles
the ABLA model (instead of the usual Precompound/de-excitation) is utilized for
nuclear de-excitation.
G4HadronPhysicsFTFP_BERT
------------------------
Hadron nuclear inelastic processes for all hadrons:
@@ -72,6 +80,7 @@
- cross-section: Galoyan-Uzhinsky-Glauber-Gribov
- final-state: FTFP for all energies
G4HadronPhysicsFTFP_BERT_ATL
----------------------------
Similar to G4HadronPhysicsFTFP_BERT, with the difference that for proton,
@@ -0,0 +1,63 @@
//
// ********************************************************************
// * 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. *
// ********************************************************************
//
//
//---------------------------------------------------------------------------
//
// ClassName: G4HadronInelasticQBBC_ABLA
//
// Author: Alberto Ribon (CERN), April 2023
//
// Similar to the physics list constructor G4HadronInelasticQBBC_ABLA,
// except for the final-state of inelastic interactions of charged pions and
// nucleons in which ABLA nuclear de-excitation is utilized (instead of the
// usual Precompound/de-excitation).
// This is meant for testing purposes of the coupling between the hadronic
// string models (FTF and QGS) and ABLA (via G4GeneratorPrecompoundInterface),
// as well as of the coupling between intra-nuclear cascade models (BERT and BIC)
// and ABLA.
//
// Modified:
//
//----------------------------------------------------------------------------
//
#ifndef G4HadronInelasticQBBC_ABLA_h
#define G4HadronInelasticQBBC_ABLA_h 1
#include "globals.hh"
#include "G4VHadronPhysics.hh"
class G4HadronInelasticQBBC_ABLA : public G4VHadronPhysics {
public:
G4HadronInelasticQBBC_ABLA( G4int ver = 1 );
virtual ~G4HadronInelasticQBBC_ABLA() = default;
void ConstructProcess() override;
G4HadronInelasticQBBC_ABLA( G4HadronInelasticQBBC_ABLA& ) = delete;
G4HadronInelasticQBBC_ABLA& operator=( const G4HadronInelasticQBBC_ABLA& right ) = delete;
};
#endif
@@ -4,6 +4,7 @@
geant4_add_module(G4phys_ctor_hinelastic
PUBLIC_HEADERS
G4HadronInelasticQBBC.hh
G4HadronInelasticQBBC_ABLA.hh
G4HadronPhysicsFTF_BIC.hh
G4HadronPhysicsFTFP_BERT.hh
G4HadronPhysicsFTFP_BERT_HP.hh
@@ -24,6 +25,7 @@ geant4_add_module(G4phys_ctor_hinelastic
G4HadronPhysicsQGSP_BIC_AllHP.hh
SOURCES
G4HadronInelasticQBBC.cc
G4HadronInelasticQBBC_ABLA.cc
G4HadronPhysicsFTF_BIC.cc
G4HadronPhysicsFTFP_BERT.cc
G4HadronPhysicsFTFP_BERT_HP.cc
@@ -57,6 +59,7 @@ geant4_module_link_libraries(G4phys_ctor_hinelastic
G4had_string_diff
G4had_string_frag
G4had_theo_max
G4hadronic_abla
G4hadronic_bert_cascade
G4hadronic_binary
G4hadronic_deex_photon_evaporation
@@ -0,0 +1,202 @@
//
// ********************************************************************
// * 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. *
// ********************************************************************
//
//
//---------------------------------------------------------------------------
//
// ClassName: G4HadronInelasticQBBC_ABLA
//
// Author: Alberto Ribon (CERN), April 2023
//
// Similar to the physics list constructor G4HadronInelasticQBBC_ABLA,
// except for the final-state of inelastic interactions of charged pions and
// nucleons in which ABLA nuclear de-excitation is utilized (instead of the
// usual Precompound/de-excitation).
// This is meant for testing purposes of the coupling between the hadronic
// string models (FTF and QGS) and ABLA (via G4GeneratorPrecompoundInterface),
// as well as of the coupling between intra-nuclear cascade models (BERT and BIC)
// and ABLA.
//
// Modified:
//
//----------------------------------------------------------------------------
//
#include "G4HadronInelasticQBBC_ABLA.hh"
#include "G4SystemOfUnits.hh"
#include "G4HadronicProcess.hh"
#include "G4HadronInelasticProcess.hh"
#include "G4HadronicInteraction.hh"
#include "G4ParticleDefinition.hh"
#include "G4TheoFSGenerator.hh"
#include "G4FTFModel.hh"
#include "G4ExcitedStringDecay.hh"
#include "G4GeneratorPrecompoundInterface.hh"
#include "G4BGGNucleonInelasticXS.hh"
#include "G4BGGPionInelasticXS.hh"
#include "G4ParticleInelasticXS.hh"
#include "G4NeutronInelasticXS.hh"
#include "G4NeutronGeneralProcess.hh"
#include "G4CrossSectionInelastic.hh"
#include "G4CascadeInterface.hh"
#include "G4BinaryCascade.hh"
#include "G4PreCompoundModel.hh"
#include "G4AblaInterface.hh"
#include "G4HadronicInteractionRegistry.hh"
#include "G4HadronicParameters.hh"
#include "G4HadronicBuilder.hh"
#include "G4HadParticles.hh"
#include "G4HadProcesses.hh"
#include "G4BuilderType.hh"
#include "G4PhysicsConstructorFactory.hh"
G4_DECLARE_PHYSCONSTR_FACTORY( G4HadronInelasticQBBC_ABLA );
G4HadronInelasticQBBC_ABLA::G4HadronInelasticQBBC_ABLA( G4int ver )
: G4VHadronPhysics( "hInelasticQBBC_ABLA" )
{
SetPhysicsType( bHadronInelastic );
auto param = G4HadronicParameters::Instance();
param->SetEnableBCParticles( true );
param->SetEnableNeutronGeneralProcess( true );
param->SetVerboseLevel( ver );
}
void G4HadronInelasticQBBC_ABLA::ConstructProcess() {
G4HadronicParameters* param = G4HadronicParameters::Instance();
G4bool useFactorXS = param->ApplyFactorXS();
G4PhysicsListHelper* ph = G4PhysicsListHelper::GetPhysicsListHelper();
// configure models
const G4double eminFtf = param->GetMinEnergyTransitionFTF_Cascade();
const G4double eminBert = 1.0*CLHEP::GeV;
const G4double emaxBic = 1.5*CLHEP::GeV;
const G4double emaxBert = param->GetMaxEnergyTransitionFTF_Cascade();
const G4double emaxBertPions = 12.0*CLHEP::GeV;
const G4double emax = param->GetMaxEnergy();
if ( G4Threading::IsMasterThread() && param->GetVerboseLevel() > 0 ) {
G4cout << "### HadronInelasticQBBC_ABLA Construct Process:\n"
<< " Emin(FTFP)= " << eminFtf/CLHEP::GeV
<< " GeV; Emax(FTFP)= " << emax/CLHEP::GeV << " GeV\n"
<< " Emin(BERT)= " << eminBert/CLHEP::GeV
<< " GeV; Emax(BERT)= " << emaxBert/CLHEP::GeV
<< " GeV; Emax(BERTpions)= " << emaxBertPions/CLHEP::GeV
<< " GeV;\n" << " Emin(BIC) = 0 GeV; Emax(BIC)= "
<< emaxBic/CLHEP::GeV << " GeV." << G4endl;
}
G4PreCompoundModel* thePreCompound = nullptr;
G4HadronicInteraction* p = G4HadronicInteractionRegistry::Instance()->FindModel( "PRECO" );
thePreCompound = static_cast< G4PreCompoundModel* >( p );
if ( thePreCompound == nullptr ) thePreCompound = new G4PreCompoundModel;
G4AblaInterface* theAblaInterface = nullptr;
G4HadronicInteraction* pAbla = G4HadronicInteractionRegistry::Instance()->FindModel( "ABLAXX" );
theAblaInterface = static_cast< G4AblaInterface* >( pAbla );
if ( theAblaInterface == nullptr ) theAblaInterface = new G4AblaInterface;
auto theFTFP = new G4TheoFSGenerator( "FTFP" );
auto theStringModel = new G4FTFModel;
theStringModel->SetFragmentationModel( new G4ExcitedStringDecay );
theFTFP->SetHighEnergyGenerator( theStringModel );
// theFTFP->SetTransport( new G4GeneratorPrecompoundInterface );
theFTFP->SetTransport( new G4GeneratorPrecompoundInterface( theAblaInterface ) );
theFTFP->SetMinEnergy( eminFtf );
theFTFP->SetMaxEnergy( emax );
auto theBERT = new G4CascadeInterface;
theBERT->SetMinEnergy( eminBert );
theBERT->SetMaxEnergy( emaxBert );
// theBERT->usePreCompoundDeexcitation();
theBERT->useAblaDeexcitation();
auto theBERT1 = new G4CascadeInterface;
theBERT1->SetMinEnergy( eminBert );
theBERT1->SetMaxEnergy( emaxBertPions );
// theBERT1->usePreCompoundDeexcitation();
theBERT1->useAblaDeexcitation();
// auto theBIC = new G4BinaryCascade( thePreCompound );
auto theBIC = new G4BinaryCascade( theAblaInterface );
theBIC->SetMaxEnergy( emaxBic );
// p
G4ParticleDefinition* particle = G4Proton::Proton();
G4HadronicProcess* hp =
new G4HadronInelasticProcess( particle->GetParticleName() + "Inelastic", particle );
hp->AddDataSet( new G4ParticleInelasticXS( particle ) );
hp->RegisterMe( theFTFP );
hp->RegisterMe( theBERT );
hp->RegisterMe( theBIC );
ph->RegisterProcess( hp, particle );
if ( useFactorXS ) hp->MultiplyCrossSectionBy( param->XSFactorNucleonInelastic() );
// n
particle = G4Neutron::Neutron();
G4HadronicProcess* ni = new G4HadronInelasticProcess( "neutronInelastic", particle );
ni->RegisterMe( theFTFP );
ni->RegisterMe( theBERT );
ni->RegisterMe( theBIC );
G4HadProcesses::BuildNeutronInelasticAndCapture( ni );
// pi+
particle = G4PionPlus::PionPlus();
hp = new G4HadronInelasticProcess( particle->GetParticleName() + "Inelastic", particle );
hp->AddDataSet( new G4BGGPionInelasticXS( particle ) );
hp->RegisterMe( theFTFP );
hp->RegisterMe( theBERT1 );
hp->RegisterMe( theBIC );
ph->RegisterProcess( hp, particle );
if ( useFactorXS ) hp->MultiplyCrossSectionBy( param->XSFactorPionInelastic() );
// pi-
particle = G4PionMinus::PionMinus();
hp = new G4HadronInelasticProcess( particle->GetParticleName() + "Inelastic", particle );
hp->AddDataSet( new G4BGGPionInelasticXS( particle ) );
hp->RegisterMe( theFTFP );
hp->RegisterMe( theBERT1 );
hp->RegisterMe( theBIC );
ph->RegisterProcess( hp, particle );
if ( useFactorXS ) hp->MultiplyCrossSectionBy( param->XSFactorPionInelastic() );
// kaons
G4HadronicBuilder::BuildKaonsFTFP_BERT();
// high energy particles
if ( emax > param->EnergyThresholdForHeavyHadrons() ) {
// pbar, nbar, anti light ions
G4HadronicBuilder::BuildAntiLightIonsFTFP();
// hyperons
G4HadronicBuilder::BuildHyperonsFTFP_BERT();
// b-, c- baryons and mesons
if ( param->EnableBCParticles() ) G4HadronicBuilder::BuildBCHadronsFTFP_BERT();
}
}