Geant4  9.6.p02
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
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"
44 #include "G4ParticleDefinition.hh"
45 #include "G4ios.hh"
46 #include "G4ElectronOccupancy.hh"
47 #include "G4MolecularDecayTable.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 
65 public: //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
86  inline void SetDiffusionCoefficient(G4double);
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;
99  void AddDecayChannel(const G4String&, const G4MolecularDecayChannel*) ;
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 
119 protected :
122 
123 private :
124  const G4MoleculeDefinition & operator=(const G4MoleculeDefinition &right);
125 
126 private:
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