Geant4-11
Public Member Functions | Static Public Member Functions | Protected Types | Protected Member Functions | Protected Attributes | Static Protected Attributes
G4EmDNAChemistry_option3 Class Reference

#include <G4EmDNAChemistry_option3.hh>

Inheritance diagram for G4EmDNAChemistry_option3:
G4VUserChemistryList G4VPhysicsConstructor

Public Member Functions

void BuildPhysicsTable ()
 
virtual void ConstructDissociationChannels ()
 
virtual void ConstructMolecule ()
 
virtual void ConstructParticle ()
 
virtual void ConstructProcess ()
 
virtual void ConstructReactionTable (G4DNAMolecularReactionTable *reactionTable)
 
virtual void ConstructTimeStepModel (G4DNAMolecularReactionTable *reactionTable)
 
 G4EmDNAChemistry_option3 ()
 
G4int GetInstanceID () const
 
const G4StringGetPhysicsName () const
 
G4int GetPhysicsType () const
 
G4int GetVerboseLevel () const
 
bool IsPhysicsConstructor ()
 
void SetPhysicsName (const G4String &="")
 
void SetPhysicsType (G4int)
 
void SetVerboseLevel (G4int value)
 
virtual void TerminateWorker ()
 
void ThisIsAPhysicsConstructor (bool flag=true)
 
virtual ~G4EmDNAChemistry_option3 ()
 

Static Public Member Functions

static const G4VPCManagerGetSubInstanceManager ()
 

Protected Types

using PhysicsBuilder_V = G4VPCData::PhysicsBuilders_V
 

Protected Member Functions

void AddBuilder (G4PhysicsBuilderInterface *bld)
 
void BuildPhysicsTable (G4MoleculeDefinition *)
 
PhysicsBuilder_V GetBuilders () const
 
G4ParticleTable::G4PTblDicIteratorGetParticleIterator () const
 
G4bool RegisterProcess (G4VProcess *process, G4ParticleDefinition *particle)
 
void RegisterTimeStepModel (G4VITStepModel *timeStepModel, double startingTime=0)
 

Protected Attributes

bool fIsPhysicsConstructor
 
G4int g4vpcInstanceID = 0
 
G4String namePhysics = ""
 
G4ParticleTabletheParticleTable = nullptr
 
G4int typePhysics = 0
 
int verboseLevel
 
G4int verboseLevel = 0
 

Static Protected Attributes

static G4RUN_DLL G4VPCManager subInstanceManager
 

Detailed Description

Definition at line 43 of file G4EmDNAChemistry_option3.hh.

Member Typedef Documentation

◆ PhysicsBuilder_V

Definition at line 149 of file G4VPhysicsConstructor.hh.

Constructor & Destructor Documentation

◆ G4EmDNAChemistry_option3()

G4EmDNAChemistry_option3::G4EmDNAChemistry_option3 ( )

Definition at line 113 of file G4EmDNAChemistry_option3.cc.

113 :
115{
117}
static G4DNAChemistryManager * Instance()
void SetChemistryList(G4VUserChemistryList &)
G4VUserChemistryList(bool flag=true)

References G4DNAChemistryManager::Instance(), and G4DNAChemistryManager::SetChemistryList().

◆ ~G4EmDNAChemistry_option3()

G4EmDNAChemistry_option3::~G4EmDNAChemistry_option3 ( )
virtual

Definition at line 121 of file G4EmDNAChemistry_option3.cc.

122{
123}

Member Function Documentation

◆ AddBuilder()

void G4VPhysicsConstructor::AddBuilder ( G4PhysicsBuilderInterface bld)
protectedinherited

Definition at line 99 of file G4VPhysicsConstructor.cc.

100{
101 (subInstanceManager.offset[g4vpcInstanceID])._builders->push_back(bld);
102}
static G4RUN_DLL G4VPCManager subInstanceManager
G4RUN_DLL G4ThreadLocalStatic T * offset

References G4VPhysicsConstructor::g4vpcInstanceID, G4VUPLSplitter< T >::offset, and G4VPhysicsConstructor::subInstanceManager.

Referenced by G4HadronPhysicsFTFP_BERT::Kaon(), G4HadronPhysicsFTF_BIC::Kaon(), G4HadronPhysicsINCLXX::Kaon(), G4HadronPhysicsFTFP_BERT::Neutron(), G4HadronPhysicsQGSP_BERT::Neutron(), G4HadronPhysicsQGSP_BIC::Neutron(), G4HadronPhysicsFTF_BIC::Neutron(), G4HadronPhysicsFTFP_BERT_HP::Neutron(), G4HadronPhysicsINCLXX::Neutron(), G4HadronPhysicsQGS_BIC::Neutron(), G4HadronPhysicsQGSP_BERT_HP::Neutron(), G4HadronPhysicsQGSP_BIC_HP::Neutron(), G4HadronPhysicsShielding::Neutron(), G4HadronPhysicsFTFP_BERT::Pion(), G4HadronPhysicsQGSP_BERT::Pion(), G4HadronPhysicsQGSP_BIC::Pion(), G4HadronPhysicsFTF_BIC::Pion(), G4HadronPhysicsINCLXX::Pion(), G4HadronPhysicsQGS_BIC::Pion(), G4HadronPhysicsFTFP_BERT::Proton(), G4HadronPhysicsQGSP_BERT::Proton(), G4HadronPhysicsQGSP_BIC::Proton(), G4HadronPhysicsFTF_BIC::Proton(), G4HadronPhysicsINCLXX::Proton(), G4HadronPhysicsNuBeam::Proton(), G4HadronPhysicsQGS_BIC::Proton(), and G4HadronPhysicsQGSP_BIC_AllHP::Proton().

◆ BuildPhysicsTable() [1/2]

void G4VUserChemistryList::BuildPhysicsTable ( )
inherited

◆ BuildPhysicsTable() [2/2]

void G4VUserChemistryList::BuildPhysicsTable ( G4MoleculeDefinition moleculeDef)
protectedinherited

Definition at line 77 of file G4VUserChemistryList.cc.

78{
79 //Get processes from master thread;
80 G4ProcessManager* pManager = moleculeDef->GetProcessManager();
81
82 if (!pManager)
83 {
84#ifdef G4VERBOSE
85 if (verboseLevel > 0)
86 {
87 G4cout << "G4VUserPhysicsList::BuildPhysicsTable "
88 << " : No Process Manager for " << moleculeDef->GetParticleName()
89 << G4endl;
90 G4cout << moleculeDef->GetParticleName()
91 << " should be created in your PhysicsList" <<G4endl;
92 }
93#endif
94 G4Exception("G4VUserChemistryList::BuildPhysicsTable",
95 "Run0271", FatalException,
96 "No process manager");
97 return;
98 }
99
100 G4ProcessManager* pManagerShadow = moleculeDef->GetMasterProcessManager();
101 G4ProcessVector* pVector = pManager->GetProcessList();
102 if (!pVector)
103 {
104#ifdef G4VERBOSE
105 if (verboseLevel > 0)
106 {
107 G4cout << "G4VUserChemistryList::BuildPhysicsTable "
108 << " : No Process Vector for " << moleculeDef->GetParticleName()
109 << G4endl;
110 }
111#endif
112 G4Exception("G4VUserChemistryList::BuildPhysicsTable",
113 "Run0272", FatalException,
114 "No process Vector");
115 return;
116 }
117#ifdef G4VERBOSE
118 if (verboseLevel > 2)
119 {
120 G4cout << "G4VUserChemistryList::BuildPhysicsTable %%%%%% "
121 << moleculeDef->GetParticleName() << G4endl;
122 G4cout << " ProcessManager : " << pManager
123 << " ProcessManagerShadow : " << pManagerShadow << G4endl;
124 for(std::size_t iv1=0;iv1<pVector->size();++iv1)
125 {
126 G4cout << " " << iv1 << " - " << (*pVector)[iv1]->GetProcessName()
127 << G4endl;
128 }
129 G4cout << "--------------------------------------------------------------"
130 << G4endl;
131 G4ProcessVector* pVectorShadow = pManagerShadow->GetProcessList();
132
133 for(std::size_t iv2=0;iv2<pVectorShadow->size();++iv2)
134 {
135 G4cout << " " << iv2 << " - " << (*pVectorShadow)[iv2]->GetProcessName()
136 << G4endl;
137 }
138 }
139#endif
140 for (std::size_t j = 0; j < pVector->size(); ++j)
141 {
142 //Andrea July 16th 2013 : migration to new interface...
143 //Infer if we are in a worker thread or master thread
144 //Master thread is the one in which the process manager
145 // and process manager shadow pointers are the same
146 if (pManagerShadow == pManager)
147 {
148 (*pVector)[j]->BuildPhysicsTable(*moleculeDef);
149 }
150 else
151 {
152 (*pVector)[j]->BuildWorkerPhysicsTable(*moleculeDef);
153 }
154
155 }
156}
@ FatalException
void G4Exception(const char *originOfException, const char *exceptionCode, G4ExceptionSeverity severity, const char *description)
Definition: G4Exception.cc:35
#define G4endl
Definition: G4ios.hh:57
G4GLOB_DLL std::ostream G4cout
G4ProcessManager * GetProcessManager() const
G4ProcessManager * GetMasterProcessManager() const
const G4String & GetParticleName() const
G4ProcessVector * GetProcessList() const
std::size_t size() const

