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 G4MoleculeDefinitionGetDefinition () const
 
const G4StringGetName () const
 
G4int GetAtomsNumber () const
 
G4MolecularConfigurationExciteMolecule (G4int)
 
G4MolecularConfigurationIonizeMolecule (G4int)
 
G4MolecularConfigurationAddElectron (G4int orbit, G4int n=1)
 
G4MolecularConfigurationRemoveElectron (G4int, G4int number=1)
 
G4MolecularConfigurationMoveOneElectron (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 G4ElectronOccupancyGetElectronOccupancy () const
 
G4int GetCharge () const
 
void SetMass (G4double)
 
G4double GetMass () const
 

Static Public Member Functions

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

Protected Member Functions

 G4MolecularConfiguration (const G4MoleculeDefinition *, const G4ElectronOccupancy &)
 
 G4MolecularConfiguration (const G4MolecularConfiguration &)
 
G4MolecularConfigurationoperator= (G4MolecularConfiguration &right)
 
 ~G4MolecularConfiguration ()
 
G4MolecularConfigurationChangeConfiguration (const G4ElectronOccupancy &newElectronOccupancy)
 

Static Protected Member Functions

static
G4MolecularConfigurationManager
GetManager ()
 

Protected Attributes

const G4MoleculeDefinitionfMoleculeDefinition
 
const G4ElectronOccupancyfElectronOccupancy
 
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: