15 #include <Geant4/G4ProcessManager.hh>
16 #include <Geant4/G4KaonPlusInelasticProcess.hh>
17 #include <Geant4/G4KaonMinusInelasticProcess.hh>
18 #include <Geant4/G4KaonZeroLInelasticProcess.hh>
19 #include <Geant4/G4KaonZeroSInelasticProcess.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>
31 #include <Geant4/G4ChipsKaonPlusInelasticXS.hh>
32 #include <Geant4/G4ChipsKaonMinusInelasticXS.hh>
33 #include <Geant4/G4ChipsKaonZeroInelasticXS.hh>
34 #include <Geant4/G4CrossSectionPairGG.hh>
35 #include <Geant4/G4CrossSectionElastic.hh>
36 #include <Geant4/G4ComponentGGHadronNucleusXsc.hh>
37 #include <Geant4/G4SystemOfUnits.hh>
45 preCompoundModel(nullptr)
64 G4ProcessManager* procMan;
67 G4HadronElastic* elModel =
new G4HadronElastic();
70 G4CascadeInterface* loInelModel =
new G4CascadeInterface;
71 loInelModel->SetMinEnergy(0.0);
72 loInelModel->SetMaxEnergy(12.0*
GeV);
75 ftfp =
new G4TheoFSGenerator(
"FTFP");
78 new G4ExcitedStringDecay(
fragModel =
new G4LundStringFragmentation);
88 G4VCrossSectionDataSet* kpCS =
89 new G4CrossSectionPairGG(
new G4ChipsKaonPlusInelasticXS, 91*
GeV);
90 G4VCrossSectionDataSet* kmCS =
91 new G4CrossSectionPairGG(
new G4ChipsKaonMinusInelasticXS, 91*
GeV);
92 G4VCrossSectionDataSet* kzCS =
93 new G4CrossSectionPairGG(
new G4ChipsKaonZeroInelasticXS, 91*
GeV);
96 G4VCrossSectionDataSet* kelCS =
97 new G4CrossSectionElastic(
new G4ComponentGGHadronNucleusXsc);
103 procMan = G4KaonPlus::KaonPlus()->GetProcessManager();
106 G4HadronElasticProcess* kpProcEl =
new G4HadronElasticProcess;
107 kpProcEl->RegisterMe(elModel);
108 kpProcEl->AddDataSet(kelCS);
109 procMan->AddDiscreteProcess(kpProcEl);
112 G4KaonPlusInelasticProcess* kpProcInel =
new G4KaonPlusInelasticProcess;
113 kpProcInel->RegisterMe(loInelModel);
114 kpProcInel->RegisterMe(
ftfp);
115 kpProcInel->AddDataSet(kpCS);
116 procMan->AddDiscreteProcess(kpProcInel);
122 procMan = G4KaonMinus::KaonMinus()->GetProcessManager();
125 G4HadronElasticProcess* kmProcEl =
new G4HadronElasticProcess;
126 kmProcEl->RegisterMe(elModel);
127 kmProcEl->AddDataSet(kelCS);
128 procMan->AddDiscreteProcess(kmProcEl);
131 G4KaonMinusInelasticProcess* kmProcInel =
new G4KaonMinusInelasticProcess;
132 kmProcInel->RegisterMe(loInelModel);
133 kmProcInel->RegisterMe(
ftfp);
134 kmProcInel->AddDataSet(kmCS);
135 procMan->AddDiscreteProcess(kmProcInel);
138 G4HadronicAbsorptionBertini* bertAbsorb =
new G4HadronicAbsorptionBertini;
139 procMan->AddRestProcess(bertAbsorb);
145 procMan = G4KaonZeroLong::KaonZeroLong()->GetProcessManager();
148 G4HadronElasticProcess* k0LProcEl =
new G4HadronElasticProcess;
149 k0LProcEl->RegisterMe(elModel);
150 k0LProcEl->AddDataSet(kelCS);
151 procMan->AddDiscreteProcess(k0LProcEl);
154 G4KaonZeroLInelasticProcess* k0LProcInel =
new G4KaonZeroLInelasticProcess;
155 k0LProcInel->RegisterMe(loInelModel);
156 k0LProcInel->RegisterMe(
ftfp);
157 k0LProcInel->AddDataSet(kzCS);
158 procMan->AddDiscreteProcess(k0LProcInel);
164 procMan = G4KaonZeroShort::KaonZeroShort()->GetProcessManager();
167 G4HadronElasticProcess* k0SProcEl =
new G4HadronElasticProcess;
168 k0SProcEl->RegisterMe(elModel);
169 k0SProcEl->AddDataSet(kelCS);
170 procMan->AddDiscreteProcess(k0SProcEl);
173 G4KaonZeroSInelasticProcess* k0SProcInel =
new G4KaonZeroSInelasticProcess;
174 k0SProcInel->RegisterMe(loInelModel);
175 k0SProcInel->RegisterMe(
ftfp);
176 k0SProcInel->AddDataSet(kzCS);
177 procMan->AddDiscreteProcess(k0SProcInel);