References FatalException, G4cout, G4endl, G4Exception(), G4ParticleDefinition::GetMasterProcessManager(), G4ParticleDefinition::GetParticleName(), G4ProcessManager::GetProcessList(), G4ParticleDefinition::GetProcessManager(), G4ProcessVector::size(), and G4VUserChemistryList::verboseLevel.

◆ ConstructDissociationChannels()

void G4EmDNAChemistry_option3::ConstructDissociationChannels ( )
virtual

Reimplemented from G4VUserChemistryList.

Definition at line 268 of file G4EmDNAChemistry_option3.cc.

269{
270 //-----------------------------------
271 //Get the molecular configuration
286
287 //-------------------------------------
288 //Define the decay channels
295
298
300 // EXCITATIONS //
302 G4DNAWaterExcitationStructure waterExcitation;
303 //--------------------------------------------------------
304 //---------------Excitation on the fifth layer------------
305
306 decCh1 = new G4MolecularDissociationChannel("A^1B_1_Relaxation");
307 decCh2 = new G4MolecularDissociationChannel("A^1B_1_DissociativeDecay");
308 //Decay 1 : OH + H
309 decCh1->SetEnergy(waterExcitation.ExcitationEnergy(0));
310 decCh1->SetProbability(0.35);
311 decCh1->SetDisplacementType(G4DNAWaterDissociationDisplacer::NoDisplacement);
312
313 decCh2->AddProduct(OH);
314 decCh2->AddProduct(H);
315 decCh2->SetProbability(0.65);
316 decCh2->SetDisplacementType(
317 G4DNAWaterDissociationDisplacer::A1B1_DissociationDecay);
318
319 occ->RemoveElectron(4, 1); // this is the transition form ground state to
320 occ->AddElectron(5, 1); // the first unoccupied orbital: A^1B_1
321
322 water->NewConfigurationWithElectronOccupancy("A^1B_1", *occ);
323 water->AddDecayChannel("A^1B_1", decCh1);
324 water->AddDecayChannel("A^1B_1", decCh2);
325
326 //--------------------------------------------------------
327 //---------------Excitation on the fourth layer-----------
328 decCh1 = new G4MolecularDissociationChannel("B^1A_1_Relaxation_Channel");
329 decCh2 = new G4MolecularDissociationChannel("B^1A_1_DissociativeDecay");
330 decCh3 = new G4MolecularDissociationChannel("B^1A_1_AutoIonisation_Channel");
331 decCh4 = new G4MolecularDissociationChannel("A^1B_1_DissociativeDecay");
332 decCh5 = new G4MolecularDissociationChannel("B^1A_1_DissociativeDecay2");
333
334
335 //Decay 1 : energy
336 decCh1->SetEnergy(waterExcitation.ExcitationEnergy(1));
337 decCh1->SetProbability(0.175);
338
339 //Decay 2 : 2OH + H_2
340 decCh2->AddProduct(H2);
341 decCh2->AddProduct(OH);
342 decCh2->AddProduct(OH);
343 decCh2->SetProbability(0.0325);
344 decCh2->SetDisplacementType(
345 G4DNAWaterDissociationDisplacer::B1A1_DissociationDecay);
346
347 //Decay 3 : OH + H_3Op + e_aq
348 decCh3->AddProduct(OH);
349 decCh3->AddProduct(H3O);
350 decCh3->AddProduct(e_aq);
351 decCh3->SetProbability(0.50);
352 decCh3->SetDisplacementType(G4DNAWaterDissociationDisplacer::AutoIonisation);
353
354 //Decay 4 : H + OH
355 decCh4->AddProduct(H);
356 decCh4->AddProduct(OH);
357 decCh4->SetProbability(0.2535);
358 decCh4->SetDisplacementType(G4DNAWaterDissociationDisplacer::A1B1_DissociationDecay);
359
360 //Decay 5 : 2H + O
361 decCh5->AddProduct(O);
362 decCh5->AddProduct(H);
363 decCh5->AddProduct(H);
364 decCh5->SetProbability(0.039);
365 decCh5->SetDisplacementType(G4DNAWaterDissociationDisplacer::B1A1_DissociationDecay2);
366
367 *occ = *(water->GetGroundStateElectronOccupancy());
368 occ->RemoveElectron(3); // this is the transition form ground state to
369 occ->AddElectron(5, 1); // the first unoccupied orbital: B^1A_1
370
371 water->NewConfigurationWithElectronOccupancy("B^1A_1", *occ);
372 water->AddDecayChannel("B^1A_1", decCh1);
373 water->AddDecayChannel("B^1A_1", decCh2);
374 water->AddDecayChannel("B^1A_1", decCh3);
375 water->AddDecayChannel("B^1A_1", decCh4);
376 water->AddDecayChannel("B^1A_1", decCh5);
377
378 //-------------------------------------------------------
379 //-------------------Excitation of 3rd layer-----------------
381 "Excitation3rdLayer_AutoIonisation_Channel");
383 "Excitation3rdLayer_Relaxation_Channel");
384
385 //Decay channel 1 : : OH + H_3Op + e_aq
386 decCh1->AddProduct(OH);
387 decCh1->AddProduct(H3O);
388 decCh1->AddProduct(e_aq);
389
390 decCh1->SetProbability(0.5);
391 decCh1->SetDisplacementType(G4DNAWaterDissociationDisplacer::AutoIonisation);
392
393 //Decay channel 2 : energy
394 decCh2->SetEnergy(waterExcitation.ExcitationEnergy(2));
395 decCh2->SetProbability(0.5);
396
397 //Electronic configuration of this decay
398 *occ = *(water->GetGroundStateElectronOccupancy());
399 occ->RemoveElectron(2, 1);
400 occ->AddElectron(5, 1);
401
402 //Configure the water molecule
403 water->NewConfigurationWithElectronOccupancy("Excitation3rdLayer", *occ);
404 water->AddDecayChannel("Excitation3rdLayer", decCh1);
405 water->AddDecayChannel("Excitation3rdLayer", decCh2);
406
407 //-------------------------------------------------------
408 //-------------------Excitation of 2nd layer-----------------
410 "Excitation2ndLayer_AutoIonisation_Channel");
412 "Excitation2ndLayer_Relaxation_Channel");
413
414 //Decay Channel 1 : : OH + H_3Op + e_aq
415 decCh1->AddProduct(OH);
416 decCh1->AddProduct(H3O);
417 decCh1->AddProduct(e_aq);
418
419 decCh1->SetProbability(0.5);
420 decCh1->SetDisplacementType(G4DNAWaterDissociationDisplacer::AutoIonisation);
421
422 //Decay channel 2 : energy
423 decCh2->SetEnergy(waterExcitation.ExcitationEnergy(3));
424 decCh2->SetProbability(0.5);
425
426 *occ = *(water->GetGroundStateElectronOccupancy());
427 occ->RemoveElectron(1, 1);
428 occ->AddElectron(5, 1);
429
430 water->NewConfigurationWithElectronOccupancy("Excitation2ndLayer", *occ);
431 water->AddDecayChannel("Excitation2ndLayer", decCh1);
432 water->AddDecayChannel("Excitation2ndLayer", decCh2);
433
434 //-------------------------------------------------------
435 //-------------------Excitation of 1st layer-----------------
437 "Excitation1stLayer_AutoIonisation_Channel");
439 "Excitation1stLayer_Relaxation_Channel");
440
441 *occ = *(water->GetGroundStateElectronOccupancy());
442 occ->RemoveElectron(0, 1);
443 occ->AddElectron(5, 1);
444
445 //Decay Channel 1 : : OH + H_3Op + e_aq
446 decCh1->AddProduct(OH);
447 decCh1->AddProduct(H3O);
448 decCh1->AddProduct(e_aq);
449 decCh1->SetProbability(0.5);
450 decCh1->SetDisplacementType(G4DNAWaterDissociationDisplacer::AutoIonisation);
451
452 //Decay channel 2 : energy
453 decCh2->SetEnergy(waterExcitation.ExcitationEnergy(4));
454 decCh2->SetProbability(0.5);
455
456 water->NewConfigurationWithElectronOccupancy("Excitation1stLayer", *occ);
457 water->AddDecayChannel("Excitation1stLayer", decCh1);
458 water->AddDecayChannel("Excitation1stLayer", decCh2);
459
461 // IONISATION //
463 //--------------------------------------------------------
464 //------------------- Ionisation -------------------------
465
466 decCh1 = new G4MolecularDissociationChannel("Ionisation_Channel");
467
468 //Decay Channel 1 : : OH + H_3Op
469 decCh1->AddProduct(H3O);
470 decCh1->AddProduct(OH);
471 decCh1->SetProbability(1);
472 decCh1->SetDisplacementType(
473 G4DNAWaterDissociationDisplacer::Ionisation_DissociationDecay);
474
475 *occ = *(water->GetGroundStateElectronOccupancy());
476 occ->RemoveElectron(4, 1);
477 // this is a ionized h2O with a hole in its last orbital
478 water->NewConfigurationWithElectronOccupancy("Ionisation5", *occ);
479 water->AddDecayChannel("Ionisation5",
480 decCh1);
481
482 *occ = *(water->GetGroundStateElectronOccupancy());
483 occ->RemoveElectron(3, 1);
484 water->NewConfigurationWithElectronOccupancy("Ionisation4", *occ);
485 water->AddDecayChannel("Ionisation4",
486 new G4MolecularDissociationChannel(*decCh1));
487
488 *occ = *(water->GetGroundStateElectronOccupancy());
489 occ->RemoveElectron(2, 1);
490 water->NewConfigurationWithElectronOccupancy("Ionisation3", *occ);
491 water->AddDecayChannel("Ionisation3",
492 new G4MolecularDissociationChannel(*decCh1));
493
494 *occ = *(water->GetGroundStateElectronOccupancy());
495 occ->RemoveElectron(1, 1);
496 water->NewConfigurationWithElectronOccupancy("Ionisation2", *occ);
497 water->AddDecayChannel("Ionisation2",
498 new G4MolecularDissociationChannel(*decCh1));
499
500 *occ = *(water->GetGroundStateElectronOccupancy());
501 occ->RemoveElectron(0, 1);
502 water->NewConfigurationWithElectronOccupancy("Ionisation1", *occ);
503 water->AddDecayChannel("Ionisation1",
504 new G4MolecularDissociationChannel(*decCh1));
505
507 // Dissociative Attachment //
509 decCh1 = new G4MolecularDissociationChannel("DissociativeAttachment_ch1");
510
511 //Decay 1 : OHm + H
512 decCh1->AddProduct(H2);
513 decCh1->AddProduct(OHm);
514 decCh1->AddProduct(OH);
515 decCh1->SetProbability(1);
517 DissociativeAttachment);
518
519 *occ = *(water->GetGroundStateElectronOccupancy());
520 occ->AddElectron(5,1); // H_2O^-
521
522 water->NewConfigurationWithElectronOccupancy("DissociativeAttachment_ch1", *occ);
523 water->AddDecayChannel("DissociativeAttachment_ch1", decCh1);
524
526 // Electron-hole recombination //
528 decCh1 = new G4MolecularDissociationChannel("H2Ovib_DissociationDecay1");
529 decCh2 = new G4MolecularDissociationChannel("H2Ovib_DissociationDecay2");
530 decCh3 = new G4MolecularDissociationChannel("H2Ovib_DissociationDecay3");
531 decCh4 = new G4MolecularDissociationChannel("H2Ovib_DissociationDecay4");
532
533 //Decay 1 : 2OH + H_2
534 decCh1->AddProduct(H2);
535 decCh1->AddProduct(OH);
536 decCh1->AddProduct(OH);
537 decCh1->SetProbability(0.1365);
539 B1A1_DissociationDecay);
540
541 //Decay 2 : OH + H
542 decCh2->AddProduct(OH);
543 decCh2->AddProduct(H);
544 decCh2->SetProbability(0.3575);
546 A1B1_DissociationDecay);
547
548 //Decay 3 : 2H + O(3p)
549 decCh3->AddProduct(O);
550 decCh3->AddProduct(H);
551 decCh3->AddProduct(H);
552 decCh3->SetProbability(0.156);
554 B1A1_DissociationDecay2);
555
556 //Decay 4 : relaxation
557 decCh4->SetProbability(0.35);
558
559 const auto pH2Ovib = G4H2O::Definition()->NewConfiguration("H2Ovib");
560 assert(pH2Ovib != nullptr);
561
562 water->AddDecayChannel(pH2Ovib, decCh1);
563 water->AddDecayChannel(pH2Ovib, decCh2);
564 water->AddDecayChannel(pH2Ovib, decCh3);
565 water->AddDecayChannel(pH2Ovib, decCh4);
566
567 delete occ;
568}
G4int AddElectron(G4int orbit, G4int number=1)
G4int RemoveElectron(G4int orbit, G4int number=1)
static G4H2O * Definition()
Definition: G4H2O.cc:42
void AddProduct(Product *, G4double displacement=0.)
const G4ElectronOccupancy * GetGroundStateElectronOccupancy() const
void AddDecayChannel(const G4MolecularConfiguration *molConf, const G4MolecularDissociationChannel *channel)
G4MolecularConfiguration * NewConfiguration(const G4String &excitedStateLabel)
G4MolecularConfiguration * NewConfigurationWithElectronOccupancy(const G4String &excitedStateLabel, const G4ElectronOccupancy &, double decayTime=0.)
G4MolecularConfiguration * GetConfiguration(const G4String &, bool mustExist=true)

