16 #include "G4ProcessManager.hh"
17 #include "G4Version.hh"
18 #if G4VERSION_NUMBER < 1100
19 #include "G4KaonPlusInelasticProcess.hh"
20 #include "G4KaonMinusInelasticProcess.hh"
21 #include "G4KaonZeroLInelasticProcess.hh"
22 #include "G4KaonZeroSInelasticProcess.hh"
24 #include "G4HadronInelasticProcess.hh"
26 #include "G4HadronElasticProcess.hh"
27 #include "G4HadronicAbsorptionBertini.hh"
29 #include "G4CascadeInterface.hh"
30 #include "G4TheoFSGenerator.hh"
31 #include "G4FTFModel.hh"
32 #include "G4ExcitedStringDecay.hh"
33 #include "G4LundStringFragmentation.hh"
34 #include "G4GeneratorPrecompoundInterface.hh"
35 #include "G4HadronElastic.hh"
37 #include "G4ChipsKaonPlusInelasticXS.hh"
38 #include "G4ChipsKaonMinusInelasticXS.hh"
39 #include "G4ChipsKaonZeroInelasticXS.hh"
40 #include "G4CrossSectionElastic.hh"
41 #include "G4ComponentGGHadronNucleusXsc.hh"
42 #include "G4SystemOfUnits.hh"
44 #if G4VERSION_NUMBER < 1100
57 : G4VPhysicsConstructor(
"eASTKaon")
70 G4ProcessManager* procMan;
73 G4HadronElastic* elModel =
new G4HadronElastic();
76 G4CascadeInterface* loInelModel =
new G4CascadeInterface;
77 loInelModel->SetMinEnergy(0.0);
78 loInelModel->SetMaxEnergy(12.0*
GeV);
81 ftfp =
new G4TheoFSGenerator(
"FTFP");
84 new G4ExcitedStringDecay(
fragModel =
new G4LundStringFragmentation);
94 G4VCrossSectionDataSet* kpCS =
new G4ChipsKaonPlusInelasticXS;
95 G4VCrossSectionDataSet* kmCS =
new G4ChipsKaonMinusInelasticXS;
96 G4VCrossSectionDataSet* kzCS =
new G4ChipsKaonZeroInelasticXS;
99 G4VCrossSectionDataSet* kelCS =
100 new G4CrossSectionElastic(
new G4ComponentGGHadronNucleusXsc);
106 procMan = G4KaonPlus::KaonPlus()->GetProcessManager();
109 G4HadronElasticProcess* kpProcEl =
new G4HadronElasticProcess;
110 kpProcEl->RegisterMe(elModel);
111 kpProcEl->AddDataSet(kelCS);
112 procMan->AddDiscreteProcess(kpProcEl);
115 #if G4VERSION_NUMBER < 1100
116 G4KaonPlusInelasticProcess* kpProcInel =
new G4KaonPlusInelasticProcess;
118 auto* kpProcInel =
new G4HadronInelasticProcess(
"KaonPlusInelasticProcess",
119 G4KaonPlus::KaonPlus() );
121 kpProcInel->RegisterMe(loInelModel);
122 kpProcInel->RegisterMe(
ftfp);
123 kpProcInel->AddDataSet(kpCS);
124 procMan->AddDiscreteProcess(kpProcInel);
130 procMan = G4KaonMinus::KaonMinus()->GetProcessManager();
133 G4HadronElasticProcess* kmProcEl =
new G4HadronElasticProcess;
134 kmProcEl->RegisterMe(elModel);
135 kmProcEl->AddDataSet(kelCS);
136 procMan->AddDiscreteProcess(kmProcEl);
139 #if G4VERSION_NUMBER < 1100
140 G4KaonMinusInelasticProcess* kmProcInel =
new G4KaonMinusInelasticProcess;
142 auto* kmProcInel =
new G4HadronInelasticProcess(
"KaonMinusInelasticProcess",
143 G4KaonMinus::KaonMinus() );
145 kmProcInel->RegisterMe(loInelModel);
146 kmProcInel->RegisterMe(
ftfp);
147 kmProcInel->AddDataSet(kmCS);
148 procMan->AddDiscreteProcess(kmProcInel);
151 G4HadronicAbsorptionBertini* bertAbsorb =
new G4HadronicAbsorptionBertini;
152 procMan->AddRestProcess(bertAbsorb);
158 procMan = G4KaonZeroLong::KaonZeroLong()->GetProcessManager();
161 G4HadronElasticProcess* k0LProcEl =
new G4HadronElasticProcess;
162 k0LProcEl->RegisterMe(elModel);
163 k0LProcEl->AddDataSet(kelCS);
164 procMan->AddDiscreteProcess(k0LProcEl);
167 #if G4VERSION_NUMBER < 1100
168 G4KaonZeroLInelasticProcess* k0LProcInel =
new G4KaonZeroLInelasticProcess;
170 auto* k0LProcInel =
new G4HadronInelasticProcess(
"Kaon0LongInelasticProcess",
171 G4KaonZeroLong::KaonZeroLong() );
173 k0LProcInel->RegisterMe(loInelModel);
174 k0LProcInel->RegisterMe(
ftfp);
175 k0LProcInel->AddDataSet(kzCS);
176 procMan->AddDiscreteProcess(k0LProcInel);
182 procMan = G4KaonZeroShort::KaonZeroShort()->GetProcessManager();
185 G4HadronElasticProcess* k0SProcEl =
new G4HadronElasticProcess;
186 k0SProcEl->RegisterMe(elModel);
187 k0SProcEl->AddDataSet(kelCS);
188 procMan->AddDiscreteProcess(k0SProcEl);
191 #if G4VERSION_NUMBER < 1100
192 G4KaonZeroSInelasticProcess* k0SProcInel =
new G4KaonZeroSInelasticProcess;
194 auto* k0SProcInel =
new G4HadronInelasticProcess(
"Kaon0ShortInelasticProcess",
195 G4KaonZeroShort::KaonZeroShort() );
197 k0SProcInel->RegisterMe(loInelModel);
198 k0SProcInel->RegisterMe(
ftfp);
199 k0SProcInel->AddDataSet(kzCS);
200 procMan->AddDiscreteProcess(k0SProcInel);