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 &)
G4Molecule & operator= (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 G4String & GetName () 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
G4Track * BuildTrack (G4double globalTime, const G4ThreeVector &Position)
G4double GetKineticEnergy () const
G4double GetDiffusionVelocity () const
const std::vector< const G4MolecularDecayChannel * > * GetDecayChannel () const
G4int GetMoleculeID () const
const G4MoleculeDefinition * GetDefinition () 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
G4MolecularConfiguration * GetMolecularConfiguration ()

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