ECCE @ EIC Software
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
G4DNAMolecule.cc
Go to the documentation of this file. Or view the newest version in sPHENIX GitHub for file G4DNAMolecule.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 //
26 //
27 
28 #include "G4DNAMolecule.hh"
29 #include "G4ParticleTable.hh"
30 #include "G4SystemOfUnits.hh"
31 #include "G4MoleculeDefinition.hh"
32 #include "G4ParticleTable.hh"
33 #include "G4PhysicalConstants.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 }