G4MolecularConfiguration Class Reference

#include <G4MolecularConfiguration.hh>


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 G4MolecularConfigurationManagerGetManager ()

Protected Attributes

const G4MoleculeDefinitionfMoleculeDefinition
const G4ElectronOccupancyfElectronOccupancy
G4double fDynDiffusionCoefficient
G4double fDynVanDerVaalsRadius
G4double fDynDecayTime
G4double fDynMass
G4int fDynCharge
G4String fName

Static Protected Attributes

static G4MolecularConfigurationManagerfgManager = 0

Data Structures

struct  G4MolecularConfigurationManager


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 ,
const G4ElectronOccupancy  
) [protected]

Definition at line 111 of file G4MolecularConfiguration.cc.

References fDynCharge, fDynDecayTime, fDynDiffusionCoefficient, fDynMass, fDynVanDerVaalsRadius, fElectronOccupancy, fgManager, fMoleculeDefinition, G4MolecularConfiguration::G4MolecularConfigurationManager::fTable, G4MoleculeDefinition::GetDecayTime(), G4MoleculeDefinition::GetDiffusionCoefficient(), G4MoleculeDefinition::GetMass(), G4MoleculeDefinition::GetNbElectrons(), G4ElectronOccupancy::GetTotalOccupancy(), and G4MoleculeDefinition::GetVanDerVaalsRadius().

Referenced by ChangeConfiguration(), and GetMolecularConfiguration().

00113 {
00114     fMoleculeDefinition = moleculeDef ;
00115     fgManager->fTable[fMoleculeDefinition][elecOcc] = this;
00116     std::map<G4ElectronOccupancy, G4MolecularConfiguration*, comparator>::iterator it ;
00117     it = fgManager->fTable[moleculeDef].find(elecOcc);
00118     fElectronOccupancy = &(it->first);
00119 
00120     fDynCharge = fMoleculeDefinition->GetNbElectrons()-fElectronOccupancy->GetTotalOccupancy();
00121     fDynMass = fMoleculeDefinition->GetMass() ;
00122 
00123     fDynDiffusionCoefficient = fMoleculeDefinition->GetDiffusionCoefficient() ;
00124     fDynVanDerVaalsRadius = fMoleculeDefinition->GetVanDerVaalsRadius() ;
00125     fDynDecayTime = fMoleculeDefinition->GetDecayTime() ;
00126 }

G4MolecularConfiguration::G4MolecularConfiguration ( const G4MolecularConfiguration  )  [protected]

G4MolecularConfiguration::~G4MolecularConfiguration (  )  [protected]

Definition at line 128 of file G4MolecularConfiguration.cc.

References fElectronOccupancy.

00129 {
00130     if(fElectronOccupancy)
00131     {
00132         delete fElectronOccupancy;
00133         fElectronOccupancy = 0;
00134     }
00135 }


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 189 of file G4MolecularConfiguration.cc.

References G4ElectronOccupancy::AddElectron(), ChangeConfiguration(), and fElectronOccupancy.

Referenced by G4Molecule::AddElectron(), and MoveOneElectron().

00190 {
00191     G4ElectronOccupancy newElectronOccupancy(*fElectronOccupancy);
00192     newElectronOccupancy.AddElectron(orbit, number);
00193     return ChangeConfiguration(newElectronOccupancy);
00194 }

G4MolecularConfiguration * G4MolecularConfiguration::ChangeConfiguration ( const G4ElectronOccupancy newElectronOccupancy  )  [protected]

Definition at line 137 of file G4MolecularConfiguration.cc.

References fgManager, fMoleculeDefinition, G4MolecularConfiguration::G4MolecularConfigurationManager::fTable, and G4MolecularConfiguration().

Referenced by AddElectron(), ExciteMolecule(), IonizeMolecule(), MoveOneElectron(), and RemoveElectron().

00138 {
00139     G4MolecularConfiguration* output = fgManager->fTable[fMoleculeDefinition][newElectronOccupancy] ;
00140     if(! output)
00141     {
00142         output = new G4MolecularConfiguration(fMoleculeDefinition, newElectronOccupancy);
00143     }
00144     return output ;
00145 }

void G4MolecularConfiguration::DeleteManager (  )  [static]

Definition at line 103 of file G4MolecularConfiguration.cc.

