Geant4
9.6.p02
Main Page
Related Pages
Modules
Namespaces
Classes
Files
File List
File Members
All
Classes
Namespaces
Files
Functions
Variables
Typedefs
Enumerations
Enumerator
Friends
Macros
Groups
Pages
geant4_9_6_p02
source
processes
electromagnetic
utils
include
G4ElectronIonPair.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
// $Id$
27
//
28
//
29
#ifndef G4ElectronIonPair_h
30
#define G4ElectronIonPair_h 1
31
32
// -------------------------------------------------------------
33
//
34
// GEANT4 Class header file
35
//
36
//
37
// File name: G4ElectronIonPair
38
//
39
// Author: Vladimir Ivanchenko
40
//
41
// Creation date: 08.07.2008
42
//
43
// Modifications:
44
//
45
//
46
// Class Description:
47
// Compution on number of electon-ion or electorn-hole pairs
48
// at the step of a particle and sampling ionisation points
49
// in space
50
//
51
// Based on ICRU Report 31, 1979
52
// "Average Energy Required to Produce an Ion Pair"
53
//
54
// 06.04.2010 V. Grichine, substitute Gauss by Gamma for ionisation
55
// distribution at fixed energy deposition
56
//
57
// -------------------------------------------------------------
58
59
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
60
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
61
62
#include "
globals.hh
"
63
#include "
G4Step.hh
"
64
#include "
G4ParticleDefinition.hh
"
65
#include "
G4ThreeVector.hh
"
66
#include "
G4VProcess.hh
"
67
#include <vector>
68
69
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
70
71
class
G4Material
;
72
73
class
G4ElectronIonPair
74
{
75
public
:
76
77
G4ElectronIonPair
();
78
79
virtual
~G4ElectronIonPair
();
80
81
// compute mean number of ionisation points at a step
82
G4double
MeanNumberOfIonsAlongStep
(
const
G4ParticleDefinition
*,
83
const
G4Material
*,
84
G4double
edepTotal,
85
G4double
edepNIEL = 0.0);
86
87
inline
G4double
MeanNumberOfIonsAlongStep
(
const
G4Step
*);
88
89
inline
G4int
SampleNumberOfIonsAlongStep
(
const
G4Step
*);
90
91
// returns pointer to the new vector of positions of
92
// ionisation points in the World coordinate system
93
std::vector<G4ThreeVector>*
SampleIonsAlongStep
(
const
G4Step
*);
94
95
// compute number of holes in the atom after PostStep interaction
96
G4int
ResidualeChargePostStep
(
const
G4ParticleDefinition
*,
97
const
G4TrackVector
* secondary = 0,
98
G4int
processSubType = -1);
99
100
inline
G4int
ResidualeChargePostStep
(
const
G4Step
*);
101
102
// find mean energies per ionisation
103
G4double
FindG4MeanEnergyPerIonPair
(
const
G4Material
*);
104
105
// dump mean energies per ionisation used in run time
106
void
DumpMeanEnergyPerIonPair
();
107
108
// dump G4 list
109
void
DumpG4MeanEnergyPerIonPair
();
110
111
inline
void
SetVerbose
(
G4int
);
112
113
private
:
114
115
void
Initialise();
116
117
G4double
FindMeanEnergyPerIonPair(
const
G4Material
*);
118
119
// hide assignment operator
120
G4ElectronIonPair
& operator=(
const
G4ElectronIonPair
&
right
);
121
G4ElectronIonPair
(
const
G4ElectronIonPair
&);
122
123
// cash
124
const
G4Material
* curMaterial;
125
G4double
curMeanEnergy;
126
127
G4double
invFanoFactor;
128
129
G4int
verbose;
130
G4int
nMaterials;
131
132
// list of G4 NIST materials with mean energy per ion defined
133
std::vector<G4double> g4MatData;
134
std::vector<G4String> g4MatNames;
135
};
136
137
inline
G4double
138
G4ElectronIonPair::MeanNumberOfIonsAlongStep
(
const
G4Step
* step)
139
{
140
return
MeanNumberOfIonsAlongStep
(step->
GetTrack
()->
GetParticleDefinition
(),
141
step->
GetPreStepPoint
()->
GetMaterial
(),
142
step->
GetTotalEnergyDeposit
(),
143
step->
GetNonIonizingEnergyDeposit
());
144
}
145
146
inline
147
G4int
G4ElectronIonPair::SampleNumberOfIonsAlongStep
(
const
G4Step
* step)
148
{
149
// use gamma distribution with mean value n=meanion and
150
// dispersion D=meanion/invFanoFactor
151
G4double
meanion =
MeanNumberOfIonsAlongStep
(step);
152
return
G4lrint
(
CLHEP::RandGamma::shoot
(meanion*invFanoFactor,invFanoFactor));
153
}
154
155
inline
156
G4int
G4ElectronIonPair::ResidualeChargePostStep
(
const
G4Step
* step)
157
{
158
G4int
subtype = -1;
159
const
G4VProcess
* proc = step->
GetPostStepPoint
()->
GetProcessDefinedStep
();
160
if
(proc) { subtype = proc->
GetProcessSubType
(); }
161
return
ResidualeChargePostStep
(step->
GetTrack
()->
GetParticleDefinition
(),
162
step->
GetSecondary
(),
163
subtype);
164
}
165
166
inline
void
G4ElectronIonPair::SetVerbose
(
G4int
val)
167
{
168
verbose = val;
169
}
170
171
#endif
172
Generated on Sat May 25 2013 14:33:38 for Geant4 by
1.8.4