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
ECCE @ EIC Software
Deprecated List
Modules
Namespaces
Classes
Files
File List
acts
analysis
coresoftware
Doxygen_Assist
ecce-detectors
fun4all_eicdetectors
geant4
tree
geant4-10.6-release
config
environments
examples
advanced
basic
extended
analysis
biasing
common
electromagnetic
errorpropagation
eventgenerator
exoticphysics
field
g3tog4
geometry
hadronic
FissionFragment
Hadr00
Hadr01
Hadr02
hijing1_383
include
src
CRMCKaonBuilder.cc
CRMCNeutronBuilder.cc
CRMCPiKBuilder.cc
CRMCPionBuilder.cc
CRMCProtonBuilder.cc
DetectorConstruction.cc
DetectorMessenger.cc
EventAction.cc
EventActionMessenger.cc
G4CRMCModel.cc
G4HIJING_Model.cc
G4UrQMD1_3Model.cc
HadronPhysicsCRMC_FTFP_BERT.cc
HadronPhysicsHIJING.cc
HadronPhysicsUrQMD.cc
HIJINGNeutronBuilder.cc
HIJINGProtonBuilder.cc
Histo.cc
HistoManager.cc
HistoMessenger.cc
IonCRMCPhysics.cc
IonHIJINGPhysics.cc
IonUrQMDPhysics.cc
PrimaryGeneratorAction.cc
RunAction.cc
StackingAction.cc
StackingMessenger.cc
TargetSD.cc
UrQMDAntiBarionBuilder.cc
UrQMDNeutronBuilder.cc
UrQMDPiKBuilder.cc
UrQMDProtonBuilder.cc
urqmd1_3
Hadr02.cc
Hadr03
Hadr04
Hadr06
Hadr07
Hadr08
NeutronSource
medical
optical
parallel
parameterisations
persistency
physicslists
polarisation
radioactivedecay
runAndEvent
visualization
source
macros
online_distribution
tutorials
doxygen_mainpage.h
File Members
External Links
•
All
Classes
Namespaces
Files
Functions
Variables
Typedefs
Enumerations
Enumerator
Friends
Macros
Groups
Pages
HadronPhysicsCRMC_FTFP_BERT.cc
Go to the documentation of this file.
Or view
the newest version in sPHENIX GitHub for file HadronPhysicsCRMC_FTFP_BERT.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: HadronPhysicsCRMC_FTFP_BERT
30
//
31
// Authors: 2018 Alberto Ribon
32
//
33
// Modified:
34
//----------------------------------------------------------------------------
35
//
36
#ifdef G4_USE_CRMC
37
38
#include <iomanip>
39
#include "
HadronPhysicsCRMC_FTFP_BERT.hh
"
40
#include "
globals.hh
"
41
#include "
G4ios.hh
"
42
#include "
G4SystemOfUnits.hh
"
43
#include "
G4ParticleDefinition.hh
"
44
#include "
G4ParticleTable.hh
"
45
#include "
G4PionBuilder.hh
"
46
#include "
G4FTFPPionBuilder.hh
"
47
#include "
CRMCPionBuilder.hh
"
48
#include "
G4BertiniPionBuilder.hh
"
49
#include "
G4KaonBuilder.hh
"
50
#include "
G4FTFPKaonBuilder.hh
"
51
#include "
CRMCKaonBuilder.hh
"
52
#include "
G4BertiniKaonBuilder.hh
"
53
#include "
G4ProtonBuilder.hh
"
54
#include "
G4FTFPProtonBuilder.hh
"
55
#include "
CRMCProtonBuilder.hh
"
56
#include "
G4BertiniProtonBuilder.hh
"
57
#include "
G4NeutronBuilder.hh
"
58
#include "
G4FTFPNeutronBuilder.hh
"
59
#include "
CRMCNeutronBuilder.hh
"
60
#include "
G4BertiniNeutronBuilder.hh
"
61
#include "
G4HyperonFTFPBuilder.hh
"
62
#include "
G4AntiBarionBuilder.hh
"
63
#include "
G4FTFPAntiBarionBuilder.hh
"
64
#include "
G4MesonConstructor.hh
"
65
#include "
G4BaryonConstructor.hh
"
66
#include "
G4ShortLivedConstructor.hh
"
67
#include "
G4IonConstructor.hh
"
68
#include "
G4ComponentGGHadronNucleusXsc.hh
"
69
#include "
G4HadronCaptureProcess.hh
"
70
#include "
G4NeutronRadCapture.hh
"
71
#include "
G4NeutronInelasticXS.hh
"
72
#include "
G4NeutronCaptureXS.hh
"
73
#include "
G4CrossSectionInelastic.hh
"
74
#include "
G4CrossSectionDataSetRegistry.hh
"
75
#include "
G4PhysListUtil.hh
"
76
#include "
G4ProcessManager.hh
"
77
#include "
G4HadronicParameters.hh
"
78
#include "
G4PhysicsConstructorFactory.hh
"
79
//
80
G4_DECLARE_PHYSCONSTR_FACTORY
(
HadronPhysicsCRMC_FTFP_BERT
);
81
82
83
HadronPhysicsCRMC_FTFP_BERT::HadronPhysicsCRMC_FTFP_BERT
(
G4int
) :
84
HadronPhysicsCRMC_FTFP_BERT
(
"hInelastic CRMC_FTFP_BERT"
) {}
85
86
87
HadronPhysicsCRMC_FTFP_BERT::HadronPhysicsCRMC_FTFP_BERT
(
const
G4String
&
name
) :
88
G4VPhysicsConstructor
( name ) {
89
minCRMC = 100.0*
GeV
;
90
maxFTFP = 110.0*
GeV
;
91
minFTFP =
G4HadronicParameters::Instance
()->
GetMinEnergyTransitionFTF_Cascade
();
92
maxBERT =
G4HadronicParameters::Instance
()->
GetMaxEnergyTransitionFTF_Cascade
();
93
minBERT = 0.0*
GeV
;
94
}
95
96
97
HadronPhysicsCRMC_FTFP_BERT::~HadronPhysicsCRMC_FTFP_BERT
() {
98
}
99
100
101
void
HadronPhysicsCRMC_FTFP_BERT::ConstructParticle
() {
102
G4MesonConstructor
pMesonConstructor;
103
pMesonConstructor.
ConstructParticle
();
104
G4BaryonConstructor
pBaryonConstructor;
105
pBaryonConstructor.
ConstructParticle
();
106
G4ShortLivedConstructor
pShortLivedConstructor;
107
pShortLivedConstructor.
ConstructParticle
();
108
}
109
110
111
void
HadronPhysicsCRMC_FTFP_BERT::DumpBanner
() {
112
G4cout
<<
G4endl
113
<<
" CRMC_FTFP_BERT : thresholds for pions, kaons, protons & neutrons "
<<
G4endl
114
<<
"\t BERT : "
<<
minBERT
/
GeV
<<
" to "
<<
maxBERT
/
GeV
<<
" GeV"
<<
G4endl
115
<<
"\t FTFP : "
<<
minFTFP
/
GeV
<<
" to "
<<
maxFTFP
/
GeV
<<
" GeV"
<<
G4endl
116
<<
"\t CRMC : above "
<<
minCRMC
/
GeV
<<
" GeV"
<<
G4endl
117
<<
G4endl
;
118
}
119
120
121
void
HadronPhysicsCRMC_FTFP_BERT::CreateModels
() {
122
Neutron
();
123
Proton
();
124
Pion
();
125
Kaon
();
126
Others
();
127
}
128
129
130
void
HadronPhysicsCRMC_FTFP_BERT::Neutron
() {
131
// General schema:
132
// 1) Create a builder
133
// 2) Call AddBuilder
134
// 3) Configure the builder, possibly with sub-builders
135
// 4) Call builder->Build()
136
auto
neu
=
new
G4NeutronBuilder
;
137
AddBuilder
(
neu
);
138
auto
epos_n =
new
CRMCNeutronBuilder
;
139
AddBuilder
( epos_n );
140
epos_n->SetMinEnergy(
minCRMC
);
141
neu
->RegisterMe( epos_n );
142
auto
ftfp_n =
new
G4FTFPNeutronBuilder
(
true
);
143
AddBuilder
( ftfp_n );
144
ftfp_n->SetMinEnergy(
minFTFP
);
145
ftfp_n->SetMaxEnergy(
maxFTFP
);
146
neu
->RegisterMe( ftfp_n );
147
auto
bert_n =
new
G4BertiniNeutronBuilder
;
148
AddBuilder
( bert_n );
149
bert_n->SetMinEnergy(
minBERT
);
150
bert_n->SetMaxEnergy(
maxBERT
);
151
neu
->RegisterMe( bert_n );
152
neu
->Build();
153
}
154
155
156
void
HadronPhysicsCRMC_FTFP_BERT::Proton
() {
157
auto
pro
=
new
G4ProtonBuilder
;
158
AddBuilder
(
pro
);
159
auto
epos_p =
new
CRMCProtonBuilder
;
160
AddBuilder
( epos_p );
161
epos_p->SetMinEnergy(
minCRMC
);
162
pro
->RegisterMe( epos_p );
163
auto
ftfp_p =
new
G4FTFPProtonBuilder
(
true
);
164
AddBuilder
( ftfp_p );
165
ftfp_p->SetMinEnergy(
minFTFP
);
166
ftfp_p->SetMaxEnergy(
maxFTFP
);
167
pro
->RegisterMe( ftfp_p );
168
auto
bert_p =
new
G4BertiniProtonBuilder
;
169
AddBuilder
( bert_p );
170
bert_p->SetMinEnergy(
minBERT
);
171
bert_p->SetMaxEnergy(
maxBERT
);
172
pro
->RegisterMe( bert_p );
173
pro
->Build();
174
}
175
176
177
void
HadronPhysicsCRMC_FTFP_BERT::Pion
() {
178
auto
pi
=
new
G4PionBuilder
;
179
AddBuilder
(
pi
);
180
auto
epos_pi =
new
CRMCPionBuilder
;
181
AddBuilder
( epos_pi );
182
epos_pi->SetMinEnergy(
minCRMC
);
183
pi
->RegisterMe( epos_pi );
184
auto
ftfp_pi =
new
G4FTFPPionBuilder
(
true
);
185
AddBuilder
( ftfp_pi );
186
pi
->RegisterMe( ftfp_pi );
187
ftfp_pi->SetMinEnergy(
minFTFP
);
188
ftfp_pi->SetMaxEnergy(
maxFTFP
);
189
auto
bert_pi =
new
G4BertiniPionBuilder
;
190
AddBuilder
( bert_pi );
191
pi
->RegisterMe( bert_pi );
192
bert_pi->SetMinEnergy(
minBERT
);
193
bert_pi->SetMaxEnergy(
maxBERT
);
194
pi
->Build();
195
}
196
197
198
void
HadronPhysicsCRMC_FTFP_BERT::Kaon
() {
199
auto
k
=
new
G4KaonBuilder
;
200
AddBuilder
(
k
);
201
auto
epos_k =
new
CRMCKaonBuilder
;
202
AddBuilder
( epos_k );
203
epos_k->SetMinEnergy(
minCRMC
);
204
k
->RegisterMe( epos_k );
205
auto
ftfp_k =
new
G4FTFPKaonBuilder
(
true
);
206
AddBuilder
( ftfp_k );
207
k
->RegisterMe( ftfp_k );
208
ftfp_k->SetMinEnergy(
minFTFP
);
209
ftfp_k->SetMaxEnergy(
maxFTFP
);
210
auto
bert_k =
new
G4BertiniKaonBuilder
;
211
AddBuilder
( bert_k );
212
k
->RegisterMe( bert_k );
213
bert_k->SetMinEnergy(
minBERT
);
214
bert_k->SetMaxEnergy(
maxBERT
);
215
k
->Build();
216
}
217
218
219
void
HadronPhysicsCRMC_FTFP_BERT::Others
() {
220
// Hyperons
221
auto
ftfp_hyp =
new
G4HyperonFTFPBuilder
;
222
AddBuilder
( ftfp_hyp );
223
ftfp_hyp->Build();
224
// Anti-baryons
225
auto
abar =
new
G4AntiBarionBuilder
;
226
AddBuilder
( abar );
227
auto
ftfp_abar =
new
G4FTFPAntiBarionBuilder
(
true
);
228
AddBuilder
( ftfp_abar );
229
abar->RegisterMe( ftfp_abar );
230
abar->Build();
231
}
232
233
234
void
HadronPhysicsCRMC_FTFP_BERT::ExtraConfiguration
() {
235
// Modify cross sections for kaons
236
auto
xsk =
new
G4ComponentGGHadronNucleusXsc
;
237
xs_k
.
Put
( xsk );
238
G4VCrossSectionDataSet
* kaonxs =
new
G4CrossSectionInelastic
( xsk );
239
xs_ds
.
Push_back
( kaonxs );
240
G4PhysListUtil::FindInelasticProcess
(
G4KaonMinus::KaonMinus
() )->
AddDataSet
( kaonxs );
241
G4PhysListUtil::FindInelasticProcess
(
G4KaonPlus::KaonPlus
() )->
AddDataSet
( kaonxs );
242
G4PhysListUtil::FindInelasticProcess
(
G4KaonZeroShort::KaonZeroShort
() )->
AddDataSet
( kaonxs );
243
G4PhysListUtil::FindInelasticProcess
(
G4KaonZeroLong::KaonZeroLong
() )->
AddDataSet
( kaonxs );
244
// Modify Neutrons
245
const
G4ParticleDefinition
*
neutron
=
G4Neutron::Neutron
();
246
G4HadronicProcess
* inel =
G4PhysListUtil::FindInelasticProcess
( neutron );
247
if
( inel ) inel->
AddDataSet
(
new
G4NeutronInelasticXS
);
248
G4HadronicProcess
* capture =
G4PhysListUtil::FindCaptureProcess
( neutron );
249
if
( capture ) capture->
RegisterMe
(
new
G4NeutronRadCapture
);
250
}
251
252
253
void
HadronPhysicsCRMC_FTFP_BERT::ConstructProcess
() {
254
if
(
G4Threading::IsMasterThread
() ) {
255
DumpBanner
();
256
}
257
CreateModels
();
258
ExtraConfiguration
();
259
}
260
261
#endif //G4_USE_CRMC
262
263
geant4
tree
geant4-10.6-release
examples
extended
hadronic
Hadr02
src
HadronPhysicsCRMC_FTFP_BERT.cc
Built by
Jin Huang
. updated:
Wed Jun 29 2022 17:25:07
using
1.8.2 with
ECCE GitHub integration