Geant4.10
 All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
Data Structures | Public Member Functions | Static Public Member Functions | Protected Member Functions | Static Protected Member Functions | Protected Attributes | Static Protected Attributes
G4MolecularConfiguration Class Reference

#include <G4MolecularConfiguration.hh>

Data Structures

struct  G4MolecularConfigurationManager
 

Public Member Functions

const G4MoleculeDefinition * GetDefinition () const
 
const G4String & GetName () const
 
G4int GetAtomsNumber () const
 
G4MolecularConfiguration * ExciteMolecule (G4int)
 
G4MolecularConfiguration * IonizeMolecule (G4int)
 
G4MolecularConfiguration * AddElectron (G4int orbit, G4int n=1)
 
G4MolecularConfiguration * RemoveElectron (G4int, G4int number=1)
 
G4MolecularConfiguration * MoveOneElectron (G4int, G4int)
 
G4double GetNbElectrons () const
 
void PrintState () const
 
const std::vector< const
G4MolecularDecayChannel * > * 
GetDecayChannel () const
 
G4int GetMoleculeID () const
 
void SetDiffusionCoefficient (G4double)
 
G4double GetDiffusionCoefficient () const
 
void SetDecayTime (G4double)
 
G4double GetDecayTime () const
 
void SetVanDerVaalsRadius (G4double)
 
G4double GetVanDerVaalsRadius () const
 
const G4ElectronOccupancy * GetElectronOccupancy () const
 
G4int GetCharge () const
 
void SetMass (G4double)
 
G4double GetMass () const
 

Static Public Member Functions

static G4MolecularConfiguration * GetMolecularConfiguration (const G4MoleculeDefinition *, const G4ElectronOccupancy &electronOccupancy)
 
static G4MolecularConfiguration * GetMolecularConfiguration (const G4MoleculeDefinition *)
 
static void DeleteManager ()
 

Protected Member Functions

 G4MolecularConfiguration (const G4MoleculeDefinition *, const G4ElectronOccupancy &)
 
 G4MolecularConfiguration (const G4MolecularConfiguration &)
 
G4MolecularConfiguration & operator= (G4MolecularConfiguration &right)
 
 ~G4MolecularConfiguration ()
 
G4MolecularConfiguration * ChangeConfiguration (const G4ElectronOccupancy &newElectronOccupancy)
 

Static Protected Member Functions

static
G4MolecularConfigurationManager * 
GetManager ()
 

Protected Attributes

const G4MoleculeDefinition * fMoleculeDefinition
 
const G4ElectronOccupancy * fElectronOccupancy
 
G4double fDynDiffusionCoefficient
 
G4double fDynVanDerVaalsRadius
 
G4double fDynDecayTime
 
G4double fDynMass
 
G4int fDynCharge
 
G4String fName
 

Static Protected Attributes

static G4ThreadLocal
G4MolecularConfigurationManager * 
fgManager = 0
 

Detailed Description

The pointer G4MolecularConfiguration will be shared by all the molecules having the same molecule definition and the same electron occupancy BE CAREFUlL !!! : If you change the mass for instance of a OH^-, this will affect all the OH^- molecule diffusing around

Definition at line 59 of file G4MolecularConfiguration.hh.

Constructor & Destructor Documentation

G4MolecularConfiguration::G4MolecularConfiguration ( const G4MoleculeDefinition *  moleculeDef,
const G4ElectronOccupancy &  elecOcc 
)
protected

Definition at line 113 of file G4MolecularConfiguration.cc.

References G4MoleculeDefinition::GetNbElectrons().

115 {
116  fMoleculeDefinition = moleculeDef ;
117  fgManager->fTable[fMoleculeDefinition][elecOcc] = this;
118  std::map<G4ElectronOccupancy, G4MolecularConfiguration*, comparator>::iterator it ;
119  it = fgManager->fTable[moleculeDef].find(elecOcc);
120  fElectronOccupancy = &(it->first);
121 
124 
128 }
G4int GetTotalOccupancy() const
G4double GetDecayTime() const
static G4ThreadLocal G4MolecularConfigurationManager * fgManager
G4double GetVanDerVaalsRadius() const
G4double GetDiffusionCoefficient() const
const G4ElectronOccupancy * fElectronOccupancy
const G4MoleculeDefinition * fMoleculeDefinition
G4MolecularConfiguration::G4MolecularConfiguration ( const G4MolecularConfiguration &  )
protected
G4MolecularConfiguration::~G4MolecularConfiguration ( )
protected

