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_mgt
# Package: Geant4.src.G4processes.G4hadronic.G4hadronic_mgt
#
# 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()
@@ -20,7 +20,6 @@ CPPFLAGS += -I$(G4BASE)/global/management/include \
-I$(G4BASE)/geometry/management/include \
-I$(G4BASE)/geometry/navigation/include \
-I$(G4BASE)/processes/hadronic/util/include \
-I$(G4BASE)/processes/hadronic/models/management/include \
-I$(G4BASE)/processes/hadronic/cross_sections/include \
-I$(G4BASE)/particles/management/include \
-I$(G4BASE)/particles/leptons/include \
+141 -96
View File
@@ -7,13 +7,58 @@
History file for hadronic/management directory
----------------------------------------------
This file should be used to summarize modifications introduced in the
This file should be used to summarize modifications introduced in the
code and to keep track of all tags.
---------------------------------------------------------------
* Please list in reverse chronological order (last date on top)
---------------------------------------------------------------
04 June 2021 A. Ribon (hadr-man-V10-07-07)
---------------------------------------------------
- HadronicProcess : made public (instead of protected) the method
GetHadronicInteraction(). This can be useful for users to access at
run-time some information available from a hadronic final-state model.
17 May 2021 J. Madsen (hadr-man-V10-07-06)
---------------------------------------------------
- Fixed TLS usage of G4HadronicProcessStore
- Fixed loops in G4HadronicProcessStore::Clean()
16 April 2021 B. Morgan (hadr-man-V10-07-05)
---------------------------------------------------
- Migrate build to modular CMake API
13 April 2021 A. Ribon (hadr-man-V10-07-04)
---------------------------------------------------
- GNUmakefile, sources.cmake : moved most classes of
hadronic/models/management into hadronic/management
(with the remaining few ones moved into hadronic/util ;
moreover, all the classes of hadronic/model/util have been
moved to hadronic/util; note that the directories
hadronic/models/management/ and hadronic/models/util/ have
now been deleted).
22 March 2021 A. Ribon (hadr-man-V10-07-03)
---------------------------------------------------
- G4HadronicEPTestMessenger : removed deprecated commands.
18 March 2021 A. Ribon (hadr-man-V10-07-02)
---------------------------------------------------
- G4HadronInelasticProcess : moved to hadronic/mangement/ .
08 March 2021 A. Ribon (hadr-man-V10-07-01)
---------------------------------------------------
- G4HadronInelasticProcess : removed old and unused header file
corresponding to the Gheisha inelastic cross section (that has been
deleted).
04 March 2021 A. Ribon (hadr-man-V10-07-00)
---------------------------------------------------
- G4HadronInelasticProcess : added a new method to return the particle
definition (useful in practice to distinguish between baryons and
antibaryons, or between hadrons and ions).
01 November 2020 V. Ivanchenko (hadr-man-V10-06-10)
---------------------------------------------------
- G4HadronicProcessStore : fixed Coverity report on the Print(..) method
@@ -96,15 +141,15 @@ code and to keep track of all tags.
21 August 2019 V. Ivanchenko (hadr-man-V10-05-04)
---------------------------------------------------
- G4EnergyRangeManager : move operators to be private, removed
obsolete method, removed G4HadronicException, instead in case of
obsolete method, removed G4HadronicException, instead in case of
problem return nullptr
- G4HadronicProcess : do not use try/catch pattern to choose hadronic
interaction; decrease limit on check of offshell mass from 1.5 MeV
- G4HadronicProcess : do not use try/catch pattern to choose hadronic
interaction; decrease limit on check of offshell mass from 1.5 MeV
to 10 keV - fixed problem 2175; removed unused headers
13 July 2019 V. Ivanchenko (hadr-man-V10-05-03)
---------------------------------------------------
- G4EnergyRangeManager : added short cut - if only one model registered
- G4EnergyRangeManager : added short cut - if only one model registered
for a process no check is applied; implemented C++11 paterns
11 June 2019 A. Ribon (hadr-man-V10-05-02)
@@ -116,8 +161,8 @@ code and to keep track of all tags.
03 June 2019 V. Ivanchenko (hadr-man-V10-05-01)
---------------------------------------------------
- G4HadronicProcess - removed try/couch pattern from computation of mean
free path, removed final state random rotation
free path, removed final state random rotation
08 May 2019 V. Ivanchenko (hadr-man-V10-05-00)
---------------------------------------------------
- G4HadronicInelasticProcess - removed default GHEISHA cross section
@@ -162,7 +207,7 @@ code and to keep track of all tags.
31 May 2017 V. Ivanchenko (hadr-man-V10-04-03)
---------------------------------------------------
- G4HadronicProcess, G4HadronInelasticProcess - added keyword
- G4HadronicProcess, G4HadronInelasticProcess - added keyword
"override", cleanup cross section scale factor and weights
- G4HadronicProcessStore - use "nullptr", added flag buildXSTable
and get/set methods
@@ -182,7 +227,7 @@ code and to keep track of all tags.
09 May 2018 Alberto Ribon (hadr-man-V10-04-00)
---------------------------------------------------
- G4HadronicProcess : fixed warnings in gcc 8 regarding catching
- G4HadronicProcess : fixed warnings in gcc 8 regarding catching
polymorphic type by value, instead of by reference.
12 September 2017 Krzysztof Genser (hadr-man-V10-03-06)
@@ -198,15 +243,15 @@ code and to keep track of all tags.
- G4HadronicProcessStore::DumpHtml(): add PrintHtml for generic ion
- G4HadronicProcessStore::PrintHtml(): add loop to print descriptions
of "extra" processes, including radioactive decay.
- G4HadronicProcessStore::Clean(): add exception to prevent deletion
of G4RadioactiveDecay - already deleted somwhere else.
- G4HadronicProcessStore::Clean(): add exception to prevent deletion
of G4RadioactiveDecay - already deleted somwhere else.
11 May 2017 V. Ivanchenko (hadr-man-V10-03-03)
10 May 2017 V. Ivanchenko (hadr-man-V10-03-00)
---------------------------------------------------
- G4HadronicProcess - correctly check charge and energy balance
in the case of e- internal conversion; improved initialisation
for constructors
for constructors
01 July 2016 V. Ivanchenko (hadr-man-V10-02-03)
---------------------------------------------------
@@ -223,7 +268,7 @@ code and to keep track of all tags.
- G4HadronicProcess - added flag of "integral" approach to take into
account cross section change at a step; use nullptr;
do not create new materials in the method GetElementCrossSection(),
istead only try to find existing simple G4Material
istead only try to find existing simple G4Material
18 April 2016 V. Ivanchenko (hadr-man-V10-02-00)
---------------------------------------------------
@@ -236,19 +281,19 @@ code and to keep track of all tags.
21 September 2015 Dennis Wright (hadr-man-V10-01-05)
------------------------------------------------------
- G4HadronicProcess::BiasCrossSectionByFactor : replace
- G4HadronicProcess::BiasCrossSectionByFactor : replace
if( (it != "PhotonInelastic") &&
(it != "ElectroNuclear") &&
(it != "PositronNuclear") )
by
if( (it != "photonNuclear") &&
(it != "electronNuclear") &&
(it != "positronNuclear") )
to fix fatal exception in bug report 1740.
09 September 2015 A. Ribon (hadr-man-V10-01-04)
---------------------------------------------------
@@ -276,28 +321,28 @@ code and to keep track of all tags.
19 November 2014 G. Folger(hadr-man-V10-00-17)
---------------------------------------------------
- G4HadronicProcess::CheckResult(): Add check for dynamic mass
to correspond to PDG mass within ~10%.
- G4HadronicProcess::CheckResult(): Add check for dynamic mass
to correspond to PDG mass within ~10%.
12 November 2014 V. Ivanchenko (hadr-man-V10-00-16)
---------------------------------------------------
- G4HadronicProcessStore -fixed computation of cross sections for ions
12 November 2014 V. Ivanchenko (hadr-man-V10-00-15)
---------------------------------------------------
- G4HadronicProcess - fixed final track status for some models like
- G4HadronicProcess - fixed final track status for some models like
G4WilsonAbrasionModel
11 November 2014 V. Ivanchenko (hadr-man-V10-00-14)
---------------------------------------------------
- G4HadronicProcess - clear final state before resample interaction
due to energy balance violation
due to energy balance violation
7 November 2014 V. Ivanchenko (hadr-man-V10-00-13)
------------------------------------------------
4 November 2014 V. Ivanchenko (hadr-man-V10-00-12)
------------------------------------------------
- G4HadronicProcess - added creator model type to secondary
- G4HadronicProcess - added creator model type to secondary
12 September 2014 Tatsumi Koi (hadr-man-V10-00-11)
------------------------------------------------
@@ -309,7 +354,7 @@ code and to keep track of all tags.
4 August 2014 V. Ivanchenko (hadr-man-V10-00-10)
------------------------------------------------
- G4HadronicProcessStore, G4HadronicProcess: simplified registration and
- G4HadronicProcessStore, G4HadronicProcess: simplified registration and
de-registration; fixed Coverity report
1 August 2014 Alberto Ribon (hadr-man-V10-00-09)
@@ -327,9 +372,9 @@ code and to keep track of all tags.
1 July 2014 Gunter Folger (hadr-man-V10-00-07)
----------------------------------------------
- G4HadronicProcessStore::PrintHtml(): include ProcessDescription
- G4HadronicProcessStore::PrintHtml(): include ProcessDescription
inline in physics lists description
22 May 2014 Andrea Dotti (hadr-man-V10-00-06)
--------------------------------------------
- Code cleanup
@@ -340,7 +385,7 @@ code and to keep track of all tags.
21 May 2014 Andrea Dotti (hadr-man-V10-00-04)
--------------------------------------------
- Retagging: previous tag was ok.
- Retagging: previous tag was ok.
21 May 2014 Alberto Ribon (hadr-man-V10-00-03)
---------------------------------------------
@@ -350,24 +395,24 @@ code and to keep track of all tags.
20 May 2014 Andrea Dotti (hadr-man-V10-00-02)
---------------------------------------------
- G4HadronicProcessStore : correct for bug in Clear() for which stopping
processes are deleted twice (once because are registered as normal
processes are deleted twice (once because are registered as normal
processes and once are registered as extra processes).
15 May 2014 Vladimir Ivanchenko (hadr-man-V10-00-01)
---------------------------------------------------
- G4HadronicProcess: added method GetHadronicInteractionList() allowing
- G4HadronicProcess: added method GetHadronicInteractionList() allowing
access to the list of registered models, removed obsolete access
methods to G4EnergyRangeManager
- G4HadronicProcessStore - become G4ThreadLocalSingletone allowing
proper destruction of hadronic processes/models/x-sections
- G4EnergyRangeManager - cleaned up; instead of c-array models pointers
are stored in stl vector
- this tag requires remove deletion of Physics vectors from destructors
- this tag requires remove deletion of Physics vectors from destructors
of all hadronic classes
03 February 2014 Gunter Folger (hadr-man-V10-00-00)
---------------------------------------------------
- G4HadronicProcess: in EnergyMomentumCheck... add printout of 3momentum
- G4HadronicProcess: in EnergyMomentumCheck... add printout of 3momentum
20 June 2013 Dennis Wright (hadr-man-V09-06-03)
-------------------------------------------------
@@ -379,17 +424,17 @@ code and to keep track of all tags.
- Add dump method
include/G4EnergyRangeManager.hh
src/G4EnergyRangeManager.cc
7 March 2013 michel maire (hadr-man-V09-06-01)
- G4HadronicProcessStore- Dump and Print: cosmetic in Processes summary
- G4HadronicProcessStore- Dump and Print: cosmetic in Processes summary
30 January 2013 michel maire (hadr-man-V09-06-00)
-------------------------------------------------------
- G4HadronicProcessStore::GetCrossSectionPerAtom() - add material
14 November 2012 Vladimir Ivantchenko (hadr-man-V09-05-24)
-------------------------------------------------------
- G4HadronicProcess.cc - added full printout about hadronic exception
- G4HadronicProcess.cc - added full printout about hadronic exception
inside G4Exception printout, fixed bug#1377
14 November 2012 Vladimir Ivantchenko (hadr-man-V09-05-23)
@@ -442,7 +487,7 @@ code and to keep track of all tags.
31 August 2012 Gunter Folger (hadr-man-V09-05-14)
----------------------------------------------------
- G4HadronicProcess: avoid printing of blank line from
- G4HadronicProcess: avoid printing of blank line from
CheckEnergyMomentumConservation()
02 August 2012 V.Ivanchenko (hadr-man-V09-05-13)
@@ -450,16 +495,16 @@ code and to keep track of all tags.
- G4HadronicProcess: removed GetTargetDefinition()
instead added GetTargetIsotope; check cross section in PostStepDoIt
only for charged particles (for performance reasons)
28 July 2012 michel maire (hadr-man-V09-05-12)
----------------------------------------------
- G4HadronicProcess: add function GetTargetDefinition()
- G4HadronicProcess: add function GetTargetDefinition()
24 July 2012 michel maire (hadr-man-V09-05-11)
----------------------------------------------
- G4HadronicProcessStore: add functions GetCrossSectionPerAtom()
- G4HadronicProcessStore: add functions GetCrossSectionPerAtom()
and GetCrossSectionPerVolume()
11 July 2012 Gunter Folger (hadr-man-V09-05-10)
--------------------------------------------------
- G4HadronicProcess.cc: fix problem of flushing stdout/stderr for energy
@@ -467,8 +512,8 @@ code and to keep track of all tags.
2 July 2012 John Apostolakis (hadr-man-V09-05-09)
-------------------------------------------------
- G4HadronicProcess.cc: Improved quick check and full check for case of
electro-nuclear.
- G4HadronicProcess.cc: Improved quick check and full check for case of
electro-nuclear.
Copes with case that both primary survives and secondaries are created.
8 June 2012 Gabriele Cosmo (hadr-man-V09-05-08)
@@ -479,18 +524,18 @@ code and to keep track of all tags.
4 June 2012 Dennis Wright (hadr-man-V09-05-07)
-------------------------------------------------
- G4HadronicProcess.hh: remove methods ResetNumberOfInteractionLengthLeft()
and GetTotalNumberOfInteractionLengthTraversed() as these have been
and GetTotalNumberOfInteractionLengthTraversed() as these have been
moved to G4VProcess. Must use with tag procman-V09-05-00 or later.
21 May 2012 Gunter Folger (hadr-man-V09-05-06)
---------------------------------------------------
- E/p conservation fails only if both absolute and relative fail;
effect: at low energies, compare to absolute limit, and at
effect: at low energies, compare to absolute limit, and at
high energies use relative limit; cross-over when limits cross,
or at absolute = Ekinetic * relative
Charge, baryon non-conservation will make test fail as before.
Charge, baryon non-conservation will make test fail as before.
10 May 2012 Gunter Folger (hadr-man-V09-05-05)
---------------------------------------------------
- Improve format of E/p conservation check printout
@@ -504,9 +549,9 @@ code and to keep track of all tags.
05 May 2012 Vladimir Ivantchenko (hadr-man-V09-05-03)
---------------------------------------------------
- G4HadronicProcess - methods FillResult, CheckResult,
- G4HadronicProcess - methods FillResult, CheckResult,
CheckEnergyMomentumConservation and members theTotalResult,
epReportLevel, thePro moved to protected to be used
epReportLevel, thePro moved to protected to be used
in derived classes; removed unused ModelingState;
commented out obsolete method FillTotalResult;
change logic of definition of time for secondary particles
@@ -522,19 +567,19 @@ code and to keep track of all tags.
16 March 2012 Gunter Folger (hadr-man-V09-05-01)
---------------------------------------------------
- add method for energy non-conservation check; in case of non-conservation,
- add method for energy non-conservation check; in case of non-conservation,
re-sample the interaction. Limits are set in G4HadronicInteraction, and
may be overridden for models; LEP and HEP override defaults, as these do not
return the nucleus in teh final state.
A test mode aborting events and reporting info on stderr is available, and
triggered by a negative value in G4Hadronic_epReportLevel env. variable.
return the nucleus in teh final state.
A test mode aborting events and reporting info on stderr is available, and
triggered by a negative value in G4Hadronic_epReportLevel env. variable.
22 January 2012 Dennis Wright (hadr-man-V09-05-00)
---------------------------------------------------
- move isotope production infrastructure from process to model level;
now done only for LEP models
- G4HadronicProcess.hh, .cc: remove all isotope production
infrastructure
infrastructure
- G4IsoParticleChange.hh : move to models/management
24 November 2011 Vladimir Ivantchenko (hadr-man-V09-04-23)
@@ -607,25 +652,25 @@ code and to keep track of all tags.
- G4HadronicProcess: use new interface to cross sections;
substitute GetMicroscopicCrossSection by
GetElementCrossSection;
added check on zero kinetic energy of primary and
secondary after interaction (active if
added check on zero kinetic energy of primary and
secondary after interaction (active if
G4HadronicProcess_debug environment variable is set)
- G4HadronicProcessStore - use new interface to cross sections
1 August 2011 Dennis Wright (hadr-man-V09-04-09)
--------------------------------------------------
- Add method G4HadronicProcessStore::DumpHtml to write out html physics
- Add method G4HadronicProcessStore::DumpHtml to write out html physics
list documentation
- Add method G4HadronicProcessStore::PrintHtml to print html
documentation for processes, models and cross sections for each
particle
25 July 2011 Vladimir Ivanchenko (hadr-man-V09-04-08)
----------------------------------------------------
- G4HadronicProcess: added public method GetTargetNucleus to access
target isotope; added private method FillResult which provides
more simple and transparent handle of primary and secondaries,
in particular, allowing primary be unchanged
more simple and transparent handle of primary and secondaries,
in particular, allowing primary be unchanged
20 July 2011 Michael Kelsey
---------------------------
@@ -639,14 +684,14 @@ code and to keep track of all tags.
5 June 2011 Dennis Wright (hadr-man-V09-04-06)
----------------------------------------------------
- G4HadronicProcessType: add fRadioactiveDecay = 211 to enum
6 April 2011 Gunter Folger (hadr-man-V09-04-05)
----------------------------------------------------
- enhance printout for case 3 in E/p checking with initial state info.
5 April 2011 Gunter Folger (hadr-man-V09-04-04)
----------------------------------------------------
- modify E/p checking to allow to use stdout or stderr, depending on
- modify E/p checking to allow to use stdout or stderr, depending on
checklevel>0 or checklevel<0.
@@ -661,15 +706,15 @@ code and to keep track of all tags.
G4Hadronic_epReportLevel : set to checklevel [1,4]
G4Hadronic_epCheckRelativeLevel: level of relative conservation
G4Hadronic_epCheckAbsoluteLevel: level for absolute conservation
10 February 2011 Dennis Wright (hadr-man-V09-04-01)
----------------------------------------------------
- add method MultiplyCrossSectionBy() to G4HadronicProcess so that
- add method MultiplyCrossSectionBy() to G4HadronicProcess so that
cross sections can be scaled for testing
7 January 2011 Dennis Wright (hadr-man-V09-04-00)
----------------------------------------------------
- G4HadronicProcess.cc: make GetCrossSectionDataStore public so it
- G4HadronicProcess.cc: make GetCrossSectionDataStore public so it
can be accessed through the process
- G4HadronicProcessStore::Print() : extend to include cross section
info
@@ -678,7 +723,7 @@ cross sections can be scaled for testing
-----------------------------------------------------
- G4HadronicProcess.cc : in PostStepDoIt, check cross section value
before calling ApplyYourself. If less than or equal to zero, return
track unchanged.
track unchanged.
21 November 2010 Dennis Wright (hadr-man-V09-03-05)
-----------------------------------------------------
@@ -687,15 +732,15 @@ cross sections can be scaled for testing
17 August 2010 Vladimir Ivanchenko (hadr-man-V09-03-04)
--------------------------------------------------------
- G4HadronicProcess - use const GetParticleDefinition method of
- G4HadronicProcess - use const GetParticleDefinition method of
G4DynamicParticle
- G4HadronicProcessStore - remove const_cast
- G4HadronicProcessStore - remove const_cast
29 July 2010 Vladimir Ivanchenko (hadr-man-V09-03-03)
------------------------------------------------
- G4HadronicProcess - added protection against negative cross section;
removed commented old code
- G4HadronicProcessStore - reduce number of const_cast
- G4HadronicProcessStore - reduce number of const_cast
01 June 2010 Gunter Folger (hadr-man-V09-03-02)
------------------------------------------------
@@ -703,7 +748,7 @@ cross sections can be scaled for testing
21 April 2010 Dennis Wright (hadr-man-V09-03-01)
------------------------------------------------
- create G4HadronicEPTestMessenger to make energy/momentum test
- create G4HadronicEPTestMessenger to make energy/momentum test
commands available in UI
- include G4HadronicEPTestMessenger in G4HadronicProcessStore
@@ -711,24 +756,24 @@ cross sections can be scaled for testing
-----------------------------------------------
- G4HadronicProcess: add methods CheckEnergyMomentumConservation,
SetEpReportLevel, SetEnergyMomentumCheckLevels,
GetEnergyMomentumCheckLevels, which implement energy/momentum
GetEnergyMomentumCheckLevels, which implement energy/momentum
checking
- also includes Vladimir Ivantchenko's clean-up of unused code
- also includes Vladimir Ivantchenko's clean-up of unused code
2 December 2009 Vladimir Ivanchenko (hadr-man-V09-02-05)
---------------------------------------------------------
- G4HadronicProcessStore - added protection to the Clean method
- G4HadronicProcessStore - added protection to the Clean method
25 February 2009 Vladimir Ivanchenko (hadr-man-V09-02-04)
---------------------------------------------------------
- G4HadronicProcessStore - added protection to the Clean method
- G4HadronicProcessStore - added protection to the Clean method
22 February 2009 Vladimir Ivanchenko (hadr-man-V09-02-03)
---------------------------------------------------------
14 February 2009 Vladimir Ivanchenko (hadr-man-V09-02-02)
---------------------------------------------------------
- G4HadronicProcessStore - added Clean method and cleanup of model
- G4HadronicProcessStore - added Clean method and cleanup of model
and cross section stores
06 February 2009 Vladimir Ivanchenko (hadr-man-V09-02-01)
@@ -740,7 +785,7 @@ cross sections can be scaled for testing
01 December 2008 Dennis Wright (hadr-man-V09-01-10)
---------------------------------------------------
- G4HadronicProcess - make MeanFreePath() public again. In future
- G4HadronicProcess - make MeanFreePath() public again. In future
make it protected again, but make a public method which calls it.
21 November 2008 Dennis Wright (hadr-man-V09-01-09)
@@ -771,7 +816,7 @@ cross sections can be scaled for testing
04 August 2008 Vladimir Ivanchenko (hadr-man-V09-01-06)
------------------------------------------------------
- G4HadronicProcessStore - improve cout
- G4HadronicProcessStore - improve cout
- G4HadronicProcess - cleanup: use method SampleZandA to select an isotope
do not use home-made NanCheck
do not check environment variables run-time
@@ -779,11 +824,11 @@ cross sections can be scaled for testing
implement PostStepDoIt and DumpPhysicsTable
methods
- G4HadronInelasticProcess - use methods of the base class
04 August 2008 Vladimir Ivanchenko (hadr-man-V09-01-05)
------------------------------------------------------
- G4HadronicProcessStore - use sub-types to access cross sections,
add proceses following only G4VProcess interface
add proceses following only G4VProcess interface
08 July 2008 Dennis Wright (hadr-man-V09-01-04)
-----------------------------------------------
@@ -791,7 +836,7 @@ cross sections can be scaled for testing
09 June 2008 Dennis Wright (hadr-man-V09-01-03)
-----------------------------------------------
- G4HadronicProcess.cc - turn off error in case of fStopButAlive, but leave
- G4HadronicProcess.cc - turn off error in case of fStopButAlive, but leave
it in place for fStopAndKill, fKillTrackAndSecondaries and fPostponeToNextEvent
05 June 2008 Vladimir Ivanchenko (hadr-man-V09-01-02)
@@ -811,7 +856,7 @@ cross sections can be scaled for testing
- G4HadronicProcess - cleanup of the header (add comments, move
methods for isotope production to the src, make
GetMeanFreePath protected, remove duplication
of PostStepDoIt), add default implementation of
of PostStepDoIt), add default implementation of
GetMicroscopicCrossSection, comment out check
IfApplicable in MeanFreePath
@@ -847,7 +892,7 @@ aT.GetGlobalTime() with the variable time at line #664.
- G4HadronicProcess.hh
remove AlwaysKillLeadingHadron method
- G4HadronicProcess.cc
use Alex Howard's fix of weighting error in leading particle killer
use Alex Howard's fix of weighting error in leading particle killer
10 Apr 2007 Dennis Wright (hadr-man-V08-02-02)
----------------------------------------------
@@ -861,17 +906,17 @@ aT.GetGlobalTime() with the variable time at line #664.
2 Mar 2007 Dennis Wright (hadr-man-V08-02-01)
---------------------------------------------
- G4HadronicProcess.cc: put in Vladimir Ivantchenko's fix to
- G4HadronicProcess.cc: put in Vladimir Ivantchenko's fix to
stop killing primaries for elastic
26 Dec 2006 Dennis Wright (hadr-man-V08-02-00)
----------------------------------------------
- G4HadronicProcess.hh, .cc:
Add handling of user-defined isotopes: re-implement methods
GetMeanFreePath() and ChooseAandZ() to use new methods in
G4CrossSectionDataStore.
Add handling of user-defined isotopes: re-implement methods
GetMeanFreePath() and ChooseAandZ() to use new methods in
G4CrossSectionDataStore.
No longer use dispatch pointer to call data store methods.
Data members currentZ, currentN and methods GetCurrentZ(),
Data members currentZ, currentN and methods GetCurrentZ(),
GetCurrentN() removed as no longer needed
20 Oct 2006 Dennis Wright (hadr-man-V08-01-00)
@@ -884,8 +929,8 @@ aT.GetGlobalTime() with the variable time at line #664.
- G4HadronicProcess::ChooseAandZ() : throw fatal exception if
Z > 92 is chosen
- G4HadronicProcess::GeneralPostStepDoIt() : for suspended tracks, allow
PostStep action to occur at end of step, but maintain suspended
- G4HadronicProcess::GeneralPostStepDoIt() : for suspended tracks, allow
PostStep action to occur at end of step, but maintain suspended
track status. Remove warning for suspended tracks.
@@ -902,17 +947,17 @@ aT.GetGlobalTime() with the variable time at line #664.
16 Dec 2005 Dennis Wright for Mikhail Kossov (hadr-man-V08-00-00)
-----------------------------------------------------------------
- G4HadronicProcess.hh: in method ChooseHadronicInteraction, check
G4HadronicInteractionCounter for error - if
G4HadronicInteractionCounter for error - if
so print out
- G4EnergyRangeManager.hh: make method GetHadronicInteractionCounter public
- G4EnergyRangeManager.cc: in method GetHadronicInteraction, case 0, print out
- G4EnergyRangeManager.hh: make method GetHadronicInteractionCounter public
- G4EnergyRangeManager.cc: in method GetHadronicInteraction, case 0, print out
diagnostic information for exception when no model
is found.
15 Dec 2005 Dennis Wright
-------------------------
- G4HadronicProcess.cc:
- G4HadronicProcess.cc:
fixed bug # 611 - problems caused when hadronic interactions
reset stopButAlive particle to Alive
solution: In method FillTotalResult add lines
@@ -925,4 +970,4 @@ aT.GetGlobalTime() with the variable time at line #664.
18 Nov 2005 Dennis Wright (hadr-man-V07-01-00)
----------------------------------------------
- G4HadronicProcess.cc: <sstream> migration
- G4HadronicProcess.cc: <sstream> migration
@@ -59,13 +59,9 @@ class G4HadronicEPTestMessenger: public G4UImessenger
private:
G4HadronicProcessStore* theProcessStore;
G4UIdirectory* old_heptstDirectory; // To be removed in G4 11.0
G4UIdirectory* heptstDirectory;
G4UIcmdWithAnInteger* old_reportLvlCmd; // To be removed in G4 11.0
G4UIcmdWithAnInteger* reportLvlCmd;
G4UIcmdWithADouble* old_procRelLvlCmd; // To be removed in G4 11.0
G4UIcmdWithADouble* procRelLvlCmd;
G4UIcmdWithADoubleAndUnit* old_procAbsLvlCmd; // To be removed in G4 11.0
G4UIcmdWithADoubleAndUnit* procAbsLvlCmd;
};
@@ -0,0 +1,208 @@
//
// ********************************************************************
// * 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. *
// ********************************************************************
//
//
//
// Hadronic Interaction abstract base class
// This class is the base class for the model classes.
// It sorts out the energy-range for the models and provides
// class utilities.
// original by H.P. Wellisch
// Modified by J.L.Chuma, TRIUMF, 21-Mar-1997
// Last modified: 3-Apr-1997
// Added units to energy initialization: J.L. Chuma 04-Apr-97
// Modified by J.L.Chuma, 05-May-97 to Initialize theBlockedCounter
// Modified by J.L.Chuma, 08-Jul-97 to implement the Nucleus changes
// Adding a registry for memory management of hadronic models, HPW 22-Mar-99
// 23-Jan-2009 V.Ivanchenko move constructor and destructor to the body
// and reorder methods in the header
// 29-Jun-2009 V.Ivanchenko add SampleInvariantT method
// 29-Aug-2009 V.Ivanchenko moved G4ReactionDynamics to G4InelasticInteraction,
// add const pointers, and added recoilEnergyThreshold
// member and accesors
// Class Description
// This is the base class for all hadronic interaction models in geant4.
// If you want to implement a new way of producing a final state, please,
// inherit from here.
// Class Description - End
#ifndef G4HadronicInteraction_h
#define G4HadronicInteraction_h 1
#include "G4HadFinalState.hh"
#include "G4Material.hh"
#include "G4Nucleus.hh"
#include "G4Track.hh"
#include "G4HadProjectile.hh"
class G4HadronicInteractionRegistry;
class G4HadronicInteraction
{
public: // With description
explicit G4HadronicInteraction(const G4String& modelName = "HadronicModel");
virtual ~G4HadronicInteraction();
virtual G4HadFinalState *ApplyYourself(const G4HadProjectile &aTrack,
G4Nucleus & targetNucleus );
// The interface to implement for final state production code.
virtual G4double SampleInvariantT(const G4ParticleDefinition* p,
G4double plab,
G4int Z, G4int A);
// The interface to implement sampling of scattering or change exchange
virtual G4bool IsApplicable(const G4HadProjectile & aTrack,
G4Nucleus & targetNucleus);
inline G4double GetMinEnergy() const
{ return theMinEnergy; }
G4double GetMinEnergy( const G4Material *aMaterial,
const G4Element *anElement ) const;
inline void SetMinEnergy( G4double anEnergy )
{ theMinEnergy = anEnergy; }
void SetMinEnergy( G4double anEnergy, const G4Element *anElement );
void SetMinEnergy( G4double anEnergy, const G4Material *aMaterial );
inline G4double GetMaxEnergy() const
{ return theMaxEnergy; }
G4double GetMaxEnergy( const G4Material *aMaterial,
const G4Element *anElement ) const;
inline void SetMaxEnergy( const G4double anEnergy )
{ theMaxEnergy = anEnergy; }
void SetMaxEnergy( G4double anEnergy, const G4Element *anElement );
void SetMaxEnergy( G4double anEnergy, const G4Material *aMaterial );
inline G4int GetVerboseLevel() const
{ return verboseLevel; }
inline void SetVerboseLevel( G4int value )
{ verboseLevel = value; }
inline const G4String& GetModelName() const
{ return theModelName; }
void DeActivateFor(const G4Material* aMaterial);
inline void ActivateFor( const G4Material *aMaterial )
{
Block();
SetMaxEnergy(GetMaxEnergy(), aMaterial);
SetMinEnergy(GetMinEnergy(), aMaterial);
}
void DeActivateFor( const G4Element *anElement );
inline void ActivateFor( const G4Element *anElement )
{
Block();
SetMaxEnergy(GetMaxEnergy(), anElement);
SetMinEnergy(GetMinEnergy(), anElement);
}
G4bool IsBlocked( const G4Material *aMaterial ) const;
G4bool IsBlocked( const G4Element *anElement) const;
inline void SetRecoilEnergyThreshold(G4double val)
{ recoilEnergyThreshold = val; }
G4double GetRecoilEnergyThreshold() const
{ return recoilEnergyThreshold;}
virtual const std::pair<G4double, G4double> GetFatalEnergyCheckLevels() const;
virtual std::pair<G4double, G4double> GetEnergyMomentumCheckLevels() const;
inline void
SetEnergyMomentumCheckLevels(G4double relativeLevel, G4double absoluteLevel)
{ epCheckLevels.first = relativeLevel;
epCheckLevels.second = absoluteLevel; }
virtual void ModelDescription(std::ostream& outFile) const ; //=0;
// Initialisation before run
virtual void BuildPhysicsTable(const G4ParticleDefinition&);
virtual void InitialiseModel();
G4HadronicInteraction(const G4HadronicInteraction &right ) = delete;
const G4HadronicInteraction& operator=(const G4HadronicInteraction &right) = delete;
G4bool operator==(const G4HadronicInteraction &right ) const = delete;
G4bool operator!=(const G4HadronicInteraction &right ) const = delete;
protected:
inline void SetModelName(const G4String& nam)
{ theModelName = nam; }
inline G4bool IsBlocked() const { return isBlocked;}
inline void Block() { isBlocked = true; }
G4HadFinalState theParticleChange;
// the G4HadFinalState object which is modified and returned
// by address by the ApplyYourself method,
// (instead of aParticleChange as found in G4VProcess)
G4int verboseLevel;
// control flag for output messages
// 0: silent
// 1: warning messages
// 2: more
// (instead of verboseLevel as found in G4VProcess)
// these two have global validity energy range
G4double theMinEnergy;
G4double theMaxEnergy;
G4bool isBlocked;
private:
G4HadronicInteractionRegistry* registry;
G4double recoilEnergyThreshold;
G4String theModelName;
std::pair<G4double, G4double> epCheckLevels;
std::vector<std::pair<G4double, const G4Material *> > theMinEnergyList;
std::vector<std::pair<G4double, const G4Material *> > theMaxEnergyList;
std::vector<std::pair<G4double, const G4Element *> > theMinEnergyListElements;
std::vector<std::pair<G4double, const G4Element *> > theMaxEnergyListElements;
std::vector<const G4Material *> theBlockedList;
std::vector<const G4Element *> theBlockedListElements;
};
#endif
@@ -0,0 +1,81 @@
//
// ********************************************************************
// * 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. *
// ********************************************************************
//
//
// 23-Jan-2009 V.Ivanchenko make the class to be a singleton
// 17-Aug-2012 V.Ivanchenko added hadronic model factories
// Class Description
// This is a singleton class to store all hadronic interactions
// Class Description - End
#ifndef G4HadronicInteractionRegistry_h
#define G4HadronicInteractionRegistry_h 1
#include <vector>
#include "globals.hh"
#include "G4ThreadLocalSingleton.hh"
class G4HadronicInteraction;
class G4HadronicInteractionRegistry
{
friend class G4ThreadLocalSingleton<G4HadronicInteractionRegistry>;
public:
static G4HadronicInteractionRegistry* Instance();
// access
~G4HadronicInteractionRegistry();
void RegisterMe(G4HadronicInteraction * aModel);
// register new model
void RemoveMe(G4HadronicInteraction * aModel);
// deregister model
void Clean();
// delete all models
void InitialiseModels();
// initialise all models before the run
G4HadronicInteraction* FindModel(const G4String& name);
// find existing hadronic interaction by name
std::vector<G4HadronicInteraction*> FindAllModels(const G4String& name);
// find all existing hadronic interactions by name
private:
G4HadronicInteractionRegistry();
static G4ThreadLocal G4HadronicInteractionRegistry* instance;
std::vector<G4HadronicInteraction*> allModels;
};
#endif
@@ -113,6 +113,10 @@ public:
// access to an hadronic interaction by name
G4HadronicInteraction* GetHadronicModel(const G4String&);
// access to the chosen generator
inline G4HadronicInteraction* GetHadronicInteraction() const
{ return theInteraction; }
// get inverse cross section per volume
G4double GetMeanFreePath(const G4Track &aTrack, G4double,
@@ -177,10 +181,6 @@ protected:
void DumpState(const G4Track&, const G4String&, G4ExceptionDescription&);
// access to the chosen generator
inline G4HadronicInteraction* GetHadronicInteraction() const
{ return theInteraction; }
// access to the cross section data set
inline G4double GetLastCrossSection()
{ return theLastCrossSection; }
@@ -0,0 +1,69 @@
//
// ********************************************************************
// * 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. *
// ********************************************************************
//
//
// V. Uzhinsky Nov. 2012
// Added method GetProjectileNucleus for simulation of nucleus-nucleus inter.
//
#ifndef G4VHighEnergyGenerator_h
#define G4VHighEnergyGenerator_h 1
// Class Description
// Base class for high energy interaction models in geant4.
// By merit of inheriting from this class a high energy
// interaction model can be used in conjunction with
// any cascade, precompound model and evaporation phase in the
// generation of complete final states for inelastic scattering.
// Class Description - End
#include "G4HadronicInteraction.hh"
#include "G4Nucleus.hh"
#include "G4HadProjectile.hh"
#include "G4ReactionProduct.hh"
#include "G4V3DNucleus.hh"
class G4KineticTrackVector;
class G4VHighEnergyGenerator : public G4HadronicInteraction
{
public:
G4VHighEnergyGenerator(const G4String& modelName = "HighEnergyGenerator");
~G4VHighEnergyGenerator() override;
G4VHighEnergyGenerator(const G4VHighEnergyGenerator &right) = delete;
const G4VHighEnergyGenerator & operator=(const G4VHighEnergyGenerator &right) = delete;
G4bool operator==(const G4VHighEnergyGenerator &right) const = delete;
G4bool operator!=(const G4VHighEnergyGenerator &right) const = delete;
virtual G4V3DNucleus * GetWoundedNucleus() const = 0;
virtual G4V3DNucleus * GetProjectileNucleus() const;
virtual G4KineticTrackVector * Scatter(const G4Nucleus &theNucleus,
const G4DynamicParticle &thePrimary) = 0;
void ModelDescription(std::ostream&) const override;
};
#endif
@@ -0,0 +1,156 @@
//
// ********************************************************************
// * 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. *
// ********************************************************************
//
//
// -----------------------------------------------------------------------------
// GEANT 4 class header file
//
// History: first implementation, A. Feliciello, 30th June 1998
// A.Pavliouk 26.11.98
// In Set...() methods a pointer is deleted now before new
// value will be asigned.
// M.Kelsey 07.03.2011
// Add data member and Set method to store original projectile
// V.Ivanchenko 03.01.2012
// Added G4VPreCompoundModel pointer to the constructor and cleanup
// V. Uzhinsky Nov. 2012
// Added method PropagateNuclNucl for simulation of nucleus-nucleus inter.
// -----------------------------------------------------------------------------
#ifndef G4VIntraNuclearTransportModel_h
#define G4VIntraNuclearTransportModel_h 1
// Class Description
// Base class for intra-nuclear transport models in geant4. By merit
// of inheriting from this class a intra-nuclear transport model can
// be used in conjunction with any precompound, string parton model
// or other high energy generator in the generation of final states
// for inelastic scattering.
// Class Description - End
#include "G4V3DNucleus.hh"
#include "G4VPreCompoundModel.hh"
#include "G4HadronicInteraction.hh"
#include "G4ReactionProductVector.hh"
#include "G4ReactionProduct.hh"
#include "G4HadProjectile.hh"
#include "G4HadFinalState.hh"
class G4KineticTrackVector;
class G4VIntraNuclearTransportModel : public G4HadronicInteraction
{
public:
explicit G4VIntraNuclearTransportModel(const G4String& mName = "CascadeModel",
G4VPreCompoundModel* ptr = nullptr);
virtual ~G4VIntraNuclearTransportModel();
virtual
G4ReactionProductVector* Propagate(G4KineticTrackVector* theSecondaries,
G4V3DNucleus* theNucleus) = 0;
virtual
G4ReactionProductVector* PropagateNuclNucl(G4KineticTrackVector* theSecondaries,
G4V3DNucleus* theNucleus,
G4V3DNucleus* theProjectileNucleus); // Uzhi Nov. 2012
inline void SetDeExcitation(G4VPreCompoundModel* ptr);
inline void Set3DNucleus(G4V3DNucleus* const value);
inline void SetPrimaryProjectile(const G4HadProjectile &aPrimary);
inline const G4String& GetModelName() const;
virtual void ModelDescription(std::ostream& outFile) const ;
virtual void PropagateModelDescription(std::ostream& outFile) const ;
G4VIntraNuclearTransportModel(const G4VIntraNuclearTransportModel& right) = delete;
const G4VIntraNuclearTransportModel& operator=(const G4VIntraNuclearTransportModel &right) = delete;
G4bool operator==(const G4VIntraNuclearTransportModel& right) const = delete;
G4bool operator!=(const G4VIntraNuclearTransportModel& right) const = delete;
protected:
inline G4V3DNucleus* Get3DNucleus() const;
inline G4VPreCompoundModel* GetDeExcitation() const;
inline const G4HadProjectile* GetPrimaryProjectile() const;
G4String theTransportModelName;
G4V3DNucleus* the3DNucleus;
G4VPreCompoundModel* theDeExcitation;
const G4HadProjectile* thePrimaryProjectile;
};
inline const G4String& G4VIntraNuclearTransportModel::GetModelName() const
{
return theTransportModelName;
}
inline G4V3DNucleus* G4VIntraNuclearTransportModel::Get3DNucleus() const
{
return the3DNucleus;
}
inline void G4VIntraNuclearTransportModel::Set3DNucleus(G4V3DNucleus* const value)
{
delete the3DNucleus; the3DNucleus = value;
}
inline G4VPreCompoundModel* G4VIntraNuclearTransportModel::GetDeExcitation() const
{
return theDeExcitation;
}
inline void
G4VIntraNuclearTransportModel::SetDeExcitation(G4VPreCompoundModel* value)
{
// previous pre-compound model will be deleted at the end of job
theDeExcitation = value;
}
inline const G4HadProjectile*
G4VIntraNuclearTransportModel::GetPrimaryProjectile() const
{
return thePrimaryProjectile;
}
inline void
G4VIntraNuclearTransportModel::SetPrimaryProjectile(const G4HadProjectile &aPrimary)
{
// NOTE: Previous pointer is NOT deleted: passed by reference, no ownership
thePrimaryProjectile = &aPrimary;
}
#endif
@@ -0,0 +1,93 @@
//
// ********************************************************************
// * 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 G4VPreCompoundModel_h
#define G4VPreCompoundModel_h 1
// -----------------------------------------------------------------------------
// GEANT 4 class header file
//
// History: first implementation 1998
//
// V.Ivanchenko 03.01.2012
// Added G4ExcitationHandler pointer to the constructor and cleanup
// -----------------------------------------------------------------------------
// Class Description
// Base class for pre-equilibrium decay models in geant4. By merit of
// inheriting from this class a pre-equilibrium decay model can be used
// in conjunction with any cascade, string parton model or other high
// energy generator in the generation of final states for inelastic scattering.
// Class Description - End
#include "G4HadronicInteraction.hh"
#include "G4ReactionProductVector.hh"
#include "G4ReactionProduct.hh"
class G4HadProjectile;
class G4HadFinalState;
class G4Nucleus;
class G4Fragment;
class G4ExcitationHandler;
class G4VPreCompoundModel : public G4HadronicInteraction
{
public:
explicit G4VPreCompoundModel(G4ExcitationHandler* ptr = nullptr,
const G4String& modelName = "PrecompoundModel");
virtual ~G4VPreCompoundModel();
virtual G4ReactionProductVector* DeExcite(G4Fragment& aFragment) = 0;
virtual void DeExciteModelDescription(std::ostream& outFile) const = 0;
inline void SetExcitationHandler(G4ExcitationHandler* ptr);
inline G4ExcitationHandler* GetExcitationHandler() const;
G4VPreCompoundModel(const G4VPreCompoundModel &) = delete;
const G4VPreCompoundModel& operator=(const G4VPreCompoundModel &right) = delete;
G4bool operator==(const G4VPreCompoundModel &right) const = delete;
G4bool operator!=(const G4VPreCompoundModel &right) const = delete;
private:
G4ExcitationHandler* theExcitationHandler;
};
inline void G4VPreCompoundModel::SetExcitationHandler(G4ExcitationHandler* ptr)
{
theExcitationHandler = ptr;
}
inline G4ExcitationHandler* G4VPreCompoundModel::GetExcitationHandler() const
{
return theExcitationHandler;
}
#endif
@@ -1,67 +1,46 @@
#------------------------------------------------------------------------------
# sources.cmake
# Module : G4hadronic_mgt
# Package: Geant4.src.G4processes.G4hadronic.G4hadronic_mgt
#
# 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
#
#
#------------------------------------------------------------------------------
# - G4hadronic_mgt module build definition
#
# Define the Geant4 Module.
#
GEANT4_DEFINE_MODULE(NAME G4hadronic_mgt
HEADERS
G4EnergyRangeManager.hh
G4HadLeadBias.hh
G4HadronInelasticProcess.hh
G4HadronicEPTestMessenger.hh
G4HadronicProcess.hh
G4HadronicProcessStore.hh
G4HadronicProcessType.hh
G4NoModelFound.hh
G4VLeadingParticleBiasing.hh
SOURCES
G4EnergyRangeManager.cc
G4HadLeadBias.cc
G4HadronInelasticProcess.cc
G4HadronicEPTestMessenger.cc
G4HadronicProcess.cc
G4HadronicProcessStore.cc
GRANULAR_DEPENDENCIES
G4baryons
G4bosons
G4geometrymng
G4globman
G4had_mod_man
G4hadronic_util
G4hadronic_xsect
G4intercoms
G4ions
G4leptons
G4materials
G4mesons
G4navigation
G4partman
G4procman
G4track
G4volumes
GLOBAL_DEPENDENCIES
G4geometry
G4global
G4intercoms
G4materials
G4particles
G4track
LINK_LIBRARIES
)
# List any source specific properties here
geant4_add_module(G4hadronic_mgt
PUBLIC_HEADERS
G4EnergyRangeManager.hh
G4HadLeadBias.hh
G4HadronicEPTestMessenger.hh
G4HadronicInteraction.hh
G4HadronicInteractionRegistry.hh
G4HadronicProcess.hh
G4HadronicProcessStore.hh
G4HadronicProcessType.hh
G4NoModelFound.hh
G4VHighEnergyGenerator.hh
G4VIntraNuclearTransportModel.hh
G4VLeadingParticleBiasing.hh
G4VPreCompoundModel.hh
SOURCES
G4EnergyRangeManager.cc
G4HadLeadBias.cc
G4HadronicEPTestMessenger.cc
G4HadronicInteraction.cc
G4HadronicInteractionRegistry.cc
G4HadronicProcess.cc
G4HadronicProcessStore.cc
G4VHighEnergyGenerator.cc
G4VIntraNuclearTransportModel.cc
G4VPreCompoundModel.cc)
geant4_module_link_libraries(G4hadronic_mgt
PUBLIC
G4globman
G4hadronic_util
G4hadronic_xsect
G4intercoms
G4materials
G4partman
G4procman
G4track
PRIVATE
G4baryons
G4bosons
G4heprandom
G4leptons
G4mesons)
@@ -36,24 +36,10 @@ G4HadronicEPTestMessenger::G4HadronicEPTestMessenger(G4HadronicProcessStore* the
:theProcessStore(theStore)
{
// Main directory for control of the e/p test
old_heptstDirectory = new G4UIdirectory("/heptst/"); // To be removed in G4 11.0
old_heptstDirectory->SetGuidance("Controls for the hadronic energy/momentum test");
heptstDirectory = new G4UIdirectory("/process/had/heptst/");
heptstDirectory->SetGuidance("Controls for the hadronic energy/momentum test");
// Command to set level of detail reported upon e/p non-conservation
old_reportLvlCmd = new G4UIcmdWithAnInteger("/heptst/reportLevel",this); // To be removed in G4 11.0
old_reportLvlCmd->SetGuidance("Set level of detail reported upon E/p non-conservation");
old_reportLvlCmd->SetGuidance(" 0 - (default) no reporting ");
old_reportLvlCmd->SetGuidance(" 1 - report only when E/p not conserved ");
old_reportLvlCmd->SetGuidance(" 2 - report regardless of E/p conservation ");
old_reportLvlCmd->SetGuidance(" 3 - report only when E/p not conserved, with names, limits ");
old_reportLvlCmd->SetGuidance(" 4 - report regardless of E/p conservation, with names, limits ");
old_reportLvlCmd->SetParameterName("OldReportLevel",true);
old_reportLvlCmd->SetDefaultValue(0);
old_reportLvlCmd->SetRange("OldReportLevel >= 0 && OldReportLevel < 5");
reportLvlCmd = new G4UIcmdWithAnInteger("/process/had/heptst/reportLevel",this);
reportLvlCmd->SetGuidance("Set level of detail reported upon E/p non-conservation");
reportLvlCmd->SetGuidance(" 0 - (default) no reporting ");
@@ -66,23 +52,12 @@ G4HadronicEPTestMessenger::G4HadronicEPTestMessenger(G4HadronicProcessStore* the
reportLvlCmd->SetRange("ReportLevel >= 0 && ReportLevel < 5");
// Set the relative energy non-conservation level for the process
old_procRelLvlCmd = new G4UIcmdWithADouble("/heptst/processRelLevel",this); // To be removed in G4 11.0
old_procRelLvlCmd->SetGuidance("Set relative level of allowed energy non-conservation");
old_procRelLvlCmd->SetParameterName("OlProcessRelLevel",true);
old_procRelLvlCmd->SetDefaultValue(-1.0);
procRelLvlCmd = new G4UIcmdWithADouble("/process/had/heptst/processRelLevel",this);
procRelLvlCmd->SetGuidance("Set relative level of allowed energy non-conservation");
procRelLvlCmd->SetParameterName("ProcessRelLevel",true);
procRelLvlCmd->SetDefaultValue(-1.0);
// Set the absolute energy non-conservation level for the process
old_procAbsLvlCmd = new G4UIcmdWithADoubleAndUnit("/heptst/processAbsLevel",this); // To be removed in G4 11.0
old_procAbsLvlCmd->SetGuidance("Set absolute energy level (with unit) of allowed energy non-conservation");
old_procAbsLvlCmd->SetParameterName("OldProcessAbsLevel",true);
old_procAbsLvlCmd->SetDefaultValue(-1.0);
old_procAbsLvlCmd->SetUnitCategory("Energy");
procAbsLvlCmd = new G4UIcmdWithADoubleAndUnit("/process/had/heptst/processAbsLevel",this);
procAbsLvlCmd->SetGuidance("Set absolute energy level (with unit) of allowed energy non-conservation");
procAbsLvlCmd->SetParameterName("ProcessAbsLevel",true);
@@ -93,41 +68,15 @@ G4HadronicEPTestMessenger::G4HadronicEPTestMessenger(G4HadronicProcessStore* the
G4HadronicEPTestMessenger::~G4HadronicEPTestMessenger()
{
delete old_heptstDirectory; // To be removed in G4 11.0
delete heptstDirectory;
delete old_reportLvlCmd; // To be removed in G4 11.0
delete reportLvlCmd;
delete old_procRelLvlCmd; // To be removed in G4 11.0
delete procRelLvlCmd;
delete old_procAbsLvlCmd; // To be removed in G4 11.0
delete procAbsLvlCmd;
}
void G4HadronicEPTestMessenger::SetNewValue(G4UIcommand* command, G4String newValue)
{
// Old commands to be removed in G4 11.0
if ( command == old_reportLvlCmd ) {
theProcessStore->SetEpReportLevel( old_reportLvlCmd->GetNewIntValue( newValue ) );
G4ExceptionDescription ed;
ed << "This command is valid but deprecated and will be replaced with the command:\n"
<< "/process/had/heptst/reportLevel in the next major release, Geant4 version 11.0";
G4Exception( "G4HadronicEPTestMessenger", "hadEPTestMessenger001", JustWarning, ed );
} else if ( command == old_procRelLvlCmd ) {
theProcessStore->SetProcessRelLevel( old_procRelLvlCmd->GetNewDoubleValue( newValue ) );
G4ExceptionDescription ed;
ed << "This command is valid but deprecated and will be replaced with the command:\n"
<< "/process/had/heptst/processRelLevel in the next major release, Geant4 version 11.0";
G4Exception( "G4HadronicEPTestMessenger", "hadEPTestMessenger002", JustWarning, ed );
} else if ( command == old_procAbsLvlCmd ) {
theProcessStore->SetProcessAbsLevel( old_procAbsLvlCmd->GetNewDoubleValue( newValue ) );
G4ExceptionDescription ed;
ed << "This command is valid but deprecated and will be replaced with the command:\n"
<< "/process/had/heptst/processAbsLevel in the next major release, Geant4 version 11.0";
G4Exception( "G4HadronicEPTestMessenger", "hadEPTestMessenger003", JustWarning, ed );
}
// New commands
if ( command == reportLvlCmd ) {
theProcessStore->SetEpReportLevel( reportLvlCmd->GetNewIntValue( newValue ) );
} else if ( command == procRelLvlCmd ) {
@@ -0,0 +1,226 @@
//
// ********************************************************************
// * 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. *
// ********************************************************************
//
//
// Hadronic Interaction base class
// original by H.P. Wellisch
// modified by J.L. Chuma, TRIUMF, 21-Mar-1997
// Last modified: 04-Apr-1997
// reimplemented 1.11.2003 JPW.
// 23-Jan-2009 V.Ivanchenko move constructor and destructor to the body
#include <iostream>
#include "G4HadronicInteraction.hh"
#include "G4SystemOfUnits.hh"
#include "G4HadronicInteractionRegistry.hh"
#include "G4HadronicParameters.hh"
G4HadronicInteraction::G4HadronicInteraction(const G4String& modelName) :
verboseLevel(0), theMinEnergy(0.0),
isBlocked(false), recoilEnergyThreshold(0.0), theModelName(modelName),
epCheckLevels(DBL_MAX, DBL_MAX)
{
theMaxEnergy = G4HadronicParameters::Instance()->GetMaxEnergy();
registry = G4HadronicInteractionRegistry::Instance();
registry->RegisterMe(this);
}
G4HadronicInteraction::~G4HadronicInteraction()
{
registry->RemoveMe(this);
}
void G4HadronicInteraction::BuildPhysicsTable(const G4ParticleDefinition&)
{}
void G4HadronicInteraction::InitialiseModel()
{}
G4HadFinalState*
G4HadronicInteraction::ApplyYourself(const G4HadProjectile&, G4Nucleus&)
{
return nullptr;
}
G4double
G4HadronicInteraction::SampleInvariantT(const G4ParticleDefinition*,
G4double, G4int, G4int)
{
return 0.0;
}
G4bool G4HadronicInteraction::IsApplicable(const G4HadProjectile&,
G4Nucleus&)
{
return true;
}
G4double G4HadronicInteraction::GetMinEnergy(
const G4Material *aMaterial, const G4Element *anElement ) const
{
if(!IsBlocked()) { return theMinEnergy; }
if( IsBlocked(aMaterial) || IsBlocked(anElement) ) { return DBL_MAX; }
if(!theMinEnergyListElements.empty()) {
for(auto const& elmlist : theMinEnergyListElements) {
if( anElement == elmlist.second )
{ return elmlist.first; }
}
}
if(!theMinEnergyList.empty()) {
for(auto const & matlist : theMinEnergyList) {
if( aMaterial == matlist.second )
{ return matlist.first; }
}
}
return theMinEnergy;
}
void G4HadronicInteraction::SetMinEnergy(G4double anEnergy,
const G4Element *anElement )
{
Block();
if(!theMinEnergyListElements.empty()) {
for(auto & elmlist : theMinEnergyListElements) {
if( anElement == elmlist.second ) {
elmlist.first = anEnergy;
return;
}
}
}
theMinEnergyListElements.push_back(std::pair<G4double, const G4Element *>(anEnergy, anElement));
}
void G4HadronicInteraction::SetMinEnergy(G4double anEnergy,
const G4Material *aMaterial )
{
Block();
if(!theMinEnergyList.empty()) {
for(auto & matlist : theMinEnergyList) {
if( aMaterial == matlist.second ) {
matlist.first = anEnergy;
return;
}
}
}
theMinEnergyList.push_back(std::pair<G4double, const G4Material *>(anEnergy, aMaterial));
}
G4double G4HadronicInteraction::GetMaxEnergy(const G4Material *aMaterial,
const G4Element *anElement ) const
{
if(!IsBlocked()) { return theMaxEnergy; }
if( IsBlocked(aMaterial) || IsBlocked(anElement) ) { return 0.0; }
if(!theMaxEnergyListElements.empty()) {
for(auto const& elmlist : theMaxEnergyListElements) {
if( anElement == elmlist.second )
{ return elmlist.first; }
}
}
if(!theMaxEnergyList.empty()) {
for(auto const& matlist : theMaxEnergyList) {
if( aMaterial == matlist.second )
{ return matlist.first; }
}
}
return theMaxEnergy;
}
void G4HadronicInteraction::SetMaxEnergy(G4double anEnergy,
const G4Element *anElement )
{
Block();
if(!theMaxEnergyListElements.empty()) {
for(auto & elmlist : theMaxEnergyListElements) {
if( anElement == elmlist.second ) {
elmlist.first = anEnergy;
return;
}
}
}
theMaxEnergyListElements.push_back(std::pair<G4double, const G4Element *>(anEnergy, anElement));
}
void G4HadronicInteraction::SetMaxEnergy(G4double anEnergy, const G4Material *aMaterial )
{
Block();
if(!theMaxEnergyList.empty()) {
for(auto & matlist: theMaxEnergyList) {
if( aMaterial == matlist.second ) {
matlist.first = anEnergy;
return;
}
}
}
theMaxEnergyList.push_back(std::pair<G4double, const G4Material *>(anEnergy, aMaterial));
}
void G4HadronicInteraction::DeActivateFor( const G4Material *aMaterial )
{
Block();
theBlockedList.push_back(aMaterial);
}
void G4HadronicInteraction::DeActivateFor( const G4Element *anElement )
{
Block();
theBlockedListElements.push_back(anElement);
}
G4bool G4HadronicInteraction::IsBlocked(const G4Material* aMaterial) const
{
for (auto const& mat : theBlockedList) {
if (aMaterial == mat) return true;
}
return false;
}
G4bool G4HadronicInteraction::IsBlocked(const G4Element* anElement) const
{
for (auto const& elm : theBlockedListElements) {
if (anElement == elm) return true;
}
return false;
}
const std::pair<G4double, G4double> G4HadronicInteraction::GetFatalEnergyCheckLevels() const
{
// default level of Check
return std::pair<G4double, G4double>(2.*perCent, 1. * GeV);
}
std::pair<G4double, G4double>
G4HadronicInteraction::GetEnergyMomentumCheckLevels() const
{
return epCheckLevels;
}
void G4HadronicInteraction::ModelDescription(std::ostream& outFile) const
{
outFile << "The description for this model has not been written yet.\n";
}
@@ -0,0 +1,132 @@
//
// ********************************************************************
// * 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. *
// ********************************************************************
//
//
// 23-Jan-2009 V.Ivanchenko make the class to be a singleton
// 17-Aug-2012 V.Ivanchenko added methods
#include "G4HadronicInteractionRegistry.hh"
#include "G4HadronicInteraction.hh"
G4ThreadLocal G4HadronicInteractionRegistry*
G4HadronicInteractionRegistry::instance = nullptr;
G4HadronicInteractionRegistry* G4HadronicInteractionRegistry::Instance()
{
if(nullptr == instance) {
static G4ThreadLocalSingleton<G4HadronicInteractionRegistry> inst;
instance = inst.Instance();
}
return instance;
}
G4HadronicInteractionRegistry::G4HadronicInteractionRegistry()
{}
G4HadronicInteractionRegistry::~G4HadronicInteractionRegistry()
{
Clean();
}
void G4HadronicInteractionRegistry::Clean()
{
size_t nModels = allModels.size();
//G4cout << "G4HadronicInteractionRegistry::Clean() start " << nModels
// << " " << this << G4endl;
for (size_t i=0; i<nModels; ++i) {
if( allModels[i] ) {
//const char* xxx = (allModels[i]->GetModelName()).c_str();
//G4int len = (allModels[i]->GetModelName()).length();
//len = std::min(len, 9);
//const G4String mname = G4String(xxx, len);
//G4cout << "G4HadronicInteractionRegistry: delete " << i << " "
// << allModels[i] << " " << mname
// << " " << this << G4endl;
//if(mname != "NeutronHP" && mname != "ParticleH")
delete allModels[i];
// G4cout << "done " << this << G4endl;
}
}
allModels.clear();
//G4cout <<"G4HadronicInteractionRegistry::Clean() is done "<<G4endl;
}
void G4HadronicInteractionRegistry::InitialiseModels()
{
for (auto & mod : allModels) {
if( mod ) { mod->InitialiseModel(); }
}
}
void
G4HadronicInteractionRegistry::RegisterMe(G4HadronicInteraction * aModel)
{
if(!aModel) { return; }
for (auto & mod : allModels) {
if( aModel == mod ) { return; }
}
//G4cout << "Register model <" << aModel->GetModelName()
// << "> " << nModels+1 << " " << aModel << G4endl;
allModels.push_back(aModel);
}
void
G4HadronicInteractionRegistry::RemoveMe(G4HadronicInteraction * aModel)
{
if(!aModel) { return; }
for (size_t i=0; i<allModels.size(); ++i) {
if( aModel == allModels[i] ) {
//G4cout << "DeRegister model <" << aModel
// << "> " << i << G4endl;
allModels[i] = nullptr;
return;
}
}
}
G4HadronicInteraction*
G4HadronicInteractionRegistry::FindModel(const G4String& name)
{
G4HadronicInteraction* model = nullptr;
for (auto & mod : allModels) {
if(mod && mod->GetModelName() == name) {
model = mod;
break;
}
}
return model;
}
std::vector<G4HadronicInteraction*>
G4HadronicInteractionRegistry::FindAllModels(const G4String& name)
{
std::vector<G4HadronicInteraction*> models;
for (auto & mod : allModels) {
if(mod && mod->GetModelName() == name) {
models.push_back(mod);
}
}
return models;
}
@@ -65,15 +65,10 @@
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.....
G4ThreadLocal G4HadronicProcessStore* G4HadronicProcessStore::instance = nullptr;
G4HadronicProcessStore* G4HadronicProcessStore::Instance()
{
if(!instance) {
static G4ThreadLocalSingleton<G4HadronicProcessStore> inst;
instance = inst.Instance();
}
return instance;
static thread_local auto* _instance = new G4HadronicProcessStore{};
return _instance;
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.....
@@ -88,19 +83,14 @@ G4HadronicProcessStore::~G4HadronicProcessStore()
void G4HadronicProcessStore::Clean()
{
G4int i;
for (i=0; i<n_proc; ++i) {
if( process[i] ) {
delete process[i];
process[i] = nullptr;
}
}
for(i=0; i<n_extra; ++i) {
if(extraProcess[i]) {
delete extraProcess[i];
extraProcess[i] = nullptr;
}
}
for(auto& itr : process)
delete itr;
process.clear();
for(auto& itr : extraProcess)
delete itr;
extraProcess.clear();
n_extra = 0;
n_proc = 0;
}
@@ -23,44 +23,31 @@
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
// Hadronic Inelastic Process class
// The specific particle inelastic processes derive from this class
// This is an abstract base class, since the pure virtual function
// PostStepDoIt has not been defined yet.
//
// J.L. Chuma, TRIUMF, 10-Mar-1997
// Last modified: 27-Mar-1997
//
// 14-APR-98 F.W.Jones: variant G4HadronInelastic process for
// G4CrossSectionDataSet/DataStore class design.
// 29-JUN-98 F.W.Jones: default data set G4HadronCrossSections
// V. Uzhinsky Nov. 2012
// Added method GetProjectileNucleus for simulation of nucleus-nucleus inter.
//
// G4VHighEnergyGenerator
#include "G4VHighEnergyGenerator.hh"
#ifndef G4HadronInelasticProcess_h
#define G4HadronInelasticProcess_h 1
G4VHighEnergyGenerator::G4VHighEnergyGenerator(const G4String& modelName)
: G4HadronicInteraction(modelName)
{}
#include "G4HadronicProcess.hh"
G4VHighEnergyGenerator::~G4VHighEnergyGenerator()
{}
class G4ParticleDefinition;
class G4HadronInelasticProcess : public G4HadronicProcess
void G4VHighEnergyGenerator::ModelDescription(std::ostream& outFile) const
{
public:
explicit G4HadronInelasticProcess(const G4String &processName,
const G4ParticleDefinition*);
~G4HadronInelasticProcess() override;
G4bool IsApplicable(const G4ParticleDefinition&) override;
outFile << " Parton-string models description not written yet \n";
}
private:
// hide assignment operator as private
G4HadronInelasticProcess& operator=
(const G4HadronInelasticProcess& right) = delete;
G4HadronInelasticProcess(const G4HadronInelasticProcess&) = delete;
};
#endif
G4V3DNucleus * G4VHighEnergyGenerator::GetProjectileNucleus() const
{
G4ExceptionDescription ed;
ed << "The used HighEnergyGenerator "<<GetModelName()
<<" cannot manage with a residual projectile nucleus";
G4Exception("G4VHighEnergyGenerator::GetProjectileNucleus ", "G4had_mod_man",
FatalException, ed);
return 0;
}
@@ -0,0 +1,71 @@
//
// ********************************************************************
// * 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. *
// ********************************************************************
//
//
// -----------------------------------------------------------------------------
// GEANT 4 class implementation file
//
// History: first implementation, A. Feliciello, 30th June 1998
// Removed delete of DeExcitation model, deleted elsewhere.
// F.W.Jones, 06-JUL-99
// V.Ivanchenko 03.01.2012
// Added G4VPreCompoundModel pointer to the constructor and cleanup
// V. Uzhinsky Nov. 2012
// Added method PropagateNuclNucl for simulation of nucleus-nucleus inter.
// -----------------------------------------------------------------------------
#include "G4VIntraNuclearTransportModel.hh"
G4VIntraNuclearTransportModel::G4VIntraNuclearTransportModel(
const G4String& modName, G4VPreCompoundModel* ptr)
: G4HadronicInteraction(modName),theTransportModelName(modName),
the3DNucleus(nullptr),theDeExcitation(ptr),thePrimaryProjectile(nullptr)
{}
G4VIntraNuclearTransportModel::~G4VIntraNuclearTransportModel()
{}
void G4VIntraNuclearTransportModel::ModelDescription(std::ostream& outFile) const
{
outFile << "G4VIntraNuclearTransportModel is abstract class.\n";
G4Exception("G4VIntraNuclearTransportModel::ModelDescription()","G4VINT01",
FatalException,
"G4VIntraNuclearTransportModel is abstract class, no description available");
}
void G4VIntraNuclearTransportModel::PropagateModelDescription(std::ostream& outFile) const
{
outFile << "G4VIntraNuclearTransportModel is abstract class, missing description.\n";
}
G4ReactionProductVector*
G4VIntraNuclearTransportModel::PropagateNuclNucl(G4KineticTrackVector* ,
G4V3DNucleus* , G4V3DNucleus* )
{
G4Exception("G4VIntraNuclearTransportModel::Propagate()","G4VINT02",
FatalException,
"Propagate method for nucleus-nucleus interactions not implemented");
return nullptr;
}
@@ -23,34 +23,29 @@
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
// Hadronic Inelastic Process Class
// J.L. Chuma, TRIUMF, 24-Mar-1997
// Last modified: 27-Mar-1997
// J.P. Wellisch: Bug hunting, 23-Apr-97
// Modified by J.L.Chuma 8-Jul-97 to eliminate possible division by zero for sigma
//
// 14-APR-98 F.W.Jones: variant G4HadronInelastic process for
// G4CrossSectionDataSet/DataStore class design.
//
// 17-JUN-98 F.W.Jones: removed extraneous code causing core dump.
// 01-SEP-2008 V.Ivanchenko: use methods from the base class
// 14-Sep-12 M.Kelsey -- Pass subType code to base ctor
// -----------------------------------------------------------------------------
// GEANT 4 class file
//
// History: first implementation 1998
//
// V.Ivanchenko 03.01.2012
// Added G4ExcitationHandler pointer to the constructor and cleanup
// -----------------------------------------------------------------------------
#include "G4VPreCompoundModel.hh"
G4VPreCompoundModel::G4VPreCompoundModel(G4ExcitationHandler* ptr,
const G4String& modelName):
G4HadronicInteraction(modelName), theExcitationHandler(ptr)
{}
G4VPreCompoundModel::~G4VPreCompoundModel()
{}
#include "G4HadronInelasticProcess.hh"
#include "G4HadronInelasticDataSet.hh"
#include "G4GenericIon.hh"
#include "G4ParticleDefinition.hh"
G4HadronInelasticProcess::G4HadronInelasticProcess(const G4String& processName,
const G4ParticleDefinition*):
G4HadronicProcess(processName,fHadronInelastic)
{}
G4HadronInelasticProcess::~G4HadronInelasticProcess()
{}
G4bool G4HadronInelasticProcess::IsApplicable(const G4ParticleDefinition&)
void G4VPreCompoundModel::DeExciteModelDescription(std::ostream& outFile) const
{
return true;
outFile << "description of DeExcite() for model derived from G4VPrecompoundModel missing.\n";
}