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());
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