References G4MoleculeDefinition::AddDecayChannel(), G4ElectronOccupancy::AddElectron(), G4MolecularDissociationChannel::AddProduct(), G4H2O::Definition(), G4DNAWaterExcitationStructure::ExcitationEnergy(), G4MoleculeTable::GetConfiguration(), G4MoleculeDefinition::GetGroundStateElectronOccupancy(), G4MoleculeTable::Instance(), G4MoleculeDefinition::NewConfiguration(), G4MoleculeDefinition::NewConfigurationWithElectronOccupancy(), G4ElectronOccupancy::RemoveElectron(), G4MolecularDissociationChannel::SetDisplacementType(), G4MolecularDissociationChannel::SetEnergy(), and G4MolecularDissociationChannel::SetProbability().

◆ ConstructMolecule()

void G4EmDNAChemistry_option3::ConstructMolecule ( )
virtual

Reimplemented from G4VUserChemistryList.

Definition at line 127 of file G4EmDNAChemistry_option3.cc.

128{
129 //-----------------------------------
130 // G4Electron::Definition(); // safety
131
132 //-----------------------------------
133 // Create the definition
134
142
147
148 //____________________________________________________________________________
149
152 9.46e-9 * (m2/s));
154
157 2.2e-9 * (m2/s));
159
161 CreateConfiguration("OHm", // just a tag to store and retrieve from
162 // G4MoleculeTable
164 -1, // charge
165 5.3e-9 * (m2 / s));
166 OHm->SetMass(17.0079 * g / Avogadro * c_squared);
167 OHm->SetVanDerVaalsRadius(0.33*nm);
168
169
170
171
175
179
182 4.8e-9 * (m2/s));
184
185
188 2.3e-9 * (m2/s));
190
191 // molecules extension (RITRACKS)
192
195
197 CreateConfiguration("HO2m", // just a tag to store and retrieve from
198 // G4MoleculeTable
200 -1, // charge
201 1.4e-9 * (m2 / s));
202 HO2m->SetMass(33.00396 * g / Avogadro * c_squared);
203 HO2m->SetVanDerVaalsRadius(0.25*nm);
204
207
209 CreateConfiguration("Om", // just a tag to store and retrieve from
210 // G4MoleculeTable
212 -1, // charge
213 2.0e-9 * (m2 / s));
214 Om->SetMass(15.99829 * g / Avogadro * c_squared);
215 Om->SetVanDerVaalsRadius(0.25*nm);
216
219
221 CreateConfiguration("O2m", // just a tag to store and retrieve from
222 // G4MoleculeTable
224 -1, // charge
225 1.75e-9 * (m2 / s));
226 O2m->SetMass(31.99602 * g / Avogadro * c_squared);
227 O2m->SetVanDerVaalsRadius(0.22*nm);
228
231
233 CreateConfiguration("O3m", // just a tag to store and retrieve from
234 // G4MoleculeTable
236 -1, // charge
237 2.0e-9 * (m2 / s));
238 O3m->SetMass(47.99375 * g / Avogadro * c_squared);
239 O3m->SetVanDerVaalsRadius(0.20*nm);
240
242 CreateConfiguration("H2O(B)", // just a tag to store and retrieve from
243 // G4MoleculeTable
245 0, // charge
246 0 * (m2 / s));
247
249 CreateConfiguration("H3Op(B)", // just a tag to store and retrieve from
250 // G4MoleculeTable
252 1, // charge
253 0 * (m2 / s));
254
256 CreateConfiguration("OHm(B)", // just a tag to store and retrieve from
257 // G4MoleculeTable
259 -1, // charge
260 0 * (m2 / s));
261
263
264}
static constexpr double nm
Definition: G4SIunits.hh:92
static constexpr double s
Definition: G4SIunits.hh:154
static constexpr double g
Definition: G4SIunits.hh:168
static constexpr double m2
Definition: G4SIunits.hh:110
static G4Electron_aq * Definition()
static G4FakeMolecule * Definition()
static G4H2O2 * Definition()
Definition: G4H2O2.cc:45
static G4H2 * Definition()
Definition: G4H2.cc:45
static G4H3O * Definition()
Definition: G4H3O.cc:46
static G4HO2 * Definition()
Definition: G4HO2.cc:45
static G4Hydrogen * Definition()
Definition: G4Hydrogen.cc:45
G4MolecularConfiguration * CreateConfiguration(const G4String &userIdentifier, const G4MoleculeDefinition *molDef, const G4String &configurationLabel, const G4ElectronOccupancy &eOcc)
static G4O2 * Definition()
Definition: G4O2.cc:45
static G4O3 * Definition()
Definition: G4O3.cc:45
static G4OH * Definition()
Definition: G4OH.cc:45
static G4Oxygen * Definition()
Definition: G4Oxygen.cc:44
float Avogadro
Definition: hepunit.py:252
float c_squared
Definition: hepunit.py:257

