Geant4
9.6.p02
Main Page
Related Pages
Modules
Namespaces
Classes
Files
File List
File Members
All
Classes
Namespaces
Files
Functions
Variables
Typedefs
Enumerations
Enumerator
Friends
Macros
Groups
Pages
geant4_9_6_p02
source
physics_lists
lists
src
HadronPhysicsFTFP_BERT.cc
Go to the documentation of this file.
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
// $Id$
27
//
28
//---------------------------------------------------------------------------
29
//
30
// ClassName:
31
//
32
// Author: 2007 Gunter Folger
33
// created from HadronPhysicsFTFP
34
//
35
// Modified:
36
//
37
//----------------------------------------------------------------------------
38
//
39
#include <iomanip>
40
41
#include "
HadronPhysicsFTFP_BERT.hh
"
42
43
#include "
globals.hh
"
44
#include "
G4ios.hh
"
45
#include "
G4SystemOfUnits.hh
"
46
#include "
G4ParticleDefinition.hh
"
47
#include "
G4ParticleTable.hh
"
48
49
#include "
G4MesonConstructor.hh
"
50
#include "
G4BaryonConstructor.hh
"
51
#include "
G4ShortLivedConstructor.hh
"
52
53
#include "
G4ChipsKaonMinusInelasticXS.hh
"
54
#include "
G4ChipsKaonPlusInelasticXS.hh
"
55
#include "
G4ChipsKaonZeroInelasticXS.hh
"
56
#include "
G4CrossSectionDataSetRegistry.hh
"
57
58
#include "
G4PhysListUtil.hh
"
59
60
// factory
61
#include "
G4PhysicsConstructorFactory.hh
"
62
//
63
G4_DECLARE_PHYSCONSTR_FACTORY
(
HadronPhysicsFTFP_BERT
);
64
65
HadronPhysicsFTFP_BERT::HadronPhysicsFTFP_BERT
(
G4int
)
66
:
G4VPhysicsConstructor
(
"hInelastic FTFP_BERT"
)
67
, theNeutrons(0)
68
, theBertiniNeutron(0)
69
, theFTFPNeutron(0)
70
, theLEPNeutron(0)
71
, thePiK(0)
72
, theBertiniPiK(0)
73
, theFTFPPiK(0)
74
, thePro(0)
75
, theBertiniPro(0)
76
, theFTFPPro(0)
77
, theHyperon(0)
78
, theAntiBaryon(0)
79
, theFTFPAntiBaryon(0)
80
, QuasiElastic(false)
81
, ChipsKaonMinus(0)
82
, ChipsKaonPlus(0)
83
, ChipsKaonZero(0)
84
{}
85
86
HadronPhysicsFTFP_BERT::HadronPhysicsFTFP_BERT
(
const
G4String
&
name
,
G4bool
quasiElastic)
87
:
G4VPhysicsConstructor
(name)
88
, theNeutrons(0)
89
, theBertiniNeutron(0)
90
, theFTFPNeutron(0)
91
, theLEPNeutron(0)
92
, thePiK(0)
93
, theBertiniPiK(0)
94
, theFTFPPiK(0)
95
, thePro(0)
96
, theBertiniPro(0)
97
, theFTFPPro(0)
98
, theHyperon(0)
99
, theAntiBaryon(0)
100
, theFTFPAntiBaryon(0)
101
, QuasiElastic(quasiElastic)
102
, ChipsKaonMinus(0)
103
, ChipsKaonPlus(0)
104
, ChipsKaonZero(0)
105
{}
106
107
void
HadronPhysicsFTFP_BERT::CreateModels()
108
{
109
110
theNeutrons=
new
G4NeutronBuilder
;
111
theFTFPNeutron=
new
G4FTFPNeutronBuilder
(QuasiElastic);
112
theNeutrons->
RegisterMe
(theFTFPNeutron);
113
theNeutrons->
RegisterMe
(theBertiniNeutron=
new
G4BertiniNeutronBuilder
);
114
theBertiniNeutron->
SetMinEnergy
(0.0*
GeV
);
115
theBertiniNeutron->
SetMaxEnergy
(5*
GeV
);
116
theNeutrons->
RegisterMe
(theLEPNeutron=
new
G4LEPNeutronBuilder
);
117
theLEPNeutron->
SetMinInelasticEnergy
(0.0*
eV
);
// no inelastic from LEP
118
theLEPNeutron->
SetMaxInelasticEnergy
(0.0*
eV
);
119
120
thePro=
new
G4ProtonBuilder
;
121
theFTFPPro=
new
G4FTFPProtonBuilder
(QuasiElastic);
122
thePro->
RegisterMe
(theFTFPPro);
123
thePro->
RegisterMe
(theBertiniPro=
new
G4BertiniProtonBuilder
);
124
theBertiniPro->
SetMaxEnergy
(5*
GeV
);
125
126
thePiK=
new
G4PiKBuilder
;
127
theFTFPPiK=
new
G4FTFPPiKBuilder
(QuasiElastic);
128
thePiK->
RegisterMe
(theFTFPPiK);
129
thePiK->
RegisterMe
(theBertiniPiK=
new
G4BertiniPiKBuilder
);
130
theBertiniPiK->
SetMaxEnergy
(5*
GeV
);
131
132
theHyperon=
new
G4HyperonFTFPBuilder
;
133
134
theAntiBaryon=
new
G4AntiBarionBuilder
;
135
theAntiBaryon->
RegisterMe
(theFTFPAntiBaryon=
new
G4FTFPAntiBarionBuilder
(QuasiElastic));
136
}
137
138
HadronPhysicsFTFP_BERT::~HadronPhysicsFTFP_BERT
()
139
{
140
delete
theNeutrons;
141
delete
theBertiniNeutron;
142
delete
theFTFPNeutron;
143
delete
theLEPNeutron;
144
145
delete
thePiK;
146
delete
theBertiniPiK;
147
delete
theFTFPPiK;
148
149
delete
thePro;
150
delete
theBertiniPro;
151
delete
theFTFPPro;
152
153
delete
theHyperon;
154
delete
theAntiBaryon;
155
delete
theFTFPAntiBaryon;
156
}
157
158
void
HadronPhysicsFTFP_BERT::ConstructParticle
()
159
{
160
G4MesonConstructor
pMesonConstructor;
161
pMesonConstructor.
ConstructParticle
();
162
163
G4BaryonConstructor
pBaryonConstructor;
164
pBaryonConstructor.
ConstructParticle
();
165
166
G4ShortLivedConstructor
pShortLivedConstructor;
167
pShortLivedConstructor.
ConstructParticle
();
168
}
169
170
#include "
G4ProcessManager.hh
"
171
void
HadronPhysicsFTFP_BERT::ConstructProcess
()
172
{
173
CreateModels();
174
theNeutrons->
Build
();
175
thePro->
Build
();
176
thePiK->
Build
();
177
178
// use CHIPS cross sections also for Kaons
179
ChipsKaonMinus =
G4CrossSectionDataSetRegistry::Instance
()->
GetCrossSectionDataSet
(
G4ChipsKaonMinusInelasticXS::Default_Name
());
180
ChipsKaonPlus =
G4CrossSectionDataSetRegistry::Instance
()->
GetCrossSectionDataSet
(
G4ChipsKaonPlusInelasticXS::Default_Name
());
181
ChipsKaonZero =
G4CrossSectionDataSetRegistry::Instance
()->
GetCrossSectionDataSet
(
G4ChipsKaonZeroInelasticXS::Default_Name
());
182
//
183
184
G4PhysListUtil::FindInelasticProcess
(
G4KaonMinus::KaonMinus
())->
AddDataSet
(ChipsKaonMinus);
185
G4PhysListUtil::FindInelasticProcess
(
G4KaonPlus::KaonPlus
())->
AddDataSet
(ChipsKaonPlus);
186
G4PhysListUtil::FindInelasticProcess
(
G4KaonZeroShort::KaonZeroShort
())->
AddDataSet
(ChipsKaonZero );
187
G4PhysListUtil::FindInelasticProcess
(
G4KaonZeroLong::KaonZeroLong
())->
AddDataSet
(ChipsKaonZero );
188
189
theHyperon->
Build
();
190
theAntiBaryon->
Build
();
191
}
192
Generated on Sat May 25 2013 14:33:28 for Geant4 by
1.8.4