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
G4EmStandardPhysicsSS.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: G4EmStandardPhysicsSS
30//
31// Author: V.Ivanchenko 09.11.2005
32//
33// Modified:
34// 05.12.2005 V.Ivanchenko add controlled verbosity
35// 13.11.2006 V.Ivanchenko use G4hMultipleScattering
36// 23.11.2006 V.Ivanchenko remove mscStepLimit option and improve cout
37// 13.02.2007 V.Ivanchenko use G4hMultipleScattering for muons
38// 13.02.2007 V.Ivanchenko set skin=0.0
39// 21.04.2008 V.Ivanchenko add long-lived D and B mesons
40//
41//----------------------------------------------------------------------------
42//
43
45#include "G4SystemOfUnits.hh"
47#include "G4EmParameters.hh"
48#include "G4EmBuilder.hh"
49#include "G4LossTableManager.hh"
50
52#include "G4GammaConversion.hh"
57
67#include "G4IonFluctuations.hh"
68
69//#include "G4eSingleCoulombScatteringModel.hh"
71
72#include "G4eIonisation.hh"
73#include "G4eBremsstrahlung.hh"
76#include "G4ePairProduction.hh"
77
78#include "G4hIonisation.hh"
79#include "G4ionIonisation.hh"
80
81#include "G4ParticleTable.hh"
82#include "G4Gamma.hh"
83#include "G4Electron.hh"
84#include "G4Positron.hh"
85#include "G4GenericIon.hh"
86
88#include "G4BuilderType.hh"
89#include "G4EmModelActivator.hh"
91
92// factory
94//
96
97//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
98
100 : G4VPhysicsConstructor("G4EmStandardSS")
101{
102 SetVerboseLevel(ver);
104 param->SetDefaults();
105 param->SetVerbose(ver);
106 param->SetLowestElectronEnergy(10*CLHEP::eV);
107 param->SetMscThetaLimit(0.0);
108 param->SetUseMottCorrection(true); // use Mott-correction for e-/e+ msc gs
109 param->SetAuger(true);
110 param->SetPixe(true);
112}
113
114//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
115
117{}
118
119//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
120
122{
123 // minimal set of particles for EM physics
125}
126
127//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
128
130{
131 if(verboseLevel > 1) {
132 G4cout << "### " << GetPhysicsName() << " Construct Processes " << G4endl;
133 }
135
138
139 // processes used by several particles
140 G4hMultipleScattering* hmsc = new G4hMultipleScattering("ionmsc");
141
142 // Add gamma EM Processes
144
145 // Photoelectric
148 pe->SetEmModel(peModel);
149 if(param->EnablePolarisation()) {
151 }
152
153 // Compton scattering
156
157 // Gamma conversion
159 G4VEmModel* conv = new G4BetheHeitler5DModel();
160 gc->SetEmModel(conv);
161
162 // default Rayleigh scattering is Livermore
164 if(param->EnablePolarisation()) {
166 }
167
168 if(param->GeneralProcessActive()) {
170 sp->AddEmProcess(pe);
171 sp->AddEmProcess(cs);
172 sp->AddEmProcess(gc);
173 sp->AddEmProcess(rl);
175 ph->RegisterProcess(sp, particle);
176 } else {
177 ph->RegisterProcess(pe, particle);
178 ph->RegisterProcess(cs, particle);
179 ph->RegisterProcess(gc, particle);
180 ph->RegisterProcess(rl, particle);
181 }
182 // e-
183 particle = G4Electron::Electron();
184
186 if(param->UseMottCorrection()) {
188 } else {
190 }
191 ph->RegisterProcess(new G4eIonisation(), particle);
192 ph->RegisterProcess(new G4eBremsstrahlung(), particle);
193
195 ph->RegisterProcess(ee, particle);
196 ph->RegisterProcess(ss, particle);
197
198 // e+
199 particle = G4Positron::Positron();
200
201 ss = new G4CoulombScattering();
202 if(param->UseMottCorrection()) {
204 } else {
206 }
207 ph->RegisterProcess(new G4eIonisation(), particle);
208 ph->RegisterProcess(new G4eBremsstrahlung(), particle);
209 ph->RegisterProcess(ee, particle);
210 ph->RegisterProcess(ss, particle);
211 ph->RegisterProcess(new G4eplusAnnihilation(), particle);
212
213 // generic ion
214 particle = G4GenericIon::GenericIon();
215 G4ionIonisation* ionIoni = new G4ionIonisation();
216 auto fluc = new G4IonFluctuations();
217 ionIoni->SetFluctModel(fluc);
219 ph->RegisterProcess(ionIoni, particle);
220 ph->RegisterProcess(new G4CoulombScattering(), particle);
221
222 // muons, hadrons, ions
224
225 // extra configuration
227}
228
229//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
@ bElectromagnetic
#define G4_DECLARE_PHYSCONSTR_FACTORY(physics_constructor)
int G4int
Definition: G4Types.hh:85
#define G4endl
Definition: G4ios.hh:57
G4GLOB_DLL std::ostream G4cout
static G4Electron * Electron()
Definition: G4Electron.cc:93
static void ConstructChargedSS(G4hMultipleScattering *hmsc)
Definition: G4EmBuilder.cc:301
static void ConstructMinimalEmSet()
Definition: G4EmBuilder.cc:360
static void PrepareEMPhysics()
Definition: G4EmBuilder.cc:399
void SetLowestElectronEnergy(G4double val)
static G4EmParameters * Instance()
G4bool EnablePolarisation() const
void SetMscThetaLimit(G4double val)
G4bool UseMottCorrection() const
void SetVerbose(G4int val)
void SetPixe(G4bool val)
void SetAuger(G4bool val)
void SetUseMottCorrection(G4bool val)
G4bool GeneralProcessActive() const
static G4Gamma * Gamma()
Definition: G4Gamma.cc:85
static G4GenericIon * GenericIon()
Definition: G4GenericIon.cc:92
static G4LossTableManager * Instance()
void SetGammaGeneralProcess(G4VEmProcess *)
G4bool RegisterProcess(G4VProcess *process, G4ParticleDefinition *particle)
static G4PhysicsListHelper * GetPhysicsListHelper()
static G4Positron * Positron()
Definition: G4Positron.cc:93
void SetAngularDistribution(G4VEmAngularDistribution *)
Definition: G4VEmModel.hh:607
void SetEmModel(G4VEmModel *, G4int index=0)
void SetFluctModel(G4VEmFluctuationModel *)
void SetEmModel(G4VEmModel *, G4int index=0)
const G4String & GetPhysicsName() const
void SetVerboseLevel(G4int value)