G4Molecule Class Reference

#include <G4Molecule.hh>

Inheritance diagram for G4Molecule:

G4IT G4VUserTrackInformation

Public Member Functions

 ITDef (G4Molecule) void Print() const
void * operator new (size_t)
void operator delete (void *aVUserTrackInformation)
 G4Molecule (const G4Molecule &)
G4Moleculeoperator= (const G4Molecule &right)
G4bool operator== (const G4Molecule &right) const
G4bool operator!= (const G4Molecule &right) const
G4bool operator< (const G4Molecule &right) const
 G4Molecule (G4MoleculeDefinition *molecule)
 G4Molecule (G4MoleculeDefinition *molecule, G4int, G4int)
 G4Molecule (G4MoleculeDefinition *molecule, G4int, G4bool)
virtual ~G4Molecule ()
const G4StringGetName () const
G4int GetAtomsNumber () const
void SetElectronOccupancy (const G4ElectronOccupancy *)
void ExciteMolecule (G4int)
void IonizeMolecule (G4int)
void AddElectron (G4int orbit, G4int n=1)
void RemoveElectron (G4int, G4int number=1)
void MoveOneElectron (G4int, G4int)
G4double GetNbElectrons () const
void PrintState () const
G4TrackBuildTrack (G4double globalTime, const G4ThreeVector &Position)
G4double GetKineticEnergy () const
G4double GetDiffusionVelocity () const
const std::vector< const G4MolecularDecayChannel * > * GetDecayChannel () const
G4int GetMoleculeID () const
const G4MoleculeDefinitionGetDefinition () 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
G4MolecularConfigurationGetMolecularConfiguration ()

Static Public Member Functions

static void SetGlobalTemperature (double)
static double GetGlobalTemperature ()

Detailed Description

Class Description The dynamic molecule holds all the data that change for a molecule It has a pointer to G4MoleculeDefinition object, which holds all the "ground level" information.

Definition at line 76 of file G4Molecule.hh.


Constructor & Destructor Documentation

G4Molecule::G4Molecule ( const G4Molecule  ) 

Definition at line 82 of file G4Molecule.cc.

References G4Molecule().

Referenced by G4Molecule().

00082                                               :
00083     G4VUserTrackInformation("G4Molecule"), G4IT(right)
00084 {
00085     Init();
00086     fMolecularConfiguration = right . fMolecularConfiguration;
00087 }

G4Molecule::G4Molecule ( G4MoleculeDefinition molecule  ) 

To build a molecule at ground state according to a given G4MoleculeDefinition that can be obtained from G4GenericMoleculeManager

Definition at line 160 of file G4Molecule.cc.

References G4Molecule(), and G4MolecularConfiguration::GetMolecularConfiguration().

00160                                                                 :
00161     G4VUserTrackInformation("G4Molecule"), G4IT()
00163 {
00164     Init();
00165     fMolecularConfiguration = G4MolecularConfiguration::GetMolecularConfiguration(moleculeDefinition);
00166 }

G4Molecule::G4Molecule ( G4MoleculeDefinition molecule,
G4int  ,
G4int   
)

To build a molecule at a specific excitation/ionisation state according to a ground state that can be obtained from G4GenericMoleculeManager

Definition at line 173 of file G4Molecule.cc.

References G4Molecule(), G4MoleculeDefinition::GetGroundStateElectronOccupancy(), and G4MolecularConfiguration::GetMolecularConfiguration().

00173                                                                                                          :
00174     G4VUserTrackInformation("G4Molecule"), G4IT()
00176 {
00177     Init();
00178 
00179     G4ElectronOccupancy dynElectronOccupancy (*moleculeDefinition->GetGroundStateElectronOccupancy());
00180 
00181     if (OrbitalToFill != 0)
00182     {
00183         dynElectronOccupancy.RemoveElectron(OrbitalToFree-1,1);
00184         dynElectronOccupancy.AddElectron(OrbitalToFill-1,1);
00185         // dynElectronOccupancy.DumpInfo(); // DEBUG
00186     }
00187 
00188     if (OrbitalToFill == 0)
00189     {
00190         dynElectronOccupancy.RemoveElectron(OrbitalToFree-1,1);
00191         // dynElectronOccupancy.DumpInfo(); // DEBUG
00192     }
00193 
00194     fMolecularConfiguration = G4MolecularConfiguration::GetMolecularConfiguration(moleculeDefinition, dynElectronOccupancy);
00195 }

G4Molecule::G4Molecule ( G4MoleculeDefinition molecule,
G4int  ,
G4bool   
)

Specific builder for water molecules to be used in Geant4-DNA, the last option Excitation is true if the molecule is excited, is false is the molecule is ionized.

Definition at line 202 of file G4Molecule.cc.

References G4Molecule(), G4MoleculeDefinition::GetGroundStateElectronOccupancy(), and G4MolecularConfiguration::GetMolecularConfiguration().

00202                                                                                                :
00203     G4VUserTrackInformation("G4Molecule"), G4IT()
00204 {
00205     Init();
00206 
00207     G4ElectronOccupancy dynElectronOccupancy (*moleculeDefinition->GetGroundStateElectronOccupancy());
00208 
00209     if (Excitation == true)
00210     {
00211         dynElectronOccupancy.RemoveElectron(Level,1);
00212         dynElectronOccupancy.AddElectron(5,1);
00213         // dynElectronOccupancy.DumpInfo(); // DEBUG
00214     }
00215 
00216     if (Excitation == false)
00217     {
00218         dynElectronOccupancy.RemoveElectron(Level,1);
00219         // dynElectronOccupancy.DumpInfo(); // DEBUG
00220     }
00221 
00222     fMolecularConfiguration = G4MolecularConfiguration::GetMolecularConfiguration(moleculeDefinition, dynElectronOccupancy);
00223 }

G4Molecule::~G4Molecule (  )  [virtual]

Definition at line 138 of file G4Molecule.cc.

References G4IT::fpTrack, G4Track::GetGlobalTime(), G4MoleculeCounter::GetMoleculeCounter(), and G4MoleculeCounter::RemoveAMoleculeAtTime().

00140 {
00141     if(fpTrack!=NULL)
00142     {
00143         if(G4MoleculeCounter::GetMoleculeCounter()->InUse())
00144         {
00145             G4MoleculeCounter::GetMoleculeCounter()->RemoveAMoleculeAtTime(*this,
00146                                                                            fpTrack->GetGlobalTime());
00147         }
00148         fpTrack = 0;
00149     }
00150     fMolecularConfiguration = 0;
00151     fDynamicParticle = 0;
00152     // DEBUG
00153     // G4cout<<"Molecule killed"<<G4endl;
00154 }


Member Function Documentation

void G4Molecule::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 244 of file G4Molecule.cc.

References G4MolecularConfiguration::AddElectron().

Referenced by G4EmDNAPhysicsChemistry::ConstructDecayChannels(), and G4EmDNAPhysicsChemistry::ConstructReactionTable().

00245 {
00246     fMolecularConfiguration = fMolecularConfiguration->AddElectron(orbit,number);
00247 }

G4Track * G4Molecule::BuildTrack ( G4double  globalTime,
const G4ThreeVector Position 
)

Definition at line 279 of file G4Molecule.cc.

References G4MoleculeCounter::AddAMoleculeAtTime(), FatalErrorInArgument, G4IT::fpTrack, G4Exception(), G4UniformRand, G4MolecularConfiguration::GetDefinition(), GetKineticEnergy(), G4MoleculeCounter::GetMoleculeCounter(), and G4INCL::Math::pi.

Referenced by G4DNAChemistryManager::CreateSolvatedElectron(), G4DNAChemistryManager::CreateWaterMolecule(), G4DNAChemistryManager::PushMolecule(), and G4DNAChemistryManager::PushMoleculeAtParentTimeAndPlace().

00280 {
00281     if(fpTrack != 0)
00282     {
00283         G4Exception("G4Molecule::BuildTrack","Molecule001",
00284                     FatalErrorInArgument,"A track was already assigned to this molecule");
00285     }
00286 
00287     // Kinetic Values
00288     // Set a random direction to the molecule
00289     G4double costheta = (2*G4UniformRand()-1);
00290     G4double theta = acos (costheta);
00291     G4double phi = 2*pi*G4UniformRand();
00292 
00293     G4double xMomentum = cos(phi)* sin(theta);
00294     G4double yMomentum = sin(theta)*sin(phi);
00295     G4double zMomentum = costheta;
00296 
00297     G4ThreeVector MomentumDirection(xMomentum, yMomentum, zMomentum);
00298     G4double KineticEnergy = GetKineticEnergy();
00299     // G4cout << " **** KineticEnergy : " << KineticEnergy << G4endl;
00300     fDynamicParticle = new G4DynamicParticle(fMolecularConfiguration->GetDefinition(),
00301                                              MomentumDirection,
00302                                              KineticEnergy);
00303 
00304     if(G4MoleculeCounter::GetMoleculeCounter()->InUse())
00305         G4MoleculeCounter::GetMoleculeCounter()->AddAMoleculeAtTime(*this,globalTime);
00306 
00307     //Set the Track
00308     fpTrack = new G4Track(fDynamicParticle, globalTime, Position);
00309     fpTrack -> SetUserInformation (this);
00310 
00311     return fpTrack;
00312 }

