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
IonPhysics.cc
Go to the documentation of this file.
Or view
the newest version in sPHENIX GitHub for file IonPhysics.cc
1
// $Id: $
3
// //
4
// File: IonPhysics.cc //
5
// Description: Ion hadronic physics constructor for EICPhysicsList //
6
// //
7
// Author: Dennis H. Wright (SLAC) //
8
// Date: 6 July 2018 //
9
// //
11
12
13
#include "
IonPhysics.hh
"
14
15
#include <Geant4/G4ProcessManager.hh>
16
#include <Geant4/G4HadronElasticProcess.hh>
17
#include <Geant4/G4HadronInelasticProcess.hh>
18
19
#include <Geant4/G4TheoFSGenerator.hh>
20
#include <Geant4/G4FTFModel.hh>
21
#include <Geant4/G4ExcitedStringDecay.hh>
22
#include <Geant4/G4LundStringFragmentation.hh>
23
#include <Geant4/G4GeneratorPrecompoundInterface.hh>
24
#include <Geant4/G4QMDReaction.hh>
25
#include <Geant4/G4HadronicInteractionRegistry.hh>
26
#include <Geant4/G4PreCompoundModel.hh>
27
#include <Geant4/G4BinaryLightIonReaction.hh>
28
#include <Geant4/G4HadronElastic.hh>
29
#include <Geant4/G4NuclNuclDiffuseElastic.hh>
30
31
#include <Geant4/G4CrossSectionElastic.hh>
32
#include <Geant4/G4CrossSectionInelastic.hh>
33
#include <Geant4/G4ComponentGGNuclNuclXsc.hh>
34
#include <Geant4/G4SystemOfUnits.hh>
35
36
37
IonPhysics::IonPhysics
():
38
ftfp(nullptr),
39
stringModel(nullptr),
40
stringDecay(nullptr),
41
fragModel(nullptr),
42
preCompoundModel(nullptr),
43
theGGNuclNuclXS(nullptr),
44
ionGGXS(nullptr)
45
{}
46
47
48
IonPhysics::~IonPhysics
()
49
{
50
delete
stringDecay
;
51
delete
stringModel
;
52
delete
fragModel
;
53
delete
preCompoundModel
;
54
55
delete
theGGNuclNuclXS
;
56
delete
ionGGXS
;
57
}
58
59
60
void
IonPhysics::ConstructParticle
()
61
{}
62
63
64
void
IonPhysics::ConstructProcess
()
65
{
66
G4ProcessManager
* procMan = 0;
67
68
// Elastic model for generic ions (z > 2)
69
G4NuclNuclDiffuseElastic
* ionElastic =
new
G4NuclNuclDiffuseElastic
;
70
ionElastic->
SetMinEnergy
(0.0);
71
72
// FTFP ==>> eventually replace this with new class FTFPInterface
73
ftfp
=
new
G4TheoFSGenerator
(
"FTFP"
);
74
stringModel
=
new
G4FTFModel
;
75
stringDecay
=
76
new
G4ExcitedStringDecay
(
fragModel
=
new
G4LundStringFragmentation
);
77
stringModel
->
SetFragmentationModel
(
stringDecay
);
78
preCompoundModel
=
new
G4GeneratorPrecompoundInterface
();
79
80
ftfp
->
SetHighEnergyGenerator
(
stringModel
);
81
ftfp
->
SetTransport
(
preCompoundModel
);
82
ftfp
->
SetMinEnergy
(10.01*
GeV
);
83
ftfp
->
SetMaxEnergy
(1.0*
TeV
);
84
85
// QMD model
86
G4QMDReaction
* qmd =
new
G4QMDReaction
;
87
qmd->
SetMinEnergy
(100.0*
MeV
);
88
qmd->
SetMaxEnergy
(10.0*
GeV
);
89
90
// BIC ion model
91
G4HadronicInteraction
*
p
=
92
G4HadronicInteractionRegistry::Instance
()->
FindModel
(
"PRECO"
);
93
G4PreCompoundModel
* thePreCompound =
static_cast<
G4PreCompoundModel
*
>
(
p
);
94
if
(!thePreCompound) { thePreCompound =
new
G4PreCompoundModel
; }
95
96
G4BinaryLightIonReaction
* ionBC =
new
G4BinaryLightIonReaction
(thePreCompound);
97
ionBC->
SetMinEnergy
(0.0*
MeV
);
98
ionBC->
SetMaxEnergy
(110.0*
MeV
);
99
100
// Elastic cross section set
101
ionGGXS
=
new
G4ComponentGGNuclNuclXsc
;
102
G4VCrossSectionDataSet
* ionElasticXS =
new
G4CrossSectionElastic
(
ionGGXS
);
103
ionElasticXS->
SetMinKinEnergy
(0.0);
104
105
// Inelastic cross section set
106
theGGNuclNuclXS
=
new
G4ComponentGGNuclNuclXsc
();
107
G4VCrossSectionDataSet
* nuclNuclXS =
108
new
G4CrossSectionInelastic
(
theGGNuclNuclXS
);
109
111
// Deuteron //
113
114
procMan =
G4Deuteron::Deuteron
()->
GetProcessManager
();
115
116
// elastic
117
// no model available
118
119
// inelastic
120
G4HadronInelasticProcess
* deutProcInel =
121
new
G4HadronInelasticProcess
(
"DeuteronInelProcess"
,
G4Deuteron::Deuteron
() );
122
deutProcInel->
RegisterMe
(ionBC);
123
deutProcInel->
RegisterMe
(qmd);
124
deutProcInel->
RegisterMe
(
ftfp
);
125
deutProcInel->
AddDataSet
(nuclNuclXS);
126
procMan->
AddDiscreteProcess
(deutProcInel);
127
129
// Triton //
131
132
procMan =
G4Triton::Triton
()->
GetProcessManager
();
133
134
// elastic
135
// no model available
136
137
// inelastic
138
G4HadronInelasticProcess
* tritProcInel =
139
new
G4HadronInelasticProcess
(
"TritonInelProcess"
,
G4Triton::Triton
() );
140
tritProcInel->
RegisterMe
(ionBC);
141
tritProcInel->
RegisterMe
(qmd);
142
tritProcInel->
RegisterMe
(
ftfp
);
143
tritProcInel->
AddDataSet
(nuclNuclXS);
144
procMan->
AddDiscreteProcess
(tritProcInel);
145
147
// He3 //
149
150
procMan =
G4He3::He3
()->
GetProcessManager
();
151
152
// elastic
153
// no model available
154
155
// inelastic
156
G4HadronInelasticProcess
* he3ProcInel =
157
new
G4HadronInelasticProcess
(
"He3InelProcess"
,
G4He3::He3
() );
158
he3ProcInel->
RegisterMe
(ionBC);
159
he3ProcInel->
RegisterMe
(qmd);
160
he3ProcInel->
RegisterMe
(
ftfp
);
161
he3ProcInel->
AddDataSet
(nuclNuclXS);
162
procMan->
AddDiscreteProcess
(he3ProcInel);
163
165
// Alpha //
167
168
procMan =
G4Alpha::Alpha
()->
GetProcessManager
();
169
170
// elastic
171
// no model available
172
173
// inelastic
174
G4HadronInelasticProcess
* alphProcInel =
175
new
G4HadronInelasticProcess
(
"AlphaInelProcess"
,
G4Alpha::Alpha
() );
176
alphProcInel->
RegisterMe
(ionBC);
177
alphProcInel->
RegisterMe
(qmd);
178
alphProcInel->
RegisterMe
(
ftfp
);
179
alphProcInel->
AddDataSet
(nuclNuclXS);
180
procMan->
AddDiscreteProcess
(alphProcInel);
181
183
// Generic ion //
185
186
procMan =
G4GenericIon::GenericIon
()->
GetProcessManager
();
187
188
// elastic
189
G4HadronElasticProcess
* ionProcEl =
new
G4HadronElasticProcess
;
190
ionProcEl->
RegisterMe
(ionElastic);
191
ionProcEl->
AddDataSet
(ionElasticXS);
192
procMan->
AddDiscreteProcess
(ionProcEl);
193
194
// inelastic
195
G4HadronInelasticProcess
* genIonProcInel =
196
new
G4HadronInelasticProcess
(
"IonInelProcess"
,
G4GenericIon::GenericIon
() );
197
genIonProcInel->
RegisterMe
(ionBC);
198
genIonProcInel->
RegisterMe
(qmd);
199
genIonProcInel->
RegisterMe
(
ftfp
);
200
genIonProcInel->
AddDataSet
(nuclNuclXS);
201
procMan->
AddDiscreteProcess
(genIonProcInel);
202
203
}
204
coresoftware
blob
master
simulation
g4simulation
EICPhysicsList
IonPhysics.cc
Built by
Jin Huang
. updated:
Wed Jun 29 2022 17:24:40
using
1.8.2 with
ECCE GitHub integration