References fgManager.

00104 {
00105     if(fgManager) delete fgManager;
00106     fgManager = 0;
00107 }

G4MolecularConfiguration * G4MolecularConfiguration::ExciteMolecule ( G4int   ) 

Method used in Geant4-DNA to excite water molecules

Definition at line 156 of file G4MolecularConfiguration.cc.

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

Referenced by G4Molecule::ExciteMolecule().

00157 {
00158     G4ElectronOccupancy newElectronOccupancy (*fElectronOccupancy);
00159 
00160     newElectronOccupancy.RemoveElectron(ExcitedLevel,1);
00161     newElectronOccupancy.AddElectron(5,1);
00162 
00163     return ChangeConfiguration(newElectronOccupancy);
00164 }

G4int G4MolecularConfiguration::GetAtomsNumber (  )  const

Returns the nomber of atoms compouning the molecule

Definition at line 248 of file G4MolecularConfiguration.cc.

References fMoleculeDefinition, and G4MoleculeDefinition::GetAtomsNumber().

Referenced by G4Molecule::GetAtomsNumber().

00249 {
00250     return fMoleculeDefinition->GetAtomsNumber();
00251 }

G4int G4MolecularConfiguration::GetCharge (  )  const [inline]

Returns the charge of molecule.

Definition at line 275 of file G4MolecularConfiguration.hh.

References fDynCharge.

Referenced by G4Molecule::GetCharge().

00276 {
00277     return fDynCharge ;
00278 }

const vector< const G4MolecularDecayChannel * > * G4MolecularConfiguration::GetDecayChannel (  )  const

Definition at line 274 of file G4MolecularConfiguration.cc.

References fElectronOccupancy, and fMoleculeDefinition.

Referenced by G4Molecule::GetDecayChannel().

00275 {
00276     return fMoleculeDefinition-> GetDecayChannels(fElectronOccupancy);
00277 }

G4double G4MolecularConfiguration::GetDecayTime (  )  const [inline]

Returns the decay time of the molecule.

Definition at line 260 of file G4MolecularConfiguration.hh.

References fDynDecayTime.

Referenced by G4Molecule::GetDecayTime().

00261 {
00262     return fDynDecayTime;
00263 }

const G4MoleculeDefinition * G4MolecularConfiguration::GetDefinition (  )  const [inline]

Definition at line 235 of file G4MolecularConfiguration.hh.

References fMoleculeDefinition.

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

00236 {
00237     return fMoleculeDefinition;
00238 }

G4double G4MolecularConfiguration::GetDiffusionCoefficient (  )  const [inline]

Returns the diffusion coefficient D.

Definition at line 250 of file G4MolecularConfiguration.hh.

References fDynDiffusionCoefficient.

Referenced by G4Molecule::GetDiffusionCoefficient().

00251 {
00252     return fDynDiffusionCoefficient;
00253 }

const G4ElectronOccupancy * G4MolecularConfiguration::GetElectronOccupancy (  )  const [inline]

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

Definition at line 240 of file G4MolecularConfiguration.hh.

References fElectronOccupancy.

Referenced by G4Molecule::GetElectronOccupancy().

00241 {
00242     return fElectronOccupancy ;
00243 }

G4MolecularConfiguration::G4MolecularConfigurationManager * G4MolecularConfiguration::GetManager (  )  [static, protected]

Definition at line 46 of file G4MolecularConfiguration.cc.

References fgManager.

Referenced by GetMolecularConfiguration().

00047 {
00048     if(!fgManager)
00049     {
00050         fgManager = new G4MolecularConfiguration::G4MolecularConfigurationManager;
00051     }
00052 
00053     return fgManager;
00054 }

G4double G4MolecularConfiguration::GetMass (  )  const [inline]

Returns the total mass of the molecule.

Definition at line 285 of file G4MolecularConfiguration.hh.

References fDynMass.

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

00286 {
00287     return fDynMass;
00288 }

G4MolecularConfiguration * G4MolecularConfiguration::GetMolecularConfiguration ( const G4MoleculeDefinition  )  [static]

Definition at line 75 of file G4MolecularConfiguration.cc.

References G4MolecularConfiguration::G4MolecularConfigurationManager::fTable, G4MolecularConfiguration(), G4MoleculeDefinition::GetGroundStateElectronOccupancy(), and GetManager().