Definition at line 130 of file G4MolecularConfiguration.cc.

131 {
133  {
134  delete fElectronOccupancy;
135  fElectronOccupancy = 0;
136  }
137 }
const G4ElectronOccupancy * fElectronOccupancy

Member Function Documentation

G4MolecularConfiguration * G4MolecularConfiguration::AddElectron ( G4int  orbit,
G4int  n = 1 
)

Add n electrons to a given orbit. Note : You can add as many electrons to a given orbit, the result may be unrealist.

Definition at line 191 of file G4MolecularConfiguration.cc.

References G4ElectronOccupancy::AddElectron().

Referenced by G4Molecule::AddElectron().

192 {
193  G4ElectronOccupancy newElectronOccupancy(*fElectronOccupancy);
194  newElectronOccupancy.AddElectron(orbit, number);
195  return ChangeConfiguration(newElectronOccupancy);
196 }
G4MolecularConfiguration * ChangeConfiguration(const G4ElectronOccupancy &newElectronOccupancy)
const G4ElectronOccupancy * fElectronOccupancy
G4MolecularConfiguration * G4MolecularConfiguration::ChangeConfiguration ( const G4ElectronOccupancy &  newElectronOccupancy)
protected

Definition at line 139 of file G4MolecularConfiguration.cc.

140 {
141  G4MolecularConfiguration* output = fgManager->fTable[fMoleculeDefinition][newElectronOccupancy] ;
142  if(! output)
143  {
144  output = new G4MolecularConfiguration(fMoleculeDefinition, newElectronOccupancy);
145  }
146  return output ;
147 }
static G4ThreadLocal G4MolecularConfigurationManager * fgManager
G4MolecularConfiguration(const G4MoleculeDefinition *, const G4ElectronOccupancy &)
const G4MoleculeDefinition * fMoleculeDefinition
void G4MolecularConfiguration::DeleteManager ( )
static

Definition at line 105 of file G4MolecularConfiguration.cc.

106 {
107  if(fgManager) delete fgManager;
108  fgManager = 0;
109 }
static G4ThreadLocal G4MolecularConfigurationManager * fgManager
G4MolecularConfiguration * G4MolecularConfiguration::ExciteMolecule ( G4int  ExcitedLevel)

Method used in Geant4-DNA to excite water molecules

Definition at line 158 of file G4MolecularConfiguration.cc.

References G4ElectronOccupancy::AddElectron(), and G4ElectronOccupancy::RemoveElectron().

Referenced by G4Molecule::ExciteMolecule().

159 {
160  G4ElectronOccupancy newElectronOccupancy (*fElectronOccupancy);
161 
162  newElectronOccupancy.RemoveElectron(ExcitedLevel,1);
163  newElectronOccupancy.AddElectron(5,1);
164 
165  return ChangeConfiguration(newElectronOccupancy);
166 }
G4MolecularConfiguration * ChangeConfiguration(const G4ElectronOccupancy &newElectronOccupancy)
const G4ElectronOccupancy * fElectronOccupancy
G4int G4MolecularConfiguration::GetAtomsNumber ( ) const

Returns the nomber of atoms compouning the molecule

Definition at line 250 of file G4MolecularConfiguration.cc.

Referenced by G4Molecule::GetAtomsNumber().

251 {
253 }
const G4MoleculeDefinition * fMoleculeDefinition
G4int G4MolecularConfiguration::GetCharge ( ) const
inline

Returns the charge of molecule.

Definition at line 283 of file G4MolecularConfiguration.hh.

References fDynCharge.

Referenced by G4Molecule::GetCharge().

284 {
285  return fDynCharge ;
286 }
const vector< const G4MolecularDecayChannel * > * G4MolecularConfiguration::GetDecayChannel ( ) const

