ECCE @ EIC Software
Reference for
ECCE @ EIC
simulation and reconstruction software on GitHub
Home page
Related Pages
Modules
Namespaces
Classes
Files
External Links
File List
File Members
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
40
KaonPhysics::KaonPhysics
():
41
ftfp(nullptr),
42
stringModel(nullptr),
43
stringDecay(nullptr),
44
fragModel(nullptr),
45
preCompoundModel(nullptr)
46
{}
47
48
49
KaonPhysics::~KaonPhysics
()
50
{
51
delete
stringDecay
;
52
delete
stringModel
;
53
delete
fragModel
;
54
delete
preCompoundModel
;
55
}
56
57
58
void
KaonPhysics::ConstructParticle
()
59
{}
60
61
62
void
KaonPhysics::ConstructProcess
()
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
=
78
new
G4ExcitedStringDecay
(
fragModel
=
new
G4LundStringFragmentation
);
79
stringModel
->
SetFragmentationModel
(
stringDecay
);
80
preCompoundModel
=
new
G4GeneratorPrecompoundInterface
();
81
82
ftfp
->
SetHighEnergyGenerator
(
stringModel
);
83
ftfp
->
SetTransport
(
preCompoundModel
);
84
ftfp
->
SetMinEnergy
(10*
GeV
);
85
ftfp
->
SetMaxEnergy
(100*
TeV
);
86
87
// Inelastic cross section sets
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
);
94
95
// Elastic cross section
96
G4VCrossSectionDataSet
* kelCS =
97
new
G4CrossSectionElastic
(
new
G4ComponentGGHadronNucleusXsc
);
98
100
// K+ //
102
103
procMan =
G4KaonPlus::KaonPlus
()->
GetProcessManager
();
104
105
// elastic
106
G4HadronElasticProcess
* kpProcEl =
new
G4HadronElasticProcess
;
107
kpProcEl->
RegisterMe
(elModel);
108
kpProcEl->
AddDataSet
(kelCS);
109
procMan->
AddDiscreteProcess
(kpProcEl);
110
111
// inelastic
112
G4KaonPlusInelasticProcess
* kpProcInel =
new
G4KaonPlusInelasticProcess
;
113
kpProcInel->
RegisterMe
(loInelModel);
114
kpProcInel->
RegisterMe
(
ftfp
);
115
kpProcInel->
AddDataSet
(kpCS);
116
procMan->
AddDiscreteProcess
(kpProcInel);
117
119
// K- //
121
122
procMan =
G4KaonMinus::KaonMinus
()->
GetProcessManager
();
123
124
// elastic
125
G4HadronElasticProcess
* kmProcEl =
new
G4HadronElasticProcess
;
126
kmProcEl->
RegisterMe
(elModel);
127
kmProcEl->
AddDataSet
(kelCS);
128
procMan->
AddDiscreteProcess
(kmProcEl);
129
130
// inelastic
131
G4KaonMinusInelasticProcess
* kmProcInel =
new
G4KaonMinusInelasticProcess
;
132
kmProcInel->
RegisterMe
(loInelModel);
133
kmProcInel->
RegisterMe
(
ftfp
);
134
kmProcInel->
AddDataSet
(kmCS);
135
procMan->
AddDiscreteProcess
(kmProcInel);
136
137
// stopping
138
G4HadronicAbsorptionBertini
* bertAbsorb =
new
G4HadronicAbsorptionBertini
;
139
procMan->
AddRestProcess
(bertAbsorb);
140
142
// K0L //
144
145
procMan =
G4KaonZeroLong::KaonZeroLong
()->
GetProcessManager
();
146
147
// elastic
148
G4HadronElasticProcess
* k0LProcEl =
new
G4HadronElasticProcess
;
149
k0LProcEl->
RegisterMe
(elModel);
150
k0LProcEl->
AddDataSet
(kelCS);
151
procMan->
AddDiscreteProcess
(k0LProcEl);
152
153
// inelastic
154
G4KaonZeroLInelasticProcess
* k0LProcInel =
new
G4KaonZeroLInelasticProcess
;
155
k0LProcInel->
RegisterMe
(loInelModel);
156
k0LProcInel->
RegisterMe
(
ftfp
);
157
k0LProcInel->
AddDataSet
(kzCS);
158
procMan->
AddDiscreteProcess
(k0LProcInel);
159
161
// K0S //
163
164
procMan =
G4KaonZeroShort::KaonZeroShort
()->
GetProcessManager
();
165
166
// elastic
167
G4HadronElasticProcess
* k0SProcEl =
new
G4HadronElasticProcess
;
168
k0SProcEl->
RegisterMe
(elModel);
169
k0SProcEl->
AddDataSet
(kelCS);
170
procMan->
AddDiscreteProcess
(k0SProcEl);
171
172
// inelastic
173
G4KaonZeroSInelasticProcess
* k0SProcInel =
new
G4KaonZeroSInelasticProcess
;
174
k0SProcInel->
RegisterMe
(loInelModel);
175
k0SProcInel->
RegisterMe
(
ftfp
);
176
k0SProcInel->
AddDataSet
(kzCS);
177
procMan->
AddDiscreteProcess
(k0SProcInel);
178
}
coresoftware
blob
master
simulation
g4simulation
EICPhysicsList
KaonPhysics.cc
Built by
Jin Huang
. updated:
Wed Jun 29 2022 17:24:40
using
1.8.2 with
ECCE GitHub integration