Geant4-11
source
physics_lists
lists
src
Shielding.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
//
27
//---------------------------------------------------------------------------
28
//
29
// ClassName:
30
//
31
// Author: 2010 Tatsumi Koi, Gunter Folger
32
//
33
// created from FTFP_BERT
34
//
35
// Modified:
36
// 05.08.2014 K.L.Genser: added provision for Hadronic Physics Variant M
37
// 16.08.2010 H.Kurashige: Remove inclusion of G4ParticleWithCuts
38
// 26.04.2011 T.Koi: Add G4RadioactiveDecayPhysics
39
// 16.10.2012 A.Ribon: Use new default stopping
40
// 07.11.2013 T.Koi: Add IonElasticPhysics, Set proton cut to 0 to generate
41
// low energy recoils and activate production of fission
42
// fragments
43
// 06.08.2019 A.Ribon: Replacing explicit values for the energy transition
44
// region with values from G4HadronicParameters
45
//
46
//----------------------------------------------------------------------------
47
//
48
49
#include "
Shielding.hh
"
50
#include "
globals.hh
"
51
52
#include "
G4DecayPhysics.hh
"
53
#include "
G4RadioactiveDecayPhysics.hh
"
54
#include "
G4EmStandardPhysics.hh
"
55
#include "
G4EmStandardPhysics_option4.hh
"
56
#include "
G4EmExtraPhysics.hh
"
57
#include "
G4IonQMDPhysics.hh
"
58
#include "
G4IonElasticPhysics.hh
"
59
#include "
G4StoppingPhysics.hh
"
60
#include "
G4HadronElasticPhysicsHP.hh
"
61
#include "
G4HadronElasticPhysicsLEND.hh
"
62
#include "
G4ParticleHPManager.hh
"
63
64
#include "
G4HadronPhysicsShielding.hh
"
65
#include "
G4HadronPhysicsShieldingLEND.hh
"
66
#include "
G4HadronicParameters.hh
"
67
#include <
CLHEP/Units/SystemOfUnits.h
>
68
69
Shielding::Shielding
(
G4int
verbose,
const
G4String
& n_model,
70
const
G4String
& HadrPhysVariant )
71
{
72
G4String
LEN_model = n_model;
73
size_t
find = LEN_model.find(
"LEND__"
);
74
G4String
evaluation;
75
if
( find != G4String::npos )
76
{
77
evaluation=LEN_model;
78
evaluation.erase(0,find+6);
79
LEN_model=
"LEND"
;
80
}
81
82
if
(verbose > 0) {
83
G4cout
<<
"<<< Geant4 Physics List simulation engine: Shielding"
84
<< HadrPhysVariant <<
G4endl
;
85
if
( LEN_model==
"LEND"
)
86
G4cout
<<
"<<< LEND will be used for low energy neutron and gamma projectiles"
<<
G4endl
;
87
}
88
defaultCutValue
= 0.7*
CLHEP::mm
;
89
SetCutValue
(0,
"proton"
);
90
SetVerboseLevel
(verbose);
91
92
// EM Physics
93
RegisterPhysics
(
new
G4EmStandardPhysics
(verbose));
94
95
// Synchroton Radiation & GN Physics
96
G4EmExtraPhysics
* emExtraPhysics =
new
G4EmExtraPhysics
(verbose);
97
if
( LEN_model ==
"LEND"
) {
98
// Use LEND model for Gamma Nuclear
99
emExtraPhysics->
LENDGammaNuclear
(
true
);
100
}
101
RegisterPhysics
( emExtraPhysics );
102
103
// Decays
104
RegisterPhysics
(
new
G4DecayPhysics
(verbose) );
105
RegisterPhysics
(
new
G4RadioactiveDecayPhysics
(verbose) );
106
107
// Hadron Elastic scattering
108
if
( LEN_model ==
"HP"
)
109
{
110
RegisterPhysics
(
new
G4HadronElasticPhysicsHP
(verbose) );
111
}
112
else
if
( LEN_model ==
"LEND"
)
113
{
114
RegisterPhysics
(
new
G4HadronElasticPhysicsLEND
(verbose,evaluation));
115
}
116
else
117
{
118
if
(verbose > 0) {
119
G4cout
<<
"Shielding Physics List: Warning!"
<<
G4endl
;
120
G4cout
<<
"\""
<< LEN_model
121
<<
"\" is not valid for the low energy neutron model."
<<
G4endl
;
122
G4cout
<<
"Neutron HP package will be used."
<<
G4endl
;
123
}
124
RegisterPhysics
(
new
G4HadronElasticPhysicsHP
(verbose) );
125
}
126
127
G4VPhysicsConstructor
* hpc;
128
// Hadron Physics HP or LEND
129
if
(HadrPhysVariant ==
"M"
) {
130
// The variant "M" has a special, dedicated energy transition region
131
// between the string model and cascade model, therefore the recommended
132
// values from G4HadronicParameters are intentionally not used.
133
hpc =
new
G4HadronPhysicsShielding
(
"hInelastic Shielding"
, verbose,
134
9.5*
CLHEP::GeV
, 9.9*
CLHEP::GeV
);
135
}
else
{
136
hpc =
new
G4HadronPhysicsShielding
(
"hInelastic Shielding"
, verbose,
137
G4HadronicParameters::Instance
()->GetMinEnergyTransitionFTF_Cascade(),
138
G4HadronicParameters::Instance
()->GetMaxEnergyTransitionFTF_Cascade());
139
}
140
141
if
( LEN_model ==
"LEND"
) {
142
delete
hpc;
143
if
(HadrPhysVariant ==
"M"
) {
144
// The variant "M" has a special, dedicated energy transition region
145
// between the string model and cascade model, therefore the recommended
146
// values from G4HadronicParameters are intentionally not used.
147
hpc =
new
G4HadronPhysicsShieldingLEND
(
"hInelastic ShieldingLEND"
, verbose,
148
9.5*
CLHEP::GeV
, 9.9*
CLHEP::GeV
);
149
}
else
{
150
hpc =
new
G4HadronPhysicsShieldingLEND
(
"hInelastic ShieldingLEND"
, verbose,
151
G4HadronicParameters::Instance
()->GetMinEnergyTransitionFTF_Cascade(),
152
G4HadronicParameters::Instance
()->GetMaxEnergyTransitionFTF_Cascade());
153
}
154
}
else
{
155
//G4cout << "Shielding Physics List: Warning." <<G4endl;
156
//G4cout << "Name of Low Energy Neutron model " << LEN_model
157
// << " is invalid." <<G4endl;
158
//G4cout << "Will use neutron HP package." <<G4endl;
159
}
160
RegisterPhysics
( hpc );
161
162
if
( LEN_model ==
"HP"
) {
163
//Activate prodcuton of fission fragments in neutronHP
164
G4ParticleHPManager::GetInstance
()->
SetProduceFissionFragments
(
true
);
165
}
166
167
// Stopping Physics
168
RegisterPhysics
(
new
G4StoppingPhysics
(verbose) );
169
170
// Ion Physics
171
RegisterPhysics
(
new
G4IonElasticPhysics
(verbose) );
172
RegisterPhysics
(
new
G4IonQMDPhysics
(verbose) );
173
}
G4DecayPhysics.hh
G4EmExtraPhysics.hh
G4EmStandardPhysics.hh
G4EmStandardPhysics_option4.hh
G4HadronElasticPhysicsHP.hh
G4HadronElasticPhysicsLEND.hh
G4HadronPhysicsShieldingLEND.hh
G4HadronPhysicsShielding.hh
G4HadronicParameters.hh
G4IonElasticPhysics.hh
G4IonQMDPhysics.hh
G4ParticleHPManager.hh
G4RadioactiveDecayPhysics.hh
G4StoppingPhysics.hh
G4int
int G4int
Definition:
G4Types.hh:85
G4endl
#define G4endl
Definition:
G4ios.hh:57
G4cout
G4GLOB_DLL std::ostream G4cout
Shielding.hh
SystemOfUnits.h
G4DecayPhysics
Definition:
G4DecayPhysics.hh:49
G4EmExtraPhysics
Definition:
G4EmExtraPhysics.hh:54
G4EmExtraPhysics::LENDGammaNuclear
void LENDGammaNuclear(G4bool val)
Definition:
G4EmExtraPhysics.cc:186
G4EmStandardPhysics
Definition:
G4EmStandardPhysics.hh:52
G4HadronElasticPhysicsHP
Definition:
G4HadronElasticPhysicsHP.hh:44
G4HadronElasticPhysicsLEND
Definition:
G4HadronElasticPhysicsLEND.hh:44
G4HadronPhysicsShieldingLEND
Definition:
G4HadronPhysicsShieldingLEND.hh:44
G4HadronPhysicsShielding
Definition:
G4HadronPhysicsShielding.hh:49
G4HadronicParameters::Instance
static G4HadronicParameters * Instance()
Definition:
G4HadronicParameters.cc:52
G4IonElasticPhysics
Definition:
G4IonElasticPhysics.hh:45
G4IonQMDPhysics
Definition:
G4IonQMDPhysics.hh:53
G4ParticleHPManager::SetProduceFissionFragments
void SetProduceFissionFragments(G4bool val)
Definition:
G4ParticleHPManager.hh:89
G4ParticleHPManager::GetInstance
static G4ParticleHPManager * GetInstance()
Definition:
G4ParticleHPManager.cc:73
G4RadioactiveDecayPhysics
Definition:
G4RadioactiveDecayPhysics.hh:37
G4StoppingPhysics
Definition:
G4StoppingPhysics.hh:58
G4String
Definition:
G4String.hh:62
G4VModularPhysicsList::SetVerboseLevel
void SetVerboseLevel(G4int value)
Definition:
G4VModularPhysicsList.cc:422
G4VModularPhysicsList::RegisterPhysics
void RegisterPhysics(G4VPhysicsConstructor *)
Definition:
G4VModularPhysicsList.cc:150
G4VPhysicsConstructor
Definition:
G4VPhysicsConstructor.hh:109
G4VUserPhysicsList::SetCutValue
void SetCutValue(G4double aCut, const G4String &pname)
Definition:
G4VUserPhysicsList.cc:443
G4VUserPhysicsList::defaultCutValue
G4double defaultCutValue
Definition:
G4VUserPhysicsList.hh:285
Shielding::Shielding
Shielding(G4int verb=1, const G4String &n_model="HP", const G4String &HadrPhysVariant="")
Definition:
Shielding.cc:69
globals.hh
CLHEP::mm
static constexpr double mm
Definition:
SystemOfUnits.h:96
CLHEP::GeV
static constexpr double GeV
Definition:
SystemOfUnits.h:184
Generated by
1.9.3