Definition at line 276 of file G4MolecularConfiguration.cc.

Referenced by G4Molecule::GetDecayChannel().

277 {
278  return fMoleculeDefinition-> GetDecayChannels(fElectronOccupancy);
279 }
const G4ElectronOccupancy * fElectronOccupancy
const G4MoleculeDefinition * fMoleculeDefinition
G4double G4MolecularConfiguration::GetDecayTime ( ) const
inline

Returns the decay time of the molecule.

Definition at line 268 of file G4MolecularConfiguration.hh.

References fDynDecayTime.

Referenced by G4Molecule::GetDecayTime().

269 {
270  return fDynDecayTime;
271 }
const G4MoleculeDefinition * G4MolecularConfiguration::GetDefinition ( ) const
inline

Definition at line 243 of file G4MolecularConfiguration.hh.

References fMoleculeDefinition.

Referenced by G4Molecule::BuildTrack(), G4Molecule::GetDefinition(), and G4Molecule::SetElectronOccupancy().

244 {
245  return fMoleculeDefinition;
246 }
const G4MoleculeDefinition * fMoleculeDefinition
G4double G4MolecularConfiguration::GetDiffusionCoefficient ( ) const
inline

Returns the diffusion coefficient D.

Definition at line 258 of file G4MolecularConfiguration.hh.

References fDynDiffusionCoefficient.

Referenced by G4Molecule::GetDiffusionCoefficient().

259 {
261 }
const G4ElectronOccupancy * G4MolecularConfiguration::GetElectronOccupancy ( ) const
inline

Returns the object ElectronOccupancy describing the electronic configuration of the molecule.

Definition at line 248 of file G4MolecularConfiguration.hh.

References fElectronOccupancy.

Referenced by G4Molecule::GetElectronOccupancy().

249 {
250  return fElectronOccupancy ;
251 }
const G4ElectronOccupancy * fElectronOccupancy
G4MolecularConfiguration::G4MolecularConfigurationManager * G4MolecularConfiguration::GetManager ( )
staticprotected

Definition at line 48 of file G4MolecularConfiguration.cc.

49 {
50  if(!fgManager)
51  {
53  }
54 
55  return fgManager;
56 }
static G4ThreadLocal G4MolecularConfigurationManager * fgManager
G4double G4MolecularConfiguration::GetMass ( ) const
inline

Returns the total mass of the molecule.

Definition at line 293 of file G4MolecularConfiguration.hh.

References fDynMass.

Referenced by G4Molecule::GetDiffusionVelocity(), G4Molecule::GetKineticEnergy(), and G4Molecule::GetMass().

294 {
295  return fDynMass;
296 }
G4MolecularConfiguration * G4MolecularConfiguration::GetMolecularConfiguration ( const G4MoleculeDefinition *  molDef,
const G4ElectronOccupancy &  electronOccupancy 
)
static

Definition at line 91 of file G4MolecularConfiguration.cc.

Referenced by G4MoleculeDefinition::AddeConfToExcitedState(), G4Molecule::G4Molecule(), and G4Molecule::SetElectronOccupancy().

93 {
94  if(GetManager()->fTable[molDef][elecOcc])
95  {
96  return GetManager()->fTable[molDef][elecOcc];
97  }
98  else
99  {
100  G4MolecularConfiguration* newConf = new G4MolecularConfiguration(molDef, elecOcc);
101  return newConf ;
102  }
103 }
static G4MolecularConfigurationManager * GetManager()
G4MolecularConfiguration(const G4MoleculeDefinition *, const G4ElectronOccupancy &)
G4MolecularConfiguration * G4MolecularConfiguration::GetMolecularConfiguration ( const G4MoleculeDefinition *  molDef)
static

Definition at line 77 of file G4MolecularConfiguration.cc.

References G4MoleculeDefinition::GetGroundStateElectronOccupancy().