References source.hepunit::Avogadro, source.hepunit::c_squared, G4MoleculeTable::CreateConfiguration(), G4Electron_aq::Definition(), G4FakeMolecule::Definition(), G4H2::Definition(), G4H2O::Definition(), G4H2O2::Definition(), G4H3O::Definition(), G4HO2::Definition(), G4Hydrogen::Definition(), G4O2::Definition(), G4O3::Definition(), G4OH::Definition(), G4Oxygen::Definition(), g, G4MoleculeTable::GetConfiguration(), G4MoleculeTable::Instance(), m2, nm, s, G4MolecularConfiguration::SetDiffusionCoefficient(), G4MolecularConfiguration::SetMass(), and G4MolecularConfiguration::SetVanDerVaalsRadius().

Referenced by ConstructParticle().

◆ ConstructParticle()

virtual void G4EmDNAChemistry_option3::ConstructParticle ( )
inlinevirtual

Implements G4VPhysicsConstructor.

Definition at line 52 of file G4EmDNAChemistry_option3.hh.

53 {
55 }

References ConstructMolecule().

◆ ConstructProcess()

void G4EmDNAChemistry_option3::ConstructProcess ( )
virtual

Reimplemented from G4VUserChemistryList.

Definition at line 1145 of file G4EmDNAChemistry_option3.cc.

