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
G4HyperonFTFPBuilder.cc
Go to the documentation of this file.
Or view
the newest version in sPHENIX GitHub for file G4HyperonFTFPBuilder.cc
1
//
2
// ********************************************************************
3
// * License and Disclaimer *
4
// * *
5
// * The Geant4 software is copyright of the Copyright Holders of *
6
// * the Geant4 Collaboration. It is provided under the terms and *
7
// * conditions of the Geant4 Software License, included in the file *
8
// * LICENSE and available at http://cern.ch/geant4/license . These *
9
// * include a list of copyright holders. *
10
// * *
11
// * Neither the authors of this software system, nor their employing *
12
// * institutes,nor the agencies providing financial support for this *
13
// * work make any representation or warranty, express or implied, *
14
// * regarding this software system or assume any liability for its *
15
// * use. Please see the license in the file LICENSE and URL above *
16
// * for the full disclaimer and the limitation of liability. *
17
// * *
18
// * This code implementation is the result of the scientific and *
19
// * technical work of the GEANT4 collaboration. *
20
// * By using, copying, modifying or distributing the software (or *
21
// * any work based on the software) you agree to acknowledge its *
22
// * use in resulting scientific publications, and indicate your *
23
// * acceptance of all terms of the Geant4 Software license. *
24
// ********************************************************************
25
//
26
//
27
//---------------------------------------------------------------------------
28
//
29
// ClassName: G4HyperonFTFPBuilder
30
//
31
// Author: 2012 G.Folger
32
// Implementation started from G4HyperonLHEPBuilder.
33
//
34
// Modified:
35
//----------------------------------------------------------------------------
36
//
37
#include "
G4HyperonFTFPBuilder.hh
"
38
39
#include "
G4SystemOfUnits.hh
"
40
#include "
G4ParticleDefinition.hh
"
41
#include "
G4ParticleTable.hh
"
42
#include "
G4ProcessManager.hh
"
43
#include "
G4CrossSectionInelastic.hh
"
44
#include "
G4ComponentGGHadronNucleusXsc.hh
"
45
#include "
G4HadronicParameters.hh
"
46
47
48
G4HyperonFTFPBuilder::G4HyperonFTFPBuilder
():
49
theLambdaInelastic(0),
50
theAntiLambdaInelastic(0),
51
theSigmaMinusInelastic(0),
52
theAntiSigmaMinusInelastic(0),
53
theSigmaPlusInelastic(0),
54
theAntiSigmaPlusInelastic(0),
55
theXiZeroInelastic(0),
56
theAntiXiZeroInelastic(0),
57
theXiMinusInelastic(0),
58
theAntiXiMinusInelastic(0),
59
theOmegaMinusInelastic(0),
60
theAntiOmegaMinusInelastic(0),
61
wasActivated(
false
)
62
{
63
64
// Hyperon : Bertini at low energies, then FTFP
65
66
HyperonFTFP
=
new
G4TheoFSGenerator
(
"FTFP"
);
67
68
HyperonFTFP
->
SetMinEnergy
(
G4HadronicParameters::Instance
()->GetMinEnergyTransitionFTF_Cascade() );
69
HyperonFTFP
->
SetMaxEnergy
(
G4HadronicParameters::Instance
()->GetMaxEnergy() );
70
71
theStringModel
=
new
G4FTFModel
;
72
theStringDecay
=
new
G4ExcitedStringDecay
(
theLund
=
new
G4LundStringFragmentation
);
73
theStringModel
->
SetFragmentationModel
(
theStringDecay
);
74
75
theCascade
=
new
G4GeneratorPrecompoundInterface
;
76
77
HyperonFTFP
->
SetTransport
(
theCascade
);
78
HyperonFTFP
->
SetHighEnergyGenerator
(
theStringModel
);
79
80
theBertini
=
new
G4CascadeInterface
;
81
theBertini
->
SetMinEnergy
( 0.0 );
82
theBertini
->
SetMaxEnergy
(
G4HadronicParameters::Instance
()->GetMaxEnergyTransitionFTF_Cascade() );
83
84
// AntiHyperons: Use FTFP for full energy range, starting at 0.
85
86
AntiHyperonFTFP
=
new
G4TheoFSGenerator
(
"FTFP"
);
87
AntiHyperonFTFP
->
SetMinEnergy
( 0.0 );
88
AntiHyperonFTFP
->
SetMaxEnergy
(
G4HadronicParameters::Instance
()->GetMaxEnergy() );
89
AntiHyperonFTFP
->
SetTransport
(
theCascade
);
90
AntiHyperonFTFP
->
SetHighEnergyGenerator
(
theStringModel
);
91
92
// use Glauber-Gribov cross sections
93
theInelasticCrossSection
=
new
G4CrossSectionInelastic
(
new
G4ComponentGGHadronNucleusXsc
);
94
}
95
96
G4HyperonFTFPBuilder::~G4HyperonFTFPBuilder
()
97
{
98
delete
theStringDecay
;
99
delete
theLund
;
100
}
101
102
void
G4HyperonFTFPBuilder::Build
()
103
{
104
G4ProcessManager
* aProcMan = 0;
105
wasActivated
=
true
;
106
107
// Lambda
108
theLambdaInelastic
=
new
G4LambdaInelasticProcess
();
109
theLambdaInelastic
->
RegisterMe
(
theBertini
);
110
theLambdaInelastic
->
RegisterMe
(
HyperonFTFP
);
111
theLambdaInelastic
->
AddDataSet
(
theInelasticCrossSection
);
112
aProcMan =
G4Lambda::Lambda
()->
GetProcessManager
();
113
aProcMan->
AddDiscreteProcess
(
theLambdaInelastic
);
114
115
// AntiLambda
116
theAntiLambdaInelastic
=
new
G4AntiLambdaInelasticProcess
();
117
theAntiLambdaInelastic
->
RegisterMe
(
AntiHyperonFTFP
);
118
theAntiLambdaInelastic
->
AddDataSet
(
theInelasticCrossSection
);
119
120
aProcMan =
G4AntiLambda::AntiLambda
()->
GetProcessManager
();
121
aProcMan->
AddDiscreteProcess
(
theAntiLambdaInelastic
);
122
123
// SigmaMinus
124
theSigmaMinusInelastic
=
new
G4SigmaMinusInelasticProcess
();
125
theSigmaMinusInelastic
->
RegisterMe
(
theBertini
);
126
theSigmaMinusInelastic
->
RegisterMe
(
HyperonFTFP
);
127
theSigmaMinusInelastic
->
AddDataSet
(
theInelasticCrossSection
);
128
129
aProcMan =
G4SigmaMinus::SigmaMinus
()->
GetProcessManager
();
130
aProcMan->
AddDiscreteProcess
(
theSigmaMinusInelastic
);
131
132
// anti-SigmaMinus
133
theAntiSigmaMinusInelastic
=
new
G4AntiSigmaMinusInelasticProcess
();
134
theAntiSigmaMinusInelastic
->
RegisterMe
(
AntiHyperonFTFP
);
135
theAntiSigmaMinusInelastic
->
AddDataSet
(
theInelasticCrossSection
);
136
137
aProcMan =
G4AntiSigmaMinus::AntiSigmaMinus
()->
GetProcessManager
();
138
aProcMan->
AddDiscreteProcess
(
theAntiSigmaMinusInelastic
);
139
140
// SigmaPlus
141
theSigmaPlusInelastic
=
new
G4SigmaPlusInelasticProcess
();
142
theSigmaPlusInelastic
->
RegisterMe
(
theBertini
);
143
theSigmaPlusInelastic
->
RegisterMe
(
HyperonFTFP
);
144
theSigmaPlusInelastic
->
AddDataSet
(
theInelasticCrossSection
);
145
146
aProcMan =
G4SigmaPlus::SigmaPlus
()->
GetProcessManager
();
147
aProcMan->
AddDiscreteProcess
(
theSigmaPlusInelastic
);
148
149
// anti-SigmaPlus
150
theAntiSigmaPlusInelastic
=
new
G4AntiSigmaPlusInelasticProcess
();
151
theAntiSigmaPlusInelastic
->
RegisterMe
(
AntiHyperonFTFP
);
152
theAntiSigmaPlusInelastic
->
AddDataSet
(
theInelasticCrossSection
);
153
154
aProcMan =
G4AntiSigmaPlus::AntiSigmaPlus
()->
GetProcessManager
();
155
aProcMan->
AddDiscreteProcess
(
theAntiSigmaPlusInelastic
);
156
157
// XiMinus
158
theXiMinusInelastic
=
new
G4XiMinusInelasticProcess
();
159
theXiMinusInelastic
->
RegisterMe
(
theBertini
);
160
theXiMinusInelastic
->
RegisterMe
(
HyperonFTFP
);
161
theXiMinusInelastic
->
AddDataSet
(
theInelasticCrossSection
);
162
163
aProcMan =
G4XiMinus::XiMinus
()->
GetProcessManager
();
164
aProcMan->
AddDiscreteProcess
(
theXiMinusInelastic
);
165
166
// anti-XiMinus
167
theAntiXiMinusInelastic
=
new
G4AntiXiMinusInelasticProcess
();
168
theAntiXiMinusInelastic
->
RegisterMe
(
AntiHyperonFTFP
);
169
theAntiXiMinusInelastic
->
AddDataSet
(
theInelasticCrossSection
);
170
171
aProcMan =
G4AntiXiMinus::AntiXiMinus
()->
GetProcessManager
();
172
aProcMan->
AddDiscreteProcess
(
theAntiXiMinusInelastic
);
173
174
// XiZero
175
theXiZeroInelastic
=
new
G4XiZeroInelasticProcess
();
176
theXiZeroInelastic
->
RegisterMe
(
theBertini
);
177
theXiZeroInelastic
->
RegisterMe
(
HyperonFTFP
);
178
theXiZeroInelastic
->
AddDataSet
(
theInelasticCrossSection
);
179
180
aProcMan =
G4XiZero::XiZero
()->
GetProcessManager
();
181
aProcMan->
AddDiscreteProcess
(
theXiZeroInelastic
);
182
183
// anti-XiZero
184
theAntiXiZeroInelastic
=
new
G4AntiXiZeroInelasticProcess
();
185
theAntiXiZeroInelastic
->
RegisterMe
(
AntiHyperonFTFP
);
186
theAntiXiZeroInelastic
->
AddDataSet
(
theInelasticCrossSection
);
187
188
aProcMan =
G4AntiXiZero::AntiXiZero
()->
GetProcessManager
();
189
aProcMan->
AddDiscreteProcess
(
theAntiXiZeroInelastic
);
190
191
// OmegaMinus
192
theOmegaMinusInelastic
=
new
G4OmegaMinusInelasticProcess
();
193
theOmegaMinusInelastic
->
RegisterMe
(
theBertini
);
194
theOmegaMinusInelastic
->
RegisterMe
(
HyperonFTFP
);
195
theOmegaMinusInelastic
->
AddDataSet
(
theInelasticCrossSection
);
196
197
aProcMan =
G4OmegaMinus::OmegaMinus
()->
GetProcessManager
();
198
aProcMan->
AddDiscreteProcess
(
theOmegaMinusInelastic
);
199
200
// anti-OmegaMinus
201
theAntiOmegaMinusInelastic
=
new
G4AntiOmegaMinusInelasticProcess
();
202
theAntiOmegaMinusInelastic
->
RegisterMe
(
AntiHyperonFTFP
);
203
theAntiOmegaMinusInelastic
->
AddDataSet
(
theInelasticCrossSection
);
204
205
aProcMan =
G4AntiOmegaMinus::AntiOmegaMinus
()->
GetProcessManager
();
206
aProcMan->
AddDiscreteProcess
(
theAntiOmegaMinusInelastic
);
207
}
208
geant4
tree
geant4-10.6-release
source
physics_lists
builders
src
G4HyperonFTFPBuilder.cc
Built by
Jin Huang
. updated:
Wed Jun 29 2022 17:25:26
using
1.8.2 with
ECCE GitHub integration