78 {
79  const G4ElectronOccupancy& elecOcc = *molDef->GetGroundStateElectronOccupancy();
80  if(GetManager()->fTable[molDef][elecOcc])
81  {
82  return GetManager()->fTable[molDef][elecOcc];
83  }
84  else
85  {
86  G4MolecularConfiguration* newConf = new G4MolecularConfiguration(molDef, elecOcc);
87  return newConf ;
88  }
89 }
static G4MolecularConfigurationManager * GetManager()
G4MolecularConfiguration(const G4MoleculeDefinition *, const G4ElectronOccupancy &)
const G4ElectronOccupancy * GetGroundStateElectronOccupancy() const
G4int G4MolecularConfiguration::GetMoleculeID ( ) const

Definition at line 281 of file G4MolecularConfiguration.cc.

References FatalErrorInArgument, G4Exception(), and INT_MAX.

Referenced by G4Molecule::GetMoleculeID().

282 {
285  else
286  G4Exception("G4Molecule::GetMoleculeID","",FatalErrorInArgument, "You should first enter a molecule defintion");
287 
288  return INT_MAX;
289 }
void G4Exception(const char *originOfException, const char *exceptionCode, G4ExceptionSeverity severity, const char *comments)
Definition: G4Exception.cc:41
#define INT_MAX
Definition: templates.hh:111
const G4MoleculeDefinition * fMoleculeDefinition
const G4String & G4MolecularConfiguration::GetName ( void  ) const

Returns the name of the molecule

Definition at line 237 of file G4MolecularConfiguration.cc.

References G4UIcommand::ConvertToString(), fName, and G4String::isNull().

Referenced by G4Molecule::GetName().

238 {
239  if(fName.isNull())
240  {
242  fName+= "^";
243  fName+= "{";
245  fName+= "}";
246  }
247  return fName;
248 }
static G4String ConvertToString(G4bool boolVal)
Definition: G4UIcommand.cc:357
const G4String & GetName() const
G4bool isNull() const
const G4MoleculeDefinition * fMoleculeDefinition
G4double G4MolecularConfiguration::GetNbElectrons ( ) const

Returns the number of electron.

Definition at line 255 of file G4MolecularConfiguration.cc.

Referenced by G4Molecule::GetNbElectrons().

256 {
258 }
G4int GetTotalOccupancy() const
const G4ElectronOccupancy * fElectronOccupancy
G4double G4MolecularConfiguration::GetVanDerVaalsRadius ( ) const
inline

Definition at line 278 of file G4MolecularConfiguration.hh.

References fDynVanDerVaalsRadius.

Referenced by G4Molecule::GetVanDerVaalsRadius().

279 {
280  return fDynVanDerVaalsRadius;
281 }
G4MolecularConfiguration * G4MolecularConfiguration::IonizeMolecule ( G4int  IonizedLevel)

Method used in Geant4-DNA to ionize water molecules

Definition at line 170 of file G4MolecularConfiguration.cc.

References G4UIcommand::ConvertToString(), FatalErrorInArgument, G4Exception(), G4ElectronOccupancy::GetOccupancy(), and G4ElectronOccupancy::RemoveElectron().

Referenced by G4Molecule::IonizeMolecule().

171 {
172  G4ElectronOccupancy newElectronOccupancy(*fElectronOccupancy);
173 
174  if(newElectronOccupancy.GetOccupancy(IonizedLevel) != 0)
175  {
176  newElectronOccupancy.RemoveElectron(IonizedLevel,1);
177  }
178  else
179  {
180  G4String errMsg = "There is no electron on the orbit " + G4UIcommand::ConvertToString(IonizedLevel) +
181  " you want to free. The molecule's name you want to ionized is "+ GetName();
182  G4Exception("G4Molecule::IonizeMolecule","",FatalErrorInArgument, errMsg);
183  PrintState();
184  }
185 
186  // PrintState();
187 
188  return ChangeConfiguration(newElectronOccupancy);
189 }
const G4String & GetName() const
G4MolecularConfiguration * ChangeConfiguration(const G4ElectronOccupancy &newElectronOccupancy)
static G4String ConvertToString(G4bool boolVal)
Definition: G4UIcommand.cc:357
void G4Exception(const char *originOfException, const char *exceptionCode, G4ExceptionSeverity severity, const char *comments)
Definition: G4Exception.cc:41
const G4ElectronOccupancy * fElectronOccupancy
G4MolecularConfiguration * G4MolecularConfiguration::MoveOneElectron ( G4int  orbitToFree,
G4int  orbitToFill 
)

