00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026 #include "G4EmDNAPhysicsChemistry.hh"
00027
00028 #include "G4PhysicalConstants.hh"
00029 #include "G4SystemOfUnits.hh"
00030
00031 #include "G4DNAMolecularDecayDisplacer.hh"
00032 #include "G4DNAChemistryManager.hh"
00033 #include "G4DNAWaterExcitationStructure.hh"
00034 #include "G4ProcessManager.hh"
00035
00036 #include "G4DNAGenericIonsManager.hh"
00037
00038
00039
00040 #include "G4DNAElastic.hh"
00041 #include "G4DNAChampionElasticModel.hh"
00042 #include "G4DNAScreenedRutherfordElasticModel.hh"
00043 #include "G4DNAElectronSolvatation.hh"
00044
00045 #include "G4DNAExcitation.hh"
00046 #include "G4DNAAttachment.hh"
00047 #include "G4DNAVibExcitation.hh"
00048 #include "G4DNAIonisation.hh"
00049 #include "G4DNAChargeDecrease.hh"
00050 #include "G4DNAChargeIncrease.hh"
00051
00052 #include "G4DNAMolecularDecay.hh"
00053 #include "G4DNABrownianTransportation.hh"
00054 #include "G4DNAMolecularReactionTable.hh"
00055 #include "G4DNAMolecularStepByStepModel.hh"
00056 #include "G4VDNAReactionModel.hh"
00057
00058
00059
00060 #include "G4Electron.hh"
00061 #include "G4Proton.hh"
00062 #include "G4GenericIon.hh"
00063
00064 #include "G4H2O.hh"
00065 #include "G4H2.hh"
00066 #include "G4Hydrogen.hh"
00067 #include "G4OH.hh"
00068 #include "G4H3O.hh"
00069 #include "G4Electron_aq.hh"
00070 #include "G4H2O2.hh"
00071
00072
00073
00074 #include "G4Positron.hh"
00075 #include "G4eMultipleScattering.hh"
00076 #include "G4UrbanMscModel95.hh"
00077 #include "G4eIonisation.hh"
00078 #include "G4eBremsstrahlung.hh"
00079 #include "G4eplusAnnihilation.hh"
00080
00081 #include "G4Gamma.hh"
00082 #include "G4PhotoElectricEffect.hh"
00083 #include "G4LivermorePhotoElectricModel.hh"
00084 #include "G4ComptonScattering.hh"
00085 #include "G4LivermoreComptonModel.hh"
00086 #include "G4GammaConversion.hh"
00087 #include "G4LivermoreGammaConversionModel.hh"
00088 #include "G4RayleighScattering.hh"
00089 #include "G4LivermoreRayleighModel.hh"
00090
00091
00092 #include "G4LossTableManager.hh"
00093 #include "G4UAtomicDeexcitation.hh"
00094 #include "G4PhysicsListHelper.hh"
00095 #include "G4BuilderType.hh"
00096
00097
00098 #include "G4PhysicsConstructorFactory.hh"
00099
00100 G4_DECLARE_PHYSCONSTR_FACTORY(G4EmDNAPhysicsChemistry);
00101
00102 using namespace std;
00103
00104 G4EmDNAPhysicsChemistry::G4EmDNAPhysicsChemistry(G4int ver)
00105 : G4VPhysicsConstructor("G4EmDNAPhysicsChemistry"), verbose(ver)
00106 {
00107 SetPhysicsType(bElectromagnetic);
00108 }
00109
00110 G4EmDNAPhysicsChemistry::~G4EmDNAPhysicsChemistry()
00111 {
00118 G4DNAChemistryManager::DeleteInstance();
00119 }
00120
00121
00122
00123 void G4EmDNAPhysicsChemistry::ConstructParticle()
00124 {
00125
00126 G4Gamma::Gamma();
00127
00128
00129 G4Electron::Electron();
00130 G4Positron::Positron();
00131
00132
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 }
00144 void G4EmDNAPhysicsChemistry::ConstructMolecules()
00145 {
00146
00147
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 }
00158
00159 void G4EmDNAPhysicsChemistry::ConstructDecayChannels()
00160 {
00161
00162
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
00179 G4MoleculeDefinition* water = G4H2O::Definition();
00180 G4MolecularDecayChannel* decCh1;
00181 G4MolecularDecayChannel* decCh2;
00182
00183 G4ElectronOccupancy* occ = new G4ElectronOccupancy(*(water->GetGroundStateElectronOccupancy()));
00184
00186
00188 G4DNAWaterExcitationStructure waterExcitation;
00189
00190
00191
00192 decCh1 = new G4MolecularDecayChannel("A^1B_1_Relaxation");
00193 decCh2 = new G4MolecularDecayChannel("A^1B_1_DissociativeDecay");
00194
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);
00209 occ->AddElectron(5,1);
00210
00211 water->AddeConfToExcitedState("A^1B_1", *occ);
00212
00213
00214
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
00222 decCh1->SetEnergy(waterExcitation.ExcitationEnergy(1));
00223 decCh1->SetProbability(0.3);
00224
00225
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
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);
00241 occ->AddElectron(5,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
00250 decCh1 = new G4MolecularDecayChannel("Excitation3rdLayer_AutoIonisation_Channel");
00251 decCh2 = new G4MolecularDecayChannel("Excitation3rdLayer_Relaxation_Channel");
00252
00253 water->AddExcitedState("Excitation3rdLayer");
00254
00255
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
00264 decCh2->SetEnergy(waterExcitation.ExcitationEnergy(2));
00265 decCh2->SetProbability(0.5);
00266
00267
00268 *occ = *(water->GetGroundStateElectronOccupancy());
00269 occ->RemoveElectron(2,1);
00270 occ->AddElectron(5,1);
00271
00272
00273 water->AddeConfToExcitedState("Excitation3rdLayer", *occ);
00274 water->AddDecayChannel("Excitation3rdLayer",decCh1);
00275 water->AddDecayChannel("Excitation3rdLayer",decCh2);
00276
00277
00278
00279 decCh1 = new G4MolecularDecayChannel("Excitation2ndLayer_AutoIonisation_Channel");
00280 decCh2 = new G4MolecularDecayChannel("Excitation2ndLayer_Relaxation_Channel");
00281
00282 water->AddExcitedState("Excitation2ndLayer");
00283
00284
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
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
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
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
00324 decCh2->SetEnergy(waterExcitation.ExcitationEnergy(4));
00325 decCh2->SetProbability(0.5);
00326 water->AddDecayChannel("Excitation1stLayer",decCh1);
00327 water->AddDecayChannel("Excitation1stLayer",decCh2);
00328
00330
00332
00333
00334 water->AddExcitedState("Ionisation");
00335
00336 decCh1 = new G4MolecularDecayChannel("Ionisation_Channel");
00337
00338
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);
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
00365
00367
00369 decCh1 = new G4MolecularDecayChannel("DissociativeAttachment");
00370
00371
00372 decCh1->AddProduct(H2);
00373 decCh1->AddProduct(OHm);
00374 decCh1->AddProduct(OH);
00375 decCh1->SetProbability(1);
00376
00377
00378 *occ = *(water->GetGroundStateElectronOccupancy());
00379 occ->AddElectron(5,1);
00380 water->AddExcitedState("DissociativeAttachment");
00381 water->AddeConfToExcitedState("DissociativeAttachment", *occ);
00382 water->AddDecayChannel("DissociativeAttachment",decCh1);
00383
00384 delete occ;
00385 }
00386
00387 void G4EmDNAPhysicsChemistry::ConstructReactionTable()
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
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
00413 reactionData = new G4DNAMolecularReactionData(2.95e10*(1e-3*m3/(mole*s)), e_aq, OH);
00414 reactionData->AddProduct(OHm);
00415 theReactionTable -> SetReaction(reactionData);
00416
00417
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
00424 reactionData = new G4DNAMolecularReactionData(2.11e10*(1e-3*m3/(mole*s)), e_aq, H3Op);
00425 reactionData->AddProduct(H);
00426 theReactionTable -> SetReaction(reactionData);
00427
00428
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
00435 reactionData = new G4DNAMolecularReactionData(0.44e10*(1e-3*m3/(mole*s)), OH, OH);
00436 reactionData->AddProduct(H2O2);
00437 theReactionTable -> SetReaction(reactionData);
00438
00439
00440 theReactionTable -> SetReaction(1.44e10*(1e-3*m3/(mole*s)), OH, H);
00441
00442
00443 reactionData = new G4DNAMolecularReactionData(1.20e10*(1e-3*m3/(mole*s)), H, H);
00444 reactionData->AddProduct(H2);
00445 theReactionTable -> SetReaction(reactionData);
00446
00447
00448 theReactionTable -> SetReaction(1.43e11*(1e-3*m3/(mole*s)), H3Op, OHm);
00449
00450
00451 reactionData = new G4DNAMolecularReactionData(4.17e7*(1e-3*m3/(mole*s)), OH, H2);
00452 reactionData->AddProduct(H);
00453 theReactionTable -> SetReaction(reactionData);
00454
00455 }
00456
00457 void G4EmDNAPhysicsChemistry::ConstructProcess()
00458 {
00459
00460 ConstructMolecules();
00461
00462
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
00477
00478 G4DNAElastic* theDNAElasticProcess = new G4DNAElastic("e-_G4DNAElastic");
00479 G4DNAChampionElasticModel * championElasticModel = new G4DNAChampionElasticModel();
00480 championElasticModel->SetKillBelowThreshold(0.*eV);
00481 theDNAElasticProcess->SetModel(championElasticModel);
00482
00483
00484
00485
00486 ph->RegisterProcess(theDNAElasticProcess, particle);
00487
00488
00489 ph->RegisterProcess(new G4DNAExcitation("e-_G4DNAExcitation"), particle);
00490
00491
00492 ph->RegisterProcess(new G4DNAIonisation("e-_G4DNAIonisation"), particle);
00493
00494
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
00502 ph->RegisterProcess(new G4DNAAttachment("e-_G4DNAAttachment"), particle);
00503
00504
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
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
00550
00551
00552
00553
00554
00555 else if (particleName == "e+") {
00556
00557
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
00627
00628 }
00629
00630
00631
00632 G4VAtomDeexcitation* de = new G4UAtomicDeexcitation();
00633 G4LossTableManager::Instance()->SetAtomDeexcitation(de);
00634 de->SetFluo(true);
00635
00636
00637 ConstructReactionTable();
00638
00646 G4DNAChemistryManager::Instance()->SetChemistryActivation(true);
00647 }