15 #include "G4MesonConstructor.hh"
17 #include "G4ProcessManager.hh"
18 #include "G4Version.hh"
19 #if G4VERSION_NUMBER < 1100
20 #include "G4PionPlusInelasticProcess.hh"
21 #include "G4PionMinusInelasticProcess.hh"
23 #include "G4HadronInelasticProcess.hh"
25 #include "G4HadronElasticProcess.hh"
26 #include "G4HadronicAbsorptionBertini.hh"
28 #include "G4CascadeInterface.hh"
29 #include "G4TheoFSGenerator.hh"
30 #include "G4FTFModel.hh"
31 #include "G4ExcitedStringDecay.hh"
32 #include "G4LundStringFragmentation.hh"
33 #include "G4GeneratorPrecompoundInterface.hh"
34 #include "G4HadronElastic.hh"
35 #include "G4ElasticHadrNucleusHE.hh"
37 #include "G4BGGPionElasticXS.hh"
38 #include "G4BGGPionInelasticXS.hh"
40 #include "G4SystemOfUnits.hh"
42 #if G4VERSION_NUMBER < 1100
55 : G4VPhysicsConstructor(
"eASTPion")
68 G4ProcessManager* procMan;
71 G4HadronElastic* loElModel =
new G4HadronElastic();
72 loElModel->SetMaxEnergy(1.0001*
GeV);
75 G4ElasticHadrNucleusHE* hiElModel =
new G4ElasticHadrNucleusHE();
76 hiElModel->SetMinEnergy(1.0*
GeV);
79 G4CascadeInterface* loInelModel =
new G4CascadeInterface;
80 loInelModel->SetMinEnergy(0.0);
81 loInelModel->SetMaxEnergy(12.0*
GeV);
84 ftfp =
new G4TheoFSGenerator(
"FTFP");
87 new G4ExcitedStringDecay(
fragModel =
new G4LundStringFragmentation);
100 procMan = G4PionPlus::PionPlus()->GetProcessManager();
103 G4HadronElasticProcess* pipProcEl =
new G4HadronElasticProcess;
104 pipProcEl->RegisterMe(loElModel);
105 pipProcEl->RegisterMe(hiElModel);
106 pipProcEl->AddDataSet(
new G4BGGPionElasticXS(G4PionPlus::PionPlus() ) );
107 procMan->AddDiscreteProcess(pipProcEl);
110 #if G4VERSION_NUMBER < 1100
111 G4PionPlusInelasticProcess* pipProcInel =
new G4PionPlusInelasticProcess;
113 auto* pipProcInel =
new G4HadronInelasticProcess(
"PionPlusInelasticProcess",
114 G4PionPlus::PionPlus() );
116 pipProcInel->RegisterMe(loInelModel);
117 pipProcInel->RegisterMe(
ftfp);
118 pipProcInel->AddDataSet(
new G4BGGPionInelasticXS(G4PionPlus::PionPlus() ) );
119 procMan->AddDiscreteProcess(pipProcInel);
125 procMan = G4PionMinus::PionMinus()->GetProcessManager();
128 G4HadronElasticProcess* pimProcEl =
new G4HadronElasticProcess;
129 pimProcEl->RegisterMe(loElModel);
130 pimProcEl->RegisterMe(hiElModel);
131 pimProcEl->AddDataSet(
new G4BGGPionElasticXS(G4PionMinus::PionMinus() ) );
132 procMan->AddDiscreteProcess(pimProcEl);
135 #if G4VERSION_NUMBER < 1100
136 G4PionMinusInelasticProcess* pimProcInel =
new G4PionMinusInelasticProcess;
138 auto* pimProcInel =
new G4HadronInelasticProcess(
"PionMinusInelasticProcess",
139 G4PionMinus::PionMinus() );
141 pimProcInel->RegisterMe(loInelModel);
142 pimProcInel->RegisterMe(
ftfp);
143 pimProcInel->AddDataSet(
new G4BGGPionInelasticXS(G4PionMinus::PionMinus() ) );
144 procMan->AddDiscreteProcess(pimProcInel);
147 G4HadronicAbsorptionBertini* bertAbsorb =
new G4HadronicAbsorptionBertini;
148 procMan->AddRestProcess(bertAbsorb);