1146{
1148
1149 //===============================================================
1150 // Extend vibrational to low energy
1151 // Anyway, solvation of electrons is taken into account from 7.4 eV
1152 // So below this threshold, for now, no accurate modeling is done
1153 //
1154 G4VProcess* process =
1156 FindProcess("e-_G4DNAVibExcitation", "e-");
1157
1158 if (process)
1159 {
1160 G4DNAVibExcitation* vibExcitation = (G4DNAVibExcitation*) process;
1161 G4VEmModel* model = vibExcitation->EmModel();
1162 G4DNASancheExcitationModel* sancheExcitationMod =
1163 dynamic_cast<G4DNASancheExcitationModel*>(model);
1164 if(sancheExcitationMod)
1165 {
1166 sancheExcitationMod->ExtendLowEnergyLimit(0.025 * eV);
1167 }
1168 }
1169
1170 //===============================================================
1171 // *** Electron Solvatation ***
1172 //
1173 process =
1175 FindProcess("e-_G4DNAElectronSolvation", "e-");
1176
1177 if (process == 0)
1178 {
1179 ph->RegisterProcess(
1180 new G4DNAElectronSolvation("e-_G4DNAElectronSolvation"),
1182 }
1183
1184
1185 //===============================================================
1186 // Define processes for molecules
1187 //
1188 G4MoleculeTable* theMoleculeTable = G4MoleculeTable::Instance();
1190 theMoleculeTable->GetDefintionIterator();
1191 iterator.reset();
1192 while (iterator())
1193 {
1194 G4MoleculeDefinition* moleculeDef = iterator.value();
1195
1196 if (moleculeDef != G4H2O::Definition())
1197 {
1198 // G4cout << "Brownian motion added for: "<< moleculeDef->GetName() << G4endl;
1199// G4DNABrownianTransportation* brown = new G4DNABrownianTransportation();
1200// ph->RegisterProcess(brown, moleculeDef);
1201 }
1202 else
1203 {
1204 moleculeDef->GetProcessManager()
1206 G4DNAMolecularDissociation* dissociationProcess =
1207 new G4DNAMolecularDissociation("H2O_DNAMolecularDecay");
1208 dissociationProcess->SetDisplacer(
1209 moleculeDef, new G4DNAWaterDissociationDisplacer);
1210 dissociationProcess->SetVerboseLevel(3);
1211
1212 moleculeDef->GetProcessManager()
1213 ->AddRestProcess(dissociationProcess, 1);
1214 }
1215 /*
1216 * Warning : end of particles and processes are needed by
1217 * EM Physics builders
1218 */
1219 }
1220
1222}
static constexpr double eV
Definition: G4SIunits.hh:201
void SetDisplacer(Species *, Displacer *)
static G4Electron * Definition()
Definition: G4Electron.cc:48
G4bool RegisterProcess(G4VProcess *process, G4ParticleDefinition *particle)
static G4PhysicsListHelper * GetPhysicsListHelper()
G4int AddRestProcess(G4VProcess *aProcess, G4int ord=ordDefault)
static G4ProcessTable * GetProcessTable()
G4VEmModel * EmModel(size_t index=0) const
void SetVerboseLevel(G4int value)
Definition: G4VProcess.hh:412

References G4ProcessManager::AddRestProcess(), G4Electron::Definition(), G4H2O::Definition(), G4VEmProcess::EmModel(), eV, G4DNASancheExcitationModel::ExtendLowEnergyLimit(), G4MoleculeTable::GetDefintionIterator(), G4PhysicsListHelper::GetPhysicsListHelper(), G4ParticleDefinition::GetProcessManager(), G4ProcessTable::GetProcessTable(), G4DNAChemistryManager::Initialize(), G4MoleculeTable::Instance(), G4DNAChemistryManager::Instance(), G4PhysicsListHelper::RegisterProcess(), G4MoleculeIterator< MOLECULE >::reset(), G4DNAMolecularDissociation::SetDisplacer(), G4VProcess::SetVerboseLevel(), and G4MoleculeIterator< MOLECULE >::value().

◆ ConstructReactionTable()

void G4EmDNAChemistry_option3::ConstructReactionTable ( G4DNAMolecularReactionTable reactionTable)
virtual

Implements G4VUserChemistryList.

Definition at line 572 of file G4EmDNAChemistry_option3.cc.

574{
575 //-----------------------------------
576 //Get the molecular configuration
607
614
617
618 // Type I //
619 //------------------------------------------------------------------
620 // *H + *H -> H2
622 0.503e10 * (1e-3 * m3 / (mole * s)), H, H);
623 reactionData->AddProduct(H2);
624 theReactionTable->SetReaction(reactionData);
625 //------------------------------------------------------------------
626 // e_aq + H* + H2O -> H2 + OH-
627 reactionData = new G4DNAMolecularReactionData(
628 2.50e10 * (1e-3 * m3 / (mole * s)), e_aq, H);
629 reactionData->AddProduct(OHm);
630 reactionData->AddProduct(H2);
631 theReactionTable->SetReaction(reactionData);
632
633 // H + O(3p) -> OH
634 reactionData = new G4DNAMolecularReactionData(
635 2.02e10 * (1e-3 * m3 / (mole * s)), H, O);
636 reactionData->AddProduct(OH);
637 theReactionTable->SetReaction(reactionData);
638 //------------------------------------------------------------------
639 // H + O- -> OH-
640 reactionData = new G4DNAMolecularReactionData(
641 2.00e10 * (1e-3 * m3 / (mole * s)), H, Om);
642 reactionData->AddProduct(OHm);
643 theReactionTable->SetReaction(reactionData);
644 //------------------------------------------------------------------
645 // OH + O(3p) -> HO2
646 reactionData = new G4DNAMolecularReactionData(
647 2.02e10 * (1e-3 * m3 / (mole * s)), OH, O);
648 reactionData->AddProduct(HO2);
649 theReactionTable->SetReaction(reactionData);
650 //------------------------------------------------------------------
651 // HO2 + O(3p) -> O2
652 reactionData = new G4DNAMolecularReactionData(
653 2.02e10 * (1e-3 * m3 / (mole * s)), HO2, O);
654 reactionData->AddProduct(O2);
655 reactionData->AddProduct(OH);
656 theReactionTable->SetReaction(reactionData);
657 //------------------------------------------------------------------
658 // O(3p) + O(3p) -> O2
659 reactionData = new G4DNAMolecularReactionData(
660 2.20e10 * (1e-3 * m3 / (mole * s)), O, O);
661 reactionData->AddProduct(O2);
662 theReactionTable->SetReaction(reactionData);
663
664 // Type III //
665 //------------------------------------------------------------------
666 // e_aq + e_aq + 2H2O -> H2 + 2OH-
667 reactionData = new G4DNAMolecularReactionData(
668 0.636e10 * (1e-3 * m3 / (mole * s)), e_aq, e_aq);
669 reactionData->AddProduct(OHm);
670 reactionData->AddProduct(OHm);
671 reactionData->AddProduct(H2);
672 theReactionTable->SetReaction(reactionData);
673 //------------------------------------------------------------------
674 // H3O+ + OH- -> 2H2O
675 reactionData = new G4DNAMolecularReactionData(
676 1.13e11 * (1e-3 * m3 / (mole * s)), H3Op, OHm);
677 theReactionTable->SetReaction(reactionData);
678 //------------------------------------------------------------------
679 // H3O+ + O3- -> OH + O2
680 reactionData = new G4DNAMolecularReactionData(
681 9.0e10 * (1e-3 * m3 / (mole * s)), H3Op, O3m);
682 reactionData->AddProduct(OH);
683 reactionData->AddProduct(O2);
684 theReactionTable->SetReaction(reactionData);
685
686 // Type II //
687
688 //------------------------------------------------------------------
689 // *OH + *H -> H2O
690 reactionData = new G4DNAMolecularReactionData(
691 1.55e10 * (1e-3 * m3 / (mole * s)), OH, H);
692 reactionData->SetReactionType(1);
693 theReactionTable->SetReaction(reactionData);
694 //------------------------------------------------------------------
695 // H + H2O2 -> OH
696 reactionData = new G4DNAMolecularReactionData(
697 3.50e7 * (1e-3 * m3 / (mole * s)), H, H2O2);
698 reactionData->AddProduct(OH);
699 reactionData->SetReactionType(1);
700 theReactionTable->SetReaction(reactionData);
701 //------------------------------------------------------------------
702 // H + OH- -> eaq-
703 reactionData = new G4DNAMolecularReactionData(
704 2.51e7 * (1e-3 * m3 / (mole * s)), H, OHm);
705 reactionData->AddProduct(e_aq);
706 reactionData->SetReactionType(1);
707 theReactionTable->SetReaction(reactionData);
708 //------------------------------------------------------------------
709 // H + O2 -> HO2
710 reactionData = new G4DNAMolecularReactionData(
711 2.10e10 * (1e-3 * m3 / (mole * s)), H, O2);
712 reactionData->AddProduct(HO2);
713 reactionData->SetReactionType(1);
714 theReactionTable->SetReaction(reactionData);
715 //------------------------------------------------------------------
716 // H + HO2 -> H2O2
717 reactionData = new G4DNAMolecularReactionData(
718 1.00e10 * (1e-3 * m3 / (mole * s)), H, HO2);
719 reactionData->AddProduct(H2O2);
720 reactionData->SetReactionType(1);
721 theReactionTable->SetReaction(reactionData);
722 //------------------------------------------------------------------
723 // H + O2- -> HO2-
724 reactionData = new G4DNAMolecularReactionData(
725 1.00e10 * (1e-3 * m3 / (mole * s)), H, O2m);
726 reactionData->AddProduct(HO2m);
727 reactionData->SetReactionType(1);
728 theReactionTable->SetReaction(reactionData);
729 //------------------------------------------------------------------
730 // *OH + *OH -> H2O2
731 reactionData = new G4DNAMolecularReactionData(
732 0.55e10 * (1e-3 * m3 / (mole * s)), OH, OH);
733 reactionData->AddProduct(H2O2);
734 reactionData->SetReactionType(1);
735 theReactionTable->SetReaction(reactionData);
736 //------------------------------------------------------------------
737 // OH + H2O2 -> HO2
738 reactionData = new G4DNAMolecularReactionData(
739 2.88e7 * (1e-3 * m3 / (mole * s)), OH, H2O2);
740 reactionData->AddProduct(HO2);
741 reactionData->SetReactionType(1);
742 theReactionTable->SetReaction(reactionData);
743 //------------------------------------------------------------------
744 // OH + H2 -> H
745 reactionData = new G4DNAMolecularReactionData(
746 3.28e7 * (1e-3 * m3 / (mole * s)), OH, H2);
747 reactionData->AddProduct(H);
748 reactionData->SetReactionType(1);
749 theReactionTable->SetReaction(reactionData);
750 //------------------------------------------------------------------
751 // e_aq + *OH -> OH-
752 reactionData = new G4DNAMolecularReactionData(
753 2.95e10 * (1e-3 * m3 / (mole * s)), e_aq, OH);
754 reactionData->AddProduct(OHm);
755 reactionData->SetReactionType(1);
756 theReactionTable->SetReaction(reactionData);
757 //------------------------------------------------------------------
758 // OH + OH- -> O-
759 reactionData = new G4DNAMolecularReactionData(
760 6.30e9 * (1e-3 * m3 / (mole * s)), OH, OHm);
761 reactionData->AddProduct(Om);
762 reactionData->SetReactionType(1);
763 theReactionTable->SetReaction(reactionData);
764 //------------------------------------------------------------------
765 // OH + HO2 -> O2
766 reactionData = new G4DNAMolecularReactionData(
767 7.90e9 * (1e-3 * m3 / (mole * s)), OH, HO2);
768 reactionData->AddProduct(O2);
769 reactionData->SetReactionType(1);
770 theReactionTable->SetReaction(reactionData);
771 //------------------------------------------------------------------
772 // OH + O2- -> O2 + OH-
773 reactionData = new G4DNAMolecularReactionData(
774 1.07e10 * (1e-3 * m3 / (mole * s)), OH, O2m);
775 reactionData->AddProduct(O2);
776 reactionData->AddProduct(OHm);
777 reactionData->SetReactionType(1);
778 theReactionTable->SetReaction(reactionData);
779 //------------------------------------------------------------------
780 // OH + HO2- -> HO2 + OH-
781 reactionData = new G4DNAMolecularReactionData(
782 8.32e9 * (1e-3 * m3 / (mole * s)), OH, HO2m);
783 reactionData->AddProduct(HO2);
784 reactionData->AddProduct(OHm);
785 reactionData->SetReactionType(1);
786 theReactionTable->SetReaction(reactionData);
787 //------------------------------------------------------------------
788 // OH + O- -> HO2-
789 reactionData = new G4DNAMolecularReactionData(
790 1.00e9 * (1e-3 * m3 / (mole * s)), OH, Om);
791 reactionData->AddProduct(HO2m);
792 reactionData->SetReactionType(1);
793 theReactionTable->SetReaction(reactionData);
794 //------------------------------------------------------------------
795 // OH + O3- -> O2- + HO2
796 reactionData = new G4DNAMolecularReactionData(
797 8.50e9 * (1e-3 * m3 / (mole * s)), OH, O3m);
798 reactionData->AddProduct(O2m);
799 reactionData->AddProduct(HO2);
800 reactionData->SetReactionType(1);
801 theReactionTable->SetReaction(reactionData);
802 //------------------------------------------------------------------
803 // e_aq + H2O2 -> OH- + *OH
804 reactionData = new G4DNAMolecularReactionData(
805 1.10e10 * (1e-3 * m3 / (mole * s)), e_aq, H2O2);
806 reactionData->AddProduct(OHm);
807 reactionData->AddProduct(OH);
808 reactionData->SetReactionType(1);
809 theReactionTable->SetReaction(reactionData);
810 //------------------------------------------------------------------
811 // H2O2 + OH- -> HO2-
812 reactionData = new G4DNAMolecularReactionData(
813 4.71e8 * (1e-3 * m3 / (mole * s)), H2O2, OHm);
814 reactionData->AddProduct(HO2m);
815 reactionData->SetReactionType(1);
816 theReactionTable->SetReaction(reactionData);
817 //------------------------------------------------------------------
818 // H2O2 + O(3p) -> HO2 + OH
819 reactionData = new G4DNAMolecularReactionData(
820 1.60e9 * (1e-3 * m3 / (mole * s)), H2O2, O);
821 reactionData->AddProduct(HO2);
822 reactionData->AddProduct(OH);
823 reactionData->SetReactionType(1);
824 theReactionTable->SetReaction(reactionData);
825 //------------------------------------------------------------------
826 // H2O2 + O- -> HO2 + OH-
827 reactionData = new G4DNAMolecularReactionData(
828 5.55e8 * (1e-3 * m3 / (mole * s)), H2O2, Om);
829 reactionData->AddProduct(HO2);
830 reactionData->AddProduct(OHm);
831 reactionData->SetReactionType(1);
832 theReactionTable->SetReaction(reactionData);
833 //------------------------------------------------------------------
834 // H2 + O(3p) -> H + OH
835 reactionData = new G4DNAMolecularReactionData(
836 4.77e3 * (1e-3 * m3 / (mole * s)), H2, O);
837 reactionData->AddProduct(H);
838 reactionData->AddProduct(OH);
839 reactionData->SetReactionType(1);
840 theReactionTable->SetReaction(reactionData);
841 //------------------------------------------------------------------
842 // H2 + O- -> H + OH-
843 reactionData = new G4DNAMolecularReactionData(
844 1.21e8 * (1e-3 * m3 / (mole * s)), H2, Om);
845 reactionData->AddProduct(H);
846 reactionData->AddProduct(OHm);
847 reactionData->SetReactionType(1);
848 theReactionTable->SetReaction(reactionData);
849 //------------------------------------------------------------------
850 // eaq- + O2 -> O2-
851 reactionData = new G4DNAMolecularReactionData(
852 1.74e10 * (1e-3 * m3 / (mole * s)), e_aq, O2);
853 reactionData->AddProduct(O2m);
854 reactionData->SetReactionType(1);
855 theReactionTable->SetReaction(reactionData);
856 //------------------------------------------------------------------
857 // eaq + HO2 -> HO2-
858 reactionData = new G4DNAMolecularReactionData(
859 1.29e10 * (1e-3 * m3 / (mole * s)), e_aq, HO2);
860 reactionData->AddProduct(HO2m);
861 reactionData->SetReactionType(1);
862 theReactionTable->SetReaction(reactionData);
863 //------------------------------------------------------------------
864 // OH- + HO2 -> O2-
865 reactionData = new G4DNAMolecularReactionData(
866 6.30e9 * (1e-3 * m3 / (mole * s)), OHm, HO2);
867 reactionData->AddProduct(O2m);
868 reactionData->SetReactionType(1);
869 theReactionTable->SetReaction(reactionData);
870 //------------------------------------------------------------------
871 // OH- + O(3p) -> HO2-
872 reactionData = new G4DNAMolecularReactionData(
873 4.20e8 * (1e-3 * m3 / (mole * s)), OHm, O);
874 reactionData->AddProduct(HO2m);
875 reactionData->SetReactionType(1);
876 theReactionTable->SetReaction(reactionData);
877 //------------------------------------------------------------------
878 // O2 + O(3p) -> O3
879 reactionData = new G4DNAMolecularReactionData(
880 4.00e9 * (1e-3 * m3 / (mole * s)), O2, O);
881 reactionData->AddProduct(O3);
882 reactionData->SetReactionType(1);
883 theReactionTable->SetReaction(reactionData);
884 //------------------------------------------------------------------
885 // O2 + O- -> O3-
886 reactionData = new G4DNAMolecularReactionData(
887 3.70e9 * (1e-3 * m3 / (mole * s)), O2, Om);
888 reactionData->AddProduct(O3m);
889 reactionData->SetReactionType(1);
890 theReactionTable->SetReaction(reactionData);
891 //------------------------------------------------------------------
892 // HO2 + HO2 -> H2O2 + O2
893 reactionData = new G4DNAMolecularReactionData(
894 9.80e5 * (1e-3 * m3 / (mole * s)), HO2, HO2);
895 reactionData->AddProduct(H2O2);
896 reactionData->AddProduct(O2);
897 reactionData->SetReactionType(1);
898 theReactionTable->SetReaction(reactionData);
899 //------------------------------------------------------------------
900 // HO2 + O2- -> HO2- + O2
901 reactionData = new G4DNAMolecularReactionData(
902 9.70e7 * (1e-3 * m3 / (mole * s)), HO2, O2m);
903 reactionData->AddProduct(HO2m);
904 reactionData->AddProduct(O2);
905 reactionData->SetReactionType(1);
906 theReactionTable->SetReaction(reactionData);
907 //------------------------------------------------------------------
908 // HO2- + O(3p) -> O2- + OH
909 reactionData = new G4DNAMolecularReactionData(
910 5.30e9 * (1e-3 * m3 / (mole * s)), HO2m, O);
911 reactionData->AddProduct(O2m);
912 reactionData->AddProduct(OH);
913 reactionData->SetReactionType(1);
914 theReactionTable->SetReaction(reactionData);
915
916 // Type IV //
917 //------------------------------------------------------------------
918 // e_aq + H3O+ -> H* + H2O
919 reactionData = new G4DNAMolecularReactionData(
920 2.11e10 * (1e-3 * m3 / (mole * s)), e_aq, H3Op);
921 reactionData->AddProduct(H);
922 reactionData->SetReactionType(1);
923 theReactionTable->SetReaction(reactionData);
924 //------------------------------------------------------------------
925 // e_aq + O2- -> H2O2 + OH- + OH-
926 reactionData = new G4DNAMolecularReactionData(
927 1.29e10 * (1e-3 * m3 / (mole * s)), e_aq, O2m);
928 reactionData->AddProduct(H2O2);
929 reactionData->AddProduct(OHm);
930 reactionData->AddProduct(OHm);
931 reactionData->SetReactionType(1);
932 theReactionTable->SetReaction(reactionData);
933 //------------------------------------------------------------------
934 // e_aq + HO2- -> O- + OH-
935 reactionData = new G4DNAMolecularReactionData(
936 3.51e9 * (1e-3 * m3 / (mole * s)), e_aq, HO2m);
937 reactionData->AddProduct(Om);
938 reactionData->AddProduct(OHm);
939 reactionData->SetReactionType(1);
940 theReactionTable->SetReaction(reactionData);
941 //------------------------------------------------------------------
942 // e_aq + O- -> OH- + OH-
943 reactionData = new G4DNAMolecularReactionData(
944 2.31e10 * (1e-3 * m3 / (mole * s)), e_aq, Om);
945 reactionData->AddProduct(OHm);
946 reactionData->AddProduct(OHm);
947 reactionData->SetReactionType(1);
948 theReactionTable->SetReaction(reactionData);
949 //------------------------------------------------------------------
950 // H3O+ + O2- -> HO2
951 reactionData = new G4DNAMolecularReactionData(
952 4.78e10 * (1e-3 * m3 / (mole * s)), H3Op, O2m);
953 reactionData->AddProduct(HO2);
954 reactionData->SetReactionType(1);
955 theReactionTable->SetReaction(reactionData);
956 //------------------------------------------------------------------
957 // H3O+ + HO2- -> H2O2
958 reactionData = new G4DNAMolecularReactionData(
959 5.00e10 * (1e-3 * m3 / (mole * s)), H3Op, HO2m);
960 reactionData->AddProduct(H2O2);
961 reactionData->SetReactionType(1);
962 theReactionTable->SetReaction(reactionData);
963 //------------------------------------------------------------------
964 // H3O+ + O- -> OH
965 reactionData = new G4DNAMolecularReactionData(
966 4.78e10 * (1e-3 * m3 / (mole * s)), H3Op, Om);
967 reactionData->AddProduct(OH);
968 reactionData->SetReactionType(1);
969 theReactionTable->SetReaction(reactionData);
970 //------------------------------------------------------------------
971 // O2- + O- -> O2 + OH- + OH-
972 reactionData = new G4DNAMolecularReactionData(
973 6.00e8 * (1e-3 * m3 / (mole * s)), O2m, Om);
974 reactionData->AddProduct(O2);
975 reactionData->AddProduct(OHm);
976 reactionData->AddProduct(OHm);
977 reactionData->SetReactionType(1);
978 theReactionTable->SetReaction(reactionData);
979 //------------------------------------------------------------------
980 // HO2- + O- -> O2- + OH-
981 reactionData = new G4DNAMolecularReactionData(
982 3.50e8 * (1e-3 * m3 / (mole * s)), HO2m, Om);
983 reactionData->AddProduct(O2m);
984 reactionData->AddProduct(OHm);
985 reactionData->SetReactionType(1);
986 theReactionTable->SetReaction(reactionData);
987 //------------------------------------------------------------------
988 // O- + O- -> H2O2 + OH- + OH-
989 reactionData = new G4DNAMolecularReactionData(
990 1.00e8 * (1e-3 * m3 / (mole * s)), Om, Om);
991 reactionData->AddProduct(H2O2);
992 reactionData->AddProduct(OHm);
993 reactionData->AddProduct(OHm);
994 reactionData->SetReactionType(1);
995 theReactionTable->SetReaction(reactionData);
996 //------------------------------------------------------------------
997 // O- + O3- -> O2- + O2-
998 reactionData = new G4DNAMolecularReactionData(
999 7.00e8 * (1e-3 * m3 / (mole * s)), Om, O3m);
1000 reactionData->AddProduct(O2m);
1001 reactionData->AddProduct(O2m);
1002 reactionData->SetReactionType(1);
1003 theReactionTable->SetReaction(reactionData);
1004
1005 // Type VI
1006 // First order reaction
1007 //------------------------------------------------------------------
1008 // O3- -> O- + O2
1009 reactionData = new G4DNAMolecularReactionData(
1010 2.66e3 / s, O3m,None);
1011 reactionData->AddProduct(H3Op);
1012 reactionData->AddProduct(O2m);
1013 theReactionTable->SetReaction(reactionData);
1014
1015 // Scavenging reactions
1016
1017 //------------------------------------------------------------------
1018 // HO2 + H2O -> H3O+ + O2-
1019 reactionData = new G4DNAMolecularReactionData(
1020 7.15e5 / s, HO2,H2OB);
1021 reactionData->AddProduct(H3Op);
1022 reactionData->AddProduct(O2m);
1023 theReactionTable->SetReaction(reactionData);
1024 //------------------------------------------------------------------
1025 // H + H2O -> eaq- + H3O+ 5.94 / s
1026 reactionData = new G4DNAMolecularReactionData(
1027 5.94e0 / s, H,H2OB);
1028 reactionData->AddProduct(e_aq);
1029 reactionData->AddProduct(H3Op);
1030 theReactionTable->SetReaction(reactionData);
1031 //------------------------------------------------------------------
1032 // eaq- + H2O -> H + OH- 15.8 / s
1033 reactionData = new G4DNAMolecularReactionData(
1034 1.58e1 / s, e_aq,H2OB);
1035 reactionData->AddProduct(H);
1036 reactionData->AddProduct(OHm);
1037 theReactionTable->SetReaction(reactionData);
1038 //------------------------------------------------------------------
1039 // O2- + H2O -> HO2 + OH- 0.15 / s
1040 reactionData = new G4DNAMolecularReactionData(
1041 1.50e-1 / s, O2m,H2OB);
1042 reactionData->AddProduct(HO2);
1043 reactionData->AddProduct(OHm);
1044 theReactionTable->SetReaction(reactionData);
1045 //------------------------------------------------------------------
1046 // HO2- + H2O -> H2O2 + OH- 1.36e6 / s
1047 reactionData = new G4DNAMolecularReactionData(
1048 1.36e6 / s, HO2m,H2OB);
1049 reactionData->AddProduct(H2O2);
1050 reactionData->AddProduct(OHm);
1051 theReactionTable->SetReaction(reactionData);
1052 //------------------------------------------------------------------
1053 // O(3p) + H2O -> OH + OH 1.90e3 / s
1054 reactionData = new G4DNAMolecularReactionData(
1055 1.00e3 / s, O,H2OB);
1056 reactionData->AddProduct(OH);
1057 reactionData->AddProduct(OH);
1058 theReactionTable->SetReaction(reactionData);
1059 //------------------------------------------------------------------
1060 // O- + H2O -> OH + OH- 1.36e6 / s
1061 reactionData = new G4DNAMolecularReactionData(
1062 1.36e6 / s, Om,H2OB);
1063 reactionData->AddProduct(OH);
1064 reactionData->AddProduct(OHm);
1065 theReactionTable->SetReaction(reactionData);
1066 //------------------------------------------------------------------
1067 // eaq- + H3O+(B) -> H + H2O 2.09e3 / s
1068 reactionData = new G4DNAMolecularReactionData(
1069 2.09e3 / s, e_aq,H3OpB);
1070 reactionData->AddProduct(H);
1071 theReactionTable->SetReaction(reactionData);
1072 //------------------------------------------------------------------
1073 // O2- + H3O+(B) -> HO2 + H2O 4.73e3 / s
1074 reactionData = new G4DNAMolecularReactionData(
1075 4.73e3 / s, O2m,H3OpB);
1076 reactionData->AddProduct(HO2);
1077 theReactionTable->SetReaction(reactionData);
1078 //------------------------------------------------------------------
1079 // OH- + H3O+(B) -> 2H2O 1.11e4 / s
1080 reactionData = new G4DNAMolecularReactionData(
1081 1.12e4 / s, OHm,H3OpB);
1082 theReactionTable->SetReaction(reactionData);
1083
1084 //------------------------------------------------------------------
1085 // H3O+ + OH-(B) -> 2H2O 1.11e4 / s
1086 // opposite description of OH- + H3O+(B) -> 2H2O
1087 reactionData = new G4DNAMolecularReactionData(
1088 1.12e4 / s, H3Op,OHmB);
1089 theReactionTable->SetReaction(reactionData);
1090 //------------------------------------------------------------------
1091 // HO2- + H3O+(B) -> H2O2 + H2O 4.98e3 / s
1092 reactionData = new G4DNAMolecularReactionData(
1093 4.95e3 / s, HO2m,H3OpB);
1094 reactionData->AddProduct(H2O2);
1095 theReactionTable->SetReaction(reactionData);
1096 //------------------------------------------------------------------
1097 // O- + H3O+(B) -> OH + H2O 4.73e3 / s
1098 reactionData = new G4DNAMolecularReactionData(
1099 4.73e3 / s, Om,H3OpB);
1100 reactionData->AddProduct(OH);
1101 theReactionTable->SetReaction(reactionData);
1102 //------------------------------------------------------------------
1103 // O3- + H3O+(B) -> OH + O2 + H2O 8.91e3 / s
1104 reactionData = new G4DNAMolecularReactionData(
1105 8.91e3 / s, O3m,H3OpB);
1106 reactionData->AddProduct(OH);
1107 reactionData->AddProduct(O2);
1108 theReactionTable->SetReaction(reactionData);
1109 //------------------------------------------------------------------
1110 // H + OH-(B) -> H2O + eaq- 2.49e3 / s
1111 reactionData = new G4DNAMolecularReactionData(
1112 2.48e0 / s, H,OHmB);
1113 reactionData->AddProduct(e_aq);
1114 theReactionTable->SetReaction(reactionData);
1115 //------------------------------------------------------------------
1116 // OH + OH-(B) -> O- + H2O 6.24e2 / s
1117 reactionData = new G4DNAMolecularReactionData(
1118 6.24e2 / s, OH,OHmB);
1119 reactionData->AddProduct(Om);
1120 theReactionTable->SetReaction(reactionData);
1121 //------------------------------------------------------------------
1122 // H2O2 + OH-(B) -> HO2- + H2O 4.66e2 / s
1123 reactionData = new G4DNAMolecularReactionData(
1124 4.66e1 / s, H2O2,OHmB);
1125 reactionData->AddProduct(HO2m);
1126 theReactionTable->SetReaction(reactionData);
1127 //------------------------------------------------------------------
1128 // HO2 + OH-(B) -> O2- + H2O 6.24e2 / s
1129 reactionData = new G4DNAMolecularReactionData(
1130 6.24e2 / s, HO2,OHmB);
1131 reactionData->AddProduct(O2m);
1132 theReactionTable->SetReaction(reactionData);
1133 //------------------------------------------------------------------
1134 // O(3p) + OH-(B) -> HO2- 4.16e1 / s
1135 reactionData = new G4DNAMolecularReactionData(
1136 4.16e1 / s, O,OHmB);
1137 reactionData->AddProduct(HO2m);
1138 theReactionTable->SetReaction(reactionData);
1139 //------------------------------------------------------------------
1140
1141}
static constexpr double mole
Definition: G4SIunits.hh:279
static constexpr double m3
Definition: G4SIunits.hh:111

References G4DNAMolecularReactionData::AddProduct(), G4MoleculeTable::GetConfiguration(), G4MoleculeTable::Instance(), m3, mole, s, G4DNAMolecularReactionTable::SetReaction(), and G4DNAMolecularReactionData::SetReactionType().

◆ ConstructTimeStepModel()

void G4EmDNAChemistry_option3::ConstructTimeStepModel ( G4DNAMolecularReactionTable reactionTable)
virtual

Implements G4VUserChemistryList.

Definition at line 1226 of file G4EmDNAChemistry_option3.cc.

1228{
1229
1232/*
1233 G4DNAMolecularStepByStepModel* sbs =
1234 new G4DNAMolecularStepByStepModel();
1235*/
1236 RegisterTimeStepModel(irt, 0);
1237}
void RegisterTimeStepModel(G4VITStepModel *timeStepModel, double startingTime=0)

References G4VUserChemistryList::RegisterTimeStepModel().

◆ GetBuilders()

G4VPhysicsConstructor::PhysicsBuilder_V G4VPhysicsConstructor::GetBuilders ( ) const
protectedinherited

Definition at line 86 of file G4VPhysicsConstructor.cc.

87{
88 const auto& tls = *((subInstanceManager.offset[g4vpcInstanceID])._builders);
89 PhysicsBuilder_V copy(tls.size());
90 G4int i = 0;
91 for(const auto& el : tls)
92 {
93 copy[i++] = el;
94 }
95 return copy;
96}
int G4int
Definition: G4Types.hh:85
G4VPCData::PhysicsBuilders_V PhysicsBuilder_V
void copy(G4double dst[], const G4double src[], size_t size=G4FieldTrack::ncompSVEC)
Definition: G4FieldUtils.cc:98