Move one electron from an orbit to another.

Definition at line 217 of file G4MolecularConfiguration.cc.

References G4UIcommand::ConvertToString(), FatalErrorInArgument, and G4Exception().

Referenced by G4Molecule::MoveOneElectron().

218 {
219  G4ElectronOccupancy newElectronOccupancy (*fElectronOccupancy);
220 
221  if(newElectronOccupancy . GetOccupancy(orbitToFree)>=1)
222  {
223  newElectronOccupancy . RemoveElectron(orbitToFree,1);
224  newElectronOccupancy . AddElectron(orbitToFill,1);
225  }
226  else
227  {
228  G4String errMsg = "There is no electron on the orbit " + G4UIcommand::ConvertToString(orbitToFree) +
229  " you want to free. The molecule's name is "+ GetName();
230  G4Exception("G4Molecule::MoveOneElectron","",FatalErrorInArgument, errMsg);
231  PrintState();
232  }
233 
234  return ChangeConfiguration(newElectronOccupancy);
235 }
const G4String & GetName() const
G4MolecularConfiguration * ChangeConfiguration(const G4ElectronOccupancy &newElectronOccupancy)
static G4String ConvertToString(G4bool boolVal)
Definition: G4UIcommand.cc:357
G4MolecularConfiguration * AddElectron(G4int orbit, G4int n=1)
void G4Exception(const char *originOfException, const char *exceptionCode, G4ExceptionSeverity severity, const char *comments)
Definition: G4Exception.cc:41
G4MolecularConfiguration * RemoveElectron(G4int, G4int number=1)
const G4ElectronOccupancy * fElectronOccupancy
G4MolecularConfiguration & G4MolecularConfiguration::operator= ( G4MolecularConfiguration &  right)
protected

Definition at line 149 of file G4MolecularConfiguration.cc.

150 {
151  if (&right==this) return *this;
152  return *this;
153 }
void G4MolecularConfiguration::PrintState ( ) const

Display the electronic state of the molecule.

Definition at line 260 of file G4MolecularConfiguration.cc.

References G4cout, and G4endl.

Referenced by G4Molecule::PrintState().

261 {
262  G4cout<<"--------------Print electronic state of "<<GetName()<<"---------------"<<G4endl;
265  {
266  G4cout<<"At ground state"<<G4endl;
267  }
268  else
269  {
271  G4cout<<"Transition :"<<(fMoleculeDefinition->GetDecayTable())->GetExcitedState(fElectronOccupancy)<<G4endl;
272  }
273 }
const G4String & GetName() const
G4GLOB_DLL std::ostream G4cout
#define G4endl
Definition: G4ios.hh:61
const G4ElectronOccupancy * GetGroundStateElectronOccupancy() const
const G4MolecularDecayTable * GetDecayTable() const
const G4ElectronOccupancy * fElectronOccupancy
const G4MoleculeDefinition * fMoleculeDefinition
G4MolecularConfiguration * G4MolecularConfiguration::RemoveElectron ( G4int  orbit,
G4int  number = 1 
)

Remove n electrons to a given orbit.

Definition at line 198 of file G4MolecularConfiguration.cc.

References G4UIcommand::ConvertToString(), G4Exception(), G4ElectronOccupancy::GetOccupancy(), JustWarning, and G4ElectronOccupancy::RemoveElectron().

Referenced by G4Molecule::RemoveElectron().