00076 {
00077     const G4ElectronOccupancy& elecOcc = *molDef->GetGroundStateElectronOccupancy();
00078     if(GetManager()->fTable[molDef][elecOcc])
00079     {
00080         return GetManager()->fTable[molDef][elecOcc];
00081     }
00082     else
00083     {
00084         G4MolecularConfiguration* newConf = new G4MolecularConfiguration(molDef, elecOcc);
00085         return newConf ;
00086     }
00087 }

G4MolecularConfiguration * G4MolecularConfiguration::GetMolecularConfiguration ( const G4MoleculeDefinition ,
const G4ElectronOccupancy electronOccupancy 
) [static]

Definition at line 89 of file G4MolecularConfiguration.cc.

References G4MolecularConfiguration::G4MolecularConfigurationManager::fTable, G4MolecularConfiguration(), and GetManager().

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

00091 {
00092     if(GetManager()->fTable[molDef][elecOcc])
00093     {
00094         return GetManager()->fTable[molDef][elecOcc];
00095     }
00096     else
00097     {
00098         G4MolecularConfiguration* newConf = new G4MolecularConfiguration(molDef, elecOcc);
00099         return newConf ;
00100     }
00101 }

G4int G4MolecularConfiguration::GetMoleculeID (  )  const

Definition at line 279 of file G4MolecularConfiguration.cc.

References FatalErrorInArgument, fMoleculeDefinition, G4Exception(), G4ParticleDefinition::GetPDGEncoding(), and INT_MAX.

Referenced by G4Molecule::GetMoleculeID().

00280 {
00281     if(fMoleculeDefinition)
00282         return fMoleculeDefinition->GetPDGEncoding();
00283     else
00284         G4Exception("G4Molecule::GetMoleculeID","",FatalErrorInArgument, "You should first enter a molecule defintion");
00285 
00286     return INT_MAX;
00287 }

const G4String & G4MolecularConfiguration::GetName (  )  const

Returns the name of the molecule

Definition at line 235 of file G4MolecularConfiguration.cc.

References G4UIcommand::ConvertToString(), fDynCharge, fMoleculeDefinition, fName, G4MoleculeDefinition::GetName(), and G4String::isNull().

Referenced by G4Molecule::GetName(), IonizeMolecule(), MoveOneElectron(), PrintState(), and RemoveElectron().

00236 {
00237     if(fName.isNull())
00238     {
00239         fName = fMoleculeDefinition->GetName();
00240         fName+= "^";
00241         fName+= "{";
00242         fName+= G4UIcommand::ConvertToString(fDynCharge);
00243         fName+= "}";
00244     }
00245     return fName;
00246 }

G4double G4MolecularConfiguration::GetNbElectrons (  )  const

Returns the number of electron.

Definition at line 253 of file G4MolecularConfiguration.cc.

References fElectronOccupancy, and G4ElectronOccupancy::GetTotalOccupancy().

Referenced by G4Molecule::GetNbElectrons().

00254 {
00255     return fElectronOccupancy->GetTotalOccupancy();
00256 }

G4double G4MolecularConfiguration::GetVanDerVaalsRadius (  )  const [inline]

Definition at line 270 of file G4MolecularConfiguration.hh.

References fDynVanDerVaalsRadius.

Referenced by G4Molecule::GetVanDerVaalsRadius().

00271 {
00272     return fDynVanDerVaalsRadius;
00273 }

G4MolecularConfiguration * G4MolecularConfiguration::IonizeMolecule ( G4int   ) 

Method used in Geant4-DNA to ionize water molecules

Definition at line 168 of file G4MolecularConfiguration.cc.

References ChangeConfiguration(), G4UIcommand::ConvertToString(), FatalErrorInArgument, fElectronOccupancy, G4Exception(), GetName(), G4ElectronOccupancy::GetOccupancy(), PrintState(), and G4ElectronOccupancy::RemoveElectron().

Referenced by G4Molecule::IonizeMolecule().

