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

#include <G4EmDNAChemistry.hh>

Inheritance diagram for G4EmDNAChemistry:
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 ()
 
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 ()
 

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 35 of file G4EmDNAChemistry.hh.

Member Typedef Documentation

◆ PhysicsBuilder_V

Definition at line 149 of file G4VPhysicsConstructor.hh.

Constructor & Destructor Documentation

◆ G4EmDNAChemistry()

G4EmDNAChemistry::G4EmDNAChemistry ( )
explicit

Definition at line 92 of file G4EmDNAChemistry.cc.

92 :
94{
96}
static G4DNAChemistryManager * Instance()
void SetChemistryList(G4VUserChemistryList &)
G4VUserChemistryList(bool flag=true)

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

◆ ~G4EmDNAChemistry()

G4EmDNAChemistry::~G4EmDNAChemistry ( )
virtual

Definition at line 100 of file G4EmDNAChemistry.cc.

101{
102}

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::ConstructDissociationChannels ( )
virtual

Reimplemented from G4VUserChemistryList.

Definition at line 142 of file G4EmDNAChemistry.cc.

143{
144 //-----------------------------------
145 //Get the molecular configuration
158
159 //-------------------------------------
160 //Define the decay channels
164
167
169 // EXCITATIONS //
171 G4DNAWaterExcitationStructure waterExcitation;
172 //--------------------------------------------------------
173 //---------------Excitation on the fifth layer------------
174
175 decCh1 = new G4MolecularDissociationChannel("A^1B_1_Relaxation");
176 decCh2 = new G4MolecularDissociationChannel("A^1B_1_DissociativeDecay");
177 //Decay 1 : OH + H
178 decCh1->SetEnergy(waterExcitation.ExcitationEnergy(0));
179 decCh1->SetProbability(0.35);
180 decCh1->SetDisplacementType(G4DNAWaterDissociationDisplacer::NoDisplacement);
181
182 decCh2->AddProduct(OH);
183 decCh2->AddProduct(H);
184 decCh2->SetProbability(0.65);
185 decCh2->SetDisplacementType(
186 G4DNAWaterDissociationDisplacer::A1B1_DissociationDecay);
187
188// water->AddExcitedState("A^1B_1");
189 occ->RemoveElectron(4, 1); // this is the transition form ground state to
190 occ->AddElectron(5, 1); // the first unoccupied orbital: A^1B_1
191
192 water->NewConfigurationWithElectronOccupancy("A^1B_1", *occ);
193 water->AddDecayChannel("A^1B_1", decCh1);
194 water->AddDecayChannel("A^1B_1", decCh2);
195
196 //--------------------------------------------------------
197 //---------------Excitation on the fourth layer-----------
198 decCh1 = new G4MolecularDissociationChannel("B^1A_1_Relaxation_Channel");
199 decCh2 = new G4MolecularDissociationChannel("B^1A_1_DissociativeDecay");
201 "B^1A_1_AutoIonisation_Channel");
202
203 //Decay 1 : energy
204 decCh1->SetEnergy(waterExcitation.ExcitationEnergy(1));
205 decCh1->SetProbability(0.3);
206
207 //Decay 2 : 2OH + H_2
208 decCh2->AddProduct(H2);
209 decCh2->AddProduct(OH);
210 decCh2->AddProduct(OH);
211 decCh2->SetProbability(0.15);
212 decCh2->SetDisplacementType(
213 G4DNAWaterDissociationDisplacer::B1A1_DissociationDecay);
214
215 //Decay 3 : OH + H_3Op + e_aq
216 decCh3->AddProduct(OH);
217 decCh3->AddProduct(H3O);
218 decCh3->AddProduct(e_aq);
219 decCh3->SetProbability(0.55);
220 decCh3->SetDisplacementType(G4DNAWaterDissociationDisplacer::AutoIonisation);
221
222 *occ = *(water->GetGroundStateElectronOccupancy());
223 occ->RemoveElectron(3); // this is the transition form ground state to
224 occ->AddElectron(5, 1); // the first unoccupied orbital: B^1A_1
225
226 water->NewConfigurationWithElectronOccupancy("B^1A_1", *occ);
227 water->AddDecayChannel("B^1A_1", decCh1);
228 water->AddDecayChannel("B^1A_1", decCh2);
229 water->AddDecayChannel("B^1A_1", decCh3);
230
231 //-------------------------------------------------------
232 //-------------------Excitation of 3rd layer-----------------
234 "Excitation3rdLayer_AutoIonisation_Channel");
236 "Excitation3rdLayer_Relaxation_Channel");
237
238 //Decay channel 1 : : OH + H_3Op + e_aq
239 decCh1->AddProduct(OH);
240 decCh1->AddProduct(H3O);
241 decCh1->AddProduct(e_aq);
242
243 decCh1->SetProbability(0.5);
244 decCh1->SetDisplacementType(G4DNAWaterDissociationDisplacer::AutoIonisation);
245
246 //Decay channel 2 : energy
247 decCh2->SetEnergy(waterExcitation.ExcitationEnergy(2));
248 decCh2->SetProbability(0.5);
249
250 //Electronic configuration of this decay
251 *occ = *(water->GetGroundStateElectronOccupancy());
252 occ->RemoveElectron(2, 1);
253 occ->AddElectron(5, 1);
254
255 //Configure the water molecule
256 water->NewConfigurationWithElectronOccupancy("Excitation3rdLayer", *occ);
257 water->AddDecayChannel("Excitation3rdLayer", decCh1);
258 water->AddDecayChannel("Excitation3rdLayer", decCh2);
259
260 //-------------------------------------------------------
261 //-------------------Excitation of 2nd layer-----------------
263 "Excitation2ndLayer_AutoIonisation_Channel");
265 "Excitation2ndLayer_Relaxation_Channel");
266
267 //Decay Channel 1 : : OH + H_3Op + e_aq
268 decCh1->AddProduct(OH);
269 decCh1->AddProduct(H3O);
270 decCh1->AddProduct(e_aq);
271
272 decCh1->SetProbability(0.5);
273 decCh1->SetDisplacementType(G4DNAWaterDissociationDisplacer::AutoIonisation);
274
275 //Decay channel 2 : energy
276 decCh2->SetEnergy(waterExcitation.ExcitationEnergy(3));
277 decCh2->SetProbability(0.5);
278
279 *occ = *(water->GetGroundStateElectronOccupancy());
280 occ->RemoveElectron(1, 1);
281 occ->AddElectron(5, 1);
282
283 water->NewConfigurationWithElectronOccupancy("Excitation2ndLayer", *occ);
284 water->AddDecayChannel("Excitation2ndLayer", decCh1);
285 water->AddDecayChannel("Excitation2ndLayer", decCh2);
286
287 //-------------------------------------------------------
288 //-------------------Excitation of 1st layer-----------------
290 "Excitation1stLayer_AutoIonisation_Channel");
292 "Excitation1stLayer_Relaxation_Channel");
293
294 *occ = *(water->GetGroundStateElectronOccupancy());
295 occ->RemoveElectron(0, 1);
296 occ->AddElectron(5, 1);
297
298 //Decay Channel 1 : : OH + H_3Op + e_aq
299 decCh1->AddProduct(OH);
300 decCh1->AddProduct(H3O);
301 decCh1->AddProduct(e_aq);
302 decCh1->SetProbability(0.5);
303 decCh1->SetDisplacementType(G4DNAWaterDissociationDisplacer::AutoIonisation);
304
305 //Decay channel 2 : energy
306 decCh2->SetEnergy(waterExcitation.ExcitationEnergy(4));
307 decCh2->SetProbability(0.5);
308
309 water->NewConfigurationWithElectronOccupancy("Excitation1stLayer", *occ);
310 water->AddDecayChannel("Excitation1stLayer", decCh1);
311 water->AddDecayChannel("Excitation1stLayer", decCh2);
312
314 // IONISATION //
316 //--------------------------------------------------------
317 //------------------- Ionisation -------------------------
318
319 decCh1 = new G4MolecularDissociationChannel("Ionisation_Channel");
320
321 //Decay Channel 1 : : OH + H_3Op
322 decCh1->AddProduct(H3O);
323 decCh1->AddProduct(OH);
324 decCh1->SetProbability(1);
325 decCh1->SetDisplacementType(
326 G4DNAWaterDissociationDisplacer::Ionisation_DissociationDecay);
327
328 *occ = *(water->GetGroundStateElectronOccupancy());
329 occ->RemoveElectron(4, 1);
330 // this is a ionized h2O with a hole in its last orbital
331 water->NewConfigurationWithElectronOccupancy("Ionisation5", *occ);
332 water->AddDecayChannel("Ionisation5",
333 decCh1);
334
335 *occ = *(water->GetGroundStateElectronOccupancy());
336 occ->RemoveElectron(3, 1);
337 water->NewConfigurationWithElectronOccupancy("Ionisation4", *occ);
338 water->AddDecayChannel("Ionisation4",
339 new G4MolecularDissociationChannel(*decCh1));
340
341 *occ = *(water->GetGroundStateElectronOccupancy());
342 occ->RemoveElectron(2, 1);
343 water->NewConfigurationWithElectronOccupancy("Ionisation3", *occ);
344 water->AddDecayChannel("Ionisation3",
345 new G4MolecularDissociationChannel(*decCh1));
346
347 *occ = *(water->GetGroundStateElectronOccupancy());
348 occ->RemoveElectron(1, 1);
349 water->NewConfigurationWithElectronOccupancy("Ionisation2", *occ);
350 water->AddDecayChannel("Ionisation2",
351 new G4MolecularDissociationChannel(*decCh1));
352
353 *occ = *(water->GetGroundStateElectronOccupancy());
354 occ->RemoveElectron(0, 1);
355 water->NewConfigurationWithElectronOccupancy("Ionisation1", *occ);
356 water->AddDecayChannel("Ionisation1",
357 new G4MolecularDissociationChannel(*decCh1));
358
360 // Dissociative Attachment //
362 decCh1 = new G4MolecularDissociationChannel("DissociativeAttachment");
363
364 //Decay 1 : 2OH + H_2
365 decCh1->AddProduct(H2);
366 decCh1->AddProduct(OHm);
367 decCh1->AddProduct(OH);
368 decCh1->SetProbability(1);
370 DissociativeAttachment);
371
372 *occ = *(water->GetGroundStateElectronOccupancy());
373 occ->AddElectron(5, 1); // H_2O^-
374 water->NewConfigurationWithElectronOccupancy("DissociativeAttachment", *occ);
375 water->AddDecayChannel("DissociativeAttachment", decCh1);
376
378 // Electron-hole recombination //
380 decCh1 = new G4MolecularDissociationChannel("H2Ovib_DissociationDecay1");
381 decCh2 = new G4MolecularDissociationChannel("H2Ovib_DissociationDecay2");
382 decCh3 = new G4MolecularDissociationChannel("H2Ovib_DissociationDecay3");
383
384 //Decay 1 : 2OH + H_2
385 decCh1->AddProduct(H2);
386 decCh1->AddProduct(OH);
387 decCh1->AddProduct(OH);
388 decCh1->SetProbability(0.15);
390 B1A1_DissociationDecay);
391
392 //Decay 2 : OH + H
393 decCh2->AddProduct(OH);
394 decCh2->AddProduct(H);
395 decCh2->SetProbability(0.55);
397 A1B1_DissociationDecay);
398
399 //Decay 3 : relaxation
400 decCh3->SetProbability(0.30);
401
402 const auto pH2Ovib = G4H2O::Definition()->NewConfiguration("H2Ovib");
403 assert(pH2Ovib != nullptr);
404
405 water->AddDecayChannel(pH2Ovib, decCh1);
406 water->AddDecayChannel(pH2Ovib, decCh2);
407 water->AddDecayChannel(pH2Ovib, decCh3);
408
409 delete occ;
410}
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::ConstructMolecule ( )
virtual