void G4Molecule::ExciteMolecule ( G4int   ) 

Method used in Geant4-DNA to excite water molecules

Definition at line 232 of file G4Molecule.cc.

References G4MolecularConfiguration::ExciteMolecule().

00233 {
00234     fMolecularConfiguration = fMolecularConfiguration->ExciteMolecule(ExcitedLevel);
00235 }

G4int G4Molecule::GetAtomsNumber (  )  const

Returns the nomber of atoms compouning the molecule

Definition at line 264 of file G4Molecule.cc.

References G4MolecularConfiguration::GetAtomsNumber().

00265 {
00266     return fMolecularConfiguration->GetAtomsNumber();
00267 }

G4int G4Molecule::GetCharge (  )  const

Returns the charge of molecule.

Definition at line 375 of file G4Molecule.cc.

References G4MolecularConfiguration::GetCharge().

00376 {
00377     return fMolecularConfiguration->GetCharge() ;
00378 }

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

Definition at line 345 of file G4Molecule.cc.

References G4MolecularConfiguration::GetDecayChannel().

00346 {
00347     return fMolecularConfiguration->GetDecayChannel();
00348 }

G4double G4Molecule::GetDecayTime (  )  const

Returns the decay time of the molecule.

Definition at line 360 of file G4Molecule.cc.

References G4MolecularConfiguration::GetDecayTime().

00361 {
00362     return fMolecularConfiguration->GetDecayTime();
00363 }

const G4MoleculeDefinition * G4Molecule::GetDefinition (  )  const

Get molecule definition. This G4MoleculeDefinition has the ground electronic state of the molecule.

Definition at line 395 of file G4Molecule.cc.

References G4MolecularConfiguration::GetDefinition().

Referenced by G4MoleculeCounter::AddAMoleculeAtTime(), G4DNAMolecularDecay::DecayIt(), G4DNAMolecularDecayDisplacer::GetProductsDisplacement(), and G4MoleculeCounter::RemoveAMoleculeAtTime().

00396 {
00397     return fMolecularConfiguration->GetDefinition();
00398 }

G4double G4Molecule::GetDiffusionCoefficient (  )  const

Returns the diffusion coefficient D.

Definition at line 405 of file G4Molecule.cc.

References G4MolecularConfiguration::GetDiffusionCoefficient().

Referenced by G4DNABrownianTransportation::AlongStepGetPhysicalInteractionLength(), G4DNABrownianTransportation::ComputeStep(), G4DNASmoluchowskiReactionModel::FindReaction(), G4DNAMolecularReactionData::G4DNAMolecularReactionData(), and G4DNAMolecularReaction::MakeReaction().

00406 {
00407     return fMolecularConfiguration->GetDiffusionCoefficient();
00408 }

G4double G4Molecule::GetDiffusionVelocity (  )  const

Definition at line 324 of file G4Molecule.cc.

References G4MolecularConfiguration::GetMass().

Referenced by GetKineticEnergy().

00325 {
00326     double moleculeMass = fMolecularConfiguration->GetMass()/(c_squared);
00327 
00329     // Different possibilities
00331     // Ideal Gaz case : Maxwell Boltzmann Distribution
00332     //    double sigma = k_Boltzmann * fgTemperature / mass;
00333     //    return G4RandGauss::shoot( 0, sigma );
00335     // Ideal Gaz case : mean velocity from equipartition theorem
00336     return sqrt(3*k_Boltzmann*fgTemperature/moleculeMass);
00338     // Using this approximation for liquid is wrong
00339     // However the brownian process avoid taking
00340     // care of energy consideration and plays only
00341     // with positions
00342 }

const G4ElectronOccupancy * G4Molecule::GetElectronOccupancy (  )  const

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

Definition at line 390 of file G4Molecule.cc.

References G4MolecularConfiguration::GetElectronOccupancy().

Referenced by G4DNAMolecularDecay::DecayIt().

00391 {
00392     return fMolecularConfiguration->GetElectronOccupancy();
00393 }

double G4Molecule::GetGlobalTemperature (  )  [inline, static]

