15 #include <Geant4/G4ProcessManager.hh>
16 #include <Geant4/G4NeutronInelasticProcess.hh>
17 #include <Geant4/G4HadronElasticProcess.hh>
18 #include <Geant4/G4HadronCaptureProcess.hh>
19 #include <Geant4/G4NeutronKiller.hh>
21 #include <Geant4/G4CascadeInterface.hh>
22 #include <Geant4/G4TheoFSGenerator.hh>
23 #include <Geant4/G4FTFModel.hh>
24 #include <Geant4/G4ExcitedStringDecay.hh>
25 #include <Geant4/G4LundStringFragmentation.hh>
26 #include <Geant4/G4GeneratorPrecompoundInterface.hh>
27 #include <Geant4/G4ChipsElasticModel.hh>
28 #include <Geant4/G4NeutronRadCapture.hh>
30 #include <Geant4/G4BGGNucleonInelasticXS.hh>
31 #include <Geant4/G4NeutronElasticXS.hh>
32 #include <Geant4/G4NeutronCaptureXS.hh>
34 #include <Geant4/G4SystemOfUnits.hh>
42 preCompoundModel(nullptr)
62 G4ChipsElasticModel* elMod =
new G4ChipsElasticModel();
65 G4CascadeInterface* loInelModel =
new G4CascadeInterface;
66 loInelModel->SetMinEnergy(0.0);
67 loInelModel->SetMaxEnergy(12.0*
GeV);
70 G4NeutronRadCapture* capModel =
new G4NeutronRadCapture();
73 ftfp =
new G4TheoFSGenerator(
"FTFP");
76 new G4ExcitedStringDecay(
fragModel =
new G4LundStringFragmentation);
86 G4BGGNucleonInelasticXS* inelCS =
new G4BGGNucleonInelasticXS(G4Neutron::Neutron() );
87 G4NeutronElasticXS* elCS =
new G4NeutronElasticXS;
88 G4NeutronCaptureXS* capCS =
new G4NeutronCaptureXS;
90 G4ProcessManager* procMan = G4Neutron::Neutron()->GetProcessManager();
93 G4HadronElasticProcess* nProcEl =
new G4HadronElasticProcess;
94 nProcEl->RegisterMe(elMod);
95 nProcEl->AddDataSet(elCS);
96 procMan->AddDiscreteProcess(nProcEl);
99 G4NeutronInelasticProcess* nProcInel =
new G4NeutronInelasticProcess;
100 nProcInel->RegisterMe(loInelModel);
101 nProcInel->RegisterMe(
ftfp);
102 nProcInel->AddDataSet(inelCS);
103 procMan->AddDiscreteProcess(nProcInel);
106 G4HadronCaptureProcess* nProcCap =
new G4HadronCaptureProcess(
"nCapture");
107 nProcCap->RegisterMe(capModel);
108 nProcCap->AddDataSet(capCS);
109 procMan->AddDiscreteProcess(nProcCap);
112 G4NeutronKiller* nKiller =
new G4NeutronKiller();
113 nKiller->SetKinEnergyLimit(0.0*
MeV);
114 nKiller->SetTimeLimit(10.*microsecond);
115 procMan->AddDiscreteProcess(nKiller);