60 double G4Molecule::fgTemperature = 310*
kelvin;
79 G4cout<<
"The user track information is a molecule"<<
G4endl;
86 fMolecularConfiguration = right . fMolecularConfiguration;
91 if (&right==
this)
return *
this;
93 fMolecularConfiguration = right . fMolecularConfiguration;
99 if(fMolecularConfiguration==right.fMolecularConfiguration)
108 return !(*
this ==
right);
118 return fMolecularConfiguration < right.fMolecularConfiguration ;
121 void G4Molecule::Init()
123 fMolecularConfiguration = 0 ;
124 fDynamicParticle = 0;
150 fMolecularConfiguration = 0;
151 fDynamicParticle = 0;
181 if (OrbitalToFill != 0)
184 dynElectronOccupancy.AddElectron(OrbitalToFill-1,1);
188 if (OrbitalToFill == 0)
190 dynElectronOccupancy.RemoveElectron(OrbitalToFree-1,1);
209 if (Excitation ==
true)
212 dynElectronOccupancy.AddElectron(5,1);
216 if (Excitation ==
false)
218 dynElectronOccupancy.RemoveElectron(Level,1);
234 fMolecularConfiguration = fMolecularConfiguration->
ExciteMolecule(ExcitedLevel);
241 fMolecularConfiguration = fMolecularConfiguration->
IonizeMolecule(IonizedLevel);
246 fMolecularConfiguration = fMolecularConfiguration->
AddElectron(orbit,number);
251 fMolecularConfiguration = fMolecularConfiguration->
RemoveElectron(orbit,number);
256 fMolecularConfiguration = fMolecularConfiguration->
MoveOneElectron(orbitToFree,orbitToFill);
261 return fMolecularConfiguration->
GetName();
283 G4Exception(
"G4Molecule::BuildTrack",
"Molecule001",
293 G4double xMomentum = cos(phi)* sin(theta);
294 G4double yMomentum = sin(theta)*sin(phi);
297 G4ThreeVector MomentumDirection(xMomentum, yMomentum, zMomentum);
309 fpTrack -> SetUserInformation (
this);
336 return sqrt(3*
k_Boltzmann*fgTemperature/moleculeMass);
377 return fMolecularConfiguration->
GetCharge() ;
382 fMolecularConfiguration->
SetMass(aMass);
387 return fMolecularConfiguration->
GetMass();