Geant4 11.1.1
Toolkit for the simulation of the passage of particles through matter
Loading...
Searching...
No Matches
G4DNAPTBIonisationStructure.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// 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
30#include "G4SystemOfUnits.hh"
31
33{
34 // MPietrzak
35 energyConstant["N2"].push_back(15.58*eV);
36 energyConstant["N2"].push_back(17.07*eV);
37 energyConstant["N2"].push_back(21.00*eV);
38 energyConstant["N2"].push_back(41.72*eV);
39 // MPietrzak
40
41 energyConstant["G4_WATER"].push_back(10.79*eV);
42 energyConstant["G4_WATER"].push_back(13.39*eV);
43 energyConstant["G4_WATER"].push_back(16.05*eV);
44 energyConstant["G4_WATER"].push_back(32.30*eV);
45 energyConstant["G4_WATER"].push_back(539.0*eV);
46
47 energyConstant["THF"].push_back(9.74*eV);
48 energyConstant["THF"].push_back(12.31*eV);
49 energyConstant["THF"].push_back(12.99*eV);
50 energyConstant["THF"].push_back(13.57*eV);
51 energyConstant["THF"].push_back(13.60*eV);
52 energyConstant["THF"].push_back(15.11*eV);
53 energyConstant["THF"].push_back(15.97*eV);
54 energyConstant["THF"].push_back(16.28*eV);
55 energyConstant["THF"].push_back(18.19*eV);
56 energyConstant["THF"].push_back(18.69*eV);
57 energyConstant["THF"].push_back(22.14*eV);
58 energyConstant["THF"].push_back(22.25*eV);
59 energyConstant["THF"].push_back(27.21*eV);
60 energyConstant["THF"].push_back(28.97*eV);
61 energyConstant["THF"].push_back(36.97*eV);
62 energyConstant["THF"].push_back(305.07*eV);
63 energyConstant["THF"].push_back(305.08*eV);
64 energyConstant["THF"].push_back(306.17*eV);
65 energyConstant["THF"].push_back(306.17*eV);
66 energyConstant["THF"].push_back(557.94*eV);
67
68 energyConstant["PY"].push_back(9.73*eV);
69 energyConstant["PY"].push_back(10.96*eV);
70 energyConstant["PY"].push_back(11.54*eV);
71 energyConstant["PY"].push_back(12.58*eV);
72 energyConstant["PY"].push_back(15.96*eV);
73 energyConstant["PY"].push_back(16.27*eV);
74 energyConstant["PY"].push_back(16.53*eV);
75 energyConstant["PY"].push_back(17.98*eV);
76 energyConstant["PY"].push_back(19.37*eV);
77 energyConstant["PY"].push_back(20.52*eV);
78 energyConstant["PY"].push_back(24.55*eV);
79 energyConstant["PY"].push_back(24.64*eV);
80 energyConstant["PY"].push_back(29.75*eV);
81 energyConstant["PY"].push_back(33.02*eV);
82 energyConstant["PY"].push_back(36.57*eV);
83 energyConstant["PY"].push_back(305.92*eV);
84 energyConstant["PY"].push_back(307.09*eV);
85 energyConstant["PY"].push_back(307.09*eV);
86 energyConstant["PY"].push_back(307.52*eV);
87 energyConstant["PY"].push_back(423.44*eV);
88 energyConstant["PY"].push_back(423.44*eV);
89
90 energyConstant["PU"].push_back(9.58*eV);
91 energyConstant["PU"].push_back(10.57*eV);
92 energyConstant["PU"].push_back(10.97*eV);
93 energyConstant["PU"].push_back(12.22*eV);
94 energyConstant["PU"].push_back(12.92*eV);
95 energyConstant["PU"].push_back(13.44*eV);
96 energyConstant["PU"].push_back(15.05*eV);
97 energyConstant["PU"].push_back(16.56*eV);
98 energyConstant["PU"].push_back(17.18*eV);
99 energyConstant["PU"].push_back(17.88*eV);
100 energyConstant["PU"].push_back(17.90*eV);
101 energyConstant["PU"].push_back(19.11*eV);
102 energyConstant["PU"].push_back(20.09*eV);
103 energyConstant["PU"].push_back(21.70*eV);
104 energyConstant["PU"].push_back(23.52*eV);
105 energyConstant["PU"].push_back(24.35*eV);
106 energyConstant["PU"].push_back(25.41*eV);
107 energyConstant["PU"].push_back(29.34*eV);
108 energyConstant["PU"].push_back(32.44*eV);
109 energyConstant["PU"].push_back(33.67*eV);
110 energyConstant["PU"].push_back(36.26*eV);
111 energyConstant["PU"].push_back(38.22*eV);
112 energyConstant["PU"].push_back(306.53*eV);
113 energyConstant["PU"].push_back(307.19*eV);
114 energyConstant["PU"].push_back(307.64*eV);
115 energyConstant["PU"].push_back(308.14*eV);
116 energyConstant["PU"].push_back(308.17*eV);
117 energyConstant["PU"].push_back(423.31*eV);
118 energyConstant["PU"].push_back(423.43*eV);
119 energyConstant["PU"].push_back(423.64*eV);
120 energyConstant["PU"].push_back(423.98*eV);
121
122 energyConstant["TMP"].push_back(10.81*eV);
123 energyConstant["TMP"].push_back(10.81*eV);
124 energyConstant["TMP"].push_back(12.90*eV);
125 energyConstant["TMP"].push_back(13.32*eV);
126 energyConstant["TMP"].push_back(13.32*eV);
127 energyConstant["TMP"].push_back(13.59*eV);
128 energyConstant["TMP"].push_back(14.33*eV);
129 energyConstant["TMP"].push_back(14.33*eV);
130 energyConstant["TMP"].push_back(15.90*eV);
131 energyConstant["TMP"].push_back(17.09*eV);
132 energyConstant["TMP"].push_back(17.09*eV);
133 energyConstant["TMP"].push_back(17.13*eV);
134 energyConstant["TMP"].push_back(17.85*eV);
135 energyConstant["TMP"].push_back(17.85*eV);
136 energyConstant["TMP"].push_back(18.44*eV);
137 energyConstant["TMP"].push_back(19.37*eV);
138 energyConstant["TMP"].push_back(19.37*eV);
139 energyConstant["TMP"].push_back(21.40*eV);
140 energyConstant["TMP"].push_back(26.20*eV);
141 energyConstant["TMP"].push_back(26.20*eV);
142 energyConstant["TMP"].push_back(27.43*eV);
143 energyConstant["TMP"].push_back(35.23*eV);
144 energyConstant["TMP"].push_back(37.67*eV);
145 energyConstant["TMP"].push_back(37.67*eV);
146 energyConstant["TMP"].push_back(39.64*eV);
147 energyConstant["TMP"].push_back(152.42*eV);
148 energyConstant["TMP"].push_back(152.42*eV);
149 energyConstant["TMP"].push_back(152.44*eV);
150 energyConstant["TMP"].push_back(209.59*eV);
151 energyConstant["TMP"].push_back(306.92*eV);
152 energyConstant["TMP"].push_back(306.92*eV);
153 energyConstant["TMP"].push_back(306.92*eV);
154 energyConstant["TMP"].push_back(557.34*eV);
155 energyConstant["TMP"].push_back(559.40*eV);
156 energyConstant["TMP"].push_back(559.40*eV);
157 energyConstant["TMP"].push_back(559.41*eV);
158 energyConstant["TMP"].push_back(2178.05*eV);
159
160 for(auto it=energyConstant.cbegin();it!=energyConstant.cend();++it)
161 {
162 nLevels[it->first] = (G4int)(it->second).size();
163 }
164}
165
166
168{ }
169
170
172{
173 G4String matNameModif = ReplaceMaterial(materialName);
174
175 // check if the material exist in the map
176 if(energyConstant.find(matNameModif)==energyConstant.end())
177 {
178 std::ostringstream oss;
179 oss << "Material name was not found in energyConstantMap. Problematic material is: "<<matNameModif;
180 G4Exception("G4DNAPTBIonisationStructure::IonisationEnergy","em0002",
181 FatalException, oss.str().c_str());
182 }
183
184 G4double ionisation = 0.;
185
186 if (level >=0 && level < nLevels[matNameModif]) ionisation = energyConstant[matNameModif][level];
187
188 return ionisation;
189}
190
192{
193 G4String matNameModif = ReplaceMaterial(materialName);
194
195 // check if the material exist in the map
196 if(nLevels.find(matNameModif)==nLevels.end())
197 {
198 std::ostringstream oss;
199 oss << "Material name was not found in energyConstantMap. Problematic material is: "<<matNameModif;
200 G4Exception("G4DNAPTBIonisationStructure::NumberOfLevels","em0002",
201 FatalException, oss.str().c_str());
202 }
203
204 return nLevels[matNameModif];
205}
206
207G4String G4DNAPTBIonisationStructure::ReplaceMaterial(const G4String& materialName)
208{
209 G4String materialNameModified (materialName);
210
211 if(materialName=="backbone_THF") materialNameModified = "THF";
212 else if(materialName=="backbone_TMP") materialNameModified = "TMP";
213 else if(materialName=="adenine_PU") materialNameModified = "PU";
214 else if(materialName=="guanine_PU") materialNameModified = "PU";
215 else if(materialName=="thymine_PY") materialNameModified = "PY";
216 else if(materialName=="cytosine_PY") materialNameModified = "PY";
217
218 return materialNameModified;
219}
@ FatalException
void G4Exception(const char *originOfException, const char *exceptionCode, G4ExceptionSeverity severity, const char *description)
Definition: G4Exception.cc:59
double G4double
Definition: G4Types.hh:83
int G4int
Definition: G4Types.hh:85
G4double IonisationEnergy(G4int level, const G4String &materialName)
G4int NumberOfLevels(const G4String &materialName)