Import Geant4 10.6.0 source tree

This commit is contained in:
Gabriele Cosmo
2019-12-06 15:12:28 +01:00
parent b2a62ae692
commit 5baee230e9
2997 changed files with 141580 additions and 98673 deletions
@@ -13,6 +13,35 @@ introduced in the code and keeptrack of all tags.
* Reverse chronological order (last date on top), please *
----------------------------------------------------------
29-November-2019, Alberto Ribon (phys-ctor-hinelastic-V10-05-03)
- Update of the only README file.
22-October-2019, Alberto Ribon (phys-ctor-hinelastic-V10-05-02)
- G4HadronPhysicsFTFP_BERT_TRV : removed special treatment of hadronic
inelastic cross sections of hyperons and anti-hyperons (now it is
the default in the class G4HyperonFTFPBuilder).
- G4HadronInelasticFTFQGSP_BERT, G4HadronInelasticQBBC : use Glauber-Gribov
inelastic cross sections (instead of Chips ones) for hyperons and
anti-hyperons.
- G4HadronPhysicsFTF_BIC, G4HadronPhysicsFTFP_BERT_HP,
G4HadronPhysicsFTFP_BERT_TRV, G4HadronPhysicsFTFQGSP_BERT,
G4HadronPhysicsQGS_BIC, G4HadronPhysicsQGSP_BERT,
G4HadronPhysicsQGSP_BERT_HP, G4HadronPhysicsQGSP_BIC,
G4HadronPhysicsQGSP_BIC_HP, G4HadronPhysicsQGSP_BIC_AllHP,
G4HadronInelasticQBBC, G4HadronPhysicsINCLXX : removed special treatment
of hadronic inelastic cross sections of kaons (now default).
27-August-2019, Vladimir Ivantchenko (phys-ctor-hinelastic-V10-05-01)
- G4HadronInelasticQBBC - use XS proton inelastic
05-August-2019, Alberto Ribon (phys-ctor-hinelastic-V10-05-00)
- README : updated information.
- Replacing explicit values for the energy transition region with values
from G4HadronicParameters in nearly all constructors.
Note: kept unchanged the transition region between FTFP and BERT only
in 4 cases: G4HadronPhysicsFTFP_BERT_ATL, G4HadronPhysicsINCLXX,
G4HadronPhysicsNuBeam and "ShieldingM".
26-November-2018, Alberto Ribon (phys-ctor-hinelastic-V10-04-14)
- README : updated information.
- G4HadronPhysicsFTFQGSP_BERT : use BGG pion cross section, consistently
@@ -5,57 +5,59 @@
---------------------
Hadron nuclear inelastic processes for all hadrons:
- proton inelastic:
- cross section: Barashenkov-Glauber-Gribov
- cross section: G4ParticleInelasticXS
- final-state: Fritiof coupled with Precompound/de-excitation (FTFP) above 3 GeV;
Bertini (BERT) between 1 and 5 GeV;
Bertini (BERT) between 1 and 6 GeV;
Binary coupled with Precompound/de-excitation (BIC) below 1.5 GeV
- neutron inelastic:
- cross section: G4NeutronInelasticXS
- final-state: FTFP > 3 GeV; 1 GeV < BERT < 5 GeV; BIC < 1.5 GeV
- final-state: FTFP > 3 GeV; 1 GeV < BERT < 6 GeV; BIC < 1.5 GeV
neutron capture:
- cross section: G4NeutronCaptureXS
- final-state: G4NeutronRadCapture
- charged pions inelastic:
- cross section: Barashenkov-Glauber-Gribov
- final-state: FTFP > 3 GeV; BERT < 5 GeV
- final-state: FTFP > 3 GeV; BERT < 6 GeV
- kaons inelastic:
- cross section: Glauber-Gribov
- final-state: FTFP > 3 GeV; BERT < 5 GeV
- final-state: FTFP > 3 GeV; BERT < 6 GeV
- hyperons inelastic:
- cross section: Chips
- final-state: FTFP > 3 GeV; BERT < 5 GeV
- anti_proton, anti_neutron, anti_deuteron, anti_triton, anti_He3, anti_alpha,
anti_hyperons inelastic:
- cross section: Glauber-Gribov
- final-state: FTFP > 3 GeV; BERT < 6 GeV
- anti_proton, anti_neutron, anti_deuteron, anti_triton, anti_He3, anti_alpha inelastic:
- cross-section: Galoyan-Uzhinsky-Glauber-Gribov
- final-state: FTFP for all energies
- anti_hyperons inelastic:
- cross section: Glauber-Gribov
- final-state: FTFP for all energies
G4HadronPhysicsFTFP_BERT
------------------------
Hadron nuclear inelastic processes for all hadrons:
- proton inelastic:
- cross section: Barashenkov-Glauber-Gribov
- final-state: FTFP > 3 GeV; BERT < 12 GeV
- cross section: Barashenkov-Glauber-Gribov (G4BGGNucleonInelasticXS)
- final-state: FTFP > 3 GeV; BERT < 6 GeV
- neutron inelastic:
- cross section: G4NeutronInelasticXS
- final-state: FTFP > 3 GeV; BERT < 12 GeV
- final-state: FTFP > 3 GeV; BERT < 6 GeV
neutron capture:
- cross section: G4NeutronCaptureXS
- final-state: G4NeutronRadCapture
- charged pions inelastic:
- cross section: Barashenkov-Glauber-Gribov
- final-state: FTFP > 3 GeV; BERT < 12 GeV
- final-state: FTFP > 3 GeV; BERT < 6 GeV
- kaons inelastic:
- cross section: Glauber-Gribov
- final-state: FTFP > 3 GeV; BERT < 12 GeV
- final-state: FTFP > 3 GeV; BERT < 6 GeV
- hyperons inelastic:
- cross section: Chips
- final-state: FTFP > 2 GeV; BERT < 6 GeV
- cross section: Glauber-Gribov
- final-state: FTFP > 3 GeV; BERT < 6 GeV
- anti_proton, anti_neutron, anti_deuteron, anti_triton, anti_He3, anti_alpha inelastic:
- cross-section: Galoyan-Uzhinsky-Glauber-Gribov
- final-state: FTFP for all energies
- anti_hyperons inelastic:
- cross section: Chips
- cross section: Glauber-Gribov
- final-state: FTFP for all energies
@@ -63,39 +65,40 @@
----------------------------
Similar to G4HadronPhysicsFTFP_BERT, with the difference that for proton,
neutron, pions and kaons, the FTFP is used above 9 GeV and BERT below 12 GeV
(i.e. transition between these two models is in the interval [9, 12] GeV).
(i.e. transition between these two models is in the interval [9, 12] GeV
for the most frequent hadrons).
G4HadronPhysicsFTFP_BERT_HP
--------------------------
Similar to G4HadronPhysicsFTFP_BERT, with the only difference of the
treatment of low-energy neutrons:
Similar to G4HadronPhysicsFTFP_BERT, but with a different treatment of
low-energy neutrons:
- neutron inelastic: use NeutronHP (for both cross section and final state)
below 20 MeV; above G4NeutronCaptureXS cross section;
final-state: BERT between 19.9 MeV and 12 GeV,
final-state: BERT between 19.9 MeV and 6 GeV,
FTFP above 3 GeV.
- neutron capture: use NeutronHP (for both cross section and final state)
below 20 MeV; above G4NeutronCaptureXS cross section
and G4NeutronRadCapture final-state.
- neutron fission: use NeutronHP (for both cross section and final state)
below 20 MeV; above Gheisha (cross section and final state).
Moreover, RadioactiveDecay is activated (as in all the physics lists that use HP).
G4HadronPhysicsFTFP_BERT_TRV
----------------------------
Similar to G4HadronPhysicsFTFP_BERT, with only two differences:
- the transition between FTFP and BERT is in the interval [2 , 4] GeV;
Similar to G4HadronPhysicsFTFP_BERT, with only one difference:
- the inelastic cross sections for hyperons is Glauber-Gribov
(instead of Chips).
G4HadronPhysicsFTF_BIC
----------------------
Similar to G4HadronPhysicsFTFP_BERT, with the following differences for
proton, neutron, pions and kaons:
- BIC is used (instead of BERT) below 5 GeV;
- FTF is still used above 4 GeV, but it is coupled with BIC (instead of
Precompound/de-excitation)
Similar to G4HadronPhysicsFTFP_BERT, with the following differences:
- For proton and neutron, BIC is used (instead of BERT) below 6 GeV
- For pions, BIC is used below 1.5 GeV, whereas BERT is used in the
interval 1 GeV < BERT < 6 GeV
- FTF is coupled with BIC (instead of directly to Precompound/de-excitation).
G4HadronPhysicsFTFQGSP_BERT
@@ -108,7 +111,7 @@
---------------------
Hadron nuclear inelastic processes for all hadrons:
- proton inelastic:
- cross section: Barashenkov-Glauber-Gribov
- cross section: Barashenkov-Glauber-Gribov (G4BGGNucleonInelasticXS)
- final-state: QGSP > 15 GeV; 1 MeV < INCLXX < 20 GeV; Preco < 2 MeV
- neutron inelastic:
- cross section: G4NeutronInelasticXS
@@ -123,14 +126,14 @@
- cross section: Glauber-Gribov
- final-state: QGSP > 14 GeV; BERT < 15 GeV
- hyperons inelastic:
- cross section: Chips
- final-state: FTFP > 2 GeV; BERT < 6 GeV
- cross section: Glauber-Gribov
- final-state: FTFP > 3 GeV; BERT < 6 GeV
- anti_proton, anti_neutron, anti_deuteron, anti_triton, anti_He3, anti_alpha inelastic:
- cross-section: Galoyan-Uzhinsky-Glauber-Gribov
- final-state: FTF for all energies
- final-state: FTFP for all energies
- anti_hyperons inelastic:
- cross section: Chips
- final-state: FTF for all energies
- cross section: Glauber-Gribov
- final-state: FTFP for all energies
Note: it is possible to specify in the constructor the use of FTFP instead
of QGSP for proton, neutron, charged pions and kaons;
moreover, NeutronHP can also be activated in the constructor, in which
@@ -140,182 +143,139 @@
G4HadronPhysicsNuBeam
---------------------
Hadron nuclear inelastic processes for all hadrons:
- proton inelastic:
- cross section: Barashenkov-Glauber-Gribov
- final-state: QGSP with Lund string fragmentation > 100 GeV;
3 GeV < FTFP < 101 GeV; BERT < 3.5 GeV
- neutron inelastic:
- cross section: G4NeutronInelasticXS
- final-state: FTFP > 4 GeV; BERT < 5 GeV
neutron capture:
- cross section: G4NeutronCaptureXS
- final-state: G4NeutronRadCapture
- charged pions inelastic:
- cross section: Barashenkov-Glauber-Gribov
- final-state: FTFP > 3 GeV; BERT < 3.5 GeV
- kaons inelastic:
- cross section: Glauber-Gribov
- final-state: FTFP > 3 GeV; BERT < 3.5 GeV
- hyperons inelastic:
- cross section: Chips
- final-state: FTFP > 2 GeV; BERT < 6 GeV
- anti_proton, anti_neutron, anti_deuteron, anti_triton, anti_He3, anti_alpha inelastic:
- cross-section: Galoyan-Uzhinsky-Glauber-Gribov
- final-state: FTFP for all energies
- anti_hyperons inelastic:
- cross section: Chips
- final-state: FTFP for all energies
Similar to FTFP_BERT, except for the final-state models of the most frequent
hadrons:
- proton : QGSP with Lund string fragmentation > 100 GeV;
3 GeV < FTFP < 101 GeV; BERT < 3.5 GeV
- neutron : FTFP > 4 GeV; BERT < 5 GeV
- charged pions : FTFP > 3 GeV; BERT < 3.5 GeV
- kaons : FTFP > 3 GeV; BERT < 3.5 GeV
G4HadronPhysicsQGSP_BERT
------------------------
Hadron nuclear inelastic processes for all hadrons:
- proton inelastic:
- cross section: Barashenkov-Glauber-Gribov
- final-state: QGSP > 12 GeV; 9.5 GeV < FTFP < 25 GeV; BERT < 9.9 GeV
- cross section: Barashenkov-Glauber-Gribov (G4BGGNucleonInelasticXS)
- final-state: QGSP > 12 GeV; 3 GeV < FTFP < 25 GeV; BERT < 6 GeV
- neutron inelastic:
- cross section: G4NeutronInelasticXS
- final-state: QGSP > 12 GeV; 9.5 GeV < FTFP < 25 GeV; BERT < 9.9 GeV
- cross section: G4NeutronInelasticXS
- final-state: QGSP > 12 GeV; 3 GeV < FTFP < 25 GeV; BERT < 6 GeV
neutron capture:
- cross section: G4NeutronCaptureXS
- final-state: G4NeutronRadCapture
- charged pions inelastic:
- cross section: Barashenkov-Glauber-Gribov
- final-state: QGSP > 12 GeV; 9.5 GeV < FTFP < 25 GeV; BERT < 9.9 GeV
- final-state: QGSP > 12 GeV; 3 GeV < FTFP < 25 GeV; BERT < 6 GeV
- kaons inelastic:
- cross section: Glauber-Gribov
- final-state: QGSP > 12 GeV; 9.5 GeV < FTFP < 25 GeV; BERT < 9.9 GeV
- final-state: QGSP > 12 GeV; 3 GeV < FTFP < 25 GeV; BERT < 6 GeV
- hyperons inelastic:
- cross section: Chips
- final-state: FTFP > 2 GeV; BERT < 6 GeV
- cross section: Glauber-Gribov
- final-state: FTFP > 3 GeV; BERT < 6 GeV
- anti_proton, anti_neutron, anti_deuteron, anti_triton, anti_He3, anti_alpha inelastic:
- cross-section: Galoyan-Uzhinsky-Glauber-Gribov
- final-state: FTFP for all energies
- anti_hyperons inelastic:
- cross section: Chips
- cross section: Glauber-Gribov
- final-state: FTFP for all energies
G4HadronPhysicsQGSP_BERT_HP
---------------------------
Similar to G4HadronPhysicsQGSP_BERT, with the only difference for neutron:
Similar to G4HadronPhysicsQGSP_BERT, but with a different treatment of
low-energy neutrons:
- neutron inelastic: use NeutronHP (for both cross section and final state)
below 20 MeV; above G4NeutronCaptureXS cross section;
final-state: BERT between 19.9 MeV and 9.9 GeV,
FTFP between 9.5 and 25 GeV, QGSP above 12 GeV.
final-state: BERT between 19.9 MeV and 6 GeV,
FTFP between 3 and 25 GeV, QGSP above 12 GeV.
- neutron capture: use NeutronHP (for both cross section and final state)
below 20 MeV; above G4NeutronCaptureXS cross section
and G4NeutronRadCapture final-state.
- neutron fission: use NeutronHP (for both cross section and final state)
below 20 MeV; above Gheisha (cross section and final state).
Moreover, RadioactiveDecay is activated (as in all the physics lists that use HP).
G4HadronPhysicsQGSP_BIC
-----------------------
Hadron nuclear inelastic processes for all hadrons:
- proton inelastic:
- cross section: Barashenkov-Glauber-Gribov
- final-state: QGSP > 12 GeV; 9.5 GeV < FTFP < 25 GeV; BIC < 9.9 GeV
- cross section: Barashenkov-Glauber-Gribov (G4BGGNucleonInelasticXS)
- final-state: QGSP > 12 GeV; 3 GeV < FTFP < 25 GeV; BIC < 6 GeV
- neutron inelastic:
- cross section: G4NeutronInelasticXS
- final-state: QGSP > 12 GeV; 9.5 GeV < FTFP < 25 GeV; BIC < 9.9 GeV
- final-state: QGSP > 12 GeV; 3 GeV < FTFP < 25 GeV; BIC < 6 GeV
neutron capture:
- cross section: G4NeutronCaptureXS
- final-state: G4NeutronRadCapture
- charged pions inelastic:
- cross section: Barashenkov-Glauber-Gribov
- final-state: QGSP > 12 GeV; 4 GeV < FTFP < 25 GeV; BERT < 5 GeV
- final-state: QGSP > 12 GeV; 3 GeV < FTFP < 25 GeV; BERT < 6 GeV
- kaons inelastic:
- cross section: Glauber-Gribov
- final-state: QGSP > 12 GeV; 4 GeV < FTFP < 25 GeV; BERT < 5 GeV
- final-state: QGSP > 12 GeV; 3 GeV < FTFP < 25 GeV; BERT < 6 GeV
- hyperons inelastic:
- cross section: Chips
- final-state: FTFP > 2 GeV; BERT < 6 GeV
- cross section: Glauber-Gribov
- final-state: FTFP > 3 GeV; BERT < 6 GeV
- anti_proton, anti_neutron, anti_deuteron, anti_triton, anti_He3, anti_alpha inelastic:
- cross-section: Galoyan-Uzhinsky-Glauber-Gribov
- final-state: FTFP for all energies
- anti_hyperons inelastic:
- cross section: Chips
- cross section: Glauber-Gribov
- final-state: FTFP for all energies
G4HadronPhysicsQGSP_BIC_AllHP
-----------------------------
Similar to G4HadronPhysicsQGSP_BIC_HP (see below) with the only difference
for proton: ParticleHP is used (for both cross section and final state)
below 200 MeV; above it: Barashenkov-Glauber-Gribov inelastic cross section;
final-state: QGSP > 12 GeV; 9.5 GeV < FTFP < 25 GeV; 200 MeV < BIC < 9.9 GeV.
G4HadronPhysicsQGSP_BIC_HP
--------------------------
Similar to G4HadronPhysicsQGSP_BIC, with the only difference for neutron:
Similar to G4HadronPhysicsQGSP_BIC, but with a different treatment of
low-energy neutrons:
- neutron inelastic: use NeutronHP (for both cross section and final state)
below 20 MeV; above G4NeutronCaptureXS cross section;
final-state: BIC between 19.9 MeV and 9.9 GeV,
FTFP between 9.5 and 25 GeV, QGSP above 12 GeV.
final-state: BIC between 19.9 MeV and 6 GeV,
FTFP between 3 and 25 GeV, QGSP above 12 GeV.
- neutron capture: use NeutronHP (for both cross section and final state)
below 20 MeV; above G4NeutronCaptureXS cross section
and G4NeutronRadCapture final-state.
- neutron fission: use NeutronHP (for both cross section and final state)
below 20 MeV; above Gheisha (cross section and final state).
Moreover, RadioactiveDecay is activated (as in all the physics lists that use HP).
G4HadronPhysicsQGSP_BIC_AllHP
-----------------------------
Similar to G4HadronPhysicsQGSP_BIC_HP with the only difference for proton
and light ions (d, t, He3, alpha):
ParticleHP is used (for both cross section and final state) below 200 MeV;
above it: Barashenkov-Glauber-Gribov inelastic cross section;
final-state: QGSP > 12 GeV; 3 GeV < FTFP < 25 GeV; 199 MeV < BIC < 6 GeV.
G4HadronPhysicsQGSP_FTFP_BERT
-----------------------------
Hadron nuclear inelastic processes for all hadrons:
- proton inelastic:
- cross section: Barashenkov-Glauber-Gribov
- final-state: QGSP > 12 GeV; 6 GeV < FTFP < 25 GeV; BERT < 8 GeV
- neutron inelastic:
- cross section: G4NeutronInelasticXS
- final-state: QGSP > 12 GeV; 6 GeV < FTFP < 25 GeV; BERT < 8 GeV
neutron capture:
- cross section: G4NeutronCaptureXS
- final-state: G4NeutronRadCapture
- charged pions inelastic:
- cross section: Barashenkov-Glauber-Gribov
- final-state: QGSP > 12 GeV; 6 GeV < FTFP < 25 GeV; BERT < 8 GeV
- kaons inelastic:
- cross section: Glauber-Gribov
- final-state: QGSP > 12 GeV; 6 GeV < FTFP < 25 GeV; BERT < 8 GeV
- hyperons inelastic:
- cross section: Chips
- final-state: FTFP > 2 GeV; BERT < 6 GeV
- anti_proton, anti_neutron, anti_deuteron, anti_triton, anti_He3, anti_alpha inelastic:
- cross-section: Galoyan-Uzhinsky-Glauber-Gribov
- final-state: FTFP for all energies
- anti_hyperons inelastic:
- cross section: Chips
- final-state: FTFP for all energies
Currently it is the same as QGSP_BERT (this was not the case before G4 10.6).
It might be removed in future versions of Geant4.
G4HadronPhysicsQGS_BIC
----------------------
Similar to G4HadronPhysicsQGSP_BIC, with the following differences
in the final-state for some projectile hadrons:
- proton inelastic:
QGS_BIC > 12 GeV; 9.5 GeV < FTF_BIC < 25 GeV; BIC < 9.9 GeV
- neutron inelastic:
QGS_BIC > 12 GeV; 9.5 GeV < FTF_BIC < 25 GeV; BIC < 9.9 GeV
- pions inelastic:
QGS_BIC > 12 GeV; 4 GeV < FTF_BIC < 25 GeV; 1.2 GeV < BERT < 5 GeV; BIC < 1.3 GeV
- kaons inelastic:
QGS_BIC > 12 GeV; 4 GeV < FTF_BIC < 25 GeV; BERT < 5 GeV
Note: QGS_BIC and FTF_BIC indicate that QGS and FTF, respectively,
are coupled with BIC (instead of Precompound/de-excitation).
Similar to G4HadronPhysicsQGSP_BIC, with the following differences:
- For proton and neutron, BIC is used (instead of BERT) below 6 GeV
- For pions, BIC is used below 1.5 GeV, whereas BERT is used in the
interval 1 GeV < BERT < 6 GeV
- Both string models (i.e. QGS and FTF) are coupled with BIC
(instead of directly to Precompound/de-excitation).
G4HadronPhysicsShielding
------------------------
Hadron nuclear inelastic processes for all hadrons:
- proton inelastic:
- cross section: Barashenkov-Glauber-Gribov
- final-state: FTFP > 9.5 GeV; BERT < 9.9 GeV
- cross section: Barashenkov-Glauber-Gribov (G4BGGNucleonInelasticXS)
- final-state: FTFP > 3 GeV; BERT < 6 GeV
- neutron inelastic:
- cross section: G4NeutronInelasticXS > 20 MeV; NeutronHP or LEND < 20 MeV
- final-state: FTFP > 9.5 GeV; 19.9 MeV < BERT < 9.9 GeV; NeutronHP or LEND < 20 MeV
- final-state: FTFP > 3 GeV; 19.9 MeV < BERT < 6 GeV; NeutronHP or LEND < 20 MeV
neutron capture:
- cross section: G4NeutronCaptureXS > 20 MeV; NeutronHP or LEND < 20 MeV
- final-state: G4NeutronRadCapture > 19.9 MeV; NeutronHP or LEND < 20 MeV
@@ -324,20 +284,23 @@
- final-state: Gheisha > 19.9 MeV; NeutronHP or LEND < 20 MeV
- charged pions inelastic:
- cross section: Barashenkov-Glauber-Gribov
- final-state: FTFP > 9.5 GeV; BERT < 9.9 GeV
- final-state: FTFP > 3 GeV; BERT < 6 GeV
- kaons inelastic:
- cross section: Glauber-Gribov
- final-state: FTFP > 9.5 GeV; BERT < 9.9 GeV
- final-state: FTFP > 3 GeV; BERT < 6 GeV
- hyperons inelastic:
- cross section: Chips
- final-state: FTFP > 2 GeV; BERT < 6 GeV
- cross section: Glauber-Gribov
- final-state: FTFP > 3 GeV; BERT < 6 GeV
- anti_proton, anti_neutron, anti_deuteron, anti_triton, anti_He3, anti_alpha inelastic:
- cross-section: Galoyan-Uzhinsky-Glauber-Gribov
- final-state: FTFP for all energies
- anti_hyperons inelastic:
- cross section: Chips
- cross section: Glauber-Gribov
- final-state: FTFP for all energies
Moreover, RadioactiveDecay is activated (as in all the physics lists that use HP).
Note: the variant "M" of the Shielding physics list has a transition region
between FTFP and BERT - for proton, neutron, pions and kaons - between
9.5 and 9.9 GeV (instead of 3-6 GeV).
G4HadronPhysicsShieldingLEND
----------------------------
@@ -32,10 +32,10 @@
// This is a modified version of the FTFP_BERT hadron physics for ATLAS.
// The hadron physics of FTFP_BERT_ATL has the transition between Bertini
// (BERT) intra-nuclear cascade model and Fritiof (FTF) string model in the
// energy region [9, 12] GeV (instead of [4, 5] GeV as in FTFP_BERT).
// energy region [9, 12] GeV.
//
// Modified:
// 18.07.2017 A.Dotti: refactor forllowin new code
// 18.07.2017 A.Dotti: refactor for allowing new code
//---------------------------------------------------------------------------
//
#ifndef G4HadronPhysicsFTFP_BERT_ATL_h
@@ -52,6 +52,8 @@ class G4HadronPhysicsFTFP_BERT_ATL : public G4HadronPhysicsFTFP_BERT
private:
//Modify the minimum needed
virtual void Neutron() override;
virtual void Proton() override;
virtual void Pion() override;
virtual void Kaon() override;
virtual void DumpBanner() override;
@@ -55,7 +55,7 @@ class G4HadronPhysicsFTFP_BERT_TRV : public G4HadronPhysicsFTFP_BERT
//Modify the minimum needed
virtual void Pion() override;
virtual void Kaon() override;
virtual void DumpBanner() override;
//virtual void DumpBanner() override;
virtual void ExtraConfiguration() override;
};
@@ -87,8 +87,6 @@
#include "G4AntiHe3InelasticProcess.hh"
#include "G4AntiAlphaInelasticProcess.hh"
#include "G4ChipsHyperonInelasticXS.hh"
class G4HadronPhysicsFTFQGSP_BERT : public G4VPhysicsConstructor
{
@@ -151,8 +149,7 @@ class G4HadronPhysicsFTFQGSP_BERT : public G4VPhysicsConstructor
G4AntiAlphaInelasticProcess* theAntiAlphaInelastic;
G4VCrossSectionDataSet* thePiXS;
G4VCrossSectionDataSet* theKaonXS;
G4VCrossSectionDataSet* theChipsHyperonInelasticXS;
G4VCrossSectionDataSet* theKaonAndHyperonXS;
G4VCrossSectionDataSet* theAntiNucleonXS;
G4VCrossSectionDataSet* theNeutronInelasticXS;
G4VCrossSectionDataSet* theNeutronCaptureXS;
@@ -72,7 +72,9 @@ class G4HadronPhysicsFTF_BIC : public G4VPhysicsConstructor
virtual void ExtraConfiguration();
G4double maxBIC_pion;
G4double maxBERT_kaon; //Bertini for kaons
G4double minBERT_pion;
G4double maxBERT_pion;
G4double maxBERT_kaon;
G4double maxBIC_proton;
G4double maxBIC_neutron;
};
@@ -55,6 +55,8 @@
#include "G4AntiBarionBuilder.hh"
#include "G4FTFPAntiBarionBuilder.hh"
#include "G4HadronicParameters.hh"
class G4ComponentGGHadronNucleusXsc;
@@ -72,10 +74,10 @@ class G4HadronPhysicsQGSP_BIC_AllHP : public G4VPhysicsConstructor
private:
void CreateModels();
const G4double maxFTFP = 25.0*CLHEP::GeV;
const G4double minFTFP = 9.5*CLHEP::GeV;
const G4double maxBIC = 9.9*CLHEP::GeV;
const G4double maxBERT = 5.0*CLHEP::GeV;
const G4double maxFTFP = G4HadronicParameters::Instance()->GetMaxEnergyTransitionQGS_FTF();
const G4double minFTFP = G4HadronicParameters::Instance()->GetMinEnergyTransitionFTF_Cascade();
const G4double maxBIC = G4HadronicParameters::Instance()->GetMaxEnergyTransitionFTF_Cascade();
const G4double maxBERT = G4HadronicParameters::Instance()->GetMaxEnergyTransitionFTF_Cascade();
const G4double minBIC_neutron = 19.9*CLHEP::MeV;
const G4double maxHP_neutron = 20.0*CLHEP::MeV;
const G4double minBIC_proton = 199.0*CLHEP::MeV;
@@ -51,7 +51,7 @@ class G4HadronPhysicsQGSP_FTFP_BERT : public G4HadronPhysicsQGSP_BERT
G4HadronPhysicsQGSP_FTFP_BERT(G4int verbose =1);
G4HadronPhysicsQGSP_FTFP_BERT(const G4String& name, G4bool quasiElastic=true);
protected:
virtual void DumpBanner() override;
//virtual void DumpBanner() override;
G4bool QuasiElastic;
};
@@ -31,6 +31,8 @@
// Author: 2007 tatsumi Koi, Gunter Folger
// created from G4HadronPhysicsFTFP_BERT
// Modified:
// 2019.08.01 A.Ribon replaced explicit numbers for the energy transition
// region with values taken from G4HadronicParameters
// 2014.08.05 K.L.Genser added provisions for modifing the Bertini to
// FTF transition energy region
//
@@ -44,6 +46,7 @@
#include <CLHEP/Units/SystemOfUnits.h>
#include "G4VPhysicsConstructor.hh"
#include "G4HadronicParameters.hh"
class G4HadronPhysicsShielding : public G4VPhysicsConstructor
@@ -52,7 +55,9 @@ class G4HadronPhysicsShielding : public G4VPhysicsConstructor
explicit G4HadronPhysicsShielding(G4int verbose=1);
explicit G4HadronPhysicsShielding(const G4String& name, G4bool );
explicit G4HadronPhysicsShielding(const G4String& name, G4int verbose=1,
G4double minFTFPEnergy=9.5*CLHEP::GeV, G4double maxBertiniEnergy=9.9*CLHEP::GeV);
G4double minFTFPEnergy=G4HadronicParameters::Instance()->GetMinEnergyTransitionFTF_Cascade(),
G4double maxBertiniEnergy=G4HadronicParameters::Instance()->GetMaxEnergyTransitionFTF_Cascade());
virtual ~G4HadronPhysicsShielding();
public:
@@ -41,6 +41,7 @@
#include <CLHEP/Units/SystemOfUnits.h>
#include "G4VPhysicsConstructor.hh"
#include "G4HadronicParameters.hh"
class G4HadronPhysicsShieldingLEND : public G4VPhysicsConstructor
@@ -49,7 +50,8 @@ class G4HadronPhysicsShieldingLEND : public G4VPhysicsConstructor
explicit G4HadronPhysicsShieldingLEND(G4int verbose=1);
explicit G4HadronPhysicsShieldingLEND(const G4String& name, G4bool );
explicit G4HadronPhysicsShieldingLEND(const G4String& name, G4int verbose=1,
G4double minFTFPEnergy=9.5*CLHEP::GeV, G4double maxBertiniEnergy=9.9*CLHEP::GeV);
G4double minFTFPEnergy=G4HadronicParameters::Instance()->GetMinEnergyTransitionFTF_Cascade(),
G4double maxBertiniEnergy=G4HadronicParameters::Instance()->GetMaxEnergyTransitionFTF_Cascade());
virtual ~G4HadronPhysicsShieldingLEND();
public:
@@ -62,7 +62,6 @@
#include "G4FTFBuilder.hh"
#include "G4ComponentGGHadronNucleusXsc.hh"
#include "G4ChipsHyperonInelasticXS.hh"
#include "G4CrossSectionDataSetRegistry.hh"
#include "G4CascadeInterface.hh"
@@ -110,22 +109,25 @@ void G4HadronInelasticQBBC::ConstructProcess()
if(!thePreCompound) { thePreCompound = new G4PreCompoundModel(); }
// configure models
const G4double eminFtf = G4HadronicParameters::Instance()->GetMinEnergyTransitionFTF_Cascade();
const G4double emaxBert = G4HadronicParameters::Instance()->GetMaxEnergyTransitionFTF_Cascade();
//G4HadronicInteraction* theQGSP =
// BuildModel(new G4QGSBuilder("QGSP",thePreCompound,true,false),12.5*GeV,emax);
G4HadronicInteraction* theFTFP =
BuildModel(new G4FTFBuilder("FTFP",thePreCompound),3.0*GeV,emax);
BuildModel(new G4FTFBuilder("FTFP",thePreCompound),eminFtf,emax);
G4HadronicInteraction* theFTFP1 =
BuildModel(new G4FTFBuilder("FTFP",thePreCompound),3.0*GeV,emax);
BuildModel(new G4FTFBuilder("FTFP",thePreCompound),eminFtf,emax);
G4HadronicInteraction* theFTFP2 =
BuildModel(new G4FTFBuilder("FTFP",thePreCompound),0.0,emax);
G4CascadeInterface* casc = new G4CascadeInterface();
casc->usePreCompoundDeexcitation();
G4HadronicInteraction* theBERT = NewModel(casc,1.0*GeV,5.0*GeV);
G4HadronicInteraction* theBERT = NewModel(casc,1.0*GeV,emaxBert);
casc = new G4CascadeInterface();
casc->usePreCompoundDeexcitation();
G4HadronicInteraction* theBERT1 = NewModel(casc,0.0*GeV,5.0*GeV);
G4HadronicInteraction* theBERT1 = NewModel(casc,0.0*GeV,emaxBert);
//G4cout << "G4HadronInelasticQBBC::ConstructProcess new Binary"<< G4endl;
G4BinaryCascade* bic = new G4BinaryCascade(thePreCompound);
@@ -141,6 +143,7 @@ void G4HadronInelasticQBBC::ConstructProcess()
if(!kaonxs) {
kaonxs = new G4CrossSectionInelastic(new G4ComponentGGHadronNucleusXsc());
}
G4HadronicProcess* hp;
// loop over particles
auto myParticleIterator=GetParticleIterator();
@@ -157,8 +160,8 @@ void G4HadronInelasticQBBC::ConstructProcess()
//
if(pname == "proton") {
hp = FindInelasticProcess(particle);
//hp->AddDataSet(new G4ParticleInelasticXS(particle));
hp->AddDataSet(new G4BGGNucleonInelasticXS(particle));
hp->AddDataSet(new G4ParticleInelasticXS(particle));
//hp->AddDataSet(new G4BGGNucleonInelasticXS(particle));
hp->RegisterMe(theFTFP);
hp->RegisterMe(theBERT);
@@ -209,20 +212,26 @@ void G4HadronInelasticQBBC::ConstructProcess()
hp = FindInelasticProcess(particle);
hp->RegisterMe(theFTFP1);
hp->RegisterMe(theBERT1);
hp->AddDataSet(G4CrossSectionDataSetRegistry::Instance()->GetCrossSectionDataSet(G4ChipsHyperonInelasticXS::Default_Name()));
hp->AddDataSet(kaonxs);
} else if(pname == "anti_lambda" ||
pname == "anti_omega-" ||
pname == "anti_sigma-" ||
pname == "anti_sigma+" ||
pname == "anti_sigma0" ||
pname == "anti_xi-" ||
pname == "anti_xi0"
) {
hp = FindInelasticProcess(particle);
hp->RegisterMe(theFTFP2);
hp->AddDataSet(kaonxs);
} else if(pname == "anti_alpha" ||
pname == "anti_deuteron"||
pname == "anti_He3" ||
pname == "anti_proton" ||
pname == "anti_triton" ||
pname == "anti_lambda" ||
pname == "anti_neutron" ||
pname == "anti_omega-" ||
pname == "anti_sigma-" ||
pname == "anti_sigma+" ||
pname == "anti_xi-" ||
pname == "anti_xi0"
pname == "anti_triton" ||
pname == "anti_neutron"
) {
hp = FindInelasticProcess(particle);
hp->RegisterMe(theFTFP2);
@@ -69,18 +69,16 @@
#include "G4BaryonConstructor.hh"
#include "G4ShortLivedConstructor.hh"
#include "G4ComponentGGHadronNucleusXsc.hh"
#include "G4CrossSectionInelastic.hh"
#include "G4HadronCaptureProcess.hh"
#include "G4NeutronRadCapture.hh"
#include "G4NeutronInelasticXS.hh"
#include "G4NeutronCaptureXS.hh"
#include "G4CrossSectionDataSetRegistry.hh"
#include "G4PhysListUtil.hh"
#include "G4Threading.hh"
#include "G4HadronicParameters.hh"
// factory
#include "G4PhysicsConstructorFactory.hh"
//
@@ -94,14 +92,14 @@ G4HadronPhysicsFTFP_BERT::G4HadronPhysicsFTFP_BERT(const G4String& name, G4bool
: G4VPhysicsConstructor(name)
, QuasiElastic(quasiElastic)
{
minFTFP_pion = 3.0 * GeV;
maxBERT_pion = 12.0 * GeV;
minFTFP_kaon = 3.0 * GeV;
maxBERT_kaon = 12.0 * GeV;
minFTFP_proton = 3.0 * GeV;
maxBERT_proton = 12.0 * GeV;
minFTFP_neutron = 3.0 * GeV;
maxBERT_neutron = 12.0 * GeV;
minFTFP_pion = G4HadronicParameters::Instance()->GetMinEnergyTransitionFTF_Cascade();
maxBERT_pion = G4HadronicParameters::Instance()->GetMaxEnergyTransitionFTF_Cascade();
minFTFP_kaon = G4HadronicParameters::Instance()->GetMinEnergyTransitionFTF_Cascade();
maxBERT_kaon = G4HadronicParameters::Instance()->GetMaxEnergyTransitionFTF_Cascade();
minFTFP_proton = G4HadronicParameters::Instance()->GetMinEnergyTransitionFTF_Cascade();
maxBERT_proton = G4HadronicParameters::Instance()->GetMaxEnergyTransitionFTF_Cascade();
minFTFP_neutron = G4HadronicParameters::Instance()->GetMinEnergyTransitionFTF_Cascade();
maxBERT_neutron = G4HadronicParameters::Instance()->GetMaxEnergyTransitionFTF_Cascade();
}
G4HadronPhysicsFTFP_BERT::~G4HadronPhysicsFTFP_BERT()
@@ -155,7 +153,7 @@ void G4HadronPhysicsFTFP_BERT::Neutron()
auto bertn = new G4BertiniNeutronBuilder;
AddBuilder(bertn);
neu->RegisterMe(bertn);
bertn->SetMinEnergy(0.*GeV);
bertn->SetMinEnergy(0.0);
bertn->SetMaxEnergy(maxBERT_neutron);
neu->Build();
}
@@ -233,14 +231,6 @@ void G4HadronPhysicsFTFP_BERT::ConstructProcess()
#include "G4ProcessManager.hh"
void G4HadronPhysicsFTFP_BERT::ExtraConfiguration()
{
//Modify XS for kaons
auto xsk = new G4ComponentGGHadronNucleusXsc();
G4VCrossSectionDataSet * kaonxs = new G4CrossSectionInelastic(xsk);
G4PhysListUtil::FindInelasticProcess(G4KaonMinus::KaonMinus())->AddDataSet(kaonxs);
G4PhysListUtil::FindInelasticProcess(G4KaonPlus::KaonPlus())->AddDataSet(kaonxs);
G4PhysListUtil::FindInelasticProcess(G4KaonZeroShort::KaonZeroShort())->AddDataSet(kaonxs);
G4PhysListUtil::FindInelasticProcess(G4KaonZeroLong::KaonZeroLong())->AddDataSet(kaonxs);
//Modify Neutrons
const G4ParticleDefinition* neutron = G4Neutron::Neutron();
G4HadronicProcess* inel = G4PhysListUtil::FindInelasticProcess(neutron);
@@ -32,13 +32,20 @@
// This is a modified version of the FTFP_BERT hadron physics for ATLAS.
// The hadron physics of FTFP_BERT_ATL has the transition between Bertini
// (BERT) intra-nuclear cascade model and Fritiof (FTF) string model in the
// energy region [9, 12] GeV (instead of [4, 5] GeV as in FTFP_BERT).
// energy region [9, 12] GeV.
//---------------------------------------------------------------------------
//
#include <iomanip>
#include "G4HadronPhysicsFTFP_BERT_ATL.hh"
#include "G4NeutronBuilder.hh"
#include "G4BertiniNeutronBuilder.hh"
#include "G4FTFPNeutronBuilder.hh"
#include "G4ProtonBuilder.hh"
#include "G4BertiniProtonBuilder.hh"
#include "G4FTFPNeutronBuilder.hh"
#include "G4FTFPProtonBuilder.hh"
#include "G4PiKBuilder.hh"
#include "G4FTFPPiKBuilder.hh"
#include "G4BertiniPiKBuilder.hh"
@@ -71,10 +78,41 @@ G4HadronPhysicsFTFP_BERT_ATL::G4HadronPhysicsFTFP_BERT_ATL(const G4String& name,
void G4HadronPhysicsFTFP_BERT_ATL::DumpBanner()
{
G4cout << " FTFP_BERT_ATL : new threshold between BERT and FTFP"
G4cout << " FTFP_BERT_ATL : threshold between BERT and FTFP"
<< " is over the interval " << minFTFP_pion/GeV << " to "<< maxBERT_pion/GeV << " GeV." << G4endl;
}
void G4HadronPhysicsFTFP_BERT_ATL::Neutron()
{
auto neu = new G4NeutronBuilder;
AddBuilder(neu);
auto ftfpn = new G4FTFPNeutronBuilder(QuasiElastic);
AddBuilder(ftfpn);
neu->RegisterMe(ftfpn);
ftfpn->SetMinEnergy(minFTFP_neutron);
auto bertn = new G4BertiniNeutronBuilder;
AddBuilder(bertn);
neu->RegisterMe(bertn);
bertn->SetMinEnergy(0.0);
bertn->SetMaxEnergy(maxBERT_neutron);
neu->Build();
}
void G4HadronPhysicsFTFP_BERT_ATL::Proton()
{
auto pro = new G4ProtonBuilder;
AddBuilder(pro);
auto ftfpp = new G4FTFPProtonBuilder(QuasiElastic);
AddBuilder(ftfpp);
pro->RegisterMe(ftfpp);
ftfpp->SetMinEnergy(minFTFP_proton);
auto bertp = new G4BertiniProtonBuilder;
AddBuilder(bertp);
pro->RegisterMe(bertp);
bertp->SetMaxEnergy(maxBERT_proton);
pro->Build();
}
void G4HadronPhysicsFTFP_BERT_ATL::Pion()
{
auto pik = new G4PiKBuilder;
@@ -38,8 +38,6 @@
#include "G4SystemOfUnits.hh"
#include "G4ProcessManager.hh"
#include "G4CrossSectionInelastic.hh"
#include "G4ComponentGGHadronNucleusXsc.hh"
#include "G4HadronCaptureProcess.hh"
#include "G4NeutronRadCapture.hh"
#include "G4NeutronCaptureXS.hh"
@@ -103,14 +101,6 @@ void G4HadronPhysicsFTFP_BERT_HP::Neutron()
void G4HadronPhysicsFTFP_BERT_HP::ExtraConfiguration()
{
//Modify XS for kaons
auto xsk = new G4ComponentGGHadronNucleusXsc();
G4VCrossSectionDataSet * kaonxs = new G4CrossSectionInelastic(xsk);
G4PhysListUtil::FindInelasticProcess(G4KaonMinus::KaonMinus())->AddDataSet(kaonxs);
G4PhysListUtil::FindInelasticProcess(G4KaonPlus::KaonPlus())->AddDataSet(kaonxs);
G4PhysListUtil::FindInelasticProcess(G4KaonZeroShort::KaonZeroShort())->AddDataSet(kaonxs);
G4PhysListUtil::FindInelasticProcess(G4KaonZeroLong::KaonZeroLong())->AddDataSet(kaonxs);
// --- Neutrons ---
const G4ParticleDefinition* neutron = G4Neutron::Neutron();
G4HadronicProcess* capture = G4PhysListUtil::FindCaptureProcess(neutron);
@@ -41,7 +41,6 @@
#include "G4PiKBuilder.hh"
#include "G4FTFPPiKBuilder.hh"
#include "G4BertiniPiKBuilder.hh"
#include "G4ComponentGGHadronNucleusXsc.hh"
#include "G4CrossSectionInelastic.hh"
#include "G4HadronCaptureProcess.hh"
#include "G4NeutronRadCapture.hh"
@@ -52,11 +51,11 @@
#include "G4ios.hh"
#include "G4SystemOfUnits.hh"
#include "G4CrossSectionDataSetRegistry.hh"
#include "G4PhysListUtil.hh"
#include "G4Threading.hh"
#include "G4HadronicParameters.hh"
// factory
#include "G4PhysicsConstructorFactory.hh"
//
@@ -69,18 +68,18 @@ G4HadronPhysicsFTFP_BERT_TRV::G4HadronPhysicsFTFP_BERT_TRV(G4int) :
G4HadronPhysicsFTFP_BERT_TRV::G4HadronPhysicsFTFP_BERT_TRV(const G4String& name, G4bool quasiElastic)
: G4HadronPhysicsFTFP_BERT(name,quasiElastic)
{
//Change configuration parameters of FTFP_BERT
minFTFP_pion = 2.0 * GeV;
maxBERT_pion = 4.0 * GeV;
minFTFP_kaon = 2.0 * GeV;
maxBERT_kaon = 4.0 * GeV;
minFTFP_proton = 2.0 * GeV;
maxBERT_proton = 4.0 * GeV;
minFTFP_neutron = 2.0 * GeV;
maxBERT_neutron = 4.0 * GeV;
minFTFP_pion = G4HadronicParameters::Instance()->GetMinEnergyTransitionFTF_Cascade();
maxBERT_pion = G4HadronicParameters::Instance()->GetMaxEnergyTransitionFTF_Cascade();
minFTFP_kaon = G4HadronicParameters::Instance()->GetMinEnergyTransitionFTF_Cascade();
maxBERT_kaon = G4HadronicParameters::Instance()->GetMaxEnergyTransitionFTF_Cascade();
minFTFP_proton = G4HadronicParameters::Instance()->GetMinEnergyTransitionFTF_Cascade();
maxBERT_proton = G4HadronicParameters::Instance()->GetMaxEnergyTransitionFTF_Cascade();
minFTFP_neutron = G4HadronicParameters::Instance()->GetMinEnergyTransitionFTF_Cascade();
maxBERT_neutron = G4HadronicParameters::Instance()->GetMaxEnergyTransitionFTF_Cascade();
QuasiElastic = false;
}
/*
void G4HadronPhysicsFTFP_BERT_TRV::DumpBanner()
{
G4cout << " Revised FTFTP_BERT_TRV - new threshold between BERT and FTFP "
@@ -89,6 +88,7 @@ void G4HadronPhysicsFTFP_BERT_TRV::DumpBanner()
G4cout << " -- quasiElastic was asked to be " << QuasiElastic
<< " and it is reset to " << false << G4endl;
}
*/
void G4HadronPhysicsFTFP_BERT_TRV::Pion()
{
@@ -112,20 +112,6 @@ void G4HadronPhysicsFTFP_BERT_TRV::Kaon() {
void G4HadronPhysicsFTFP_BERT_TRV::ExtraConfiguration()
{
//Modify XS for kaons and hyperons
auto ggComponent = new G4ComponentGGHadronNucleusXsc();
G4VCrossSectionDataSet* ggxs = new G4CrossSectionInelastic(ggComponent);
G4PhysListUtil::FindInelasticProcess(G4KaonMinus::KaonMinus())->AddDataSet(ggxs);
G4PhysListUtil::FindInelasticProcess(G4KaonPlus::KaonPlus())->AddDataSet(ggxs);
G4PhysListUtil::FindInelasticProcess(G4KaonZeroShort::KaonZeroShort())->AddDataSet(ggxs);
G4PhysListUtil::FindInelasticProcess(G4KaonZeroLong::KaonZeroLong())->AddDataSet(ggxs);
G4PhysListUtil::FindInelasticProcess(G4Lambda::Lambda())->AddDataSet(ggxs);
G4PhysListUtil::FindInelasticProcess(G4SigmaMinus::SigmaMinus())->AddDataSet(ggxs);
G4PhysListUtil::FindInelasticProcess(G4SigmaPlus::SigmaPlus())->AddDataSet(ggxs);
G4PhysListUtil::FindInelasticProcess(G4XiMinus::XiMinus())->AddDataSet(ggxs);
G4PhysListUtil::FindInelasticProcess(G4XiZero::XiZero())->AddDataSet(ggxs);
G4PhysListUtil::FindInelasticProcess(G4OmegaMinus::OmegaMinus())->AddDataSet(ggxs);
//Modify Neutrons
const G4ParticleDefinition* neutron = G4Neutron::Neutron();
G4HadronicProcess* inel = G4PhysListUtil::FindInelasticProcess(neutron);
@@ -117,8 +117,7 @@ G4HadronPhysicsFTFQGSP_BERT::G4HadronPhysicsFTFQGSP_BERT(G4int)
, theAntiHe3Inelastic(0)
, theAntiAlphaInelastic(0)
, thePiXS(0)
, theKaonXS(0)
, theChipsHyperonInelasticXS(0)
, theKaonAndHyperonXS(0)
, theAntiNucleonXS(0)
, theNeutronInelasticXS(0)
, theNeutronCaptureXS(0)
@@ -167,8 +166,7 @@ G4HadronPhysicsFTFQGSP_BERT::G4HadronPhysicsFTFQGSP_BERT(const G4String& name, G
, theAntiHe3Inelastic(0)
, theAntiAlphaInelastic(0)
, thePiXS(0)
, theKaonXS(0)
, theChipsHyperonInelasticXS(0)
, theKaonAndHyperonXS(0)
, theAntiNucleonXS(0)
, theNeutronInelasticXS(0)
, theNeutronCaptureXS(0)
@@ -177,9 +175,8 @@ G4HadronPhysicsFTFQGSP_BERT::G4HadronPhysicsFTFQGSP_BERT(const G4String& name, G
void G4HadronPhysicsFTFQGSP_BERT::CreateModels()
{
G4double minFTFP = 3.0 * GeV;
G4double maxBERT = 12.0 * GeV;
G4double minFTFP = G4HadronicParameters::Instance()->GetMinEnergyTransitionFTF_Cascade();
G4double maxBERT = G4HadronicParameters::Instance()->GetMaxEnergyTransitionFTF_Cascade();
G4cout << " FTFQGSP_BERT : similar to FTFP_BERT but with" << G4endl
<< " QGS string fragmentation (instead of Lund string fragmentation)." << G4endl;
@@ -199,24 +196,24 @@ void G4HadronPhysicsFTFQGSP_BERT::CreateModels()
// BERT for neutrons, protons, pions, and kaons
theBertini1 = new G4CascadeInterface;
theBertini1->SetMinEnergy( 0.0*GeV );
theBertini1->SetMinEnergy( 0.0 );
theBertini1->SetMaxEnergy( maxBERT );
// FTF for hyperons
theModel2 = new G4TheoFSGenerator( "FTFP" );
theModel2->SetMinEnergy( 2.0*GeV );
theModel2->SetMinEnergy( G4HadronicParameters::Instance()->GetMinEnergyTransitionFTF_Cascade() );
theModel2->SetMaxEnergy( G4HadronicParameters::Instance()->GetMaxEnergy() );
theModel2->SetTransport( theCascade );
theModel2->SetHighEnergyGenerator( theStringModel );
// BERT for hyperons
theBertini2 = new G4CascadeInterface;
theBertini2->SetMinEnergy( 0.0*GeV );
theBertini2->SetMaxEnergy( 6.0*GeV );
theBertini2->SetMinEnergy( 0.0 );
theBertini2->SetMaxEnergy( G4HadronicParameters::Instance()->GetMaxEnergyTransitionFTF_Cascade() );
// FTF for Antibaryons
theModel3 = new G4TheoFSGenerator( "FTFP" );
theModel3->SetMinEnergy( 0.0*GeV );
theModel3->SetMinEnergy( 0.0 );
theModel3->SetMaxEnergy( G4HadronicParameters::Instance()->GetMaxEnergy() );
theModel3->SetTransport( theCascade );
theModel3->SetHighEnergyGenerator( theStringModel );
@@ -229,10 +226,9 @@ void G4HadronPhysicsFTFQGSP_BERT::CreateModels()
// Cross sections
thePiXS = new G4BGGPionInelasticXS( G4PionMinus::Definition() );
theAntiNucleonXS = new G4CrossSectionInelastic( new G4ComponentAntiNuclNuclearXS );
theKaonXS = new G4CrossSectionInelastic( new G4ComponentGGHadronNucleusXsc );
theChipsHyperonInelasticXS = G4CrossSectionDataSetRegistry::Instance()->GetCrossSectionDataSet( G4ChipsHyperonInelasticXS::Default_Name() );
theNeutronInelasticXS = G4CrossSectionDataSetRegistry::Instance()->GetCrossSectionDataSet( G4NeutronInelasticXS::Default_Name() );
theNeutronCaptureXS = G4CrossSectionDataSetRegistry::Instance()->GetCrossSectionDataSet( G4NeutronCaptureXS::Default_Name() );
theKaonAndHyperonXS = new G4CrossSectionInelastic( new G4ComponentGGHadronNucleusXsc );
theNeutronInelasticXS = G4CrossSectionDataSetRegistry::Instance()->GetCrossSectionDataSet( G4NeutronInelasticXS::Default_Name() );
theNeutronCaptureXS = G4CrossSectionDataSetRegistry::Instance()->GetCrossSectionDataSet( G4NeutronCaptureXS::Default_Name() );
}
@@ -301,106 +297,106 @@ void G4HadronPhysicsFTFQGSP_BERT::ConstructProcess()
theKaonMinusInelastic = new G4KaonMinusInelasticProcess();
theKaonMinusInelastic->RegisterMe( theModel1 );
theKaonMinusInelastic->RegisterMe( theBertini1 );
theKaonMinusInelastic->AddDataSet( theKaonXS );
theKaonMinusInelastic->AddDataSet( theKaonAndHyperonXS );
aProcMan = G4KaonMinus::KaonMinus()->GetProcessManager();
aProcMan->AddDiscreteProcess( theKaonMinusInelastic );
theKaonPlusInelastic = new G4KaonPlusInelasticProcess();
theKaonPlusInelastic->RegisterMe( theModel1 );
theKaonPlusInelastic->RegisterMe( theBertini1 );
theKaonPlusInelastic->AddDataSet( theKaonXS );
theKaonPlusInelastic->AddDataSet( theKaonAndHyperonXS );
aProcMan = G4KaonPlus::KaonPlus()->GetProcessManager();
aProcMan->AddDiscreteProcess( theKaonPlusInelastic );
theKaonZeroLInelastic = new G4KaonZeroLInelasticProcess();
theKaonZeroLInelastic->RegisterMe( theModel1 );
theKaonZeroLInelastic->RegisterMe( theBertini1 );
theKaonZeroLInelastic->AddDataSet( theKaonXS );
theKaonZeroLInelastic->AddDataSet( theKaonAndHyperonXS );
aProcMan = G4KaonZeroLong::KaonZeroLong()->GetProcessManager();
aProcMan->AddDiscreteProcess( theKaonZeroLInelastic );
theKaonZeroSInelastic = new G4KaonZeroSInelasticProcess();
theKaonZeroSInelastic->RegisterMe( theModel1 );
theKaonZeroSInelastic->RegisterMe( theBertini1 );
theKaonZeroSInelastic->AddDataSet( theKaonXS );
theKaonZeroSInelastic->AddDataSet( theKaonAndHyperonXS );
aProcMan = G4KaonZeroShort::KaonZeroShort()->GetProcessManager();
aProcMan->AddDiscreteProcess( theKaonZeroSInelastic );
theLambdaInelastic = new G4LambdaInelasticProcess();
theLambdaInelastic->RegisterMe( theModel2 );
theLambdaInelastic->RegisterMe( theBertini2 );
theLambdaInelastic->AddDataSet( theChipsHyperonInelasticXS );
theLambdaInelastic->AddDataSet( theKaonAndHyperonXS );
aProcMan = G4Lambda::Lambda()->GetProcessManager();
aProcMan->AddDiscreteProcess( theLambdaInelastic );
theAntiLambdaInelastic = new G4AntiLambdaInelasticProcess();
theAntiLambdaInelastic->RegisterMe( theModel3 );
theAntiLambdaInelastic->AddDataSet( theChipsHyperonInelasticXS );
theAntiLambdaInelastic->AddDataSet( theKaonAndHyperonXS );
aProcMan = G4AntiLambda::AntiLambda()->GetProcessManager();
aProcMan->AddDiscreteProcess( theAntiLambdaInelastic );
theSigmaMinusInelastic = new G4SigmaMinusInelasticProcess();
theSigmaMinusInelastic->RegisterMe( theModel2 );
theSigmaMinusInelastic->RegisterMe( theBertini2 );
theSigmaMinusInelastic->AddDataSet( theChipsHyperonInelasticXS );
theSigmaMinusInelastic->AddDataSet( theKaonAndHyperonXS );
aProcMan = G4SigmaMinus::SigmaMinus()->GetProcessManager();
aProcMan->AddDiscreteProcess( theSigmaMinusInelastic );
theAntiSigmaMinusInelastic = new G4AntiSigmaMinusInelasticProcess();
theAntiSigmaMinusInelastic->RegisterMe( theModel3 );
theAntiSigmaMinusInelastic->AddDataSet( theChipsHyperonInelasticXS );
theAntiSigmaMinusInelastic->AddDataSet( theKaonAndHyperonXS );
aProcMan = G4AntiSigmaMinus::AntiSigmaMinus()->GetProcessManager();
aProcMan->AddDiscreteProcess( theAntiSigmaMinusInelastic );
theSigmaPlusInelastic = new G4SigmaPlusInelasticProcess();
theSigmaPlusInelastic->RegisterMe( theModel2 );
theSigmaPlusInelastic->RegisterMe( theBertini2 );
theSigmaPlusInelastic->AddDataSet( theChipsHyperonInelasticXS );
theSigmaPlusInelastic->AddDataSet( theKaonAndHyperonXS );
aProcMan = G4SigmaPlus::SigmaPlus()->GetProcessManager();
aProcMan->AddDiscreteProcess( theSigmaPlusInelastic );
theAntiSigmaPlusInelastic = new G4AntiSigmaPlusInelasticProcess();
theAntiSigmaPlusInelastic->RegisterMe( theModel3 );
theAntiSigmaPlusInelastic->AddDataSet( theChipsHyperonInelasticXS );
theAntiSigmaPlusInelastic->AddDataSet( theKaonAndHyperonXS );
aProcMan = G4AntiSigmaPlus::AntiSigmaPlus()->GetProcessManager();
aProcMan->AddDiscreteProcess( theAntiSigmaPlusInelastic );
theXiMinusInelastic = new G4XiMinusInelasticProcess();
theXiMinusInelastic->RegisterMe( theModel2 );
theXiMinusInelastic->RegisterMe( theBertini2 );
theXiMinusInelastic->AddDataSet( theChipsHyperonInelasticXS );
theXiMinusInelastic->AddDataSet( theKaonAndHyperonXS );
aProcMan = G4XiMinus::XiMinus()->GetProcessManager();
aProcMan->AddDiscreteProcess( theXiMinusInelastic );
theAntiXiMinusInelastic = new G4AntiXiMinusInelasticProcess();
theAntiXiMinusInelastic->RegisterMe( theModel3 );
theAntiXiMinusInelastic->AddDataSet( theChipsHyperonInelasticXS );
theAntiXiMinusInelastic->AddDataSet( theKaonAndHyperonXS );
aProcMan = G4AntiXiMinus::AntiXiMinus()->GetProcessManager();
aProcMan->AddDiscreteProcess( theAntiXiMinusInelastic );
theXiZeroInelastic = new G4XiZeroInelasticProcess();
theXiZeroInelastic->RegisterMe( theModel2 );
theXiZeroInelastic->RegisterMe( theBertini2 );
theXiZeroInelastic->AddDataSet( theChipsHyperonInelasticXS );
theXiZeroInelastic->AddDataSet( theKaonAndHyperonXS );
aProcMan = G4XiZero::XiZero()->GetProcessManager();
aProcMan->AddDiscreteProcess( theXiZeroInelastic );
theAntiXiZeroInelastic = new G4AntiXiZeroInelasticProcess();
theAntiXiZeroInelastic->RegisterMe( theModel3 );
theAntiXiZeroInelastic->AddDataSet( theChipsHyperonInelasticXS );
theAntiXiZeroInelastic->AddDataSet( theKaonAndHyperonXS );
aProcMan = G4AntiXiZero::AntiXiZero()->GetProcessManager();
aProcMan->AddDiscreteProcess( theAntiXiZeroInelastic );
theOmegaMinusInelastic = new G4OmegaMinusInelasticProcess();
theOmegaMinusInelastic->RegisterMe( theModel2 );
theOmegaMinusInelastic->RegisterMe( theBertini2 );
theOmegaMinusInelastic->AddDataSet( theChipsHyperonInelasticXS );
theOmegaMinusInelastic->AddDataSet( theKaonAndHyperonXS );
aProcMan = G4OmegaMinus::OmegaMinus()->GetProcessManager();
aProcMan->AddDiscreteProcess( theOmegaMinusInelastic );
theAntiOmegaMinusInelastic = new G4AntiOmegaMinusInelasticProcess();
theAntiOmegaMinusInelastic->RegisterMe( theModel3 );
theAntiOmegaMinusInelastic->AddDataSet( theChipsHyperonInelasticXS );
theAntiOmegaMinusInelastic->AddDataSet( theKaonAndHyperonXS );
aProcMan = G4AntiOmegaMinus::AntiOmegaMinus()->GetProcessManager();
aProcMan->AddDiscreteProcess( theAntiOmegaMinusInelastic );
@@ -47,6 +47,7 @@
#include "G4PionBuilder.hh"
#include "G4KaonBuilder.hh"
#include "G4BinaryPionBuilder.hh"
#include "G4BertiniPionBuilder.hh"
#include "G4BertiniKaonBuilder.hh"
#include "G4FTFBinaryPionBuilder.hh"
#include "G4FTFBinaryKaonBuilder.hh"
@@ -61,14 +62,13 @@
#include "G4FTFPAntiBarionBuilder.hh"
#include "G4ProcessManager.hh"
#include "G4ProcessVector.hh"
#include "G4ComponentGGHadronNucleusXsc.hh"
#include "G4CrossSectionInelastic.hh"
#include "G4HadronCaptureProcess.hh"
#include "G4NeutronRadCapture.hh"
#include "G4NeutronInelasticXS.hh"
#include "G4NeutronCaptureXS.hh"
#include "G4CrossSectionDataSetRegistry.hh"
#include "G4PhysListUtil.hh"
#include "G4HadronicParameters.hh"
#include "G4PhysicsConstructorFactory.hh"
G4_DECLARE_PHYSCONSTR_FACTORY(G4HadronPhysicsFTF_BIC);
@@ -80,10 +80,10 @@ G4HadronPhysicsFTF_BIC::G4HadronPhysicsFTF_BIC(const G4String& name, G4bool quas
: G4VPhysicsConstructor(name)
, QuasiElastic(quasiElastic)
{
maxBIC_neutron = 5.*GeV;
maxBIC_proton = 5.*GeV;
maxBERT_kaon = 5.*GeV;
maxBIC_pion = 5.*GeV;
maxBIC_neutron = maxBIC_proton = maxBERT_kaon = maxBERT_pion =
G4HadronicParameters::Instance()->GetMaxEnergyTransitionFTF_Cascade();
maxBIC_pion = 1.5*GeV;
minBERT_pion = 1.0*GeV;
}
G4HadronPhysicsFTF_BIC::~G4HadronPhysicsFTF_BIC()
@@ -113,7 +113,7 @@ void G4HadronPhysicsFTF_BIC::Neutron()
auto bicn = new G4BinaryNeutronBuilder;
AddBuilder(bicn);
neu->RegisterMe(bicn);
bicn->SetMinEnergy(0.*GeV);
bicn->SetMinEnergy(0.0);
bicn->SetMaxEnergy(maxBIC_neutron);
neu->Build();
}
@@ -139,6 +139,11 @@ void G4HadronPhysicsFTF_BIC::Pion()
auto ftfpi = new G4FTFBinaryPionBuilder(QuasiElastic);
AddBuilder(ftfpi);
pi->RegisterMe(ftfpi);
auto bertpi = new G4BertiniPionBuilder;
AddBuilder(bertpi);
bertpi->SetMinEnergy(minBERT_pion);
bertpi->SetMaxEnergy(maxBERT_pion);
pi->RegisterMe(bertpi);
auto bicpi = new G4BinaryPionBuilder;
AddBuilder(bicpi);
pi->RegisterMe(bicpi);
@@ -199,14 +204,6 @@ void G4HadronPhysicsFTF_BIC::ConstructProcess()
#include "G4PhysListUtil.hh"
void G4HadronPhysicsFTF_BIC::ExtraConfiguration()
{
// --- Kaons ---
auto xsk = new G4ComponentGGHadronNucleusXsc();
G4VCrossSectionDataSet * kaonxs = new G4CrossSectionInelastic(xsk);
G4PhysListUtil::FindInelasticProcess(G4KaonMinus::KaonMinus())->AddDataSet(kaonxs);
G4PhysListUtil::FindInelasticProcess(G4KaonPlus::KaonPlus())->AddDataSet(kaonxs);
G4PhysListUtil::FindInelasticProcess(G4KaonZeroShort::KaonZeroShort())->AddDataSet(kaonxs);
G4PhysListUtil::FindInelasticProcess(G4KaonZeroLong::KaonZeroLong())->AddDataSet(kaonxs);
// --- Neutrons ---
const G4ParticleDefinition* neutron = G4Neutron::Neutron();
G4HadronicProcess* inel = G4PhysListUtil::FindInelasticProcess(neutron);
@@ -81,8 +81,6 @@
#include "G4AntiBarionBuilder.hh"
#include "G4FTFPAntiBarionBuilder.hh"
#include "G4ComponentGGHadronNucleusXsc.hh"
#include "G4CrossSectionInelastic.hh"
#include "G4HadronCaptureProcess.hh"
#include "G4NeutronRadCapture.hh"
#include "G4NeutronCaptureXS.hh"
@@ -279,14 +277,6 @@ void G4HadronPhysicsINCLXX::ConstructProcess()
void G4HadronPhysicsINCLXX::ExtraConfiguration()
{
// --- Kaons ---
auto xsk = new G4ComponentGGHadronNucleusXsc();
G4VCrossSectionDataSet * kaonxs = new G4CrossSectionInelastic(xsk);
G4PhysListUtil::FindInelasticProcess(G4KaonMinus::KaonMinus())->AddDataSet(kaonxs);
G4PhysListUtil::FindInelasticProcess(G4KaonPlus::KaonPlus())->AddDataSet(kaonxs);
G4PhysListUtil::FindInelasticProcess(G4KaonZeroShort::KaonZeroShort())->AddDataSet(kaonxs);
G4PhysListUtil::FindInelasticProcess(G4KaonZeroLong::KaonZeroLong())->AddDataSet(kaonxs);
// --- Neutrons ---
const G4ParticleDefinition* neutron = G4Neutron::Neutron();
G4HadronicProcess* capture = G4PhysListUtil::FindCaptureProcess(neutron);
@@ -74,16 +74,16 @@
#include "G4ShortLivedConstructor.hh"
#include "G4IonConstructor.hh"
#include "G4ComponentGGHadronNucleusXsc.hh"
#include "G4HadronCaptureProcess.hh"
#include "G4NeutronRadCapture.hh"
#include "G4NeutronInelasticXS.hh"
#include "G4NeutronCaptureXS.hh"
#include "G4CrossSectionInelastic.hh"
#include "G4CrossSectionDataSetRegistry.hh"
#include "G4PhysListUtil.hh"
#include "G4ProcessManager.hh"
#include "G4HadronicParameters.hh"
#include "G4PhysicsConstructorFactory.hh"
//
G4_DECLARE_PHYSCONSTR_FACTORY(G4HadronPhysicsQGSP_BERT);
@@ -96,11 +96,15 @@ G4HadronPhysicsQGSP_BERT::G4HadronPhysicsQGSP_BERT(const G4String& name, G4bool
{
QuasiElasticFTF= false; // Use built-in quasi-elastic (not add-on)
QuasiElasticQGS= true; // For QGS, it must use it.
minQGSP_proton = minQGSP_neutron = minQGSP_pik = 12.*GeV;
maxFTFP_proton = maxFTFP_neutron = maxFTFP_pik = 25.*GeV;
minFTFP_proton = minFTFP_neutron = minFTFP_pik = 9.5*GeV;
maxBERT_proton = maxBERT_neutron = maxBERT_pik = 9.9*GeV;
minBERT_proton = minBERT_neutron = minBERT_pik = 0.*GeV;
minQGSP_proton = minQGSP_neutron = minQGSP_pik =
G4HadronicParameters::Instance()->GetMinEnergyTransitionQGS_FTF();
maxFTFP_proton = maxFTFP_neutron = maxFTFP_pik =
G4HadronicParameters::Instance()->GetMaxEnergyTransitionQGS_FTF();
minFTFP_proton = minFTFP_neutron = minFTFP_pik =
G4HadronicParameters::Instance()->GetMinEnergyTransitionFTF_Cascade();
maxBERT_proton = maxBERT_neutron = maxBERT_pik =
G4HadronicParameters::Instance()->GetMaxEnergyTransitionFTF_Cascade();
minBERT_proton = minBERT_neutron = minBERT_pik = 0.0;
}
@@ -215,14 +219,6 @@ void G4HadronPhysicsQGSP_BERT::ConstructParticle()
void G4HadronPhysicsQGSP_BERT::ExtraConfiguration()
{
//Modify XS for kaons
auto xsk = new G4ComponentGGHadronNucleusXsc();
G4VCrossSectionDataSet * kaonxs = new G4CrossSectionInelastic(xsk);
G4PhysListUtil::FindInelasticProcess(G4KaonMinus::KaonMinus())->AddDataSet(kaonxs);
G4PhysListUtil::FindInelasticProcess(G4KaonPlus::KaonPlus())->AddDataSet(kaonxs);
G4PhysListUtil::FindInelasticProcess(G4KaonZeroShort::KaonZeroShort())->AddDataSet(kaonxs);
G4PhysListUtil::FindInelasticProcess(G4KaonZeroLong::KaonZeroLong())->AddDataSet(kaonxs);
//Modify Neutrons
const G4ParticleDefinition* neutron = G4Neutron::Neutron();
G4HadronicProcess* inel = G4PhysListUtil::FindInelasticProcess(neutron);
@@ -56,8 +56,6 @@
#include "G4BertiniNeutronBuilder.hh"
#include "G4NeutronPHPBuilder.hh"
#include "G4ComponentGGHadronNucleusXsc.hh"
#include "G4CrossSectionInelastic.hh"
#include "G4HadronCaptureProcess.hh"
#include "G4NeutronRadCapture.hh"
#include "G4NeutronCaptureXS.hh"
@@ -113,14 +111,6 @@ void G4HadronPhysicsQGSP_BERT_HP::Neutron()
void G4HadronPhysicsQGSP_BERT_HP::ExtraConfiguration()
{
//Modify XS for kaons
auto xsk = new G4ComponentGGHadronNucleusXsc();
G4VCrossSectionDataSet * kaonxs = new G4CrossSectionInelastic(xsk);
G4PhysListUtil::FindInelasticProcess(G4KaonMinus::KaonMinus())->AddDataSet(kaonxs);
G4PhysListUtil::FindInelasticProcess(G4KaonPlus::KaonPlus())->AddDataSet(kaonxs);
G4PhysListUtil::FindInelasticProcess(G4KaonZeroShort::KaonZeroShort())->AddDataSet(kaonxs);
G4PhysListUtil::FindInelasticProcess(G4KaonZeroLong::KaonZeroLong())->AddDataSet(kaonxs);
// --- Neutrons ---
const G4ParticleDefinition* neutron = G4Neutron::Neutron();
G4HadronicProcess* capture = G4PhysListUtil::FindCaptureProcess(neutron);
@@ -72,14 +72,14 @@
#include "G4ShortLivedConstructor.hh"
#include "G4IonConstructor.hh"
#include "G4ComponentGGHadronNucleusXsc.hh"
#include "G4CrossSectionInelastic.hh"
#include "G4HadronCaptureProcess.hh"
#include "G4NeutronRadCapture.hh"
#include "G4NeutronInelasticXS.hh"
#include "G4NeutronCaptureXS.hh"
#include "G4PhysListUtil.hh"
#include "G4HadronicParameters.hh"
#include "G4PhysicsConstructorFactory.hh"
G4_DECLARE_PHYSCONSTR_FACTORY(G4HadronPhysicsQGSP_BIC);
@@ -93,12 +93,14 @@ G4HadronPhysicsQGSP_BIC::G4HadronPhysicsQGSP_BIC(const G4String& name, G4bool)
{
QuasiElasticFTF= false; // Use built-in quasi-elastic (not add-on)
QuasiElasticQGS= true; // For QGS, it must use it.
minQGSP_proton = minQGSP_neutron = minQGSP_pik = 12.0*GeV;
maxFTFP_proton = maxFTFP_neutron = maxFTFP_pik = 25.0*GeV;
minFTFP_proton = minFTFP_neutron = 9.5*GeV;
minFTFP_pik = 4.*GeV;
maxBIC_proton = maxBIC_neutron = 9.9*GeV;
maxBERT_pik = 5.0*GeV;
minQGSP_proton = minQGSP_neutron = minQGSP_pik =
G4HadronicParameters::Instance()->GetMinEnergyTransitionQGS_FTF();
maxFTFP_proton = maxFTFP_neutron = maxFTFP_pik =
G4HadronicParameters::Instance()->GetMaxEnergyTransitionQGS_FTF();
minFTFP_proton = minFTFP_neutron = minFTFP_pik =
G4HadronicParameters::Instance()->GetMinEnergyTransitionFTF_Cascade();
maxBIC_proton = maxBIC_neutron = maxBERT_pik =
G4HadronicParameters::Instance()->GetMaxEnergyTransitionFTF_Cascade();
}
void G4HadronPhysicsQGSP_BIC::CreateModels()
@@ -212,14 +214,6 @@ void G4HadronPhysicsQGSP_BIC::ConstructProcess()
void G4HadronPhysicsQGSP_BIC::ExtraConfiguration()
{
// --- Kaons ---
auto xsk = new G4ComponentGGHadronNucleusXsc();
G4VCrossSectionDataSet * kaonxs = new G4CrossSectionInelastic(xsk);
G4PhysListUtil::FindInelasticProcess(G4KaonMinus::KaonMinus())->AddDataSet(kaonxs);
G4PhysListUtil::FindInelasticProcess(G4KaonPlus::KaonPlus())->AddDataSet(kaonxs);
G4PhysListUtil::FindInelasticProcess(G4KaonZeroShort::KaonZeroShort())->AddDataSet(kaonxs);
G4PhysListUtil::FindInelasticProcess(G4KaonZeroLong::KaonZeroLong())->AddDataSet(kaonxs);
// --- Neutrons ---
const G4ParticleDefinition* neutron = G4Neutron::Neutron();
G4HadronicProcess* inel = G4PhysListUtil::FindInelasticProcess(neutron);
@@ -41,8 +41,6 @@
#include "G4ShortLivedConstructor.hh"
#include "G4IonConstructor.hh"
#include "G4ComponentGGHadronNucleusXsc.hh"
#include "G4CrossSectionInelastic.hh"
#include "G4HadronCaptureProcess.hh"
#include "G4NeutronRadCapture.hh"
#include "G4NeutronCaptureXS.hh"
@@ -157,14 +155,6 @@ void G4HadronPhysicsQGSP_BIC_AllHP::ConstructProcess()
tpdata->thePro->Build();
tpdata->thePiK->Build();
// --- Kaons ---
G4VCrossSectionDataSet * kaonxs =
new G4CrossSectionInelastic(new G4ComponentGGHadronNucleusXsc());
G4PhysListUtil::FindInelasticProcess(G4KaonMinus::KaonMinus())->AddDataSet(kaonxs);
G4PhysListUtil::FindInelasticProcess(G4KaonPlus::KaonPlus())->AddDataSet(kaonxs);
G4PhysListUtil::FindInelasticProcess(G4KaonZeroShort::KaonZeroShort())->AddDataSet(kaonxs);
G4PhysListUtil::FindInelasticProcess(G4KaonZeroLong::KaonZeroLong())->AddDataSet(kaonxs);
tpdata->theHyperon->Build();
tpdata->theAntiBaryon->Build();
@@ -54,8 +54,6 @@
#include "G4ShortLivedConstructor.hh"
#include "G4IonConstructor.hh"
#include "G4ComponentGGHadronNucleusXsc.hh"
#include "G4CrossSectionInelastic.hh"
#include "G4HadronCaptureProcess.hh"
#include "G4NeutronRadCapture.hh"
#include "G4NeutronCaptureXS.hh"
@@ -87,10 +85,10 @@ void G4HadronPhysicsQGSP_BIC_HP::CreateModels()
G4bool quasiElasticFTF= false; // Use built-in quasi-elastic (not add-on)
G4bool quasiElasticQGS= true; // For QGS, it must use it.
const G4double maxFTFP = 25.0*GeV;
const G4double minFTFP = 9.5*GeV;
const G4double maxBIC = 9.9*GeV;
const G4double maxBERT = 5.0*GeV;
const G4double maxFTFP = G4HadronicParameters::Instance()->GetMaxEnergyTransitionQGS_FTF();
const G4double minFTFP = G4HadronicParameters::Instance()->GetMinEnergyTransitionFTF_Cascade();
const G4double maxBIC = G4HadronicParameters::Instance()->GetMaxEnergyTransitionFTF_Cascade();
const G4double maxBERT = G4HadronicParameters::Instance()->GetMaxEnergyTransitionFTF_Cascade();
const G4double maxHP = 19.9*MeV;
tpdata->theNeutrons=new G4NeutronBuilder( true ); // Fission on
@@ -172,14 +170,6 @@ void G4HadronPhysicsQGSP_BIC_HP::ConstructProcess()
tpdata->thePro->Build();
tpdata->thePiK->Build();
// --- Kaons ---
G4VCrossSectionDataSet * kaonxs =
new G4CrossSectionInelastic(new G4ComponentGGHadronNucleusXsc());
G4PhysListUtil::FindInelasticProcess(G4KaonMinus::KaonMinus())->AddDataSet(kaonxs);
G4PhysListUtil::FindInelasticProcess(G4KaonPlus::KaonPlus())->AddDataSet(kaonxs);
G4PhysListUtil::FindInelasticProcess(G4KaonZeroShort::KaonZeroShort())->AddDataSet(kaonxs);
G4PhysListUtil::FindInelasticProcess(G4KaonZeroLong::KaonZeroLong())->AddDataSet(kaonxs);
tpdata->theHyperon->Build();
tpdata->theAntiBaryon->Build();
@@ -37,6 +37,7 @@
#include "G4HadronPhysicsQGSP_FTFP_BERT.hh"
#include "G4SystemOfUnits.hh"
#include "G4HadronicParameters.hh"
#include "G4PhysicsConstructorFactory.hh"
//
G4_DECLARE_PHYSCONSTR_FACTORY(G4HadronPhysicsQGSP_FTFP_BERT);
@@ -49,11 +50,14 @@ G4HadronPhysicsQGSP_FTFP_BERT::G4HadronPhysicsQGSP_FTFP_BERT(const G4String& nam
G4bool quasiElastic)
: G4HadronPhysicsQGSP_BERT(name,quasiElastic), QuasiElastic(quasiElastic)
{
maxBERT_proton = maxBERT_neutron = maxBERT_pik = 8.*GeV;
minFTFP_proton = minFTFP_neutron = minFTFP_pik = 6.*GeV;
minFTFP_proton = minFTFP_neutron = minFTFP_pik =
G4HadronicParameters::Instance()->GetMinEnergyTransitionFTF_Cascade();
maxBERT_proton = maxBERT_neutron = maxBERT_pik =
G4HadronicParameters::Instance()->GetMaxEnergyTransitionFTF_Cascade();
}
/*
void G4HadronPhysicsQGSP_FTFP_BERT::DumpBanner()
{
G4cout << " New QGSP_FTFP_BERT physics list, replaces LEP with FTF/P for p/n/pi (/K?)";
@@ -66,3 +70,5 @@ void G4HadronPhysicsQGSP_FTFP_BERT::DumpBanner()
<< " Changed to " << QuasiElasticQGS << " for QGS "
<< " and to " << QuasiElasticFTF << " (must be false) for FTF" << G4endl;
}
*/
@@ -74,8 +74,6 @@
#include "G4ShortLivedConstructor.hh"
#include "G4IonConstructor.hh"
#include "G4ComponentGGHadronNucleusXsc.hh"
#include "G4CrossSectionInelastic.hh"
#include "G4HadronCaptureProcess.hh"
#include "G4NeutronRadCapture.hh"
#include "G4NeutronInelasticXS.hh"
@@ -84,6 +82,7 @@
#include "G4CrossSectionDataSetRegistry.hh"
#include "G4PhysListUtil.hh"
#include "G4HadronicParameters.hh"
#include "G4PhysicsConstructorFactory.hh"
//
@@ -98,17 +97,17 @@ G4HadronPhysicsQGS_BIC::G4HadronPhysicsQGS_BIC(const G4String& name, G4bool /* q
QuasiElasticFTF= false; // Use built-in quasi-elastic (not add-on)
QuasiElasticQGS= true; // For QGS, it must use it.
maxFTF_neutron = maxFTF_proton = 25.*GeV;
minFTF_neutron = minFTF_proton = 9.5*GeV;
maxBIC_neutron = maxBIC_proton = 9.9*GeV;
maxFTF_neutron = maxFTF_proton = G4HadronicParameters::Instance()->GetMaxEnergyTransitionQGS_FTF();
minFTF_neutron = minFTF_proton = G4HadronicParameters::Instance()->GetMinEnergyTransitionFTF_Cascade();
maxBIC_neutron = maxBIC_proton = G4HadronicParameters::Instance()->GetMaxEnergyTransitionFTF_Cascade();
maxFTF_pion = 25.*GeV;
maxBERT_pion = 5.0*GeV;
minBERT_pion = 1.2*GeV;
maxBIC_pion = 1.3*GeV;
maxFTF_pion = G4HadronicParameters::Instance()->GetMaxEnergyTransitionQGS_FTF();
maxBERT_pion = G4HadronicParameters::Instance()->GetMaxEnergyTransitionFTF_Cascade();
minBERT_pion = 1.0*GeV;
maxBIC_pion = 1.5*GeV;
maxFTF_kaon = 25.*GeV;
maxBERT_kaon = 5.0*GeV;
maxFTF_kaon = G4HadronicParameters::Instance()->GetMaxEnergyTransitionQGS_FTF();
maxBERT_kaon = G4HadronicParameters::Instance()->GetMaxEnergyTransitionFTF_Cascade();
}
G4HadronPhysicsQGS_BIC::~G4HadronPhysicsQGS_BIC()
@@ -247,14 +246,6 @@ void G4HadronPhysicsQGS_BIC::ConstructProcess()
void G4HadronPhysicsQGS_BIC::ExtraConfiguration()
{
// --- Kaons ---
auto xsk = new G4ComponentGGHadronNucleusXsc();
G4VCrossSectionDataSet * kaonxs = new G4CrossSectionInelastic(xsk);
G4PhysListUtil::FindInelasticProcess(G4KaonMinus::KaonMinus())->AddDataSet(kaonxs);
G4PhysListUtil::FindInelasticProcess(G4KaonPlus::KaonPlus())->AddDataSet(kaonxs);
G4PhysListUtil::FindInelasticProcess(G4KaonZeroShort::KaonZeroShort())->AddDataSet(kaonxs);
G4PhysListUtil::FindInelasticProcess(G4KaonZeroLong::KaonZeroLong())->AddDataSet(kaonxs);
// --- Neutrons ---
const G4ParticleDefinition* neutron = G4Neutron::Neutron();
G4HadronicProcess* inel = G4PhysListUtil::FindInelasticProcess(neutron);
@@ -33,6 +33,8 @@
//
// Modified:
//
// 2019.08.01 A.Ribon replaced explicit numbers for the energy transition
// region with values taken from G4HadronicParameters
// 2014.08.05 K.L.Genser added provisions for modifing the Bertini to
// FTF transition energy region
//
@@ -107,8 +109,8 @@ G4HadronPhysicsShielding::G4HadronPhysicsShielding( G4int )
: G4VPhysicsConstructor("hInelastic Shielding")
, useLEND_(false)
, evaluation_()
, minFTFPEnergy_(9.5*GeV)
, maxBertiniEnergy_(9.9*GeV)
, minFTFPEnergy_(G4HadronicParameters::Instance()->GetMinEnergyTransitionFTF_Cascade())
, maxBertiniEnergy_(G4HadronicParameters::Instance()->GetMaxEnergyTransitionFTF_Cascade())
, minNonHPNeutronEnergy_(19.9*MeV)
{}
@@ -116,8 +118,8 @@ G4HadronPhysicsShielding::G4HadronPhysicsShielding(const G4String& name, G4bool
: G4VPhysicsConstructor(name)
, useLEND_(false)
, evaluation_()
, minFTFPEnergy_(9.5*GeV)
, maxBertiniEnergy_(9.9*GeV)
, minFTFPEnergy_(G4HadronicParameters::Instance()->GetMinEnergyTransitionFTF_Cascade())
, maxBertiniEnergy_(G4HadronicParameters::Instance()->GetMaxEnergyTransitionFTF_Cascade())
, minNonHPNeutronEnergy_(19.9*MeV)
{}
@@ -104,8 +104,8 @@ G4HadronPhysicsShieldingLEND::G4HadronPhysicsShieldingLEND( G4int )
: G4VPhysicsConstructor("hInelastic ShieldingLEND")
, useLEND_(false)
, evaluation_()
, minFTFPEnergy_(9.5*GeV)
, maxBertiniEnergy_(9.9*GeV)
, minFTFPEnergy_(G4HadronicParameters::Instance()->GetMinEnergyTransitionFTF_Cascade())
, maxBertiniEnergy_(G4HadronicParameters::Instance()->GetMaxEnergyTransitionFTF_Cascade())
, minNonHPNeutronEnergy_(19.9*MeV)
{}
@@ -113,8 +113,8 @@ G4HadronPhysicsShieldingLEND::G4HadronPhysicsShieldingLEND(const G4String& name,
: G4VPhysicsConstructor(name)
, useLEND_(false)
, evaluation_()
, minFTFPEnergy_(9.5*GeV)
, maxBertiniEnergy_(9.9*GeV)
, minFTFPEnergy_(G4HadronicParameters::Instance()->GetMinEnergyTransitionFTF_Cascade())
, maxBertiniEnergy_(G4HadronicParameters::Instance()->GetMaxEnergyTransitionFTF_Cascade())
, minNonHPNeutronEnergy_(19.9*MeV)
{}