Geant4 11.2.2
Toolkit for the simulation of the passage of particles through matter
Loading...
Searching...
No Matches
G4DNACPA100ExcitationStructure.cc
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// Based on the work of M. Terrissol and M. C. Bordage
27//
28// Users are requested to cite the following papers:
29// - M. Terrissol, A. Baudre, Radiat. Prot. Dosim. 31 (1990) 175-177
30// - M.C. Bordage, J. Bordes, S. Edel, M. Terrissol, X. Franceries,
31// M. Bardies, N. Lampe, S. Incerti, Phys. Med. 32 (2016) 1833-1840
32//
33// Authors of this class:
34// M.C. Bordage, M. Terrissol, S. Edel, J. Bordes, S. Incerti
35//
36// 15.01.2014: creation
37//
38//
39// Modified for Adenine material by S. Zein on 20.04.2021
40// Based on the study by S. Zein et. al. Nucl. Inst. Meth. B 488 (2021) 70-82
41
43
44#include "G4Material.hh"
45#include "G4SystemOfUnits.hh"
47{
48 fpGuanine = G4Material::GetMaterial("G4_GUANINE", false);
49 fpG4_WATER = G4Material::GetMaterial("G4_WATER", false);
50 fpDeoxyribose = G4Material::GetMaterial("G4_DEOXYRIBOSE", false);
51 fpCytosine = G4Material::GetMaterial("G4_CYTOSINE", false);
52 fpThymine = G4Material::GetMaterial("G4_THYMINE", false);
53 fpAdenine = G4Material::GetMaterial("G4_ADENINE", false);
54 fpPhosphate = G4Material::GetMaterial("G4_PHOSPHORIC_ACID", false);
55
56 if (fpGuanine != nullptr) {
57 InitialiseGuanine();
58 }
59
60 if (fpG4_WATER != nullptr) {
61 InitialiseWater();
62 }
63
64 if (fpDeoxyribose != nullptr) {
65 InitialiseDeoxyribose();
66 }
67
68 if (fpCytosine != nullptr) {
69 InitialiseCytosine();
70 }
71
72 if (fpThymine != nullptr) {
73 InitialiseThymine();
74 }
75
76 if (fpAdenine != nullptr) {
77 InitialiseAdenine();
78 }
79
80 if (fpPhosphate != nullptr) {
81 InitialisePhosphate();
82 }
83}
84
85void G4DNACPA100ExcitationStructure::InitialiseGuanine()
86{
87 auto index = fpGuanine->GetIndex();
88 fEnergyConstant[index].push_back(8.2315 * eV);
89 fEnergyConstant[index].push_back(11.0928 * eV);
90 fEnergyConstant[index].push_back(11.5984 * eV);
91 fEnergyConstant[index].push_back(11.7906 * eV);
92 fEnergyConstant[index].push_back(11.9382 * eV);
93 fEnergyConstant[index].push_back(12.4424 * eV);
94 fEnergyConstant[index].push_back(13.3581 * eV);
95 fEnergyConstant[index].push_back(15.1381 * eV);
96 fEnergyConstant[index].push_back(16.4059 * eV);
97 fEnergyConstant[index].push_back(16.496 * eV);
98 fEnergyConstant[index].push_back(16.8457 * eV);
99 fEnergyConstant[index].push_back(17.297 * eV);
100 fEnergyConstant[index].push_back(18.0608 * eV);
101 fEnergyConstant[index].push_back(18.441 * eV);
102 fEnergyConstant[index].push_back(19.2414 * eV);
103
104 fnLevels[index] = fEnergyConstant[index].size();
105}
106void G4DNACPA100ExcitationStructure::InitialiseWater()
107{
108 auto index = fpG4_WATER->GetIndex();
109 // The following values are extracted from the thesis of S. Edel,
110 // Paul Sabatier University, Toulouse, France, July 7, 2006
111 // Page 36
112 fEnergyConstant[index].push_back(8.17 * eV);
113 fEnergyConstant[index].push_back(10.13 * eV);
114 fEnergyConstant[index].push_back(11.31 * eV);
115 fEnergyConstant[index].push_back(12.91 * eV);
116 fEnergyConstant[index].push_back(14.50 * eV);
117
118 fUConstant[index].push_back(61.91 * eV);
119 fUConstant[index].push_back(59.52 * eV);
120 fUConstant[index].push_back(48.36 * eV);
121 fUConstant[index].push_back(70.71 * eV);
122 fUConstant[index].push_back(796.2 * eV);
123
124 fnLevels[index] = fEnergyConstant[index].size();
125}
126void G4DNACPA100ExcitationStructure::InitialiseDeoxyribose()
127{
128 auto index = fpDeoxyribose->GetIndex();
129 fEnergyConstant[index].push_back(11.2410 * eV);
130 fEnergyConstant[index].push_back(11.7927 * eV);
131 fEnergyConstant[index].push_back(12.6579 * eV);
132 fEnergyConstant[index].push_back(12.8163 * eV);
133 fEnergyConstant[index].push_back(13.3238 * eV);
134 fEnergyConstant[index].push_back(13.9487 * eV);
135 fEnergyConstant[index].push_back(14.4374 * eV);
136 fEnergyConstant[index].push_back(14.7433 * eV);
137 fEnergyConstant[index].push_back(15.0818 * eV);
138 fEnergyConstant[index].push_back(15.6112 * eV);
139 fEnergyConstant[index].push_back(16.0547 * eV);
140 fEnergyConstant[index].push_back(16.8319 * eV);
141 fEnergyConstant[index].push_back(17.4294 * eV);
142 fEnergyConstant[index].push_back(18.0000 * eV);
143 fEnergyConstant[index].push_back(18.2696 * eV);
144 fEnergyConstant[index].push_back(18.6049 * eV);
145 fEnergyConstant[index].push_back(19.8378 * eV);
146
147 fnLevels[index] = fEnergyConstant[index].size();
148}
149void G4DNACPA100ExcitationStructure::InitialiseCytosine()
150{
151 auto index = fpCytosine->GetIndex();
152 // The following values are extracted from the thesis of S. Edel,
153 fEnergyConstant[index].push_back(9.3222 * eV);
154 fEnergyConstant[index].push_back(10.4601 * eV);
155 fEnergyConstant[index].push_back(11.3044 * eV);
156 fEnergyConstant[index].push_back(11.9986 * eV);
157 fEnergyConstant[index].push_back(13.4528 * eV);
158 fEnergyConstant[index].push_back(14.7371 * eV);
159 fEnergyConstant[index].push_back(16.2286 * eV);
160 fEnergyConstant[index].push_back(16.5877 * eV);
161 fEnergyConstant[index].push_back(17.0741 * eV);
162 fEnergyConstant[index].push_back(17.1875 * eV);
163 fEnergyConstant[index].push_back(18.638 * eV);
164 fEnergyConstant[index].push_back(19.6884 * eV);
165 fnLevels[index] = fEnergyConstant[index].size();
166}
167void G4DNACPA100ExcitationStructure::InitialiseThymine()
168{
169 // The following values are extracted from the thesis of S. Edel,
170 auto index = fpThymine->GetIndex();
171
172 fEnergyConstant[index].push_back(9.639 * eV);
173 fEnergyConstant[index].push_back(11.8278 * eV);
174 fEnergyConstant[index].push_back(12.0876 * eV);
175 fEnergyConstant[index].push_back(12.9656 * eV);
176 fEnergyConstant[index].push_back(13.9555 * eV);
177 fEnergyConstant[index].push_back(15.0774 * eV);
178 fEnergyConstant[index].push_back(15.4078 * eV);
179 fEnergyConstant[index].push_back(15.4689 * eV);
180 fEnergyConstant[index].push_back(16.1964 * eV);
181 fEnergyConstant[index].push_back(16.8955 * eV);
182 fEnergyConstant[index].push_back(17.5018 * eV);
183 fEnergyConstant[index].push_back(18.2979 * eV);
184 fEnergyConstant[index].push_back(18.4495 * eV);
185 fEnergyConstant[index].push_back(19.3186 * eV);
186 fnLevels[index] = fEnergyConstant[index].size();
187}
188void G4DNACPA100ExcitationStructure::InitialiseAdenine()
189{
190 auto index = fpAdenine->GetIndex();
191 // The following values are extracted from the thesis of S. Edel,
192
193 fEnergyConstant[index].push_back(8.5114 * eV);
194 fEnergyConstant[index].push_back(10.1294 * eV);
195 fEnergyConstant[index].push_back(11.0606 * eV);
196 fEnergyConstant[index].push_back(11.5849 * eV);
197 fEnergyConstant[index].push_back(12.1533 * eV);
198 fEnergyConstant[index].push_back(13.356 * eV);
199 fEnergyConstant[index].push_back(13.6554 * eV);
200 fEnergyConstant[index].push_back(15.3296 * eV);
201 fEnergyConstant[index].push_back(16.179 * eV);
202 fEnergyConstant[index].push_back(16.7676 * eV);
203 fEnergyConstant[index].push_back(17.3489 * eV);
204 fEnergyConstant[index].push_back(17.5568 * eV);
205 fEnergyConstant[index].push_back(18.554 * eV);
206 fEnergyConstant[index].push_back(19.0866 * eV);
207 fnLevels[index] = fEnergyConstant[index].size();
208}
209void G4DNACPA100ExcitationStructure::InitialisePhosphate()
210{
211 // The following values are extracted from the thesis of S. Edel,
212 auto index = fpPhosphate->GetIndex();
213 fEnergyConstant[index].push_back(12.9963 * eV);
214 fEnergyConstant[index].push_back(12.9972 * eV);
215 fEnergyConstant[index].push_back(14.3109 * eV);
216 fEnergyConstant[index].push_back(15.2221 * eV);
217 fEnergyConstant[index].push_back(16.0591 * eV);
218 fEnergyConstant[index].push_back(16.0622 * eV);
219 fEnergyConstant[index].push_back(17.6365 * eV);
220 fEnergyConstant[index].push_back(17.6401 * eV);
221 fEnergyConstant[index].push_back(18.8803 * eV);
222 fnLevels[index] = fEnergyConstant[index].size();
223}
224
225//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
226
228 const std::size_t& MatID)
229{
230 G4double ionisation = 0.;
231
232 if (level < fnLevels[MatID]) {
233 ionisation = fEnergyConstant[MatID][level];
234 }
235 else {
236 std::ostringstream oss;
237 oss << " material was not found. ";
238 G4Exception("G4DNACPA100ExcitationStructure::ExcitationEnergy", "CPA001", FatalException,
239 oss.str().c_str());
240 }
241
242 return ionisation;
243}
244
245//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
246
247G4double G4DNACPA100ExcitationStructure::UEnergy(const std::size_t& level, const std::size_t& MatID)
248{
249 G4double UEnergy = 0.;
250 if (level < fnLevels[MatID]) {
251 UEnergy = fUConstant[MatID][level];
252 }
253 else {
254 std::ostringstream oss;
255 oss << " material was not found. ";
256 G4Exception("G4DNACPA100ExcitationStructure::ExcitationEnergy", "CPA001", FatalException,
257 oss.str().c_str());
258 }
259
260 return UEnergy;
261}
@ FatalException
void G4Exception(const char *originOfException, const char *exceptionCode, G4ExceptionSeverity severity, const char *description)
double G4double
Definition G4Types.hh:83
G4double UEnergy(const std::size_t &level, const std::size_t &MatID)
G4double ExcitationEnergy(const std::size_t &level, const std::size_t &MatID)
std::size_t GetIndex() const
static G4Material * GetMaterial(const G4String &name, G4bool warning=true)