Import Geant4 11.0.0.beta source tree

This commit is contained in:
Gabriele Cosmo
2021-06-25 16:12:29 +02:00
parent c968e26a39
commit 6399a014b6
4200 changed files with 207479 additions and 237366 deletions
@@ -1,17 +0,0 @@
#------------------------------------------------------------------------------
# CMakeLists.txt
# Module : G4hadronic_radioactivedecay
# Package: Geant4.src.G4processes.G4hadronic.G4hadronic_models.G4hadronic_radioactivedecay
#
# CMakeLists.txt for building a single granular library.
#
# Generated on : 24/9/2010
#
#
#------------------------------------------------------------------------------
if(GEANT4_BUILD_GRANULAR_LIBS)
include(Geant4MacroLibraryTargets)
GEANT4_GRANULAR_LIBRARY_TARGET(COMPONENT sources.cmake)
endif()
@@ -25,14 +25,11 @@ CPPFLAGS += -I$(G4BASE)/global/management/include \
-I$(G4BASE)/processes/electromagnetic/utils/include \
-I$(G4BASE)/processes/hadronic/management/include \
-I$(G4BASE)/processes/hadronic/util/include \
-I$(G4BASE)/processes/hadronic/processes/include \
-I$(G4BASE)/processes/hadronic/cross_sections/include \
-I$(G4BASE)/processes/hadronic/models/de_excitation/photon_evaporation/include \
-I$(G4BASE)/processes/hadronic/models/de_excitation/management/include \
-I$(G4BASE)/processes/hadronic/models/de_excitation/util/include \
-I$(G4BASE)/processes/hadronic/models/fission/include \
-I$(G4BASE)/processes/hadronic/models/management/include \
-I$(G4BASE)/processes/hadronic/models/util/include \
-I$(G4BASE)/particles/management/include \
-I$(G4BASE)/particles/leptons/include \
-I$(G4BASE)/particles/bosons/include \
@@ -14,11 +14,56 @@ track of all tags.
* Reverse chronological order (last date on top), please *
----------------------------------------------------------
15 April 2021 Vladimir Ivanchenko radioactive_decay-V10-06-11
21 May 2021 Dennis Wright radioactive_decay-V10-07-07
-----------------------------------------------------
- remove G4RadioactiveDecay.hh, .cc
- remove G4RadioactiveDecaymessenger.hh, .cc
- source.cmake: remove above filenames from list
- G4ITDecay.cc: remove #include G4RadioactiveDecay.hh
16 April 2021 Ben Morgan radioactive_decay-V10-07-06
----------------------------------------------------
- Migrate build to modular CMake API
27 April 2021 Alberto Ribon radioactive_decay-V10-07-05
---------------------------------------------------------
- G4RadioactiveDecayBase, G4RadioactiveDecayBaseMessenger : introduced
a new parameter for analogue mode to kill very long radioactive decays
at rest of nuclides happening later than this threshold parameter.
Its default value (10^27 ns) corresponds to more than twice the age of
the universe. The value of the threshold can be changed via a new UI
command, e.g. to set it to 1000 years:
"/process/had/rdm/thresholdForVeryLongDecayTime 3.1536e+10 second" .
(This kind of cut has been introduced in order to avoid to account
energy depositions happening after many billions of years in ordinary
materials used in calorimetry, in particular Tungsten and Lead - via
their their natural unstable, but very long lived, isotopes, such as
W183, W180 and Pb204. Note that the cut is not on the average, mean
lifetime, but on the actual sampled global decay time.)
15 April 2021 Vladimir Ivanchenko radioactive_decay-V10-07-04
---------------------------------------------------------------
- G4RadioactiveDecayBase - fix #2350
16 February 2021 Alberto Ribon radioactive_decay-V10-06-10
13 April 2021 Alberto Ribon radioactive_decay-V10-07-03
---------------------------------------------------------
- GNUmakefile, sources.cmake : removed the subdirectories
hadronic/models/management and hadronic/models/util
(that have been now deleted, with their classes moved to
hadronic/util and hadronic/management).
Removed also the useless dependency to hadronic/process.
31 March 2021 Gabriele Cosmo radioactive_decay-V10-07-02
----------------------------------------------------------
- Use existing facility to find logical volume in store, rather than looping
through in G4RadioactiveDecayBase/G4RadioactiveDecay Select/DeselectAVolume().
22 March 2021 Alberto Ribon radioactive_decay-V10-07-01
---------------------------------------------------------
- G4RadioactiveDecayBaseMessenger, G4RadioactivationMessenger,
G4RadioactiveDecaymessenger : removed deprecated commands.
16 February 2021 Alberto Ribon radioactive_decay-V10-07-00
------------------------------------------------------------
- G4RadioactiveDecayBase : set the weight of secondaries tracks to the
mother's weight value in the method G4RadioactiveDecayBase::DecayAnalog.
@@ -39,22 +84,22 @@ track of all tags.
12 May 2020 Alberto Ribon radioactive_decay-V10-06-08
------------------------------------------------------------
- G4RadioactiveDecayBase.cc , G4RadioactiveDecay.cc :
- G4RadioactiveDecayBase.cc , G4RadioactiveDecay.cc :
in the method BuildPhysicsTable, check the global hadronic verbosity level
before printing out information.
19 February 2020 Alberto Ribon radioactive_decay-V10-06-07
------------------------------------------------------------
- G4RadioactiveDecayBase.cc , G4RadioactiveDecay.cc , G4Radioactivation.cc :
use G4VERBOSE consistently;
use G4VERBOSE consistently;
for G4Radioactivation, forgotten change of verbosity from 0 to 1
at line 844.
12 February 2020 Alberto Ribon radioactive_decay-V10-06-06
------------------------------------------------------------
- G4RadioactiveDecayBase.cc , G4RadioactiveDecay.cc : forgotten change of
verbosity from 0 to 1, at lines: 309, 316, 331 and 932 for
G4RadioactiveDecayBase.cc , and 340, 396, 403, 418 and 1676 for
verbosity from 0 to 1, at lines: 309, 316, 331 and 932 for
G4RadioactiveDecayBase.cc , and 340, 396, 403, 418 and 1676 for
G4RadioactiveDecay.cc .
6 February 2020 Alberto Ribon radioactive_decay-V10-06-05
@@ -66,12 +111,12 @@ track of all tags.
-----------------------------------------------------------
- increased verbosity thresholds in G4RadioactiveDecay, G4RadioactiveDecayBase,
G4Radioctivation in order to reduce printout size
22 January 2020 Dennis Wright radioactive_decay-V10-06-03
-----------------------------------------------------------
- G4Radioactivation::AddDeexcitationSpectrumForBiasMode: fix memory leak
by deleting pevap_products. Addresses bug report #2164.
10 January 2020 Dennis Wright radioactive_decay-V10-06-02
-----------------------------------------------------------
- fix Coverity errors 102466 and 102470, "dereference before null test"
@@ -80,11 +125,11 @@ track of all tags.
- fix Coverity error 98937, uninitialized boolean, in G4SFDecay by removing
boolean applyARM, which was unused.
19 December 2019 Dennis Wright radioactive_decay-V10-06-01
------------------------------------------------------------
- G4RadioactiveDecay.cc, G4RadioactiveDecayBase.cc: change default verbosity
from 0 to 1, and remove G4cerr wherever it occurs and replace it with
- G4RadioactiveDecay.cc, G4RadioactiveDecayBase.cc: change default verbosity
from 0 to 1, and remove G4cerr wherever it occurs and replace it with
G4Exception or G4cout
15 December 2019 Dennis Wright radioactive_decay-V10-06-00
@@ -97,18 +142,18 @@ track of all tags.
-Add passing of type of sub-models to secondary particles generated in
G4RadioctiveDecay.cc and G4RadioctiveDecayBase.cc
-Add radioactive decay mode with emission of Triton, in
-Add radioactive decay mode with emission of Triton, in
G4RadioctiveDecay.cc, G4RadioctiveDecayBase.cc, and G4Radioactivation.
Code received from Anselmo Meregaglia.
20 August 2019 Dennis Wright radioactive_decay-V10-05-08
----------------------------------------------------------
- G4RadioactiveDecayBase, G4Radioactivation : remove spurious debug messages
- G4Radioactivation : remove verboseLevel member and SetVerboseLevel()
- G4Radioactivation : remove verboseLevel member and SetVerboseLevel()
and GetVerboseLevel() methods as they are already in the base classa
- remove G4cerr from G4Radioactivation and G4RadioactiveDecayBase. Replace
with G4cout.
with G4cout.
29 July 2019 Dennis Wright radioactive_decay-V10-05-07
--------------------------------------------------------
- G4RadioactiveDecayBase: split off unbiased decay part of DecayIt()
@@ -116,7 +161,7 @@ Code received from Anselmo Meregaglia.
protected.
- G4Radioactivation: correct bug in which AtRestDoIt() and PostStepDoIt()
both incorrectly call base class method DecayIt()
both incorrectly call base class method DecayIt()
15 July 2019 Dennis Wright radioactive_decay-V10-05-06
--------------------------------------------------------
@@ -131,25 +176,25 @@ Code received from Anselmo Meregaglia.
17 June 2019 Dennis Wright radioactive_decay-V10-05-04
--------------------------------------------------------
- G4RadioactivationMessenger : remove "fast beta" option (obsolete), internal
conversion option (not part of biasing) and atomic relaxation option (not
- G4RadioactivationMessenger : remove "fast beta" option (obsolete), internal
conversion option (not part of biasing) and atomic relaxation option (not
part of biasing).
Add analogueMC option which was forgotten when class was developed.
- G4RadioactiveDecayBaseMessenger : remove "fast beta" option
- G4RadioactiveDecayBaseMessenger : remove "fast beta" option
- G4RadioactiveDecayBase.hh : remove boolean FBeta
- replace G4ExceptionDescription in loop with simple string at exception time
(G4RadioactiveDecay, G4RadioactiveDecayBase, G4Radioactivation)
29 May 2019 Dennis Wright radioactive_decay-V10-05-03
-------------------------------------------------------
-------------------------------------------------------
- G4RadioactiveDecay::CalculateChainsFromParent and
G4Radioactivation::CalculateChainsFromParent : fix Coverity memory leak
G4Radioactivation::CalculateChainsFromParent : fix Coverity memory leak
of summedDecayTable
8 May 2019 Dennis Wright radioactive_decay-V10-05-02
-------------------------------------------------------
- Fix incorrect branching ratio sum for biased mode, to account for the addition
- Fix incorrect branching ratio sum for biased mode, to account for the addition
of N shell EC capture and spontaneous fission. Files affected:
G4Radioactivation.cc
G4RadioactiveDecay.cc
@@ -157,14 +202,14 @@ Code received from Anselmo Meregaglia.
4 April 2019 Dennis Wright radioactive_decay-V10-05-01
---------------------------------------------------------
- Add spontaneous fission channel
Add new class G4SFDecay to handle neutron and gamma generation using LLNL model
Add new class G4SFDecay to handle neutron and gamma generation using LLNL model
G4RadioactiveDecayMode.hh, .cc : add SpFission to enum
G4NucleusLimits.cc : set aMax to 260 (to accommodate 252Cf)
G4RadioactiveDecay.cc, G4RadioactiveDecayBase.cc : read spontaneous fission data
G4RadioactiveDecay.cc, G4RadioactiveDecayBase.cc : read spontaneous fission data
from database, insert into decay tables and instantiate G4SFDecay
modify sources.cmake to include fission model library and G4SFDecay
add fission model directory to GNUmakefile
modify sources.cmake to include fission model library and G4SFDecay
add fission model directory to GNUmakefile
14 December 2018 Dennis Wright radioactive_decay-V10-05-00
------------------------------------------------------------
- G4RadioactiveDecayBase.hh - add StreamInfo() method
@@ -183,9 +228,9 @@ Code received from Anselmo Meregaglia.
- G4ECCapture
-Add tables of PL2/PL1 PM2/PM1 and PN2/PN1 based on bound electrons radial wave amplitudes
taken from bambynek et, Rev. Mod. Phys., vol. 49, 1977
-Compute partial probabilities of subshells PL1,PL2,PM1,PM2,PN1,PN2 from
taken from bambynek et, Rev. Mod. Phys., vol. 49, 1977
-Compute partial probabilities of subshells PL1,PL2,PM1,PM2,PN1,PN2 from
the tables PL2/PL1, PM2/PM1, and PN2/PN1. Valid for allowed transitions.
@@ -198,36 +243,36 @@ Code received from Anselmo Meregaglia.
their size is reduced by about ten orders of magnitude, enough to set
negative weights to zero. Fixes bug report #1480.
- G4Radioactivation::ConvolveSourceTimeProfile: same as above.
- G4Radioactivation::ConvolveSourceTimeProfile: same as above.
12 March 2018 Dennis Wright radioactive_decay-V10-04-01
---------------------------------------------------------
- G4RadioactiveDecay::AddDeexcitationSpectrumForBiasMode: make sure
- G4RadioactiveDecay::AddDeexcitationSpectrumForBiasMode: make sure
last stable nuclide in decay chain is included as secondary.
Fixes bug 2024.
- G4Radioactivation::AddDeexcitationSpectrumForBiasMode: same as above
- G4Radioactivation::AddDeexcitationSpectrumForBiasMode: same as above
14 December 2017 Dennis Wright radioactive_decay-V10-04-00
------------------------------------------------------------
- re-tag
- re-tag
12 December 2017 Dennis Wright radioactive_decay-V10-03-21
------------------------------------------------------------
- G4RadioactiveDecay.hh, .cc: add check that environment variable
G4RADIOACTIVEDATA is pointing to correct directory. Moved check from
G4RadioactiveDecay::LoadDecayTable() to ctor. Fixes bug #1942.
- G4RadioactiveDecayBase.hh, .cc: same change as above
- G4RadioactiveDecayBase.hh, .cc: same change as above
15 November 2017 Dennis Wright radioactive_decay-V10-03-20
------------------------------------------------------------
- G4RadioactiveDecay::DecayIt in the variance reduction branch:
replace the line
replace the line
if (asecondaryparticle->GetDefinition()->GetBaryonNumber() < 5) {
with
with
if (asecondaryparticle->GetDefinition()->GetPDGStable() ) {
This will allow the stable nucleus at the end of the decay chain to
This will allow the stable nucleus at the end of the decay chain to
be added to the final state particle stack. Fixes bug report #2007.
@@ -235,13 +280,13 @@ Code received from Anselmo Meregaglia.
-----------------------------------------------------------
- G4ECDecay: Set the probability for selection of L and M subshells to PL1/PL=0.995,PL2/PL=0.005
PM1/PM=0.995 and PM2/PM=0.005. Close to Fe55 case.
01 November 2017 V.Ivanchenko radioactive_decay-V10-03-18
-----------------------------------------------------------
- G4RadioactiveDecay: added StreamInfo method for printing
radioactive decay parameters; call this method in BuildPhysicsTable;
do not enable correlated gamma; removed unused EM headers
do not enable correlated gamma; removed unused EM headers
23 October 2017 Dennis Wright radioactive_decay-V10-03-17
-----------------------------------------------------------
@@ -259,7 +304,7 @@ Code received from Anselmo Meregaglia.
5 October 2017 Dennis Wright radioactive_decay-V10-03-15
-----------------------------------------------------------
- change name of class and file G4RadioactiveDecayRate to
- change name of class and file G4RadioactiveDecayRate to
G4RadioactiveDecayRatesToDaughter
- change name of class and file G4RadioactiveDecayRateVector to
@@ -267,7 +312,7 @@ Code received from Anselmo Meregaglia.
- add and fill method G4RadioactiveDecay::ProcessDescription()
- create new classes G4Radioactivation and G4RadioactivationMessenger for
- create new classes G4Radioactivation and G4RadioactivationMessenger for
biased use only
- create new classes G4RadioactiveDecayBase and G4RadioactiveDecayBaseMessenger
@@ -284,13 +329,13 @@ Code received from Anselmo Meregaglia.
when setting it by G4VDecayChannel::SetBR method.
This solve a bug that appeared with changes in G4VDecayChannel from
tag particles-V10-03-13.
11 July 2017 Dennis Wright radioactive_decay-V10-03-13
--------------------------------------------------------
- G4RadioactiveDecay::BuildPhysicsTable(): remove all settings of photon
- G4RadioactiveDecay::BuildPhysicsTable(): remove all settings of photon
evaporation; now done in G4PhotonEvaporation and in physics list
- G4ITDecay::DecayIt() remove all manipulations of nuclear polarization - now
- G4ITDecay::DecayIt() remove all manipulations of nuclear polarization - now
done in G4PhotonEvaporation
16 June 2017 Dennis Wright radioactive_decay-V10-03-12
@@ -304,14 +349,14 @@ Code received from Anselmo Meregaglia.
12 June 2017 Dennis Wright radioactive_decay-V10-03-11
--------------------------------------------------------
- due to run and compile errors on Mac, go back to radioactive_decay-V10-03-07,
remove all cached variables and delete instance of photonEvaporation in
remove all cached variables and delete instance of photonEvaporation in
G4RadioactiveDecay::dtor
3 June 2017 Dennis Wright radioactive_decay-V10-03-10
-------------------------------------------------------
- G4RadioactiveDecay: store polarizedNucleus as a heap object instead of stack
in order to improve multithreading behavior
- G4ITDecay::DecayIt: change code to deal with polarizedNucleus as a heap object
- G4ITDecay::DecayIt: change code to deal with polarizedNucleus as a heap object
31 May 2017 Dennis Wright radioactive_decay-V10-03-09
-------------------------------------------------------
@@ -322,8 +367,8 @@ Code received from Anselmo Meregaglia.
- G4RadioactiveDecay: add static thread local G4Fragment to act as cache for
nuclear polarization in G4ITDecay
- G4RadioactiveDecay::dtor: delete photonEvaporation
- G4ITDecay: store in static G4Fragment the nuclear polarization after each
decay so that it can be used as initial polarization for next decay
- G4ITDecay: store in static G4Fragment the nuclear polarization after each
decay so that it can be used as initial polarization for next decay
12 May 2017 Dennis Wright radioactive_decay-V10-03-07
-------------------------------------------------------
@@ -340,7 +385,7 @@ Code received from Anselmo Meregaglia.
21 February 2017 V.Ivanchenko radioactive_decay-V10-03-05
------------------------------------------------------------
- G4ITDecay: make daughterNucleus a pointer and store previous
- G4ITDecay: make daughterNucleus a pointer and store previous
state of the G4Fragment there
- G4RadioactiveDecay - removed G4ThreadLocal G4Fragment
@@ -361,8 +406,8 @@ Code received from Anselmo Meregaglia.
when previous nucleaus is reused; use floating level index
when a new ion is created
- G4RadioactiveDecay: use Laurent's level tolerence level of 10 eV
- G4RadioactiveDecay: use Laurent's level tolerence level of 10 eV
10 February 2017 Dennis Wright radioactive_decay-V10-03-01
------------------------------------------------------------
- G4RadioactiveDecay: add static G4ThreadLocal G4Fragment polarizedNucleus
@@ -380,22 +425,22 @@ Code received from Anselmo Meregaglia.
20 December 2016 Dennis Wright radioactive_decay-V10-03-00
------------------------------------------------------------
- G4ITDecay::G4ITDecay(): make G4PhotonEvaporation a class member
- G4ITDecay::G4ITDecay(): make G4PhotonEvaporation a class member
and initialize only once to avoid memory churn
- G4ITDecay::DecayIt(): make G4Fragment a data member to avoid its
deletion at end of this method and keep polarization information
deletion at end of this method and keep polarization information
7 November 2016 Dennis Wright radioactive_decay-V10-02-15
-----------------------------------------------------------
- G4RadioactiveDecay::LoadDecayTable: fix segfault by removing deletion of
empty decay table
- G4RadioactiveDecay::LoadDecayTable: fix segfault by removing deletion of
empty decay table
4 November 2016 Dennis Wright radioactive_decay-V10-02-14
-----------------------------------------------------------
- G4RadioactiveDecay::LoadDecayTable: fix bug which ignores IT decay when no
entries found in database
30 September 2016 Dennis Wright radioactive_decay-V10-02-13
-------------------------------------------------------------
- G4RadioactiveDecay::LoadDecayTable: fix unexpected behavior when decay file
@@ -403,14 +448,14 @@ Code received from Anselmo Meregaglia.
26 September 2016 Dennis Wright radioactive_decay-V10-02-12
-------------------------------------------------------------
- G4BetaMinusDecay::DecayIt: add protection for spectrumSampler to try and avoid
unitialized read error
- G4BetaMinusDecay::DecayIt: add protection for spectrumSampler to try and avoid
unitialized read error
- G4BetaMinusDecay::SetUpBetaSpectrumSampler: put array creation inside (e0 > 0)
block
23 September 2016 Dennis Wright radioactive_decay-V10-02-11
-------------------------------------------------------------
- G4BetaMinusDecay::SetUpBetaSpectrumSampler: add missing initialization of
- G4BetaMinusDecay::SetUpBetaSpectrumSampler: add missing initialization of
spectrumSampler
- G4RadioactiveDecayRate copy ctor: restore verboseLevel initialization as
@@ -428,13 +473,13 @@ Code received from Anselmo Meregaglia.
G4ITDecayChannel, G4KshellECDecayChannel, G4LshellECDecayChannel,
G4MshellECDecayChannel and G4ProtonDecayChannel.hh
- G4RadioactiveDecay: enable reading of floating levels and entry as unique
- G4RadioactiveDecay: enable reading of floating levels and entry as unique
nuclides into decay tables
- G4RadioactiveDecay and all specific decay channel classes: allow
- G4RadioactiveDecay and all specific decay channel classes: allow
nuclides with floating levels to decay
- this tag works only with the RadioactiveDecay5.0 database or later
- this tag works only with the RadioactiveDecay5.0 database or later
25 July 2016 Vladimir Ivanchenko radioactive_decay-V10-02-08
@@ -444,16 +489,16 @@ Code received from Anselmo Meregaglia.
16 June 2016 Vladimir Ivanchenko radioactive_decay-V10-02-07
--------------------------------------------------------
- G4RadioactiveDecay::BuildPhysicsTable: remove initialization of atomic
deexcitation and leave only G4Exception. Initialisation should be done
- G4RadioactiveDecay::BuildPhysicsTable: remove initialization of atomic
deexcitation and leave only G4Exception. Initialisation should be done
in Physics List
15 June 2016 Dennis Wright radioactive_decay-V10-02-06
--------------------------------------------------------
- G4RadioactiveDecay::BuildPhysicsTable: remove initialization of atomic
- G4RadioactiveDecay::BuildPhysicsTable: remove initialization of atomic
deexcitation to avoid overwriting its initialization in EM. Throw
fatal exception if initialization not done somewhere.
4 April 2016 Dennis Wright radioactive_decay-V10-02-05
--------------------------------------------------------
- remove obsolete class G4RIsotopeTable
@@ -476,7 +521,7 @@ Code received from Anselmo Meregaglia.
16 December 2015 Dennis Wright radioactive_decay-V10-02-01
-----------------------------------------------------------
- G4RadioactiveDecay: rename several methods and variables to more closely
represent their meaning:
represent their meaning:
GetTaoTime() -> ConvolveSourceTimeProfile()
taotime -> convolvedTime
theDecayTable -> summedDecayTable
@@ -495,7 +540,7 @@ Code received from Anselmo Meregaglia.
18 November 2015 Dennis Wright radioactive_decay-V10-01-23
-----------------------------------------------------------
- use method proposed by Andreas Zoglauer to temporarily fix energy
- use method proposed by Andreas Zoglauer to temporarily fix energy
non-conservation in IT and EC modes due to incomplete atomic relaxation
model. Fixes bug #1756.
@@ -507,9 +552,9 @@ Code received from Anselmo Meregaglia.
29 October 2015 Dennis Wright radioactive_decay-V10-01-21
----------------------------------------------------------
- remove obsolete class G4BetaFermiFunction and references to it in
- remove obsolete class G4BetaFermiFunction and references to it in
sources.cmake, G4NuclearDecayChannel. Addresses bug report 1785.
21 October 2015 Luis Sarmiento radioactive_decay-V10-01-20
----------------------------------------------------------
- G4NeutronDecay added to work with the "Neutron" key in the radfiles
@@ -521,10 +566,10 @@ Code received from Anselmo Meregaglia.
22 September 2015 Dennis Wright radioactive_decay-V10-01-18
------------------------------------------------------------
- G4RIsotopeTable: add object name in ctor
- G4RIsotopeTable: add object name in ctor
- G4RadioactiveDecay: remove G4RIsotopeTable (now redundant) and all associated
pointers
8 September 2015 Luis Sarmiento radioactive_decay-V10-01-17
-----------------------------------------------------------
- G4ProtonDecay linking problem fixed.
@@ -536,7 +581,7 @@ Code received from Anselmo Meregaglia.
1 September 2015 Dennis Wright radioactive_decay-V10-01-15
-----------------------------------------------------------
- G4RIsotopeTable.cc, G4NuclearDecayChannel.cc, G4BetaDecayCorrections.cc,
G4RadioactiveDecay.cc: add temporary checks on while loops
G4RadioactiveDecay.cc: add temporary checks on while loops
30 July 2015 S Incerti, V Iv. radioactive_decay-V10-01-14
---------------------------------------------------------
@@ -548,36 +593,36 @@ Code received from Anselmo Meregaglia.
22 May 2015 L Desorgher radioactive_decay-V10-01-12
----------------------------------------------------
- G4ECDecay use of daughter atom instead of parent atom when calling atomic relaxation
- G4ECDecay use of daughter atom instead of parent atom when calling atomic relaxation
13 April 2015 Dennis Wright radioactive_decay-V10-01-11
--------------------------------------------------------
- G4RadioactivedDecay::LoadDecayTable : implement Laurent's changes back to
level search using tolerance (now 0.1 keV)
- G4RadioactivedDecay::AddDecayTable : bug fix in combination of branching
- G4RadioactivedDecay::AddDecayTable : bug fix in combination of branching
ratios (brs[1] -> brs[2] in beta+ decay)
10 March 2015 Dennis Wright radioactive_decay-V10-01-10
--------------------------------------------------------
- re-enable setting of ARM on or off (default is on) in G4ITDecay and
- re-enable setting of ARM on or off (default is on) in G4ITDecay and
G4ECDecay
- also include Michel Maire's change from 5 March
05 March 2015 Michel Maire
05 March 2015 Michel Maire
--------------------------
- G4RadioactiveDecay::BuildPhysicsTable() : add p->SetAuger(true)
27 February 2015 Dennis Wright radioactive_decay-V10-01-09
-----------------------------------------------------------
- improved efficiency of neutrino energy sectrum calculation in
- improved efficiency of neutrino energy sectrum calculation in
G4BetaPlusDecay and G4BetaMinusDecay
- use Q value and electron binding energy to calculate CM momentum
in G4ECDecay
11 February 2015 Andrea Dotti radioactive_decay-V10-01-08
-----------------------------------------------------------
- Temporary removing sharing of decay table map between
- Temporary removing sharing of decay table map between
threads to verify if failures in MT disappear
29 January 2015 Dennis Wright radioactive_decay-V10-01-07
@@ -593,7 +638,7 @@ Code received from Anselmo Meregaglia.
-----------------------------------------------------------
- G4BetaMinusDecay.cc: fix divide by zero neutrino energy
- G4BetaPlusDecay.cc: fix zero pointer for spectrumSampler
16 January 2015 Gabriele Cosmo radioactive_decay-V10-01-04
------------------------------------------------------------
- Corrected GNUmakefile and sources.cmake scripts to add missing dependency
@@ -603,12 +648,12 @@ Code received from Anselmo Meregaglia.
-----------------------------------------------------------
- G4RadioactiveDecay::BuildPhysicsTable: change code to create new atomic
deexcitation only if one doesn't already exist
- G4ECDecay.cc: re-install check for zero pointer to atomic deexcitation
- G4ECDecay.cc: re-install check for zero pointer to atomic deexcitation
12 January 2015 Dennis Wright radioactive_decay-V10-01-02
-----------------------------------------------------------
- G4RadioactiveDecay::BuildPhysicsTable : register G4UAtomicDeexcitation to
G4LossTableManager so that electron shells can be found. Set Fluo and
G4LossTableManager so that electron shells can be found. Set Fluo and
Auger flags to true, PIXE to false
- G4ECDecay.cc: re-arrange code to accommodate above change
@@ -635,27 +680,27 @@ Code received from Anselmo Meregaglia.
- G4NuclearDecayChannel::DecayIt: allow up to three fragments from
G4PhotoEvaporation::BreakUp. This fixes the exception seen when there is
more than one gamma
03 November 2014 Dennis Wright radioactive_decay-V10-00-09
----------------------------------------------------------
- added new class G4AlphaDecay to streamline inheritance chain and use Q to
calculate decay product energies
- G4RadioactiveDecay.cc: use G4AlphaDecay instead of G4AlphaDecayChannel
- G4NuclearDecayChannel.cc: check number of gammas returned from
G4PhotoEvaporation and take different action in each case of 0, 1, or 2
- G4NuclearDecayChannel.cc: check number of gammas returned from
G4PhotoEvaporation and take different action in each case of 0, 1, or 2
gammas
21 October 2014 Dennis Wright radioactive_decay-V10-00-08
----------------------------------------------------------
- G4RadioactiveDecay dtor: add delete dkmap to fix memory leak
- G4RadioactiveDecay.hh : set size of decayWindows to 100 to fix array overrun
13 October 2014 Dennis Wright radioactive_decay-V10-00-07
----------------------------------------------------------
- G4NuclearDecayChannel, G4BetaDecayCorrections, G4RadioactiveDecay: made
several more variables const
- G4NuclearDecayChannel, G4BetaDecayCorrections, G4RadioactiveDecay: made
several more variables const
13 October 2014 Dennis Wright radioactive_decay-V10-00-06
----------------------------------------------------------
- G4RadioactiveDecay::GetMeanFreePath(): make local pointer to
@@ -684,7 +729,7 @@ Code received from Anselmo Meregaglia.
- G4RadioactiveDecay::GetMeanFreePath: tau = -1001 now indicates a nuclide with
very short lifetime or that was not listed in G4NuclideTable. In that case,
set pathlength to DBL_MIN. This fixes bug #1582.
20 February 2014 Dennis Wright radioactive_decay-V10-00-01
-----------------------------------------------------------
- G4RadioactiveDecayMode.hh, .cc: add double beta- decay and double beta+ decay
@@ -692,7 +737,7 @@ Code received from Anselmo Meregaglia.
- G4RadioactiveDecay.cc: add dummies for double beta- decay and double beta+
decay in order to partially fix Bug 1560: long ground state lifetimes with no decay
scheme
6 February 2014 Dennis Wright radioactive_decay-V10-00-00
----------------------------------------------------------
- G4NuclearDecayChannel::DecayIt: remove enforcement of single gamma emission
@@ -723,13 +768,13 @@ Code received from Anselmo Meregaglia.
-----------------------------------------------------------
- fixed bugs causing decay chains to stop prematurely
- G4NuclearDecayChannel::DecayIt:
in the case of IT, get excitation energy from parent nucleus, not daughter
in the case of IT, get excitation energy from parent nucleus, not daughter
(const G4Ions*)(G4MT_parent))->GetExcitationEnergy()
remove subtraction of gamma energy from variable daughterExcitation
- G4RadioactiveDecay::GetDecayTable: search internal library of decay tables
using name of ion, not integer key - this fixes the "level 9" problem
7 November 2013 Dennis Wright radioactive_decay-V09-06-18
----------------------------------------------------------
- G4NuclearDecayChannel::DecayIt: allow explicit decay of IT channels
@@ -746,24 +791,24 @@ Code received from Anselmo Meregaglia.
----------------------------------------------------------
- G4NuclearDecayChannel::DecayIt: add an electron mass to the parent nucleus
in case of electron capture. This fixes the G4GeneralPhaseSpaceDecay::Pmx()
mass deficit warning.
mass deficit warning.
4 October 2013 Dennis Wright radioactive_decay-V09-06-15
---------------------------------------------------------
- G4NuclearDecayChannel: change class member daughterExcitation
from TLS back to plain G4double - fixes infinite loop in decay chain
1 October 2013 Makoto Asai radioactive_decay-V09-06-14
--------------------------------------------------------
- G4NuclearDecayChannel : Fixed thread-safety and reproducability issues.
9 September 2013 Makoto Asai radioactive_decay-V09-06-13
----------------------------------------------------------
----------------------------------------------------------
- G4RadioactiveDecay::LoadDecayTable() : modify to read data file only once
for multi-threaded mode.
5 September 2013 Dennis Wright radioactive_decay-V09-06-12
------------------------------------------------------------
------------------------------------------------------------
- G4NuclearDecayChannel::DecayIt() : remove unused variable and argument
(theParentMass)
@@ -779,31 +824,31 @@ Code received from Anselmo Meregaglia.
- G4NuclearDecayChannel: use integer metastable state levels instead of
energy values. Where only energy is known search for nearest integer
level.
level.
12 July 2013 Dennis Wright radioactive_decay-V09-06-09
--------------------------------------------------------
- G4RadioactiveDecay:
to accommodate multi-threading remove the setting of nuclear decay tables
to G4ParticleDefinition and replace with local decay table map
remove IsLoaded() method and data member LoadedNuclei which are now
redundant due to above changes
20 June 2013 Andrea Dotti radioactive_decay-V09-06-08
--------------------------------------------------------
- G4RIsotopeTable.cc : fix bug in checking if DB files have
- G4RIsotopeTable.cc : fix bug in checking if DB files have
been loaded (accessing map without protection)
20 June 2013 Dennis Wright radioactive_decay-V09-06-07
--------------------------------------------------------
- G4RadioactiveDecay.cc : fix memory leak by adding
- G4RadioactiveDecay.cc : fix memory leak by adding
delete theIsotopeTable;
to dtor
18 June 2013 V. Ivanchenko radioactive_decay-V09-06-06
--------------------------------------------------------
- G4RadioactiveDecay, G4NuclearDecayChannel,
- G4RadioactiveDecay, G4NuclearDecayChannel,
G4BetaMinusDecayChannel, G4BetaPlusDecayChannel - use
typedefs from Randomize.hh instead of CLHEP
@@ -829,10 +874,10 @@ Code received from Anselmo Meregaglia.
------------------------------------------------------------
- G4RadioactiveDecay: fix partly bug 1359
-Force the boost of the decay products in line 1598
-The parent energy considered in the boost is the total energy of the fully stripped parent ion rather than
-The parent energy considered in the boost is the total energy of the fully stripped parent ion rather than
the total energy of dynamic ion where the energy of shell electrons is taken into account
-Some difference in momentum and energy balance is still observed but much less than before
-Some difference in momentum and energy balance is still observed but much less than before
13 November 2012 Dennis Wright radioactive_decay-V09-05-12
------------------------------------------------------------
@@ -844,10 +889,10 @@ Code received from Anselmo Meregaglia.
04 October 2012 Gabriele Cosmo radioactive_decay-V09-05-11
------------------------------------------------------------
- G4RIsotopeTable.cc: added inclusion of units header...
03 October 2012 Vladimir Ivantchenko radioactive_decay-V09-05-10
------------------------------------------------------------------
- G4RadioactiveDecay - added isInitialised flag to reduce
- G4RadioactiveDecay - added isInitialised flag to reduce
initialisation printout
03 October 2012 Vladimir Ivantchenko radioactive_decay-V09-05-09
@@ -862,7 +907,7 @@ Code received from Anselmo Meregaglia.
- G4RadioactiveDecay - modified BuildPhysicsTable method: substitute
obsolete methods to access PhysicsVector, add spline, add
initialisation of atomic de-excitation (needed for the case when
radioactive decay is used alone), modified GetMeanFreePath -
radioactive decay is used alone), modified GetMeanFreePath -
sabstitute obsolete access method to the PhysicsVector
- source.cmake and GNUmakefile - remove dependence on emlowenergy
@@ -878,12 +923,12 @@ Code received from Anselmo Meregaglia.
27 July 2012 Laurent Desorgher radioactive_decay-V09-05-05
------------------------------------------------------------
-Set a flag isAllVolumesMode in G4RadioactiveDecay to ensure that when
-Set a flag isAllVolumesMode in G4RadioactiveDecay to ensure that when
the geometry is changed, the AllVolume Mode is still considered.
Problem reported by Tatsumi Koi.
Problem reported by Tatsumi Koi.
-Use of evaporation nuclear level data in G4RIsotope::GetMeanLifeTime
for getting the mean life of an exited nuclei, when it is not provided in
for getting the mean life of an exited nuclei, when it is not provided in
radioactive decay database. Solving of a problem reported by Tatsumi Koi.
@@ -907,19 +952,19 @@ Code received from Anselmo Meregaglia.
to fix discontinuity in electron screening energy
Above changes suggested by Ryan Fitzgerald (NIST)
11 June 2012 Dennis Wright radioactive_decay-V09-05-02
--------------------------------------------------------
- replace shadowed variable "s" in G4NucleusLimits.cc, G4BetaDecayType.cc
and G4RadioactiveDecayMode.cc. Replace shadowed variable "theDecayTable"
in G4RadioactiveDecay.cc
01 May 2012 Laurent Desorgher radioactive_decay-V09-05-01
---------------------------------------------------------
- G4RIsotopeTable : Add the reading of user data files in order to take
into account the life time given in these files. (Bug reported by M. Maire)
- G4RadioactiveDecay: Put the activation development of Fan Lei from trunk in
the tagged release.
the tagged release.
17 March 2012 Dennis Wright radioactive_decay-V09-05-00
---------------------------------------------------------
@@ -929,7 +974,7 @@ Code received from Anselmo Meregaglia.
23 November 2011 L.Desorgher(radioactive_decay-V09-04-14)
---------------------------------
- G4NuclearDecayChannel.cc: add initialisation of dynamicDaughter in
line 455 to avoid segmentation fault for some decays.
line 455 to avoid segmentation fault for some decays.
20 November 2011 V.Ivanchenko(radioactive_decay-V09-04-13)
---------------------------------
@@ -950,7 +995,7 @@ Code received from Anselmo Meregaglia.
--G4RadioactiveDecay:
-Add the reading of Spontaneous Fission mode from data files
--G4RadioactiveDecayMode:
-Add SpFission mode
-Add SpFission mode
18 October 2011 Laurent Desorgher(radioactive_decay-V09-04-10)
---------------------------------
@@ -961,7 +1006,7 @@ Code received from Anselmo Meregaglia.
--G4RadioactiveDecayChannel:
-Correction to allow the atomic relaxation of de-excited nuclei produce
also during beta and alpha decay. Problem ersaed and solution proposed
by Ko Abe
by Ko Abe
--G4RadioactiveDecayMessenger:
-Add macro commands /grdm/setRadioactiveDecayFile and
/grdm/setPhotoEvaporationFile
@@ -983,12 +1028,12 @@ Code received from Anselmo Meregaglia.
- upgrade to new G4Exception. Files affected: G4RadioactiveDecay.cc,
G4NuclearDecayChannel.cc
9 September 2011 Dennis Wright (radioactive_decay-V09-04-06)
--------------------------------------------------------------
- G4RadioactiveDecay.cc: mistakenly removed H. Kurasige's local time fix
from tag -04. Re-instate it here.
9 September 2011 Dennis Wright (radioactive_decay-V09-04-05)
--------------------------------------------------------------
- G4RadioactiveDecay.hh, .cc: add new Fermi function and forbidden beta
@@ -1001,7 +1046,7 @@ Code received from Anselmo Meregaglia.
---------------------------------------------------------
- G4RadioactiveDecay.cc : add H. Kurasige's fix of local decay time
(bug report 1224)
5 June 2011 Dennis Wright (radioactive_decay-V09-04-03)
----------------------------------------------------------------
- G4RadioactiveDecay.cc: set process subtype (fRadioactiveDecay = 211)
@@ -1018,14 +1063,14 @@ Code received from Anselmo Meregaglia.
31 May 2011 L.Desorgher (radioactive_decay-V09-04-01)
------------------------------------------------------
- Fixing to bug 1662 (remove of a warning).
Adding of a check for maximum shell number, in line 438-440
of G4NuclearDecayChannel.
Adding of a check for maximum shell number, in line 438-440
of G4NuclearDecayChannel.
19 May 2011 Dennis Wright (SLAC) (radioactive_decay-V09-04-00)
---------------------------------------------------------------
- G4RadioactiveDecay.cc: fix gcc 4.6 warning: variable j set but not
used
3 December 2010 Dennis Wright (SLAC) (radioactive_decay-V09-03-05)
--------------------------------------------------------------------
- G4NuclearDecayChannel: remove unused variables BetaSimple, FermiFN
@@ -1036,8 +1081,8 @@ Code received from Anselmo Meregaglia.
SBin[99], SProfile[99] to SBIN[100], SProfile[100]
- G4RadioactiveDecay::SetDecayBias(): fix array overrun, change
DBin[99], DProfile[99] to DBIN[100], DProfile[100]
- G4RadioactiveDecay::DecayIt(): to avoid possible dereferencing of
zero ptr when in branching ratio bias mode, fill tempprods as if no
- G4RadioactiveDecay::DecayIt(): to avoid possible dereferencing of
zero ptr when in branching ratio bias mode, fill tempprods as if no
biasing active
- G4RadioactiveDecayRate ctor: initialize Z, A, E, generation and
@@ -1045,15 +1090,15 @@ Code received from Anselmo Meregaglia.
18 November 2010 F.Lei (radioactive_decay-V09-03-04)
-----------------------------------------------------
- src/G4RadioactiveDecay.cc:1593 get rid of the compalition warning with
- src/G4RadioactiveDecay.cc:1593 get rid of the compalition warning with
gcc4.5.1
17 November 2010 F.Lei (radioactive_decay-V09-03-03)
- Completed the implementation of generating the activity table in VR mode
- Set the default h-l threshold to 1 micros in VR mode.
- General improvement in VR mode implementation.
- General improvement in VR mode implementation.
- G4RadioactiveDecaymessenger.cc: icmCMD,armCMD & hlThreshold are available
at all states.
at all states.
11 November 2010 F.Lei
- further updates to G4RadioactivityTable.hh .cc and G4RadioactiveDecay.hh .cc
@@ -1079,27 +1124,27 @@ Code received from Anselmo Meregaglia.
line 1624: include the track weight in the weight calculation
line 1627: add the rate to the radioactivity tables
- improved formatting of all the class files
11 Oct 2010 F. Lei (radioactive_decay-V09-03-01)
- G4RadioactiveDecay.cc: apply SetICM(), SetARM() & SetHLThreshold() in all decay modes
- G4RadioactiveDecay.cc: halflifethreshold = 0.*second;
- G4RadioactiveDecaymessenger.cc: removed (>0.) restrictions to hlCMD
- G4RadioactiveDecaymessenger.cc: icmCMD,armCMD & hlCMD are available at PreInit state only.
- G4RadioactiveDecaymessenger.cc: icmCMD,armCMD & hlCMD are available at PreInit state only.
26 May 2010 Dennis Wright (radioactive_decay-V09-03-00)
-------------------------------------------------------
tag HEAD to submit for testing
11 May 2010 F.Lei
- G4RadioactiveDecay.cc::LoadDecayTable:line 931 create a decaytable for isomers not included in RDM database and assume
- G4RadioactiveDecay.cc::LoadDecayTable:line 931 create a decaytable for isomers not included in RDM database and assume
they all under go IT decay.
- G4RadioactiveDecay.cc: line 1434 after DoDecay() check if there is any secondary produced. Kill the track if not to
- G4RadioactiveDecay.cc: line 1434 after DoDecay() check if there is any secondary produced. Kill the track if not to
prevent it entering a infinite loop
- G4RadioactiveDecay.cc: line 1459. make sure the propertime is positive. negative case occures when the isomer is not in
RDM database and its f-l is set to -1 by default.
- G4NuclearDecayChannel.cc: Added initialisation to all three constructors:
RDM database and its f-l is set to -1 by default.
- G4NuclearDecayChannel.cc: Added initialisation to all three constructors:
halflifethreshold = 1e-6*second;
applyICM = true;
applyARM = true;
@@ -1111,9 +1156,9 @@ tag HEAD to submit for testing
applied SetICM() SetARM() and SetHLThreshold() to a decay channel is created.
- G4NuclearDecayChannel.cc: line 396. Limit the shell index to < 7, as required by the ARM.
line 329: change to use BreakUp rather than BreakItUp so to limit to one transition per step when ICM is applied (bug #1001)
(Note: changes have also been made in 30/08/2008 to use the correct atomic shell index and to conserve energy atfer ARM,
(Note: changes have also been made in 30/08/2008 to use the correct atomic shell index and to conserve energy atfer ARM,
these problems were pointed out by Andreas Zoglauer in the bug report).
- G4RadioactiveDecay.hh & G4NuclearDecayChannel.hh: added private member data "applyICM" "applyARM" "halflifethresold"
- G4RadioactiveDecay.hh & G4NuclearDecayChannel.hh: added private member data "applyICM" "applyARM" "halflifethresold"
and their public Set methods SetICM(), SetARM() and SetHLThreshold().
- G4RadioactiveDecaymessenger: added the UICommands for SetICM, SETARM and SetHLThreshold.
@@ -1127,13 +1172,13 @@ tag HEAD to submit for testing
17 June 2008 Fan Lei (radioactive_decay-V09-01-01)
- GRIsotopeTable.cc
i) change default verbosity level to 1
ii) correct use G4cout instead of G4cerr
ii) correct use G4cout instead of G4cerr
01 May 2008 Fan Lei (radioactive_decay-V09-01-00)
- G4NuclearDecayChannel.cc
i) ARM is no longer applied in photon-evaporation for IT mode and
is now applied at the end in DecayIt()
ii) use the correct shell index in appling ARM and switch on Auger
i) ARM is no longer applied in photon-evaporation for IT mode and
is now applied at the end in DecayIt()
ii) use the correct shell index in appling ARM and switch on Auger
electron production
iii) check the residual kinetic energy after ARM and add it to the atom
@@ -1145,17 +1190,17 @@ tag HEAD to submit for testing
'-' : unsafe use of type 'bool' in operation
10 November 2006 Fan Lei (radioactive_decay-V08-01-01)
- G4NuclearDecayChannel.cc: added the capability of handling decay emission of proton or neutron
for decays of He5 (alpha+n) and Li5 (alpha+p). bug#852
- G4NuclearDecayChannel.cc: added the capability of handling decay emission of proton or neutron
for decays of He5 (alpha+n) and Li5 (alpha+p). bug#852
5 July 2006 Dennis Wright (radioactive_decay-V08-01-00)
- G4NuclearDecayChannel::BetaDecayIt() : another check for negative sqrt
- G4NuclearDecayChannel::BetaDecayIt() : another check for negative sqrt
argument in daughtermomentum[1].
29 May 2006 Dennis Wright (radioactive_decay-V08-00-03)
(tagging change by Fan Lei on 17 Feb 2006)
- G4RadioactiveDecay.cc : in method IsApplicable() add test for negative
lifetime
- G4RadioactiveDecay.cc : in method IsApplicable() add test for negative
lifetime
16 February 2006 Vladimir Ivanchenko (radioactive_decay-V08-00-02)
- G4RadioactiveDecay::IsApplicable - fix problem connected with
@@ -1190,19 +1235,19 @@ for decays of He5 (alpha+n) and Li5 (alpha+p). bug#852
- Added G4MshellECDecayChannel.hh and changed G4RadioactiveDecay.cc accordingly.
09 Nov 2004 Fan Lei
- Changes to G4RaioactiveDecay.cc (radioactive_decay-V06-02-00)
i) better handling to incomplete data files;
ii) correct treatment of metastables as initial tracks in VR mode;
iii) default decay window in VR model to 9.9x10^9 - 10^10 seconds;
iv) individual time stamp for splitted isotope;
v) bug fix #662;
- Changes to G4RaioactiveDecay.cc (radioactive_decay-V06-02-00)
i) better handling to incomplete data files;
ii) correct treatment of metastables as initial tracks in VR mode;
iii) default decay window in VR model to 9.9x10^9 - 10^10 seconds;
iv) individual time stamp for splitted isotope;
v) bug fix #662;
vi) bug fix #396.
- Changes to G4NuclearDecayChannel.cc
i) apply atomic relaxation only to 5 < z < 101
ii) no more fast/slow beta decay mode with a faster 3-body decay implementation.
- G4RIsotopeTable.cc: line 223, no longer reset the excitaion energy.
- G4RIsotopeTable.cc: line 223, no longer reset the excitaion energy.
12 Jun 2003 Gabriele Cosmo (radiative_decay-V05-01-00)
- Fix in G4ITDecayChannel.hh and G4RadioactiveDecay.cc for porting
on Windows .NET compiler: changed signature in constructor for
@@ -1229,14 +1274,14 @@ for decays of He5 (alpha+n) and Li5 (alpha+p). bug#852
for the geometry domain (tag "geometry-V03-01-00").
01 Nov 2000 Fan Lei (radiative_decay-V02-00-02)
- Added the missing line " ee = e0+1.; " to line 763 in
- Added the missing line " ee = e0+1.; " to line 763 in
G4RadioactiveDecay.cc
27th Oct 200 fan Lei (radiative_decay-V02-00-01)
- Add a fast simulation mode for beta decays
25th Oct 2000 fan lei (radiative_decay-V02-00-00)
- Added 'const' to line 1185 of G4RadioactiveDecay.cc to cowork with
- Added 'const' to line 1185 of G4RadioactiveDecay.cc to cowork with
tag Track-V02-00-00
27th June 2000 Fan Lei (radiative_decay-V01-01-04)
@@ -61,21 +61,13 @@ class G4RadioactivationMessenger: public G4UImessenger
private:
G4Radioactivation* theRadioactivationContainer;
G4UIdirectory* old_grdmDirectory; // To be removed in G4 11.0
G4UIdirectory* rdmDirectory;
G4UIcmdWithABool* old_analoguemcCmd; // To be removed in G4 11.0
G4UIcmdWithABool* analoguemcCmd;
G4UIcmdWithAString* old_sourcetimeprofileCmd; // To be removed in G4 11.0
G4UIcmdWithAString* sourcetimeprofileCmd;
G4UIcmdWithAString* old_decaybiasprofileCmd; // To be removed in G4 11.0
G4UIcmdWithAString* decaybiasprofileCmd;
G4UIcmdWithABool* old_brbiasCmd; // To be removed in G4 11.0
G4UIcmdWithABool* brbiasCmd;
G4UIcmdWithAnInteger* old_splitnucleiCmd; // To be removed in G4 11.0
G4UIcmdWithAnInteger* splitnucleiCmd;
G4UIcmdWithADoubleAndUnit* old_hlthCmd; // To be removed in G4 11.0
G4UIcmdWithADoubleAndUnit* hlthCmd;
G4UIdirectory* rdmDirectory;
G4UIcmdWithABool* analoguemcCmd;
G4UIcmdWithAString* sourcetimeprofileCmd;
G4UIcmdWithAString* decaybiasprofileCmd;
G4UIcmdWithABool* brbiasCmd;
G4UIcmdWithAnInteger* splitnucleiCmd;
G4UIcmdWithADoubleAndUnit* hlthCmd;
};
#endif
@@ -1,372 +0,0 @@
//
// ********************************************************************
// * 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. *
// ********************************************************************
//
#ifndef G4RadioactiveDecay_h
#define G4RadioactiveDecay_h 1
// %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
//
// MODULE: G4RadioactiveDecay.hh
//
// Version: 0.b.4
// Date: 14/04/00
// Author: F Lei & P R Truscott
// Organisation: DERA UK
// Customer: ESA/ESTEC, NOORDWIJK
// Contract: 12115/96/JG/NL Work Order No. 3
//
// %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
//
// CHANGE HISTORY
// --------------
// 17 October 2011, L Desorgher - Add the method AddUserDecayDataFile
//
// 01 June 2011, M. Kelsey -- Add directional biasing interface to allow for
// "collimation" of decay daughters.
//
// 29 February 2000, P R Truscott, DERA UK
// 0.b.3 release.
//
// 13 April 2000, F Lei, DERA UK
// 0.b.4 release. No change to this file
//
// %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
////////////////////////////////////////////////////////////////////////////////
#include <vector>
#include <map>
#include <CLHEP/Units/SystemOfUnits.h>
#include "G4ios.hh"
#include "globals.hh"
#include "G4VRestDiscreteProcess.hh"
#include "G4ParticleChangeForRadDecay.hh"
#include "G4NucleusLimits.hh"
#include "G4RadioactiveDecayRatesToDaughter.hh"
#include "G4RadioactiveDecayChainsFromParent.hh"
#include "G4RadioactivityTable.hh"
#include "G4ThreeVector.hh"
#include "G4Threading.hh"
#include "G4RadioactiveDecayMode.hh"
class G4Fragment;
class G4RadioactiveDecaymessenger;
class G4PhotonEvaporation;
typedef std::vector<G4RadioactiveDecayChainsFromParent> G4RadioactiveDecayParentChainTable;
typedef std::vector<G4RadioactiveDecayRatesToDaughter> G4RadioactiveDecayRates;
typedef std::map<G4String, G4DecayTable*> DecayTableMap;
class G4RadioactiveDecay : public G4VRestDiscreteProcess
{
// class description
// Implementation of the radioactive decay process which simulates the
// decays of radioactive nuclei. These nuclei are submitted to RDM as
// G4Ions. The required half-lives and decay schemes are retrieved from
// the Radioactivity database which was derived from ENSDF.
// All decay products are submitted back to the particle tracking process
// through the G4ParticleChangeForRadDecay object.
// class description - end
public: // with description
G4RadioactiveDecay(const G4String& processName="RadioactiveDecay");
~G4RadioactiveDecay();
virtual void ProcessDescription(std::ostream& outFile) const;
// Return true if the specified isotope is
// 1) defined as "nucleus" and
// 2) it is within theNucleusLimit
G4bool IsApplicable(const G4ParticleDefinition&);
// Return decay table if it exists, if not, load it from file
G4DecayTable* GetDecayTable(const G4ParticleDefinition*);
// Select a logical volume in which RDM applies
void SelectAVolume(const G4String aVolume);
// Remove a logical volume from the RDM applied list
void DeselectAVolume(const G4String aVolume);
// Select all logical volumes for the application of RDM
void SelectAllVolumes();
// Remove all logical volumes from RDM applications
void DeselectAllVolumes();
// Set the decay biasing scheme using the data in "filename"
void SetDecayBias(G4String filename);
// Set the half-life threshold for isomer production
void SetHLThreshold(G4double hl) {halflifethreshold = hl;}
// Enable/disable ICM
void SetICM(G4bool icm) {applyICM = icm;}
// Enable/disable ARM
void SetARM(G4bool arm) {applyARM = arm;}
// Set source exposure function using histograms in "filename"
void SetSourceTimeProfile(G4String filename);
G4bool IsRateTableReady(const G4ParticleDefinition &);
// Returns true if the coefficient and decay time table for all the
// descendants of the specified isotope are ready.
// used in VR decay mode only
void CalculateChainsFromParent(const G4ParticleDefinition&);
// Calculates the coefficient and decay time table for all the descendents
// of the specified isotope. Adds the calculated table to the private data
// member "theParentChainTable".
// used in VR decay mode only
void GetChainsFromParent(const G4ParticleDefinition&);
// Used to retrieve the coefficient and decay time table for all the
// descendants of the specified isotope from "theParentChainTable"
// and place it in "chainsFromParent".
// used in VR decay mode only
void SetDecayRate(G4int,G4int,G4double, G4int, std::vector<G4double>,
std::vector<G4double>);
// Sets "theDecayRate" with data supplied in the arguements.
// used in VR decay mode only
std::vector<G4RadioactivityTable*> GetTheRadioactivityTables()
{return theRadioactivityTables;}
// Return vector of G4Radioactivity map - should be used in VR mode only
G4DecayTable* LoadDecayTable(const G4ParticleDefinition& theParentNucleus);
// Load the decay data of isotope theParentNucleus
void AddUserDecayDataFile(G4int Z, G4int A,G4String filename);
// Allow the user to replace the radio-active decay data provided in Geant4
// by its own data file for a given isotope
inline void SetVerboseLevel(G4int value) {verboseLevel = value;}
// Sets the VerboseLevel which controls duggering display
inline G4int GetVerboseLevel() const {return verboseLevel;}
// Returns the VerboseLevel which controls level of debugging output
inline void SetNucleusLimits(G4NucleusLimits theNucleusLimits1)
{theNucleusLimits = theNucleusLimits1 ;}
// Sets theNucleusLimits which specifies the range of isotopes
// the G4RadioactiveDecay applies.
inline G4NucleusLimits GetNucleusLimits() const
{return theNucleusLimits;}
// Returns theNucleusLimits which specifies the range of isotopes
// the G4RadioactiveDecay applies
// Controls whether G4RadioactiveDecay runs in analogue mode or
// variance reduction mode. SetBRBias, SetSplitNuclei and
// SetSourceTimeProfile all turn off analogue mode and use VR mode
inline void SetAnalogueMonteCarlo (G4bool r ) {
AnalogueMC = r;
if (!AnalogueMC) halflifethreshold = 1e-6*CLHEP::s;
}
// Controls whether G4RadioactiveDecay uses fast beta simulation mode
// Currently does nothing - kept for backward compatibility
inline void SetFBeta (G4bool r ) { FBeta = r; }
// Returns true if the simulation is an analogue Monte Carlo, and false if
// any of the biassing schemes have been selected.
inline G4bool IsAnalogueMonteCarlo () {return AnalogueMC;}
// Sets whether branching ration bias scheme applies.
inline void SetBRBias(G4bool r) {
BRBias = r;
SetAnalogueMonteCarlo(0);
}
// Sets the number of times a nucleus will decay when biased
inline void SetSplitNuclei(G4int r) {
NSplit = r;
SetAnalogueMonteCarlo(0);
}
// Returns the nuclear splitting number
inline G4int GetSplitNuclei () {return NSplit;}
inline void SetDecayDirection(const G4ThreeVector& theDir) {
forceDecayDirection = theDir.unit();
}
inline const G4ThreeVector& GetDecayDirection() const {
return forceDecayDirection;
}
inline void SetDecayHalfAngle(G4double halfAngle=0.*CLHEP::deg) {
forceDecayHalfAngle = std::min(std::max(0.*CLHEP::deg,halfAngle),180.*CLHEP::deg);
}
inline G4double GetDecayHalfAngle() const {return forceDecayHalfAngle;}
// Force direction (random within half-angle) for "visible" daughters
// (applies to electrons, positrons, gammas, neutrons, protons or alphas)
inline void SetDecayCollimation(const G4ThreeVector& theDir,
G4double halfAngle = 0.*CLHEP::deg) {
SetDecayDirection(theDir);
SetDecayHalfAngle(halfAngle);
}
void BuildPhysicsTable(const G4ParticleDefinition &);
G4VParticleChange* DecayIt(const G4Track& theTrack,
const G4Step& theStep);
protected:
G4DecayProducts* DoDecay(const G4ParticleDefinition& theParticleDef);
// Apply directional bias for "visible" daughters (e+-, gamma, n, p, alpha)
void CollimateDecay(G4DecayProducts* products);
void CollimateDecayProduct(G4DynamicParticle* product);
G4ThreeVector ChooseCollimationDirection() const;
G4double GetMeanFreePath(const G4Track& theTrack, G4double previousStepSize,
G4ForceCondition* condition);
G4double GetMeanLifeTime(const G4Track& theTrack,
G4ForceCondition* condition);
G4double ConvolveSourceTimeProfile(const G4double, const G4double);
G4double GetDecayTime();
G4int GetDecayTimeBin(const G4double aDecayTime);
//Add gamma,Xray,conversion,and auger electrons for bias mode
void AddDeexcitationSpectrumForBiasMode(G4ParticleDefinition* apartDef,
G4double weight,
G4double currenTime,
std::vector<double>& weights_v,
std::vector<double>& times_v,
std::vector<G4DynamicParticle*>& secondaries_v);
private:
void StreamInfo(std::ostream& os, const G4String& endline);
G4RadioactiveDecay(const G4RadioactiveDecay &right);
G4RadioactiveDecay & operator=(const G4RadioactiveDecay &right);
G4RadioactiveDecaymessenger* theRadioactiveDecaymessenger;
G4PhotonEvaporation* photonEvaporation;
G4NucleusLimits theNucleusLimits;
G4bool isInitialised;
G4bool AnalogueMC;
G4bool BRBias;
G4bool FBeta;
G4int NSplit;
G4double halflifethreshold;
G4bool applyICM;
G4bool applyARM;
// Parameters for pre-collimated (biased) decay products
G4ThreeVector forceDecayDirection;
G4double forceDecayHalfAngle;
static const G4ThreeVector origin; // (0,0,0) for convenience
G4int NSourceBin;
G4double SBin[100];
G4double SProfile[100];
G4int NDecayBin;
G4double DBin[100];
G4double DProfile[100];
std::vector<G4String> ValidVolumes;
bool isAllVolumesMode;
G4RadioactiveDecayRatesToDaughter ratesToDaughter;
G4RadioactiveDecayRates theDecayRateVector;
G4RadioactiveDecayChainsFromParent chainsFromParent;
G4RadioactiveDecayParentChainTable theParentChainTable;
// for the radioactivity tables
std::vector<G4RadioactivityTable*> theRadioactivityTables;
G4int decayWindows[100];
static const G4double levelTolerance;
// Radioactive decay database directory path
G4String dirPath;
// User-defined radioactive decay data files
std::map<G4int, G4String> theUserRadioactiveDataFiles;
//The last RadDecayMode
G4RadioactiveDecayMode theRadDecayMode;
// Library of decay tables
DecayTableMap* dkmap;
#ifdef G4MULTITHREADED
static DecayTableMap* master_dkmap;
#endif
// Remainder of life time at rest
G4double fRemainderLifeTime;
G4int verboseLevel;
// ParticleChange for decay process
G4ParticleChangeForRadDecay fParticleChangeForRadDecay;
// inline implementations
inline
G4double AtRestGetPhysicalInteractionLength(const G4Track& track,
G4ForceCondition* condition)
{
fRemainderLifeTime =
G4VRestDiscreteProcess::AtRestGetPhysicalInteractionLength(track, condition);
return fRemainderLifeTime;
}
inline
G4VParticleChange* AtRestDoIt(const G4Track& theTrack,
const G4Step& theStep)
{return DecayIt(theTrack, theStep);}
inline
G4VParticleChange* PostStepDoIt(const G4Track& theTrack,
const G4Step& theStep)
{return DecayIt(theTrack, theStep);}
#ifdef G4MULTITHREADED
public:
static G4Mutex radioactiveDecayMutex;
protected:
G4int& NumberOfInstances();
#endif
};
#endif
@@ -89,10 +89,10 @@ class G4RadioactiveDecayBase : public G4VRestDiscreteProcess
G4DecayTable* GetDecayTable(const G4ParticleDefinition*);
// Select a logical volume in which RDM applies
void SelectAVolume(const G4String aVolume);
void SelectAVolume(const G4String& aVolume);
// Remove a logical volume from the RDM applied list
void DeselectAVolume(const G4String aVolume);
void DeselectAVolume(const G4String& aVolume);
// Select all logical volumes for the application of RDM
void SelectAllVolumes();
@@ -150,6 +150,12 @@ class G4RadioactiveDecayBase : public G4VRestDiscreteProcess
SetDecayHalfAngle(halfAngle);
}
// Ignore radioactive decays at rest of nuclides happening after this (very long) time threshold
inline void SetThresholdForVeryLongDecayTime(const G4double inputThreshold) {
fThresholdForVeryLongDecayTime = std::max( 0.0, inputThreshold );
}
inline G4double GetThresholdForVeryLongDecayTime() const {return fThresholdForVeryLongDecayTime;}
void BuildPhysicsTable(const G4ParticleDefinition &);
G4VParticleChange* DecayIt(const G4Track& theTrack,
@@ -227,6 +233,8 @@ class G4RadioactiveDecayBase : public G4VRestDiscreteProcess
G4double fRemainderLifeTime;
G4int verboseLevel;
// Ignore radioactive decays at rest of nuclides happening after this (very long) time threshold
G4double fThresholdForVeryLongDecayTime;
// inline implementations
inline
@@ -65,32 +65,20 @@ class G4RadioactiveDecayBaseMessenger: public G4UImessenger
private:
G4RadioactiveDecayBase* theRadioactiveDecayContainer;
G4UIdirectory* old_grdmDirectory; // To be removed in G4 11.0
G4UIdirectory* rdmDirectory;
G4UIcmdWithNucleusLimits* old_nucleuslimitsCmd; // To be removed in G4 11.0
G4UIcmdWithNucleusLimits* nucleuslimitsCmd;
G4UIcmdWithAnInteger* old_verboseCmd; // To be removed in G4 11.0
G4UIcmdWithAnInteger* verboseCmd;
G4UIcmdWithAString* old_avolumeCmd; // To be removed in G4 11.0
G4UIcmdWithAString* avolumeCmd;
G4UIcmdWithAString* old_deavolumeCmd; // To be removed in G4 11.0
G4UIcmdWithAString* deavolumeCmd;
G4UIcmdWithoutParameter* old_allvolumesCmd; // To be removed in G4 11.0
G4UIcmdWithoutParameter* allvolumesCmd;
G4UIcmdWithoutParameter* old_deallvolumesCmd; // To be removed in G4 11.0
G4UIcmdWithoutParameter* deallvolumesCmd;
G4UIcmdWithABool* old_icmCmd; // To be removed in G4 11.0
G4UIcmdWithABool* icmCmd;
G4UIcmdWithABool* old_armCmd; // To be removed in G4 11.0
G4UIcmdWithABool* armCmd;
G4UIcommand* old_userDecayDataCmd; // To be removed in G4 11.0
G4UIcommand* userDecayDataCmd;
G4UIcommand* old_userEvaporationDataCmd; // To be removed in G4 11.0
G4UIcommand* userEvaporationDataCmd;
G4UIcmdWith3Vector* old_colldirCmd; // To be removed in G4 11.0
G4UIcmdWith3Vector* colldirCmd;
G4UIcmdWithADoubleAndUnit* old_collangleCmd; // To be removed in G4 11.0
G4UIcmdWithADoubleAndUnit* collangleCmd;
G4UIdirectory* rdmDirectory;
G4UIcmdWithNucleusLimits* nucleuslimitsCmd;
G4UIcmdWithAnInteger* verboseCmd;
G4UIcmdWithAString* avolumeCmd;
G4UIcmdWithAString* deavolumeCmd;
G4UIcmdWithoutParameter* allvolumesCmd;
G4UIcmdWithoutParameter* deallvolumesCmd;
G4UIcmdWithABool* icmCmd;
G4UIcmdWithABool* armCmd;
G4UIcommand* userDecayDataCmd;
G4UIcommand* userEvaporationDataCmd;
G4UIcmdWith3Vector* colldirCmd;
G4UIcmdWithADoubleAndUnit* collangleCmd;
G4UIcmdWithADoubleAndUnit* thresholdForVeryLongDecayTimeCmd;
};
#endif
@@ -1,141 +0,0 @@
//
// ********************************************************************
// * 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. *
// ********************************************************************
//
#ifndef G4RadioactiveDecaymessenger_h
#define G4RadioactiveDecaymessenger_h 1
// %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
//
// MODULE: RadioactiveDecaymessenger.hh
//
// Version: 0.b.4
// Date: 14/04/00
// Author: F Lei & P R Truscott
// Organisation: DERA UK
// Customer: ESA/ESTEC, NOORDWIJK
// Contract: 12115/96/JG/NL Work Order No. 3
//
// %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
//
// CHANGE HISTORY
// --------------
//
// 29 February 2000, P R Truscott, DERA UK
// 0.b.3 release.
//
// 13 April 2000, F Lei, DERA UK
// 0.b.4 release. No change to this file
//
// %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
////////////////////////////////////////////////////////////////////////////////
//
#include "G4UImessenger.hh"
#include "G4UIdirectory.hh"
#include "G4UIcommand.hh"
#include "G4UIcmdWith3VectorAndUnit.hh"
#include "G4UIcmdWith3Vector.hh"
#include "G4UIcmdWithABool.hh"
#include "G4UIcmdWithAnInteger.hh"
#include "G4UIcmdWithADoubleAndUnit.hh"
#include "G4UIcmdWithAString.hh"
#include "G4UIcmdWithoutParameter.hh"
#include "globals.hh"
#include "G4RadioactiveDecay.hh"
#include "G4UIcmdWithNucleusLimits.hh"
class G4RadioactiveDecay;
////////////////////////////////////////////////////////////////////////////////
//
class G4RadioactiveDecaymessenger: public G4UImessenger
{
// class description
// The G4RadioactiveDecaymessenger is instantiated by the G4RadioactiveDecay
// process and introduces into the UI menu commands to control the running
// of G4RadioactiveDecay
public: //with description
G4RadioactiveDecaymessenger (G4RadioactiveDecay*
theRadioactiveDecayContainer);
// Constructor introduces commands into the UI menu to control
// G4RadioactiveDecay. theRadioactiveDecayContainer1 is used to identify
// to this class (when instatiated) the associated G4RadioactiveDecay
// process whose parameters are going to be changed as a result
// of the UI commands.
~G4RadioactiveDecaymessenger ();
// Destructor deletes G4UIdirectory and G4UIcommand objects.
//
void SetNewValue (G4UIcommand *command, G4String newValues);
// Identifies the command which has been invoked by the user, extracts the
// parameters associated with that command (held in newValues, and uses
// these values with the appropriate member function of G4RadioactiveDecay.
//
private:
G4RadioactiveDecay *theRadioactiveDecayContainer;
G4UIdirectory *old_grdmDirectory; // To be removed in G4 11.0
G4UIdirectory *rdmDirectory;
G4UIcmdWithNucleusLimits *old_nucleuslimitsCmd; // To be removed in G4 11.0
G4UIcmdWithNucleusLimits *nucleuslimitsCmd;
G4UIcmdWithAString *old_sourcetimeprofileCmd; // To be removed in G4 11.0
G4UIcmdWithAString *sourcetimeprofileCmd;
G4UIcmdWithAString *old_decaybiasprofileCmd; // To be removed in G4 11.0
G4UIcmdWithAString *decaybiasprofileCmd;
G4UIcmdWithABool *old_analoguemcCmd; // To be removed in G4 11.0
G4UIcmdWithABool *analoguemcCmd;
G4UIcmdWithABool *old_fbetaCmd; // To be removed in G4 11.0
G4UIcmdWithABool *fbetaCmd;
G4UIcmdWithABool *old_brbiasCmd; // To be removed in G4 11.0
G4UIcmdWithABool *brbiasCmd;
G4UIcmdWithAnInteger *old_splitnucleiCmd; // To be removed in G4 11.0
G4UIcmdWithAnInteger *splitnucleiCmd;
G4UIcmdWithAnInteger *old_verboseCmd; // To be removed in G4 11.0
G4UIcmdWithAnInteger *verboseCmd;
G4UIcmdWithAString *old_avolumeCmd; // To be removed in G4 11.0
G4UIcmdWithAString *avolumeCmd;
G4UIcmdWithAString *old_deavolumeCmd; // To be removed in G4 11.0
G4UIcmdWithAString *deavolumeCmd;
G4UIcmdWithoutParameter *old_allvolumesCmd; // To be removed in G4 11.0
G4UIcmdWithoutParameter *allvolumesCmd;
G4UIcmdWithoutParameter *old_deallvolumesCmd; // To be removed in G4 11.0
G4UIcmdWithoutParameter *deallvolumesCmd;
G4UIcmdWithABool *old_icmCmd; // To be removed in G4 11.0
G4UIcmdWithABool *icmCmd;
G4UIcmdWithABool *old_armCmd; // To be removed in G4 11.0
G4UIcmdWithABool *armCmd;
G4UIcmdWithADoubleAndUnit *old_hlthCmd; // To be removed in G4 11.0
G4UIcmdWithADoubleAndUnit *hlthCmd;
G4UIcommand *old_userDecayDataCmd; // To be removed in G4 11.0
G4UIcommand *userDecayDataCmd;
G4UIcommand *old_userEvaporationDataCmd; // To be removed in G4 11.0
G4UIcommand *userEvaporationDataCmd;
G4UIcmdWith3Vector *old_colldirCmd; // To be removed in G4 11.0
G4UIcmdWith3Vector *colldirCmd;
G4UIcmdWithADoubleAndUnit *old_collangleCmd; // To be removed in G4 11.0
G4UIcmdWithADoubleAndUnit *collangleCmd;
};
#endif
@@ -1,109 +1,78 @@
#------------------------------------------------------------------------------
# sources.cmake
# Module : G4hadronic_radioactivedecay
# Package: Geant4.src.G4processes.G4hadronic.G4hadronic_models.G4hadronic_radioactivedecay
#
# Sources description for a library.
# Lists the sources and headers of the code explicitly.
# Lists include paths needed.
# Lists the internal granular and global dependencies of the library.
# Source specific properties should be added at the end.
#
# Generated on : 24/9/2010
#
# $Id: sources.cmake 106689 2017-10-19 16:20:21Z dwright $
#
#------------------------------------------------------------------------------
# - G4hadronic_radioactivedecay module build definition
#
# Define the Geant4 Module.
#
GEANT4_DEFINE_MODULE(NAME G4hadronic_radioactivedecay
HEADERS
G4AlphaDecay.hh
G4BatemanParameters.hh
G4BetaDecayCorrections.hh
G4BetaDecayType.hh
G4BetaMinusDecay.hh
G4BetaPlusDecay.hh
G4ECDecay.hh
G4ITDecay.hh
G4SFDecay.hh
G4NeutronDecay.hh
G4NuclearDecay.hh
G4NucleusLimits.hh
G4ProtonDecay.hh
G4RadioactiveDecay.hh
G4RadioactiveDecayBase.hh
G4RadioactiveDecayBaseMessenger.hh
G4Radioactivation.hh
G4RadioactivationMessenger.hh
G4RadioactiveDecayMode.hh
G4RadioactiveDecayRatesToDaughter.hh
G4RadioactiveDecayChainsFromParent.hh
G4RadioactiveDecaymessenger.hh
G4RadioactivityTable.hh
G4TritonDecay.hh
G4UIcmdWithNucleusLimits.hh
G4UserLimitsForRD.hh
SOURCES
G4AlphaDecay.cc
G4BatemanParameters.cc
G4BetaDecayCorrections.cc
G4BetaDecayType.cc
G4BetaMinusDecay.cc
G4BetaPlusDecay.cc
G4ECDecay.cc
G4ITDecay.cc
G4SFDecay.cc
G4NeutronDecay.cc
G4NuclearDecay.cc
G4NucleusLimits.cc
G4ProtonDecay.cc
G4RadioactiveDecay.cc
G4RadioactiveDecayBase.cc
G4RadioactiveDecayBaseMessenger.cc
G4Radioactivation.cc
G4RadioactivationMessenger.cc
G4RadioactiveDecayMode.cc
G4RadioactiveDecayRatesToDaughter.cc
G4RadioactiveDecayChainsFromParent.cc
G4RadioactiveDecaymessenger.cc
G4RadioactivityTable.cc
G4TritonDecay.cc
G4UIcmdWithNucleusLimits.cc
GRANULAR_DEPENDENCIES
G4baryons
G4bosons
G4emutils
G4geometrymng
G4globman
G4had_mod_util
G4hadronic_deex_management
G4hadronic_deex_photon_evaporation
G4hadronic_deex_util
G4had_fission
G4hadronic_mgt
G4hadronic_proc
G4hadronic_util
G4hadronic_xsect
G4intercoms
G4ions
G4leptons
G4materials
G4mesons
G4partman
G4procman
G4track
G4volumes
GLOBAL_DEPENDENCIES
G4geometry
G4global
G4intercoms
G4materials
G4particles
G4track
LINK_LIBRARIES
)
geant4_add_module(G4hadronic_radioactivedecay
PUBLIC_HEADERS
G4AlphaDecay.hh
G4BatemanParameters.hh
G4BetaDecayCorrections.hh
G4BetaDecayType.hh
G4BetaMinusDecay.hh
G4BetaPlusDecay.hh
G4ECDecay.hh
G4ITDecay.hh
G4SFDecay.hh
G4NeutronDecay.hh
G4NuclearDecay.hh
G4NucleusLimits.hh
G4ProtonDecay.hh
G4RadioactiveDecayBase.hh
G4RadioactiveDecayBaseMessenger.hh
G4Radioactivation.hh
G4RadioactivationMessenger.hh
G4RadioactiveDecayMode.hh
G4RadioactiveDecayRatesToDaughter.hh
G4RadioactiveDecayChainsFromParent.hh
G4RadioactivityTable.hh
G4TritonDecay.hh
G4UIcmdWithNucleusLimits.hh
G4UserLimitsForRD.hh
SOURCES
G4AlphaDecay.cc
G4BatemanParameters.cc
G4BetaDecayCorrections.cc
G4BetaDecayType.cc
G4BetaMinusDecay.cc
G4BetaPlusDecay.cc
G4ECDecay.cc
G4ITDecay.cc
G4SFDecay.cc
G4NeutronDecay.cc
G4NuclearDecay.cc
G4NucleusLimits.cc
G4ProtonDecay.cc
G4RadioactiveDecayBase.cc
G4RadioactiveDecayBaseMessenger.cc
G4Radioactivation.cc
G4RadioactivationMessenger.cc
G4RadioactiveDecayMode.cc
G4RadioactiveDecayRatesToDaughter.cc
G4RadioactiveDecayChainsFromParent.cc
G4RadioactivityTable.cc
G4TritonDecay.cc
G4UIcmdWithNucleusLimits.cc)
# List any source specific properties here
geant4_module_link_libraries(G4hadronic_radioactivedecay
PUBLIC
G4globman
G4hadronic_util
G4heprandom
G4intercoms
G4partman
G4procman
G4track
PRIVATE
G4baryons
G4bosons
G4emlowenergy
G4emutils
G4geometrymng
G4had_fission
G4hadronic_deex_management
G4hadronic_deex_photon_evaporation
G4hadronic_mgt
G4hadronic_util
G4hepgeometry
G4ions
G4leptons
G4materials)
@@ -38,7 +38,6 @@
#include "G4DynamicParticle.hh"
#include "G4DecayProducts.hh"
#include "G4PhotonEvaporation.hh"
#include "G4RadioactiveDecay.hh"
#include "G4VAtomDeexcitation.hh"
#include "G4AtomicShells.hh"
#include "G4Electron.hh"
@@ -42,52 +42,28 @@
G4RadioactivationMessenger::G4RadioactivationMessenger(G4Radioactivation* theRadioactivationContainer1)
:theRadioactivationContainer(theRadioactivationContainer1)
{
old_grdmDirectory = new G4UIdirectory("/grdm/"); // To be removed in G4 11.0
old_grdmDirectory->SetGuidance("Controls the biased version of radioactive decay");
rdmDirectory = new G4UIdirectory("/process/had/rdm/");
rdmDirectory->SetGuidance("Controls the biased version of radioactive decay");
// Command to turn on/off variance reduction options
old_analoguemcCmd = new G4UIcmdWithABool("/grdm/analogueMC",this); // To be removed in G4 11.0
old_analoguemcCmd->SetGuidance("false: variance reduction method; true: analogue method");
old_analoguemcCmd->SetParameterName("OldAnalogueMC",true);
old_analoguemcCmd->SetDefaultValue(true);
analoguemcCmd = new G4UIcmdWithABool("/process/had/rdm/analogueMC",this);
analoguemcCmd->SetGuidance("false: variance reduction method; true: analogue method");
analoguemcCmd->SetParameterName("AnalogueMC",true);
analoguemcCmd->SetDefaultValue(true);
// Command to use branching ratio biasing or not
old_brbiasCmd = new G4UIcmdWithABool("/grdm/BRbias",this); // To be removed in G4 11.0
old_brbiasCmd->SetGuidance("false: no biasing; true: all branches are treated as equal");
old_brbiasCmd->SetParameterName("OldBRBias",true);
old_brbiasCmd->SetDefaultValue(true);
brbiasCmd = new G4UIcmdWithABool("/process/had/rdm/BRbias",this);
brbiasCmd->SetGuidance("false: no biasing; true: all branches are treated as equal");
brbiasCmd->SetParameterName("BRBias",true);
brbiasCmd->SetDefaultValue(true);
// Command to set the half-life thresold for isomer production
old_hlthCmd = new G4UIcmdWithADoubleAndUnit("/grdm/hlThreshold",this); // To be removed in G4 11.0
old_hlthCmd->SetGuidance("Set the h-l threshold for isomer production");
old_hlthCmd->SetParameterName("OldhlThreshold",false);
old_hlthCmd->SetUnitCategory("Time");
hlthCmd = new G4UIcmdWithADoubleAndUnit("/process/had/rdm/hlThreshold",this);
hlthCmd->SetGuidance("Set the h-l threshold for isomer production");
hlthCmd->SetParameterName("hlThreshold",false);
hlthCmd->SetUnitCategory("Time");
// Command to define the incident particle source time profile
old_sourcetimeprofileCmd = new G4UIcmdWithAString("/grdm/sourceTimeProfile",this); // To be removed in G4 11.0
old_sourcetimeprofileCmd->SetGuidance
("Supply the name of the ascii file containing the source particle time profile");
old_sourcetimeprofileCmd->SetParameterName("OldSTimeProfile",true);
old_sourcetimeprofileCmd->SetDefaultValue("source.data");
sourcetimeprofileCmd = new G4UIcmdWithAString("/process/had/rdm/sourceTimeProfile",this);
sourcetimeprofileCmd->SetGuidance
("Supply the name of the ascii file containing the source particle time profile");
@@ -95,12 +71,6 @@ G4RadioactivationMessenger::G4RadioactivationMessenger(G4Radioactivation* theRad
sourcetimeprofileCmd->SetDefaultValue("source.data");
// Command to define the incident particle source time profile
old_decaybiasprofileCmd = new G4UIcmdWithAString("/grdm/decayBiasProfile",this); // To be removed in G4 11.0
old_decaybiasprofileCmd->SetGuidance
("Supply the name of the ascii file containing the decay bias time profile");
old_decaybiasprofileCmd->SetParameterName("OldDBiasProfile",true);
old_decaybiasprofileCmd->SetDefaultValue("bias.data");
decaybiasprofileCmd = new G4UIcmdWithAString("/process/had/rdm/decayBiasProfile",this);
decaybiasprofileCmd->SetGuidance
("Supply the name of the ascii file containing the decay bias time profile");
@@ -108,12 +78,6 @@ G4RadioactivationMessenger::G4RadioactivationMessenger(G4Radioactivation* theRad
decaybiasprofileCmd->SetDefaultValue("bias.data");
// Command to set nuclei splitting parameter
old_splitnucleiCmd = new G4UIcmdWithAnInteger("/grdm/splitNuclei",this); // To be removed in G4 11.0
old_splitnucleiCmd->SetGuidance("Set number of splitting for the isotopes.");
old_splitnucleiCmd->SetParameterName("OldNSplit",true);
old_splitnucleiCmd->SetDefaultValue(1);
old_splitnucleiCmd->SetRange("OldNSplit>=1");
splitnucleiCmd = new G4UIcmdWithAnInteger("/process/had/rdm/splitNuclei",this);
splitnucleiCmd->SetGuidance("Set number of splitting for the isotopes.");
splitnucleiCmd->SetParameterName("NSplit",true);
@@ -124,65 +88,18 @@ G4RadioactivationMessenger::G4RadioactivationMessenger(G4Radioactivation* theRad
G4RadioactivationMessenger::~G4RadioactivationMessenger()
{
delete old_grdmDirectory; // To be removed in G4 11.0
delete rdmDirectory;
delete old_analoguemcCmd; // To be removed in G4 11.0
delete analoguemcCmd;
delete old_sourcetimeprofileCmd; // To be removed in G4 11.0
delete sourcetimeprofileCmd;
delete old_decaybiasprofileCmd; // To be removed in G4 11.0
delete decaybiasprofileCmd;
delete old_brbiasCmd; // To be removed in G4 11.0
delete brbiasCmd;
delete old_splitnucleiCmd; // To be removed in G4 11.0
delete splitnucleiCmd;
delete old_hlthCmd; // To be removed in G4 11.0
delete hlthCmd;
}
void G4RadioactivationMessenger::SetNewValue(G4UIcommand* command, G4String newValues)
{
// Old commands to be removed in G4 11.0
if ( command == old_analoguemcCmd ) { theRadioactivationContainer->
SetAnalogueMonteCarlo( old_analoguemcCmd->GetNewBoolValue( newValues ) );
G4ExceptionDescription ed;
ed << "This command is valid but deprecated and will be replaced with the command:\n"
<< "/process/had/rdm/analogueMC in the next major release, Geant4 version 11.0";
G4Exception( "G4RadioactivationMessenger", "HAD_RDM_871", JustWarning, ed );
} else if ( command == old_brbiasCmd ) { theRadioactivationContainer->
SetBRBias( old_brbiasCmd->GetNewBoolValue( newValues ) );
G4ExceptionDescription ed;
ed << "This command is valid but deprecated and will be replaced with the command:\n"
<< "/process/had/rdm/BRbias in the next major release, Geant4 version 11.0";
G4Exception( "G4RadioactivationMessenger", "HAD_RDM_872", JustWarning, ed );
} else if ( command == old_sourcetimeprofileCmd ) { theRadioactivationContainer->
SetSourceTimeProfile( newValues );
G4ExceptionDescription ed;
ed << "This command is valid but deprecated and will be replaced with the command:\n"
<< "/process/had/rdm/sourceTimeProfile in the next major release, Geant4 version 11.0";
G4Exception( "G4RadioactivationMessenger", "HAD_RDM_873", JustWarning, ed );
} else if ( command == old_decaybiasprofileCmd ) { theRadioactivationContainer->
SetDecayBias( newValues );
G4ExceptionDescription ed;
ed << "This command is valid but deprecated and will be replaced with the command:\n"
<< "/process/had/rdm/decayBiasProfile in the next major release, Geant4 version 11.0";
G4Exception( "G4RadioactivationMessenger", "HAD_RDM_874", JustWarning, ed );
} else if ( command == old_splitnucleiCmd ) { theRadioactivationContainer->
SetSplitNuclei( old_splitnucleiCmd->GetNewIntValue( newValues ) );
G4ExceptionDescription ed;
ed << "This command is valid but deprecated and will be replaced with the command:\n"
<< "/process/had/rdm/splitNuclei in the next major release, Geant4 version 11.0";
G4Exception( "G4RadioactivationMessenger", "HAD_RDM_875", JustWarning, ed );
} else if ( command == old_hlthCmd ) { theRadioactivationContainer->
SetHLThreshold( old_hlthCmd->GetNewDoubleValue( newValues ) );
G4ExceptionDescription ed;
ed << "This command is valid but deprecated and will be replaced with the command:\n"
<< "/process/had/rdm/hlThreshold in the next major release, Geant4 version 11.0";
G4Exception( "G4RadioactivationMessenger", "HAD_RDM_876", JustWarning, ed );
}
// New commands
if ( command == analoguemcCmd ) { theRadioactivationContainer->
SetAnalogueMonteCarlo( analoguemcCmd->GetNewBoolValue( newValues ) );
} else if ( command == brbiasCmd ) { theRadioactivationContainer->
File diff suppressed because it is too large Load Diff
@@ -109,7 +109,8 @@ G4int& G4RadioactiveDecayBase::NumberOfInstances()
G4RadioactiveDecayBase::G4RadioactiveDecayBase(const G4String& processName)
: G4VRestDiscreteProcess(processName, fDecay), isInitialised(false),
forceDecayDirection(0.,0.,0.), forceDecayHalfAngle(0.*deg), dirPath(""),
verboseLevel(1)
verboseLevel(1),
fThresholdForVeryLongDecayTime( 1.0e+27*CLHEP::nanosecond ) // Longer than twice Universe's age
{
#ifdef G4VERBOSE
if (GetVerboseLevel() > 1) {
@@ -240,77 +241,78 @@ G4DecayTable* G4RadioactiveDecayBase::GetDecayTable(const G4ParticleDefinition*
}
void G4RadioactiveDecayBase::SelectAVolume(const G4String aVolume)
void G4RadioactiveDecayBase::SelectAVolume(const G4String& aVolume)
{
G4LogicalVolumeStore* theLogicalVolumes;
G4LogicalVolume* volume;
theLogicalVolumes = G4LogicalVolumeStore::GetInstance();
for (size_t i = 0; i < theLogicalVolumes->size(); i++) {
volume = (*theLogicalVolumes)[i];
if (volume->GetName() == aVolume) {
ValidVolumes.push_back(aVolume);
std::sort(ValidVolumes.begin(), ValidVolumes.end());
// sort need for performing binary_search
G4LogicalVolumeStore* theLogicalVolumes = G4LogicalVolumeStore::GetInstance();
G4LogicalVolume* volume = nullptr;
volume = theLogicalVolumes->GetVolume(aVolume);
if (volume != nullptr)
{
ValidVolumes.push_back(aVolume);
std::sort(ValidVolumes.begin(), ValidVolumes.end());
// sort need for performing binary_search
if (GetVerboseLevel() > 0)
G4cout << " Radioactive decay applied to " << aVolume << G4endl;
} else if (i == theLogicalVolumes->size() ) {
G4ExceptionDescription ed;
ed << aVolume << " is not a valid logical volume name. Decay not activated for it."
<< G4endl;
G4Exception("G4RadioactiveDecayBase::SelectAVolume()", "HAD_RDM_300",
JustWarning, ed);
}
if (GetVerboseLevel() > 0)
G4cout << " Radioactive decay applied to " << aVolume << G4endl;
}
else
{
G4ExceptionDescription ed;
ed << aVolume << " is not a valid logical volume name."
<< " Decay not activated for it."
<< G4endl;
G4Exception("G4RadioactiveDecayBase::SelectAVolume()", "HAD_RDM_300",
JustWarning, ed);
}
}
void G4RadioactiveDecayBase::DeselectAVolume(const G4String aVolume)
void G4RadioactiveDecayBase::DeselectAVolume(const G4String& aVolume)
{
G4LogicalVolumeStore* theLogicalVolumes;
G4LogicalVolume* volume;
theLogicalVolumes = G4LogicalVolumeStore::GetInstance();
for (size_t i = 0; i < theLogicalVolumes->size(); i++) {
volume = (*theLogicalVolumes)[i];
if (volume->GetName() == aVolume) {
std::vector<G4String>::iterator location;
location = std::find(ValidVolumes.begin(),ValidVolumes.end(),aVolume);
if (location != ValidVolumes.end() ) {
ValidVolumes.erase(location);
std::sort(ValidVolumes.begin(), ValidVolumes.end());
isAllVolumesMode = false;
if (GetVerboseLevel() > 0)
G4cout << " G4RadioactiveDecay::DeselectAVolume: " << aVolume
<< " is removed from list " << G4endl;
} else {
G4ExceptionDescription ed;
ed << aVolume << " is not in the list. No action taken." << G4endl;
G4Exception("G4RadioactiveDecayBase::DeselectAVolume()", "HAD_RDM_300",
JustWarning, ed);
}
} else if (i == theLogicalVolumes->size()) {
G4LogicalVolumeStore* theLogicalVolumes = G4LogicalVolumeStore::GetInstance();
G4LogicalVolume* volume = nullptr;
volume = theLogicalVolumes->GetVolume(aVolume);
if (volume != nullptr)
{
auto location= std::find(ValidVolumes.cbegin(),ValidVolumes.cend(),aVolume);
if (location != ValidVolumes.cend() )
{
ValidVolumes.erase(location);
std::sort(ValidVolumes.begin(), ValidVolumes.end());
isAllVolumesMode = false;
if (GetVerboseLevel() > 0)
G4cout << " G4RadioactiveDecay::DeselectAVolume: " << aVolume
<< " is removed from list " << G4endl;
}
else
{
G4ExceptionDescription ed;
ed << aVolume << " is not a valid logical volume name. No action taken."
<< G4endl;
ed << aVolume << " is not in the list. No action taken." << G4endl;
G4Exception("G4RadioactiveDecayBase::DeselectAVolume()", "HAD_RDM_300",
JustWarning, ed);
}
}
else
{
G4ExceptionDescription ed;
ed << aVolume << " is not a valid logical volume name. No action taken."
<< G4endl;
G4Exception("G4RadioactiveDecayBase::DeselectAVolume()", "HAD_RDM_300",
JustWarning, ed);
}
}
void G4RadioactiveDecayBase::SelectAllVolumes()
{
G4LogicalVolumeStore* theLogicalVolumes;
G4LogicalVolume* volume;
theLogicalVolumes = G4LogicalVolumeStore::GetInstance();
G4LogicalVolumeStore* theLogicalVolumes = G4LogicalVolumeStore::GetInstance();
G4LogicalVolume* volume = nullptr;
ValidVolumes.clear();
#ifdef G4VERBOSE
if (GetVerboseLevel()>1)
G4cout << " RDM Applies to all Volumes" << G4endl;
#endif
for (size_t i = 0; i < theLogicalVolumes->size(); i++){
for (std::size_t i = 0; i < theLogicalVolumes->size(); ++i){
volume = (*theLogicalVolumes)[i];
ValidVolumes.push_back(volume->GetName());
#ifdef G4VERBOSE
@@ -494,6 +496,8 @@ G4RadioactiveDecayBase::StreamInfo(std::ostream& os, const G4String& endline)
<< emparam->DeexcitationIgnoreCut() << endline;
os << "Use Bearden atomic level energies "
<< emparam->BeardenFluoDir() << endline;
os << "Threshold for very long decay time at rest "
<< fThresholdForVeryLongDecayTime/CLHEP::ns << " ns" << endline;
os << "======================================================================"
<< G4endl;
os.precision(prec);
@@ -1129,6 +1133,24 @@ void G4RadioactiveDecayBase::DecayAnalog(const G4Track& theTrack)
finalGlobalTime += temptime;
finalLocalTime += temptime;
energyDeposit += theParticle->GetKineticEnergy();
// Kill the parent particle, and ignore its decay, if it decays later than the
// threshold fThresholdForVeryLongDecayTime (whose default value corresponds
// to more than twice the age of the universe).
// This kind of cut has been introduced (in April 2021) in order to avoid to
// account energy depositions happening after many billions of years in
// ordinary materials used in calorimetry, in particular Tungsten and Lead
// (via their natural unstable, but very long lived, isotopes, such as
// W183, W180 and Pb204).
// Note that the cut is not on the average, mean lifetime, but on the actual
// sampled global decay time.
if ( finalGlobalTime > fThresholdForVeryLongDecayTime ) {
fParticleChangeForRadDecay.SetNumberOfSecondaries(0);
fParticleChangeForRadDecay.ProposeTrackStatus(fStopAndKill) ;
fParticleChangeForRadDecay.ProposeLocalEnergyDeposit(0.0);
ClearNumberOfInteractionLengthLeft();
return;
}
}
products->Boost(ParentEnergy, ParentDirection);
@@ -45,65 +45,35 @@ G4RadioactiveDecayBaseMessenger::G4RadioactiveDecayBaseMessenger
(G4RadioactiveDecayBase* theRadioactiveDecayContainer1)
:theRadioactiveDecayContainer(theRadioactiveDecayContainer1)
{
// main directory for control of the RDM
old_grdmDirectory = new G4UIdirectory("/grdm/"); // To be removed in G4 11.0
old_grdmDirectory->SetGuidance("Controls for the Radioactive Decay Module.");
rdmDirectory = new G4UIdirectory("/process/had/rdm/");
rdmDirectory->SetGuidance("Controls for the Radioactive Decay Module.");
// Command to define the limits on nucleus the RDM will treat.
old_nucleuslimitsCmd = new G4UIcmdWithNucleusLimits("/grdm/nucleusLimits",this); // To be removed in G4 11.0
old_nucleuslimitsCmd->SetGuidance("Set the atomic weight and number limits for the RDM.");
old_nucleuslimitsCmd->SetParameterName("OldAMin","OldAMax","OldZMin","OldZMax",true);
nucleuslimitsCmd = new G4UIcmdWithNucleusLimits("/process/had/rdm/nucleusLimits",this);
nucleuslimitsCmd->SetGuidance("Set the atomic weight and number limits for the RDM.");
nucleuslimitsCmd->SetParameterName("AMin","AMax","ZMin","ZMax",true);
// Select a logical volume for RDM
old_avolumeCmd = new G4UIcmdWithAString("/grdm/selectVolume",this); // To be removed in G4 11.0
old_avolumeCmd->SetGuidance("Supply a logical volumes name to add it to the RDM apply list");
old_avolumeCmd->SetParameterName("OldAVolume",false);
avolumeCmd = new G4UIcmdWithAString("/process/had/rdm/selectVolume",this);
avolumeCmd->SetGuidance("Supply a logical volumes name to add it to the RDM apply list");
avolumeCmd->SetParameterName("AVolume",false);
// De-select a logical volume for RDM
old_deavolumeCmd = new G4UIcmdWithAString("/grdm/deselectVolume",this); // To be removed in G4 11.0
old_deavolumeCmd->SetGuidance("Supply a logical volumes name to remove it from the RDM apply list");
old_deavolumeCmd->SetParameterName("OldAVolume",false);
deavolumeCmd = new G4UIcmdWithAString("/process/had/rdm/deselectVolume",this);
deavolumeCmd->SetGuidance("Supply a logical volumes name to remove it from the RDM apply list");
deavolumeCmd->SetParameterName("AVolume",false);
// Select all logical volumes for RDM
old_allvolumesCmd = new G4UIcmdWithoutParameter("/grdm/allVolumes",this); // To be removed in G4 11.0
old_allvolumesCmd->SetGuidance(" apply RDM to all logical volumes. No parameter required.");
// old_allvolumeCmd->SetParameterName("OldAddAVolume",true);
allvolumesCmd = new G4UIcmdWithoutParameter("/process/had/rdm/allVolumes",this);
allvolumesCmd->SetGuidance(" apply RDM to all logical volumes. No parameter required.");
// allvolumeCmd->SetParameterName("AddAVolume",true);
// De-select all logical volumes for RDM
old_deallvolumesCmd = new G4UIcmdWithoutParameter("/grdm/noVolumes",this); // To be removed in G4 11.0
old_deallvolumesCmd->SetGuidance(" RDM is not applied to any logical volumes");
// old_deallvolumesCmd->SetParameterName("OldRemoveAVolume",true);
deallvolumesCmd = new G4UIcmdWithoutParameter("/process/had/rdm/noVolumes",this);
deallvolumesCmd->SetGuidance(" RDM is not applied to any logical volumes");
// deallvolumesCmd->SetParameterName("RemoveAVolume",true);
// Command to invoke internal conversion or not
old_icmCmd = new G4UIcmdWithABool("/grdm/applyICM",this); // To be removed in G4 11.0
old_icmCmd->SetGuidance("Command not active; kept for backward compatibility.");
old_icmCmd->SetGuidance("Internal conversion is always turned on.");
old_icmCmd->SetParameterName("OldApplyICM",true);
old_icmCmd->SetDefaultValue(true);
icmCmd = new G4UIcmdWithABool("/process/had/rdm/applyICM",this);
icmCmd->SetGuidance("Command not active; kept for backward compatibility.");
icmCmd->SetGuidance("Internal conversion is always turned on.");
@@ -111,12 +81,6 @@ G4RadioactiveDecayBaseMessenger::G4RadioactiveDecayBaseMessenger
icmCmd->SetDefaultValue(true);
// Command to invoke atomic relaxation or not
old_armCmd = new G4UIcmdWithABool("/grdm/applyARM",this); // To be removed in G4 11.0
old_armCmd->SetGuidance("True: ARM is applied; false: no");
old_armCmd->SetParameterName("OldApplyARM",true);
old_armCmd->SetDefaultValue(true);
//old_armCmd->AvailableForStates(G4State_PreInit);
armCmd = new G4UIcmdWithABool("/process/had/rdm/applyARM",this);
armCmd->SetGuidance("True: ARM is applied; false: no");
armCmd->SetParameterName("ApplyARM",true);
@@ -124,32 +88,17 @@ G4RadioactiveDecayBaseMessenger::G4RadioactiveDecayBaseMessenger
//armCmd->AvailableForStates(G4State_PreInit);
// Command to set the directional bias (collimation) vector
old_colldirCmd = new G4UIcmdWith3Vector("/grdm/decayDirection",this); // To be removed in G4 11.0
old_colldirCmd->SetGuidance("Supply the direction vector for decay products");
old_colldirCmd->SetParameterName("OldX","OldY","OldZ",false);
colldirCmd = new G4UIcmdWith3Vector("/process/had/rdm/decayDirection",this);
colldirCmd->SetGuidance("Supply the direction vector for decay products");
colldirCmd->SetParameterName("X","Y","Z",false);
// Command to set the directional bias (collimation) half angle ("cone")
old_collangleCmd = new G4UIcmdWithADoubleAndUnit("/grdm/decayHalfAngle",this); // To be removed in G4 11.0
old_collangleCmd->SetGuidance("Supply maximum angle from direction vector for decay products");
old_collangleCmd->SetParameterName("OldHalfAngle",false);
old_collangleCmd->SetUnitCategory("Angle");
collangleCmd = new G4UIcmdWithADoubleAndUnit("/process/had/rdm/decayHalfAngle",this);
collangleCmd->SetGuidance("Supply maximum angle from direction vector for decay products");
collangleCmd->SetParameterName("HalfAngle",false);
collangleCmd->SetUnitCategory("Angle");
// This command setup the verbose level of radioactive decay
old_verboseCmd = new G4UIcmdWithAnInteger("/grdm/verbose",this); // To be removed in G4 11.0
old_verboseCmd->SetGuidance("Set verbose level: 0, 1, 2 or 3");
old_verboseCmd->SetParameterName("OldVerboseLevel",true);
old_verboseCmd->SetDefaultValue(1);
old_verboseCmd->SetRange("OldVerboseLevel>=0");
verboseCmd = new G4UIcmdWithAnInteger("/process/had/rdm/verbose",this);
verboseCmd->SetGuidance("Set verbose level: 0, 1, 2 or 3");
verboseCmd->SetParameterName("VerboseLevel",true);
@@ -157,20 +106,6 @@ G4RadioactiveDecayBaseMessenger::G4RadioactiveDecayBaseMessenger
verboseCmd->SetRange("VerboseLevel>=0");
// Use a user-defined decay datafile for a given isotope
old_userDecayDataCmd = new G4UIcommand("/grdm/setRadioactiveDecayFile",this); // To be removed in G4 11.0
old_userDecayDataCmd->SetGuidance("Supply user-defined radioactive decay data file");
G4UIparameter* old_Z_para= new G4UIparameter("Z_isotope",'i',true);
old_Z_para->SetParameterRange("Z_isotope > 0");
old_Z_para->SetGuidance("Z: Charge number of isotope");
G4UIparameter* old_A_para= new G4UIparameter("A_isotope",'i',true);
old_A_para->SetParameterRange("A_isotope > 1");
old_A_para->SetGuidance("A: mass number of isotope");
G4UIparameter* old_FileName_para= new G4UIparameter("file_name",'s',true);
old_FileName_para->SetGuidance("Name of the user data file");
old_userDecayDataCmd->SetParameter(old_Z_para);
old_userDecayDataCmd->SetParameter(old_A_para);
old_userDecayDataCmd->SetParameter(old_FileName_para);
userDecayDataCmd = new G4UIcommand("/process/had/rdm/setRadioactiveDecayFile",this);
userDecayDataCmd->SetGuidance("Supply user-defined radioactive decay data file");
G4UIparameter* Z_para= new G4UIparameter("Z_isotope",'i',true);
@@ -186,20 +121,6 @@ G4RadioactiveDecayBaseMessenger::G4RadioactiveDecayBaseMessenger
userDecayDataCmd->SetParameter(FileName_para);
// Use a user-defined evaporation data file for a given isotope
old_userEvaporationDataCmd = new G4UIcommand("/grdm/setPhotoEvaporationFile",this); // To be removed in G4 11.0
old_userEvaporationDataCmd->SetGuidance("Supply user-defined photon evaporation data file");
G4UIparameter* old_Zpara= new G4UIparameter("Z_isotope",'i',true);
old_Zpara->SetParameterRange("Z_isotope > 0");
old_Zpara->SetGuidance("Z: Charge number of isotope");
G4UIparameter* old_Apara= new G4UIparameter("A_isotope",'i',true);
old_Apara->SetParameterRange("A_isotope > 1");
old_Apara->SetGuidance("A: mass number of isotope");
G4UIparameter* old_FileNamepara= new G4UIparameter("file_name",'s',true);
old_FileNamepara->SetGuidance("Name of the user data file");
old_userEvaporationDataCmd->SetParameter(old_Zpara);
old_userEvaporationDataCmd->SetParameter(old_Apara);
old_userEvaporationDataCmd->SetParameter(old_FileNamepara);
userEvaporationDataCmd = new G4UIcommand("/process/had/rdm/setPhotoEvaporationFile",this);
userEvaporationDataCmd->SetGuidance("Supply user-defined photon evaporation data file");
G4UIparameter* Zpara= new G4UIparameter("Z_isotope",'i',true);
@@ -213,130 +134,38 @@ G4RadioactiveDecayBaseMessenger::G4RadioactiveDecayBaseMessenger
userEvaporationDataCmd->SetParameter(Zpara);
userEvaporationDataCmd->SetParameter(Apara);
userEvaporationDataCmd->SetParameter(FileNamepara);
// Command to set the threshold for very long decay time (i.e. radioactive
// decays of nuclides at rest happening later than this threshold are ignored)
thresholdForVeryLongDecayTimeCmd = new G4UIcmdWithADoubleAndUnit("/process/had/rdm/thresholdForVeryLongDecayTime",this);
thresholdForVeryLongDecayTimeCmd->SetGuidance("Ignore decays at rest of nuclides happening after this time threshold");
thresholdForVeryLongDecayTimeCmd->SetParameterName("ThresholdForVeryLongDecayTime",false);
thresholdForVeryLongDecayTimeCmd->SetUnitCategory("Time");
}
G4RadioactiveDecayBaseMessenger::~G4RadioactiveDecayBaseMessenger ()
{
delete old_grdmDirectory; // To be removed in G4 11.0
delete rdmDirectory;
delete old_nucleuslimitsCmd; // To be removed in G4 11.0
delete nucleuslimitsCmd;
delete old_verboseCmd; // To be removed in G4 11.0
delete verboseCmd;
delete old_avolumeCmd; // To be removed in G4 11.0
delete avolumeCmd;
delete old_deavolumeCmd; // To be removed in G4 11.0
delete deavolumeCmd;
delete old_allvolumesCmd; // To be removed in G4 11.0
delete allvolumesCmd;
delete old_deallvolumesCmd; // To be removed in G4 11.0
delete deallvolumesCmd;
delete old_icmCmd; // To be removed in G4 11.0
delete icmCmd;
delete old_armCmd; // To be removed in G4 11.0
delete armCmd;
delete old_userDecayDataCmd; // To be removed in G4 11.0
delete userDecayDataCmd; //<---
delete old_userEvaporationDataCmd; // To be removed in G4 11.0
delete userEvaporationDataCmd;
delete old_colldirCmd; // To be removed in G4 11.0
delete colldirCmd;
delete old_collangleCmd; // To be removed in G4 11.0
delete collangleCmd;
delete rdmDirectory;
delete nucleuslimitsCmd;
delete verboseCmd;
delete avolumeCmd;
delete deavolumeCmd;
delete allvolumesCmd;
delete deallvolumesCmd;
delete icmCmd;
delete armCmd;
delete userDecayDataCmd;
delete userEvaporationDataCmd;
delete colldirCmd;
delete collangleCmd;
delete thresholdForVeryLongDecayTimeCmd;
}
void
G4RadioactiveDecayBaseMessenger::SetNewValue(G4UIcommand *command, G4String newValues)
{
// Old commands to be removed in G4 11.0
if ( command == old_nucleuslimitsCmd ) {
theRadioactiveDecayContainer->
SetNucleusLimits( old_nucleuslimitsCmd->GetNewNucleusLimitsValue( newValues ) );
G4ExceptionDescription ed;
ed << "This command is valid but deprecated and will be replaced with the command:\n"
<< "/process/had/rdm/nucleusLimits in the next major release, Geant4 version 11.0";
G4Exception( "G4RadioactiveDecayBaseMessenger", "HAD_RDM_671", JustWarning, ed );
} else if ( command == old_avolumeCmd ) {
theRadioactiveDecayContainer->SelectAVolume( newValues );
G4ExceptionDescription ed;
ed << "This command is valid but deprecated and will be replaced with the command:\n"
<< "/process/had/rdm/selectVolume in the next major release, Geant4 version 11.0";
G4Exception( "G4RadioactiveDecayBaseMessenger", "HAD_RDM_672", JustWarning, ed );
} else if ( command == old_deavolumeCmd ) {
theRadioactiveDecayContainer->DeselectAVolume( newValues );
G4ExceptionDescription ed;
ed << "This command is valid but deprecated and will be replaced with the command:\n"
<< "/process/had/rdm/deselectVolume in the next major release, Geant4 version 11.0";
G4Exception( "G4RadioactiveDecayBaseMessenger", "HAD_RDM_673", JustWarning, ed );
} else if ( command == old_allvolumesCmd ) {
theRadioactiveDecayContainer->SelectAllVolumes();
G4ExceptionDescription ed;
ed << "This command is valid but deprecated and will be replaced with the command:\n"
<< "/process/had/rdm/allVolumes in the next major release, Geant4 version 11.0";
G4Exception( "G4RadioactiveDecayBaseMessenger", "HAD_RDM_674", JustWarning, ed );
} else if ( command == old_deallvolumesCmd ) {
theRadioactiveDecayContainer->DeselectAllVolumes();
G4ExceptionDescription ed;
ed << "This command is valid but deprecated and will be replaced with the command:\n"
<< "/process/had/rdm/noVolumes in the next major release, Geant4 version 11.0";
G4Exception( "G4RadioactiveDecayBaseMessenger", "HAD_RDM_675", JustWarning, ed );
} else if ( command == old_verboseCmd ) {
theRadioactiveDecayContainer->SetVerboseLevel( old_verboseCmd->GetNewIntValue( newValues ) );
G4ExceptionDescription ed;
ed << "This command is valid but deprecated and will be replaced with the command:\n"
<< "/process/had/rdm/verbose in the next major release, Geant4 version 11.0";
G4Exception( "G4RadioactiveDecayBaseMessenger", "HAD_RDM_676", JustWarning, ed );
} else if ( command == old_icmCmd ) {
theRadioactiveDecayContainer->SetICM( old_icmCmd->GetNewBoolValue( newValues ) );
G4ExceptionDescription ed;
ed << "This command is valid but deprecated and will be replaced with the command:\n"
<< "/process/had/rdm/applyICM in the next major release, Geant4 version 11.0";
G4Exception( "G4RadioactiveDecayBaseMessenger", "HAD_RDM_677", JustWarning, ed );
} else if ( command == old_armCmd ) {
theRadioactiveDecayContainer->SetARM( old_armCmd->GetNewBoolValue( newValues ) );
G4ExceptionDescription ed;
ed << "This command is valid but deprecated and will be replaced with the command:\n"
<< "/process/had/rdm/applyARM in the next major release, Geant4 version 11.0";
G4Exception( "G4RadioactiveDecayBaseMessenger", "HAD_RDM_678", JustWarning, ed );
} else if ( command == old_userDecayDataCmd ) {
G4int Z,A;
G4String file_name;
const char* nv = (const char*)newValues;
std::istringstream is(nv);
is >> Z >> A >> file_name;
theRadioactiveDecayContainer->AddUserDecayDataFile(Z,A,file_name);
G4ExceptionDescription ed;
ed << "This command is valid but deprecated and will be replaced with the command:\n"
<< "/process/had/rdm/setRadioactiveDecayFile in the next major release, Geant4 version 11.0";
G4Exception( "G4RadioactiveDecayBaseMessenger", "HAD_RDM_679", JustWarning, ed );
} else if ( command == old_userEvaporationDataCmd ) {
G4int Z,A;
G4String file_name;
const char* nv = (const char*)newValues;
std::istringstream is(nv);
is >> Z >> A >> file_name;
G4NuclearLevelData::GetInstance()->AddPrivateData(Z,A,file_name);
G4ExceptionDescription ed;
ed << "This command is valid but deprecated and will be replaced with the command:\n"
<< "/process/had/rdm/setPhotoEvaporationFile in the next major release, Geant4 version 11.0";
G4Exception( "G4RadioactiveDecayBaseMessenger", "HAD_RDM_680", JustWarning, ed );
} else if ( command == old_colldirCmd ) {
theRadioactiveDecayContainer->SetDecayDirection( old_colldirCmd->GetNew3VectorValue( newValues ) );
G4ExceptionDescription ed;
ed << "This command is valid but deprecated and will be replaced with the command:\n"
<< "/process/had/rdm/decayDirection in the next major release, Geant4 version 11.0";
G4Exception( "G4RadioactiveDecayBaseMessenger", "HAD_RDM_681", JustWarning, ed );
} else if ( command == old_collangleCmd ) {
theRadioactiveDecayContainer->SetDecayHalfAngle( old_collangleCmd->GetNewDoubleValue( newValues ) );
G4ExceptionDescription ed;
ed << "This command is valid but deprecated and will be replaced with the command:\n"
<< "/process/had/rdm/decayHalfAngle in the next major release, Geant4 version 11.0";
G4Exception( "G4RadioactiveDecayBaseMessenger", "HAD_RDM_682", JustWarning, ed );
}
// New commands
if ( command == nucleuslimitsCmd ) {
theRadioactiveDecayContainer->
SetNucleusLimits( nucleuslimitsCmd->GetNewNucleusLimitsValue( newValues ) );
@@ -372,6 +201,8 @@ G4RadioactiveDecayBaseMessenger::SetNewValue(G4UIcommand *command, G4String newV
theRadioactiveDecayContainer->SetDecayDirection( colldirCmd->GetNew3VectorValue( newValues ) );
} else if ( command == collangleCmd ) {
theRadioactiveDecayContainer->SetDecayHalfAngle( collangleCmd->GetNewDoubleValue( newValues ) );
}
} else if ( command == thresholdForVeryLongDecayTimeCmd ) {
theRadioactiveDecayContainer->SetThresholdForVeryLongDecayTime( thresholdForVeryLongDecayTimeCmd->GetNewDoubleValue( newValues ) );
}
}
@@ -1,525 +0,0 @@
//
// ********************************************************************
// * 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. *
// ********************************************************************
//
#include "G4RadioactiveDecaymessenger.hh"
#include "G4NuclearLevelData.hh"
#include <sstream>
#include "G4HadronicException.hh"
G4RadioactiveDecaymessenger::G4RadioactiveDecaymessenger
(G4RadioactiveDecay* theRadioactiveDecayContainer1)
:theRadioactiveDecayContainer(theRadioactiveDecayContainer1)
{
// main directory for control of the RDM
old_grdmDirectory = new G4UIdirectory("/grdm/"); // To be removed in G4 11.0
old_grdmDirectory->SetGuidance("Controls for the Radioactive Decay Module.");
rdmDirectory = new G4UIdirectory("/process/had/rdm/");
rdmDirectory->SetGuidance("Controls for the Radioactive Decay Module.");
// Command to define the limits on nucleus the RDM will treat.
old_nucleuslimitsCmd = new G4UIcmdWithNucleusLimits("/grdm/nucleusLimits",this); // To be removed in G4 11.0
old_nucleuslimitsCmd->SetGuidance("Set the atomic weight and number limits for the RDM.");
old_nucleuslimitsCmd->SetParameterName("OldAMin","OldAMax","OldZMin","OldZMax",true);
nucleuslimitsCmd = new G4UIcmdWithNucleusLimits("/process/had/rdm/nucleusLimits",this);
nucleuslimitsCmd->SetGuidance("Set the atomic weight and number limits for the RDM.");
nucleuslimitsCmd->SetParameterName("AMin","AMax","ZMin","ZMax",true);
// The next command contols whether the decay will be treated analoguely or
// with variance reduction
old_analoguemcCmd = new G4UIcmdWithABool("/grdm/analogueMC",this); // To be removed in G4 11.0
old_analoguemcCmd->SetGuidance("false: variance reduction method; true: analogue method");
old_analoguemcCmd->SetParameterName("OldAnalogueMC",true);
old_analoguemcCmd->SetDefaultValue(true);
analoguemcCmd = new G4UIcmdWithABool("/process/had/rdm/analogueMC",this);
analoguemcCmd->SetGuidance("false: variance reduction method; true: analogue method");
analoguemcCmd->SetParameterName("AnalogueMC",true);
analoguemcCmd->SetDefaultValue(true);
// The next command contols whether beta decay will be treated faithfully or in fast mode
old_fbetaCmd = new G4UIcmdWithABool("/grdm/fBeta",this); // To be removed in G4 11.0
old_fbetaCmd->SetGuidance("false: use 3-body decay, true: use histogram method");
old_fbetaCmd->SetParameterName("OldFBeta",true);
old_fbetaCmd->SetDefaultValue(false);
fbetaCmd = new G4UIcmdWithABool("/process/had/rdm/fBeta",this);
fbetaCmd->SetGuidance("false: use 3-body decay, true: use histogram method");
fbetaCmd->SetParameterName("FBeta",true);
fbetaCmd->SetDefaultValue(false);
// Command to selete a logical volume for RDM.
old_avolumeCmd = new G4UIcmdWithAString("/grdm/selectVolume",this); // To be removed in G4 11.0
old_avolumeCmd->SetGuidance("Supply a logical volumes name to add it to the RDM apply list");
old_avolumeCmd->SetParameterName("OldAVolume",false);
avolumeCmd = new G4UIcmdWithAString("/process/had/rdm/selectVolume",this);
avolumeCmd->SetGuidance("Supply a logical volumes name to add it to the RDM apply list");
avolumeCmd->SetParameterName("AVolume",false);
// Command to de-selete a logical volume for RDM.
old_deavolumeCmd = new G4UIcmdWithAString("/grdm/deselectVolume",this); // To be removed in G4 11.0
old_deavolumeCmd->SetGuidance("Supply a logical volumes name to remove it from the RDM apply list");
old_deavolumeCmd->SetParameterName("OldAVolume",false);
deavolumeCmd = new G4UIcmdWithAString("/process/had/rdm/deselectVolume",this);
deavolumeCmd->SetGuidance("Supply a logical volumes name to remove it from the RDM apply list");
deavolumeCmd->SetParameterName("AVolume",false);
// Command to selete all logical volumes for RDM.
old_allvolumesCmd = new G4UIcmdWithoutParameter("/grdm/allVolumes",this); // To be removed in G4 11.0
old_allvolumesCmd->SetGuidance(" apply RDM to all logical volumes. No parameter required.");
// old_allvolumeCmd->SetParameterName("OldAddAVolume",true);
allvolumesCmd = new G4UIcmdWithoutParameter("/process/had/rdm/allVolumes",this);
allvolumesCmd->SetGuidance(" apply RDM to all logical volumes. No parameter required.");
// allvolumeCmd->SetParameterName("AddAVolume",true);
// Command to de-selete a logical volume for RDM.
old_deallvolumesCmd = new G4UIcmdWithoutParameter("/grdm/noVolumes",this); // To be removed in G4 11.0
old_deallvolumesCmd->SetGuidance(" RDM is not applied to any logical volumes");
// old_deallvolumesCmd->SetParameterName("OldRemoveAVolume",true);
deallvolumesCmd = new G4UIcmdWithoutParameter("/process/had/rdm/noVolumes",this);
deallvolumesCmd->SetGuidance(" RDM is not applied to any logical volumes");
// deallvolumesCmd->SetParameterName("RemoveAVolume",true);
// The next command contols whether the branching ratio biasing will be applied or not
old_brbiasCmd = new G4UIcmdWithABool("/grdm/BRbias",this); // To be removed in G4 11.0
old_brbiasCmd->SetGuidance("false: no biasing; true: all branches are treated as equal");
old_brbiasCmd->SetParameterName("OldBRBias",true);
old_brbiasCmd->SetDefaultValue(true);
brbiasCmd = new G4UIcmdWithABool("/process/had/rdm/BRbias",this);
brbiasCmd->SetGuidance("false: no biasing; true: all branches are treated as equal");
brbiasCmd->SetParameterName("BRBias",true);
brbiasCmd->SetDefaultValue(true);
// Command controls whether ICM will be applied or not
old_icmCmd = new G4UIcmdWithABool("/grdm/applyICM",this); // To be removed in G4 11.0
old_icmCmd->SetGuidance("True: ICM is applied; false: no");
old_icmCmd->SetParameterName("OldApplyICM",true);
old_icmCmd->SetDefaultValue(true);
icmCmd = new G4UIcmdWithABool("/process/had/rdm/applyICM",this);
icmCmd->SetGuidance("True: ICM is applied; false: no");
icmCmd->SetParameterName("ApplyICM",true);
icmCmd->SetDefaultValue(true);
// Command contols whether ARM will be applied or not
old_armCmd = new G4UIcmdWithABool("/grdm/applyARM",this); // To be removed in G4 11.0
old_armCmd->SetGuidance("True: ARM is applied; false: no");
old_armCmd->SetParameterName("OldApplyARM",true);
old_armCmd->SetDefaultValue(true);
// old_armCmd->AvailableForStates(G4State_PreInit);
armCmd = new G4UIcmdWithABool("/process/had/rdm/applyARM",this);
armCmd->SetGuidance("True: ARM is applied; false: no");
armCmd->SetParameterName("ApplyARM",true);
armCmd->SetDefaultValue(true);
// armCmd->AvailableForStates(G4State_PreInit);
// Command to set the h-l thresold for isomer production
old_hlthCmd = new G4UIcmdWithADoubleAndUnit("/grdm/hlThreshold",this); // To be removed in G4 11.0
old_hlthCmd->SetGuidance("Set the h-l threshold for isomer production");
old_hlthCmd->SetParameterName("OldHlThreshold",false);
// old_hlthCmd->SetRange("OldHlThreshold>0.");
old_hlthCmd->SetUnitCategory("Time");
// old_hlthCmd->AvailableForStates(G4State_PreInit);
hlthCmd = new G4UIcmdWithADoubleAndUnit("/process/had/rdm/hlThreshold",this);
hlthCmd->SetGuidance("Set the h-l threshold for isomer production");
hlthCmd->SetParameterName("HlThreshold",false);
// hlthCmd->SetRange("HlThreshold>0.");
hlthCmd->SetUnitCategory("Time");
// hlthCmd->AvailableForStates(G4State_PreInit);
// Command to define the incident particle source time profile.
old_sourcetimeprofileCmd = new G4UIcmdWithAString("/grdm/sourceTimeProfile",this); // To be removed in G4 11.0
old_sourcetimeprofileCmd->SetGuidance
("Supply the name of the ascii file containing the source particle time profile");
old_sourcetimeprofileCmd->SetParameterName("OldSTimeProfile",true);
old_sourcetimeprofileCmd->SetDefaultValue("source.data");
sourcetimeprofileCmd = new G4UIcmdWithAString("/process/had/rdm/sourceTimeProfile",this);
sourcetimeprofileCmd->SetGuidance
("Supply the name of the ascii file containing the source particle time profile");
sourcetimeprofileCmd->SetParameterName("STimeProfile",true);
sourcetimeprofileCmd->SetDefaultValue("source.data");
// Command to define the incident particle source time profile.
old_decaybiasprofileCmd = new G4UIcmdWithAString("/grdm/decayBiasProfile",this); // To be removed in G4 11.0
old_decaybiasprofileCmd->SetGuidance
("Supply the name of the ascii file containing the decay bias time profile");
old_decaybiasprofileCmd->SetParameterName("OldDBiasProfile",true);
old_decaybiasprofileCmd->SetDefaultValue("bias.data");
decaybiasprofileCmd = new G4UIcmdWithAString("/process/had/rdm/decayBiasProfile",this);
decaybiasprofileCmd->SetGuidance
("Supply the name of the ascii file containing the decay bias time profile");
decaybiasprofileCmd->SetParameterName("DBiasProfile",true);
decaybiasprofileCmd->SetDefaultValue("bias.data");
// Command to set the directional bias (collimation) vector
old_colldirCmd = new G4UIcmdWith3Vector("/grdm/decayDirection",this); // To be removed in G4 11.0
old_colldirCmd->SetGuidance("Supply the direction vector for decay products");
old_colldirCmd->SetParameterName("OldX","OldY","OldZ",false);
colldirCmd = new G4UIcmdWith3Vector("/process/had/rdm/decayDirection",this);
colldirCmd->SetGuidance("Supply the direction vector for decay products");
colldirCmd->SetParameterName("X","Y","Z",false);
// Command to set the directional bias (collimation) half angle ("cone")
old_collangleCmd = new G4UIcmdWithADoubleAndUnit("/grdm/decayHalfAngle",this); // To be removed in G4 11.0
old_collangleCmd->SetGuidance("Supply maximum angle from direction vector for decay products");
old_collangleCmd->SetParameterName("OldHalfAngle",false);
old_collangleCmd->SetUnitCategory("Angle");
collangleCmd = new G4UIcmdWithADoubleAndUnit("/process/had/rdm/decayHalfAngle",this);
collangleCmd->SetGuidance("Supply maximum angle from direction vector for decay products");
collangleCmd->SetParameterName("HalfAngle",false);
collangleCmd->SetUnitCategory("Angle");
// This command setup the nuclei spliting parameter
old_splitnucleiCmd = new G4UIcmdWithAnInteger("/grdm/splitNuclei",this); // To be removed in G4 11.0
old_splitnucleiCmd->SetGuidance("Set number of spliting for the isotopes.");
old_splitnucleiCmd->SetParameterName("OldNSplit",true);
old_splitnucleiCmd->SetDefaultValue(1);
old_splitnucleiCmd->SetRange("OldNSplit>=1");
splitnucleiCmd = new G4UIcmdWithAnInteger("/process/had/rdm/splitNuclei",this);
splitnucleiCmd->SetGuidance("Set number of spliting for the isotopes.");
splitnucleiCmd->SetParameterName("NSplit",true);
splitnucleiCmd->SetDefaultValue(1);
splitnucleiCmd->SetRange("NSplit>=1");
// This command setup the verbose level of radioactive decay
old_verboseCmd = new G4UIcmdWithAnInteger("/grdm/verbose",this); // To be removed in G4 11.0
old_verboseCmd->SetGuidance("Set verbose level: 0, 1, 2 or 3");
old_verboseCmd->SetParameterName("OldVerboseLevel",true);
old_verboseCmd->SetDefaultValue(1);
old_verboseCmd->SetRange("OldVerboseLevel>=0");
verboseCmd = new G4UIcmdWithAnInteger("/process/had/rdm/verbose",this);
verboseCmd->SetGuidance("Set verbose level: 0, 1, 2 or 3");
verboseCmd->SetParameterName("VerboseLevel",true);
verboseCmd->SetDefaultValue(1);
verboseCmd->SetRange("VerboseLevel>=0");
// This command allows the user to define its own decay datafile for a given isotope
old_userDecayDataCmd = new G4UIcommand("/grdm/setRadioactiveDecayFile",this); // To be removed in G4 11.0
G4UIparameter* old_Z_para= new G4UIparameter("Z_isotope",'i',true);
old_Z_para->SetParameterRange("Z_isotope > 0");
old_Z_para->SetGuidance("Z: Charge number of isotope");
G4UIparameter* old_A_para= new G4UIparameter("A_isotope",'i',true);
old_A_para->SetParameterRange("A_isotope > 1");
old_A_para->SetGuidance("A: mass number of isotope");
G4UIparameter* old_FileName_para= new G4UIparameter("file_name",'s',true);
old_FileName_para->SetGuidance("Name of the user data file");
old_userDecayDataCmd->SetParameter(old_Z_para);
old_userDecayDataCmd->SetParameter(old_A_para);
old_userDecayDataCmd->SetParameter(old_FileName_para);
userDecayDataCmd = new G4UIcommand("/process/had/rdm/setRadioactiveDecayFile",this);
G4UIparameter* Z_para= new G4UIparameter("Z_isotope",'i',true);
Z_para->SetParameterRange("Z_isotope > 0");
Z_para->SetGuidance("Z: Charge number of isotope");
G4UIparameter* A_para= new G4UIparameter("A_isotope",'i',true);
A_para->SetParameterRange("A_isotope > 1");
A_para->SetGuidance("A: mass number of isotope");
G4UIparameter* FileName_para= new G4UIparameter("file_name",'s',true);
FileName_para->SetGuidance("Name of the user data file");
userDecayDataCmd->SetParameter(Z_para);
userDecayDataCmd->SetParameter(A_para);
userDecayDataCmd->SetParameter(FileName_para);
// This commands allows the user to define its own evaporation data file for a given isotope
old_userEvaporationDataCmd = new G4UIcommand("/grdm/setPhotoEvaporationFile",this); // To be removed in G4 11.0
G4UIparameter* old_Z_para_ = new G4UIparameter("Z_isotope",'i',true);
old_Z_para_->SetParameterRange("Z_isotope > 0");
old_Z_para_->SetGuidance("Z: Charge number of isotope");
G4UIparameter* old_A_para_ = new G4UIparameter("A_isotope",'i',true);
old_A_para_->SetParameterRange("A_isotope > 1");
old_A_para_->SetGuidance("A: mass number of isotope");
G4UIparameter* old_FileName_para_ = new G4UIparameter("file_name",'s',true);
old_FileName_para_->SetGuidance("Name of the user data file");
old_userEvaporationDataCmd->SetParameter(old_Z_para_);
old_userEvaporationDataCmd->SetParameter(old_A_para_);
old_userEvaporationDataCmd->SetParameter(old_FileName_para_);
userEvaporationDataCmd = new G4UIcommand("/process/had/rdm/setPhotoEvaporationFile",this);
G4UIparameter* Z_para_ = new G4UIparameter("Z_isotope",'i',true);
Z_para_->SetParameterRange("Z_isotope > 0");
Z_para_->SetGuidance("Z: Charge number of isotope");
G4UIparameter* A_para_ = new G4UIparameter("A_isotope",'i',true);
A_para_->SetParameterRange("A_isotope > 1");
A_para_->SetGuidance("A: mass number of isotope");
G4UIparameter* FileName_para_ = new G4UIparameter("file_name",'s',true);
FileName_para_->SetGuidance("Name of the user data file");
userEvaporationDataCmd->SetParameter(Z_para_);
userEvaporationDataCmd->SetParameter(A_para_);
userEvaporationDataCmd->SetParameter(FileName_para_);
}
////////////////////////////////////////////////////////////////////////////////
//
G4RadioactiveDecaymessenger::~G4RadioactiveDecaymessenger ()
{
delete old_grdmDirectory; // To be removed in G4 11.0
delete rdmDirectory;
delete old_nucleuslimitsCmd; // To be removed in G4 11.0
delete nucleuslimitsCmd;
delete old_sourcetimeprofileCmd; // To be removed in G4 11.0
delete sourcetimeprofileCmd;
delete old_decaybiasprofileCmd; // To be removed in G4 11.0
delete decaybiasprofileCmd;
delete old_analoguemcCmd; // To be removed in G4 11.0
delete analoguemcCmd;
delete old_fbetaCmd; // To be removed in G4 11.0
delete fbetaCmd;
delete old_brbiasCmd; // To be removed in G4 11.0
delete brbiasCmd;
delete old_splitnucleiCmd; // To be removed in G4 11.0
delete splitnucleiCmd;
delete old_verboseCmd; // To be removed in G4 11.0
delete verboseCmd;
delete old_avolumeCmd; // To be removed in G4 11.0
delete avolumeCmd;
delete old_deavolumeCmd; // To be removed in G4 11.0
delete deavolumeCmd;
delete old_allvolumesCmd; // To be removed in G4 11.0
delete allvolumesCmd;
delete old_deallvolumesCmd; // To be removed in G4 11.0
delete deallvolumesCmd;
delete old_icmCmd; // To be removed in G4 11.0
delete icmCmd;
delete old_armCmd; // To be removed in G4 11.0
delete armCmd;
delete old_hlthCmd; // To be removed in G4 11.0
delete hlthCmd;
delete old_userDecayDataCmd; // To be removed in G4 11.0
delete userDecayDataCmd;
delete old_userEvaporationDataCmd; // To be removed in G4 11.0
delete userEvaporationDataCmd;
delete old_colldirCmd; // To be removed in G4 11.0
delete colldirCmd;
delete old_collangleCmd; // To be removed in G4 11.0
delete collangleCmd;
}
////////////////////////////////////////////////////////////////////////////////
//
void G4RadioactiveDecaymessenger::SetNewValue (G4UIcommand *command, G4String newValues)
{
// Old commands to be removed in G4 11.0
if ( command == old_nucleuslimitsCmd ) {
theRadioactiveDecayContainer->
SetNucleusLimits( old_nucleuslimitsCmd->GetNewNucleusLimitsValue( newValues ) );
G4ExceptionDescription ed;
ed << "This command is valid but deprecated and will be replaced with the command:\n"
<< "/process/had/rdm/nucleusLimits in the next major release, Geant4 version 11.0";
G4Exception( "G4RadioactiveDecaymessenger", "HAD_RDM_771", JustWarning, ed );
} else if ( command == old_analoguemcCmd ) {
theRadioactiveDecayContainer->
SetAnalogueMonteCarlo( old_analoguemcCmd->GetNewBoolValue( newValues ) );
G4ExceptionDescription ed;
ed << "This command is valid but deprecated and will be replaced with the command:\n"
<< "/process/had/rdm/analogueMC in the next major release, Geant4 version 11.0";
G4Exception( "G4RadioactiveDecaymessenger", "HAD_RDM_772", JustWarning, ed );
} else if ( command == old_fbetaCmd ) {
theRadioactiveDecayContainer->SetFBeta( old_fbetaCmd->GetNewBoolValue( newValues ) );
G4ExceptionDescription ed;
ed << "This command is valid but deprecated and will be replaced with the command:\n"
<< "/process/had/rdm/fBeta in the next major release, Geant4 version 11.0";
G4Exception( "G4RadioactiveDecaymessenger", "HAD_RDM_773", JustWarning, ed );
} else if ( command == old_avolumeCmd ) {
theRadioactiveDecayContainer->SelectAVolume( newValues );
G4ExceptionDescription ed;
ed << "This command is valid but deprecated and will be replaced with the command:\n"
<< "/process/had/rdm/selectVolume in the next major release, Geant4 version 11.0";
G4Exception( "G4RadioactiveDecaymessenger", "HAD_RDM_774", JustWarning, ed );
} else if ( command == old_deavolumeCmd ) {
theRadioactiveDecayContainer->DeselectAVolume( newValues );
G4ExceptionDescription ed;
ed << "This command is valid but deprecated and will be replaced with the command:\n"
<< "/process/had/rdm/deselectVolume in the next major release, Geant4 version 11.0";
G4Exception( "G4RadioactiveDecaymessenger", "HAD_RDM_775", JustWarning, ed );
} else if ( command == old_allvolumesCmd ) {
theRadioactiveDecayContainer->SelectAllVolumes();
G4ExceptionDescription ed;
ed << "This command is valid but deprecated and will be replaced with the command:\n"
<< "/process/had/rdm/allVolumes in the next major release, Geant4 version 11.0";
G4Exception( "G4RadioactiveDecaymessenger", "HAD_RDM_776", JustWarning, ed );
} else if ( command == old_deallvolumesCmd ) {
theRadioactiveDecayContainer->DeselectAllVolumes();
G4ExceptionDescription ed;
ed << "This command is valid but deprecated and will be replaced with the command:\n"
<< "/process/had/rdm/noVolumes in the next major release, Geant4 version 11.0";
G4Exception( "G4RadioactiveDecaymessenger", "HAD_RDM_777", JustWarning, ed );
} else if ( command == old_brbiasCmd ) {
theRadioactiveDecayContainer->SetBRBias( old_brbiasCmd->GetNewBoolValue( newValues ) );
G4ExceptionDescription ed;
ed << "This command is valid but deprecated and will be replaced with the command:\n"
<< "/process/had/rdm/BRbias in the next major release, Geant4 version 11.0";
G4Exception( "G4RadioactiveDecaymessenger", "HAD_RDM_778", JustWarning, ed );
} else if ( command == old_sourcetimeprofileCmd ) {
theRadioactiveDecayContainer->SetSourceTimeProfile( newValues );
G4ExceptionDescription ed;
ed << "This command is valid but deprecated and will be replaced with the command:\n"
<< "/process/had/rdm/sourceTimeProfile in the next major release, Geant4 version 11.0";
G4Exception( "G4RadioactiveDecaymessenger", "HAD_RDM_779", JustWarning, ed );
} else if ( command == old_decaybiasprofileCmd ) {
theRadioactiveDecayContainer->SetDecayBias( newValues );
G4ExceptionDescription ed;
ed << "This command is valid but deprecated and will be replaced with the command:\n"
<< "/process/had/rdm/decayBiasProfile in the next major release, Geant4 version 11.0";
G4Exception( "G4RadioactiveDecaymessenger", "HAD_RDM_780", JustWarning, ed );
} else if ( command == old_splitnucleiCmd ) {
theRadioactiveDecayContainer->SetSplitNuclei( old_splitnucleiCmd->GetNewIntValue( newValues ) );
G4ExceptionDescription ed;
ed << "This command is valid but deprecated and will be replaced with the command:\n"
<< "/process/had/rdm/splitNuclei in the next major release, Geant4 version 11.0";
G4Exception( "G4RadioactiveDecaymessenger", "HAD_RDM_781", JustWarning, ed );
} else if ( command == old_verboseCmd ) {
theRadioactiveDecayContainer->SetVerboseLevel( old_verboseCmd->GetNewIntValue( newValues ) );
G4ExceptionDescription ed;
ed << "This command is valid but deprecated and will be replaced with the command:\n"
<< "/process/had/rdm/verbose in the next major release, Geant4 version 11.0";
G4Exception( "G4RadioactiveDecaymessenger", "HAD_RDM_782", JustWarning, ed );
} else if ( command == old_icmCmd ) {
theRadioactiveDecayContainer->SetICM( old_icmCmd->GetNewBoolValue( newValues ) );
G4ExceptionDescription ed;
ed << "This command is valid but deprecated and will be replaced with the command:\n"
<< "/process/had/rdm/applyICM in the next major release, Geant4 version 11.0";
G4Exception( "G4RadioactiveDecaymessenger", "HAD_RDM_783", JustWarning, ed );
} else if ( command == old_armCmd ) {
theRadioactiveDecayContainer->SetARM( old_armCmd->GetNewBoolValue( newValues ) );
G4ExceptionDescription ed;
ed << "This command is valid but deprecated and will be replaced with the command:\n"
<< "/process/had/rdm/applyARM in the next major release, Geant4 version 11.0";
G4Exception( "G4RadioactiveDecaymessenger", "HAD_RDM_784", JustWarning, ed );
} else if ( command == old_hlthCmd ) {
theRadioactiveDecayContainer->SetHLThreshold( old_hlthCmd->GetNewDoubleValue( newValues ) );
G4ExceptionDescription ed;
ed << "This command is valid but deprecated and will be replaced with the command:\n"
<< "/process/had/rdm/hlThreshold in the next major release, Geant4 version 11.0";
G4Exception( "G4RadioactiveDecaymessenger", "HAD_RDM_785", JustWarning, ed );
} else if ( command == old_userDecayDataCmd ) {
G4int Z,A;
G4String file_name;
const char* nv = (const char*)newValues;
std::istringstream is(nv);
is >> Z >> A >> file_name;
theRadioactiveDecayContainer->AddUserDecayDataFile(Z,A,file_name);
G4ExceptionDescription ed;
ed << "This command is valid but deprecated and will be replaced with the command:\n"
<< "/process/had/rdm/setRadioactiveDecayFile in the next major release, Geant4 version 11.0";
G4Exception( "G4RadioactiveDecaymessenger", "HAD_RDM_786", JustWarning, ed );
} else if ( command == old_userEvaporationDataCmd ) {
G4int Z,A;
G4String file_name;
const char* nv = (const char*)newValues;
std::istringstream is(nv);
is >> Z >> A >> file_name;
G4NuclearLevelData::GetInstance()->AddPrivateData(Z,A,file_name);
G4ExceptionDescription ed;
ed << "This command is valid but deprecated and will be replaced with the command:\n"
<< "/process/had/rdm/setPhotoEvaporationFile in the next major release, Geant4 version 11.0";
G4Exception( "G4RadioactiveDecaymessenger", "HAD_RDM_787", JustWarning, ed );
} else if ( command == old_colldirCmd ) {
theRadioactiveDecayContainer->SetDecayDirection( old_colldirCmd->GetNew3VectorValue( newValues ) );
G4ExceptionDescription ed;
ed << "This command is valid but deprecated and will be replaced with the command:\n"
<< "/process/had/rdm/decayDirection in the next major release, Geant4 version 11.0";
G4Exception( "G4RadioactiveDecaymessenger", "HAD_RDM_788", JustWarning, ed );
} else if ( command == old_collangleCmd ) {
theRadioactiveDecayContainer->SetDecayHalfAngle( old_collangleCmd->GetNewDoubleValue( newValues ) );
G4ExceptionDescription ed;
ed << "This command is valid but deprecated and will be replaced with the command:\n"
<< "/process/had/rdm/decayHalfAngle in the next major release, Geant4 version 11.0";
G4Exception( "G4RadioactiveDecaymessenger", "HAD_RDM_789", JustWarning, ed );
}
// New commands
if ( command == nucleuslimitsCmd ) {
theRadioactiveDecayContainer->
SetNucleusLimits( nucleuslimitsCmd->GetNewNucleusLimitsValue( newValues ) );
} else if ( command == analoguemcCmd ) {
theRadioactiveDecayContainer->
SetAnalogueMonteCarlo( analoguemcCmd->GetNewBoolValue( newValues ) );
} else if ( command == fbetaCmd ) {
theRadioactiveDecayContainer->SetFBeta( fbetaCmd->GetNewBoolValue( newValues ) );
} else if ( command == avolumeCmd ) {
theRadioactiveDecayContainer->SelectAVolume( newValues );
} else if ( command == deavolumeCmd ) {
theRadioactiveDecayContainer->DeselectAVolume( newValues );
} else if ( command == allvolumesCmd ) {
theRadioactiveDecayContainer->SelectAllVolumes();
} else if ( command == deallvolumesCmd ) {
theRadioactiveDecayContainer->DeselectAllVolumes();
} else if ( command == brbiasCmd ) {
theRadioactiveDecayContainer->SetBRBias( brbiasCmd->GetNewBoolValue( newValues ) );
} else if ( command == sourcetimeprofileCmd ) {
theRadioactiveDecayContainer->SetSourceTimeProfile( newValues );
} else if ( command == decaybiasprofileCmd ) {
theRadioactiveDecayContainer->SetDecayBias( newValues );
} else if ( command == splitnucleiCmd ) {
theRadioactiveDecayContainer->SetSplitNuclei( splitnucleiCmd->GetNewIntValue( newValues ) );
} else if ( command == verboseCmd ) {
theRadioactiveDecayContainer->SetVerboseLevel( verboseCmd->GetNewIntValue( newValues ) );
} else if ( command == icmCmd ) {
theRadioactiveDecayContainer->SetICM( icmCmd->GetNewBoolValue( newValues ) );
} else if ( command == armCmd ) {
theRadioactiveDecayContainer->SetARM( armCmd->GetNewBoolValue( newValues ) );
} else if ( command == hlthCmd ) {
theRadioactiveDecayContainer->SetHLThreshold( hlthCmd->GetNewDoubleValue( newValues ) );
} else if ( command == userDecayDataCmd ) {
G4int Z,A;
G4String file_name;
const char* nv = (const char*)newValues;
std::istringstream is(nv);
is >> Z >> A >> file_name;
theRadioactiveDecayContainer->AddUserDecayDataFile(Z,A,file_name);
} else if ( command == userEvaporationDataCmd ) {
G4int Z,A;
G4String file_name;
const char* nv = (const char*)newValues;
std::istringstream is(nv);
is >> Z >> A >> file_name;
G4NuclearLevelData::GetInstance()->AddPrivateData(Z,A,file_name);
} else if ( command == colldirCmd ) {
theRadioactiveDecayContainer->SetDecayDirection( colldirCmd->GetNew3VectorValue( newValues ) );
} else if ( command == collangleCmd ) {
theRadioactiveDecayContainer->SetDecayHalfAngle( collangleCmd->GetNewDoubleValue( newValues ) );
}
}