Geant4-11
G4DNAMolecule.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//
27
28#include "G4DNAMolecule.hh"
29#include "G4ParticleTable.hh"
30#include "G4SystemOfUnits.hh"
32#include "G4ParticleTable.hh"
34
36
37//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
38
40{
41 const G4String name = "Damaged_Deoxyribose";
42 if(fgInstance != nullptr)
43 {
44 return fgInstance;
45 }
47 G4ParticleDefinition* pInstance = pTable->FindParticle(name);
48
49 if(pInstance == nullptr)
50 {
51 G4double mass = 134.1305 * g / Avogadro * c_squared;//wikipedia
52 pInstance = new G4MoleculeDefinition(name, mass, 0 * (m * m / s), 0,
53 5, 3.0 * angstrom, // radius
54 2 // number of atoms
55 );
56 }
57
58 fgInstance = reinterpret_cast<G4DamagedDeoxyribose*>(pInstance);
59 return fgInstance;
60}
61
63
64//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
65
67{
68 const G4String name = "Damaged_Adenine";
69 if(fgInstance != nullptr)
70 {
71 return fgInstance;
72 }
74 G4ParticleDefinition* pInstance = pTable->FindParticle(name);
75
76 if(pInstance == nullptr)
77 {
78 G4double mass = 135.1267 * g / Avogadro * c_squared;
79 pInstance = new G4MoleculeDefinition(name, mass, 0 * (m * m / s), 0,
80 5, 3.0 * angstrom, // radius
81 2 // number of atoms
82 );
83 }
84 fgInstance = reinterpret_cast<G4DamagedAdenine*>(pInstance);
85 return fgInstance;
86}
87
88
90
91//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
92
94{
95 const G4String name = "Damaged_Guanine";
96 if(fgInstance != nullptr)
97 {
98 return fgInstance;
99 }
101 G4ParticleDefinition* pInstance = pTable->FindParticle(name);
102
103 if(pInstance == nullptr)
104 {
105 G4double mass = 151.1261 * g / Avogadro * c_squared;
106 pInstance = new G4MoleculeDefinition(name, mass, 0 * (m * m / s), 0,
107 5, 3.0 * angstrom, // radius
108 2 // number of atoms
109 );
110 }
111 fgInstance = reinterpret_cast<G4DamagedGuanine*>(pInstance);
112 return fgInstance;
113}
114
116
117//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
118
120{
121 const G4String name = "Damaged_Thymine";
122 if(fgInstance != nullptr)
123 {
124 return fgInstance;
125 }
127 G4ParticleDefinition* pInstance = pTable->FindParticle(name);
128
129 if(pInstance == nullptr)
130 {
131 G4double mass = 126.1133 * g / Avogadro * c_squared;
132 pInstance = new G4MoleculeDefinition(name, mass, 0 * (m * m / s), 0,
133 5, 3.0 * angstrom, // radius
134 2 // number of atoms
135 );
136 }
137
138 fgInstance = reinterpret_cast<G4DamagedThymine*>(pInstance);
139 return fgInstance;
140}
141
143
144//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
145
147{
148 const G4String name = "Damaged_Cytosine";
149 if(fgInstance != nullptr)
150 {
151 return fgInstance;
152 }
154 G4ParticleDefinition* pInstance = pTable->FindParticle(name);
155
156 if(pInstance == nullptr)
157 {
158 G4double mass = 111.102 * g / Avogadro * c_squared;
159 pInstance = new G4MoleculeDefinition(name, mass, 0 * (m * m / s), 0,
160 5, 2.9 * angstrom, // radius
161 2 // number of atoms
162 );
163 }
164 fgInstance = reinterpret_cast<G4DamagedCytosine*>(pInstance);
165 return fgInstance;
166}
167
168
170
171//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
172
174{
175 const G4String name = "Deoxyribose";
176 if(fgInstance != nullptr)
177 {
178 return fgInstance;
179 }
181 G4ParticleDefinition* pInstance = pTable->FindParticle(name);
182
183 if(pInstance == nullptr)
184 {
185 G4double mass = 134.1305 * g / Avogadro * c_squared;
186 pInstance = new G4MoleculeDefinition(name, mass, 0 * (m * m / s), 0,
187 5, 2.9 * angstrom, // radius
188 2 // number of atoms
189 );
190 }
191 fgInstance = reinterpret_cast<G4Deoxyribose*>(pInstance);
192 return fgInstance;
193}
194
196
197//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
198
200{
201 const G4String name = "Phosphate";
202 if(fgInstance != nullptr)
203 {
204 return fgInstance;
205 }
207 G4ParticleDefinition* pInstance = pTable->FindParticle(name);
208
209 if(pInstance == nullptr)
210 {
211 G4double mass = 94.9714 * g / Avogadro * c_squared;
212 pInstance = new G4MoleculeDefinition(name, mass, 0 * (m * m / s), 0,
213 5, 2.7 * angstrom, // radius
214 2 // number of atoms
215 );
216 }
217 fgInstance = reinterpret_cast<G4Phosphate*>(pInstance);
218 return fgInstance;
219}
220
222
223//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
224
226{
227 const G4String name = "Adenine";
228 if(fgInstance != nullptr)
229 {
230 return fgInstance;
231 }
233 G4ParticleDefinition* pInstance = pTable->FindParticle(name);
234
235 if(pInstance == nullptr)
236 {
237 G4double mass = 135.1267 * g / Avogadro * c_squared;
238 pInstance = new G4MoleculeDefinition(name, mass, 0 * (m * m / s), 0,
239 5, 3 * angstrom, // radius
240 1 // number of atoms
241 );
242 }
243 fgInstance = reinterpret_cast<G4Adenine*>(pInstance);
244 return fgInstance;
245}
246
248
249//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
250
252{
253 const G4String name = "Guanine";
254 if(fgInstance != nullptr)
255 {
256 return fgInstance;
257 }
259 G4ParticleDefinition* pInstance = pTable->FindParticle(name);
260
261 if(pInstance == nullptr)
262 {
263 G4double mass = 151.1261 * g / Avogadro * c_squared;
264 pInstance = new G4MoleculeDefinition(name, mass, 0 * (m * m / s), 0,
265 5, 3 * angstrom, // radius
266 1 // number of atoms
267 );
268
269 }
270
271 fgInstance = reinterpret_cast<G4Guanine*>(pInstance);
272 return fgInstance;
273}
274
276
277//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
278
280{
281 const G4String name = "Thymine";
282 if(fgInstance != nullptr)
283 {
284 return fgInstance;
285 }
287 G4ParticleDefinition* pInstance = pTable->FindParticle(name);
288
289 if(pInstance == nullptr)
290 {
291 G4double mass = 126.1133 * g / Avogadro * c_squared;
292 pInstance = new G4MoleculeDefinition(name, mass, 0 * (m * m / s), 0,
293 5, 3 * angstrom, // radius
294 1 // number of atoms
295 );
296 }
297 fgInstance = reinterpret_cast<G4Thymine*>(pInstance);
298 return fgInstance;
299}
300
302
303//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
304
306{
307 const G4String name = "Cytosine";
308 if(fgInstance != nullptr)
309 {
310 return fgInstance;
311 }
313 G4ParticleDefinition* pInstance = pTable->FindParticle(name);
314
315 if(pInstance == nullptr)
316 {
317 G4double mass = 111.102 * g / Avogadro * c_squared;
318 pInstance = new G4MoleculeDefinition(name, mass, 0 * (m * m / s), 0,
319 5, 3 * angstrom, // radius
320 1 // number of atoms
321 );
322 }
323 fgInstance = reinterpret_cast<G4Cytosine*>(pInstance);
324 return fgInstance;
325}
326
328
329//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
330
332{
333 const G4String name = "Modified_Histone";
334 if(fgInstance != nullptr)
335 {
336 return fgInstance;
337 }
339 G4ParticleDefinition* pInstance = pTable->FindParticle(name);
340
341 if(pInstance == nullptr)
342 {
343 G4double mass = 1.4e4 * g / Avogadro * c_squared;
344 pInstance = new G4MoleculeDefinition(name, mass, 0 * (m * m / s), 0,
345 5, 24 * angstrom, // radius
346 1 // number of atoms
347 );
348 }
349 fgInstance = reinterpret_cast<G4ModifiedHistone*>(pInstance);
350 return fgInstance;
351}
352
353
355
356//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
357
359{
360 const G4String name = "Histone";
361 if(fgInstance != nullptr)
362 {
363 return fgInstance;
364 }
366 G4ParticleDefinition* pInstance = pTable->FindParticle(name);
367
368 if(pInstance == nullptr)
369 {
370 G4double mass = 1.4e4 * g / Avogadro * c_squared;//14 kDa in wikipedia
371 pInstance = new G4MoleculeDefinition(name, mass, 0 * (m * m / s), 0,
372 5, 24 * angstrom, // radius
373 1 // number of atoms
374 );
375 }
376 fgInstance = reinterpret_cast<G4Histone*>(pInstance);
377 return fgInstance;
378}
static constexpr double m
Definition: G4SIunits.hh:109
static constexpr double angstrom
Definition: G4SIunits.hh:82
static constexpr double s
Definition: G4SIunits.hh:154
static constexpr double g
Definition: G4SIunits.hh:168
double G4double
Definition: G4Types.hh:83
static G4Adenine * fgInstance
static G4Adenine * Definition()
static G4Cytosine * fgInstance
static G4Cytosine * Definition()
static G4DamagedAdenine * fgInstance
static G4DamagedAdenine * Definition()
static G4DamagedCytosine * Definition()
static G4DamagedCytosine * fgInstance
static G4DamagedDeoxyribose * fgInstance
static G4DamagedDeoxyribose * Definition()
static G4DamagedGuanine * Definition()
static G4DamagedGuanine * fgInstance
static G4DamagedThymine * fgInstance
static G4DamagedThymine * Definition()
static G4Deoxyribose * fgInstance
static G4Deoxyribose * Definition()
static G4Guanine * fgInstance
static G4Guanine * Definition()
static G4Histone * fgInstance
static G4Histone * Definition()
static G4ModifiedHistone * fgInstance
static G4ModifiedHistone * Definition()
G4ParticleDefinition * FindParticle(G4int PDGEncoding)
static G4ParticleTable * GetParticleTable()
static G4Phosphate * fgInstance
static G4Phosphate * Definition()
static G4Thymine * Definition()
static G4Thymine * fgInstance
const char * name(G4int ptype)
float Avogadro
Definition: hepunit.py:252
float c_squared
Definition: hepunit.py:257