Definition at line 283 of file G4Molecule.hh.

00284 {
00285     return fgTemperature;
00286 }

G4double G4Molecule::GetKineticEnergy (  )  const

Definition at line 314 of file G4Molecule.cc.

References GetDiffusionVelocity(), and G4MolecularConfiguration::GetMass().

Referenced by BuildTrack().

00315 {
00317     // Ideal Gaz case
00318     double v = GetDiffusionVelocity();
00319     double E = (fMolecularConfiguration->GetMass()/(c_squared))*(v*v)/2.;
00321     return E;
00322 }

G4double G4Molecule::GetMass (  )  const

Returns the total mass of the molecule.

Definition at line 385 of file G4Molecule.cc.

References G4MolecularConfiguration::GetMass().

00386 {
00387     return fMolecularConfiguration->GetMass();
00388 }

G4MolecularConfiguration * G4Molecule::GetMolecularConfiguration (  )  [inline]

Definition at line 273 of file G4Molecule.hh.

Referenced by G4DNASecondOrderReaction::PostStepGetPhysicalInteractionLength().

00274 {
00275     return fMolecularConfiguration ;
00276 }

G4int G4Molecule::GetMoleculeID (  )  const

Definition at line 350 of file G4Molecule.cc.

References G4MolecularConfiguration::GetMoleculeID().

00351 {
00352     return fMolecularConfiguration->GetMoleculeID();
00353 }

const G4String & G4Molecule::GetName (  )  const [virtual]

Returns the name of the molecule

Implements G4IT.

Definition at line 259 of file G4Molecule.cc.

References G4MolecularConfiguration::GetName().

Referenced by G4MoleculeCounter::AddAMoleculeAtTime(), G4DNAMoleculeEncounterStepper::CalculateStep(), G4DNAMolecularReactionTable::CanReactWith(), G4DNAMolecularDecay::DecayIt(), G4DNABrownianTransportation::Diffusion(), G4DNASmoluchowskiReactionModel::FindReaction(), G4DNAMolecularReactionTable::GetReactionData(), G4DNAMolecularReactionTable::GetReativesNData(), G4DNASecondOrderReaction::PostStepDoIt(), G4DNAIndirectHit::Print(), G4DNAMolecularReactionTable::PrintTable(), G4DNAChemistryManager::PushMolecule(), G4DNAChemistryManager::PushMoleculeAtParentTimeAndPlace(), G4MoleculeCounter::RemoveAMoleculeAtTime(), and G4DNAMolecularReaction::TestReactibility().

00260 {
00261     return fMolecularConfiguration->GetName();
00262 }

G4double G4Molecule::GetNbElectrons (  )  const

Returns the number of electron.

Definition at line 269 of file G4Molecule.cc.

References G4MolecularConfiguration::GetNbElectrons().

00270 {
00271     return fMolecularConfiguration->GetNbElectrons();
00272 }

G4double G4Molecule::GetVanDerVaalsRadius (  )  const

Definition at line 370 of file G4Molecule.cc.

References G4MolecularConfiguration::GetVanDerVaalsRadius().

00371 {
00372     return fMolecularConfiguration->GetVanDerVaalsRadius();
00373 }

void G4Molecule::IonizeMolecule ( G4int   ) 

Method used in Geant4-DNA to ionize water molecules

Definition at line 239 of file G4Molecule.cc.

References G4MolecularConfiguration::IonizeMolecule().

00240 {
00241     fMolecularConfiguration = fMolecularConfiguration->IonizeMolecule(IonizedLevel);
00242 }

G4Molecule::ITDef ( G4Molecule   )  const

void G4Molecule::MoveOneElectron ( G4int  ,
G4int   
)

Move one electron from an orbit to another.

Definition at line 254 of file G4Molecule.cc.

References G4MolecularConfiguration::MoveOneElectron().

00255 {
00256     fMolecularConfiguration = fMolecularConfiguration->MoveOneElectron(orbitToFree,orbitToFill);
00257 }

void G4Molecule::operator delete ( void *  aVUserTrackInformation  )  [inline]

Reimplemented from G4IT.

Definition at line 265 of file G4Molecule.hh.

References aMoleculeAllocator.

00267 {
00268     // DEBUG
00269     // G4cout<<"G4Molecule::operator delete(void * aMolecule) called"<<G4endl;
00270     aMoleculeAllocator.FreeSingle((G4Molecule *) aMolecule);
00271 }

void * G4Molecule::operator new ( size_t   )  [inline]

Reimplemented from G4IT.

Definition at line 256 of file G4Molecule.hh.

References aMoleculeAllocator.

00258 {
00259     void * aMolecule;
00260     aMolecule = (void *) aMoleculeAllocator.MallocSingle();
00261     return aMolecule;
00262 }

G4bool G4Molecule::operator!= ( const G4Molecule right  )  const

Definition at line 106 of file G4Molecule.cc.

00107 {
00108     return !(*this == right);
00109 }

G4bool G4Molecule::operator< ( const G4Molecule right  )  const

The two methods below are the most called of the simulation : compare molecules in the MoleculeStackManager or in the InteractionTable

Definition at line 116 of file G4Molecule.cc.

References fMolecularConfiguration.

00117 {
00118     return fMolecularConfiguration < right.fMolecularConfiguration ;
00119 }

G4Molecule & G4Molecule::operator= ( const G4Molecule right  ) 

Definition at line 89 of file G4Molecule.cc.

00090 {
00091     if (&right==this) return *this;
00092     Init();
00093     fMolecularConfiguration = right . fMolecularConfiguration;
00094     return *this;
00095 }

G4bool G4Molecule::operator== ( const G4Molecule right  )  const

Definition at line 97 of file G4Molecule.cc.

References fMolecularConfiguration.

00098 {
00099     if(fMolecularConfiguration==right.fMolecularConfiguration)
00100     {
00101         return true;
00102     }
00103     return false;
00104 }

void G4Molecule::PrintState (  )  const

Show the electronic state of the molecule.

Definition at line 274 of file G4Molecule.cc.

References G4MolecularConfiguration::PrintState().

Referenced by G4MoleculeCounter::RemoveAMoleculeAtTime().

00275 {
00276     fMolecularConfiguration->PrintState();
00277 }

void G4Molecule::RemoveElectron ( G4int  ,
G4int  number = 1 
)

Remove n electrons to a given orbit.

Definition at line 249 of file G4Molecule.cc.

References G4MolecularConfiguration::RemoveElectron().

Referenced by G4EmDNAPhysicsChemistry::ConstructReactionTable().

00250 {
00251     fMolecularConfiguration = fMolecularConfiguration->RemoveElectron(orbit,number);
00252 }

void G4Molecule::SetDecayTime ( G4double   ) 

Set the decay time of the molecule.

Definition at line 355 of file G4Molecule.cc.

References G4MolecularConfiguration::SetDecayTime().

00356 {
00357     fMolecularConfiguration->SetDecayTime(dynDecayTime);
00358 }

void G4Molecule::SetDiffusionCoefficient ( G4double   ) 

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 400 of file G4Molecule.cc.

References G4MolecularConfiguration::SetDiffusionCoefficient().

Referenced by G4EmDNAPhysicsChemistry::ConstructDecayChannels(), and G4EmDNAPhysicsChemistry::ConstructReactionTable().

00401 {
00402     fMolecularConfiguration->SetDiffusionCoefficient(dynDiffusionCoefficient);
00403 }

void G4Molecule::SetElectronOccupancy ( const G4ElectronOccupancy  ) 

Will set up the correct molecularConfiguration given an electron configuration

Definition at line 225 of file G4Molecule.cc.

References G4MolecularConfiguration::GetDefinition(), and G4MolecularConfiguration::GetMolecularConfiguration().

00226 {
00227     fMolecularConfiguration = G4MolecularConfiguration::GetMolecularConfiguration(fMolecularConfiguration->GetDefinition(), *occ);
00228 }

void G4Molecule::SetGlobalTemperature ( double   )  [inline, static]

Definition at line 278 of file G4Molecule.hh.

00279 {
00280     fgTemperature = temperature;
00281 }

void G4Molecule::SetMass ( G4double   ) 

Set the total mass of the molecule.

Definition at line 380 of file G4Molecule.cc.

References G4MolecularConfiguration::SetMass().

Referenced by G4EmDNAPhysicsChemistry::ConstructDecayChannels(), and G4EmDNAPhysicsChemistry::ConstructReactionTable().

00381 {
00382     fMolecularConfiguration->SetMass(aMass);
00383 }

void G4Molecule::SetVanDerVaalsRadius ( G4double   ) 

The Van Der Valls Radius of the molecule

Definition at line 365 of file G4Molecule.cc.

References G4MolecularConfiguration::SetVanDerVaalsRadius().

00366 {
00367     fMolecularConfiguration->SetVanDerVaalsRadius(dynVanDerVaalsRadius);
00368 }


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