Reimplemented from G4VUserChemistryList.

Definition at line 106 of file G4EmDNAChemistry.cc.

107{
108 //-----------------------------------
109 G4Electron::Definition(); // safety
110
111 //-----------------------------------
112 // Create the definition
120
121 //____________________________________________________________________________
122
125 CreateConfiguration("OHm", // just a tag to store and retrieve from
126 // G4MoleculeTable
128 -1, // charge
129 5.0e-9 * (m2 / s));
130 OHm->SetMass(17.0079 * g / Avogadro * c_squared);
138}
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 G4Electron * Definition()
Definition: G4Electron.cc:48
static G4H2O2 * Definition()
Definition: G4H2O2.cc:45
static G4H2 * Definition()
Definition: G4H2.cc:45
static G4H3O * Definition()
Definition: G4H3O.cc:46
static G4Hydrogen * Definition()
Definition: G4Hydrogen.cc:45
G4MolecularConfiguration * CreateConfiguration(const G4String &userIdentifier, const G4MoleculeDefinition *molDef, const G4String &configurationLabel, const G4ElectronOccupancy &eOcc)
static G4OH * Definition()
Definition: G4OH.cc:45
float Avogadro
Definition: hepunit.py:252
float c_squared
Definition: hepunit.py:257

References source.hepunit::Avogadro, source.hepunit::c_squared, G4MoleculeTable::CreateConfiguration(), G4Electron::Definition(), G4Electron_aq::Definition(), G4H2::Definition(), G4H2O::Definition(), G4H2O2::Definition(), G4H3O::Definition(), G4Hydrogen::Definition(), G4OH::Definition(), g, G4MoleculeTable::Instance(), m2, s, and G4MolecularConfiguration::SetMass().

