Import Geant4 10.5.0.beta source tree

This commit is contained in:
Gabriele Cosmo
2018-06-29 10:58:11 +02:00
parent fe81a77428
commit 6aa23be517
1581 changed files with 124288 additions and 83758 deletions
@@ -1,4 +1,4 @@
$Id: History 110187 2018-05-17 10:41:08Z gcosmo $
$Id: History 110183 2018-05-17 10:26:21Z gcosmo $
-------------------------------------------------------------------
=========================================================
@@ -14,13 +14,30 @@ introduced in the code and keeptrack of all tags.
* Reverse chronological order (last date on top), please *
----------------------------------------------------------
17-May-2018 V.Ivanchenko (phys-ctor-em-V10-03-38)
17-May-2018 V.Ivanchenko (phys-ctor-em-V10-04-03)
- G4EmModelActivator - fixed GS and Opt3 configurations
27-April-2018 V.Ivanchenko
27-April-2018 V.Ivanchenko (phys-ctor-em-V10-04-02)
- in several constructors return back the order of photo-effect
and Compton in order to keep log file stable
27-April-2018 V.Ivanchenko (phys-ctor-em-V10-04-01)
- G4EmStandardPhysics_option1, G4EmStandardPhysics_option2 - use
Livermore photo-effect model
- G4EmStandardPhysics_option4, G4EmLivermorePhysics,
G4EmPenelopePhysics - upper energy limit 100 TeV
- G4EmLowEPPhysics - use new 5D gamma conversion model below 80 GeV,
use new Lindhard-Sorensen ion ionisation model above 20 MeV/u
- G4EmModelActivator - modified accordingly
28-March-2018 V.Ivanchenko
28-March-2018 V.Ivanchenko (phys-ctor-em-V10-04-00)
- G4EmStandardPhysics, G4EmStandardPhysics_option1,
G4EmStandardPhysics_option2, G4EmStandardPhysics_option4,
G4EmLowEPPhysics, G4EmPenelopePhysics, G4EmLivermorePhysics,
G4EmLivermorePolarizedPhysics, G4EmStandardPhysicsGS - use new
parameter MscEnergyLimit() (default is 100 MeV) allowing
customise transition from low-energy multiple scattering to
high energy combination of multiple and single scattering
- G4EmModelActivator - fixed Opt4 and single scattering (problem #2045)
07-November-2017 V.Ivanchenko (phys-ctor-em-V10-03-37)
@@ -23,7 +23,7 @@
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
// $Id: G4EmLivermorePhysics.cc 107183 2017-11-03 14:57:23Z gcosmo $
// $Id: G4EmLivermorePhysics.cc 109526 2018-04-30 07:11:52Z gcosmo $
#include "G4EmLivermorePhysics.hh"
#include "G4ParticleDefinition.hh"
@@ -134,14 +134,12 @@ G4EmLivermorePhysics::G4EmLivermorePhysics(G4int ver, const G4String&)
param->SetDefaults();
param->SetVerbose(verbose);
param->SetMinEnergy(100*eV);
param->SetMaxEnergy(1*TeV);
param->SetLowestElectronEnergy(100*eV);
param->SetNumberOfBinsPerDecade(20);
param->ActivateAngularGeneratorForIonisation(true);
param->SetMscRangeFactor(0.02);
param->SetMuHadLateralDisplacement(true);
param->SetMscStepLimitType(fUseDistanceToBoundary);
param->SetLateralDisplacementAlg96(false);
param->SetFluo(true);
SetPhysicsType(bElectromagnetic);
}
@@ -208,7 +206,7 @@ void G4EmLivermorePhysics::ConstructProcess()
G4hMultipleScattering* hmsc = new G4hMultipleScattering("ionmsc");
// high energy limit for e+- scattering models
G4double highEnergyLimit = 100*MeV;
G4double highEnergyLimit = G4EmParameters::Instance()->MscEnergyLimit();
// nuclear stopping
G4NuclearStopping* pnuc = new G4NuclearStopping();
@@ -23,7 +23,7 @@
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
// $Id: G4EmLivermorePolarizedPhysics.cc 107183 2017-11-03 14:57:23Z gcosmo $
// $Id: G4EmLivermorePolarizedPhysics.cc 109526 2018-04-30 07:11:52Z gcosmo $
#include "G4EmLivermorePolarizedPhysics.hh"
#include "G4ParticleDefinition.hh"
@@ -136,14 +136,12 @@ G4EmLivermorePolarizedPhysics::G4EmLivermorePolarizedPhysics(G4int ver,
param->SetDefaults();
param->SetVerbose(verbose);
param->SetMinEnergy(100*eV);
param->SetMaxEnergy(100*TeV);
param->SetLowestElectronEnergy(100*eV);
param->SetNumberOfBinsPerDecade(20);
param->ActivateAngularGeneratorForIonisation(true);
param->SetMscRangeFactor(0.02);
param->SetMuHadLateralDisplacement(true);
param->SetMscStepLimitType(fUseDistanceToBoundary);
param->SetLateralDisplacementAlg96(false);
param->SetFluo(true);
SetPhysicsType(bElectromagnetic);
}
@@ -214,7 +212,7 @@ void G4EmLivermorePolarizedPhysics::ConstructProcess()
G4hMultipleScattering* hmsc = new G4hMultipleScattering("ionmsc");
// high energy limit for e+- scattering models
G4double highEnergyLimit = 100*MeV;
G4double highEnergyLimit = G4EmParameters::Instance()->MscEnergyLimit();
// nuclear stopping
G4NuclearStopping* pnuc = new G4NuclearStopping();
@@ -23,7 +23,7 @@
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
// $Id: G4EmLowEPPhysics.cc 107183 2017-11-03 14:57:23Z gcosmo $
// $Id: G4EmLowEPPhysics.cc 109526 2018-04-30 07:11:52Z gcosmo $
#include "G4EmLowEPPhysics.hh"
#include "G4ParticleDefinition.hh"
@@ -56,6 +56,7 @@
#include "G4eBremsstrahlung.hh"
#include "G4LivermoreBremsstrahlungModel.hh"
#include "G4Generator2BS.hh"
#include "G4BetheHeitler5DModel.hh"
// e+
#include "G4eplusAnnihilation.hh"
@@ -78,6 +79,7 @@
#include "G4ionIonisation.hh"
#include "G4alphaIonisation.hh"
#include "G4IonParametrisedLossModel.hh"
#include "G4LindhardSorensenIonModel.hh"
#include "G4NuclearStopping.hh"
// msc models
@@ -131,11 +133,9 @@ G4EmLowEPPhysics::G4EmLowEPPhysics(G4int ver, const G4String&)
param->SetDefaults();
param->SetVerbose(verbose);
param->SetMinEnergy(100*eV);
param->SetMaxEnergy(1*TeV);
param->SetLowestElectronEnergy(100*eV);
param->SetNumberOfBinsPerDecade(20);
param->ActivateAngularGeneratorForIonisation(true);
param->SetLateralDisplacementAlg96(false);
param->SetFluo(true);
SetPhysicsType(bElectromagnetic);
}
@@ -230,7 +230,7 @@ void G4EmLowEPPhysics::ConstructProcess()
// gamma conversion - Livermore model below 80 GeV
G4GammaConversion* theGammaConversion = new G4GammaConversion();
theGammaConversion->SetEmModel(new G4LivermoreGammaConversionModel());
theGammaConversion->SetEmModel(new G4BetheHeitler5DModel());
ph->RegisterProcess(theGammaConversion, particle);
// default Rayleigh scattering is Livermore
@@ -310,7 +310,12 @@ void G4EmLowEPPhysics::ConstructProcess()
} else if (particleName == "GenericIon") {
G4ionIonisation* ionIoni = new G4ionIonisation();
ionIoni->SetEmModel(new G4IonParametrisedLossModel());
G4VEmModel* mod1 = new G4IonParametrisedLossModel();
G4VEmModel* mod2 = new G4LindhardSorensenIonModel();
mod1->SetHighEnergyLimit(20*MeV);
mod2->SetLowEnergyLimit(20*MeV);
ionIoni->SetEmModel(mod1);
ionIoni->SetEmModel(mod2);
ionIoni->SetStepFunction(0.1, 1*um);
ph->RegisterProcess(hmsc, particle);
@@ -168,7 +168,7 @@ void G4EmModelActivator::ActivateEmOptions()
G4VEmModel* mod;
// high energy limit for low-energy e+- model of msc
G4double mscEnergyLimit = 100*MeV;
G4double mscEnergyLimit = G4EmParameters::Instance()->MscEnergyLimit();
// high energy limit for Livermore and Penelope models
G4double highEnergyLimit = 1*GeV;
@@ -23,7 +23,7 @@
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
// $Id: G4EmPenelopePhysics.cc 107183 2017-11-03 14:57:23Z gcosmo $
// $Id: G4EmPenelopePhysics.cc 109526 2018-04-30 07:11:52Z gcosmo $
#include "G4EmPenelopePhysics.hh"
#include "G4ParticleDefinition.hh"
@@ -138,13 +138,11 @@ G4EmPenelopePhysics::G4EmPenelopePhysics(G4int ver, const G4String&)
param->SetDefaults();
param->SetVerbose(verbose);
param->SetMinEnergy(100*eV);
param->SetMaxEnergy(1*TeV);
param->SetLowestElectronEnergy(100*eV);
param->SetNumberOfBinsPerDecade(20);
param->SetMscRangeFactor(0.02);
param->SetMscStepLimitType(fUseDistanceToBoundary);
param->SetMuHadLateralDisplacement(true);
param->SetLateralDisplacementAlg96(false);
param->SetFluo(true);
param->SetPIXEElectronCrossSectionModel("Penelope");
SetPhysicsType(bElectromagnetic);
@@ -211,7 +209,7 @@ void G4EmPenelopePhysics::ConstructProcess()
G4hMultipleScattering* hmsc = new G4hMultipleScattering("ionmsc");
// high energy limit for e+- scattering models
G4double highEnergyLimit = 100*MeV;
G4double highEnergyLimit = G4EmParameters::Instance()->MscEnergyLimit();
// nuclear stopping
G4NuclearStopping* pnuc = new G4NuclearStopping();
@@ -23,7 +23,7 @@
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
// $Id: G4EmStandardPhysics.cc 107183 2017-11-03 14:57:23Z gcosmo $
// $Id: G4EmStandardPhysics.cc 109122 2018-03-28 13:08:57Z gcosmo $
//
//---------------------------------------------------------------------------
//
@@ -191,7 +191,7 @@ void G4EmStandardPhysics::ConstructProcess()
G4hMultipleScattering* hmsc = new G4hMultipleScattering("ionmsc");
// high energy limit for e+- scattering models
G4double highEnergyLimit = 100*MeV;
G4double highEnergyLimit = G4EmParameters::Instance()->MscEnergyLimit();
// Add standard EM Processes
G4ParticleTable* table = G4ParticleTable::GetParticleTable();
@@ -198,7 +198,7 @@ void G4EmStandardPhysicsGS::ConstructProcess()
G4hMultipleScattering* hmsc = new G4hMultipleScattering("ionmsc");
// high energy limit for e+- scattering models
G4double highEnergyLimit = 100*MeV;
G4double highEnergyLimit = G4EmParameters::Instance()->MscEnergyLimit();
// Add standard EM Processes
G4ParticleTable* table = G4ParticleTable::GetParticleTable();
@@ -122,8 +122,7 @@ G4EmStandardPhysicsSS::G4EmStandardPhysicsSS(G4int ver)
param->SetVerbose(verbose);
param->SetLowestElectronEnergy(10*eV);
param->SetMscThetaLimit(0.0);
param->SetFluo(true);
param->SetAuger(true);
param->SetAugerCascade(true);
param->SetPixe(true);
SetPhysicsType(bElectromagnetic);
}
@@ -198,14 +197,14 @@ void G4EmStandardPhysicsSS::ConstructProcess()
if (!particle) { continue; }
if (particleName == "gamma") {
G4ComptonScattering* cs = new G4ComptonScattering;
cs->SetEmModel(new G4KleinNishinaModel());
G4PhotoElectricEffect* pee = new G4PhotoElectricEffect();
pee->SetEmModel(new G4LivermorePhotoElectricModel());
ph->RegisterProcess(cs, particle);
G4ComptonScattering* cs = new G4ComptonScattering;
cs->SetEmModel(new G4KleinNishinaModel());
ph->RegisterProcess(pee, particle);
ph->RegisterProcess(cs, particle);
ph->RegisterProcess(new G4GammaConversion(), particle);
ph->RegisterProcess(new G4RayleighScattering(), particle);
@@ -120,7 +120,7 @@ G4EmStandardPhysicsWVI::G4EmStandardPhysicsWVI(G4int ver)
param->SetVerbose(verbose);
param->SetLowestElectronEnergy(10*eV);
//param->SetLatDisplacementBeyondSafety(true);
//param->SetMuHadLateralDisplacement(false);
param->SetMuHadLateralDisplacement(true);
param->ActivateAngularGeneratorForIonisation(true);
param->SetMscThetaLimit(0.15);
param->SetFluo(true);
@@ -207,14 +207,14 @@ void G4EmStandardPhysicsWVI::ConstructProcess()
if (!particle) { continue; }
if (particleName == "gamma") {
G4ComptonScattering* cs = new G4ComptonScattering;
cs->SetEmModel(new G4KleinNishinaModel());
G4PhotoElectricEffect* pee = new G4PhotoElectricEffect();
pee->SetEmModel(new G4LivermorePhotoElectricModel());
ph->RegisterProcess(cs, particle);
G4ComptonScattering* cs = new G4ComptonScattering;
cs->SetEmModel(new G4KleinNishinaModel());
ph->RegisterProcess(pee, particle);
ph->RegisterProcess(cs, particle);
ph->RegisterProcess(new G4GammaConversion(), particle);
ph->RegisterProcess(new G4RayleighScattering(), particle);
@@ -23,7 +23,7 @@
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
// $Id: G4EmStandardPhysics_option1.cc 107183 2017-11-03 14:57:23Z gcosmo $
// $Id: G4EmStandardPhysics_option1.cc 109526 2018-04-30 07:11:52Z gcosmo $
//
//---------------------------------------------------------------------------
//
@@ -55,6 +55,7 @@
#include "G4ComptonScattering.hh"
#include "G4GammaConversion.hh"
#include "G4PhotoElectricEffect.hh"
#include "G4LivermorePhotoElectricModel.hh"
#include "G4eMultipleScattering.hh"
#include "G4MuMultipleScattering.hh"
@@ -197,7 +198,7 @@ void G4EmStandardPhysics_option1::ConstructProcess()
G4hMultipleScattering* hmsc = new G4hMultipleScattering("ionmsc");
// high energy limit for e+- scattering models and bremsstrahlung
G4double highEnergyLimit = 100*MeV;
G4double highEnergyLimit = G4EmParameters::Instance()->MscEnergyLimit();
// Add standard EM Processes
G4ParticleTable* table = G4ParticleTable::GetParticleTable();
@@ -206,7 +207,10 @@ void G4EmStandardPhysics_option1::ConstructProcess()
if (!particle) { continue; }
if (particleName == "gamma") {
ph->RegisterProcess(new G4PhotoElectricEffect(), particle);
G4PhotoElectricEffect* pee = new G4PhotoElectricEffect();
pee->SetEmModel(new G4LivermorePhotoElectricModel());
ph->RegisterProcess(pee, particle);
ph->RegisterProcess(new G4ComptonScattering(), particle);
ph->RegisterProcess(new G4GammaConversion(), particle);
@@ -23,7 +23,7 @@
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
// $Id: G4EmStandardPhysics_option2.cc 107183 2017-11-03 14:57:23Z gcosmo $
// $Id: G4EmStandardPhysics_option2.cc 109526 2018-04-30 07:11:52Z gcosmo $
//
//---------------------------------------------------------------------------
//
@@ -55,7 +55,7 @@
#include "G4ComptonScattering.hh"
#include "G4GammaConversion.hh"
#include "G4PhotoElectricEffect.hh"
#include "G4PEEffectFluoModel.hh"
#include "G4LivermorePhotoElectricModel.hh"
#include "G4KleinNishinaModel.hh"
#include "G4RayleighScattering.hh"
@@ -203,7 +203,7 @@ void G4EmStandardPhysics_option2::ConstructProcess()
G4hMultipleScattering* hmsc = new G4hMultipleScattering("ionmsc");
// high energy limit for e+- scattering models and bremsstrahlung
G4double highEnergyLimit = 100*MeV;
G4double highEnergyLimit = G4EmParameters::Instance()->MscEnergyLimit();
// Add standard EM Processes
G4ParticleTable* table = G4ParticleTable::GetParticleTable();
@@ -212,7 +212,10 @@ void G4EmStandardPhysics_option2::ConstructProcess()
if (!particle) { continue; }
if (particleName == "gamma") {
ph->RegisterProcess(new G4PhotoElectricEffect(), particle);
G4PhotoElectricEffect* pee = new G4PhotoElectricEffect();
pee->SetEmModel(new G4LivermorePhotoElectricModel());
ph->RegisterProcess(pee, particle);
ph->RegisterProcess(new G4ComptonScattering(), particle);
ph->RegisterProcess(new G4GammaConversion(), particle);
ph->RegisterProcess(new G4RayleighScattering(), particle);
@@ -23,7 +23,7 @@
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
// $Id: G4EmStandardPhysics_option3.cc 107183 2017-11-03 14:57:23Z gcosmo $
// $Id: G4EmStandardPhysics_option3.cc 109526 2018-04-30 07:11:52Z gcosmo $
//
//---------------------------------------------------------------------------
//
@@ -124,12 +124,11 @@ G4EmStandardPhysics_option3::G4EmStandardPhysics_option3(G4int ver,
param->SetDefaults();
param->SetVerbose(verbose);
param->SetMinEnergy(10*eV);
param->SetMaxEnergy(100*TeV);
param->SetLowestElectronEnergy(100*eV);
param->SetNumberOfBinsPerDecade(20);
param->SetMscStepLimitType(fUseDistanceToBoundary);
param->SetMuHadLateralDisplacement(true);
param->SetLateralDisplacementAlg96(false);
//param->SetLateralDisplacementAlg96(false);
param->SetFluo(true);
SetPhysicsType(bElectromagnetic);
}
@@ -202,14 +201,14 @@ void G4EmStandardPhysics_option3::ConstructProcess()
if (!particle) { continue; }
if (particleName == "gamma") {
G4ComptonScattering* cs = new G4ComptonScattering;
cs->SetEmModel(new G4KleinNishinaModel());
G4PhotoElectricEffect* pee = new G4PhotoElectricEffect();
pee->SetEmModel(new G4LivermorePhotoElectricModel());
ph->RegisterProcess(pee, particle);
G4ComptonScattering* cs = new G4ComptonScattering;
cs->SetEmModel(new G4KleinNishinaModel());
ph->RegisterProcess(cs, particle);
ph->RegisterProcess(new G4GammaConversion(), particle);
ph->RegisterProcess(new G4RayleighScattering(), particle);
@@ -23,7 +23,7 @@
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
// $Id: G4EmStandardPhysics_option4.cc 107332 2017-11-08 16:44:06Z gcosmo $
// $Id: G4EmStandardPhysics_option4.cc 109526 2018-04-30 07:11:52Z gcosmo $
//
//---------------------------------------------------------------------------
//
@@ -133,7 +133,6 @@ G4EmStandardPhysics_option4::G4EmStandardPhysics_option4(G4int ver,
param->SetDefaults();
param->SetVerbose(verbose);
param->SetMinEnergy(100*eV);
param->SetMaxEnergy(10*TeV);
param->SetLowestElectronEnergy(100*eV);
param->SetNumberOfBinsPerDecade(20);
param->ActivateAngularGeneratorForIonisation(true);
@@ -142,8 +141,6 @@ G4EmStandardPhysics_option4::G4EmStandardPhysics_option4(G4int ver,
param->SetMscSkin(3); // error-free stepping for e-/e+ msc gs
param->SetMscRangeFactor(0.2); // error-free stepping for e-/e+ msc gs
param->SetMuHadLateralDisplacement(true);
// param->SetLatDisplacementBeyondSafety(true);
// param->SetFluo(true);
param->SetAugerCascade(true);
SetPhysicsType(bElectromagnetic);
}
@@ -188,7 +185,7 @@ void G4EmStandardPhysics_option4::ConstructParticle()
void G4EmStandardPhysics_option4::ConstructProcess()
{
if(verbose > -1) {
if(verbose > 1) {
G4cout << "### " << GetPhysicsName() << " Construct Processes " << G4endl;
}
G4PhysicsListHelper* ph = G4PhysicsListHelper::GetPhysicsListHelper();
@@ -220,7 +217,7 @@ void G4EmStandardPhysics_option4::ConstructProcess()
G4hMultipleScattering* hmsc = new G4hMultipleScattering("ionmsc");
// energy limits for e+- scattering models
G4double highEnergyLimit = 100*MeV;
G4double highEnergyLimit = G4EmParameters::Instance()->MscEnergyLimit();
// energy limits for e+- ionisation models
G4double penEnergyLimit = 1*MeV;
@@ -1,6 +1,6 @@
# $Id: GNUmakefile 94089 2015-11-05 15:12:13Z gcosmo $
# $Id: GNUmakefile 108674 2018-02-27 07:32:51Z gcosmo $
# ---------------------------------------------------------------------------
# GNUmakefile for physics_lists/constructors/factory library.
# GNUmakefile for physics_lists/constructors/factory library.
# Gunter Folger 10-Jan-2012.
# ---------------------------------------------------------------------------
@@ -17,6 +17,7 @@ CPPFLAGS += -I$(G4BASE)/global/management/include \
-I$(G4BASE)/global/HEPRandom/include \
-I$(G4BASE)/global/HEPNumerics/include \
-I$(G4BASE)/global/HEPGeometry/include \
-I$(G4BASE)/geometry/biasing/include \
-I$(G4BASE)/geometry/volumes/include \
-I$(G4BASE)/geometry/management/include \
-I$(G4BASE)/geometry/magneticfield/include \
@@ -31,16 +32,17 @@ CPPFLAGS += -I$(G4BASE)/global/management/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/constructors/decay/include \
-I$(G4BASE)/physics_lists/constructors/electromagnetic/include \
-I$(G4BASE)/physics_lists/constructors/gamma_lepto_nuclear/include \
-I$(G4BASE)/physics_lists/constructors/hadron_elastic/include \
-I$(G4BASE)/physics_lists/constructors/hadron_inelastic/include \
-I$(G4BASE)/physics_lists/constructors/limiters/include \
-I$(G4BASE)/physics_lists/constructors/ions/include \
-I$(G4BASE)/physics_lists/constructors/stopping/include \
-I$(G4BASE)/physics_lists/util/include \
-I$(G4BASE)/physics_lists/builders/include \
-I$(G4BASE)/physics_lists/constructors/decay/include \
-I$(G4BASE)/physics_lists/constructors/electromagnetic/include \
-I$(G4BASE)/physics_lists/constructors/gamma_lepto_nuclear/include \
-I$(G4BASE)/physics_lists/constructors/hadron_elastic/include \
-I$(G4BASE)/physics_lists/constructors/hadron_inelastic/include \
-I$(G4BASE)/physics_lists/constructors/limiters/include \
-I$(G4BASE)/physics_lists/constructors/ions/include \
-I$(G4BASE)/physics_lists/constructors/stopping/include \
-I$(G4BASE)/physics_lists/util/include \
-I$(G4BASE)/processes/biasing/importance/include \
-I$(G4BASE)/processes/management/include \
-I$(G4BASE)/processes/transportation/include \
-I$(G4BASE)/processes/decay/include \
@@ -67,7 +69,7 @@ CPPFLAGS += -I$(G4BASE)/global/management/include \
-I$(G4BASE)/processes/hadronic/models/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/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 \
@@ -7,13 +7,30 @@ $Id: History 66241 2012-12-13 18:34:42Z gunter $
Hadronic physics-list/constructors/factory History
--------------------------------------------------
This file should be used to briefly summarize all major modifications
This file should be used to briefly summarize all major modifications
introduced in the code and keeptrack of all tags.
----------------------------------------------------------
* Reverse chronological order (last date on top), please *
----------------------------------------------------------
16-Mar-2018, Robert Hatcher (phys-ctor-fact-V10-04-02)
- Allows override of exclusion of G4RegisterPhysicsConstructors.icc
when using WIN32 by setting USING_STATIC_LIBS
28-Feb-2018, Robert Hatcher (phys-ctor-fact-V10-04-01)
- WIN32 linker works differently then Unix for externals in shared mode
Special case WIN32 (for both shared & static builds for now)
26-Feb-2018, Robert Hatcher (phys-ctor-fact-V10-04-00)
- Move G4_REFERENCE_PHYSCONSTR_FACTORY macro calls out of
G4PhysicsConstructorRegistry.cc, where they cause an implicit
circular link when building granular libraries, and into a new
G4RegisterPhysicsConstructors.icc, where they can be included
as necessary in a higher level compilation unit.
- REFERENCE macro calls can be made unique by #define REGREF <anything>
- Whitespace cleanup
01-May-2017, Sebastien Incerti (phys-ctor-fact-V10-03-00)
- added Geant4-DNA stationary constructors
@@ -56,7 +56,6 @@ public:
}
};
#define G4_DECLARE_PHYSCONSTR_FACTORY(physics_constructor) \
const G4PhysicsConstructorFactory<physics_constructor>& physics_constructor##Factory = G4PhysicsConstructorFactory<physics_constructor>(#physics_constructor)
@@ -76,16 +75,21 @@ public:
// the compilation unit static variable from the library and cause it
// to be initialized (and thus self-register)
// Use REGREF to allow cases where REFERENCE macro is used twice
#ifndef REGREF
#define REGREF 0
#endif
#define G4_REFERENCE_PHYSCONSTR_FACTORY(physics_constructor) \
class physics_constructor; \
extern const G4PhysicsConstructorFactory<physics_constructor>& physics_constructor##Factory; \
const G4PhysicsConstructorFactory<physics_constructor>& physics_constructor##FactoryRef = physics_constructor##Factory
const G4PhysicsConstructorFactory<physics_constructor>& physics_constructor##FactoryRef##REGREF = physics_constructor##Factory
#define G4_REFERENCE_PHYSCONSTR_FACTORY_NS( physics_constructor, nsname, pcbase ) \
namespace nsname { \
class pcbase; \
extern const G4PhysicsConstructorFactory<physics_constructor>& pcbase##Factory; \
const G4PhysicsConstructorFactory<physics_constructor>& pcbase##FactoryRef = pcbase##Factory; \
const G4PhysicsConstructorFactory<physics_constructor>& pcbase##FactoryRef##REGREF = pcbase##Factory; \
} \
typedef int xyzzy__LINE__
// eat trailing semicolon using silly typedef
@@ -24,7 +24,7 @@
// ********************************************************************
//
//
// $Id:
// $Id:
//
//
// -------------------------------------------------------------------
@@ -37,7 +37,7 @@
// Author W. Pokorski 21.09.2012
//
// Modifications:
//
//
//
// Class Description
// This is a singleton keeping pointers to all physics constructors
@@ -59,10 +59,10 @@ class G4PhysicsConstructorRegistry
public:
static G4PhysicsConstructorRegistry* Instance();
// access
// access
~G4PhysicsConstructorRegistry();
void Register(G4VPhysicsConstructor*);
//register new physics constructors
@@ -71,7 +71,7 @@ public:
void Clean();
//clean the store
void AddFactory(G4String, G4VBasePhysConstrFactory*);
G4VPhysicsConstructor* GetPhysicsConstructor(const G4String& name);
@@ -81,13 +81,13 @@ public:
std::vector<G4String> AvailablePhysicsConstructors() const;
void PrintAvailablePhysicsConstructors() const;
private:
G4PhysicsConstructorRegistry();
static G4ThreadLocal G4PhysicsConstructorRegistry* theInstance;
std::vector <G4VPhysicsConstructor*> physConstr;
std::map <G4String, G4VBasePhysConstrFactory*> factories;
@@ -0,0 +1,274 @@
//
// ********************************************************************
// * 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. *
// ********************************************************************
//
// $Id: RegisterPhysLists.icc 66704 2013-01-10 18:20:17Z rhatcher $
//
//---------------------------------------------------------------------------
//
// ClassName: RegisterPhysicsConstructors.icc
//
// Author: R. Hatcher 2018-02-06
//
// Modified:
//
//----------------------------------------------------------------------------
#if defined(WIN32) && !defined(USING_STATIC_LIBS)
// WIN32 linker/loader works differently than on unix
// these G4_REFERENCE_PHYSCONSTR_FACTORY macro calls in fact can't be used
// in "shared" link mode. In principle they _should_ be called
// in "static" link mode (that's the point of this file).
// Currently there is no build -D flag that distinquishes the two cases...
// but users can set USING_STATIC_LIBS
#define G4RegisterPhysicsConstructors_icc 1
#endif // WIN32
//
#ifndef G4RegisterPhysicsConstructors_icc
#define G4RegisterPhysicsConstructors_icc 1
#include "G4PhysicsConstructorFactory.hh"
//
// External reference to phy ctor factories for running with 'static'
// libraries to pull the references of the declared factories into the
// same compilation unit as the registry itself.
// No harm having them in the non-static case.
//
// Using the G4_REFERENCE_PHYSCONSTR_FACTORY macro does _not_ require
// including the headers (using G4_DECLARE_PHYSCONSTR_FACTORY does,
// but those are done in each phys_ctor's implementation itself).
//
// For static builds this needs to be included in a compilation unit
// for something that is going to use the G4PhysicsConstructorRegistry
// as a source of physics constructors (but not in the registration
// of the constructors themselves; that is via the G4_DECLARE_PHYSCONSTR_FACTORY
// macro). This is necessary when using static libraries in order that the
// individual phys_ctor compilation units to be included in the final
// executable, and thus available to self-register w/ the
// G4PhysicsConstructorRegistry to make themselves available.
//
// For granular builds this needs to be included at a higher level
// than any of the phys_ctor_X libraries in order to avoid introducing
// an effective ciruclar link.
//#include "G4ChargeExchangePhysics.hh"
G4_REFERENCE_PHYSCONSTR_FACTORY(G4ChargeExchangePhysics);
//#include "G4DecayPhysics.hh"
G4_REFERENCE_PHYSCONSTR_FACTORY(G4DecayPhysics);
//#include "G4EmDNAChemistry.hh"
G4_REFERENCE_PHYSCONSTR_FACTORY(G4EmDNAChemistry);
//#include "G4EmDNAPhysics.hh"
G4_REFERENCE_PHYSCONSTR_FACTORY(G4EmDNAPhysics);
//#include "G4EmDNAPhysics_option1.hh"
G4_REFERENCE_PHYSCONSTR_FACTORY(G4EmDNAPhysics_option1);
//#include "G4EmDNAPhysics_option2.hh"
G4_REFERENCE_PHYSCONSTR_FACTORY(G4EmDNAPhysics_option2);
//#include "G4EmDNAPhysics_option3.hh"
G4_REFERENCE_PHYSCONSTR_FACTORY(G4EmDNAPhysics_option3);
//#include "G4EmDNAPhysics_option4.hh"
G4_REFERENCE_PHYSCONSTR_FACTORY(G4EmDNAPhysics_option4);
//#include "G4EmDNAPhysics_option5.hh"
G4_REFERENCE_PHYSCONSTR_FACTORY(G4EmDNAPhysics_option5);
//#include "G4EmDNAPhysics_option6.hh"
G4_REFERENCE_PHYSCONSTR_FACTORY(G4EmDNAPhysics_option6);
//#include "G4EmDNAPhysics_option7.hh"
G4_REFERENCE_PHYSCONSTR_FACTORY(G4EmDNAPhysics_option7);
//#include "G4EmDNAPhysics_stationary.hh"
G4_REFERENCE_PHYSCONSTR_FACTORY(G4EmDNAPhysics_stationary);
//#include "G4EmDNAPhysics_stationary_option2.hh"
G4_REFERENCE_PHYSCONSTR_FACTORY(G4EmDNAPhysics_stationary_option2);
//#include "G4EmDNAPhysics_stationary_option4.hh"
G4_REFERENCE_PHYSCONSTR_FACTORY(G4EmDNAPhysics_stationary_option4);
//#include "G4EmDNAPhysics_stationary_option6.hh"
G4_REFERENCE_PHYSCONSTR_FACTORY(G4EmDNAPhysics_stationary_option6);
//#include "G4EmExtraPhysics.hh"
G4_REFERENCE_PHYSCONSTR_FACTORY(G4EmExtraPhysics);
//#include "G4EmLivermorePhysics.hh"
G4_REFERENCE_PHYSCONSTR_FACTORY(G4EmLivermorePhysics);
//#include "G4EmLivermorePolarizedPhysics.hh"
G4_REFERENCE_PHYSCONSTR_FACTORY(G4EmLivermorePolarizedPhysics);
//#include "G4EmLowEPPhysics.hh"
G4_REFERENCE_PHYSCONSTR_FACTORY(G4EmLowEPPhysics);
//#include "G4EmPenelopePhysics.hh"
G4_REFERENCE_PHYSCONSTR_FACTORY(G4EmPenelopePhysics);
//#include "G4EmStandardPhysics.hh"
G4_REFERENCE_PHYSCONSTR_FACTORY(G4EmStandardPhysics);
//#include "G4EmStandardPhysicsGS.hh"
G4_REFERENCE_PHYSCONSTR_FACTORY(G4EmStandardPhysicsGS);
//#include "G4EmStandardPhysicsSS.hh"
G4_REFERENCE_PHYSCONSTR_FACTORY(G4EmStandardPhysicsSS);
//#include "G4EmStandardPhysicsWVI.hh"
G4_REFERENCE_PHYSCONSTR_FACTORY(G4EmStandardPhysicsWVI);
//#include "G4EmStandardPhysics_option1.hh"
G4_REFERENCE_PHYSCONSTR_FACTORY(G4EmStandardPhysics_option1);
//#include "G4EmStandardPhysics_option2.hh"
G4_REFERENCE_PHYSCONSTR_FACTORY(G4EmStandardPhysics_option2);
//#include "G4EmStandardPhysics_option3.hh"
G4_REFERENCE_PHYSCONSTR_FACTORY(G4EmStandardPhysics_option3);
//#include "G4EmStandardPhysics_option4.hh"
G4_REFERENCE_PHYSCONSTR_FACTORY(G4EmStandardPhysics_option4);
//#include "G4GenericBiasingPhysics.hh"
G4_REFERENCE_PHYSCONSTR_FACTORY(G4GenericBiasingPhysics);
//#include "G4HadronDElasticPhysics.hh"
G4_REFERENCE_PHYSCONSTR_FACTORY(G4HadronDElasticPhysics);
//#include "G4HadronElasticPhysics.hh"
G4_REFERENCE_PHYSCONSTR_FACTORY(G4HadronElasticPhysics);
//#include "G4HadronElasticPhysicsHP.hh"
G4_REFERENCE_PHYSCONSTR_FACTORY(G4HadronElasticPhysicsHP);
//#include "G4HadronElasticPhysicsLEND.hh"
G4_REFERENCE_PHYSCONSTR_FACTORY(G4HadronElasticPhysicsLEND);
//#include "G4HadronElasticPhysicsXS.hh"
G4_REFERENCE_PHYSCONSTR_FACTORY(G4HadronElasticPhysicsXS);
//#include "G4HadronHElasticPhysics.hh"
G4_REFERENCE_PHYSCONSTR_FACTORY(G4HadronHElasticPhysics);
//#include "G4HadronInelasticQBBC.hh"
G4_REFERENCE_PHYSCONSTR_FACTORY(G4HadronInelasticQBBC);
//#include "G4HadronPhysicsFTFP_BERT.hh"
G4_REFERENCE_PHYSCONSTR_FACTORY(G4HadronPhysicsFTFP_BERT);
//#include "G4HadronPhysicsFTFP_BERT_ATL.hh"
G4_REFERENCE_PHYSCONSTR_FACTORY(G4HadronPhysicsFTFP_BERT_ATL);
//#include "G4HadronPhysicsFTFP_BERT_HP.hh"
G4_REFERENCE_PHYSCONSTR_FACTORY(G4HadronPhysicsFTFP_BERT_HP);
//#include "G4HadronPhysicsFTFP_BERT_TRV.hh"
G4_REFERENCE_PHYSCONSTR_FACTORY(G4HadronPhysicsFTFP_BERT_TRV);
//#include "G4HadronPhysicsFTF_BIC.hh"
G4_REFERENCE_PHYSCONSTR_FACTORY(G4HadronPhysicsFTF_BIC);
//#include "G4HadronPhysicsINCLXX.hh"
G4_REFERENCE_PHYSCONSTR_FACTORY(G4HadronPhysicsINCLXX);
//#include "G4HadronPhysicsNuBeam.hh"
G4_REFERENCE_PHYSCONSTR_FACTORY(G4HadronPhysicsNuBeam);
//#include "G4HadronPhysicsQGSP_BERT.hh"
G4_REFERENCE_PHYSCONSTR_FACTORY(G4HadronPhysicsQGSP_BERT);
//#include "G4HadronPhysicsQGSP_BERT_HP.hh"
G4_REFERENCE_PHYSCONSTR_FACTORY(G4HadronPhysicsQGSP_BERT_HP);
//#include "G4HadronPhysicsQGSP_BIC.hh"
G4_REFERENCE_PHYSCONSTR_FACTORY(G4HadronPhysicsQGSP_BIC);
//#include "G4HadronPhysicsQGSP_BIC_AllHP.hh"
G4_REFERENCE_PHYSCONSTR_FACTORY(G4HadronPhysicsQGSP_BIC_AllHP);
//#include "G4HadronPhysicsQGSP_BIC_HP.hh"
G4_REFERENCE_PHYSCONSTR_FACTORY(G4HadronPhysicsQGSP_BIC_HP);
//#include "G4HadronPhysicsQGSP_FTFP_BERT.hh"
G4_REFERENCE_PHYSCONSTR_FACTORY(G4HadronPhysicsQGSP_FTFP_BERT);
//#include "G4HadronPhysicsQGS_BIC.hh"
G4_REFERENCE_PHYSCONSTR_FACTORY(G4HadronPhysicsQGS_BIC);
//#include "G4HadronPhysicsShielding.hh"
G4_REFERENCE_PHYSCONSTR_FACTORY(G4HadronPhysicsShielding);
//#include "G4ImportanceBiasing.hh"
G4_REFERENCE_PHYSCONSTR_FACTORY(G4ImportanceBiasing);
//#include "G4IonBinaryCascadePhysics.hh"
G4_REFERENCE_PHYSCONSTR_FACTORY(G4IonBinaryCascadePhysics);
//#include "G4IonElasticPhysics.hh"
G4_REFERENCE_PHYSCONSTR_FACTORY(G4IonElasticPhysics);
//#include "G4IonINCLXXPhysics.hh"
G4_REFERENCE_PHYSCONSTR_FACTORY(G4IonINCLXXPhysics);
//#include "G4IonPhysics.hh"
G4_REFERENCE_PHYSCONSTR_FACTORY(G4IonPhysics);
//#include "G4IonQMDPhysics.hh"
G4_REFERENCE_PHYSCONSTR_FACTORY(G4IonQMDPhysics);
//#include "G4NeutronCrossSectionXS.hh"
G4_REFERENCE_PHYSCONSTR_FACTORY(G4NeutronCrossSectionXS);
//#include "G4NeutronTrackingCut.hh"
G4_REFERENCE_PHYSCONSTR_FACTORY(G4NeutronTrackingCut);
//#include "G4OpticalPhysics.hh"
G4_REFERENCE_PHYSCONSTR_FACTORY(G4OpticalPhysics);
//#include "G4ParallelWorldPhysics.hh"
G4_REFERENCE_PHYSCONSTR_FACTORY(G4ParallelWorldPhysics);
//#include "G4RadioactiveDecayPhysics.hh"
G4_REFERENCE_PHYSCONSTR_FACTORY(G4RadioactiveDecayPhysics);
//#include "G4SpinDecayPhysics.hh"
G4_REFERENCE_PHYSCONSTR_FACTORY(G4SpinDecayPhysics);
//#include "G4StepLimiterPhysics.hh"
G4_REFERENCE_PHYSCONSTR_FACTORY(G4StepLimiterPhysics);
//#include "G4StoppingPhysics.hh"
G4_REFERENCE_PHYSCONSTR_FACTORY(G4StoppingPhysics);
//#include "G4WeightWindowBiasing.hh"
G4_REFERENCE_PHYSCONSTR_FACTORY(G4WeightWindowBiasing);
#endif // G4RegisterPhysicsConstructors_icc
@@ -104,10 +104,11 @@ include_directories(${CMAKE_SOURCE_DIR}/source/tracking/include)
include(Geant4MacroDefineModule)
GEANT4_DEFINE_MODULE(NAME G4phys_ctor_factory
HEADERS
G4PhysicsConstructorFactory.hh
G4RegisterPhysicsConstructors.icc
G4PhysicsConstructorFactory.hh
G4PhysicsConstructorRegistry.hh
SOURCES
G4PhysicsConstructorRegistry.cc
G4PhysicsConstructorRegistry.cc
GRANULAR_DEPENDENCIES
G4baryons
G4bosons
@@ -24,7 +24,7 @@
// ********************************************************************
//
//
// $Id:
// $Id:
//
// -------------------------------------------------------------------
//
@@ -41,7 +41,11 @@
#include "G4ios.hh"
#include <iomanip>
// force REFERENCE macros _not_ to be expanded here
// but wherever the class is used (w/ that .hh use)
#define G4PhysicsConstructorRegistry_cc 1
#include "G4PhysicsConstructorRegistry.hh"
#include "G4VPhysicsConstructor.hh"
#include "G4PhysicsConstructorFactory.hh"
@@ -66,7 +70,7 @@ G4PhysicsConstructorRegistry::~G4PhysicsConstructorRegistry()
void G4PhysicsConstructorRegistry::Clean()
{
size_t n = physConstr.size();
size_t n = physConstr.size();
if(n > 0) {
for (size_t i=0; i<n; ++i) {
if(physConstr[i]) {
@@ -82,7 +86,7 @@ void G4PhysicsConstructorRegistry::Clean()
void G4PhysicsConstructorRegistry::Register(G4VPhysicsConstructor* p)
{
if(!p) return;
size_t n = physConstr.size();
size_t n = physConstr.size();
if(n > 0) {
for (size_t i=0; i<n; ++i) {
if(physConstr[i] == p) { return; }
@@ -94,7 +98,7 @@ void G4PhysicsConstructorRegistry::Register(G4VPhysicsConstructor* p)
void G4PhysicsConstructorRegistry::DeRegister(G4VPhysicsConstructor* p)
{
if ( !p ) return;
size_t n = physConstr.size();
size_t n = physConstr.size();
if ( n > 0 ) {
for (size_t i=0; i<n; ++i) {
if ( physConstr[i] == p ) {
@@ -119,7 +123,7 @@ G4VPhysicsConstructor* G4PhysicsConstructorRegistry::GetPhysicsConstructor(const
// we could store the list of called factories in some vector and
// before returning we can could first check if this physics constructor was already instantiated
// if yes, we can throw an exception saying that this physics can been already registered
return factories[name]->Instantiate();
}
else
@@ -164,75 +168,19 @@ void G4PhysicsConstructorRegistry::PrintAvailablePhysicsConstructors() const
}
//
// External reference to phy ctor factories for running with 'static'
// External reference to phy ctor factories for running with 'static'
// libraries to pull the references of the declared factories into the
// same compilation unit as the registry itself.
// No harm having them in the non-static case.
//
G4_REFERENCE_PHYSCONSTR_FACTORY(G4ChargeExchangePhysics);
G4_REFERENCE_PHYSCONSTR_FACTORY(G4DecayPhysics);
G4_REFERENCE_PHYSCONSTR_FACTORY(G4EmDNAChemistry);
G4_REFERENCE_PHYSCONSTR_FACTORY(G4EmDNAPhysics);
G4_REFERENCE_PHYSCONSTR_FACTORY(G4EmDNAPhysics_option1);
G4_REFERENCE_PHYSCONSTR_FACTORY(G4EmDNAPhysics_option2);
G4_REFERENCE_PHYSCONSTR_FACTORY(G4EmDNAPhysics_option3);
G4_REFERENCE_PHYSCONSTR_FACTORY(G4EmDNAPhysics_option4);
G4_REFERENCE_PHYSCONSTR_FACTORY(G4EmDNAPhysics_option5);
G4_REFERENCE_PHYSCONSTR_FACTORY(G4EmDNAPhysics_option6);
G4_REFERENCE_PHYSCONSTR_FACTORY(G4EmDNAPhysics_option7);
G4_REFERENCE_PHYSCONSTR_FACTORY(G4EmDNAPhysics_stationary);
G4_REFERENCE_PHYSCONSTR_FACTORY(G4EmDNAPhysics_stationary_option2);
G4_REFERENCE_PHYSCONSTR_FACTORY(G4EmDNAPhysics_stationary_option4);
G4_REFERENCE_PHYSCONSTR_FACTORY(G4EmDNAPhysics_stationary_option6);
G4_REFERENCE_PHYSCONSTR_FACTORY(G4EmExtraPhysics);
G4_REFERENCE_PHYSCONSTR_FACTORY(G4EmLivermorePhysics);
G4_REFERENCE_PHYSCONSTR_FACTORY(G4EmLivermorePolarizedPhysics);
G4_REFERENCE_PHYSCONSTR_FACTORY(G4EmLowEPPhysics);
G4_REFERENCE_PHYSCONSTR_FACTORY(G4EmPenelopePhysics);
G4_REFERENCE_PHYSCONSTR_FACTORY(G4EmStandardPhysics);
G4_REFERENCE_PHYSCONSTR_FACTORY(G4EmStandardPhysicsGS);
G4_REFERENCE_PHYSCONSTR_FACTORY(G4EmStandardPhysicsSS);
G4_REFERENCE_PHYSCONSTR_FACTORY(G4EmStandardPhysicsWVI);
G4_REFERENCE_PHYSCONSTR_FACTORY(G4EmStandardPhysics_option1);
G4_REFERENCE_PHYSCONSTR_FACTORY(G4EmStandardPhysics_option2);
G4_REFERENCE_PHYSCONSTR_FACTORY(G4EmStandardPhysics_option3);
G4_REFERENCE_PHYSCONSTR_FACTORY(G4EmStandardPhysics_option4);
G4_REFERENCE_PHYSCONSTR_FACTORY(G4GenericBiasingPhysics);
G4_REFERENCE_PHYSCONSTR_FACTORY(G4HadronDElasticPhysics);
G4_REFERENCE_PHYSCONSTR_FACTORY(G4HadronElasticPhysics);
G4_REFERENCE_PHYSCONSTR_FACTORY(G4HadronElasticPhysicsHP);
G4_REFERENCE_PHYSCONSTR_FACTORY(G4HadronElasticPhysicsLEND);
G4_REFERENCE_PHYSCONSTR_FACTORY(G4HadronElasticPhysicsXS);
G4_REFERENCE_PHYSCONSTR_FACTORY(G4HadronHElasticPhysics);
G4_REFERENCE_PHYSCONSTR_FACTORY(G4HadronInelasticQBBC);
G4_REFERENCE_PHYSCONSTR_FACTORY(G4HadronPhysicsFTFP_BERT);
G4_REFERENCE_PHYSCONSTR_FACTORY(G4HadronPhysicsFTFP_BERT_ATL);
G4_REFERENCE_PHYSCONSTR_FACTORY(G4HadronPhysicsFTFP_BERT_HP);
G4_REFERENCE_PHYSCONSTR_FACTORY(G4HadronPhysicsFTFP_BERT_TRV);
G4_REFERENCE_PHYSCONSTR_FACTORY(G4HadronPhysicsFTF_BIC);
G4_REFERENCE_PHYSCONSTR_FACTORY(G4HadronPhysicsINCLXX);
G4_REFERENCE_PHYSCONSTR_FACTORY(G4HadronPhysicsNuBeam);
G4_REFERENCE_PHYSCONSTR_FACTORY(G4HadronPhysicsQGSP_BERT);
G4_REFERENCE_PHYSCONSTR_FACTORY(G4HadronPhysicsQGSP_BERT_HP);
G4_REFERENCE_PHYSCONSTR_FACTORY(G4HadronPhysicsQGSP_BIC);
G4_REFERENCE_PHYSCONSTR_FACTORY(G4HadronPhysicsQGSP_BIC_AllHP);
G4_REFERENCE_PHYSCONSTR_FACTORY(G4HadronPhysicsQGSP_BIC_HP);
G4_REFERENCE_PHYSCONSTR_FACTORY(G4HadronPhysicsQGSP_FTFP_BERT);
G4_REFERENCE_PHYSCONSTR_FACTORY(G4HadronPhysicsQGS_BIC);
G4_REFERENCE_PHYSCONSTR_FACTORY(G4HadronPhysicsShielding);
G4_REFERENCE_PHYSCONSTR_FACTORY(G4ImportanceBiasing);
G4_REFERENCE_PHYSCONSTR_FACTORY(G4IonBinaryCascadePhysics);
G4_REFERENCE_PHYSCONSTR_FACTORY(G4IonElasticPhysics);
G4_REFERENCE_PHYSCONSTR_FACTORY(G4IonINCLXXPhysics);
G4_REFERENCE_PHYSCONSTR_FACTORY(G4IonPhysics);
G4_REFERENCE_PHYSCONSTR_FACTORY(G4IonQMDPhysics);
G4_REFERENCE_PHYSCONSTR_FACTORY(G4NeutronCrossSectionXS);
G4_REFERENCE_PHYSCONSTR_FACTORY(G4NeutronTrackingCut);
G4_REFERENCE_PHYSCONSTR_FACTORY(G4OpticalPhysics);
G4_REFERENCE_PHYSCONSTR_FACTORY(G4ParallelWorldPhysics);
G4_REFERENCE_PHYSCONSTR_FACTORY(G4RadioactiveDecayPhysics);
G4_REFERENCE_PHYSCONSTR_FACTORY(G4SpinDecayPhysics);
G4_REFERENCE_PHYSCONSTR_FACTORY(G4StepLimiterPhysics);
G4_REFERENCE_PHYSCONSTR_FACTORY(G4StoppingPhysics);
G4_REFERENCE_PHYSCONSTR_FACTORY(G4WeightWindowBiasing);
// Ideally we'd do the G4_REFERENCE_PHYSCONSTR_FACTORY() macros
// here, but this introduces a circular dependence between the
// ctor_phys_factory library and the other ctor_phys_* libraries
// when creating granular libraries.
// Instead we'll make the references in the location(s) where the
// G4PhysicsConstructorRegistry is _used_ :
// G4
/*
#include "G4RegisterPhysicsConstructors.icc"
*/
@@ -1,4 +1,4 @@
$Id: History 107436 2017-11-13 07:36:25Z gcosmo $
$Id: History 108439 2018-02-14 07:34:01Z gcosmo $
-------------------------------------------------------------------
=========================================================
@@ -14,6 +14,17 @@ introduced in the code and keeptrack of all tags.
* Reverse chronological order (last date on top), please *
----------------------------------------------------------
12 February 2018 Jonathan Madsen (phys-ctor-glnuclear-V10-04-02)
- Removed G4MUTEX_INITIALIZER from constructor in G4EmExtraPhysics
02-Feb-2018, V.Ivanchenko (phys-ctor-glnuclear-V10-04-01)
- G4EmExtraPhysics, G4EmMessenger - added extra UI commands and Set
methods for neutrino-electron interactions (V.Grichine)
30-Jan-2017, V.Ivanchenko (phys-ctor-glnuclear-V10-04-00)
- G4EmExtraPhysics, G4EmMessenger - added extra UI commands and Set
methods to define flags for neutrinos
10-November-2017, T.Koi (phys-ctor-glnuclear-V10-03-04)
-Dumpping LEND target information in G4LENDBertiniGammaElectroNuclearBuilder
@@ -35,6 +35,7 @@
// 10.11.2005 V.Ivanchenko edit to provide a standard
// 19.06.2006 V.Ivanchenko add mu-nuclear process
// 16.10.2012 A.Ribon: renamed G4EmExtraBertiniPhysics as G4EmExtraPhysics
// 31.01.2018 V. Grichine: add neutrino-electron process and xsc
//
//----------------------------------------------------------------------------
//
@@ -52,6 +53,8 @@ class G4SynchrotronRadiation;
class G4GammaConversionToMuons;
class G4AnnihiToMuPair;
class G4eeToHadrons;
class G4NeutrinoElectronProcess;
class G4NeutrinoElectronTotXsc;
class G4EmExtraPhysics : public G4VPhysicsConstructor
{
@@ -80,6 +83,12 @@ public:
void PositronToMuMuFactor(G4double val);
void PositronToHadronsFactor(G4double val);
void NeutrinoActivated(G4bool val);
void SetNuEleCcBias(G4double bf);
void SetNuEleNcBias(G4double bf);
void SetNuNucleusBias(G4double bf);
void SetNuDetectorName(const G4String& dn);
private:
static G4bool gnActivated;
@@ -91,9 +100,16 @@ private:
static G4bool gmumuActivated;
static G4bool pmumuActivated;
static G4bool phadActivated;
static G4bool fNuActivated;
static G4double gmumuFactor;
static G4double pmumuFactor;
static G4double phadFactor;
static G4double fNuEleCcBias;
static G4double fNuEleNcBias;
static G4double fNuNucleusBias;
static G4String fNuDetectorName;
static G4ThreadLocal G4BertiniElectroNuclearBuilder* theGNPhysics;
static G4ThreadLocal G4SynchrotronRadiation* theSynchRad;
@@ -101,6 +117,9 @@ private:
static G4ThreadLocal G4AnnihiToMuPair* thePosiToMuMu;
static G4ThreadLocal G4eeToHadrons* thePosiToHadrons;
static G4ThreadLocal G4NeutrinoElectronProcess* theNuEleProcess;
static G4ThreadLocal G4NeutrinoElectronTotXsc* theNuEleTotXsc;
G4EmMessenger* theMessenger;
G4int verbose;
};
@@ -34,6 +34,7 @@
// Modified:
// 09.11.2005 V.Ivanchenko edit to provide a standard
// 19.06.2006 V.Ivanchenko add mu-nuclear process
// 31.01.2018 V.Grichine, activation of neutrino-electron process
//
//----------------------------------------------------------------------------
//
@@ -47,6 +48,9 @@ class G4EmExtraPhysics;
#include "G4UIdirectory.hh"
#include "G4UIcmdWithABool.hh"
#include "G4UIcmdWithADouble.hh"
#include "G4UIcmdWithAString.hh"
//////////////////////////////////////
class G4EmMessenger: public G4UImessenger
{
@@ -58,6 +62,7 @@ public:
private:
G4EmExtraPhysics* theB;
G4UIcmdWithABool* theSynch;
G4UIcmdWithABool* theSynchAll;
G4UIcmdWithABool* theGN;
@@ -67,9 +72,17 @@ private:
G4UIcmdWithABool* theGMM;
G4UIcmdWithABool* thePMM;
G4UIcmdWithABool* thePH;
G4UIcmdWithABool* theNu;
G4UIcmdWithADouble* theGMM1;
G4UIcmdWithADouble* thePMM1;
G4UIcmdWithADouble* thePH1;
G4UIcmdWithADouble* theNuEleCcBF;
G4UIcmdWithADouble* theNuEleNcBF;
G4UIcmdWithADouble* theNuNucleusBF;
G4UIcmdWithAString* theNuDN;
G4UIdirectory* aDir1;
G4UIdirectory* aDir2;
};
@@ -32,14 +32,16 @@
// Author: 2002 J.P. Wellisch
//
// Modified:
//
// 10.11.2005 V.Ivanchenko edit to provide a standard
// 19.06.2006 V.Ivanchenko add mu-nuclear process
// 16.10.2012 A.Ribon: renamed G4EmExtraBertiniPhysics as G4EmExtraPhysics
// 10.04.2014 A.Dotti: Add MT functionality for messenger
// 24.04.2014 A.Ribon: switched on muon-nuclear by default
// 29.01.2018 V.Grichine, adding neutrinos
//
//----------------------------------------------------------------------------
//
///////////////////////////////////////////////////////////////
#include "G4EmExtraPhysics.hh"
@@ -52,6 +54,12 @@
#include "G4Positron.hh"
#include "G4MuonPlus.hh"
#include "G4MuonMinus.hh"
#include "G4AntiNeutrinoE.hh"
#include "G4NeutrinoE.hh"
#include "G4AntiNeutrinoMu.hh"
#include "G4NeutrinoMu.hh"
#include "G4AntiNeutrinoTau.hh"
#include "G4NeutrinoTau.hh"
#include "G4SynchrotronRadiation.hh"
#include "G4BertiniElectroNuclearBuilder.hh"
@@ -63,6 +71,11 @@
#include "G4AnnihiToMuPair.hh"
#include "G4eeToHadrons.hh"
#include "G4NeutrinoElectronProcess.hh"
#include "G4NeutrinoElectronTotXsc.hh"
#include "G4NeutrinoElectronCcModel.hh"
#include "G4NeutrinoElectronNcModel.hh"
#include "G4PhysicsListHelper.hh"
#include "G4BuilderType.hh"
#include "G4AutoDelete.hh"
@@ -81,9 +94,16 @@ G4bool G4EmExtraPhysics::synActivatedForAll = false;
G4bool G4EmExtraPhysics::gmumuActivated = false;
G4bool G4EmExtraPhysics::pmumuActivated = false;
G4bool G4EmExtraPhysics::phadActivated = false;
G4bool G4EmExtraPhysics::fNuActivated = false;
G4double G4EmExtraPhysics::gmumuFactor = 1.0;
G4double G4EmExtraPhysics::pmumuFactor = 1.0;
G4double G4EmExtraPhysics::phadFactor = 1.0;
G4double G4EmExtraPhysics::fNuEleCcBias = 1.0;
G4double G4EmExtraPhysics::fNuEleNcBias = 1.0;
G4double G4EmExtraPhysics::fNuNucleusBias = 1.0;
G4String G4EmExtraPhysics::fNuDetectorName = "0";
G4ThreadLocal G4BertiniElectroNuclearBuilder* G4EmExtraPhysics::theGNPhysics = nullptr;
G4ThreadLocal G4SynchrotronRadiation* G4EmExtraPhysics::theSynchRad = nullptr;
@@ -91,6 +111,12 @@ G4ThreadLocal G4GammaConversionToMuons* G4EmExtraPhysics::theGammaToMuMu = nullp
G4ThreadLocal G4AnnihiToMuPair* G4EmExtraPhysics::thePosiToMuMu = nullptr;
G4ThreadLocal G4eeToHadrons* G4EmExtraPhysics::thePosiToHadrons = nullptr;
G4ThreadLocal G4NeutrinoElectronProcess* G4EmExtraPhysics::theNuEleProcess = nullptr;
G4ThreadLocal G4NeutrinoElectronTotXsc* G4EmExtraPhysics::theNuEleTotXsc = nullptr;
//////////////////////////////////////
G4EmExtraPhysics::G4EmExtraPhysics(G4int ver):
G4VPhysicsConstructor("G4GammaLeptoNuclearPhys"),
verbose(ver)
@@ -171,6 +197,35 @@ void G4EmExtraPhysics::PositronToHadronsFactor(G4double val)
if(val > 0.0) phadFactor = val;
}
////////////////////////////////////////////////////
void G4EmExtraPhysics::NeutrinoActivated(G4bool val)
{
fNuActivated = val;
}
void G4EmExtraPhysics::SetNuEleCcBias(G4double bf)
{
if(bf > 0.0) fNuEleCcBias = bf;
}
void G4EmExtraPhysics::SetNuEleNcBias(G4double bf)
{
if(bf > 0.0) fNuEleNcBias = bf;
}
void G4EmExtraPhysics::SetNuNucleusBias(G4double bf)
{
if(bf > 0.0) fNuNucleusBias = bf;
}
void G4EmExtraPhysics::SetNuDetectorName(const G4String& dn)
{
fNuDetectorName = dn;
}
/////////////////////////////////////////////////
void G4EmExtraPhysics::ConstructParticle()
{
G4Gamma::Gamma();
@@ -178,16 +233,30 @@ void G4EmExtraPhysics::ConstructParticle()
G4Positron::Positron();
G4MuonPlus::MuonPlus();
G4MuonMinus::MuonMinus();
G4AntiNeutrinoE::AntiNeutrinoE();
G4NeutrinoE::NeutrinoE();
G4AntiNeutrinoMu::AntiNeutrinoMu();
G4NeutrinoMu::NeutrinoMu();
G4AntiNeutrinoTau::AntiNeutrinoTau();
G4NeutrinoTau::NeutrinoTau();
}
void G4EmExtraPhysics::ConstructProcess()
{
G4ParticleDefinition* gamma = G4Gamma::Gamma();
G4ParticleDefinition* electron = G4Electron::Electron();
G4ParticleDefinition* positron = G4Positron::Positron();
G4ParticleDefinition* muonplus = G4MuonPlus::MuonPlus();
G4ParticleDefinition* gamma = G4Gamma::Gamma();
G4ParticleDefinition* electron = G4Electron::Electron();
G4ParticleDefinition* positron = G4Positron::Positron();
G4ParticleDefinition* muonplus = G4MuonPlus::MuonPlus();
G4ParticleDefinition* muonminus = G4MuonMinus::MuonMinus();
G4ParticleDefinition* anuelectron = G4AntiNeutrinoE::AntiNeutrinoE();
G4ParticleDefinition* nuelectron = G4NeutrinoE::NeutrinoE();
G4ParticleDefinition* anumuon = G4AntiNeutrinoMu::AntiNeutrinoMu();
G4ParticleDefinition* numuon = G4NeutrinoMu::NeutrinoMu();
G4ParticleDefinition* anutau = G4AntiNeutrinoTau::AntiNeutrinoTau();
G4ParticleDefinition* nutau = G4NeutrinoTau::NeutrinoTau();
G4PhysicsListHelper* ph = G4PhysicsListHelper::GetPhysicsListHelper();
if(gnActivated) {
if ( gLENDActivated != true ) {
@@ -240,5 +309,27 @@ void G4EmExtraPhysics::ConstructProcess()
}
}
}
if( fNuActivated )
{
theNuEleProcess = new G4NeutrinoElectronProcess(fNuDetectorName);
theNuEleProcess->SetBiasingFactors(fNuEleCcBias,fNuEleNcBias);
theNuEleTotXsc = new G4NeutrinoElectronTotXsc();
theNuEleTotXsc->SetBiasingFactors(fNuEleCcBias,fNuEleNcBias);
theNuEleProcess->AddDataSet(theNuEleTotXsc);
G4NeutrinoElectronCcModel* ccModel = new G4NeutrinoElectronCcModel();
G4NeutrinoElectronNcModel* ncModel = new G4NeutrinoElectronNcModel();
theNuEleProcess->RegisterMe(ccModel);
theNuEleProcess->RegisterMe(ncModel);
ph->RegisterProcess(theNuEleProcess, anuelectron);
ph->RegisterProcess(theNuEleProcess, nuelectron);
ph->RegisterProcess(theNuEleProcess, anumuon);
ph->RegisterProcess(theNuEleProcess, numuon);
ph->RegisterProcess(theNuEleProcess, anutau);
ph->RegisterProcess(theNuEleProcess, nutau);
}
}
@@ -100,6 +100,10 @@ G4EmMessenger::G4EmMessenger(G4EmExtraPhysics* ab)
thePH->SetGuidance("Switching on positron conversion to hadrons.");
thePH->AvailableForStates(G4State_PreInit);
theNu = new G4UIcmdWithABool("/physics_lists/em/NeutrinoActivation",this);
theNu->SetGuidance("Activation of neutrino processes");
theNu->AvailableForStates(G4State_PreInit);
theGMM1 = new G4UIcmdWithADouble("/physics_lists/em/GammaToMuonsFactor",this);
theGMM1->SetGuidance("Factor for gamma conversion to muon pair.");
theGMM1->AvailableForStates(G4State_PreInit);
@@ -111,6 +115,22 @@ G4EmMessenger::G4EmMessenger(G4EmExtraPhysics* ab)
thePH1 = new G4UIcmdWithADouble("/physics_lists/em/PositronToHadronsFactor",this);
thePH1->SetGuidance("Factor for positron conversion to hadrons.");
thePH1->AvailableForStates(G4State_PreInit);
theNuEleCcBF = new G4UIcmdWithADouble("/physics_lists/em/NuEleCcBias",this);
theNuEleCcBF->SetGuidance("Neutrino-electron cc-current bias factor");
theNuEleCcBF->AvailableForStates(G4State_PreInit);
theNuEleNcBF = new G4UIcmdWithADouble("/physics_lists/em/NuEleNcBias",this);
theNuEleNcBF->SetGuidance("Neutrino-electron nc-current bias factor");
theNuEleNcBF->AvailableForStates(G4State_PreInit);
theNuNucleusBF = new G4UIcmdWithADouble("/physics_lists/em/NuNucleusBias",this);
theNuNucleusBF->SetGuidance("Neutrino-nucleus bias factor");
theNuNucleusBF->AvailableForStates(G4State_PreInit);
theNuDN = new G4UIcmdWithAString("/physics_lists/em/NuDetectorName",this);
theNuDN->SetGuidance("Set neutrino detector name");
theNuDN->AvailableForStates(G4State_PreInit);
}
G4EmMessenger::~G4EmMessenger()
@@ -124,9 +144,15 @@ G4EmMessenger::~G4EmMessenger()
delete theGMM;
delete thePMM;
delete thePH;
delete theNu;
delete theGMM1;
delete thePMM1;
delete thePH1;
delete theNuEleCcBF;
delete theNuEleNcBF;
delete theNuNucleusBF;
delete aDir1;
delete aDir2;
}
@@ -142,7 +168,15 @@ void G4EmMessenger::SetNewValue(G4UIcommand* aComm, G4String aS)
if(aComm==theGMM) theB->GammaToMuMu(theGMM->GetNewBoolValue(aS));
if(aComm==thePMM) theB->PositronToMuMu(thePMM->GetNewBoolValue(aS));
if(aComm==thePH) theB->PositronToHadrons(thePH->GetNewBoolValue(aS));
if(aComm==theNu) theB->NeutrinoActivated(theNu->GetNewBoolValue(aS));
if(aComm==theGMM1) theB->GammaToMuMuFactor(theGMM1->GetNewDoubleValue(aS));
if(aComm==thePMM1) theB->PositronToMuMuFactor(thePMM1->GetNewDoubleValue(aS));
if(aComm==thePH1) theB->PositronToHadronsFactor(thePH1->GetNewDoubleValue(aS));
if(aComm==theNuEleCcBF) theB->SetNuEleCcBias(theNuEleCcBF->GetNewDoubleValue(aS));
if(aComm==theNuEleNcBF) theB->SetNuEleNcBias(theNuEleCcBF->GetNewDoubleValue(aS));
if(aComm==theNuNucleusBF) theB->SetNuNucleusBias(theNuNucleusBF->GetNewDoubleValue(aS));
if(aComm==theNuDN) theB->SetNuDetectorName(aS);
}
@@ -1,4 +1,4 @@
$Id: History 107320 2017-11-08 16:30:22Z gcosmo $
$Id: History 110587 2018-05-31 12:05:13Z gcosmo $
-------------------------------------------------------------------
=========================================================
@@ -13,6 +13,11 @@ introduced in the code and keeptrack of all tags.
----------------------------------------------------------
* Reverse chronological order (last date on top), please *
----------------------------------------------------------
31-May-2018, Vladimir Ivantchenko (phys-ctor-hinelastic-V10-04-00)
- G4HadronInelasticQBBC - use G4ParticleInelasticXS both for neutrons
and protons
7-Nov-2017, Tatsumi Koi (phys-ctor-hinelastic-V10-03-06)
- Adding G4HadronPhysicsShieldingLEND
@@ -23,7 +23,7 @@
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
// $Id: G4HadronInelasticQBBC.hh 99005 2016-08-30 11:26:40Z gcosmo $
// $Id: G4HadronInelasticQBBC.hh 110587 2018-05-31 12:05:13Z gcosmo $
//
//---------------------------------------------------------------------------
//
@@ -70,8 +70,8 @@ private:
G4HadronInelasticQBBC(G4HadronInelasticQBBC &);
G4HadronInelasticQBBC & operator=(const G4HadronInelasticQBBC &right);
static G4ThreadLocal G4ComponentAntiNuclNuclearXS* theAntiNuclXS;
static G4ThreadLocal G4ComponentGGHadronNucleusXsc* theKaonXS;
static G4ThreadLocal std::unique_ptr<G4ComponentAntiNuclNuclearXS> theAntiNuclXS;
static G4ThreadLocal std::unique_ptr<G4ComponentGGHadronNucleusXsc> theKaonXS;
G4int verbose;
};
@@ -23,7 +23,7 @@
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
// $Id: G4HadronInelasticQBBC.cc 99977 2016-10-13 07:26:42Z gcosmo $
// $Id: G4HadronInelasticQBBC.cc 110587 2018-05-31 12:05:13Z gcosmo $
//
//---------------------------------------------------------------------------
//
@@ -49,7 +49,7 @@
#include "G4BGGNucleonInelasticXS.hh"
#include "G4BGGPionInelasticXS.hh"
#include "G4NeutronInelasticXS.hh"
#include "G4ParticleInelasticXS.hh"
#include "G4NeutronCaptureXS.hh"
#include "G4CrossSectionInelastic.hh"
@@ -79,8 +79,8 @@
//
G4_DECLARE_PHYSCONSTR_FACTORY(G4HadronInelasticQBBC);
G4ThreadLocal G4ComponentAntiNuclNuclearXS* G4HadronInelasticQBBC::theAntiNuclXS = nullptr;
G4ThreadLocal G4ComponentGGHadronNucleusXsc* G4HadronInelasticQBBC::theKaonXS = nullptr;
G4ThreadLocal std::unique_ptr<G4ComponentAntiNuclNuclearXS> G4HadronInelasticQBBC::theAntiNuclXS;
G4ThreadLocal std::unique_ptr<G4ComponentGGHadronNucleusXsc> G4HadronInelasticQBBC::theKaonXS;
G4HadronInelasticQBBC::G4HadronInelasticQBBC(G4int ver)
: G4VHadronPhysics("hInelasticQBBC"),verbose(ver)
@@ -94,10 +94,7 @@ G4HadronInelasticQBBC::G4HadronInelasticQBBC(const G4String&, G4int ver,
{}
G4HadronInelasticQBBC::~G4HadronInelasticQBBC()
{
delete theAntiNuclXS; theAntiNuclXS=nullptr;
delete theKaonXS; theKaonXS=nullptr;
}
{}
void G4HadronInelasticQBBC::ConstructProcess()
{
@@ -139,11 +136,11 @@ void G4HadronInelasticQBBC::ConstructProcess()
G4HadronicInteraction* theBIC = NewModel(bic,0.0,1.5*GeV);
// cross sections
theAntiNuclXS = new G4ComponentAntiNuclNuclearXS();
theAntiNuclXS.reset(new G4ComponentAntiNuclNuclearXS());
G4CrossSectionInelastic* anucxs =
new G4CrossSectionInelastic(theAntiNuclXS);
theKaonXS = new G4ComponentGGHadronNucleusXsc();
G4CrossSectionInelastic* kaonxs = new G4CrossSectionInelastic(theKaonXS);
new G4CrossSectionInelastic(theAntiNuclXS.get());
theKaonXS.reset(new G4ComponentGGHadronNucleusXsc());
G4CrossSectionInelastic* kaonxs = new G4CrossSectionInelastic(theKaonXS.get());
// loop over particles
auto myParticleIterator=GetParticleIterator();
@@ -160,30 +157,26 @@ void G4HadronInelasticQBBC::ConstructProcess()
//
if(pname == "proton") {
G4HadronicProcess* hp = FindInelasticProcess(particle);
hp->AddDataSet(new G4BGGNucleonInelasticXS(particle));
hp->AddDataSet(new G4ParticleInelasticXS(particle));
//hp->RegisterMe(theQGSP);
hp->RegisterMe(theFTFP);
hp->RegisterMe(theBERT);
hp->RegisterMe(theBIC);
} else if(pname == "neutron") {
G4HadronicProcess* hp = FindInelasticProcess(particle);
hp->AddDataSet((G4NeutronInelasticXS*)G4CrossSectionDataSetRegistry::Instance()->GetCrossSectionDataSet(G4NeutronInelasticXS::Default_Name()));
//hp->RegisterMe(theQGSP);
hp->AddDataSet(new G4ParticleInelasticXS(particle));
hp->RegisterMe(theFTFP);
G4HadronicProcess* capture = FindCaptureProcess();
capture->AddDataSet((G4NeutronCaptureXS*)G4CrossSectionDataSetRegistry::Instance()->GetCrossSectionDataSet(G4NeutronCaptureXS::Default_Name()));
capture->RegisterMe(new G4NeutronRadCapture());
capture->AddDataSet(new G4NeutronCaptureXS());
hp->RegisterMe(theBERT);
hp->RegisterMe(theBIC);
capture->RegisterMe(new G4NeutronRadCapture());
} else if(pname == "pi-" || pname == "pi+") {
G4HadronicProcess* hp = FindInelasticProcess(particle);
hp->AddDataSet(new G4BGGPionInelasticXS(particle));
//hp->AddDataSet(new G4CrossSectionPairGG((G4PiNuclearCrossSection*)G4CrossSectionDataSetRegistry::Instance()->GetCrossSectionDataSet(G4PiNuclearCrossSection::Default_Name()), 91*GeV));
//hp->RegisterMe(theQGSP);
hp->RegisterMe(theFTFP);
hp->RegisterMe(theBERT1);
@@ -235,7 +228,6 @@ void G4HadronInelasticQBBC::ConstructProcess()
G4HadronicProcess* hp = FindInelasticProcess(particle);
hp->RegisterMe(theFTFP2);
hp->AddDataSet(anucxs);
}
}
}
+8 -2
View File
@@ -1,4 +1,4 @@
$Id: History 107319 2017-11-08 16:29:22Z gcosmo $
$Id: History 108673 2018-02-27 07:30:45Z gcosmo $
-------------------------------------------------------------------
=========================================================
@@ -14,8 +14,14 @@ introduced in the code and keeptrack of all tags.
* Reverse chronological order (last date on top), please *
----------------------------------------------------------
26-Februrary-2018 R. Hatcher (phys-list-V10-04-00)
- cowork with phys-ctor-fact-V10-04-00
- Use new G4RegisterPhysicsConstructors.icc to ensure that for static builds
G4PhysicsConstructorRegistry is populated.
- No longer register ShieldingLEND as a wrapper, but use explicit one
07-November-2017 T. Koi (phys-list-V10-03-08)
- Add ShieldingLEND as a new physics list
- Add ShieldingLEND as a new physics list
co-working with phys-ctor-hinelastic-V10-03-06
07-November-2017 V.Ivanchenko (phys-lists-V10-03-07)
@@ -23,7 +23,7 @@
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
// $Id: G4GenericPhysicsList.hh 66892 2013-01-17 10:57:59Z gunter $
// $Id: G4GenericPhysicsList.hh 108673 2018-02-27 07:30:45Z gcosmo $
//
//---------------------------------------------------------------------------
//
@@ -41,9 +41,7 @@
#include "G4VModularPhysicsList.hh"
#include "globals.hh"
#include "CompileTimeConstraints.hh"
#include "G4PhysicsConstructorRegistry.hh"
#include "G4GenericMessenger.hh"
template<class T>
@@ -23,11 +23,11 @@
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
// $Id: G4GenericPhysicsList.icc 66892 2013-01-17 10:57:59Z gunter $
// $Id: G4GenericPhysicsList.icc 108673 2018-02-27 07:30:45Z gcosmo $
//
//---------------------------------------------------------------------------
//
// ClassName:
// ClassName: G4GenericPhysicsList
//
// Author: Witek Pokorski
//
@@ -44,7 +44,7 @@
#include "G4Material.hh"
#include "G4MaterialTable.hh"
#include "G4ios.hh"
#include <iomanip>
#include <iomanip>
#include "G4DataQuestionaire.hh"
@@ -82,16 +82,28 @@ template<class T> void TG4GenericPhysicsList<T>::SetCuts()
{
if (this->verboseLevel >1){
G4cout << "G4GenericPhysicsList::SetCuts:";
}
}
this->SetCutsWithDefault();
this->SetCutsWithDefault();
}
template<class T> void TG4GenericPhysicsList<T>::DeclareProperties()
{
messenger.DeclareProperty("defaultCutValue", this->defaultCutValue, "Default Cut Value");
messenger.DeclareMethod("SetVerboseLevel", &TG4GenericPhysicsList::SetVerboseLevel, "Verbose Level");
messenger.DeclareMethod("RegisterPhysics", &TG4GenericPhysicsList::RegisterPhysicsConstructor, "Register Physics Constructor");
}
#ifndef G4RegisterPhysicsConstructors_icc
// include G4_REFERENCE_PHYSCONSTR_FACTORY() macros here to pull them in
// for static builds. Would do this in G4PhysicsConstructorRegistry
// but that causes a circular dependency when the phys_ctor libs
// are broken in a "granular" build.
#ifndef REGREF
#define REGREF GenericPhysList // REFREF is used to make instances unique
#endif
#include "G4RegisterPhysicsConstructors.icc"
#endif
@@ -91,6 +91,7 @@ G4_DECLARE_PHYSLIST_FACTORY(QGSP_INCLXX_HP);
#include "Shielding.hh"
G4_DECLARE_PHYSLIST_FACTORY(Shielding);
/*** no longer necessary as of 2017-12-07
// some extra hoops because the physlist factory expects to be able
// to construct a list using just a verbosity argument
// but
@@ -104,6 +105,10 @@ public:
virtual ~ShieldingLEND() { ; }
};
G4_DECLARE_PHYSLIST_FACTORY(ShieldingLEND);
***/
#include "ShieldingLEND.hh"
G4_DECLARE_PHYSLIST_FACTORY(ShieldingLEND);
class ShieldingM : public Shielding
{
@@ -45,7 +45,14 @@
#include "G4PhysListRegistry.hh"
#include "G4VModularPhysicsList.hh"
#include "G4PhysListStamper.hh"
#include "G4PhysicsConstructorRegistry.hh"
// include G4_REFERENCE_PHYSCONSTR_FACTORY() macros here to pull them in
// for static builds. Would do this in G4PhysicsConstructorRegistry
// but that causes a circular dependency when the phys_ctor libs
// are broken in a "granular" build.
#define REGREF PhysListReg // REGREF is used to make instances unique
#include "G4RegisterPhysicsConstructors.icc"
// include this with this compilation unit so static builds pull them in
#include "G4RegisterPhysLists.icc"
@@ -429,3 +436,4 @@ void G4PhysListRegistry::PrintAvailablePhysLists() const
<< " to use ReplacePhysics() (\"_\") or RegisterPhysics() (\"+\")."
<< G4endl;
}