G4EmDNAPhysicsChemistry Class Reference

#include <G4EmDNAPhysicsChemistry.hh>

Inheritance diagram for G4EmDNAPhysicsChemistry:

G4VPhysicsConstructor

Public Member Functions

 G4EmDNAPhysicsChemistry (G4int ver=1)
virtual ~G4EmDNAPhysicsChemistry ()
virtual void ConstructParticle ()
virtual void ConstructProcess ()

Protected Member Functions

void ConstructMolecules ()
void ConstructDecayChannels ()
void ConstructReactionTable ()

Detailed Description

Definition at line 34 of file G4EmDNAPhysicsChemistry.hh.


Constructor & Destructor Documentation

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 }


Member Function Documentation

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 }


The documentation for this class was generated from the following files:
Generated on Mon May 27 17:51:52 2013 for Geant4 by  doxygen 1.4.7