Geant4  10.01.p03
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, kara@cenbg.in2p3.fr
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"
66 #include "G4FakeParticleID.hh"
67 
68 // ######################################################################
69 // ### Molecule ###
70 // ######################################################################
71 
75 
77 {
78  // Class Description
79  // This is the base class for all molecules
80  // All molecules created are objects of this class.
81 
82 public:
83  //With Description
85  G4double mass,
86  G4double diffCoeff,
87  G4int charge = 0,
88  G4int electronicLevels = 0,
89  G4double radius = -1,
90  G4int atomsNumber = -1,
91  G4double lifetime = -1,
92  G4String aType = "",
94 
95  virtual ~G4MoleculeDefinition();
96 
97  // Set the electronic configuration at ground level
98  void SetLevelOccupation(G4int, G4int eNb = 2);
99  // set the occupation(0(def), 1 or 2) of the level specified
100  //(levels numbering starts from 0)
101 
102  //methods to set/get diffusion properties
103  inline void SetDiffusionCoefficient(G4double);
104  inline G4double GetDiffusionCoefficient() const;
105 
106  inline void SetAtomsNumber(G4int);
107  inline G4int GetAtomsNumber() const;
108 
109  inline void SetVanDerVaalsRadius(G4double);
110  inline G4double GetVanDerVaalsRadius() const;
111 
112  //°°°°°°°°°°°°°°°°°°°°°°°°
113  // Build the decay table
114  void AddExcitedState(const G4String&);
115  const G4String& GetExcitedState(const G4ElectronOccupancy*) const;
117  void AddeConfToExcitedState(const G4String&,
118  const G4ElectronOccupancy&,
119  double decayTime = 0.);
120 
121  //°°°°°°°°°°°°°°°°°°°°°°°°
122  // "Get" methods related to decay
123  const std::vector<const G4MolecularDissociationChannel*>* GetDecayChannels(const G4ElectronOccupancy*) const;
124  const std::vector<const G4MolecularDissociationChannel*>* GetDecayChannels(const G4String&) const;
125 
126  //°°°°°°°°°°°°°°°°°°°°°°°°
127  // General "Get" methods
129  inline G4int GetCharge() const;
130  inline const G4String& GetName() const;
131  inline G4double GetMass() const;
132  inline const G4String& GetType() const;
133  inline G4int GetNbElectrons() const;
134  inline G4int GetNbMolecularShells() const;
135  inline const G4MolecularDissociationTable* GetDecayTable() const;
137  inline G4double GetDecayTime() const;
138 
139  inline void SetFormatedName(const G4String& name)
140  {
142  }
143 
144  inline const G4String& GetFormatedName() const
145  {
146  return fFormatedName;
147  }
148 
149 protected:
152 
153 private:
155 
156 private:
158 
159  // Diffusion Coefficient in one medium only
160  // Note : For the time being, we will consider only one diffusion
161  // coefficient for the all simulation => diffusion in one medium only
162  // If the user needs to use the diffusion in different materials,
163  // she/he should contact the developpers/mainteners of this package
165 
168 
170 
173 };
174 
176 {
177  fDiffusionCoefficient = value;
178 }
179 
181 {
182  return fDiffusionCoefficient;
183 }
184 
186 {
187  return fCharge;
188 }
189 
191 {
192  return GetPDGLifeTime();
193 }
194 
196 {
197  fAtomsNb = val;
198 }
199 
201 {
202  return fAtomsNb;
203 }
204 
206 {
207  fVanDerVaalsRadius = val;
208 }
209 
211 {
212  return fVanDerVaalsRadius;
213 }
214 
216 {
217  return fElectronOccupancy;
218 }
219 
221 {
222 
223  return GetParticleName();
224 }
225 
227 {
228  return GetPDGMass();
229 }
230 
232 {
233 
234  return GetParticleSubType();
235 }
236 
238 {
239  if (fElectronOccupancy)
240  {
242  }
243 
244  return 0;
245  // return fNbOfElectrons;
246 }
247 
249 {
250  if (fElectronOccupancy)
251  {
253  }
254 
255  return 0;
256 }
257 
259 {
260  return fDecayTable;
261 }
262 
264 {
265  return fDecayTable;
266 }
267 #endif
268 
The pointer G4MolecularConfiguration will be shared by all the molecules having the same molecule def...
G4int GetTotalOccupancy() const
const G4String & GetExcitedState(const G4ElectronOccupancy *) const
G4ElectronOccupancy * fElectronOccupancy
G4MolecularDissociationTable * fDecayTable
G4String name
Definition: TRTMaterials.hh:40
const G4String & GetType() const
void AddeConfToExcitedState(const G4String &, const G4ElectronOccupancy &, double decayTime=0.)
Class Description G4MolecularDecayTable operates as a container of deexcitation modes for excited or ...
G4int GetSizeOfOrbit() const
const G4String & GetParticleSubType() const
int G4int
Definition: G4Types.hh:78
const G4String & GetParticleName() const
G4int GetNbMolecularShells() const
void AddExcitedState(const G4String &)
G4double GetDecayTime() const
void SetFormatedName(const G4String &name)
void AddDecayChannel(const G4String &, const G4MolecularDissociationChannel *)
void SetDiffusionCoefficient(G4double)
const std::vector< const G4MolecularDissociationChannel * > * GetDecayChannels(const G4ElectronOccupancy *) const
G4double GetVanDerVaalsRadius() const
G4double GetPDGMass() const
const G4String & GetFormatedName() const
const G4String & GetName() const
const G4MoleculeDefinition & operator=(const G4MoleculeDefinition &right)
static G4FakeParticleID Create()
G4double GetPDGLifeTime() const
G4double GetDiffusionCoefficient() const
void SetVanDerVaalsRadius(G4double)
void SetLevelOccupation(G4int, G4int eNb=2)
double G4double
Definition: G4Types.hh:76
const G4ElectronOccupancy * GetGroundStateElectronOccupancy() const
const G4MolecularDissociationTable * GetDecayTable() const