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")
46 G4double minFTFP = 9.0 *
GeV;
47 G4double maxBERT = 12.0 *
GeV;
48 G4cout <<
" CMS_FTFP_BERT_ATL : new threshold between BERT and FTFP"
49 <<
" is over the interval " << minFTFP/
GeV <<
" to " << maxBERT/
GeV
106 G4MesonConstructor pMesonConstructor;
107 pMesonConstructor.ConstructParticle();
109 G4BaryonConstructor pBaryonConstructor;
110 pBaryonConstructor.ConstructParticle();
112 G4ShortLivedConstructor pShortLivedConstructor;
113 pShortLivedConstructor.ConstructParticle();
116 #include "G4ProcessManager.hh"
127 G4VCrossSectionDataSet * kaonxs =
new G4CrossSectionInelastic(
tpdata->
xsKaon);
128 G4PhysListUtil::FindInelasticProcess(G4KaonMinus::KaonMinus())->AddDataSet(kaonxs);
129 G4PhysListUtil::FindInelasticProcess(G4KaonPlus::KaonPlus())->AddDataSet(kaonxs);
130 G4PhysListUtil::FindInelasticProcess(G4KaonZeroShort::KaonZeroShort())->AddDataSet(kaonxs);
131 G4PhysListUtil::FindInelasticProcess(G4KaonZeroLong::KaonZeroLong())->AddDataSet(kaonxs);
139 G4HadronicProcess*
capture =
nullptr;
140 G4ProcessManager* pmanager = G4Neutron::Neutron()->GetProcessManager();
141 G4ProcessVector*
pv = pmanager->GetProcessList();
142 for (
size_t i=0; i < static_cast<size_t>(pv->size()); ++
i ) {
143 if ( fCapture == ((*pv)[
i])->GetProcessSubType() ) {
144 capture =
static_cast<G4HadronicProcess*
>((*pv)[
i]);
148 capture =
new G4HadronCaptureProcess(
"nCapture");
149 pmanager->AddDiscreteProcess(capture);
153 capture->RegisterMe(
new G4NeutronRadCapture());
G4FTFPPiKBuilder * theFTFPPiK
CMSHadronPhysicsFTFP_BERT_ATL(G4int verbose=1)
G4FTFPAntiBarionBuilder * theFTFPAntiBaryon
G4FTFPNeutronBuilder * theFTFPNeutron
G4NeutronBuilder * theNeutrons
G4BertiniNeutronBuilder * theBertiniNeutron
G4BertiniProtonBuilder * theBertiniPro
G4AntiBarionBuilder * theAntiBaryon
G4FTFPProtonBuilder * theFTFPPro
G4VCrossSectionDataSet * xsNeutronInelasticXS
G4HyperonFTFPBuilder * theHyperon
virtual void ConstructParticle()
static G4ThreadLocal ThreadPrivate * tpdata
virtual ~CMSHadronPhysicsFTFP_BERT_ATL()
G4BertiniPiKBuilder * theBertiniPiK
virtual void ConstructProcess()
G4VCrossSectionDataSet * xsNeutronCaptureXS
volatile std::atomic< bool > shutdown_flag false
G4ComponentGGHadronNucleusXsc * xsKaon