18 #include "G4SystemOfUnits.hh" 19 #include "G4ParticleDefinition.hh" 20 #include "G4ParticleTable.hh" 22 #include "G4MesonConstructor.hh" 23 #include "G4BaryonConstructor.hh" 24 #include "G4ShortLivedConstructor.hh" 26 #include "G4ComponentGGHadronNucleusXsc.hh" 27 #include "G4CrossSectionInelastic.hh" 28 #include "G4HadronCaptureProcess.hh" 29 #include "G4NeutronRadCapture.hh" 30 #include "G4NeutronInelasticXS.hh" 31 #include "G4NeutronCaptureXS.hh" 33 #include "G4CrossSectionDataSetRegistry.hh" 35 #include "G4PhysListUtil.hh" 40 : G4VPhysicsConstructor(
"hInelastic FTFP_BERT_ATL"), QuasiElastic(
false) {}
43 G4double minFTFP = 9.0 *
GeV;
44 G4double maxBERT = 12.0 *
GeV;
45 G4cout <<
" CMS_FTFP_BERT_ATL : new threshold between BERT and FTFP" 46 <<
" is over the interval " << minFTFP /
GeV <<
" to " << maxBERT /
GeV <<
" GeV." << G4endl;
102 G4MesonConstructor pMesonConstructor;
103 pMesonConstructor.ConstructParticle();
105 G4BaryonConstructor pBaryonConstructor;
106 pBaryonConstructor.ConstructParticle();
108 G4ShortLivedConstructor pShortLivedConstructor;
109 pShortLivedConstructor.ConstructParticle();
112 #include "G4ProcessManager.hh" 123 G4VCrossSectionDataSet* kaonxs =
new G4CrossSectionInelastic(
tpdata->
xsKaon);
124 G4PhysListUtil::FindInelasticProcess(G4KaonMinus::KaonMinus())->AddDataSet(kaonxs);
125 G4PhysListUtil::FindInelasticProcess(G4KaonPlus::KaonPlus())->AddDataSet(kaonxs);
126 G4PhysListUtil::FindInelasticProcess(G4KaonZeroShort::KaonZeroShort())->AddDataSet(kaonxs);
127 G4PhysListUtil::FindInelasticProcess(G4KaonZeroLong::KaonZeroLong())->AddDataSet(kaonxs);
135 G4HadronicProcess*
capture =
nullptr;
136 G4ProcessManager* pmanager = G4Neutron::Neutron()->GetProcessManager();
137 G4ProcessVector*
pv = pmanager->GetProcessList();
138 for (
size_t i = 0; i < static_cast<size_t>(pv->size()); ++
i) {
139 if (fCapture == ((*pv)[
i])->GetProcessSubType()) {
140 capture =
static_cast<G4HadronicProcess*
>((*pv)[
i]);
144 capture =
new G4HadronCaptureProcess(
"nCapture");
145 pmanager->AddDiscreteProcess(capture);
149 capture->RegisterMe(
new G4NeutronRadCapture());
G4FTFPPiKBuilder * theFTFPPiK
CMSHadronPhysicsFTFP_BERT_ATL(G4int verbose=1)
G4FTFPAntiBarionBuilder * theFTFPAntiBaryon
~CMSHadronPhysicsFTFP_BERT_ATL() override
G4FTFPNeutronBuilder * theFTFPNeutron
G4NeutronBuilder * theNeutrons
void ConstructProcess() override
G4BertiniNeutronBuilder * theBertiniNeutron
G4BertiniProtonBuilder * theBertiniPro
G4AntiBarionBuilder * theAntiBaryon
G4FTFPProtonBuilder * theFTFPPro
G4VCrossSectionDataSet * xsNeutronInelasticXS
void ConstructParticle() override
G4HyperonFTFPBuilder * theHyperon
static G4ThreadLocal ThreadPrivate * tpdata
G4BertiniPiKBuilder * theBertiniPiK
G4VCrossSectionDataSet * xsNeutronCaptureXS
G4ComponentGGHadronNucleusXsc * xsKaon