Geant4 9.6.0
Toolkit for the simulation of the passage of particles through matter
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros
HadronPhysicsShielding.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: 2010 Tatsumi Koi, Gunter Folger
33// created from HadronPhysicsFTFP_BERT
34//
35// Modified:
36//
37//----------------------------------------------------------------------------
38//
39#include <iomanip>
40
42
43#include "globals.hh"
44#include "G4ios.hh"
45#include "G4SystemOfUnits.hh"
47#include "G4ParticleTable.hh"
48
49#include "G4MesonConstructor.hh"
52
57
62#include "G4PhysListUtil.hh"
63
64// factory
66//
68
70 : G4VPhysicsConstructor("hInelastic Shielding")
71 , theNeutrons(0)
72 , theLENeutron(0)
73 , theBertiniNeutron(0)
74 , theFTFPNeutron(0)
75 , theLEPNeutron(0)
76 , thePiK(0)
77 , theBertiniPiK(0)
78 , theFTFPPiK(0)
79 , thePro(0)
80 , theBertiniPro(0)
81 , theFTFPPro(0)
82 , theMiscCHIPS(0)
83 , QuasiElastic(false)
84 , theCHIPSInelastic(0)
85 , BGGxsNeutron(0)
86 , NeutronHPJENDLHEInelastic(0)
87 , BGGxsProton(0)
88 , useLEND(false)
89 , evaluation()
90{}
91
94 , theNeutrons(0)
95 , theLENeutron(0)
96 , theBertiniNeutron(0)
97 , theFTFPNeutron(0)
98 , theLEPNeutron(0)
99 , thePiK(0)
100 , theBertiniPiK(0)
101 , theFTFPPiK(0)
102 , thePro(0)
103 , theBertiniPro(0)
104 , theFTFPPro(0)
105 , theMiscCHIPS(0)
106 , QuasiElastic(quasiElastic)
107 , theCHIPSInelastic(0)
108 , BGGxsNeutron(0)
109 , NeutronHPJENDLHEInelastic(0)
110 , BGGxsProton(0)
111 , useLEND(false)
112 , evaluation()
113{}
114
116void HadronPhysicsShielding::CreateModels()
117{
118
119 theNeutrons=new G4NeutronBuilder;
120 theFTFPNeutron=new G4FTFPNeutronBuilder(QuasiElastic);
121 theNeutrons->RegisterMe(theFTFPNeutron);
122 theNeutrons->RegisterMe(theBertiniNeutron=new G4BertiniNeutronBuilder);
123 theBertiniNeutron->SetMinEnergy(19.9*MeV);
124 theBertiniNeutron->SetMaxEnergy(5*GeV);
125 theNeutrons->RegisterMe(theLEPNeutron=new G4LEPNeutronBuilder);
126 theLEPNeutron->SetMinEnergy(19.9*MeV);
127 theLEPNeutron->SetMinInelasticEnergy(0.0*eV); // no inelastic from LEP
128 theLEPNeutron->SetMaxInelasticEnergy(0.0*eV);
129 //theNeutrons->RegisterMe(theHPNeutron=new G4NeutronHPBuilder);
130
131 if ( useLEND != true )
132 theNeutrons->RegisterMe(theLENeutron=new G4NeutronHPBuilder);
133 else
134 {
135 theNeutrons->RegisterMe(theLENeutron=new G4NeutronLENDBuilder(evaluation));
136 }
137
138 thePro=new G4ProtonBuilder;
139 theFTFPPro=new G4FTFPProtonBuilder(QuasiElastic);
140 thePro->RegisterMe(theFTFPPro);
141 thePro->RegisterMe(theBertiniPro=new G4BertiniProtonBuilder);
142 theBertiniPro->SetMaxEnergy(5*GeV);
143
144 thePiK=new G4PiKBuilder;
145 theFTFPPiK=new G4FTFPPiKBuilder(QuasiElastic);
146 thePiK->RegisterMe(theFTFPPiK);
147 thePiK->RegisterMe(theBertiniPiK=new G4BertiniPiKBuilder);
148 theBertiniPiK->SetMaxEnergy(5*GeV);
149
150 theMiscCHIPS=new G4MiscCHIPSBuilder;
151}
152
154{
155 delete theNeutrons;
156 delete theBertiniNeutron;
157 delete theFTFPNeutron;
158 //delete theHPNeutron;
159 delete theLENeutron;
160
161 delete thePiK;
162 delete theBertiniPiK;
163 delete theFTFPPiK;
164
165 delete thePro;
166 delete theBertiniPro;
167 delete theFTFPPro;
168
169 delete theMiscCHIPS;
170 delete theCHIPSInelastic;
171 delete BGGxsNeutron;
172 delete NeutronHPJENDLHEInelastic;
173 delete BGGxsProton;
174}
175
177{
178 G4MesonConstructor pMesonConstructor;
179 pMesonConstructor.ConstructParticle();
180
181 G4BaryonConstructor pBaryonConstructor;
182 pBaryonConstructor.ConstructParticle();
183
184 G4ShortLivedConstructor pShortLivedConstructor;
185 pShortLivedConstructor.ConstructParticle();
186}
187
188#include "G4ProcessManager.hh"
190{
191 CreateModels();
192
193 //BGGxsNeutron=new G4BGGNucleonInelasticXS(G4Neutron::Neutron());
194 thePro->Build();
195 theNeutrons->Build();
196
197// BGGxsNeutron=new G4NeutronHPBGGNucleonInelasticXS(G4Neutron::Neutron());
198// FindInelasticProcess(G4Neutron::Neutron())->AddDataSet(BGGxsNeutron);
199//
200
202 NeutronHPJENDLHEInelastic=new G4NeutronHPJENDLHEInelasticData;
205
206// BGGxsProton=new G4BGGNucleonInelasticXS(G4Proton::Proton());
207// G4PhysListUtil::FindInelasticProcess(G4Proton::Proton())->AddDataSet(BGGxsProton);
208
209 thePiK->Build();
210 // use CHIPS cross sections also for Kaons
211
213
218
219 theMiscCHIPS->Build();
220}
#define G4_DECLARE_PHYSCONSTR_FACTORY(physics_constructor)
int G4int
Definition: G4Types.hh:66
bool G4bool
Definition: G4Types.hh:67
static void ConstructParticle()
void SetMaxEnergy(G4double aM)
G4VCrossSectionDataSet * GetCrossSectionDataSet(const G4String &name, G4bool warning=true)
static G4CrossSectionDataSetRegistry * Instance()
void AddDataSet(G4VCrossSectionDataSet *aDataSet)
static G4KaonMinus * KaonMinus()
Definition: G4KaonMinus.cc:113
static G4KaonPlus * KaonPlus()
Definition: G4KaonPlus.cc:113
static G4KaonZeroLong * KaonZeroLong()
static G4KaonZeroShort * KaonZeroShort()
void SetMaxInelasticEnergy(G4double aM)
void SetMinInelasticEnergy(G4double aM)
void SetMinEnergy(G4double aM)
static void ConstructParticle()
void RegisterMe(G4VNeutronBuilder *aB)
static G4Neutron * Neutron()
Definition: G4Neutron.cc:104
static G4HadronicProcess * FindInelasticProcess(const G4ParticleDefinition *)
void RegisterMe(G4VPiKBuilder *aB)
Definition: G4PiKBuilder.hh:58
void RegisterMe(G4VProtonBuilder *aB)
HadronPhysicsShielding(G4int verbose=1)