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
G4HadronPhysicsQGSP_BIC_HP.cc
Go to the documentation of this file.
Or view
the newest version in sPHENIX GitHub for file G4HadronPhysicsQGSP_BIC_HP.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: G4HadronPhysicsQGSP_BIC_HP
30
//
31
// Author: 2006 G.Folger
32
//
33
// Based on G4HadronPhysicsQGSP_BIC
34
//
35
// Modified:
36
// 25.04.2007 G.Folger: Add code for quasielastic
37
// 31.10.2012 A.Ribon: Use G4MiscBuilder
38
// 19.03.2013 A.Ribon: Replace LEP with FTFP and BERT
39
//
40
//----------------------------------------------------------------------------
41
//
42
#include <iomanip>
43
44
#include "
G4HadronPhysicsQGSP_BIC_HP.hh
"
45
46
#include "
globals.hh
"
47
#include "
G4ios.hh
"
48
#include "
G4SystemOfUnits.hh
"
49
#include "
G4ParticleDefinition.hh
"
50
#include "
G4ParticleTable.hh
"
51
52
#include "
G4MesonConstructor.hh
"
53
#include "
G4BaryonConstructor.hh
"
54
#include "
G4ShortLivedConstructor.hh
"
55
#include "
G4IonConstructor.hh
"
56
57
#include "
G4HadronCaptureProcess.hh
"
58
#include "
G4NeutronRadCapture.hh
"
59
#include "
G4NeutronCaptureXS.hh
"
60
#include "
G4ParticleHPCaptureData.hh
"
61
#include "
G4LFission.hh
"
62
63
#include "
G4PhysListUtil.hh
"
64
65
#include "
G4HadronicParameters.hh
"
66
67
// factory
68
#include "
G4PhysicsConstructorFactory.hh
"
69
//
70
G4_DECLARE_PHYSCONSTR_FACTORY
(
G4HadronPhysicsQGSP_BIC_HP
);
71
72
G4ThreadLocal
G4HadronPhysicsQGSP_BIC_HP::ThreadPrivate
*
73
G4HadronPhysicsQGSP_BIC_HP::tpdata
=
nullptr
;
74
75
G4HadronPhysicsQGSP_BIC_HP::G4HadronPhysicsQGSP_BIC_HP
(
G4int
)
76
:
G4VPhysicsConstructor
(
"hInelastic QGSP_BIC_HP"
)
77
{}
78
79
G4HadronPhysicsQGSP_BIC_HP::G4HadronPhysicsQGSP_BIC_HP
(
const
G4String
&
name
,
G4bool
/* quasiElastic */
)
80
:
G4VPhysicsConstructor
(name)
81
{}
82
83
void
G4HadronPhysicsQGSP_BIC_HP::CreateModels
()
84
{
85
G4bool
quasiElasticFTF=
false
;
// Use built-in quasi-elastic (not add-on)
86
G4bool
quasiElasticQGS=
true
;
// For QGS, it must use it.
87
88
const
G4double
maxFTFP =
G4HadronicParameters::Instance
()->
GetMaxEnergyTransitionQGS_FTF
();
89
const
G4double
minFTFP =
G4HadronicParameters::Instance
()->
GetMinEnergyTransitionFTF_Cascade
();
90
const
G4double
maxBIC =
G4HadronicParameters::Instance
()->
GetMaxEnergyTransitionFTF_Cascade
();
91
const
G4double
maxBERT =
G4HadronicParameters::Instance
()->
GetMaxEnergyTransitionFTF_Cascade
();
92
const
G4double
maxHP = 19.9*
MeV
;
93
94
tpdata
->
theNeutrons
=
new
G4NeutronBuilder
(
true
);
// Fission on
95
tpdata
->
theNeutrons
->
RegisterMe
(
tpdata
->
theQGSPNeutron
=
new
G4QGSPNeutronBuilder
(quasiElasticQGS));
96
tpdata
->
theNeutrons
->
RegisterMe
(
tpdata
->
theFTFPNeutron
=
new
G4FTFPNeutronBuilder
(quasiElasticFTF));
97
tpdata
->
theFTFPNeutron
->
SetMinEnergy
(minFTFP);
98
tpdata
->
theFTFPNeutron
->
SetMaxEnergy
(maxFTFP);
99
100
tpdata
->
theNeutrons
->
RegisterMe
(
tpdata
->
theBinaryNeutron
=
new
G4BinaryNeutronBuilder
);
101
tpdata
->
theBinaryNeutron
->
SetMinEnergy
(maxHP);
102
tpdata
->
theBinaryNeutron
->
SetMaxEnergy
(maxBIC);
103
104
tpdata
->
theNeutrons
->
RegisterMe
(
tpdata
->
theHPNeutron
=
new
G4NeutronPHPBuilder
);
105
106
tpdata
->
thePro
=
new
G4ProtonBuilder
;
107
tpdata
->
thePro
->
RegisterMe
(
tpdata
->
theQGSPPro
=
new
G4QGSPProtonBuilder
(quasiElasticQGS));
108
tpdata
->
thePro
->
RegisterMe
(
tpdata
->
theFTFPPro
=
new
G4FTFPProtonBuilder
(quasiElasticFTF));
109
tpdata
->
theFTFPPro
->
SetMinEnergy
(minFTFP);
110
tpdata
->
theFTFPPro
->
SetMaxEnergy
(maxFTFP);
111
tpdata
->
thePro
->
RegisterMe
(
tpdata
->
theBinaryPro
=
new
G4BinaryProtonBuilder
);
112
tpdata
->
theBinaryPro
->
SetMaxEnergy
(maxBIC);
113
114
tpdata
->
thePiK
=
new
G4PiKBuilder
;
115
tpdata
->
thePiK
->
RegisterMe
(
tpdata
->
theQGSPPiK
=
new
G4QGSPPiKBuilder
(quasiElasticQGS));
116
tpdata
->
thePiK
->
RegisterMe
(
tpdata
->
theFTFPPiK
=
new
G4FTFPPiKBuilder
(quasiElasticFTF));
117
tpdata
->
theFTFPPiK
->
SetMaxEnergy
(maxFTFP);
118
tpdata
->
thePiK
->
RegisterMe
(
tpdata
->
theBertiniPiK
=
new
G4BertiniPiKBuilder
);
119
tpdata
->
theBertiniPiK
->
SetMaxEnergy
(maxBERT);
120
121
tpdata
->
theHyperon
=
new
G4HyperonFTFPBuilder
;
122
123
tpdata
->
theAntiBaryon
=
new
G4AntiBarionBuilder
;
124
tpdata
->
theAntiBaryon
->
RegisterMe
(
tpdata
->
theFTFPAntiBaryon
=
new
G4FTFPAntiBarionBuilder
(quasiElasticFTF));
125
}
126
127
G4HadronPhysicsQGSP_BIC_HP::~G4HadronPhysicsQGSP_BIC_HP
()
128
{
129
if
(!
tpdata
)
return
;
130
131
delete
tpdata
->
theHPNeutron
;
132
delete
tpdata
->
theBinaryNeutron
;
133
delete
tpdata
->
theQGSPNeutron
;
134
delete
tpdata
->
theFTFPNeutron
;
135
delete
tpdata
->
theBertiniPiK
;
136
delete
tpdata
->
theQGSPPiK
;
137
delete
tpdata
->
theFTFPPiK
;
138
delete
tpdata
->
thePiK
;
139
delete
tpdata
->
theBinaryPro
;
140
delete
tpdata
->
theQGSPPro
;
141
delete
tpdata
->
theFTFPPro
;
142
delete
tpdata
->
thePro
;
143
delete
tpdata
->
theFTFPAntiBaryon
;
144
delete
tpdata
->
theAntiBaryon
;
145
delete
tpdata
->
theHyperon
;
146
147
delete
tpdata
;
tpdata
=
nullptr
;
148
}
149
150
void
G4HadronPhysicsQGSP_BIC_HP::ConstructParticle
()
151
{
152
G4MesonConstructor
pMesonConstructor;
153
pMesonConstructor.
ConstructParticle
();
154
155
G4BaryonConstructor
pBaryonConstructor;
156
pBaryonConstructor.
ConstructParticle
();
157
158
G4ShortLivedConstructor
pShortLivedConstructor;
159
pShortLivedConstructor.
ConstructParticle
();
160
161
G4IonConstructor
pIonConstructor;
162
pIonConstructor.
ConstructParticle
();
163
}
164
165
void
G4HadronPhysicsQGSP_BIC_HP::ConstructProcess
()
166
{
167
if
( !
tpdata
)
tpdata
=
new
ThreadPrivate
;
168
CreateModels
();
169
tpdata
->
theNeutrons
->
Build
();
170
tpdata
->
thePro
->
Build
();
171
tpdata
->
thePiK
->
Build
();
172
173
tpdata
->
theHyperon
->
Build
();
174
tpdata
->
theAntiBaryon
->
Build
();
175
176
// --- Neutrons ---
177
const
G4ParticleDefinition
*
neutron
=
G4Neutron::Neutron
();
178
G4HadronicProcess
* capture =
G4PhysListUtil::FindCaptureProcess
(neutron);
179
if
(capture) {
180
G4NeutronRadCapture
* theNeutronRadCapture =
new
G4NeutronRadCapture
();
181
theNeutronRadCapture->
SetMinEnergy
( 19.9*
MeV
);
182
capture->
RegisterMe
( theNeutronRadCapture );
183
}
184
G4HadronicProcess
* fission =
G4PhysListUtil::FindFissionProcess
(neutron);
185
if
(fission) {
186
G4LFission
* theNeutronLEPFission =
new
G4LFission
();
187
theNeutronLEPFission->
SetMinEnergy
( 19.9*
MeV
);
188
theNeutronLEPFission->
SetMaxEnergy
(
G4HadronicParameters::Instance
()->GetMaxEnergy() );
189
fission->
RegisterMe
( theNeutronLEPFission );
190
}
191
}
geant4
tree
geant4-10.6-release
source
physics_lists
constructors
hadron_inelastic
src
G4HadronPhysicsQGSP_BIC_HP.cc
Built by
Jin Huang
. updated:
Wed Jun 29 2022 17:25:27
using
1.8.2 with
ECCE GitHub integration