ECCE @ EIC Software
Reference for
ECCE @ EIC
simulation and reconstruction software on GitHub
Home page
Related Pages
Modules
Namespaces
Classes
Files
External Links
File List
File Members
All
Classes
Namespaces
Files
Functions
Variables
Typedefs
Enumerations
Enumerator
Friends
Macros
Groups
Pages
G4LindhardSorensenIonModel.hh
Go to the documentation of this file.
Or view
the newest version in sPHENIX GitHub for file G4LindhardSorensenIonModel.hh
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
// GEANT4 Class header file
30
//
31
//
32
// File name: G4LindhardSorensenIonModel
33
//
34
// Author: Alexander Bagulya & Vladimir Ivanchenko
35
//
36
// Creation date: 16.04.2018
37
//
38
//
39
// Class Description:
40
//
41
// Implementation of ion ionisation energy loss and delta-electron
42
// production by heavy charged particles according to
43
// J. Lindhard & A.H. Sorensen, Phys. Rev. A 53 (1996) 2443-2455
44
45
// -------------------------------------------------------------------
46
//
47
48
#ifndef G4LindhardSorensenIonModel_h
49
#define G4LindhardSorensenIonModel_h 1
50
51
#include <
CLHEP/Units/SystemOfUnits.h
>
52
53
#include "
G4VEmModel.hh
"
54
#include "
G4NistManager.hh
"
55
56
class
G4EmCorrections
;
57
class
G4ParticleChangeForLoss
;
58
class
G4LindhardSorensenData
;
59
60
class
G4LindhardSorensenIonModel
:
public
G4VEmModel
61
{
62
63
public
:
64
65
explicit
G4LindhardSorensenIonModel
(
const
G4ParticleDefinition
*
p
=
nullptr
,
66
const
G4String
& nam =
"LindhardSorensen"
);
67
68
virtual
~G4LindhardSorensenIonModel
();
69
70
virtual
void
Initialise
(
const
G4ParticleDefinition
*,
71
const
G4DataVector
&)
override
;
72
73
virtual
G4double
MinEnergyCut
(
const
G4ParticleDefinition
*,
74
const
G4MaterialCutsCouple
* couple)
override
;
75
76
virtual
G4double
ComputeCrossSectionPerElectron
(
77
const
G4ParticleDefinition
*,
78
G4double
kineticEnergy,
79
G4double
cutEnergy,
80
G4double
maxEnergy);
81
82
virtual
G4double
ComputeCrossSectionPerAtom
(
83
const
G4ParticleDefinition
*,
84
G4double
kineticEnergy,
85
G4double
Z
,
G4double
A
,
86
G4double
cutEnergy,
87
G4double
maxEnergy)
override
;
88
89
virtual
G4double
CrossSectionPerVolume
(
const
G4Material
*,
90
const
G4ParticleDefinition
*,
91
G4double
kineticEnergy,
92
G4double
cutEnergy,
93
G4double
maxEnergy)
override
;
94
95
virtual
G4double
ComputeDEDXPerVolume
(
const
G4Material
*,
96
const
G4ParticleDefinition
*,
97
G4double
kineticEnergy,
98
G4double
cutEnergy)
override
;
99
100
virtual
G4double
GetChargeSquareRatio
(
const
G4ParticleDefinition
*
p
,
101
const
G4Material
*
mat
,
102
G4double
kineticEnergy)
override
;
103
104
virtual
G4double
GetParticleCharge
(
const
G4ParticleDefinition
* p,
105
const
G4Material
* mat,
106
G4double
kineticEnergy)
override
;
107
108
virtual
void
CorrectionsAlongStep
(
const
G4MaterialCutsCouple
* couple,
109
const
G4DynamicParticle
* dp,
110
G4double
& eloss,
111
G4double
&,
112
G4double
length
)
override
;
113
114
virtual
void
SampleSecondaries
(std::vector<G4DynamicParticle*>*,
115
const
G4MaterialCutsCouple
*,
116
const
G4DynamicParticle
*,
117
G4double
tmin,
118
G4double
maxEnergy)
override
;
119
120
protected
:
121
122
virtual
G4double
MaxSecondaryEnergy
(
const
G4ParticleDefinition
*,
123
G4double
kinEnergy)
override
;
124
125
inline
G4double
GetChargeSquareRatio
()
const
;
126
127
inline
void
SetChargeSquareRatio
(
G4double
val);
128
129
private
:
130
131
void
SetupParameters
();
132
133
inline
void
SetParticle
(
const
G4ParticleDefinition
* p);
134
135
// hide assignment operator
136
G4LindhardSorensenIonModel
&
operator
=
137
(
const
G4LindhardSorensenIonModel
&
right
) =
delete
;
138
G4LindhardSorensenIonModel
(
const
G4LindhardSorensenIonModel
&) =
delete
;
139
140
static
G4LindhardSorensenData
*
lsdata
;
141
142
const
G4ParticleDefinition
*
particle
;
143
G4ParticleDefinition
*
theElectron
;
144
G4EmCorrections
*
corr
;
145
G4ParticleChangeForLoss
*
fParticleChange
;
146
G4NistManager
*
nist
;
147
148
G4int
Zin
;
149
G4double
mass
;
150
G4double
tlimit
;
151
G4double
spin
;
152
G4double
magMoment2
;
153
G4double
chargeSquare
;
154
G4double
charge
;
155
G4double
ratio
;
156
G4double
formfact
;
157
G4double
twoln10
;
158
};
159
160
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
161
162
inline
void
163
G4LindhardSorensenIonModel::SetParticle
(
const
G4ParticleDefinition
*
p
)
164
{
165
if
(
particle
!= p) {
166
particle
=
p
;
167
SetupParameters
();
168
}
169
}
170
171
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
172
173
inline
G4double
G4LindhardSorensenIonModel::GetChargeSquareRatio
()
const
174
{
175
return
chargeSquare
;
176
}
177
178
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
179
180
inline
void
G4LindhardSorensenIonModel::SetChargeSquareRatio
(
G4double
val)
181
{
182
chargeSquare
= val;
183
}
184
185
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
186
187
#endif
geant4
tree
geant4-10.6-release
source
processes
electromagnetic
standard
include
G4LindhardSorensenIonModel.hh
Built by
Jin Huang
. updated:
Wed Jun 29 2022 17:25:34
using
1.8.2 with
ECCE GitHub integration