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

#include <G4EmDNAChemistry_option1.hh>

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

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_option1.hh.

Member Typedef Documentation

◆ PhysicsBuilder_V

Definition at line 149 of file G4VPhysicsConstructor.hh.

Constructor & Destructor Documentation

◆ G4EmDNAChemistry_option1()

G4EmDNAChemistry_option1::G4EmDNAChemistry_option1 ( )
explicit

Definition at line 92 of file G4EmDNAChemistry_option1.cc.

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

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

◆ ~G4EmDNAChemistry_option1()

G4EmDNAChemistry_option1::~G4EmDNAChemistry_option1 ( )
virtual

Definition at line 100 of file G4EmDNAChemistry_option1.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_option1::ConstructDissociationChannels ( )
virtual

Reimplemented from G4VUserChemistryList.

Definition at line 150 of file G4EmDNAChemistry_option1.cc.

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

Reimplemented from G4VUserChemistryList.

Definition at line 106 of file G4EmDNAChemistry_option1.cc.

107{
108 //-----------------------------------
109 G4Electron::Definition(); // safety
110
111 //-----------------------------------
112 // Create the definition
120
121 //____________________________________________________________________________
122
125 9.46e-9 * (m2/s));
127 CreateConfiguration("OHm", // just a tag to store and retrieve from
128 // G4MoleculeTable
130 -1, // charge
131 5.3e-9 * (m2 / s));
132 OHm->SetMass(17.0079 * g / Avogadro * c_squared);
135 2.2e-9 * (m2/s));
142 4.8e-9 * (m2/s));
145 2.3e-9 * (m2/s));
146}
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::GetConfiguration(), G4MoleculeTable::Instance(), m2, s, G4MolecularConfiguration::SetDiffusionCoefficient(), and G4MolecularConfiguration::SetMass().

Referenced by ConstructParticle().

◆ ConstructParticle()

virtual void G4EmDNAChemistry_option1::ConstructParticle ( )
inlinevirtual

Implements G4VPhysicsConstructor.

Definition at line 44 of file G4EmDNAChemistry_option1.hh.

45 {
47 }

References ConstructMolecule().

◆ ConstructProcess()

void G4EmDNAChemistry_option1::ConstructProcess ( )
virtual

Reimplemented from G4VUserChemistryList.

Definition at line 499 of file G4EmDNAChemistry_option1.cc.