References field_utils::copy(), G4VPhysicsConstructor::g4vpcInstanceID, G4VUPLSplitter< T >::offset, and G4VPhysicsConstructor::subInstanceManager.

◆ GetInstanceID()

G4int G4VPhysicsConstructor::GetInstanceID ( ) const
inlineinherited

◆ GetParticleIterator()

G4ParticleTable::G4PTblDicIterator * G4VPhysicsConstructor::GetParticleIterator ( ) const
protectedinherited

◆ GetPhysicsName()

const G4String & G4VPhysicsConstructor::GetPhysicsName ( ) const
inlineinherited

Definition at line 191 of file G4VPhysicsConstructor.hh.

192{
193 return namePhysics;
194}

References G4VPhysicsConstructor::namePhysics.

Referenced by G4EmDNAPhysics_option1::ConstructProcess(), G4EmDNAPhysics_option2::ConstructProcess(), G4EmDNAPhysics_option3::ConstructProcess(), G4EmDNAPhysics_option4::ConstructProcess(), G4EmDNAPhysics_option5::ConstructProcess(), G4EmDNAPhysics_option6::ConstructProcess(), G4EmDNAPhysics_option7::ConstructProcess(), G4EmDNAPhysics_option8::ConstructProcess(), G4EmDNAPhysics_stationary_option2::ConstructProcess(), G4EmDNAPhysics_stationary_option4::ConstructProcess(), G4EmDNAPhysics_stationary_option6::ConstructProcess(), G4EmDNAPhysics::ConstructProcess(), G4EmDNAPhysics_stationary::ConstructProcess(), G4EmLivermorePhysics::ConstructProcess(), G4EmLowEPPhysics::ConstructProcess(), G4EmPenelopePhysics::ConstructProcess(), G4EmStandardPhysics::ConstructProcess(), G4EmStandardPhysics_option1::ConstructProcess(), G4EmStandardPhysics_option2::ConstructProcess(), G4EmStandardPhysics_option3::ConstructProcess(), G4EmStandardPhysics_option4::ConstructProcess(), G4EmStandardPhysicsGS::ConstructProcess(), G4EmStandardPhysicsSS::ConstructProcess(), G4EmStandardPhysicsWVI::ConstructProcess(), G4ThermalNeutrons::ConstructProcess(), G4HadronPhysicsFTFP_BERT::DumpBanner(), G4HadronPhysicsQGSP_BERT::DumpBanner(), export_G4VPhysicsConstructor(), G4HadronDElasticPhysics::G4HadronDElasticPhysics(), G4HadronElasticPhysics::G4HadronElasticPhysics(), G4HadronElasticPhysicsHP::G4HadronElasticPhysicsHP(), G4HadronElasticPhysicsLEND::G4HadronElasticPhysicsLEND(), G4HadronElasticPhysicsPHP::G4HadronElasticPhysicsPHP(), G4HadronElasticPhysicsXS::G4HadronElasticPhysicsXS(), G4HadronHElasticPhysics::G4HadronHElasticPhysics(), G4IonElasticPhysics::G4IonElasticPhysics(), G4VModularPhysicsList::RegisterPhysics(), and G4VModularPhysicsList::ReplacePhysics().