00169 {
00170     G4ElectronOccupancy newElectronOccupancy(*fElectronOccupancy);
00171 
00172     if(newElectronOccupancy.GetOccupancy(IonizedLevel) != 0)
00173     {
00174         newElectronOccupancy.RemoveElectron(IonizedLevel,1);
00175     }
00176     else
00177     {
00178         G4String errMsg = "There is no electron on the orbit " + G4UIcommand::ConvertToString(IonizedLevel) +
00179                           " you want to free. The molecule's name you want to ionized is "+ GetName();
00180         G4Exception("G4Molecule::IonizeMolecule","",FatalErrorInArgument, errMsg);
00181         PrintState();
00182     }
00183 
00184     // PrintState();
00185 
00186     return ChangeConfiguration(newElectronOccupancy);
00187 }

G4MolecularConfiguration * G4MolecularConfiguration::MoveOneElectron ( G4int  ,
G4int   
)

Move one electron from an orbit to another.

Definition at line 215 of file G4MolecularConfiguration.cc.

References AddElectron(), ChangeConfiguration(), G4UIcommand::ConvertToString(), FatalErrorInArgument, fElectronOccupancy, G4Exception(), GetName(), PrintState(), and RemoveElectron().

Referenced by G4Molecule::MoveOneElectron().

00216 {
00217     G4ElectronOccupancy newElectronOccupancy (*fElectronOccupancy);
00218 
00219     if(newElectronOccupancy . GetOccupancy(orbitToFree)>=1)
00220     {
00221         newElectronOccupancy . RemoveElectron(orbitToFree,1);
00222         newElectronOccupancy . AddElectron(orbitToFill,1);
00223     }
00224     else
00225     {
00226         G4String errMsg = "There is no electron on the orbit " + G4UIcommand::ConvertToString(orbitToFree) +
00227                           " you want to free. The molecule's name is "+ GetName();
00228         G4Exception("G4Molecule::MoveOneElectron","",FatalErrorInArgument, errMsg);
00229         PrintState();
00230     }
00231 
00232     return ChangeConfiguration(newElectronOccupancy);
00233 }

G4MolecularConfiguration & G4MolecularConfiguration::operator= ( G4MolecularConfiguration right  )  [protected]

Definition at line 147 of file G4MolecularConfiguration.cc.

00148 {
00149     if (&right==this) return *this;
00150     return *this;
00151 }

void G4MolecularConfiguration::PrintState (  )  const

Show the electronic state of the molecule.

Definition at line 258 of file G4MolecularConfiguration.cc.

References G4ElectronOccupancy::DumpInfo(), fElectronOccupancy, fMoleculeDefinition, G4cout, G4endl, G4MoleculeDefinition::GetDecayTable(), G4MoleculeDefinition::GetGroundStateElectronOccupancy(), and GetName().

Referenced by IonizeMolecule(), MoveOneElectron(), G4Molecule::PrintState(), and RemoveElectron().

00259 {
00260     G4cout<<"--------------Print electronic state of "<<GetName()<<"---------------"<<G4endl;
00261     fElectronOccupancy->DumpInfo();
00262     if(fElectronOccupancy==fMoleculeDefinition->GetGroundStateElectronOccupancy())
00263     {
00264         G4cout<<"At ground state"<<G4endl;
00265     }
00266     else
00267     {
00268         if(fMoleculeDefinition->GetDecayTable())
00269             G4cout<<"Transition :"<<(fMoleculeDefinition->GetDecayTable())->GetExcitedState(fElectronOccupancy)<<G4endl;
00270     }
00271 }

G4MolecularConfiguration * G4MolecularConfiguration::RemoveElectron ( G4int  ,
G4int  number = 1 
)

Remove n electrons to a given orbit.

Definition at line 196 of file G4MolecularConfiguration.cc.

References ChangeConfiguration(), G4UIcommand::ConvertToString(), fElectronOccupancy, G4Exception(), GetName(), G4ElectronOccupancy::GetOccupancy(), JustWarning, PrintState(), and G4ElectronOccupancy::RemoveElectron().

Referenced by MoveOneElectron(), and G4Molecule::RemoveElectron().

00197 {
00198     G4ElectronOccupancy newElectronOccupancy (*fElectronOccupancy);
00199 
00200     if(newElectronOccupancy.GetOccupancy(orbit) != 0)
00201     {
00202         newElectronOccupancy.RemoveElectron(orbit, number );
00203     }
00204     else
00205     {
00206         G4String errMsg = "There is already no electron into the orbit " + G4UIcommand::ConvertToString(orbit) +
00207                           " you want to free. The molecule's name is "+ GetName();
00208         G4Exception("G4Molecule::RemoveElectron","",JustWarning, errMsg);
00209         PrintState();
00210     }
00211 
00212     return ChangeConfiguration(newElectronOccupancy);
00213 }

