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
G4EmSaturation.hh
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#ifndef G4EmSaturation_h
28#define G4EmSaturation_h 1
29
30// -------------------------------------------------------------
31//
32// GEANT4 Class header file
33//
34//
35// File name: G4EmSaturation
36//
37// Author: Vladimir Ivanchenko
38//
39// Creation date: 18.02.2008
40//
41// Modifications:
42//
43//
44// Class Description:
45// Compution on saturation effect, which reduce visible energy
46// deposition at the step. Default implementation takes into
47// account Birks effect. Birks coefficients for some materials
48// from G4 database on materials are provided
49//
50// This class assumed to be G4ThreadLocal, because it is using
51// cache value for material
52//
53// -------------------------------------------------------------
54
55//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
56//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
57
58#include "globals.hh"
59#include "G4Step.hh"
61#include <vector>
62
63//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
64
65class G4NistManager;
67class G4Material;
68
70{
71public:
72
73 explicit G4EmSaturation(G4int verb);
74 virtual ~G4EmSaturation();
75
76 // this method may be overwritten in the derived class
77 // which implements alternative algorithm of saturation
80 G4double length,
81 G4double edepTotal,
82 G4double edepNIEL = 0.0) const;
83
84 // activate default model
86
87 // find and Birks coefficient
89
90 // dump coeffitients used in run time
92
93 // dump G4 list
95
96 // this method should not be overwritten
98
99 inline void SetVerbose(G4int);
100
101 // hide assignment operator
102 G4EmSaturation & operator=(const G4EmSaturation &right) = delete;
104
105private:
106
107 void InitialiseBirksCoefficient(const G4Material*);
108
109 void InitialiseG4materials();
110
111 const G4ParticleDefinition* electron;
112 const G4ParticleDefinition* proton;
113 G4NistManager* nist;
114
115 G4int verbose;
116 G4int nG4Birks;
117 G4int nWarnings;
118
119 static size_t nMaterials;
120
121 // list of materials used in run time
122 static std::vector<G4double> massFactors;
123 static std::vector<G4double> effCharges;
124
125 // list of G4 materials
126 static std::vector<G4double> g4MatData;
127 static std::vector<G4String> g4MatNames;
128};
129
130//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
131
133{
134 verbose = val;
135}
136
137//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
138
140 const G4Step* step) const
141{
144 step->GetStepLength(),
145 step->GetTotalEnergyDeposit(),
147}
148
149//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
150
151#endif
152
double G4double
Definition: G4Types.hh:83
int G4int
Definition: G4Types.hh:85
virtual ~G4EmSaturation()
void SetVerbose(G4int)
G4double VisibleEnergyDepositionAtAStep(const G4Step *) const
virtual G4double VisibleEnergyDeposition(const G4ParticleDefinition *, const G4MaterialCutsCouple *, G4double length, G4double edepTotal, G4double edepNIEL=0.0) const
G4double FindG4BirksCoefficient(const G4Material *)
void DumpBirksCoefficients()
void InitialiseG4Saturation()
void DumpG4BirksCoefficients()
G4EmSaturation(const G4EmSaturation &)=delete
G4EmSaturation & operator=(const G4EmSaturation &right)=delete
Definition: G4Step.hh:62
G4Track * GetTrack() const
G4double GetNonIonizingEnergyDeposit() const
G4double GetStepLength() const
G4double GetTotalEnergyDeposit() const
const G4ParticleDefinition * GetParticleDefinition() const
const G4MaterialCutsCouple * GetMaterialCutsCouple() const