◆ GetPhysicsType()

G4int G4VPhysicsConstructor::GetPhysicsType ( ) const
inlineinherited

◆ GetSubInstanceManager()

const G4VPCManager & G4VPhysicsConstructor::GetSubInstanceManager ( )
inlinestaticinherited

◆ GetVerboseLevel()

G4int G4VPhysicsConstructor::GetVerboseLevel ( ) const
inlineinherited

◆ IsPhysicsConstructor()

bool G4VUserChemistryList::IsPhysicsConstructor ( )
inlineinherited

◆ RegisterProcess()

G4bool G4VPhysicsConstructor::RegisterProcess ( G4VProcess process,
G4ParticleDefinition particle 
)
inlineprotectedinherited

◆ RegisterTimeStepModel()

void G4VUserChemistryList::RegisterTimeStepModel ( G4VITStepModel timeStepModel,
double  startingTime = 0 
)
protectedinherited

◆ SetPhysicsName()

void G4VPhysicsConstructor::SetPhysicsName ( const G4String name = "")
inlineinherited

Definition at line 186 of file G4VPhysicsConstructor.hh.

187{
189}
const char * name(G4int ptype)

References G4InuclParticleNames::name(), and G4VPhysicsConstructor::namePhysics.

Referenced by export_G4VPhysicsConstructor().

◆ SetPhysicsType()

void G4VPhysicsConstructor::SetPhysicsType ( G4int  val)
inlineinherited

Definition at line 196 of file G4VPhysicsConstructor.hh.

197{
198 if(val > 0) { typePhysics = val; }
199}

References G4VPhysicsConstructor::typePhysics.

Referenced by G4DecayPhysics::G4DecayPhysics(), G4EmDNAPhysics::G4EmDNAPhysics(), G4EmDNAPhysics_option1::G4EmDNAPhysics_option1(), G4EmDNAPhysics_option2::G4EmDNAPhysics_option2(), G4EmDNAPhysics_option3::G4EmDNAPhysics_option3(), G4EmDNAPhysics_option4::G4EmDNAPhysics_option4(), G4EmDNAPhysics_option5::G4EmDNAPhysics_option5(), G4EmDNAPhysics_option6::G4EmDNAPhysics_option6(), G4EmDNAPhysics_option7::G4EmDNAPhysics_option7(), G4EmDNAPhysics_option8::G4EmDNAPhysics_option8(), G4EmDNAPhysics_stationary_option2::G4EmDNAPhysics_stationary_option2(), G4EmDNAPhysics_stationary_option4::G4EmDNAPhysics_stationary_option4(), G4EmDNAPhysics_stationary_option6::G4EmDNAPhysics_stationary_option6(), G4EmExtraPhysics::G4EmExtraPhysics(), G4EmLivermorePhysics::G4EmLivermorePhysics(), G4EmLowEPPhysics::G4EmLowEPPhysics(), G4EmPenelopePhysics::G4EmPenelopePhysics(), G4EmStandardPhysics::G4EmStandardPhysics(), G4EmStandardPhysics_option1::G4EmStandardPhysics_option1(), G4EmStandardPhysics_option2::G4EmStandardPhysics_option2(), G4EmStandardPhysics_option3::G4EmStandardPhysics_option3(), G4EmStandardPhysics_option4::G4EmStandardPhysics_option4(), G4EmStandardPhysicsGS::G4EmStandardPhysicsGS(), G4EmStandardPhysicsSS::G4EmStandardPhysicsSS(), G4EmStandardPhysicsWVI::G4EmStandardPhysicsWVI(), G4HadronElasticPhysics::G4HadronElasticPhysics(), G4HadronInelasticQBBC::G4HadronInelasticQBBC(), G4HadronPhysicsFTFP_BERT::G4HadronPhysicsFTFP_BERT(), G4HadronPhysicsQGSP_BERT::G4HadronPhysicsQGSP_BERT(), G4HadronPhysicsQGSP_BIC::G4HadronPhysicsQGSP_BIC(), G4IonINCLXXPhysics::G4IonINCLXXPhysics(), G4IonPhysics::G4IonPhysics(), G4IonPhysicsPHP::G4IonPhysicsPHP(), G4IonQMDPhysics::G4IonQMDPhysics(), G4NeutronTrackingCut::G4NeutronTrackingCut(), G4StepLimiterPhysics::G4StepLimiterPhysics(), G4StoppingPhysics::G4StoppingPhysics(), and G4StoppingPhysicsFritiofWithBinaryCascade::G4StoppingPhysicsFritiofWithBinaryCascade().

◆ SetVerboseLevel()

void G4VPhysicsConstructor::SetVerboseLevel ( G4int  value)
inlineinherited

◆ TerminateWorker()

void G4VPhysicsConstructor::TerminateWorker ( )
virtualinherited

Definition at line 105 of file G4VPhysicsConstructor.cc.

106{
107 if(subInstanceManager.offset[g4vpcInstanceID]._builders != nullptr)
108 {
109 std::for_each(subInstanceManager.offset[g4vpcInstanceID]._builders->begin(),
110 subInstanceManager.offset[g4vpcInstanceID]._builders->end(),
111 [](PhysicsBuilder_V::value_type bld) { delete bld; });
112 subInstanceManager.offset[g4vpcInstanceID]._builders->clear();
113 }
114}

References G4VPhysicsConstructor::g4vpcInstanceID, G4VUPLSplitter< T >::offset, and G4VPhysicsConstructor::subInstanceManager.

Referenced by G4VPhysicsConstructor::~G4VPhysicsConstructor().

◆ ThisIsAPhysicsConstructor()

void G4VUserChemistryList::ThisIsAPhysicsConstructor ( bool  flag = true)
inlineinherited

Definition at line 66 of file G4VUserChemistryList.hh.

67 {
69 }

References G4VUserChemistryList::fIsPhysicsConstructor.

Field Documentation

◆ fIsPhysicsConstructor

bool G4VUserChemistryList::fIsPhysicsConstructor
protectedinherited

◆ g4vpcInstanceID

G4int G4VPhysicsConstructor::g4vpcInstanceID = 0
protectedinherited

◆ namePhysics

G4String G4VPhysicsConstructor::namePhysics = ""
protectedinherited

◆ subInstanceManager

G4VPCManager G4VPhysicsConstructor::subInstanceManager
staticprotectedinherited

◆ theParticleTable

G4ParticleTable* G4VPhysicsConstructor::theParticleTable = nullptr
protectedinherited

◆ typePhysics

G4int G4VPhysicsConstructor::typePhysics = 0
protectedinherited

◆ verboseLevel [1/2]

int G4VUserChemistryList::verboseLevel
protectedinherited

◆ verboseLevel [2/2]

G4int G4VPhysicsConstructor::verboseLevel = 0
protectedinherited

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