Referenced by ConstructParticle().

◆ ConstructParticle()

virtual void G4EmDNAChemistry::ConstructParticle ( )
inlinevirtual

Implements G4VPhysicsConstructor.

Definition at line 44 of file G4EmDNAChemistry.hh.

45 {
47 }
virtual void ConstructMolecule()

References ConstructMolecule().

◆ ConstructProcess()

void G4EmDNAChemistry::ConstructProcess ( )
virtual

Reimplemented from G4VUserChemistryList.

Definition at line 491 of file G4EmDNAChemistry.cc.

492{
493 auto pPhysicsListHelper = G4PhysicsListHelper::GetPhysicsListHelper();
494
495 //===============================================================
496 // Extend vibrational to low energy
497 // Anyway, solvation of electrons is taken into account from 7.4 eV
498 // So below this threshold, for now, no accurate modeling is done
499 //
501 FindProcess("e-_G4DNAVibExcitation", "e-");
502
503 if (pProcess != nullptr)
504 {
505 G4DNAVibExcitation* pVibExcitation = (G4DNAVibExcitation*) pProcess;
506 G4VEmModel* pModel = pVibExcitation->EmModel();
507 G4DNASancheExcitationModel* pSancheExcitationMod =
508 dynamic_cast<G4DNASancheExcitationModel*>(pModel);
509 if(pSancheExcitationMod != nullptr)
510 {
511 pSancheExcitationMod->ExtendLowEnergyLimit(0.025 * eV);
512 }
513 }
514
515 //===============================================================
516 // Electron Solvatation
517 //
518 pProcess = G4ProcessTable::GetProcessTable()->FindProcess("e-_G4DNAElectronSolvation", "e-");
519
520 if (pProcess == nullptr)
521 {
522 pPhysicsListHelper->RegisterProcess(new G4DNAElectronSolvation("e-_G4DNAElectronSolvation"),
524 }
525
526 //===============================================================
527 // Define processes for molecules
528 //
529 G4MoleculeTable* pMoleculeTable = G4MoleculeTable::Instance();
530 G4MoleculeDefinitionIterator iterator = pMoleculeTable->GetDefintionIterator();
531 iterator.reset();
532 while (iterator())
533 {
534 G4MoleculeDefinition* pMoleculeDef = iterator.value();
535
536 if (pMoleculeDef != G4H2O::Definition())
537 {
539 pPhysicsListHelper->RegisterProcess(pBrownianTransport, pMoleculeDef);
540 }
541 else
542 {
544 G4DNAMolecularDissociation* pDissociationProcess = new G4DNAMolecularDissociation("H2O_DNAMolecularDecay");
545 pDissociationProcess->SetDisplacer(pMoleculeDef, new G4DNAWaterDissociationDisplacer);
546 pDissociationProcess->SetVerboseLevel(1);
547
548 pMoleculeDef->GetProcessManager()->AddRestProcess(pDissociationProcess, 1);
549 }
550 }
551
553}
static constexpr double eV
Definition: G4SIunits.hh:201
void SetDisplacer(Species *, Displacer *)
static G4PhysicsListHelper * GetPhysicsListHelper()
G4int AddRestProcess(G4VProcess *aProcess, G4int ord=ordDefault)
static G4ProcessTable * GetProcessTable()
G4VProcess * FindProcess(const G4String &processName, const G4String &particleName) const
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(), G4ProcessTable::FindProcess(), G4MoleculeTable::GetDefintionIterator(), G4PhysicsListHelper::GetPhysicsListHelper(), G4ParticleDefinition::GetProcessManager(), G4ProcessTable::GetProcessTable(), G4DNAChemistryManager::Initialize(), G4MoleculeTable::Instance(), G4DNAChemistryManager::Instance(), G4MoleculeIterator< MOLECULE >::reset(), G4DNAMolecularDissociation::SetDisplacer(), G4VProcess::SetVerboseLevel(), and G4MoleculeIterator< MOLECULE >::value().

◆ ConstructReactionTable()

void G4EmDNAChemistry::ConstructReactionTable ( G4DNAMolecularReactionTable reactionTable)
virtual

Implements G4VUserChemistryList.

Definition at line 414 of file G4EmDNAChemistry.cc.

416{
417 //-----------------------------------
418 //Get the molecular configuration
433
434 //------------------------------------------------------------------
435 // e_aq + e_aq + 2H2O -> H2 + 2OH-
436 G4DNAMolecularReactionData* reactionData =
437 new G4DNAMolecularReactionData(0.5e10 * (1e-3 * m3 / (mole * s)), e_aq, e_aq);
438 reactionData->AddProduct(OHm);
439 reactionData->AddProduct(OHm);
440 reactionData->AddProduct(H2);
441 theReactionTable->SetReaction(reactionData);
442 //------------------------------------------------------------------
443 // e_aq + *OH -> OH-
444 reactionData = new G4DNAMolecularReactionData(
445 2.95e10 * (1e-3 * m3 / (mole * s)), e_aq, OH);
446 reactionData->AddProduct(OHm);
447 theReactionTable->SetReaction(reactionData);
448 //------------------------------------------------------------------
449 // e_aq + H* + H2O -> H2 + OH-
450 reactionData = new G4DNAMolecularReactionData(
451 2.65e10 * (1e-3 * m3 / (mole * s)), e_aq, H);
452 reactionData->AddProduct(OHm);
453 reactionData->AddProduct(H2);
454 theReactionTable->SetReaction(reactionData);
455 //------------------------------------------------------------------
456 // e_aq + H3O+ -> H* + H2O
457 reactionData = new G4DNAMolecularReactionData(
458 2.11e10 * (1e-3 * m3 / (mole * s)), e_aq, H3Op);
459 reactionData->AddProduct(H);
460 theReactionTable->SetReaction(reactionData);
461 //------------------------------------------------------------------
462 // e_aq + H2O2 -> OH- + *OH
463 reactionData = new G4DNAMolecularReactionData(
464 1.41e10 * (1e-3 * m3 / (mole * s)), e_aq, H2O2);
465 reactionData->AddProduct(OHm);
466 reactionData->AddProduct(OH);
467 theReactionTable->SetReaction(reactionData);
468 //------------------------------------------------------------------
469 // *OH + *OH -> H2O2
470 reactionData = new G4DNAMolecularReactionData(
471 0.44e10 * (1e-3 * m3 / (mole * s)), OH, OH);
472 reactionData->AddProduct(H2O2);
473 theReactionTable->SetReaction(reactionData);
474 //------------------------------------------------------------------
475 // *OH + *H -> H2O
476 theReactionTable->SetReaction(1.44e10 * (1e-3 * m3 / (mole * s)), OH, H);
477 //------------------------------------------------------------------
478 // *H + *H -> H2
479 reactionData = new G4DNAMolecularReactionData(
480 1.20e10 * (1e-3 * m3 / (mole * s)), H, H);
481 reactionData->AddProduct(H2);
482 theReactionTable->SetReaction(reactionData);
483 //------------------------------------------------------------------
484 // H3O+ + OH- -> 2H2O
485 theReactionTable->SetReaction(1.43e11 * (1e-3 * m3 / (mole * s)), H3Op, OHm);
486 //------------------------------------------------------------------
487}
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, and G4DNAMolecularReactionTable::SetReaction().

◆ ConstructTimeStepModel()

void G4EmDNAChemistry::ConstructTimeStepModel ( G4DNAMolecularReactionTable reactionTable)
virtual

Implements G4VUserChemistryList.

Definition at line 557 of file G4EmDNAChemistry.cc.

559{
560 G4VDNAReactionModel* reactionRadiusComputer = new G4DNASmoluchowskiReactionModel();
561 reactionTable->PrintTable(reactionRadiusComputer);
562
564 stepByStep->SetReactionModel(reactionRadiusComputer);
565// ((G4DNAMoleculeEncounterStepper*) stepByStep->GetTimeStepper())->
566// SetVerbose(5);
567
568 RegisterTimeStepModel(stepByStep, 0);
569}
void PrintTable(G4VDNAReactionModel *=0)
void SetReactionModel(G4VDNAReactionModel *)
void RegisterTimeStepModel(G4VITStepModel *timeStepModel, double startingTime=0)

References G4DNAMolecularReactionTable::PrintTable(), G4VUserChemistryList::RegisterTimeStepModel(), and G4DNAMolecularStepByStepModel::SetReactionModel().

◆ 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: