Geant4 10.7.0
Toolkit for the simulation of the passage of particles through matter
Loading...
Searching...
No Matches
G4MoleculeDefinition.hh
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// 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"
62#include "G4ios.hh"
66#include "G4FakeParticleID.hh"
67
71
72// -----------------------------------------------------------------------------
73// ### MoleculeDefinition ###
74// -----------------------------------------------------------------------------
75
77{
78public:
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 = "",
89
90 virtual ~G4MoleculeDefinition();
91
94
95 // Set the electronic configuration at ground level
97 G4int eNb = 2);
98 // set the occupation(0(def), 1 or 2) of the level specified
99 //(levels numbering starts from 0)
100
101 //methods to set/get diffusion properties
103 inline G4double GetDiffusionCoefficient() const;
104
105 inline void SetAtomsNumber(G4int);
106 inline G4int GetAtomsNumber() const;
107
108 inline void SetVanDerVaalsRadius(G4double);
109 inline G4double GetVanDerVaalsRadius() const;
110
111 //____________________________________________________________________________
112 // Create more molecular configurations for this molecule definition
113 // Other ways : through G4MolecularTable
114
115 // Note: the userID of the created molecule configuration will be:
116 // MoleculeDefinationName_excitedStateLabel
118 NewConfiguration(const G4String& excitedStateLabel);
119
121 NewConfigurationWithElectronOccupancy(const G4String& excitedStateLabel,
122 const G4ElectronOccupancy&,
123 double decayTime = 0.);
124
126 GetConfigurationWithLabel(const G4String& molecularConfLabel);
127
128 //____________________________________________________________________________
129 // Build the decay table
130 // Version 1
131
132 void AddDecayChannel(const G4MolecularConfiguration* molConf,
133 const G4MolecularDissociationChannel* channel);
134
135 // Version 2
136
137 void AddDecayChannel(const G4String& molecularConfLabel,
138 const G4MolecularDissociationChannel* channel);
139
140 //____________________________________________________________________________
141 // "Get" methods related to decay
142
143 const std::vector<const G4MolecularDissociationChannel*>*
145 const std::vector<const G4MolecularDissociationChannel*>*
146 GetDecayChannels(const G4String&) const;
147
148 inline const G4MolecularDissociationTable* GetDecayTable() const;
150 inline G4double GetDecayTime() const;
151
152 //____________________________________________________________________________
153 // General "Get" methods
155 inline G4int GetCharge() const;
156 inline const G4String& GetName() const;
157 inline G4double GetMass() const;
158 inline const G4String& GetType() const;
159 inline G4int GetNbElectrons() const;
160 inline G4int GetNbMolecularShells() const;
161
162 inline const G4String& GetFormatedName() const
163 {
164 return fFormatedName;
165 }
166
167 //____________________________________________________________________________
168 inline void SetFormatedName(const G4String& name)
169 {
170 fFormatedName = name;
171 }
172
173 void Finalize();
174
175 static G4MoleculeDefinition* Load(std::istream&);
176 void Serialize(std::ostream&);
177
178protected:
180
181private:
182 G4int fCharge;
183
184 // Diffusion Coefficient in one medium only
185 // Note : For the time being, we will consider only one diffusion
186 // coefficient for the all simulation => diffusion in one medium only
187 // If the user needs to use the diffusion in different materials,
188 // she/he should contact the developers/maintainers of this package
189 G4double fDiffusionCoefficient;
190
191 G4int fAtomsNb;
192 G4double fVanDerVaalsRadius;
193
194 G4String fFormatedName;
195
196 G4ElectronOccupancy* fElectronOccupancy;
197 G4MolecularDissociationTable* fDecayTable;
198};
199
201{
202 fDiffusionCoefficient = value;
203}
204
206{
207 return fDiffusionCoefficient;
208}
209
211{
212 return fCharge;
213}
214
216{
217 return GetPDGLifeTime();
218}
219
221{
222 fAtomsNb = val;
223}
224
226{
227 return fAtomsNb;
228}
229
231{
232 fVanDerVaalsRadius = val;
233}
234
236{
237 return fVanDerVaalsRadius;
238}
239
241{
242 return fElectronOccupancy;
243}
244
246{
247
248 return GetParticleName();
249}
250
252{
253 return GetPDGMass();
254}
255
257{
258 return GetParticleSubType();
259}
260
262{
263 if (fElectronOccupancy)
264 {
265 return fElectronOccupancy->GetTotalOccupancy();
266 }
267
268 return 0;
269 // return fNbOfElectrons;
270}
271
273{
274 if (fElectronOccupancy)
275 {
276 return fElectronOccupancy->GetSizeOfOrbit();
277 }
278
279 return 0;
280}
281
283{
284 return fDecayTable;
285}
286
288{
289 return fDecayTable;
290}
291#endif
292
double G4double
Definition: G4Types.hh:83
int G4int
Definition: G4Types.hh:85
G4int GetTotalOccupancy() const
static G4FakeParticleID Create()
const G4ElectronOccupancy * GetGroundStateElectronOccupancy() const
const G4String & GetName() const
const G4MolecularDissociationTable * GetDecayTable() const
void SetFormatedName(const G4String &name)
const G4String & GetFormatedName() const
void SetVanDerVaalsRadius(G4double)
void Serialize(std::ostream &)
G4MolecularConfiguration * GetConfigurationWithLabel(const G4String &molecularConfLabel)
G4MoleculeDefinition(const G4MoleculeDefinition &)=delete
const G4String & GetType() const
G4MoleculeDefinition & operator=(const G4MoleculeDefinition &)=delete
static G4MoleculeDefinition * Load(std::istream &)
G4double GetVanDerVaalsRadius() const
G4int GetNbMolecularShells() const
void SetLevelOccupation(G4int, G4int eNb=2)
G4double GetDecayTime() const
void SetDiffusionCoefficient(G4double)
G4double GetDiffusionCoefficient() const
void AddDecayChannel(const G4MolecularConfiguration *molConf, const G4MolecularDissociationChannel *channel)
G4MolecularConfiguration * NewConfiguration(const G4String &excitedStateLabel)
G4MolecularConfiguration * NewConfigurationWithElectronOccupancy(const G4String &excitedStateLabel, const G4ElectronOccupancy &, double decayTime=0.)
const std::vector< const G4MolecularDissociationChannel * > * GetDecayChannels(const G4MolecularConfiguration *) const
G4double GetPDGLifeTime() const
const G4String & GetParticleName() const
const G4String & GetParticleSubType() const