199 {
200  G4ElectronOccupancy newElectronOccupancy (*fElectronOccupancy);
201 
202  if(newElectronOccupancy.GetOccupancy(orbit) != 0)
203  {
204  newElectronOccupancy.RemoveElectron(orbit, number );
205  }
206  else
207  {
208  G4String errMsg = "There is already no electron into the orbit " + G4UIcommand::ConvertToString(orbit) +
209  " you want to free. The molecule's name is "+ GetName();
210  G4Exception("G4Molecule::RemoveElectron","",JustWarning, errMsg);
211  PrintState();
212  }
213 
214  return ChangeConfiguration(newElectronOccupancy);
215 }
const G4String & GetName() const
G4MolecularConfiguration * ChangeConfiguration(const G4ElectronOccupancy &newElectronOccupancy)
static G4String ConvertToString(G4bool boolVal)
Definition: G4UIcommand.cc:357
void G4Exception(const char *originOfException, const char *exceptionCode, G4ExceptionSeverity severity, const char *comments)
Definition: G4Exception.cc:41
const G4ElectronOccupancy * fElectronOccupancy
void G4MolecularConfiguration::SetDecayTime ( G4double  dynDecayTime)
inline

Set the decay time of the molecule.

Definition at line 263 of file G4MolecularConfiguration.hh.

References fDynDecayTime.

Referenced by G4MoleculeDefinition::AddeConfToExcitedState(), and G4Molecule::SetDecayTime().

264 {
265  fDynDecayTime = dynDecayTime;
266 }
void G4MolecularConfiguration::SetDiffusionCoefficient ( G4double  dynDiffusionCoefficient)
inline

Sets the diffusion coefficient D of the molecule used in diffusion processes to calculate the mean square jump distance between two changes of direction. In three dimension : <x^2> = 6 D t where t is the mean jump time between two changes of direction.

Note : Diffusion Coefficient in one medium only For the time being, we will consider only one diffusion coefficient for the all simulation => diffusion in one medium only If the user needs to use the diffusion in different materials, she/he should contact the developpers/mainteners of this package

Definition at line 253 of file G4MolecularConfiguration.hh.

References fDynDiffusionCoefficient.

Referenced by G4Molecule::SetDiffusionCoefficient().

254 {
255  fDynDiffusionCoefficient = dynDiffusionCoefficient ;
256 }
void G4MolecularConfiguration::SetMass ( G4double  aMass)
inline

Set the total mass of the molecule.

Definition at line 288 of file G4MolecularConfiguration.hh.

References fDynMass.

Referenced by G4Molecule::SetMass().

289 {
290  fDynMass = aMass ;
291 }
void G4MolecularConfiguration::SetVanDerVaalsRadius ( G4double  dynVanDerVaalsRadius)
inline

The Van Der Valls Radius of the molecule

Definition at line 273 of file G4MolecularConfiguration.hh.

References fDynVanDerVaalsRadius.

Referenced by G4Molecule::SetVanDerVaalsRadius().

274 {
275  fDynVanDerVaalsRadius = dynVanDerVaalsRadius ;
276 }

Field Documentation

G4int G4MolecularConfiguration::fDynCharge
protected

Definition at line 198 of file G4MolecularConfiguration.hh.

Referenced by GetCharge().

G4double G4MolecularConfiguration::fDynDecayTime
protected

Definition at line 196 of file G4MolecularConfiguration.hh.

Referenced by GetDecayTime(), and SetDecayTime().

G4double G4MolecularConfiguration::fDynDiffusionCoefficient
protected
G4double G4MolecularConfiguration::fDynMass
protected

Definition at line 197 of file G4MolecularConfiguration.hh.

Referenced by GetMass(), and SetMass().

G4double G4MolecularConfiguration::fDynVanDerVaalsRadius
protected

Definition at line 195 of file G4MolecularConfiguration.hh.

Referenced by GetVanDerVaalsRadius(), and SetVanDerVaalsRadius().

const G4ElectronOccupancy* G4MolecularConfiguration::fElectronOccupancy
protected

Definition at line 177 of file G4MolecularConfiguration.hh.

Referenced by GetElectronOccupancy().

G4ThreadLocal MolecularConfigurationManager * G4MolecularConfiguration::fgManager = 0
staticprotected

Definition at line 190 of file G4MolecularConfiguration.hh.

const G4MoleculeDefinition* G4MolecularConfiguration::fMoleculeDefinition
protected

Definition at line 176 of file G4MolecularConfiguration.hh.

Referenced by GetDefinition().

G4String G4MolecularConfiguration::fName
mutableprotected

Definition at line 199 of file G4MolecularConfiguration.hh.


The documentation for this class was generated from the following files: