Geant4 9.6.0
Toolkit for the simulation of the passage of particles through matter
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros
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
39
40#ifndef G4MoleculeDefinition_h
41#define G4MoleculeDefinition_h 1
42
43#include "globals.hh"
45#include "G4ios.hh"
49#include "G4MoleculeID.hh"
50
51// ######################################################################
52// ### Molecule ###
53// ######################################################################
54
58
60{
61// Class Description
62// This is the base class for all molecules
63// All molecules created are objects of this class.
64
65public: //With Description
67 G4double mass,
68 G4int electronsNumber,
69 G4int electronicLevels,
70 G4double diffCoeff,
71 G4int atomsNumber = -1,
72 G4double radius = -1,
73 G4double lifetime = -1,
74 G4String aType = "",
76 );
77
78 virtual ~G4MoleculeDefinition();
79
80 // Set the electronic configuration at ground level
81 void SetLevelOccupation(G4int, G4int eNb=2);
82 // set the occupation(0(def), 1 or 2) of the level specified
83 //(levels numbering starts from 0)
84
85 //methods to set/get diffusion properties
87 inline G4double GetDiffusionCoefficient() const;
88
89 inline void SetAtomsNumber(G4int);
90 inline G4int GetAtomsNumber() const;
91
92 inline void SetVanDerVaalsRadius(G4double);
93 inline G4double GetVanDerVaalsRadius() const;
94
95 //°°°°°°°°°°°°°°°°°°°°°°°°
96 // Build the decay table
97 void AddExcitedState(const G4String&) ;
98 const G4String& GetExcitedState(const G4ElectronOccupancy*) const;
100 void AddeConfToExcitedState(const G4String&,const G4ElectronOccupancy&, double decayTime = 0.);
101
102 //°°°°°°°°°°°°°°°°°°°°°°°°
103 // "Get" methods related to decay
104 const std::vector<const G4MolecularDecayChannel*>* GetDecayChannels(const G4ElectronOccupancy*) const;
105 const std::vector<const G4MolecularDecayChannel*>* GetDecayChannels(const G4String&) const;
106
107 //°°°°°°°°°°°°°°°°°°°°°°°°
108 // General "Get" methods
110 inline const G4String& GetName() const;
111 inline G4double GetMass() const;
112 inline const G4String& GetType() const;
113 inline G4int GetNbElectrons() const;
114 inline G4int GetNbMolecularShells() const;
115 inline const G4MolecularDecayTable* GetDecayTable() const ;
117 inline G4double GetDecayTime() const;
118
119protected :
122
123private :
124 const G4MoleculeDefinition & operator=(const G4MoleculeDefinition &right);
125
126private:
127 G4double fMass;
128 G4String fType;
129
130 G4int fNbOfElectrons;
131 G4int fNbOfMolecularShells;
132
133 // Diffusion Coefficient in one medium only
134 // Note : For the time being, we will consider only one diffusion
135 // coefficient for the all simulation => diffusion in one medium only
136 // If the user needs to use the diffusion in different medium,
137 // he should contact the developpers/mainteners of this package
138 G4double fDiffusionCoefficient;
139
140 G4int fAtomsNb;
141 G4double fVanDerVaalsRadius;
142
143 G4ElectronOccupancy* fElectronOccupancy;
144 G4MolecularDecayTable* fDecayTable;
145};
146
147
149{
150 fDiffusionCoefficient = value;
151}
152
154{
155 return fDiffusionCoefficient;
156}
157
159{
160 return GetPDGLifeTime();
161}
162
164{
165 fAtomsNb = val;
166}
167
169{
170 return fAtomsNb;
171}
172
174{
175 fVanDerVaalsRadius = val;
176}
177
179{
180 return fVanDerVaalsRadius;
181}
182
184{
185 return fElectronOccupancy;
186}
187
189{
190
191 return GetParticleName();
192}
193
195{
196 return fMass;
197}
198
200{
201
202 return GetParticleSubType();
203}
204
206{
207
208 return fNbOfElectrons;
209}
210
212{
213
214 return fNbOfMolecularShells;
215}
216
218{
219 return fDecayTable;
220}
221
223{
224 return fDecayTable;
225}
226#endif
227
228
229
230
231
232
233
234
double G4double
Definition: G4Types.hh:64
int G4int
Definition: G4Types.hh:66
const G4ElectronOccupancy * GetGroundStateElectronOccupancy() const
const G4String & GetName() const
const G4String & GetExcitedState(const G4ElectronOccupancy *) const
void SetVanDerVaalsRadius(G4double)
const std::vector< const G4MolecularDecayChannel * > * GetDecayChannels(const G4ElectronOccupancy *) const
void AddExcitedState(const G4String &)
const G4String & GetType() const
G4double GetVanDerVaalsRadius() const
G4int GetNbMolecularShells() const
void SetLevelOccupation(G4int, G4int eNb=2)
G4double GetDecayTime() const
void AddeConfToExcitedState(const G4String &, const G4ElectronOccupancy &, double decayTime=0.)
void SetDiffusionCoefficient(G4double)
const G4MolecularDecayTable * GetDecayTable() const
G4double GetDiffusionCoefficient() const
void AddDecayChannel(const G4String &, const G4MolecularDecayChannel *)
static G4MoleculeID Create()
Definition: G4MoleculeID.hh:57
G4double GetPDGLifeTime() const
const G4String & GetParticleName() const
const G4String & GetParticleSubType() const