34 : m_ftfp(nullptr), m_stringModel(nullptr), m_stringDecay(nullptr),
54 G4ProcessManager* procMan;
57 G4HadronElastic* loElModel =
new G4HadronElastic();
58 loElModel->SetMaxEnergy(1.0001 * GeV);
61 G4ElasticHadrNucleusHE* hiElModel =
new G4ElasticHadrNucleusHE();
62 hiElModel->SetMinEnergy(1.0 * GeV);
65 G4CascadeInterface* loInelModel =
new G4CascadeInterface;
66 loInelModel->SetMinEnergy(0.0);
67 loInelModel->SetMaxEnergy(12.0 * GeV);
70 m_ftfp =
new G4TheoFSGenerator(
"FTFP");
73 new G4ExcitedStringDecay(
m_fragModel =
new G4LundStringFragmentation);
79 m_ftfp->SetMinEnergy(10 * GeV);
80 m_ftfp->SetMaxEnergy(100 * TeV);
86 procMan = G4PionPlus::PionPlus()->GetProcessManager();
89 G4HadronElasticProcess* pipProcEl =
new G4HadronElasticProcess;
90 pipProcEl->RegisterMe(loElModel);
91 pipProcEl->RegisterMe(hiElModel);
92 pipProcEl->AddDataSet(
new G4BGGPionElasticXS(G4PionPlus::PionPlus()));
93 procMan->AddDiscreteProcess(pipProcEl);
96 G4HadronInelasticProcess* pipProcInel =
new G4HadronInelasticProcess(
"pi+Inelastic", G4PionPlus::Definition());
97 pipProcInel->RegisterMe(loInelModel);
98 pipProcInel->RegisterMe(
m_ftfp);
99 pipProcInel->AddDataSet(
new G4BGGPionInelasticXS(G4PionPlus::PionPlus()));
100 procMan->AddDiscreteProcess(pipProcInel);
106 procMan = G4PionMinus::PionMinus()->GetProcessManager();
109 G4HadronElasticProcess* pimProcEl =
new G4HadronElasticProcess;
110 pimProcEl->RegisterMe(loElModel);
111 pimProcEl->RegisterMe(hiElModel);
112 pimProcEl->AddDataSet(
new G4BGGPionElasticXS(G4PionMinus::PionMinus()));
113 procMan->AddDiscreteProcess(pimProcEl);
116 G4HadronInelasticProcess* pimProcInel =
new G4HadronInelasticProcess(
"pi-Inelastic", G4PionMinus::Definition());
117 pimProcInel->RegisterMe(loInelModel);
118 pimProcInel->RegisterMe(
m_ftfp);
119 pimProcInel->AddDataSet(
new G4BGGPionInelasticXS(G4PionMinus::PionMinus()));
120 procMan->AddDiscreteProcess(pimProcInel);
123 G4HadronicAbsorptionBertini* bertAbsorb =
new G4HadronicAbsorptionBertini;
124 procMan->AddRestProcess(bertAbsorb);