void G4MolecularConfiguration::SetDecayTime ( G4double   )  [inline]

Set the decay time of the molecule.

Definition at line 255 of file G4MolecularConfiguration.hh.

References fDynDecayTime.

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

00256 {
00257     fDynDecayTime = dynDecayTime;
00258 }

void G4MolecularConfiguration::SetDiffusionCoefficient ( G4double   )  [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.

Definition at line 245 of file G4MolecularConfiguration.hh.

References fDynDiffusionCoefficient.

Referenced by G4Molecule::SetDiffusionCoefficient().

00246 {
00247     fDynDiffusionCoefficient = dynDiffusionCoefficient ;
00248 }

void G4MolecularConfiguration::SetMass ( G4double   )  [inline]

Set the total mass of the molecule.

Definition at line 280 of file G4MolecularConfiguration.hh.

References fDynMass.

Referenced by G4Molecule::SetMass().

00281 {
00282     fDynMass = aMass ;
00283 }

void G4MolecularConfiguration::SetVanDerVaalsRadius ( G4double   )  [inline]

The Van Der Valls Radius of the molecule

Definition at line 265 of file G4MolecularConfiguration.hh.

References fDynVanDerVaalsRadius.

Referenced by G4Molecule::SetVanDerVaalsRadius().

00266 {
00267     fDynVanDerVaalsRadius = dynVanDerVaalsRadius ;
00268 }


Field Documentation

G4int G4MolecularConfiguration::fDynCharge [protected]

Definition at line 190 of file G4MolecularConfiguration.hh.

Referenced by G4MolecularConfiguration(), GetCharge(), and GetName().

G4double G4MolecularConfiguration::fDynDecayTime [protected]

Definition at line 188 of file G4MolecularConfiguration.hh.

Referenced by G4MolecularConfiguration(), GetDecayTime(), and SetDecayTime().

G4double G4MolecularConfiguration::fDynDiffusionCoefficient [protected]

Definition at line 186 of file G4MolecularConfiguration.hh.

Referenced by G4MolecularConfiguration(), GetDiffusionCoefficient(), and SetDiffusionCoefficient().

G4double G4MolecularConfiguration::fDynMass [protected]

Definition at line 189 of file G4MolecularConfiguration.hh.

Referenced by G4MolecularConfiguration(), GetMass(), and SetMass().

G4double G4MolecularConfiguration::fDynVanDerVaalsRadius [protected]

Definition at line 187 of file G4MolecularConfiguration.hh.

Referenced by G4MolecularConfiguration(), GetVanDerVaalsRadius(), and SetVanDerVaalsRadius().

const G4ElectronOccupancy* G4MolecularConfiguration::fElectronOccupancy [protected]

Definition at line 171 of file G4MolecularConfiguration.hh.

Referenced by AddElectron(), ExciteMolecule(), G4MolecularConfiguration(), GetDecayChannel(), GetElectronOccupancy(), GetNbElectrons(), IonizeMolecule(), MoveOneElectron(), PrintState(), RemoveElectron(), and ~G4MolecularConfiguration().

G4MolecularConfiguration::G4MolecularConfigurationManager * G4MolecularConfiguration::fgManager = 0 [static, protected]

Definition at line 182 of file G4MolecularConfiguration.hh.

Referenced by ChangeConfiguration(), DeleteManager(), G4MolecularConfiguration(), and GetManager().

const G4MoleculeDefinition* G4MolecularConfiguration::fMoleculeDefinition [protected]

Definition at line 170 of file G4MolecularConfiguration.hh.

Referenced by ChangeConfiguration(), G4MolecularConfiguration(), GetAtomsNumber(), GetDecayChannel(), GetDefinition(), GetMoleculeID(), GetName(), and PrintState().

G4String G4MolecularConfiguration::fName [mutable, protected]

Definition at line 191 of file G4MolecularConfiguration.hh.

Referenced by GetName().


The documentation for this class was generated from the following files:
Generated on Mon May 27 17:52:30 2013 for Geant4 by  doxygen 1.4.7