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" 25 : G4VPhysicsConstructor(
"hInelasticQGSPCMS_FTFP_BERT") {}
29 G4double minFTFP = 6.0 *
GeV;
30 G4double maxBERT = 8.0 *
GeV;
32 G4double minQGSP = 12.0 *
GeV;
33 G4double maxFTFP = 25.0 *
GeV;
35 G4bool quasiElasFTF =
false;
36 G4bool quasiElasQGS =
true;
38 G4cout <<
" New QGSPCMS_FTFP_BERT hadronic inealstic physics" << G4endl;
39 G4cout <<
" Thresholds: " << G4endl;
40 G4cout <<
" 1) between BERT and FTFP over the interval " << minFTFP /
GeV <<
" to " << maxBERT /
GeV <<
" GeV. " 42 G4cout <<
" 2) between FTFP and QGSP over the interval " << minQGSP /
GeV <<
" to " << maxFTFP /
GeV <<
" GeV. " 44 G4cout <<
" QuasiElastic: " << quasiElasQGS <<
" for QGS " 45 <<
" and " << quasiElasFTF <<
" for FTF " << G4endl;
110 G4MesonConstructor pMesonConstructor;
111 pMesonConstructor.ConstructParticle();
113 G4BaryonConstructor pBaryonConstructor;
114 pBaryonConstructor.ConstructParticle();
116 G4ShortLivedConstructor pShortLivedConstructor;
117 pShortLivedConstructor.ConstructParticle();
119 G4IonConstructor pIonConstructor;
120 pIonConstructor.ConstructParticle();
123 #include "G4ProcessManager.hh" 136 G4PhysListUtil::FindInelasticProcess(G4Neutron::Neutron())->AddDataSet(
new G4NeutronInelasticXS());
138 G4HadronicProcess*
capture =
nullptr;
139 G4ProcessManager* pmanager = G4Neutron::Neutron()->GetProcessManager();
140 G4ProcessVector*
pv = pmanager->GetProcessList();
141 for (
size_t i = 0; i < static_cast<size_t>(pv->size()); ++
i) {
142 if (fCapture == ((*pv)[
i])->GetProcessSubType()) {
143 capture =
static_cast<G4HadronicProcess*
>((*pv)[
i]);
147 capture =
new G4HadronCaptureProcess(
"nCapture");
148 pmanager->AddDiscreteProcess(capture);
150 capture->AddDataSet(
new G4NeutronCaptureXS());
151 capture->RegisterMe(
new G4NeutronRadCapture());
G4FTFPAntiBarionBuilder * theFTFPAntiBaryon
void ConstructParticle() override
G4FTFPNeutronBuilder * theFTFPNeutron
G4BertiniNeutronBuilder * theBertiniNeutron
~HadronPhysicsQGSPCMS_FTFP_BERT() override
G4QGSPPiKBuilder * theQGSPPiK
G4BertiniProtonBuilder * theBertiniPro
void ConstructProcess() override
G4AntiBarionBuilder * theAntiBaryon
static G4ThreadLocal ThreadPrivate * tpdata
G4QGSPNeutronBuilder * theQGSPNeutron
G4QGSPProtonBuilder * theQGSPPro
G4NeutronBuilder * theNeutrons
G4HyperonFTFPBuilder * theHyperon
G4FTFPPiKBuilder * theFTFPPiK
G4FTFPProtonBuilder * theFTFPPro
HadronPhysicsQGSPCMS_FTFP_BERT(G4int verbose)
G4BertiniPiKBuilder * theBertiniPiK