Import Geant4 11.0.0.beta source tree
This commit is contained in:
@@ -1,18 +0,0 @@
|
||||
#------------------------------------------------------------------------------
|
||||
# CMakeLists.txt
|
||||
# Module : G4phys_ctor_glnuclear
|
||||
# Package: Geant4.src.G4physicslists.G4phys_ctors.G4phys_ctor_glnuclear
|
||||
#
|
||||
# CMakeLists.txt for building a single granular library.
|
||||
#
|
||||
# Generated on : 12-Jan-2013
|
||||
#
|
||||
#
|
||||
#------------------------------------------------------------------------------
|
||||
|
||||
if(GEANT4_BUILD_GRANULAR_LIBS)
|
||||
include(Geant4MacroLibraryTargets)
|
||||
GEANT4_GRANULAR_LIBRARY_TARGET(COMPONENT sources.cmake)
|
||||
endif()
|
||||
|
||||
|
||||
@@ -46,8 +46,6 @@ CPPFLAGS += -I$(G4BASE)/global/management/include \
|
||||
-I$(G4BASE)/processes/hadronic/management/include \
|
||||
-I$(G4BASE)/processes/hadronic/processes/include \
|
||||
-I$(G4BASE)/processes/hadronic/util/include \
|
||||
-I$(G4BASE)/processes/hadronic/models/management/include \
|
||||
-I$(G4BASE)/processes/hadronic/models/util/include \
|
||||
-I$(G4BASE)/processes/hadronic/models/coherent_elastic/include \
|
||||
-I$(G4BASE)/processes/hadronic/models/theo_high_energy/include \
|
||||
-I$(G4BASE)/processes/hadronic/models/lend/include \
|
||||
|
||||
@@ -13,8 +13,34 @@ introduced in the code and keeptrack of all tags.
|
||||
* Reverse chronological order (last date on top), please *
|
||||
----------------------------------------------------------
|
||||
|
||||
07-December-2020, Vladimir Ivanchenko (phys-ctor-helastic-V10-06-07)
|
||||
- G4HadronElasticPhysics : fixed type of builder in all hadron
|
||||
20-May-2021 Vladimir Ivanchenko (phys-ctor-helastic-V10-07-06)
|
||||
- in all constructors use verbosity level from G4HadronicParameters
|
||||
|
||||
16-April-2021 Ben Morgan (phys-ctor-helastic-V10-07-05)
|
||||
- Migrate build to modular CMake API
|
||||
|
||||
13-Apr-2021, Alberto Ribon (phys-ctor-helastic-V10-07-04)
|
||||
- GNUmakefile, sources.cmake : removed dependency on hadronic/model/util
|
||||
and hadronic/model/management (that have been now deleted, with their
|
||||
classes moved to hadronic/util and hadronic/management).
|
||||
|
||||
08-Mar-2021, Alberto Ribon (phys-ctor-helastic-V10-07-03)
|
||||
- G4ChargeExchangePhysics : set explicitly the elastic cross sections
|
||||
according to the hadron type, given that the universal Gheisha
|
||||
elastic cross section has been deleted.
|
||||
|
||||
15-Feb-2021, Alberto Ribon (phys-ctor-helastic-V10-07-02)
|
||||
- G4HadronHElasticPhysics : fixed problem of fully overlapping energy
|
||||
transition between G4HadronElastic and G4ChipsElasticModel, using
|
||||
now G4ChipsElasticModel only for Hydrogen element above 10 MeV.
|
||||
|
||||
11-Dec-2020, Vladimir Ivanchenko (phys-ctor-helastic-V10-07-01)
|
||||
- G4HadronDElasticPhysics, G4HadronHElasticPhysics : use inheritance
|
||||
from G4HadronElasticPhysics; use G4HadProcesses, G4PhysListUtil,
|
||||
and G4HadParticles; implement x-section factor
|
||||
|
||||
07-Dec-2020, Vladimir Ivanchenko (phys-ctor-helastic-V10-07-00)
|
||||
- G4HadronElasticPhysics : fixed type of builder in all hadron
|
||||
elastic constructors (problem #2183)
|
||||
G4IonElasticPhysics, G4ThermalNeutrons - added comments
|
||||
|
||||
@@ -38,7 +64,7 @@ introduced in the code and keeptrack of all tags.
|
||||
|
||||
02-Jul-2020, V. Ivanchenko (phys-ctor-helastic-V10-06-01)
|
||||
- G4HadronElasticPhysics - use coherently with inelastic physics
|
||||
builder new utilities: G4HadParticles and G4HadronicBuilder
|
||||
builder new utilities: G4HadParticles and G4HadronicBuilder
|
||||
|
||||
30-Apr-2020 Ben Morgan (phys-ctor-helastic-V10-06-00)
|
||||
- Remove obsolete GRANULAR_DEPENDENCIES entries
|
||||
|
||||
@@ -13,7 +13,7 @@
|
||||
- charged pions:
|
||||
- cross section: Barashenkov-Glauber-Gribov
|
||||
- final-state: Starkov's model (G4ElasticHadrNucleusHE) for all energies
|
||||
- kaons, hyperons, anti-hyperons
|
||||
- kaons, hyperons, anti-hyperons, charm and bottom hadrons
|
||||
- cross section: Glauber-Gribov
|
||||
- final-state: Gheisha
|
||||
- deuteron, triton, He3, alpha
|
||||
@@ -45,16 +45,19 @@
|
||||
-----------------------
|
||||
- proton
|
||||
- cross section: Barashenkov-Glauber-Gribov
|
||||
- final-state: Diffuse model, except for Hydrogen where Chips is used
|
||||
- final-state: Diffuse model, except for Hydrogen where Chips is used,
|
||||
above 10 MeV, and Gheisha below
|
||||
- neutron:
|
||||
- cross section: G4NeutronElasticXS
|
||||
- final-state: Diffuse model, except for Hydrogen where Chips is used
|
||||
- final-state: Diffuse model, except for Hydrogen where Chips is used,
|
||||
above 10 MeV, and Gheisha below
|
||||
- charged pions:
|
||||
- cross section: Barashenkov-Glauber-Gribov
|
||||
- final-state: Diffuse model, except for Hydrogen where Chips is used
|
||||
- kaons, hyperons, anti-hyperons
|
||||
- final-state: Diffuse model, except for Hydrogen where Chips is used,
|
||||
above 10 MeV, and Gheisha below
|
||||
- kaons, hyperons, anti-hyperons, charm and bottom hadrons
|
||||
- cross section: Glauber-Gribov
|
||||
- final-state: Chips
|
||||
- final-state: Gheisha
|
||||
- deuteron, triton, He3, alpha
|
||||
- cross section: Glauber-Gribov
|
||||
- final-state: Gheisha
|
||||
@@ -84,10 +87,8 @@
|
||||
- neutron:
|
||||
- cross section: G4NeutronElasticXS
|
||||
- final-state: Diffuse model where applicable, else Gheisha
|
||||
- kaons
|
||||
- cross section: Glauber-Gribov
|
||||
- final-state: Diffuse model where applicable, else Gheisha
|
||||
- hyperons, anti-hyperons, deuteron, triton, He3, alpha
|
||||
- kaons, hyperons, anti-hyperons, charm and bottom hadrons,
|
||||
deuteron, triton, He3, alpha
|
||||
- cross section: Glauber-Gribov
|
||||
- final-state: Gheisha
|
||||
- anti_proton, anti_neutron, anti_deuteron, anti_triton, anti_He3,
|
||||
|
||||
+1
-10
@@ -44,22 +44,13 @@
|
||||
class G4ChargeExchangePhysics : public G4VPhysicsConstructor
|
||||
{
|
||||
public:
|
||||
explicit G4ChargeExchangePhysics(G4int ver = 0);
|
||||
explicit G4ChargeExchangePhysics(G4int ver = 1);
|
||||
virtual ~G4ChargeExchangePhysics();
|
||||
|
||||
public:
|
||||
// This method will be invoked in the Construct() method.
|
||||
// each particle type will be instantiated
|
||||
void ConstructParticle() override;
|
||||
|
||||
// This method will be invoked in the Construct() method.
|
||||
// each physics process will be instantiated and
|
||||
// registered to the process manager of each particle type
|
||||
void ConstructProcess() override;
|
||||
|
||||
private:
|
||||
|
||||
G4int verbose;
|
||||
};
|
||||
|
||||
|
||||
|
||||
+2
-14
@@ -38,10 +38,9 @@
|
||||
#ifndef G4HadronDElasticPhysics_h
|
||||
#define G4HadronDElasticPhysics_h 1
|
||||
|
||||
#include "globals.hh"
|
||||
#include "G4VPhysicsConstructor.hh"
|
||||
#include "G4HadronElasticPhysics.hh"
|
||||
|
||||
class G4HadronDElasticPhysics : public G4VPhysicsConstructor
|
||||
class G4HadronDElasticPhysics : public G4HadronElasticPhysics
|
||||
{
|
||||
public:
|
||||
|
||||
@@ -49,25 +48,14 @@ public:
|
||||
|
||||
virtual ~G4HadronDElasticPhysics();
|
||||
|
||||
// This method will be invoked in the Construct() method.
|
||||
// each particle type will be instantiated
|
||||
void ConstructParticle() override;
|
||||
|
||||
// This method will be invoked in the Construct() method.
|
||||
// each physics process will be instantiated and
|
||||
// registered to the process manager of each particle type
|
||||
void ConstructProcess() override;
|
||||
|
||||
private:
|
||||
|
||||
G4HadronDElasticPhysics(G4HadronDElasticPhysics &) = delete;
|
||||
G4HadronDElasticPhysics & operator=
|
||||
(const G4HadronDElasticPhysics &right) = delete;
|
||||
|
||||
G4int verbose;
|
||||
};
|
||||
|
||||
|
||||
#endif
|
||||
|
||||
|
||||
|
||||
@@ -55,8 +55,8 @@ class G4HadronElasticPhysics : public G4VPhysicsConstructor
|
||||
{
|
||||
public:
|
||||
|
||||
explicit G4HadronElasticPhysics(G4int ver = 0,
|
||||
const G4String& nam = "hElasticWEL_CHIPS_XS");
|
||||
explicit G4HadronElasticPhysics(G4int ver = 1,
|
||||
const G4String& nam = "hElasticWEL_CHIPS_XS");
|
||||
|
||||
virtual ~G4HadronElasticPhysics();
|
||||
|
||||
@@ -79,14 +79,10 @@ public:
|
||||
|
||||
void AddXSection(const G4ParticleDefinition*, G4VCrossSectionDataSet*) const;
|
||||
|
||||
private:
|
||||
|
||||
// copy constructor and hide assignment operator
|
||||
G4HadronElasticPhysics(G4HadronElasticPhysics &) = delete;
|
||||
G4HadronElasticPhysics & operator=(const G4HadronElasticPhysics &right) = delete;
|
||||
|
||||
protected:
|
||||
G4int verbose;
|
||||
};
|
||||
#endif
|
||||
|
||||
|
||||
@@ -53,8 +53,6 @@ public:
|
||||
// registered to the process manager of each particle type
|
||||
void ConstructProcess() final;
|
||||
|
||||
private:
|
||||
|
||||
G4HadronElasticPhysicsHP(G4HadronElasticPhysicsHP &) = delete;
|
||||
G4HadronElasticPhysicsHP & operator=(const G4HadronElasticPhysicsHP &right) = delete;
|
||||
|
||||
|
||||
+1
-2
@@ -54,12 +54,11 @@ public:
|
||||
// registered to the process manager of each particle type
|
||||
void ConstructProcess() final;
|
||||
|
||||
private:
|
||||
|
||||
G4HadronElasticPhysicsLEND(G4HadronElasticPhysicsLEND &) = delete;
|
||||
G4HadronElasticPhysicsLEND & operator=
|
||||
(const G4HadronElasticPhysicsLEND &right) = delete;
|
||||
|
||||
private:
|
||||
G4String evaluation;
|
||||
};
|
||||
|
||||
|
||||
@@ -52,7 +52,6 @@ public:
|
||||
// registered to the process manager of each particle type
|
||||
void ConstructProcess() final;
|
||||
|
||||
private:
|
||||
G4HadronElasticPhysicsPHP(const G4HadronElasticPhysicsPHP&) = delete;
|
||||
G4HadronElasticPhysicsPHP& operator=(const G4HadronElasticPhysicsPHP&) = delete;
|
||||
};
|
||||
|
||||
@@ -53,8 +53,6 @@ public:
|
||||
// registered to the process manager of each particle type
|
||||
void ConstructProcess() final;
|
||||
|
||||
private:
|
||||
|
||||
G4HadronElasticPhysicsXS(G4HadronElasticPhysicsXS &) = delete;
|
||||
G4HadronElasticPhysicsXS & operator=(const G4HadronElasticPhysicsXS &right) = delete;
|
||||
};
|
||||
|
||||
+4
-21
@@ -38,44 +38,27 @@
|
||||
#ifndef G4HadronHElasticPhysics_h
|
||||
#define G4HadronHElasticPhysics_h 1
|
||||
|
||||
#include "globals.hh"
|
||||
#include "G4VPhysicsConstructor.hh"
|
||||
#include "G4HadronElasticPhysics.hh"
|
||||
|
||||
class G4DiffElasticRatio;
|
||||
|
||||
class G4HadronHElasticPhysics : public G4VPhysicsConstructor
|
||||
class G4HadronHElasticPhysics : public G4HadronElasticPhysics
|
||||
{
|
||||
public:
|
||||
|
||||
G4HadronHElasticPhysics(G4int ver = 0, G4bool diffraction=false);
|
||||
G4HadronHElasticPhysics(G4int ver = 1, G4bool diffraction = false);
|
||||
|
||||
virtual ~G4HadronHElasticPhysics();
|
||||
|
||||
// This method will be invoked in the Construct() method.
|
||||
// each particle type will be instantiated
|
||||
void ConstructParticle() override;
|
||||
|
||||
// This method will be invoked in the Construct() method.
|
||||
// each physics process will be instantiated and
|
||||
// registered to the process manager of each particle type
|
||||
void ConstructProcess() override;
|
||||
|
||||
inline void SetDiffraction(G4bool val) {fDiffraction = val;};
|
||||
|
||||
private:
|
||||
inline void SetDiffraction(G4bool val) { fDiffraction = val; };
|
||||
|
||||
G4HadronHElasticPhysics(G4HadronHElasticPhysics &) = delete;
|
||||
G4HadronHElasticPhysics & operator=
|
||||
(const G4HadronHElasticPhysics &right) = delete;
|
||||
|
||||
G4int verbose;
|
||||
G4bool fDiffraction;
|
||||
|
||||
static G4ThreadLocal G4DiffElasticRatio* diffRatio;
|
||||
|
||||
};
|
||||
|
||||
|
||||
#endif
|
||||
|
||||
|
||||
|
||||
@@ -45,7 +45,7 @@ class G4IonElasticPhysics : public G4VPhysicsConstructor
|
||||
{
|
||||
public:
|
||||
|
||||
explicit G4IonElasticPhysics(G4int ver = 0);
|
||||
explicit G4IonElasticPhysics(G4int ver = 1);
|
||||
|
||||
virtual ~G4IonElasticPhysics();
|
||||
|
||||
@@ -58,14 +58,10 @@ public:
|
||||
// registered to the process manager of each particle type
|
||||
void ConstructProcess() override;
|
||||
|
||||
private:
|
||||
|
||||
// copy constructor and hide assignment operator
|
||||
G4IonElasticPhysics(G4IonElasticPhysics &) = delete;
|
||||
G4IonElasticPhysics & operator=
|
||||
(const G4IonElasticPhysics &right) = delete;
|
||||
|
||||
G4int verbose;
|
||||
};
|
||||
|
||||
#endif
|
||||
|
||||
@@ -50,8 +50,6 @@ public:
|
||||
|
||||
void ConstructProcess() override;
|
||||
|
||||
private:
|
||||
G4int verbose;
|
||||
};
|
||||
|
||||
#endif
|
||||
|
||||
@@ -1,126 +1,49 @@
|
||||
#------------------------------------------------------------------------------
|
||||
# sources.cmake
|
||||
# Module : G4phys_ctor_helastic
|
||||
# Package: Geant4.src.G4physicslists.G4physlist_ctors.G4physlist_ctor_helastic
|
||||
#
|
||||
# Sources description for a library.
|
||||
# Lists the sources and headers of the code explicitely.
|
||||
# Lists include paths needed.
|
||||
# Lists the internal granular and global dependencies of the library.
|
||||
# Source specific properties should be added at the end.
|
||||
#
|
||||
# Generated on : 10/01/2013
|
||||
#
|
||||
#
|
||||
#------------------------------------------------------------------------------
|
||||
# - G4phys_ctor_helastic module build definition
|
||||
|
||||
#
|
||||
# Define the Geant4 Module.
|
||||
#
|
||||
GEANT4_DEFINE_MODULE(NAME G4phys_ctor_helastic
|
||||
HEADERS
|
||||
G4ChargeExchangePhysics.hh
|
||||
G4HadronDElasticPhysics.hh
|
||||
G4HadronElasticPhysics.hh
|
||||
G4HadronElasticPhysicsHP.hh
|
||||
G4HadronElasticPhysicsLEND.hh
|
||||
G4HadronElasticPhysicsXS.hh
|
||||
G4HadronHElasticPhysics.hh
|
||||
G4IonElasticPhysics.hh
|
||||
G4HadronElasticPhysicsPHP.hh
|
||||
G4ThermalNeutrons.hh
|
||||
SOURCES
|
||||
G4ChargeExchangePhysics.cc
|
||||
G4HadronDElasticPhysics.cc
|
||||
G4HadronElasticPhysics.cc
|
||||
G4HadronElasticPhysicsHP.cc
|
||||
G4HadronElasticPhysicsLEND.cc
|
||||
G4HadronElasticPhysicsXS.cc
|
||||
G4HadronHElasticPhysics.cc
|
||||
G4IonElasticPhysics.cc
|
||||
G4HadronElasticPhysicsPHP.cc
|
||||
G4ThermalNeutrons.cc
|
||||
GRANULAR_DEPENDENCIES
|
||||
G4baryons
|
||||
G4bosons
|
||||
G4cuts
|
||||
G4decay
|
||||
G4digits
|
||||
G4emhighenergy
|
||||
G4emlowenergy
|
||||
G4emstandard
|
||||
G4emutils
|
||||
G4event
|
||||
G4geometrymng
|
||||
G4globman
|
||||
G4had_im_r_matrix
|
||||
G4had_lend
|
||||
G4had_mod_man
|
||||
G4had_mod_util
|
||||
G4had_lept_nuclear
|
||||
G4had_preequ_exciton
|
||||
G4had_string_diff
|
||||
G4had_string_frag
|
||||
G4had_string_man
|
||||
G4had_theo_max
|
||||
G4hadronic_bert_cascade
|
||||
G4hadronic_binary
|
||||
G4hadronic_coherent_elastic
|
||||
G4hadronic_deex_evaporation
|
||||
G4hadronic_deex_fermi_breakup
|
||||
G4hadronic_deex_fission
|
||||
G4hadronic_deex_gem_evaporation
|
||||
G4hadronic_deex_handler
|
||||
G4hadronic_deex_management
|
||||
G4hadronic_deex_multifragmentation
|
||||
G4hadronic_deex_photon_evaporation
|
||||
G4hadronic_deex_util
|
||||
G4hadronic_inclxx_interface
|
||||
G4hadronic_inclxx_physics
|
||||
G4hadronic_inclxx_utils
|
||||
G4hadronic_mgt
|
||||
G4hadronic_proc
|
||||
G4hadronic_qgstring
|
||||
G4hadronic_radioactivedecay
|
||||
G4hadronic_stop
|
||||
G4hadronic_util
|
||||
G4hadronic_xsect
|
||||
G4hits
|
||||
G4intercoms
|
||||
G4ions
|
||||
G4leptons
|
||||
G4magneticfield
|
||||
G4materials
|
||||
G4mesons
|
||||
G4muons
|
||||
G4navigation
|
||||
G4optical
|
||||
G4partman
|
||||
G4phys_builders
|
||||
G4phys_ctor_factory
|
||||
G4phys_ctor_hinelastic
|
||||
G4procman
|
||||
G4run
|
||||
G4shortlived
|
||||
G4track
|
||||
G4tracking
|
||||
G4transportation
|
||||
G4volumes
|
||||
G4xrays
|
||||
GLOBAL_DEPENDENCIES
|
||||
G4digits_hits
|
||||
G4event
|
||||
G4geometry
|
||||
G4global
|
||||
G4intercoms
|
||||
G4materials
|
||||
G4particles
|
||||
G4processes
|
||||
G4run
|
||||
G4track
|
||||
G4tracking
|
||||
LINK_LIBRARIES
|
||||
geant4_add_module(G4phys_ctor_helastic
|
||||
PUBLIC_HEADERS
|
||||
G4ChargeExchangePhysics.hh
|
||||
G4HadronDElasticPhysics.hh
|
||||
G4HadronElasticPhysics.hh
|
||||
G4HadronElasticPhysicsHP.hh
|
||||
G4HadronElasticPhysicsLEND.hh
|
||||
G4HadronElasticPhysicsXS.hh
|
||||
G4HadronHElasticPhysics.hh
|
||||
G4IonElasticPhysics.hh
|
||||
G4HadronElasticPhysicsPHP.hh
|
||||
G4ThermalNeutrons.hh
|
||||
SOURCES
|
||||
G4ChargeExchangePhysics.cc
|
||||
G4HadronDElasticPhysics.cc
|
||||
G4HadronElasticPhysics.cc
|
||||
G4HadronElasticPhysicsHP.cc
|
||||
G4HadronElasticPhysicsLEND.cc
|
||||
G4HadronElasticPhysicsXS.cc
|
||||
G4HadronHElasticPhysics.cc
|
||||
G4IonElasticPhysics.cc
|
||||
G4HadronElasticPhysicsPHP.cc
|
||||
G4ThermalNeutrons.cc)
|
||||
|
||||
geant4_module_link_libraries(G4phys_ctor_helastic
|
||||
PUBLIC
|
||||
G4globman
|
||||
G4hadronic_coherent_elastic
|
||||
G4hadronic_mgt
|
||||
G4phys_ctor_hinelastic
|
||||
G4run
|
||||
PRIVATE
|
||||
G4baryons
|
||||
G4had_lend
|
||||
G4had_par_hp
|
||||
G4hadronic_proc
|
||||
G4hadronic_util
|
||||
G4hadronic_xsect
|
||||
G4ions
|
||||
G4mesons
|
||||
G4partman
|
||||
G4phys_builders
|
||||
G4phys_ctor_factory
|
||||
G4physlist_util
|
||||
G4procman
|
||||
)
|
||||
|
||||
# List any source specific properties here
|
||||
|
||||
|
||||
@@ -47,15 +47,22 @@
|
||||
#include "G4BaryonConstructor.hh"
|
||||
#include "G4Neutron.hh"
|
||||
|
||||
#include "G4BGGPionElasticXS.hh"
|
||||
#include "G4BGGNucleonElasticXS.hh"
|
||||
#include "G4NeutronElasticXS.hh"
|
||||
#include "G4HadronicParameters.hh"
|
||||
|
||||
// factory
|
||||
#include "G4PhysicsConstructorFactory.hh"
|
||||
//
|
||||
G4_DECLARE_PHYSCONSTR_FACTORY(G4ChargeExchangePhysics);
|
||||
|
||||
G4ChargeExchangePhysics::G4ChargeExchangePhysics(G4int ver)
|
||||
: G4VPhysicsConstructor("chargeExchange"), verbose(ver)
|
||||
: G4VPhysicsConstructor("chargeExchange")
|
||||
{
|
||||
if(verbose > 1) G4cout << "### ChargeExchangePhysics" << G4endl;
|
||||
// because it is an addition, the type of this constructor is 0
|
||||
G4HadronicParameters::Instance()->SetVerboseLevel(ver);
|
||||
if(ver > 1) G4cout << "### ChargeExchangePhysics" << G4endl;
|
||||
}
|
||||
|
||||
G4ChargeExchangePhysics::~G4ChargeExchangePhysics()
|
||||
@@ -75,7 +82,7 @@ void G4ChargeExchangePhysics::ConstructProcess()
|
||||
{
|
||||
G4ChargeExchange* model = new G4ChargeExchange();
|
||||
|
||||
if(verbose > 1) {
|
||||
if(G4HadronicParameters::Instance()->GetVerboseLevel() > 1) {
|
||||
G4cout << "### ChargeExchangePhysics Construct Processes with the model <"
|
||||
<< model->GetModelName() << ">" << G4endl;
|
||||
}
|
||||
@@ -85,19 +92,27 @@ void G4ChargeExchangePhysics::ConstructProcess()
|
||||
while( (*myParticleIterator)() )
|
||||
{
|
||||
G4ParticleDefinition* particle = myParticleIterator->value();
|
||||
G4String pname = particle->GetParticleName();
|
||||
if(pname == "neutron" ||
|
||||
pname == "pi-" ||
|
||||
pname == "pi+" ||
|
||||
pname == "proton"
|
||||
if( particle == G4Neutron::Definition() ||
|
||||
particle == G4PionMinus::Definition() ||
|
||||
particle == G4PionPlus::Definition() ||
|
||||
particle == G4Proton::Definition()
|
||||
) {
|
||||
|
||||
G4ProcessManager* pmanager = particle->GetProcessManager();
|
||||
G4ChargeExchangeProcess* p = new G4ChargeExchangeProcess();
|
||||
p->RegisterMe(model);
|
||||
|
||||
if( particle == G4PionMinus::Definition() || particle == G4PionPlus::Definition() ) {
|
||||
p->AddDataSet( new G4BGGPionElasticXS( particle ) );
|
||||
} else if( particle == G4Proton::Definition() ) {
|
||||
p->AddDataSet( new G4BGGNucleonElasticXS( particle ) );
|
||||
} else if( particle == G4Neutron::Definition() ) {
|
||||
p->AddDataSet( new G4NeutronElasticXS );
|
||||
}
|
||||
|
||||
pmanager->AddDiscreteProcess(p);
|
||||
|
||||
if(verbose > 1)
|
||||
if(G4HadronicParameters::Instance()->GetVerboseLevel() > 1)
|
||||
G4cout << "### ChargeExchangePhysics added for "
|
||||
<< particle->GetParticleName() << G4endl;
|
||||
}
|
||||
|
||||
@@ -73,22 +73,25 @@
|
||||
#include "G4ComponentGGNuclNuclXsc.hh"
|
||||
#include "G4CrossSectionDataSetRegistry.hh"
|
||||
|
||||
#include "G4ChipsKaonPlusElasticXS.hh"
|
||||
#include "G4ChipsKaonMinusElasticXS.hh"
|
||||
#include "G4ChipsKaonZeroElasticXS.hh"
|
||||
|
||||
#include "G4CrossSectionElastic.hh"
|
||||
#include "G4DiffuseElastic.hh"
|
||||
|
||||
#include "G4HadronicParameters.hh"
|
||||
#include "G4HadronicBuilder.hh"
|
||||
#include "G4HadParticles.hh"
|
||||
#include "G4HadProcesses.hh"
|
||||
#include "G4PhysListUtil.hh"
|
||||
#include "G4BuilderType.hh"
|
||||
|
||||
// factory
|
||||
#include "G4PhysicsConstructorFactory.hh"
|
||||
//
|
||||
G4_DECLARE_PHYSCONSTR_FACTORY(G4HadronDElasticPhysics);
|
||||
|
||||
G4HadronDElasticPhysics::G4HadronDElasticPhysics(G4int ver)
|
||||
: G4VPhysicsConstructor("hElasticDIFFUSE"), verbose(ver)
|
||||
: G4HadronElasticPhysics(ver, "hElasticDIFFUSE")
|
||||
{
|
||||
if(verbose > 1) {
|
||||
if(ver > 1) {
|
||||
G4cout << "### G4HadronDElasticPhysics: " << GetPhysicsName()
|
||||
<< G4endl;
|
||||
}
|
||||
@@ -97,24 +100,18 @@ G4HadronDElasticPhysics::G4HadronDElasticPhysics(G4int ver)
|
||||
G4HadronDElasticPhysics::~G4HadronDElasticPhysics()
|
||||
{}
|
||||
|
||||
void G4HadronDElasticPhysics::ConstructParticle()
|
||||
{
|
||||
// G4cout << "G4HadronDElasticPhysics::ConstructParticle" << G4endl;
|
||||
G4MesonConstructor pMesonConstructor;
|
||||
pMesonConstructor.ConstructParticle();
|
||||
|
||||
G4BaryonConstructor pBaryonConstructor;
|
||||
pBaryonConstructor.ConstructParticle();
|
||||
|
||||
// Construct light ions
|
||||
G4IonConstructor pConstructor;
|
||||
pConstructor.ConstructParticle();
|
||||
}
|
||||
|
||||
void G4HadronDElasticPhysics::ConstructProcess()
|
||||
{
|
||||
const G4double elimitAntiNuc = 100.1*MeV;
|
||||
if(verbose > 1) {
|
||||
G4HadronicParameters* param = G4HadronicParameters::Instance();
|
||||
G4bool useFactorXS = param->ApplyFactorXS();
|
||||
G4ParticleTable* table = G4ParticleTable::GetParticleTable();
|
||||
G4PhysicsListHelper* ph = G4PhysicsListHelper::GetPhysicsListHelper();
|
||||
|
||||
const G4double eminDElastic = 10.*MeV;
|
||||
const G4double elimitAntiNuc = 100.*MeV;
|
||||
const G4double delta = 0.1*MeV;
|
||||
G4double emax = std::max(param->GetMaxEnergy(), elimitAntiNuc+delta);
|
||||
if(param->GetVerboseLevel() > 1) {
|
||||
G4cout << "### HadronDElasticPhysics Construct Processes "
|
||||
<< " for anti-neuclei "
|
||||
<< elimitAntiNuc/GeV << " GeV" << G4endl;
|
||||
@@ -122,140 +119,102 @@ void G4HadronDElasticPhysics::ConstructProcess()
|
||||
|
||||
G4AntiNuclElastic* anuc = new G4AntiNuclElastic();
|
||||
anuc->SetMinEnergy(elimitAntiNuc);
|
||||
G4CrossSectionElastic* anucxs =
|
||||
new G4CrossSectionElastic(anuc->GetComponentCrossSection());
|
||||
anuc->SetMaxEnergy(emax);
|
||||
|
||||
G4VCrossSectionDataSet* theComponentGGHadronNucleusData =
|
||||
new G4CrossSectionElastic( new G4ComponentGGHadronNucleusXsc );
|
||||
|
||||
G4VCrossSectionDataSet* theComponentGGNuclNuclData =
|
||||
new G4CrossSectionElastic( new G4ComponentGGNuclNuclXsc );
|
||||
auto anucxs = G4HadProcesses::ElasticXS("AntiAGlauber");
|
||||
auto xsNN = G4HadProcesses::ElasticXS("Glauber-Gribov Nucl-nucl");
|
||||
|
||||
G4HadronElastic* lhep0 = new G4HadronElastic();
|
||||
G4HadronElastic* lhep1 = new G4HadronElastic();
|
||||
lhep1->SetMaxEnergy(10.1*MeV);
|
||||
lhep1->SetMaxEnergy(eminDElastic + delta);
|
||||
G4HadronElastic* lhep2 = new G4HadronElastic();
|
||||
lhep2->SetMaxEnergy(elimitAntiNuc);
|
||||
|
||||
G4DiffuseElastic* model = nullptr;
|
||||
G4HadronElasticProcess* hel = nullptr;
|
||||
|
||||
auto myParticleIterator=GetParticleIterator();
|
||||
myParticleIterator->reset();
|
||||
while( (*myParticleIterator)() )
|
||||
{
|
||||
G4ParticleDefinition* particle = myParticleIterator->value();
|
||||
G4ProcessManager* pmanager = particle->GetProcessManager();
|
||||
G4String pname = particle->GetParticleName();
|
||||
if(pname == "anti_lambda" ||
|
||||
pname == "anti_omega-" ||
|
||||
pname == "anti_sigma-" ||
|
||||
pname == "anti_sigma0" ||
|
||||
pname == "anti_sigma+" ||
|
||||
pname == "anti_xi-" ||
|
||||
pname == "anti_xi0" ||
|
||||
pname == "lambda" ||
|
||||
pname == "omega-" ||
|
||||
pname == "sigma-" ||
|
||||
pname == "sigma0" ||
|
||||
pname == "sigma+" ||
|
||||
pname == "xi-" ||
|
||||
pname == "xi0"
|
||||
) {
|
||||
|
||||
hel = new G4HadronElasticProcess();
|
||||
hel->RegisterMe(lhep0);
|
||||
hel->AddDataSet( theComponentGGHadronNucleusData );
|
||||
pmanager->AddDiscreteProcess(hel);
|
||||
if(verbose > 1) {
|
||||
G4cout << "### HadronDElasticPhysics: " << hel->GetProcessName()
|
||||
<< " added for " << particle->GetParticleName() << G4endl;
|
||||
}
|
||||
// p
|
||||
G4ParticleDefinition* particle = G4Proton::Proton();
|
||||
G4HadronElasticProcess* hel = new G4HadronElasticProcess();
|
||||
hel->AddDataSet(new G4BGGNucleonElasticXS(particle));
|
||||
model = new G4DiffuseElastic();
|
||||
model->SetMinEnergy(eminDElastic);
|
||||
hel->RegisterMe(lhep1);
|
||||
hel->RegisterMe(model);
|
||||
if( useFactorXS ) hel->MultiplyCrossSectionBy( param->XSFactorNucleonElastic() );
|
||||
ph->RegisterProcess(hel, particle);
|
||||
|
||||
} else if(pname == "proton") {
|
||||
// n
|
||||
particle = G4Neutron::Neutron();
|
||||
hel = new G4HadronElasticProcess();
|
||||
hel->AddDataSet(new G4NeutronElasticXS());
|
||||
model = new G4DiffuseElastic();
|
||||
model->SetMinEnergy(eminDElastic);
|
||||
hel->RegisterMe(lhep1);
|
||||
hel->RegisterMe(model);
|
||||
if( useFactorXS ) hel->MultiplyCrossSectionBy( param->XSFactorNucleonElastic() );
|
||||
ph->RegisterProcess(hel, particle);
|
||||
|
||||
// pi+
|
||||
particle = G4PionPlus::PionPlus();
|
||||
hel = new G4HadronElasticProcess();
|
||||
hel->AddDataSet(new G4BGGPionElasticXS(particle));
|
||||
model = new G4DiffuseElastic();
|
||||
model->SetMinEnergy(eminDElastic);
|
||||
hel->RegisterMe(lhep1);
|
||||
hel->RegisterMe(model);
|
||||
if( useFactorXS ) hel->MultiplyCrossSectionBy( param->XSFactorPionElastic() );
|
||||
ph->RegisterProcess(hel, particle);
|
||||
|
||||
// pi-
|
||||
particle = G4PionMinus::PionMinus();
|
||||
hel = new G4HadronElasticProcess();
|
||||
hel->AddDataSet(new G4BGGPionElasticXS(particle));
|
||||
model = new G4DiffuseElastic();
|
||||
model->SetMinEnergy(eminDElastic);
|
||||
hel->RegisterMe(lhep1);
|
||||
hel->RegisterMe(model);
|
||||
if( useFactorXS ) hel->MultiplyCrossSectionBy( param->XSFactorPionElastic() );
|
||||
ph->RegisterProcess(hel, particle);
|
||||
|
||||
// kaons
|
||||
G4HadronicBuilder::BuildElastic( G4HadParticles::GetKaons() );
|
||||
|
||||
// d, t, He3, alpha
|
||||
for( auto & pdg : G4HadParticles::GetLightIons() ) {
|
||||
particle = table->FindParticle( pdg );
|
||||
if ( particle == nullptr ) { continue; }
|
||||
|
||||
hel = new G4HadronElasticProcess();
|
||||
hel->AddDataSet(xsNN);
|
||||
hel->RegisterMe(lhep0);
|
||||
if( useFactorXS ) hel->MultiplyCrossSectionBy( param->XSFactorHadronElastic() );
|
||||
ph->RegisterProcess(hel, particle);
|
||||
}
|
||||
|
||||
// high energy particles
|
||||
if( emax > param->EnergyThresholdForHeavyHadrons() ) {
|
||||
|
||||
// pbar, nbar, anti light ions
|
||||
for( auto & pdg : G4HadParticles::GetLightAntiIons() ) {
|
||||
particle = table->FindParticle( pdg );
|
||||
if ( particle == nullptr ) { continue; }
|
||||
|
||||
hel = new G4HadronElasticProcess();
|
||||
hel->AddDataSet(new G4BGGNucleonElasticXS(particle));
|
||||
model = new G4DiffuseElastic();
|
||||
hel->RegisterMe(lhep1);
|
||||
hel->RegisterMe(model);
|
||||
pmanager->AddDiscreteProcess(hel);
|
||||
if(verbose > 1) {
|
||||
G4cout << "### HadronDElasticPhysics: " << hel->GetProcessName()
|
||||
<< " added for " << particle->GetParticleName() << G4endl;
|
||||
}
|
||||
} else if(pname == "neutron") {
|
||||
|
||||
hel = new G4HadronElasticProcess();
|
||||
hel->AddDataSet(new G4NeutronElasticXS());
|
||||
model = new G4DiffuseElastic();
|
||||
hel->RegisterMe(lhep1);
|
||||
hel->RegisterMe(model);
|
||||
pmanager->AddDiscreteProcess(hel);
|
||||
if(verbose > 1) {
|
||||
G4cout << "### HadronDElasticPhysics: "
|
||||
<< hel->GetProcessName()
|
||||
<< " added for " << particle->GetParticleName() << G4endl;
|
||||
}
|
||||
} else if (pname == "pi+" || pname == "pi-") {
|
||||
|
||||
hel = new G4HadronElasticProcess();
|
||||
hel->AddDataSet(new G4BGGPionElasticXS(particle));
|
||||
model = new G4DiffuseElastic();
|
||||
hel->RegisterMe(lhep1);
|
||||
hel->RegisterMe(model);
|
||||
pmanager->AddDiscreteProcess(hel);
|
||||
if(verbose > 1) {
|
||||
G4cout << "### HadronDElasticPhysics: " << hel->GetProcessName()
|
||||
<< " added for " << particle->GetParticleName() << G4endl;
|
||||
}
|
||||
} else if(pname == "kaon-" ||
|
||||
pname == "kaon+" ||
|
||||
pname == "kaon0S" ||
|
||||
pname == "kaon0L"
|
||||
) {
|
||||
|
||||
hel = new G4HadronElasticProcess();
|
||||
model = new G4DiffuseElastic();
|
||||
hel->RegisterMe(lhep1);
|
||||
hel->RegisterMe(model);
|
||||
hel->AddDataSet( theComponentGGHadronNucleusData );
|
||||
pmanager->AddDiscreteProcess(hel);
|
||||
if(verbose > 1) {
|
||||
G4cout << "### HadronElasticPhysics: " << hel->GetProcessName()
|
||||
<< " added for " << particle->GetParticleName() << G4endl;
|
||||
}
|
||||
} else if(pname == "alpha" ||
|
||||
pname == "deuteron" ||
|
||||
pname == "triton" ||
|
||||
pname == "He3"
|
||||
) {
|
||||
hel = new G4HadronElasticProcess();
|
||||
hel->AddDataSet(theComponentGGNuclNuclData);
|
||||
hel->RegisterMe(lhep0);
|
||||
pmanager->AddDiscreteProcess(hel);
|
||||
if(verbose > 1) {
|
||||
G4cout << "### HadronElasticPhysics: " << hel->GetProcessName()
|
||||
<< " added for " << particle->GetParticleName() << G4endl;
|
||||
}
|
||||
|
||||
} else if(
|
||||
pname == "anti_neutron" ||
|
||||
pname == "anti_proton" ||
|
||||
pname == "anti_alpha" ||
|
||||
pname == "anti_deuteron" ||
|
||||
pname == "anti_triton" ||
|
||||
pname == "anti_He3" ) {
|
||||
|
||||
hel = new G4HadronElasticProcess();
|
||||
hel->AddDataSet(anucxs);
|
||||
hel->RegisterMe(lhep2);
|
||||
hel->RegisterMe(anuc);
|
||||
pmanager->AddDiscreteProcess(hel);
|
||||
hel->AddDataSet(anucxs);
|
||||
if( useFactorXS ) hel->MultiplyCrossSectionBy( param->XSFactorHadronElastic() );
|
||||
ph->RegisterProcess(hel, particle);
|
||||
}
|
||||
|
||||
// hyperons
|
||||
G4HadronicBuilder::BuildElastic( G4HadParticles::GetHyperons() );
|
||||
G4HadronicBuilder::BuildElastic( G4HadParticles::GetAntiHyperons() );
|
||||
|
||||
// b-, c- baryons and mesons
|
||||
if( G4HadronicParameters::Instance()->EnableBCParticles() ) {
|
||||
G4HadronicBuilder::BuildElastic( G4HadParticles::GetBCHadrons() );
|
||||
}
|
||||
}
|
||||
if(verbose > 1) {
|
||||
G4cout << "### HadronDElasticPhysics Construct Processes " << G4endl;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -77,9 +77,10 @@ G4_DECLARE_PHYSCONSTR_FACTORY(G4HadronElasticPhysics);
|
||||
//
|
||||
|
||||
G4HadronElasticPhysics::G4HadronElasticPhysics(G4int ver, const G4String& nam)
|
||||
: G4VPhysicsConstructor(nam), verbose(ver)
|
||||
: G4VPhysicsConstructor(nam)
|
||||
{
|
||||
if(verbose > 1) {
|
||||
G4HadronicParameters::Instance()->SetVerboseLevel(ver);
|
||||
if(ver > 1) {
|
||||
G4cout << "### G4HadronElasticPhysics: " << GetPhysicsName()
|
||||
<< G4endl;
|
||||
}
|
||||
@@ -112,7 +113,7 @@ void G4HadronElasticPhysics::ConstructProcess()
|
||||
const G4double elimitAntiNuc = 100.*MeV;
|
||||
const G4double delta = 0.1*MeV;
|
||||
G4double emax = std::max(param->GetMaxEnergy(), elimitAntiNuc+delta);
|
||||
if(verbose > 1) {
|
||||
if(param->GetVerboseLevel() > 1) {
|
||||
G4cout << "### HadronElasticPhysics::ConstructProcess: "
|
||||
<< "Elimit for for anti-neuclei " << elimitAntiNuc/CLHEP::GeV << " GeV"
|
||||
<< " for all hadrons Emax(GeV)= " << emax/CLHEP::GeV
|
||||
|
||||
@@ -45,6 +45,7 @@
|
||||
#include "G4HadronElastic.hh"
|
||||
#include "G4ParticleHPElastic.hh"
|
||||
#include "G4ParticleHPElasticData.hh"
|
||||
#include "G4HadronicParameters.hh"
|
||||
|
||||
// factory
|
||||
#include "G4PhysicsConstructorFactory.hh"
|
||||
@@ -54,7 +55,7 @@ G4_DECLARE_PHYSCONSTR_FACTORY(G4HadronElasticPhysicsHP);
|
||||
G4HadronElasticPhysicsHP::G4HadronElasticPhysicsHP(G4int ver)
|
||||
: G4HadronElasticPhysics(ver, "hElasticWEL_CHIPS_HP")
|
||||
{
|
||||
if(verbose > 1) {
|
||||
if(ver > 1) {
|
||||
G4cout << "### G4HadronElasticPhysicsHP: " << GetPhysicsName()
|
||||
<< G4endl;
|
||||
}
|
||||
@@ -76,7 +77,7 @@ void G4HadronElasticPhysicsHP::ConstructProcess()
|
||||
hel->AddDataSet(new G4ParticleHPElasticData());
|
||||
}
|
||||
|
||||
if(verbose > 1) {
|
||||
if(G4HadronicParameters::Instance()->GetVerboseLevel() > 1) {
|
||||
G4cout << "### HadronElasticPhysicsHP is constructed "
|
||||
<< G4endl;
|
||||
}
|
||||
|
||||
@@ -44,6 +44,7 @@
|
||||
#include "G4Neutron.hh"
|
||||
#include "G4HadronicProcess.hh"
|
||||
#include "G4HadronElastic.hh"
|
||||
#include "G4HadronicParameters.hh"
|
||||
|
||||
#include "G4LENDElastic.hh"
|
||||
#include "G4LENDElasticCrossSection.hh"
|
||||
@@ -56,7 +57,7 @@ G4_DECLARE_PHYSCONSTR_FACTORY(G4HadronElasticPhysicsLEND);
|
||||
G4HadronElasticPhysicsLEND::G4HadronElasticPhysicsLEND(G4int ver, const G4String& eva)
|
||||
: G4HadronElasticPhysics(ver, "hElasticWEL_CHIPS_LEND"), evaluation(eva)
|
||||
{
|
||||
if(verbose > 1) {
|
||||
if(ver > 1) {
|
||||
G4cout << "### G4HadronElasticPhysicsLEND: " << GetPhysicsName()
|
||||
<< G4endl;
|
||||
}
|
||||
@@ -89,7 +90,7 @@ void G4HadronElasticPhysicsLEND::ConstructProcess()
|
||||
hel->AddDataSet( lend_XS );
|
||||
}
|
||||
|
||||
if(verbose > 1) {
|
||||
if(G4HadronicParameters::Instance()->GetVerboseLevel() > 1) {
|
||||
G4cout << "### HadronElasticPhysicsLEND is constructed"
|
||||
<< G4endl;
|
||||
}
|
||||
|
||||
@@ -40,6 +40,7 @@
|
||||
#include "G4ParticleHPElastic.hh"
|
||||
#include "G4ParticleHPElasticData.hh"
|
||||
#include "G4SystemOfUnits.hh"
|
||||
#include "G4HadronicParameters.hh"
|
||||
|
||||
// factory
|
||||
#include "G4PhysicsConstructorFactory.hh"
|
||||
@@ -50,7 +51,7 @@ G4_DECLARE_PHYSCONSTR_FACTORY(G4HadronElasticPhysicsPHP);
|
||||
G4HadronElasticPhysicsPHP::G4HadronElasticPhysicsPHP(G4int ver)
|
||||
: G4HadronElasticPhysics(ver, "hElasticPhysics_PHP")
|
||||
{
|
||||
if(verbose > 1) {
|
||||
if(ver > 1) {
|
||||
G4cout << "### G4HadronElasticPhysicsPHP: " << GetPhysicsName()
|
||||
<< G4endl;
|
||||
}
|
||||
@@ -72,7 +73,7 @@ void G4HadronElasticPhysicsPHP::ConstructProcess()
|
||||
hel->AddDataSet(new G4ParticleHPElasticData());
|
||||
}
|
||||
|
||||
if(verbose > 1) {
|
||||
if(G4HadronicParameters::Instance()->GetVerboseLevel() > 1) {
|
||||
G4cout << "### HadronElasticPhysicsHP is constructed "
|
||||
<< G4endl;
|
||||
}
|
||||
|
||||
@@ -55,7 +55,7 @@ G4_DECLARE_PHYSCONSTR_FACTORY(G4HadronElasticPhysicsXS);
|
||||
G4HadronElasticPhysicsXS::G4HadronElasticPhysicsXS(G4int ver)
|
||||
: G4HadronElasticPhysics(ver, "hElasticWEL_CHIPS_XS")
|
||||
{
|
||||
if(verbose > 1) {
|
||||
if(ver > 1) {
|
||||
G4cout << "### G4HadronElasticPhysicsHP: " << GetPhysicsName()
|
||||
<< G4endl;
|
||||
}
|
||||
|
||||
@@ -63,33 +63,29 @@
|
||||
#include "G4ChipsKaonMinusElasticXS.hh"
|
||||
#include "G4ChipsKaonPlusElasticXS.hh"
|
||||
#include "G4ChipsKaonZeroElasticXS.hh"
|
||||
#include "G4ChipsHyperonElasticXS.hh"
|
||||
#include "G4ChipsAntiBaryonElasticXS.hh"
|
||||
#include "G4ComponentGGHadronNucleusXsc.hh"
|
||||
#include "G4ComponentGGNuclNuclXsc.hh"
|
||||
#include "G4CrossSectionDataSetRegistry.hh"
|
||||
|
||||
#include "G4LMsdGenerator.hh"
|
||||
#include "G4DiffElasticRatio.hh"
|
||||
#include "G4AutoDelete.hh"
|
||||
|
||||
#include "G4HadronicParameters.hh"
|
||||
#include "G4HadronicBuilder.hh"
|
||||
#include "G4HadParticles.hh"
|
||||
|
||||
#include "G4HadProcesses.hh"
|
||||
#include "G4PhysListUtil.hh"
|
||||
|
||||
// factory
|
||||
#include "G4PhysicsConstructorFactory.hh"
|
||||
//
|
||||
G4_DECLARE_PHYSCONSTR_FACTORY( G4HadronHElasticPhysics );
|
||||
|
||||
G4ThreadLocal G4DiffElasticRatio* G4HadronHElasticPhysics::diffRatio = nullptr;
|
||||
|
||||
G4HadronHElasticPhysics::G4HadronHElasticPhysics( G4int ver, G4bool diffraction)
|
||||
: G4VPhysicsConstructor( "hElastic_BEST" ), verbose( ver ),
|
||||
G4HadronHElasticPhysics::G4HadronHElasticPhysics(G4int ver, G4bool diffraction)
|
||||
: G4HadronElasticPhysics(ver, "hElastic_BEST"),
|
||||
fDiffraction(diffraction)
|
||||
{
|
||||
if ( verbose > 1 ) {
|
||||
if (ver > 1) {
|
||||
G4cout << "### G4HadronHElasticPhysics: " << GetPhysicsName()
|
||||
<< " low-mass diffraction: " << fDiffraction << G4endl;
|
||||
}
|
||||
@@ -97,220 +93,142 @@ G4HadronHElasticPhysics::G4HadronHElasticPhysics( G4int ver, G4bool diffraction)
|
||||
|
||||
G4HadronHElasticPhysics::~G4HadronHElasticPhysics() {}
|
||||
|
||||
|
||||
void G4HadronHElasticPhysics::ConstructParticle() {
|
||||
// G4cout << "G4HadronElasticPhysics::ConstructParticle" << G4endl;
|
||||
G4MesonConstructor pMesonConstructor;
|
||||
pMesonConstructor.ConstructParticle();
|
||||
|
||||
G4BaryonConstructor pBaryonConstructor;
|
||||
pBaryonConstructor.ConstructParticle();
|
||||
|
||||
// Construct light ions
|
||||
G4IonConstructor pConstructor;
|
||||
pConstructor.ConstructParticle();
|
||||
}
|
||||
|
||||
void G4HadronHElasticPhysics::ConstructProcess() {
|
||||
G4HadronicParameters* param = G4HadronicParameters::Instance();
|
||||
G4bool useFactorXS = param->ApplyFactorXS();
|
||||
G4ParticleTable* table = G4ParticleTable::GetParticleTable();
|
||||
G4PhysicsListHelper* ph = G4PhysicsListHelper::GetPhysicsListHelper();
|
||||
|
||||
const G4double elimitDiffuse = 0.0;
|
||||
const G4double elimitDiffuse = 10.0;
|
||||
const G4double elimitAntiNuc = 100.0*MeV;
|
||||
const G4double delta = 0.1*MeV;
|
||||
|
||||
if ( verbose > 1 ) {
|
||||
G4double emax = std::max(param->GetMaxEnergy(), elimitAntiNuc+delta);
|
||||
if (param->GetVerboseLevel() > 1 ) {
|
||||
G4cout << "### HadronHElasticPhysics::ConstructProcess: lower energy limit for DiffuseElastic : "
|
||||
<< elimitDiffuse/GeV << " GeV" << G4endl
|
||||
<< " transition energy for anti-nuclei : "
|
||||
<< elimitAntiNuc/GeV << " GeV" << G4endl;
|
||||
}
|
||||
G4HadronElastic* lhep0 = new G4HadronElastic();
|
||||
G4HadronElastic* lhep1 = new G4HadronElastic();
|
||||
G4HadronElastic* lhep2 = new G4HadronElastic();
|
||||
lhep0->SetMaxEnergy(emax);
|
||||
lhep1->SetMaxEnergy(elimitDiffuse+delta);
|
||||
lhep2->SetMaxEnergy(elimitAntiNuc+delta);
|
||||
|
||||
G4AntiNuclElastic* anuc = new G4AntiNuclElastic();
|
||||
anuc->SetMinEnergy( elimitAntiNuc );
|
||||
G4CrossSectionElastic* anucxs =
|
||||
new G4CrossSectionElastic( anuc->GetComponentCrossSection() );
|
||||
anuc->SetMaxEnergy(emax);
|
||||
|
||||
G4HadronElastic* lhep = new G4HadronElastic();
|
||||
lhep->SetMaxEnergy( elimitAntiNuc + delta );
|
||||
auto anucxs = G4HadProcesses::ElasticXS("AntiAGlauber");
|
||||
auto xsNN = G4HadProcesses::ElasticXS("Glauber-Gribov Nucl-nucl");
|
||||
|
||||
G4HadronElastic* lhep0 = new G4HadronElastic();
|
||||
G4LMsdGenerator* diffGen = nullptr;
|
||||
G4DiffElasticRatio* diffRatio = nullptr;
|
||||
if( fDiffraction ) {
|
||||
diffGen = new G4LMsdGenerator("LMsdDiffraction");
|
||||
diffRatio = new G4DiffElasticRatio();
|
||||
}
|
||||
|
||||
// Three instances of Chips elastic model: one used everywhere,
|
||||
// one used below a energy threshold, and one used only for the
|
||||
// hydrogen element.
|
||||
G4ChipsElasticModel* chips1 = new G4ChipsElasticModel();
|
||||
G4ChipsElasticModel* chips2 = new G4ChipsElasticModel();
|
||||
chips2->SetMaxEnergy( elimitAntiNuc + delta );
|
||||
// Use Chips elastic model only for the hydrogen element and above an energy threshold
|
||||
G4ChipsElasticModel* chipsH = new G4ChipsElasticModel();
|
||||
chipsH->SetMinEnergy( elimitDiffuse );
|
||||
const G4ElementTable* theElementTable = G4Element::GetElementTable();
|
||||
for ( size_t i_ele = 0; i_ele < theElementTable->size(); i_ele++ ) {
|
||||
G4Element* element = (*theElementTable)[ i_ele ];
|
||||
if ( element->GetZ() > 1.0 ) chipsH->DeActivateFor( element );
|
||||
}
|
||||
|
||||
G4NuclNuclDiffuseElastic* diffuseNuclNuclElastic = new G4NuclNuclDiffuseElastic();
|
||||
diffuseNuclNuclElastic->SetMinEnergy( elimitDiffuse );
|
||||
// p
|
||||
G4ParticleDefinition* particle = G4Proton::Proton();
|
||||
G4HadronElasticProcess* hel = new G4HadronElasticProcess();
|
||||
hel->AddDataSet(new G4BGGNucleonElasticXS(particle));
|
||||
G4DiffuseElastic* protonDiffuseElastic = new G4DiffuseElastic();
|
||||
protonDiffuseElastic->SetMinEnergy( elimitDiffuse );
|
||||
hel->RegisterMe( chipsH ); // Use Chips only for Hydrogen element
|
||||
hel->RegisterMe( protonDiffuseElastic );
|
||||
hel->RegisterMe( lhep1 );
|
||||
if( fDiffraction) hel->SetDiffraction(diffGen, diffRatio);
|
||||
if( useFactorXS ) hel->MultiplyCrossSectionBy( param->XSFactorNucleonElastic() );
|
||||
ph->RegisterProcess(hel, particle);
|
||||
|
||||
G4VCrossSectionDataSet* theComponentGGHadronNucleusData =
|
||||
new G4CrossSectionElastic( new G4ComponentGGHadronNucleusXsc );
|
||||
// n
|
||||
particle = G4Neutron::Neutron();
|
||||
hel = new G4HadronElasticProcess();
|
||||
hel->AddDataSet(new G4NeutronElasticXS());
|
||||
G4DiffuseElastic* neutronDiffuseElastic = new G4DiffuseElastic();
|
||||
neutronDiffuseElastic->SetMinEnergy( elimitDiffuse );
|
||||
hel->RegisterMe( chipsH ); // Use Chips only for Hydrogen element
|
||||
hel->RegisterMe( neutronDiffuseElastic );
|
||||
hel->RegisterMe( lhep1 );
|
||||
if( fDiffraction) hel->SetDiffraction(diffGen, diffRatio);
|
||||
if( useFactorXS ) hel->MultiplyCrossSectionBy( param->XSFactorNucleonElastic() );
|
||||
ph->RegisterProcess(hel, particle);
|
||||
|
||||
G4VCrossSectionDataSet* theComponentGGNuclNuclData =
|
||||
new G4CrossSectionElastic( new G4ComponentGGNuclNuclXsc() );
|
||||
// pi+
|
||||
particle = G4PionPlus::PionPlus();
|
||||
hel = new G4HadronElasticProcess();
|
||||
hel->AddDataSet(new G4BGGPionElasticXS(particle));
|
||||
G4DiffuseElastic* dElastic = new G4DiffuseElastic();
|
||||
dElastic->SetMinEnergy( elimitDiffuse );
|
||||
hel->RegisterMe( chipsH ); // Use Chips only for Hydrogen element
|
||||
hel->RegisterMe( dElastic );
|
||||
hel->RegisterMe( lhep1 );
|
||||
if( fDiffraction) hel->SetDiffraction(diffGen, diffRatio);
|
||||
if( useFactorXS ) hel->MultiplyCrossSectionBy( param->XSFactorPionElastic() );
|
||||
ph->RegisterProcess(hel, particle);
|
||||
|
||||
G4LMsdGenerator* diffGen = nullptr;
|
||||
if(fDiffraction) {
|
||||
diffGen = new G4LMsdGenerator("LMsdDiffraction");
|
||||
diffRatio = new G4DiffElasticRatio();
|
||||
G4AutoDelete::Register(diffRatio);
|
||||
// pi-
|
||||
particle = G4PionMinus::PionMinus();
|
||||
hel = new G4HadronElasticProcess();
|
||||
hel->AddDataSet(new G4BGGPionElasticXS(particle));
|
||||
dElastic = new G4DiffuseElastic();
|
||||
dElastic->SetMinEnergy( elimitDiffuse );
|
||||
hel->RegisterMe( chipsH ); // Use Chips only for Hydrogen element
|
||||
hel->RegisterMe( dElastic );
|
||||
hel->RegisterMe( lhep1 );
|
||||
if( fDiffraction) hel->SetDiffraction(diffGen, diffRatio);
|
||||
if( useFactorXS ) hel->MultiplyCrossSectionBy( param->XSFactorPionElastic() );
|
||||
ph->RegisterProcess(hel, particle);
|
||||
|
||||
// kaons
|
||||
G4HadronicBuilder::BuildElastic( G4HadParticles::GetKaons() );
|
||||
|
||||
// d, t, He3, alpha
|
||||
for( auto & pdg : G4HadParticles::GetLightIons() ) {
|
||||
particle = table->FindParticle( pdg );
|
||||
if ( particle == nullptr ) { continue; }
|
||||
|
||||
hel = new G4HadronElasticProcess();
|
||||
hel->AddDataSet(xsNN);
|
||||
hel->RegisterMe(lhep0);
|
||||
if( useFactorXS ) hel->MultiplyCrossSectionBy( param->XSFactorHadronElastic() );
|
||||
ph->RegisterProcess(hel, particle);
|
||||
}
|
||||
G4HadronElasticProcess* hel = nullptr;
|
||||
|
||||
auto myParticleIterator=GetParticleIterator();
|
||||
myParticleIterator->reset();
|
||||
while( (*myParticleIterator)() ) {
|
||||
// high energy particles
|
||||
if( emax > param->EnergyThresholdForHeavyHadrons() ) {
|
||||
|
||||
G4ParticleDefinition* particle = myParticleIterator->value();
|
||||
G4ProcessManager* pmanager = particle->GetProcessManager();
|
||||
G4String pname = particle->GetParticleName();
|
||||
// pbar, nbar, anti light ions
|
||||
for( auto & pdg : G4HadParticles::GetLightAntiIons() ) {
|
||||
particle = table->FindParticle( pdg );
|
||||
if ( particle == nullptr ) { continue; }
|
||||
|
||||
if ( pname == "anti_lambda" ||
|
||||
pname == "anti_sigma-" ||
|
||||
pname == "anti_sigma0" ||
|
||||
pname == "anti_sigma+" ||
|
||||
pname == "anti_xi-" ||
|
||||
pname == "anti_xi0" ||
|
||||
pname == "anti_omega-" ||
|
||||
pname == "lambda" ||
|
||||
pname == "sigma-" ||
|
||||
pname == "sigma0" ||
|
||||
pname == "sigma+" ||
|
||||
pname == "xi-" ||
|
||||
pname == "xi0" ||
|
||||
pname == "omega-"
|
||||
) {
|
||||
hel = new G4HadronElasticProcess();
|
||||
hel->AddDataSet( theComponentGGHadronNucleusData );
|
||||
hel->RegisterMe( chips1 );
|
||||
pmanager->AddDiscreteProcess( hel );
|
||||
if ( verbose > 1 ) {
|
||||
G4cout << "### HadronElasticPhysics: " << hel->GetProcessName()
|
||||
<< " added for " << particle->GetParticleName() << G4endl;
|
||||
}
|
||||
hel->RegisterMe(lhep2);
|
||||
hel->RegisterMe(anuc);
|
||||
hel->AddDataSet(anucxs);
|
||||
if( useFactorXS ) hel->MultiplyCrossSectionBy( param->XSFactorHadronElastic() );
|
||||
ph->RegisterProcess(hel, particle);
|
||||
}
|
||||
|
||||
} else if ( pname == "proton" ) {
|
||||
hel = new G4HadronElasticProcess();
|
||||
hel->AddDataSet( new G4BGGNucleonElasticXS( particle ) );
|
||||
// To preserve reproducibility, a different instance of
|
||||
// G4DiffuseElastic must be used for each particle type.
|
||||
G4DiffuseElastic* protonDiffuseElastic = new G4DiffuseElastic();
|
||||
protonDiffuseElastic->SetMinEnergy( elimitDiffuse );
|
||||
hel->RegisterMe( chipsH ); // Use Chips only for Hydrogen element
|
||||
hel->RegisterMe( protonDiffuseElastic );
|
||||
pmanager->AddDiscreteProcess( hel );
|
||||
if(fDiffraction) { hel->SetDiffraction(diffGen, diffRatio); }
|
||||
if ( verbose > 1 ) {
|
||||
G4cout << "### HadronElasticPhysics: " << hel->GetProcessName()
|
||||
<< " added for " << particle->GetParticleName() << G4endl;
|
||||
}
|
||||
// hyperons
|
||||
G4HadronicBuilder::BuildElastic( G4HadParticles::GetHyperons() );
|
||||
G4HadronicBuilder::BuildElastic( G4HadParticles::GetAntiHyperons() );
|
||||
|
||||
} else if ( pname == "neutron" ) {
|
||||
hel = new G4HadronElasticProcess();
|
||||
hel->AddDataSet(new G4NeutronElasticXS() );
|
||||
// To preserve reproducibility, a different instance of
|
||||
// G4DiffuseElastic must be used for each particle type.
|
||||
G4DiffuseElastic* neutronDiffuseElastic = new G4DiffuseElastic();
|
||||
neutronDiffuseElastic->SetMinEnergy( elimitDiffuse );
|
||||
hel->RegisterMe( chipsH ); // Use Chips only for Hydrogen element
|
||||
hel->RegisterMe( neutronDiffuseElastic );
|
||||
pmanager->AddDiscreteProcess( hel );
|
||||
if(fDiffraction) { hel->SetDiffraction(diffGen, diffRatio); }
|
||||
if ( verbose > 1 ) {
|
||||
G4cout << "### HadronElasticPhysics: "
|
||||
<< hel->GetProcessName()
|
||||
<< " added for " << particle->GetParticleName() << G4endl;
|
||||
}
|
||||
|
||||
} else if ( pname == "pi-" || pname == "pi+" ) {
|
||||
hel = new G4HadronElasticProcess();
|
||||
hel->AddDataSet( new G4BGGPionElasticXS( particle ) );
|
||||
// To preserve reproducibility, a different instance of
|
||||
// G4DiffuseElastic must be used for each particle type.
|
||||
G4DiffuseElastic* dElastic = new G4DiffuseElastic();
|
||||
dElastic->SetMinEnergy( elimitDiffuse );
|
||||
hel->RegisterMe( chipsH ); // Use Chips only for Hydrogen element
|
||||
hel->RegisterMe( dElastic );
|
||||
pmanager->AddDiscreteProcess( hel );
|
||||
if(fDiffraction) { hel->SetDiffraction(diffGen, diffRatio); }
|
||||
if ( verbose > 1 ) {
|
||||
G4cout << "### HadronElasticPhysics: " << hel->GetProcessName()
|
||||
<< " added for " << particle->GetParticleName() << G4endl;
|
||||
}
|
||||
|
||||
} else if ( pname == "kaon-" ||
|
||||
pname == "kaon+" ||
|
||||
pname == "kaon0S" ||
|
||||
pname == "kaon0L"
|
||||
) {
|
||||
hel = new G4HadronElasticProcess();
|
||||
//AR-14Aug2017 : Replaced Chips elastic kaon cross sections with
|
||||
// Grichine's Glauber-Gribov ones. In this way, the
|
||||
// total (elastic + inelastic) kaon cross sections
|
||||
// are consistent with the PDG ones.
|
||||
// For the time being, kept Chips elastic as
|
||||
// final-state model.
|
||||
hel->AddDataSet( theComponentGGHadronNucleusData );
|
||||
hel->RegisterMe( chips1 );
|
||||
pmanager->AddDiscreteProcess( hel );
|
||||
if(fDiffraction) { hel->SetDiffraction(diffGen, diffRatio); }
|
||||
if ( verbose > 1 ) {
|
||||
G4cout << "### HadronElasticPhysics: " << hel->GetProcessName()
|
||||
<< " added for " << particle->GetParticleName() << G4endl;
|
||||
}
|
||||
|
||||
} else if(pname == "alpha" ||
|
||||
pname == "deuteron" ||
|
||||
pname == "triton" ||
|
||||
pname == "He3"
|
||||
) {
|
||||
hel = new G4HadronElasticProcess();
|
||||
hel->AddDataSet(theComponentGGNuclNuclData);
|
||||
hel->RegisterMe(lhep0);
|
||||
pmanager->AddDiscreteProcess(hel);
|
||||
if(verbose > 1) {
|
||||
G4cout << "### HadronElasticPhysics: " << hel->GetProcessName()
|
||||
<< " added for " << particle->GetParticleName() << G4endl;
|
||||
}
|
||||
|
||||
} else if ( pname == "anti_proton" || pname == "anti_neutron" ) {
|
||||
hel = new G4HadronElasticProcess();
|
||||
hel->AddDataSet( anucxs );
|
||||
hel->RegisterMe( chips2 );
|
||||
hel->RegisterMe( anuc );
|
||||
pmanager->AddDiscreteProcess( hel );
|
||||
if ( verbose > 1 ) {
|
||||
G4cout << "### HadronElasticPhysics: " << hel->GetProcessName()
|
||||
<< " added for " << particle->GetParticleName() << G4endl;
|
||||
}
|
||||
|
||||
} else if ( pname == "anti_deuteron" ||
|
||||
pname == "anti_triton" ||
|
||||
pname == "anti_He3" ||
|
||||
pname == "anti_alpha"
|
||||
) {
|
||||
hel = new G4HadronElasticProcess();
|
||||
hel->AddDataSet( anucxs );
|
||||
hel->RegisterMe( lhep );
|
||||
hel->RegisterMe( anuc );
|
||||
pmanager->AddDiscreteProcess( hel );
|
||||
if ( verbose > 1 ) {
|
||||
G4cout << "### HadronElasticPhysics: " << hel->GetProcessName()
|
||||
<< " added for " << particle->GetParticleName() << G4endl;
|
||||
}
|
||||
// b-, c- baryons and mesons
|
||||
if( G4HadronicParameters::Instance()->EnableBCParticles() ) {
|
||||
G4HadronicBuilder::BuildElastic( G4HadParticles::GetBCHadrons() );
|
||||
}
|
||||
}
|
||||
|
||||
// Charm and bottom hadrons
|
||||
if ( G4HadronicParameters::Instance()->EnableBCParticles() ) {
|
||||
G4HadronicBuilder::BuildElastic( G4HadParticles::GetBCHadrons() );
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -46,6 +46,7 @@
|
||||
#include "G4NuclNuclDiffuseElastic.hh"
|
||||
#include "G4ComponentGGNuclNuclXsc.hh"
|
||||
#include "G4CrossSectionElastic.hh"
|
||||
#include "G4HadronicParameters.hh"
|
||||
|
||||
// factory
|
||||
#include "G4PhysicsConstructorFactory.hh"
|
||||
@@ -54,9 +55,11 @@ G4_DECLARE_PHYSCONSTR_FACTORY(G4IonElasticPhysics);
|
||||
//
|
||||
|
||||
G4IonElasticPhysics::G4IonElasticPhysics(G4int ver)
|
||||
: G4VPhysicsConstructor("IonElasticPhysics"), verbose(ver)
|
||||
: G4VPhysicsConstructor("IonElasticPhysics")
|
||||
{
|
||||
if(verbose > 1) {
|
||||
// because it is an addition, the type of this constructor is 0
|
||||
G4HadronicParameters::Instance()->SetVerboseLevel(ver);
|
||||
if(ver > 1) {
|
||||
G4cout << "### G4IonElasticPhysics: " << GetPhysicsName()
|
||||
<< G4endl;
|
||||
}
|
||||
@@ -89,8 +92,9 @@ void G4IonElasticPhysics::ConstructProcess()
|
||||
G4ProcessManager* ionManager = G4GenericIon::GenericIon()->GetProcessManager();
|
||||
ionManager->AddDiscreteProcess( ionElasticProcess );
|
||||
|
||||
if ( verbose > 1 ) {
|
||||
if (G4HadronicParameters::Instance()->GetVerboseLevel() > 1 ) {
|
||||
G4cout << "### IonElasticPhysics: " << ionElasticProcess->GetProcessName()
|
||||
<< " added for " << G4GenericIon::GenericIon()->GetParticleName() << G4endl;
|
||||
<< " added for " << G4GenericIon::GenericIon()->GetParticleName()
|
||||
<< G4endl;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -43,25 +43,27 @@
|
||||
|
||||
#include "G4ParticleHPThermalScattering.hh"
|
||||
#include "G4ParticleHPThermalScatteringData.hh"
|
||||
#include "G4HadronicParameters.hh"
|
||||
|
||||
#include "G4BuilderType.hh"
|
||||
#include "G4PhysListUtil.hh"
|
||||
#include "G4SystemOfUnits.hh"
|
||||
|
||||
G4ThermalNeutrons::G4ThermalNeutrons(G4int ver) :
|
||||
G4VHadronPhysics("G4ThermalNeutrons"), verbose(ver) {
|
||||
G4VHadronPhysics("ThermalNeutrons", ver) {
|
||||
// because it is an addition, the type of this constructor is 0
|
||||
}
|
||||
|
||||
G4ThermalNeutrons::~G4ThermalNeutrons() {}
|
||||
|
||||
void G4ThermalNeutrons::ConstructProcess() {
|
||||
|
||||
if(verbose > 0) {
|
||||
if(G4HadronicParameters::Instance()->GetVerboseLevel() > 1) {
|
||||
G4cout << "### " << GetPhysicsName() << " Construct Processes " << G4endl;
|
||||
}
|
||||
G4Neutron* part = G4Neutron::Neutron();
|
||||
G4HadronicProcess* hpel = G4PhysListUtil::FindElasticProcess(part);
|
||||
if(!hpel) {
|
||||
if(nullptr == hpel) {
|
||||
G4cout << "### " << GetPhysicsName()
|
||||
<< " WARNING: Fail to add thermal neutron scattering" << G4endl;
|
||||
return;
|
||||
|
||||
Reference in New Issue
Block a user