#include <G4EmDNAPhysicsChemistry.hh>
Inheritance diagram for G4EmDNAPhysicsChemistry:
Public Member Functions | |
G4EmDNAPhysicsChemistry (G4int ver=1) | |
virtual | ~G4EmDNAPhysicsChemistry () |
virtual void | ConstructParticle () |
virtual void | ConstructProcess () |
Protected Member Functions | |
void | ConstructMolecules () |
void | ConstructDecayChannels () |
void | ConstructReactionTable () |
Definition at line 34 of file G4EmDNAPhysicsChemistry.hh.
G4EmDNAPhysicsChemistry::G4EmDNAPhysicsChemistry | ( | G4int | ver = 1 |
) |
Definition at line 104 of file G4EmDNAPhysicsChemistry.cc.
References bElectromagnetic, and G4VPhysicsConstructor::SetPhysicsType().
00105 : G4VPhysicsConstructor("G4EmDNAPhysicsChemistry"), verbose(ver) 00106 { 00107 SetPhysicsType(bElectromagnetic); 00108 }
G4EmDNAPhysicsChemistry::~G4EmDNAPhysicsChemistry | ( | ) | [virtual] |
Definition at line 110 of file G4EmDNAPhysicsChemistry.cc.
References G4DNAChemistryManager::DeleteInstance().
00111 { 00118 G4DNAChemistryManager::DeleteInstance(); 00119 }
void G4EmDNAPhysicsChemistry::ConstructDecayChannels | ( | ) | [protected] |
Definition at line 159 of file G4EmDNAPhysicsChemistry.cc.
References G4DNAMolecularDecayDisplacer::A1B1_DissociationDecay, G4MoleculeDefinition::AddDecayChannel(), G4MoleculeDefinition::AddeConfToExcitedState(), G4ElectronOccupancy::AddElectron(), G4Molecule::AddElectron(), G4MoleculeDefinition::AddExcitedState(), G4MolecularDecayChannel::AddProduct(), G4DNAMolecularDecayDisplacer::AutoIonisation, G4DNAMolecularDecayDisplacer::B1A1_DissociationDecay, G4H2O::Definition(), G4H2::Definition(), G4Hydrogen::Definition(), G4Electron_aq::Definition(), G4OH::Definition(), G4H3O::Definition(), G4DNAWaterExcitationStructure::ExcitationEnergy(), G4MoleculeDefinition::GetGroundStateElectronOccupancy(), G4DNAMolecularDecayDisplacer::Ionisation_DissociationDecay, G4VMolecularDecayDisplacer::NoDisplacement, G4ElectronOccupancy::RemoveElectron(), G4Molecule::SetDiffusionCoefficient(), G4MolecularDecayChannel::SetDisplacementType(), G4MolecularDecayChannel::SetEnergy(), G4Molecule::SetMass(), and G4MolecularDecayChannel::SetProbability().
Referenced by ConstructMolecules().
00160 { 00161 //----------------------------------- 00162 //Create the dynamic objects 00163 G4Molecule * H3O = new G4Molecule(G4H3O::Definition()); 00164 H3O -> RemoveElectron(4,1); 00165 00166 G4Molecule * OH = new G4Molecule(G4OH::Definition()); 00167 G4Molecule * e_aq = new G4Molecule(G4Electron_aq::Definition()); 00168 00169 G4Molecule * H = new G4Molecule(G4Hydrogen::Definition()); 00170 G4Molecule * H2 = new G4Molecule(G4H2::Definition()); 00171 00172 G4Molecule* OHm = new G4Molecule(G4OH::Definition()); 00173 OHm->AddElectron(3); 00174 OHm->SetMass(17.0079*g/Avogadro * c_squared); 00175 OHm->SetDiffusionCoefficient(5.0e-9*(m2/s)); 00176 00177 //------------------------------------- 00178 //Define the decay channels 00179 G4MoleculeDefinition* water = G4H2O::Definition(); 00180 G4MolecularDecayChannel* decCh1; 00181 G4MolecularDecayChannel* decCh2; 00182 00183 G4ElectronOccupancy* occ = new G4ElectronOccupancy(*(water->GetGroundStateElectronOccupancy())); 00184 00186 // EXCITATIONS // 00188 G4DNAWaterExcitationStructure waterExcitation; 00189 //-------------------------------------------------------- 00190 //---------------Excitation on the fifth layer------------ 00191 00192 decCh1 = new G4MolecularDecayChannel("A^1B_1_Relaxation"); 00193 decCh2 = new G4MolecularDecayChannel("A^1B_1_DissociativeDecay"); 00194 //Decay 1 : OH + H 00195 decCh1->SetEnergy(waterExcitation.ExcitationEnergy(0)); 00196 decCh1->SetProbability(0.35); 00197 decCh1 -> SetDisplacementType(G4DNAMolecularDecayDisplacer::NoDisplacement); 00198 00199 decCh2->AddProduct(OH); 00200 decCh2->AddProduct(H); 00201 decCh2->SetProbability(0.65); 00202 decCh2 -> SetDisplacementType(G4DNAMolecularDecayDisplacer::A1B1_DissociationDecay); 00203 00204 water->AddExcitedState("A^1B_1"); 00205 water->AddDecayChannel("A^1B_1",decCh1); 00206 water->AddDecayChannel("A^1B_1",decCh2); 00207 00208 occ->RemoveElectron(4,1); // this is the transition form ground state to 00209 occ->AddElectron(5,1); // the first unoccupied orbital: A^1B_1 00210 00211 water->AddeConfToExcitedState("A^1B_1", *occ); 00212 00213 //-------------------------------------------------------- 00214 //---------------Excitation on the fourth layer----------- 00215 decCh1 = new G4MolecularDecayChannel("B^1A_1_Relaxation_Channel"); 00216 decCh2 = new G4MolecularDecayChannel("B^1A_1_DissociativeDecay"); 00217 G4MolecularDecayChannel* decCh3 = new G4MolecularDecayChannel("B^1A_1_AutoIonisation_Channel"); 00218 00219 water->AddExcitedState("B^1A_1"); 00220 00221 //Decay 1 : energy 00222 decCh1->SetEnergy(waterExcitation.ExcitationEnergy(1)); 00223 decCh1->SetProbability(0.3); 00224 00225 //Decay 2 : 2OH + H_2 00226 decCh2->AddProduct(H2); 00227 decCh2->AddProduct(OH); 00228 decCh2->AddProduct(OH); 00229 decCh2->SetProbability(0.15); 00230 decCh2->SetDisplacementType(G4DNAMolecularDecayDisplacer::B1A1_DissociationDecay); 00231 00232 //Decay 3 : OH + H_3Op + e_aq 00233 decCh3->AddProduct(OH); 00234 decCh3->AddProduct(H3O); 00235 decCh3->AddProduct(e_aq); 00236 decCh3->SetProbability(0.55); 00237 decCh3->SetDisplacementType(G4DNAMolecularDecayDisplacer::AutoIonisation); 00238 00239 *occ = *(water->GetGroundStateElectronOccupancy()); 00240 occ->RemoveElectron(3); // this is the transition form ground state to 00241 occ->AddElectron(5,1); // the first unoccupied orbital: B^1A_1 00242 00243 water->AddeConfToExcitedState("B^1A_1", *occ); 00244 water->AddDecayChannel("B^1A_1",decCh1); 00245 water->AddDecayChannel("B^1A_1",decCh2); 00246 water->AddDecayChannel("B^1A_1",decCh3); 00247 00248 //------------------------------------------------------- 00249 //-------------------Excitation of 3rd layer----------------- 00250 decCh1 = new G4MolecularDecayChannel("Excitation3rdLayer_AutoIonisation_Channel"); 00251 decCh2 = new G4MolecularDecayChannel("Excitation3rdLayer_Relaxation_Channel"); 00252 00253 water->AddExcitedState("Excitation3rdLayer"); 00254 00255 //Decay channel 1 : : OH + H_3Op + e_aq 00256 decCh1->AddProduct(OH); 00257 decCh1->AddProduct(H3O); 00258 decCh1->AddProduct(e_aq); 00259 00260 decCh1->SetProbability(0.5); 00261 decCh1->SetDisplacementType(G4DNAMolecularDecayDisplacer::AutoIonisation); 00262 00263 //Decay channel 2 : energy 00264 decCh2->SetEnergy(waterExcitation.ExcitationEnergy(2)); 00265 decCh2->SetProbability(0.5); 00266 00267 //Electronic configuration of this decay 00268 *occ = *(water->GetGroundStateElectronOccupancy()); 00269 occ->RemoveElectron(2,1); 00270 occ->AddElectron(5,1); 00271 00272 //Configure the water molecule 00273 water->AddeConfToExcitedState("Excitation3rdLayer", *occ); 00274 water->AddDecayChannel("Excitation3rdLayer",decCh1); 00275 water->AddDecayChannel("Excitation3rdLayer",decCh2); 00276 00277 //------------------------------------------------------- 00278 //-------------------Excitation of 2nd layer----------------- 00279 decCh1 = new G4MolecularDecayChannel("Excitation2ndLayer_AutoIonisation_Channel"); 00280 decCh2 = new G4MolecularDecayChannel("Excitation2ndLayer_Relaxation_Channel"); 00281 00282 water->AddExcitedState("Excitation2ndLayer"); 00283 00284 //Decay Channel 1 : : OH + H_3Op + e_aq 00285 decCh1->AddProduct(OH); 00286 decCh1->AddProduct(H3O); 00287 decCh1->AddProduct(e_aq); 00288 00289 decCh1->SetProbability(0.5); 00290 decCh1->SetDisplacementType(G4DNAMolecularDecayDisplacer::AutoIonisation); 00291 00292 //Decay channel 2 : energy 00293 decCh2->SetEnergy(waterExcitation.ExcitationEnergy(3)); 00294 decCh2->SetProbability(0.5); 00295 00296 *occ = *(water->GetGroundStateElectronOccupancy()); 00297 occ->RemoveElectron(1,1); 00298 occ->AddElectron(5,1); 00299 00300 water->AddeConfToExcitedState("Excitation2ndLayer", *occ); 00301 water->AddDecayChannel("Excitation2ndLayer",decCh1); 00302 water->AddDecayChannel("Excitation2ndLayer",decCh2); 00303 00304 //------------------------------------------------------- 00305 //-------------------Excitation of 1st layer----------------- 00306 decCh1 = new G4MolecularDecayChannel("Excitation1stLayer_AutoIonisation_Channel"); 00307 decCh2 = new G4MolecularDecayChannel("Excitation1stLayer_Relaxation_Channel"); 00308 00309 *occ = *(water->GetGroundStateElectronOccupancy()); 00310 occ->RemoveElectron(0,1); 00311 occ->AddElectron(5,1); 00312 00313 water->AddExcitedState("Excitation1stLayer"); 00314 water->AddeConfToExcitedState("Excitation1stLayer", *occ); 00315 00316 //Decay Channel 1 : : OH + H_3Op + e_aq 00317 decCh1->AddProduct(OH); 00318 decCh1->AddProduct(H3O); 00319 decCh1->AddProduct(e_aq); 00320 decCh1->SetProbability(0.5); 00321 decCh1->SetDisplacementType(G4DNAMolecularDecayDisplacer::AutoIonisation); 00322 00323 //Decay channel 2 : energy 00324 decCh2->SetEnergy(waterExcitation.ExcitationEnergy(4)); 00325 decCh2->SetProbability(0.5); 00326 water->AddDecayChannel("Excitation1stLayer",decCh1); 00327 water->AddDecayChannel("Excitation1stLayer",decCh2); 00328 00330 // IONISATION // 00332 //-------------------------------------------------------- 00333 //------------------- Ionisation ------------------------- 00334 water->AddExcitedState("Ionisation"); 00335 00336 decCh1 = new G4MolecularDecayChannel("Ionisation_Channel"); 00337 00338 //Decay Channel 1 : : OH + H_3Op 00339 decCh1->AddProduct(H3O); 00340 decCh1->AddProduct(OH); 00341 decCh1->SetProbability(1); 00342 decCh1->SetDisplacementType(G4DNAMolecularDecayDisplacer::Ionisation_DissociationDecay); 00343 00344 *occ = *(water->GetGroundStateElectronOccupancy()); 00345 occ->RemoveElectron(4,1); // this is a ionized h2O with a hole in its last orbital 00346 water->AddeConfToExcitedState("Ionisation", *occ); 00347 00348 *occ = *(water->GetGroundStateElectronOccupancy()); 00349 occ->RemoveElectron(3,1); 00350 water->AddeConfToExcitedState("Ionisation", *occ); 00351 00352 *occ = *(water->GetGroundStateElectronOccupancy()); 00353 occ->RemoveElectron(2,1); 00354 water->AddeConfToExcitedState("Ionisation", *occ); 00355 00356 *occ = *(water->GetGroundStateElectronOccupancy()); 00357 occ->RemoveElectron(1,1); 00358 water->AddeConfToExcitedState("Ionisation", *occ); 00359 00360 *occ = *(water->GetGroundStateElectronOccupancy()); 00361 occ->RemoveElectron(0,1); 00362 water->AddeConfToExcitedState("Ionisation", *occ); 00363 water->AddDecayChannel("Ionisation",decCh1); 00364 // to this electronic configuration should be associated a decay time of 10e-15 s should the process do it on the dynamic object? the dyn object. 00365 00367 // Dissociative Attachment // 00369 decCh1 = new G4MolecularDecayChannel("DissociativeAttachment"); 00370 00371 //Decay 1 : 2OH + H_2 00372 decCh1->AddProduct(H2); 00373 decCh1->AddProduct(OHm); 00374 decCh1->AddProduct(OH); 00375 decCh1->SetProbability(1); 00376 //decCh1->SetDisplacementType(G4DNAMolecularDecayDisplacer::DissociativeAttachment); 00377 00378 *occ = *(water->GetGroundStateElectronOccupancy()); 00379 occ->AddElectron(5,1); // H_2O^- 00380 water->AddExcitedState("DissociativeAttachment"); 00381 water->AddeConfToExcitedState("DissociativeAttachment", *occ); 00382 water->AddDecayChannel("DissociativeAttachment",decCh1); 00383 00384 delete occ; 00385 }
void G4EmDNAPhysicsChemistry::ConstructMolecules | ( | ) | [protected] |
Definition at line 144 of file G4EmDNAPhysicsChemistry.cc.
References ConstructDecayChannels(), G4H2::Definition(), G4H2O2::Definition(), G4Electron_aq::Definition(), G4OH::Definition(), G4H3O::Definition(), G4Hydrogen::Definition(), and G4H2O::Definition().
Referenced by ConstructProcess().
00145 { 00146 //----------------------------------- 00147 // Create the definition 00148 G4H2O::Definition(); 00149 G4Hydrogen::Definition(); 00150 G4H3O::Definition(); 00151 G4OH::Definition(); 00152 G4Electron_aq::Definition(); 00153 G4H2O2::Definition(); 00154 G4H2::Definition(); 00155 00156 ConstructDecayChannels() ; 00157 }
void G4EmDNAPhysicsChemistry::ConstructParticle | ( | ) | [virtual] |
Implements G4VPhysicsConstructor.
Definition at line 123 of file G4EmDNAPhysicsChemistry.cc.
References G4Electron::Electron(), G4Gamma::Gamma(), G4GenericIon::GenericIonDefinition(), G4DNAGenericIonsManager::GetIon(), G4DNAGenericIonsManager::Instance(), G4Positron::Positron(), and G4Proton::Proton().
00124 { 00125 // bosons 00126 G4Gamma::Gamma(); 00127 00128 // leptons 00129 G4Electron::Electron(); 00130 G4Positron::Positron(); 00131 00132 // baryons 00133 G4Proton::Proton(); 00134 00135 G4GenericIon::GenericIonDefinition(); 00136 00137 G4DNAGenericIonsManager * genericIonsManager; 00138 genericIonsManager=G4DNAGenericIonsManager::Instance(); 00139 genericIonsManager->GetIon("alpha++"); 00140 genericIonsManager->GetIon("alpha+"); 00141 genericIonsManager->GetIon("helium"); 00142 genericIonsManager->GetIon("hydrogen"); 00143 }
void G4EmDNAPhysicsChemistry::ConstructProcess | ( | ) | [virtual] |
Implements G4VPhysicsConstructor.
Definition at line 457 of file G4EmDNAPhysicsChemistry.cc.
References G4VEmProcess::AddEmModel(), G4VMultipleScattering::AddEmModel(), ConstructMolecules(), ConstructReactionTable(), G4DNASancheExcitationModel::ExtendLowEnergyLimit(), fUseDistanceToBoundary, G4ParticleDefinition::GetParticleName(), G4ParticleDefinition::GetParticleType(), G4PhysicsListHelper::GetPhysicsListHelper(), G4ParticleDefinition::GetProcessManager(), G4DNAChemistryManager::Instance(), G4LossTableManager::Instance(), G4PhysicsListHelper::RegisterProcess(), G4ParticleTableIterator< K, V >::reset(), G4LossTableManager::SetAtomDeexcitation(), G4DNAChemistryManager::SetChemistryActivation(), G4VAtomDeexcitation::SetFluo(), G4VEmModel::SetHighEnergyLimit(), G4DNAChampionElasticModel::SetKillBelowThreshold(), G4VEmProcess::SetModel(), G4ParticleDefinition::SetProcessManager(), G4VEnergyLossProcess::SetStepFunction(), G4VMultipleScattering::SetStepLimitType(), G4VPhysicsConstructor::SetVerboseLevel(), G4VPhysicsConstructor::theParticleIterator, and G4ParticleTableIterator< K, V >::value().
00458 { 00459 00460 ConstructMolecules(); 00461 // Is placed outside ConstructParticles to avoid 00462 // the transportation process to be added to the molecules 00463 00464 G4PhysicsListHelper* ph = G4PhysicsListHelper::GetPhysicsListHelper(); 00465 00466 theParticleIterator->reset(); 00467 while( (*theParticleIterator)() ) 00468 { 00469 G4ParticleDefinition* particle = theParticleIterator->value(); 00470 G4String particleName = particle->GetParticleName(); 00471 G4String particleType = particle->GetParticleType(); 00472 G4ProcessManager* pmanager = particle->GetProcessManager(); 00473 00474 if (particleName == "e-") { 00475 00476 // *** Elastic scattering (two alternative models available) *** 00477 00478 G4DNAElastic* theDNAElasticProcess = new G4DNAElastic("e-_G4DNAElastic"); 00479 G4DNAChampionElasticModel * championElasticModel = new G4DNAChampionElasticModel(); 00480 championElasticModel->SetKillBelowThreshold(0.*eV); 00481 theDNAElasticProcess->SetModel(championElasticModel); 00482 00483 // or alternative model 00484 //theDNAElasticProcess->SetModel(new G4DNAScreenedRutherfordElasticModel()); 00485 00486 ph->RegisterProcess(theDNAElasticProcess, particle); 00487 00488 // *** Excitation *** 00489 ph->RegisterProcess(new G4DNAExcitation("e-_G4DNAExcitation"), particle); 00490 00491 // *** Ionisation *** 00492 ph->RegisterProcess(new G4DNAIonisation("e-_G4DNAIonisation"), particle); 00493 00494 // *** Vibrational excitation *** 00495 G4DNAVibExcitation* vibExcitation = new G4DNAVibExcitation("e-_G4DNAVibExcitation"); 00496 G4DNASancheExcitationModel* sancheExcitationMod = new G4DNASancheExcitationModel; 00497 vibExcitation -> SetModel(sancheExcitationMod); 00498 sancheExcitationMod->ExtendLowEnergyLimit(0.025*eV); 00499 ph->RegisterProcess(vibExcitation, particle); 00500 00501 // *** Attachment *** 00502 ph->RegisterProcess(new G4DNAAttachment("e-_G4DNAAttachment"), particle); 00503 00504 // *** Electron Solvatation *** 00505 ph->RegisterProcess(new G4DNAElectronSolvatation("e-_G4DNAElectronSolvatation"), particle); 00506 } else if ( particleName == "proton" ) { 00507 ph->RegisterProcess(new G4DNAExcitation("proton_G4DNAExcitation"), particle); 00508 ph->RegisterProcess(new G4DNAIonisation("proton_G4DNAIonisation"), particle); 00509 ph->RegisterProcess(new G4DNAChargeDecrease("proton_G4DNAChargeDecrease"), particle); 00510 00511 } else if ( particleName == "hydrogen" ) { 00512 ph->RegisterProcess(new G4DNAExcitation("hydrogen_G4DNAExcitation"), particle); 00513 ph->RegisterProcess(new G4DNAIonisation("hydrogen_G4DNAIonisation"), particle); 00514 ph->RegisterProcess(new G4DNAChargeIncrease("hydrogen_G4DNAChargeIncrease"), particle); 00515 00516 } else if ( particleName == "alpha" ) { 00517 ph->RegisterProcess(new G4DNAExcitation("alpha_G4DNAExcitation"), particle); 00518 ph->RegisterProcess(new G4DNAIonisation("alpha_G4DNAIonisation"), particle); 00519 ph->RegisterProcess(new G4DNAChargeDecrease("alpha_G4DNAChargeDecrease"), particle); 00520 00521 } else if ( particleName == "alpha+" ) { 00522 ph->RegisterProcess(new G4DNAExcitation("alpha+_G4DNAExcitation"), particle); 00523 ph->RegisterProcess(new G4DNAIonisation("alpha+_G4DNAIonisation"), particle); 00524 ph->RegisterProcess(new G4DNAChargeDecrease("alpha+_G4DNAChargeDecrease"), particle); 00525 ph->RegisterProcess(new G4DNAChargeIncrease("alpha+_G4DNAChargeIncrease"), particle); 00526 00527 } else if ( particleName == "helium" ) { 00528 ph->RegisterProcess(new G4DNAExcitation("helium_G4DNAExcitation"), particle); 00529 ph->RegisterProcess(new G4DNAIonisation("helium_G4DNAIonisation"), particle); 00530 ph->RegisterProcess(new G4DNAChargeIncrease("helium_G4DNAChargeIncrease"), particle); 00531 00532 } 00533 // Extension to HZE proposed by Z. Francis 00534 00535 else if ( particleName == "carbon" ) { 00536 ph->RegisterProcess(new G4DNAIonisation("carbon_G4DNAIonisation"), particle); 00537 00538 } else if ( particleName == "nitrogen" ) { 00539 ph->RegisterProcess(new G4DNAIonisation("nitrogen_G4DNAIonisation"), particle); 00540 00541 } else if ( particleName == "oxygen" ) { 00542 ph->RegisterProcess(new G4DNAIonisation("oxygen_G4DNAIonisation"), particle); 00543 00544 } else if ( particleName == "iron" ) { 00545 ph->RegisterProcess(new G4DNAIonisation("iron_G4DNAIonisation"), particle); 00546 00547 } 00548 00549 // Warning : the following particles and processes are needed by EM Physics builders 00550 // They are taken from the default Livermore Physics list 00551 // These particles are currently not handled by Geant4-DNA 00552 00553 // e+ 00554 00555 else if (particleName == "e+") { 00556 00557 // Identical to G4EmStandardPhysics_option3 00558 00559 G4eMultipleScattering* msc = new G4eMultipleScattering(); 00560 msc->AddEmModel(0, new G4UrbanMscModel95()); 00561 msc->SetStepLimitType(fUseDistanceToBoundary); 00562 G4eIonisation* eIoni = new G4eIonisation(); 00563 eIoni->SetStepFunction(0.2, 100*um); 00564 00565 ph->RegisterProcess(msc, particle); 00566 ph->RegisterProcess(eIoni, particle); 00567 ph->RegisterProcess(new G4eBremsstrahlung(), particle); 00568 ph->RegisterProcess(new G4eplusAnnihilation(), particle); 00569 00570 }else if (particleName == "gamma") { 00571 G4double LivermoreHighEnergyLimit = GeV; 00572 00573 G4PhotoElectricEffect* thePhotoElectricEffect = new G4PhotoElectricEffect(); 00574 G4LivermorePhotoElectricModel* theLivermorePhotoElectricModel = 00575 new G4LivermorePhotoElectricModel(); 00576 theLivermorePhotoElectricModel->SetHighEnergyLimit(LivermoreHighEnergyLimit); 00577 thePhotoElectricEffect->AddEmModel(0, theLivermorePhotoElectricModel); 00578 ph->RegisterProcess(thePhotoElectricEffect, particle); 00579 00580 G4ComptonScattering* theComptonScattering = new G4ComptonScattering(); 00581 G4LivermoreComptonModel* theLivermoreComptonModel = 00582 new G4LivermoreComptonModel(); 00583 theLivermoreComptonModel->SetHighEnergyLimit(LivermoreHighEnergyLimit); 00584 theComptonScattering->AddEmModel(0, theLivermoreComptonModel); 00585 ph->RegisterProcess(theComptonScattering, particle); 00586 00587 G4GammaConversion* theGammaConversion = new G4GammaConversion(); 00588 G4LivermoreGammaConversionModel* theLivermoreGammaConversionModel = 00589 new G4LivermoreGammaConversionModel(); 00590 theLivermoreGammaConversionModel->SetHighEnergyLimit(LivermoreHighEnergyLimit); 00591 theGammaConversion->AddEmModel(0, theLivermoreGammaConversionModel); 00592 ph->RegisterProcess(theGammaConversion, particle); 00593 00594 G4RayleighScattering* theRayleigh = new G4RayleighScattering(); 00595 G4LivermoreRayleighModel* theRayleighModel = new G4LivermoreRayleighModel(); 00596 theRayleighModel->SetHighEnergyLimit(LivermoreHighEnergyLimit); 00597 theRayleigh->AddEmModel(0, theRayleighModel); 00598 ph->RegisterProcess(theRayleigh, particle); 00599 00600 } 00601 else if(particleType == "Molecule" && particleName != "H_{2}O") 00602 { 00603 if (pmanager==0) 00604 { 00605 particle->SetProcessManager(new G4ProcessManager(particle)); 00606 } 00607 00608 G4DNABrownianTransportation* brown = new G4DNABrownianTransportation(); 00609 ph->RegisterProcess(brown, particle); 00610 } 00611 else if (particleName == "H_{2}O") 00612 { 00613 if (pmanager==0) 00614 { 00615 particle->SetProcessManager(new G4ProcessManager(particle)); 00616 } 00617 00618 G4DNAMolecularDecay* decayProcess = new G4DNAMolecularDecay("H2O_DNAMolecularDecay"); 00619 decayProcess -> SetDecayDisplacer(particle, new G4DNAMolecularDecayDisplacer); 00620 decayProcess -> SetVerboseLevel(1); 00621 ph->RegisterProcess(decayProcess, particle); 00622 00623 } 00624 00625 00626 // Warning : end of particles and processes are needed by EM Physics builders 00627 00628 } 00629 00630 // Deexcitation 00631 // 00632 G4VAtomDeexcitation* de = new G4UAtomicDeexcitation(); 00633 G4LossTableManager::Instance()->SetAtomDeexcitation(de); 00634 de->SetFluo(true); 00635 00636 // Chemistry 00637 ConstructReactionTable(); 00638 00646 G4DNAChemistryManager::Instance()->SetChemistryActivation(true); 00647 }
void G4EmDNAPhysicsChemistry::ConstructReactionTable | ( | ) | [protected] |
Definition at line 387 of file G4EmDNAPhysicsChemistry.cc.
References G4Molecule::AddElectron(), G4DNAMolecularReactionData::AddProduct(), G4H2::Definition(), G4H2O2::Definition(), G4H3O::Definition(), G4Hydrogen::Definition(), G4Electron_aq::Definition(), G4OH::Definition(), G4DNAMolecularReactionTable::GetReactionTable(), G4Molecule::RemoveElectron(), G4Molecule::SetDiffusionCoefficient(), and G4Molecule::SetMass().
Referenced by ConstructProcess().
00388 { 00389 G4DNAMolecularReactionTable* theReactionTable = G4DNAMolecularReactionTable::GetReactionTable(); 00390 00391 G4Molecule* OHm = new G4Molecule(G4OH::Definition()); 00392 OHm->AddElectron(3); 00393 OHm->SetMass(17.0079*g/Avogadro * c_squared); 00394 OHm->SetDiffusionCoefficient(5.0e-9*(m2/s)); 00395 G4Molecule* OH = new G4Molecule(G4OH::Definition()); 00396 G4Molecule* e_aq = new G4Molecule(G4Electron_aq::Definition()); 00397 G4Molecule* H = new G4Molecule(G4Hydrogen::Definition()); 00398 G4Molecule* H3Op = new G4Molecule(G4H3O::Definition()); 00399 G4Molecule* H2O2 = new G4Molecule(G4H2O2::Definition()); 00400 H3Op->RemoveElectron(4,1); 00401 00402 G4Molecule* H2 = new G4Molecule(G4H2::Definition()); 00403 00404 //------------------------------------------------------------------ 00405 //e_aq + e_aq + 2H2O -> H2 + 2OH- 00406 G4DNAMolecularReactionData* reactionData = new G4DNAMolecularReactionData(0.5e10*(1e-3*m3/(mole*s)), e_aq,e_aq); 00407 reactionData -> AddProduct(OHm); 00408 reactionData -> AddProduct(OHm); 00409 reactionData -> AddProduct(H2); 00410 theReactionTable -> SetReaction(reactionData); 00411 //------------------------------------------------------------------ 00412 //e_aq + *OH -> OH- 00413 reactionData = new G4DNAMolecularReactionData(2.95e10*(1e-3*m3/(mole*s)), e_aq, OH); 00414 reactionData->AddProduct(OHm); 00415 theReactionTable -> SetReaction(reactionData); 00416 //------------------------------------------------------------------ 00417 //e_aq + H* + H2O -> H2 + OH- 00418 reactionData = new G4DNAMolecularReactionData(2.65e10*(1e-3*m3/(mole*s)), e_aq, H); 00419 reactionData->AddProduct(OHm); 00420 reactionData->AddProduct(H2); 00421 theReactionTable -> SetReaction(reactionData); 00422 //------------------------------------------------------------------ 00423 //e_aq + H3O+ -> H* + H2O 00424 reactionData = new G4DNAMolecularReactionData(2.11e10*(1e-3*m3/(mole*s)), e_aq, H3Op); 00425 reactionData->AddProduct(H); 00426 theReactionTable -> SetReaction(reactionData); 00427 //------------------------------------------------------------------ 00428 //e_aq + H2O2 -> OH- + *OH 00429 reactionData = new G4DNAMolecularReactionData(1.41e10*(1e-3*m3/(mole*s)), e_aq, H2O2); 00430 reactionData->AddProduct(OHm); 00431 reactionData->AddProduct(OH); 00432 theReactionTable -> SetReaction(reactionData); 00433 //------------------------------------------------------------------ 00434 //*OH + *OH -> H2O2 00435 reactionData = new G4DNAMolecularReactionData(0.44e10*(1e-3*m3/(mole*s)), OH, OH); 00436 reactionData->AddProduct(H2O2); 00437 theReactionTable -> SetReaction(reactionData); 00438 //------------------------------------------------------------------ 00439 //*OH + *H -> H2O 00440 theReactionTable -> SetReaction(1.44e10*(1e-3*m3/(mole*s)), OH, H); 00441 //------------------------------------------------------------------ 00442 //*H + *H -> H2 00443 reactionData = new G4DNAMolecularReactionData(1.20e10*(1e-3*m3/(mole*s)), H, H); 00444 reactionData->AddProduct(H2); 00445 theReactionTable -> SetReaction(reactionData); 00446 //------------------------------------------------------------------ 00447 //H3O+ + OH- -> 2H2O 00448 theReactionTable -> SetReaction(1.43e11*(1e-3*m3/(mole*s)), H3Op, OHm); 00449 //------------------------------------------------------------------ 00450 //OH + H2 -> H + H2O 00451 reactionData = new G4DNAMolecularReactionData(4.17e7*(1e-3*m3/(mole*s)), OH, H2); 00452 reactionData->AddProduct(H); 00453 theReactionTable -> SetReaction(reactionData); 00454 //------------------------------------------------------------------ 00455 }