Geant4 11.4.0
Toolkit for the simulation of the passage of particles through matter
Loading...
Searching...
No Matches
G4EmDNAChemistry Class Reference

#include <G4EmDNAChemistry.hh>

Inheritance diagram for G4EmDNAChemistry:

Public Member Functions

 G4EmDNAChemistry ()
 ~G4EmDNAChemistry () override=default
void ConstructParticle () override
void ConstructMolecule () override
void ConstructProcess () override
void ConstructDissociationChannels () override
void ConstructReactionTable (G4DNAMolecularReactionTable *reactionTable) override
void ConstructTimeStepModel (G4DNAMolecularReactionTable *reactionTable) override
Public Member Functions inherited from G4VUserChemistryList
 G4VUserChemistryList (G4bool flag=true)
virtual ~G4VUserChemistryList ()
bool IsPhysicsConstructor ()
void ThisIsAPhysicsConstructor (G4bool flag=true)
void BuildPhysicsTable ()
Public Member Functions inherited from G4VPhysicsConstructor
 G4VPhysicsConstructor (const G4String &="")
 G4VPhysicsConstructor (const G4String &name, G4int physics_type)
virtual ~G4VPhysicsConstructor ()
void SetPhysicsName (const G4String &="")
const G4StringGetPhysicsName () const
void SetPhysicsType (G4int)
G4int GetPhysicsType () const
G4int GetInstanceID () const
virtual void TerminateWorker ()
void SetVerboseLevel (G4int value)
G4int GetVerboseLevel () const

Additional Inherited Members

Static Public Member Functions inherited from G4VPhysicsConstructor
static const G4VPCManagerGetSubInstanceManager ()
Protected Types inherited from G4VPhysicsConstructor
using PhysicsBuilder_V = G4VPCData::PhysicsBuilders_V
Protected Member Functions inherited from G4VUserChemistryList
void BuildPhysicsTable (G4MoleculeDefinition *)
void RegisterTimeStepModel (G4VITStepModel *timeStepModel, G4double startingTime=0)
Protected Member Functions inherited from G4VPhysicsConstructor
G4bool RegisterProcess (G4VProcess *process, G4ParticleDefinition *particle)
G4ParticleTable::G4PTblDicIteratorGetParticleIterator () const
PhysicsBuilder_V GetBuilders () const
void AddBuilder (G4PhysicsBuilderInterface *bld)
Protected Attributes inherited from G4VUserChemistryList
G4int verboseLevel
G4bool fIsPhysicsConstructor
Protected Attributes inherited from G4VPhysicsConstructor
G4int verboseLevel = 0
G4String namePhysics = ""
G4int typePhysics = 0
G4ParticleTabletheParticleTable = nullptr
G4int g4vpcInstanceID = 0
Static Protected Attributes inherited from G4VPhysicsConstructor
static G4RUN_DLL G4VPCManager subInstanceManager

Detailed Description

Definition at line 35 of file G4EmDNAChemistry.hh.

Constructor & Destructor Documentation

◆ G4EmDNAChemistry()

G4EmDNAChemistry::G4EmDNAChemistry ( )

Definition at line 72 of file G4EmDNAChemistry.cc.

72 :
74{
76}
static G4DNAChemistryManager * Instance()
void SetChemistryList(G4VUserChemistryList &)
G4VUserChemistryList(G4bool flag=true)

◆ ~G4EmDNAChemistry()

G4EmDNAChemistry::~G4EmDNAChemistry ( )
overridedefault

Member Function Documentation

◆ ConstructDissociationChannels()

void G4EmDNAChemistry::ConstructDissociationChannels ( )
overridevirtual

◆ ConstructMolecule()

void G4EmDNAChemistry::ConstructMolecule ( )
overridevirtual

Reimplemented from G4VUserChemistryList.

Definition at line 80 of file G4EmDNAChemistry.cc.

Referenced by ConstructParticle().

◆ ConstructParticle()

void G4EmDNAChemistry::ConstructParticle ( )
inlineoverridevirtual

Implements G4VPhysicsConstructor.

Definition at line 41 of file G4EmDNAChemistry.hh.

void ConstructMolecule() override

◆ ConstructProcess()

void G4EmDNAChemistry::ConstructProcess ( )
overridevirtual

