Import Geant4 11.4.0.beta source tree

This commit is contained in:
Gabriele Cosmo
2025-06-26 09:17:29 +02:00
parent 20a218bbe1
commit a499fb82e9
1941 changed files with 203285 additions and 95593 deletions
+15 -1
View File
@@ -6,7 +6,7 @@ It must **not** be used as a substitute for writing good git commit messages!
-------------------------------------------------------------------------------
## 2024-04-23 Alberto Ribon (phys-list-V11-02-04)
## 2025-04-23 Alberto Ribon (phys-lists-V11-03-03)
- FTFP_BERT_ATL : removed the special FTF tune for ATLAS (introduced in
phys-lists-V11-01-05 to overcome the problem of too optimistic (i.e. narrow)
pion shower energy resolution).
@@ -18,6 +18,20 @@ It must **not** be used as a substitute for writing good git commit messages!
or the UI command (before run-initialization):
/process/had/models/ftf/selectTuneByIndex 4
## 2025-04-15 Vladimir Ivanchenko (phys-list-V11-03-02)
- QBBC - added G4ChargeExchangePhysics
## 2025-03-03 Dmitri Konstantinov (phys-list-V11-03-01)
- G4PhysListFactory: Prevent fallback to default physics list
when an invalid name is provided. Now, if a user specifies an unknown physics list,
Geant4 will throw a fatal error instead of silently using FTFP_BERT.
This ensures that users are aware of incorrect configurations and
helps prevent unintended simulation results.
## 2024-12-10 Douglas M Wright (phys-list-V11-03-00)
- Shielding: Simplify logic tree for inelastic models
and move all LEND hadronic inelastic processes to G4HadronPhysicsLEND
## 2024-11-04 Vladimir Ivantchenko (phys-list-V11-02-03)
- G4PhysListFactory - use std::size_t
@@ -206,11 +206,13 @@ G4PhysListFactory::GetReferencePhysList(const G4String& name)
else if(had_name == "ShieldingM_HPT") {p = new Shielding(verbose,"HP","M");
p->RegisterPhysics(new G4ThermalNeutrons);}
else {
p = new FTFP_BERT(verbose);
G4ExceptionDescription ed;
ed << "PhysicsList " << had_name << " is not known;"
<< " the default FTFP_BERT is created";
G4Exception("G4PhysListFactory: ","pl0003",JustWarning,ed,"");
ed << "ERROR: The requested physics list " << had_name
<< " is NOT available in the Physics List Factory.\n"
<< "Please choose a valid physics list.\n";
G4Exception("G4PhysListFactory", "pl0003", FatalException, ed);
return nullptr;
}
if(nullptr != p) {
if(0 < em_opt && had_name != "LBE") {
+2
View File
@@ -88,6 +88,8 @@ QBBC::QBBC( G4int ver, const G4String&)
RegisterPhysics( new G4HadronInelasticQBBC(ver));
RegisterPhysics( new G4ChargeExchangePhysics(ver) );
// Neutron tracking cut
RegisterPhysics( new G4NeutronTrackingCut(ver) );
}
+40 -47
View File
@@ -42,6 +42,8 @@
// fragments
// 06.08.2019 A.Ribon: Replacing explicit values for the energy transition
// region with values from G4HadronicParameters
// 19.11.2024 D.M.Wright: Simplify logic tree for inelastic models and
// move LEND hadronic inelastic processes to G4HadronPhysicsLEND
//
//----------------------------------------------------------------------------
//
@@ -59,11 +61,12 @@
#include "G4IonElasticPhysics.hh"
#include "G4StoppingPhysics.hh"
#include "G4HadronElasticPhysicsHP.hh"
#include "G4HadronElasticPhysicsLEND.hh"
#include "G4ParticleHPManager.hh"
#include "G4HadronElasticPhysicsLEND.hh"
#include "G4HadronPhysicsLEND.hh"
#include "G4HadronPhysicsShielding.hh"
#include "G4HadronPhysicsShieldingLEND.hh"
#include "G4HadronicParameters.hh"
#include <CLHEP/Units/SystemOfUnits.h>
@@ -97,12 +100,13 @@ Shielding::Shielding(G4int verbose, const G4String& n_model,
// EM Physics
RegisterPhysics( new G4EmStandardPhysics(verbose));
// Synchroton Radiation & GN Physics
// Synchroton Radiation & Gamma Nuclear Physics
G4EmExtraPhysics* emExtraPhysics = new G4EmExtraPhysics(verbose);
if ( LEN_model == "LEND" ) {
// Use LEND model for Gamma Nuclear
// Adjust energy bounds of gamma nuclear models from G4EmExtraPhysics
if ( LEN_model == "LEND" )
emExtraPhysics->LENDGammaNuclear(true);
}
RegisterPhysics( emExtraPhysics );
// Decays
@@ -110,16 +114,11 @@ Shielding::Shielding(G4int verbose, const G4String& n_model,
RegisterPhysics( new G4RadioactiveDecayPhysics(verbose) );
// Hadron Elastic scattering
if ( LEN_model == "HP" )
{
if ( LEN_model == "HP" ) {
RegisterPhysics( new G4HadronElasticPhysicsHP(verbose) );
}
else if ( LEN_model == "LEND" )
{
} else if ( LEN_model == "LEND" ) {
RegisterPhysics( new G4HadronElasticPhysicsLEND(verbose,evaluation));
}
else
{
} else {
if(verbose > 0) {
G4cout << "Shielding Physics List: Warning!" <<G4endl;
G4cout << "\"" << LEN_model
@@ -129,46 +128,40 @@ Shielding::Shielding(G4int verbose, const G4String& n_model,
RegisterPhysics( new G4HadronElasticPhysicsHP(verbose) );
}
// Hadron Physics = Bertini and FTF with HP or LEND
G4VPhysicsConstructor* hpc;
// Hadron Physics HP or LEND
G4String HadPhysName = "hInelastic Shielding";
if ( LEN_model == "LEND" ) HadPhysName += "LEND";
G4double HadPhysEmin, HadPhysEmax;
if (HadrPhysVariant == "M") {
// The variant "M" has a special, dedicated energy transition region
// between the string model and cascade model, therefore the recommended
// values from G4HadronicParameters are intentionally not used.
hpc = new G4HadronPhysicsShielding("hInelastic Shielding", verbose,
9.5*CLHEP::GeV, 9.9*CLHEP::GeV);
// The variant "M" has a special, dedicated energy transition region
// between the string model and cascade model, therefore the recommended
// values from G4HadronicParameters are intentionally not used.
HadPhysEmin = 9.5*CLHEP::GeV;
HadPhysEmax = 9.9*CLHEP::GeV;
} else {
hpc = new G4HadronPhysicsShielding("hInelastic Shielding", verbose,
G4HadronicParameters::Instance()->GetMinEnergyTransitionFTF_Cascade(),
G4HadronicParameters::Instance()->GetMaxEnergyTransitionFTF_Cascade());
HadPhysEmin = G4HadronicParameters::Instance()->GetMinEnergyTransitionFTF_Cascade();
HadPhysEmax = G4HadronicParameters::Instance()->GetMaxEnergyTransitionFTF_Cascade();
}
if ( LEN_model == "LEND" ) {
delete hpc;
if (HadrPhysVariant == "M") {
// The variant "M" has a special, dedicated energy transition region
// between the string model and cascade model, therefore the recommended
// values from G4HadronicParameters are intentionally not used.
hpc = new G4HadronPhysicsShieldingLEND("hInelastic ShieldingLEND", verbose,
9.5*CLHEP::GeV, 9.9*CLHEP::GeV);
} else {
hpc = new G4HadronPhysicsShieldingLEND("hInelastic ShieldingLEND", verbose,
G4HadronicParameters::Instance()->GetMinEnergyTransitionFTF_Cascade(),
G4HadronicParameters::Instance()->GetMaxEnergyTransitionFTF_Cascade());
}
} else {
//G4cout << "Shielding Physics List: Warning." <<G4endl;
//G4cout << "Name of Low Energy Neutron model " << LEN_model
// << " is invalid." <<G4endl;
//G4cout << "Will use neutron HP package." <<G4endl;
}
// N.B., G4HadronPhysicsShielding only builds neutron processes
hpc = new G4HadronPhysicsShielding(HadPhysName, verbose, HadPhysEmin, HadPhysEmax);
// Turn off HP low energy model defined by G4HadronPhysicsShielding
if ( LEN_model == "LEND" )
((G4HadronPhysicsShielding*)hpc)->UseLEND();
RegisterPhysics( hpc );
if ( LEN_model == "HP" ) {
//Activate prodcuton of fission fragments in neutronHP
G4ParticleHPManager::GetInstance()->SetProduceFissionFragments( true );
}
// Activate production of fission fragments in NeutronHP
if ( LEN_model == "HP" )
G4ParticleHPManager::GetInstance()->SetProduceFissionFragments( true );
// Add LEND processes (neutron and photon induced)
if ( LEN_model == "LEND" )
RegisterPhysics( new G4HadronPhysicsLEND(verbose, evaluation));
// Stopping Physics
RegisterPhysics( new G4StoppingPhysics(verbose) );