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
G4DNAPTBIonisationStructure.cc
Go to the documentation of this file.
Or view
the newest version in sPHENIX GitHub for file G4DNAPTBIonisationStructure.cc
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
// Authors: S. Meylan and C. Villagrasa (IRSN, France)
26
// Models come from
27
// M. Bug et al, Rad. Phys and Chem. 130, 459-479 (2017)
28
29
#include "
G4DNAPTBIonisationStructure.hh
"
30
#include "
G4SystemOfUnits.hh
"
31
32
G4DNAPTBIonisationStructure::G4DNAPTBIonisationStructure
()
33
{
34
energyConstant
[
"G4_WATER"
].push_back(10.79*
eV
);
35
energyConstant
[
"G4_WATER"
].push_back(13.39*
eV
);
36
energyConstant
[
"G4_WATER"
].push_back(16.05*
eV
);
37
energyConstant
[
"G4_WATER"
].push_back(32.30*
eV
);
38
energyConstant
[
"G4_WATER"
].push_back(539.0*
eV
);
39
40
energyConstant
[
"THF"
].push_back(9.74*
eV
);
41
energyConstant
[
"THF"
].push_back(12.31*
eV
);
42
energyConstant
[
"THF"
].push_back(12.99*
eV
);
43
energyConstant
[
"THF"
].push_back(13.57*
eV
);
44
energyConstant
[
"THF"
].push_back(13.60*
eV
);
45
energyConstant
[
"THF"
].push_back(15.11*
eV
);
46
energyConstant
[
"THF"
].push_back(15.97*
eV
);
47
energyConstant
[
"THF"
].push_back(16.28*
eV
);
48
energyConstant
[
"THF"
].push_back(18.19*
eV
);
49
energyConstant
[
"THF"
].push_back(18.69*
eV
);
50
energyConstant
[
"THF"
].push_back(22.14*
eV
);
51
energyConstant
[
"THF"
].push_back(22.25*
eV
);
52
energyConstant
[
"THF"
].push_back(27.21*
eV
);
53
energyConstant
[
"THF"
].push_back(28.97*
eV
);
54
energyConstant
[
"THF"
].push_back(36.97*
eV
);
55
energyConstant
[
"THF"
].push_back(305.07*
eV
);
56
energyConstant
[
"THF"
].push_back(305.08*
eV
);
57
energyConstant
[
"THF"
].push_back(306.17*
eV
);
58
energyConstant
[
"THF"
].push_back(306.17*
eV
);
59
energyConstant
[
"THF"
].push_back(557.94*
eV
);
60
61
energyConstant
[
"PY"
].push_back(9.73*
eV
);
62
energyConstant
[
"PY"
].push_back(10.96*
eV
);
63
energyConstant
[
"PY"
].push_back(11.54*
eV
);
64
energyConstant
[
"PY"
].push_back(12.58*
eV
);
65
energyConstant
[
"PY"
].push_back(15.96*
eV
);
66
energyConstant
[
"PY"
].push_back(16.27*
eV
);
67
energyConstant
[
"PY"
].push_back(16.53*
eV
);
68
energyConstant
[
"PY"
].push_back(17.98*
eV
);
69
energyConstant
[
"PY"
].push_back(19.37*
eV
);
70
energyConstant
[
"PY"
].push_back(20.52*
eV
);
71
energyConstant
[
"PY"
].push_back(24.55*
eV
);
72
energyConstant
[
"PY"
].push_back(24.64*
eV
);
73
energyConstant
[
"PY"
].push_back(29.75*
eV
);
74
energyConstant
[
"PY"
].push_back(33.02*
eV
);
75
energyConstant
[
"PY"
].push_back(36.57*
eV
);
76
energyConstant
[
"PY"
].push_back(305.92*
eV
);
77
energyConstant
[
"PY"
].push_back(307.09*
eV
);
78
energyConstant
[
"PY"
].push_back(307.09*
eV
);
79
energyConstant
[
"PY"
].push_back(307.52*
eV
);
80
energyConstant
[
"PY"
].push_back(423.44*
eV
);
81
energyConstant
[
"PY"
].push_back(423.44*
eV
);
82
83
energyConstant
[
"PU"
].push_back(9.58*
eV
);
84
energyConstant
[
"PU"
].push_back(10.57*
eV
);
85
energyConstant
[
"PU"
].push_back(10.97*
eV
);
86
energyConstant
[
"PU"
].push_back(12.22*
eV
);
87
energyConstant
[
"PU"
].push_back(12.92*
eV
);
88
energyConstant
[
"PU"
].push_back(13.44*
eV
);
89
energyConstant
[
"PU"
].push_back(15.05*
eV
);
90
energyConstant
[
"PU"
].push_back(16.56*
eV
);
91
energyConstant
[
"PU"
].push_back(17.18*
eV
);
92
energyConstant
[
"PU"
].push_back(17.88*
eV
);
93
energyConstant
[
"PU"
].push_back(17.90*
eV
);
94
energyConstant
[
"PU"
].push_back(19.11*
eV
);
95
energyConstant
[
"PU"
].push_back(20.09*
eV
);
96
energyConstant
[
"PU"
].push_back(21.70*
eV
);
97
energyConstant
[
"PU"
].push_back(23.52*
eV
);
98
energyConstant
[
"PU"
].push_back(24.35*
eV
);
99
energyConstant
[
"PU"
].push_back(25.41*
eV
);
100
energyConstant
[
"PU"
].push_back(29.34*
eV
);
101
energyConstant
[
"PU"
].push_back(32.44*
eV
);
102
energyConstant
[
"PU"
].push_back(33.67*
eV
);
103
energyConstant
[
"PU"
].push_back(36.26*
eV
);
104
energyConstant
[
"PU"
].push_back(38.22*
eV
);
105
energyConstant
[
"PU"
].push_back(306.53*
eV
);
106
energyConstant
[
"PU"
].push_back(307.19*
eV
);
107
energyConstant
[
"PU"
].push_back(307.64*
eV
);
108
energyConstant
[
"PU"
].push_back(308.14*
eV
);
109
energyConstant
[
"PU"
].push_back(308.17*
eV
);
110
energyConstant
[
"PU"
].push_back(423.31*
eV
);
111
energyConstant
[
"PU"
].push_back(423.43*
eV
);
112
energyConstant
[
"PU"
].push_back(423.64*
eV
);
113
energyConstant
[
"PU"
].push_back(423.98*
eV
);
114
115
energyConstant
[
"TMP"
].push_back(10.81*
eV
);
116
energyConstant
[
"TMP"
].push_back(10.81*
eV
);
117
energyConstant
[
"TMP"
].push_back(12.90*
eV
);
118
energyConstant
[
"TMP"
].push_back(13.32*
eV
);
119
energyConstant
[
"TMP"
].push_back(13.32*
eV
);
120
energyConstant
[
"TMP"
].push_back(13.59*
eV
);
121
energyConstant
[
"TMP"
].push_back(14.33*
eV
);
122
energyConstant
[
"TMP"
].push_back(14.33*
eV
);
123
energyConstant
[
"TMP"
].push_back(15.90*
eV
);
124
energyConstant
[
"TMP"
].push_back(17.09*
eV
);
125
energyConstant
[
"TMP"
].push_back(17.09*
eV
);
126
energyConstant
[
"TMP"
].push_back(17.13*
eV
);
127
energyConstant
[
"TMP"
].push_back(17.85*
eV
);
128
energyConstant
[
"TMP"
].push_back(17.85*
eV
);
129
energyConstant
[
"TMP"
].push_back(18.44*
eV
);
130
energyConstant
[
"TMP"
].push_back(19.37*
eV
);
131
energyConstant
[
"TMP"
].push_back(19.37*
eV
);
132
energyConstant
[
"TMP"
].push_back(21.40*
eV
);
133
energyConstant
[
"TMP"
].push_back(26.20*
eV
);
134
energyConstant
[
"TMP"
].push_back(26.20*
eV
);
135
energyConstant
[
"TMP"
].push_back(27.43*
eV
);
136
energyConstant
[
"TMP"
].push_back(35.23*
eV
);
137
energyConstant
[
"TMP"
].push_back(37.67*
eV
);
138
energyConstant
[
"TMP"
].push_back(37.67*
eV
);
139
energyConstant
[
"TMP"
].push_back(39.64*
eV
);
140
energyConstant
[
"TMP"
].push_back(152.42*
eV
);
141
energyConstant
[
"TMP"
].push_back(152.42*
eV
);
142
energyConstant
[
"TMP"
].push_back(152.44*
eV
);
143
energyConstant
[
"TMP"
].push_back(209.59*
eV
);
144
energyConstant
[
"TMP"
].push_back(306.92*
eV
);
145
energyConstant
[
"TMP"
].push_back(306.92*
eV
);
146
energyConstant
[
"TMP"
].push_back(306.92*
eV
);
147
energyConstant
[
"TMP"
].push_back(557.34*
eV
);
148
energyConstant
[
"TMP"
].push_back(559.40*
eV
);
149
energyConstant
[
"TMP"
].push_back(559.40*
eV
);
150
energyConstant
[
"TMP"
].push_back(559.41*
eV
);
151
energyConstant
[
"TMP"
].push_back(2178.05*
eV
);
152
153
std::map<G4String, std::vector<G4double> >::iterator
it
;
154
for
(it=
energyConstant
.begin();it!=
energyConstant
.end();it++)
155
{
156
nLevels
[it->first] = (it->second).size();
157
}
158
}
159
160
161
G4DNAPTBIonisationStructure::~G4DNAPTBIonisationStructure
()
162
{ }
163
164
165
G4double
G4DNAPTBIonisationStructure::IonisationEnergy
(
G4int
level,
const
G4String
& materialName)
166
{
167
G4String
matNameModif =
ReplaceMaterial
(materialName);
168
169
// check if the material exist in the map
170
if
(
energyConstant
.find(matNameModif)==
energyConstant
.end())
171
{
172
std::ostringstream oss;
173
oss <<
"Material name was not found in energyConstantMap. Problematic material is: "
<<matNameModif;
174
G4Exception
(
"G4DNAPTBIonisationStructure::IonisationEnergy"
,
"em0002"
,
175
FatalException
, oss.str().c_str());
176
}
177
178
G4double
ionisation = 0.;
179
180
if
(level >=0 && level <
nLevels
[matNameModif]) ionisation =
energyConstant
[matNameModif][level];
181
182
return
ionisation;
183
}
184
185
G4int
G4DNAPTBIonisationStructure::NumberOfLevels
(
const
G4String
& materialName)
186
{
187
G4String
matNameModif =
ReplaceMaterial
(materialName);
188
189
// check if the material exist in the map
190
if
(
nLevels
.find(matNameModif)==
nLevels
.end())
191
{
192
std::ostringstream oss;
193
oss <<
"Material name was not found in energyConstantMap. Problematic material is: "
<<matNameModif;
194
G4Exception
(
"G4DNAPTBIonisationStructure::NumberOfLevels"
,
"em0002"
,
195
FatalException
, oss.str().c_str());
196
}
197
198
return
nLevels
[matNameModif];
199
}
200
201
G4String
G4DNAPTBIonisationStructure::ReplaceMaterial
(
const
G4String
& materialName)
202
{
203
G4String
materialNameModified (materialName);
204
205
if
(materialName==
"backbone_THF"
) materialNameModified =
"THF"
;
206
else
if
(materialName==
"backbone_TMP"
) materialNameModified =
"TMP"
;
207
else
if
(materialName==
"adenine_PU"
) materialNameModified =
"PU"
;
208
else
if
(materialName==
"guanine_PU"
) materialNameModified =
"PU"
;
209
else
if
(materialName==
"thymine_PY"
) materialNameModified =
"PY"
;
210
else
if
(materialName==
"cytosine_PY"
) materialNameModified =
"PY"
;
211
212
return
materialNameModified;
213
}
geant4
tree
geant4-10.6-release
source
processes
electromagnetic
dna
utils
src
G4DNAPTBIonisationStructure.cc
Built by
Jin Huang
. updated:
Wed Jun 29 2022 17:25:30
using
1.8.2 with
ECCE GitHub integration