500{
502
503 //===============================================================
504 // Extend vibrational to low energy
505 // Anyway, solvation of electrons is taken into account from 7.4 eV
506 // So below this threshold, for now, no accurate modeling is done
507 //
508 G4VProcess* process =
510 FindProcess("e-_G4DNAVibExcitation", "e-");
511
512 if (process)
513 {
514 G4DNAVibExcitation* vibExcitation = (G4DNAVibExcitation*) process;
515 G4VEmModel* model = vibExcitation->EmModel();
516 G4DNASancheExcitationModel* sancheExcitationMod =
517 dynamic_cast<G4DNASancheExcitationModel*>(model);
518 if(sancheExcitationMod)
519 {
520 sancheExcitationMod->ExtendLowEnergyLimit(0.025 * eV);
521 }
522 }
523
524 //===============================================================
525 // *** Electron Solvatation ***
526 //
527 process =
529 FindProcess("e-_G4DNAElectronSolvation", "e-");
530
531 if (process == 0)
532 {
533 ph->RegisterProcess(
534 new G4DNAElectronSolvation("e-_G4DNAElectronSolvation"),
536 }
537
538 //===============================================================
539 // Define processes for molecules
540 //
541 G4MoleculeTable* theMoleculeTable = G4MoleculeTable::Instance();
543 theMoleculeTable->GetDefintionIterator();
544 iterator.reset();
545 while (iterator())
546 {
547 G4MoleculeDefinition* moleculeDef = iterator.value();
548
549 if (moleculeDef != G4H2O::Definition())
550 {
551 // G4cout << "Brownian motion added for : "
552 // << moleculeDef->GetName() << G4endl;
554 // brown->SetVerboseLevel(4);
555 ph->RegisterProcess(brown, moleculeDef);
556 }
557 else
558 {
559 moleculeDef->GetProcessManager()
561 G4DNAMolecularDissociation* dissociationProcess =
562 new G4DNAMolecularDissociation("H2O_DNAMolecularDecay");
563 dissociationProcess->SetDisplacer(
564 moleculeDef, new G4DNAWaterDissociationDisplacer);
565 dissociationProcess->SetVerboseLevel(1);
566// ph->RegisterProcess(dissociationProcess, moleculeDef);
567
568 moleculeDef->GetProcessManager()
569 ->AddRestProcess(dissociationProcess, 1);
570 }
571 /*
572 * Warning : end of particles and processes are needed by
573 * EM Physics builders
574 */
575 }
576
578}
static constexpr double eV
Definition: G4SIunits.hh:201
void SetDisplacer(Species *, Displacer *)
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_option1::ConstructReactionTable ( G4DNAMolecularReactionTable reactionTable)
virtual

Implements G4VUserChemistryList.

Definition at line 422 of file G4EmDNAChemistry_option1.cc.

424{
425 //-----------------------------------
426 //Get the molecular configuration
441
442 //------------------------------------------------------------------
443 // e_aq + e_aq + 2H2O -> H2 + 2OH-
444 G4DNAMolecularReactionData* reactionData =
445 new G4DNAMolecularReactionData(0.636e10 * (1e-3 * m3 / (mole * s)), e_aq, e_aq);
446 reactionData->AddProduct(OHm);
447 reactionData->AddProduct(OHm);
448 reactionData->AddProduct(H2);
449 theReactionTable->SetReaction(reactionData);
450 //------------------------------------------------------------------
451 // e_aq + *OH -> OH-
452 reactionData = new G4DNAMolecularReactionData(
453 2.95e10 * (1e-3 * m3 / (mole * s)), e_aq, OH);
454 reactionData->AddProduct(OHm);
455 theReactionTable->SetReaction(reactionData);
456 //------------------------------------------------------------------
457 // e_aq + H* + H2O -> H2 + OH-
458 reactionData = new G4DNAMolecularReactionData(
459 2.50e10 * (1e-3 * m3 / (mole * s)), e_aq, H);
460 reactionData->AddProduct(OHm);
461 reactionData->AddProduct(H2);
462 theReactionTable->SetReaction(reactionData);
463 //------------------------------------------------------------------
464 // e_aq + H3O+ -> H* + H2O
465 reactionData = new G4DNAMolecularReactionData(
466 2.11e10 * (1e-3 * m3 / (mole * s)), e_aq, H3Op);
467 reactionData->AddProduct(H);
468 theReactionTable->SetReaction(reactionData);
469 //------------------------------------------------------------------
470 // e_aq + H2O2 -> OH- + *OH
471 reactionData = new G4DNAMolecularReactionData(
472 1.10e10 * (1e-3 * m3 / (mole * s)), e_aq, H2O2);
473 reactionData->AddProduct(OHm);
474 reactionData->AddProduct(OH);
475 theReactionTable->SetReaction(reactionData);
476 //------------------------------------------------------------------
477 // *OH + *OH -> H2O2
478 reactionData = new G4DNAMolecularReactionData(
479 0.55e10 * (1e-3 * m3 / (mole * s)), OH, OH);
480 reactionData->AddProduct(H2O2);
481 theReactionTable->SetReaction(reactionData);
482 //------------------------------------------------------------------
483 // *OH + *H -> H2O
484 theReactionTable->SetReaction(1.55e10 * (1e-3 * m3 / (mole * s)), OH, H);
485 //------------------------------------------------------------------
486 // *H + *H -> H2
487 reactionData = new G4DNAMolecularReactionData(
488 0.503e10 * (1e-3 * m3 / (mole * s)), H, H);
489 reactionData->AddProduct(H2);
490 theReactionTable->SetReaction(reactionData);
491 //------------------------------------------------------------------
492 // H3O+ + OH- -> 2H2O
493 theReactionTable->SetReaction(1.13e11 * (1e-3 * m3 / (mole * s)), H3Op, OHm);
494 //------------------------------------------------------------------
495}
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_option1::ConstructTimeStepModel ( G4DNAMolecularReactionTable reactionTable)
virtual

The reaction model defines how to compute the reaction range between molecules

The StepByStep model tells the step manager how to behave before and after each step, how to compute the time steps.

Implements G4VUserChemistryList.

Definition at line 582 of file G4EmDNAChemistry_option1.cc.

584{
585
586 //=========================================
587 // Diffusion controlled reaction model
588 //=========================================
594 G4VDNAReactionModel* reactionRadiusComputer =
596 reactionTable->PrintTable(reactionRadiusComputer);
597
605 stepByStep->SetReactionModel(reactionRadiusComputer);
606// ((G4DNAMoleculeEncounterStepper*) stepByStep->GetTimeStepper())->
607// SetVerbose(5);
608
609 RegisterTimeStepModel(stepByStep, 0);
610}
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: