Import Geant4 11.2.0.beta source tree
This commit is contained in:
@@ -1,48 +0,0 @@
|
||||
# ----------------------------------------------------------------------
|
||||
# GNUmakefile for physicslists library, Gunter Folger 25-October 2006
|
||||
# ----------------------------------------------------------------------
|
||||
|
||||
name := G4physicslists
|
||||
|
||||
ifndef G4INSTALL
|
||||
G4INSTALL = ../..
|
||||
endif
|
||||
|
||||
GLOBLIBS = libG4run.lib libG4event.lib
|
||||
GLOBLIBS += libG4tracking.lib libG4processes.lib libG4digits_hits.lib
|
||||
GLOBLIBS += libG4track.lib libG4particles.lib libG4geometry.lib
|
||||
GLOBLIBS += libG4materials.lib libG4graphics_reps.lib
|
||||
GLOBLIBS += libG4intercoms.lib libG4global.lib
|
||||
ifdef G4LIB_BUILD_EXPAT
|
||||
GLOBLIBS += libG4expat.lib
|
||||
endif
|
||||
|
||||
include $(G4INSTALL)/config/architecture.gmk
|
||||
|
||||
SUBDIRS = lists
|
||||
SUBDIRS += builders
|
||||
SUBDIRS += constructors/decay
|
||||
SUBDIRS += constructors/electromagnetic
|
||||
SUBDIRS += constructors/factory
|
||||
SUBDIRS += constructors/gamma_lepto_nuclear
|
||||
SUBDIRS += constructors/hadron_elastic
|
||||
SUBDIRS += constructors/hadron_inelastic
|
||||
SUBDIRS += constructors/ions
|
||||
SUBDIRS += constructors/limiters
|
||||
SUBDIRS += constructors/stopping
|
||||
SUBDIRS += util
|
||||
|
||||
SUBLIBS = G4phys_lists
|
||||
SUBLIBS += G4phys_builders
|
||||
SUBLIBS += G4phys_ctor_decay
|
||||
SUBLIBS += G4phys_ctor_em
|
||||
SUBLIBS += G4phys_ctor_factory
|
||||
SUBLIBS += G4phys_ctor_glnuclear
|
||||
SUBLIBS += G4phys_ctor_helastic
|
||||
SUBLIBS += G4phys_ctor_hinelastic
|
||||
SUBLIBS += G4phys_ctor_ions
|
||||
SUBLIBS += G4phys_ctor_limiters
|
||||
SUBLIBS += G4phys_ctor_stopping
|
||||
SUBLIBS += G4physlist_util
|
||||
|
||||
include $(G4INSTALL)/config/globlib.gmk
|
||||
@@ -6,6 +6,9 @@ It must **not** be used as a substitute for writing good git commit messages!
|
||||
|
||||
-------------------------------------------------------------------------------
|
||||
|
||||
## 2022-12-12 Ben Morgan (physics-lists-V11-01-00)
|
||||
- Remove obsolete GNUmakefile scripts
|
||||
|
||||
## 2022-11-24 Gabriele Cosmo (physics-lists-V11-00-02)
|
||||
- Fixed compilation warnings for implicit type conversions on macOS/XCode 14.1.
|
||||
|
||||
|
||||
@@ -1,91 +0,0 @@
|
||||
# ---------------------------------------------------------------------------
|
||||
# GNUmakefile for physics_lists/builders library. Gunter Folger 25-Oct-2006.
|
||||
# ---------------------------------------------------------------------------
|
||||
|
||||
name := G4phys_builders
|
||||
|
||||
ifndef G4INSTALL
|
||||
G4INSTALL = ../../..
|
||||
endif
|
||||
|
||||
include $(G4INSTALL)/config/architecture.gmk
|
||||
|
||||
CPPFLAGS += -DG4PROCESSES_EXPORT
|
||||
|
||||
ifdef G4LIB_BUILD_EXPAT
|
||||
CPPFLAGS += -I$(G4BASE)/externals/expat/include
|
||||
endif
|
||||
|
||||
CPPFLAGS += -I$(G4BASE)/global/management/include \
|
||||
-I$(G4BASE)/global/HEPRandom/include \
|
||||
-I$(G4BASE)/global/HEPNumerics/include \
|
||||
-I$(G4BASE)/global/HEPGeometry/include \
|
||||
-I$(G4BASE)/geometry/volumes/include \
|
||||
-I$(G4BASE)/geometry/management/include \
|
||||
-I$(G4BASE)/geometry/magneticfield/include \
|
||||
-I$(G4BASE)/geometry/navigation/include \
|
||||
-I$(G4BASE)/intercoms/include \
|
||||
-I$(G4BASE)/track/include \
|
||||
-I$(G4BASE)/particles/shortlived/include \
|
||||
-I$(G4BASE)/particles/management/include \
|
||||
-I$(G4BASE)/particles/leptons/include \
|
||||
-I$(G4BASE)/particles/bosons/include \
|
||||
-I$(G4BASE)/particles/hadrons/mesons/include \
|
||||
-I$(G4BASE)/particles/hadrons/barions/include \
|
||||
-I$(G4BASE)/particles/hadrons/ions/include \
|
||||
-I$(G4BASE)/run/include \
|
||||
-I$(G4BASE)/physics_lists/constructors/factory/include \
|
||||
-I$(G4BASE)/physics_lists/util/include \
|
||||
-I$(G4BASE)/processes/management/include \
|
||||
-I$(G4BASE)/processes/transportation/include \
|
||||
-I$(G4BASE)/processes/decay/include \
|
||||
-I$(G4BASE)/processes/cuts/include \
|
||||
-I$(G4BASE)/processes/optical/include \
|
||||
-I$(G4BASE)/processes/electromagnetic/highenergy/include \
|
||||
-I$(G4BASE)/processes/electromagnetic/standard/include \
|
||||
-I$(G4BASE)/processes/electromagnetic/muons/include \
|
||||
-I$(G4BASE)/processes/electromagnetic/utils/include \
|
||||
-I$(G4BASE)/processes/electromagnetic/xrays/include \
|
||||
-I$(G4BASE)/processes/electromagnetic/lowenergy/include \
|
||||
-I$(G4BASE)/processes/electromagnetic/dna/management/include \
|
||||
-I$(G4BASE)/processes/electromagnetic/dna/molecules/management/include \
|
||||
-I$(G4BASE)/processes/electromagnetic/dna/molecules/types/include \
|
||||
-I$(G4BASE)/processes/electromagnetic/dna/models/include \
|
||||
-I$(G4BASE)/processes/electromagnetic/dna/processes/include \
|
||||
-I$(G4BASE)/processes/electromagnetic/dna/utils/include \
|
||||
-I$(G4BASE)/processes/hadronic/cross_sections/include \
|
||||
-I$(G4BASE)/processes/hadronic/stopping/include \
|
||||
-I$(G4BASE)/processes/hadronic/management/include \
|
||||
-I$(G4BASE)/processes/hadronic/processes/include \
|
||||
-I$(G4BASE)/processes/hadronic/util/include \
|
||||
-I$(G4BASE)/processes/hadronic/models/binary_cascade/include \
|
||||
-I$(G4BASE)/processes/hadronic/models/cascade/cascade/include \
|
||||
-I$(G4BASE)/processes/hadronic/models/qmd/include \
|
||||
-I$(G4BASE)/processes/hadronic/models/coherent_elastic/include \
|
||||
-I$(G4BASE)/processes/hadronic/models/de_excitation/evaporation/include \
|
||||
-I$(G4BASE)/processes/hadronic/models/de_excitation/fermi_breakup/include \
|
||||
-I$(G4BASE)/processes/hadronic/models/de_excitation/fission/include \
|
||||
-I$(G4BASE)/processes/hadronic/models/de_excitation/handler/include \
|
||||
-I$(G4BASE)/processes/hadronic/models/de_excitation/management/include \
|
||||
-I$(G4BASE)/processes/hadronic/models/de_excitation/multifragmentation/include \
|
||||
-I$(G4BASE)/processes/hadronic/models/de_excitation/photon_evaporation/include \
|
||||
-I$(G4BASE)/processes/hadronic/models/de_excitation/util/include \
|
||||
-I$(G4BASE)/processes/hadronic/models/im_r_matrix/include \
|
||||
-I$(G4BASE)/processes/hadronic/models/inclxx/utils/include \
|
||||
-I$(G4BASE)/processes/hadronic/models/inclxx/incl_physics/include \
|
||||
-I$(G4BASE)/processes/hadronic/models/inclxx/interface/include \
|
||||
-I$(G4BASE)/processes/hadronic/models/lend/include \
|
||||
-I$(G4BASE)/processes/hadronic/models/lepto_nuclear/include \
|
||||
-I$(G4BASE)/processes/hadronic/models/particle_hp/include \
|
||||
-I$(G4BASE)/processes/hadronic/models/parton_string/diffraction/include \
|
||||
-I$(G4BASE)/processes/hadronic/models/parton_string/hadronization/include \
|
||||
-I$(G4BASE)/processes/hadronic/models/parton_string/management/include \
|
||||
-I$(G4BASE)/processes/hadronic/models/parton_string/qgsm/include \
|
||||
-I$(G4BASE)/processes/hadronic/models/photolepton_hadron/muon_nuclear/include \
|
||||
-I$(G4BASE)/processes/hadronic/models/pre_equilibrium/exciton_model/include \
|
||||
-I$(G4BASE)/processes/hadronic/models/radioactive_decay/include \
|
||||
-I$(G4BASE)/processes/hadronic/models/theo_high_energy/include \
|
||||
-I$(G4BASE)/processes/hadronic/util/include \
|
||||
-I$(G4BASE)/materials/include
|
||||
|
||||
include $(G4INSTALL)/config/common.gmk
|
||||
@@ -6,11 +6,11 @@ It must **not** be used as a substitute for writing good git commit messages!
|
||||
|
||||
-------------------------------------------------------------------------------
|
||||
|
||||
## 2023-03-17 Alberto Ribon (phys-builders-V11-00-04)
|
||||
## 2023-03-17 Alberto Ribon (phys-builders-V11-01-01)
|
||||
- G4HadronicBuilder : fixed bug in the method BuildKaonsFTFQGSP_BERT().
|
||||
Thanks to Dmitri Konstantinov for reporting it.
|
||||
|
||||
## 2022-12-30 Vladimir Ivanchenko (phys-builders-V11-00-03)
|
||||
## 2022-12-30 Vladimir Ivanchenko (phys-builders-V11-01-00)
|
||||
- Updated table of processes
|
||||
|
||||
## 2022-11-24 Gabriele Cosmo (phys-builders-V11-00-02)
|
||||
|
||||
@@ -1,33 +0,0 @@
|
||||
# ----------------------------------------------------------------------
|
||||
# GNUmakefile for physicslists library, Gunter Folger 25-October 2006
|
||||
# ----------------------------------------------------------------------
|
||||
|
||||
name := G4physlist_ctor
|
||||
|
||||
SUBDIRS = decay
|
||||
SUBDIRS += electromagnetic
|
||||
SUBDIRS += factory
|
||||
SUBDIRS += gamma_lepto_nuclear
|
||||
SUBDIRS += hadron_elastic
|
||||
SUBDIRS += hadron_inelastic
|
||||
SUBDIRS += ions
|
||||
SUBDIRS += limiters
|
||||
SUBDIRS += stopping
|
||||
|
||||
|
||||
|
||||
SUBLIBS = G4phys_ctor_decay
|
||||
SUBLIBS += G4phys_ctor_em
|
||||
SUBLIBS += G4phys_ctor_factory
|
||||
SUBLIBS += G4phys_ctor_glnuclear
|
||||
SUBLIBS += G4phys_ctor_helastic
|
||||
SUBLIBS += G4phys_ctor_hinelastic
|
||||
SUBLIBS += G4phys_ctor_ions
|
||||
SUBLIBS += G4phys_ctor_limiters
|
||||
SUBLIBS += G4phys_ctor_stopping
|
||||
|
||||
ifndef G4INSTALL
|
||||
G4INSTALL = ../../..
|
||||
endif
|
||||
|
||||
include $(G4INSTALL)/config/globlib.gmk
|
||||
@@ -1,77 +0,0 @@
|
||||
# ---------------------------------------------------------------------------
|
||||
# GNUmakefile for physics_lists/constructors/decay library.
|
||||
# Gunter Folger 10-Jan-2012.
|
||||
# ---------------------------------------------------------------------------
|
||||
|
||||
name := G4phys_ctor_decay
|
||||
|
||||
ifndef G4INSTALL
|
||||
G4INSTALL = ../../../..
|
||||
endif
|
||||
|
||||
include $(G4INSTALL)/config/architecture.gmk
|
||||
|
||||
|
||||
CPPFLAGS += -I$(G4BASE)/global/management/include \
|
||||
-I$(G4BASE)/global/HEPRandom/include \
|
||||
-I$(G4BASE)/global/HEPNumerics/include \
|
||||
-I$(G4BASE)/global/HEPGeometry/include \
|
||||
-I$(G4BASE)/geometry/volumes/include \
|
||||
-I$(G4BASE)/geometry/management/include \
|
||||
-I$(G4BASE)/geometry/magneticfield/include \
|
||||
-I$(G4BASE)/geometry/navigation/include \
|
||||
-I$(G4BASE)/intercoms/include \
|
||||
-I$(G4BASE)/track/include \
|
||||
-I$(G4BASE)/particles/shortlived/include \
|
||||
-I$(G4BASE)/particles/management/include \
|
||||
-I$(G4BASE)/particles/leptons/include \
|
||||
-I$(G4BASE)/particles/bosons/include \
|
||||
-I$(G4BASE)/particles/hadrons/mesons/include \
|
||||
-I$(G4BASE)/particles/hadrons/barions/include \
|
||||
-I$(G4BASE)/particles/hadrons/ions/include \
|
||||
-I$(G4BASE)/run/include \
|
||||
-I$(G4BASE)/physics_lists/builders/include \
|
||||
-I$(G4BASE)/physics_lists/constructors/electromagnetic/include \
|
||||
-I$(G4BASE)/physics_lists/util/include \
|
||||
-I$(G4BASE)/physics_lists/constructors/factory/include \
|
||||
-I$(G4BASE)/processes/management/include \
|
||||
-I$(G4BASE)/processes/transportation/include \
|
||||
-I$(G4BASE)/processes/decay/include \
|
||||
-I$(G4BASE)/processes/cuts/include \
|
||||
-I$(G4BASE)/processes/electromagnetic/lowenergy/include \
|
||||
-I$(G4BASE)/processes/electromagnetic/utils/include \
|
||||
-I$(G4BASE)/processes/hadronic/cross_sections/include \
|
||||
-I$(G4BASE)/processes/hadronic/stopping/include \
|
||||
-I$(G4BASE)/processes/hadronic/management/include \
|
||||
-I$(G4BASE)/processes/hadronic/processes/include \
|
||||
-I$(G4BASE)/processes/hadronic/util/include \
|
||||
-I$(G4BASE)/processes/hadronic/models/binary_cascade/include \
|
||||
-I$(G4BASE)/processes/hadronic/models/cascade/cascade/include \
|
||||
-I$(G4BASE)/processes/hadronic/models/qmd/include \
|
||||
-I$(G4BASE)/processes/hadronic/models/coherent_elastic/include \
|
||||
-I$(G4BASE)/processes/hadronic/models/de_excitation/evaporation/include \
|
||||
-I$(G4BASE)/processes/hadronic/models/de_excitation/fermi_breakup/include \
|
||||
-I$(G4BASE)/processes/hadronic/models/de_excitation/handler/include \
|
||||
-I$(G4BASE)/processes/hadronic/models/de_excitation/management/include \
|
||||
-I$(G4BASE)/processes/hadronic/models/de_excitation/multifragmentation/include \
|
||||
-I$(G4BASE)/processes/hadronic/models/de_excitation/photon_evaporation/include \
|
||||
-I$(G4BASE)/processes/hadronic/models/de_excitation/util/include \
|
||||
-I$(G4BASE)/processes/hadronic/models/im_r_matrix/include \
|
||||
-I$(G4BASE)/processes/hadronic/models/inclxx/utils/include \
|
||||
-I$(G4BASE)/processes/hadronic/models/inclxx/incl_physics/include \
|
||||
-I$(G4BASE)/processes/hadronic/models/inclxx/interface/include \
|
||||
-I$(G4BASE)/processes/hadronic/models/lend/include \
|
||||
-I$(G4BASE)/processes/hadronic/models/lepto_nuclear/include \
|
||||
-I$(G4BASE)/processes/hadronic/models/particle_hp/include \
|
||||
-I$(G4BASE)/processes/hadronic/models/parton_string/diffraction/include \
|
||||
-I$(G4BASE)/processes/hadronic/models/parton_string/hadronization/include \
|
||||
-I$(G4BASE)/processes/hadronic/models/parton_string/management/include \
|
||||
-I$(G4BASE)/processes/hadronic/models/parton_string/qgsm/include \
|
||||
-I$(G4BASE)/processes/hadronic/models/photolepton_hadron/muon_nuclear/include \
|
||||
-I$(G4BASE)/processes/hadronic/models/pre_equilibrium/exciton_model/include \
|
||||
-I$(G4BASE)/processes/hadronic/models/radioactive_decay/include \
|
||||
-I$(G4BASE)/processes/hadronic/models/theo_high_energy/include \
|
||||
-I$(G4BASE)/processes/hadronic/util/include \
|
||||
-I$(G4BASE)/materials/include
|
||||
|
||||
include $(G4INSTALL)/config/common.gmk
|
||||
@@ -1,12 +1,10 @@
|
||||
# Category phys-ctor-decay History
|
||||
|
||||
See `CONTRIBUTING.rst` for details of **required** info/format for each entry,
|
||||
which **must** added in reverse chronological order (newest at the top).
|
||||
It must **not** be used as a substitute for writing good git commit messages!
|
||||
which **must** added in reverse chronological order (newest at the top). It must **not**
|
||||
be used as a substitute for writing good git commit messages!
|
||||
|
||||
-------------------------------------------------------------------------------
|
||||
|
||||
## 2023-01-11 Alberto Ribon (phys-ctor-decay-V11-00-04)
|
||||
## 2023-01-11 Alberto Ribon (phys-ctor-decay-V11-01-00)
|
||||
- G4RadioactiveDecayPhysics : assigned the RadioactiveDecay process
|
||||
to G4Triton (which is the only light ion that decays).
|
||||
Note: before, triton did not have beta decay, i.e. it was wrongly
|
||||
|
||||
@@ -1,58 +0,0 @@
|
||||
# ---------------------------------------------------------------------------
|
||||
# GNUmakefile for physics_lists/constructors/electromagnetic library.
|
||||
# Gunter Folger 10-Jan-2012.
|
||||
# ---------------------------------------------------------------------------
|
||||
|
||||
name := G4phys_ctor_em
|
||||
|
||||
ifndef G4INSTALL
|
||||
G4INSTALL = ../../../..
|
||||
endif
|
||||
|
||||
include $(G4INSTALL)/config/architecture.gmk
|
||||
|
||||
|
||||
CPPFLAGS += -I$(G4BASE)/global/management/include \
|
||||
-I$(G4BASE)/global/HEPRandom/include \
|
||||
-I$(G4BASE)/global/HEPNumerics/include \
|
||||
-I$(G4BASE)/global/HEPGeometry/include \
|
||||
-I$(G4BASE)/geometry/volumes/include \
|
||||
-I$(G4BASE)/geometry/management/include \
|
||||
-I$(G4BASE)/geometry/navigation/include \
|
||||
-I$(G4BASE)/intercoms/include \
|
||||
-I$(G4BASE)/track/include \
|
||||
-I$(G4BASE)/particles/shortlived/include \
|
||||
-I$(G4BASE)/particles/management/include \
|
||||
-I$(G4BASE)/particles/leptons/include \
|
||||
-I$(G4BASE)/particles/bosons/include \
|
||||
-I$(G4BASE)/particles/hadrons/mesons/include \
|
||||
-I$(G4BASE)/particles/hadrons/barions/include \
|
||||
-I$(G4BASE)/particles/hadrons/ions/include \
|
||||
-I$(G4BASE)/run/include \
|
||||
-I$(G4BASE)/physics_lists/builders/include \
|
||||
-I$(G4BASE)/physics_lists/constructors/factory/include \
|
||||
-I$(G4BASE)/physics_lists/util/include \
|
||||
-I$(G4BASE)/processes/hadronic/cross_sections/include \
|
||||
-I$(G4BASE)/processes/hadronic/management/include \
|
||||
-I$(G4BASE)/processes/hadronic/processes/include \
|
||||
-I$(G4BASE)/processes/hadronic/util/include \
|
||||
-I$(G4BASE)/processes/management/include \
|
||||
-I$(G4BASE)/processes/transportation/include \
|
||||
-I$(G4BASE)/processes/decay/include \
|
||||
-I$(G4BASE)/processes/cuts/include \
|
||||
-I$(G4BASE)/processes/optical/include \
|
||||
-I$(G4BASE)/processes/electromagnetic/highenergy/include \
|
||||
-I$(G4BASE)/processes/electromagnetic/standard/include \
|
||||
-I$(G4BASE)/processes/electromagnetic/muons/include \
|
||||
-I$(G4BASE)/processes/electromagnetic/utils/include \
|
||||
-I$(G4BASE)/processes/electromagnetic/xrays/include \
|
||||
-I$(G4BASE)/processes/electromagnetic/lowenergy/include \
|
||||
-I$(G4BASE)/processes/electromagnetic/dna/management/include \
|
||||
-I$(G4BASE)/processes/electromagnetic/dna/molecules/management/include \
|
||||
-I$(G4BASE)/processes/electromagnetic/dna/molecules/types/include \
|
||||
-I$(G4BASE)/processes/electromagnetic/dna/models/include \
|
||||
-I$(G4BASE)/processes/electromagnetic/dna/processes/include \
|
||||
-I$(G4BASE)/processes/electromagnetic/dna/utils/include \
|
||||
-I$(G4BASE)/materials/include
|
||||
|
||||
include $(G4INSTALL)/config/common.gmk
|
||||
@@ -6,7 +6,38 @@ It must **not** be used as a substitute for writing good git commit messages!
|
||||
|
||||
-------------------------------------------------------------------------------
|
||||
|
||||
## 2022-12-09 Vladimir Ivanchenko (phys-ctor-em-V11-00-36)
|
||||
## 2023-04-06 Hoang Tran (phys-ctor-em-V11-01-07)
|
||||
- Introduced G4ChemDissociationChannels and G4ChemDissociationChannels_option1
|
||||
|
||||
## 2023-03-08 Gabriele Cosmo (phys-ctor-em-V11-01-06)
|
||||
- Fixed compilation warning on macOS/XCode for implicit type conversion
|
||||
in G4EmModelActivator::FindOrAddProcess().
|
||||
|
||||
## 2023-03-04 Vladimir Ivanchenko (phys-ctor-em-V11-01-05)
|
||||
- G4EmParticleList - added method EmChargedPartNames(), which returns a minimal
|
||||
list of charged EM particles
|
||||
- G4EmModelActivator - fix #2530 - single scattering per region is implemented
|
||||
by addition of extra sngle scattering process, which is active inside this
|
||||
region, and not active outside; multiple scattering and single scattering
|
||||
processes for a given charged particle are disabled to this region
|
||||
|
||||
## 2023-02-27 Vladimir Ivanchenko (phys-ctor-em-V11-01-04)
|
||||
- G4EmModelActivator - attempt to fix #2530 - single scattering per region
|
||||
|
||||
## 2023-02-24 Vladimir Ivanchenko (phys-ctor-em-V11-01-03)
|
||||
- G4GammaGeneralProcess - added method GetGammaNuclear() useful for testing
|
||||
|
||||
## 2023-02-21 Vladimir Ivanchenko (phys-ctor-em-V11-01-02)
|
||||
- G4EmBuilder, G4EmStandardPhysicsSS - use new constructor for
|
||||
the G4CoulombScattering process
|
||||
- G4EmModelActivator - use new constructor for the G4CoulombScattering process,
|
||||
allow add G4EmStandardPhysicsSS on top of G4EmStandardPhysics_option3
|
||||
|
||||
## 2023-02-16 Vladimir Ivanchenko (phys-ctor-em-V11-01-01)
|
||||
- G4EmBuilder, G4EmModelActivator, G4EmStandardPhysicsSS - fix #2530,
|
||||
single scattering model definition per region for e+, e-, and light hadrons
|
||||
|
||||
## 2022-12-09 Vladimir Ivanchenko (phys-ctor-em-V11-01-00)
|
||||
- G4GammaGeneralProcess - in all cases select sub-process (fix problem #2521)
|
||||
|
||||
## 2022-11-24 Gabriele Cosmo (phys-ctor-em-V11-00-35)
|
||||
|
||||
+42
@@ -0,0 +1,42 @@
|
||||
//
|
||||
// ********************************************************************
|
||||
// * License and Disclaimer *
|
||||
// * *
|
||||
// * The Geant4 software is copyright of the Copyright Holders of *
|
||||
// * the Geant4 Collaboration. It is provided under the terms and *
|
||||
// * conditions of the Geant4 Software License, included in the file *
|
||||
// * LICENSE and available at http://cern.ch/geant4/license . These *
|
||||
// * include a list of copyright holders. *
|
||||
// * *
|
||||
// * Neither the authors of this software system, nor their employing *
|
||||
// * institutes,nor the agencies providing financial support for this *
|
||||
// * work make any representation or warranty, express or implied, *
|
||||
// * regarding this software system or assume any liability for its *
|
||||
// * use. Please see the license in the file LICENSE and URL above *
|
||||
// * for the full disclaimer and the limitation of liability. *
|
||||
// * *
|
||||
// * This code implementation is the result of the scientific and *
|
||||
// * technical work of the GEANT4 collaboration. *
|
||||
// * By using, copying, modifying or distributing the software (or *
|
||||
// * any work based on the software) you agree to acknowledge its *
|
||||
// * use in resulting scientific publications, and indicate your *
|
||||
// * acceptance of all terms of the Geant4 Software license. *
|
||||
// ********************************************************************
|
||||
//
|
||||
//
|
||||
// Geant4 class G4ChemDissociationChannels
|
||||
//
|
||||
// Author H. Tran 16.12.2022
|
||||
//
|
||||
|
||||
#ifndef G4ChemDissociationChannels_h
|
||||
#define G4ChemDissociationChannels_h 1
|
||||
|
||||
class G4ChemDissociationChannels{
|
||||
public:
|
||||
~G4ChemDissociationChannels() = default;
|
||||
static void ConstructDissociationChannels();
|
||||
static void ConstructMolecule();
|
||||
};
|
||||
|
||||
#endif // G4ChemDissociationChannels_h
|
||||
+42
@@ -0,0 +1,42 @@
|
||||
//
|
||||
// ********************************************************************
|
||||
// * License and Disclaimer *
|
||||
// * *
|
||||
// * The Geant4 software is copyright of the Copyright Holders of *
|
||||
// * the Geant4 Collaboration. It is provided under the terms and *
|
||||
// * conditions of the Geant4 Software License, included in the file *
|
||||
// * LICENSE and available at http://cern.ch/geant4/license . These *
|
||||
// * include a list of copyright holders. *
|
||||
// * *
|
||||
// * Neither the authors of this software system, nor their employing *
|
||||
// * institutes,nor the agencies providing financial support for this *
|
||||
// * work make any representation or warranty, express or implied, *
|
||||
// * regarding this software system or assume any liability for its *
|
||||
// * use. Please see the license in the file LICENSE and URL above *
|
||||
// * for the full disclaimer and the limitation of liability. *
|
||||
// * *
|
||||
// * This code implementation is the result of the scientific and *
|
||||
// * technical work of the GEANT4 collaboration. *
|
||||
// * By using, copying, modifying or distributing the software (or *
|
||||
// * any work based on the software) you agree to acknowledge its *
|
||||
// * use in resulting scientific publications, and indicate your *
|
||||
// * acceptance of all terms of the Geant4 Software license. *
|
||||
// ********************************************************************
|
||||
//
|
||||
//
|
||||
// Geant4 class G4ChemDissociationChannels
|
||||
//
|
||||
// H. Tran 16.12.2022
|
||||
//
|
||||
|
||||
#ifndef G4ChemDissociationChannels_option1_h
|
||||
#define G4ChemDissociationChannels_option1_h 1
|
||||
|
||||
class G4ChemDissociationChannels_option1{
|
||||
public:
|
||||
~G4ChemDissociationChannels_option1() = default;
|
||||
static void ConstructDissociationChannels();
|
||||
static void ConstructMolecule();
|
||||
};
|
||||
|
||||
#endif
|
||||
@@ -32,26 +32,19 @@
|
||||
|
||||
class G4DNAMolecularReactionTable;
|
||||
|
||||
class G4EmDNAChemistry : public G4VUserChemistryList,
|
||||
public G4VPhysicsConstructor
|
||||
class G4EmDNAChemistry : public G4VUserChemistryList, public G4VPhysicsConstructor
|
||||
{
|
||||
public:
|
||||
G4EmDNAChemistry();
|
||||
~G4EmDNAChemistry() override = default;
|
||||
|
||||
public:
|
||||
|
||||
explicit G4EmDNAChemistry();
|
||||
virtual ~G4EmDNAChemistry();
|
||||
|
||||
virtual void ConstructParticle()
|
||||
{
|
||||
ConstructMolecule();
|
||||
}
|
||||
virtual void ConstructMolecule();
|
||||
virtual void ConstructProcess();
|
||||
|
||||
virtual void ConstructDissociationChannels();
|
||||
virtual void ConstructReactionTable(G4DNAMolecularReactionTable* reactionTable);
|
||||
virtual void ConstructTimeStepModel(G4DNAMolecularReactionTable* reactionTable);
|
||||
void ConstructParticle() override { ConstructMolecule(); }
|
||||
void ConstructMolecule() override;
|
||||
void ConstructProcess() override;
|
||||
|
||||
void ConstructDissociationChannels() override;
|
||||
void ConstructReactionTable(G4DNAMolecularReactionTable* reactionTable) override;
|
||||
void ConstructTimeStepModel(G4DNAMolecularReactionTable* reactionTable) override;
|
||||
};
|
||||
|
||||
#endif
|
||||
|
||||
+10
-14
@@ -32,26 +32,22 @@
|
||||
|
||||
class G4DNAMolecularReactionTable;
|
||||
|
||||
class G4EmDNAChemistry_option1 : public G4VUserChemistryList,
|
||||
public G4VPhysicsConstructor
|
||||
class G4EmDNAChemistry_option1 : public G4VUserChemistryList, public G4VPhysicsConstructor
|
||||
{
|
||||
public:
|
||||
G4EmDNAChemistry_option1();
|
||||
~G4EmDNAChemistry_option1() override = default;
|
||||
|
||||
public:
|
||||
|
||||
explicit G4EmDNAChemistry_option1();
|
||||
virtual ~G4EmDNAChemistry_option1();
|
||||
|
||||
virtual void ConstructParticle()
|
||||
void ConstructParticle() override
|
||||
{
|
||||
ConstructMolecule();
|
||||
}
|
||||
virtual void ConstructMolecule();
|
||||
virtual void ConstructProcess();
|
||||
|
||||
virtual void ConstructDissociationChannels();
|
||||
virtual void ConstructReactionTable(G4DNAMolecularReactionTable* reactionTable);
|
||||
virtual void ConstructTimeStepModel(G4DNAMolecularReactionTable* reactionTable);
|
||||
void ConstructMolecule() override;
|
||||
void ConstructProcess() override;
|
||||
|
||||
void ConstructDissociationChannels() override;
|
||||
void ConstructReactionTable(G4DNAMolecularReactionTable* reactionTable) override;
|
||||
void ConstructTimeStepModel(G4DNAMolecularReactionTable* reactionTable) override;
|
||||
};
|
||||
|
||||
#endif
|
||||
|
||||
+13
-17
@@ -34,24 +34,20 @@ class G4MolecularConfiguration;
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
class G4EmDNAChemistry_option2
|
||||
: public G4VUserChemistryList
|
||||
, public G4VPhysicsConstructor
|
||||
class G4EmDNAChemistry_option2 : public G4VUserChemistryList, public G4VPhysicsConstructor
|
||||
{
|
||||
public:
|
||||
G4EmDNAChemistry_option2();
|
||||
virtual ~G4EmDNAChemistry_option2() override;
|
||||
public:
|
||||
G4EmDNAChemistry_option2();
|
||||
~G4EmDNAChemistry_option2() override = default;
|
||||
|
||||
void ConstructParticle() override
|
||||
{
|
||||
ConstructMolecule();
|
||||
}
|
||||
void ConstructMolecule() override;
|
||||
void ConstructProcess() override;
|
||||
void ConstructParticle() override
|
||||
{
|
||||
ConstructMolecule();
|
||||
}
|
||||
void ConstructMolecule() override;
|
||||
void ConstructProcess() override;
|
||||
|
||||
void ConstructDissociationChannels() override;
|
||||
void ConstructReactionTable(
|
||||
G4DNAMolecularReactionTable* pTable) override;
|
||||
void ConstructTimeStepModel(
|
||||
G4DNAMolecularReactionTable* pTable) override;
|
||||
void ConstructDissociationChannels() override;
|
||||
void ConstructReactionTable(G4DNAMolecularReactionTable* pTable) override;
|
||||
void ConstructTimeStepModel(G4DNAMolecularReactionTable* pTable) override;
|
||||
};
|
||||
|
||||
+7
-7
@@ -47,18 +47,18 @@ class G4EmDNAChemistry_option3 : public G4VUserChemistryList,
|
||||
public:
|
||||
|
||||
G4EmDNAChemistry_option3();
|
||||
virtual ~G4EmDNAChemistry_option3();
|
||||
~G4EmDNAChemistry_option3() override = default;
|
||||
|
||||
virtual void ConstructParticle()
|
||||
void ConstructParticle() override
|
||||
{
|
||||
ConstructMolecule();
|
||||
}
|
||||
virtual void ConstructMolecule();
|
||||
virtual void ConstructProcess();
|
||||
void ConstructMolecule() override;
|
||||
void ConstructProcess() override;
|
||||
|
||||
virtual void ConstructDissociationChannels();
|
||||
virtual void ConstructReactionTable(G4DNAMolecularReactionTable* reactionTable);
|
||||
virtual void ConstructTimeStepModel(G4DNAMolecularReactionTable* reactionTable);
|
||||
void ConstructDissociationChannels() override;
|
||||
void ConstructReactionTable(G4DNAMolecularReactionTable* reactionTable) override;
|
||||
void ConstructTimeStepModel(G4DNAMolecularReactionTable* reactionTable) override;
|
||||
inline void SetTimeStepModel(const TimeStepModel& model)
|
||||
{
|
||||
fTimeStepModel = model;
|
||||
|
||||
@@ -54,6 +54,7 @@ class G4ProcessManager;
|
||||
class G4ParticleDefinition;
|
||||
class G4EmConfigurator;
|
||||
class G4VMscModel;
|
||||
class G4VEmProcess;
|
||||
|
||||
class G4EmModelActivator
|
||||
{
|
||||
@@ -72,7 +73,7 @@ private:
|
||||
|
||||
void ActivateEmOptions();
|
||||
|
||||
void FindOrAddProcess(const G4ParticleDefinition*, const G4String&);
|
||||
G4VEmProcess* FindOrAddProcess(const G4ParticleDefinition*, const G4String&);
|
||||
|
||||
void AddStandardScattering(const G4ParticleDefinition*, G4EmConfigurator*,
|
||||
G4VMscModel*, const G4String&,
|
||||
|
||||
@@ -53,13 +53,17 @@ public:
|
||||
|
||||
explicit G4EmParticleList();
|
||||
|
||||
~G4EmParticleList();
|
||||
~G4EmParticleList() = default;
|
||||
|
||||
// list of names of main EM particles
|
||||
const std::vector<G4String>& PartNames() const;
|
||||
|
||||
// minimal list of names of charged particles
|
||||
const std::vector<G4String>& EmChargedPartNames() const;
|
||||
|
||||
private:
|
||||
std::vector<G4String> pNames;
|
||||
|
||||
std::vector<G4String> pNames;
|
||||
std::vector<G4String> cNames;
|
||||
};
|
||||
|
||||
#endif
|
||||
|
||||
@@ -118,17 +118,17 @@ public:
|
||||
const G4String& directory,
|
||||
G4bool ascii) override;
|
||||
|
||||
// Temporary method
|
||||
const G4String& GetSubProcessName() const;
|
||||
// Return sub-process limiting current step
|
||||
const G4VProcess* GetCreatorProcess() const override;
|
||||
inline const G4VProcess* GetSelectedProcess() const;
|
||||
|
||||
// Temporary method
|
||||
// Temporary methods
|
||||
const G4String& GetSubProcessName() const;
|
||||
G4int GetSubProcessSubType() const;
|
||||
|
||||
G4VEmProcess* GetEmProcess(const G4String& name) override;
|
||||
|
||||
inline const G4VProcess* GetSelectedProcess() const;
|
||||
|
||||
const G4VProcess* GetCreatorProcess() const override;
|
||||
inline G4HadronicProcess* GetGammaNuclear() const;
|
||||
|
||||
// hide copy constructor and assignment operator
|
||||
G4GammaGeneralProcess(G4GammaGeneralProcess &) = delete;
|
||||
@@ -231,6 +231,14 @@ inline const G4VProcess* G4GammaGeneralProcess::GetSelectedProcess() const
|
||||
return selectedProc;
|
||||
}
|
||||
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
|
||||
|
||||
inline G4HadronicProcess* G4GammaGeneralProcess::GetGammaNuclear() const
|
||||
{
|
||||
return theGammaNuclear;
|
||||
}
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
|
||||
|
||||
#endif
|
||||
|
||||
@@ -39,6 +39,8 @@ geant4_add_module(G4phys_ctor_em
|
||||
G4EmStandardPhysics_option4.hh
|
||||
G4GammaGeneralProcess.hh
|
||||
G4OpticalPhysics.hh
|
||||
G4ChemDissociationChannels.hh
|
||||
G4ChemDissociationChannels_option1.hh
|
||||
SOURCES
|
||||
G4EmBuilder.cc
|
||||
G4EmDNABuilder.cc
|
||||
@@ -75,7 +77,9 @@ geant4_add_module(G4phys_ctor_em
|
||||
G4EmStandardPhysics_option3.cc
|
||||
G4EmStandardPhysics_option4.cc
|
||||
G4GammaGeneralProcess.cc
|
||||
G4OpticalPhysics.cc)
|
||||
G4OpticalPhysics.cc
|
||||
G4ChemDissociationChannels.cc
|
||||
G4ChemDissociationChannels_option1.cc)
|
||||
|
||||
geant4_module_link_libraries(G4phys_ctor_em
|
||||
PUBLIC
|
||||
|
||||
@@ -0,0 +1,319 @@
|
||||
//
|
||||
// ********************************************************************
|
||||
// * License and Disclaimer *
|
||||
// * *
|
||||
// * The Geant4 software is copyright of the Copyright Holders of *
|
||||
// * the Geant4 Collaboration. It is provided under the terms and *
|
||||
// * conditions of the Geant4 Software License, included in the file *
|
||||
// * LICENSE and available at http://cern.ch/geant4/license . These *
|
||||
// * include a list of copyright holders. *
|
||||
// * *
|
||||
// * Neither the authors of this software system, nor their employing *
|
||||
// * institutes,nor the agencies providing financial support for this *
|
||||
// * work make any representation or warranty, express or implied, *
|
||||
// * regarding this software system or assume any liability for its *
|
||||
// * use. Please see the license in the file LICENSE and URL above *
|
||||
// * for the full disclaimer and the limitation of liability. *
|
||||
// * *
|
||||
// * This code implementation is the result of the scientific and *
|
||||
// * technical work of the GEANT4 collaboration. *
|
||||
// * By using, copying, modifying or distributing the software (or *
|
||||
// * any work based on the software) you agree to acknowledge its *
|
||||
// * use in resulting scientific publications, and indicate your *
|
||||
// * acceptance of all terms of the Geant4 Software license. *
|
||||
// ********************************************************************
|
||||
//
|
||||
//
|
||||
// Geant4 class G4ChemDissociationChannels
|
||||
//
|
||||
// Author H. Tran 16.12.2022
|
||||
//
|
||||
|
||||
#include "G4ChemDissociationChannels.hh"
|
||||
|
||||
#include "G4DNAWaterDissociationDisplacer.hh"
|
||||
#include "G4DNAWaterExcitationStructure.hh"
|
||||
#include "G4Electron_aq.hh"
|
||||
#include "G4H2.hh"
|
||||
#include "G4H2O.hh"
|
||||
#include "G4H2O2.hh"
|
||||
#include "G4H3O.hh"
|
||||
#include "G4Hydrogen.hh"
|
||||
#include "G4MolecularConfiguration.hh"
|
||||
#include "G4MoleculeTable.hh"
|
||||
#include "G4OH.hh"
|
||||
#include "G4PhysicalConstants.hh"
|
||||
#include "G4SystemOfUnits.hh"
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
void G4ChemDissociationChannels::ConstructMolecule()
|
||||
{
|
||||
// Create the definition
|
||||
G4H2O::Definition();
|
||||
G4Hydrogen::Definition();
|
||||
G4H3O::Definition();
|
||||
G4OH::Definition();
|
||||
G4Electron_aq::Definition();
|
||||
G4H2O2::Definition();
|
||||
G4H2::Definition();
|
||||
auto molTable = G4MoleculeTable::Instance();
|
||||
|
||||
molTable->CreateConfiguration("H3Op", G4H3O::Definition());
|
||||
G4MolecularConfiguration* OHm =
|
||||
molTable->CreateConfiguration("OHm", // just a tag to store and retrieve
|
||||
// from G4MoleculeTable
|
||||
G4OH::Definition(),
|
||||
-1, // charge
|
||||
5.0e-9 * (m2 / s));
|
||||
OHm->SetMass(17.0079 * g / Avogadro * c_squared);
|
||||
molTable->CreateConfiguration("OH", G4OH::Definition());
|
||||
molTable->CreateConfiguration("e_aq", G4Electron_aq::Definition());
|
||||
molTable->CreateConfiguration("H", G4Hydrogen::Definition());
|
||||
molTable->CreateConfiguration("H2", G4H2::Definition());
|
||||
molTable->CreateConfiguration("H2O2", G4H2O2::Definition());
|
||||
}
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
void G4ChemDissociationChannels::ConstructDissociationChannels()
|
||||
{
|
||||
//-----------------------------------
|
||||
// Get the molecular configuration
|
||||
auto molTable = G4MoleculeTable::Instance();
|
||||
G4MolecularConfiguration* OH = molTable->GetConfiguration("OH");
|
||||
G4MolecularConfiguration* OHm = molTable->GetConfiguration("OHm");
|
||||
G4MolecularConfiguration* e_aq = molTable->GetConfiguration("e_aq");
|
||||
G4MolecularConfiguration* H2 = molTable->GetConfiguration("H2");
|
||||
G4MolecularConfiguration* H3O = molTable->GetConfiguration("H3Op");
|
||||
G4MolecularConfiguration* H = molTable->GetConfiguration("H");
|
||||
|
||||
//-------------------------------------
|
||||
// Define the decay channels
|
||||
G4MoleculeDefinition* water = G4H2O::Definition();
|
||||
G4MolecularDissociationChannel* decCh1;
|
||||
G4MolecularDissociationChannel* decCh2;
|
||||
|
||||
auto occ = new G4ElectronOccupancy(*(water->GetGroundStateElectronOccupancy()));
|
||||
|
||||
//////////////////////////////////////////////////////////
|
||||
// EXCITATIONS //
|
||||
//////////////////////////////////////////////////////////
|
||||
G4DNAWaterExcitationStructure waterExcitation;
|
||||
//--------------------------------------------------------
|
||||
//---------------Excitation on the fifth layer------------
|
||||
|
||||
decCh1 = new G4MolecularDissociationChannel("A^1B_1_Relax");
|
||||
decCh2 = new G4MolecularDissociationChannel("A^1B_1_DissociDecay");
|
||||
// Decay 1 : OH + H
|
||||
decCh1->SetEnergy(waterExcitation.ExcitationEnergy(0));
|
||||
decCh1->SetProbability(0.35);
|
||||
decCh1->SetDisplacementType(G4DNAWaterDissociationDisplacer::NoDisplacement);
|
||||
|
||||
decCh2->AddProduct(OH);
|
||||
decCh2->AddProduct(H);
|
||||
decCh2->SetProbability(0.65);
|
||||
decCh2->SetDisplacementType(G4DNAWaterDissociationDisplacer::A1B1_DissociationDecay);
|
||||
|
||||
// water->AddExcitedState("A^1B_1");
|
||||
occ->RemoveElectron(4, 1); // this is the transition form ground state to
|
||||
occ->AddElectron(5, 1); // the first unoccupied orbital: A^1B_1
|
||||
|
||||
water->NewConfigurationWithElectronOccupancy("A^1B_1", *occ);
|
||||
water->AddDecayChannel("A^1B_1", decCh1);
|
||||
water->AddDecayChannel("A^1B_1", decCh2);
|
||||
|
||||
//--------------------------------------------------------
|
||||
//---------------Excitation on the fourth layer-----------
|
||||
decCh1 = new G4MolecularDissociationChannel("B^1A_1_Relax_Channel");
|
||||
decCh2 = new G4MolecularDissociationChannel("B^1A_1_DissociDecay");
|
||||
auto decCh3 = new G4MolecularDissociationChannel("B^1A_1_AutoIoni_Channel");
|
||||
|
||||
// Decay 1 : energy
|
||||
decCh1->SetEnergy(waterExcitation.ExcitationEnergy(1));
|
||||
decCh1->SetProbability(0.3);
|
||||
|
||||
// Decay 2 : 2OH + H_2
|
||||
decCh2->AddProduct(H2);
|
||||
decCh2->AddProduct(OH);
|
||||
decCh2->AddProduct(OH);
|
||||
decCh2->SetProbability(0.15);
|
||||
decCh2->SetDisplacementType(G4DNAWaterDissociationDisplacer::B1A1_DissociationDecay);
|
||||
|
||||
// Decay 3 : OH + H_3Op + e_aq
|
||||
decCh3->AddProduct(OH);
|
||||
decCh3->AddProduct(H3O);
|
||||
decCh3->AddProduct(e_aq);
|
||||
decCh3->SetProbability(0.55);
|
||||
decCh3->SetDisplacementType(G4DNAWaterDissociationDisplacer::AutoIonisation);
|
||||
|
||||
*occ = *(water->GetGroundStateElectronOccupancy());
|
||||
occ->RemoveElectron(3); // this is the transition form ground state to
|
||||
occ->AddElectron(5, 1); // the first unoccupied orbital: B^1A_1
|
||||
|
||||
water->NewConfigurationWithElectronOccupancy("B^1A_1", *occ);
|
||||
water->AddDecayChannel("B^1A_1", decCh1);
|
||||
water->AddDecayChannel("B^1A_1", decCh2);
|
||||
water->AddDecayChannel("B^1A_1", decCh3);
|
||||
|
||||
//-------------------------------------------------------
|
||||
//-------------------Excitation of 3rd layer-----------------
|
||||
decCh1 = new G4MolecularDissociationChannel("Exc3rdLayer_AutoIoni_Channel");
|
||||
decCh2 = new G4MolecularDissociationChannel("Exc3rdLayer_Relax_Channel");
|
||||
|
||||
// Decay channel 1 : : OH + H_3Op + e_aq
|
||||
decCh1->AddProduct(OH);
|
||||
decCh1->AddProduct(H3O);
|
||||
decCh1->AddProduct(e_aq);
|
||||
|
||||
decCh1->SetProbability(0.5);
|
||||
decCh1->SetDisplacementType(G4DNAWaterDissociationDisplacer::AutoIonisation);
|
||||
|
||||
// Decay channel 2 : energy
|
||||
decCh2->SetEnergy(waterExcitation.ExcitationEnergy(2));
|
||||
decCh2->SetProbability(0.5);
|
||||
|
||||
// Electronic configuration of this decay
|
||||
*occ = *(water->GetGroundStateElectronOccupancy());
|
||||
occ->RemoveElectron(2, 1);
|
||||
occ->AddElectron(5, 1);
|
||||
|
||||
// Configure the water molecule
|
||||
water->NewConfigurationWithElectronOccupancy("Exci3rdLayer", *occ);
|
||||
water->AddDecayChannel("Exci3rdLayer", decCh1);
|
||||
water->AddDecayChannel("Exci3rdLayer", decCh2);
|
||||
|
||||
//-------------------------------------------------------
|
||||
//-------------------Excitation of 2nd layer-----------------
|
||||
decCh1 = new G4MolecularDissociationChannel("Exc2ndLayer_AutoIoni_Channel");
|
||||
decCh2 = new G4MolecularDissociationChannel("Exc2ndLayer_Relax_Channel");
|
||||
|
||||
// Decay Channel 1 : : OH + H_3Op + e_aq
|
||||
decCh1->AddProduct(OH);
|
||||
decCh1->AddProduct(H3O);
|
||||
decCh1->AddProduct(e_aq);
|
||||
|
||||
decCh1->SetProbability(0.5);
|
||||
decCh1->SetDisplacementType(G4DNAWaterDissociationDisplacer::AutoIonisation);
|
||||
|
||||
// Decay channel 2 : energy
|
||||
decCh2->SetEnergy(waterExcitation.ExcitationEnergy(3));
|
||||
decCh2->SetProbability(0.5);
|
||||
|
||||
*occ = *(water->GetGroundStateElectronOccupancy());
|
||||
occ->RemoveElectron(1, 1);
|
||||
occ->AddElectron(5, 1);
|
||||
|
||||
water->NewConfigurationWithElectronOccupancy("Exci2ndLayer", *occ);
|
||||
water->AddDecayChannel("Exci2ndLayer", decCh1);
|
||||
water->AddDecayChannel("Exci2ndLayer", decCh2);
|
||||
|
||||
//-------------------------------------------------------
|
||||
//-------------------Excitation of 1st layer-----------------
|
||||
decCh1 = new G4MolecularDissociationChannel("Exci1stLayer_AutoIoni_Channel");
|
||||
decCh2 = new G4MolecularDissociationChannel("Exci1stLayer_Relax_Channel");
|
||||
|
||||
*occ = *(water->GetGroundStateElectronOccupancy());
|
||||
occ->RemoveElectron(0, 1);
|
||||
occ->AddElectron(5, 1);
|
||||
|
||||
// Decay Channel 1 : : OH + H_3Op + e_aq
|
||||
decCh1->AddProduct(OH);
|
||||
decCh1->AddProduct(H3O);
|
||||
decCh1->AddProduct(e_aq);
|
||||
decCh1->SetProbability(0.5);
|
||||
decCh1->SetDisplacementType(G4DNAWaterDissociationDisplacer::AutoIonisation);
|
||||
|
||||
// Decay channel 2 : energy
|
||||
decCh2->SetEnergy(waterExcitation.ExcitationEnergy(4));
|
||||
decCh2->SetProbability(0.5);
|
||||
|
||||
water->NewConfigurationWithElectronOccupancy("Exci1stLayer", *occ);
|
||||
water->AddDecayChannel("Exci1stLayer", decCh1);
|
||||
water->AddDecayChannel("Exci1stLayer", decCh2);
|
||||
|
||||
/////////////////////////////////////////////////////////
|
||||
// IONISATION //
|
||||
/////////////////////////////////////////////////////////
|
||||
//--------------------------------------------------------
|
||||
//------------------- Ionisation -------------------------
|
||||
|
||||
decCh1 = new G4MolecularDissociationChannel("Ioni_Channel");
|
||||
|
||||
// Decay Channel 1 : : OH + H_3Op
|
||||
decCh1->AddProduct(H3O);
|
||||
decCh1->AddProduct(OH);
|
||||
decCh1->SetProbability(1);
|
||||
decCh1->SetDisplacementType(G4DNAWaterDissociationDisplacer::Ionisation_DissociationDecay);
|
||||
|
||||
*occ = *(water->GetGroundStateElectronOccupancy());
|
||||
occ->RemoveElectron(4, 1);
|
||||
// this is a ionized h2O with a hole in its last orbital
|
||||
water->NewConfigurationWithElectronOccupancy("Ioni5", *occ);
|
||||
water->AddDecayChannel("Ioni5", decCh1);
|
||||
|
||||
*occ = *(water->GetGroundStateElectronOccupancy());
|
||||
occ->RemoveElectron(3, 1);
|
||||
water->NewConfigurationWithElectronOccupancy("Ioni4", *occ);
|
||||
water->AddDecayChannel("Ioni4", new G4MolecularDissociationChannel(*decCh1));
|
||||
|
||||
*occ = *(water->GetGroundStateElectronOccupancy());
|
||||
occ->RemoveElectron(2, 1);
|
||||
water->NewConfigurationWithElectronOccupancy("Ioni3", *occ);
|
||||
water->AddDecayChannel("Ioni3", new G4MolecularDissociationChannel(*decCh1));
|
||||
|
||||
*occ = *(water->GetGroundStateElectronOccupancy());
|
||||
occ->RemoveElectron(1, 1);
|
||||
water->NewConfigurationWithElectronOccupancy("Ioni2", *occ);
|
||||
water->AddDecayChannel("Ioni2", new G4MolecularDissociationChannel(*decCh1));
|
||||
|
||||
*occ = *(water->GetGroundStateElectronOccupancy());
|
||||
occ->RemoveElectron(0, 1);
|
||||
water->NewConfigurationWithElectronOccupancy("Ioni1", *occ);
|
||||
water->AddDecayChannel("Ioni1", new G4MolecularDissociationChannel(*decCh1));
|
||||
|
||||
//////////////////////////////////////////////////////////
|
||||
// Dissociative Attachment //
|
||||
//////////////////////////////////////////////////////////
|
||||
decCh1 = new G4MolecularDissociationChannel("DissociAttachment");
|
||||
|
||||
// Decay 1 : 2OH + H_2
|
||||
decCh1->AddProduct(H2);
|
||||
decCh1->AddProduct(OHm);
|
||||
decCh1->AddProduct(OH);
|
||||
decCh1->SetProbability(1);
|
||||
decCh1->SetDisplacementType(G4DNAWaterDissociationDisplacer::DissociativeAttachment);
|
||||
|
||||
*occ = *(water->GetGroundStateElectronOccupancy());
|
||||
occ->AddElectron(5, 1); // H_2O^-
|
||||
water->NewConfigurationWithElectronOccupancy("DissociAttachment", *occ);
|
||||
water->AddDecayChannel("DissociAttachment", decCh1);
|
||||
|
||||
//////////////////////////////////////////////////////////
|
||||
// Electron-hole recombination //
|
||||
//////////////////////////////////////////////////////////
|
||||
decCh1 = new G4MolecularDissociationChannel("H2Ovib_DissociDecay1");
|
||||
decCh2 = new G4MolecularDissociationChannel("H2Ovib_DissociDecay2");
|
||||
decCh3 = new G4MolecularDissociationChannel("H2Ovib_DissociDecay3");
|
||||
|
||||
// Decay 1 : 2OH + H_2
|
||||
decCh1->AddProduct(H2);
|
||||
decCh1->AddProduct(OH);
|
||||
decCh1->AddProduct(OH);
|
||||
decCh1->SetProbability(0.15);
|
||||
decCh1->SetDisplacementType(G4DNAWaterDissociationDisplacer::B1A1_DissociationDecay);
|
||||
|
||||
// Decay 2 : OH + H
|
||||
decCh2->AddProduct(OH);
|
||||
decCh2->AddProduct(H);
|
||||
decCh2->SetProbability(0.55);
|
||||
decCh2->SetDisplacementType(G4DNAWaterDissociationDisplacer::A1B1_DissociationDecay);
|
||||
|
||||
// Decay 3 : relaxation
|
||||
decCh3->SetProbability(0.30);
|
||||
|
||||
const auto pH2Ovib = G4H2O::Definition()->NewConfiguration("H2Ovib");
|
||||
water->AddDecayChannel(pH2Ovib, decCh1);
|
||||
water->AddDecayChannel(pH2Ovib, decCh2);
|
||||
water->AddDecayChannel(pH2Ovib, decCh3);
|
||||
|
||||
delete occ;
|
||||
}
|
||||
+456
@@ -0,0 +1,456 @@
|
||||
//
|
||||
// ********************************************************************
|
||||
// * License and Disclaimer *
|
||||
// * *
|
||||
// * The Geant4 software is copyright of the Copyright Holders of *
|
||||
// * the Geant4 Collaboration. It is provided under the terms and *
|
||||
// * conditions of the Geant4 Software License, included in the file *
|
||||
// * LICENSE and available at http://cern.ch/geant4/license . These *
|
||||
// * include a list of copyright holders. *
|
||||
// * *
|
||||
// * Neither the authors of this software system, nor their employing *
|
||||
// * institutes,nor the agencies providing financial support for this *
|
||||
// * work make any representation or warranty, express or implied, *
|
||||
// * regarding this software system or assume any liability for its *
|
||||
// * use. Please see the license in the file LICENSE and URL above *
|
||||
// * for the full disclaimer and the limitation of liability. *
|
||||
// * *
|
||||
// * This code implementation is the result of the scientific and *
|
||||
// * technical work of the GEANT4 collaboration. *
|
||||
// * By using, copying, modifying or distributing the software (or *
|
||||
// * any work based on the software) you agree to acknowledge its *
|
||||
// * use in resulting scientific publications, and indicate your *
|
||||
// * acceptance of all terms of the Geant4 Software license. *
|
||||
// ********************************************************************
|
||||
//
|
||||
//
|
||||
// Geant4 class G4ChemDissociationChannels_option1
|
||||
//
|
||||
// H. Tran 16.12.2022
|
||||
//
|
||||
|
||||
#include "G4ChemDissociationChannels_option1.hh"
|
||||
|
||||
#include "G4DNAWaterDissociationDisplacer.hh"
|
||||
#include "G4DNAWaterExcitationStructure.hh"
|
||||
#include "G4Electron_aq.hh"
|
||||
#include "G4FakeMolecule.hh"
|
||||
#include "G4H2.hh"
|
||||
#include "G4H2O.hh"
|
||||
#include "G4H2O2.hh"
|
||||
#include "G4H3O.hh"
|
||||
#include "G4HO2.hh"
|
||||
#include "G4Hydrogen.hh"
|
||||
#include "G4MolecularConfiguration.hh"
|
||||
#include "G4MoleculeTable.hh"
|
||||
#include "G4O2.hh"
|
||||
#include "G4O3.hh"
|
||||
#include "G4OH.hh"
|
||||
#include "G4Oxygen.hh"
|
||||
#include "G4PhysicalConstants.hh"
|
||||
#include "G4SystemOfUnits.hh"
|
||||
#include "G4Scheduler.hh"
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
void G4ChemDissociationChannels_option1::ConstructMolecule()
|
||||
{
|
||||
//-----------------------------------
|
||||
// G4Electron::Definition(); // safety
|
||||
|
||||
//-----------------------------------
|
||||
// Create the definition
|
||||
|
||||
G4H2O::Definition();
|
||||
G4Hydrogen::Definition();
|
||||
G4H3O::Definition();
|
||||
G4OH::Definition();
|
||||
G4Electron_aq::Definition();
|
||||
G4H2O2::Definition();
|
||||
G4H2::Definition();
|
||||
|
||||
G4O2::Definition();
|
||||
G4HO2::Definition();
|
||||
G4Oxygen::Definition();
|
||||
G4O3::Definition();
|
||||
|
||||
//____________________________________________________________________________
|
||||
auto molTable = G4MoleculeTable::Instance();
|
||||
molTable->CreateConfiguration("H3Op", G4H3O::Definition());
|
||||
molTable->GetConfiguration("H3Op")->SetDiffusionCoefficient(9.46e-9
|
||||
* (m2 / s));
|
||||
molTable->GetConfiguration("H3Op")->SetVanDerVaalsRadius(0.25 * nm);
|
||||
|
||||
molTable->CreateConfiguration("OH", G4OH::Definition());
|
||||
molTable->GetConfiguration("OH")->SetDiffusionCoefficient(2.2e-9 * (m2 / s));
|
||||
molTable->GetConfiguration("OH")->SetVanDerVaalsRadius(0.22 * nm);
|
||||
|
||||
G4MolecularConfiguration* OHm =
|
||||
molTable->CreateConfiguration("OHm", // just a tag to store and retrieve
|
||||
// from G4MoleculeTable
|
||||
G4OH::Definition(),
|
||||
-1, // charge
|
||||
5.3e-9 * (m2 / s));
|
||||
OHm->SetMass(17.0079 * g / Avogadro * c_squared);
|
||||
OHm->SetVanDerVaalsRadius(0.33 * nm);
|
||||
|
||||
molTable->CreateConfiguration("e_aq", G4Electron_aq::Definition());
|
||||
molTable->GetConfiguration("e_aq")->SetVanDerVaalsRadius(0.50 * nm);
|
||||
|
||||
molTable->CreateConfiguration("H", G4Hydrogen::Definition());
|
||||
molTable->GetConfiguration("H")->SetVanDerVaalsRadius(0.19 * nm);
|
||||
|
||||
molTable->CreateConfiguration("H2", G4H2::Definition());
|
||||
molTable->GetConfiguration("H2")->SetDiffusionCoefficient(4.8e-9 * (m2 / s));
|
||||
molTable->GetConfiguration("H2")->SetVanDerVaalsRadius(0.14 * nm);
|
||||
|
||||
molTable->CreateConfiguration("H2O2", G4H2O2::Definition());
|
||||
molTable->GetConfiguration("H2O2")->SetDiffusionCoefficient(2.3e-9 * (m2 / s));
|
||||
molTable->GetConfiguration("H2O2")->SetVanDerVaalsRadius(0.21 * nm);
|
||||
|
||||
// molecules extension (RITRACKS)
|
||||
|
||||
molTable->CreateConfiguration("HO2", G4HO2::Definition());
|
||||
molTable->GetConfiguration("HO2")->SetVanDerVaalsRadius(0.21 * nm);
|
||||
|
||||
G4MolecularConfiguration* HO2m =
|
||||
molTable->CreateConfiguration("HO2m", // just a tag to store and retrieve
|
||||
// from G4MoleculeTable
|
||||
G4HO2::Definition(),
|
||||
-1, // charge
|
||||
1.4e-9 * (m2 / s));
|
||||
HO2m->SetMass(33.00396 * g / Avogadro * c_squared);
|
||||
HO2m->SetVanDerVaalsRadius(0.25 * nm);
|
||||
|
||||
molTable->CreateConfiguration("Oxy", G4Oxygen::Definition());
|
||||
molTable->GetConfiguration("Oxy")->SetVanDerVaalsRadius(0.20 * nm);
|
||||
|
||||
G4MolecularConfiguration* Om =
|
||||
molTable->CreateConfiguration("Om", // just a tag to store and retrieve from
|
||||
// G4MoleculeTable
|
||||
G4Oxygen::Definition(),
|
||||
-1, // charge
|
||||
2.0e-9 * (m2 / s));
|
||||
Om->SetMass(15.99829 * g / Avogadro * c_squared);
|
||||
Om->SetVanDerVaalsRadius(0.25 * nm);
|
||||
|
||||
molTable->CreateConfiguration("O2", G4O2::Definition());
|
||||
molTable->GetConfiguration("O2")->SetVanDerVaalsRadius(0.17 * nm);
|
||||
|
||||
G4MolecularConfiguration* O2m =
|
||||
molTable->CreateConfiguration("O2m", // just a tag to store and retrieve
|
||||
// from G4MoleculeTable
|
||||
G4O2::Definition(),
|
||||
-1, // charge
|
||||
1.75e-9 * (m2 / s));
|
||||
O2m->SetMass(31.99602 * g / Avogadro * c_squared);
|
||||
O2m->SetVanDerVaalsRadius(0.22 * nm);
|
||||
|
||||
molTable->CreateConfiguration("O3", G4O3::Definition());
|
||||
molTable->GetConfiguration("O3")->SetVanDerVaalsRadius(0.20 * nm);
|
||||
|
||||
G4MolecularConfiguration* O3m =
|
||||
molTable->CreateConfiguration("O3m", // just a tag to store and retrieve
|
||||
// from G4MoleculeTable
|
||||
G4O3::Definition(),
|
||||
-1, // charge
|
||||
2.0e-9 * (m2 / s));
|
||||
O3m->SetMass(47.99375 * g / Avogadro * c_squared);
|
||||
O3m->SetVanDerVaalsRadius(0.20 * nm);
|
||||
|
||||
molTable->CreateConfiguration("H2O(B)", // just a tag to store and retrieve
|
||||
// from G4MoleculeTable
|
||||
G4H2O::Definition(),
|
||||
0, // charge
|
||||
0 * (m2 / s));
|
||||
|
||||
molTable->CreateConfiguration("H3Op(B)", // just a tag to store and retrieve
|
||||
// from G4MoleculeTable
|
||||
G4H3O::Definition(),
|
||||
1, // charge
|
||||
0 * (m2 / s));
|
||||
|
||||
molTable->CreateConfiguration("OHm(B)", // just a tag to store and retrieve
|
||||
// from G4MoleculeTable
|
||||
G4OH::Definition(),
|
||||
-1, // charge
|
||||
0 * (m2 / s));
|
||||
|
||||
molTable->CreateConfiguration("NoneM", G4FakeMolecule::Definition());
|
||||
}
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
void G4ChemDissociationChannels_option1::ConstructDissociationChannels()
|
||||
{
|
||||
//-----------------------------------
|
||||
// Get the molecular configuration
|
||||
auto molTable = G4MoleculeTable::Instance();
|
||||
G4MolecularConfiguration* OH = molTable->GetConfiguration("OH");
|
||||
G4MolecularConfiguration* OHm = molTable->GetConfiguration("OHm");
|
||||
G4MolecularConfiguration* e_aq = molTable->GetConfiguration("e_aq");
|
||||
G4MolecularConfiguration* H2 = molTable->GetConfiguration("H2");
|
||||
G4MolecularConfiguration* H3O = molTable->GetConfiguration("H3Op");
|
||||
G4MolecularConfiguration* H = molTable->GetConfiguration("H");
|
||||
G4MolecularConfiguration* O = molTable->GetConfiguration("Oxy");
|
||||
|
||||
//-------------------------------------
|
||||
// Define the decay channels
|
||||
G4MoleculeDefinition* water = G4H2O::Definition();
|
||||
G4MolecularDissociationChannel* decCh1;
|
||||
G4MolecularDissociationChannel* decCh2;
|
||||
G4MolecularDissociationChannel* decCh3;
|
||||
G4MolecularDissociationChannel* decCh4;
|
||||
G4MolecularDissociationChannel* decCh5;
|
||||
|
||||
G4ElectronOccupancy* occ = new G4ElectronOccupancy(*(water->GetGroundStateElectronOccupancy()));
|
||||
|
||||
//////////////////////////////////////////////////////////
|
||||
// EXCITATIONS //
|
||||
//////////////////////////////////////////////////////////
|
||||
G4DNAWaterExcitationStructure waterExcitation;
|
||||
//--------------------------------------------------------
|
||||
//---------------Excitation on the fifth layer------------
|
||||
|
||||
decCh1 = new G4MolecularDissociationChannel("A^1B_1_Relax");
|
||||
decCh2 = new G4MolecularDissociationChannel("A^1B_1_DissociDecay");
|
||||
// Decay 1 : OH + H
|
||||
decCh1->SetEnergy(waterExcitation.ExcitationEnergy(0));
|
||||
decCh1->SetProbability(0.35);
|
||||
decCh1->SetDisplacementType(G4DNAWaterDissociationDisplacer::NoDisplacement);
|
||||
|
||||
decCh2->AddProduct(OH);
|
||||
decCh2->AddProduct(H);
|
||||
decCh2->SetProbability(0.65);
|
||||
decCh2->SetDisplacementType(G4DNAWaterDissociationDisplacer::A1B1_DissociationDecay);
|
||||
|
||||
occ->RemoveElectron(4, 1); // this is the transition form ground state to
|
||||
occ->AddElectron(5, 1); // the first unoccupied orbital: A^1B_1
|
||||
|
||||
water->NewConfigurationWithElectronOccupancy("A^1B_1", *occ);
|
||||
water->AddDecayChannel("A^1B_1", decCh1);
|
||||
water->AddDecayChannel("A^1B_1", decCh2);
|
||||
|
||||
//--------------------------------------------------------
|
||||
//---------------Excitation on the fourth layer-----------
|
||||
decCh1 = new G4MolecularDissociationChannel("B^1A_1_Relax_Channel");
|
||||
decCh2 = new G4MolecularDissociationChannel("B^1A_1_DissociDecay");
|
||||
decCh3 = new G4MolecularDissociationChannel("B^1A_1_AutoIoni_Channel");
|
||||
decCh4 = new G4MolecularDissociationChannel("A^1B_1_DissociDecay");
|
||||
decCh5 = new G4MolecularDissociationChannel("B^1A_1_DissociDecay2");
|
||||
|
||||
// Decay 1 : energy
|
||||
decCh1->SetEnergy(waterExcitation.ExcitationEnergy(1));
|
||||
decCh1->SetProbability(0.175);
|
||||
|
||||
// Decay 2 : 2OH + H_2
|
||||
decCh2->AddProduct(H2);
|
||||
decCh2->AddProduct(OH);
|
||||
decCh2->AddProduct(OH);
|
||||
decCh2->SetProbability(0.0325);
|
||||
decCh2->SetDisplacementType(G4DNAWaterDissociationDisplacer::B1A1_DissociationDecay);
|
||||
|
||||
// Decay 3 : OH + H_3Op + e_aq
|
||||
decCh3->AddProduct(OH);
|
||||
decCh3->AddProduct(H3O);
|
||||
decCh3->AddProduct(e_aq);
|
||||
decCh3->SetProbability(0.50);
|
||||
decCh3->SetDisplacementType(G4DNAWaterDissociationDisplacer::AutoIonisation);
|
||||
|
||||
// Decay 4 : H + OH
|
||||
decCh4->AddProduct(H);
|
||||
decCh4->AddProduct(OH);
|
||||
decCh4->SetProbability(0.2535);
|
||||
decCh4->SetDisplacementType(G4DNAWaterDissociationDisplacer::A1B1_DissociationDecay);
|
||||
|
||||
// Decay 5 : 2H + O
|
||||
decCh5->AddProduct(O);
|
||||
decCh5->AddProduct(H);
|
||||
decCh5->AddProduct(H);
|
||||
decCh5->SetProbability(0.039);
|
||||
decCh5->SetDisplacementType(G4DNAWaterDissociationDisplacer::B1A1_DissociationDecay2);
|
||||
|
||||
*occ = *(water->GetGroundStateElectronOccupancy());
|
||||
occ->RemoveElectron(3); // this is the transition form ground state to
|
||||
occ->AddElectron(5, 1); // the first unoccupied orbital: B^1A_1
|
||||
|
||||
water->NewConfigurationWithElectronOccupancy("B^1A_1", *occ);
|
||||
water->AddDecayChannel("B^1A_1", decCh1);
|
||||
water->AddDecayChannel("B^1A_1", decCh2);
|
||||
water->AddDecayChannel("B^1A_1", decCh3);
|
||||
water->AddDecayChannel("B^1A_1", decCh4);
|
||||
water->AddDecayChannel("B^1A_1", decCh5);
|
||||
|
||||
//-------------------------------------------------------
|
||||
//-------------------Excitation of 3rd layer-----------------
|
||||
decCh1 = new G4MolecularDissociationChannel("Exci3rdLayer_AutoIoni_Channel");
|
||||
decCh2 = new G4MolecularDissociationChannel("Exci3rdLayer_Relax_Channel");
|
||||
|
||||
// Decay channel 1 : : OH + H_3Op + e_aq
|
||||
decCh1->AddProduct(OH);
|
||||
decCh1->AddProduct(H3O);
|
||||
decCh1->AddProduct(e_aq);
|
||||
|
||||
decCh1->SetProbability(0.5);
|
||||
decCh1->SetDisplacementType(G4DNAWaterDissociationDisplacer::AutoIonisation);
|
||||
|
||||
// Decay channel 2 : energy
|
||||
decCh2->SetEnergy(waterExcitation.ExcitationEnergy(2));
|
||||
decCh2->SetProbability(0.5);
|
||||
|
||||
// Electronic configuration of this decay
|
||||
*occ = *(water->GetGroundStateElectronOccupancy());
|
||||
occ->RemoveElectron(2, 1);
|
||||
occ->AddElectron(5, 1);
|
||||
|
||||
// Configure the water molecule
|
||||
water->NewConfigurationWithElectronOccupancy("Exci3rdLayer", *occ);
|
||||
water->AddDecayChannel("Exci3rdLayer", decCh1);
|
||||
water->AddDecayChannel("Exci3rdLayer", decCh2);
|
||||
|
||||
//-------------------------------------------------------
|
||||
//-------------------Excitation of 2nd layer-----------------
|
||||
decCh1 = new G4MolecularDissociationChannel("Exci2ndLayer_AutoIoni_Channel");
|
||||
decCh2 = new G4MolecularDissociationChannel("Exci2ndLayer_Relax_Channel");
|
||||
|
||||
// Decay Channel 1 : : OH + H_3Op + e_aq
|
||||
decCh1->AddProduct(OH);
|
||||
decCh1->AddProduct(H3O);
|
||||
decCh1->AddProduct(e_aq);
|
||||
|
||||
decCh1->SetProbability(0.5);
|
||||
decCh1->SetDisplacementType(G4DNAWaterDissociationDisplacer::AutoIonisation);
|
||||
|
||||
// Decay channel 2 : energy
|
||||
decCh2->SetEnergy(waterExcitation.ExcitationEnergy(3));
|
||||
decCh2->SetProbability(0.5);
|
||||
|
||||
*occ = *(water->GetGroundStateElectronOccupancy());
|
||||
occ->RemoveElectron(1, 1);
|
||||
occ->AddElectron(5, 1);
|
||||
|
||||
water->NewConfigurationWithElectronOccupancy("Exci2ndLayer", *occ);
|
||||
water->AddDecayChannel("Exci2ndLayer", decCh1);
|
||||
water->AddDecayChannel("Exci2ndLayer", decCh2);
|
||||
|
||||
//-------------------------------------------------------
|
||||
//-------------------Excitation of 1st layer-----------------
|
||||
decCh1 = new G4MolecularDissociationChannel("Exci1stLayer_AutoIoni_Channel");
|
||||
decCh2 = new G4MolecularDissociationChannel("Exci1stLayer_Relax_Channel");
|
||||
|
||||
*occ = *(water->GetGroundStateElectronOccupancy());
|
||||
occ->RemoveElectron(0, 1);
|
||||
occ->AddElectron(5, 1);
|
||||
|
||||
// Decay Channel 1 : : OH + H_3Op + e_aq
|
||||
decCh1->AddProduct(OH);
|
||||
decCh1->AddProduct(H3O);
|
||||
decCh1->AddProduct(e_aq);
|
||||
decCh1->SetProbability(0.5);
|
||||
decCh1->SetDisplacementType(G4DNAWaterDissociationDisplacer::AutoIonisation);
|
||||
|
||||
// Decay channel 2 : energy
|
||||
decCh2->SetEnergy(waterExcitation.ExcitationEnergy(4));
|
||||
decCh2->SetProbability(0.5);
|
||||
|
||||
water->NewConfigurationWithElectronOccupancy("Exci1stLayer", *occ);
|
||||
water->AddDecayChannel("Exci1stLayer", decCh1);
|
||||
water->AddDecayChannel("Exci1stLayer", decCh2);
|
||||
|
||||
/////////////////////////////////////////////////////////
|
||||
// IONISATION //
|
||||
/////////////////////////////////////////////////////////
|
||||
//--------------------------------------------------------
|
||||
//------------------- Ionisation -------------------------
|
||||
|
||||
decCh1 = new G4MolecularDissociationChannel("Ioni_Channel");
|
||||
|
||||
// Decay Channel 1 : : OH + H_3Op
|
||||
decCh1->AddProduct(H3O);
|
||||
decCh1->AddProduct(OH);
|
||||
decCh1->SetProbability(1);
|
||||
decCh1->SetDisplacementType(G4DNAWaterDissociationDisplacer::Ionisation_DissociationDecay);
|
||||
|
||||
*occ = *(water->GetGroundStateElectronOccupancy());
|
||||
occ->RemoveElectron(4, 1);
|
||||
// this is a ionized h2O with a hole in its last orbital
|
||||
water->NewConfigurationWithElectronOccupancy("Ioni5", *occ);
|
||||
water->AddDecayChannel("Ioni5", decCh1);
|
||||
|
||||
*occ = *(water->GetGroundStateElectronOccupancy());
|
||||
occ->RemoveElectron(3, 1);
|
||||
water->NewConfigurationWithElectronOccupancy("Ioni4", *occ);
|
||||
water->AddDecayChannel("Ioni4", new G4MolecularDissociationChannel(*decCh1));
|
||||
|
||||
*occ = *(water->GetGroundStateElectronOccupancy());
|
||||
occ->RemoveElectron(2, 1);
|
||||
water->NewConfigurationWithElectronOccupancy("Ioni3", *occ);
|
||||
water->AddDecayChannel("Ioni3", new G4MolecularDissociationChannel(*decCh1));
|
||||
|
||||
*occ = *(water->GetGroundStateElectronOccupancy());
|
||||
occ->RemoveElectron(1, 1);
|
||||
water->NewConfigurationWithElectronOccupancy("Ioni2", *occ);
|
||||
water->AddDecayChannel("Ioni2", new G4MolecularDissociationChannel(*decCh1));
|
||||
|
||||
*occ = *(water->GetGroundStateElectronOccupancy());
|
||||
occ->RemoveElectron(0, 1);
|
||||
water->NewConfigurationWithElectronOccupancy("Ioni1", *occ);
|
||||
water->AddDecayChannel("Ioni1", new G4MolecularDissociationChannel(*decCh1));
|
||||
|
||||
//////////////////////////////////////////////////////////
|
||||
// Dissociative Attachment //
|
||||
//////////////////////////////////////////////////////////
|
||||
decCh1 = new G4MolecularDissociationChannel("DissociAttachment_ch1");
|
||||
|
||||
// Decay 1 : OHm + H
|
||||
decCh1->AddProduct(H2);
|
||||
decCh1->AddProduct(OHm);
|
||||
decCh1->AddProduct(OH);
|
||||
decCh1->SetProbability(1);
|
||||
decCh1->SetDisplacementType(G4DNAWaterDissociationDisplacer::DissociativeAttachment);
|
||||
|
||||
*occ = *(water->GetGroundStateElectronOccupancy());
|
||||
occ->AddElectron(5, 1); // H_2O^-
|
||||
|
||||
water->NewConfigurationWithElectronOccupancy("DissociAttachment_ch1", *occ);
|
||||
water->AddDecayChannel("DissociAttachment_ch1", decCh1);
|
||||
|
||||
//////////////////////////////////////////////////////////
|
||||
// Electron-hole recombination //
|
||||
//////////////////////////////////////////////////////////
|
||||
decCh1 = new G4MolecularDissociationChannel("H2Ovib_DissociDecay1");
|
||||
decCh2 = new G4MolecularDissociationChannel("H2Ovib_DissociDecay2");
|
||||
decCh3 = new G4MolecularDissociationChannel("H2Ovib_DissociDecay3");
|
||||
decCh4 = new G4MolecularDissociationChannel("H2Ovib_DissociDecay4");
|
||||
|
||||
// Decay 1 : 2OH + H_2
|
||||
decCh1->AddProduct(H2);
|
||||
decCh1->AddProduct(OH);
|
||||
decCh1->AddProduct(OH);
|
||||
decCh1->SetProbability(0.1365);
|
||||
decCh1->SetDisplacementType(G4DNAWaterDissociationDisplacer::B1A1_DissociationDecay);
|
||||
|
||||
// Decay 2 : OH + H
|
||||
decCh2->AddProduct(OH);
|
||||
decCh2->AddProduct(H);
|
||||
decCh2->SetProbability(0.3575);
|
||||
decCh2->SetDisplacementType(G4DNAWaterDissociationDisplacer::A1B1_DissociationDecay);
|
||||
|
||||
// Decay 3 : 2H + O(3p)
|
||||
decCh3->AddProduct(O);
|
||||
decCh3->AddProduct(H);
|
||||
decCh3->AddProduct(H);
|
||||
decCh3->SetProbability(0.156);
|
||||
decCh3->SetDisplacementType(G4DNAWaterDissociationDisplacer::B1A1_DissociationDecay2);
|
||||
|
||||
// Decay 4 : relaxation
|
||||
decCh4->SetProbability(0.35);
|
||||
|
||||
const auto pH2Ovib = G4H2O::Definition()->NewConfiguration("H2Ovib");
|
||||
assert(pH2Ovib != nullptr);
|
||||
|
||||
water->AddDecayChannel(pH2Ovib, decCh1);
|
||||
water->AddDecayChannel(pH2Ovib, decCh2);
|
||||
water->AddDecayChannel(pH2Ovib, decCh3);
|
||||
water->AddDecayChannel(pH2Ovib, decCh4);
|
||||
|
||||
delete occ;
|
||||
}
|
||||
@@ -64,7 +64,6 @@
|
||||
|
||||
#include "G4MuMultipleScattering.hh"
|
||||
#include "G4hMultipleScattering.hh"
|
||||
#include "G4CoulombScattering.hh"
|
||||
|
||||
#include "G4ParticleTable.hh"
|
||||
#include "G4Gamma.hh"
|
||||
@@ -150,19 +149,19 @@ void G4EmBuilder::ConstructIonEmPhysicsSS()
|
||||
|
||||
G4ParticleDefinition* part = G4Deuteron::Deuteron();
|
||||
ph->RegisterProcess(new G4hIonisation(), part);
|
||||
ph->RegisterProcess(new G4CoulombScattering(), part);
|
||||
ph->RegisterProcess(new G4CoulombScattering(false), part);
|
||||
|
||||
part = G4Triton::Triton();
|
||||
ph->RegisterProcess(new G4hIonisation(), part);
|
||||
ph->RegisterProcess(new G4CoulombScattering(), part);
|
||||
ph->RegisterProcess(new G4CoulombScattering(false), part);
|
||||
|
||||
part = G4Alpha::Alpha();
|
||||
ph->RegisterProcess(new G4ionIonisation(), part);
|
||||
ph->RegisterProcess(new G4CoulombScattering(), part);
|
||||
ph->RegisterProcess(new G4CoulombScattering(false), part);
|
||||
|
||||
part = G4He3::He3();
|
||||
ph->RegisterProcess(new G4ionIonisation(), part);
|
||||
ph->RegisterProcess(new G4CoulombScattering(), part);
|
||||
ph->RegisterProcess(new G4CoulombScattering(false), part);
|
||||
}
|
||||
|
||||
void G4EmBuilder::ConstructLightHadrons(G4ParticleDefinition* part1,
|
||||
@@ -219,14 +218,15 @@ void G4EmBuilder::ConstructLightHadronsSS(G4ParticleDefinition* part1,
|
||||
ph->RegisterProcess(brem, part1);
|
||||
ph->RegisterProcess(pair, part1);
|
||||
}
|
||||
ph->RegisterProcess(new G4CoulombScattering(), part1);
|
||||
auto ss = new G4CoulombScattering(false);
|
||||
ph->RegisterProcess(ss, part1);
|
||||
|
||||
ph->RegisterProcess(new G4hIonisation(), part2);
|
||||
if( isHEP ) {
|
||||
ph->RegisterProcess(brem, part2);
|
||||
ph->RegisterProcess(pair, part2);
|
||||
}
|
||||
ph->RegisterProcess(new G4CoulombScattering(), part2);
|
||||
ph->RegisterProcess(new G4CoulombScattering(false), part2);
|
||||
}
|
||||
|
||||
void G4EmBuilder::ConstructCharged(G4hMultipleScattering* hmsc,
|
||||
@@ -306,7 +306,7 @@ void G4EmBuilder::ConstructChargedSS(G4hMultipleScattering* hmsc)
|
||||
G4bool isHEP = ( param->MaxKinEnergy() > hpar->EnergyThresholdForHeavyHadrons() );
|
||||
|
||||
// muon multiple and single scattering
|
||||
G4CoulombScattering* muss = new G4CoulombScattering();
|
||||
G4CoulombScattering* muss = new G4CoulombScattering(false);
|
||||
|
||||
// Add standard EM Processes
|
||||
// mu+-
|
||||
|
||||
@@ -24,13 +24,12 @@
|
||||
// ********************************************************************
|
||||
//
|
||||
#include "G4EmDNAChemistry.hh"
|
||||
#include "G4ChemDissociationChannels.hh"
|
||||
|
||||
#include "G4PhysicalConstants.hh"
|
||||
#include "G4SystemOfUnits.hh"
|
||||
|
||||
#include "G4DNAWaterDissociationDisplacer.hh"
|
||||
#include "G4DNAChemistryManager.hh"
|
||||
#include "G4DNAWaterExcitationStructure.hh"
|
||||
#include "G4ProcessManager.hh"
|
||||
|
||||
#include "G4DNAGenericIonsManager.hh"
|
||||
@@ -39,15 +38,9 @@
|
||||
|
||||
#include "G4DNAElectronSolvation.hh"
|
||||
|
||||
#include "G4DNAAttachment.hh"
|
||||
#include "G4DNAVibExcitation.hh"
|
||||
#include "G4DNASancheExcitationModel.hh"
|
||||
|
||||
#include "G4DNAElastic.hh"
|
||||
#include "G4DNAChampionElasticModel.hh"
|
||||
#include "G4DNAScreenedRutherfordElasticModel.hh"
|
||||
#include "G4DNAUeharaScreenedRutherfordElasticModel.hh"
|
||||
|
||||
#include "G4DNAMolecularDissociation.hh"
|
||||
#include "G4DNABrownianTransportation.hh"
|
||||
#include "G4DNAMolecularReactionTable.hh"
|
||||
@@ -56,30 +49,16 @@
|
||||
#include "G4DNASmoluchowskiReactionModel.hh"
|
||||
|
||||
#include "G4DNAElectronHoleRecombination.hh"
|
||||
|
||||
// particles
|
||||
|
||||
#include "G4Electron.hh"
|
||||
#include "G4Proton.hh"
|
||||
#include "G4GenericIon.hh"
|
||||
|
||||
#include "G4MoleculeTable.hh"
|
||||
#include "G4H2O.hh"
|
||||
#include "G4H2.hh"
|
||||
#include "G4Hydrogen.hh"
|
||||
#include "G4OH.hh"
|
||||
#include "G4H3O.hh"
|
||||
#include "G4Electron_aq.hh"
|
||||
#include "G4H2O2.hh"
|
||||
|
||||
#include "G4PhysicsListHelper.hh"
|
||||
#include "G4BuilderType.hh"
|
||||
|
||||
/****/
|
||||
#include "G4DNAMoleculeEncounterStepper.hh"
|
||||
#include "G4ProcessVector.hh"
|
||||
#include "G4ProcessTable.hh"
|
||||
#include "G4DNASecondOrderReaction.hh"
|
||||
#include "G4MolecularConfiguration.hh"
|
||||
/****/
|
||||
|
||||
@@ -98,316 +77,16 @@ G4EmDNAChemistry::G4EmDNAChemistry() :
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
G4EmDNAChemistry::~G4EmDNAChemistry()
|
||||
{
|
||||
}
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
void G4EmDNAChemistry::ConstructMolecule()
|
||||
{
|
||||
//-----------------------------------
|
||||
G4Electron::Definition(); // safety
|
||||
|
||||
//-----------------------------------
|
||||
// Create the definition
|
||||
G4H2O::Definition();
|
||||
G4Hydrogen::Definition();
|
||||
G4H3O::Definition();
|
||||
G4OH::Definition();
|
||||
G4Electron_aq::Definition();
|
||||
G4H2O2::Definition();
|
||||
G4H2::Definition();
|
||||
|
||||
//____________________________________________________________________________
|
||||
|
||||
G4MoleculeTable::Instance()->CreateConfiguration("H3Op", G4H3O::Definition());
|
||||
G4MolecularConfiguration* OHm = G4MoleculeTable::Instance()->
|
||||
CreateConfiguration("OHm", // just a tag to store and retrieve from
|
||||
// G4MoleculeTable
|
||||
G4OH::Definition(),
|
||||
-1, // charge
|
||||
5.0e-9 * (m2 / s));
|
||||
OHm->SetMass(17.0079 * g / Avogadro * c_squared);
|
||||
G4MoleculeTable::Instance()->CreateConfiguration("OH", G4OH::Definition());
|
||||
G4MoleculeTable::Instance()->CreateConfiguration("e_aq",
|
||||
G4Electron_aq::Definition());
|
||||
G4MoleculeTable::Instance()->CreateConfiguration("H",
|
||||
G4Hydrogen::Definition());
|
||||
G4MoleculeTable::Instance()->CreateConfiguration("H2", G4H2::Definition());
|
||||
G4MoleculeTable::Instance()->CreateConfiguration("H2O2", G4H2O2::Definition());
|
||||
G4ChemDissociationChannels::ConstructMolecule();
|
||||
}
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
void G4EmDNAChemistry::ConstructDissociationChannels()
|
||||
{
|
||||
//-----------------------------------
|
||||
//Get the molecular configuration
|
||||
G4MolecularConfiguration* OH =
|
||||
G4MoleculeTable::Instance()->GetConfiguration("OH");
|
||||
G4MolecularConfiguration* OHm =
|
||||
G4MoleculeTable::Instance()->GetConfiguration("OHm");
|
||||
G4MolecularConfiguration* e_aq =
|
||||
G4MoleculeTable::Instance()->GetConfiguration("e_aq");
|
||||
G4MolecularConfiguration* H2 =
|
||||
G4MoleculeTable::Instance()->GetConfiguration("H2");
|
||||
G4MolecularConfiguration* H3O =
|
||||
G4MoleculeTable::Instance()->GetConfiguration("H3Op");
|
||||
G4MolecularConfiguration* H =
|
||||
G4MoleculeTable::Instance()->GetConfiguration("H");
|
||||
|
||||
//-------------------------------------
|
||||
//Define the decay channels
|
||||
G4MoleculeDefinition* water = G4H2O::Definition();
|
||||
G4MolecularDissociationChannel* decCh1;
|
||||
G4MolecularDissociationChannel* decCh2;
|
||||
|
||||
G4ElectronOccupancy* occ = new G4ElectronOccupancy(
|
||||
*(water->GetGroundStateElectronOccupancy()));
|
||||
|
||||
//////////////////////////////////////////////////////////
|
||||
// EXCITATIONS //
|
||||
//////////////////////////////////////////////////////////
|
||||
G4DNAWaterExcitationStructure waterExcitation;
|
||||
//--------------------------------------------------------
|
||||
//---------------Excitation on the fifth layer------------
|
||||
|
||||
decCh1 = new G4MolecularDissociationChannel("A^1B_1_Relaxation");
|
||||
decCh2 = new G4MolecularDissociationChannel("A^1B_1_DissociativeDecay");
|
||||
//Decay 1 : OH + H
|
||||
decCh1->SetEnergy(waterExcitation.ExcitationEnergy(0));
|
||||
decCh1->SetProbability(0.35);
|
||||
decCh1->SetDisplacementType(G4DNAWaterDissociationDisplacer::NoDisplacement);
|
||||
|
||||
decCh2->AddProduct(OH);
|
||||
decCh2->AddProduct(H);
|
||||
decCh2->SetProbability(0.65);
|
||||
decCh2->SetDisplacementType(
|
||||
G4DNAWaterDissociationDisplacer::A1B1_DissociationDecay);
|
||||
|
||||
// water->AddExcitedState("A^1B_1");
|
||||
occ->RemoveElectron(4, 1); // this is the transition form ground state to
|
||||
occ->AddElectron(5, 1); // the first unoccupied orbital: A^1B_1
|
||||
|
||||
water->NewConfigurationWithElectronOccupancy("A^1B_1", *occ);
|
||||
water->AddDecayChannel("A^1B_1", decCh1);
|
||||
water->AddDecayChannel("A^1B_1", decCh2);
|
||||
|
||||
//--------------------------------------------------------
|
||||
//---------------Excitation on the fourth layer-----------
|
||||
decCh1 = new G4MolecularDissociationChannel("B^1A_1_Relaxation_Channel");
|
||||
decCh2 = new G4MolecularDissociationChannel("B^1A_1_DissociativeDecay");
|
||||
G4MolecularDissociationChannel* decCh3 = new G4MolecularDissociationChannel(
|
||||
"B^1A_1_AutoIonisation_Channel");
|
||||
|
||||
//Decay 1 : energy
|
||||
decCh1->SetEnergy(waterExcitation.ExcitationEnergy(1));
|
||||
decCh1->SetProbability(0.3);
|
||||
|
||||
//Decay 2 : 2OH + H_2
|
||||
decCh2->AddProduct(H2);
|
||||
decCh2->AddProduct(OH);
|
||||
decCh2->AddProduct(OH);
|
||||
decCh2->SetProbability(0.15);
|
||||
decCh2->SetDisplacementType(
|
||||
G4DNAWaterDissociationDisplacer::B1A1_DissociationDecay);
|
||||
|
||||
//Decay 3 : OH + H_3Op + e_aq
|
||||
decCh3->AddProduct(OH);
|
||||
decCh3->AddProduct(H3O);
|
||||
decCh3->AddProduct(e_aq);
|
||||
decCh3->SetProbability(0.55);
|
||||
decCh3->SetDisplacementType(G4DNAWaterDissociationDisplacer::AutoIonisation);
|
||||
|
||||
*occ = *(water->GetGroundStateElectronOccupancy());
|
||||
occ->RemoveElectron(3); // this is the transition form ground state to
|
||||
occ->AddElectron(5, 1); // the first unoccupied orbital: B^1A_1
|
||||
|
||||
water->NewConfigurationWithElectronOccupancy("B^1A_1", *occ);
|
||||
water->AddDecayChannel("B^1A_1", decCh1);
|
||||
water->AddDecayChannel("B^1A_1", decCh2);
|
||||
water->AddDecayChannel("B^1A_1", decCh3);
|
||||
|
||||
//-------------------------------------------------------
|
||||
//-------------------Excitation of 3rd layer-----------------
|
||||
decCh1 = new G4MolecularDissociationChannel(
|
||||
"Excitation3rdLayer_AutoIonisation_Channel");
|
||||
decCh2 = new G4MolecularDissociationChannel(
|
||||
"Excitation3rdLayer_Relaxation_Channel");
|
||||
|
||||
//Decay channel 1 : : OH + H_3Op + e_aq
|
||||
decCh1->AddProduct(OH);
|
||||
decCh1->AddProduct(H3O);
|
||||
decCh1->AddProduct(e_aq);
|
||||
|
||||
decCh1->SetProbability(0.5);
|
||||
decCh1->SetDisplacementType(G4DNAWaterDissociationDisplacer::AutoIonisation);
|
||||
|
||||
//Decay channel 2 : energy
|
||||
decCh2->SetEnergy(waterExcitation.ExcitationEnergy(2));
|
||||
decCh2->SetProbability(0.5);
|
||||
|
||||
//Electronic configuration of this decay
|
||||
*occ = *(water->GetGroundStateElectronOccupancy());
|
||||
occ->RemoveElectron(2, 1);
|
||||
occ->AddElectron(5, 1);
|
||||
|
||||
//Configure the water molecule
|
||||
water->NewConfigurationWithElectronOccupancy("Excitation3rdLayer", *occ);
|
||||
water->AddDecayChannel("Excitation3rdLayer", decCh1);
|
||||
water->AddDecayChannel("Excitation3rdLayer", decCh2);
|
||||
|
||||
//-------------------------------------------------------
|
||||
//-------------------Excitation of 2nd layer-----------------
|
||||
decCh1 = new G4MolecularDissociationChannel(
|
||||
"Excitation2ndLayer_AutoIonisation_Channel");
|
||||
decCh2 = new G4MolecularDissociationChannel(
|
||||
"Excitation2ndLayer_Relaxation_Channel");
|
||||
|
||||
//Decay Channel 1 : : OH + H_3Op + e_aq
|
||||
decCh1->AddProduct(OH);
|
||||
decCh1->AddProduct(H3O);
|
||||
decCh1->AddProduct(e_aq);
|
||||
|
||||
decCh1->SetProbability(0.5);
|
||||
decCh1->SetDisplacementType(G4DNAWaterDissociationDisplacer::AutoIonisation);
|
||||
|
||||
//Decay channel 2 : energy
|
||||
decCh2->SetEnergy(waterExcitation.ExcitationEnergy(3));
|
||||
decCh2->SetProbability(0.5);
|
||||
|
||||
*occ = *(water->GetGroundStateElectronOccupancy());
|
||||
occ->RemoveElectron(1, 1);
|
||||
occ->AddElectron(5, 1);
|
||||
|
||||
water->NewConfigurationWithElectronOccupancy("Excitation2ndLayer", *occ);
|
||||
water->AddDecayChannel("Excitation2ndLayer", decCh1);
|
||||
water->AddDecayChannel("Excitation2ndLayer", decCh2);
|
||||
|
||||
//-------------------------------------------------------
|
||||
//-------------------Excitation of 1st layer-----------------
|
||||
decCh1 = new G4MolecularDissociationChannel(
|
||||
"Excitation1stLayer_AutoIonisation_Channel");
|
||||
decCh2 = new G4MolecularDissociationChannel(
|
||||
"Excitation1stLayer_Relaxation_Channel");
|
||||
|
||||
*occ = *(water->GetGroundStateElectronOccupancy());
|
||||
occ->RemoveElectron(0, 1);
|
||||
occ->AddElectron(5, 1);
|
||||
|
||||
//Decay Channel 1 : : OH + H_3Op + e_aq
|
||||
decCh1->AddProduct(OH);
|
||||
decCh1->AddProduct(H3O);
|
||||
decCh1->AddProduct(e_aq);
|
||||
decCh1->SetProbability(0.5);
|
||||
decCh1->SetDisplacementType(G4DNAWaterDissociationDisplacer::AutoIonisation);
|
||||
|
||||
//Decay channel 2 : energy
|
||||
decCh2->SetEnergy(waterExcitation.ExcitationEnergy(4));
|
||||
decCh2->SetProbability(0.5);
|
||||
|
||||
water->NewConfigurationWithElectronOccupancy("Excitation1stLayer", *occ);
|
||||
water->AddDecayChannel("Excitation1stLayer", decCh1);
|
||||
water->AddDecayChannel("Excitation1stLayer", decCh2);
|
||||
|
||||
/////////////////////////////////////////////////////////
|
||||
// IONISATION //
|
||||
/////////////////////////////////////////////////////////
|
||||
//--------------------------------------------------------
|
||||
//------------------- Ionisation -------------------------
|
||||
|
||||
decCh1 = new G4MolecularDissociationChannel("Ionisation_Channel");
|
||||
|
||||
//Decay Channel 1 : : OH + H_3Op
|
||||
decCh1->AddProduct(H3O);
|
||||
decCh1->AddProduct(OH);
|
||||
decCh1->SetProbability(1);
|
||||
decCh1->SetDisplacementType(
|
||||
G4DNAWaterDissociationDisplacer::Ionisation_DissociationDecay);
|
||||
|
||||
*occ = *(water->GetGroundStateElectronOccupancy());
|
||||
occ->RemoveElectron(4, 1);
|
||||
// this is a ionized h2O with a hole in its last orbital
|
||||
water->NewConfigurationWithElectronOccupancy("Ionisation5", *occ);
|
||||
water->AddDecayChannel("Ionisation5",
|
||||
decCh1);
|
||||
|
||||
*occ = *(water->GetGroundStateElectronOccupancy());
|
||||
occ->RemoveElectron(3, 1);
|
||||
water->NewConfigurationWithElectronOccupancy("Ionisation4", *occ);
|
||||
water->AddDecayChannel("Ionisation4",
|
||||
new G4MolecularDissociationChannel(*decCh1));
|
||||
|
||||
*occ = *(water->GetGroundStateElectronOccupancy());
|
||||
occ->RemoveElectron(2, 1);
|
||||
water->NewConfigurationWithElectronOccupancy("Ionisation3", *occ);
|
||||
water->AddDecayChannel("Ionisation3",
|
||||
new G4MolecularDissociationChannel(*decCh1));
|
||||
|
||||
*occ = *(water->GetGroundStateElectronOccupancy());
|
||||
occ->RemoveElectron(1, 1);
|
||||
water->NewConfigurationWithElectronOccupancy("Ionisation2", *occ);
|
||||
water->AddDecayChannel("Ionisation2",
|
||||
new G4MolecularDissociationChannel(*decCh1));
|
||||
|
||||
*occ = *(water->GetGroundStateElectronOccupancy());
|
||||
occ->RemoveElectron(0, 1);
|
||||
water->NewConfigurationWithElectronOccupancy("Ionisation1", *occ);
|
||||
water->AddDecayChannel("Ionisation1",
|
||||
new G4MolecularDissociationChannel(*decCh1));
|
||||
|
||||
//////////////////////////////////////////////////////////
|
||||
// Dissociative Attachment //
|
||||
//////////////////////////////////////////////////////////
|
||||
decCh1 = new G4MolecularDissociationChannel("DissociativeAttachment");
|
||||
|
||||
//Decay 1 : 2OH + H_2
|
||||
decCh1->AddProduct(H2);
|
||||
decCh1->AddProduct(OHm);
|
||||
decCh1->AddProduct(OH);
|
||||
decCh1->SetProbability(1);
|
||||
decCh1->SetDisplacementType(G4DNAWaterDissociationDisplacer::
|
||||
DissociativeAttachment);
|
||||
|
||||
*occ = *(water->GetGroundStateElectronOccupancy());
|
||||
occ->AddElectron(5, 1); // H_2O^-
|
||||
water->NewConfigurationWithElectronOccupancy("DissociativeAttachment", *occ);
|
||||
water->AddDecayChannel("DissociativeAttachment", decCh1);
|
||||
|
||||
//////////////////////////////////////////////////////////
|
||||
// Electron-hole recombination //
|
||||
//////////////////////////////////////////////////////////
|
||||
decCh1 = new G4MolecularDissociationChannel("H2Ovib_DissociationDecay1");
|
||||
decCh2 = new G4MolecularDissociationChannel("H2Ovib_DissociationDecay2");
|
||||
decCh3 = new G4MolecularDissociationChannel("H2Ovib_DissociationDecay3");
|
||||
|
||||
//Decay 1 : 2OH + H_2
|
||||
decCh1->AddProduct(H2);
|
||||
decCh1->AddProduct(OH);
|
||||
decCh1->AddProduct(OH);
|
||||
decCh1->SetProbability(0.15);
|
||||
decCh1->SetDisplacementType(G4DNAWaterDissociationDisplacer::
|
||||
B1A1_DissociationDecay);
|
||||
|
||||
//Decay 2 : OH + H
|
||||
decCh2->AddProduct(OH);
|
||||
decCh2->AddProduct(H);
|
||||
decCh2->SetProbability(0.55);
|
||||
decCh2->SetDisplacementType(G4DNAWaterDissociationDisplacer::
|
||||
A1B1_DissociationDecay);
|
||||
|
||||
//Decay 3 : relaxation
|
||||
decCh3->SetProbability(0.30);
|
||||
|
||||
const auto pH2Ovib = G4H2O::Definition()->NewConfiguration("H2Ovib");
|
||||
assert(pH2Ovib != nullptr);
|
||||
|
||||
water->AddDecayChannel(pH2Ovib, decCh1);
|
||||
water->AddDecayChannel(pH2Ovib, decCh2);
|
||||
water->AddDecayChannel(pH2Ovib, decCh3);
|
||||
|
||||
delete occ;
|
||||
G4ChemDissociationChannels::ConstructDissociationChannels();
|
||||
}
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
@@ -24,13 +24,9 @@
|
||||
// ********************************************************************
|
||||
//
|
||||
#include "G4EmDNAChemistry_option1.hh"
|
||||
|
||||
#include "G4PhysicalConstants.hh"
|
||||
#include "G4SystemOfUnits.hh"
|
||||
|
||||
#include "G4DNAWaterDissociationDisplacer.hh"
|
||||
#include "G4DNAChemistryManager.hh"
|
||||
#include "G4DNAWaterExcitationStructure.hh"
|
||||
#include "G4ProcessManager.hh"
|
||||
|
||||
#include "G4DNAGenericIonsManager.hh"
|
||||
@@ -39,47 +35,25 @@
|
||||
|
||||
#include "G4DNAElectronSolvation.hh"
|
||||
|
||||
#include "G4DNAAttachment.hh"
|
||||
#include "G4DNAVibExcitation.hh"
|
||||
#include "G4DNASancheExcitationModel.hh"
|
||||
|
||||
#include "G4DNAElastic.hh"
|
||||
#include "G4DNAChampionElasticModel.hh"
|
||||
#include "G4DNAScreenedRutherfordElasticModel.hh"
|
||||
#include "G4DNAUeharaScreenedRutherfordElasticModel.hh"
|
||||
|
||||
#include "G4DNAMolecularDissociation.hh"
|
||||
#include "G4DNABrownianTransportation.hh"
|
||||
#include "G4DNAMolecularReactionTable.hh"
|
||||
#include "G4DNAMolecularStepByStepModel.hh"
|
||||
#include "G4VDNAReactionModel.hh"
|
||||
#include "G4DNASmoluchowskiReactionModel.hh"
|
||||
|
||||
#include "G4DNAElectronHoleRecombination.hh"
|
||||
|
||||
#include "G4ChemDissociationChannels.hh"
|
||||
// particles
|
||||
|
||||
#include "G4Electron.hh"
|
||||
#include "G4Proton.hh"
|
||||
#include "G4GenericIon.hh"
|
||||
|
||||
#include "G4MoleculeTable.hh"
|
||||
#include "G4H2O.hh"
|
||||
#include "G4H2.hh"
|
||||
#include "G4Hydrogen.hh"
|
||||
#include "G4OH.hh"
|
||||
#include "G4H3O.hh"
|
||||
#include "G4Electron_aq.hh"
|
||||
#include "G4H2O2.hh"
|
||||
|
||||
#include "G4PhysicsListHelper.hh"
|
||||
#include "G4BuilderType.hh"
|
||||
|
||||
/****/
|
||||
#include "G4DNAMoleculeEncounterStepper.hh"
|
||||
#include "G4ProcessVector.hh"
|
||||
#include "G4ProcessTable.hh"
|
||||
#include "G4DNASecondOrderReaction.hh"
|
||||
#include "G4MolecularConfiguration.hh"
|
||||
/****/
|
||||
|
||||
@@ -88,8 +62,6 @@
|
||||
|
||||
G4_DECLARE_PHYSCONSTR_FACTORY(G4EmDNAChemistry_option1);
|
||||
|
||||
#include "G4Threading.hh"
|
||||
|
||||
G4EmDNAChemistry_option1::G4EmDNAChemistry_option1() :
|
||||
G4VUserChemistryList(true)
|
||||
{
|
||||
@@ -98,324 +70,29 @@ G4EmDNAChemistry_option1::G4EmDNAChemistry_option1() :
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
G4EmDNAChemistry_option1::~G4EmDNAChemistry_option1()
|
||||
{
|
||||
}
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
void G4EmDNAChemistry_option1::ConstructMolecule()
|
||||
{
|
||||
//-----------------------------------
|
||||
G4Electron::Definition(); // safety
|
||||
|
||||
//-----------------------------------
|
||||
// Create the definition
|
||||
G4H2O::Definition();
|
||||
G4Hydrogen::Definition();
|
||||
G4H3O::Definition();
|
||||
G4OH::Definition();
|
||||
G4Electron_aq::Definition();
|
||||
G4H2O2::Definition();
|
||||
G4H2::Definition();
|
||||
G4ChemDissociationChannels::ConstructMolecule();
|
||||
|
||||
//____________________________________________________________________________
|
||||
|
||||
G4MoleculeTable::Instance()->CreateConfiguration("H3Op", G4H3O::Definition());
|
||||
G4MoleculeTable::Instance()->GetConfiguration("H3Op")->SetDiffusionCoefficient(
|
||||
9.46e-9 * (m2/s));
|
||||
G4MolecularConfiguration* OHm = G4MoleculeTable::Instance()->
|
||||
CreateConfiguration("OHm", // just a tag to store and retrieve from
|
||||
// G4MoleculeTable
|
||||
G4OH::Definition(),
|
||||
-1, // charge
|
||||
5.3e-9 * (m2 / s));
|
||||
OHm->SetMass(17.0079 * g / Avogadro * c_squared);
|
||||
G4MoleculeTable::Instance()->CreateConfiguration("OH", G4OH::Definition());
|
||||
G4MoleculeTable::Instance()->GetConfiguration("OHm")->SetDiffusionCoefficient(
|
||||
5.3e-9 * (m2 / s));
|
||||
G4MoleculeTable::Instance()->GetConfiguration("OH")->SetDiffusionCoefficient(
|
||||
2.2e-9 * (m2/s));
|
||||
G4MoleculeTable::Instance()->CreateConfiguration("e_aq",
|
||||
G4Electron_aq::Definition());
|
||||
G4MoleculeTable::Instance()->CreateConfiguration("H",
|
||||
G4Hydrogen::Definition());
|
||||
G4MoleculeTable::Instance()->CreateConfiguration("H2", G4H2::Definition());
|
||||
2.2e-9 * (m2/s));
|
||||
G4MoleculeTable::Instance()->GetConfiguration("H2")->SetDiffusionCoefficient(
|
||||
4.8e-9 * (m2/s));
|
||||
G4MoleculeTable::Instance()->CreateConfiguration("H2O2", G4H2O2::Definition());
|
||||
4.8e-9 * (m2/s));
|
||||
G4MoleculeTable::Instance()->GetConfiguration("H2O2")->SetDiffusionCoefficient(
|
||||
2.3e-9 * (m2/s));
|
||||
2.3e-9 * (m2/s));
|
||||
}
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
void G4EmDNAChemistry_option1::ConstructDissociationChannels()
|
||||
{
|
||||
//-----------------------------------
|
||||
//Get the molecular configuration
|
||||
G4MolecularConfiguration* OH =
|
||||
G4MoleculeTable::Instance()->GetConfiguration("OH");
|
||||
G4MolecularConfiguration* OHm =
|
||||
G4MoleculeTable::Instance()->GetConfiguration("OHm");
|
||||
G4MolecularConfiguration* e_aq =
|
||||
G4MoleculeTable::Instance()->GetConfiguration("e_aq");
|
||||
G4MolecularConfiguration* H2 =
|
||||
G4MoleculeTable::Instance()->GetConfiguration("H2");
|
||||
G4MolecularConfiguration* H3O =
|
||||
G4MoleculeTable::Instance()->GetConfiguration("H3Op");
|
||||
G4MolecularConfiguration* H =
|
||||
G4MoleculeTable::Instance()->GetConfiguration("H");
|
||||
|
||||
//-------------------------------------
|
||||
//Define the decay channels
|
||||
G4MoleculeDefinition* water = G4H2O::Definition();
|
||||
G4MolecularDissociationChannel* decCh1;
|
||||
G4MolecularDissociationChannel* decCh2;
|
||||
|
||||
G4ElectronOccupancy* occ = new G4ElectronOccupancy(
|
||||
*(water->GetGroundStateElectronOccupancy()));
|
||||
|
||||
//////////////////////////////////////////////////////////
|
||||
// EXCITATIONS //
|
||||
//////////////////////////////////////////////////////////
|
||||
G4DNAWaterExcitationStructure waterExcitation;
|
||||
//--------------------------------------------------------
|
||||
//---------------Excitation on the fifth layer------------
|
||||
|
||||
decCh1 = new G4MolecularDissociationChannel("A^1B_1_Relaxation");
|
||||
decCh2 = new G4MolecularDissociationChannel("A^1B_1_DissociativeDecay");
|
||||
//Decay 1 : OH + H
|
||||
decCh1->SetEnergy(waterExcitation.ExcitationEnergy(0));
|
||||
decCh1->SetProbability(0.35);
|
||||
decCh1->SetDisplacementType(G4DNAWaterDissociationDisplacer::NoDisplacement);
|
||||
|
||||
decCh2->AddProduct(OH);
|
||||
decCh2->AddProduct(H);
|
||||
decCh2->SetProbability(0.65);
|
||||
decCh2->SetDisplacementType(
|
||||
G4DNAWaterDissociationDisplacer::A1B1_DissociationDecay);
|
||||
|
||||
// water->AddExcitedState("A^1B_1");
|
||||
occ->RemoveElectron(4, 1); // this is the transition form ground state to
|
||||
occ->AddElectron(5, 1); // the first unoccupied orbital: A^1B_1
|
||||
|
||||
water->NewConfigurationWithElectronOccupancy("A^1B_1", *occ);
|
||||
water->AddDecayChannel("A^1B_1", decCh1);
|
||||
water->AddDecayChannel("A^1B_1", decCh2);
|
||||
|
||||
//--------------------------------------------------------
|
||||
//---------------Excitation on the fourth layer-----------
|
||||
decCh1 = new G4MolecularDissociationChannel("B^1A_1_Relaxation_Channel");
|
||||
decCh2 = new G4MolecularDissociationChannel("B^1A_1_DissociativeDecay");
|
||||
G4MolecularDissociationChannel* decCh3 = new G4MolecularDissociationChannel(
|
||||
"B^1A_1_AutoIonisation_Channel");
|
||||
|
||||
//Decay 1 : energy
|
||||
decCh1->SetEnergy(waterExcitation.ExcitationEnergy(1));
|
||||
decCh1->SetProbability(0.3);
|
||||
|
||||
//Decay 2 : 2OH + H_2
|
||||
decCh2->AddProduct(H2);
|
||||
decCh2->AddProduct(OH);
|
||||
decCh2->AddProduct(OH);
|
||||
decCh2->SetProbability(0.15);
|
||||
decCh2->SetDisplacementType(
|
||||
G4DNAWaterDissociationDisplacer::B1A1_DissociationDecay);
|
||||
|
||||
//Decay 3 : OH + H_3Op + e_aq
|
||||
decCh3->AddProduct(OH);
|
||||
decCh3->AddProduct(H3O);
|
||||
decCh3->AddProduct(e_aq);
|
||||
decCh3->SetProbability(0.55);
|
||||
decCh3->SetDisplacementType(G4DNAWaterDissociationDisplacer::AutoIonisation);
|
||||
|
||||
*occ = *(water->GetGroundStateElectronOccupancy());
|
||||
occ->RemoveElectron(3); // this is the transition form ground state to
|
||||
occ->AddElectron(5, 1); // the first unoccupied orbital: B^1A_1
|
||||
|
||||
water->NewConfigurationWithElectronOccupancy("B^1A_1", *occ);
|
||||
water->AddDecayChannel("B^1A_1", decCh1);
|
||||
water->AddDecayChannel("B^1A_1", decCh2);
|
||||
water->AddDecayChannel("B^1A_1", decCh3);
|
||||
|
||||
//-------------------------------------------------------
|
||||
//-------------------Excitation of 3rd layer-----------------
|
||||
decCh1 = new G4MolecularDissociationChannel(
|
||||
"Excitation3rdLayer_AutoIonisation_Channel");
|
||||
decCh2 = new G4MolecularDissociationChannel(
|
||||
"Excitation3rdLayer_Relaxation_Channel");
|
||||
|
||||
//Decay channel 1 : : OH + H_3Op + e_aq
|
||||
decCh1->AddProduct(OH);
|
||||
decCh1->AddProduct(H3O);
|
||||
decCh1->AddProduct(e_aq);
|
||||
|
||||
decCh1->SetProbability(0.5);
|
||||
decCh1->SetDisplacementType(G4DNAWaterDissociationDisplacer::AutoIonisation);
|
||||
|
||||
//Decay channel 2 : energy
|
||||
decCh2->SetEnergy(waterExcitation.ExcitationEnergy(2));
|
||||
decCh2->SetProbability(0.5);
|
||||
|
||||
//Electronic configuration of this decay
|
||||
*occ = *(water->GetGroundStateElectronOccupancy());
|
||||
occ->RemoveElectron(2, 1);
|
||||
occ->AddElectron(5, 1);
|
||||
|
||||
//Configure the water molecule
|
||||
water->NewConfigurationWithElectronOccupancy("Excitation3rdLayer", *occ);
|
||||
water->AddDecayChannel("Excitation3rdLayer", decCh1);
|
||||
water->AddDecayChannel("Excitation3rdLayer", decCh2);
|
||||
|
||||
//-------------------------------------------------------
|
||||
//-------------------Excitation of 2nd layer-----------------
|
||||
decCh1 = new G4MolecularDissociationChannel(
|
||||
"Excitation2ndLayer_AutoIonisation_Channel");
|
||||
decCh2 = new G4MolecularDissociationChannel(
|
||||
"Excitation2ndLayer_Relaxation_Channel");
|
||||
|
||||
//Decay Channel 1 : : OH + H_3Op + e_aq
|
||||
decCh1->AddProduct(OH);
|
||||
decCh1->AddProduct(H3O);
|
||||
decCh1->AddProduct(e_aq);
|
||||
|
||||
decCh1->SetProbability(0.5);
|
||||
decCh1->SetDisplacementType(G4DNAWaterDissociationDisplacer::AutoIonisation);
|
||||
|
||||
//Decay channel 2 : energy
|
||||
decCh2->SetEnergy(waterExcitation.ExcitationEnergy(3));
|
||||
decCh2->SetProbability(0.5);
|
||||
|
||||
*occ = *(water->GetGroundStateElectronOccupancy());
|
||||
occ->RemoveElectron(1, 1);
|
||||
occ->AddElectron(5, 1);
|
||||
|
||||
water->NewConfigurationWithElectronOccupancy("Excitation2ndLayer", *occ);
|
||||
water->AddDecayChannel("Excitation2ndLayer", decCh1);
|
||||
water->AddDecayChannel("Excitation2ndLayer", decCh2);
|
||||
|
||||
//-------------------------------------------------------
|
||||
//-------------------Excitation of 1st layer-----------------
|
||||
decCh1 = new G4MolecularDissociationChannel(
|
||||
"Excitation1stLayer_AutoIonisation_Channel");
|
||||
decCh2 = new G4MolecularDissociationChannel(
|
||||
"Excitation1stLayer_Relaxation_Channel");
|
||||
|
||||
*occ = *(water->GetGroundStateElectronOccupancy());
|
||||
occ->RemoveElectron(0, 1);
|
||||
occ->AddElectron(5, 1);
|
||||
|
||||
//Decay Channel 1 : : OH + H_3Op + e_aq
|
||||
decCh1->AddProduct(OH);
|
||||
decCh1->AddProduct(H3O);
|
||||
decCh1->AddProduct(e_aq);
|
||||
decCh1->SetProbability(0.5);
|
||||
decCh1->SetDisplacementType(G4DNAWaterDissociationDisplacer::AutoIonisation);
|
||||
|
||||
//Decay channel 2 : energy
|
||||
decCh2->SetEnergy(waterExcitation.ExcitationEnergy(4));
|
||||
decCh2->SetProbability(0.5);
|
||||
|
||||
water->NewConfigurationWithElectronOccupancy("Excitation1stLayer", *occ);
|
||||
water->AddDecayChannel("Excitation1stLayer", decCh1);
|
||||
water->AddDecayChannel("Excitation1stLayer", decCh2);
|
||||
|
||||
/////////////////////////////////////////////////////////
|
||||
// IONISATION //
|
||||
/////////////////////////////////////////////////////////
|
||||
//--------------------------------------------------------
|
||||
//------------------- Ionisation -------------------------
|
||||
|
||||
decCh1 = new G4MolecularDissociationChannel("Ionisation_Channel");
|
||||
|
||||
//Decay Channel 1 : : OH + H_3Op
|
||||
decCh1->AddProduct(H3O);
|
||||
decCh1->AddProduct(OH);
|
||||
decCh1->SetProbability(1);
|
||||
decCh1->SetDisplacementType(
|
||||
G4DNAWaterDissociationDisplacer::Ionisation_DissociationDecay);
|
||||
|
||||
*occ = *(water->GetGroundStateElectronOccupancy());
|
||||
occ->RemoveElectron(4, 1);
|
||||
// this is a ionized h2O with a hole in its last orbital
|
||||
water->NewConfigurationWithElectronOccupancy("Ionisation5", *occ);
|
||||
water->AddDecayChannel("Ionisation5",
|
||||
decCh1);
|
||||
|
||||
*occ = *(water->GetGroundStateElectronOccupancy());
|
||||
occ->RemoveElectron(3, 1);
|
||||
water->NewConfigurationWithElectronOccupancy("Ionisation4", *occ);
|
||||
water->AddDecayChannel("Ionisation4",
|
||||
new G4MolecularDissociationChannel(*decCh1));
|
||||
|
||||
*occ = *(water->GetGroundStateElectronOccupancy());
|
||||
occ->RemoveElectron(2, 1);
|
||||
water->NewConfigurationWithElectronOccupancy("Ionisation3", *occ);
|
||||
water->AddDecayChannel("Ionisation3",
|
||||
new G4MolecularDissociationChannel(*decCh1));
|
||||
|
||||
*occ = *(water->GetGroundStateElectronOccupancy());
|
||||
occ->RemoveElectron(1, 1);
|
||||
water->NewConfigurationWithElectronOccupancy("Ionisation2", *occ);
|
||||
water->AddDecayChannel("Ionisation2",
|
||||
new G4MolecularDissociationChannel(*decCh1));
|
||||
|
||||
*occ = *(water->GetGroundStateElectronOccupancy());
|
||||
occ->RemoveElectron(0, 1);
|
||||
water->NewConfigurationWithElectronOccupancy("Ionisation1", *occ);
|
||||
water->AddDecayChannel("Ionisation1",
|
||||
new G4MolecularDissociationChannel(*decCh1));
|
||||
|
||||
//////////////////////////////////////////////////////////
|
||||
// Dissociative Attachment //
|
||||
//////////////////////////////////////////////////////////
|
||||
decCh1 = new G4MolecularDissociationChannel("DissociativeAttachment");
|
||||
|
||||
//Decay 1 : 2OH + H_2
|
||||
decCh1->AddProduct(H2);
|
||||
decCh1->AddProduct(OHm);
|
||||
decCh1->AddProduct(OH);
|
||||
decCh1->SetProbability(1);
|
||||
decCh1->SetDisplacementType(G4DNAWaterDissociationDisplacer::
|
||||
DissociativeAttachment);
|
||||
|
||||
*occ = *(water->GetGroundStateElectronOccupancy());
|
||||
occ->AddElectron(5, 1); // H_2O^-
|
||||
water->NewConfigurationWithElectronOccupancy("DissociativeAttachment", *occ);
|
||||
water->AddDecayChannel("DissociativeAttachment", decCh1);
|
||||
|
||||
//////////////////////////////////////////////////////////
|
||||
// Electron-hole recombination //
|
||||
//////////////////////////////////////////////////////////
|
||||
decCh1 = new G4MolecularDissociationChannel("H2Ovib_DissociationDecay1");
|
||||
decCh2 = new G4MolecularDissociationChannel("H2Ovib_DissociationDecay2");
|
||||
decCh3 = new G4MolecularDissociationChannel("H2Ovib_DissociationDecay3");
|
||||
|
||||
//Decay 1 : 2OH + H_2
|
||||
decCh1->AddProduct(H2);
|
||||
decCh1->AddProduct(OH);
|
||||
decCh1->AddProduct(OH);
|
||||
decCh1->SetProbability(0.15);
|
||||
decCh1->SetDisplacementType(G4DNAWaterDissociationDisplacer::
|
||||
B1A1_DissociationDecay);
|
||||
|
||||
//Decay 2 : OH + H
|
||||
decCh2->AddProduct(OH);
|
||||
decCh2->AddProduct(H);
|
||||
decCh2->SetProbability(0.55);
|
||||
decCh2->SetDisplacementType(G4DNAWaterDissociationDisplacer::
|
||||
A1B1_DissociationDecay);
|
||||
|
||||
//Decay 3 : relaxation
|
||||
decCh3->SetProbability(0.30);
|
||||
|
||||
const auto pH2Ovib = G4H2O::Definition()->NewConfiguration("H2Ovib");
|
||||
assert(pH2Ovib != nullptr);
|
||||
|
||||
water->AddDecayChannel(pH2Ovib, decCh1);
|
||||
water->AddDecayChannel(pH2Ovib, decCh2);
|
||||
water->AddDecayChannel(pH2Ovib, decCh3);
|
||||
|
||||
delete occ;
|
||||
G4ChemDissociationChannels::ConstructDissociationChannels();
|
||||
}
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
@@ -56,6 +56,7 @@
|
||||
#include "G4MolecularConfiguration.hh"
|
||||
#include "G4PhysicsConstructorFactory.hh"
|
||||
#include "G4VDNAReactionModel.hh"
|
||||
#include "G4ChemDissociationChannels.hh"
|
||||
|
||||
G4_DECLARE_PHYSCONSTR_FACTORY(G4EmDNAChemistry_option2);
|
||||
|
||||
@@ -69,23 +70,11 @@ G4EmDNAChemistry_option2::G4EmDNAChemistry_option2()
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
G4EmDNAChemistry_option2::~G4EmDNAChemistry_option2()
|
||||
{}
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
void G4EmDNAChemistry_option2::ConstructMolecule()
|
||||
{
|
||||
//-----------------------------------
|
||||
G4Electron::Definition(); // safety
|
||||
//-----------------------------------
|
||||
G4H2O::Definition();
|
||||
G4Hydrogen::Definition();
|
||||
G4H3O::Definition();
|
||||
G4OH::Definition();
|
||||
G4Electron_aq::Definition();
|
||||
G4H2O2::Definition();
|
||||
G4H2::Definition();
|
||||
G4ChemDissociationChannels::ConstructMolecule();
|
||||
//____________________________________________________________________________
|
||||
|
||||
G4Deoxyribose::Definition();
|
||||
G4Phosphate::Definition();
|
||||
G4Adenine::Definition();
|
||||
@@ -101,27 +90,6 @@ void G4EmDNAChemistry_option2::ConstructMolecule()
|
||||
G4DamagedCytosine::Definition();
|
||||
G4ModifiedHistone::Definition();
|
||||
|
||||
//_________________species___________________________________________________________
|
||||
|
||||
G4MoleculeTable::Instance()->
|
||||
CreateConfiguration("H3Op", G4H3O::Definition());
|
||||
G4MolecularConfiguration* OHm = G4MoleculeTable::Instance()->
|
||||
CreateConfiguration("OHm",
|
||||
G4OH::Definition(),
|
||||
-1, // charge
|
||||
5.0e-9 * (m2 / s));
|
||||
OHm->SetMass(17.0079 * g / Avogadro * c_squared);
|
||||
G4MoleculeTable::Instance()->
|
||||
CreateConfiguration("OH", G4OH::Definition());
|
||||
G4MoleculeTable::Instance()->
|
||||
CreateConfiguration("e_aq",G4Electron_aq::Definition());
|
||||
G4MoleculeTable::Instance()->
|
||||
CreateConfiguration("H",G4Hydrogen::Definition());
|
||||
G4MoleculeTable::Instance()->
|
||||
CreateConfiguration("H2", G4H2::Definition());
|
||||
G4MoleculeTable::Instance()->
|
||||
CreateConfiguration("H2O2", G4H2O2::Definition());
|
||||
|
||||
//________________DNA_______________________________________________
|
||||
|
||||
G4MoleculeTable::Instance()->
|
||||
@@ -162,289 +130,7 @@ void G4EmDNAChemistry_option2::ConstructMolecule()
|
||||
|
||||
void G4EmDNAChemistry_option2::ConstructDissociationChannels()
|
||||
{
|
||||
//-----------------------------------
|
||||
//Get the molecular configuration
|
||||
G4MolecularConfiguration* OH =
|
||||
G4MoleculeTable::Instance()->GetConfiguration("OH");
|
||||
G4MolecularConfiguration* OHm =
|
||||
G4MoleculeTable::Instance()->GetConfiguration("OHm");
|
||||
G4MolecularConfiguration* e_aq =
|
||||
G4MoleculeTable::Instance()->GetConfiguration("e_aq");
|
||||
G4MolecularConfiguration* H2 =
|
||||
G4MoleculeTable::Instance()->GetConfiguration("H2");
|
||||
G4MolecularConfiguration* H3O =
|
||||
G4MoleculeTable::Instance()->GetConfiguration("H3Op");
|
||||
G4MolecularConfiguration* H =
|
||||
G4MoleculeTable::Instance()->GetConfiguration("H");
|
||||
|
||||
//-------------------------------------
|
||||
//Define the decay channels
|
||||
G4MoleculeDefinition* water = G4H2O::Definition();
|
||||
G4MolecularDissociationChannel* decCh1;
|
||||
G4MolecularDissociationChannel* decCh2;
|
||||
|
||||
G4ElectronOccupancy* occ = new G4ElectronOccupancy(
|
||||
*(water->GetGroundStateElectronOccupancy()));
|
||||
|
||||
//////////////////////////////////////////////////////////
|
||||
// EXCITATIONS //
|
||||
//////////////////////////////////////////////////////////
|
||||
G4DNAWaterExcitationStructure waterExcitation;
|
||||
//--------------------------------------------------------
|
||||
//---------------Excitation on the fifth layer------------
|
||||
|
||||
decCh1 = new G4MolecularDissociationChannel(
|
||||
"A^1B_1_Relaxation");
|
||||
decCh2 = new G4MolecularDissociationChannel(
|
||||
"A^1B_1_DissociativeDecay");
|
||||
|
||||
//Decay 1 : OH + H
|
||||
decCh1->SetEnergy(waterExcitation.ExcitationEnergy(0));
|
||||
decCh1->SetProbability(0.35);
|
||||
decCh1->SetDisplacementType(
|
||||
G4DNAWaterDissociationDisplacer::NoDisplacement);
|
||||
|
||||
decCh2->AddProduct(OH);
|
||||
decCh2->AddProduct(H);
|
||||
decCh2->SetProbability(0.65);
|
||||
decCh2->SetDisplacementType(
|
||||
G4DNAWaterDissociationDisplacer::A1B1_DissociationDecay);
|
||||
|
||||
// water->AddExcitedState("A^1B_1");
|
||||
// this is the transition form ground state to
|
||||
occ->RemoveElectron(4, 1);
|
||||
// the first unoccupied orbital: A^1B_1
|
||||
occ->AddElectron(5, 1);
|
||||
|
||||
water->NewConfigurationWithElectronOccupancy("A^1B_1", *occ);
|
||||
water->AddDecayChannel("A^1B_1", decCh1);
|
||||
water->AddDecayChannel("A^1B_1", decCh2);
|
||||
|
||||
//--------------------------------------------------------
|
||||
//---------------Excitation on the fourth layer-----------
|
||||
decCh1 = new G4MolecularDissociationChannel(
|
||||
"B^1A_1_Relaxation_Channel");
|
||||
decCh2 = new G4MolecularDissociationChannel(
|
||||
"B^1A_1_DissociativeDecay");
|
||||
G4MolecularDissociationChannel* decCh3 =
|
||||
new G4MolecularDissociationChannel("B^1A_1_AutoIonisation_Channel");
|
||||
|
||||
//Decay 1 : energy
|
||||
decCh1->SetEnergy(waterExcitation.ExcitationEnergy(1));
|
||||
decCh1->SetProbability(0.3);
|
||||
|
||||
//Decay 2 : 2OH + H_2
|
||||
decCh2->AddProduct(H2);
|
||||
decCh2->AddProduct(OH);
|
||||
decCh2->AddProduct(OH);
|
||||
decCh2->SetProbability(0.15);
|
||||
decCh2->SetDisplacementType(
|
||||
G4DNAWaterDissociationDisplacer::B1A1_DissociationDecay);
|
||||
|
||||
//Decay 3 : OH + H_3Op + e_aq
|
||||
decCh3->AddProduct(OH);
|
||||
decCh3->AddProduct(H3O);
|
||||
decCh3->AddProduct(e_aq);
|
||||
decCh3->SetProbability(0.55);
|
||||
decCh3->SetDisplacementType(
|
||||
G4DNAWaterDissociationDisplacer::AutoIonisation);
|
||||
|
||||
*occ = *(water->GetGroundStateElectronOccupancy());
|
||||
occ->RemoveElectron(3); // this is the transition form ground state to
|
||||
occ->AddElectron(5, 1); // the first unoccupied orbital: B^1A_1
|
||||
|
||||
water->NewConfigurationWithElectronOccupancy("B^1A_1", *occ);
|
||||
water->AddDecayChannel("B^1A_1", decCh1);
|
||||
water->AddDecayChannel("B^1A_1", decCh2);
|
||||
water->AddDecayChannel("B^1A_1", decCh3);
|
||||
|
||||
//-------------------------------------------------------
|
||||
//-------------------Excitation of 3rd layer-----------------
|
||||
decCh1 = new G4MolecularDissociationChannel(
|
||||
"Excitation3rdLayer_AutoIonisation_Channel");
|
||||
decCh2 = new G4MolecularDissociationChannel(
|
||||
"Excitation3rdLayer_Relaxation_Channel");
|
||||
|
||||
//Decay channel 1 : : OH + H_3Op + e_aq
|
||||
decCh1->AddProduct(OH);
|
||||
decCh1->AddProduct(H3O);
|
||||
decCh1->AddProduct(e_aq);
|
||||
|
||||
decCh1->SetProbability(0.5);
|
||||
decCh1->SetDisplacementType(
|
||||
G4DNAWaterDissociationDisplacer::AutoIonisation);
|
||||
|
||||
//Decay channel 2 : energy
|
||||
decCh2->SetEnergy(waterExcitation.ExcitationEnergy(2));
|
||||
decCh2->SetProbability(0.5);
|
||||
|
||||
//Electronic configuration of this decay
|
||||
*occ = *(water->GetGroundStateElectronOccupancy());
|
||||
occ->RemoveElectron(2, 1);
|
||||
occ->AddElectron(5, 1);
|
||||
|
||||
//Configure the water molecule
|
||||
water->NewConfigurationWithElectronOccupancy(
|
||||
"Excitation3rdLayer", *occ);
|
||||
water->AddDecayChannel("Excitation3rdLayer", decCh1);
|
||||
water->AddDecayChannel("Excitation3rdLayer", decCh2);
|
||||
|
||||
//-------------------------------------------------------
|
||||
//-------------------Excitation of 2nd layer-----------------
|
||||
decCh1 = new G4MolecularDissociationChannel(
|
||||
"Excitation2ndLayer_AutoIonisation_Channel");
|
||||
decCh2 = new G4MolecularDissociationChannel(
|
||||
"Excitation2ndLayer_Relaxation_Channel");
|
||||
|
||||
//Decay Channel 1 : : OH + H_3Op + e_aq
|
||||
decCh1->AddProduct(OH);
|
||||
decCh1->AddProduct(H3O);
|
||||
decCh1->AddProduct(e_aq);
|
||||
|
||||
decCh1->SetProbability(0.5);
|
||||
decCh1->SetDisplacementType(
|
||||
G4DNAWaterDissociationDisplacer::AutoIonisation);
|
||||
|
||||
//Decay channel 2 : energy
|
||||
decCh2->SetEnergy(waterExcitation.ExcitationEnergy(3));
|
||||
decCh2->SetProbability(0.5);
|
||||
|
||||
*occ = *(water->GetGroundStateElectronOccupancy());
|
||||
occ->RemoveElectron(1, 1);
|
||||
occ->AddElectron(5, 1);
|
||||
|
||||
water->NewConfigurationWithElectronOccupancy(
|
||||
"Excitation2ndLayer", *occ);
|
||||
water->AddDecayChannel("Excitation2ndLayer", decCh1);
|
||||
water->AddDecayChannel("Excitation2ndLayer", decCh2);
|
||||
|
||||
//-------------------------------------------------------
|
||||
//-------------------Excitation of 1st layer-----------------
|
||||
decCh1 = new G4MolecularDissociationChannel(
|
||||
"Excitation1stLayer_AutoIonisation_Channel");
|
||||
decCh2 = new G4MolecularDissociationChannel(
|
||||
"Excitation1stLayer_Relaxation_Channel");
|
||||
|
||||
*occ = *(water->GetGroundStateElectronOccupancy());
|
||||
occ->RemoveElectron(0, 1);
|
||||
occ->AddElectron(5, 1);
|
||||
|
||||
//Decay Channel 1 : : OH + H_3Op + e_aq
|
||||
decCh1->AddProduct(OH);
|
||||
decCh1->AddProduct(H3O);
|
||||
decCh1->AddProduct(e_aq);
|
||||
decCh1->SetProbability(0.5);
|
||||
decCh1->SetDisplacementType(
|
||||
G4DNAWaterDissociationDisplacer::AutoIonisation);
|
||||
|
||||
//Decay channel 2 : energy
|
||||
decCh2->SetEnergy(waterExcitation.ExcitationEnergy(4));
|
||||
decCh2->SetProbability(0.5);
|
||||
|
||||
water->NewConfigurationWithElectronOccupancy(
|
||||
"Excitation1stLayer", *occ);
|
||||
water->AddDecayChannel("Excitation1stLayer", decCh1);
|
||||
water->AddDecayChannel("Excitation1stLayer", decCh2);
|
||||
|
||||
/////////////////////////////////////////////////////////
|
||||
// IONISATION //
|
||||
/////////////////////////////////////////////////////////
|
||||
//--------------------------------------------------------
|
||||
//------------------- Ionisation -------------------------
|
||||
|
||||
decCh1 = new G4MolecularDissociationChannel("Ionisation_Channel");
|
||||
|
||||
//Decay Channel 1 : : OH + H_3Op
|
||||
decCh1->AddProduct(H3O);
|
||||
decCh1->AddProduct(OH);
|
||||
decCh1->SetProbability(1);
|
||||
decCh1->SetDisplacementType(
|
||||
G4DNAWaterDissociationDisplacer::Ionisation_DissociationDecay);
|
||||
|
||||
*occ = *(water->GetGroundStateElectronOccupancy());
|
||||
occ->RemoveElectron(4, 1);
|
||||
// this is a ionized h2O with a hole in its last orbital
|
||||
water->NewConfigurationWithElectronOccupancy("Ionisation5", *occ);
|
||||
water->AddDecayChannel("Ionisation5", decCh1);
|
||||
|
||||
*occ = *(water->GetGroundStateElectronOccupancy());
|
||||
occ->RemoveElectron(3, 1);
|
||||
water->NewConfigurationWithElectronOccupancy("Ionisation4", *occ);
|
||||
water->AddDecayChannel("Ionisation4",
|
||||
new G4MolecularDissociationChannel(*decCh1));
|
||||
|
||||
*occ = *(water->GetGroundStateElectronOccupancy());
|
||||
occ->RemoveElectron(2, 1);
|
||||
water->NewConfigurationWithElectronOccupancy("Ionisation3", *occ);
|
||||
water->AddDecayChannel("Ionisation3",
|
||||
new G4MolecularDissociationChannel(*decCh1));
|
||||
|
||||
*occ = *(water->GetGroundStateElectronOccupancy());
|
||||
occ->RemoveElectron(1, 1);
|
||||
water->NewConfigurationWithElectronOccupancy("Ionisation2", *occ);
|
||||
water->AddDecayChannel("Ionisation2",
|
||||
new G4MolecularDissociationChannel(*decCh1));
|
||||
|
||||
*occ = *(water->GetGroundStateElectronOccupancy());
|
||||
occ->RemoveElectron(0, 1);
|
||||
water->NewConfigurationWithElectronOccupancy("Ionisation1", *occ);
|
||||
water->AddDecayChannel("Ionisation1",
|
||||
new G4MolecularDissociationChannel(*decCh1));
|
||||
|
||||
//////////////////////////////////////////////////////////
|
||||
// Dissociative Attachment //
|
||||
//////////////////////////////////////////////////////////
|
||||
decCh1 = new G4MolecularDissociationChannel(
|
||||
"DissociativeAttachment");
|
||||
|
||||
//Decay 1 : 2OH + H_2
|
||||
decCh1->AddProduct(H2);
|
||||
decCh1->AddProduct(OHm);
|
||||
decCh1->AddProduct(OH);
|
||||
decCh1->SetProbability(1);
|
||||
decCh1->SetDisplacementType(
|
||||
G4DNAWaterDissociationDisplacer::DissociativeAttachment);
|
||||
|
||||
*occ = *(water->GetGroundStateElectronOccupancy());
|
||||
occ->AddElectron(5, 1); // H_2O^-
|
||||
water->NewConfigurationWithElectronOccupancy(
|
||||
"DissociativeAttachment", *occ);
|
||||
water->AddDecayChannel(
|
||||
"DissociativeAttachment", decCh1);
|
||||
|
||||
//////////////////////////////////////////////////////////
|
||||
// Electron-hole recombination //
|
||||
//////////////////////////////////////////////////////////
|
||||
decCh1 = new G4MolecularDissociationChannel("H2Ovib_DissociationDecay1");
|
||||
decCh2 = new G4MolecularDissociationChannel("H2Ovib_DissociationDecay2");
|
||||
decCh3 = new G4MolecularDissociationChannel("H2Ovib_DissociationDecay3");
|
||||
|
||||
//Decay 1 : 2OH + H_2
|
||||
decCh1->AddProduct(H2);
|
||||
decCh1->AddProduct(OH);
|
||||
decCh1->AddProduct(OH);
|
||||
decCh1->SetProbability(0.15);
|
||||
decCh1->SetDisplacementType(G4DNAWaterDissociationDisplacer::
|
||||
B1A1_DissociationDecay);
|
||||
|
||||
//Decay 2 : OH + H
|
||||
decCh2->AddProduct(OH);
|
||||
decCh2->AddProduct(H);
|
||||
decCh2->SetProbability(0.55);
|
||||
decCh2->SetDisplacementType(G4DNAWaterDissociationDisplacer::
|
||||
A1B1_DissociationDecay);
|
||||
|
||||
//Decay 3 : relaxation
|
||||
decCh3->SetProbability(0.30);
|
||||
|
||||
const auto pH2Ovib = G4H2O::Definition()->NewConfiguration("H2Ovib");
|
||||
assert(pH2Ovib != nullptr);
|
||||
|
||||
water->AddDecayChannel(pH2Ovib, decCh1);
|
||||
water->AddDecayChannel(pH2Ovib, decCh2);
|
||||
water->AddDecayChannel(pH2Ovib, decCh3);
|
||||
|
||||
delete occ;
|
||||
G4ChemDissociationChannels::ConstructDissociationChannels();
|
||||
}
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
@@ -33,81 +33,42 @@
|
||||
*/
|
||||
|
||||
#include "G4EmDNAChemistry_option3.hh"
|
||||
|
||||
#include "G4PhysicalConstants.hh"
|
||||
#include "G4SystemOfUnits.hh"
|
||||
|
||||
#include "G4DNAWaterDissociationDisplacer.hh"
|
||||
#include "G4DNAChemistryManager.hh"
|
||||
#include "G4DNAWaterExcitationStructure.hh"
|
||||
#include "G4ProcessManager.hh"
|
||||
|
||||
#include "G4DNAGenericIonsManager.hh"
|
||||
|
||||
// *** Processes and models for Geant4-DNA
|
||||
|
||||
#include "G4DNAElectronSolvation.hh"
|
||||
|
||||
#include "G4DNAAttachment.hh"
|
||||
#include "G4DNAVibExcitation.hh"
|
||||
#include "G4DNASancheExcitationModel.hh"
|
||||
|
||||
#include "G4DNAElastic.hh"
|
||||
#include "G4DNAChampionElasticModel.hh"
|
||||
#include "G4DNAScreenedRutherfordElasticModel.hh"
|
||||
#include "G4DNAUeharaScreenedRutherfordElasticModel.hh"
|
||||
|
||||
#include "G4DNAMolecularDissociation.hh"
|
||||
#include "G4DNABrownianTransportation.hh"
|
||||
#include "G4DNAMolecularReactionTable.hh"
|
||||
|
||||
#include "G4DNAMolecularStepByStepModel.hh"
|
||||
#include "G4DNAMolecularIRTModel.hh"
|
||||
#include "G4DNAIndependentReactionTimeModel.hh"
|
||||
|
||||
#include "G4VDNAReactionModel.hh"
|
||||
#include "G4DNASmoluchowskiReactionModel.hh"
|
||||
|
||||
#include "G4DNAIRT.hh"
|
||||
|
||||
#include "G4DNAElectronHoleRecombination.hh"
|
||||
|
||||
// particles
|
||||
|
||||
#include "G4Electron.hh"
|
||||
#include "G4Proton.hh"
|
||||
#include "G4GenericIon.hh"
|
||||
|
||||
#include "G4MoleculeTable.hh"
|
||||
#include "G4H2O.hh"
|
||||
#include "G4H2.hh"
|
||||
#include "G4Hydrogen.hh"
|
||||
#include "G4OH.hh"
|
||||
#include "G4H3O.hh"
|
||||
#include "G4Electron_aq.hh"
|
||||
|
||||
#include "G4Oxygen.hh"
|
||||
#include "G4H2O2.hh"
|
||||
#include "G4O2.hh"
|
||||
#include "G4HO2.hh"
|
||||
#include "G4O3.hh"
|
||||
#include "G4FakeMolecule.hh"
|
||||
|
||||
#include "G4PhysicsListHelper.hh"
|
||||
#include "G4BuilderType.hh"
|
||||
|
||||
/****/
|
||||
#include "G4DNAMoleculeEncounterStepper.hh"
|
||||
#include "G4ProcessVector.hh"
|
||||
#include "G4ProcessTable.hh"
|
||||
#include "G4DNASecondOrderReaction.hh"
|
||||
#include "G4MolecularConfiguration.hh"
|
||||
/****/
|
||||
|
||||
#include "G4Scheduler.hh"
|
||||
|
||||
// factory
|
||||
#include "G4PhysicsConstructorFactory.hh"
|
||||
#include "G4ChemDissociationChannels_option1.hh"
|
||||
|
||||
G4_DECLARE_PHYSCONSTR_FACTORY(G4EmDNAChemistry_option3);
|
||||
|
||||
@@ -121,453 +82,16 @@ G4EmDNAChemistry_option3::G4EmDNAChemistry_option3() :
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
G4EmDNAChemistry_option3::~G4EmDNAChemistry_option3()
|
||||
{
|
||||
}
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
void G4EmDNAChemistry_option3::ConstructMolecule()
|
||||
{
|
||||
//-----------------------------------
|
||||
// G4Electron::Definition(); // safety
|
||||
|
||||
//-----------------------------------
|
||||
// Create the definition
|
||||
|
||||
G4H2O::Definition();
|
||||
G4Hydrogen::Definition();
|
||||
G4H3O::Definition();
|
||||
G4OH::Definition();
|
||||
G4Electron_aq::Definition();
|
||||
G4H2O2::Definition();
|
||||
G4H2::Definition();
|
||||
|
||||
G4O2::Definition();
|
||||
G4HO2::Definition();
|
||||
G4Oxygen::Definition();
|
||||
G4O3::Definition();
|
||||
|
||||
//____________________________________________________________________________
|
||||
|
||||
G4MoleculeTable::Instance()->CreateConfiguration("H3Op", G4H3O::Definition());
|
||||
G4MoleculeTable::Instance()->GetConfiguration("H3Op")->SetDiffusionCoefficient(
|
||||
9.46e-9 * (m2/s));
|
||||
G4MoleculeTable::Instance()->GetConfiguration("H3Op")->SetVanDerVaalsRadius(0.25*nm);
|
||||
|
||||
G4MoleculeTable::Instance()->CreateConfiguration("OH", G4OH::Definition());
|
||||
G4MoleculeTable::Instance()->GetConfiguration("OH")->SetDiffusionCoefficient(
|
||||
2.2e-9 * (m2/s));
|
||||
G4MoleculeTable::Instance()->GetConfiguration("OH")->SetVanDerVaalsRadius(0.22*nm);
|
||||
|
||||
G4MolecularConfiguration* OHm = G4MoleculeTable::Instance()->
|
||||
CreateConfiguration("OHm", // just a tag to store and retrieve from
|
||||
// G4MoleculeTable
|
||||
G4OH::Definition(),
|
||||
-1, // charge
|
||||
5.3e-9 * (m2 / s));
|
||||
OHm->SetMass(17.0079 * g / Avogadro * c_squared);
|
||||
OHm->SetVanDerVaalsRadius(0.33*nm);
|
||||
|
||||
|
||||
|
||||
|
||||
G4MoleculeTable::Instance()->CreateConfiguration("e_aq",
|
||||
G4Electron_aq::Definition());
|
||||
G4MoleculeTable::Instance()->GetConfiguration("e_aq")->SetVanDerVaalsRadius(0.50*nm);
|
||||
|
||||
G4MoleculeTable::Instance()->CreateConfiguration("H",
|
||||
G4Hydrogen::Definition());
|
||||
G4MoleculeTable::Instance()->GetConfiguration("H")->SetVanDerVaalsRadius(0.19*nm);
|
||||
|
||||
G4MoleculeTable::Instance()->CreateConfiguration("H2", G4H2::Definition());
|
||||
G4MoleculeTable::Instance()->GetConfiguration("H2")->SetDiffusionCoefficient(
|
||||
4.8e-9 * (m2/s));
|
||||
G4MoleculeTable::Instance()->GetConfiguration("H2")->SetVanDerVaalsRadius(0.14*nm);
|
||||
|
||||
|
||||
G4MoleculeTable::Instance()->CreateConfiguration("H2O2", G4H2O2::Definition());
|
||||
G4MoleculeTable::Instance()->GetConfiguration("H2O2")->SetDiffusionCoefficient(
|
||||
2.3e-9 * (m2/s));
|
||||
G4MoleculeTable::Instance()->GetConfiguration("H2O2")->SetVanDerVaalsRadius(0.21*nm);
|
||||
|
||||
// molecules extension (RITRACKS)
|
||||
|
||||
G4MoleculeTable::Instance()->CreateConfiguration("HO2",G4HO2::Definition());
|
||||
G4MoleculeTable::Instance()->GetConfiguration("HO2")->SetVanDerVaalsRadius(0.21*nm);
|
||||
|
||||
G4MolecularConfiguration* HO2m = G4MoleculeTable::Instance()->
|
||||
CreateConfiguration("HO2m", // just a tag to store and retrieve from
|
||||
// G4MoleculeTable
|
||||
G4HO2::Definition(),
|
||||
-1, // charge
|
||||
1.4e-9 * (m2 / s));
|
||||
HO2m->SetMass(33.00396 * g / Avogadro * c_squared);
|
||||
HO2m->SetVanDerVaalsRadius(0.25*nm);
|
||||
|
||||
G4MoleculeTable::Instance()->CreateConfiguration("Oxy",G4Oxygen::Definition());
|
||||
G4MoleculeTable::Instance()->GetConfiguration("Oxy")->SetVanDerVaalsRadius(0.20*nm);
|
||||
|
||||
G4MolecularConfiguration* Om = G4MoleculeTable::Instance()->
|
||||
CreateConfiguration("Om", // just a tag to store and retrieve from
|
||||
// G4MoleculeTable
|
||||
G4Oxygen::Definition(),
|
||||
-1, // charge
|
||||
2.0e-9 * (m2 / s));
|
||||
Om->SetMass(15.99829 * g / Avogadro * c_squared);
|
||||
Om->SetVanDerVaalsRadius(0.25*nm);
|
||||
|
||||
G4MoleculeTable::Instance()->CreateConfiguration("O2",G4O2::Definition());
|
||||
G4MoleculeTable::Instance()->GetConfiguration("O2")->SetVanDerVaalsRadius(0.17*nm);
|
||||
|
||||
G4MolecularConfiguration* O2m = G4MoleculeTable::Instance()->
|
||||
CreateConfiguration("O2m", // just a tag to store and retrieve from
|
||||
// G4MoleculeTable
|
||||
G4O2::Definition(),
|
||||
-1, // charge
|
||||
1.75e-9 * (m2 / s));
|
||||
O2m->SetMass(31.99602 * g / Avogadro * c_squared);
|
||||
O2m->SetVanDerVaalsRadius(0.22*nm);
|
||||
|
||||
G4MoleculeTable::Instance()->CreateConfiguration("O3",G4O3::Definition());
|
||||
G4MoleculeTable::Instance()->GetConfiguration("O3")->SetVanDerVaalsRadius(0.20*nm);
|
||||
|
||||
G4MolecularConfiguration* O3m = G4MoleculeTable::Instance()->
|
||||
CreateConfiguration("O3m", // just a tag to store and retrieve from
|
||||
// G4MoleculeTable
|
||||
G4O3::Definition(),
|
||||
-1, // charge
|
||||
2.0e-9 * (m2 / s));
|
||||
O3m->SetMass(47.99375 * g / Avogadro * c_squared);
|
||||
O3m->SetVanDerVaalsRadius(0.20*nm);
|
||||
|
||||
G4MoleculeTable::Instance()->
|
||||
CreateConfiguration("H2O(B)", // just a tag to store and retrieve from
|
||||
// G4MoleculeTable
|
||||
G4H2O::Definition(),
|
||||
0, // charge
|
||||
0 * (m2 / s));
|
||||
|
||||
G4MoleculeTable::Instance()->
|
||||
CreateConfiguration("H3Op(B)", // just a tag to store and retrieve from
|
||||
// G4MoleculeTable
|
||||
G4H3O::Definition(),
|
||||
1, // charge
|
||||
0 * (m2 / s));
|
||||
|
||||
G4MoleculeTable::Instance()->
|
||||
CreateConfiguration("OHm(B)", // just a tag to store and retrieve from
|
||||
// G4MoleculeTable
|
||||
G4OH::Definition(),
|
||||
-1, // charge
|
||||
0 * (m2 / s));
|
||||
|
||||
G4MoleculeTable::Instance()->CreateConfiguration("NoneM",G4FakeMolecule::Definition());
|
||||
|
||||
G4ChemDissociationChannels_option1::ConstructMolecule();
|
||||
}
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
void G4EmDNAChemistry_option3::ConstructDissociationChannels()
|
||||
{
|
||||
//-----------------------------------
|
||||
//Get the molecular configuration
|
||||
G4MolecularConfiguration* OH =
|
||||
G4MoleculeTable::Instance()->GetConfiguration("OH");
|
||||
G4MolecularConfiguration* OHm =
|
||||
G4MoleculeTable::Instance()->GetConfiguration("OHm");
|
||||
G4MolecularConfiguration* e_aq =
|
||||
G4MoleculeTable::Instance()->GetConfiguration("e_aq");
|
||||
G4MolecularConfiguration* H2 =
|
||||
G4MoleculeTable::Instance()->GetConfiguration("H2");
|
||||
G4MolecularConfiguration* H3O =
|
||||
G4MoleculeTable::Instance()->GetConfiguration("H3Op");
|
||||
G4MolecularConfiguration* H =
|
||||
G4MoleculeTable::Instance()->GetConfiguration("H");
|
||||
G4MolecularConfiguration* O =
|
||||
G4MoleculeTable::Instance()->GetConfiguration("Oxy");
|
||||
|
||||
//-------------------------------------
|
||||
//Define the decay channels
|
||||
G4MoleculeDefinition* water = G4H2O::Definition();
|
||||
G4MolecularDissociationChannel* decCh1;
|
||||
G4MolecularDissociationChannel* decCh2;
|
||||
G4MolecularDissociationChannel* decCh3;
|
||||
G4MolecularDissociationChannel* decCh4;
|
||||
G4MolecularDissociationChannel* decCh5;
|
||||
|
||||
G4ElectronOccupancy* occ = new G4ElectronOccupancy(
|
||||
*(water->GetGroundStateElectronOccupancy()));
|
||||
|
||||
//////////////////////////////////////////////////////////
|
||||
// EXCITATIONS //
|
||||
//////////////////////////////////////////////////////////
|
||||
G4DNAWaterExcitationStructure waterExcitation;
|
||||
//--------------------------------------------------------
|
||||
//---------------Excitation on the fifth layer------------
|
||||
|
||||
decCh1 = new G4MolecularDissociationChannel("A^1B_1_Relaxation");
|
||||
decCh2 = new G4MolecularDissociationChannel("A^1B_1_DissociativeDecay");
|
||||
//Decay 1 : OH + H
|
||||
decCh1->SetEnergy(waterExcitation.ExcitationEnergy(0));
|
||||
decCh1->SetProbability(0.35);
|
||||
decCh1->SetDisplacementType(G4DNAWaterDissociationDisplacer::NoDisplacement);
|
||||
|
||||
decCh2->AddProduct(OH);
|
||||
decCh2->AddProduct(H);
|
||||
decCh2->SetProbability(0.65);
|
||||
decCh2->SetDisplacementType(
|
||||
G4DNAWaterDissociationDisplacer::A1B1_DissociationDecay);
|
||||
|
||||
occ->RemoveElectron(4, 1); // this is the transition form ground state to
|
||||
occ->AddElectron(5, 1); // the first unoccupied orbital: A^1B_1
|
||||
|
||||
water->NewConfigurationWithElectronOccupancy("A^1B_1", *occ);
|
||||
water->AddDecayChannel("A^1B_1", decCh1);
|
||||
water->AddDecayChannel("A^1B_1", decCh2);
|
||||
|
||||
//--------------------------------------------------------
|
||||
//---------------Excitation on the fourth layer-----------
|
||||
decCh1 = new G4MolecularDissociationChannel("B^1A_1_Relaxation_Channel");
|
||||
decCh2 = new G4MolecularDissociationChannel("B^1A_1_DissociativeDecay");
|
||||
decCh3 = new G4MolecularDissociationChannel("B^1A_1_AutoIonisation_Channel");
|
||||
decCh4 = new G4MolecularDissociationChannel("A^1B_1_DissociativeDecay");
|
||||
decCh5 = new G4MolecularDissociationChannel("B^1A_1_DissociativeDecay2");
|
||||
|
||||
|
||||
//Decay 1 : energy
|
||||
decCh1->SetEnergy(waterExcitation.ExcitationEnergy(1));
|
||||
decCh1->SetProbability(0.175);
|
||||
|
||||
//Decay 2 : 2OH + H_2
|
||||
decCh2->AddProduct(H2);
|
||||
decCh2->AddProduct(OH);
|
||||
decCh2->AddProduct(OH);
|
||||
decCh2->SetProbability(0.0325);
|
||||
decCh2->SetDisplacementType(
|
||||
G4DNAWaterDissociationDisplacer::B1A1_DissociationDecay);
|
||||
|
||||
//Decay 3 : OH + H_3Op + e_aq
|
||||
decCh3->AddProduct(OH);
|
||||
decCh3->AddProduct(H3O);
|
||||
decCh3->AddProduct(e_aq);
|
||||
decCh3->SetProbability(0.50);
|
||||
decCh3->SetDisplacementType(G4DNAWaterDissociationDisplacer::AutoIonisation);
|
||||
|
||||
//Decay 4 : H + OH
|
||||
decCh4->AddProduct(H);
|
||||
decCh4->AddProduct(OH);
|
||||
decCh4->SetProbability(0.2535);
|
||||
decCh4->SetDisplacementType(G4DNAWaterDissociationDisplacer::A1B1_DissociationDecay);
|
||||
|
||||
//Decay 5 : 2H + O
|
||||
decCh5->AddProduct(O);
|
||||
decCh5->AddProduct(H);
|
||||
decCh5->AddProduct(H);
|
||||
decCh5->SetProbability(0.039);
|
||||
decCh5->SetDisplacementType(G4DNAWaterDissociationDisplacer::B1A1_DissociationDecay2);
|
||||
|
||||
*occ = *(water->GetGroundStateElectronOccupancy());
|
||||
occ->RemoveElectron(3); // this is the transition form ground state to
|
||||
occ->AddElectron(5, 1); // the first unoccupied orbital: B^1A_1
|
||||
|
||||
water->NewConfigurationWithElectronOccupancy("B^1A_1", *occ);
|
||||
water->AddDecayChannel("B^1A_1", decCh1);
|
||||
water->AddDecayChannel("B^1A_1", decCh2);
|
||||
water->AddDecayChannel("B^1A_1", decCh3);
|
||||
water->AddDecayChannel("B^1A_1", decCh4);
|
||||
water->AddDecayChannel("B^1A_1", decCh5);
|
||||
|
||||
//-------------------------------------------------------
|
||||
//-------------------Excitation of 3rd layer-----------------
|
||||
decCh1 = new G4MolecularDissociationChannel(
|
||||
"Excitation3rdLayer_AutoIonisation_Channel");
|
||||
decCh2 = new G4MolecularDissociationChannel(
|
||||
"Excitation3rdLayer_Relaxation_Channel");
|
||||
|
||||
//Decay channel 1 : : OH + H_3Op + e_aq
|
||||
decCh1->AddProduct(OH);
|
||||
decCh1->AddProduct(H3O);
|
||||
decCh1->AddProduct(e_aq);
|
||||
|
||||
decCh1->SetProbability(0.5);
|
||||
decCh1->SetDisplacementType(G4DNAWaterDissociationDisplacer::AutoIonisation);
|
||||
|
||||
//Decay channel 2 : energy
|
||||
decCh2->SetEnergy(waterExcitation.ExcitationEnergy(2));
|
||||
decCh2->SetProbability(0.5);
|
||||
|
||||
//Electronic configuration of this decay
|
||||
*occ = *(water->GetGroundStateElectronOccupancy());
|
||||
occ->RemoveElectron(2, 1);
|
||||
occ->AddElectron(5, 1);
|
||||
|
||||
//Configure the water molecule
|
||||
water->NewConfigurationWithElectronOccupancy("Excitation3rdLayer", *occ);
|
||||
water->AddDecayChannel("Excitation3rdLayer", decCh1);
|
||||
water->AddDecayChannel("Excitation3rdLayer", decCh2);
|
||||
|
||||
//-------------------------------------------------------
|
||||
//-------------------Excitation of 2nd layer-----------------
|
||||
decCh1 = new G4MolecularDissociationChannel(
|
||||
"Excitation2ndLayer_AutoIonisation_Channel");
|
||||
decCh2 = new G4MolecularDissociationChannel(
|
||||
"Excitation2ndLayer_Relaxation_Channel");
|
||||
|
||||
//Decay Channel 1 : : OH + H_3Op + e_aq
|
||||
decCh1->AddProduct(OH);
|
||||
decCh1->AddProduct(H3O);
|
||||
decCh1->AddProduct(e_aq);
|
||||
|
||||
decCh1->SetProbability(0.5);
|
||||
decCh1->SetDisplacementType(G4DNAWaterDissociationDisplacer::AutoIonisation);
|
||||
|
||||
//Decay channel 2 : energy
|
||||
decCh2->SetEnergy(waterExcitation.ExcitationEnergy(3));
|
||||
decCh2->SetProbability(0.5);
|
||||
|
||||
*occ = *(water->GetGroundStateElectronOccupancy());
|
||||
occ->RemoveElectron(1, 1);
|
||||
occ->AddElectron(5, 1);
|
||||
|
||||
water->NewConfigurationWithElectronOccupancy("Excitation2ndLayer", *occ);
|
||||
water->AddDecayChannel("Excitation2ndLayer", decCh1);
|
||||
water->AddDecayChannel("Excitation2ndLayer", decCh2);
|
||||
|
||||
//-------------------------------------------------------
|
||||
//-------------------Excitation of 1st layer-----------------
|
||||
decCh1 = new G4MolecularDissociationChannel(
|
||||
"Excitation1stLayer_AutoIonisation_Channel");
|
||||
decCh2 = new G4MolecularDissociationChannel(
|
||||
"Excitation1stLayer_Relaxation_Channel");
|
||||
|
||||
*occ = *(water->GetGroundStateElectronOccupancy());
|
||||
occ->RemoveElectron(0, 1);
|
||||
occ->AddElectron(5, 1);
|
||||
|
||||
//Decay Channel 1 : : OH + H_3Op + e_aq
|
||||
decCh1->AddProduct(OH);
|
||||
decCh1->AddProduct(H3O);
|
||||
decCh1->AddProduct(e_aq);
|
||||
decCh1->SetProbability(0.5);
|
||||
decCh1->SetDisplacementType(G4DNAWaterDissociationDisplacer::AutoIonisation);
|
||||
|
||||
//Decay channel 2 : energy
|
||||
decCh2->SetEnergy(waterExcitation.ExcitationEnergy(4));
|
||||
decCh2->SetProbability(0.5);
|
||||
|
||||
water->NewConfigurationWithElectronOccupancy("Excitation1stLayer", *occ);
|
||||
water->AddDecayChannel("Excitation1stLayer", decCh1);
|
||||
water->AddDecayChannel("Excitation1stLayer", decCh2);
|
||||
|
||||
/////////////////////////////////////////////////////////
|
||||
// IONISATION //
|
||||
/////////////////////////////////////////////////////////
|
||||
//--------------------------------------------------------
|
||||
//------------------- Ionisation -------------------------
|
||||
|
||||
decCh1 = new G4MolecularDissociationChannel("Ionisation_Channel");
|
||||
|
||||
//Decay Channel 1 : : OH + H_3Op
|
||||
decCh1->AddProduct(H3O);
|
||||
decCh1->AddProduct(OH);
|
||||
decCh1->SetProbability(1);
|
||||
decCh1->SetDisplacementType(
|
||||
G4DNAWaterDissociationDisplacer::Ionisation_DissociationDecay);
|
||||
|
||||
*occ = *(water->GetGroundStateElectronOccupancy());
|
||||
occ->RemoveElectron(4, 1);
|
||||
// this is a ionized h2O with a hole in its last orbital
|
||||
water->NewConfigurationWithElectronOccupancy("Ionisation5", *occ);
|
||||
water->AddDecayChannel("Ionisation5",
|
||||
decCh1);
|
||||
|
||||
*occ = *(water->GetGroundStateElectronOccupancy());
|
||||
occ->RemoveElectron(3, 1);
|
||||
water->NewConfigurationWithElectronOccupancy("Ionisation4", *occ);
|
||||
water->AddDecayChannel("Ionisation4",
|
||||
new G4MolecularDissociationChannel(*decCh1));
|
||||
|
||||
*occ = *(water->GetGroundStateElectronOccupancy());
|
||||
occ->RemoveElectron(2, 1);
|
||||
water->NewConfigurationWithElectronOccupancy("Ionisation3", *occ);
|
||||
water->AddDecayChannel("Ionisation3",
|
||||
new G4MolecularDissociationChannel(*decCh1));
|
||||
|
||||
*occ = *(water->GetGroundStateElectronOccupancy());
|
||||
occ->RemoveElectron(1, 1);
|
||||
water->NewConfigurationWithElectronOccupancy("Ionisation2", *occ);
|
||||
water->AddDecayChannel("Ionisation2",
|
||||
new G4MolecularDissociationChannel(*decCh1));
|
||||
|
||||
*occ = *(water->GetGroundStateElectronOccupancy());
|
||||
occ->RemoveElectron(0, 1);
|
||||
water->NewConfigurationWithElectronOccupancy("Ionisation1", *occ);
|
||||
water->AddDecayChannel("Ionisation1",
|
||||
new G4MolecularDissociationChannel(*decCh1));
|
||||
|
||||
//////////////////////////////////////////////////////////
|
||||
// Dissociative Attachment //
|
||||
//////////////////////////////////////////////////////////
|
||||
decCh1 = new G4MolecularDissociationChannel("DissociativeAttachment_ch1");
|
||||
|
||||
//Decay 1 : OHm + H
|
||||
decCh1->AddProduct(H2);
|
||||
decCh1->AddProduct(OHm);
|
||||
decCh1->AddProduct(OH);
|
||||
decCh1->SetProbability(1);
|
||||
decCh1->SetDisplacementType(G4DNAWaterDissociationDisplacer::
|
||||
DissociativeAttachment);
|
||||
|
||||
*occ = *(water->GetGroundStateElectronOccupancy());
|
||||
occ->AddElectron(5,1); // H_2O^-
|
||||
|
||||
water->NewConfigurationWithElectronOccupancy("DissociativeAttachment_ch1", *occ);
|
||||
water->AddDecayChannel("DissociativeAttachment_ch1", decCh1);
|
||||
|
||||
//////////////////////////////////////////////////////////
|
||||
// Electron-hole recombination //
|
||||
//////////////////////////////////////////////////////////
|
||||
decCh1 = new G4MolecularDissociationChannel("H2Ovib_DissociationDecay1");
|
||||
decCh2 = new G4MolecularDissociationChannel("H2Ovib_DissociationDecay2");
|
||||
decCh3 = new G4MolecularDissociationChannel("H2Ovib_DissociationDecay3");
|
||||
decCh4 = new G4MolecularDissociationChannel("H2Ovib_DissociationDecay4");
|
||||
|
||||
//Decay 1 : 2OH + H_2
|
||||
decCh1->AddProduct(H2);
|
||||
decCh1->AddProduct(OH);
|
||||
decCh1->AddProduct(OH);
|
||||
decCh1->SetProbability(0.1365);
|
||||
decCh1->SetDisplacementType(G4DNAWaterDissociationDisplacer::
|
||||
B1A1_DissociationDecay);
|
||||
|
||||
//Decay 2 : OH + H
|
||||
decCh2->AddProduct(OH);
|
||||
decCh2->AddProduct(H);
|
||||
decCh2->SetProbability(0.3575);
|
||||
decCh2->SetDisplacementType(G4DNAWaterDissociationDisplacer::
|
||||
A1B1_DissociationDecay);
|
||||
|
||||
//Decay 3 : 2H + O(3p)
|
||||
decCh3->AddProduct(O);
|
||||
decCh3->AddProduct(H);
|
||||
decCh3->AddProduct(H);
|
||||
decCh3->SetProbability(0.156);
|
||||
decCh3->SetDisplacementType(G4DNAWaterDissociationDisplacer::
|
||||
B1A1_DissociationDecay2);
|
||||
|
||||
//Decay 4 : relaxation
|
||||
decCh4->SetProbability(0.35);
|
||||
|
||||
const auto pH2Ovib = G4H2O::Definition()->NewConfiguration("H2Ovib");
|
||||
assert(pH2Ovib != nullptr);
|
||||
|
||||
water->AddDecayChannel(pH2Ovib, decCh1);
|
||||
water->AddDecayChannel(pH2Ovib, decCh2);
|
||||
water->AddDecayChannel(pH2Ovib, decCh3);
|
||||
water->AddDecayChannel(pH2Ovib, decCh4);
|
||||
|
||||
delete occ;
|
||||
G4ChemDissociationChannels_option1::ConstructDissociationChannels();
|
||||
}
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
@@ -67,6 +67,7 @@
|
||||
#include "G4EmProcessSubType.hh"
|
||||
#include "G4PhysicsListHelper.hh"
|
||||
#include "G4EmParticleList.hh"
|
||||
#include "G4EmUtility.hh"
|
||||
|
||||
#include "G4MicroElecElastic.hh"
|
||||
#include "G4MicroElecElasticModel.hh"
|
||||
@@ -88,6 +89,7 @@
|
||||
#include "G4ionIonisation.hh"
|
||||
#include "G4KleinNishinaModel.hh"
|
||||
|
||||
#include "G4GammaGeneralProcess.hh"
|
||||
#include "G4CoulombScattering.hh"
|
||||
#include "G4eCoulombScatteringModel.hh"
|
||||
#include "G4WentzelVIModel.hh"
|
||||
@@ -149,7 +151,7 @@ void G4EmModelActivator::ActivateEmOptions()
|
||||
const std::vector<G4String>& regnamesPhys = theParameters->RegionsPhysics();
|
||||
std::size_t nreg = regnamesPhys.size();
|
||||
if(0 == nreg) { return; }
|
||||
G4int verbose = theParameters->Verbose() - 1;
|
||||
G4int verbose = theParameters->Verbose() - 1;
|
||||
if(verbose > 0) {
|
||||
G4cout << "### G4EmModelActivator::ActivateEmOptions for " << nreg << " regions"
|
||||
<< G4endl;
|
||||
@@ -165,7 +167,8 @@ void G4EmModelActivator::ActivateEmOptions()
|
||||
G4EmConfigurator* em_config = man->EmConfigurator();
|
||||
G4VAtomDeexcitation* adeexc = man->AtomDeexcitation();
|
||||
G4ParticleTable* table = G4ParticleTable::GetParticleTable();
|
||||
G4VEmModel* mod;
|
||||
G4VEmModel* mod = nullptr;
|
||||
G4VEmProcess* proc = nullptr;
|
||||
|
||||
// high energy limit for low-energy e+- model of msc
|
||||
G4double mscEnergyLimit = theParameters->MscEnergyLimit();
|
||||
@@ -177,12 +180,13 @@ void G4EmModelActivator::ActivateEmOptions()
|
||||
G4double highEnergy = theParameters->MaxKinEnergy();
|
||||
|
||||
for(std::size_t i=0; i<nreg; ++i) {
|
||||
G4String reg = regnamesPhys[i];
|
||||
const G4String reg = regnamesPhys[i];
|
||||
auto region = G4EmUtility::FindRegion(reg);
|
||||
if(verbose > 0) {
|
||||
G4cout << i << ". region <" << reg << ">; type <" << typesPhys[i] << "> "
|
||||
<< G4endl;
|
||||
G4cout << i << ". region <" << reg << ">; physics type <"
|
||||
<< typesPhys[i] << "> region ptr: " << region << G4endl;
|
||||
}
|
||||
|
||||
|
||||
if(baseName == typesPhys[i]) { continue; }
|
||||
|
||||
if("G4EmStandard" == typesPhys[i]) {
|
||||
@@ -205,35 +209,30 @@ void G4EmModelActivator::ActivateEmOptions()
|
||||
G4UrbanMscModel* msc = new G4UrbanMscModel();
|
||||
SetMscParameters(elec, msc, typesPhys[i]);
|
||||
em_config->SetExtraEmModel("e-", "msc", msc, reg);
|
||||
FindOrAddProcess(elec, "CoulombScat");
|
||||
em_config->SetExtraEmModel("e-", "CoulombScat", dummy, reg);
|
||||
proc = FindOrAddProcess(elec, "CoulombScat");
|
||||
proc->AddEmModel(-1, dummy, region);
|
||||
|
||||
msc = new G4UrbanMscModel();
|
||||
SetMscParameters(posi, msc, typesPhys[i]);
|
||||
em_config->SetExtraEmModel("e+", "msc", msc, reg);
|
||||
FindOrAddProcess(posi, "CoulombScat");
|
||||
em_config->SetExtraEmModel("e+", "CoulombScat", dummy, reg);
|
||||
proc = FindOrAddProcess(posi, "CoulombScat");
|
||||
proc->AddEmModel(-1, dummy, region);
|
||||
|
||||
msc = new G4UrbanMscModel();
|
||||
SetMscParameters(prot, msc, typesPhys[i]);
|
||||
em_config->SetExtraEmModel("proton", "msc", msc, reg);
|
||||
FindOrAddProcess(prot, "CoulombScat");
|
||||
em_config->SetExtraEmModel("proton", "CoulombScat", dummy, reg);
|
||||
proc = FindOrAddProcess(prot, "CoulombScat");
|
||||
proc->AddEmModel(-1, dummy, region);
|
||||
|
||||
theParameters->SetNumberOfBinsPerDecade(20);
|
||||
if(G4Threading::IsMasterThread()) {
|
||||
theParameters->SetDeexActiveRegion(reg, true, false, false);
|
||||
}
|
||||
theParameters->DefineRegParamForDeex(adeexc);
|
||||
FindOrAddProcess(phot, "Rayl");
|
||||
mod = new G4LivermoreRayleighModel();
|
||||
em_config->SetExtraEmModel("gamma", "Rayl", mod, reg);
|
||||
FindOrAddProcess(phot, "phot");
|
||||
mod = new G4LivermorePhotoElectricModel();
|
||||
em_config->SetExtraEmModel("gamma", "phot", mod, reg);
|
||||
FindOrAddProcess(phot, "compt");
|
||||
mod = new G4KleinNishinaModel();
|
||||
em_config->SetExtraEmModel("gamma", "compt", mod, reg);
|
||||
proc = FindOrAddProcess(phot, "Rayl");
|
||||
proc->AddEmModel(-1, new G4LivermoreRayleighModel(), region);
|
||||
proc = FindOrAddProcess(phot, "compt");
|
||||
proc->AddEmModel(-1, new G4KleinNishinaModel(), region);
|
||||
|
||||
} else if("G4EmStandard_opt4" == typesPhys[i]) {
|
||||
G4VMscModel* msc = new G4GoudsmitSaundersonMscModel();
|
||||
@@ -249,20 +248,15 @@ void G4EmModelActivator::ActivateEmOptions()
|
||||
}
|
||||
theParameters->DefineRegParamForDeex(adeexc);
|
||||
|
||||
FindOrAddProcess(phot, "Rayl");
|
||||
mod = new G4LivermoreRayleighModel();
|
||||
em_config->SetExtraEmModel("gamma", "Rayl", mod, reg);
|
||||
FindOrAddProcess(phot, "phot");
|
||||
mod = new G4LivermorePhotoElectricModel();
|
||||
FindOrAddProcess(phot, "compt");
|
||||
mod = new G4KleinNishinaModel();
|
||||
em_config->SetExtraEmModel("gamma", "compt", mod, reg);
|
||||
proc = FindOrAddProcess(phot, "Rayl");
|
||||
proc->AddEmModel(-1, new G4LivermoreRayleighModel(), region);
|
||||
proc = FindOrAddProcess(phot, "compt");
|
||||
proc->AddEmModel(-1, new G4KleinNishinaModel(), region);
|
||||
mod = new G4LowEPComptonModel();
|
||||
mod->SetHighEnergyLimit(20*MeV);
|
||||
em_config->SetExtraEmModel("gamma", "compt", mod, reg);
|
||||
FindOrAddProcess(phot, "conv");
|
||||
mod = new G4BetheHeitler5DModel();
|
||||
em_config->SetExtraEmModel("gamma", "conv", mod, reg);
|
||||
proc->AddEmModel(-2, mod, region);
|
||||
proc = FindOrAddProcess(phot, "conv");
|
||||
proc->AddEmModel(-1, new G4BetheHeitler5DModel(), region);
|
||||
|
||||
} else if("G4EmStandardGS" == typesPhys[i]) {
|
||||
G4GoudsmitSaundersonMscModel* msc = new G4GoudsmitSaundersonMscModel();
|
||||
@@ -285,17 +279,31 @@ void G4EmModelActivator::ActivateEmOptions()
|
||||
}
|
||||
theParameters->DefineRegParamForDeex(adeexc);
|
||||
|
||||
} else if("G4EmStandardSS" == typesPhys[i] &&
|
||||
baseName != "G4EmStandard_opt3") {
|
||||
} else if("G4EmStandardSS" == typesPhys[i]) {
|
||||
G4EmParticleList emList;
|
||||
for(const auto& particleName : emList.PartNames()) {
|
||||
for(const auto& particleName : emList.EmChargedPartNames()) {
|
||||
G4ParticleDefinition* particle = table->FindParticle(particleName);
|
||||
if(particle && 0.0 != particle->GetPDGCharge()) {
|
||||
FindOrAddProcess(particle, "CoulombScat");
|
||||
G4eCoulombScatteringModel* sc = new G4eCoulombScatteringModel();
|
||||
sc->SetPolarAngleLimit(0.0);
|
||||
sc->SetLocked(true);
|
||||
em_config->SetExtraEmModel(particleName, "CoulombScat", sc, reg);
|
||||
if(nullptr != particle && 0.0 != particle->GetPDGCharge()) {
|
||||
proc = FindOrAddProcess(particle, "CoulombScat");
|
||||
if(nullptr != proc) {
|
||||
proc->AddEmModel(-1, new G4DummyModel(), region);
|
||||
}
|
||||
auto pm = particle->GetProcessManager();
|
||||
proc = new G4CoulombScattering("SingleCoulombScat", false);
|
||||
pm->AddDiscreteProcess(proc);
|
||||
proc->SetEmModel(new G4DummyModel());
|
||||
G4VEmModel* scmod = nullptr;
|
||||
if(particle->GetPDGMass() > CLHEP::GeV ||
|
||||
particle->GetParticleType() == "nucleus") {
|
||||
scmod = new G4IonCoulombScatteringModel();
|
||||
} else {
|
||||
scmod = new G4eCoulombScatteringModel(false);
|
||||
}
|
||||
scmod->SetPolarAngleLimit(0.0);
|
||||
scmod->SetLocked(true);
|
||||
proc->AddEmModel(-1, scmod, region);
|
||||
|
||||
// multiple scattering should be disabled
|
||||
if(particleName == "mu+" || particleName == "mu-") {
|
||||
em_config->SetExtraEmModel(particleName, "muMsc",
|
||||
new G4DummyModel(), reg);
|
||||
@@ -753,24 +761,31 @@ void G4EmModelActivator::SetMscParameters(const G4ParticleDefinition* part,
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
void G4EmModelActivator::FindOrAddProcess(const G4ParticleDefinition* part,
|
||||
const G4String& name)
|
||||
G4VEmProcess*
|
||||
G4EmModelActivator::FindOrAddProcess(const G4ParticleDefinition* part,
|
||||
const G4String& name)
|
||||
{
|
||||
G4ProcessManager* pm = part->GetProcessManager();
|
||||
G4ProcessVector* pv = pm->GetProcessList();
|
||||
G4int nproc = pm->GetProcessListLength();
|
||||
for(G4int i = 0; i<nproc; ++i) {
|
||||
if(((*pv)[i])->GetProcessName() == name) { return; }
|
||||
G4VEmProcess* proc = nullptr;
|
||||
auto pm = part->GetProcessManager();
|
||||
auto emproc = pm->GetProcessList();
|
||||
G4int n = (G4int)emproc->size();
|
||||
for(auto i=0; i<n; ++i) {
|
||||
auto ptr = (*emproc)[i];
|
||||
if(part->GetPDGEncoding() == 22 &&
|
||||
ptr->GetProcessSubType() == fGammaGeneralProcess) {
|
||||
proc = (static_cast<G4GammaGeneralProcess*>(ptr))->GetEmProcess(name);
|
||||
} else if(ptr->GetProcessName() == name) {
|
||||
proc = dynamic_cast<G4VEmProcess*>(ptr);
|
||||
}
|
||||
if(nullptr != proc) { return proc; }
|
||||
}
|
||||
if(name == "CoulombScat") {
|
||||
G4CoulombScattering* cs = new G4CoulombScattering();
|
||||
cs->SetEmModel(new G4DummyModel());
|
||||
pm->AddDiscreteProcess(cs);
|
||||
} else if(name == "Rayl") {
|
||||
if(name == "Rayl") {
|
||||
G4RayleighScattering* rs = new G4RayleighScattering();
|
||||
rs->SetEmModel(new G4DummyModel());
|
||||
pm->AddDiscreteProcess(rs);
|
||||
return rs;
|
||||
}
|
||||
return proc;
|
||||
}
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
@@ -53,13 +53,22 @@ G4EmParticleList::G4EmParticleList()
|
||||
"Bc-", "omega_b-","anti_omega_b-", "sigma_b+", "sigma_b-",
|
||||
"anti_sigma_b+", "anti_sigma_b-", "xi_b-", "anti_xi_b-"
|
||||
};
|
||||
}
|
||||
|
||||
G4EmParticleList::~G4EmParticleList()
|
||||
{}
|
||||
cNames =
|
||||
{
|
||||
"e-", "e+", "mu+", "mu-", "pi+",
|
||||
"pi-", "kaon+", "kaon-", "proton", "anti_proton",
|
||||
"alpha", "He3", "GenericIon", "deuteron", "triton"
|
||||
};
|
||||
}
|
||||
|
||||
const std::vector<G4String>& G4EmParticleList::PartNames() const
|
||||
{
|
||||
return pNames;
|
||||
}
|
||||
|
||||
const std::vector<G4String>& G4EmParticleList::EmChargedPartNames() const
|
||||
{
|
||||
return cNames;
|
||||
}
|
||||
|
||||
|
||||
@@ -182,11 +182,11 @@ void G4EmStandardPhysicsSS::ConstructProcess()
|
||||
// e-
|
||||
particle = G4Electron::Electron();
|
||||
|
||||
G4CoulombScattering* ss = new G4CoulombScattering();
|
||||
G4CoulombScattering* ss = new G4CoulombScattering(false);
|
||||
if(param->UseMottCorrection()) {
|
||||
ss->SetEmModel(new G4eDPWACoulombScatteringModel());
|
||||
} else {
|
||||
ss->SetEmModel(new G4eCoulombScatteringModel());
|
||||
ss->SetEmModel(new G4eCoulombScatteringModel(false));
|
||||
}
|
||||
ph->RegisterProcess(new G4eIonisation(), particle);
|
||||
ph->RegisterProcess(new G4eBremsstrahlung(), particle);
|
||||
@@ -198,11 +198,11 @@ void G4EmStandardPhysicsSS::ConstructProcess()
|
||||
// e+
|
||||
particle = G4Positron::Positron();
|
||||
|
||||
ss = new G4CoulombScattering();
|
||||
ss = new G4CoulombScattering(false);
|
||||
if(param->UseMottCorrection()) {
|
||||
ss->SetEmModel(new G4eDPWACoulombScatteringModel());
|
||||
} else {
|
||||
ss->SetEmModel(new G4eCoulombScatteringModel());
|
||||
ss->SetEmModel(new G4eCoulombScatteringModel(false));
|
||||
}
|
||||
ph->RegisterProcess(new G4eIonisation(), particle);
|
||||
ph->RegisterProcess(new G4eBremsstrahlung(), particle);
|
||||
@@ -217,7 +217,8 @@ void G4EmStandardPhysicsSS::ConstructProcess()
|
||||
ionIoni->SetFluctModel(fluc);
|
||||
ionIoni->SetEmModel(new G4LindhardSorensenIonModel());
|
||||
ph->RegisterProcess(ionIoni, particle);
|
||||
ph->RegisterProcess(new G4CoulombScattering(), particle);
|
||||
ss = new G4CoulombScattering(false);
|
||||
ph->RegisterProcess(ss, particle);
|
||||
|
||||
// muons, hadrons, ions
|
||||
G4EmBuilder::ConstructChargedSS(hmsc);
|
||||
|
||||
@@ -1,96 +0,0 @@
|
||||
# ---------------------------------------------------------------------------
|
||||
# GNUmakefile for physics_lists/constructors/factory library.
|
||||
# Gunter Folger 10-Jan-2012.
|
||||
# ---------------------------------------------------------------------------
|
||||
|
||||
name := G4phys_ctor_factory
|
||||
|
||||
ifndef G4INSTALL
|
||||
G4INSTALL = ../../../..
|
||||
endif
|
||||
|
||||
include $(G4INSTALL)/config/architecture.gmk
|
||||
|
||||
|
||||
CPPFLAGS += -I$(G4BASE)/global/management/include \
|
||||
-I$(G4BASE)/global/HEPRandom/include \
|
||||
-I$(G4BASE)/global/HEPNumerics/include \
|
||||
-I$(G4BASE)/global/HEPGeometry/include \
|
||||
-I$(G4BASE)/geometry/biasing/include \
|
||||
-I$(G4BASE)/geometry/volumes/include \
|
||||
-I$(G4BASE)/geometry/management/include \
|
||||
-I$(G4BASE)/geometry/magneticfield/include \
|
||||
-I$(G4BASE)/geometry/navigation/include \
|
||||
-I$(G4BASE)/intercoms/include \
|
||||
-I$(G4BASE)/track/include \
|
||||
-I$(G4BASE)/particles/shortlived/include \
|
||||
-I$(G4BASE)/particles/management/include \
|
||||
-I$(G4BASE)/particles/leptons/include \
|
||||
-I$(G4BASE)/particles/bosons/include \
|
||||
-I$(G4BASE)/particles/hadrons/mesons/include \
|
||||
-I$(G4BASE)/particles/hadrons/barions/include \
|
||||
-I$(G4BASE)/particles/hadrons/ions/include \
|
||||
-I$(G4BASE)/run/include \
|
||||
-I$(G4BASE)/physics_lists/builders/include \
|
||||
-I$(G4BASE)/physics_lists/constructors/decay/include \
|
||||
-I$(G4BASE)/physics_lists/constructors/electromagnetic/include \
|
||||
-I$(G4BASE)/physics_lists/constructors/gamma_lepto_nuclear/include \
|
||||
-I$(G4BASE)/physics_lists/constructors/hadron_elastic/include \
|
||||
-I$(G4BASE)/physics_lists/constructors/hadron_inelastic/include \
|
||||
-I$(G4BASE)/physics_lists/constructors/limiters/include \
|
||||
-I$(G4BASE)/physics_lists/constructors/ions/include \
|
||||
-I$(G4BASE)/physics_lists/constructors/stopping/include \
|
||||
-I$(G4BASE)/physics_lists/util/include \
|
||||
-I$(G4BASE)/processes/biasing/importance/include \
|
||||
-I$(G4BASE)/processes/management/include \
|
||||
-I$(G4BASE)/processes/transportation/include \
|
||||
-I$(G4BASE)/processes/decay/include \
|
||||
-I$(G4BASE)/processes/cuts/include \
|
||||
-I$(G4BASE)/processes/optical/include \
|
||||
-I$(G4BASE)/processes/electromagnetic/highenergy/include \
|
||||
-I$(G4BASE)/processes/electromagnetic/standard/include \
|
||||
-I$(G4BASE)/processes/electromagnetic/muons/include \
|
||||
-I$(G4BASE)/processes/electromagnetic/utils/include \
|
||||
-I$(G4BASE)/processes/electromagnetic/xrays/include \
|
||||
-I$(G4BASE)/processes/electromagnetic/lowenergy/include \
|
||||
-I$(G4BASE)/processes/electromagnetic/dna/management/include \
|
||||
-I$(G4BASE)/processes/electromagnetic/dna/molecules/management/include \
|
||||
-I$(G4BASE)/processes/electromagnetic/dna/molecules/types/include \
|
||||
-I$(G4BASE)/processes/electromagnetic/dna/models/include \
|
||||
-I$(G4BASE)/processes/electromagnetic/dna/processes/include \
|
||||
-I$(G4BASE)/processes/electromagnetic/dna/utils/include \
|
||||
-I$(G4BASE)/processes/hadronic/cross_sections/include \
|
||||
-I$(G4BASE)/processes/hadronic/stopping/include \
|
||||
-I$(G4BASE)/processes/hadronic/management/include \
|
||||
-I$(G4BASE)/processes/hadronic/processes/include \
|
||||
-I$(G4BASE)/processes/hadronic/util/include \
|
||||
-I$(G4BASE)/processes/hadronic/models/binary_cascade/include \
|
||||
-I$(G4BASE)/processes/hadronic/models/cascade/cascade/include \
|
||||
-I$(G4BASE)/processes/hadronic/models/qmd/include \
|
||||
-I$(G4BASE)/processes/hadronic/models/coherent_elastic/include \
|
||||
-I$(G4BASE)/processes/hadronic/models/de_excitation/evaporation/include \
|
||||
-I$(G4BASE)/processes/hadronic/models/de_excitation/fermi_breakup/include \
|
||||
-I$(G4BASE)/processes/hadronic/models/de_excitation/handler/include \
|
||||
-I$(G4BASE)/processes/hadronic/models/de_excitation/management/include \
|
||||
-I$(G4BASE)/processes/hadronic/models/de_excitation/multifragmentation/include \
|
||||
-I$(G4BASE)/processes/hadronic/models/de_excitation/photon_evaporation/include \
|
||||
-I$(G4BASE)/processes/hadronic/models/de_excitation/util/include \
|
||||
-I$(G4BASE)/processes/hadronic/models/im_r_matrix/include \
|
||||
-I$(G4BASE)/processes/hadronic/models/inclxx/utils/include \
|
||||
-I$(G4BASE)/processes/hadronic/models/inclxx/incl_physics/include \
|
||||
-I$(G4BASE)/processes/hadronic/models/inclxx/interface/include \
|
||||
-I$(G4BASE)/processes/hadronic/models/lend/include \
|
||||
-I$(G4BASE)/processes/hadronic/models/lepto_nuclear/include \
|
||||
-I$(G4BASE)/processes/hadronic/models/particle_hp/include \
|
||||
-I$(G4BASE)/processes/hadronic/models/parton_string/diffraction/include \
|
||||
-I$(G4BASE)/processes/hadronic/models/parton_string/hadronization/include \
|
||||
-I$(G4BASE)/processes/hadronic/models/parton_string/management/include \
|
||||
-I$(G4BASE)/processes/hadronic/models/parton_string/qgsm/include \
|
||||
-I$(G4BASE)/processes/hadronic/models/photolepton_hadron/muon_nuclear/include \
|
||||
-I$(G4BASE)/processes/hadronic/models/pre_equilibrium/exciton_model/include \
|
||||
-I$(G4BASE)/processes/hadronic/models/radioactive_decay/include \
|
||||
-I$(G4BASE)/processes/hadronic/models/theo_high_energy/include \
|
||||
-I$(G4BASE)/processes/hadronic/util/include \
|
||||
-I$(G4BASE)/materials/include
|
||||
|
||||
include $(G4INSTALL)/config/common.gmk
|
||||
@@ -5,6 +5,9 @@ which **must** added in reverse chronological order (newest at the top). It must
|
||||
be used as a substitute for writing good git commit messages!
|
||||
|
||||
|
||||
## 2023-05-15 Alberto Ribon (phys-ctor-fact-V11-01-00)
|
||||
- Added G4StoppingPhysicsWithINCLXX in G4RegisterPhysicsConstructors .
|
||||
|
||||
## 2021-12-10 Ben Morgan (phys-ctor-fact-V11-00-00)
|
||||
- Change to new Markdown History format
|
||||
|
||||
|
||||
@@ -267,6 +267,9 @@ G4_REFERENCE_PHYSCONSTR_FACTORY(G4StepLimiterPhysics);
|
||||
//#include "G4StoppingPhysics.hh"
|
||||
G4_REFERENCE_PHYSCONSTR_FACTORY(G4StoppingPhysics);
|
||||
|
||||
//#include "G4StoppingPhysicsWithINCLXX.hh"
|
||||
G4_REFERENCE_PHYSCONSTR_FACTORY(G4StoppingPhysicsWithINCLXX);
|
||||
|
||||
//#include "G4WeightWindowBiasing.hh"
|
||||
G4_REFERENCE_PHYSCONSTR_FACTORY(G4WeightWindowBiasing);
|
||||
|
||||
|
||||
@@ -1,73 +0,0 @@
|
||||
# ---------------------------------------------------------------------------
|
||||
# GNUmakefile for physics_lists/constructors/electromagnetic library.
|
||||
# Gunter Folger 10-Jan-2012.
|
||||
# ---------------------------------------------------------------------------
|
||||
|
||||
name := G4phys_ctor_glnuclear
|
||||
|
||||
ifndef G4INSTALL
|
||||
G4INSTALL = ../../../..
|
||||
endif
|
||||
|
||||
include $(G4INSTALL)/config/architecture.gmk
|
||||
|
||||
|
||||
CPPFLAGS += -I$(G4BASE)/global/management/include \
|
||||
-I$(G4BASE)/global/HEPRandom/include \
|
||||
-I$(G4BASE)/global/HEPNumerics/include \
|
||||
-I$(G4BASE)/global/HEPGeometry/include \
|
||||
-I$(G4BASE)/geometry/volumes/include \
|
||||
-I$(G4BASE)/geometry/management/include \
|
||||
-I$(G4BASE)/geometry/magneticfield/include \
|
||||
-I$(G4BASE)/geometry/navigation/include \
|
||||
-I$(G4BASE)/intercoms/include \
|
||||
-I$(G4BASE)/materials/include \
|
||||
-I$(G4BASE)/track/include \
|
||||
-I$(G4BASE)/particles/shortlived/include \
|
||||
-I$(G4BASE)/particles/management/include \
|
||||
-I$(G4BASE)/particles/leptons/include \
|
||||
-I$(G4BASE)/particles/bosons/include \
|
||||
-I$(G4BASE)/particles/hadrons/mesons/include \
|
||||
-I$(G4BASE)/particles/hadrons/barions/include \
|
||||
-I$(G4BASE)/particles/hadrons/ions/include \
|
||||
-I$(G4BASE)/run/include \
|
||||
-I$(G4BASE)/physics_lists/builders/include \
|
||||
-I$(G4BASE)/physics_lists/constructors/electromagnetic/include \
|
||||
-I$(G4BASE)/physics_lists/constructors/factory/include \
|
||||
-I$(G4BASE)/physics_lists/util/include \
|
||||
-I$(G4BASE)/processes/management/include \
|
||||
-I$(G4BASE)/processes/transportation/include \
|
||||
-I$(G4BASE)/processes/decay/include \
|
||||
-I$(G4BASE)/processes/cuts/include \
|
||||
-I$(G4BASE)/processes/electromagnetic/highenergy/include \
|
||||
-I$(G4BASE)/processes/electromagnetic/muons/include \
|
||||
-I$(G4BASE)/processes/electromagnetic/utils/include \
|
||||
-I$(G4BASE)/processes/electromagnetic/xrays/include \
|
||||
-I$(G4BASE)/processes/optical/include \
|
||||
-I$(G4BASE)/processes/hadronic/cross_sections/include \
|
||||
-I$(G4BASE)/processes/hadronic/management/include \
|
||||
-I$(G4BASE)/processes/hadronic/models/binary_cascade/include \
|
||||
-I$(G4BASE)/processes/hadronic/models/cascade/cascade/include \
|
||||
-I$(G4BASE)/processes/hadronic/models/qmd/include \
|
||||
-I$(G4BASE)/processes/hadronic/models/coherent_elastic/include \
|
||||
-I$(G4BASE)/processes/hadronic/models/de_excitation/evaporation/include \
|
||||
-I$(G4BASE)/processes/hadronic/models/de_excitation/fermi_breakup/include \
|
||||
-I$(G4BASE)/processes/hadronic/models/de_excitation/handler/include \
|
||||
-I$(G4BASE)/processes/hadronic/models/de_excitation/management/include \
|
||||
-I$(G4BASE)/processes/hadronic/models/de_excitation/multifragmentation/include \
|
||||
-I$(G4BASE)/processes/hadronic/models/de_excitation/photon_evaporation/include \
|
||||
-I$(G4BASE)/processes/hadronic/models/de_excitation/util/include \
|
||||
-I$(G4BASE)/processes/hadronic/models/gamma_nuclear/include \
|
||||
-I$(G4BASE)/processes/hadronic/models/lend/include \
|
||||
-I$(G4BASE)/processes/hadronic/models/lepto_nuclear/include \
|
||||
-I$(G4BASE)/processes/hadronic/models/parton_string/diffraction/include \
|
||||
-I$(G4BASE)/processes/hadronic/models/parton_string/hadronization/include \
|
||||
-I$(G4BASE)/processes/hadronic/models/parton_string/management/include \
|
||||
-I$(G4BASE)/processes/hadronic/models/parton_string/qgsm/include \
|
||||
-I$(G4BASE)/processes/hadronic/models/pre_equilibrium/exciton_model/include \
|
||||
-I$(G4BASE)/processes/hadronic/models/radioactive_decay/include \
|
||||
-I$(G4BASE)/processes/hadronic/models/theo_high_energy/include \
|
||||
-I$(G4BASE)/processes/hadronic/processes/include \
|
||||
-I$(G4BASE)/processes/hadronic/util/include
|
||||
|
||||
include $(G4INSTALL)/config/common.gmk
|
||||
@@ -6,6 +6,9 @@ It must **not** be used as a substitute for writing good git commit messages!
|
||||
|
||||
-------------------------------------------------------------------------------
|
||||
|
||||
## 2023-02-12 Vladimir Grichine (phys-ctor-glnuclear-V11-01-00)
|
||||
- G4EmExtraPhysics - biasing is activated in processes, not XS
|
||||
|
||||
## 2022-11-03 Vladimir Grichine (phys-ctor-glnuclear-V11-00-07)
|
||||
- G4EmExtraPhysics - update for tau-neutrino nucleus processes
|
||||
|
||||
|
||||
@@ -377,7 +377,6 @@ void G4EmExtraPhysics::ConstructProcess()
|
||||
else
|
||||
{
|
||||
theNuEleProcess->SetBiasingFactors(fNuEleCcBias,fNuEleNcBias);
|
||||
theNuEleTotXsc->SetBiasingFactors(fNuEleCcBias,fNuEleNcBias);
|
||||
}
|
||||
theNuEleProcess->AddDataSet(theNuEleTotXsc);
|
||||
|
||||
|
||||
@@ -1,56 +0,0 @@
|
||||
# ---------------------------------------------------------------------------
|
||||
# GNUmakefile for physics_lists/constructors/electromagnetic library.
|
||||
# Gunter Folger 10-Jan-2012.
|
||||
# ---------------------------------------------------------------------------
|
||||
|
||||
name := G4phys_ctor_helastic
|
||||
|
||||
ifndef G4INSTALL
|
||||
G4INSTALL = ../../../..
|
||||
endif
|
||||
|
||||
include $(G4INSTALL)/config/architecture.gmk
|
||||
|
||||
CPPFLAGS += -DG4PROCESSES_EXPORT
|
||||
|
||||
ifdef G4LIB_BUILD_EXPAT
|
||||
CPPFLAGS += -I$(G4BASE)/externals/expat/include
|
||||
endif
|
||||
|
||||
CPPFLAGS += -I$(G4BASE)/global/management/include \
|
||||
-I$(G4BASE)/global/HEPRandom/include \
|
||||
-I$(G4BASE)/global/HEPNumerics/include \
|
||||
-I$(G4BASE)/global/HEPGeometry/include \
|
||||
-I$(G4BASE)/geometry/volumes/include \
|
||||
-I$(G4BASE)/geometry/management/include \
|
||||
-I$(G4BASE)/geometry/magneticfield/include \
|
||||
-I$(G4BASE)/geometry/navigation/include \
|
||||
-I$(G4BASE)/track/include \
|
||||
-I$(G4BASE)/particles/shortlived/include \
|
||||
-I$(G4BASE)/particles/management/include \
|
||||
-I$(G4BASE)/particles/leptons/include \
|
||||
-I$(G4BASE)/particles/bosons/include \
|
||||
-I$(G4BASE)/particles/hadrons/mesons/include \
|
||||
-I$(G4BASE)/particles/hadrons/barions/include \
|
||||
-I$(G4BASE)/particles/hadrons/ions/include \
|
||||
-I$(G4BASE)/run/include \
|
||||
-I$(G4BASE)/physics_lists/builders/include \
|
||||
-I$(G4BASE)/physics_lists/util/include \
|
||||
-I$(G4BASE)/physics_lists/constructors/factory/include \
|
||||
-I$(G4BASE)/physics_lists/constructors/hadron_inelastic/include \
|
||||
-I$(G4BASE)/processes/management/include \
|
||||
-I$(G4BASE)/processes/transportation/include \
|
||||
-I$(G4BASE)/processes/cuts/include \
|
||||
-I$(G4BASE)/processes/hadronic/cross_sections/include \
|
||||
-I$(G4BASE)/processes/hadronic/stopping/include \
|
||||
-I$(G4BASE)/processes/hadronic/management/include \
|
||||
-I$(G4BASE)/processes/hadronic/processes/include \
|
||||
-I$(G4BASE)/processes/hadronic/util/include \
|
||||
-I$(G4BASE)/processes/hadronic/models/coherent_elastic/include \
|
||||
-I$(G4BASE)/processes/hadronic/models/theo_high_energy/include \
|
||||
-I$(G4BASE)/processes/hadronic/models/lend/include \
|
||||
-I$(G4BASE)/processes/hadronic/models/particle_hp/include \
|
||||
-I$(G4BASE)/processes/hadronic/util/include \
|
||||
-I$(G4BASE)/materials/include
|
||||
|
||||
include $(G4INSTALL)/config/common.gmk
|
||||
@@ -6,6 +6,14 @@ It must **not** be used as a substitute for writing good git commit messages!
|
||||
|
||||
-------------------------------------------------------------------------------
|
||||
|
||||
## 2023-04-13 Alberto Ribon (phys-ctor-helastic-V11-01-00)
|
||||
- Created new class G4HadronElasticPhysicsHPT, which inherits from
|
||||
G4HadronElasticPhysicsHP and activates the special treatment of elastic
|
||||
scattering of thermal neutrons.
|
||||
- G4HadronElasticPhysicsHP : changed the method ConstructProcess from "final"
|
||||
to "override", to be able to define the ConstructProcess method for the
|
||||
derived class G4HadronElasticPhysicsHPT.
|
||||
|
||||
## 2022-11-24 Gabriele Cosmo (phys-ctor-helastic-V11-00-03)
|
||||
- Fixed compilation warnings for implicit type conversions on macOS/XCode 14.1.
|
||||
|
||||
|
||||
@@ -37,6 +37,14 @@
|
||||
below 20 MeV, NeutronHP elastic is used (for both cross section and
|
||||
final-state model).
|
||||
|
||||
G4HadronElasticPhysicsHPT
|
||||
-------------------------
|
||||
As G4HadronElasticPhysicsHP, with the only difference that for neutrons
|
||||
below 4 eV, a special treatment of elastic scattering is activated.
|
||||
This special treatment, called Thermal Scattering Law (TSL), is based on
|
||||
the S(alpha, beta) approach, which relieas on both experimental measurements
|
||||
and molecular dynamics calculations.
|
||||
|
||||
G4HadronElasticPhysicsLEND
|
||||
--------------------------
|
||||
As G4HadronElasticPhysics, with the only difference that for neutrons
|
||||
|
||||
+1
-1
@@ -51,7 +51,7 @@ public:
|
||||
// This method will be invoked in the Construct() method.
|
||||
// each physics process will be instantiated and
|
||||
// registered to the process manager of each particle type
|
||||
void ConstructProcess() final;
|
||||
void ConstructProcess() override;
|
||||
|
||||
G4HadronElasticPhysicsHP(G4HadronElasticPhysicsHP &) = delete;
|
||||
G4HadronElasticPhysicsHP & operator=(const G4HadronElasticPhysicsHP &right) = delete;
|
||||
|
||||
@@ -0,0 +1,61 @@
|
||||
//
|
||||
// ********************************************************************
|
||||
// * License and Disclaimer *
|
||||
// * *
|
||||
// * The Geant4 software is copyright of the Copyright Holders of *
|
||||
// * the Geant4 Collaboration. It is provided under the terms and *
|
||||
// * conditions of the Geant4 Software License, included in the file *
|
||||
// * LICENSE and available at http://cern.ch/geant4/license . These *
|
||||
// * include a list of copyright holders. *
|
||||
// * *
|
||||
// * Neither the authors of this software system, nor their employing *
|
||||
// * institutes,nor the agencies providing financial support for this *
|
||||
// * work make any representation or warranty, express or implied, *
|
||||
// * regarding this software system or assume any liability for its *
|
||||
// * use. Please see the license in the file LICENSE and URL above *
|
||||
// * for the full disclaimer and the limitation of liability. *
|
||||
// * *
|
||||
// * This code implementation is the result of the scientific and *
|
||||
// * technical work of the GEANT4 collaboration. *
|
||||
// * By using, copying, modifying or distributing the software (or *
|
||||
// * any work based on the software) you agree to acknowledge its *
|
||||
// * use in resulting scientific publications, and indicate your *
|
||||
// * acceptance of all terms of the Geant4 Software license. *
|
||||
// ********************************************************************
|
||||
//
|
||||
//
|
||||
//---------------------------------------------------------------------------
|
||||
//
|
||||
// ClassName: G4HadronElasticPhysicsHPT
|
||||
//
|
||||
// Author: Alberto Ribon (CERN), April 2023
|
||||
//
|
||||
// This class inherits from G4HadronElasticPhysicsHP and activates
|
||||
// the special treatment of elastic scattering of thermal neutrons
|
||||
// (i.e. with kinetic energy below 4 eV).
|
||||
// This special treatment, called Thermal Scattering Law (TSL), is based on
|
||||
// the S(alpha, beta) approach, which relies on both experimental measurements
|
||||
// and molecular dynamics calculations.
|
||||
//
|
||||
// Modified:
|
||||
//
|
||||
//----------------------------------------------------------------------------
|
||||
//
|
||||
|
||||
#ifndef G4HadronElasticPhysicsHPT_h
|
||||
#define G4HadronElasticPhysicsHPT_h 1
|
||||
|
||||
#include "G4HadronElasticPhysicsHP.hh"
|
||||
|
||||
|
||||
class G4HadronElasticPhysicsHPT : public G4HadronElasticPhysicsHP {
|
||||
public:
|
||||
explicit G4HadronElasticPhysicsHPT( G4int ver = 1 );
|
||||
virtual ~G4HadronElasticPhysicsHPT() = default;
|
||||
void ConstructProcess() final;
|
||||
G4HadronElasticPhysicsHPT( G4HadronElasticPhysicsHPT & ) = delete;
|
||||
G4HadronElasticPhysicsHPT & operator=( const G4HadronElasticPhysicsHPT &right ) = delete;
|
||||
};
|
||||
|
||||
|
||||
#endif
|
||||
@@ -7,6 +7,7 @@ geant4_add_module(G4phys_ctor_helastic
|
||||
G4HadronDElasticPhysics.hh
|
||||
G4HadronElasticPhysics.hh
|
||||
G4HadronElasticPhysicsHP.hh
|
||||
G4HadronElasticPhysicsHPT.hh
|
||||
G4HadronElasticPhysicsLEND.hh
|
||||
G4HadronElasticPhysicsXS.hh
|
||||
G4HadronHElasticPhysics.hh
|
||||
@@ -18,6 +19,7 @@ geant4_add_module(G4phys_ctor_helastic
|
||||
G4HadronDElasticPhysics.cc
|
||||
G4HadronElasticPhysics.cc
|
||||
G4HadronElasticPhysicsHP.cc
|
||||
G4HadronElasticPhysicsHPT.cc
|
||||
G4HadronElasticPhysicsLEND.cc
|
||||
G4HadronElasticPhysicsXS.cc
|
||||
G4HadronHElasticPhysics.cc
|
||||
|
||||
@@ -0,0 +1,87 @@
|
||||
//
|
||||
// ********************************************************************
|
||||
// * License and Disclaimer *
|
||||
// * *
|
||||
// * The Geant4 software is copyright of the Copyright Holders of *
|
||||
// * the Geant4 Collaboration. It is provided under the terms and *
|
||||
// * conditions of the Geant4 Software License, included in the file *
|
||||
// * LICENSE and available at http://cern.ch/geant4/license . These *
|
||||
// * include a list of copyright holders. *
|
||||
// * *
|
||||
// * Neither the authors of this software system, nor their employing *
|
||||
// * institutes,nor the agencies providing financial support for this *
|
||||
// * work make any representation or warranty, express or implied, *
|
||||
// * regarding this software system or assume any liability for its *
|
||||
// * use. Please see the license in the file LICENSE and URL above *
|
||||
// * for the full disclaimer and the limitation of liability. *
|
||||
// * *
|
||||
// * This code implementation is the result of the scientific and *
|
||||
// * technical work of the GEANT4 collaboration. *
|
||||
// * By using, copying, modifying or distributing the software (or *
|
||||
// * any work based on the software) you agree to acknowledge its *
|
||||
// * use in resulting scientific publications, and indicate your *
|
||||
// * acceptance of all terms of the Geant4 Software license. *
|
||||
// ********************************************************************
|
||||
//
|
||||
//
|
||||
//---------------------------------------------------------------------------
|
||||
//
|
||||
// ClassName: G4HadronElasticPhysicsHPT
|
||||
//
|
||||
// Author: Alberto Ribon (CERN), April 2023
|
||||
//
|
||||
// This class inherits from G4HadronElasticPhysicsHP and activates
|
||||
// the special treatment of elastic scattering of thermal neutrons
|
||||
// (i.e. with kinetic energy below 4 eV).
|
||||
// This special treatment, called Thermal Scattering Law (TSL), is based on
|
||||
// the S(alpha, beta) approach, which relies on both experimental measurements
|
||||
// and molecular dynamics calculations.
|
||||
//
|
||||
// Modified:
|
||||
//
|
||||
//----------------------------------------------------------------------------
|
||||
//
|
||||
|
||||
#include "G4HadronElasticPhysicsHPT.hh"
|
||||
#include "G4SystemOfUnits.hh"
|
||||
#include "G4Neutron.hh"
|
||||
#include "G4ParticleDefinition.hh"
|
||||
#include "G4HadronicProcess.hh"
|
||||
#include "G4ParticleHPThermalScattering.hh"
|
||||
#include "G4ParticleHPThermalScatteringData.hh"
|
||||
#include "G4HadronicParameters.hh"
|
||||
#include "G4PhysListUtil.hh"
|
||||
#include "G4PhysicsConstructorFactory.hh"
|
||||
|
||||
|
||||
G4_DECLARE_PHYSCONSTR_FACTORY( G4HadronElasticPhysicsHPT );
|
||||
|
||||
|
||||
G4HadronElasticPhysicsHPT::G4HadronElasticPhysicsHPT( G4int ver ) : G4HadronElasticPhysicsHP( ver ) {
|
||||
if ( ver > 1 ) G4cout << "### G4HadronElasticPhysicsHPT: " << GetPhysicsName() << G4endl;
|
||||
}
|
||||
|
||||
|
||||
void G4HadronElasticPhysicsHPT::ConstructProcess() {
|
||||
G4HadronElasticPhysicsHP::ConstructProcess();
|
||||
const G4Neutron* neutron = G4Neutron::Neutron();
|
||||
G4HadronicProcess* neutronElasticProcess = G4PhysListUtil::FindElasticProcess( neutron );
|
||||
if ( neutronElasticProcess == nullptr ) {
|
||||
G4cout << "### " << GetPhysicsName()
|
||||
<< " WARNING: Fail to add thermal neutron scattering" << G4endl;
|
||||
return;
|
||||
}
|
||||
std::size_t sizeInteractionList = neutronElasticProcess->GetHadronicInteractionList().size();
|
||||
if ( sizeInteractionList < 1 ) {
|
||||
G4cout << "### " << GetPhysicsName()
|
||||
<< " WARNING: Fail to add thermal neutron scattering ! sizeInteractionList="
|
||||
<< sizeInteractionList << G4endl;
|
||||
return;
|
||||
}
|
||||
neutronElasticProcess->GetHadronicInteractionList()[ sizeInteractionList-1 ]->SetMinEnergy( 4.0*CLHEP::eV );
|
||||
neutronElasticProcess->RegisterMe( new G4ParticleHPThermalScattering );
|
||||
neutronElasticProcess->AddDataSet( new G4ParticleHPThermalScatteringData );
|
||||
if ( G4HadronicParameters::Instance()->GetVerboseLevel() > 1 ) {
|
||||
G4cout << "### HadronElasticPhysicsHPT is constructed " << G4endl;
|
||||
}
|
||||
}
|
||||
@@ -1,81 +0,0 @@
|
||||
# ---------------------------------------------------------------------------
|
||||
# GNUmakefile for physics_lists/constructors/factory library.
|
||||
# Gunter Folger 10-Jan-2012.
|
||||
# ---------------------------------------------------------------------------
|
||||
|
||||
name := G4phys_ctor_hinelastic
|
||||
|
||||
ifndef G4INSTALL
|
||||
G4INSTALL = ../../../..
|
||||
endif
|
||||
|
||||
include $(G4INSTALL)/config/architecture.gmk
|
||||
|
||||
CPPFLAGS += -DG4PROCESSES_EXPORT
|
||||
|
||||
ifdef G4LIB_BUILD_EXPAT
|
||||
CPPFLAGS += -I$(G4BASE)/externals/expat/include
|
||||
endif
|
||||
|
||||
CPPFLAGS += -I$(G4BASE)/global/management/include \
|
||||
-I$(G4BASE)/global/HEPRandom/include \
|
||||
-I$(G4BASE)/global/HEPNumerics/include \
|
||||
-I$(G4BASE)/global/HEPGeometry/include \
|
||||
-I$(G4BASE)/geometry/volumes/include \
|
||||
-I$(G4BASE)/geometry/management/include \
|
||||
-I$(G4BASE)/geometry/magneticfield/include \
|
||||
-I$(G4BASE)/geometry/navigation/include \
|
||||
-I$(G4BASE)/intercoms/include \
|
||||
-I$(G4BASE)/track/include \
|
||||
-I$(G4BASE)/particles/shortlived/include \
|
||||
-I$(G4BASE)/particles/management/include \
|
||||
-I$(G4BASE)/particles/leptons/include \
|
||||
-I$(G4BASE)/particles/bosons/include \
|
||||
-I$(G4BASE)/particles/hadrons/mesons/include \
|
||||
-I$(G4BASE)/particles/hadrons/barions/include \
|
||||
-I$(G4BASE)/particles/hadrons/ions/include \
|
||||
-I$(G4BASE)/run/include \
|
||||
-I$(G4BASE)/physics_lists/builders/include \
|
||||
-I$(G4BASE)/physics_lists/util/include \
|
||||
-I$(G4BASE)/physics_lists/constructors/factory/include \
|
||||
-I$(G4BASE)/processes/management/include \
|
||||
-I$(G4BASE)/processes/transportation/include \
|
||||
-I$(G4BASE)/processes/decay/include \
|
||||
-I$(G4BASE)/processes/cuts/include \
|
||||
-I$(G4BASE)/processes/hadronic/cross_sections/include \
|
||||
-I$(G4BASE)/processes/hadronic/stopping/include \
|
||||
-I$(G4BASE)/processes/hadronic/management/include \
|
||||
-I$(G4BASE)/processes/hadronic/processes/include \
|
||||
-I$(G4BASE)/processes/hadronic/util/include \
|
||||
-I$(G4BASE)/processes/hadronic/models/binary_cascade/include \
|
||||
-I$(G4BASE)/processes/hadronic/models/cascade/cascade/include \
|
||||
-I$(G4BASE)/processes/hadronic/models/qmd/include \
|
||||
-I$(G4BASE)/processes/hadronic/models/coherent_elastic/include \
|
||||
-I$(G4BASE)/processes/hadronic/models/de_excitation/evaporation/include \
|
||||
-I$(G4BASE)/processes/hadronic/models/de_excitation/fermi_breakup/include \
|
||||
-I$(G4BASE)/processes/hadronic/models/de_excitation/fission/include \
|
||||
-I$(G4BASE)/processes/hadronic/models/de_excitation/handler/include \
|
||||
-I$(G4BASE)/processes/hadronic/models/de_excitation/management/include \
|
||||
-I$(G4BASE)/processes/hadronic/models/de_excitation/multifragmentation/include \
|
||||
-I$(G4BASE)/processes/hadronic/models/de_excitation/photon_evaporation/include \
|
||||
-I$(G4BASE)/processes/hadronic/models/de_excitation/util/include \
|
||||
-I$(G4BASE)/processes/hadronic/models/fission/include \
|
||||
-I$(G4BASE)/processes/hadronic/models/im_r_matrix/include \
|
||||
-I$(G4BASE)/processes/hadronic/models/inclxx/utils/include \
|
||||
-I$(G4BASE)/processes/hadronic/models/inclxx/incl_physics/include \
|
||||
-I$(G4BASE)/processes/hadronic/models/inclxx/interface/include \
|
||||
-I$(G4BASE)/processes/hadronic/models/lend/include \
|
||||
-I$(G4BASE)/processes/hadronic/models/lepto_nuclear/include \
|
||||
-I$(G4BASE)/processes/hadronic/models/particle_hp/include \
|
||||
-I$(G4BASE)/processes/hadronic/models/parton_string/diffraction/include \
|
||||
-I$(G4BASE)/processes/hadronic/models/parton_string/hadronization/include \
|
||||
-I$(G4BASE)/processes/hadronic/models/parton_string/management/include \
|
||||
-I$(G4BASE)/processes/hadronic/models/parton_string/qgsm/include \
|
||||
-I$(G4BASE)/processes/hadronic/models/photolepton_hadron/muon_nuclear/include \
|
||||
-I$(G4BASE)/processes/hadronic/models/pre_equilibrium/exciton_model/include \
|
||||
-I$(G4BASE)/processes/hadronic/models/radioactive_decay/include \
|
||||
-I$(G4BASE)/processes/hadronic/models/theo_high_energy/include \
|
||||
-I$(G4BASE)/processes/hadronic/util/include \
|
||||
-I$(G4BASE)/materials/include
|
||||
|
||||
include $(G4INSTALL)/config/common.gmk
|
||||
@@ -4,6 +4,21 @@ See `CONTRIBUTING.rst` for details of **required** info/format for each entry,
|
||||
which **must** added in reverse chronological order (newest at the top). It must **not**
|
||||
be used as a substitute for writing good git commit messages!
|
||||
|
||||
## 2023-04-19 Alberto Ribon (phys-ctor-hinelastic-V11-01-00)
|
||||
- Created the new class G4HadronInelasticQBBC_ABLA, which is similar to
|
||||
G4HadronInelasticQBBC_ABLA, except that, for the final-state of nuclear
|
||||
inelastic interactions of charged pions and nucleons projectiles,
|
||||
the ABLA model (instead of the usual Precompound/de-excitation) is utilized
|
||||
for nuclear de-excitation.
|
||||
This is meant for testing purposes of the coupling between the hadronic
|
||||
string models (FTF and QGS) and ABLA (via G4GeneratorPrecompoundInterface),
|
||||
as well as of the coupling between intra-nuclear cascade models (BERT and BIC)
|
||||
and ABLA.
|
||||
In principle, these couplings with ABLA nuclear de-excitation can be
|
||||
extended to all types of projectiles, and to other reference physics lists,
|
||||
but, for the time being, in order to minimize code changes or new code,
|
||||
it is restricted to pion+, pion-, proton and neutron, and only for QBBC.
|
||||
|
||||
## 2022-11-11 Alberto Ribon (phys-ctor-hinelastic-V11-00-02)
|
||||
- G4HadronPhysicsFTFP_BERT, G4HadronPhysicsINCLXX : extension to inelastic
|
||||
nuclear interactions of light hypernuclei (with either FTFP only or
|
||||
|
||||
@@ -35,6 +35,14 @@
|
||||
- final-state: FTFP for all energies
|
||||
|
||||
|
||||
G4HadronInelasticQBBC_ABLA
|
||||
--------------------------
|
||||
Similar to G4HadronInelasticQBBC, with the difference that for the final-state
|
||||
of nuclear inelastic interactions of pion+, pion-, proton and neutron projectiles
|
||||
the ABLA model (instead of the usual Precompound/de-excitation) is utilized for
|
||||
nuclear de-excitation.
|
||||
|
||||
|
||||
G4HadronPhysicsFTFP_BERT
|
||||
------------------------
|
||||
Hadron nuclear inelastic processes for all hadrons:
|
||||
@@ -72,6 +80,7 @@
|
||||
- cross-section: Galoyan-Uzhinsky-Glauber-Gribov
|
||||
- final-state: FTFP for all energies
|
||||
|
||||
|
||||
G4HadronPhysicsFTFP_BERT_ATL
|
||||
----------------------------
|
||||
Similar to G4HadronPhysicsFTFP_BERT, with the difference that for proton,
|
||||
|
||||
+63
@@ -0,0 +1,63 @@
|
||||
//
|
||||
// ********************************************************************
|
||||
// * License and Disclaimer *
|
||||
// * *
|
||||
// * The Geant4 software is copyright of the Copyright Holders of *
|
||||
// * the Geant4 Collaboration. It is provided under the terms and *
|
||||
// * conditions of the Geant4 Software License, included in the file *
|
||||
// * LICENSE and available at http://cern.ch/geant4/license . These *
|
||||
// * include a list of copyright holders. *
|
||||
// * *
|
||||
// * Neither the authors of this software system, nor their employing *
|
||||
// * institutes,nor the agencies providing financial support for this *
|
||||
// * work make any representation or warranty, express or implied, *
|
||||
// * regarding this software system or assume any liability for its *
|
||||
// * use. Please see the license in the file LICENSE and URL above *
|
||||
// * for the full disclaimer and the limitation of liability. *
|
||||
// * *
|
||||
// * This code implementation is the result of the scientific and *
|
||||
// * technical work of the GEANT4 collaboration. *
|
||||
// * By using, copying, modifying or distributing the software (or *
|
||||
// * any work based on the software) you agree to acknowledge its *
|
||||
// * use in resulting scientific publications, and indicate your *
|
||||
// * acceptance of all terms of the Geant4 Software license. *
|
||||
// ********************************************************************
|
||||
//
|
||||
//
|
||||
//---------------------------------------------------------------------------
|
||||
//
|
||||
// ClassName: G4HadronInelasticQBBC_ABLA
|
||||
//
|
||||
// Author: Alberto Ribon (CERN), April 2023
|
||||
//
|
||||
// Similar to the physics list constructor G4HadronInelasticQBBC_ABLA,
|
||||
// except for the final-state of inelastic interactions of charged pions and
|
||||
// nucleons in which ABLA nuclear de-excitation is utilized (instead of the
|
||||
// usual Precompound/de-excitation).
|
||||
// This is meant for testing purposes of the coupling between the hadronic
|
||||
// string models (FTF and QGS) and ABLA (via G4GeneratorPrecompoundInterface),
|
||||
// as well as of the coupling between intra-nuclear cascade models (BERT and BIC)
|
||||
// and ABLA.
|
||||
//
|
||||
// Modified:
|
||||
//
|
||||
//----------------------------------------------------------------------------
|
||||
//
|
||||
|
||||
#ifndef G4HadronInelasticQBBC_ABLA_h
|
||||
#define G4HadronInelasticQBBC_ABLA_h 1
|
||||
|
||||
#include "globals.hh"
|
||||
#include "G4VHadronPhysics.hh"
|
||||
|
||||
|
||||
class G4HadronInelasticQBBC_ABLA : public G4VHadronPhysics {
|
||||
public:
|
||||
G4HadronInelasticQBBC_ABLA( G4int ver = 1 );
|
||||
virtual ~G4HadronInelasticQBBC_ABLA() = default;
|
||||
void ConstructProcess() override;
|
||||
G4HadronInelasticQBBC_ABLA( G4HadronInelasticQBBC_ABLA& ) = delete;
|
||||
G4HadronInelasticQBBC_ABLA& operator=( const G4HadronInelasticQBBC_ABLA& right ) = delete;
|
||||
};
|
||||
|
||||
#endif
|
||||
@@ -4,6 +4,7 @@
|
||||
geant4_add_module(G4phys_ctor_hinelastic
|
||||
PUBLIC_HEADERS
|
||||
G4HadronInelasticQBBC.hh
|
||||
G4HadronInelasticQBBC_ABLA.hh
|
||||
G4HadronPhysicsFTF_BIC.hh
|
||||
G4HadronPhysicsFTFP_BERT.hh
|
||||
G4HadronPhysicsFTFP_BERT_HP.hh
|
||||
@@ -24,6 +25,7 @@ geant4_add_module(G4phys_ctor_hinelastic
|
||||
G4HadronPhysicsQGSP_BIC_AllHP.hh
|
||||
SOURCES
|
||||
G4HadronInelasticQBBC.cc
|
||||
G4HadronInelasticQBBC_ABLA.cc
|
||||
G4HadronPhysicsFTF_BIC.cc
|
||||
G4HadronPhysicsFTFP_BERT.cc
|
||||
G4HadronPhysicsFTFP_BERT_HP.cc
|
||||
@@ -57,6 +59,7 @@ geant4_module_link_libraries(G4phys_ctor_hinelastic
|
||||
G4had_string_diff
|
||||
G4had_string_frag
|
||||
G4had_theo_max
|
||||
G4hadronic_abla
|
||||
G4hadronic_bert_cascade
|
||||
G4hadronic_binary
|
||||
G4hadronic_deex_photon_evaporation
|
||||
|
||||
@@ -0,0 +1,202 @@
|
||||
//
|
||||
// ********************************************************************
|
||||
// * License and Disclaimer *
|
||||
// * *
|
||||
// * The Geant4 software is copyright of the Copyright Holders of *
|
||||
// * the Geant4 Collaboration. It is provided under the terms and *
|
||||
// * conditions of the Geant4 Software License, included in the file *
|
||||
// * LICENSE and available at http://cern.ch/geant4/license . These *
|
||||
// * include a list of copyright holders. *
|
||||
// * *
|
||||
// * Neither the authors of this software system, nor their employing *
|
||||
// * institutes,nor the agencies providing financial support for this *
|
||||
// * work make any representation or warranty, express or implied, *
|
||||
// * regarding this software system or assume any liability for its *
|
||||
// * use. Please see the license in the file LICENSE and URL above *
|
||||
// * for the full disclaimer and the limitation of liability. *
|
||||
// * *
|
||||
// * This code implementation is the result of the scientific and *
|
||||
// * technical work of the GEANT4 collaboration. *
|
||||
// * By using, copying, modifying or distributing the software (or *
|
||||
// * any work based on the software) you agree to acknowledge its *
|
||||
// * use in resulting scientific publications, and indicate your *
|
||||
// * acceptance of all terms of the Geant4 Software license. *
|
||||
// ********************************************************************
|
||||
//
|
||||
//
|
||||
//---------------------------------------------------------------------------
|
||||
//
|
||||
// ClassName: G4HadronInelasticQBBC_ABLA
|
||||
//
|
||||
// Author: Alberto Ribon (CERN), April 2023
|
||||
//
|
||||
// Similar to the physics list constructor G4HadronInelasticQBBC_ABLA,
|
||||
// except for the final-state of inelastic interactions of charged pions and
|
||||
// nucleons in which ABLA nuclear de-excitation is utilized (instead of the
|
||||
// usual Precompound/de-excitation).
|
||||
// This is meant for testing purposes of the coupling between the hadronic
|
||||
// string models (FTF and QGS) and ABLA (via G4GeneratorPrecompoundInterface),
|
||||
// as well as of the coupling between intra-nuclear cascade models (BERT and BIC)
|
||||
// and ABLA.
|
||||
//
|
||||
// Modified:
|
||||
//
|
||||
//----------------------------------------------------------------------------
|
||||
//
|
||||
|
||||
#include "G4HadronInelasticQBBC_ABLA.hh"
|
||||
#include "G4SystemOfUnits.hh"
|
||||
#include "G4HadronicProcess.hh"
|
||||
#include "G4HadronInelasticProcess.hh"
|
||||
#include "G4HadronicInteraction.hh"
|
||||
#include "G4ParticleDefinition.hh"
|
||||
#include "G4TheoFSGenerator.hh"
|
||||
#include "G4FTFModel.hh"
|
||||
#include "G4ExcitedStringDecay.hh"
|
||||
#include "G4GeneratorPrecompoundInterface.hh"
|
||||
#include "G4BGGNucleonInelasticXS.hh"
|
||||
#include "G4BGGPionInelasticXS.hh"
|
||||
#include "G4ParticleInelasticXS.hh"
|
||||
#include "G4NeutronInelasticXS.hh"
|
||||
#include "G4NeutronGeneralProcess.hh"
|
||||
#include "G4CrossSectionInelastic.hh"
|
||||
#include "G4CascadeInterface.hh"
|
||||
#include "G4BinaryCascade.hh"
|
||||
#include "G4PreCompoundModel.hh"
|
||||
#include "G4AblaInterface.hh"
|
||||
#include "G4HadronicInteractionRegistry.hh"
|
||||
#include "G4HadronicParameters.hh"
|
||||
#include "G4HadronicBuilder.hh"
|
||||
#include "G4HadParticles.hh"
|
||||
#include "G4HadProcesses.hh"
|
||||
#include "G4BuilderType.hh"
|
||||
#include "G4PhysicsConstructorFactory.hh"
|
||||
|
||||
|
||||
G4_DECLARE_PHYSCONSTR_FACTORY( G4HadronInelasticQBBC_ABLA );
|
||||
|
||||
|
||||
G4HadronInelasticQBBC_ABLA::G4HadronInelasticQBBC_ABLA( G4int ver )
|
||||
: G4VHadronPhysics( "hInelasticQBBC_ABLA" )
|
||||
{
|
||||
SetPhysicsType( bHadronInelastic );
|
||||
auto param = G4HadronicParameters::Instance();
|
||||
param->SetEnableBCParticles( true );
|
||||
param->SetEnableNeutronGeneralProcess( true );
|
||||
param->SetVerboseLevel( ver );
|
||||
}
|
||||
|
||||
|
||||
void G4HadronInelasticQBBC_ABLA::ConstructProcess() {
|
||||
G4HadronicParameters* param = G4HadronicParameters::Instance();
|
||||
G4bool useFactorXS = param->ApplyFactorXS();
|
||||
G4PhysicsListHelper* ph = G4PhysicsListHelper::GetPhysicsListHelper();
|
||||
|
||||
// configure models
|
||||
const G4double eminFtf = param->GetMinEnergyTransitionFTF_Cascade();
|
||||
const G4double eminBert = 1.0*CLHEP::GeV;
|
||||
const G4double emaxBic = 1.5*CLHEP::GeV;
|
||||
const G4double emaxBert = param->GetMaxEnergyTransitionFTF_Cascade();
|
||||
const G4double emaxBertPions = 12.0*CLHEP::GeV;
|
||||
const G4double emax = param->GetMaxEnergy();
|
||||
if ( G4Threading::IsMasterThread() && param->GetVerboseLevel() > 0 ) {
|
||||
G4cout << "### HadronInelasticQBBC_ABLA Construct Process:\n"
|
||||
<< " Emin(FTFP)= " << eminFtf/CLHEP::GeV
|
||||
<< " GeV; Emax(FTFP)= " << emax/CLHEP::GeV << " GeV\n"
|
||||
<< " Emin(BERT)= " << eminBert/CLHEP::GeV
|
||||
<< " GeV; Emax(BERT)= " << emaxBert/CLHEP::GeV
|
||||
<< " GeV; Emax(BERTpions)= " << emaxBertPions/CLHEP::GeV
|
||||
<< " GeV;\n" << " Emin(BIC) = 0 GeV; Emax(BIC)= "
|
||||
<< emaxBic/CLHEP::GeV << " GeV." << G4endl;
|
||||
}
|
||||
|
||||
G4PreCompoundModel* thePreCompound = nullptr;
|
||||
G4HadronicInteraction* p = G4HadronicInteractionRegistry::Instance()->FindModel( "PRECO" );
|
||||
thePreCompound = static_cast< G4PreCompoundModel* >( p );
|
||||
if ( thePreCompound == nullptr ) thePreCompound = new G4PreCompoundModel;
|
||||
|
||||
G4AblaInterface* theAblaInterface = nullptr;
|
||||
G4HadronicInteraction* pAbla = G4HadronicInteractionRegistry::Instance()->FindModel( "ABLAXX" );
|
||||
theAblaInterface = static_cast< G4AblaInterface* >( pAbla );
|
||||
if ( theAblaInterface == nullptr ) theAblaInterface = new G4AblaInterface;
|
||||
|
||||
auto theFTFP = new G4TheoFSGenerator( "FTFP" );
|
||||
auto theStringModel = new G4FTFModel;
|
||||
theStringModel->SetFragmentationModel( new G4ExcitedStringDecay );
|
||||
theFTFP->SetHighEnergyGenerator( theStringModel );
|
||||
// theFTFP->SetTransport( new G4GeneratorPrecompoundInterface );
|
||||
theFTFP->SetTransport( new G4GeneratorPrecompoundInterface( theAblaInterface ) );
|
||||
theFTFP->SetMinEnergy( eminFtf );
|
||||
theFTFP->SetMaxEnergy( emax );
|
||||
|
||||
auto theBERT = new G4CascadeInterface;
|
||||
theBERT->SetMinEnergy( eminBert );
|
||||
theBERT->SetMaxEnergy( emaxBert );
|
||||
// theBERT->usePreCompoundDeexcitation();
|
||||
theBERT->useAblaDeexcitation();
|
||||
|
||||
auto theBERT1 = new G4CascadeInterface;
|
||||
theBERT1->SetMinEnergy( eminBert );
|
||||
theBERT1->SetMaxEnergy( emaxBertPions );
|
||||
// theBERT1->usePreCompoundDeexcitation();
|
||||
theBERT1->useAblaDeexcitation();
|
||||
|
||||
// auto theBIC = new G4BinaryCascade( thePreCompound );
|
||||
auto theBIC = new G4BinaryCascade( theAblaInterface );
|
||||
theBIC->SetMaxEnergy( emaxBic );
|
||||
|
||||
// p
|
||||
G4ParticleDefinition* particle = G4Proton::Proton();
|
||||
G4HadronicProcess* hp =
|
||||
new G4HadronInelasticProcess( particle->GetParticleName() + "Inelastic", particle );
|
||||
hp->AddDataSet( new G4ParticleInelasticXS( particle ) );
|
||||
hp->RegisterMe( theFTFP );
|
||||
hp->RegisterMe( theBERT );
|
||||
hp->RegisterMe( theBIC );
|
||||
ph->RegisterProcess( hp, particle );
|
||||
if ( useFactorXS ) hp->MultiplyCrossSectionBy( param->XSFactorNucleonInelastic() );
|
||||
|
||||
// n
|
||||
particle = G4Neutron::Neutron();
|
||||
G4HadronicProcess* ni = new G4HadronInelasticProcess( "neutronInelastic", particle );
|
||||
ni->RegisterMe( theFTFP );
|
||||
ni->RegisterMe( theBERT );
|
||||
ni->RegisterMe( theBIC );
|
||||
G4HadProcesses::BuildNeutronInelasticAndCapture( ni );
|
||||
|
||||
// pi+
|
||||
particle = G4PionPlus::PionPlus();
|
||||
hp = new G4HadronInelasticProcess( particle->GetParticleName() + "Inelastic", particle );
|
||||
hp->AddDataSet( new G4BGGPionInelasticXS( particle ) );
|
||||
hp->RegisterMe( theFTFP );
|
||||
hp->RegisterMe( theBERT1 );
|
||||
hp->RegisterMe( theBIC );
|
||||
ph->RegisterProcess( hp, particle );
|
||||
if ( useFactorXS ) hp->MultiplyCrossSectionBy( param->XSFactorPionInelastic() );
|
||||
|
||||
// pi-
|
||||
particle = G4PionMinus::PionMinus();
|
||||
hp = new G4HadronInelasticProcess( particle->GetParticleName() + "Inelastic", particle );
|
||||
hp->AddDataSet( new G4BGGPionInelasticXS( particle ) );
|
||||
hp->RegisterMe( theFTFP );
|
||||
hp->RegisterMe( theBERT1 );
|
||||
hp->RegisterMe( theBIC );
|
||||
ph->RegisterProcess( hp, particle );
|
||||
if ( useFactorXS ) hp->MultiplyCrossSectionBy( param->XSFactorPionInelastic() );
|
||||
|
||||
// kaons
|
||||
G4HadronicBuilder::BuildKaonsFTFP_BERT();
|
||||
|
||||
// high energy particles
|
||||
if ( emax > param->EnergyThresholdForHeavyHadrons() ) {
|
||||
|
||||
// pbar, nbar, anti light ions
|
||||
G4HadronicBuilder::BuildAntiLightIonsFTFP();
|
||||
|
||||
// hyperons
|
||||
G4HadronicBuilder::BuildHyperonsFTFP_BERT();
|
||||
|
||||
// b-, c- baryons and mesons
|
||||
if ( param->EnableBCParticles() ) G4HadronicBuilder::BuildBCHadronsFTFP_BERT();
|
||||
}
|
||||
}
|
||||
@@ -1,74 +0,0 @@
|
||||
# ---------------------------------------------------------------------------
|
||||
# GNUmakefile for physics_lists/constructors/factory library.
|
||||
# Gunter Folger 10-Jan-2012.
|
||||
# ---------------------------------------------------------------------------
|
||||
|
||||
name := G4phys_ctor_ions
|
||||
|
||||
ifndef G4INSTALL
|
||||
G4INSTALL = ../../../..
|
||||
endif
|
||||
|
||||
include $(G4INSTALL)/config/architecture.gmk
|
||||
|
||||
|
||||
CPPFLAGS += -I$(G4BASE)/global/management/include \
|
||||
-I$(G4BASE)/global/HEPRandom/include \
|
||||
-I$(G4BASE)/global/HEPNumerics/include \
|
||||
-I$(G4BASE)/global/HEPGeometry/include \
|
||||
-I$(G4BASE)/geometry/volumes/include \
|
||||
-I$(G4BASE)/geometry/management/include \
|
||||
-I$(G4BASE)/geometry/magneticfield/include \
|
||||
-I$(G4BASE)/geometry/navigation/include \
|
||||
-I$(G4BASE)/intercoms/include \
|
||||
-I$(G4BASE)/track/include \
|
||||
-I$(G4BASE)/particles/shortlived/include \
|
||||
-I$(G4BASE)/particles/management/include \
|
||||
-I$(G4BASE)/particles/leptons/include \
|
||||
-I$(G4BASE)/particles/bosons/include \
|
||||
-I$(G4BASE)/particles/hadrons/mesons/include \
|
||||
-I$(G4BASE)/particles/hadrons/barions/include \
|
||||
-I$(G4BASE)/particles/hadrons/ions/include \
|
||||
-I$(G4BASE)/run/include \
|
||||
-I$(G4BASE)/physics_lists/builders/include \
|
||||
-I$(G4BASE)/physics_lists/util/include \
|
||||
-I$(G4BASE)/physics_lists/constructors/factory/include \
|
||||
-I$(G4BASE)/processes/management/include \
|
||||
-I$(G4BASE)/processes/transportation/include \
|
||||
-I$(G4BASE)/processes/decay/include \
|
||||
-I$(G4BASE)/processes/cuts/include \
|
||||
-I$(G4BASE)/processes/hadronic/cross_sections/include \
|
||||
-I$(G4BASE)/processes/hadronic/stopping/include \
|
||||
-I$(G4BASE)/processes/hadronic/management/include \
|
||||
-I$(G4BASE)/processes/hadronic/models/binary_cascade/include \
|
||||
-I$(G4BASE)/processes/hadronic/models/cascade/cascade/include \
|
||||
-I$(G4BASE)/processes/hadronic/models/qmd/include \
|
||||
-I$(G4BASE)/processes/hadronic/models/coherent_elastic/include \
|
||||
-I$(G4BASE)/processes/hadronic/models/de_excitation/evaporation/include \
|
||||
-I$(G4BASE)/processes/hadronic/models/de_excitation/fermi_breakup/include \
|
||||
-I$(G4BASE)/processes/hadronic/models/de_excitation/fission/include \
|
||||
-I$(G4BASE)/processes/hadronic/models/de_excitation/handler/include \
|
||||
-I$(G4BASE)/processes/hadronic/models/de_excitation/management/include \
|
||||
-I$(G4BASE)/processes/hadronic/models/de_excitation/multifragmentation/include \
|
||||
-I$(G4BASE)/processes/hadronic/models/de_excitation/photon_evaporation/include \
|
||||
-I$(G4BASE)/processes/hadronic/models/de_excitation/util/include \
|
||||
-I$(G4BASE)/processes/hadronic/models/im_r_matrix/include \
|
||||
-I$(G4BASE)/processes/hadronic/models/inclxx/utils/include \
|
||||
-I$(G4BASE)/processes/hadronic/models/inclxx/incl_physics/include \
|
||||
-I$(G4BASE)/processes/hadronic/models/inclxx/interface/include \
|
||||
-I$(G4BASE)/processes/hadronic/models/lend/include \
|
||||
-I$(G4BASE)/processes/hadronic/models/lepto_nuclear/include \
|
||||
-I$(G4BASE)/processes/hadronic/models/particle_hp/include \
|
||||
-I$(G4BASE)/processes/hadronic/models/parton_string/diffraction/include \
|
||||
-I$(G4BASE)/processes/hadronic/models/parton_string/hadronization/include \
|
||||
-I$(G4BASE)/processes/hadronic/models/parton_string/management/include \
|
||||
-I$(G4BASE)/processes/hadronic/models/parton_string/qgsm/include \
|
||||
-I$(G4BASE)/processes/hadronic/models/photolepton_hadron/muon_nuclear/include \
|
||||
-I$(G4BASE)/processes/hadronic/models/pre_equilibrium/exciton_model/include \
|
||||
-I$(G4BASE)/processes/hadronic/models/radioactive_decay/include \
|
||||
-I$(G4BASE)/processes/hadronic/models/theo_high_energy/include \
|
||||
-I$(G4BASE)/processes/hadronic/processes/include \
|
||||
-I$(G4BASE)/processes/hadronic/util/include \
|
||||
-I$(G4BASE)/materials/include
|
||||
|
||||
include $(G4INSTALL)/config/common.gmk
|
||||
@@ -1,81 +0,0 @@
|
||||
# ---------------------------------------------------------------------------
|
||||
# GNUmakefile for physics_lists/constructors/factory library.
|
||||
# Gunter Folger 10-Jan-2012.
|
||||
# ---------------------------------------------------------------------------
|
||||
|
||||
name := G4phys_ctor_limiters
|
||||
|
||||
ifndef G4INSTALL
|
||||
G4INSTALL = ../../../..
|
||||
endif
|
||||
|
||||
include $(G4INSTALL)/config/architecture.gmk
|
||||
|
||||
CPPFLAGS += -DG4PROCESSES_EXPORT
|
||||
|
||||
CPPFLAGS += -I$(G4BASE)/global/management/include \
|
||||
-I$(G4BASE)/global/HEPRandom/include \
|
||||
-I$(G4BASE)/global/HEPNumerics/include \
|
||||
-I$(G4BASE)/global/HEPGeometry/include \
|
||||
-I$(G4BASE)/geometry/volumes/include \
|
||||
-I$(G4BASE)/geometry/management/include \
|
||||
-I$(G4BASE)/geometry/magneticfield/include \
|
||||
-I$(G4BASE)/geometry/navigation/include \
|
||||
-I$(G4BASE)/geometry/biasing/include \
|
||||
-I$(G4BASE)/intercoms/include \
|
||||
-I$(G4BASE)/track/include \
|
||||
-I$(G4BASE)/particles/shortlived/include \
|
||||
-I$(G4BASE)/particles/management/include \
|
||||
-I$(G4BASE)/particles/leptons/include \
|
||||
-I$(G4BASE)/particles/bosons/include \
|
||||
-I$(G4BASE)/particles/hadrons/mesons/include \
|
||||
-I$(G4BASE)/particles/hadrons/barions/include \
|
||||
-I$(G4BASE)/particles/hadrons/ions/include \
|
||||
-I$(G4BASE)/run/include \
|
||||
-I$(G4BASE)/physics_lists/builders/include \
|
||||
-I$(G4BASE)/physics_lists/util/include \
|
||||
-I$(G4BASE)/physics_lists/constructors/factory/include \
|
||||
-I$(G4BASE)/processes/management/include \
|
||||
-I$(G4BASE)/processes/scoring/include \
|
||||
-I$(G4BASE)/processes/transportation/include \
|
||||
-I$(G4BASE)/processes/decay/include \
|
||||
-I$(G4BASE)/processes/electromagnetic/utils/include \
|
||||
-I$(G4BASE)/processes/cuts/include \
|
||||
-I$(G4BASE)/processes/biasing/generic/include \
|
||||
-I$(G4BASE)/processes/biasing/importance/include \
|
||||
-I$(G4BASE)/processes/parameterisation/include \
|
||||
-I$(G4BASE)/processes/hadronic/cross_sections/include \
|
||||
-I$(G4BASE)/processes/hadronic/stopping/include \
|
||||
-I$(G4BASE)/processes/hadronic/management/include \
|
||||
-I$(G4BASE)/processes/hadronic/processes/include \
|
||||
-I$(G4BASE)/processes/hadronic/util/include \
|
||||
-I$(G4BASE)/processes/hadronic/models/binary_cascade/include \
|
||||
-I$(G4BASE)/processes/hadronic/models/cascade/cascade/include \
|
||||
-I$(G4BASE)/processes/hadronic/models/qmd/include \
|
||||
-I$(G4BASE)/processes/hadronic/models/coherent_elastic/include \
|
||||
-I$(G4BASE)/processes/hadronic/models/de_excitation/evaporation/include \
|
||||
-I$(G4BASE)/processes/hadronic/models/de_excitation/fermi_breakup/include \
|
||||
-I$(G4BASE)/processes/hadronic/models/de_excitation/handler/include \
|
||||
-I$(G4BASE)/processes/hadronic/models/de_excitation/management/include \
|
||||
-I$(G4BASE)/processes/hadronic/models/de_excitation/multifragmentation/include \
|
||||
-I$(G4BASE)/processes/hadronic/models/de_excitation/photon_evaporation/include \
|
||||
-I$(G4BASE)/processes/hadronic/models/de_excitation/util/include \
|
||||
-I$(G4BASE)/processes/hadronic/models/im_r_matrix/include \
|
||||
-I$(G4BASE)/processes/hadronic/models/inclxx/utils/include \
|
||||
-I$(G4BASE)/processes/hadronic/models/inclxx/incl_physics/include \
|
||||
-I$(G4BASE)/processes/hadronic/models/inclxx/interface/include \
|
||||
-I$(G4BASE)/processes/hadronic/models/lend/include \
|
||||
-I$(G4BASE)/processes/hadronic/models/lepto_nuclear/include \
|
||||
-I$(G4BASE)/processes/hadronic/models/particle_hp/include \
|
||||
-I$(G4BASE)/processes/hadronic/models/parton_string/diffraction/include \
|
||||
-I$(G4BASE)/processes/hadronic/models/parton_string/hadronization/include \
|
||||
-I$(G4BASE)/processes/hadronic/models/parton_string/management/include \
|
||||
-I$(G4BASE)/processes/hadronic/models/parton_string/qgsm/include \
|
||||
-I$(G4BASE)/processes/hadronic/models/photolepton_hadron/muon_nuclear/include \
|
||||
-I$(G4BASE)/processes/hadronic/models/pre_equilibrium/exciton_model/include \
|
||||
-I$(G4BASE)/processes/hadronic/models/radioactive_decay/include \
|
||||
-I$(G4BASE)/processes/hadronic/models/theo_high_energy/include \
|
||||
-I$(G4BASE)/processes/hadronic/util/include \
|
||||
-I$(G4BASE)/materials/include
|
||||
|
||||
include $(G4INSTALL)/config/common.gmk
|
||||
@@ -1,74 +0,0 @@
|
||||
# ---------------------------------------------------------------------------
|
||||
# GNUmakefile for physics_lists/constructors/factory library.
|
||||
# Gunter Folger 10-Jan-2012.
|
||||
# ---------------------------------------------------------------------------
|
||||
|
||||
name := G4phys_ctor_stopping
|
||||
|
||||
ifndef G4INSTALL
|
||||
G4INSTALL = ../../../..
|
||||
endif
|
||||
|
||||
include $(G4INSTALL)/config/architecture.gmk
|
||||
|
||||
|
||||
CPPFLAGS += -I$(G4BASE)/global/management/include \
|
||||
-I$(G4BASE)/global/HEPRandom/include \
|
||||
-I$(G4BASE)/global/HEPNumerics/include \
|
||||
-I$(G4BASE)/global/HEPGeometry/include \
|
||||
-I$(G4BASE)/geometry/volumes/include \
|
||||
-I$(G4BASE)/geometry/management/include \
|
||||
-I$(G4BASE)/geometry/magneticfield/include \
|
||||
-I$(G4BASE)/geometry/navigation/include \
|
||||
-I$(G4BASE)/intercoms/include \
|
||||
-I$(G4BASE)/track/include \
|
||||
-I$(G4BASE)/particles/shortlived/include \
|
||||
-I$(G4BASE)/particles/management/include \
|
||||
-I$(G4BASE)/particles/leptons/include \
|
||||
-I$(G4BASE)/particles/bosons/include \
|
||||
-I$(G4BASE)/particles/hadrons/mesons/include \
|
||||
-I$(G4BASE)/particles/hadrons/barions/include \
|
||||
-I$(G4BASE)/particles/hadrons/ions/include \
|
||||
-I$(G4BASE)/run/include \
|
||||
-I$(G4BASE)/physics_lists/builders/include \
|
||||
-I$(G4BASE)/physics_lists/util/include \
|
||||
-I$(G4BASE)/physics_lists/constructors/factory/include \
|
||||
-I$(G4BASE)/processes/management/include \
|
||||
-I$(G4BASE)/processes/transportation/include \
|
||||
-I$(G4BASE)/processes/decay/include \
|
||||
-I$(G4BASE)/processes/cuts/include \
|
||||
-I$(G4BASE)/processes/hadronic/cross_sections/include \
|
||||
-I$(G4BASE)/processes/hadronic/stopping/include \
|
||||
-I$(G4BASE)/processes/hadronic/management/include \
|
||||
-I$(G4BASE)/processes/hadronic/processes/include \
|
||||
-I$(G4BASE)/processes/hadronic/util/include \
|
||||
-I$(G4BASE)/processes/hadronic/models/binary_cascade/include \
|
||||
-I$(G4BASE)/processes/hadronic/models/cascade/cascade/include \
|
||||
-I$(G4BASE)/processes/hadronic/models/qmd/include \
|
||||
-I$(G4BASE)/processes/hadronic/models/coherent_elastic/include \
|
||||
-I$(G4BASE)/processes/hadronic/models/de_excitation/evaporation/include \
|
||||
-I$(G4BASE)/processes/hadronic/models/de_excitation/fermi_breakup/include \
|
||||
-I$(G4BASE)/processes/hadronic/models/de_excitation/handler/include \
|
||||
-I$(G4BASE)/processes/hadronic/models/de_excitation/management/include \
|
||||
-I$(G4BASE)/processes/hadronic/models/de_excitation/multifragmentation/include \
|
||||
-I$(G4BASE)/processes/hadronic/models/de_excitation/photon_evaporation/include \
|
||||
-I$(G4BASE)/processes/hadronic/models/de_excitation/util/include \
|
||||
-I$(G4BASE)/processes/hadronic/models/im_r_matrix/include \
|
||||
-I$(G4BASE)/processes/hadronic/models/inclxx/utils/include \
|
||||
-I$(G4BASE)/processes/hadronic/models/inclxx/incl_physics/include \
|
||||
-I$(G4BASE)/processes/hadronic/models/inclxx/interface/include \
|
||||
-I$(G4BASE)/processes/hadronic/models/lend/include \
|
||||
-I$(G4BASE)/processes/hadronic/models/lepto_nuclear/include \
|
||||
-I$(G4BASE)/processes/hadronic/models/particle_hp/include \
|
||||
-I$(G4BASE)/processes/hadronic/models/parton_string/diffraction/include \
|
||||
-I$(G4BASE)/processes/hadronic/models/parton_string/hadronization/include \
|
||||
-I$(G4BASE)/processes/hadronic/models/parton_string/management/include \
|
||||
-I$(G4BASE)/processes/hadronic/models/parton_string/qgsm/include \
|
||||
-I$(G4BASE)/processes/hadronic/models/photolepton_hadron/muon_nuclear/include \
|
||||
-I$(G4BASE)/processes/hadronic/models/pre_equilibrium/exciton_model/include \
|
||||
-I$(G4BASE)/processes/hadronic/models/radioactive_decay/include \
|
||||
-I$(G4BASE)/processes/hadronic/models/theo_high_energy/include \
|
||||
-I$(G4BASE)/processes/hadronic/util/include \
|
||||
-I$(G4BASE)/materials/include
|
||||
|
||||
include $(G4INSTALL)/config/common.gmk
|
||||
@@ -5,6 +5,11 @@ which **must** added in reverse chronological order (newest at the top). It must
|
||||
be used as a substitute for writing good git commit messages!
|
||||
|
||||
|
||||
## 2023-05-15 Alberto Ribon (phys-ctor-stopping-V11-01-00)
|
||||
- G4StoppingPhysicsWithINCLXX : new class, similar to G4StoppingPhysics,
|
||||
with the only difference that the INCLXX model (instead of FTFP) is
|
||||
utilized for the antiproton annihilation at rest.
|
||||
|
||||
## 2021-12-10 Ben Morgan (phys-ctor-stopping-V11-00-00)
|
||||
- Change to new Markdown History format
|
||||
|
||||
|
||||
@@ -17,3 +17,7 @@
|
||||
The same as G4StoppingPhysics, except that for anti-proton and anti-neutron
|
||||
annihilation at rest it uses Fritiof coupled with Binary Cascade.
|
||||
|
||||
G4StoppingPhysicsWithINCLXX
|
||||
---------------------------
|
||||
The same as G4StoppingPhysics, except that for anti-proton annihilation
|
||||
at rest it uses the INCLXX model.
|
||||
|
||||
@@ -0,0 +1,77 @@
|
||||
//
|
||||
// ********************************************************************
|
||||
// * License and Disclaimer *
|
||||
// * *
|
||||
// * The Geant4 software is copyright of the Copyright Holders of *
|
||||
// * the Geant4 Collaboration. It is provided under the terms and *
|
||||
// * conditions of the Geant4 Software License, included in the file *
|
||||
// * LICENSE and available at http://cern.ch/geant4/license . These *
|
||||
// * include a list of copyright holders. *
|
||||
// * *
|
||||
// * Neither the authors of this software system, nor their employing *
|
||||
// * institutes,nor the agencies providing financial support for this *
|
||||
// * work make any representation or warranty, express or implied, *
|
||||
// * regarding this software system or assume any liability for its *
|
||||
// * use. Please see the license in the file LICENSE and URL above *
|
||||
// * for the full disclaimer and the limitation of liability. *
|
||||
// * *
|
||||
// * This code implementation is the result of the scientific and *
|
||||
// * technical work of the GEANT4 collaboration. *
|
||||
// * By using, copying, modifying or distributing the software (or *
|
||||
// * any work based on the software) you agree to acknowledge its *
|
||||
// * use in resulting scientific publications, and indicate your *
|
||||
// * acceptance of all terms of the Geant4 Software license. *
|
||||
// ********************************************************************
|
||||
//
|
||||
//
|
||||
//---------------------------------------------------------------------------
|
||||
//
|
||||
// ClassName: G4StoppingPhysicsWithINCLXX
|
||||
//
|
||||
// Author: Alberto Ribon
|
||||
//
|
||||
// Date: May 2023
|
||||
//
|
||||
// Modified:
|
||||
//
|
||||
// Class Description:
|
||||
//
|
||||
// This class provides the nuclear capture at rest of negatively charged
|
||||
// particles, using: Bertini for pi-, K-, Sigma-, Xi-, and Omega-;
|
||||
// INCLXX for anti-proton;
|
||||
// Fritiof/Precompound for anti-neutron, anti-lambda,
|
||||
// anti-sigma0, anti-sigma+, anti-xi0 and anti-nuclei;
|
||||
// another model for mu-.
|
||||
//
|
||||
//----------------------------------------------------------------------------
|
||||
|
||||
#ifndef G4StoppingPhysicsWithINCLXX_h
|
||||
#define G4StoppingPhysicsWithINCLXX_h 1
|
||||
|
||||
#include "globals.hh"
|
||||
#include "G4VPhysicsConstructor.hh"
|
||||
|
||||
class G4StoppingPhysicsWithINCLXX : public G4VPhysicsConstructor {
|
||||
public:
|
||||
G4StoppingPhysicsWithINCLXX( G4int ver = 1 );
|
||||
G4StoppingPhysicsWithINCLXX( const G4String& name, G4int ver = 1,
|
||||
G4bool UseMuonMinusCapture = true );
|
||||
~G4StoppingPhysicsWithINCLXX() override;
|
||||
|
||||
// This method will be invoked in the Construct() method.
|
||||
// each particle type will be instantiated
|
||||
virtual void ConstructParticle() override;
|
||||
|
||||
// This method will be invoked in the Construct() method.
|
||||
// each physics process will be instantiated and
|
||||
// registered to the process manager of each particle type
|
||||
virtual void ConstructProcess() override;
|
||||
|
||||
void SetMuonMinusCapture(G4bool val) { useMuonMinusCapture = val; };
|
||||
|
||||
private:
|
||||
G4int verbose;
|
||||
G4bool useMuonMinusCapture;
|
||||
};
|
||||
|
||||
#endif
|
||||
@@ -5,9 +5,11 @@ geant4_add_module(G4phys_ctor_stopping
|
||||
PUBLIC_HEADERS
|
||||
G4StoppingPhysics.hh
|
||||
G4StoppingPhysicsFritiofWithBinaryCascade.hh
|
||||
G4StoppingPhysicsWithINCLXX.hh
|
||||
SOURCES
|
||||
G4StoppingPhysics.cc
|
||||
G4StoppingPhysicsFritiofWithBinaryCascade.cc)
|
||||
G4StoppingPhysicsFritiofWithBinaryCascade.cc
|
||||
G4StoppingPhysicsWithINCLXX.cc)
|
||||
|
||||
geant4_module_link_libraries(G4phys_ctor_stopping
|
||||
PUBLIC
|
||||
|
||||
@@ -0,0 +1,177 @@
|
||||
//
|
||||
// ********************************************************************
|
||||
// * License and Disclaimer *
|
||||
// * *
|
||||
// * The Geant4 software is copyright of the Copyright Holders of *
|
||||
// * the Geant4 Collaboration. It is provided under the terms and *
|
||||
// * conditions of the Geant4 Software License, included in the file *
|
||||
// * LICENSE and available at http://cern.ch/geant4/license . These *
|
||||
// * include a list of copyright holders. *
|
||||
// * *
|
||||
// * Neither the authors of this software system, nor their employing *
|
||||
// * institutes,nor the agencies providing financial support for this *
|
||||
// * work make any representation or warranty, express or implied, *
|
||||
// * regarding this software system or assume any liability for its *
|
||||
// * use. Please see the license in the file LICENSE and URL above *
|
||||
// * for the full disclaimer and the limitation of liability. *
|
||||
// * *
|
||||
// * This code implementation is the result of the scientific and *
|
||||
// * technical work of the GEANT4 collaboration. *
|
||||
// * By using, copying, modifying or distributing the software (or *
|
||||
// * any work based on the software) you agree to acknowledge its *
|
||||
// * use in resulting scientific publications, and indicate your *
|
||||
// * acceptance of all terms of the Geant4 Software license. *
|
||||
// ********************************************************************
|
||||
//
|
||||
//
|
||||
//---------------------------------------------------------------------------
|
||||
//
|
||||
// ClassName: G4StoppingPhysicsWithINCLXX
|
||||
//
|
||||
// Author: Alberto Ribon
|
||||
//
|
||||
// Date: May 2023
|
||||
//
|
||||
// Modified:
|
||||
//
|
||||
//----------------------------------------------------------------------------
|
||||
|
||||
#include "G4StoppingPhysicsWithINCLXX.hh"
|
||||
#include "G4SystemOfUnits.hh"
|
||||
#include "G4HadronicAbsorptionBertini.hh"
|
||||
#include "G4HadronicAbsorptionFritiof.hh"
|
||||
#include "G4HadronicAbsorptionINCLXX.hh"
|
||||
#include "G4MuonMinusCapture.hh"
|
||||
#include "G4ParticleDefinition.hh"
|
||||
#include "G4ProcessManager.hh"
|
||||
#include "G4LeptonConstructor.hh"
|
||||
#include "G4MesonConstructor.hh"
|
||||
#include "G4BaryonConstructor.hh"
|
||||
#include "G4MuonMinus.hh"
|
||||
#include "G4PionMinus.hh"
|
||||
#include "G4BuilderType.hh"
|
||||
|
||||
// factory
|
||||
#include "G4PhysicsConstructorFactory.hh"
|
||||
//
|
||||
G4_DECLARE_PHYSCONSTR_FACTORY(G4StoppingPhysicsWithINCLXX);
|
||||
|
||||
|
||||
G4StoppingPhysicsWithINCLXX::G4StoppingPhysicsWithINCLXX( G4int ver ) :
|
||||
G4StoppingPhysicsWithINCLXX( "stopping", ver ) {}
|
||||
|
||||
|
||||
G4StoppingPhysicsWithINCLXX::G4StoppingPhysicsWithINCLXX( const G4String& name, G4int ver,
|
||||
G4bool useMuCapture ) :
|
||||
G4VPhysicsConstructor( name ),
|
||||
verbose( ver ),
|
||||
useMuonMinusCapture( useMuCapture )
|
||||
{
|
||||
SetPhysicsType( bStopping );
|
||||
if ( verbose > 1 ) G4cout << "### G4StoppingPhysicsWithINCLXX" << G4endl;
|
||||
}
|
||||
|
||||
|
||||
G4StoppingPhysicsWithINCLXX::~G4StoppingPhysicsWithINCLXX() {}
|
||||
|
||||
|
||||
void G4StoppingPhysicsWithINCLXX::ConstructParticle() {
|
||||
// G4cout << "G4StoppingPhysicsWithINCLXX::ConstructParticle" << G4endl;
|
||||
G4LeptonConstructor pLeptonConstructor;
|
||||
pLeptonConstructor.ConstructParticle();
|
||||
|
||||
G4MesonConstructor pMesonConstructor;
|
||||
pMesonConstructor.ConstructParticle();
|
||||
|
||||
G4BaryonConstructor pBaryonConstructor;
|
||||
pBaryonConstructor.ConstructParticle();
|
||||
}
|
||||
|
||||
|
||||
void G4StoppingPhysicsWithINCLXX::ConstructProcess() {
|
||||
if ( verbose > 1 ) G4cout << "### G4StoppingPhysicsWithINCLXX::ConstructProcess " << G4endl;
|
||||
|
||||
G4MuonMinusCapture* muProcess = nullptr;
|
||||
if ( useMuonMinusCapture ) muProcess = new G4MuonMinusCapture;
|
||||
|
||||
G4HadronicAbsorptionBertini* hBertiniProcess = new G4HadronicAbsorptionBertini;
|
||||
G4HadronicAbsorptionFritiof* hFritiofProcess = new G4HadronicAbsorptionFritiof;
|
||||
G4HadronicAbsorptionINCLXX* hINCLXXProcess = new G4HadronicAbsorptionINCLXX;
|
||||
|
||||
const G4double mThreshold = 130.0*MeV;
|
||||
|
||||
// Add Stopping Process
|
||||
G4ParticleDefinition* particle = nullptr;
|
||||
G4ProcessManager* pmanager = nullptr;
|
||||
|
||||
auto myParticleIterator = GetParticleIterator();
|
||||
myParticleIterator->reset();
|
||||
|
||||
while ( (*myParticleIterator)() ) {
|
||||
|
||||
particle = myParticleIterator->value();
|
||||
pmanager = particle->GetProcessManager();
|
||||
|
||||
if ( useMuonMinusCapture && particle == G4MuonMinus::MuonMinus() ) {
|
||||
pmanager->AddRestProcess( muProcess );
|
||||
if ( verbose > 1 ) {
|
||||
G4cout << "### G4StoppingPhysicsWithINCLXX added G4MuonMinusCapture for "
|
||||
<< particle->GetParticleName() << G4endl;
|
||||
}
|
||||
}
|
||||
|
||||
if ( particle->GetPDGCharge() <= 0.0 &&
|
||||
particle->GetPDGMass() > mThreshold &&
|
||||
! particle->IsShortLived() ) {
|
||||
|
||||
// Use Fritiof/Precompound for: anti-neutron, anti-lambda,
|
||||
// anti-sigma0, anti-sigma+, anti-xi0 and anti-nuclei.
|
||||
if ( particle == G4AntiNeutron::Definition() ||
|
||||
particle == G4AntiLambda::Definition() ||
|
||||
particle == G4AntiSigmaZero::Definition() ||
|
||||
particle == G4AntiSigmaPlus::Definition() ||
|
||||
particle == G4AntiXiZero::Definition() ||
|
||||
particle->GetBaryonNumber() < -1 ) { // Anti-nuclei
|
||||
if ( hFritiofProcess->IsApplicable( *particle ) ) {
|
||||
pmanager->AddRestProcess( hFritiofProcess );
|
||||
if ( verbose > 1 ) {
|
||||
G4cout << "### G4HadronicAbsorptionFritiof added for "
|
||||
<< particle->GetParticleName() << G4endl;
|
||||
}
|
||||
}
|
||||
|
||||
// Use INCLXX/Precompound for antiproton
|
||||
} else if ( particle == G4AntiProton::Definition() ) {
|
||||
if ( hINCLXXProcess->IsApplicable( *particle ) ) {
|
||||
pmanager->AddRestProcess( hINCLXXProcess );
|
||||
if ( verbose > 1 ) {
|
||||
G4cout << "### G4HadronicAbsorptionINCLXX added for "
|
||||
<< particle->GetParticleName() << G4endl;
|
||||
}
|
||||
}
|
||||
|
||||
// Use Bertini for pi-, K-, Sigma-, Xi-, and Omega-
|
||||
} else if ( particle == G4PionMinus::Definition() ||
|
||||
particle == G4KaonMinus::Definition() ||
|
||||
particle == G4SigmaMinus::Definition() ||
|
||||
particle == G4XiMinus::Definition() ||
|
||||
particle == G4OmegaMinus::Definition() ) {
|
||||
if ( hBertiniProcess->IsApplicable( *particle ) ) {
|
||||
pmanager->AddRestProcess( hBertiniProcess );
|
||||
if ( verbose > 1 ) {
|
||||
G4cout << "### G4HadronicAbsorptionBertini added for "
|
||||
<< particle->GetParticleName() << G4endl;
|
||||
}
|
||||
}
|
||||
|
||||
} else {
|
||||
if ( verbose > 1 ) {
|
||||
G4cout << "WARNING in G4StoppingPhysicsWithINCLXX::ConstructProcess: \
|
||||
not able to deal with nuclear stopping of "
|
||||
<< particle->GetParticleName() << G4endl;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
} // end of while loop
|
||||
}
|
||||
@@ -1,99 +0,0 @@
|
||||
# ---------------------------------------------------------------------------
|
||||
# GNUmakefile for physics_lists/lists library. Gunter Folger 25-Oct-2006.
|
||||
# ---------------------------------------------------------------------------
|
||||
|
||||
name := G4phys_lists
|
||||
|
||||
ifndef G4INSTALL
|
||||
G4INSTALL = ../../..
|
||||
endif
|
||||
|
||||
include $(G4INSTALL)/config/architecture.gmk
|
||||
|
||||
CPPFLAGS += -DG4PROCESSES_EXPORT
|
||||
|
||||
CPPFLAGS += -I$(G4BASE)/global/management/include \
|
||||
-I$(G4BASE)/global/HEPRandom/include \
|
||||
-I$(G4BASE)/global/HEPGeometry/include \
|
||||
-I$(G4BASE)/geometry/volumes/include \
|
||||
-I$(G4BASE)/geometry/management/include \
|
||||
-I$(G4BASE)/geometry/magneticfield/include \
|
||||
-I$(G4BASE)/geometry/navigation/include \
|
||||
-I$(G4BASE)/intercoms/include \
|
||||
-I$(G4BASE)/track/include \
|
||||
-I$(G4BASE)/event/include \
|
||||
-I$(G4BASE)/particles/shortlived/include \
|
||||
-I$(G4BASE)/particles/management/include \
|
||||
-I$(G4BASE)/particles/leptons/include \
|
||||
-I$(G4BASE)/particles/bosons/include \
|
||||
-I$(G4BASE)/particles/hadrons/mesons/include \
|
||||
-I$(G4BASE)/particles/hadrons/barions/include \
|
||||
-I$(G4BASE)/particles/hadrons/ions/include \
|
||||
-I$(G4BASE)/run/include \
|
||||
-I$(G4BASE)/tracking/include \
|
||||
-I$(G4BASE)/digits_hits/hits/include \
|
||||
-I$(G4BASE)/digits_hits/digits/include \
|
||||
-I$(G4BASE)/physics_lists/builders/include \
|
||||
-I$(G4BASE)/physics_lists/constructors/decay/include \
|
||||
-I$(G4BASE)/physics_lists/constructors/electromagnetic/include \
|
||||
-I$(G4BASE)/physics_lists/constructors/factory/include \
|
||||
-I$(G4BASE)/physics_lists/constructors/gamma_lepto_nuclear/include \
|
||||
-I$(G4BASE)/physics_lists/constructors/hadron_elastic/include \
|
||||
-I$(G4BASE)/physics_lists/constructors/hadron_inelastic/include \
|
||||
-I$(G4BASE)/physics_lists/constructors/ions/include \
|
||||
-I$(G4BASE)/physics_lists/constructors/limiters/include \
|
||||
-I$(G4BASE)/physics_lists/constructors/stopping/include \
|
||||
-I$(G4BASE)/physics_lists/util/include \
|
||||
-I$(G4BASE)/processes/management/include \
|
||||
-I$(G4BASE)/processes/decay/include \
|
||||
-I$(G4BASE)/processes/cuts/include \
|
||||
-I$(G4BASE)/processes/optical/include \
|
||||
-I$(G4BASE)/processes/transportation/include \
|
||||
-I$(G4BASE)/processes/electromagnetic/dna/include \
|
||||
-I$(G4BASE)/processes/electromagnetic/lowenergy/include \
|
||||
-I$(G4BASE)/processes/electromagnetic/highenergy/include \
|
||||
-I$(G4BASE)/processes/electromagnetic/standard/include \
|
||||
-I$(G4BASE)/processes/electromagnetic/muons/include \
|
||||
-I$(G4BASE)/processes/electromagnetic/utils/include \
|
||||
-I$(G4BASE)/processes/electromagnetic/xrays/include \
|
||||
-I$(G4BASE)/processes/hadronic/cross_sections/include \
|
||||
-I$(G4BASE)/processes/hadronic/stopping/include \
|
||||
-I$(G4BASE)/processes/hadronic/management/include \
|
||||
-I$(G4BASE)/processes/hadronic/processes/include \
|
||||
-I$(G4BASE)/processes/hadronic/util/include \
|
||||
-I$(G4BASE)/physics_lists/builders/include \
|
||||
-I$(G4BASE)/physics_lists/constructors/limiters/include \
|
||||
-I$(G4BASE)/processes/hadronic/models/binary_cascade/include \
|
||||
-I$(G4BASE)/processes/hadronic/models/cascade/cascade/include \
|
||||
-I$(G4BASE)/processes/hadronic/models/cascade/evaporation/include \
|
||||
-I$(G4BASE)/processes/hadronic/models/cascade/utils/include \
|
||||
-I$(G4BASE)/processes/hadronic/models/coherent_elastic/include \
|
||||
-I$(G4BASE)/processes/hadronic/models/de_excitation/evaporation/include \
|
||||
-I$(G4BASE)/processes/hadronic/models/de_excitation/fermi_breakup/include \
|
||||
-I$(G4BASE)/processes/hadronic/models/de_excitation/fission/include \
|
||||
-I$(G4BASE)/processes/hadronic/models/de_excitation/gem_evaporation/include \
|
||||
-I$(G4BASE)/processes/hadronic/models/de_excitation/handler/include \
|
||||
-I$(G4BASE)/processes/hadronic/models/de_excitation/management/include \
|
||||
-I$(G4BASE)/processes/hadronic/models/de_excitation/multifragmentation/include \
|
||||
-I$(G4BASE)/processes/hadronic/models/de_excitation/photon_evaporation/include \
|
||||
-I$(G4BASE)/processes/hadronic/models/de_excitation/util/include \
|
||||
-I$(G4BASE)/processes/hadronic/models/im_r_matrix/include \
|
||||
-I$(G4BASE)/processes/hadronic/models/inclxx/utils/include \
|
||||
-I$(G4BASE)/processes/hadronic/models/inclxx/incl_physics/include \
|
||||
-I$(G4BASE)/processes/hadronic/models/inclxx/interface/include \
|
||||
-I$(G4BASE)/processes/hadronic/models/isotope_production/include \
|
||||
-I$(G4BASE)/processes/hadronic/models/lend/include \
|
||||
-I$(G4BASE)/processes/hadronic/models/lepto_nuclear/include \
|
||||
-I$(G4BASE)/processes/hadronic/models/particle_hp/include \
|
||||
-I$(G4BASE)/processes/hadronic/models/parton_string/diffraction/include \
|
||||
-I$(G4BASE)/processes/hadronic/models/parton_string/hadronization/include \
|
||||
-I$(G4BASE)/processes/hadronic/models/parton_string/management/include \
|
||||
-I$(G4BASE)/processes/hadronic/models/parton_string/qgsm/include \
|
||||
-I$(G4BASE)/processes/hadronic/models/photolepton_hadron/muon_nuclear/include \
|
||||
-I$(G4BASE)/processes/hadronic/models/pre_equilibrium/exciton_model/include \
|
||||
-I$(G4BASE)/processes/hadronic/models/radioactive_decay/include \
|
||||
-I$(G4BASE)/processes/hadronic/models/theo_high_energy/include \
|
||||
-I$(G4BASE)/processes/hadronic/util/include \
|
||||
-I$(G4BASE)/materials/include
|
||||
|
||||
include $(G4INSTALL)/config/common.gmk
|
||||
@@ -4,6 +4,45 @@ See `CONTRIBUTING.rst` for details of **required** info/format for each entry,
|
||||
which **must** added in reverse chronological order (newest at the top). It must **not**
|
||||
be used as a substitute for writing good git commit messages!
|
||||
|
||||
## 2023-05-15 Alberto Ribon (phys-lists-V11-01-03)
|
||||
- Use the new class G4StoppingPhysicsWithINCLXX (instead of G4StoppingPhysics)
|
||||
in INCLXXPhysicsListHelper : all the INCLXX-based physics lists use INCLXX
|
||||
for the antiproton annihilation at rest.
|
||||
|
||||
## 2023-05-10 Alberto Ribon (phys-lists-V11-01-02)
|
||||
- G4PhysListFactory : introduced the new physics list names `Shielding_HP` and
|
||||
`ShieldingM_HP` as alias of, respectively, `Shielding` and `ShieldingM`;
|
||||
replaced `Shielding_T` and `ShieldingM_T` with, respectively, `Shielding_HPT`
|
||||
and `ShieldingM_HPT`.
|
||||
These new aliases allow to have a consistent notation `_HPT` for all the
|
||||
HP-based physics lists when the special elastic scattering treatment of
|
||||
thermal neutrons is enabled.
|
||||
- Shielding : inform the user that the new physics list names (to be used
|
||||
with the physics list factory) `Shielding_HP` and `ShieldingM_HP` are
|
||||
equivalent to, respectively, `Shielding` and `ShieldingM`.
|
||||
|
||||
## 2023-04-19 Alberto Ribon (phys-lists-V11-01-01)
|
||||
- Created the new class QBBC_ABLA, which is similar to QBBC, except that for
|
||||
hadron inelastic the constructor G4HadronInelasticQBBC_ABLA is used
|
||||
(instead of G4HadronInelasticQBBC): this means that the physics list
|
||||
QBBC_ABLA behaves as QBBC, with the only difference that for the final-state
|
||||
of nuclear inelastic interactions of charged pions and nucleons projectiles,
|
||||
the ABLA model (instead of the usual Precompound/de-excitation) is utilized
|
||||
for nuclear de-excitation.
|
||||
|
||||
## 2023-04-13 Alberto Ribon (phys-lists-V11-01-00)
|
||||
- Created the new class QGSP_BIC_HPT, which is similar to QGSP_BIC_HP, but with
|
||||
special treatment of elastic scattering of thermal neutrons activated.
|
||||
- G4PhysListFactory : added 6 new physics lists, corresponding to "HPT" variants
|
||||
(i.e. with special treatment of elastic scattering of thermal neutrons) of
|
||||
physics lists with "HP" already present (FTFP_BERT_HPT, QGSP_BERT_HPT,
|
||||
FTFP_INCLXX_HPT, QGSP_INCLXX_HPT, QGSP_BIC_HPT, QGSP_BIC_AllHPT,
|
||||
Shielding_T, ShieldingM_T). Of these, only one (QGSP_BIC_HPT) corresponds
|
||||
to a concrete new physics list, whereas the others are obtained from the
|
||||
"HP" physics lists by adding the physics constructor G4ThermalNeutrons.
|
||||
- G4PhysListFactoryMessenger : added the new UI command
|
||||
"/physics_lists/factory/addThermal" to enable the special treatment of
|
||||
elastic scattering of thermal neutrons for HP-based physics lists.
|
||||
|
||||
## 2021-12-10 Ben Morgan (phys-lists-V11-00-00)
|
||||
- Change to new Markdown History format
|
||||
|
||||
@@ -28,11 +28,7 @@
|
||||
//
|
||||
// ClassName: G4PhysListFactoryMessenger
|
||||
//
|
||||
// Author: 2002 J.P. Wellisch
|
||||
//
|
||||
// Modified:
|
||||
// 09.11.2005 V.Ivanchenko edit to provide a standard
|
||||
// 19.06.2006 V.Ivanchenko add mu-nuclear process
|
||||
// Author: 2017 V.Ivanchenko
|
||||
//
|
||||
//----------------------------------------------------------------------------
|
||||
//
|
||||
@@ -59,6 +55,7 @@ private:
|
||||
G4VModularPhysicsList* thePhysList;
|
||||
G4UIcommand* theRadDecay;
|
||||
G4UIcommand* theOptical;
|
||||
G4UIcommand* theThermal;
|
||||
G4UIdirectory* theDir;
|
||||
};
|
||||
|
||||
|
||||
@@ -52,6 +52,7 @@
|
||||
#include "G4EmExtraPhysics.hh"
|
||||
#include "G4IonINCLXXPhysics.hh"
|
||||
#include "G4StoppingPhysics.hh"
|
||||
#include "G4StoppingPhysicsWithINCLXX.hh"
|
||||
#include "G4HadronElasticPhysics.hh"
|
||||
#include "G4HadronElasticPhysicsHP.hh"
|
||||
#include "G4NeutronTrackingCut.hh"
|
||||
@@ -99,7 +100,7 @@ template<class T, bool withNeutronHP, bool withFTFP> TINCLXXPhysicsListHelper<T,
|
||||
this->RegisterPhysics( new G4HadronPhysicsINCLXX(G4String(1,static_cast<char>(ver)),true,withNeutronHP,withFTFP));
|
||||
|
||||
// Stopping Physics
|
||||
this->RegisterPhysics( new G4StoppingPhysics(ver) );
|
||||
this->RegisterPhysics( new G4StoppingPhysicsWithINCLXX(ver) );
|
||||
|
||||
// Ion Physics
|
||||
this->RegisterPhysics( new G4IonINCLXXPhysics(ver));
|
||||
|
||||
@@ -0,0 +1,60 @@
|
||||
//
|
||||
// ********************************************************************
|
||||
// * License and Disclaimer *
|
||||
// * *
|
||||
// * The Geant4 software is copyright of the Copyright Holders of *
|
||||
// * the Geant4 Collaboration. It is provided under the terms and *
|
||||
// * conditions of the Geant4 Software License, included in the file *
|
||||
// * LICENSE and available at http://cern.ch/geant4/license . These *
|
||||
// * include a list of copyright holders. *
|
||||
// * *
|
||||
// * Neither the authors of this software system, nor their employing *
|
||||
// * institutes,nor the agencies providing financial support for this *
|
||||
// * work make any representation or warranty, express or implied, *
|
||||
// * regarding this software system or assume any liability for its *
|
||||
// * use. Please see the license in the file LICENSE and URL above *
|
||||
// * for the full disclaimer and the limitation of liability. *
|
||||
// * *
|
||||
// * This code implementation is the result of the scientific and *
|
||||
// * technical work of the GEANT4 collaboration. *
|
||||
// * By using, copying, modifying or distributing the software (or *
|
||||
// * any work based on the software) you agree to acknowledge its *
|
||||
// * use in resulting scientific publications, and indicate your *
|
||||
// * acceptance of all terms of the Geant4 Software license. *
|
||||
// ********************************************************************
|
||||
//
|
||||
//
|
||||
//---------------------------------------------------------------------------
|
||||
//
|
||||
// ClassName: QBBC_ABLA
|
||||
//
|
||||
// Author: Alberto Ribon (CERN), April 2023
|
||||
//
|
||||
// The new, experimental physics list QBBC_ABLA is similar to the reference
|
||||
// physics list QBBC, except that for hadron inelastic the physics constructor
|
||||
// G4HadronInelasticQBBC_ABLA is used (instead of G4HadronInelasticQBBC):
|
||||
// in practice, QBBC_ABLA behaves as QBBC, with the only difference that for
|
||||
// the final-state of nuclear inelastic interactions of charged pions and
|
||||
// nucleons projectiles, the ABLA model (instead of the usual
|
||||
// Precompound/de-excitation) is utilized for nuclear de-excitation.
|
||||
//
|
||||
// Modified:
|
||||
//
|
||||
//----------------------------------------------------------------------------
|
||||
//
|
||||
#ifndef QBBC_ABLA_h
|
||||
#define QBBC_ABLA_h 1
|
||||
|
||||
#include "globals.hh"
|
||||
#include "G4VModularPhysicsList.hh"
|
||||
|
||||
|
||||
class QBBC_ABLA : public G4VModularPhysicsList {
|
||||
public:
|
||||
explicit QBBC_ABLA( G4int ver = 1, const G4String& type = "QBBC_ABLA" );
|
||||
virtual ~QBBC_ABLA() = default;
|
||||
QBBC_ABLA( const QBBC_ABLA& ) = delete;
|
||||
QBBC_ABLA& operator=( const QBBC_ABLA& right ) = delete;
|
||||
};
|
||||
|
||||
#endif
|
||||
@@ -0,0 +1,58 @@
|
||||
//
|
||||
// ********************************************************************
|
||||
// * License and Disclaimer *
|
||||
// * *
|
||||
// * The Geant4 software is copyright of the Copyright Holders of *
|
||||
// * the Geant4 Collaboration. It is provided under the terms and *
|
||||
// * conditions of the Geant4 Software License, included in the file *
|
||||
// * LICENSE and available at http://cern.ch/geant4/license . These *
|
||||
// * include a list of copyright holders. *
|
||||
// * *
|
||||
// * Neither the authors of this software system, nor their employing *
|
||||
// * institutes,nor the agencies providing financial support for this *
|
||||
// * work make any representation or warranty, express or implied, *
|
||||
// * regarding this software system or assume any liability for its *
|
||||
// * use. Please see the license in the file LICENSE and URL above *
|
||||
// * for the full disclaimer and the limitation of liability. *
|
||||
// * *
|
||||
// * This code implementation is the result of the scientific and *
|
||||
// * technical work of the GEANT4 collaboration. *
|
||||
// * By using, copying, modifying or distributing the software (or *
|
||||
// * any work based on the software) you agree to acknowledge its *
|
||||
// * use in resulting scientific publications, and indicate your *
|
||||
// * acceptance of all terms of the Geant4 Software license. *
|
||||
// ********************************************************************
|
||||
//
|
||||
//
|
||||
//---------------------------------------------------------------------------
|
||||
//
|
||||
// ClassName: QGSP_BIC_HPT
|
||||
//
|
||||
// Author: Alberto Ribon (CERN), April 2023
|
||||
//
|
||||
// Similar to QGSP_BIC_HP, with the special treatment of elastic scattering
|
||||
// of thermal neutrons (i.e. with kinetic energy below 4 eV) activated.
|
||||
// This special treatment, called Thermal Scattering Law (TSL), is based on
|
||||
// the S(alpha, beta) approach, which relies on both experimental measurements
|
||||
// and molecular dynamics calculations.
|
||||
//
|
||||
// Modified:
|
||||
//
|
||||
//----------------------------------------------------------------------------
|
||||
//
|
||||
#ifndef QGSP_BIC_HPT_h
|
||||
#define QGSP_BIC_HPT_h 1
|
||||
|
||||
#include "globals.hh"
|
||||
#include "G4VModularPhysicsList.hh"
|
||||
|
||||
|
||||
class QGSP_BIC_HPT : public G4VModularPhysicsList {
|
||||
public:
|
||||
QGSP_BIC_HPT( G4int ver = 1 );
|
||||
virtual ~QGSP_BIC_HPT() = default;
|
||||
QGSP_BIC_HPT( const QGSP_BIC_HPT &) = delete;
|
||||
QGSP_BIC_HPT & operator=( const QGSP_BIC_HPT &right ) = delete;
|
||||
};
|
||||
|
||||
#endif
|
||||
@@ -16,11 +16,13 @@ geant4_add_module(G4phys_lists
|
||||
LBE.hh
|
||||
NuBeam.hh
|
||||
QBBC.hh
|
||||
QBBC_ABLA.hh
|
||||
QGS_BIC.hh
|
||||
QGSP_BERT.hh
|
||||
QGSP_BERT_HP.hh
|
||||
QGSP_BIC.hh
|
||||
QGSP_BIC_HP.hh
|
||||
QGSP_BIC_HPT.hh
|
||||
QGSP_BIC_AllHP.hh
|
||||
QGSP_FTFP_BERT.hh
|
||||
INCLXXPhysicsListHelper.hh
|
||||
@@ -49,12 +51,14 @@ geant4_add_module(G4phys_lists
|
||||
LBE.cc
|
||||
NuBeam.cc
|
||||
QBBC.cc
|
||||
QBBC_ABLA.cc
|
||||
QGS_BIC.cc
|
||||
QGSP_BERT.cc
|
||||
QGSP_BERT_HP.cc
|
||||
QGSP_BIC_AllHP.cc
|
||||
QGSP_BIC.cc
|
||||
QGSP_BIC_HP.cc
|
||||
QGSP_BIC_HPT.cc
|
||||
QGSP_FTFP_BERT.cc
|
||||
Shielding.cc)
|
||||
|
||||
|
||||
@@ -32,6 +32,7 @@
|
||||
//
|
||||
// Modified:
|
||||
//
|
||||
// 2023.04.12 A.Ribon added _HPT variants (i.e. HP + thermal scattering)
|
||||
// 2014.08.05 K.L.Genser used provision for Hadronic Physics Variant M in
|
||||
// Shielding for ShieldingM
|
||||
//
|
||||
@@ -53,6 +54,7 @@
|
||||
#include "QGSP_BERT_HP.hh"
|
||||
#include "QGSP_BIC.hh"
|
||||
#include "QGSP_BIC_HP.hh"
|
||||
#include "QGSP_BIC_HPT.hh"
|
||||
#include "QGSP_BIC_AllHP.hh"
|
||||
#include "QGSP_FTFP_BERT.hh"
|
||||
#include "QGS_BIC.hh"
|
||||
@@ -61,6 +63,7 @@
|
||||
#include "Shielding.hh"
|
||||
#include "ShieldingLEND.hh"
|
||||
#include "NuBeam.hh"
|
||||
#include "G4ThermalNeutrons.hh"
|
||||
|
||||
#include "G4EmStandardPhysics.hh"
|
||||
#include "G4EmStandardPhysics_option1.hh"
|
||||
@@ -79,13 +82,16 @@
|
||||
G4PhysListFactory::G4PhysListFactory(G4int ver)
|
||||
: defName("FTFP_BERT"),verbose(ver),theMessenger(nullptr)
|
||||
{
|
||||
nlists_hadr = 23;
|
||||
G4String ss[23] = {
|
||||
nlists_hadr = 33;
|
||||
G4String ss[33] = {
|
||||
"FTFP_BERT","FTFP_BERT_TRV","FTFP_BERT_ATL","FTFP_BERT_HP","FTFQGSP_BERT",
|
||||
"FTFP_INCLXX","FTFP_INCLXX_HP","FTF_BIC", "LBE","QBBC",
|
||||
"QGSP_BERT","QGSP_BERT_HP","QGSP_BIC","QGSP_BIC_HP","QGSP_BIC_AllHP",
|
||||
"QGSP_FTFP_BERT","QGSP_INCLXX","QGSP_INCLXX_HP","QGS_BIC",
|
||||
"Shielding","ShieldingLEND","ShieldingM","NuBeam"};
|
||||
"Shielding","ShieldingLEND","ShieldingM","NuBeam",
|
||||
"Shielding_HP","ShieldingM_HP",
|
||||
"FTFP_BERT_HPT", "FTFP_INCLXX_HPT", "QGSP_BERT_HPT", "QGSP_BIC_HPT",
|
||||
"QGSP_BIC_AllHPT", "QGSP_INCLXX_HPT", "Shielding_HPT", "ShieldingM_HPT" };
|
||||
for(size_t i=0; i<nlists_hadr; ++i) {
|
||||
listnames_hadr.push_back(ss[i]);
|
||||
}
|
||||
@@ -177,6 +183,23 @@ G4PhysListFactory::GetReferencePhysList(const G4String& name)
|
||||
else if(had_name == "ShieldingLEND") {p = new ShieldingLEND(verbose);}
|
||||
else if(had_name == "ShieldingM") {p = new Shielding(verbose,"HP","M");}
|
||||
else if(had_name == "NuBeam") {p = new NuBeam(verbose);}
|
||||
else if(had_name == "Shielding_HP") {p = new Shielding(verbose);}
|
||||
else if(had_name == "ShieldingM_HP") {p = new Shielding(verbose,"HP","M");}
|
||||
else if(had_name == "FTFP_BERT_HPT") {p = new FTFP_BERT_HP(verbose);
|
||||
p->RegisterPhysics(new G4ThermalNeutrons);}
|
||||
else if(had_name == "FTFP_INCLXX_HPT"){p = new FTFP_INCLXX_HP(verbose);
|
||||
p->RegisterPhysics(new G4ThermalNeutrons);}
|
||||
else if(had_name == "QGSP_BERT_HPT") {p = new QGSP_BERT_HP(verbose);
|
||||
p->RegisterPhysics(new G4ThermalNeutrons);}
|
||||
else if(had_name == "QGSP_BIC_HPT") {p = new QGSP_BIC_HPT(verbose);}
|
||||
else if(had_name == "QGSP_BIC_AllHPT"){p = new QGSP_BIC_AllHP(verbose);
|
||||
p->RegisterPhysics(new G4ThermalNeutrons);}
|
||||
else if(had_name == "QGSP_INCLXX_HPT"){p = new QGSP_INCLXX_HP(verbose);
|
||||
p->RegisterPhysics(new G4ThermalNeutrons);}
|
||||
else if(had_name == "Shielding_HPT") {p = new Shielding(verbose);
|
||||
p->RegisterPhysics(new G4ThermalNeutrons);}
|
||||
else if(had_name == "ShieldingM_HPT") {p = new Shielding(verbose,"HP","M");
|
||||
p->RegisterPhysics(new G4ThermalNeutrons);}
|
||||
else {
|
||||
p = new FTFP_BERT(verbose);
|
||||
G4ExceptionDescription ed;
|
||||
|
||||
@@ -37,6 +37,8 @@
|
||||
#include "G4VModularPhysicsList.hh"
|
||||
#include "G4RadioactiveDecayPhysics.hh"
|
||||
#include "G4OpticalPhysics.hh"
|
||||
#include "G4ThermalNeutrons.hh"
|
||||
|
||||
|
||||
G4PhysListFactoryMessenger::G4PhysListFactoryMessenger(G4VModularPhysicsList* pl)
|
||||
{
|
||||
@@ -53,10 +55,16 @@ G4PhysListFactoryMessenger::G4PhysListFactoryMessenger(G4VModularPhysicsList* pl
|
||||
theOptical = new G4UIcommand("/physics_lists/factory/addOptical",this);
|
||||
theOptical->SetGuidance("Enable optical physics.");
|
||||
theOptical->AvailableForStates(G4State_PreInit);
|
||||
|
||||
theThermal = new G4UIcommand("/physics_lists/factory/addThermal",this);
|
||||
theThermal->SetGuidance("Enable special elastic scattering of thermal neutrons (Ekin < 4 eV).");
|
||||
theThermal->SetGuidance("Important note: to be used only with HP-based physics lists!");
|
||||
theThermal->AvailableForStates(G4State_PreInit);
|
||||
}
|
||||
|
||||
G4PhysListFactoryMessenger::~G4PhysListFactoryMessenger()
|
||||
{
|
||||
delete theThermal;
|
||||
delete theOptical;
|
||||
delete theRadDecay;
|
||||
delete theDir;
|
||||
@@ -69,5 +77,7 @@ void G4PhysListFactoryMessenger::SetNewValue(G4UIcommand* aComm, G4String)
|
||||
thePhysList->RegisterPhysics(new G4RadioactiveDecayPhysics(ver));
|
||||
} else if(aComm == theOptical) {
|
||||
thePhysList->RegisterPhysics(new G4OpticalPhysics(ver));
|
||||
} else if(aComm == theThermal) {
|
||||
thePhysList->RegisterPhysics(new G4ThermalNeutrons(ver));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,74 @@
|
||||
//
|
||||
// ********************************************************************
|
||||
// * License and Disclaimer *
|
||||
// * *
|
||||
// * The Geant4 software is copyright of the Copyright Holders of *
|
||||
// * the Geant4 Collaboration. It is provided under the terms and *
|
||||
// * conditions of the Geant4 Software License, included in the file *
|
||||
// * LICENSE and available at http://cern.ch/geant4/license . These *
|
||||
// * include a list of copyright holders. *
|
||||
// * *
|
||||
// * Neither the authors of this software system, nor their employing *
|
||||
// * institutes,nor the agencies providing financial support for this *
|
||||
// * work make any representation or warranty, express or implied, *
|
||||
// * regarding this software system or assume any liability for its *
|
||||
// * use. Please see the license in the file LICENSE and URL above *
|
||||
// * for the full disclaimer and the limitation of liability. *
|
||||
// * *
|
||||
// * This code implementation is the result of the scientific and *
|
||||
// * technical work of the GEANT4 collaboration. *
|
||||
// * By using, copying, modifying or distributing the software (or *
|
||||
// * any work based on the software) you agree to acknowledge its *
|
||||
// * use in resulting scientific publications, and indicate your *
|
||||
// * acceptance of all terms of the Geant4 Software license. *
|
||||
// ********************************************************************
|
||||
//
|
||||
//
|
||||
//---------------------------------------------------------------------------
|
||||
//
|
||||
// ClassName: QBBC_ABLA
|
||||
//
|
||||
// Author: Alberto Ribon (CERN), April 2023
|
||||
//
|
||||
// The new, experimental physics list QBBC_ABLA is similar to the reference
|
||||
// physics list QBBC, except that for hadron inelastic the physics constructor
|
||||
// G4HadronInelasticQBBC_ABLA is used (instead of G4HadronInelasticQBBC):
|
||||
// in practice, QBBC_ABLA behaves as QBBC, with the only difference that for
|
||||
// the final-state of nuclear inelastic interactions of charged pions and
|
||||
// nucleons projectiles, the ABLA model (instead of the usual
|
||||
// Precompound/de-excitation) is utilized for nuclear de-excitation.
|
||||
//
|
||||
// Modified:
|
||||
//
|
||||
//----------------------------------------------------------------------------
|
||||
//
|
||||
|
||||
#include "QBBC_ABLA.hh"
|
||||
#include "globals.hh"
|
||||
#include "G4PhysicalConstants.hh"
|
||||
#include "G4SystemOfUnits.hh"
|
||||
#include "G4DecayPhysics.hh"
|
||||
#include "G4EmStandardPhysics.hh"
|
||||
#include "G4EmExtraPhysics.hh"
|
||||
#include "G4StoppingPhysics.hh"
|
||||
#include "G4HadronInelasticQBBC_ABLA.hh"
|
||||
#include "G4HadronElasticPhysicsXS.hh"
|
||||
#include "G4IonPhysicsXS.hh"
|
||||
#include "G4IonElasticPhysics.hh"
|
||||
#include "G4NeutronTrackingCut.hh"
|
||||
|
||||
|
||||
QBBC_ABLA::QBBC_ABLA( G4int ver, const G4String& ) {
|
||||
if ( ver > 0 ) G4cout << "<<< Experimental Reference Physics List QBBC_ABLA " << G4endl;
|
||||
defaultCutValue = 0.7*CLHEP::mm;
|
||||
SetVerboseLevel( ver );
|
||||
RegisterPhysics( new G4EmStandardPhysics(ver) );
|
||||
RegisterPhysics( new G4EmExtraPhysics(ver) );
|
||||
RegisterPhysics( new G4DecayPhysics(ver) );
|
||||
RegisterPhysics( new G4HadronElasticPhysicsXS(ver) );
|
||||
RegisterPhysics( new G4StoppingPhysics(ver) );
|
||||
RegisterPhysics( new G4IonPhysicsXS(ver) );
|
||||
RegisterPhysics( new G4IonElasticPhysics(ver) );
|
||||
RegisterPhysics( new G4HadronInelasticQBBC_ABLA(ver) );
|
||||
RegisterPhysics( new G4NeutronTrackingCut(ver) );
|
||||
}
|
||||
@@ -0,0 +1,86 @@
|
||||
//
|
||||
// ********************************************************************
|
||||
// * License and Disclaimer *
|
||||
// * *
|
||||
// * The Geant4 software is copyright of the Copyright Holders of *
|
||||
// * the Geant4 Collaboration. It is provided under the terms and *
|
||||
// * conditions of the Geant4 Software License, included in the file *
|
||||
// * LICENSE and available at http://cern.ch/geant4/license . These *
|
||||
// * include a list of copyright holders. *
|
||||
// * *
|
||||
// * Neither the authors of this software system, nor their employing *
|
||||
// * institutes,nor the agencies providing financial support for this *
|
||||
// * work make any representation or warranty, express or implied, *
|
||||
// * regarding this software system or assume any liability for its *
|
||||
// * use. Please see the license in the file LICENSE and URL above *
|
||||
// * for the full disclaimer and the limitation of liability. *
|
||||
// * *
|
||||
// * This code implementation is the result of the scientific and *
|
||||
// * technical work of the GEANT4 collaboration. *
|
||||
// * By using, copying, modifying or distributing the software (or *
|
||||
// * any work based on the software) you agree to acknowledge its *
|
||||
// * use in resulting scientific publications, and indicate your *
|
||||
// * acceptance of all terms of the Geant4 Software license. *
|
||||
// ********************************************************************
|
||||
//
|
||||
//
|
||||
//---------------------------------------------------------------------------
|
||||
//
|
||||
// ClassName: QGSP_BIC_HPT
|
||||
//
|
||||
// Author: Alberto Ribon (CERN), April 2023
|
||||
//
|
||||
// Similar to QGSP_BIC_HP, with the special treatment of elastic scattering
|
||||
// of thermal neutrons (i.e. with kinetic energy below 4 eV) activated.
|
||||
// This special treatment, called Thermal Scattering Law (TSL), is based on
|
||||
// the S(alpha, beta) approach, which relies on both experimental measurements
|
||||
// and molecular dynamics calculations.
|
||||
//
|
||||
// Modified:
|
||||
//
|
||||
//----------------------------------------------------------------------------
|
||||
//
|
||||
|
||||
#include "G4DecayPhysics.hh"
|
||||
#include "G4RadioactiveDecayPhysics.hh"
|
||||
#include "G4EmStandardPhysics_option4.hh"
|
||||
#include "G4EmExtraPhysics.hh"
|
||||
#include "G4IonPhysics.hh"
|
||||
#include "G4IonElasticPhysics.hh"
|
||||
#include "G4StoppingPhysics.hh"
|
||||
#include "G4HadronElasticPhysicsHPT.hh"
|
||||
#include "QGSP_BIC_HPT.hh"
|
||||
#include "G4HadronPhysicsQGSP_BIC_HP.hh"
|
||||
|
||||
|
||||
QGSP_BIC_HPT::QGSP_BIC_HPT( G4int ver ) {
|
||||
if ( ver > 0 ) {
|
||||
G4cout << "<<< Geant4 Physics List simulation engine: QGSP_BIC_HPT" << G4endl << G4endl;
|
||||
}
|
||||
defaultCutValue = 0.7*CLHEP::mm;
|
||||
SetCutValue( 0.0, "proton" );
|
||||
SetVerboseLevel( ver );
|
||||
|
||||
// EM Physics
|
||||
RegisterPhysics( new G4EmStandardPhysics_option4(ver) );
|
||||
|
||||
// Synchroton Radiation & GN Physics
|
||||
RegisterPhysics( new G4EmExtraPhysics(ver) );
|
||||
|
||||
// Decays
|
||||
RegisterPhysics( new G4DecayPhysics(ver) );
|
||||
RegisterPhysics( new G4RadioactiveDecayPhysics(ver) );
|
||||
|
||||
// Hadron Elastic scattering
|
||||
RegisterPhysics( new G4HadronElasticPhysicsHPT(ver) );
|
||||
|
||||
// Hadron Physics
|
||||
RegisterPhysics( new G4HadronPhysicsQGSP_BIC_HP(ver) );
|
||||
|
||||
// Stopping Physics
|
||||
RegisterPhysics( new G4StoppingPhysics(ver) );
|
||||
|
||||
// Ion Physics
|
||||
RegisterPhysics( new G4IonElasticPhysics(ver) );
|
||||
RegisterPhysics( new G4IonPhysics(ver) );
|
||||
}
|
||||
@@ -82,8 +82,12 @@ Shielding::Shielding(G4int verbose, const G4String& n_model,
|
||||
if(verbose > 0) {
|
||||
G4cout << "<<< Geant4 Physics List simulation engine: Shielding"
|
||||
<< HadrPhysVariant << G4endl;
|
||||
if ( LEN_model=="LEND" )
|
||||
if ( LEN_model=="LEND" ) {
|
||||
G4cout << "<<< LEND will be used for low energy neutron and gamma projectiles" << G4endl;
|
||||
} else {
|
||||
G4cout << "<<< (Note that Shielding" << HadrPhysVariant << " and Shielding"
|
||||
<< HadrPhysVariant << "_HP are equivalent!)" << G4endl;
|
||||
}
|
||||
}
|
||||
defaultCutValue = 0.7*CLHEP::mm;
|
||||
SetCutValue(0, "proton");
|
||||
|
||||
@@ -1,39 +0,0 @@
|
||||
# ---------------------------------------------------------------------------
|
||||
# GNUmakefile for physics_lists/lists library. Gunter Folger 25-Oct-2006.
|
||||
# ---------------------------------------------------------------------------
|
||||
|
||||
name := G4physlist_util
|
||||
|
||||
ifndef G4INSTALL
|
||||
G4INSTALL = ../../..
|
||||
endif
|
||||
|
||||
include $(G4INSTALL)/config/architecture.gmk
|
||||
|
||||
CPPFLAGS += -DG4PROCESSES_EXPORT
|
||||
|
||||
CPPFLAGS += -I$(G4BASE)/global/management/include \
|
||||
-I$(G4BASE)/global/HEPRandom/include \
|
||||
-I$(G4BASE)/global/HEPGeometry/include \
|
||||
-I$(G4BASE)/geometry/management/include \
|
||||
-I$(G4BASE)/materials/include \
|
||||
-I$(G4BASE)/track/include \
|
||||
-I$(G4BASE)/particles/shortlived/include \
|
||||
-I$(G4BASE)/particles/management/include \
|
||||
-I$(G4BASE)/particles/leptons/include \
|
||||
-I$(G4BASE)/particles/bosons/include \
|
||||
-I$(G4BASE)/particles/hadrons/mesons/include \
|
||||
-I$(G4BASE)/particles/hadrons/barions/include \
|
||||
-I$(G4BASE)/particles/hadrons/ions/include \
|
||||
-I$(G4BASE)/processes/electromagnetic/utils/include \
|
||||
-I$(G4BASE)/processes/hadronic/cross_sections/include \
|
||||
-I$(G4BASE)/processes/hadronic/management/include \
|
||||
-I$(G4BASE)/processes/hadronic/models/de_excitation/management/include \
|
||||
-I$(G4BASE)/processes/hadronic/models/de_excitation/photon_evaporation/include \
|
||||
-I$(G4BASE)/processes/hadronic/models/parton_string/diffraction/include \
|
||||
-I$(G4BASE)/processes/hadronic/processes/include \
|
||||
-I$(G4BASE)/processes/hadronic/util/include \
|
||||
-I$(G4BASE)/processes/management/include \
|
||||
-I$(G4BASE)/run/include
|
||||
|
||||
include $(G4INSTALL)/config/common.gmk
|
||||
@@ -6,7 +6,8 @@ It must **not** be used as a substitute for writing good git commit messages!
|
||||
|
||||
-------------------------------------------------------------------------------
|
||||
|
||||
## 2022-12-30 Vladimir Ivanchenko (phys-util-V11-00-10)
|
||||
|
||||
## 2022-12-30 Vladimir Ivanchenko (phys-util-V11-01-00)
|
||||
- G4HadProcesses - avoid double instantiation of capture cross section
|
||||
|
||||
## 2022-11-24 Gabriele Cosmo (phys-util-V11-00-09)
|
||||
|
||||
Reference in New Issue
Block a user