Import Geant4 11.2.0.beta source tree
This commit is contained in:
@@ -0,0 +1,319 @@
|
||||
//
|
||||
// ********************************************************************
|
||||
// * License and Disclaimer *
|
||||
// * *
|
||||
// * The Geant4 software is copyright of the Copyright Holders of *
|
||||
// * the Geant4 Collaboration. It is provided under the terms and *
|
||||
// * conditions of the Geant4 Software License, included in the file *
|
||||
// * LICENSE and available at http://cern.ch/geant4/license . These *
|
||||
// * include a list of copyright holders. *
|
||||
// * *
|
||||
// * Neither the authors of this software system, nor their employing *
|
||||
// * institutes,nor the agencies providing financial support for this *
|
||||
// * work make any representation or warranty, express or implied, *
|
||||
// * regarding this software system or assume any liability for its *
|
||||
// * use. Please see the license in the file LICENSE and URL above *
|
||||
// * for the full disclaimer and the limitation of liability. *
|
||||
// * *
|
||||
// * This code implementation is the result of the scientific and *
|
||||
// * technical work of the GEANT4 collaboration. *
|
||||
// * By using, copying, modifying or distributing the software (or *
|
||||
// * any work based on the software) you agree to acknowledge its *
|
||||
// * use in resulting scientific publications, and indicate your *
|
||||
// * acceptance of all terms of the Geant4 Software license. *
|
||||
// ********************************************************************
|
||||
//
|
||||
//
|
||||
// Geant4 class G4ChemDissociationChannels
|
||||
//
|
||||
// Author H. Tran 16.12.2022
|
||||
//
|
||||
|
||||
#include "G4ChemDissociationChannels.hh"
|
||||
|
||||
#include "G4DNAWaterDissociationDisplacer.hh"
|
||||
#include "G4DNAWaterExcitationStructure.hh"
|
||||
#include "G4Electron_aq.hh"
|
||||
#include "G4H2.hh"
|
||||
#include "G4H2O.hh"
|
||||
#include "G4H2O2.hh"
|
||||
#include "G4H3O.hh"
|
||||
#include "G4Hydrogen.hh"
|
||||
#include "G4MolecularConfiguration.hh"
|
||||
#include "G4MoleculeTable.hh"
|
||||
#include "G4OH.hh"
|
||||
#include "G4PhysicalConstants.hh"
|
||||
#include "G4SystemOfUnits.hh"
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
void G4ChemDissociationChannels::ConstructMolecule()
|
||||
{
|
||||
// Create the definition
|
||||
G4H2O::Definition();
|
||||
G4Hydrogen::Definition();
|
||||
G4H3O::Definition();
|
||||
G4OH::Definition();
|
||||
G4Electron_aq::Definition();
|
||||
G4H2O2::Definition();
|
||||
G4H2::Definition();
|
||||
auto molTable = G4MoleculeTable::Instance();
|
||||
|
||||
molTable->CreateConfiguration("H3Op", G4H3O::Definition());
|
||||
G4MolecularConfiguration* OHm =
|
||||
molTable->CreateConfiguration("OHm", // just a tag to store and retrieve
|
||||
// from G4MoleculeTable
|
||||
G4OH::Definition(),
|
||||
-1, // charge
|
||||
5.0e-9 * (m2 / s));
|
||||
OHm->SetMass(17.0079 * g / Avogadro * c_squared);
|
||||
molTable->CreateConfiguration("OH", G4OH::Definition());
|
||||
molTable->CreateConfiguration("e_aq", G4Electron_aq::Definition());
|
||||
molTable->CreateConfiguration("H", G4Hydrogen::Definition());
|
||||
molTable->CreateConfiguration("H2", G4H2::Definition());
|
||||
molTable->CreateConfiguration("H2O2", G4H2O2::Definition());
|
||||
}
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
void G4ChemDissociationChannels::ConstructDissociationChannels()
|
||||
{
|
||||
//-----------------------------------
|
||||
// Get the molecular configuration
|
||||
auto molTable = G4MoleculeTable::Instance();
|
||||
G4MolecularConfiguration* OH = molTable->GetConfiguration("OH");
|
||||
G4MolecularConfiguration* OHm = molTable->GetConfiguration("OHm");
|
||||
G4MolecularConfiguration* e_aq = molTable->GetConfiguration("e_aq");
|
||||
G4MolecularConfiguration* H2 = molTable->GetConfiguration("H2");
|
||||
G4MolecularConfiguration* H3O = molTable->GetConfiguration("H3Op");
|
||||
G4MolecularConfiguration* H = molTable->GetConfiguration("H");
|
||||
|
||||
//-------------------------------------
|
||||
// Define the decay channels
|
||||
G4MoleculeDefinition* water = G4H2O::Definition();
|
||||
G4MolecularDissociationChannel* decCh1;
|
||||
G4MolecularDissociationChannel* decCh2;
|
||||
|
||||
auto occ = new G4ElectronOccupancy(*(water->GetGroundStateElectronOccupancy()));
|
||||
|
||||
//////////////////////////////////////////////////////////
|
||||
// EXCITATIONS //
|
||||
//////////////////////////////////////////////////////////
|
||||
G4DNAWaterExcitationStructure waterExcitation;
|
||||
//--------------------------------------------------------
|
||||
//---------------Excitation on the fifth layer------------
|
||||
|
||||
decCh1 = new G4MolecularDissociationChannel("A^1B_1_Relax");
|
||||
decCh2 = new G4MolecularDissociationChannel("A^1B_1_DissociDecay");
|
||||
// Decay 1 : OH + H
|
||||
decCh1->SetEnergy(waterExcitation.ExcitationEnergy(0));
|
||||
decCh1->SetProbability(0.35);
|
||||
decCh1->SetDisplacementType(G4DNAWaterDissociationDisplacer::NoDisplacement);
|
||||
|
||||
decCh2->AddProduct(OH);
|
||||
decCh2->AddProduct(H);
|
||||
decCh2->SetProbability(0.65);
|
||||
decCh2->SetDisplacementType(G4DNAWaterDissociationDisplacer::A1B1_DissociationDecay);
|
||||
|
||||
// water->AddExcitedState("A^1B_1");
|
||||
occ->RemoveElectron(4, 1); // this is the transition form ground state to
|
||||
occ->AddElectron(5, 1); // the first unoccupied orbital: A^1B_1
|
||||
|
||||
water->NewConfigurationWithElectronOccupancy("A^1B_1", *occ);
|
||||
water->AddDecayChannel("A^1B_1", decCh1);
|
||||
water->AddDecayChannel("A^1B_1", decCh2);
|
||||
|
||||
//--------------------------------------------------------
|
||||
//---------------Excitation on the fourth layer-----------
|
||||
decCh1 = new G4MolecularDissociationChannel("B^1A_1_Relax_Channel");
|
||||
decCh2 = new G4MolecularDissociationChannel("B^1A_1_DissociDecay");
|
||||
auto decCh3 = new G4MolecularDissociationChannel("B^1A_1_AutoIoni_Channel");
|
||||
|
||||
// Decay 1 : energy
|
||||
decCh1->SetEnergy(waterExcitation.ExcitationEnergy(1));
|
||||
decCh1->SetProbability(0.3);
|
||||
|
||||
// Decay 2 : 2OH + H_2
|
||||
decCh2->AddProduct(H2);
|
||||
decCh2->AddProduct(OH);
|
||||
decCh2->AddProduct(OH);
|
||||
decCh2->SetProbability(0.15);
|
||||
decCh2->SetDisplacementType(G4DNAWaterDissociationDisplacer::B1A1_DissociationDecay);
|
||||
|
||||
// Decay 3 : OH + H_3Op + e_aq
|
||||
decCh3->AddProduct(OH);
|
||||
decCh3->AddProduct(H3O);
|
||||
decCh3->AddProduct(e_aq);
|
||||
decCh3->SetProbability(0.55);
|
||||
decCh3->SetDisplacementType(G4DNAWaterDissociationDisplacer::AutoIonisation);
|
||||
|
||||
*occ = *(water->GetGroundStateElectronOccupancy());
|
||||
occ->RemoveElectron(3); // this is the transition form ground state to
|
||||
occ->AddElectron(5, 1); // the first unoccupied orbital: B^1A_1
|
||||
|
||||
water->NewConfigurationWithElectronOccupancy("B^1A_1", *occ);
|
||||
water->AddDecayChannel("B^1A_1", decCh1);
|
||||
water->AddDecayChannel("B^1A_1", decCh2);
|
||||
water->AddDecayChannel("B^1A_1", decCh3);
|
||||
|
||||
//-------------------------------------------------------
|
||||
//-------------------Excitation of 3rd layer-----------------
|
||||
decCh1 = new G4MolecularDissociationChannel("Exc3rdLayer_AutoIoni_Channel");
|
||||
decCh2 = new G4MolecularDissociationChannel("Exc3rdLayer_Relax_Channel");
|
||||
|
||||
// Decay channel 1 : : OH + H_3Op + e_aq
|
||||
decCh1->AddProduct(OH);
|
||||
decCh1->AddProduct(H3O);
|
||||
decCh1->AddProduct(e_aq);
|
||||
|
||||
decCh1->SetProbability(0.5);
|
||||
decCh1->SetDisplacementType(G4DNAWaterDissociationDisplacer::AutoIonisation);
|
||||
|
||||
// Decay channel 2 : energy
|
||||
decCh2->SetEnergy(waterExcitation.ExcitationEnergy(2));
|
||||
decCh2->SetProbability(0.5);
|
||||
|
||||
// Electronic configuration of this decay
|
||||
*occ = *(water->GetGroundStateElectronOccupancy());
|
||||
occ->RemoveElectron(2, 1);
|
||||
occ->AddElectron(5, 1);
|
||||
|
||||
// Configure the water molecule
|
||||
water->NewConfigurationWithElectronOccupancy("Exci3rdLayer", *occ);
|
||||
water->AddDecayChannel("Exci3rdLayer", decCh1);
|
||||
water->AddDecayChannel("Exci3rdLayer", decCh2);
|
||||
|
||||
//-------------------------------------------------------
|
||||
//-------------------Excitation of 2nd layer-----------------
|
||||
decCh1 = new G4MolecularDissociationChannel("Exc2ndLayer_AutoIoni_Channel");
|
||||
decCh2 = new G4MolecularDissociationChannel("Exc2ndLayer_Relax_Channel");
|
||||
|
||||
// Decay Channel 1 : : OH + H_3Op + e_aq
|
||||
decCh1->AddProduct(OH);
|
||||
decCh1->AddProduct(H3O);
|
||||
decCh1->AddProduct(e_aq);
|
||||
|
||||
decCh1->SetProbability(0.5);
|
||||
decCh1->SetDisplacementType(G4DNAWaterDissociationDisplacer::AutoIonisation);
|
||||
|
||||
// Decay channel 2 : energy
|
||||
decCh2->SetEnergy(waterExcitation.ExcitationEnergy(3));
|
||||
decCh2->SetProbability(0.5);
|
||||
|
||||
*occ = *(water->GetGroundStateElectronOccupancy());
|
||||
occ->RemoveElectron(1, 1);
|
||||
occ->AddElectron(5, 1);
|
||||
|
||||
water->NewConfigurationWithElectronOccupancy("Exci2ndLayer", *occ);
|
||||
water->AddDecayChannel("Exci2ndLayer", decCh1);
|
||||
water->AddDecayChannel("Exci2ndLayer", decCh2);
|
||||
|
||||
//-------------------------------------------------------
|
||||
//-------------------Excitation of 1st layer-----------------
|
||||
decCh1 = new G4MolecularDissociationChannel("Exci1stLayer_AutoIoni_Channel");
|
||||
decCh2 = new G4MolecularDissociationChannel("Exci1stLayer_Relax_Channel");
|
||||
|
||||
*occ = *(water->GetGroundStateElectronOccupancy());
|
||||
occ->RemoveElectron(0, 1);
|
||||
occ->AddElectron(5, 1);
|
||||
|
||||
// Decay Channel 1 : : OH + H_3Op + e_aq
|
||||
decCh1->AddProduct(OH);
|
||||
decCh1->AddProduct(H3O);
|
||||
decCh1->AddProduct(e_aq);
|
||||
decCh1->SetProbability(0.5);
|
||||
decCh1->SetDisplacementType(G4DNAWaterDissociationDisplacer::AutoIonisation);
|
||||
|
||||
// Decay channel 2 : energy
|
||||
decCh2->SetEnergy(waterExcitation.ExcitationEnergy(4));
|
||||
decCh2->SetProbability(0.5);
|
||||
|
||||
water->NewConfigurationWithElectronOccupancy("Exci1stLayer", *occ);
|
||||
water->AddDecayChannel("Exci1stLayer", decCh1);
|
||||
water->AddDecayChannel("Exci1stLayer", decCh2);
|
||||
|
||||
/////////////////////////////////////////////////////////
|
||||
// IONISATION //
|
||||
/////////////////////////////////////////////////////////
|
||||
//--------------------------------------------------------
|
||||
//------------------- Ionisation -------------------------
|
||||
|
||||
decCh1 = new G4MolecularDissociationChannel("Ioni_Channel");
|
||||
|
||||
// Decay Channel 1 : : OH + H_3Op
|
||||
decCh1->AddProduct(H3O);
|
||||
decCh1->AddProduct(OH);
|
||||
decCh1->SetProbability(1);
|
||||
decCh1->SetDisplacementType(G4DNAWaterDissociationDisplacer::Ionisation_DissociationDecay);
|
||||
|
||||
*occ = *(water->GetGroundStateElectronOccupancy());
|
||||
occ->RemoveElectron(4, 1);
|
||||
// this is a ionized h2O with a hole in its last orbital
|
||||
water->NewConfigurationWithElectronOccupancy("Ioni5", *occ);
|
||||
water->AddDecayChannel("Ioni5", decCh1);
|
||||
|
||||
*occ = *(water->GetGroundStateElectronOccupancy());
|
||||
occ->RemoveElectron(3, 1);
|
||||
water->NewConfigurationWithElectronOccupancy("Ioni4", *occ);
|
||||
water->AddDecayChannel("Ioni4", new G4MolecularDissociationChannel(*decCh1));
|
||||
|
||||
*occ = *(water->GetGroundStateElectronOccupancy());
|
||||
occ->RemoveElectron(2, 1);
|
||||
water->NewConfigurationWithElectronOccupancy("Ioni3", *occ);
|
||||
water->AddDecayChannel("Ioni3", new G4MolecularDissociationChannel(*decCh1));
|
||||
|
||||
*occ = *(water->GetGroundStateElectronOccupancy());
|
||||
occ->RemoveElectron(1, 1);
|
||||
water->NewConfigurationWithElectronOccupancy("Ioni2", *occ);
|
||||
water->AddDecayChannel("Ioni2", new G4MolecularDissociationChannel(*decCh1));
|
||||
|
||||
*occ = *(water->GetGroundStateElectronOccupancy());
|
||||
occ->RemoveElectron(0, 1);
|
||||
water->NewConfigurationWithElectronOccupancy("Ioni1", *occ);
|
||||
water->AddDecayChannel("Ioni1", new G4MolecularDissociationChannel(*decCh1));
|
||||
|
||||
//////////////////////////////////////////////////////////
|
||||
// Dissociative Attachment //
|
||||
//////////////////////////////////////////////////////////
|
||||
decCh1 = new G4MolecularDissociationChannel("DissociAttachment");
|
||||
|
||||
// Decay 1 : 2OH + H_2
|
||||
decCh1->AddProduct(H2);
|
||||
decCh1->AddProduct(OHm);
|
||||
decCh1->AddProduct(OH);
|
||||
decCh1->SetProbability(1);
|
||||
decCh1->SetDisplacementType(G4DNAWaterDissociationDisplacer::DissociativeAttachment);
|
||||
|
||||
*occ = *(water->GetGroundStateElectronOccupancy());
|
||||
occ->AddElectron(5, 1); // H_2O^-
|
||||
water->NewConfigurationWithElectronOccupancy("DissociAttachment", *occ);
|
||||
water->AddDecayChannel("DissociAttachment", decCh1);
|
||||
|
||||
//////////////////////////////////////////////////////////
|
||||
// Electron-hole recombination //
|
||||
//////////////////////////////////////////////////////////
|
||||
decCh1 = new G4MolecularDissociationChannel("H2Ovib_DissociDecay1");
|
||||
decCh2 = new G4MolecularDissociationChannel("H2Ovib_DissociDecay2");
|
||||
decCh3 = new G4MolecularDissociationChannel("H2Ovib_DissociDecay3");
|
||||
|
||||
// Decay 1 : 2OH + H_2
|
||||
decCh1->AddProduct(H2);
|
||||
decCh1->AddProduct(OH);
|
||||
decCh1->AddProduct(OH);
|
||||
decCh1->SetProbability(0.15);
|
||||
decCh1->SetDisplacementType(G4DNAWaterDissociationDisplacer::B1A1_DissociationDecay);
|
||||
|
||||
// Decay 2 : OH + H
|
||||
decCh2->AddProduct(OH);
|
||||
decCh2->AddProduct(H);
|
||||
decCh2->SetProbability(0.55);
|
||||
decCh2->SetDisplacementType(G4DNAWaterDissociationDisplacer::A1B1_DissociationDecay);
|
||||
|
||||
// Decay 3 : relaxation
|
||||
decCh3->SetProbability(0.30);
|
||||
|
||||
const auto pH2Ovib = G4H2O::Definition()->NewConfiguration("H2Ovib");
|
||||
water->AddDecayChannel(pH2Ovib, decCh1);
|
||||
water->AddDecayChannel(pH2Ovib, decCh2);
|
||||
water->AddDecayChannel(pH2Ovib, decCh3);
|
||||
|
||||
delete occ;
|
||||
}
|
||||
+456
@@ -0,0 +1,456 @@
|
||||
//
|
||||
// ********************************************************************
|
||||
// * License and Disclaimer *
|
||||
// * *
|
||||
// * The Geant4 software is copyright of the Copyright Holders of *
|
||||
// * the Geant4 Collaboration. It is provided under the terms and *
|
||||
// * conditions of the Geant4 Software License, included in the file *
|
||||
// * LICENSE and available at http://cern.ch/geant4/license . These *
|
||||
// * include a list of copyright holders. *
|
||||
// * *
|
||||
// * Neither the authors of this software system, nor their employing *
|
||||
// * institutes,nor the agencies providing financial support for this *
|
||||
// * work make any representation or warranty, express or implied, *
|
||||
// * regarding this software system or assume any liability for its *
|
||||
// * use. Please see the license in the file LICENSE and URL above *
|
||||
// * for the full disclaimer and the limitation of liability. *
|
||||
// * *
|
||||
// * This code implementation is the result of the scientific and *
|
||||
// * technical work of the GEANT4 collaboration. *
|
||||
// * By using, copying, modifying or distributing the software (or *
|
||||
// * any work based on the software) you agree to acknowledge its *
|
||||
// * use in resulting scientific publications, and indicate your *
|
||||
// * acceptance of all terms of the Geant4 Software license. *
|
||||
// ********************************************************************
|
||||
//
|
||||
//
|
||||
// Geant4 class G4ChemDissociationChannels_option1
|
||||
//
|
||||
// H. Tran 16.12.2022
|
||||
//
|
||||
|
||||
#include "G4ChemDissociationChannels_option1.hh"
|
||||
|
||||
#include "G4DNAWaterDissociationDisplacer.hh"
|
||||
#include "G4DNAWaterExcitationStructure.hh"
|
||||
#include "G4Electron_aq.hh"
|
||||
#include "G4FakeMolecule.hh"
|
||||
#include "G4H2.hh"
|
||||
#include "G4H2O.hh"
|
||||
#include "G4H2O2.hh"
|
||||
#include "G4H3O.hh"
|
||||
#include "G4HO2.hh"
|
||||
#include "G4Hydrogen.hh"
|
||||
#include "G4MolecularConfiguration.hh"
|
||||
#include "G4MoleculeTable.hh"
|
||||
#include "G4O2.hh"
|
||||
#include "G4O3.hh"
|
||||
#include "G4OH.hh"
|
||||
#include "G4Oxygen.hh"
|
||||
#include "G4PhysicalConstants.hh"
|
||||
#include "G4SystemOfUnits.hh"
|
||||
#include "G4Scheduler.hh"
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
void G4ChemDissociationChannels_option1::ConstructMolecule()
|
||||
{
|
||||
//-----------------------------------
|
||||
// G4Electron::Definition(); // safety
|
||||
|
||||
//-----------------------------------
|
||||
// Create the definition
|
||||
|
||||
G4H2O::Definition();
|
||||
G4Hydrogen::Definition();
|
||||
G4H3O::Definition();
|
||||
G4OH::Definition();
|
||||
G4Electron_aq::Definition();
|
||||
G4H2O2::Definition();
|
||||
G4H2::Definition();
|
||||
|
||||
G4O2::Definition();
|
||||
G4HO2::Definition();
|
||||
G4Oxygen::Definition();
|
||||
G4O3::Definition();
|
||||
|
||||
//____________________________________________________________________________
|
||||
auto molTable = G4MoleculeTable::Instance();
|
||||
molTable->CreateConfiguration("H3Op", G4H3O::Definition());
|
||||
molTable->GetConfiguration("H3Op")->SetDiffusionCoefficient(9.46e-9
|
||||
* (m2 / s));
|
||||
molTable->GetConfiguration("H3Op")->SetVanDerVaalsRadius(0.25 * nm);
|
||||
|
||||
molTable->CreateConfiguration("OH", G4OH::Definition());
|
||||
molTable->GetConfiguration("OH")->SetDiffusionCoefficient(2.2e-9 * (m2 / s));
|
||||
molTable->GetConfiguration("OH")->SetVanDerVaalsRadius(0.22 * nm);
|
||||
|
||||
G4MolecularConfiguration* OHm =
|
||||
molTable->CreateConfiguration("OHm", // just a tag to store and retrieve
|
||||
// from G4MoleculeTable
|
||||
G4OH::Definition(),
|
||||
-1, // charge
|
||||
5.3e-9 * (m2 / s));
|
||||
OHm->SetMass(17.0079 * g / Avogadro * c_squared);
|
||||
OHm->SetVanDerVaalsRadius(0.33 * nm);
|
||||
|
||||
molTable->CreateConfiguration("e_aq", G4Electron_aq::Definition());
|
||||
molTable->GetConfiguration("e_aq")->SetVanDerVaalsRadius(0.50 * nm);
|
||||
|
||||
molTable->CreateConfiguration("H", G4Hydrogen::Definition());
|
||||
molTable->GetConfiguration("H")->SetVanDerVaalsRadius(0.19 * nm);
|
||||
|
||||
molTable->CreateConfiguration("H2", G4H2::Definition());
|
||||
molTable->GetConfiguration("H2")->SetDiffusionCoefficient(4.8e-9 * (m2 / s));
|
||||
molTable->GetConfiguration("H2")->SetVanDerVaalsRadius(0.14 * nm);
|
||||
|
||||
molTable->CreateConfiguration("H2O2", G4H2O2::Definition());
|
||||
molTable->GetConfiguration("H2O2")->SetDiffusionCoefficient(2.3e-9 * (m2 / s));
|
||||
molTable->GetConfiguration("H2O2")->SetVanDerVaalsRadius(0.21 * nm);
|
||||
|
||||
// molecules extension (RITRACKS)
|
||||
|
||||
molTable->CreateConfiguration("HO2", G4HO2::Definition());
|
||||
molTable->GetConfiguration("HO2")->SetVanDerVaalsRadius(0.21 * nm);
|
||||
|
||||
G4MolecularConfiguration* HO2m =
|
||||
molTable->CreateConfiguration("HO2m", // just a tag to store and retrieve
|
||||
// from G4MoleculeTable
|
||||
G4HO2::Definition(),
|
||||
-1, // charge
|
||||
1.4e-9 * (m2 / s));
|
||||
HO2m->SetMass(33.00396 * g / Avogadro * c_squared);
|
||||
HO2m->SetVanDerVaalsRadius(0.25 * nm);
|
||||
|
||||
molTable->CreateConfiguration("Oxy", G4Oxygen::Definition());
|
||||
molTable->GetConfiguration("Oxy")->SetVanDerVaalsRadius(0.20 * nm);
|
||||
|
||||
G4MolecularConfiguration* Om =
|
||||
molTable->CreateConfiguration("Om", // just a tag to store and retrieve from
|
||||
// G4MoleculeTable
|
||||
G4Oxygen::Definition(),
|
||||
-1, // charge
|
||||
2.0e-9 * (m2 / s));
|
||||
Om->SetMass(15.99829 * g / Avogadro * c_squared);
|
||||
Om->SetVanDerVaalsRadius(0.25 * nm);
|
||||
|
||||
molTable->CreateConfiguration("O2", G4O2::Definition());
|
||||
molTable->GetConfiguration("O2")->SetVanDerVaalsRadius(0.17 * nm);
|
||||
|
||||
G4MolecularConfiguration* O2m =
|
||||
molTable->CreateConfiguration("O2m", // just a tag to store and retrieve
|
||||
// from G4MoleculeTable
|
||||
G4O2::Definition(),
|
||||
-1, // charge
|
||||
1.75e-9 * (m2 / s));
|
||||
O2m->SetMass(31.99602 * g / Avogadro * c_squared);
|
||||
O2m->SetVanDerVaalsRadius(0.22 * nm);
|
||||
|
||||
molTable->CreateConfiguration("O3", G4O3::Definition());
|
||||
molTable->GetConfiguration("O3")->SetVanDerVaalsRadius(0.20 * nm);
|
||||
|
||||
G4MolecularConfiguration* O3m =
|
||||
molTable->CreateConfiguration("O3m", // just a tag to store and retrieve
|
||||
// from G4MoleculeTable
|
||||
G4O3::Definition(),
|
||||
-1, // charge
|
||||
2.0e-9 * (m2 / s));
|
||||
O3m->SetMass(47.99375 * g / Avogadro * c_squared);
|
||||
O3m->SetVanDerVaalsRadius(0.20 * nm);
|
||||
|
||||
molTable->CreateConfiguration("H2O(B)", // just a tag to store and retrieve
|
||||
// from G4MoleculeTable
|
||||
G4H2O::Definition(),
|
||||
0, // charge
|
||||
0 * (m2 / s));
|
||||
|
||||
molTable->CreateConfiguration("H3Op(B)", // just a tag to store and retrieve
|
||||
// from G4MoleculeTable
|
||||
G4H3O::Definition(),
|
||||
1, // charge
|
||||
0 * (m2 / s));
|
||||
|
||||
molTable->CreateConfiguration("OHm(B)", // just a tag to store and retrieve
|
||||
// from G4MoleculeTable
|
||||
G4OH::Definition(),
|
||||
-1, // charge
|
||||
0 * (m2 / s));
|
||||
|
||||
molTable->CreateConfiguration("NoneM", G4FakeMolecule::Definition());
|
||||
}
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
void G4ChemDissociationChannels_option1::ConstructDissociationChannels()
|
||||
{
|
||||
//-----------------------------------
|
||||
// Get the molecular configuration
|
||||
auto molTable = G4MoleculeTable::Instance();
|
||||
G4MolecularConfiguration* OH = molTable->GetConfiguration("OH");
|
||||
G4MolecularConfiguration* OHm = molTable->GetConfiguration("OHm");
|
||||
G4MolecularConfiguration* e_aq = molTable->GetConfiguration("e_aq");
|
||||
G4MolecularConfiguration* H2 = molTable->GetConfiguration("H2");
|
||||
G4MolecularConfiguration* H3O = molTable->GetConfiguration("H3Op");
|
||||
G4MolecularConfiguration* H = molTable->GetConfiguration("H");
|
||||
G4MolecularConfiguration* O = molTable->GetConfiguration("Oxy");
|
||||
|
||||
//-------------------------------------
|
||||
// Define the decay channels
|
||||
G4MoleculeDefinition* water = G4H2O::Definition();
|
||||
G4MolecularDissociationChannel* decCh1;
|
||||
G4MolecularDissociationChannel* decCh2;
|
||||
G4MolecularDissociationChannel* decCh3;
|
||||
G4MolecularDissociationChannel* decCh4;
|
||||
G4MolecularDissociationChannel* decCh5;
|
||||
|
||||
G4ElectronOccupancy* occ = new G4ElectronOccupancy(*(water->GetGroundStateElectronOccupancy()));
|
||||
|
||||
//////////////////////////////////////////////////////////
|
||||
// EXCITATIONS //
|
||||
//////////////////////////////////////////////////////////
|
||||
G4DNAWaterExcitationStructure waterExcitation;
|
||||
//--------------------------------------------------------
|
||||
//---------------Excitation on the fifth layer------------
|
||||
|
||||
decCh1 = new G4MolecularDissociationChannel("A^1B_1_Relax");
|
||||
decCh2 = new G4MolecularDissociationChannel("A^1B_1_DissociDecay");
|
||||
// Decay 1 : OH + H
|
||||
decCh1->SetEnergy(waterExcitation.ExcitationEnergy(0));
|
||||
decCh1->SetProbability(0.35);
|
||||
decCh1->SetDisplacementType(G4DNAWaterDissociationDisplacer::NoDisplacement);
|
||||
|
||||
decCh2->AddProduct(OH);
|
||||
decCh2->AddProduct(H);
|
||||
decCh2->SetProbability(0.65);
|
||||
decCh2->SetDisplacementType(G4DNAWaterDissociationDisplacer::A1B1_DissociationDecay);
|
||||
|
||||
occ->RemoveElectron(4, 1); // this is the transition form ground state to
|
||||
occ->AddElectron(5, 1); // the first unoccupied orbital: A^1B_1
|
||||
|
||||
water->NewConfigurationWithElectronOccupancy("A^1B_1", *occ);
|
||||
water->AddDecayChannel("A^1B_1", decCh1);
|
||||
water->AddDecayChannel("A^1B_1", decCh2);
|
||||
|
||||
//--------------------------------------------------------
|
||||
//---------------Excitation on the fourth layer-----------
|
||||
decCh1 = new G4MolecularDissociationChannel("B^1A_1_Relax_Channel");
|
||||
decCh2 = new G4MolecularDissociationChannel("B^1A_1_DissociDecay");
|
||||
decCh3 = new G4MolecularDissociationChannel("B^1A_1_AutoIoni_Channel");
|
||||
decCh4 = new G4MolecularDissociationChannel("A^1B_1_DissociDecay");
|
||||
decCh5 = new G4MolecularDissociationChannel("B^1A_1_DissociDecay2");
|
||||
|
||||
// Decay 1 : energy
|
||||
decCh1->SetEnergy(waterExcitation.ExcitationEnergy(1));
|
||||
decCh1->SetProbability(0.175);
|
||||
|
||||
// Decay 2 : 2OH + H_2
|
||||
decCh2->AddProduct(H2);
|
||||
decCh2->AddProduct(OH);
|
||||
decCh2->AddProduct(OH);
|
||||
decCh2->SetProbability(0.0325);
|
||||
decCh2->SetDisplacementType(G4DNAWaterDissociationDisplacer::B1A1_DissociationDecay);
|
||||
|
||||
// Decay 3 : OH + H_3Op + e_aq
|
||||
decCh3->AddProduct(OH);
|
||||
decCh3->AddProduct(H3O);
|
||||
decCh3->AddProduct(e_aq);
|
||||
decCh3->SetProbability(0.50);
|
||||
decCh3->SetDisplacementType(G4DNAWaterDissociationDisplacer::AutoIonisation);
|
||||
|
||||
// Decay 4 : H + OH
|
||||
decCh4->AddProduct(H);
|
||||
decCh4->AddProduct(OH);
|
||||
decCh4->SetProbability(0.2535);
|
||||
decCh4->SetDisplacementType(G4DNAWaterDissociationDisplacer::A1B1_DissociationDecay);
|
||||
|
||||
// Decay 5 : 2H + O
|
||||
decCh5->AddProduct(O);
|
||||
decCh5->AddProduct(H);
|
||||
decCh5->AddProduct(H);
|
||||
decCh5->SetProbability(0.039);
|
||||
decCh5->SetDisplacementType(G4DNAWaterDissociationDisplacer::B1A1_DissociationDecay2);
|
||||
|
||||
*occ = *(water->GetGroundStateElectronOccupancy());
|
||||
occ->RemoveElectron(3); // this is the transition form ground state to
|
||||
occ->AddElectron(5, 1); // the first unoccupied orbital: B^1A_1
|
||||
|
||||
water->NewConfigurationWithElectronOccupancy("B^1A_1", *occ);
|
||||
water->AddDecayChannel("B^1A_1", decCh1);
|
||||
water->AddDecayChannel("B^1A_1", decCh2);
|
||||
water->AddDecayChannel("B^1A_1", decCh3);
|
||||
water->AddDecayChannel("B^1A_1", decCh4);
|
||||
water->AddDecayChannel("B^1A_1", decCh5);
|
||||
|
||||
//-------------------------------------------------------
|
||||
//-------------------Excitation of 3rd layer-----------------
|
||||
decCh1 = new G4MolecularDissociationChannel("Exci3rdLayer_AutoIoni_Channel");
|
||||
decCh2 = new G4MolecularDissociationChannel("Exci3rdLayer_Relax_Channel");
|
||||
|
||||
// Decay channel 1 : : OH + H_3Op + e_aq
|
||||
decCh1->AddProduct(OH);
|
||||
decCh1->AddProduct(H3O);
|
||||
decCh1->AddProduct(e_aq);
|
||||
|
||||
decCh1->SetProbability(0.5);
|
||||
decCh1->SetDisplacementType(G4DNAWaterDissociationDisplacer::AutoIonisation);
|
||||
|
||||
// Decay channel 2 : energy
|
||||
decCh2->SetEnergy(waterExcitation.ExcitationEnergy(2));
|
||||
decCh2->SetProbability(0.5);
|
||||
|
||||
// Electronic configuration of this decay
|
||||
*occ = *(water->GetGroundStateElectronOccupancy());
|
||||
occ->RemoveElectron(2, 1);
|
||||
occ->AddElectron(5, 1);
|
||||
|
||||
// Configure the water molecule
|
||||
water->NewConfigurationWithElectronOccupancy("Exci3rdLayer", *occ);
|
||||
water->AddDecayChannel("Exci3rdLayer", decCh1);
|
||||
water->AddDecayChannel("Exci3rdLayer", decCh2);
|
||||
|
||||
//-------------------------------------------------------
|
||||
//-------------------Excitation of 2nd layer-----------------
|
||||
decCh1 = new G4MolecularDissociationChannel("Exci2ndLayer_AutoIoni_Channel");
|
||||
decCh2 = new G4MolecularDissociationChannel("Exci2ndLayer_Relax_Channel");
|
||||
|
||||
// Decay Channel 1 : : OH + H_3Op + e_aq
|
||||
decCh1->AddProduct(OH);
|
||||
decCh1->AddProduct(H3O);
|
||||
decCh1->AddProduct(e_aq);
|
||||
|
||||
decCh1->SetProbability(0.5);
|
||||
decCh1->SetDisplacementType(G4DNAWaterDissociationDisplacer::AutoIonisation);
|
||||
|
||||
// Decay channel 2 : energy
|
||||
decCh2->SetEnergy(waterExcitation.ExcitationEnergy(3));
|
||||
decCh2->SetProbability(0.5);
|
||||
|
||||
*occ = *(water->GetGroundStateElectronOccupancy());
|
||||
occ->RemoveElectron(1, 1);
|
||||
occ->AddElectron(5, 1);
|
||||
|
||||
water->NewConfigurationWithElectronOccupancy("Exci2ndLayer", *occ);
|
||||
water->AddDecayChannel("Exci2ndLayer", decCh1);
|
||||
water->AddDecayChannel("Exci2ndLayer", decCh2);
|
||||
|
||||
//-------------------------------------------------------
|
||||
//-------------------Excitation of 1st layer-----------------
|
||||
decCh1 = new G4MolecularDissociationChannel("Exci1stLayer_AutoIoni_Channel");
|
||||
decCh2 = new G4MolecularDissociationChannel("Exci1stLayer_Relax_Channel");
|
||||
|
||||
*occ = *(water->GetGroundStateElectronOccupancy());
|
||||
occ->RemoveElectron(0, 1);
|
||||
occ->AddElectron(5, 1);
|
||||
|
||||
// Decay Channel 1 : : OH + H_3Op + e_aq
|
||||
decCh1->AddProduct(OH);
|
||||
decCh1->AddProduct(H3O);
|
||||
decCh1->AddProduct(e_aq);
|
||||
decCh1->SetProbability(0.5);
|
||||
decCh1->SetDisplacementType(G4DNAWaterDissociationDisplacer::AutoIonisation);
|
||||
|
||||
// Decay channel 2 : energy
|
||||
decCh2->SetEnergy(waterExcitation.ExcitationEnergy(4));
|
||||
decCh2->SetProbability(0.5);
|
||||
|
||||
water->NewConfigurationWithElectronOccupancy("Exci1stLayer", *occ);
|
||||
water->AddDecayChannel("Exci1stLayer", decCh1);
|
||||
water->AddDecayChannel("Exci1stLayer", decCh2);
|
||||
|
||||
/////////////////////////////////////////////////////////
|
||||
// IONISATION //
|
||||
/////////////////////////////////////////////////////////
|
||||
//--------------------------------------------------------
|
||||
//------------------- Ionisation -------------------------
|
||||
|
||||
decCh1 = new G4MolecularDissociationChannel("Ioni_Channel");
|
||||
|
||||
// Decay Channel 1 : : OH + H_3Op
|
||||
decCh1->AddProduct(H3O);
|
||||
decCh1->AddProduct(OH);
|
||||
decCh1->SetProbability(1);
|
||||
decCh1->SetDisplacementType(G4DNAWaterDissociationDisplacer::Ionisation_DissociationDecay);
|
||||
|
||||
*occ = *(water->GetGroundStateElectronOccupancy());
|
||||
occ->RemoveElectron(4, 1);
|
||||
// this is a ionized h2O with a hole in its last orbital
|
||||
water->NewConfigurationWithElectronOccupancy("Ioni5", *occ);
|
||||
water->AddDecayChannel("Ioni5", decCh1);
|
||||
|
||||
*occ = *(water->GetGroundStateElectronOccupancy());
|
||||
occ->RemoveElectron(3, 1);
|
||||
water->NewConfigurationWithElectronOccupancy("Ioni4", *occ);
|
||||
water->AddDecayChannel("Ioni4", new G4MolecularDissociationChannel(*decCh1));
|
||||
|
||||
*occ = *(water->GetGroundStateElectronOccupancy());
|
||||
occ->RemoveElectron(2, 1);
|
||||
water->NewConfigurationWithElectronOccupancy("Ioni3", *occ);
|
||||
water->AddDecayChannel("Ioni3", new G4MolecularDissociationChannel(*decCh1));
|
||||
|
||||
*occ = *(water->GetGroundStateElectronOccupancy());
|
||||
occ->RemoveElectron(1, 1);
|
||||
water->NewConfigurationWithElectronOccupancy("Ioni2", *occ);
|
||||
water->AddDecayChannel("Ioni2", new G4MolecularDissociationChannel(*decCh1));
|
||||
|
||||
*occ = *(water->GetGroundStateElectronOccupancy());
|
||||
occ->RemoveElectron(0, 1);
|
||||
water->NewConfigurationWithElectronOccupancy("Ioni1", *occ);
|
||||
water->AddDecayChannel("Ioni1", new G4MolecularDissociationChannel(*decCh1));
|
||||
|
||||
//////////////////////////////////////////////////////////
|
||||
// Dissociative Attachment //
|
||||
//////////////////////////////////////////////////////////
|
||||
decCh1 = new G4MolecularDissociationChannel("DissociAttachment_ch1");
|
||||
|
||||
// Decay 1 : OHm + H
|
||||
decCh1->AddProduct(H2);
|
||||
decCh1->AddProduct(OHm);
|
||||
decCh1->AddProduct(OH);
|
||||
decCh1->SetProbability(1);
|
||||
decCh1->SetDisplacementType(G4DNAWaterDissociationDisplacer::DissociativeAttachment);
|
||||
|
||||
*occ = *(water->GetGroundStateElectronOccupancy());
|
||||
occ->AddElectron(5, 1); // H_2O^-
|
||||
|
||||
water->NewConfigurationWithElectronOccupancy("DissociAttachment_ch1", *occ);
|
||||
water->AddDecayChannel("DissociAttachment_ch1", decCh1);
|
||||
|
||||
//////////////////////////////////////////////////////////
|
||||
// Electron-hole recombination //
|
||||
//////////////////////////////////////////////////////////
|
||||
decCh1 = new G4MolecularDissociationChannel("H2Ovib_DissociDecay1");
|
||||
decCh2 = new G4MolecularDissociationChannel("H2Ovib_DissociDecay2");
|
||||
decCh3 = new G4MolecularDissociationChannel("H2Ovib_DissociDecay3");
|
||||
decCh4 = new G4MolecularDissociationChannel("H2Ovib_DissociDecay4");
|
||||
|
||||
// Decay 1 : 2OH + H_2
|
||||
decCh1->AddProduct(H2);
|
||||
decCh1->AddProduct(OH);
|
||||
decCh1->AddProduct(OH);
|
||||
decCh1->SetProbability(0.1365);
|
||||
decCh1->SetDisplacementType(G4DNAWaterDissociationDisplacer::B1A1_DissociationDecay);
|
||||
|
||||
// Decay 2 : OH + H
|
||||
decCh2->AddProduct(OH);
|
||||
decCh2->AddProduct(H);
|
||||
decCh2->SetProbability(0.3575);
|
||||
decCh2->SetDisplacementType(G4DNAWaterDissociationDisplacer::A1B1_DissociationDecay);
|
||||
|
||||
// Decay 3 : 2H + O(3p)
|
||||
decCh3->AddProduct(O);
|
||||
decCh3->AddProduct(H);
|
||||
decCh3->AddProduct(H);
|
||||
decCh3->SetProbability(0.156);
|
||||
decCh3->SetDisplacementType(G4DNAWaterDissociationDisplacer::B1A1_DissociationDecay2);
|
||||
|
||||
// Decay 4 : relaxation
|
||||
decCh4->SetProbability(0.35);
|
||||
|
||||
const auto pH2Ovib = G4H2O::Definition()->NewConfiguration("H2Ovib");
|
||||
assert(pH2Ovib != nullptr);
|
||||
|
||||
water->AddDecayChannel(pH2Ovib, decCh1);
|
||||
water->AddDecayChannel(pH2Ovib, decCh2);
|
||||
water->AddDecayChannel(pH2Ovib, decCh3);
|
||||
water->AddDecayChannel(pH2Ovib, decCh4);
|
||||
|
||||
delete occ;
|
||||
}
|
||||
@@ -64,7 +64,6 @@
|
||||
|
||||
#include "G4MuMultipleScattering.hh"
|
||||
#include "G4hMultipleScattering.hh"
|
||||
#include "G4CoulombScattering.hh"
|
||||
|
||||
#include "G4ParticleTable.hh"
|
||||
#include "G4Gamma.hh"
|
||||
@@ -150,19 +149,19 @@ void G4EmBuilder::ConstructIonEmPhysicsSS()
|
||||
|
||||
G4ParticleDefinition* part = G4Deuteron::Deuteron();
|
||||
ph->RegisterProcess(new G4hIonisation(), part);
|
||||
ph->RegisterProcess(new G4CoulombScattering(), part);
|
||||
ph->RegisterProcess(new G4CoulombScattering(false), part);
|
||||
|
||||
part = G4Triton::Triton();
|
||||
ph->RegisterProcess(new G4hIonisation(), part);
|
||||
ph->RegisterProcess(new G4CoulombScattering(), part);
|
||||
ph->RegisterProcess(new G4CoulombScattering(false), part);
|
||||
|
||||
part = G4Alpha::Alpha();
|
||||
ph->RegisterProcess(new G4ionIonisation(), part);
|
||||
ph->RegisterProcess(new G4CoulombScattering(), part);
|
||||
ph->RegisterProcess(new G4CoulombScattering(false), part);
|
||||
|
||||
part = G4He3::He3();
|
||||
ph->RegisterProcess(new G4ionIonisation(), part);
|
||||
ph->RegisterProcess(new G4CoulombScattering(), part);
|
||||
ph->RegisterProcess(new G4CoulombScattering(false), part);
|
||||
}
|
||||
|
||||
void G4EmBuilder::ConstructLightHadrons(G4ParticleDefinition* part1,
|
||||
@@ -219,14 +218,15 @@ void G4EmBuilder::ConstructLightHadronsSS(G4ParticleDefinition* part1,
|
||||
ph->RegisterProcess(brem, part1);
|
||||
ph->RegisterProcess(pair, part1);
|
||||
}
|
||||
ph->RegisterProcess(new G4CoulombScattering(), part1);
|
||||
auto ss = new G4CoulombScattering(false);
|
||||
ph->RegisterProcess(ss, part1);
|
||||
|
||||
ph->RegisterProcess(new G4hIonisation(), part2);
|
||||
if( isHEP ) {
|
||||
ph->RegisterProcess(brem, part2);
|
||||
ph->RegisterProcess(pair, part2);
|
||||
}
|
||||
ph->RegisterProcess(new G4CoulombScattering(), part2);
|
||||
ph->RegisterProcess(new G4CoulombScattering(false), part2);
|
||||
}
|
||||
|
||||
void G4EmBuilder::ConstructCharged(G4hMultipleScattering* hmsc,
|
||||
@@ -306,7 +306,7 @@ void G4EmBuilder::ConstructChargedSS(G4hMultipleScattering* hmsc)
|
||||
G4bool isHEP = ( param->MaxKinEnergy() > hpar->EnergyThresholdForHeavyHadrons() );
|
||||
|
||||
// muon multiple and single scattering
|
||||
G4CoulombScattering* muss = new G4CoulombScattering();
|
||||
G4CoulombScattering* muss = new G4CoulombScattering(false);
|
||||
|
||||
// Add standard EM Processes
|
||||
// mu+-
|
||||
|
||||
@@ -24,13 +24,12 @@
|
||||
// ********************************************************************
|
||||
//
|
||||
#include "G4EmDNAChemistry.hh"
|
||||
#include "G4ChemDissociationChannels.hh"
|
||||
|
||||
#include "G4PhysicalConstants.hh"
|
||||
#include "G4SystemOfUnits.hh"
|
||||
|
||||
#include "G4DNAWaterDissociationDisplacer.hh"
|
||||
#include "G4DNAChemistryManager.hh"
|
||||
#include "G4DNAWaterExcitationStructure.hh"
|
||||
#include "G4ProcessManager.hh"
|
||||
|
||||
#include "G4DNAGenericIonsManager.hh"
|
||||
@@ -39,15 +38,9 @@
|
||||
|
||||
#include "G4DNAElectronSolvation.hh"
|
||||
|
||||
#include "G4DNAAttachment.hh"
|
||||
#include "G4DNAVibExcitation.hh"
|
||||
#include "G4DNASancheExcitationModel.hh"
|
||||
|
||||
#include "G4DNAElastic.hh"
|
||||
#include "G4DNAChampionElasticModel.hh"
|
||||
#include "G4DNAScreenedRutherfordElasticModel.hh"
|
||||
#include "G4DNAUeharaScreenedRutherfordElasticModel.hh"
|
||||
|
||||
#include "G4DNAMolecularDissociation.hh"
|
||||
#include "G4DNABrownianTransportation.hh"
|
||||
#include "G4DNAMolecularReactionTable.hh"
|
||||
@@ -56,30 +49,16 @@
|
||||
#include "G4DNASmoluchowskiReactionModel.hh"
|
||||
|
||||
#include "G4DNAElectronHoleRecombination.hh"
|
||||
|
||||
// particles
|
||||
|
||||
#include "G4Electron.hh"
|
||||
#include "G4Proton.hh"
|
||||
#include "G4GenericIon.hh"
|
||||
|
||||
#include "G4MoleculeTable.hh"
|
||||
#include "G4H2O.hh"
|
||||
#include "G4H2.hh"
|
||||
#include "G4Hydrogen.hh"
|
||||
#include "G4OH.hh"
|
||||
#include "G4H3O.hh"
|
||||
#include "G4Electron_aq.hh"
|
||||
#include "G4H2O2.hh"
|
||||
|
||||
#include "G4PhysicsListHelper.hh"
|
||||
#include "G4BuilderType.hh"
|
||||
|
||||
/****/
|
||||
#include "G4DNAMoleculeEncounterStepper.hh"
|
||||
#include "G4ProcessVector.hh"
|
||||
#include "G4ProcessTable.hh"
|
||||
#include "G4DNASecondOrderReaction.hh"
|
||||
#include "G4MolecularConfiguration.hh"
|
||||
/****/
|
||||
|
||||
@@ -98,316 +77,16 @@ G4EmDNAChemistry::G4EmDNAChemistry() :
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
G4EmDNAChemistry::~G4EmDNAChemistry()
|
||||
{
|
||||
}
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
void G4EmDNAChemistry::ConstructMolecule()
|
||||
{
|
||||
//-----------------------------------
|
||||
G4Electron::Definition(); // safety
|
||||
|
||||
//-----------------------------------
|
||||
// Create the definition
|
||||
G4H2O::Definition();
|
||||
G4Hydrogen::Definition();
|
||||
G4H3O::Definition();
|
||||
G4OH::Definition();
|
||||
G4Electron_aq::Definition();
|
||||
G4H2O2::Definition();
|
||||
G4H2::Definition();
|
||||
|
||||
//____________________________________________________________________________
|
||||
|
||||
G4MoleculeTable::Instance()->CreateConfiguration("H3Op", G4H3O::Definition());
|
||||
G4MolecularConfiguration* OHm = G4MoleculeTable::Instance()->
|
||||
CreateConfiguration("OHm", // just a tag to store and retrieve from
|
||||
// G4MoleculeTable
|
||||
G4OH::Definition(),
|
||||
-1, // charge
|
||||
5.0e-9 * (m2 / s));
|
||||
OHm->SetMass(17.0079 * g / Avogadro * c_squared);
|
||||
G4MoleculeTable::Instance()->CreateConfiguration("OH", G4OH::Definition());
|
||||
G4MoleculeTable::Instance()->CreateConfiguration("e_aq",
|
||||
G4Electron_aq::Definition());
|
||||
G4MoleculeTable::Instance()->CreateConfiguration("H",
|
||||
G4Hydrogen::Definition());
|
||||
G4MoleculeTable::Instance()->CreateConfiguration("H2", G4H2::Definition());
|
||||
G4MoleculeTable::Instance()->CreateConfiguration("H2O2", G4H2O2::Definition());
|
||||
G4ChemDissociationChannels::ConstructMolecule();
|
||||
}
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
void G4EmDNAChemistry::ConstructDissociationChannels()
|
||||
{
|
||||
//-----------------------------------
|
||||
//Get the molecular configuration
|
||||
G4MolecularConfiguration* OH =
|
||||
G4MoleculeTable::Instance()->GetConfiguration("OH");
|
||||
G4MolecularConfiguration* OHm =
|
||||
G4MoleculeTable::Instance()->GetConfiguration("OHm");
|
||||
G4MolecularConfiguration* e_aq =
|
||||
G4MoleculeTable::Instance()->GetConfiguration("e_aq");
|
||||
G4MolecularConfiguration* H2 =
|
||||
G4MoleculeTable::Instance()->GetConfiguration("H2");
|
||||
G4MolecularConfiguration* H3O =
|
||||
G4MoleculeTable::Instance()->GetConfiguration("H3Op");
|
||||
G4MolecularConfiguration* H =
|
||||
G4MoleculeTable::Instance()->GetConfiguration("H");
|
||||
|
||||
//-------------------------------------
|
||||
//Define the decay channels
|
||||
G4MoleculeDefinition* water = G4H2O::Definition();
|
||||
G4MolecularDissociationChannel* decCh1;
|
||||
G4MolecularDissociationChannel* decCh2;
|
||||
|
||||
G4ElectronOccupancy* occ = new G4ElectronOccupancy(
|
||||
*(water->GetGroundStateElectronOccupancy()));
|
||||
|
||||
//////////////////////////////////////////////////////////
|
||||
// EXCITATIONS //
|
||||
//////////////////////////////////////////////////////////
|
||||
G4DNAWaterExcitationStructure waterExcitation;
|
||||
//--------------------------------------------------------
|
||||
//---------------Excitation on the fifth layer------------
|
||||
|
||||
decCh1 = new G4MolecularDissociationChannel("A^1B_1_Relaxation");
|
||||
decCh2 = new G4MolecularDissociationChannel("A^1B_1_DissociativeDecay");
|
||||
//Decay 1 : OH + H
|
||||
decCh1->SetEnergy(waterExcitation.ExcitationEnergy(0));
|
||||
decCh1->SetProbability(0.35);
|
||||
decCh1->SetDisplacementType(G4DNAWaterDissociationDisplacer::NoDisplacement);
|
||||
|
||||
decCh2->AddProduct(OH);
|
||||
decCh2->AddProduct(H);
|
||||
decCh2->SetProbability(0.65);
|
||||
decCh2->SetDisplacementType(
|
||||
G4DNAWaterDissociationDisplacer::A1B1_DissociationDecay);
|
||||
|
||||
// water->AddExcitedState("A^1B_1");
|
||||
occ->RemoveElectron(4, 1); // this is the transition form ground state to
|
||||
occ->AddElectron(5, 1); // the first unoccupied orbital: A^1B_1
|
||||
|
||||
water->NewConfigurationWithElectronOccupancy("A^1B_1", *occ);
|
||||
water->AddDecayChannel("A^1B_1", decCh1);
|
||||
water->AddDecayChannel("A^1B_1", decCh2);
|
||||
|
||||
//--------------------------------------------------------
|
||||
//---------------Excitation on the fourth layer-----------
|
||||
decCh1 = new G4MolecularDissociationChannel("B^1A_1_Relaxation_Channel");
|
||||
decCh2 = new G4MolecularDissociationChannel("B^1A_1_DissociativeDecay");
|
||||
G4MolecularDissociationChannel* decCh3 = new G4MolecularDissociationChannel(
|
||||
"B^1A_1_AutoIonisation_Channel");
|
||||
|
||||
//Decay 1 : energy
|
||||
decCh1->SetEnergy(waterExcitation.ExcitationEnergy(1));
|
||||
decCh1->SetProbability(0.3);
|
||||
|
||||
//Decay 2 : 2OH + H_2
|
||||
decCh2->AddProduct(H2);
|
||||
decCh2->AddProduct(OH);
|
||||
decCh2->AddProduct(OH);
|
||||
decCh2->SetProbability(0.15);
|
||||
decCh2->SetDisplacementType(
|
||||
G4DNAWaterDissociationDisplacer::B1A1_DissociationDecay);
|
||||
|
||||
//Decay 3 : OH + H_3Op + e_aq
|
||||
decCh3->AddProduct(OH);
|
||||
decCh3->AddProduct(H3O);
|
||||
decCh3->AddProduct(e_aq);
|
||||
decCh3->SetProbability(0.55);
|
||||
decCh3->SetDisplacementType(G4DNAWaterDissociationDisplacer::AutoIonisation);
|
||||
|
||||
*occ = *(water->GetGroundStateElectronOccupancy());
|
||||
occ->RemoveElectron(3); // this is the transition form ground state to
|
||||
occ->AddElectron(5, 1); // the first unoccupied orbital: B^1A_1
|
||||
|
||||
water->NewConfigurationWithElectronOccupancy("B^1A_1", *occ);
|
||||
water->AddDecayChannel("B^1A_1", decCh1);
|
||||
water->AddDecayChannel("B^1A_1", decCh2);
|
||||
water->AddDecayChannel("B^1A_1", decCh3);
|
||||
|
||||
//-------------------------------------------------------
|
||||
//-------------------Excitation of 3rd layer-----------------
|
||||
decCh1 = new G4MolecularDissociationChannel(
|
||||
"Excitation3rdLayer_AutoIonisation_Channel");
|
||||
decCh2 = new G4MolecularDissociationChannel(
|
||||
"Excitation3rdLayer_Relaxation_Channel");
|
||||
|
||||
//Decay channel 1 : : OH + H_3Op + e_aq
|
||||
decCh1->AddProduct(OH);
|
||||
decCh1->AddProduct(H3O);
|
||||
decCh1->AddProduct(e_aq);
|
||||
|
||||
decCh1->SetProbability(0.5);
|
||||
decCh1->SetDisplacementType(G4DNAWaterDissociationDisplacer::AutoIonisation);
|
||||
|
||||
//Decay channel 2 : energy
|
||||
decCh2->SetEnergy(waterExcitation.ExcitationEnergy(2));
|
||||
decCh2->SetProbability(0.5);
|
||||
|
||||
//Electronic configuration of this decay
|
||||
*occ = *(water->GetGroundStateElectronOccupancy());
|
||||
occ->RemoveElectron(2, 1);
|
||||
occ->AddElectron(5, 1);
|
||||
|
||||
//Configure the water molecule
|
||||
water->NewConfigurationWithElectronOccupancy("Excitation3rdLayer", *occ);
|
||||
water->AddDecayChannel("Excitation3rdLayer", decCh1);
|
||||
water->AddDecayChannel("Excitation3rdLayer", decCh2);
|
||||
|
||||
//-------------------------------------------------------
|
||||
//-------------------Excitation of 2nd layer-----------------
|
||||
decCh1 = new G4MolecularDissociationChannel(
|
||||
"Excitation2ndLayer_AutoIonisation_Channel");
|
||||
decCh2 = new G4MolecularDissociationChannel(
|
||||
"Excitation2ndLayer_Relaxation_Channel");
|
||||
|
||||
//Decay Channel 1 : : OH + H_3Op + e_aq
|
||||
decCh1->AddProduct(OH);
|
||||
decCh1->AddProduct(H3O);
|
||||
decCh1->AddProduct(e_aq);
|
||||
|
||||
decCh1->SetProbability(0.5);
|
||||
decCh1->SetDisplacementType(G4DNAWaterDissociationDisplacer::AutoIonisation);
|
||||
|
||||
//Decay channel 2 : energy
|
||||
decCh2->SetEnergy(waterExcitation.ExcitationEnergy(3));
|
||||
decCh2->SetProbability(0.5);
|
||||
|
||||
*occ = *(water->GetGroundStateElectronOccupancy());
|
||||
occ->RemoveElectron(1, 1);
|
||||
occ->AddElectron(5, 1);
|
||||
|
||||
water->NewConfigurationWithElectronOccupancy("Excitation2ndLayer", *occ);
|
||||
water->AddDecayChannel("Excitation2ndLayer", decCh1);
|
||||
water->AddDecayChannel("Excitation2ndLayer", decCh2);
|
||||
|
||||
//-------------------------------------------------------
|
||||
//-------------------Excitation of 1st layer-----------------
|
||||
decCh1 = new G4MolecularDissociationChannel(
|
||||
"Excitation1stLayer_AutoIonisation_Channel");
|
||||
decCh2 = new G4MolecularDissociationChannel(
|
||||
"Excitation1stLayer_Relaxation_Channel");
|
||||
|
||||
*occ = *(water->GetGroundStateElectronOccupancy());
|
||||
occ->RemoveElectron(0, 1);
|
||||
occ->AddElectron(5, 1);
|
||||
|
||||
//Decay Channel 1 : : OH + H_3Op + e_aq
|
||||
decCh1->AddProduct(OH);
|
||||
decCh1->AddProduct(H3O);
|
||||
decCh1->AddProduct(e_aq);
|
||||
decCh1->SetProbability(0.5);
|
||||
decCh1->SetDisplacementType(G4DNAWaterDissociationDisplacer::AutoIonisation);
|
||||
|
||||
//Decay channel 2 : energy
|
||||
decCh2->SetEnergy(waterExcitation.ExcitationEnergy(4));
|
||||
decCh2->SetProbability(0.5);
|
||||
|
||||
water->NewConfigurationWithElectronOccupancy("Excitation1stLayer", *occ);
|
||||
water->AddDecayChannel("Excitation1stLayer", decCh1);
|
||||
water->AddDecayChannel("Excitation1stLayer", decCh2);
|
||||
|
||||
/////////////////////////////////////////////////////////
|
||||
// IONISATION //
|
||||
/////////////////////////////////////////////////////////
|
||||
//--------------------------------------------------------
|
||||
//------------------- Ionisation -------------------------
|
||||
|
||||
decCh1 = new G4MolecularDissociationChannel("Ionisation_Channel");
|
||||
|
||||
//Decay Channel 1 : : OH + H_3Op
|
||||
decCh1->AddProduct(H3O);
|
||||
decCh1->AddProduct(OH);
|
||||
decCh1->SetProbability(1);
|
||||
decCh1->SetDisplacementType(
|
||||
G4DNAWaterDissociationDisplacer::Ionisation_DissociationDecay);
|
||||
|
||||
*occ = *(water->GetGroundStateElectronOccupancy());
|
||||
occ->RemoveElectron(4, 1);
|
||||
// this is a ionized h2O with a hole in its last orbital
|
||||
water->NewConfigurationWithElectronOccupancy("Ionisation5", *occ);
|
||||
water->AddDecayChannel("Ionisation5",
|
||||
decCh1);
|
||||
|
||||
*occ = *(water->GetGroundStateElectronOccupancy());
|
||||
occ->RemoveElectron(3, 1);
|
||||
water->NewConfigurationWithElectronOccupancy("Ionisation4", *occ);
|
||||
water->AddDecayChannel("Ionisation4",
|
||||
new G4MolecularDissociationChannel(*decCh1));
|
||||
|
||||
*occ = *(water->GetGroundStateElectronOccupancy());
|
||||
occ->RemoveElectron(2, 1);
|
||||
water->NewConfigurationWithElectronOccupancy("Ionisation3", *occ);
|
||||
water->AddDecayChannel("Ionisation3",
|
||||
new G4MolecularDissociationChannel(*decCh1));
|
||||
|
||||
*occ = *(water->GetGroundStateElectronOccupancy());
|
||||
occ->RemoveElectron(1, 1);
|
||||
water->NewConfigurationWithElectronOccupancy("Ionisation2", *occ);
|
||||
water->AddDecayChannel("Ionisation2",
|
||||
new G4MolecularDissociationChannel(*decCh1));
|
||||
|
||||
*occ = *(water->GetGroundStateElectronOccupancy());
|
||||
occ->RemoveElectron(0, 1);
|
||||
water->NewConfigurationWithElectronOccupancy("Ionisation1", *occ);
|
||||
water->AddDecayChannel("Ionisation1",
|
||||
new G4MolecularDissociationChannel(*decCh1));
|
||||
|
||||
//////////////////////////////////////////////////////////
|
||||
// Dissociative Attachment //
|
||||
//////////////////////////////////////////////////////////
|
||||
decCh1 = new G4MolecularDissociationChannel("DissociativeAttachment");
|
||||
|
||||
//Decay 1 : 2OH + H_2
|
||||
decCh1->AddProduct(H2);
|
||||
decCh1->AddProduct(OHm);
|
||||
decCh1->AddProduct(OH);
|
||||
decCh1->SetProbability(1);
|
||||
decCh1->SetDisplacementType(G4DNAWaterDissociationDisplacer::
|
||||
DissociativeAttachment);
|
||||
|
||||
*occ = *(water->GetGroundStateElectronOccupancy());
|
||||
occ->AddElectron(5, 1); // H_2O^-
|
||||
water->NewConfigurationWithElectronOccupancy("DissociativeAttachment", *occ);
|
||||
water->AddDecayChannel("DissociativeAttachment", decCh1);
|
||||
|
||||
//////////////////////////////////////////////////////////
|
||||
// Electron-hole recombination //
|
||||
//////////////////////////////////////////////////////////
|
||||
decCh1 = new G4MolecularDissociationChannel("H2Ovib_DissociationDecay1");
|
||||
decCh2 = new G4MolecularDissociationChannel("H2Ovib_DissociationDecay2");
|
||||
decCh3 = new G4MolecularDissociationChannel("H2Ovib_DissociationDecay3");
|
||||
|
||||
//Decay 1 : 2OH + H_2
|
||||
decCh1->AddProduct(H2);
|
||||
decCh1->AddProduct(OH);
|
||||
decCh1->AddProduct(OH);
|
||||
decCh1->SetProbability(0.15);
|
||||
decCh1->SetDisplacementType(G4DNAWaterDissociationDisplacer::
|
||||
B1A1_DissociationDecay);
|
||||
|
||||
//Decay 2 : OH + H
|
||||
decCh2->AddProduct(OH);
|
||||
decCh2->AddProduct(H);
|
||||
decCh2->SetProbability(0.55);
|
||||
decCh2->SetDisplacementType(G4DNAWaterDissociationDisplacer::
|
||||
A1B1_DissociationDecay);
|
||||
|
||||
//Decay 3 : relaxation
|
||||
decCh3->SetProbability(0.30);
|
||||
|
||||
const auto pH2Ovib = G4H2O::Definition()->NewConfiguration("H2Ovib");
|
||||
assert(pH2Ovib != nullptr);
|
||||
|
||||
water->AddDecayChannel(pH2Ovib, decCh1);
|
||||
water->AddDecayChannel(pH2Ovib, decCh2);
|
||||
water->AddDecayChannel(pH2Ovib, decCh3);
|
||||
|
||||
delete occ;
|
||||
G4ChemDissociationChannels::ConstructDissociationChannels();
|
||||
}
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
@@ -24,13 +24,9 @@
|
||||
// ********************************************************************
|
||||
//
|
||||
#include "G4EmDNAChemistry_option1.hh"
|
||||
|
||||
#include "G4PhysicalConstants.hh"
|
||||
#include "G4SystemOfUnits.hh"
|
||||
|
||||
#include "G4DNAWaterDissociationDisplacer.hh"
|
||||
#include "G4DNAChemistryManager.hh"
|
||||
#include "G4DNAWaterExcitationStructure.hh"
|
||||
#include "G4ProcessManager.hh"
|
||||
|
||||
#include "G4DNAGenericIonsManager.hh"
|
||||
@@ -39,47 +35,25 @@
|
||||
|
||||
#include "G4DNAElectronSolvation.hh"
|
||||
|
||||
#include "G4DNAAttachment.hh"
|
||||
#include "G4DNAVibExcitation.hh"
|
||||
#include "G4DNASancheExcitationModel.hh"
|
||||
|
||||
#include "G4DNAElastic.hh"
|
||||
#include "G4DNAChampionElasticModel.hh"
|
||||
#include "G4DNAScreenedRutherfordElasticModel.hh"
|
||||
#include "G4DNAUeharaScreenedRutherfordElasticModel.hh"
|
||||
|
||||
#include "G4DNAMolecularDissociation.hh"
|
||||
#include "G4DNABrownianTransportation.hh"
|
||||
#include "G4DNAMolecularReactionTable.hh"
|
||||
#include "G4DNAMolecularStepByStepModel.hh"
|
||||
#include "G4VDNAReactionModel.hh"
|
||||
#include "G4DNASmoluchowskiReactionModel.hh"
|
||||
|
||||
#include "G4DNAElectronHoleRecombination.hh"
|
||||
|
||||
#include "G4ChemDissociationChannels.hh"
|
||||
// particles
|
||||
|
||||
#include "G4Electron.hh"
|
||||
#include "G4Proton.hh"
|
||||
#include "G4GenericIon.hh"
|
||||
|
||||
#include "G4MoleculeTable.hh"
|
||||
#include "G4H2O.hh"
|
||||
#include "G4H2.hh"
|
||||
#include "G4Hydrogen.hh"
|
||||
#include "G4OH.hh"
|
||||
#include "G4H3O.hh"
|
||||
#include "G4Electron_aq.hh"
|
||||
#include "G4H2O2.hh"
|
||||
|
||||
#include "G4PhysicsListHelper.hh"
|
||||
#include "G4BuilderType.hh"
|
||||
|
||||
/****/
|
||||
#include "G4DNAMoleculeEncounterStepper.hh"
|
||||
#include "G4ProcessVector.hh"
|
||||
#include "G4ProcessTable.hh"
|
||||
#include "G4DNASecondOrderReaction.hh"
|
||||
#include "G4MolecularConfiguration.hh"
|
||||
/****/
|
||||
|
||||
@@ -88,8 +62,6 @@
|
||||
|
||||
G4_DECLARE_PHYSCONSTR_FACTORY(G4EmDNAChemistry_option1);
|
||||
|
||||
#include "G4Threading.hh"
|
||||
|
||||
G4EmDNAChemistry_option1::G4EmDNAChemistry_option1() :
|
||||
G4VUserChemistryList(true)
|
||||
{
|
||||
@@ -98,324 +70,29 @@ G4EmDNAChemistry_option1::G4EmDNAChemistry_option1() :
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
G4EmDNAChemistry_option1::~G4EmDNAChemistry_option1()
|
||||
{
|
||||
}
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
void G4EmDNAChemistry_option1::ConstructMolecule()
|
||||
{
|
||||
//-----------------------------------
|
||||
G4Electron::Definition(); // safety
|
||||
|
||||
//-----------------------------------
|
||||
// Create the definition
|
||||
G4H2O::Definition();
|
||||
G4Hydrogen::Definition();
|
||||
G4H3O::Definition();
|
||||
G4OH::Definition();
|
||||
G4Electron_aq::Definition();
|
||||
G4H2O2::Definition();
|
||||
G4H2::Definition();
|
||||
G4ChemDissociationChannels::ConstructMolecule();
|
||||
|
||||
//____________________________________________________________________________
|
||||
|
||||
G4MoleculeTable::Instance()->CreateConfiguration("H3Op", G4H3O::Definition());
|
||||
G4MoleculeTable::Instance()->GetConfiguration("H3Op")->SetDiffusionCoefficient(
|
||||
9.46e-9 * (m2/s));
|
||||
G4MolecularConfiguration* OHm = G4MoleculeTable::Instance()->
|
||||
CreateConfiguration("OHm", // just a tag to store and retrieve from
|
||||
// G4MoleculeTable
|
||||
G4OH::Definition(),
|
||||
-1, // charge
|
||||
5.3e-9 * (m2 / s));
|
||||
OHm->SetMass(17.0079 * g / Avogadro * c_squared);
|
||||
G4MoleculeTable::Instance()->CreateConfiguration("OH", G4OH::Definition());
|
||||
G4MoleculeTable::Instance()->GetConfiguration("OHm")->SetDiffusionCoefficient(
|
||||
5.3e-9 * (m2 / s));
|
||||
G4MoleculeTable::Instance()->GetConfiguration("OH")->SetDiffusionCoefficient(
|
||||
2.2e-9 * (m2/s));
|
||||
G4MoleculeTable::Instance()->CreateConfiguration("e_aq",
|
||||
G4Electron_aq::Definition());
|
||||
G4MoleculeTable::Instance()->CreateConfiguration("H",
|
||||
G4Hydrogen::Definition());
|
||||
G4MoleculeTable::Instance()->CreateConfiguration("H2", G4H2::Definition());
|
||||
2.2e-9 * (m2/s));
|
||||
G4MoleculeTable::Instance()->GetConfiguration("H2")->SetDiffusionCoefficient(
|
||||
4.8e-9 * (m2/s));
|
||||
G4MoleculeTable::Instance()->CreateConfiguration("H2O2", G4H2O2::Definition());
|
||||
4.8e-9 * (m2/s));
|
||||
G4MoleculeTable::Instance()->GetConfiguration("H2O2")->SetDiffusionCoefficient(
|
||||
2.3e-9 * (m2/s));
|
||||
2.3e-9 * (m2/s));
|
||||
}
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
void G4EmDNAChemistry_option1::ConstructDissociationChannels()
|
||||
{
|
||||
//-----------------------------------
|
||||
//Get the molecular configuration
|
||||
G4MolecularConfiguration* OH =
|
||||
G4MoleculeTable::Instance()->GetConfiguration("OH");
|
||||
G4MolecularConfiguration* OHm =
|
||||
G4MoleculeTable::Instance()->GetConfiguration("OHm");
|
||||
G4MolecularConfiguration* e_aq =
|
||||
G4MoleculeTable::Instance()->GetConfiguration("e_aq");
|
||||
G4MolecularConfiguration* H2 =
|
||||
G4MoleculeTable::Instance()->GetConfiguration("H2");
|
||||
G4MolecularConfiguration* H3O =
|
||||
G4MoleculeTable::Instance()->GetConfiguration("H3Op");
|
||||
G4MolecularConfiguration* H =
|
||||
G4MoleculeTable::Instance()->GetConfiguration("H");
|
||||
|
||||
//-------------------------------------
|
||||
//Define the decay channels
|
||||
G4MoleculeDefinition* water = G4H2O::Definition();
|
||||
G4MolecularDissociationChannel* decCh1;
|
||||
G4MolecularDissociationChannel* decCh2;
|
||||
|
||||
G4ElectronOccupancy* occ = new G4ElectronOccupancy(
|
||||
*(water->GetGroundStateElectronOccupancy()));
|
||||
|
||||
//////////////////////////////////////////////////////////
|
||||
// EXCITATIONS //
|
||||
//////////////////////////////////////////////////////////
|
||||
G4DNAWaterExcitationStructure waterExcitation;
|
||||
//--------------------------------------------------------
|
||||
//---------------Excitation on the fifth layer------------
|
||||
|
||||
decCh1 = new G4MolecularDissociationChannel("A^1B_1_Relaxation");
|
||||
decCh2 = new G4MolecularDissociationChannel("A^1B_1_DissociativeDecay");
|
||||
//Decay 1 : OH + H
|
||||
decCh1->SetEnergy(waterExcitation.ExcitationEnergy(0));
|
||||
decCh1->SetProbability(0.35);
|
||||
decCh1->SetDisplacementType(G4DNAWaterDissociationDisplacer::NoDisplacement);
|
||||
|
||||
decCh2->AddProduct(OH);
|
||||
decCh2->AddProduct(H);
|
||||
decCh2->SetProbability(0.65);
|
||||
decCh2->SetDisplacementType(
|
||||
G4DNAWaterDissociationDisplacer::A1B1_DissociationDecay);
|
||||
|
||||
// water->AddExcitedState("A^1B_1");
|
||||
occ->RemoveElectron(4, 1); // this is the transition form ground state to
|
||||
occ->AddElectron(5, 1); // the first unoccupied orbital: A^1B_1
|
||||
|
||||
water->NewConfigurationWithElectronOccupancy("A^1B_1", *occ);
|
||||
water->AddDecayChannel("A^1B_1", decCh1);
|
||||
water->AddDecayChannel("A^1B_1", decCh2);
|
||||
|
||||
//--------------------------------------------------------
|
||||
//---------------Excitation on the fourth layer-----------
|
||||
decCh1 = new G4MolecularDissociationChannel("B^1A_1_Relaxation_Channel");
|
||||
decCh2 = new G4MolecularDissociationChannel("B^1A_1_DissociativeDecay");
|
||||
G4MolecularDissociationChannel* decCh3 = new G4MolecularDissociationChannel(
|
||||
"B^1A_1_AutoIonisation_Channel");
|
||||
|
||||
//Decay 1 : energy
|
||||
decCh1->SetEnergy(waterExcitation.ExcitationEnergy(1));
|
||||
decCh1->SetProbability(0.3);
|
||||
|
||||
//Decay 2 : 2OH + H_2
|
||||
decCh2->AddProduct(H2);
|
||||
decCh2->AddProduct(OH);
|
||||
decCh2->AddProduct(OH);
|
||||
decCh2->SetProbability(0.15);
|
||||
decCh2->SetDisplacementType(
|
||||
G4DNAWaterDissociationDisplacer::B1A1_DissociationDecay);
|
||||
|
||||
//Decay 3 : OH + H_3Op + e_aq
|
||||
decCh3->AddProduct(OH);
|
||||
decCh3->AddProduct(H3O);
|
||||
decCh3->AddProduct(e_aq);
|
||||
decCh3->SetProbability(0.55);
|
||||
decCh3->SetDisplacementType(G4DNAWaterDissociationDisplacer::AutoIonisation);
|
||||
|
||||
*occ = *(water->GetGroundStateElectronOccupancy());
|
||||
occ->RemoveElectron(3); // this is the transition form ground state to
|
||||
occ->AddElectron(5, 1); // the first unoccupied orbital: B^1A_1
|
||||
|
||||
water->NewConfigurationWithElectronOccupancy("B^1A_1", *occ);
|
||||
water->AddDecayChannel("B^1A_1", decCh1);
|
||||
water->AddDecayChannel("B^1A_1", decCh2);
|
||||
water->AddDecayChannel("B^1A_1", decCh3);
|
||||
|
||||
//-------------------------------------------------------
|
||||
//-------------------Excitation of 3rd layer-----------------
|
||||
decCh1 = new G4MolecularDissociationChannel(
|
||||
"Excitation3rdLayer_AutoIonisation_Channel");
|
||||
decCh2 = new G4MolecularDissociationChannel(
|
||||
"Excitation3rdLayer_Relaxation_Channel");
|
||||
|
||||
//Decay channel 1 : : OH + H_3Op + e_aq
|
||||
decCh1->AddProduct(OH);
|
||||
decCh1->AddProduct(H3O);
|
||||
decCh1->AddProduct(e_aq);
|
||||
|
||||
decCh1->SetProbability(0.5);
|
||||
decCh1->SetDisplacementType(G4DNAWaterDissociationDisplacer::AutoIonisation);
|
||||
|
||||
//Decay channel 2 : energy
|
||||
decCh2->SetEnergy(waterExcitation.ExcitationEnergy(2));
|
||||
decCh2->SetProbability(0.5);
|
||||
|
||||
//Electronic configuration of this decay
|
||||
*occ = *(water->GetGroundStateElectronOccupancy());
|
||||
occ->RemoveElectron(2, 1);
|
||||
occ->AddElectron(5, 1);
|
||||
|
||||
//Configure the water molecule
|
||||
water->NewConfigurationWithElectronOccupancy("Excitation3rdLayer", *occ);
|
||||
water->AddDecayChannel("Excitation3rdLayer", decCh1);
|
||||
water->AddDecayChannel("Excitation3rdLayer", decCh2);
|
||||
|
||||
//-------------------------------------------------------
|
||||
//-------------------Excitation of 2nd layer-----------------
|
||||
decCh1 = new G4MolecularDissociationChannel(
|
||||
"Excitation2ndLayer_AutoIonisation_Channel");
|
||||
decCh2 = new G4MolecularDissociationChannel(
|
||||
"Excitation2ndLayer_Relaxation_Channel");
|
||||
|
||||
//Decay Channel 1 : : OH + H_3Op + e_aq
|
||||
decCh1->AddProduct(OH);
|
||||
decCh1->AddProduct(H3O);
|
||||
decCh1->AddProduct(e_aq);
|
||||
|
||||
decCh1->SetProbability(0.5);
|
||||
decCh1->SetDisplacementType(G4DNAWaterDissociationDisplacer::AutoIonisation);
|
||||
|
||||
//Decay channel 2 : energy
|
||||
decCh2->SetEnergy(waterExcitation.ExcitationEnergy(3));
|
||||
decCh2->SetProbability(0.5);
|
||||
|
||||
*occ = *(water->GetGroundStateElectronOccupancy());
|
||||
occ->RemoveElectron(1, 1);
|
||||
occ->AddElectron(5, 1);
|
||||
|
||||
water->NewConfigurationWithElectronOccupancy("Excitation2ndLayer", *occ);
|
||||
water->AddDecayChannel("Excitation2ndLayer", decCh1);
|
||||
water->AddDecayChannel("Excitation2ndLayer", decCh2);
|
||||
|
||||
//-------------------------------------------------------
|
||||
//-------------------Excitation of 1st layer-----------------
|
||||
decCh1 = new G4MolecularDissociationChannel(
|
||||
"Excitation1stLayer_AutoIonisation_Channel");
|
||||
decCh2 = new G4MolecularDissociationChannel(
|
||||
"Excitation1stLayer_Relaxation_Channel");
|
||||
|
||||
*occ = *(water->GetGroundStateElectronOccupancy());
|
||||
occ->RemoveElectron(0, 1);
|
||||
occ->AddElectron(5, 1);
|
||||
|
||||
//Decay Channel 1 : : OH + H_3Op + e_aq
|
||||
decCh1->AddProduct(OH);
|
||||
decCh1->AddProduct(H3O);
|
||||
decCh1->AddProduct(e_aq);
|
||||
decCh1->SetProbability(0.5);
|
||||
decCh1->SetDisplacementType(G4DNAWaterDissociationDisplacer::AutoIonisation);
|
||||
|
||||
//Decay channel 2 : energy
|
||||
decCh2->SetEnergy(waterExcitation.ExcitationEnergy(4));
|
||||
decCh2->SetProbability(0.5);
|
||||
|
||||
water->NewConfigurationWithElectronOccupancy("Excitation1stLayer", *occ);
|
||||
water->AddDecayChannel("Excitation1stLayer", decCh1);
|
||||
water->AddDecayChannel("Excitation1stLayer", decCh2);
|
||||
|
||||
/////////////////////////////////////////////////////////
|
||||
// IONISATION //
|
||||
/////////////////////////////////////////////////////////
|
||||
//--------------------------------------------------------
|
||||
//------------------- Ionisation -------------------------
|
||||
|
||||
decCh1 = new G4MolecularDissociationChannel("Ionisation_Channel");
|
||||
|
||||
//Decay Channel 1 : : OH + H_3Op
|
||||
decCh1->AddProduct(H3O);
|
||||
decCh1->AddProduct(OH);
|
||||
decCh1->SetProbability(1);
|
||||
decCh1->SetDisplacementType(
|
||||
G4DNAWaterDissociationDisplacer::Ionisation_DissociationDecay);
|
||||
|
||||
*occ = *(water->GetGroundStateElectronOccupancy());
|
||||
occ->RemoveElectron(4, 1);
|
||||
// this is a ionized h2O with a hole in its last orbital
|
||||
water->NewConfigurationWithElectronOccupancy("Ionisation5", *occ);
|
||||
water->AddDecayChannel("Ionisation5",
|
||||
decCh1);
|
||||
|
||||
*occ = *(water->GetGroundStateElectronOccupancy());
|
||||
occ->RemoveElectron(3, 1);
|
||||
water->NewConfigurationWithElectronOccupancy("Ionisation4", *occ);
|
||||
water->AddDecayChannel("Ionisation4",
|
||||
new G4MolecularDissociationChannel(*decCh1));
|
||||
|
||||
*occ = *(water->GetGroundStateElectronOccupancy());
|
||||
occ->RemoveElectron(2, 1);
|
||||
water->NewConfigurationWithElectronOccupancy("Ionisation3", *occ);
|
||||
water->AddDecayChannel("Ionisation3",
|
||||
new G4MolecularDissociationChannel(*decCh1));
|
||||
|
||||
*occ = *(water->GetGroundStateElectronOccupancy());
|
||||
occ->RemoveElectron(1, 1);
|
||||
water->NewConfigurationWithElectronOccupancy("Ionisation2", *occ);
|
||||
water->AddDecayChannel("Ionisation2",
|
||||
new G4MolecularDissociationChannel(*decCh1));
|
||||
|
||||
*occ = *(water->GetGroundStateElectronOccupancy());
|
||||
occ->RemoveElectron(0, 1);
|
||||
water->NewConfigurationWithElectronOccupancy("Ionisation1", *occ);
|
||||
water->AddDecayChannel("Ionisation1",
|
||||
new G4MolecularDissociationChannel(*decCh1));
|
||||
|
||||
//////////////////////////////////////////////////////////
|
||||
// Dissociative Attachment //
|
||||
//////////////////////////////////////////////////////////
|
||||
decCh1 = new G4MolecularDissociationChannel("DissociativeAttachment");
|
||||
|
||||
//Decay 1 : 2OH + H_2
|
||||
decCh1->AddProduct(H2);
|
||||
decCh1->AddProduct(OHm);
|
||||
decCh1->AddProduct(OH);
|
||||
decCh1->SetProbability(1);
|
||||
decCh1->SetDisplacementType(G4DNAWaterDissociationDisplacer::
|
||||
DissociativeAttachment);
|
||||
|
||||
*occ = *(water->GetGroundStateElectronOccupancy());
|
||||
occ->AddElectron(5, 1); // H_2O^-
|
||||
water->NewConfigurationWithElectronOccupancy("DissociativeAttachment", *occ);
|
||||
water->AddDecayChannel("DissociativeAttachment", decCh1);
|
||||
|
||||
//////////////////////////////////////////////////////////
|
||||
// Electron-hole recombination //
|
||||
//////////////////////////////////////////////////////////
|
||||
decCh1 = new G4MolecularDissociationChannel("H2Ovib_DissociationDecay1");
|
||||
decCh2 = new G4MolecularDissociationChannel("H2Ovib_DissociationDecay2");
|
||||
decCh3 = new G4MolecularDissociationChannel("H2Ovib_DissociationDecay3");
|
||||
|
||||
//Decay 1 : 2OH + H_2
|
||||
decCh1->AddProduct(H2);
|
||||
decCh1->AddProduct(OH);
|
||||
decCh1->AddProduct(OH);
|
||||
decCh1->SetProbability(0.15);
|
||||
decCh1->SetDisplacementType(G4DNAWaterDissociationDisplacer::
|
||||
B1A1_DissociationDecay);
|
||||
|
||||
//Decay 2 : OH + H
|
||||
decCh2->AddProduct(OH);
|
||||
decCh2->AddProduct(H);
|
||||
decCh2->SetProbability(0.55);
|
||||
decCh2->SetDisplacementType(G4DNAWaterDissociationDisplacer::
|
||||
A1B1_DissociationDecay);
|
||||
|
||||
//Decay 3 : relaxation
|
||||
decCh3->SetProbability(0.30);
|
||||
|
||||
const auto pH2Ovib = G4H2O::Definition()->NewConfiguration("H2Ovib");
|
||||
assert(pH2Ovib != nullptr);
|
||||
|
||||
water->AddDecayChannel(pH2Ovib, decCh1);
|
||||
water->AddDecayChannel(pH2Ovib, decCh2);
|
||||
water->AddDecayChannel(pH2Ovib, decCh3);
|
||||
|
||||
delete occ;
|
||||
G4ChemDissociationChannels::ConstructDissociationChannels();
|
||||
}
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
@@ -56,6 +56,7 @@
|
||||
#include "G4MolecularConfiguration.hh"
|
||||
#include "G4PhysicsConstructorFactory.hh"
|
||||
#include "G4VDNAReactionModel.hh"
|
||||
#include "G4ChemDissociationChannels.hh"
|
||||
|
||||
G4_DECLARE_PHYSCONSTR_FACTORY(G4EmDNAChemistry_option2);
|
||||
|
||||
@@ -69,23 +70,11 @@ G4EmDNAChemistry_option2::G4EmDNAChemistry_option2()
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
G4EmDNAChemistry_option2::~G4EmDNAChemistry_option2()
|
||||
{}
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
void G4EmDNAChemistry_option2::ConstructMolecule()
|
||||
{
|
||||
//-----------------------------------
|
||||
G4Electron::Definition(); // safety
|
||||
//-----------------------------------
|
||||
G4H2O::Definition();
|
||||
G4Hydrogen::Definition();
|
||||
G4H3O::Definition();
|
||||
G4OH::Definition();
|
||||
G4Electron_aq::Definition();
|
||||
G4H2O2::Definition();
|
||||
G4H2::Definition();
|
||||
G4ChemDissociationChannels::ConstructMolecule();
|
||||
//____________________________________________________________________________
|
||||
|
||||
G4Deoxyribose::Definition();
|
||||
G4Phosphate::Definition();
|
||||
G4Adenine::Definition();
|
||||
@@ -101,27 +90,6 @@ void G4EmDNAChemistry_option2::ConstructMolecule()
|
||||
G4DamagedCytosine::Definition();
|
||||
G4ModifiedHistone::Definition();
|
||||
|
||||
//_________________species___________________________________________________________
|
||||
|
||||
G4MoleculeTable::Instance()->
|
||||
CreateConfiguration("H3Op", G4H3O::Definition());
|
||||
G4MolecularConfiguration* OHm = G4MoleculeTable::Instance()->
|
||||
CreateConfiguration("OHm",
|
||||
G4OH::Definition(),
|
||||
-1, // charge
|
||||
5.0e-9 * (m2 / s));
|
||||
OHm->SetMass(17.0079 * g / Avogadro * c_squared);
|
||||
G4MoleculeTable::Instance()->
|
||||
CreateConfiguration("OH", G4OH::Definition());
|
||||
G4MoleculeTable::Instance()->
|
||||
CreateConfiguration("e_aq",G4Electron_aq::Definition());
|
||||
G4MoleculeTable::Instance()->
|
||||
CreateConfiguration("H",G4Hydrogen::Definition());
|
||||
G4MoleculeTable::Instance()->
|
||||
CreateConfiguration("H2", G4H2::Definition());
|
||||
G4MoleculeTable::Instance()->
|
||||
CreateConfiguration("H2O2", G4H2O2::Definition());
|
||||
|
||||
//________________DNA_______________________________________________
|
||||
|
||||
G4MoleculeTable::Instance()->
|
||||
@@ -162,289 +130,7 @@ void G4EmDNAChemistry_option2::ConstructMolecule()
|
||||
|
||||
void G4EmDNAChemistry_option2::ConstructDissociationChannels()
|
||||
{
|
||||
//-----------------------------------
|
||||
//Get the molecular configuration
|
||||
G4MolecularConfiguration* OH =
|
||||
G4MoleculeTable::Instance()->GetConfiguration("OH");
|
||||
G4MolecularConfiguration* OHm =
|
||||
G4MoleculeTable::Instance()->GetConfiguration("OHm");
|
||||
G4MolecularConfiguration* e_aq =
|
||||
G4MoleculeTable::Instance()->GetConfiguration("e_aq");
|
||||
G4MolecularConfiguration* H2 =
|
||||
G4MoleculeTable::Instance()->GetConfiguration("H2");
|
||||
G4MolecularConfiguration* H3O =
|
||||
G4MoleculeTable::Instance()->GetConfiguration("H3Op");
|
||||
G4MolecularConfiguration* H =
|
||||
G4MoleculeTable::Instance()->GetConfiguration("H");
|
||||
|
||||
//-------------------------------------
|
||||
//Define the decay channels
|
||||
G4MoleculeDefinition* water = G4H2O::Definition();
|
||||
G4MolecularDissociationChannel* decCh1;
|
||||
G4MolecularDissociationChannel* decCh2;
|
||||
|
||||
G4ElectronOccupancy* occ = new G4ElectronOccupancy(
|
||||
*(water->GetGroundStateElectronOccupancy()));
|
||||
|
||||
//////////////////////////////////////////////////////////
|
||||
// EXCITATIONS //
|
||||
//////////////////////////////////////////////////////////
|
||||
G4DNAWaterExcitationStructure waterExcitation;
|
||||
//--------------------------------------------------------
|
||||
//---------------Excitation on the fifth layer------------
|
||||
|
||||
decCh1 = new G4MolecularDissociationChannel(
|
||||
"A^1B_1_Relaxation");
|
||||
decCh2 = new G4MolecularDissociationChannel(
|
||||
"A^1B_1_DissociativeDecay");
|
||||
|
||||
//Decay 1 : OH + H
|
||||
decCh1->SetEnergy(waterExcitation.ExcitationEnergy(0));
|
||||
decCh1->SetProbability(0.35);
|
||||
decCh1->SetDisplacementType(
|
||||
G4DNAWaterDissociationDisplacer::NoDisplacement);
|
||||
|
||||
decCh2->AddProduct(OH);
|
||||
decCh2->AddProduct(H);
|
||||
decCh2->SetProbability(0.65);
|
||||
decCh2->SetDisplacementType(
|
||||
G4DNAWaterDissociationDisplacer::A1B1_DissociationDecay);
|
||||
|
||||
// water->AddExcitedState("A^1B_1");
|
||||
// this is the transition form ground state to
|
||||
occ->RemoveElectron(4, 1);
|
||||
// the first unoccupied orbital: A^1B_1
|
||||
occ->AddElectron(5, 1);
|
||||
|
||||
water->NewConfigurationWithElectronOccupancy("A^1B_1", *occ);
|
||||
water->AddDecayChannel("A^1B_1", decCh1);
|
||||
water->AddDecayChannel("A^1B_1", decCh2);
|
||||
|
||||
//--------------------------------------------------------
|
||||
//---------------Excitation on the fourth layer-----------
|
||||
decCh1 = new G4MolecularDissociationChannel(
|
||||
"B^1A_1_Relaxation_Channel");
|
||||
decCh2 = new G4MolecularDissociationChannel(
|
||||
"B^1A_1_DissociativeDecay");
|
||||
G4MolecularDissociationChannel* decCh3 =
|
||||
new G4MolecularDissociationChannel("B^1A_1_AutoIonisation_Channel");
|
||||
|
||||
//Decay 1 : energy
|
||||
decCh1->SetEnergy(waterExcitation.ExcitationEnergy(1));
|
||||
decCh1->SetProbability(0.3);
|
||||
|
||||
//Decay 2 : 2OH + H_2
|
||||
decCh2->AddProduct(H2);
|
||||
decCh2->AddProduct(OH);
|
||||
decCh2->AddProduct(OH);
|
||||
decCh2->SetProbability(0.15);
|
||||
decCh2->SetDisplacementType(
|
||||
G4DNAWaterDissociationDisplacer::B1A1_DissociationDecay);
|
||||
|
||||
//Decay 3 : OH + H_3Op + e_aq
|
||||
decCh3->AddProduct(OH);
|
||||
decCh3->AddProduct(H3O);
|
||||
decCh3->AddProduct(e_aq);
|
||||
decCh3->SetProbability(0.55);
|
||||
decCh3->SetDisplacementType(
|
||||
G4DNAWaterDissociationDisplacer::AutoIonisation);
|
||||
|
||||
*occ = *(water->GetGroundStateElectronOccupancy());
|
||||
occ->RemoveElectron(3); // this is the transition form ground state to
|
||||
occ->AddElectron(5, 1); // the first unoccupied orbital: B^1A_1
|
||||
|
||||
water->NewConfigurationWithElectronOccupancy("B^1A_1", *occ);
|
||||
water->AddDecayChannel("B^1A_1", decCh1);
|
||||
water->AddDecayChannel("B^1A_1", decCh2);
|
||||
water->AddDecayChannel("B^1A_1", decCh3);
|
||||
|
||||
//-------------------------------------------------------
|
||||
//-------------------Excitation of 3rd layer-----------------
|
||||
decCh1 = new G4MolecularDissociationChannel(
|
||||
"Excitation3rdLayer_AutoIonisation_Channel");
|
||||
decCh2 = new G4MolecularDissociationChannel(
|
||||
"Excitation3rdLayer_Relaxation_Channel");
|
||||
|
||||
//Decay channel 1 : : OH + H_3Op + e_aq
|
||||
decCh1->AddProduct(OH);
|
||||
decCh1->AddProduct(H3O);
|
||||
decCh1->AddProduct(e_aq);
|
||||
|
||||
decCh1->SetProbability(0.5);
|
||||
decCh1->SetDisplacementType(
|
||||
G4DNAWaterDissociationDisplacer::AutoIonisation);
|
||||
|
||||
//Decay channel 2 : energy
|
||||
decCh2->SetEnergy(waterExcitation.ExcitationEnergy(2));
|
||||
decCh2->SetProbability(0.5);
|
||||
|
||||
//Electronic configuration of this decay
|
||||
*occ = *(water->GetGroundStateElectronOccupancy());
|
||||
occ->RemoveElectron(2, 1);
|
||||
occ->AddElectron(5, 1);
|
||||
|
||||
//Configure the water molecule
|
||||
water->NewConfigurationWithElectronOccupancy(
|
||||
"Excitation3rdLayer", *occ);
|
||||
water->AddDecayChannel("Excitation3rdLayer", decCh1);
|
||||
water->AddDecayChannel("Excitation3rdLayer", decCh2);
|
||||
|
||||
//-------------------------------------------------------
|
||||
//-------------------Excitation of 2nd layer-----------------
|
||||
decCh1 = new G4MolecularDissociationChannel(
|
||||
"Excitation2ndLayer_AutoIonisation_Channel");
|
||||
decCh2 = new G4MolecularDissociationChannel(
|
||||
"Excitation2ndLayer_Relaxation_Channel");
|
||||
|
||||
//Decay Channel 1 : : OH + H_3Op + e_aq
|
||||
decCh1->AddProduct(OH);
|
||||
decCh1->AddProduct(H3O);
|
||||
decCh1->AddProduct(e_aq);
|
||||
|
||||
decCh1->SetProbability(0.5);
|
||||
decCh1->SetDisplacementType(
|
||||
G4DNAWaterDissociationDisplacer::AutoIonisation);
|
||||
|
||||
//Decay channel 2 : energy
|
||||
decCh2->SetEnergy(waterExcitation.ExcitationEnergy(3));
|
||||
decCh2->SetProbability(0.5);
|
||||
|
||||
*occ = *(water->GetGroundStateElectronOccupancy());
|
||||
occ->RemoveElectron(1, 1);
|
||||
occ->AddElectron(5, 1);
|
||||
|
||||
water->NewConfigurationWithElectronOccupancy(
|
||||
"Excitation2ndLayer", *occ);
|
||||
water->AddDecayChannel("Excitation2ndLayer", decCh1);
|
||||
water->AddDecayChannel("Excitation2ndLayer", decCh2);
|
||||
|
||||
//-------------------------------------------------------
|
||||
//-------------------Excitation of 1st layer-----------------
|
||||
decCh1 = new G4MolecularDissociationChannel(
|
||||
"Excitation1stLayer_AutoIonisation_Channel");
|
||||
decCh2 = new G4MolecularDissociationChannel(
|
||||
"Excitation1stLayer_Relaxation_Channel");
|
||||
|
||||
*occ = *(water->GetGroundStateElectronOccupancy());
|
||||
occ->RemoveElectron(0, 1);
|
||||
occ->AddElectron(5, 1);
|
||||
|
||||
//Decay Channel 1 : : OH + H_3Op + e_aq
|
||||
decCh1->AddProduct(OH);
|
||||
decCh1->AddProduct(H3O);
|
||||
decCh1->AddProduct(e_aq);
|
||||
decCh1->SetProbability(0.5);
|
||||
decCh1->SetDisplacementType(
|
||||
G4DNAWaterDissociationDisplacer::AutoIonisation);
|
||||
|
||||
//Decay channel 2 : energy
|
||||
decCh2->SetEnergy(waterExcitation.ExcitationEnergy(4));
|
||||
decCh2->SetProbability(0.5);
|
||||
|
||||
water->NewConfigurationWithElectronOccupancy(
|
||||
"Excitation1stLayer", *occ);
|
||||
water->AddDecayChannel("Excitation1stLayer", decCh1);
|
||||
water->AddDecayChannel("Excitation1stLayer", decCh2);
|
||||
|
||||
/////////////////////////////////////////////////////////
|
||||
// IONISATION //
|
||||
/////////////////////////////////////////////////////////
|
||||
//--------------------------------------------------------
|
||||
//------------------- Ionisation -------------------------
|
||||
|
||||
decCh1 = new G4MolecularDissociationChannel("Ionisation_Channel");
|
||||
|
||||
//Decay Channel 1 : : OH + H_3Op
|
||||
decCh1->AddProduct(H3O);
|
||||
decCh1->AddProduct(OH);
|
||||
decCh1->SetProbability(1);
|
||||
decCh1->SetDisplacementType(
|
||||
G4DNAWaterDissociationDisplacer::Ionisation_DissociationDecay);
|
||||
|
||||
*occ = *(water->GetGroundStateElectronOccupancy());
|
||||
occ->RemoveElectron(4, 1);
|
||||
// this is a ionized h2O with a hole in its last orbital
|
||||
water->NewConfigurationWithElectronOccupancy("Ionisation5", *occ);
|
||||
water->AddDecayChannel("Ionisation5", decCh1);
|
||||
|
||||
*occ = *(water->GetGroundStateElectronOccupancy());
|
||||
occ->RemoveElectron(3, 1);
|
||||
water->NewConfigurationWithElectronOccupancy("Ionisation4", *occ);
|
||||
water->AddDecayChannel("Ionisation4",
|
||||
new G4MolecularDissociationChannel(*decCh1));
|
||||
|
||||
*occ = *(water->GetGroundStateElectronOccupancy());
|
||||
occ->RemoveElectron(2, 1);
|
||||
water->NewConfigurationWithElectronOccupancy("Ionisation3", *occ);
|
||||
water->AddDecayChannel("Ionisation3",
|
||||
new G4MolecularDissociationChannel(*decCh1));
|
||||
|
||||
*occ = *(water->GetGroundStateElectronOccupancy());
|
||||
occ->RemoveElectron(1, 1);
|
||||
water->NewConfigurationWithElectronOccupancy("Ionisation2", *occ);
|
||||
water->AddDecayChannel("Ionisation2",
|
||||
new G4MolecularDissociationChannel(*decCh1));
|
||||
|
||||
*occ = *(water->GetGroundStateElectronOccupancy());
|
||||
occ->RemoveElectron(0, 1);
|
||||
water->NewConfigurationWithElectronOccupancy("Ionisation1", *occ);
|
||||
water->AddDecayChannel("Ionisation1",
|
||||
new G4MolecularDissociationChannel(*decCh1));
|
||||
|
||||
//////////////////////////////////////////////////////////
|
||||
// Dissociative Attachment //
|
||||
//////////////////////////////////////////////////////////
|
||||
decCh1 = new G4MolecularDissociationChannel(
|
||||
"DissociativeAttachment");
|
||||
|
||||
//Decay 1 : 2OH + H_2
|
||||
decCh1->AddProduct(H2);
|
||||
decCh1->AddProduct(OHm);
|
||||
decCh1->AddProduct(OH);
|
||||
decCh1->SetProbability(1);
|
||||
decCh1->SetDisplacementType(
|
||||
G4DNAWaterDissociationDisplacer::DissociativeAttachment);
|
||||
|
||||
*occ = *(water->GetGroundStateElectronOccupancy());
|
||||
occ->AddElectron(5, 1); // H_2O^-
|
||||
water->NewConfigurationWithElectronOccupancy(
|
||||
"DissociativeAttachment", *occ);
|
||||
water->AddDecayChannel(
|
||||
"DissociativeAttachment", decCh1);
|
||||
|
||||
//////////////////////////////////////////////////////////
|
||||
// Electron-hole recombination //
|
||||
//////////////////////////////////////////////////////////
|
||||
decCh1 = new G4MolecularDissociationChannel("H2Ovib_DissociationDecay1");
|
||||
decCh2 = new G4MolecularDissociationChannel("H2Ovib_DissociationDecay2");
|
||||
decCh3 = new G4MolecularDissociationChannel("H2Ovib_DissociationDecay3");
|
||||
|
||||
//Decay 1 : 2OH + H_2
|
||||
decCh1->AddProduct(H2);
|
||||
decCh1->AddProduct(OH);
|
||||
decCh1->AddProduct(OH);
|
||||
decCh1->SetProbability(0.15);
|
||||
decCh1->SetDisplacementType(G4DNAWaterDissociationDisplacer::
|
||||
B1A1_DissociationDecay);
|
||||
|
||||
//Decay 2 : OH + H
|
||||
decCh2->AddProduct(OH);
|
||||
decCh2->AddProduct(H);
|
||||
decCh2->SetProbability(0.55);
|
||||
decCh2->SetDisplacementType(G4DNAWaterDissociationDisplacer::
|
||||
A1B1_DissociationDecay);
|
||||
|
||||
//Decay 3 : relaxation
|
||||
decCh3->SetProbability(0.30);
|
||||
|
||||
const auto pH2Ovib = G4H2O::Definition()->NewConfiguration("H2Ovib");
|
||||
assert(pH2Ovib != nullptr);
|
||||
|
||||
water->AddDecayChannel(pH2Ovib, decCh1);
|
||||
water->AddDecayChannel(pH2Ovib, decCh2);
|
||||
water->AddDecayChannel(pH2Ovib, decCh3);
|
||||
|
||||
delete occ;
|
||||
G4ChemDissociationChannels::ConstructDissociationChannels();
|
||||
}
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
@@ -33,81 +33,42 @@
|
||||
*/
|
||||
|
||||
#include "G4EmDNAChemistry_option3.hh"
|
||||
|
||||
#include "G4PhysicalConstants.hh"
|
||||
#include "G4SystemOfUnits.hh"
|
||||
|
||||
#include "G4DNAWaterDissociationDisplacer.hh"
|
||||
#include "G4DNAChemistryManager.hh"
|
||||
#include "G4DNAWaterExcitationStructure.hh"
|
||||
#include "G4ProcessManager.hh"
|
||||
|
||||
#include "G4DNAGenericIonsManager.hh"
|
||||
|
||||
// *** Processes and models for Geant4-DNA
|
||||
|
||||
#include "G4DNAElectronSolvation.hh"
|
||||
|
||||
#include "G4DNAAttachment.hh"
|
||||
#include "G4DNAVibExcitation.hh"
|
||||
#include "G4DNASancheExcitationModel.hh"
|
||||
|
||||
#include "G4DNAElastic.hh"
|
||||
#include "G4DNAChampionElasticModel.hh"
|
||||
#include "G4DNAScreenedRutherfordElasticModel.hh"
|
||||
#include "G4DNAUeharaScreenedRutherfordElasticModel.hh"
|
||||
|
||||
#include "G4DNAMolecularDissociation.hh"
|
||||
#include "G4DNABrownianTransportation.hh"
|
||||
#include "G4DNAMolecularReactionTable.hh"
|
||||
|
||||
#include "G4DNAMolecularStepByStepModel.hh"
|
||||
#include "G4DNAMolecularIRTModel.hh"
|
||||
#include "G4DNAIndependentReactionTimeModel.hh"
|
||||
|
||||
#include "G4VDNAReactionModel.hh"
|
||||
#include "G4DNASmoluchowskiReactionModel.hh"
|
||||
|
||||
#include "G4DNAIRT.hh"
|
||||
|
||||
#include "G4DNAElectronHoleRecombination.hh"
|
||||
|
||||
// particles
|
||||
|
||||
#include "G4Electron.hh"
|
||||
#include "G4Proton.hh"
|
||||
#include "G4GenericIon.hh"
|
||||
|
||||
#include "G4MoleculeTable.hh"
|
||||
#include "G4H2O.hh"
|
||||
#include "G4H2.hh"
|
||||
#include "G4Hydrogen.hh"
|
||||
#include "G4OH.hh"
|
||||
#include "G4H3O.hh"
|
||||
#include "G4Electron_aq.hh"
|
||||
|
||||
#include "G4Oxygen.hh"
|
||||
#include "G4H2O2.hh"
|
||||
#include "G4O2.hh"
|
||||
#include "G4HO2.hh"
|
||||
#include "G4O3.hh"
|
||||
#include "G4FakeMolecule.hh"
|
||||
|
||||
#include "G4PhysicsListHelper.hh"
|
||||
#include "G4BuilderType.hh"
|
||||
|
||||
/****/
|
||||
#include "G4DNAMoleculeEncounterStepper.hh"
|
||||
#include "G4ProcessVector.hh"
|
||||
#include "G4ProcessTable.hh"
|
||||
#include "G4DNASecondOrderReaction.hh"
|
||||
#include "G4MolecularConfiguration.hh"
|
||||
/****/
|
||||
|
||||
#include "G4Scheduler.hh"
|
||||
|
||||
// factory
|
||||
#include "G4PhysicsConstructorFactory.hh"
|
||||
#include "G4ChemDissociationChannels_option1.hh"
|
||||
|
||||
G4_DECLARE_PHYSCONSTR_FACTORY(G4EmDNAChemistry_option3);
|
||||
|
||||
@@ -121,453 +82,16 @@ G4EmDNAChemistry_option3::G4EmDNAChemistry_option3() :
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
G4EmDNAChemistry_option3::~G4EmDNAChemistry_option3()
|
||||
{
|
||||
}
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
void G4EmDNAChemistry_option3::ConstructMolecule()
|
||||
{
|
||||
//-----------------------------------
|
||||
// G4Electron::Definition(); // safety
|
||||
|
||||
//-----------------------------------
|
||||
// Create the definition
|
||||
|
||||
G4H2O::Definition();
|
||||
G4Hydrogen::Definition();
|
||||
G4H3O::Definition();
|
||||
G4OH::Definition();
|
||||
G4Electron_aq::Definition();
|
||||
G4H2O2::Definition();
|
||||
G4H2::Definition();
|
||||
|
||||
G4O2::Definition();
|
||||
G4HO2::Definition();
|
||||
G4Oxygen::Definition();
|
||||
G4O3::Definition();
|
||||
|
||||
//____________________________________________________________________________
|
||||
|
||||
G4MoleculeTable::Instance()->CreateConfiguration("H3Op", G4H3O::Definition());
|
||||
G4MoleculeTable::Instance()->GetConfiguration("H3Op")->SetDiffusionCoefficient(
|
||||
9.46e-9 * (m2/s));
|
||||
G4MoleculeTable::Instance()->GetConfiguration("H3Op")->SetVanDerVaalsRadius(0.25*nm);
|
||||
|
||||
G4MoleculeTable::Instance()->CreateConfiguration("OH", G4OH::Definition());
|
||||
G4MoleculeTable::Instance()->GetConfiguration("OH")->SetDiffusionCoefficient(
|
||||
2.2e-9 * (m2/s));
|
||||
G4MoleculeTable::Instance()->GetConfiguration("OH")->SetVanDerVaalsRadius(0.22*nm);
|
||||
|
||||
G4MolecularConfiguration* OHm = G4MoleculeTable::Instance()->
|
||||
CreateConfiguration("OHm", // just a tag to store and retrieve from
|
||||
// G4MoleculeTable
|
||||
G4OH::Definition(),
|
||||
-1, // charge
|
||||
5.3e-9 * (m2 / s));
|
||||
OHm->SetMass(17.0079 * g / Avogadro * c_squared);
|
||||
OHm->SetVanDerVaalsRadius(0.33*nm);
|
||||
|
||||
|
||||
|
||||
|
||||
G4MoleculeTable::Instance()->CreateConfiguration("e_aq",
|
||||
G4Electron_aq::Definition());
|
||||
G4MoleculeTable::Instance()->GetConfiguration("e_aq")->SetVanDerVaalsRadius(0.50*nm);
|
||||
|
||||
G4MoleculeTable::Instance()->CreateConfiguration("H",
|
||||
G4Hydrogen::Definition());
|
||||
G4MoleculeTable::Instance()->GetConfiguration("H")->SetVanDerVaalsRadius(0.19*nm);
|
||||
|
||||
G4MoleculeTable::Instance()->CreateConfiguration("H2", G4H2::Definition());
|
||||
G4MoleculeTable::Instance()->GetConfiguration("H2")->SetDiffusionCoefficient(
|
||||
4.8e-9 * (m2/s));
|
||||
G4MoleculeTable::Instance()->GetConfiguration("H2")->SetVanDerVaalsRadius(0.14*nm);
|
||||
|
||||
|
||||
G4MoleculeTable::Instance()->CreateConfiguration("H2O2", G4H2O2::Definition());
|
||||
G4MoleculeTable::Instance()->GetConfiguration("H2O2")->SetDiffusionCoefficient(
|
||||
2.3e-9 * (m2/s));
|
||||
G4MoleculeTable::Instance()->GetConfiguration("H2O2")->SetVanDerVaalsRadius(0.21*nm);
|
||||
|
||||
// molecules extension (RITRACKS)
|
||||
|
||||
G4MoleculeTable::Instance()->CreateConfiguration("HO2",G4HO2::Definition());
|
||||
G4MoleculeTable::Instance()->GetConfiguration("HO2")->SetVanDerVaalsRadius(0.21*nm);
|
||||
|
||||
G4MolecularConfiguration* HO2m = G4MoleculeTable::Instance()->
|
||||
CreateConfiguration("HO2m", // just a tag to store and retrieve from
|
||||
// G4MoleculeTable
|
||||
G4HO2::Definition(),
|
||||
-1, // charge
|
||||
1.4e-9 * (m2 / s));
|
||||
HO2m->SetMass(33.00396 * g / Avogadro * c_squared);
|
||||
HO2m->SetVanDerVaalsRadius(0.25*nm);
|
||||
|
||||
G4MoleculeTable::Instance()->CreateConfiguration("Oxy",G4Oxygen::Definition());
|
||||
G4MoleculeTable::Instance()->GetConfiguration("Oxy")->SetVanDerVaalsRadius(0.20*nm);
|
||||
|
||||
G4MolecularConfiguration* Om = G4MoleculeTable::Instance()->
|
||||
CreateConfiguration("Om", // just a tag to store and retrieve from
|
||||
// G4MoleculeTable
|
||||
G4Oxygen::Definition(),
|
||||
-1, // charge
|
||||
2.0e-9 * (m2 / s));
|
||||
Om->SetMass(15.99829 * g / Avogadro * c_squared);
|
||||
Om->SetVanDerVaalsRadius(0.25*nm);
|
||||
|
||||
G4MoleculeTable::Instance()->CreateConfiguration("O2",G4O2::Definition());
|
||||
G4MoleculeTable::Instance()->GetConfiguration("O2")->SetVanDerVaalsRadius(0.17*nm);
|
||||
|
||||
G4MolecularConfiguration* O2m = G4MoleculeTable::Instance()->
|
||||
CreateConfiguration("O2m", // just a tag to store and retrieve from
|
||||
// G4MoleculeTable
|
||||
G4O2::Definition(),
|
||||
-1, // charge
|
||||
1.75e-9 * (m2 / s));
|
||||
O2m->SetMass(31.99602 * g / Avogadro * c_squared);
|
||||
O2m->SetVanDerVaalsRadius(0.22*nm);
|
||||
|
||||
G4MoleculeTable::Instance()->CreateConfiguration("O3",G4O3::Definition());
|
||||
G4MoleculeTable::Instance()->GetConfiguration("O3")->SetVanDerVaalsRadius(0.20*nm);
|
||||
|
||||
G4MolecularConfiguration* O3m = G4MoleculeTable::Instance()->
|
||||
CreateConfiguration("O3m", // just a tag to store and retrieve from
|
||||
// G4MoleculeTable
|
||||
G4O3::Definition(),
|
||||
-1, // charge
|
||||
2.0e-9 * (m2 / s));
|
||||
O3m->SetMass(47.99375 * g / Avogadro * c_squared);
|
||||
O3m->SetVanDerVaalsRadius(0.20*nm);
|
||||
|
||||
G4MoleculeTable::Instance()->
|
||||
CreateConfiguration("H2O(B)", // just a tag to store and retrieve from
|
||||
// G4MoleculeTable
|
||||
G4H2O::Definition(),
|
||||
0, // charge
|
||||
0 * (m2 / s));
|
||||
|
||||
G4MoleculeTable::Instance()->
|
||||
CreateConfiguration("H3Op(B)", // just a tag to store and retrieve from
|
||||
// G4MoleculeTable
|
||||
G4H3O::Definition(),
|
||||
1, // charge
|
||||
0 * (m2 / s));
|
||||
|
||||
G4MoleculeTable::Instance()->
|
||||
CreateConfiguration("OHm(B)", // just a tag to store and retrieve from
|
||||
// G4MoleculeTable
|
||||
G4OH::Definition(),
|
||||
-1, // charge
|
||||
0 * (m2 / s));
|
||||
|
||||
G4MoleculeTable::Instance()->CreateConfiguration("NoneM",G4FakeMolecule::Definition());
|
||||
|
||||
G4ChemDissociationChannels_option1::ConstructMolecule();
|
||||
}
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
void G4EmDNAChemistry_option3::ConstructDissociationChannels()
|
||||
{
|
||||
//-----------------------------------
|
||||
//Get the molecular configuration
|
||||
G4MolecularConfiguration* OH =
|
||||
G4MoleculeTable::Instance()->GetConfiguration("OH");
|
||||
G4MolecularConfiguration* OHm =
|
||||
G4MoleculeTable::Instance()->GetConfiguration("OHm");
|
||||
G4MolecularConfiguration* e_aq =
|
||||
G4MoleculeTable::Instance()->GetConfiguration("e_aq");
|
||||
G4MolecularConfiguration* H2 =
|
||||
G4MoleculeTable::Instance()->GetConfiguration("H2");
|
||||
G4MolecularConfiguration* H3O =
|
||||
G4MoleculeTable::Instance()->GetConfiguration("H3Op");
|
||||
G4MolecularConfiguration* H =
|
||||
G4MoleculeTable::Instance()->GetConfiguration("H");
|
||||
G4MolecularConfiguration* O =
|
||||
G4MoleculeTable::Instance()->GetConfiguration("Oxy");
|
||||
|
||||
//-------------------------------------
|
||||
//Define the decay channels
|
||||
G4MoleculeDefinition* water = G4H2O::Definition();
|
||||
G4MolecularDissociationChannel* decCh1;
|
||||
G4MolecularDissociationChannel* decCh2;
|
||||
G4MolecularDissociationChannel* decCh3;
|
||||
G4MolecularDissociationChannel* decCh4;
|
||||
G4MolecularDissociationChannel* decCh5;
|
||||
|
||||
G4ElectronOccupancy* occ = new G4ElectronOccupancy(
|
||||
*(water->GetGroundStateElectronOccupancy()));
|
||||
|
||||
//////////////////////////////////////////////////////////
|
||||
// EXCITATIONS //
|
||||
//////////////////////////////////////////////////////////
|
||||
G4DNAWaterExcitationStructure waterExcitation;
|
||||
//--------------------------------------------------------
|
||||
//---------------Excitation on the fifth layer------------
|
||||
|
||||
decCh1 = new G4MolecularDissociationChannel("A^1B_1_Relaxation");
|
||||
decCh2 = new G4MolecularDissociationChannel("A^1B_1_DissociativeDecay");
|
||||
//Decay 1 : OH + H
|
||||
decCh1->SetEnergy(waterExcitation.ExcitationEnergy(0));
|
||||
decCh1->SetProbability(0.35);
|
||||
decCh1->SetDisplacementType(G4DNAWaterDissociationDisplacer::NoDisplacement);
|
||||
|
||||
decCh2->AddProduct(OH);
|
||||
decCh2->AddProduct(H);
|
||||
decCh2->SetProbability(0.65);
|
||||
decCh2->SetDisplacementType(
|
||||
G4DNAWaterDissociationDisplacer::A1B1_DissociationDecay);
|
||||
|
||||
occ->RemoveElectron(4, 1); // this is the transition form ground state to
|
||||
occ->AddElectron(5, 1); // the first unoccupied orbital: A^1B_1
|
||||
|
||||
water->NewConfigurationWithElectronOccupancy("A^1B_1", *occ);
|
||||
water->AddDecayChannel("A^1B_1", decCh1);
|
||||
water->AddDecayChannel("A^1B_1", decCh2);
|
||||
|
||||
//--------------------------------------------------------
|
||||
//---------------Excitation on the fourth layer-----------
|
||||
decCh1 = new G4MolecularDissociationChannel("B^1A_1_Relaxation_Channel");
|
||||
decCh2 = new G4MolecularDissociationChannel("B^1A_1_DissociativeDecay");
|
||||
decCh3 = new G4MolecularDissociationChannel("B^1A_1_AutoIonisation_Channel");
|
||||
decCh4 = new G4MolecularDissociationChannel("A^1B_1_DissociativeDecay");
|
||||
decCh5 = new G4MolecularDissociationChannel("B^1A_1_DissociativeDecay2");
|
||||
|
||||
|
||||
//Decay 1 : energy
|
||||
decCh1->SetEnergy(waterExcitation.ExcitationEnergy(1));
|
||||
decCh1->SetProbability(0.175);
|
||||
|
||||
//Decay 2 : 2OH + H_2
|
||||
decCh2->AddProduct(H2);
|
||||
decCh2->AddProduct(OH);
|
||||
decCh2->AddProduct(OH);
|
||||
decCh2->SetProbability(0.0325);
|
||||
decCh2->SetDisplacementType(
|
||||
G4DNAWaterDissociationDisplacer::B1A1_DissociationDecay);
|
||||
|
||||
//Decay 3 : OH + H_3Op + e_aq
|
||||
decCh3->AddProduct(OH);
|
||||
decCh3->AddProduct(H3O);
|
||||
decCh3->AddProduct(e_aq);
|
||||
decCh3->SetProbability(0.50);
|
||||
decCh3->SetDisplacementType(G4DNAWaterDissociationDisplacer::AutoIonisation);
|
||||
|
||||
//Decay 4 : H + OH
|
||||
decCh4->AddProduct(H);
|
||||
decCh4->AddProduct(OH);
|
||||
decCh4->SetProbability(0.2535);
|
||||
decCh4->SetDisplacementType(G4DNAWaterDissociationDisplacer::A1B1_DissociationDecay);
|
||||
|
||||
//Decay 5 : 2H + O
|
||||
decCh5->AddProduct(O);
|
||||
decCh5->AddProduct(H);
|
||||
decCh5->AddProduct(H);
|
||||
decCh5->SetProbability(0.039);
|
||||
decCh5->SetDisplacementType(G4DNAWaterDissociationDisplacer::B1A1_DissociationDecay2);
|
||||
|
||||
*occ = *(water->GetGroundStateElectronOccupancy());
|
||||
occ->RemoveElectron(3); // this is the transition form ground state to
|
||||
occ->AddElectron(5, 1); // the first unoccupied orbital: B^1A_1
|
||||
|
||||
water->NewConfigurationWithElectronOccupancy("B^1A_1", *occ);
|
||||
water->AddDecayChannel("B^1A_1", decCh1);
|
||||
water->AddDecayChannel("B^1A_1", decCh2);
|
||||
water->AddDecayChannel("B^1A_1", decCh3);
|
||||
water->AddDecayChannel("B^1A_1", decCh4);
|
||||
water->AddDecayChannel("B^1A_1", decCh5);
|
||||
|
||||
//-------------------------------------------------------
|
||||
//-------------------Excitation of 3rd layer-----------------
|
||||
decCh1 = new G4MolecularDissociationChannel(
|
||||
"Excitation3rdLayer_AutoIonisation_Channel");
|
||||
decCh2 = new G4MolecularDissociationChannel(
|
||||
"Excitation3rdLayer_Relaxation_Channel");
|
||||
|
||||
//Decay channel 1 : : OH + H_3Op + e_aq
|
||||
decCh1->AddProduct(OH);
|
||||
decCh1->AddProduct(H3O);
|
||||
decCh1->AddProduct(e_aq);
|
||||
|
||||
decCh1->SetProbability(0.5);
|
||||
decCh1->SetDisplacementType(G4DNAWaterDissociationDisplacer::AutoIonisation);
|
||||
|
||||
//Decay channel 2 : energy
|
||||
decCh2->SetEnergy(waterExcitation.ExcitationEnergy(2));
|
||||
decCh2->SetProbability(0.5);
|
||||
|
||||
//Electronic configuration of this decay
|
||||
*occ = *(water->GetGroundStateElectronOccupancy());
|
||||
occ->RemoveElectron(2, 1);
|
||||
occ->AddElectron(5, 1);
|
||||
|
||||
//Configure the water molecule
|
||||
water->NewConfigurationWithElectronOccupancy("Excitation3rdLayer", *occ);
|
||||
water->AddDecayChannel("Excitation3rdLayer", decCh1);
|
||||
water->AddDecayChannel("Excitation3rdLayer", decCh2);
|
||||
|
||||
//-------------------------------------------------------
|
||||
//-------------------Excitation of 2nd layer-----------------
|
||||
decCh1 = new G4MolecularDissociationChannel(
|
||||
"Excitation2ndLayer_AutoIonisation_Channel");
|
||||
decCh2 = new G4MolecularDissociationChannel(
|
||||
"Excitation2ndLayer_Relaxation_Channel");
|
||||
|
||||
//Decay Channel 1 : : OH + H_3Op + e_aq
|
||||
decCh1->AddProduct(OH);
|
||||
decCh1->AddProduct(H3O);
|
||||
decCh1->AddProduct(e_aq);
|
||||
|
||||
decCh1->SetProbability(0.5);
|
||||
decCh1->SetDisplacementType(G4DNAWaterDissociationDisplacer::AutoIonisation);
|
||||
|
||||
//Decay channel 2 : energy
|
||||
decCh2->SetEnergy(waterExcitation.ExcitationEnergy(3));
|
||||
decCh2->SetProbability(0.5);
|
||||
|
||||
*occ = *(water->GetGroundStateElectronOccupancy());
|
||||
occ->RemoveElectron(1, 1);
|
||||
occ->AddElectron(5, 1);
|
||||
|
||||
water->NewConfigurationWithElectronOccupancy("Excitation2ndLayer", *occ);
|
||||
water->AddDecayChannel("Excitation2ndLayer", decCh1);
|
||||
water->AddDecayChannel("Excitation2ndLayer", decCh2);
|
||||
|
||||
//-------------------------------------------------------
|
||||
//-------------------Excitation of 1st layer-----------------
|
||||
decCh1 = new G4MolecularDissociationChannel(
|
||||
"Excitation1stLayer_AutoIonisation_Channel");
|
||||
decCh2 = new G4MolecularDissociationChannel(
|
||||
"Excitation1stLayer_Relaxation_Channel");
|
||||
|
||||
*occ = *(water->GetGroundStateElectronOccupancy());
|
||||
occ->RemoveElectron(0, 1);
|
||||
occ->AddElectron(5, 1);
|
||||
|
||||
//Decay Channel 1 : : OH + H_3Op + e_aq
|
||||
decCh1->AddProduct(OH);
|
||||
decCh1->AddProduct(H3O);
|
||||
decCh1->AddProduct(e_aq);
|
||||
decCh1->SetProbability(0.5);
|
||||
decCh1->SetDisplacementType(G4DNAWaterDissociationDisplacer::AutoIonisation);
|
||||
|
||||
//Decay channel 2 : energy
|
||||
decCh2->SetEnergy(waterExcitation.ExcitationEnergy(4));
|
||||
decCh2->SetProbability(0.5);
|
||||
|
||||
water->NewConfigurationWithElectronOccupancy("Excitation1stLayer", *occ);
|
||||
water->AddDecayChannel("Excitation1stLayer", decCh1);
|
||||
water->AddDecayChannel("Excitation1stLayer", decCh2);
|
||||
|
||||
/////////////////////////////////////////////////////////
|
||||
// IONISATION //
|
||||
/////////////////////////////////////////////////////////
|
||||
//--------------------------------------------------------
|
||||
//------------------- Ionisation -------------------------
|
||||
|
||||
decCh1 = new G4MolecularDissociationChannel("Ionisation_Channel");
|
||||
|
||||
//Decay Channel 1 : : OH + H_3Op
|
||||
decCh1->AddProduct(H3O);
|
||||
decCh1->AddProduct(OH);
|
||||
decCh1->SetProbability(1);
|
||||
decCh1->SetDisplacementType(
|
||||
G4DNAWaterDissociationDisplacer::Ionisation_DissociationDecay);
|
||||
|
||||
*occ = *(water->GetGroundStateElectronOccupancy());
|
||||
occ->RemoveElectron(4, 1);
|
||||
// this is a ionized h2O with a hole in its last orbital
|
||||
water->NewConfigurationWithElectronOccupancy("Ionisation5", *occ);
|
||||
water->AddDecayChannel("Ionisation5",
|
||||
decCh1);
|
||||
|
||||
*occ = *(water->GetGroundStateElectronOccupancy());
|
||||
occ->RemoveElectron(3, 1);
|
||||
water->NewConfigurationWithElectronOccupancy("Ionisation4", *occ);
|
||||
water->AddDecayChannel("Ionisation4",
|
||||
new G4MolecularDissociationChannel(*decCh1));
|
||||
|
||||
*occ = *(water->GetGroundStateElectronOccupancy());
|
||||
occ->RemoveElectron(2, 1);
|
||||
water->NewConfigurationWithElectronOccupancy("Ionisation3", *occ);
|
||||
water->AddDecayChannel("Ionisation3",
|
||||
new G4MolecularDissociationChannel(*decCh1));
|
||||
|
||||
*occ = *(water->GetGroundStateElectronOccupancy());
|
||||
occ->RemoveElectron(1, 1);
|
||||
water->NewConfigurationWithElectronOccupancy("Ionisation2", *occ);
|
||||
water->AddDecayChannel("Ionisation2",
|
||||
new G4MolecularDissociationChannel(*decCh1));
|
||||
|
||||
*occ = *(water->GetGroundStateElectronOccupancy());
|
||||
occ->RemoveElectron(0, 1);
|
||||
water->NewConfigurationWithElectronOccupancy("Ionisation1", *occ);
|
||||
water->AddDecayChannel("Ionisation1",
|
||||
new G4MolecularDissociationChannel(*decCh1));
|
||||
|
||||
//////////////////////////////////////////////////////////
|
||||
// Dissociative Attachment //
|
||||
//////////////////////////////////////////////////////////
|
||||
decCh1 = new G4MolecularDissociationChannel("DissociativeAttachment_ch1");
|
||||
|
||||
//Decay 1 : OHm + H
|
||||
decCh1->AddProduct(H2);
|
||||
decCh1->AddProduct(OHm);
|
||||
decCh1->AddProduct(OH);
|
||||
decCh1->SetProbability(1);
|
||||
decCh1->SetDisplacementType(G4DNAWaterDissociationDisplacer::
|
||||
DissociativeAttachment);
|
||||
|
||||
*occ = *(water->GetGroundStateElectronOccupancy());
|
||||
occ->AddElectron(5,1); // H_2O^-
|
||||
|
||||
water->NewConfigurationWithElectronOccupancy("DissociativeAttachment_ch1", *occ);
|
||||
water->AddDecayChannel("DissociativeAttachment_ch1", decCh1);
|
||||
|
||||
//////////////////////////////////////////////////////////
|
||||
// Electron-hole recombination //
|
||||
//////////////////////////////////////////////////////////
|
||||
decCh1 = new G4MolecularDissociationChannel("H2Ovib_DissociationDecay1");
|
||||
decCh2 = new G4MolecularDissociationChannel("H2Ovib_DissociationDecay2");
|
||||
decCh3 = new G4MolecularDissociationChannel("H2Ovib_DissociationDecay3");
|
||||
decCh4 = new G4MolecularDissociationChannel("H2Ovib_DissociationDecay4");
|
||||
|
||||
//Decay 1 : 2OH + H_2
|
||||
decCh1->AddProduct(H2);
|
||||
decCh1->AddProduct(OH);
|
||||
decCh1->AddProduct(OH);
|
||||
decCh1->SetProbability(0.1365);
|
||||
decCh1->SetDisplacementType(G4DNAWaterDissociationDisplacer::
|
||||
B1A1_DissociationDecay);
|
||||
|
||||
//Decay 2 : OH + H
|
||||
decCh2->AddProduct(OH);
|
||||
decCh2->AddProduct(H);
|
||||
decCh2->SetProbability(0.3575);
|
||||
decCh2->SetDisplacementType(G4DNAWaterDissociationDisplacer::
|
||||
A1B1_DissociationDecay);
|
||||
|
||||
//Decay 3 : 2H + O(3p)
|
||||
decCh3->AddProduct(O);
|
||||
decCh3->AddProduct(H);
|
||||
decCh3->AddProduct(H);
|
||||
decCh3->SetProbability(0.156);
|
||||
decCh3->SetDisplacementType(G4DNAWaterDissociationDisplacer::
|
||||
B1A1_DissociationDecay2);
|
||||
|
||||
//Decay 4 : relaxation
|
||||
decCh4->SetProbability(0.35);
|
||||
|
||||
const auto pH2Ovib = G4H2O::Definition()->NewConfiguration("H2Ovib");
|
||||
assert(pH2Ovib != nullptr);
|
||||
|
||||
water->AddDecayChannel(pH2Ovib, decCh1);
|
||||
water->AddDecayChannel(pH2Ovib, decCh2);
|
||||
water->AddDecayChannel(pH2Ovib, decCh3);
|
||||
water->AddDecayChannel(pH2Ovib, decCh4);
|
||||
|
||||
delete occ;
|
||||
G4ChemDissociationChannels_option1::ConstructDissociationChannels();
|
||||
}
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
@@ -67,6 +67,7 @@
|
||||
#include "G4EmProcessSubType.hh"
|
||||
#include "G4PhysicsListHelper.hh"
|
||||
#include "G4EmParticleList.hh"
|
||||
#include "G4EmUtility.hh"
|
||||
|
||||
#include "G4MicroElecElastic.hh"
|
||||
#include "G4MicroElecElasticModel.hh"
|
||||
@@ -88,6 +89,7 @@
|
||||
#include "G4ionIonisation.hh"
|
||||
#include "G4KleinNishinaModel.hh"
|
||||
|
||||
#include "G4GammaGeneralProcess.hh"
|
||||
#include "G4CoulombScattering.hh"
|
||||
#include "G4eCoulombScatteringModel.hh"
|
||||
#include "G4WentzelVIModel.hh"
|
||||
@@ -149,7 +151,7 @@ void G4EmModelActivator::ActivateEmOptions()
|
||||
const std::vector<G4String>& regnamesPhys = theParameters->RegionsPhysics();
|
||||
std::size_t nreg = regnamesPhys.size();
|
||||
if(0 == nreg) { return; }
|
||||
G4int verbose = theParameters->Verbose() - 1;
|
||||
G4int verbose = theParameters->Verbose() - 1;
|
||||
if(verbose > 0) {
|
||||
G4cout << "### G4EmModelActivator::ActivateEmOptions for " << nreg << " regions"
|
||||
<< G4endl;
|
||||
@@ -165,7 +167,8 @@ void G4EmModelActivator::ActivateEmOptions()
|
||||
G4EmConfigurator* em_config = man->EmConfigurator();
|
||||
G4VAtomDeexcitation* adeexc = man->AtomDeexcitation();
|
||||
G4ParticleTable* table = G4ParticleTable::GetParticleTable();
|
||||
G4VEmModel* mod;
|
||||
G4VEmModel* mod = nullptr;
|
||||
G4VEmProcess* proc = nullptr;
|
||||
|
||||
// high energy limit for low-energy e+- model of msc
|
||||
G4double mscEnergyLimit = theParameters->MscEnergyLimit();
|
||||
@@ -177,12 +180,13 @@ void G4EmModelActivator::ActivateEmOptions()
|
||||
G4double highEnergy = theParameters->MaxKinEnergy();
|
||||
|
||||
for(std::size_t i=0; i<nreg; ++i) {
|
||||
G4String reg = regnamesPhys[i];
|
||||
const G4String reg = regnamesPhys[i];
|
||||
auto region = G4EmUtility::FindRegion(reg);
|
||||
if(verbose > 0) {
|
||||
G4cout << i << ". region <" << reg << ">; type <" << typesPhys[i] << "> "
|
||||
<< G4endl;
|
||||
G4cout << i << ". region <" << reg << ">; physics type <"
|
||||
<< typesPhys[i] << "> region ptr: " << region << G4endl;
|
||||
}
|
||||
|
||||
|
||||
if(baseName == typesPhys[i]) { continue; }
|
||||
|
||||
if("G4EmStandard" == typesPhys[i]) {
|
||||
@@ -205,35 +209,30 @@ void G4EmModelActivator::ActivateEmOptions()
|
||||
G4UrbanMscModel* msc = new G4UrbanMscModel();
|
||||
SetMscParameters(elec, msc, typesPhys[i]);
|
||||
em_config->SetExtraEmModel("e-", "msc", msc, reg);
|
||||
FindOrAddProcess(elec, "CoulombScat");
|
||||
em_config->SetExtraEmModel("e-", "CoulombScat", dummy, reg);
|
||||
proc = FindOrAddProcess(elec, "CoulombScat");
|
||||
proc->AddEmModel(-1, dummy, region);
|
||||
|
||||
msc = new G4UrbanMscModel();
|
||||
SetMscParameters(posi, msc, typesPhys[i]);
|
||||
em_config->SetExtraEmModel("e+", "msc", msc, reg);
|
||||
FindOrAddProcess(posi, "CoulombScat");
|
||||
em_config->SetExtraEmModel("e+", "CoulombScat", dummy, reg);
|
||||
proc = FindOrAddProcess(posi, "CoulombScat");
|
||||
proc->AddEmModel(-1, dummy, region);
|
||||
|
||||
msc = new G4UrbanMscModel();
|
||||
SetMscParameters(prot, msc, typesPhys[i]);
|
||||
em_config->SetExtraEmModel("proton", "msc", msc, reg);
|
||||
FindOrAddProcess(prot, "CoulombScat");
|
||||
em_config->SetExtraEmModel("proton", "CoulombScat", dummy, reg);
|
||||
proc = FindOrAddProcess(prot, "CoulombScat");
|
||||
proc->AddEmModel(-1, dummy, region);
|
||||
|
||||
theParameters->SetNumberOfBinsPerDecade(20);
|
||||
if(G4Threading::IsMasterThread()) {
|
||||
theParameters->SetDeexActiveRegion(reg, true, false, false);
|
||||
}
|
||||
theParameters->DefineRegParamForDeex(adeexc);
|
||||
FindOrAddProcess(phot, "Rayl");
|
||||
mod = new G4LivermoreRayleighModel();
|
||||
em_config->SetExtraEmModel("gamma", "Rayl", mod, reg);
|
||||
FindOrAddProcess(phot, "phot");
|
||||
mod = new G4LivermorePhotoElectricModel();
|
||||
em_config->SetExtraEmModel("gamma", "phot", mod, reg);
|
||||
FindOrAddProcess(phot, "compt");
|
||||
mod = new G4KleinNishinaModel();
|
||||
em_config->SetExtraEmModel("gamma", "compt", mod, reg);
|
||||
proc = FindOrAddProcess(phot, "Rayl");
|
||||
proc->AddEmModel(-1, new G4LivermoreRayleighModel(), region);
|
||||
proc = FindOrAddProcess(phot, "compt");
|
||||
proc->AddEmModel(-1, new G4KleinNishinaModel(), region);
|
||||
|
||||
} else if("G4EmStandard_opt4" == typesPhys[i]) {
|
||||
G4VMscModel* msc = new G4GoudsmitSaundersonMscModel();
|
||||
@@ -249,20 +248,15 @@ void G4EmModelActivator::ActivateEmOptions()
|
||||
}
|
||||
theParameters->DefineRegParamForDeex(adeexc);
|
||||
|
||||
FindOrAddProcess(phot, "Rayl");
|
||||
mod = new G4LivermoreRayleighModel();
|
||||
em_config->SetExtraEmModel("gamma", "Rayl", mod, reg);
|
||||
FindOrAddProcess(phot, "phot");
|
||||
mod = new G4LivermorePhotoElectricModel();
|
||||
FindOrAddProcess(phot, "compt");
|
||||
mod = new G4KleinNishinaModel();
|
||||
em_config->SetExtraEmModel("gamma", "compt", mod, reg);
|
||||
proc = FindOrAddProcess(phot, "Rayl");
|
||||
proc->AddEmModel(-1, new G4LivermoreRayleighModel(), region);
|
||||
proc = FindOrAddProcess(phot, "compt");
|
||||
proc->AddEmModel(-1, new G4KleinNishinaModel(), region);
|
||||
mod = new G4LowEPComptonModel();
|
||||
mod->SetHighEnergyLimit(20*MeV);
|
||||
em_config->SetExtraEmModel("gamma", "compt", mod, reg);
|
||||
FindOrAddProcess(phot, "conv");
|
||||
mod = new G4BetheHeitler5DModel();
|
||||
em_config->SetExtraEmModel("gamma", "conv", mod, reg);
|
||||
proc->AddEmModel(-2, mod, region);
|
||||
proc = FindOrAddProcess(phot, "conv");
|
||||
proc->AddEmModel(-1, new G4BetheHeitler5DModel(), region);
|
||||
|
||||
} else if("G4EmStandardGS" == typesPhys[i]) {
|
||||
G4GoudsmitSaundersonMscModel* msc = new G4GoudsmitSaundersonMscModel();
|
||||
@@ -285,17 +279,31 @@ void G4EmModelActivator::ActivateEmOptions()
|
||||
}
|
||||
theParameters->DefineRegParamForDeex(adeexc);
|
||||
|
||||
} else if("G4EmStandardSS" == typesPhys[i] &&
|
||||
baseName != "G4EmStandard_opt3") {
|
||||
} else if("G4EmStandardSS" == typesPhys[i]) {
|
||||
G4EmParticleList emList;
|
||||
for(const auto& particleName : emList.PartNames()) {
|
||||
for(const auto& particleName : emList.EmChargedPartNames()) {
|
||||
G4ParticleDefinition* particle = table->FindParticle(particleName);
|
||||
if(particle && 0.0 != particle->GetPDGCharge()) {
|
||||
FindOrAddProcess(particle, "CoulombScat");
|
||||
G4eCoulombScatteringModel* sc = new G4eCoulombScatteringModel();
|
||||
sc->SetPolarAngleLimit(0.0);
|
||||
sc->SetLocked(true);
|
||||
em_config->SetExtraEmModel(particleName, "CoulombScat", sc, reg);
|
||||
if(nullptr != particle && 0.0 != particle->GetPDGCharge()) {
|
||||
proc = FindOrAddProcess(particle, "CoulombScat");
|
||||
if(nullptr != proc) {
|
||||
proc->AddEmModel(-1, new G4DummyModel(), region);
|
||||
}
|
||||
auto pm = particle->GetProcessManager();
|
||||
proc = new G4CoulombScattering("SingleCoulombScat", false);
|
||||
pm->AddDiscreteProcess(proc);
|
||||
proc->SetEmModel(new G4DummyModel());
|
||||
G4VEmModel* scmod = nullptr;
|
||||
if(particle->GetPDGMass() > CLHEP::GeV ||
|
||||
particle->GetParticleType() == "nucleus") {
|
||||
scmod = new G4IonCoulombScatteringModel();
|
||||
} else {
|
||||
scmod = new G4eCoulombScatteringModel(false);
|
||||
}
|
||||
scmod->SetPolarAngleLimit(0.0);
|
||||
scmod->SetLocked(true);
|
||||
proc->AddEmModel(-1, scmod, region);
|
||||
|
||||
// multiple scattering should be disabled
|
||||
if(particleName == "mu+" || particleName == "mu-") {
|
||||
em_config->SetExtraEmModel(particleName, "muMsc",
|
||||
new G4DummyModel(), reg);
|
||||
@@ -753,24 +761,31 @@ void G4EmModelActivator::SetMscParameters(const G4ParticleDefinition* part,
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
void G4EmModelActivator::FindOrAddProcess(const G4ParticleDefinition* part,
|
||||
const G4String& name)
|
||||
G4VEmProcess*
|
||||
G4EmModelActivator::FindOrAddProcess(const G4ParticleDefinition* part,
|
||||
const G4String& name)
|
||||
{
|
||||
G4ProcessManager* pm = part->GetProcessManager();
|
||||
G4ProcessVector* pv = pm->GetProcessList();
|
||||
G4int nproc = pm->GetProcessListLength();
|
||||
for(G4int i = 0; i<nproc; ++i) {
|
||||
if(((*pv)[i])->GetProcessName() == name) { return; }
|
||||
G4VEmProcess* proc = nullptr;
|
||||
auto pm = part->GetProcessManager();
|
||||
auto emproc = pm->GetProcessList();
|
||||
G4int n = (G4int)emproc->size();
|
||||
for(auto i=0; i<n; ++i) {
|
||||
auto ptr = (*emproc)[i];
|
||||
if(part->GetPDGEncoding() == 22 &&
|
||||
ptr->GetProcessSubType() == fGammaGeneralProcess) {
|
||||
proc = (static_cast<G4GammaGeneralProcess*>(ptr))->GetEmProcess(name);
|
||||
} else if(ptr->GetProcessName() == name) {
|
||||
proc = dynamic_cast<G4VEmProcess*>(ptr);
|
||||
}
|
||||
if(nullptr != proc) { return proc; }
|
||||
}
|
||||
if(name == "CoulombScat") {
|
||||
G4CoulombScattering* cs = new G4CoulombScattering();
|
||||
cs->SetEmModel(new G4DummyModel());
|
||||
pm->AddDiscreteProcess(cs);
|
||||
} else if(name == "Rayl") {
|
||||
if(name == "Rayl") {
|
||||
G4RayleighScattering* rs = new G4RayleighScattering();
|
||||
rs->SetEmModel(new G4DummyModel());
|
||||
pm->AddDiscreteProcess(rs);
|
||||
return rs;
|
||||
}
|
||||
return proc;
|
||||
}
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
@@ -53,13 +53,22 @@ G4EmParticleList::G4EmParticleList()
|
||||
"Bc-", "omega_b-","anti_omega_b-", "sigma_b+", "sigma_b-",
|
||||
"anti_sigma_b+", "anti_sigma_b-", "xi_b-", "anti_xi_b-"
|
||||
};
|
||||
}
|
||||
|
||||
G4EmParticleList::~G4EmParticleList()
|
||||
{}
|
||||
cNames =
|
||||
{
|
||||
"e-", "e+", "mu+", "mu-", "pi+",
|
||||
"pi-", "kaon+", "kaon-", "proton", "anti_proton",
|
||||
"alpha", "He3", "GenericIon", "deuteron", "triton"
|
||||
};
|
||||
}
|
||||
|
||||
const std::vector<G4String>& G4EmParticleList::PartNames() const
|
||||
{
|
||||
return pNames;
|
||||
}
|
||||
|
||||
const std::vector<G4String>& G4EmParticleList::EmChargedPartNames() const
|
||||
{
|
||||
return cNames;
|
||||
}
|
||||
|
||||
|
||||
@@ -182,11 +182,11 @@ void G4EmStandardPhysicsSS::ConstructProcess()
|
||||
// e-
|
||||
particle = G4Electron::Electron();
|
||||
|
||||
G4CoulombScattering* ss = new G4CoulombScattering();
|
||||
G4CoulombScattering* ss = new G4CoulombScattering(false);
|
||||
if(param->UseMottCorrection()) {
|
||||
ss->SetEmModel(new G4eDPWACoulombScatteringModel());
|
||||
} else {
|
||||
ss->SetEmModel(new G4eCoulombScatteringModel());
|
||||
ss->SetEmModel(new G4eCoulombScatteringModel(false));
|
||||
}
|
||||
ph->RegisterProcess(new G4eIonisation(), particle);
|
||||
ph->RegisterProcess(new G4eBremsstrahlung(), particle);
|
||||
@@ -198,11 +198,11 @@ void G4EmStandardPhysicsSS::ConstructProcess()
|
||||
// e+
|
||||
particle = G4Positron::Positron();
|
||||
|
||||
ss = new G4CoulombScattering();
|
||||
ss = new G4CoulombScattering(false);
|
||||
if(param->UseMottCorrection()) {
|
||||
ss->SetEmModel(new G4eDPWACoulombScatteringModel());
|
||||
} else {
|
||||
ss->SetEmModel(new G4eCoulombScatteringModel());
|
||||
ss->SetEmModel(new G4eCoulombScatteringModel(false));
|
||||
}
|
||||
ph->RegisterProcess(new G4eIonisation(), particle);
|
||||
ph->RegisterProcess(new G4eBremsstrahlung(), particle);
|
||||
@@ -217,7 +217,8 @@ void G4EmStandardPhysicsSS::ConstructProcess()
|
||||
ionIoni->SetFluctModel(fluc);
|
||||
ionIoni->SetEmModel(new G4LindhardSorensenIonModel());
|
||||
ph->RegisterProcess(ionIoni, particle);
|
||||
ph->RegisterProcess(new G4CoulombScattering(), particle);
|
||||
ss = new G4CoulombScattering(false);
|
||||
ph->RegisterProcess(ss, particle);
|
||||
|
||||
// muons, hadrons, ions
|
||||
G4EmBuilder::ConstructChargedSS(hmsc);
|
||||
|
||||
Reference in New Issue
Block a user