ECCE @ EIC Software
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
G4MoleculeTable.cc
Go to the documentation of this file. Or view the newest version in sPHENIX GitHub for file G4MoleculeTable.cc
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 /*
27  * G4MoleculeTable.cc
28  *
29  * Created on: 23 oct. 2013
30  * Author: kara
31  */
32 
33 #include "G4MoleculeTable.hh"
35 #include "G4MoleculeDefinition.hh"
36 
38 
39 //------------------------------------------------------------------------------
40 
42 {
43 }
44 
45 //------------------------------------------------------------------------------
46 
48 {
49 }
50 
51 //------------------------------------------------------------------------------
52 
54 {
56  return fpgMoleculeTable;
57 }
58 
59 //------------------------------------------------------------------------------
60 
62 {
63  return Instance();
64 }
65 
66 //------------------------------------------------------------------------------
67 
70  double diffusion_coefficient)
71 {
72  return new G4MoleculeDefinition(name, -1 /* mass*/,
73  diffusion_coefficient);
74 }
75 
76 //------------------------------------------------------------------------------
77 
80  bool mustExist)
81 {
82  MoleculeDefTable::iterator it = fMoleculeDefTable.find(name);
83  G4MoleculeDefinition* definition(0);
84  if (it != fMoleculeDefTable.end())
85  {
86  definition = it->second;
87  }
88  else if(mustExist)
89  {
90  // exception
91  G4ExceptionDescription description;
92  description << "The molecule definition " << name
93  << " was NOT recorded in the table" << G4endl;
94  G4Exception("G4MoleculeTable::CreateMoleculeModel",
95  "MOLECULE_DEFINITION_NOT_CREATED",
97  description);
98  }
99  return definition;
100 }
101 
102 //------------------------------------------------------------------------------
103 
106 {
107  G4MolecularConfiguration* species =
109 
110  if(species == 0 && mustExist)
111  {
112  // exception
113  G4ExceptionDescription description;
114  description << "The configuration " << name
115  << " was not recorded in the table" << G4endl;
116  G4Exception("G4MoleculeTable::GetConfiguration",
117  "CONF_NOT_CREATED",
119  description);
120  }
121 
122  return species;
123 }
124 
125 //------------------------------------------------------------------------------
126 
129 {
130  G4MolecularConfiguration* species =
132 
133  return species;
134 }
135 
136 //------------------------------------------------------------------------------
137 
139 {
140 
141  const G4String& name = moleculeDefinition->GetName();
142  MoleculeDefTable::iterator it = fMoleculeDefTable.find(name);
143  if (it == fMoleculeDefTable.end())
144  {
145  fMoleculeDefTable[name] = moleculeDefinition;
146  }
147  else
148  {
149  // exception
150  G4ExceptionDescription description;
151  description << "The molecule definition " << name
152  << " was already recorded in the table" << G4endl;
153  G4Exception("G4MoleculeTable::CreateMoleculeDefinition",
154  "DEFINITION_ALREADY_CREATED", FatalException, description);
155  }
156 }
157 
158 //------------------------------------------------------------------------------
159 
161 {
162  MoleculeDefTable::iterator it = fMoleculeDefTable.begin();
163 
164  for(; it != fMoleculeDefTable.end() ; ++it)
165  {
167  }
168 }
169 
170 //------------------------------------------------------------------------------
171 
174  G4MoleculeDefinition* molDef)
175 {
176  bool alreadyCreated(false);
177 
178  G4MolecularConfiguration* molConf =
180  molDef,
181  alreadyCreated);
182 
183  return molConf;
184 }
185 
186 //------------------------------------------------------------------------------
187 
190  G4MoleculeDefinition* molDef,
191  const G4String& configurationLabel,
192  int charge)
193 {
194  bool alreadyCreated(false);
195 
196  G4MolecularConfiguration* molConf =
198  molDef,
199  charge,
200  configurationLabel,
201  alreadyCreated);
202 
203  return molConf;
204 }
205 
206 //------------------------------------------------------------------------------
207 
210  G4MoleculeDefinition* molDef,
211  int charge,
212  double diffusion_coefficient)
213 {
214  bool alreadyCreated(false);
215 
216  G4MolecularConfiguration* molConf =
218  molDef,
219  charge,
220  userIdentifier,
221  alreadyCreated);
222 
223  if(diffusion_coefficient!=-1) // TODO
224  {
225  molConf->SetDiffusionCoefficient(diffusion_coefficient);
226  }
227  return molConf;
228 }
229 
230 //------------------------------------------------------------------------------
231 
234  const G4MoleculeDefinition* molDef,
235  const G4String& configurationLabel,
236  const G4ElectronOccupancy& eOcc)
237 {
238  bool alreadyCreated(false);
239 
240  G4MolecularConfiguration* molConf =
242  molDef,
243  configurationLabel,
244  eOcc,
245  alreadyCreated);
246 
247  return molConf;
248 }
249 
250 //------------------------------------------------------------------------------
251 
253 {
255 }
256 
257 //------------------------------------------------------------------------------
258 
260 {
262 }
263 
264 //------------------------------------------------------------------------------
265 
267 {
269 }