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
G4MoleculeDefinition.hh
Go to the documentation of this file.
Or view
the newest version in sPHENIX GitHub for file G4MoleculeDefinition.hh
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
// Contact: Mathieu Karamitros (kara (AT) cenbg . in2p3 . fr)
27
//
28
// WARNING : This class is released as a prototype.
29
// It might strongly evolve or even disapear in the next releases.
30
//
31
// ----------------------------------------------------------------------
32
// GEANT 4 class implementation file
33
//
34
// 21 Oct 2009 first implementation by A. Mantero and M.Karamitros
35
// Based on prototype of A.Mantero
36
// **********************************************************************
37
//
38
// Author: Mathieu Karamitros
39
40
// The code is developed in the framework of the ESA AO7146
41
//
42
// We would be very happy hearing from you, send us your feedback! :)
43
//
44
// In order for Geant4-DNA to be maintained and still open-source,
45
// article citations are crucial.
46
// If you use Geant4-DNA chemistry and you publish papers about your software,
47
// in addition to the general paper on Geant4-DNA:
48
//
49
// Int. J. Model. Simul. Sci. Comput. 1 (2010) 157–178
50
//
51
// we would be very happy if you could please also cite the following
52
// reference papers on chemistry:
53
//
54
// J. Comput. Phys. 274 (2014) 841-882
55
// Prog. Nucl. Sci. Tec. 2 (2011) 503-508
56
57
#ifndef G4MoleculeDefinition_h
58
#define G4MoleculeDefinition_h 1
59
60
#include "
globals.hh
"
61
#include "
G4ParticleDefinition.hh
"
62
#include "
G4ios.hh
"
63
#include "
G4ElectronOccupancy.hh
"
64
#include "
G4MolecularDissociationTable.hh
"
65
#include "
G4MolecularDissociationChannel.hh
"
66
#include "
G4FakeParticleID.hh
"
67
68
class
G4MolecularDissociationChannel
;
69
class
G4MolecularDissociationTable
;
70
class
G4MolecularConfiguration
;
71
72
// -----------------------------------------------------------------------------
73
// ### MoleculeDefinition ###
74
// -----------------------------------------------------------------------------
75
76
class
G4MoleculeDefinition
:
public
G4ParticleDefinition
77
{
78
public
:
79
G4MoleculeDefinition
(
const
G4String
&
name
,
80
G4double
mass
,
81
G4double
diffCoeff,
82
G4int
charge
= 0,
83
G4int
electronicLevels = 0,
84
G4double
radius
= -1,
85
G4int
atomsNumber = -1,
86
G4double
lifetime = -1,
87
G4String
aType =
""
,
88
G4FakeParticleID
ID =
G4FakeParticleID::Create
());
89
90
virtual
~G4MoleculeDefinition
();
91
92
// Set the electronic configuration at ground level
93
void
SetLevelOccupation
(
G4int
,
94
G4int
eNb = 2);
95
// set the occupation(0(def), 1 or 2) of the level specified
96
//(levels numbering starts from 0)
97
98
//methods to set/get diffusion properties
99
inline
void
SetDiffusionCoefficient
(
G4double
);
100
inline
G4double
GetDiffusionCoefficient
()
const
;
101
102
inline
void
SetAtomsNumber
(
G4int
);
103
inline
G4int
GetAtomsNumber
()
const
;
104
105
inline
void
SetVanDerVaalsRadius
(
G4double
);
106
inline
G4double
GetVanDerVaalsRadius
()
const
;
107
108
//____________________________________________________________________________
109
// Create more molecular configurations for this molecule definition
110
// Other ways : through G4MolecularTable
111
112
// Note: the userID of the created molecule configuration will be:
113
// MoleculeDefinationName_excitedStateLabel
114
G4MolecularConfiguration
*
115
NewConfiguration
(
const
G4String
& excitedStateLabel);
116
117
G4MolecularConfiguration
*
118
NewConfigurationWithElectronOccupancy
(
const
G4String
& excitedStateLabel,
119
const
G4ElectronOccupancy
&,
120
double
decayTime = 0.);
121
122
G4MolecularConfiguration
*
123
GetConfigurationWithLabel
(
const
G4String
& molecularConfLabel);
124
125
//____________________________________________________________________________
126
// Build the decay table
127
// Version 1
128
129
void
AddDecayChannel
(
const
G4MolecularConfiguration
* molConf,
130
const
G4MolecularDissociationChannel
* channel);
131
132
// Version 2
133
134
void
AddDecayChannel
(
const
G4String
& molecularConfLabel,
135
const
G4MolecularDissociationChannel
* channel);
136
137
//____________________________________________________________________________
138
// "Get" methods related to decay
139
140
const
std::vector<const G4MolecularDissociationChannel*>*
141
GetDecayChannels
(
const
G4MolecularConfiguration
*)
const
;
142
const
std::vector<const G4MolecularDissociationChannel*>*
143
GetDecayChannels
(
const
G4String
&)
const
;
144
145
inline
const
G4MolecularDissociationTable
*
GetDecayTable
()
const
;
146
inline
G4MolecularDissociationTable
*
GetDecayTable
();
147
inline
G4double
GetDecayTime
()
const
;
148
149
//____________________________________________________________________________
150
// General "Get" methods
151
inline
const
G4ElectronOccupancy
*
GetGroundStateElectronOccupancy
()
const
;
152
inline
G4int
GetCharge
()
const
;
153
inline
const
G4String
&
GetName
()
const
;
154
inline
G4double
GetMass
()
const
;
155
inline
const
G4String
&
GetType
()
const
;
156
inline
G4int
GetNbElectrons
()
const
;
157
inline
G4int
GetNbMolecularShells
()
const
;
158
159
inline
const
G4String
&
GetFormatedName
()
const
160
{
161
return
fFormatedName
;
162
}
163
164
//____________________________________________________________________________
165
inline
void
SetFormatedName
(
const
G4String
& name)
166
{
167
fFormatedName
=
name
;
168
}
169
170
void
Finalize
();
171
172
static
G4MoleculeDefinition
*
Load
(std::istream&);
173
void
Serialize
(std::ostream&);
174
175
protected
:
176
G4MoleculeDefinition
();
177
G4MoleculeDefinition
(
const
G4MoleculeDefinition
&);
178
179
private
:
180
const
G4MoleculeDefinition
&
operator=
(
const
G4MoleculeDefinition
&
right
);
181
182
private
:
183
G4int
fCharge
;
184
185
// Diffusion Coefficient in one medium only
186
// Note : For the time being, we will consider only one diffusion
187
// coefficient for the all simulation => diffusion in one medium only
188
// If the user needs to use the diffusion in different materials,
189
// she/he should contact the developers/maintainers of this package
190
G4double
fDiffusionCoefficient
;
191
192
G4int
fAtomsNb
;
193
G4double
fVanDerVaalsRadius
;
194
195
G4String
fFormatedName
;
196
197
G4ElectronOccupancy
*
fElectronOccupancy
;
198
G4MolecularDissociationTable
*
fDecayTable
;
199
};
200
201
inline
void
G4MoleculeDefinition::SetDiffusionCoefficient
(
G4double
value
)
202
{
203
fDiffusionCoefficient
=
value
;
204
}
205
206
inline
G4double
G4MoleculeDefinition::GetDiffusionCoefficient
()
const
207
{
208
return
fDiffusionCoefficient
;
209
}
210
211
inline
G4int
G4MoleculeDefinition::GetCharge
()
const
212
{
213
return
fCharge
;
214
}
215
216
inline
G4double
G4MoleculeDefinition::GetDecayTime
()
const
217
{
218
return
GetPDGLifeTime
();
219
}
220
221
inline
void
G4MoleculeDefinition::SetAtomsNumber
(
G4int
val)
222
{
223
fAtomsNb
= val;
224
}
225
226
inline
G4int
G4MoleculeDefinition::GetAtomsNumber
()
const
227
{
228
return
fAtomsNb
;
229
}
230
231
inline
void
G4MoleculeDefinition::SetVanDerVaalsRadius
(
G4double
val)
232
{
233
fVanDerVaalsRadius
= val;
234
}
235
236
inline
G4double
G4MoleculeDefinition::GetVanDerVaalsRadius
()
const
237
{
238
return
fVanDerVaalsRadius
;
239
}
240
241
inline
const
G4ElectronOccupancy
*
G4MoleculeDefinition::GetGroundStateElectronOccupancy
()
const
242
{
243
return
fElectronOccupancy
;
244
}
245
246
inline
const
G4String
&
G4MoleculeDefinition::GetName
()
const
247
{
248
249
return
GetParticleName
();
250
}
251
252
inline
G4double
G4MoleculeDefinition::GetMass
()
const
253
{
254
return
GetPDGMass
();
255
}
256
257
inline
const
G4String
&
G4MoleculeDefinition::GetType
()
const
258
{
259
return
GetParticleSubType
();
260
}
261
262
inline
G4int
G4MoleculeDefinition::GetNbElectrons
()
const
263
{
264
if
(
fElectronOccupancy
)
265
{
266
return
fElectronOccupancy
->
GetTotalOccupancy
();
267
}
268
269
return
0;
270
// return fNbOfElectrons;
271
}
272
273
inline
G4int
G4MoleculeDefinition::GetNbMolecularShells
()
const
274
{
275
if
(
fElectronOccupancy
)
276
{
277
return
fElectronOccupancy
->
GetSizeOfOrbit
();
278
}
279
280
return
0;
281
}
282
283
inline
const
G4MolecularDissociationTable
*
G4MoleculeDefinition::GetDecayTable
()
const
284
{
285
return
fDecayTable
;
286
}
287
288
inline
G4MolecularDissociationTable
*
G4MoleculeDefinition::GetDecayTable
()
289
{
290
return
fDecayTable
;
291
}
292
#endif
293
geant4
tree
geant4-10.6-release
source
processes
electromagnetic
dna
molecules
management
include
G4MoleculeDefinition.hh
Built by
Jin Huang
. updated:
Wed Jun 29 2022 17:25:30
using
1.8.2 with
ECCE GitHub integration