Geant4 Cross Reference

Cross-Referencing   Geant4
Geant4/physics_lists/constructors/electromagnetic/src/G4ChemDissociationChannels.cc

Version: [ ReleaseNotes ] [ 1.0 ] [ 1.1 ] [ 2.0 ] [ 3.0 ] [ 3.1 ] [ 3.2 ] [ 4.0 ] [ 4.0.p1 ] [ 4.0.p2 ] [ 4.1 ] [ 4.1.p1 ] [ 5.0 ] [ 5.0.p1 ] [ 5.1 ] [ 5.1.p1 ] [ 5.2 ] [ 5.2.p1 ] [ 5.2.p2 ] [ 6.0 ] [ 6.0.p1 ] [ 6.1 ] [ 6.2 ] [ 6.2.p1 ] [ 6.2.p2 ] [ 7.0 ] [ 7.0.p1 ] [ 7.1 ] [ 7.1.p1 ] [ 8.0 ] [ 8.0.p1 ] [ 8.1 ] [ 8.1.p1 ] [ 8.1.p2 ] [ 8.2 ] [ 8.2.p1 ] [ 8.3 ] [ 8.3.p1 ] [ 8.3.p2 ] [ 9.0 ] [ 9.0.p1 ] [ 9.0.p2 ] [ 9.1 ] [ 9.1.p1 ] [ 9.1.p2 ] [ 9.1.p3 ] [ 9.2 ] [ 9.2.p1 ] [ 9.2.p2 ] [ 9.2.p3 ] [ 9.2.p4 ] [ 9.3 ] [ 9.3.p1 ] [ 9.3.p2 ] [ 9.4 ] [ 9.4.p1 ] [ 9.4.p2 ] [ 9.4.p3 ] [ 9.4.p4 ] [ 9.5 ] [ 9.5.p1 ] [ 9.5.p2 ] [ 9.6 ] [ 9.6.p1 ] [ 9.6.p2 ] [ 9.6.p3 ] [ 9.6.p4 ] [ 10.0 ] [ 10.0.p1 ] [ 10.0.p2 ] [ 10.0.p3 ] [ 10.0.p4 ] [ 10.1 ] [ 10.1.p1 ] [ 10.1.p2 ] [ 10.1.p3 ] [ 10.2 ] [ 10.2.p1 ] [ 10.2.p2 ] [ 10.2.p3 ] [ 10.3 ] [ 10.3.p1 ] [ 10.3.p2 ] [ 10.3.p3 ] [ 10.4 ] [ 10.4.p1 ] [ 10.4.p2 ] [ 10.4.p3 ] [ 10.5 ] [ 10.5.p1 ] [ 10.6 ] [ 10.6.p1 ] [ 10.6.p2 ] [ 10.6.p3 ] [ 10.7 ] [ 10.7.p1 ] [ 10.7.p2 ] [ 10.7.p3 ] [ 10.7.p4 ] [ 11.0 ] [ 11.0.p1 ] [ 11.0.p2 ] [ 11.0.p3, ] [ 11.0.p4 ] [ 11.1 ] [ 11.1.1 ] [ 11.1.2 ] [ 11.1.3 ] [ 11.2 ] [ 11.2.1 ] [ 11.2.2 ] [ 11.3.0 ]

  1 //
  2 // ********************************************************************
  3 // * License and Disclaimer                                           *
  4 // *                                                                  *
  5 // * The  Geant4 software  is  copyright of the Copyright Holders  of *
  6 // * the Geant4 Collaboration.  It is provided  under  the terms  and *
  7 // * conditions of the Geant4 Software License,  included in the file *
  8 // * LICENSE and available at  http://cern.ch/geant4/license .  These *
  9 // * include a list of copyright holders.                             *
 10 // *                                                                  *
 11 // * Neither the authors of this software system, nor their employing *
 12 // * institutes,nor the agencies providing financial support for this *
 13 // * work  make  any representation or  warranty, express or implied, *
 14 // * regarding  this  software system or assume any liability for its *
 15 // * use.  Please see the license in the file  LICENSE  and URL above *
 16 // * for the full disclaimer and the limitation of liability.         *
 17 // *                                                                  *
 18 // * This  code  implementation is the result of  the  scientific and *
 19 // * technical work of the GEANT4 collaboration.                      *
 20 // * By using,  copying,  modifying or  distributing the software (or *
 21 // * any work based  on the software)  you  agree  to acknowledge its *
 22 // * use  in  resulting  scientific  publications,  and indicate your *
 23 // * acceptance of all terms of the Geant4 Software license.          *
 24 // ********************************************************************
 25 //
 26 //
 27 // Geant4 class G4ChemDissociationChannels
 28 //
 29 // Author H. Tran 16.12.2022
 30 //
 31 
 32 #include "G4ChemDissociationChannels.hh"
 33 
 34 #include "G4DNAWaterDissociationDisplacer.hh"
 35 #include "G4DNAWaterExcitationStructure.hh"
 36 #include "G4Electron_aq.hh"
 37 #include "G4H2.hh"
 38 #include "G4H2O.hh"
 39 #include "G4H2O2.hh"
 40 #include "G4H3O.hh"
 41 #include "G4Hydrogen.hh"
 42 #include "G4MolecularConfiguration.hh"
 43 #include "G4MoleculeTable.hh"
 44 #include "G4OH.hh"
 45 #include "G4PhysicalConstants.hh"
 46 #include "G4SystemOfUnits.hh"
 47 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
 48 void G4ChemDissociationChannels::ConstructMolecule()
 49 {
 50   // Create the definition
 51   G4H2O::Definition();
 52   G4Hydrogen::Definition();
 53   G4H3O::Definition();
 54   G4OH::Definition();
 55   G4Electron_aq::Definition();
 56   G4H2O2::Definition();
 57   G4H2::Definition();
 58   auto G4OHm = new G4MoleculeDefinition("OH",/*mass*/ 17.00734 * g / Avogadro * c_squared,
 59                                         2.8e-9 * (m * m / s), -1,
 60                                         5, 0.958 * angstrom, // radius
 61                                         2 // number of atoms
 62                                         );
 63 
 64   auto molTable = G4MoleculeTable::Instance();
 65 
 66   molTable->CreateConfiguration("H3Op", G4H3O::Definition());
 67   G4MolecularConfiguration* OHm =
 68     molTable->CreateConfiguration("OHm",  // just a tag to store and retrieve
 69                                                              // from G4MoleculeTable
 70                                   G4OHm,
 71       -1,  // charge
 72       5.0e-9 * (m2 / s));
 73   OHm->SetMass(17.0079 * g / Avogadro * c_squared);
 74   molTable->CreateConfiguration("°OH", G4OH::Definition());
 75   molTable->CreateConfiguration("e_aq", G4Electron_aq::Definition());
 76   molTable->CreateConfiguration("H", G4Hydrogen::Definition());
 77   molTable->CreateConfiguration("H2", G4H2::Definition());
 78   molTable->CreateConfiguration("H2O2", G4H2O2::Definition());
 79 }
 80 
 81 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
 82 
 83 void G4ChemDissociationChannels::ConstructDissociationChannels()
 84 {
 85   //-----------------------------------
 86   // Get the molecular configuration
 87   auto molTable = G4MoleculeTable::Instance();
 88   G4MolecularConfiguration* OH = molTable->GetConfiguration("°OH");
 89   G4MolecularConfiguration* OHm = molTable->GetConfiguration("OHm");
 90   G4MolecularConfiguration* e_aq = molTable->GetConfiguration("e_aq");
 91   G4MolecularConfiguration* H2 = molTable->GetConfiguration("H2");
 92   G4MolecularConfiguration* H3O = molTable->GetConfiguration("H3Op");
 93   G4MolecularConfiguration* H = molTable->GetConfiguration("H");
 94 
 95   //-------------------------------------
 96   // Define the decay channels
 97   G4MoleculeDefinition* water = G4H2O::Definition();
 98   G4MolecularDissociationChannel* decCh1;
 99   G4MolecularDissociationChannel* decCh2;
100 
101   auto occ = new G4ElectronOccupancy(*(water->GetGroundStateElectronOccupancy()));
102 
103   //////////////////////////////////////////////////////////
104   //            EXCITATIONS                               //
105   //////////////////////////////////////////////////////////
106   G4DNAWaterExcitationStructure waterExcitation;
107   //--------------------------------------------------------
108   //---------------Excitation on the fifth layer------------
109 
110   decCh1 = new G4MolecularDissociationChannel("A^1B_1_Relax");
111   decCh2 = new G4MolecularDissociationChannel("A^1B_1_DissociDecay");
112   // Decay 1 : OH + H
113   decCh1->SetEnergy(waterExcitation.ExcitationEnergy(0));
114   decCh1->SetProbability(0.35);
115   decCh1->SetDisplacementType(G4DNAWaterDissociationDisplacer::NoDisplacement);
116 
117   decCh2->AddProduct(OH);
118   decCh2->AddProduct(H);
119   decCh2->SetProbability(0.65);
120   decCh2->SetDisplacementType(G4DNAWaterDissociationDisplacer::A1B1_DissociationDecay);
121 
122   //  water->AddExcitedState("A^1B_1");
123   occ->RemoveElectron(4, 1);  // this is the transition form ground state to
124   occ->AddElectron(5, 1);  // the first unoccupied orbital: A^1B_1
125 
126   water->NewConfigurationWithElectronOccupancy("A^1B_1", *occ);
127   water->AddDecayChannel("A^1B_1", decCh1);
128   water->AddDecayChannel("A^1B_1", decCh2);
129 
130   //--------------------------------------------------------
131   //---------------Excitation on the fourth layer-----------
132   decCh1 = new G4MolecularDissociationChannel("B^1A_1_Relax_Channel");
133   decCh2 = new G4MolecularDissociationChannel("B^1A_1_DissociDecay");
134   auto decCh3 = new G4MolecularDissociationChannel("B^1A_1_AutoIoni_Channel");
135 
136   // Decay 1 : energy
137   decCh1->SetEnergy(waterExcitation.ExcitationEnergy(1));
138   decCh1->SetProbability(0.3);
139 
140   // Decay 2 : 2OH + H_2
141   decCh2->AddProduct(H2);
142   decCh2->AddProduct(OH);
143   decCh2->AddProduct(OH);
144   decCh2->SetProbability(0.15);
145   decCh2->SetDisplacementType(G4DNAWaterDissociationDisplacer::B1A1_DissociationDecay);
146 
147   // Decay 3 : OH + H_3Op + e_aq
148   decCh3->AddProduct(OH);
149   decCh3->AddProduct(H3O);
150   decCh3->AddProduct(e_aq);
151   decCh3->SetProbability(0.55);
152   decCh3->SetDisplacementType(G4DNAWaterDissociationDisplacer::AutoIonisation);
153 
154   *occ = *(water->GetGroundStateElectronOccupancy());
155   occ->RemoveElectron(3);  // this is the transition form ground state to
156   occ->AddElectron(5, 1);  // the first unoccupied orbital: B^1A_1
157 
158   water->NewConfigurationWithElectronOccupancy("B^1A_1", *occ);
159   water->AddDecayChannel("B^1A_1", decCh1);
160   water->AddDecayChannel("B^1A_1", decCh2);
161   water->AddDecayChannel("B^1A_1", decCh3);
162 
163   //-------------------------------------------------------
164   //-------------------Excitation of 3rd layer-----------------
165   decCh1 = new G4MolecularDissociationChannel("Exc3rdLayer_AutoIoni_Channel");
166   decCh2 = new G4MolecularDissociationChannel("Exc3rdLayer_Relax_Channel");
167 
168   // Decay channel 1 : : OH + H_3Op + e_aq
169   decCh1->AddProduct(OH);
170   decCh1->AddProduct(H3O);
171   decCh1->AddProduct(e_aq);
172 
173   decCh1->SetProbability(0.5);
174   decCh1->SetDisplacementType(G4DNAWaterDissociationDisplacer::AutoIonisation);
175 
176   // Decay channel 2 : energy
177   decCh2->SetEnergy(waterExcitation.ExcitationEnergy(2));
178   decCh2->SetProbability(0.5);
179 
180   // Electronic configuration of this decay
181   *occ = *(water->GetGroundStateElectronOccupancy());
182   occ->RemoveElectron(2, 1);
183   occ->AddElectron(5, 1);
184 
185   // Configure the water molecule
186   water->NewConfigurationWithElectronOccupancy("Exci3rdLayer", *occ);
187   water->AddDecayChannel("Exci3rdLayer", decCh1);
188   water->AddDecayChannel("Exci3rdLayer", decCh2);
189 
190   //-------------------------------------------------------
191   //-------------------Excitation of 2nd layer-----------------
192   decCh1 = new G4MolecularDissociationChannel("Exc2ndLayer_AutoIoni_Channel");
193   decCh2 = new G4MolecularDissociationChannel("Exc2ndLayer_Relax_Channel");
194 
195   // Decay Channel 1 : : OH + H_3Op + e_aq
196   decCh1->AddProduct(OH);
197   decCh1->AddProduct(H3O);
198   decCh1->AddProduct(e_aq);
199 
200   decCh1->SetProbability(0.5);
201   decCh1->SetDisplacementType(G4DNAWaterDissociationDisplacer::AutoIonisation);
202 
203   // Decay channel 2 : energy
204   decCh2->SetEnergy(waterExcitation.ExcitationEnergy(3));
205   decCh2->SetProbability(0.5);
206 
207   *occ = *(water->GetGroundStateElectronOccupancy());
208   occ->RemoveElectron(1, 1);
209   occ->AddElectron(5, 1);
210 
211   water->NewConfigurationWithElectronOccupancy("Exci2ndLayer", *occ);
212   water->AddDecayChannel("Exci2ndLayer", decCh1);
213   water->AddDecayChannel("Exci2ndLayer", decCh2);
214 
215   //-------------------------------------------------------
216   //-------------------Excitation of 1st layer-----------------
217   decCh1 = new G4MolecularDissociationChannel("Exci1stLayer_AutoIoni_Channel");
218   decCh2 = new G4MolecularDissociationChannel("Exci1stLayer_Relax_Channel");
219 
220   *occ = *(water->GetGroundStateElectronOccupancy());
221   occ->RemoveElectron(0, 1);
222   occ->AddElectron(5, 1);
223 
224   // Decay Channel 1 : : OH + H_3Op + e_aq
225   decCh1->AddProduct(OH);
226   decCh1->AddProduct(H3O);
227   decCh1->AddProduct(e_aq);
228   decCh1->SetProbability(0.5);
229   decCh1->SetDisplacementType(G4DNAWaterDissociationDisplacer::AutoIonisation);
230 
231   // Decay channel 2 : energy
232   decCh2->SetEnergy(waterExcitation.ExcitationEnergy(4));
233   decCh2->SetProbability(0.5);
234 
235   water->NewConfigurationWithElectronOccupancy("Exci1stLayer", *occ);
236   water->AddDecayChannel("Exci1stLayer", decCh1);
237   water->AddDecayChannel("Exci1stLayer", decCh2);
238 
239   /////////////////////////////////////////////////////////
240   //                  IONISATION                         //
241   /////////////////////////////////////////////////////////
242   //--------------------------------------------------------
243   //------------------- Ionisation -------------------------
244 
245   decCh1 = new G4MolecularDissociationChannel("Ioni_Channel");
246 
247   // Decay Channel 1 : : OH + H_3Op
248   decCh1->AddProduct(H3O);
249   decCh1->AddProduct(OH);
250   decCh1->SetProbability(1);
251   decCh1->SetDisplacementType(G4DNAWaterDissociationDisplacer::Ionisation_DissociationDecay);
252 
253   *occ = *(water->GetGroundStateElectronOccupancy());
254   occ->RemoveElectron(4, 1);
255   // this is a ionized h2O with a hole in its last orbital
256   water->NewConfigurationWithElectronOccupancy("Ioni5", *occ);
257   water->AddDecayChannel("Ioni5", decCh1);
258 
259   *occ = *(water->GetGroundStateElectronOccupancy());
260   occ->RemoveElectron(3, 1);
261   water->NewConfigurationWithElectronOccupancy("Ioni4", *occ);
262   water->AddDecayChannel("Ioni4", new G4MolecularDissociationChannel(*decCh1));
263 
264   *occ = *(water->GetGroundStateElectronOccupancy());
265   occ->RemoveElectron(2, 1);
266   water->NewConfigurationWithElectronOccupancy("Ioni3", *occ);
267   water->AddDecayChannel("Ioni3", new G4MolecularDissociationChannel(*decCh1));
268 
269   *occ = *(water->GetGroundStateElectronOccupancy());
270   occ->RemoveElectron(1, 1);
271   water->NewConfigurationWithElectronOccupancy("Ioni2", *occ);
272   water->AddDecayChannel("Ioni2", new G4MolecularDissociationChannel(*decCh1));
273 
274   *occ = *(water->GetGroundStateElectronOccupancy());
275   occ->RemoveElectron(0, 1);
276   water->NewConfigurationWithElectronOccupancy("Ioni1", *occ);
277   water->AddDecayChannel("Ioni1", new G4MolecularDissociationChannel(*decCh1));
278 
279   //////////////////////////////////////////////////////////
280   //            Dissociative Attachment                   //
281   //////////////////////////////////////////////////////////
282   decCh1 = new G4MolecularDissociationChannel("DissociAttachment");
283 
284   // Decay 1 : 2OH + H_2
285   decCh1->AddProduct(H2);
286   decCh1->AddProduct(OHm);
287   decCh1->AddProduct(OH);
288   decCh1->SetProbability(1);
289   decCh1->SetDisplacementType(G4DNAWaterDissociationDisplacer::DissociativeAttachment);
290 
291   *occ = *(water->GetGroundStateElectronOccupancy());
292   occ->AddElectron(5, 1);  // H_2O^-
293   water->NewConfigurationWithElectronOccupancy("DissociAttachment", *occ);
294   water->AddDecayChannel("DissociAttachment", decCh1);
295 
296   //////////////////////////////////////////////////////////
297   //            Electron-hole recombination               //
298   //////////////////////////////////////////////////////////
299   decCh1 = new G4MolecularDissociationChannel("H2Ovib_DissociDecay1");
300   decCh2 = new G4MolecularDissociationChannel("H2Ovib_DissociDecay2");
301   decCh3 = new G4MolecularDissociationChannel("H2Ovib_DissociDecay3");
302 
303   // Decay 1 : 2OH + H_2
304   decCh1->AddProduct(H2);
305   decCh1->AddProduct(OH);
306   decCh1->AddProduct(OH);
307   decCh1->SetProbability(0.15);
308   decCh1->SetDisplacementType(G4DNAWaterDissociationDisplacer::B1A1_DissociationDecay);
309 
310   // Decay 2 : OH + H
311   decCh2->AddProduct(OH);
312   decCh2->AddProduct(H);
313   decCh2->SetProbability(0.55);
314   decCh2->SetDisplacementType(G4DNAWaterDissociationDisplacer::A1B1_DissociationDecay);
315 
316   // Decay 3 : relaxation
317   decCh3->SetProbability(0.30);
318 
319   const auto pH2Ovib = G4H2O::Definition()->NewConfiguration("H2Ovib");
320   water->AddDecayChannel(pH2Ovib, decCh1);
321   water->AddDecayChannel(pH2Ovib, decCh2);
322   water->AddDecayChannel(pH2Ovib, decCh3);
323 
324   delete occ;
325 }