ECCE @ EIC Software
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
KaonPhysics.cc
Go to the documentation of this file. Or view the newest version in sPHENIX GitHub for file KaonPhysics.cc
1 // $Id: $
3 // //
4 // File: KaonPhysics.cc //
5 // Description: Kaon hadronic physics constructor for EICPhysicsList //
6 // //
7 // Author: Dennis H. Wright (SLAC) //
8 // Date: 3 July 2018 //
9 // //
11 
12 
13 #include "KaonPhysics.hh"
14 
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>
22 
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 
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>
38 
39 
41  ftfp(nullptr),
42  stringModel(nullptr),
43  stringDecay(nullptr),
44  fragModel(nullptr),
45  preCompoundModel(nullptr)
46 {}
47 
48 
50 {
51  delete stringDecay;
52  delete stringModel;
53  delete fragModel;
54  delete preCompoundModel;
55 }
56 
57 
59 {}
60 
61 
63 {
64  G4ProcessManager* procMan;
65 
66  // One elastic model for all kaon energies
67  G4HadronElastic* elModel = new G4HadronElastic();
68 
69  // Use Bertini cascade for low energies
70  G4CascadeInterface* loInelModel = new G4CascadeInterface;
71  loInelModel->SetMinEnergy(0.0);
72  loInelModel->SetMaxEnergy(12.0*GeV);
73 
74  // Use FTFP for high energies ==>> eventually replace this with new class FTFPInterface
75  ftfp = new G4TheoFSGenerator("FTFP");
76  stringModel = new G4FTFModel;
77  stringDecay =
81 
84  ftfp->SetMinEnergy(10*GeV);
85  ftfp->SetMaxEnergy(100*TeV);
86 
87  // Inelastic cross section sets
94 
95  // Elastic cross section
96  G4VCrossSectionDataSet* kelCS =
98 
100  // K+ //
102 
104 
105  // elastic
107  kpProcEl->RegisterMe(elModel);
108  kpProcEl->AddDataSet(kelCS);
109  procMan->AddDiscreteProcess(kpProcEl);
110 
111  // inelastic
113  kpProcInel->RegisterMe(loInelModel);
114  kpProcInel->RegisterMe(ftfp);
115  kpProcInel->AddDataSet(kpCS);
116  procMan->AddDiscreteProcess(kpProcInel);
117 
119  // K- //
121 
123 
124  // elastic
126  kmProcEl->RegisterMe(elModel);
127  kmProcEl->AddDataSet(kelCS);
128  procMan->AddDiscreteProcess(kmProcEl);
129 
130  // inelastic
132  kmProcInel->RegisterMe(loInelModel);
133  kmProcInel->RegisterMe(ftfp);
134  kmProcInel->AddDataSet(kmCS);
135  procMan->AddDiscreteProcess(kmProcInel);
136 
137  // stopping
139  procMan->AddRestProcess(bertAbsorb);
140 
142  // K0L //
144 
146 
147  // elastic
149  k0LProcEl->RegisterMe(elModel);
150  k0LProcEl->AddDataSet(kelCS);
151  procMan->AddDiscreteProcess(k0LProcEl);
152 
153  // inelastic
155  k0LProcInel->RegisterMe(loInelModel);
156  k0LProcInel->RegisterMe(ftfp);
157  k0LProcInel->AddDataSet(kzCS);
158  procMan->AddDiscreteProcess(k0LProcInel);
159 
161  // K0S //
163 
165 
166  // elastic
168  k0SProcEl->RegisterMe(elModel);
169  k0SProcEl->AddDataSet(kelCS);
170  procMan->AddDiscreteProcess(k0SProcEl);
171 
172  // inelastic
174  k0SProcInel->RegisterMe(loInelModel);
175  k0SProcInel->RegisterMe(ftfp);
176  k0SProcInel->AddDataSet(kzCS);
177  procMan->AddDiscreteProcess(k0SProcInel);
178 }