Import Geant4 11.4.0.beta source tree
This commit is contained in:
@@ -4,6 +4,14 @@ 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!
|
||||
|
||||
## 2025-06-13 Vladimir Ivanchenko (phys-ctor-hinelastic-V11-03-01)
|
||||
- G4HadrocPhysicsQBBC - disable General Neutron Process, which address problem reports
|
||||
#2558 and #2559
|
||||
|
||||
## 2024-12-10 Douglas M Wright(phys-ctor-hinelastic-V11-03-00)
|
||||
- Add G4HadronPhysicsLEND to define neutron and photon induced processes from LEND
|
||||
- G4HadronPhysicsShielding remove LEND neutron process, now down in class above
|
||||
|
||||
## 2024-11-08 Alberto Ribon (phys-ctor-hinelastic-V11-02-02)
|
||||
- README : updated information for the coming release 11.3.
|
||||
|
||||
|
||||
@@ -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. *
|
||||
// ********************************************************************
|
||||
//
|
||||
//
|
||||
//---------------------------------------------------------------------------
|
||||
//
|
||||
// Description: Create all hadronic (neutron and photon) processes using LEND which is valid up to 20 MeV
|
||||
//
|
||||
// Author: Douglas M Wright, LLNL 2022-04-25
|
||||
//
|
||||
//----------------------------------------------------------------------------
|
||||
//
|
||||
|
||||
#ifndef G4HadronPhysicsLEND_h
|
||||
#define G4HadronPhysicsLEND_h 1
|
||||
|
||||
#include "G4VPhysicsConstructor.hh"
|
||||
|
||||
const G4double maxLEND_Energy = 20*CLHEP::MeV;
|
||||
const G4double overlapLEND_Energy = 0.1*CLHEP::MeV;
|
||||
|
||||
class G4HadronPhysicsLEND : public G4VPhysicsConstructor
|
||||
{
|
||||
public:
|
||||
G4HadronPhysicsLEND(G4int verbose =1, const G4String& eval="");
|
||||
~G4HadronPhysicsLEND() override = default;
|
||||
|
||||
void ConstructProcess() override;
|
||||
void ConstructParticle() override;
|
||||
|
||||
// copy constructor and hide assignment operator
|
||||
G4HadronPhysicsLEND(G4HadronPhysicsLEND &) = delete;
|
||||
G4HadronPhysicsLEND & operator =
|
||||
(const G4HadronPhysicsLEND &right) = delete;
|
||||
|
||||
private:
|
||||
G4String evaluation;
|
||||
G4int verbose;
|
||||
};
|
||||
|
||||
#endif
|
||||
@@ -12,6 +12,7 @@ geant4_add_module(G4phys_ctor_hinelastic
|
||||
G4HadronPhysicsFTFP_BERT_TRV.hh
|
||||
G4HadronPhysicsFTFQGSP_BERT.hh
|
||||
G4HadronPhysicsINCLXX.hh
|
||||
G4HadronPhysicsLEND.hh
|
||||
G4HadronPhysicsNuBeam.hh
|
||||
G4HadronPhysicsQGS_BIC.hh
|
||||
G4HadronPhysicsQGSP_BERT.hh
|
||||
@@ -34,6 +35,7 @@ geant4_add_module(G4phys_ctor_hinelastic
|
||||
G4HadronPhysicsFTFP_BERT_TRV.cc
|
||||
G4HadronPhysicsFTFQGSP_BERT.cc
|
||||
G4HadronPhysicsINCLXX.cc
|
||||
G4HadronPhysicsLEND.cc
|
||||
G4HadronPhysicsNuBeam.cc
|
||||
G4HadronPhysicsQGS_BIC.cc
|
||||
G4HadronPhysicsQGSP_BERT.cc
|
||||
@@ -55,6 +57,10 @@ geant4_module_link_libraries(G4phys_ctor_hinelastic
|
||||
G4run
|
||||
PRIVATE
|
||||
G4baryons
|
||||
G4had_gamma_nuclear
|
||||
G4phys_ctor_em
|
||||
G4emutils
|
||||
G4had_lend
|
||||
G4had_fission
|
||||
G4had_par_hp
|
||||
G4had_preequ_exciton
|
||||
|
||||
@@ -86,7 +86,7 @@ G4HadronInelasticQBBC::G4HadronInelasticQBBC(G4int ver)
|
||||
SetPhysicsType(bHadronInelastic);
|
||||
auto param = G4HadronicParameters::Instance();
|
||||
param->SetEnableBCParticles(true);
|
||||
param->SetEnableNeutronGeneralProcess(true);
|
||||
param->SetEnableNeutronGeneralProcess(false);
|
||||
param->SetVerboseLevel(ver);
|
||||
}
|
||||
|
||||
|
||||
@@ -0,0 +1,132 @@
|
||||
//
|
||||
// ********************************************************************
|
||||
// * 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. *
|
||||
// ********************************************************************
|
||||
//
|
||||
//
|
||||
//---------------------------------------------------------------------------
|
||||
//
|
||||
// Description: Create all hadronic (neutron and photon) processes using LEND which is valid up to 20 MeV
|
||||
//
|
||||
// Author: Douglas M Wright, LLNL 2022-04-25
|
||||
//
|
||||
//----------------------------------------------------------------------------
|
||||
//
|
||||
|
||||
#include "G4HadronPhysicsLEND.hh"
|
||||
#include "G4PhysListUtil.hh"
|
||||
|
||||
#include "G4NeutronBuilder.hh"
|
||||
#include "G4NeutronLENDBuilder.hh"
|
||||
|
||||
#include "G4PhysicsListHelper.hh"
|
||||
#include "G4LENDorBERTModel.hh"
|
||||
//#include "G4LENDCombinedModel.hh"
|
||||
#include "G4LENDCombinedCrossSection.hh"
|
||||
|
||||
#include "G4CrossSectionDataSetRegistry.hh"
|
||||
#include "G4GammaNuclearXS.hh"
|
||||
|
||||
#include "G4LossTableManager.hh"
|
||||
#include "G4GammaGeneralProcess.hh"
|
||||
|
||||
#include "G4PhysicsConstructorFactory.hh"
|
||||
G4_DECLARE_PHYSCONSTR_FACTORY(G4HadronPhysicsLEND);
|
||||
|
||||
G4HadronPhysicsLEND::G4HadronPhysicsLEND(G4int verb, const G4String& eva)
|
||||
: G4VPhysicsConstructor("hadron inelastic LEND")
|
||||
{
|
||||
verbose = verb;
|
||||
evaluation = eva;
|
||||
}
|
||||
|
||||
void G4HadronPhysicsLEND::ConstructProcess()
|
||||
{
|
||||
//....neutron-induced reactions
|
||||
|
||||
//....create neutron processes if they do not exist
|
||||
if( G4PhysListUtil::FindInelasticProcess(G4Neutron::Neutron()) == nullptr ){
|
||||
auto neutron_processes = new G4NeutronBuilder( true ); // Fission on
|
||||
AddBuilder(neutron_processes);
|
||||
neutron_processes->Build();
|
||||
}
|
||||
|
||||
//....get pointers to neutron processes so can add LEND model
|
||||
auto* neutron_inelastic = (G4HadronInelasticProcess*)G4PhysListUtil::FindInelasticProcess( G4Neutron::Neutron() );
|
||||
auto* neutron_capture = (G4NeutronCaptureProcess*)G4PhysListUtil::FindCaptureProcess( G4Neutron::Neutron() );
|
||||
auto* neutron_fission = (G4NeutronFissionProcess*)G4PhysListUtil::FindFissionProcess( G4Neutron::Neutron() );
|
||||
|
||||
auto* neutronLENDBuilder = new G4NeutronLENDBuilder(evaluation);
|
||||
neutronLENDBuilder->Build(neutron_inelastic);
|
||||
neutronLENDBuilder->Build(neutron_capture);
|
||||
neutronLENDBuilder->Build(neutron_fission);
|
||||
|
||||
//....photon-induced reactions
|
||||
|
||||
//....use gamma hadronic process if it exists
|
||||
// check Inelastic process using G4PhysListUtil
|
||||
// then check for GammaNuclear in G4GammaGeneralProcess
|
||||
auto* gamma_inelastic = (G4HadronInelasticProcess*)G4PhysListUtil::FindInelasticProcess( G4Gamma::Gamma() );
|
||||
|
||||
if( gamma_inelastic == nullptr){
|
||||
G4LossTableManager* emManager = G4LossTableManager::Instance();
|
||||
auto gproc = dynamic_cast<G4GammaGeneralProcess*>(emManager->GetGammaGeneralProcess());
|
||||
if (gproc != nullptr) {
|
||||
G4HadronicProcess* gnuc = gproc->GetGammaNuclear();
|
||||
if (gnuc != nullptr )
|
||||
gamma_inelastic = (G4HadronInelasticProcess*)gnuc;
|
||||
}
|
||||
}
|
||||
//....did not find existing process, so create photonuclear process
|
||||
if( gamma_inelastic == nullptr){
|
||||
//std::cout << "DMW: HadPhysLEND = gamma inelastic pointer not found\n";
|
||||
gamma_inelastic = new G4HadronInelasticProcess( "photonNuclear", G4Gamma::Gamma() );
|
||||
G4PhysicsListHelper* plHelper = G4PhysicsListHelper::GetPhysicsListHelper();
|
||||
plHelper->RegisterProcess(gamma_inelastic, G4Gamma::Gamma());
|
||||
|
||||
//....need these XS or LENDonly crashes
|
||||
auto xsreg = G4CrossSectionDataSetRegistry::Instance();
|
||||
G4VCrossSectionDataSet* xs = nullptr;
|
||||
xs = xsreg->GetCrossSectionDataSet("GammaNuclearXS");
|
||||
if(nullptr == xs) xs = new G4GammaNuclearXS();
|
||||
gamma_inelastic->AddDataSet(xs);
|
||||
}
|
||||
|
||||
//....add LEND photonuclear models
|
||||
auto* theGammaReactionLowE = new G4LENDorBERTModel( G4Gamma::Gamma() ); // checks if LEND has data for specified reaction
|
||||
// (note uses G4LENDCombinedModel)
|
||||
// if not, uses Bertini cascade
|
||||
//auto* theGammaReactionLowE = new G4LENDCombinedModel( G4Gamma::Gamma() ); // uses LEND only
|
||||
theGammaReactionLowE->SetMaxEnergy(maxLEND_Energy);
|
||||
theGammaReactionLowE->DumpLENDTargetInfo(true);
|
||||
gamma_inelastic->RegisterMe(theGammaReactionLowE);
|
||||
|
||||
G4LENDCombinedCrossSection* theGammaCrossSectionLowE = new G4LENDCombinedCrossSection( G4Gamma::Gamma() );
|
||||
gamma_inelastic->AddDataSet(theGammaCrossSectionLowE);
|
||||
}
|
||||
|
||||
void G4HadronPhysicsLEND::ConstructParticle()
|
||||
{
|
||||
G4Neutron::Neutron();
|
||||
G4Gamma::Gamma();
|
||||
}
|
||||
+10
-13
@@ -33,12 +33,13 @@
|
||||
//
|
||||
// Modified:
|
||||
//
|
||||
// 2020.05.07 A.Ribon used the newly introduced G4HyperonBuilder
|
||||
// 2019.08.01 A.Ribon replaced explicit numbers for the energy transition
|
||||
// region with values taken from G4HadronicParameters
|
||||
// 2014.08.05 K.L.Genser added provisions for modifing the Bertini to
|
||||
// FTF transition energy region
|
||||
//
|
||||
// 2020.05.07 A.Ribon: Used the newly introduced G4HyperonBuilder
|
||||
// 2019.08.01 A.Ribon: Replaced explicit numbers for the energy transition
|
||||
// region with values taken from G4HadronicParameters
|
||||
// 2014.08.05 K.L.Genser: Added provisions for modifing the Bertini to
|
||||
// FTF transition energy region
|
||||
// 2024.11.19 D.M.Wright: Removed LEND inelastic neutron model,
|
||||
// is now done in G4HadronPhysicsLEND
|
||||
//----------------------------------------------------------------------------
|
||||
//
|
||||
#include <iomanip>
|
||||
@@ -82,7 +83,7 @@
|
||||
#include "G4ParticleHPBGGNucleonInelasticXS.hh"
|
||||
#include "G4ParticleHPJENDLHEInelasticData.hh"
|
||||
#include "G4ParticleHPInelasticData.hh"
|
||||
#include "G4NeutronLENDBuilder.hh"
|
||||
#include "G4HadronPhysicsLEND.hh" // used to access const maxLEND_Energy
|
||||
|
||||
#include "G4BGGNucleonInelasticXS.hh"
|
||||
#include "G4CrossSectionDataSetRegistry.hh"
|
||||
@@ -119,7 +120,7 @@ G4HadronPhysicsShielding::G4HadronPhysicsShielding(const G4String& name)
|
||||
G4HadronPhysicsShielding::G4HadronPhysicsShielding(const G4String& name, G4bool qe)
|
||||
: G4HadronPhysicsFTFP_BERT(name, qe), useLEND_(false), evaluation_("")
|
||||
{
|
||||
minBERT_neutron = 19.9*CLHEP::MeV;
|
||||
minBERT_neutron = maxLEND_Energy - overlapLEND_Energy;
|
||||
}
|
||||
|
||||
G4HadronPhysicsShielding::G4HadronPhysicsShielding(const G4String& name, G4int verb)
|
||||
@@ -162,11 +163,7 @@ void G4HadronPhysicsShielding::Neutron()
|
||||
bertneu->SetMaxEnergy(maxBERT_neutron);
|
||||
bertneu->SetMinEnergy(minBERT_neutron);
|
||||
neu->RegisterMe(bertneu);
|
||||
if(useLEND_) {
|
||||
auto hpneu = new G4NeutronLENDBuilder(evaluation_);
|
||||
AddBuilder(hpneu);
|
||||
neu->RegisterMe(hpneu);
|
||||
} else {
|
||||
if( ! useLEND_) {
|
||||
auto hpneu = new G4NeutronPHPBuilder;
|
||||
AddBuilder(hpneu);
|
||||
neu->RegisterMe(hpneu);
|
||||
|
||||
Reference in New Issue
Block a user