Reimplemented from G4VUserChemistryList.

Definition at line 171 of file G4EmDNAChemistry.cc.

172{
173 auto pPhysicsListHelper = G4PhysicsListHelper::GetPhysicsListHelper();
174
175 //===============================================================
176 // Extend vibrational to low energy
177 // Anyway, solvation of electrons is taken into account from 7.4 eV
178 // So below this threshold, for now, no accurate modeling is done
179 //
180 G4VProcess* pProcess = G4ProcessTable::GetProcessTable()->
181 FindProcess("e-_G4DNAVibExcitation", "e-");
182
183 if (pProcess != nullptr)
184 {
185 G4DNAVibExcitation* pVibExcitation = (G4DNAVibExcitation*) pProcess;
186 G4VEmModel* pModel = pVibExcitation->EmModel();
187 G4DNASancheExcitationModel* pSancheExcitationMod =
188 dynamic_cast<G4DNASancheExcitationModel*>(pModel);
189 if(pSancheExcitationMod != nullptr)
190 {
191 pSancheExcitationMod->ExtendLowEnergyLimit(0.025 * eV);
192 }
193 }
194
195 //===============================================================
196 // Electron Solvatation
197 //
198 pProcess = G4ProcessTable::GetProcessTable()->FindProcess("e-_G4DNAElectronSolvation", "e-");
199
200 if (pProcess == nullptr)
201 {
202 pPhysicsListHelper->RegisterProcess(new G4DNAElectronSolvation("e-_G4DNAElectronSolvation"),
204 }
205
206 //===============================================================
207 // Define processes for molecules
208 //
209 G4MoleculeTable* pMoleculeTable = G4MoleculeTable::Instance();
210 G4MoleculeDefinitionIterator iterator = pMoleculeTable->GetDefintionIterator();
211 iterator.reset();
212 while (iterator())
213 {
214 G4MoleculeDefinition* pMoleculeDef = iterator.value();
215
216 if (pMoleculeDef != G4H2O::Definition())
217 {
218 G4DNABrownianTransportation* pBrownianTransport = new G4DNABrownianTransportation();
219 pPhysicsListHelper->RegisterProcess(pBrownianTransport, pMoleculeDef);
220 }
221 else
222 {
223 pMoleculeDef->GetProcessManager()->AddRestProcess(new G4DNAElectronHoleRecombination(), 2);
224 G4DNAMolecularDissociation* pDissociationProcess = new G4DNAMolecularDissociation("H2O_DNAMolecularDecay");
225 pDissociationProcess->SetDisplacer(pMoleculeDef, new G4DNAWaterDissociationDisplacer);
226 pDissociationProcess->SetVerboseLevel(1);
227
228 pMoleculeDef->GetProcessManager()->AddRestProcess(pDissociationProcess, 1);
229 }
230 }
231
233}
G4MoleculeIterator< G4MoleculeDefinition > G4MoleculeDefinitionIterator
void SetDisplacer(Species *, Displacer *)
static G4Electron * Definition()
Definition G4Electron.cc:45
static G4H2O * Definition()
Definition G4H2O.cc:42
G4MoleculeDefinitionIterator GetDefintionIterator()
static G4MoleculeTable * Instance()
G4ProcessManager * GetProcessManager() const
static G4PhysicsListHelper * GetPhysicsListHelper()
G4int AddRestProcess(G4VProcess *aProcess, G4int ord=ordDefault)
static G4ProcessTable * GetProcessTable()
G4VProcess * FindProcess(const G4String &processName, const G4String &particleName) const
G4VEmModel * EmModel(std::size_t index=0) const
void SetVerboseLevel(G4int value)

◆ ConstructReactionTable()

void G4EmDNAChemistry::ConstructReactionTable ( G4DNAMolecularReactionTable * reactionTable)
overridevirtual

Implements G4VUserChemistryList.

Definition at line 94 of file G4EmDNAChemistry.cc.

96{
97 //-----------------------------------
98 //Get the molecular configuration
99 G4MolecularConfiguration* OH =
101 G4MolecularConfiguration* OHm =
103 G4MolecularConfiguration* e_aq =
105 G4MolecularConfiguration* H2 =
107 G4MolecularConfiguration* H3Op =
109 G4MolecularConfiguration* H =
111 G4MolecularConfiguration* H2O2 =
113
114 //------------------------------------------------------------------
115 // e_aq + e_aq + 2H2O -> H2 + 2OH-
116 G4DNAMolecularReactionData* reactionData =
117 new G4DNAMolecularReactionData(0.5e10 * (1e-3 * m3 / (mole * s)), e_aq, e_aq);
118 reactionData->AddProduct(OHm);
119 reactionData->AddProduct(OHm);
120 reactionData->AddProduct(H2);
121 theReactionTable->SetReaction(reactionData);
122 //------------------------------------------------------------------
123 // e_aq + *OH -> OH-
124 reactionData = new G4DNAMolecularReactionData(
125 2.95e10 * (1e-3 * m3 / (mole * s)), e_aq, OH);
126 reactionData->AddProduct(OHm);
127 theReactionTable->SetReaction(reactionData);
128 //------------------------------------------------------------------
129 // e_aq + H* + H2O -> H2 + OH-
130 reactionData = new G4DNAMolecularReactionData(
131 2.65e10 * (1e-3 * m3 / (mole * s)), e_aq, H);
132 reactionData->AddProduct(OHm);
133 reactionData->AddProduct(H2);
134 theReactionTable->SetReaction(reactionData);
135 //------------------------------------------------------------------
136 // e_aq + H3O+ -> H* + H2O
137 reactionData = new G4DNAMolecularReactionData(
138 2.11e10 * (1e-3 * m3 / (mole * s)), e_aq, H3Op);
139 reactionData->AddProduct(H);
140 theReactionTable->SetReaction(reactionData);
141 //------------------------------------------------------------------
142 // e_aq + H2O2 -> OH- + *OH
143 reactionData = new G4DNAMolecularReactionData(
144 1.41e10 * (1e-3 * m3 / (mole * s)), e_aq, H2O2);
145 reactionData->AddProduct(OHm);
146 reactionData->AddProduct(OH);
147 theReactionTable->SetReaction(reactionData);
148 //------------------------------------------------------------------
149 // *OH + *OH -> H2O2
150 reactionData = new G4DNAMolecularReactionData(
151 0.44e10 * (1e-3 * m3 / (mole * s)), OH, OH);
152 reactionData->AddProduct(H2O2);
153 theReactionTable->SetReaction(reactionData);
154 //------------------------------------------------------------------
155 // *OH + *H -> H2O
156 theReactionTable->SetReaction(1.44e10 * (1e-3 * m3 / (mole * s)), OH, H);
157 //------------------------------------------------------------------
158 // *H + *H -> H2
159 reactionData = new G4DNAMolecularReactionData(
160 1.20e10 * (1e-3 * m3 / (mole * s)), H, H);
161 reactionData->AddProduct(H2);
162 theReactionTable->SetReaction(reactionData);
163 //------------------------------------------------------------------
164 // H3O+ + OH- -> 2H2O
165 theReactionTable->SetReaction(1.43e11 * (1e-3 * m3 / (mole * s)), H3Op, OHm);
166 //------------------------------------------------------------------
167}
G4MolecularConfiguration * GetConfiguration(const G4String &, bool mustExist=true)

◆ ConstructTimeStepModel()

void G4EmDNAChemistry::ConstructTimeStepModel ( G4DNAMolecularReactionTable * reactionTable)
overridevirtual

Implements G4VUserChemistryList.

Definition at line 237 of file G4EmDNAChemistry.cc.

239{
240 G4VDNAReactionModel* reactionRadiusComputer = new G4DNASmoluchowskiReactionModel();
241 reactionTable->PrintTable(reactionRadiusComputer);
242
243 G4DNAMolecularStepByStepModel* stepByStep = new G4DNAMolecularStepByStepModel();
244 stepByStep->SetReactionModel(reactionRadiusComputer);
245// ((G4DNAMoleculeEncounterStepper*) stepByStep->GetTimeStepper())->
246// SetVerbose(5);
247
248 RegisterTimeStepModel(stepByStep, 0);
249}
void PrintTable(G4VDNAReactionModel *=nullptr)
void SetReactionModel(G4VDNAReactionModel *)
void RegisterTimeStepModel(G4VITStepModel *timeStepModel, G4double startingTime=0)

The documentation for this class was generated from the following files: