15 #include <Geant4/G4MesonConstructor.hh>
17 #include <Geant4/G4ProcessManager.hh>
18 #include <Geant4/G4PionPlusInelasticProcess.hh>
19 #include <Geant4/G4PionMinusInelasticProcess.hh>
20 #include <Geant4/G4HadronElasticProcess.hh>
21 #include <Geant4/G4HadronicAbsorptionBertini.hh>
23 #include <Geant4/G4CascadeInterface.hh>
24 #include <Geant4/G4TheoFSGenerator.hh>
25 #include <Geant4/G4FTFModel.hh>
26 #include <Geant4/G4ExcitedStringDecay.hh>
27 #include <Geant4/G4LundStringFragmentation.hh>
28 #include <Geant4/G4GeneratorPrecompoundInterface.hh>
29 #include <Geant4/G4HadronElastic.hh>
30 #include <Geant4/G4ElasticHadrNucleusHE.hh>
32 #include <Geant4/G4PiNuclearCrossSection.hh>
33 #include <Geant4/G4CrossSectionPairGG.hh>
34 #include <Geant4/G4BGGPionElasticXS.hh>
36 #include <Geant4/G4SystemOfUnits.hh>
44 preCompoundModel(nullptr)
64 G4ProcessManager* procMan;
67 G4HadronElastic* loElModel =
new G4HadronElastic();
68 loElModel->SetMaxEnergy(1.0001*
GeV);
71 G4ElasticHadrNucleusHE* hiElModel =
new G4ElasticHadrNucleusHE();
72 hiElModel->SetMinEnergy(1.0*
GeV);
75 G4CascadeInterface* loInelModel =
new G4CascadeInterface;
76 loInelModel->SetMinEnergy(0.0);
77 loInelModel->SetMaxEnergy(12.0*
GeV);
80 ftfp =
new G4TheoFSGenerator(
"FTFP");
83 new G4ExcitedStringDecay(
fragModel =
new G4LundStringFragmentation);
93 G4VCrossSectionDataSet* piCS =
new G4CrossSectionPairGG(
new G4PiNuclearCrossSection, 91*
GeV);
99 procMan = G4PionPlus::PionPlus()->GetProcessManager();
102 G4HadronElasticProcess* pipProcEl =
new G4HadronElasticProcess;
103 pipProcEl->RegisterMe(loElModel);
104 pipProcEl->RegisterMe(hiElModel);
105 pipProcEl->AddDataSet(
new G4BGGPionElasticXS(G4PionPlus::PionPlus() ) );
106 procMan->AddDiscreteProcess(pipProcEl);
109 G4PionPlusInelasticProcess* pipProcInel =
new G4PionPlusInelasticProcess;
110 pipProcInel->RegisterMe(loInelModel);
111 pipProcInel->RegisterMe(
ftfp);
112 pipProcInel->AddDataSet(piCS);
113 procMan->AddDiscreteProcess(pipProcInel);
119 procMan = G4PionMinus::PionMinus()->GetProcessManager();
122 G4HadronElasticProcess* pimProcEl =
new G4HadronElasticProcess;
123 pimProcEl->RegisterMe(loElModel);
124 pimProcEl->RegisterMe(hiElModel);
125 pimProcEl->AddDataSet(
new G4BGGPionElasticXS(G4PionMinus::PionMinus() ) );
126 procMan->AddDiscreteProcess(pimProcEl);
129 G4PionMinusInelasticProcess* pimProcInel =
new G4PionMinusInelasticProcess;
130 pimProcInel->RegisterMe(loInelModel);
131 pimProcInel->RegisterMe(
ftfp);
132 pimProcInel->AddDataSet(piCS);
133 procMan->AddDiscreteProcess(pimProcInel);
136 G4HadronicAbsorptionBertini* bertAbsorb =
new G4HadronicAbsorptionBertini;
137 procMan->AddRestProcess(bertAbsorb);