Geant4 11.1.1
Toolkit for the simulation of the passage of particles through matter
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
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"
56#include "G4EmExtraPhysics.hh"
57#include "G4IonQMDPhysics.hh"
59#include "G4StoppingPhysics.hh"
63
68
69Shielding::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
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) );
106
107 // Hadron Elastic scattering
108 if ( LEN_model == "HP" )
109 {
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 }
125 }
126
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
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}
int G4int
Definition: G4Types.hh:85
#define G4endl
Definition: G4ios.hh:57
G4GLOB_DLL std::ostream G4cout
void LENDGammaNuclear(G4bool val)
static G4HadronicParameters * Instance()
void SetProduceFissionFragments(G4bool val)
static G4ParticleHPManager * GetInstance()
void SetVerboseLevel(G4int value)
void RegisterPhysics(G4VPhysicsConstructor *)
void SetCutValue(G4double aCut, const G4String &pname)
Shielding(G4int verb=1, const G4String &n_model="HP", const G4String &HadrPhysVariant="")
Definition: Shielding.cc:69