Import Geant4 10.3.0 source tree

This commit is contained in:
Gabriele Cosmo
2016-12-09 12:35:28 +01:00
parent 4ec577e5c4
commit a3452e42ac
3514 changed files with 210500 additions and 89628 deletions
@@ -1,4 +1,4 @@
$Id: History 97177 2016-05-27 12:44:22Z gcosmo $
$Id: History 101901 2016-12-07 08:38:58Z gcosmo $
-------------------------------------------------------------------
=========================================================
@@ -14,6 +14,40 @@ introduced in the code and keeptrack of all tags.
* Reverse chronological order (last date on top), please *
----------------------------------------------------------
07-Dec-2016, Alberto Ribon (phys-ctor-hinelastic-V10-02-10)
- G4HadronPhysicsFTFP_BERT_HP : changed the transition energy region
between FTFP and BERT in the physics list FTFP_BERT_HP to [3, 12] GeV,
exactly as it is now in FTFP_BERT.
01-Dec-2016, Alberto Ribon (phys-ctor-hinelastic-V10-02-09)
- G4HadronPhysicsFTFP_BERT : changed the transition energy region
between FTFP and BERT in the physics list FTFP_BERT to [3, 12] GeV
(for pions, kaons, protons and neutrons; for hyperons, left as it
has always been, i.e. [2, 6] GeV).
24-Nov-2016, Alberto Ribon (phys-ctor-hinelastic-V10-02-08)
- G4HadronPhysicsFTFP_BERT : changed the transition energy region
between FTFP and BERT in the physics list FTFP_BERT : now it is
between [2, 6] GeV.
18-Nov-2016, Alberto Ribon (phys-ctor-hinelastic-V10-02-07)
- G4HadronPhysicsFTFP_BERT : changed the transition energy region
between FTFP and BERT in the physics list FTFP_BERT : now it is
between the large interval [3, 12] GeV (instead of [4, 5] GeV).
04-Nov-2016, Alberto Ribon (phys-ctor-hinelastic-V10-02-06)
- Written first draft of the README
17-October-2016 M.Maire (phys-ctor-hinelastic-V10-02-05)
- add README
12-October-2016 G.Folger (phys-ctor-hinelastic-V10-02-04)
- replace direct use of aParticleIterator by GetParticleIterator().
fix required by clang39 on Windows and MAC
30-Aug-2016, V.Ivanchenko (phys-ctor-hinelastic-V10-02-03)
- G4HadronPhysicsQBBC : use G4 de-excitation for the Bertini cascade
26-May-2016, A. Ribon (phys-ctor-hinelastic-V10-02-02)
- G4HadronPhysicsQGSP_BIC_AllHP : treat only proton with ParticleHP in
this class, and move the others (deuteron, triton, 3He, alpha) to
@@ -0,0 +1,338 @@
$Id: $
-------------------------------------------------------------------
G4HadronInelasticQBBC
---------------------
Hadron nuclear inelastic processes for all hadrons:
- proton inelastic:
- cross section: Barashenkov-Glauber-Gribov
- final-state: Fritiof coupled with Precompound/de-excitation (FTFP) above 3 GeV;
Bertini (BERT) between 1 and 5 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
neutron capture:
- cross section: G4NeutronCaptureXS
- final-state: G4NeutronRadCapture
- charged pions inelastic:
- cross section: Barashenkov-Glauber-Gribov
- final-state: FTFP > 3 GeV; BERT < 5 GeV
- kaons inelastic:
- cross section: Glauber-Gribov
- final-state: FTFP > 3 GeV; BERT < 5 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: Galoyan-Uzhinsky-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
- neutron inelastic:
- cross section: G4NeutronInelasticXS
- final-state: FTFP > 3 GeV; BERT < 12 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
- kaons inelastic:
- cross section: Glauber-Gribov
- final-state: FTFP > 3 GeV; BERT < 12 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
G4HadronPhysicsFTFP_BERT_ATL
----------------------------
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).
G4HadronPhysicsFTFP_BERT_HP
--------------------------
Similar to G4HadronPhysicsFTFP_BERT, with the only difference of the
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,
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).
G4HadronPhysicsFTFP_BERT_TRV
----------------------------
Similar to G4HadronPhysicsFTFP_BERT, with the only difference that the
transition between FTFP and BERT is in the interval [2 , 4] GeV.
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)
G4HadronPhysicsINCLXX
---------------------
Hadron nuclear inelastic processes for all hadrons:
- proton inelastic:
- cross section: Barashenkov-Glauber-Gribov
- final-state: QGSP > 15 GeV; 1 MeV < INCLXX < 20 GeV; Preco < 2 MeV
- neutron inelastic:
- cross section: G4NeutronInelasticXS
- final-state: QGSP > 15 GeV; 1 MeV < INCLXX < 20 GeV; Preco < 2 MeV
neutron capture:
- cross section: G4NeutronCaptureXS
- final-state: G4NeutronRadCapture
- charged pions inelastic:
- cross section: Barashenkov-Glauber-Gribov
- final-state: QGSP > 15 GeV; 1 MeV < INCLXX < 20 GeV; Preco < 2 MeV
- kaons inelastic:
- 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
- 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
- anti_hyperons inelastic:
- cross section: Chips
- final-state: FTF 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
case inelastic, capture and fission below 20 MeV are taken from
NeutronHP (both cross section and final-state).
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
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
- neutron inelastic:
- cross section: G4NeutronInelasticXS
- final-state: QGSP > 12 GeV; 9.5 GeV < FTFP < 25 GeV; BERT < 9.9 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
- kaons inelastic:
- cross section: Glauber-Gribov
- final-state: QGSP > 12 GeV; 9.5 GeV < FTFP < 25 GeV; BERT < 9.9 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
G4HadronPhysicsQGSP_BERT_HP
---------------------------
Similar to G4HadronPhysicsQGSP_BERT, with the only difference for neutron:
- 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.
- 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).
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
- neutron inelastic:
- cross section: G4NeutronInelasticXS
- final-state: QGSP > 12 GeV; 9.5 GeV < FTFP < 25 GeV; BIC < 9.9 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
- kaons inelastic:
- cross section: Glauber-Gribov
- final-state: QGSP > 12 GeV; 4 GeV < FTFP < 25 GeV; BERT < 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
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:
- 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.
- 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).
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
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).
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
- 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
neutron capture:
- cross section: G4NeutronCaptureXS > 20 MeV; NeutronHP or LEND < 20 MeV
- final-state: G4NeutronRadCapture > 19.9 MeV; NeutronHP or LEND < 20 MeV
neutron fission:
- cross section: Gheisha > 20 MeV; NeutronHP or LEND < 20 MeV
- 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
- kaons inelastic:
- cross section: Glauber-Gribov
- final-state: FTFP > 9.5 GeV; BERT < 9.9 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
G4VHadronPhysics
----------------
Utility class which provides useful methods.
@@ -23,7 +23,7 @@
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
// $Id: G4HadronInelasticQBBC.hh 93617 2015-10-27 09:00:41Z gcosmo $
// $Id: G4HadronInelasticQBBC.hh 99005 2016-08-30 11:26:40Z gcosmo $
//
//---------------------------------------------------------------------------
//
@@ -73,9 +73,7 @@ private:
static G4ThreadLocal G4ComponentAntiNuclNuclearXS* theAntiNuclXS;
static G4ThreadLocal G4ComponentGGHadronNucleusXsc* theKaonXS;
G4String htype;
G4int verbose;
static G4ThreadLocal G4bool wasActivated;
};
#endif
@@ -23,7 +23,7 @@
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
// $Id: G4HadronPhysicsFTFP_BERT.hh 93617 2015-10-27 09:00:41Z gcosmo $
// $Id: G4HadronPhysicsFTFP_BERT.hh 101741 2016-11-24 10:45:35Z gcosmo $
//
//---------------------------------------------------------------------------
//
@@ -46,9 +46,13 @@
#include "G4VPhysicsConstructor.hh"
#include "G4PiKBuilder.hh"
#include "G4BertiniPiKBuilder.hh"
#include "G4FTFPPiKBuilder.hh"
#include "G4PionBuilder.hh"
#include "G4BertiniPionBuilder.hh"
#include "G4FTFPPionBuilder.hh"
#include "G4KaonBuilder.hh"
#include "G4BertiniKaonBuilder.hh"
#include "G4FTFPKaonBuilder.hh"
#include "G4ProtonBuilder.hh"
#include "G4BertiniProtonBuilder.hh"
@@ -87,9 +91,13 @@ class G4HadronPhysicsFTFP_BERT : public G4VPhysicsConstructor
G4BertiniNeutronBuilder * theBertiniNeutron;
G4FTFPNeutronBuilder * theFTFPNeutron;
G4PiKBuilder * thePiK;
G4BertiniPiKBuilder * theBertiniPiK;
G4FTFPPiKBuilder * theFTFPPiK;
G4PionBuilder * thePion;
G4BertiniPionBuilder * theBertiniPion;
G4FTFPPionBuilder * theFTFPPion;
G4KaonBuilder * theKaon;
G4BertiniKaonBuilder * theBertiniKaon;
G4FTFPKaonBuilder * theFTFPKaon;
G4ProtonBuilder * thePro;
G4BertiniProtonBuilder * theBertiniPro;
@@ -44,9 +44,13 @@
#include "G4VPhysicsConstructor.hh"
#include "G4PiKBuilder.hh"
#include "G4BertiniPiKBuilder.hh"
#include "G4FTFPPiKBuilder.hh"
#include "G4PionBuilder.hh"
#include "G4BertiniPionBuilder.hh"
#include "G4FTFPPionBuilder.hh"
#include "G4KaonBuilder.hh"
#include "G4BertiniKaonBuilder.hh"
#include "G4FTFPKaonBuilder.hh"
#include "G4ProtonBuilder.hh"
#include "G4BertiniProtonBuilder.hh"
@@ -86,9 +90,13 @@ class G4HadronPhysicsFTFP_BERT_HP : public G4VPhysicsConstructor
G4FTFPNeutronBuilder * theFTFPNeutron;
G4NeutronPHPBuilder * theHPNeutron;
G4PiKBuilder * thePiK;
G4BertiniPiKBuilder * theBertiniPiK;
G4FTFPPiKBuilder * theFTFPPiK;
G4PionBuilder * thePion;
G4BertiniPionBuilder * theBertiniPion;
G4FTFPPionBuilder * theFTFPPion;
G4KaonBuilder * theKaon;
G4BertiniKaonBuilder * theBertiniKaon;
G4FTFPKaonBuilder * theFTFPKaon;
G4ProtonBuilder * thePro;
G4BertiniProtonBuilder * theBertiniPro;
@@ -23,7 +23,7 @@
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
// $Id: G4HadronPhysicsShielding.hh 93878 2015-11-03 08:18:00Z gcosmo $
// $Id: G4HadronPhysicsShielding.hh 101813 2016-11-30 18:05:43Z gunter $
//
//---------------------------------------------------------------------------
//
@@ -42,6 +42,7 @@
#include "globals.hh"
#include "G4ios.hh"
#include <CLHEP/Units/SystemOfUnits.h>
#include "G4VPhysicsConstructor.hh"
@@ -73,7 +74,7 @@ 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*GeV, G4double maxBertiniEnergy=9.9*GeV);
G4double minFTFPEnergy=9.5*CLHEP::GeV, G4double maxBertiniEnergy=9.9*CLHEP::GeV);
virtual ~G4HadronPhysicsShielding();
public:
@@ -23,7 +23,7 @@
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
// $Id: G4HadronInelasticQBBC.cc 93617 2015-10-27 09:00:41Z gcosmo $
// $Id: G4HadronInelasticQBBC.cc 99977 2016-10-13 07:26:42Z gcosmo $
//
//---------------------------------------------------------------------------
//
@@ -79,41 +79,30 @@
//
G4_DECLARE_PHYSCONSTR_FACTORY(G4HadronInelasticQBBC);
G4ThreadLocal G4ComponentAntiNuclNuclearXS* G4HadronInelasticQBBC::theAntiNuclXS = 0;
G4ThreadLocal G4ComponentGGHadronNucleusXsc* G4HadronInelasticQBBC::theKaonXS = 0;
G4ThreadLocal G4bool G4HadronInelasticQBBC::wasActivated=false;
G4ThreadLocal G4ComponentAntiNuclNuclearXS* G4HadronInelasticQBBC::theAntiNuclXS = nullptr;
G4ThreadLocal G4ComponentGGHadronNucleusXsc* G4HadronInelasticQBBC::theKaonXS = nullptr;
G4HadronInelasticQBBC::G4HadronInelasticQBBC(G4int ver)
: G4VHadronPhysics("hInelastic"),verbose(ver)
: G4VHadronPhysics("hInelasticQBBC"),verbose(ver)
{
htype = "QBBC";
theAntiNuclXS = 0;
theKaonXS = 0;
theAntiNuclXS = nullptr;
theKaonXS = nullptr;
}
G4HadronInelasticQBBC::G4HadronInelasticQBBC(const G4String& name, G4int ver,
G4bool, G4bool,G4bool, G4bool, G4bool)
: G4VHadronPhysics("hInelastic"),verbose(ver)
{
htype = name;
theAntiNuclXS = 0;
theKaonXS = 0;
}
G4HadronInelasticQBBC::G4HadronInelasticQBBC(const G4String&, G4int ver,
G4bool, G4bool,G4bool, G4bool, G4bool) : G4HadronInelasticQBBC(ver)
{}
G4HadronInelasticQBBC::~G4HadronInelasticQBBC()
{
delete theAntiNuclXS; theAntiNuclXS=0;
delete theKaonXS; theKaonXS=0;
delete theAntiNuclXS; theAntiNuclXS=nullptr;
delete theKaonXS; theKaonXS=nullptr;
}
void G4HadronInelasticQBBC::ConstructProcess()
{
if(wasActivated) return;
wasActivated = true;
if(verbose > 1) {
G4cout << "### HadronInelasticQBBC Construct Process with type <"
<< htype << ">" << G4endl;
G4cout << "### HadronInelasticQBBC Construct Process " << G4endl;
}
G4double emax = 100.*TeV;
@@ -121,7 +110,7 @@ void G4HadronInelasticQBBC::ConstructProcess()
//G4cout << "G4HadronInelasticQBBC::ConstructProcess new PRECO"<< G4endl;
// PreCompound and Evaporation models are instantiated here
G4PreCompoundModel* thePreCompound = 0;
G4PreCompoundModel* thePreCompound = nullptr;
G4HadronicInteraction* p =
G4HadronicInteractionRegistry::Instance()->FindModel("PRECO");
thePreCompound = static_cast<G4PreCompoundModel*>(p);
@@ -137,10 +126,13 @@ void G4HadronInelasticQBBC::ConstructProcess()
G4HadronicInteraction* theFTFP2 =
BuildModel(new G4FTFBuilder("FTFP",thePreCompound),0.0,emax);
G4HadronicInteraction* theBERT =
NewModel(new G4CascadeInterface(),1.0*GeV,4.0*GeV);
G4HadronicInteraction* theBERT1 =
NewModel(new G4CascadeInterface(),0.0*GeV,4.0*GeV);
G4CascadeInterface* casc = new G4CascadeInterface();
casc->usePreCompoundDeexcitation();
G4HadronicInteraction* theBERT = NewModel(casc,1.0*GeV,5.0*GeV);
casc = new G4CascadeInterface();
casc->usePreCompoundDeexcitation();
G4HadronicInteraction* theBERT1 = NewModel(casc,0.0*GeV,5.0*GeV);
//G4cout << "G4HadronInelasticQBBC::ConstructProcess new Binary"<< G4endl;
G4BinaryCascade* bic = new G4BinaryCascade(thePreCompound);
@@ -154,11 +146,11 @@ void G4HadronInelasticQBBC::ConstructProcess()
G4CrossSectionInelastic* kaonxs = new G4CrossSectionInelastic(theKaonXS);
// loop over particles
aParticleIterator->reset();
while( (*aParticleIterator)() ) {
G4ParticleDefinition* particle = aParticleIterator->value();
auto myParticleIterator=GetParticleIterator();
myParticleIterator->reset();
while( (*myParticleIterator)() ) {
G4ParticleDefinition* particle = myParticleIterator->value();
G4String pname = particle->GetParticleName();
//G4ProcessManager* pmanager = particle->GetProcessManager();
if(verbose > 1) {
G4cout << "### HadronInelasticQBBC: " << pname << G4endl;
}
@@ -23,7 +23,7 @@
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
// $Id: G4HadronPhysicsFTFP_BERT.cc 93617 2015-10-27 09:00:41Z gcosmo $
// $Id: G4HadronPhysicsFTFP_BERT.cc 101872 2016-12-02 14:02:40Z gcosmo $
//
//---------------------------------------------------------------------------
//
@@ -73,9 +73,12 @@ G4HadronPhysicsFTFP_BERT::G4HadronPhysicsFTFP_BERT(G4int)
/* , theNeutrons(0)
, theBertiniNeutron(0)
, theFTFPNeutron(0)
, thePiK(0)
, theBertiniPiK(0)
, theFTFPPiK(0)
, thePion(0)
, theBertiniPion(0)
, theFTFPPion(0)
, theKaon(0)
, theBertiniKaon(0)
, theFTFPKaon(0)
, thePro(0)
, theBertiniPro(0)
, theFTFPPro(0)
@@ -93,9 +96,12 @@ G4HadronPhysicsFTFP_BERT::G4HadronPhysicsFTFP_BERT(const G4String& name, G4bool
/* , theNeutrons(0)
, theBertiniNeutron(0)
, theFTFPNeutron(0)
, thePiK(0)
, theBertiniPiK(0)
, theFTFPPiK(0)
, thePion(0)
, theBertiniPion(0)
, theFTFPPion(0)
, theKaon(0)
, theBertiniKaon(0)
, theFTFPKaon(0)
, thePro(0)
, theBertiniPro(0)
, theFTFPPro(0)
@@ -110,30 +116,56 @@ G4HadronPhysicsFTFP_BERT::G4HadronPhysicsFTFP_BERT(const G4String& name, G4bool
void G4HadronPhysicsFTFP_BERT::CreateModels()
{
G4double minFTFP_pion = 3.0 * GeV;
G4double maxBERT_pion = 12.0 * GeV;
G4double minFTFP_kaon = 3.0 * GeV;
G4double maxBERT_kaon = 12.0 * GeV;
G4double minFTFP_proton = 3.0 * GeV;
G4double maxBERT_proton = 12.0 * GeV;
G4double minFTFP_neutron = 3.0 * GeV;
G4double maxBERT_neutron = 12.0 * GeV;
G4cout << G4endl
<< " FTFP_BERT : new threshold between BERT and FTFP is over the interval " << G4endl
<< " for pions : " << minFTFP_pion/GeV << " to " << maxBERT_pion/GeV << " GeV" << G4endl
<< " for kaons : " << minFTFP_kaon/GeV << " to " << maxBERT_kaon/GeV << " GeV" << G4endl
<< " for proton : " << minFTFP_proton/GeV << " to " << maxBERT_proton/GeV << " GeV" << G4endl
<< " for neutron : " << minFTFP_neutron/GeV << " to " << maxBERT_neutron/GeV << " GeV" << G4endl
<< G4endl;
tpdata->theNeutrons=new G4NeutronBuilder;
tpdata->theFTFPNeutron=new G4FTFPNeutronBuilder(QuasiElastic);
tpdata->theNeutrons->RegisterMe(tpdata->theFTFPNeutron);
tpdata->theFTFPNeutron->SetMinEnergy(minFTFP_neutron);
tpdata->theNeutrons->RegisterMe(tpdata->theBertiniNeutron=new G4BertiniNeutronBuilder);
tpdata->theBertiniNeutron->SetMinEnergy(0.0*GeV);
tpdata->theBertiniNeutron->SetMaxEnergy(5*GeV);
tpdata->theBertiniNeutron->SetMaxEnergy(maxBERT_neutron);
tpdata->thePro=new G4ProtonBuilder;
tpdata->theFTFPPro=new G4FTFPProtonBuilder(QuasiElastic);
tpdata->thePro->RegisterMe(tpdata->theFTFPPro);
tpdata->theFTFPPro->SetMinEnergy(minFTFP_proton);
tpdata->thePro->RegisterMe(tpdata->theBertiniPro=new G4BertiniProtonBuilder);
tpdata->theBertiniPro->SetMaxEnergy(5*GeV);
tpdata->theBertiniPro->SetMaxEnergy(maxBERT_proton);
tpdata->thePiK=new G4PiKBuilder;
tpdata->theFTFPPiK=new G4FTFPPiKBuilder(QuasiElastic);
tpdata->thePiK->RegisterMe(tpdata->theFTFPPiK);
tpdata->thePiK->RegisterMe(tpdata->theBertiniPiK=new G4BertiniPiKBuilder);
tpdata->theBertiniPiK->SetMaxEnergy(5*GeV);
tpdata->thePion=new G4PionBuilder;
tpdata->theFTFPPion=new G4FTFPPionBuilder(QuasiElastic);
tpdata->thePion->RegisterMe(tpdata->theFTFPPion);
tpdata->theFTFPPion->SetMinEnergy(minFTFP_pion);
tpdata->thePion->RegisterMe(tpdata->theBertiniPion=new G4BertiniPionBuilder);
tpdata->theBertiniPion->SetMaxEnergy(maxBERT_pion);
tpdata->theKaon=new G4KaonBuilder;
tpdata->theFTFPKaon=new G4FTFPKaonBuilder(QuasiElastic);
tpdata->theKaon->RegisterMe(tpdata->theFTFPKaon);
tpdata->theFTFPKaon->SetMinEnergy(minFTFP_kaon);
tpdata->theKaon->RegisterMe(tpdata->theBertiniKaon=new G4BertiniKaonBuilder);
tpdata->theBertiniKaon->SetMaxEnergy(maxBERT_kaon);
tpdata->theHyperon=new G4HyperonFTFPBuilder;
tpdata->theAntiBaryon=new G4AntiBarionBuilder;
tpdata->theAntiBaryon->RegisterMe(tpdata->theFTFPAntiBaryon=new G4FTFPAntiBarionBuilder(QuasiElastic));
tpdata->theAntiBaryon->RegisterMe(tpdata->theFTFPAntiBaryon=new G4FTFPAntiBarionBuilder(QuasiElastic));
}
G4HadronPhysicsFTFP_BERT::~G4HadronPhysicsFTFP_BERT()
@@ -144,10 +176,14 @@ G4HadronPhysicsFTFP_BERT::~G4HadronPhysicsFTFP_BERT()
delete tpdata->theBertiniNeutron;
delete tpdata->theFTFPNeutron;
delete tpdata->thePiK;
delete tpdata->theBertiniPiK;
delete tpdata->theFTFPPiK;
delete tpdata->thePion;
delete tpdata->theBertiniPion;
delete tpdata->theFTFPPion;
delete tpdata->theKaon;
delete tpdata->theBertiniKaon;
delete tpdata->theFTFPKaon;
delete tpdata->thePro;
delete tpdata->theBertiniPro;
delete tpdata->theFTFPPro;
@@ -181,7 +217,8 @@ void G4HadronPhysicsFTFP_BERT::ConstructProcess()
CreateModels();
tpdata->theNeutrons->Build();
tpdata->thePro->Build();
tpdata->thePiK->Build();
tpdata->thePion->Build();
tpdata->theKaon->Build();
// --- Kaons ---
tpdata->xsKaon = new G4ComponentGGHadronNucleusXsc();
@@ -68,9 +68,12 @@ G4HadronPhysicsFTFP_BERT_HP::G4HadronPhysicsFTFP_BERT_HP(G4int)
, theBertiniNeutron(0)
, theFTFPNeutron(0)
, theHPNeutron(0)
, thePiK(0)
, theBertiniPiK(0)
, theFTFPPiK(0)
, thePion(0)
, theBertiniPion(0)
, theFTFPPion(0)
, theKaon(0)
, theBertiniKaon(0)
, theFTFPKaon(0)
, thePro(0)
, theBertiniPro(0)
, theFTFPPro(0)
@@ -88,9 +91,12 @@ G4HadronPhysicsFTFP_BERT_HP::G4HadronPhysicsFTFP_BERT_HP(const G4String& name, G
, theBertiniNeutron(0)
, theFTFPNeutron(0)
, theHPNeutron(0)
, thePiK(0)
, theBertiniPiK(0)
, theFTFPPiK(0)
, thePion(0)
, theBertiniPion(0)
, theFTFPPion(0)
, theKaon(0)
, theBertiniKaon(0)
, theFTFPKaon(0)
, thePro(0)
, theBertiniPro(0)
, theFTFPPro(0)
@@ -105,25 +111,52 @@ G4HadronPhysicsFTFP_BERT_HP::G4HadronPhysicsFTFP_BERT_HP(const G4String& name, G
void G4HadronPhysicsFTFP_BERT_HP::CreateModels()
{
G4double minFTFP_pion = 3.0 * GeV;
G4double maxBERT_pion = 12.0 * GeV;
G4double minFTFP_kaon = 3.0 * GeV;
G4double maxBERT_kaon = 12.0 * GeV;
G4double minFTFP_proton = 3.0 * GeV;
G4double maxBERT_proton = 12.0 * GeV;
G4double minFTFP_neutron = 3.0 * GeV;
G4double maxBERT_neutron = 12.0 * GeV;
G4cout << G4endl
<< " FTFP_BERT_HP : new threshold between BERT and FTFP is over the interval " << G4endl
<< " for pions : " << minFTFP_pion/GeV << " to " << maxBERT_pion/GeV << " GeV" << G4endl
<< " for kaons : " << minFTFP_kaon/GeV << " to " << maxBERT_kaon/GeV << " GeV" << G4endl
<< " for proton : " << minFTFP_proton/GeV << " to " << maxBERT_proton/GeV << " GeV" << G4endl
<< " for neutron : " << minFTFP_neutron/GeV << " to " << maxBERT_neutron/GeV << " GeV" << G4endl
<< G4endl;
tpdata->theNeutrons=new G4NeutronBuilder( true ); // Fission on
tpdata->theFTFPNeutron=new G4FTFPNeutronBuilder(QuasiElastic);
tpdata->theNeutrons->RegisterMe(tpdata->theFTFPNeutron);
tpdata->theFTFPNeutron->SetMinEnergy(minFTFP_neutron);
tpdata->theNeutrons->RegisterMe(tpdata->theBertiniNeutron=new G4BertiniNeutronBuilder);
tpdata->theBertiniNeutron->SetMinEnergy(19.9*MeV);
tpdata->theBertiniNeutron->SetMaxEnergy(5*GeV);
tpdata->theBertiniNeutron->SetMaxEnergy(maxBERT_neutron);
tpdata->theNeutrons->RegisterMe(tpdata->theHPNeutron=new G4NeutronPHPBuilder);
tpdata->thePro=new G4ProtonBuilder;
tpdata->theFTFPPro=new G4FTFPProtonBuilder(QuasiElastic);
tpdata->thePro->RegisterMe(tpdata->theFTFPPro);
tpdata->theFTFPPro->SetMinEnergy(minFTFP_proton);
tpdata->thePro->RegisterMe(tpdata->theBertiniPro=new G4BertiniProtonBuilder);
tpdata->theBertiniPro->SetMaxEnergy(5*GeV);
tpdata->theBertiniPro->SetMaxEnergy(maxBERT_proton);
tpdata->thePiK=new G4PiKBuilder;
tpdata->theFTFPPiK=new G4FTFPPiKBuilder(QuasiElastic);
tpdata->thePiK->RegisterMe(tpdata->theFTFPPiK);
tpdata->thePiK->RegisterMe(tpdata->theBertiniPiK=new G4BertiniPiKBuilder);
tpdata->theBertiniPiK->SetMaxEnergy(5*GeV);
tpdata->thePion=new G4PionBuilder;
tpdata->theFTFPPion=new G4FTFPPionBuilder(QuasiElastic);
tpdata->thePion->RegisterMe(tpdata->theFTFPPion);
tpdata->theFTFPPion->SetMinEnergy(minFTFP_pion);
tpdata->thePion->RegisterMe(tpdata->theBertiniPion=new G4BertiniPionBuilder);
tpdata->theBertiniPion->SetMaxEnergy(maxBERT_pion);
tpdata->theKaon=new G4KaonBuilder;
tpdata->theFTFPKaon=new G4FTFPKaonBuilder(QuasiElastic);
tpdata->theKaon->RegisterMe(tpdata->theFTFPKaon);
tpdata->theFTFPKaon->SetMinEnergy(minFTFP_kaon);
tpdata->theKaon->RegisterMe(tpdata->theBertiniKaon=new G4BertiniKaonBuilder);
tpdata->theBertiniKaon->SetMaxEnergy(maxBERT_kaon);
tpdata->theHyperon=new G4HyperonFTFPBuilder;
@@ -140,9 +173,13 @@ G4HadronPhysicsFTFP_BERT_HP::~G4HadronPhysicsFTFP_BERT_HP()
delete tpdata->theFTFPNeutron;
delete tpdata->theHPNeutron;
delete tpdata->thePiK;
delete tpdata->theBertiniPiK;
delete tpdata->theFTFPPiK;
delete tpdata->thePion;
delete tpdata->theBertiniPion;
delete tpdata->theFTFPPion;
delete tpdata->theKaon;
delete tpdata->theBertiniKaon;
delete tpdata->theFTFPKaon;
delete tpdata->thePro;
delete tpdata->theBertiniPro;
@@ -174,7 +211,8 @@ void G4HadronPhysicsFTFP_BERT_HP::ConstructProcess()
CreateModels();
tpdata->theNeutrons->Build();
tpdata->thePro->Build();
tpdata->thePiK->Build();
tpdata->thePion->Build();
tpdata->theKaon->Build();
// --- Kaons ---
tpdata->xsKaon = new G4ComponentGGHadronNucleusXsc();