6 #include "G4ParticleDefinition.hh"
7 #include "G4ParticleTable.hh"
9 #include "G4MesonConstructor.hh"
10 #include "G4BaryonConstructor.hh"
11 #include "G4ShortLivedConstructor.hh"
12 #include "G4IonConstructor.hh"
14 #include "G4HadronCaptureProcess.hh"
15 #include "G4NeutronRadCapture.hh"
16 #include "G4NeutronInelasticXS.hh"
17 #include "G4NeutronCaptureXS.hh"
19 #include "G4PhysListUtil.hh"
20 #include "G4SystemOfUnits.hh"
26 : G4VPhysicsConstructor(
"hInelasticQGSPCMS_FTFP_BERT")
32 G4double minFTFP= 6.0 *
GeV;
33 G4double maxBERT= 8.0 *
GeV;
35 G4double minQGSP= 12.0 *
GeV;
36 G4double maxFTFP= 25.0 *
GeV;
38 G4bool quasiElasFTF=
false;
39 G4bool quasiElasQGS=
true;
41 G4cout <<
" New QGSPCMS_FTFP_BERT hadronic inealstic physics" << G4endl;
42 G4cout <<
" Thresholds: " << G4endl;
43 G4cout <<
" 1) between BERT and FTFP over the interval "
44 << minFTFP/
GeV <<
" to " << maxBERT/
GeV <<
" GeV. " << G4endl;
45 G4cout <<
" 2) between FTFP and QGSP over the interval "
46 << minQGSP/
GeV <<
" to " << maxFTFP/
GeV <<
" GeV. " << G4endl;
47 G4cout <<
" QuasiElastic: " << quasiElasQGS <<
" for QGS "
48 <<
" and " << quasiElasFTF <<
" for FTF " << G4endl;
124 G4MesonConstructor pMesonConstructor;
125 pMesonConstructor.ConstructParticle();
127 G4BaryonConstructor pBaryonConstructor;
128 pBaryonConstructor.ConstructParticle();
130 G4ShortLivedConstructor pShortLivedConstructor;
131 pShortLivedConstructor.ConstructParticle();
133 G4IonConstructor pIonConstructor;
134 pIonConstructor.ConstructParticle();
137 #include "G4ProcessManager.hh"
149 G4PhysListUtil::FindInelasticProcess(G4Neutron::Neutron())
150 ->AddDataSet(
new G4NeutronInelasticXS());
152 G4HadronicProcess*
capture =
nullptr;
153 G4ProcessManager* pmanager = G4Neutron::Neutron()->GetProcessManager();
154 G4ProcessVector*
pv = pmanager->GetProcessList();
155 for (
size_t i=0; i < static_cast<size_t>(pv->size()); ++
i ) {
156 if ( fCapture == ((*pv)[
i])->GetProcessSubType() ) {
157 capture =
static_cast<G4HadronicProcess*
>((*pv)[
i]);
161 capture =
new G4HadronCaptureProcess(
"nCapture");
162 pmanager->AddDiscreteProcess(capture);
164 capture->AddDataSet(
new G4NeutronCaptureXS());
165 capture->RegisterMe(
new G4NeutronRadCapture());
virtual ~HadronPhysicsQGSPCMS_FTFP_BERT()
G4FTFPAntiBarionBuilder * theFTFPAntiBaryon
G4FTFPNeutronBuilder * theFTFPNeutron
G4BertiniNeutronBuilder * theBertiniNeutron
G4QGSPPiKBuilder * theQGSPPiK
virtual void ConstructProcess()
G4BertiniProtonBuilder * theBertiniPro
G4AntiBarionBuilder * theAntiBaryon
static G4ThreadLocal ThreadPrivate * tpdata
G4QGSPNeutronBuilder * theQGSPNeutron
G4QGSPProtonBuilder * theQGSPPro
G4NeutronBuilder * theNeutrons
G4HyperonFTFPBuilder * theHyperon
virtual void ConstructParticle()
G4FTFPPiKBuilder * theFTFPPiK
G4FTFPProtonBuilder * theFTFPPro
HadronPhysicsQGSPCMS_FTFP_BERT(G4int verbose)
G4BertiniPiKBuilder * theBertiniPiK