Geant4
9.6.0
Toolkit for the simulation of the passage of particles through matter
Loading...
Searching...
No Matches
G4IonCoulombCrossSection.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
// G4IonCoulombCrossSection.hh
27
//-------------------------------------------------------------------
28
//
29
// GEANT4 Class header file
30
//
31
// File name: G4IonCoulombCrossSection
32
//
33
// Author: Cristina Consolandi
34
//
35
// Creation date: 05.10.2010 from G4eCoulombScatteringModel
36
//
37
// Class Description:
38
// Computation of Screen-Coulomb Cross Section
39
// for protons, alpha and heavy Ions
40
//
41
//
42
// Reference:
43
// M.J. Boschini et al. "Nuclear and Non-Ionizing Energy-Loss
44
// for Coulomb Scattered Particles from Low Energy up to Relativistic
45
// Regime in Space Radiation Environment"
46
// Accepted for publication in the Proceedings of the ICATPP Conference
47
// on Cosmic Rays for Particle and Astroparticle Physics, Villa Olmo, 7-8
48
// October, 2010, to be published by World Scientific (Singapore).
49
//
50
// Available for downloading at:
51
// http://arxiv.org/abs/1011.4822
52
//
53
// -------------------------------------------------------------------
54
55
//
56
#ifndef G4IonCoulombCrossSection_h
57
#define G4IonCoulombCrossSection_h 1
58
59
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
60
61
#include <
CLHEP/Units/SystemOfUnits.h
>
62
63
#include "
globals.hh
"
64
#include "
G4Material.hh
"
65
#include "
G4Element.hh
"
66
#include "
G4ElementVector.hh
"
67
#include "
G4NistManager.hh
"
68
#include "
G4ThreeVector.hh
"
69
#include "
G4Pow.hh
"
70
#include "
G4LossTableManager.hh
"
71
72
class
G4ParticleDefinition
;
73
74
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
75
76
class
G4IonCoulombCrossSection
77
{
78
79
public
:
80
81
G4IonCoulombCrossSection
();
82
83
virtual
~G4IonCoulombCrossSection
();
84
85
void
Initialise
(
const
G4ParticleDefinition
*,
G4double
cosThetaLim);
86
87
G4double
NuclearCrossSection
();
88
89
G4double
SampleCosineTheta
();
90
91
inline
void
SetupParticle
(
const
G4ParticleDefinition
*);
92
93
void
SetupKinematic
(
G4double
kinEnergy,
G4double
cut,
G4int
iz);
94
95
void
SetupTarget
(
G4double
Z,
G4double
kinEnergy,
G4int
heavycorr);
96
97
inline
G4double
GetMomentum2
();
98
99
private
:
100
void
SetScreenRSquare(
G4int
iz);
101
102
103
G4IonCoulombCrossSection
& operator=(
const
G4IonCoulombCrossSection
&right);
104
G4IonCoulombCrossSection
(
const
G4IonCoulombCrossSection
&);
105
106
107
108
const
G4ParticleDefinition
* theProton;
109
110
G4NistManager
* fNistManager;
111
112
protected
:
113
G4double
coeff
;
114
115
//cost - min - max
116
G4double
cosThetaMin
;
// def 1.0
117
G4double
cosThetaMax
;
// def -1.0
118
119
//SetupTarget
120
G4double
cosTetMinNuc
;
// -->cosThetaMin
121
G4double
cosTetMaxNuc
;
// -->cosThetaMax
122
123
124
//cross section
125
G4double
nucXSection
;
126
127
//energy cut
128
G4double
ecut
;
129
G4double
etag
;
130
131
// projectile........................
132
const
G4ParticleDefinition
*
particle
;
133
134
G4double
chargeSquare
;
135
G4double
spin
;
136
G4double
mass
;
137
138
//lab of incedent particle
139
G4double
tkinLab
;
140
G4double
momLab2
;
141
G4double
invbetaLab2
;
142
143
//relative system with nucleus
144
G4double
tkin
;
145
G4double
mom2
;
146
G4double
invbeta2
;
147
148
// target nucleus
149
G4double
targetZ
;
150
G4double
targetMass
;
151
G4double
screenZ
;
152
153
154
private
:
155
156
G4double
alpha2;
157
G4double
ScreenRSquare;
158
159
};
160
161
162
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
163
164
inline
void
G4IonCoulombCrossSection::SetupParticle
(
const
G4ParticleDefinition
* p)
165
{
166
particle
= p;
167
mass
=
particle
->
GetPDGMass
();
168
spin
=
particle
->
GetPDGSpin
();
169
if
(0.0 !=
spin
) {
spin
= 0.5; }
170
G4double
q = std::fabs(
particle
->
GetPDGCharge
()/CLHEP::eplus);
171
chargeSquare
= q*q;
172
tkin
= 0.0;
173
}
174
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
175
176
177
inline
G4double
G4IonCoulombCrossSection::GetMomentum2
(){
178
return
mom2
;
179
}
180
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
181
182
#endif
183
184
G4ElementVector.hh
G4Element.hh
G4LossTableManager.hh
G4Material.hh
G4NistManager.hh
G4Pow.hh
G4ThreeVector.hh
G4double
double G4double
Definition:
G4Types.hh:64
G4int
int G4int
Definition:
G4Types.hh:66
SystemOfUnits.h
G4IonCoulombCrossSection
Definition:
G4IonCoulombCrossSection.hh:77
G4IonCoulombCrossSection::mass
G4double mass
Definition:
G4IonCoulombCrossSection.hh:136
G4IonCoulombCrossSection::cosThetaMin
G4double cosThetaMin
Definition:
G4IonCoulombCrossSection.hh:116
G4IonCoulombCrossSection::Initialise
void Initialise(const G4ParticleDefinition *, G4double cosThetaLim)
Definition:
G4IonCoulombCrossSection.cc:100
G4IonCoulombCrossSection::cosThetaMax
G4double cosThetaMax
Definition:
G4IonCoulombCrossSection.hh:117
G4IonCoulombCrossSection::screenZ
G4double screenZ
Definition:
G4IonCoulombCrossSection.hh:151
G4IonCoulombCrossSection::targetZ
G4double targetZ
Definition:
G4IonCoulombCrossSection.hh:149
G4IonCoulombCrossSection::invbeta2
G4double invbeta2
Definition:
G4IonCoulombCrossSection.hh:146
G4IonCoulombCrossSection::mom2
G4double mom2
Definition:
G4IonCoulombCrossSection.hh:145
G4IonCoulombCrossSection::nucXSection
G4double nucXSection
Definition:
G4IonCoulombCrossSection.hh:125
G4IonCoulombCrossSection::SetupTarget
void SetupTarget(G4double Z, G4double kinEnergy, G4int heavycorr)
Definition:
G4IonCoulombCrossSection.cc:154
G4IonCoulombCrossSection::G4IonCoulombCrossSection
G4IonCoulombCrossSection()
Definition:
G4IonCoulombCrossSection.cc:67
G4IonCoulombCrossSection::ecut
G4double ecut
Definition:
G4IonCoulombCrossSection.hh:128
G4IonCoulombCrossSection::tkinLab
G4double tkinLab
Definition:
G4IonCoulombCrossSection.hh:139
G4IonCoulombCrossSection::SetupKinematic
void SetupKinematic(G4double kinEnergy, G4double cut, G4int iz)
Definition:
G4IonCoulombCrossSection.cc:116
G4IonCoulombCrossSection::particle
const G4ParticleDefinition * particle
Definition:
G4IonCoulombCrossSection.hh:132
G4IonCoulombCrossSection::invbetaLab2
G4double invbetaLab2
Definition:
G4IonCoulombCrossSection.hh:141
G4IonCoulombCrossSection::~G4IonCoulombCrossSection
virtual ~G4IonCoulombCrossSection()
Definition:
G4IonCoulombCrossSection.cc:96
G4IonCoulombCrossSection::cosTetMinNuc
G4double cosTetMinNuc
Definition:
G4IonCoulombCrossSection.hh:120
G4IonCoulombCrossSection::coeff
G4double coeff
Definition:
G4IonCoulombCrossSection.hh:113
G4IonCoulombCrossSection::cosTetMaxNuc
G4double cosTetMaxNuc
Definition:
G4IonCoulombCrossSection.hh:121
G4IonCoulombCrossSection::SetupParticle
void SetupParticle(const G4ParticleDefinition *)
Definition:
G4IonCoulombCrossSection.hh:164
G4IonCoulombCrossSection::targetMass
G4double targetMass
Definition:
G4IonCoulombCrossSection.hh:150
G4IonCoulombCrossSection::SampleCosineTheta
G4double SampleCosineTheta()
Definition:
G4IonCoulombCrossSection.cc:236
G4IonCoulombCrossSection::tkin
G4double tkin
Definition:
G4IonCoulombCrossSection.hh:144
G4IonCoulombCrossSection::chargeSquare
G4double chargeSquare
Definition:
G4IonCoulombCrossSection.hh:134
G4IonCoulombCrossSection::momLab2
G4double momLab2
Definition:
G4IonCoulombCrossSection.hh:140
G4IonCoulombCrossSection::spin
G4double spin
Definition:
G4IonCoulombCrossSection.hh:135
G4IonCoulombCrossSection::etag
G4double etag
Definition:
G4IonCoulombCrossSection.hh:129
G4IonCoulombCrossSection::NuclearCrossSection
G4double NuclearCrossSection()
Definition:
G4IonCoulombCrossSection.cc:211
G4IonCoulombCrossSection::GetMomentum2
G4double GetMomentum2()
Definition:
G4IonCoulombCrossSection.hh:177
G4NistManager
Definition:
G4NistManager.hh:83
G4ParticleDefinition
Definition:
G4ParticleDefinition.hh:68
G4ParticleDefinition::GetPDGMass
G4double GetPDGMass() const
Definition:
G4ParticleDefinition.hh:117
G4ParticleDefinition::GetPDGCharge
G4double GetPDGCharge() const
Definition:
G4ParticleDefinition.hh:119
G4ParticleDefinition::GetPDGSpin
G4double GetPDGSpin() const
Definition:
G4ParticleDefinition.hh:121
globals.hh
geant4-v9.6.0
source
processes
electromagnetic
standard
include
G4IonCoulombCrossSection.hh
Generated by
1.9.6