Import Geant4 10.0.0 source tree
This commit is contained in:
@@ -7,11 +7,9 @@
|
||||
#
|
||||
# Generated on : 24/9/2010
|
||||
#
|
||||
# $Id: CMakeLists.txt,v 1.1 2010-09-29 18:56:10 bmorgan Exp $
|
||||
# $Id: CMakeLists.txt 67758 2013-03-06 23:28:25Z mkelsey $
|
||||
#
|
||||
# 20130225 Remove evaporation and utils subdirectories
|
||||
#------------------------------------------------------------------------------
|
||||
|
||||
add_subdirectory(cascade)
|
||||
add_subdirectory(evaporation)
|
||||
add_subdirectory(utils)
|
||||
|
||||
|
||||
@@ -1,20 +1,18 @@
|
||||
# --------------------------------------------------------------
|
||||
# GNUmakefile for chips library. HPW 20-Nov-99
|
||||
# $Id$
|
||||
# GNUmakefile for Bertini cascade library.
|
||||
#
|
||||
# 20130225 Remove evaporation and utils subdirectories
|
||||
# --------------------------------------------------------------
|
||||
|
||||
name := G4had_hetcpp
|
||||
|
||||
SUBDIRS = evaporation
|
||||
SUBDIRS += utils
|
||||
SUBDIRS += cascade
|
||||
SUBDIRS = cascade
|
||||
|
||||
SUBLIBS = G4hadronic_hetcpp_evaporation
|
||||
SUBLIBS += G4hadronic_hetcpp_utils
|
||||
SUBLIBS += G4hadronic_bert_cascade
|
||||
SUBLIBS = G4hadronic_bert_cascade
|
||||
|
||||
ifndef G4INSTALL
|
||||
G4INSTALL = ../../../../..
|
||||
endif
|
||||
|
||||
|
||||
include $(G4INSTALL)/config/globlib.gmk
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
$Id: History,v 1.206 2010-11-24 21:16:17 mkelsey Exp $
|
||||
$Id: History 72222 2013-07-11 17:28:43Z mkelsey $
|
||||
-------------------------------------------------------------------
|
||||
|
||||
==========================================================
|
||||
@@ -15,6 +15,739 @@ code and to keep track of all tags.
|
||||
* Please list in reverse chronological order (last date on top)
|
||||
---------------------------------------------------------------
|
||||
|
||||
2 October 2013 V.Ivanchenko (hadr-casc-V09-06-52)
|
||||
----------------------------------------------------
|
||||
- G4NonEquilibriumEvaporator.hh - added forward declaration of G4Pow,
|
||||
because after the revision of G4Pow cascade is not compiling anymore
|
||||
|
||||
1 October 2013 Michael Kelsey (hadr-casc-V09-06-51)
|
||||
----------------------------------------------------
|
||||
- G4NucleiModel: Make gammaQDinterp a regular data member, to avoid data
|
||||
race condition with shared (const but mutable) object.
|
||||
|
||||
- G4EquilibriumEvaporator: Make QFinterp a regular data member, to avoid data
|
||||
race condition with shared (const but mutable) object.
|
||||
|
||||
25 September 2013 Michael Kelsey (hadr-casc-V09-06-50)
|
||||
-------------------------------------------------------
|
||||
- G4NucleiModel: Remove G4Pow introduced below; replace usage with simple
|
||||
"*= 2" inside loop.
|
||||
|
||||
24 September 2013 Michael Kelsey (hadr-casc-V09-06-49)
|
||||
-------------------------------------------------------
|
||||
Replace usage of std::log, std::exp, and std::pow with GEANT4 internal
|
||||
functions with faster polynomial implementations.
|
||||
|
||||
G4BigBanger.cc
|
||||
G4CascadeFinalStateAlgorithm.cc
|
||||
G4EquilibriumEvaporator.cc
|
||||
G4InuclParamMomDst.cc
|
||||
G4InuclSpecialFunctions.cc
|
||||
G4NonEquilibriumEvaporator.cc
|
||||
G4NonEquilibriumEvaporator.hh
|
||||
G4NucleiModel.cc
|
||||
G4NucleiModel.hh
|
||||
G4NumIntTwoBodyAngDst.icc
|
||||
G4ParamExpTwoBodyAngDst.icc
|
||||
|
||||
29 August 2013 Michael Kelsey (hadr-casc-V09-06-48)
|
||||
----------------------------------------------------
|
||||
Address Coverity #52158 and 52161.
|
||||
|
||||
- G4InuclSpecialFunctions.hh: Add copy action declarations to paraMaker.
|
||||
|
||||
8 August 2013 Michael Kelsey (hadr-casc-V09-06-47)
|
||||
---------------------------------------------------
|
||||
More thread-safety fixes:
|
||||
|
||||
- G4InuclSpecialFunctions.hh: Replace paraMaker[Truncated] functions with
|
||||
class object, in order to use thread-locally within evaporators.
|
||||
|
||||
- paraMaker.cc: Move function code into new class member functions.
|
||||
|
||||
- G4*EquilibriumEvaporator: Add data member for new "paraMaker" object.
|
||||
|
||||
Per A. Dotti, move local statics to file scope to avoid thread collisions:
|
||||
|
||||
- G4CascadeDeexciteBase.cc: Move zero vector.
|
||||
|
||||
- G4InuclParticle.cc: Move "G4DynamicParticle empty".
|
||||
|
||||
- G4NucleiModel.cc: Move static G4InuclElementaryParticle constructions to
|
||||
data members.
|
||||
|
||||
4 August 2013 Michael Kelsey (hadr-casc-V09-06-46)
|
||||
---------------------------------------------------
|
||||
- G4CascadeInterface.cc: Fix bug #1513, replacing "Z=1" with "Z==1" in
|
||||
boolean ternary operation.
|
||||
|
||||
18 July 2013 Michael Kelsey (hadr-casc-V09-06-45)
|
||||
--------------------------------------------------
|
||||
- G4CascadeDeexciteBase.cc: Address Coverity #51934, unitialized data
|
||||
members.
|
||||
|
||||
- Added use of "Id" and "Name" keywords to many new files which were missing
|
||||
them.
|
||||
|
||||
11 July 2013 Michael Kelsey
|
||||
----------------------------
|
||||
- G4CascadeFinalStateAlgorithm: Replace name "difr_const" with "oneOverE".
|
||||
|
||||
5 July 2013 Michael Kelsey (hadr-casc-V09-06-44)
|
||||
-------------------------------------------------
|
||||
- G4InuclParticleNames.hh: Provide particle identification functions,
|
||||
equivalent to those in G4InuclElementaryParticle, for direct use of type
|
||||
codes.
|
||||
|
||||
- G4InuclElementaryParticle.hh: Replace identification functions with calls
|
||||
through to new G4InuclParticleNames functions.
|
||||
|
||||
3 July 2013 Michael Kelsey (hadr-casc-V09-06-43)
|
||||
-------------------------------------------------
|
||||
- G4CascadeFinalStateAlgorithm: Add Kopylov N-body phase space generation,
|
||||
with function code copied from G4HadPhaseSpaceKopylov. Use with runtime
|
||||
envvar flag (G4CASCADE_USE_PHASESPACE) in place of multi-parameter 3-body
|
||||
and 4-body generators. Two-body distributions are not changed.
|
||||
|
||||
- G4CascadeParameters, G4CascadeParamMessenger: Add new envvar,
|
||||
G4CASCADE_USE_PHASESPACE, and associated functions, to switch between
|
||||
multiparameter and Kopylov N-body generators.
|
||||
|
||||
2 July 2013 Michael Kelsey
|
||||
---------------------------
|
||||
- G4NucleiModel.cc: Minor tweaks: generateInteractionLength() now returns
|
||||
"large" (1000.) instead of input path length when calculations fail; this
|
||||
eliminates the effect of "spath < path" vs. "spath <= path" comparisons.
|
||||
For dibaryon absorption, use sum of invMFPs, not average. Small
|
||||
improvements to some diagnostic messages.
|
||||
|
||||
28 June 2013 Michael Kelsey (hadr-casc-V09-06-42)
|
||||
--------------------------------------------------
|
||||
PROBLEM: Code committed below did not include last round of changes to
|
||||
support multiple G4Fragments from G4Fissioner. Those were lost accidentally
|
||||
during directory manipulation on my local disk.
|
||||
|
||||
- G4CascadeDeexciteBase: Add makeFragment() without momentum for at-rest
|
||||
nuclei.
|
||||
|
||||
- G4Fissioner: Remove local G4InuclNuclei vector; create fission fragments as
|
||||
G4Fragments directly into output buffer.
|
||||
|
||||
- G4CollisionOutput: Replace single recoil fragment with list; apply
|
||||
associated changes throughout support functions.
|
||||
|
||||
- G4EquilibriumEvaporator.cc: Use G4Fragments output from G4Fissioner.
|
||||
|
||||
- G4CascadeDeexcitation.cc: Add printing of intermediate outputs from each
|
||||
de-excitation stage.
|
||||
|
||||
28 June 2013 Michael Kelsey (hadr-casc-V09-06-41)
|
||||
--------------------------------------------------
|
||||
Reorganize de-excitation modules to use G4Fragment throughout process. Only
|
||||
final ground-state nucleus will be instantiated as a G4InuclNuclei object.
|
||||
This should substantially reduce the load on G4IonTable in MT operations.
|
||||
|
||||
- G4CascadeCheckBalance: Replace interface for "G4Fissioner" with version
|
||||
which takes G4Fragments for target and output.
|
||||
|
||||
- G4CascadeColliderBase: Move explosion() functions and G4Fragment-related
|
||||
valiateOutput() functions to new G4CascadeDeexciteBase.
|
||||
|
||||
- G4CascadeDeexciteBase: NEW concrete subclass of G4VCascadeDeexcitation.
|
||||
Takes over "operational" support from G4CascadeColliderBase, including
|
||||
explosion() functions, local copy of G4CascadeCheckBalance, and
|
||||
conservation checking functions. Provides utilities to extract common
|
||||
data from input G4Fragment for all modules, and to construct a G4Fragment.
|
||||
|
||||
- G4CascadeDeexcitation: Inherit from G4CascadeDeexciteBase.
|
||||
|
||||
- G4PreCompoundDeexcitation: Inherit from G4CascadeDeexciteBase.
|
||||
|
||||
- G4VCascadeDeexcitation: Inherit directly from G4VCascadeCollider.
|
||||
|
||||
- G4ExitonConfiguration: Add interface to copy from G4Fragment.
|
||||
|
||||
- G4EvaporationInuclCollider, G4NonEquilibriumEvaporator,
|
||||
G4BigBanger, G4Fissioner, G4EquilibriumEvaporator: Move all to inherit
|
||||
from G4CascadeDeexciteBase, replace collide() with deExcite(), use
|
||||
G4Fragment in place of G4InuclNuclei everywhere except final ground-state
|
||||
output.
|
||||
|
||||
- sources.cmake: Add G4CascadeDeexciteBase.hh and .cc.
|
||||
|
||||
28 June 2013 Michael Kelsey (hadr-casc-V09-06-40)
|
||||
--------------------------------------------------
|
||||
Improve encapsulation of pion and muon absorption through dibaryons.
|
||||
|
||||
- G4NucleiModel: Add optional argument to useQuasiDeuteron() (fixed spelling)
|
||||
to take dibaryon code, validate charge-exchange interactions.
|
||||
|
||||
- G4ElementaryParticleCollider: Add function to split dibaryon into
|
||||
component particle types; use G4NM::useQuasiDeuteron() for sanity checks
|
||||
instead of nested if-blocks.
|
||||
|
||||
28 June 2013 Michael Kelsey (hadr-casc-V09-06-39)
|
||||
--------------------------------------------------
|
||||
Address Coverity 37230 and 37385.
|
||||
|
||||
- G4CascadeInterface.hh: Add unimplemented declarations for copy operations.
|
||||
|
||||
27 June 2013 Michael Kelsey (hadr-casc-V09-06-38)
|
||||
--------------------------------------------------
|
||||
- G4NucleiModel.cc: Minor tweak: change "spath==0." test to "path==0.", to
|
||||
check actual path length (equivalent to zero-momentum), rather than
|
||||
generated random value.
|
||||
|
||||
- G4InuclParticleNames: Add functions to convert enum values to strings,
|
||||
for diagnostic messages. New .cc file required for implementation.
|
||||
|
||||
- G4CascadeData.icc: For diagnostics, use new enum-to-string function, add
|
||||
explicit space between xsec values, and print only 10 values per line.
|
||||
|
||||
- G4CascadeInterpolator.icc: For diagnostics, change output to setw(6), and
|
||||
print only 10 values per line.
|
||||
|
||||
- sources.cmake: Add G4InuclParticleNames.cc.
|
||||
|
||||
21 June 2013 Michael Kelsey (hadr-casc-V09-06-37)
|
||||
--------------------------------------------------
|
||||
- G4VCascadeDeexcitation: Disable collide() interface, with implementation
|
||||
which throws exception when called. Subclasses will use deExcite()
|
||||
interface, with a const-reference, directly (creating a G4InuclNuclei only
|
||||
if necessary).
|
||||
|
||||
- G4CascadeDeexcitation: Remove collide() interface. Move code into
|
||||
deExcite(), and create temporary G4InucleNuclei (with reusable buffer) as
|
||||
needed. Add verbosity setting function.
|
||||
|
||||
- G4PreCompoundDeexcitation: Remove collide() interface; code uses
|
||||
G4Fragment directly via deExcite().
|
||||
|
||||
- G4CascadeCheckBalance: Add interface to take G4Fragment initial state.
|
||||
|
||||
- G4CascadeColliderBase: Change explosion() to take const-ref G4Fragment.
|
||||
Use new CheckBalance(G4Fragment) interface in validateOutput().
|
||||
|
||||
- G4EquilibriumEvaporator.hh: Change explosion() call-through to take
|
||||
const-ref G4Fragment.
|
||||
|
||||
- G4InuclCollider.cc: Use G4Fragment interface to de-excitation modules and
|
||||
validateOutput().
|
||||
|
||||
21 June 2013 Michael Kelsey (hadr-casc-V09-06-36)
|
||||
--------------------------------------------------
|
||||
- G4CascadeParameters: Add new flag to perform internal conservation checks,
|
||||
replacing compile-time G4CASCADE_CHECK_ECONS preprocessor directive.
|
||||
|
||||
- G4CascadeParamMessenger: Add macro commands for USE_3BODYMOM and CHECK_ECONS
|
||||
parameter flags.
|
||||
|
||||
- G4CascadeColliderBase: Remove doConservationChecks flag. Use run-time
|
||||
flag (above) to conditionally instantiate CheckBalance, test pointer
|
||||
before use.
|
||||
|
||||
- G4EquilibriumEvaporator: Remove turning-off of conservation checks after
|
||||
fission. Follows removal of flag from G4CascadeColliderBase.
|
||||
|
||||
- GNUmakefile: Remove G4CASCADE_CHECK_ECONS preprocessor directive. Envvar
|
||||
will be mapped to run-time parameter (above).
|
||||
|
||||
20 June 2013 Michael Kelsey (hadr-casc-V09-06-35)
|
||||
--------------------------------------------------
|
||||
Address numerous Coverity warnings which have build up since November 2011.
|
||||
No modifications to working code were required.
|
||||
|
||||
G4BigBanger.hh G4InuclCollider.hh
|
||||
G4CascadeCheckBalance.hh G4InuclNuclei.cc
|
||||
G4CascadeColliderBase.hh G4InuclParticle.cc
|
||||
G4CascadeDeexcitation.hh G4MultiBodyMomentumDist.hh
|
||||
G4CascadeInterface.cc G4NonEquilibriumEvaporator.hh
|
||||
G4CascadeRecoilMaker.hh G4NumIntTwoBodyAngDst.hh,.icc
|
||||
G4ElementaryParticleCollider.hh G4ParamExpTwoBodyAngDst.icc
|
||||
G4EquilibriumEvaporator.hh G4PreCompoundDeexcitation.hh
|
||||
G4EvaporationInuclCollider.hh G4TwoBodyAngularDist.hh
|
||||
G4Fissioner.hh G4VCascadeCollider.hh
|
||||
G4GDecay3.cc G4VCascadeDeexcitation.hh
|
||||
G4IntraNucleiCascader.hh
|
||||
|
||||
19 June 2013 Michael Kelsey (hadr-casc-V09-06-34)
|
||||
--------------------------------------------------
|
||||
- G4TwoBodyAngularDist.hh, G4MultiBodyMomentumDist.hh: Replace use of
|
||||
"theInstance" with calls to "GetInstance()" to ensure instantiation in MT
|
||||
environment.
|
||||
|
||||
19 June 2013 Michael Kelsey (hadr-casc-V09-06-33)
|
||||
--------------------------------------------------
|
||||
- G4TwoBodyAngularDist, G4MultiBodyMomentumDist: Fix thread collisions
|
||||
in MT operation by changing singleton instances from "static const" to
|
||||
"static G4ThreadLocal" pointers. GetInstance() instantiates the pointer
|
||||
on first call (per thread). C.f. G4CascadeChannelTables.
|
||||
|
||||
19 June 2013 Alberto Ribon (hadr-casc-V09-06-32)
|
||||
--------------------------------------------------
|
||||
- G4NucleiModel.cc: fixed rare cases of non-reproducibility in the
|
||||
method generateParticleFate. The members current_nucl1 and
|
||||
current_nucl2 were not properly initialized in the case that
|
||||
the interaction-partners list has one single element.
|
||||
|
||||
12 June 2013 Michael Kelsey (hadr-casc-V09-06-31)
|
||||
--------------------------------------------------
|
||||
Bug fix for validation problems seen leading up to 10.0-beta release.
|
||||
|
||||
- G4NucleiModel.cc: Undo change to test "spath<=path" (V09-06-25); this
|
||||
caused all tested nucleons to be accepted for interaction, incorrectly.
|
||||
Replace with explicit test on "spath==0." to address at-rest particles.
|
||||
|
||||
- G4CascadeFinalStateAlgorithm: Split FillDirections() into separate
|
||||
functions for three- and many-body states, to restore old algorithm.
|
||||
Three body throws the _last_ particle's direction, then computes recoils,
|
||||
while many-body throws the first N-2 directions.
|
||||
|
||||
04 June 2013 Alberto Ribon (hadr-casc-V09-06-30)
|
||||
-------------------------------------------------
|
||||
- G4InuclNuclei.cc: Fix access to ions via the IonTable class.
|
||||
|
||||
24 May 2013 Michael Kelsey (hadr-casc-V09-06-29)
|
||||
-------------------------------------------------
|
||||
- G4NucleiModel: Continue trying to resolve FPE errors with inf and NaN.
|
||||
Improve bounds checking on zone value passed to inverseMFP; move "large"
|
||||
and "small" cutoffs to static const, set globally.
|
||||
|
||||
23 May 2013 Michael Kelsey (hadr-casc-V09-06-28)
|
||||
-------------------------------------------------
|
||||
- G4NucleiModel.cc: Fix initialization of dummy_convertor after setting
|
||||
bullet and target momenta. For stopped particle outside nucleus, reset
|
||||
"zone" value to outermost zone (avoid out-of-bounds accesses).
|
||||
|
||||
22 May 2013 Michael Kelsey (hadr-casc-V09-06-27)
|
||||
-------------------------------------------------
|
||||
- G4ElementaryParticleCollider.cc: Add protection if N-body generator fails
|
||||
after too many retries. On Windows, out-of-bounds error was (correctly)
|
||||
thrown.
|
||||
|
||||
- G4ParticleLargerEkin.hh, G4ParticleLargerBeta.hh: Change ">=" to ">" in
|
||||
both cases, to avoid error in (extremely rare) case that both inputs are
|
||||
identical. With floats, this is a ~2^-64 probability, but a Windows test
|
||||
job managed to catch it.
|
||||
|
||||
21 May 2013 Michael Kelsey (hadr-casc-V09-06-26)
|
||||
-------------------------------------------------
|
||||
- sources.cmake: Added G4PP2PPAngDst.
|
||||
|
||||
20 May 2013 Dennis Wright
|
||||
--------------------------
|
||||
- added class G4PP2PPAngDst, which contains elastic pp and nn angular
|
||||
distributions generated from numerically integrated SAID cross sections
|
||||
and pp scattering data. Below 2.75 GeV SAID calculations were used with
|
||||
Coulomb interactions turned off. Above 2.75 GeV pp scattering data is used.
|
||||
|
||||
Files modified: G4TwoBodyAngularDist.hh, .cc
|
||||
|
||||
11 May 2013 Michael Kelsey (hadr-casc-V09-06-25)
|
||||
-------------------------------------------------
|
||||
- G4NucleiModel.cc: Protections for at-rest particles (muon capture): In
|
||||
choosePointAlongTraj() set phat=(0,0,1); in generateInteractionPartners()
|
||||
apply zero-path exit only for finite momentum. Move choosePointAlongTraj
|
||||
up to initializeCascad(), rather than waiting for propagation. Change
|
||||
tests on "spath < path" to <= so that at-rest particles still interact (in
|
||||
these cases, spath and path will both be zero). Hide "zone 0 transition"
|
||||
message behind verbosity.
|
||||
|
||||
- G4ElementaryParticleCollider.cc: Skip neutrinos silently in ::collide().
|
||||
|
||||
10 May 2013 Michael Kelsey
|
||||
---------------------------
|
||||
- G4NucleiModel.hh: Protect getPotential() from leptons, by checking for
|
||||
ityp<0.
|
||||
|
||||
9 May 2013 Michael Kelsey (hadr-casc-V09-06-24)
|
||||
------------------------------------------------
|
||||
- G4CascadeFinalStateAlgorithm.cc: Fix bugs where two-body and three-body
|
||||
momentum vectors were not properly rotated before return; caused energy
|
||||
and momentum violations in hydrogen target cases. Improvided diagnostic
|
||||
messages to match output from old G4EPCollider version.
|
||||
|
||||
8 May 2013 Dennis Wright/Michael Kelsey
|
||||
----------------------------------------
|
||||
Introduce muon-capture handling, with new particle types and three-body
|
||||
muon-dibaryon interactions.
|
||||
|
||||
Modified files: G4InuclElementaryParticle.hh,.cc
|
||||
G4InuclParticleNames.hh
|
||||
G4CascadeChannelTables.cc
|
||||
G4CascadeInterface.cc
|
||||
G4ElementaryParticleCollider.hh,.cc
|
||||
G4NucleiModel.hh,.cc
|
||||
sources.cmake
|
||||
|
||||
New files: G4CascadeMuMinusPChannel.hh,.cc
|
||||
G4GDecay3.hh,.cc
|
||||
|
||||
1 May 2013 Michael Kelsey (hadr-casc-V09-06-23)
|
||||
------------------------------------------------
|
||||
- G4CascadeInterface: Add static function Initialize() to create shared
|
||||
objects in master thread, to avoid cross-thread collisions. Currently the
|
||||
final-state lookup tables and quasideuteron particles are created.
|
||||
|
||||
- G4Dineutron, G4Diproton, G4UnboundPN: Remove "G4ThreadLocal" from static
|
||||
pointer, to make it shared across threads. Modify initialization to get
|
||||
G4ParticleTable "readiness" flag, and restore saved value.
|
||||
|
||||
22 April 2013 Michael Kelsey (hadr-casc-V09-06-22)
|
||||
---------------------------------------------------
|
||||
- G4CascadeChannelTables: Convert to thread-local singletons, to avoid
|
||||
thread collisions inside "fillSigmaBuffer()" calls within tables (since
|
||||
that mutable vector is shared across all threads).
|
||||
|
||||
22 April 2013 Michael Kelsey (hadr-casc-V09-06-21)
|
||||
---------------------------------------------------
|
||||
NOTE: Requires hadr-mod-util-V09-06-04.
|
||||
|
||||
- G4ElementaryParticleCollider: Replace all kinematics generation, except
|
||||
for pion-dibaryon absorption, with G4CascadeFinalStateGenerator. Simplify
|
||||
::collide(), eliminating nested if-blocks, moving replicated code outside
|
||||
of if-blocks, adding returns on failure tests.
|
||||
|
||||
22 April 2013 Michael Kelsey (hadr-casc-V09-06-20)
|
||||
---------------------------------------------------
|
||||
NOTE: Requires hadr-mod-util-V09-06-04.
|
||||
|
||||
New interface for momentum and angular distribution generators, subclasses
|
||||
of (new) models/util/G4VHadDecayAlgorithm. These are intended to be
|
||||
"temporary" implementations, reproducing G4ElementaryParticleCollider
|
||||
behaviour. G4EPCollider will be migrated to use GENBOD or another true
|
||||
phase-space generator.
|
||||
|
||||
- G4CascadeFinalStateGenerator: Subclass of G4HadDecayGenerator, which
|
||||
provides a "Configure" function to take Bertini-specific inputs (bullet,
|
||||
target, and list of particle types) to set up distributions.
|
||||
|
||||
- G4CascadeFinalStateAlgorithm: Subclass of G4VHadDecayAlgorithm, used by
|
||||
G4CascadeFSGenerator to reproduce G4EPCollider kinematics. Momentum
|
||||
moduli are generated separately from angular distributions, then merged
|
||||
together and tested for consistency.
|
||||
|
||||
- G4VThreeBodyAngDst.hh: Subclass of G4VTwoBodyAngDst, which provides
|
||||
interface to generate polar angle for hN -> XYZ or NN -> XYZ states,
|
||||
currently handled internally to G4EPCollider.
|
||||
|
||||
- G4InuclParamAngDst: Subclass of G4VThreeBodyAngDst which implements the
|
||||
parametrized "abn[2][4][4]" arrays in G4EPCollider. This is exactly
|
||||
analogous to the recently introduced G4InuclParamMomDst.
|
||||
|
||||
- G4HadNucl3BodyAngDst: Instance of G4InuclParamAngDst for (h,Y,g)N -> XYZ
|
||||
interactions.
|
||||
|
||||
- G4NuclNucl3BodyAngDst: Instance of G4InuclParamAngDst for N N -> XYZ
|
||||
interactions.
|
||||
|
||||
- G4TwoBodyAngularDist: Add interface to access three-body distributions.
|
||||
|
||||
- sources.cmake: Add all new source files to lists.
|
||||
|
||||
22 April 2013 Michael Kelsey (hadr-casc-V09-06-19)
|
||||
---------------------------------------------------
|
||||
Minor code cleanup before deploying some major revisions.
|
||||
|
||||
- G4CascadeCoalescence: Replace _TLS_ local variable with mutable data member.
|
||||
|
||||
- G4NucleiModel.cc: Reduce number of scoping levels by adding exit returns
|
||||
at strategic points.
|
||||
|
||||
- G4VTwoBodyAngDst.hh: Remove unnecessary #include <vector>.
|
||||
|
||||
21 March 2013 Dennis Wright (hadr-casc-V09-06-18)
|
||||
---------------------------------------------------
|
||||
- sources.cmake: Add new G4NP2NPAngDst class.
|
||||
|
||||
21 March 2013 Dennis Wright (hadr-casc-V09-06-17)
|
||||
---------------------------------------------------
|
||||
- created class G4NP2NPAngDst to handle np and pn elastic scattering
|
||||
by sampling histograms taken directly from data
|
||||
- added above class to G4TwoBodyAngularDist, replacing old np, pn
|
||||
sampling
|
||||
|
||||
14 March 2013 Michael Kelsey (hadr-casc-V09-06-16)
|
||||
---------------------------------------------------
|
||||
- G4CascadeCoalescence.cc, G4InuclSpecialFunctions.cc, G4NucleiModel.cc:
|
||||
Undo some of the changes made in hadr-casc-V09-06-01 (29 Jan 2013) per
|
||||
recent guidance from Andrea. Specifically, TLS pointers cannot be
|
||||
initialized with "new", but must be initialized null, then instantiated
|
||||
with an if-block.
|
||||
|
||||
- G4InuclNuclei.cc: Replace TLS local variable in makeNuclearFragment()
|
||||
(static function) with a file-scoped non-const static map. Incorporate
|
||||
thread-locking (mutex) around all accesses to the shared map, since STL is
|
||||
inherently not thread safe.
|
||||
|
||||
11 March 2013 Michael Kelsey (hadr-casc-V09-06-15)
|
||||
---------------------------------------------------
|
||||
- G4HadNucl4BodyMomDst.cc: Fix comment describing function as ">= 4-body".
|
||||
|
||||
- G4MultiBodyMomentumDist.cc: Use envvar (G4CASCADE_USE_3BODYMOM) to enable
|
||||
separate 3-body momentum generators.
|
||||
|
||||
- G4CascadeParameters: Add G4CASCADE_USE_3BODYMOM envvar.
|
||||
|
||||
- G4InuclSpecialFunctions: Add new "randomInuclPowers()" function to
|
||||
compute power expansion of random value for momentum and cos(theta)
|
||||
distributions.
|
||||
|
||||
- G4ElementaryParticleCollider.cc: Move INUCL-style calculation (powers of
|
||||
Ekin and random S) to G4InuclSpecialFunctions.
|
||||
|
||||
- G4InuclParamMomDst.cc: Move INUCL-style calculation (powers of
|
||||
Ekin and random S) to G4InuclSpecialFunctions.
|
||||
|
||||
8 March 2013 Michael Kelsey
|
||||
----------------------------
|
||||
- G4VMultiBodyMomDst.hh, G4VTwoBodyAngDst.hh: Add GetName() function to
|
||||
return name string, for use with diagnostic utilities.
|
||||
|
||||
Add SVN use of 'Id' keyword to all new source files.
|
||||
|
||||
7 March 2013 Michael Kelsey (hadr-casc-V09-06-14)
|
||||
--------------------------------------------------
|
||||
Introduce multi-body final state momentum distribution classes and factory,
|
||||
modelled on the two-body angular distribution system. Leaf classes
|
||||
implement functionality of G4EPCollider::getMomModuleFor2toMany(), split by
|
||||
initial state and multiplicity.
|
||||
|
||||
- G4VMultiBodyMomDst: Abstract base class for all multi-body final state
|
||||
momentum generators. Subclasses may cover one or several categories.
|
||||
|
||||
- G4InuclParamMomDst: Intermediate base class implementing parametrization
|
||||
in G4EPCollider, derived from original INUCL Fortran code, with power
|
||||
expansions in Ekin and random fraction. Subclasses provide coeffient
|
||||
arrays for specific initial state and multiplicity, with subarrays for
|
||||
different final-state particles.
|
||||
|
||||
- G4NuclNucl3BodyDst: Leaf class for pp,pn,nn 3-body final state from INUCL.
|
||||
- G4NuclNucl4BodyDst: Leaf class for pp,pn,nn >= 4-body final state from INUCL.
|
||||
- G4HadNucl3BodyDst: Leaf class for Xp,Xn 3-body final state from INUCL.
|
||||
- G4HadNucl4BodyDst: Leaf class for Xp,Xn >= 4-body final state from INUCL.
|
||||
|
||||
- G4MultiBodyMomentumDist: Factory class to select individual generators
|
||||
above from initial-state code and multiplicity.
|
||||
|
||||
- G4ElementaryParticleCollider.cc: Replace getMomModuleFor2toMany() with
|
||||
call to G4MultiBodyMomentumDist factory and constituent generators.
|
||||
|
||||
7 March 2013 Michael Kelsey
|
||||
----------------------------
|
||||
- G4ElementaryParticleCollider: Reverse order of indices for rmn[][][] array
|
||||
used for multibody momentum selection, and abn[][][] used for three-body
|
||||
angular distribution. This allows direct grouping by initial state, so
|
||||
functionality can be refactored later.
|
||||
|
||||
6 March 2013 Michael Kelsey
|
||||
----------------------------
|
||||
- G4CascadeChannelTables: Implement global Print() function which dumps all
|
||||
tables registered in map.
|
||||
|
||||
- G4ElementaryParticleCollider: Remove printFinalStateTables() function,
|
||||
do work directly in G4CascadeChannelTables. Replace numeric values of
|
||||
particle-type checks with enums. Add detailed comments explaining array
|
||||
indices for momentum arrays.
|
||||
|
||||
6 March 2013 Michael Kelsey (hadr-casc-V09-06-13)
|
||||
--------------------------------------------------
|
||||
Remove obsolete directories evaporation/ and utils/.
|
||||
|
||||
- GNUmakefile, CMakeLists.txt: Remove references to obsolete
|
||||
subdirectories and their corresponding libraries.
|
||||
|
||||
NOTE: This tag requires changes at the top level of processes/CMakeLists.txt
|
||||
and must not be used independently of those changes.
|
||||
|
||||
6 March 2013 Michael Kelsey (hadr-casc-V09-06-12)
|
||||
--------------------------------------------------
|
||||
- G4CascadeHistory.cc: Cast calls to "getCharge()" to G4int to avoid
|
||||
compiler warnings.
|
||||
|
||||
5 March 2013 Michael Kelsey (hadr-casc-V09-06-10, -11)
|
||||
--------------------------------------------------
|
||||
- G4CascadeHistory: Support "reabsorbed" cascade particles (excitons and
|
||||
trapped decays) using "-1 daughters" as a flag. Add heading with legend
|
||||
to output.
|
||||
|
||||
- G4IntraNucleiCascader.cc: Add exciton and trapped-decay info to history.
|
||||
Move history reporting outside of "itry" loops (only shows final version).
|
||||
|
||||
4 March 2013 Michael Kelsey (hadr-casc-V09-06-09)
|
||||
--------------------------------------------------
|
||||
- G4CascadeHistory: NEW container class to collect all secondaries, along
|
||||
with generated daughters, and report cascade structure hierarchically.
|
||||
|
||||
- G4CascadParticle: Add new index data member for use with G4CascadeHistory.
|
||||
|
||||
- G4CascadeParameters: Add new G4CASCADE_SHOW_HISTORY envvar to activate
|
||||
use of G4CascadeHistory.
|
||||
|
||||
- G4CascadeParamMessenger: Add macro command for G4CASCADE_SHOW_HISTORY.
|
||||
|
||||
- G4IntraNucleiCascader: Add option G4CascadeHistory data member, created
|
||||
and used only if G4CASCADE_SHOW_HISTORY envvar is set.
|
||||
|
||||
- sources.cmake: Add G4CascadeHistory.hh and .cc.
|
||||
|
||||
3 March 2013 Michael Kelsey (hadr-casc-V09-06-08)
|
||||
--------------------------------------------------
|
||||
Re-tag with subdirectories "utils" and "evaporation" (excluded by mistake).
|
||||
|
||||
2 March 2013 Michael Kelsey (hadr-casc-V09-06-07)
|
||||
--------------------------------------------------
|
||||
- G4NucleiModel: Encapsulate forcing decision in forceFirst() function,
|
||||
apply to photons only, not hadrons.
|
||||
|
||||
27 February 2013 Michael Kelsey (hadr-casc-V09-06-06)
|
||||
------------------------------------------------------
|
||||
- G4NucleiModel: Modify choosePointAlongTraj() to use mean free path to
|
||||
bias point selection non-uniformly in each zone. Make member functions
|
||||
protected (instead of private) to allow external testing.
|
||||
|
||||
- G4BarashenkovTwoBodyAngDst: RENAME to G4ParamExpTwoBodyAngDst; previous
|
||||
name was a misattribution.
|
||||
|
||||
- sources.cmake: Follow renaming above.
|
||||
|
||||
- G4GammaNuclAngDst, G4HadNElastic1AngDst, G4HadNElastic2AngDst,
|
||||
G4NuclNuclAngDst, G4PiNInelasticAngDst: Follow renaming of base class.
|
||||
|
||||
25 February 2013 Michael Kelsey
|
||||
--------------------------------
|
||||
- G4RegionModel, G4BertiniElasticCollision, G4BertiniHydrogenCollision:
|
||||
REMOVE obsolete, unused code.
|
||||
|
||||
- sources.cmake: Remove obsolete code above.
|
||||
|
||||
23 February 2013 Michael Kelsey (hadr-casc-V09-06-05)
|
||||
------------------------------------------------------
|
||||
- G4NucleiModel.cc: Spurious character got into .cc file during save/commit.
|
||||
|
||||
23 February 2013 Michael Kelsey (hadr-casc-V09-06-04)
|
||||
------------------------------------------------------
|
||||
- G4NucleiModel.cc: Fix zone-density weighting in choosePointAlongTraj. Now
|
||||
done correctly, if not with optimal code efficiency: more points will be
|
||||
chosen in core of nucleus than in outer shell. Work needed to reduce
|
||||
vector arithmetic, move std:vector<>'s out to class data members, etc.
|
||||
|
||||
21 February 2013 Michael Kelsey
|
||||
--------------------------------
|
||||
- G4VTwoBodyAngDst: Bug fix: Data member "theName" should be a local copy of
|
||||
the ctor input string, not a reference to it. When literals are passed
|
||||
in, a _temporary_ object is created for the ctor which then goes out of
|
||||
scope, leaving an undefined reference behind. This causes segfaults when
|
||||
running with verbosity.
|
||||
|
||||
- G4CascadParticle: Move ctor body to .cc file, use global envvar to set
|
||||
initial verbosity (no other code changes verbosity of cparticles).
|
||||
|
||||
- G4NucleiModel: Add function to select random point along particle's
|
||||
trajectory, use with incident photons at initial step to nucleus.
|
||||
Selection is weighted by average nucleon density in each zone. Code uses
|
||||
mutliple local G4ThreeVector and std::vector buffers, which need to be
|
||||
made class members or static-local to reduce memory churn.
|
||||
|
||||
21 February 2013 Michael Kelsey (hadr-casc-V09-06-03)
|
||||
------------------------------------------------------
|
||||
- G4TwoBodyAngularDist: NEW Factory singleton containing all of the
|
||||
angular-distribution generators created below. Code from G4EPCollider to
|
||||
choose generator based on intial and final states moved here, accessed
|
||||
through static function.
|
||||
|
||||
- G4ElementaryParticleCollider: Angular distribution generators moved to
|
||||
new singleton factory. Access to factory is through a static function, so
|
||||
it can be shared across MT threads.
|
||||
|
||||
20 February 2013 Michael Kelsey
|
||||
--------------------------------
|
||||
- G4VTwoBodyAngDst: Add Id string.
|
||||
|
||||
- G4NumIntTwoBodyAngDst: Convert to templated, using array dimensions as
|
||||
template arguments (c.f. G4CascadeSampler). Pass references to C-style
|
||||
arrays as ctor arguments, use to initialize C-style array const
|
||||
references. Add local C-style array as reuable buffer for interpolation.
|
||||
Add Id string. Move .cc file to .icc, referenced from .hh, as required
|
||||
for template instantiation.
|
||||
|
||||
- G4GamP2NPipAngDst, G4GamP2PPi0AngDst: Follow change of base to templated
|
||||
form, passing arrays as base ctor args, move array initializations to
|
||||
namespace with "static const". Add Id string.
|
||||
|
||||
Extract parametrized two-body angular distribution code from
|
||||
G4ElementaryParticleCollider to new subclasses of G4VTwoBodyAngDst. These
|
||||
subclasses will likely be replaced over time with numerically-integrated
|
||||
CDFs as above.
|
||||
|
||||
- G4BarashenkovTwoBodyAngDst: Templated base class for double-exponential
|
||||
two-body parametrizations, extracted from G4EPCollider.
|
||||
|
||||
- G4GammaNuclAngDst, G4NuclNuclAngDst, G4PiNInelasticAngDst,
|
||||
G4HadNElastic1AngDst, G4HadNElastic2AngDst: Sublcasses of
|
||||
G4BarashenkovTwoBodyAngDst, with parameter arrays and energy bins
|
||||
extracted G4EPCollider.
|
||||
|
||||
- sources.cmake: Follow filename changes to G4NumIntTwoBodyAngDst.cc -> .icc,
|
||||
add new parametrized angular distribution classes.
|
||||
|
||||
31 January 2013 Dennis Wright (hadr-casc-V09-06-02)
|
||||
----------------------------------------------------
|
||||
Add detailed two-body final state angular distributions for (gamma,p) and
|
||||
(gamma,n) reactions, using tables of numerical integrals to sample cos(theta)
|
||||
|
||||
- created base classes G4VTwoBodyAngDst and G4NumIntTwoBodyAngDst, and concrete
|
||||
classes G4GamP2NPipAngDst and G4GamP2PPi0AngDst to hold the tables
|
||||
|
||||
- added these channels to G4ElementaryParticleCollider::
|
||||
|
||||
- added new cross section data to G4CascadeT1GamNChannel
|
||||
|
||||
29 January 2013 Michael Kelsey (hadr-casc-V09-06-01)
|
||||
-----------------------------------------------------
|
||||
In consultation with Andrea Dotti, revert or modify many of the automatic
|
||||
code changes (below) for improved MT performance.
|
||||
|
||||
- G4Cascade*Channel.hh,cc: Restore "static const" declarations of all final
|
||||
state arrays, eliminate use of "initialize()" function. In all of the .hh
|
||||
files, declare "static const data_t data;" to allow sharing across threads.
|
||||
|
||||
- G4CascadeFunctions.hh,cc: Restore DATA::data as simple object, not
|
||||
pointer.
|
||||
|
||||
- G4NucleiModel.hh,cc: Move function-static arrays and interpolator for
|
||||
gamma-quasideuteron cross sections to be class members with file-scope
|
||||
initialization. Eliminates need to use TLS pointers.
|
||||
|
||||
- G4Fissioner.hh,cc: Make two-element std::vector for nuclear fragments
|
||||
class data member; use G4InuclNuclei::fill() to change contents.
|
||||
|
||||
- G4InuclSpecialFunctions.cc, G4CascadeCoalescence.cc: Collapse TLS pointer
|
||||
initializtion to eliminate unncessary if-blocks.
|
||||
|
||||
- G4EquilibriumEvaporator.hh,cc, G4ElementaryParticleCollider.hh,cc: Move
|
||||
function-static interpolators and arrays to be class members with
|
||||
file-scope initialization. Eliminates need to use TLS pointers.
|
||||
|
||||
25 January 2013 Andrea Dotti et al.
|
||||
------------------------------------
|
||||
Apply automatic conversion to all code for Geant4-MT thread-safe operation.
|
||||
|
||||
20 December 2012 Michael Kelsey
|
||||
--------------------------------
|
||||
- G4ElementaryParticleCollider.cc: Add Omega tables to printout function,
|
||||
remove line referring to gamma-N as "preliminary."
|
||||
|
||||
06 December 2012 Michael Kelsey (hadr-casc-V09-06-00)
|
||||
------------------------------------------------------
|
||||
- G4IntraNucleiCascader.cc: For rescattering, set generation number of
|
||||
new secondaries to '1' instead of '0' (so they aren't identified as
|
||||
projectiles).
|
||||
|
||||
- G4NucleiModel.cc: In generateParticleFate() set generation number of
|
||||
interaction daughters to one more than the parent secondary. Eliminate
|
||||
complex isProjectile() code in favor of checking for generation==0.
|
||||
|
||||
20 October 2012 Michael Kelsey (hadr-casc-V09-05-26)
|
||||
-----------------------------------------------------
|
||||
- G4CascadePPChannel.cc, G4CascadeNNChannel.cc, G4CascadeNPChannel.cc: For
|
||||
@@ -477,7 +1210,7 @@ order to anticipate supporting G4ExceptionDescription streams.
|
||||
- G4CascadeChannelTables: Add load-on-demand via GetTable(). Move static
|
||||
implementations to .cc file (Windows compatibility issue).
|
||||
|
||||
- cascade/include/G4CascadeFunctions.icc: Remove self-registration from ctor.
|
||||
- G4CascadeFunctions.icc: Remove self-registration from ctor.
|
||||
|
||||
- G4Cascade*Channel.cc: Remove all namespace self-instantiations;
|
||||
initialization is inconsistent across platforms.
|
||||
@@ -3348,4 +4081,3 @@ All changes below within "cascade/" subdirectory:
|
||||
elastic scattering interface added:
|
||||
G4ElasticCascadeInterface.hh, .cc added
|
||||
G4CascadeInterface.hh modified
|
||||
|
||||
|
||||
@@ -7,7 +7,7 @@
|
||||
#
|
||||
# Generated on : 24/9/2010
|
||||
#
|
||||
# $Id: CMakeLists.txt,v 1.1 2010-09-29 18:56:20 bmorgan Exp $
|
||||
# $Id: CMakeLists.txt 66241 2012-12-13 18:34:42Z gunter $
|
||||
#
|
||||
#------------------------------------------------------------------------------
|
||||
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
# $Id: GNUmakefile,v 1.15 2010-09-23 05:02:14 mkelsey Exp $
|
||||
# $Id: GNUmakefile 71741 2013-06-21 17:38:28Z mkelsey $
|
||||
# -----------------------------------------------------------
|
||||
# GNUmakefile for hadronic library. Gabriele Cosmo, 18/9/96.
|
||||
#
|
||||
@@ -6,6 +6,7 @@
|
||||
#
|
||||
# 20100922 J. Yarba -- Add include directories for pre-compound model
|
||||
# 20110919 M. Kelsey -- Add flag for final-state clustering
|
||||
# 20130621 M. Kelsey -- Move CHECK_ECONS flag to runtime parameters
|
||||
# -----------------------------------------------------------
|
||||
|
||||
name := G4hadronic_bert_cascade
|
||||
@@ -38,10 +39,6 @@ ifdef G4CASCADE_SKIP_ECONS
|
||||
CPPFLAGS += -DG4CASCADE_SKIP_ECONS=1
|
||||
endif
|
||||
|
||||
ifdef G4CASCADE_CHECK_ECONS
|
||||
CPPFLAGS += -DG4CASCADE_CHECK_ECONS=1
|
||||
endif
|
||||
|
||||
ifdef G4CASCADE_DO_COALESCENCE
|
||||
CPPFLAGS += -DG4CASCADE_DO_COALESCENCE=1
|
||||
endif
|
||||
|
||||
@@ -23,7 +23,7 @@
|
||||
// * acceptance of all terms of the Geant4 Software license. *
|
||||
// ********************************************************************
|
||||
//
|
||||
// $Id$
|
||||
// $Id: G4Analyser.hh 66241 2012-12-13 18:34:42Z gunter $
|
||||
//
|
||||
// 20101010 M. Kelsey -- Migrate to integer A and Z
|
||||
|
||||
|
||||
@@ -23,7 +23,7 @@
|
||||
// * acceptance of all terms of the Geant4 Software license. *
|
||||
// ********************************************************************
|
||||
//
|
||||
// $Id$
|
||||
// $Id: G4BigBanger.hh 71942 2013-06-28 19:08:11Z mkelsey $
|
||||
//
|
||||
// 20100315 M. Kelsey -- Remove "using" directive and unnecessary #includes.
|
||||
// 20100407 M. Kelsey -- Replace std::vector<> returns with data members.
|
||||
@@ -33,40 +33,41 @@
|
||||
// 20100714 M. Kelsey -- Switch to new G4CascadeColliderBase class
|
||||
// 20100726 M. Kelsey -- Move std::vector<> buffer to .hh file
|
||||
// 20100928 M. Kelsey -- Migrate to integer A and Z
|
||||
// 20130620 Address Coverity complaint about missing copy actions
|
||||
// 20130622 Inherit from G4CascadeDeexciteBase, move to deExcite() interface
|
||||
// with G4Fragment
|
||||
|
||||
#ifndef G4BIG_BANGER_HH
|
||||
#define G4BIG_BANGER_HH
|
||||
|
||||
#include "G4CascadeColliderBase.hh"
|
||||
#include "G4CascadeDeexciteBase.hh"
|
||||
#include "G4InuclElementaryParticle.hh"
|
||||
#include <vector>
|
||||
|
||||
class G4CollisionOutput;
|
||||
|
||||
|
||||
class G4BigBanger : public G4CascadeColliderBase {
|
||||
class G4BigBanger : public G4CascadeDeexciteBase {
|
||||
public:
|
||||
G4BigBanger();
|
||||
virtual ~G4BigBanger() {};
|
||||
|
||||
void collide(G4InuclParticle* bullet, G4InuclParticle* target,
|
||||
G4CollisionOutput& output);
|
||||
virtual void deExcite(const G4Fragment& target, G4CollisionOutput& output);
|
||||
|
||||
private:
|
||||
void generateBangInSCM(G4double etot, G4int a, G4int z);
|
||||
|
||||
void generateMomentumModules(G4double etot, G4int a, G4int z);
|
||||
|
||||
G4double xProbability(G4double x, G4int a) const;
|
||||
|
||||
G4double maxProbability(G4int a) const;
|
||||
|
||||
G4double generateX(G4int ia, G4double promax) const;
|
||||
|
||||
// Buffers for big-bang results
|
||||
std::vector<G4InuclElementaryParticle> particles;
|
||||
std::vector<G4double> momModules;
|
||||
std::vector<G4LorentzVector> scm_momentums;
|
||||
|
||||
private:
|
||||
// Copying of modules is forbidden
|
||||
G4BigBanger(const G4BigBanger&);
|
||||
G4BigBanger& operator=(const G4BigBanger&);
|
||||
};
|
||||
|
||||
#endif /* G4BIG_BANGER_HH */
|
||||
|
||||
@@ -23,7 +23,7 @@
|
||||
// * acceptance of all terms of the Geant4 Software license. *
|
||||
// ********************************************************************
|
||||
//
|
||||
// $Id$
|
||||
// $Id: G4CascadParticle.hh 67738 2013-03-05 05:54:30Z mkelsey $
|
||||
//
|
||||
// 20100112 M. Kelsey -- Remove G4CascadeMomentum, use G4LorentzVector directly
|
||||
// 20100126 M. Kelsey -- Replace vector<G4Double> position with G4ThreeVector,
|
||||
@@ -34,6 +34,9 @@
|
||||
// 20110806 M. Kelsey -- Add fill() function to replicate ctor/op=() action
|
||||
// 20110922 M. Kelsey -- Add stream argument to print(), add operator<<().
|
||||
// 20120306 M. Kelsey -- Add access for cumulative path through nucleus.
|
||||
// 20130221 M. Kelsey -- Move constructor to .cc file for parameter access.
|
||||
// 20130304 M. Kelsey -- Add index data member, for use with G4CascadeHistory,
|
||||
// and explicit copy operations and destructor.
|
||||
|
||||
#ifndef G4CASCAD_PARTICLE_HH
|
||||
#define G4CASCAD_PARTICLE_HH
|
||||
@@ -52,22 +55,31 @@ public:
|
||||
|
||||
G4CascadParticle(const G4InuclElementaryParticle& particle,
|
||||
const G4ThreeVector& pos, G4int izone, G4double cpath,
|
||||
G4int gen)
|
||||
: verboseLevel(0), theParticle(particle), position(pos),
|
||||
current_zone(izone), current_path(cpath), movingIn(true),
|
||||
reflectionCounter(0), reflected(false), generation(gen) {}
|
||||
G4int gen);
|
||||
|
||||
~G4CascadParticle() {;} // No subclasses allowed
|
||||
|
||||
// Allow copying of object data (for use with history and elsewhere)
|
||||
// NOTE: history index IS copied (to avoid double counting)
|
||||
G4CascadParticle(const G4CascadParticle& cpart) { *this = cpart; }
|
||||
G4CascadParticle& operator=(const G4CascadParticle& cpart);
|
||||
|
||||
// Analogue to operator=() to support filling vectors w/o temporaries
|
||||
// NOTE: history index IS NOT copied (new particle is being made)
|
||||
void fill(const G4InuclElementaryParticle& particle,
|
||||
const G4ThreeVector& pos, G4int izone, G4double cpath,
|
||||
G4int gen);
|
||||
|
||||
// Data accessors
|
||||
const G4InuclElementaryParticle& getParticle() const { return theParticle; }
|
||||
G4InuclElementaryParticle& getParticle() { return theParticle; }
|
||||
|
||||
G4int getGeneration() const { return generation; }
|
||||
void setGeneration(G4int gen) { generation = gen; }
|
||||
|
||||
G4int getHistoryId() const { return historyId; }
|
||||
void setHistoryId(G4int id) { historyId = id; }
|
||||
|
||||
G4LorentzVector getMomentum() const { // Can't return ref; temporary
|
||||
return theParticle.getMomentum();
|
||||
}
|
||||
@@ -117,6 +129,7 @@ private:
|
||||
G4int reflectionCounter;
|
||||
G4bool reflected;
|
||||
G4int generation;
|
||||
G4int historyId;
|
||||
};
|
||||
|
||||
// Proper stream output (just calls print())
|
||||
|
||||
@@ -23,7 +23,7 @@
|
||||
// * acceptance of all terms of the Geant4 Software license. *
|
||||
// ********************************************************************
|
||||
//
|
||||
// $Id$
|
||||
// $Id: G4CascadeChannel.hh 67796 2013-03-08 06:18:39Z mkelsey $
|
||||
//
|
||||
// 20100514 M. Kelsey -- All functionality removed except quantum-number
|
||||
// validation functions.
|
||||
|
||||
+12
-17
@@ -23,6 +23,8 @@
|
||||
// * acceptance of all terms of the Geant4 Software license. *
|
||||
// ********************************************************************
|
||||
//
|
||||
// $Id: G4CascadeChannelTables.hh 69336 2013-04-30 20:20:23Z mkelsey $
|
||||
//
|
||||
// Factory class to return pointer to Bertini cross-section table based on
|
||||
// collision initial state (hadron type codes).
|
||||
//
|
||||
@@ -33,6 +35,9 @@
|
||||
// 20110915 M. Kelsey -- Move static implementations (won't work on Windows);
|
||||
// Add local table instantiating function (to replace self-reg)
|
||||
// 20110923 M. Kelsey -- Add optional stream& argument to printTable().
|
||||
// 20130129 M. Kelsey -- Drop load-on-demand interfaces, fill in ctor
|
||||
// 20130306 M. Kelsey -- Add inclusive printing of all tables here
|
||||
// 20130429 M. Kelsey -- Change instance to thread-local pointer.
|
||||
|
||||
#ifndef G4_CASCADE_CHANNEL_TABLES_HH
|
||||
#define G4_CASCADE_CHANNEL_TABLES_HH
|
||||
@@ -52,32 +57,22 @@ public:
|
||||
// Arguments are individual G4InuclElementaryParticle types
|
||||
static const G4CascadeChannel* GetTable(G4int had1, G4int had2);
|
||||
|
||||
// Convenience function for diagnostic output
|
||||
// Convenience functions for diagnostic output
|
||||
static void Print(std::ostream& os=G4cout);
|
||||
static void PrintTable(G4int initialState, std::ostream& os=G4cout);
|
||||
|
||||
// Register cross-section table for later lookup
|
||||
static void AddTable(G4int initialState, G4CascadeChannel* table);
|
||||
|
||||
private:
|
||||
static G4CascadeChannelTables& instance(); // Singleton
|
||||
static const G4CascadeChannelTables& instance(); // Singleton
|
||||
static G4ThreadLocal G4CascadeChannelTables* theInstance; // per thread
|
||||
|
||||
G4CascadeChannelTables() { tables.clear(); } // Must initialize map
|
||||
~G4CascadeChannelTables() {} // Tables are created externally, not owned
|
||||
G4CascadeChannelTables();
|
||||
~G4CascadeChannelTables();
|
||||
|
||||
// Fetch table from map if already registered, or return null
|
||||
const G4CascadeChannel* FindTable(G4int initialState);
|
||||
|
||||
// Save table for specified interaction in map
|
||||
void SaveTable(G4int initialState, G4CascadeChannel* table);
|
||||
|
||||
// Special function to create and store table for specified interaction
|
||||
const G4CascadeChannel* LoadTable(G4int initialState);
|
||||
const G4CascadeChannel* FindTable(G4int initialState) const;
|
||||
|
||||
typedef std::map<G4int, G4CascadeChannel*> TableMap;
|
||||
typedef std::pair<const G4int, G4CascadeChannel*> TableEntry;
|
||||
TableMap tables;
|
||||
|
||||
static void DeleteTable(TableEntry& t); // For use by destructor
|
||||
};
|
||||
|
||||
#endif /* G4_CASCADE_CHANNEL_TABLES_HH */
|
||||
|
||||
@@ -25,7 +25,7 @@
|
||||
//
|
||||
#ifndef G4CASCADE_CHECK_BALANCE_HH
|
||||
#define G4CASCADE_CHECK_BALANCE_HH
|
||||
// $Id$
|
||||
// $Id: G4CascadeCheckBalance.hh 71942 2013-06-28 19:08:11Z mkelsey $
|
||||
//
|
||||
// Verify and report four-momentum conservation for collision output; uses
|
||||
// same interface as collision generators.
|
||||
@@ -46,6 +46,8 @@
|
||||
// 20110328 M. Kelsey -- Add default ctor and explicit limit setting
|
||||
// 20110722 M. Kelsey -- For IntraNucleiCascader, take G4CollOut as argument
|
||||
// 20121002 M. Kelsey -- Add strangeness check (useful for Omega- beam)
|
||||
// 20130620 Address Coverity complaint about missing copy actions
|
||||
// 20130621 Add interface to take G4Fragment input instead of G4InuclNuclei.
|
||||
|
||||
#include "G4VCascadeCollider.hh"
|
||||
#include "globals.hh"
|
||||
@@ -82,14 +84,13 @@ public:
|
||||
void collide(G4InuclParticle* bullet, G4InuclParticle* target,
|
||||
G4CollisionOutput& output);
|
||||
|
||||
// This is for use with G4VCascadeDeexcitation modules
|
||||
void collide(const G4Fragment& fragment, G4CollisionOutput& output);
|
||||
|
||||
// This is for use with G4EPCollider internal checks
|
||||
void collide(G4InuclParticle* bullet, G4InuclParticle* target,
|
||||
const std::vector<G4InuclElementaryParticle>& particles);
|
||||
|
||||
// This is for use with G4Fissioner internal checks
|
||||
void collide(G4InuclParticle* bullet, G4InuclParticle* target,
|
||||
const std::vector<G4InuclNuclei>& fragments);
|
||||
|
||||
// This is for use with G4NucleiModel internal checks
|
||||
void collide(G4InuclParticle* bullet, G4InuclParticle* target,
|
||||
const std::vector<G4CascadParticle>& particles);
|
||||
@@ -99,6 +100,14 @@ public:
|
||||
G4CollisionOutput& output,
|
||||
const std::vector<G4CascadParticle>& cparticles);
|
||||
|
||||
// This is for use with G4BigBanger internal checks
|
||||
void collide(const G4Fragment& target,
|
||||
const std::vector<G4InuclElementaryParticle>& particles);
|
||||
|
||||
// This is for use with G4Fissioner internal checks
|
||||
void collide(const G4Fragment& target,
|
||||
const std::vector<G4InuclNuclei>& fragments);
|
||||
|
||||
// Checks on conservation laws (kinematics, baryon number, charge, hyperons)
|
||||
G4bool energyOkay() const;
|
||||
G4bool ekinOkay() const;
|
||||
@@ -160,6 +169,11 @@ private:
|
||||
G4int finalStrange;
|
||||
|
||||
G4CollisionOutput tempOutput; // Buffer for direct-list interfaces
|
||||
|
||||
private:
|
||||
// Copying of modules is forbidden
|
||||
G4CascadeCheckBalance(const G4CascadeCheckBalance&);
|
||||
G4CascadeCheckBalance& operator=(const G4CascadeCheckBalance&);
|
||||
};
|
||||
|
||||
#endif /* G4CASCADE_CHECK_BALANCE_HH */
|
||||
|
||||
@@ -117,6 +117,7 @@ private:
|
||||
|
||||
// Kinematics for cluster evaluations
|
||||
G4LorentzVector getClusterMomentum(const ClusterCandidate& aCluster) const;
|
||||
mutable G4LorentzVector pCluster; // Reusable buffer to reduce churn
|
||||
|
||||
G4double maxDeltaP(const ClusterCandidate& aCluster) const;
|
||||
|
||||
|
||||
@@ -25,7 +25,7 @@
|
||||
//
|
||||
#ifndef G4CASCADE_COLLIDER_BASE_HH
|
||||
#define G4CASCADE_COLLIDER_BASE_HH
|
||||
// $Id$
|
||||
// $Id: G4CascadeColliderBase.hh 71942 2013-06-28 19:08:11Z mkelsey $
|
||||
//
|
||||
// 20100714 M. Kelsey -- Move functionality from G4VCascadeCollider, and
|
||||
// provide conservation-checking here, with wrapper function
|
||||
@@ -38,6 +38,10 @@
|
||||
// consistency in subclass colliders.
|
||||
// 20110321 M. Kelsey -- Hide names of arguments to rescatter(), to avoid
|
||||
// compiler warnings on some GCC versions.
|
||||
// 20130620 Address Coverity complaint about missing copy actions
|
||||
// 20130621 Move doConservationChecks to G4CascadeParameters; change
|
||||
// explosion to use reference, add validateOutput() w/G4Fragment
|
||||
// 20130622 Move fragment-handling functions to G4CascadeDeexciteBase
|
||||
|
||||
#include "G4VCascadeCollider.hh"
|
||||
|
||||
@@ -68,45 +72,39 @@ public:
|
||||
|
||||
virtual void setVerboseLevel(G4int verbose=0);
|
||||
|
||||
virtual void setConservationChecks(G4bool doBalance=true) {
|
||||
doConservationChecks = doBalance;
|
||||
}
|
||||
|
||||
protected:
|
||||
G4InteractionCase interCase; // Determine bullet vs. target
|
||||
G4bool doConservationChecks; // Conservation-law validation
|
||||
G4CascadeCheckBalance* balance;
|
||||
|
||||
// Decide whether to use G4ElementaryParticleCollider or not
|
||||
virtual G4bool useEPCollider(G4InuclParticle* bullet,
|
||||
G4InuclParticle* target) const;
|
||||
|
||||
// Decide whether to use G4BigBanger or not
|
||||
virtual G4bool explosion(G4InuclNuclei* target) const;
|
||||
virtual G4bool explosion(G4Fragment* target) const;
|
||||
virtual G4bool explosion(G4int A, G4int Z, G4double excitation) const;
|
||||
|
||||
// Decide whether to use G4IntraNuclearCascader or not
|
||||
virtual G4bool inelasticInteractionPossible(G4InuclParticle* bullet,
|
||||
G4InuclParticle* target,
|
||||
G4double ekin) const;
|
||||
|
||||
// ==> Provide same interfaces as G4CascadeCheckBalance itself
|
||||
G4CascadeCheckBalance* balance;
|
||||
|
||||
// Validate output for energy, momentum conservation, etc.
|
||||
virtual G4bool validateOutput(G4InuclParticle* bullet,
|
||||
G4InuclParticle* target,
|
||||
G4CollisionOutput& output);
|
||||
|
||||
// This is for use with G4EPCollider and G4BigBanger
|
||||
// This is for use after de-excitation
|
||||
virtual G4bool validateOutput(const G4Fragment& fragment,
|
||||
G4CollisionOutput& output);
|
||||
|
||||
// This is for use with G4EPCollider
|
||||
virtual G4bool validateOutput(G4InuclParticle* bullet,
|
||||
G4InuclParticle* target,
|
||||
const std::vector<G4InuclElementaryParticle>& particles);
|
||||
|
||||
// This is for use with G4Fissioner
|
||||
virtual G4bool validateOutput(G4InuclParticle* bullet,
|
||||
G4InuclParticle* target,
|
||||
const std::vector<G4InuclNuclei>& fragments);
|
||||
private:
|
||||
// Copying of modules is forbidden
|
||||
G4CascadeColliderBase(const G4CascadeColliderBase&);
|
||||
G4CascadeColliderBase& operator=(const G4CascadeColliderBase&);
|
||||
};
|
||||
|
||||
#endif /* G4CASCADE_COLLIDER_BASE_HH */
|
||||
|
||||
@@ -23,7 +23,7 @@
|
||||
// * acceptance of all terms of the Geant4 Software license. *
|
||||
// ********************************************************************
|
||||
//
|
||||
// $Id$
|
||||
// $Id: G4CascadeData.hh 66241 2012-12-13 18:34:42Z gunter $
|
||||
//
|
||||
// 20100507 M. Kelsey -- Use template arguments to dimension const-refs
|
||||
// to arrays,for use in passing to functions as dimensioned.
|
||||
|
||||
@@ -23,7 +23,7 @@
|
||||
// * acceptance of all terms of the Geant4 Software license. *
|
||||
// ********************************************************************
|
||||
//
|
||||
// $Id$
|
||||
// $Id: G4CascadeData.icc 71890 2013-06-27 22:14:13Z mkelsey $
|
||||
//
|
||||
// 20100803 M. Kelsey -- Move implementations to this .icc file. Use name
|
||||
// string to report output
|
||||
@@ -35,10 +35,12 @@
|
||||
// 20110923 M. Kelsey -- Add optional ostream& argument to print() fns,
|
||||
// drop all "inline" keywords
|
||||
// 20120608 M. Kelsey -- Fix variable-name "shadowing" compiler warnings.
|
||||
// 20130627 M. Kelsey -- Use new function to print particle name strings.
|
||||
|
||||
#ifndef G4_CASCADE_DATA_ICC
|
||||
#define G4_CASCADE_DATA_ICC
|
||||
|
||||
#include "G4InuclParticleNames.hh"
|
||||
#include <iostream>
|
||||
#include <iomanip>
|
||||
|
||||
@@ -122,14 +124,22 @@ print(G4int mult, std::ostream& os) const {
|
||||
os << "\n final state x" << mult << "bfs[" << ichan << "] : ";
|
||||
for (G4int fsi=0; fsi<mult; fsi++) {
|
||||
switch (mult) {
|
||||
case 2: os << " " << x2bfs[ichan][fsi]; break;
|
||||
case 3: os << " " << x3bfs[ichan][fsi]; break;
|
||||
case 4: os << " " << x4bfs[ichan][fsi]; break;
|
||||
case 5: os << " " << x5bfs[ichan][fsi]; break;
|
||||
case 6: os << " " << x6bfs[ichan][fsi]; break;
|
||||
case 7: os << " " << x7bfs[ichan][fsi]; break;
|
||||
case 8: os << " " << x8bfs[ichan][fsi]; break;
|
||||
case 9: os << " " << x9bfs[ichan][fsi]; break;
|
||||
case 2: os << " " << G4InuclParticleNames::nameShort(x2bfs[ichan][fsi]);
|
||||
break;
|
||||
case 3: os << " " << G4InuclParticleNames::nameShort(x3bfs[ichan][fsi]);
|
||||
break;
|
||||
case 4: os << " " << G4InuclParticleNames::nameShort(x4bfs[ichan][fsi]);
|
||||
break;
|
||||
case 5: os << " " << G4InuclParticleNames::nameShort(x5bfs[ichan][fsi]);
|
||||
break;
|
||||
case 6: os << " " << G4InuclParticleNames::nameShort(x6bfs[ichan][fsi]);
|
||||
break;
|
||||
case 7: os << " " << G4InuclParticleNames::nameShort(x7bfs[ichan][fsi]);
|
||||
break;
|
||||
case 8: os << " " << G4InuclParticleNames::nameShort(x8bfs[ichan][fsi]);
|
||||
break;
|
||||
case 9: os << " " << G4InuclParticleNames::nameShort(x9bfs[ichan][fsi]);
|
||||
break;
|
||||
default: ;
|
||||
}
|
||||
}
|
||||
@@ -143,8 +153,8 @@ template <int NE,int N2,int N3,int N4,int N5,int N6,int N7,int N8,int N9>
|
||||
void G4CascadeData<NE,N2,N3,N4,N5,N6,N7,N8,N9>::
|
||||
printXsec(const G4double (&xsec)[NE], std::ostream& os) const {
|
||||
for (G4int k=0; k<NE; k++) {
|
||||
os << std::setw(6) << xsec[k]; // Use sign-gap as separator
|
||||
if ((k+1)%12 == 0) os << G4endl;
|
||||
os << " " << std::setw(6) << xsec[k];
|
||||
if ((k+1)%10 == 0) os << G4endl;
|
||||
}
|
||||
os << G4endl;
|
||||
}
|
||||
|
||||
@@ -25,14 +25,19 @@
|
||||
//
|
||||
#ifndef G4CASCADE_DEEXCITATION_HH
|
||||
#define G4CASCADE_DEEXCITATION_HH
|
||||
// $Id$
|
||||
// $Id: G4CascadeDeexcitation.hh 71942 2013-06-28 19:08:11Z mkelsey $
|
||||
//
|
||||
// Takes an arbitrary excited or unphysical nuclear state and produces
|
||||
// a final state with evaporated particles and (possibly) a stable nucleus.
|
||||
//
|
||||
// 20100926 M. Kelsey -- Move to new G4VCascadeDeexcitation base class.
|
||||
// 20130620 Address Coverity complaint about missing copy actions
|
||||
// 20130621 Drop collide() interface (base class will throw exception);
|
||||
// follow base change to deExcite() with reference;
|
||||
// add reusable G4InuclNuclei buffer, verbosity handler
|
||||
// 20130622 Inherit from G4CascadeDeexciteBase
|
||||
|
||||
#include "G4VCascadeDeexcitation.hh"
|
||||
#include "G4CascadeDeexciteBase.hh"
|
||||
#include "globals.hh"
|
||||
|
||||
class G4InuclParticle;
|
||||
@@ -41,23 +46,28 @@ class G4NonEquilibriumEvaporator;
|
||||
class G4EquilibriumEvaporator;
|
||||
|
||||
|
||||
class G4CascadeDeexcitation : public G4VCascadeDeexcitation {
|
||||
class G4CascadeDeexcitation : public G4CascadeDeexciteBase {
|
||||
public:
|
||||
G4CascadeDeexcitation();
|
||||
virtual ~G4CascadeDeexcitation();
|
||||
|
||||
// Standard Collider interface (bullet is not used in this case)
|
||||
virtual void collide(G4InuclParticle* /*bullet*/, G4InuclParticle* target,
|
||||
G4CollisionOutput& globalOutput);
|
||||
virtual void setVerboseLevel(G4int verbose);
|
||||
|
||||
// Interface specific to pre-compound (post-cascade) processing
|
||||
virtual void deExcite(G4Fragment* fragment,
|
||||
virtual void deExcite(const G4Fragment& fragment,
|
||||
G4CollisionOutput& globalOutput);
|
||||
|
||||
private:
|
||||
G4BigBanger* theBigBanger;
|
||||
G4NonEquilibriumEvaporator* theNonEquilibriumEvaporator;
|
||||
G4EquilibriumEvaporator* theEquilibriumEvaporator;
|
||||
|
||||
G4CollisionOutput tempOutput; // Local buffer for de-excitation stages
|
||||
|
||||
private:
|
||||
// Copying of modules is forbidden
|
||||
G4CascadeDeexcitation(const G4CascadeDeexcitation&);
|
||||
G4CascadeDeexcitation& operator=(const G4CascadeDeexcitation&);
|
||||
};
|
||||
|
||||
#endif /* G4CASCADE_DEEXCITATION_HH */
|
||||
|
||||
@@ -0,0 +1,91 @@
|
||||
//
|
||||
// ********************************************************************
|
||||
// * 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 G4CASCADE_DEEXCITE_BASE_HH
|
||||
#define G4CASCADE_DEEXCITE_BASE_HH 1
|
||||
// $Id$
|
||||
//
|
||||
// Semi-concrete base class for de-excitation modules, analogous to
|
||||
// G4CascadeColliderBase.
|
||||
//
|
||||
// 20130628 M.Kelsey -- Add makeFragment() with zero momentum
|
||||
|
||||
#include "G4VCascadeDeexcitation.hh"
|
||||
#include "G4InuclElementaryParticle.hh"
|
||||
#include "G4InuclNuclei.hh"
|
||||
#include "G4LorentzVector.hh"
|
||||
#include <vector>
|
||||
|
||||
class G4CascadeCheckBalance;
|
||||
class G4Fragment;
|
||||
|
||||
|
||||
class G4CascadeDeexciteBase : public G4VCascadeDeexcitation {
|
||||
public:
|
||||
G4CascadeDeexciteBase(const char* name);
|
||||
virtual ~G4CascadeDeexciteBase();
|
||||
|
||||
virtual void setVerboseLevel(G4int verbose=0);
|
||||
|
||||
protected:
|
||||
// Decide whether to use G4BigBanger or not
|
||||
virtual G4bool explosion(const G4Fragment& target) const;
|
||||
virtual G4bool explosion(G4int A, G4int Z, G4double excitation) const;
|
||||
|
||||
protected:
|
||||
G4CascadeCheckBalance* balance; // For conservation checking
|
||||
|
||||
// ==> Provide interfaces to G4CascadeCheckBalance
|
||||
virtual G4bool validateOutput(const G4Fragment& target,
|
||||
G4CollisionOutput& output);
|
||||
|
||||
// This is for use with G4BigBanger
|
||||
virtual G4bool validateOutput(const G4Fragment& target,
|
||||
const std::vector<G4InuclElementaryParticle>& particles);
|
||||
|
||||
// This is for use with G4Fissioner
|
||||
virtual G4bool validateOutput(const G4Fragment& target,
|
||||
const std::vector<G4InuclNuclei>& fragments);
|
||||
|
||||
// Interfaces between local content and G4Fragment
|
||||
void getTargetData(const G4Fragment& target);
|
||||
G4int A; // Buffers to collect target data for all modules
|
||||
G4int Z;
|
||||
G4LorentzVector PEX; // Four momentum of recoil in Bertini units (GeV)
|
||||
G4double EEXS; // Excitation energy in MeV
|
||||
|
||||
// NOTE: Momentum passed by value so that energy/mass can be adjusted
|
||||
const G4Fragment& makeFragment(G4LorentzVector mom, G4int A, G4int Z,
|
||||
G4double EX=0.);
|
||||
const G4Fragment& makeFragment(G4int A, G4int Z, G4double EX=0.);
|
||||
G4Fragment aFragment; // Reusable buffer to reduce new/delete cycling
|
||||
|
||||
private:
|
||||
// Copying of modules is forbidden
|
||||
G4CascadeDeexciteBase(const G4CascadeDeexciteBase&);
|
||||
G4CascadeDeexciteBase& operator=(const G4CascadeDeexciteBase&);
|
||||
};
|
||||
|
||||
#endif /* G4CASCADE_DEEXCITE_BASE_HH */
|
||||
+125
@@ -0,0 +1,125 @@
|
||||
//
|
||||
// ********************************************************************
|
||||
// * 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. *
|
||||
// ********************************************************************
|
||||
//
|
||||
// $Id$
|
||||
// Author: Michael Kelsey (SLAC)
|
||||
// Date: 15 April 2013
|
||||
//
|
||||
// Description: Subclass of models/util G4VHadDecayAlgorithm which uses
|
||||
// old INUCL parametrizations for momentum and angular
|
||||
// distributions.
|
||||
//
|
||||
|
||||
#ifndef G4CascadeFinalStateAlgorithm_hh
|
||||
#define G4CascadeFinalStateAlgorithm_hh 1
|
||||
|
||||
#include "globals.hh"
|
||||
#include "G4VHadDecayAlgorithm.hh"
|
||||
#include "G4LorentzConvertor.hh"
|
||||
|
||||
class G4InuclElementaryParticle;
|
||||
class G4MultiBodyMomentumDist;
|
||||
class G4TwoBodyAngularDist;
|
||||
class G4VMultiBodyMomDst;
|
||||
class G4VTwoBodyAngDst;
|
||||
|
||||
|
||||
class G4CascadeFinalStateAlgorithm : public G4VHadDecayAlgorithm {
|
||||
public:
|
||||
G4CascadeFinalStateAlgorithm();
|
||||
virtual ~G4CascadeFinalStateAlgorithm();
|
||||
|
||||
virtual void SetVerboseLevel(G4int verbose); // Pass through to factories
|
||||
|
||||
// Select appropriate distributions based on interaction
|
||||
void Configure(G4InuclElementaryParticle* bullet,
|
||||
G4InuclElementaryParticle* target,
|
||||
const std::vector<G4int>& particle_kinds);
|
||||
|
||||
protected:
|
||||
// Two-body generation uses angular-distribution function
|
||||
virtual void GenerateTwoBody(G4double initialMass,
|
||||
const std::vector<G4double>& masses,
|
||||
std::vector<G4LorentzVector>& finalState);
|
||||
|
||||
// N-body generation uses momentum-modulus distribution, computed angles
|
||||
virtual void GenerateMultiBody(G4double initialMass,
|
||||
const std::vector<G4double>& masses,
|
||||
std::vector<G4LorentzVector>& finalState);
|
||||
|
||||
// Compute kinematic quantities needed for distributions
|
||||
void SaveKinematics(G4InuclElementaryParticle* bullet,
|
||||
G4InuclElementaryParticle* target);
|
||||
|
||||
// Select generator based on initial and final state
|
||||
void ChooseGenerators(G4int is, G4int fs);
|
||||
|
||||
// Generate momentum magnitudes and validate for use
|
||||
void FillMagnitudes(G4double initialMass,
|
||||
const std::vector<G4double>& masses);
|
||||
|
||||
G4bool satisfyTriangle(const std::vector<G4double>& pmod) const;
|
||||
|
||||
// Generate momentum directions into final state
|
||||
void FillDirections(G4double initialMass,
|
||||
const std::vector<G4double>& masses,
|
||||
std::vector<G4LorentzVector>& finalState);
|
||||
|
||||
void FillDirThreeBody(G4double initialMass,
|
||||
const std::vector<G4double>& masses,
|
||||
std::vector<G4LorentzVector>& finalState);
|
||||
|
||||
void FillDirManyBody(G4double initialMass,
|
||||
const std::vector<G4double>& masses,
|
||||
std::vector<G4LorentzVector>& finalState);
|
||||
|
||||
G4double GenerateCosTheta(G4int ptype, G4double pmod) const;
|
||||
|
||||
// SPECIAL: Generate N-body phase space using Kopylov algorithm
|
||||
void FillUsingKopylov(G4double initialMass,
|
||||
const std::vector<G4double>& masses,
|
||||
std::vector<G4LorentzVector>& finalState);
|
||||
|
||||
G4double BetaKopylov(G4int K) const; // Copied from G4HadPhaseSpaceKopylov
|
||||
|
||||
private:
|
||||
const G4VMultiBodyMomDst* momDist; // Buffers for selected distributions
|
||||
const G4VTwoBodyAngDst* angDist; // Will be NULL for 3+body channels
|
||||
|
||||
std::vector<G4int> kinds; // Copy of particle_kinds list
|
||||
G4int multiplicity; // Final state size, for convenience
|
||||
G4double bullet_ekin; // Kinematics needed for distributions
|
||||
G4LorentzConvertor toSCM; // Handles complex rotations/transforms
|
||||
|
||||
std::vector<G4double> modules; // Buffers for generating momenta
|
||||
G4ThreeVector mom;
|
||||
|
||||
static const G4double maxCosTheta; // Cut for valid polar angle generation
|
||||
static const G4double oneOverE; // Numeric value of 1/e for calculations
|
||||
static const G4double small; // Cut for momentum/kinematics
|
||||
static const G4int itry_max; // Maximum number of generation attempts
|
||||
};
|
||||
|
||||
#endif /* G4CascadeFinalStateAlgorithm_hh */
|
||||
+24
-25
@@ -23,36 +23,35 @@
|
||||
// * acceptance of all terms of the Geant4 Software license. *
|
||||
// ********************************************************************
|
||||
//
|
||||
// $Id$
|
||||
// Author: Michael Kelsey (SLAC)
|
||||
// Date: 15 April 2013
|
||||
//
|
||||
// Description: Subclass of models/util G4HadDecayGenerator to support
|
||||
// production of two-body and three-body final state momenta,
|
||||
// using interaction-specific distributions.
|
||||
//
|
||||
// Implementation of the HETC88 code into Geant4.
|
||||
// Evaporation and De-excitation parts
|
||||
// T. Lampen, Helsinki Institute of Physics, May-2000
|
||||
|
||||
#ifndef G4BEChargedChannel_h
|
||||
#define G4BEChargedChannel_h 1
|
||||
#ifndef G4CascadeFinalStateGenerator_hh
|
||||
#define G4CascadeFinalStateGenerator_hh 1
|
||||
|
||||
#include "globals.hh"
|
||||
#include "G4BertiniEvaporationChannel.hh"
|
||||
#include "Randomize.hh"
|
||||
#include "G4HadDecayGenerator.hh"
|
||||
#include <vector>
|
||||
|
||||
class G4BEChargedChannel : public G4BertiniEvaporationChannel
|
||||
{
|
||||
class G4InuclElementaryParticle;
|
||||
class G4CascadeFinalStateAlgorithm;
|
||||
|
||||
|
||||
class G4CascadeFinalStateGenerator : public G4HadDecayGenerator {
|
||||
public:
|
||||
G4BEChargedChannel();
|
||||
virtual ~G4BEChargedChannel();
|
||||
|
||||
virtual void calculateProbability();
|
||||
virtual G4DynamicParticle * emit() = 0;
|
||||
virtual G4double coulombFactor() = 0;
|
||||
G4double coulombFactorForProton();
|
||||
G4double qmFactorForProton();
|
||||
G4double qmFactorForAlpha();
|
||||
G4double sampleKineticEnergy();
|
||||
|
||||
protected:
|
||||
G4double A;
|
||||
G4double spin;
|
||||
G4CascadeFinalStateGenerator();
|
||||
virtual ~G4CascadeFinalStateGenerator();
|
||||
|
||||
// Configure algorithm (distributions) based on interaction
|
||||
void Configure(G4InuclElementaryParticle* bullet,
|
||||
G4InuclElementaryParticle* target,
|
||||
const std::vector<G4int>& particle_kinds);
|
||||
};
|
||||
|
||||
|
||||
#endif
|
||||
#endif /* G4CascadeFinalStateGenerator_hh */
|
||||
@@ -23,7 +23,7 @@
|
||||
// * acceptance of all terms of the Geant4 Software license. *
|
||||
// ********************************************************************
|
||||
//
|
||||
// $Id$
|
||||
// $Id: G4CascadeFunctions.hh 67796 2013-03-08 06:18:39Z mkelsey $
|
||||
//
|
||||
// 20100407 M. Kelsey -- Return particle types std::vector<> by const ref,
|
||||
// using a static variable in the function as a buffer.
|
||||
|
||||
@@ -25,7 +25,7 @@
|
||||
//
|
||||
#ifndef G4_CASCADE_FUNCTIONS_ICC
|
||||
#define G4_CASCADE_FUNCTIONS_ICC
|
||||
// $Id$
|
||||
// $Id: G4CascadeFunctions.icc 67796 2013-03-08 06:18:39Z mkelsey $
|
||||
//
|
||||
// 20100512 M. Kelsey -- Pass std::vector<> buffer as argument to
|
||||
// getOutgoingPartTypes().
|
||||
|
||||
@@ -23,7 +23,7 @@
|
||||
// * acceptance of all terms of the Geant4 Software license. *
|
||||
// ********************************************************************
|
||||
//
|
||||
// $Id: $
|
||||
// $Id: G4CascadeGamNChannel.hh 67796 2013-03-08 06:18:39Z mkelsey $
|
||||
// GEANT4 tag: $Name: not supported by cvs2svn $
|
||||
|
||||
#ifndef G4_CASCADE_GAMN_CHANNEL_HH
|
||||
@@ -35,7 +35,7 @@
|
||||
|
||||
struct G4CascadeGamNChannelData {
|
||||
typedef G4CascadeData<30,6,6,4,5,6,7,7,7> data_t;
|
||||
static data_t data;
|
||||
static const data_t data;
|
||||
};
|
||||
|
||||
typedef G4CascadeFunctions<G4CascadeGamNChannelData,G4PionNucSampler> G4CascadeGamNChannel;
|
||||
|
||||
@@ -23,7 +23,7 @@
|
||||
// * acceptance of all terms of the Geant4 Software license. *
|
||||
// ********************************************************************
|
||||
//
|
||||
// $Id: $
|
||||
// $Id: G4CascadeGamPChannel.hh 67796 2013-03-08 06:18:39Z mkelsey $
|
||||
// GEANT4 tag: $Name: not supported by cvs2svn $
|
||||
|
||||
#ifndef G4_CASCADE_GAMP_CHANNEL_HH
|
||||
@@ -35,7 +35,7 @@
|
||||
|
||||
struct G4CascadeGamPChannelData {
|
||||
typedef G4CascadeData<30,6,6,4,5,6,7,7,7> data_t;
|
||||
static data_t data;
|
||||
static const data_t data;
|
||||
};
|
||||
|
||||
typedef G4CascadeFunctions<G4CascadeGamPChannelData,G4PionNucSampler> G4CascadeGamPChannel;
|
||||
|
||||
@@ -0,0 +1,106 @@
|
||||
//
|
||||
// ********************************************************************
|
||||
// * 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. *
|
||||
// ********************************************************************
|
||||
//
|
||||
// $Id: G4CascadeHistory.hh 67796 2013-03-08 06:18:39Z mkelsey $
|
||||
//
|
||||
// G4CascadeHistory: Container to record all particles produced during
|
||||
// cascade, with daughters; printout is formatted hierarchically.
|
||||
|
||||
#ifndef G4CASCADE_HISTORY_HH
|
||||
#define G4CASCADE_HISTORY_HH
|
||||
|
||||
#include "globals.hh"
|
||||
#include "G4CascadParticle.hh"
|
||||
#include <iosfwd>
|
||||
#include <set>
|
||||
#include <vector>
|
||||
|
||||
|
||||
class G4CascadeHistory {
|
||||
public:
|
||||
G4CascadeHistory(G4int verbose=0) : verboseLevel(verbose) {;}
|
||||
~G4CascadeHistory() {;} // *** Do not want subclasses ***
|
||||
|
||||
void setVerboseLevel(G4int verbose=0) { verboseLevel = verbose; }
|
||||
|
||||
// Reset buffers for new event
|
||||
void Clear();
|
||||
|
||||
// Add particle to history list, assigning ID number (non-const input)
|
||||
G4int AddEntry(G4CascadParticle& cpart);
|
||||
|
||||
// Record full interaction vertex (non-const input)
|
||||
G4int AddVertex(G4CascadParticle& cpart, std::vector<G4CascadParticle>& daug);
|
||||
|
||||
// Discard particle reabsorbed during cascade
|
||||
void DropEntry(const G4CascadParticle& cpart);
|
||||
|
||||
// Report cascade structure hierarchically
|
||||
void Print(std::ostream& os) const;
|
||||
|
||||
protected:
|
||||
struct HistoryEntry {
|
||||
G4CascadParticle cpart;
|
||||
G4int n;
|
||||
G4int dId[10]; // Must be fixed size for allocation in vector
|
||||
|
||||
HistoryEntry() { clear(); };
|
||||
HistoryEntry(const G4CascadParticle& cp) : cpart(cp) { clear(); }
|
||||
void clear();
|
||||
};
|
||||
|
||||
// Assign ID number to particle (non-const input)
|
||||
void AssignHistoryID(G4CascadParticle& cpart);
|
||||
|
||||
// Populate list of daughters in interaction, adding them to history list
|
||||
void FillDaughters(G4int iEntry, std::vector<G4CascadParticle>& daug);
|
||||
|
||||
// Add single-line report for particle, along with daughters
|
||||
void PrintEntry(std::ostream& os, G4int iEntry) const;
|
||||
void PrintParticle(std::ostream& os, const G4CascadParticle& cpart) const;
|
||||
G4bool PrintingDone(G4int iEntry) const {
|
||||
return (entryPrinted.find(iEntry) != entryPrinted.end());
|
||||
}
|
||||
|
||||
// Derive target of cascade step from particle and daughters
|
||||
const char* GuessTarget(const HistoryEntry& entry) const;
|
||||
|
||||
G4int size() const { return (G4int)theHistory.size(); }
|
||||
|
||||
private:
|
||||
G4int verboseLevel;
|
||||
|
||||
std::vector<HistoryEntry> theHistory; // List of particles and daughters
|
||||
mutable std::set<G4int> entryPrinted; // Particle indices already reported
|
||||
|
||||
// No copying allowed
|
||||
G4CascadeHistory(const G4CascadeHistory& rhs);
|
||||
G4CascadeHistory& operator=(const G4CascadeHistory& rhs);
|
||||
};
|
||||
|
||||
// Inline reporting
|
||||
std::ostream& operator<<(std::ostream& os, const G4CascadeHistory& history);
|
||||
|
||||
#endif /* G4CASCADE_HISTORY_HH */
|
||||
@@ -23,7 +23,7 @@
|
||||
// * acceptance of all terms of the Geant4 Software license. *
|
||||
// ********************************************************************
|
||||
//
|
||||
// $Id$
|
||||
// $Id: G4CascadeInterface.hh 71938 2013-06-28 19:01:00Z mkelsey $
|
||||
// Defines an interface to Bertini (BERT) cascade
|
||||
// based on INUCL intra-nuclear transport.models
|
||||
// with bullet hadron energy ~< 10 GeV
|
||||
@@ -54,6 +54,8 @@
|
||||
// version which takes G4ParticleDefintion, a la G4VProcess.
|
||||
// 20120822 M. Kelsey -- Add function to dump user configuration settings.
|
||||
// Remove local verboseLevel; shadows base class data member.
|
||||
// 20130501 M. Kelsey -- Add static initializer to created shared objects.
|
||||
// 20130628 M. Kelsey -- Address Coverity warnings about copy operations.
|
||||
|
||||
#ifndef G4CASCADEINTERFACE_H
|
||||
#define G4CASCADEINTERFACE_H 1
|
||||
@@ -101,6 +103,9 @@ public:
|
||||
|
||||
G4bool IsApplicable(const G4ParticleDefinition* aPD) const;
|
||||
|
||||
// Used with multithreaded applications to preload shared objects
|
||||
static void Initialize();
|
||||
|
||||
// Select betweeen different post-cascade de-excitation models
|
||||
void useCascadeDeexcitation();
|
||||
void usePreCompoundDeexcitation();
|
||||
@@ -172,6 +177,11 @@ private:
|
||||
G4InuclNuclei nucleusTarget;
|
||||
|
||||
G4LorentzRotation bulletInLabFrame;
|
||||
|
||||
private:
|
||||
// Copying of modules is forbidden
|
||||
G4CascadeInterface(const G4CascadeInterface&);
|
||||
G4CascadeInterface& operator=(const G4CascadeInterface&);
|
||||
};
|
||||
|
||||
#endif // G4CASCADEINTERFACE_H
|
||||
|
||||
@@ -23,7 +23,7 @@
|
||||
// * acceptance of all terms of the Geant4 Software license. *
|
||||
// ********************************************************************
|
||||
//
|
||||
// $Id$
|
||||
// $Id: G4CascadeInterpolator.hh 66241 2012-12-13 18:34:42Z gunter $
|
||||
//
|
||||
// Author: Michael Kelsey <kelsey@slac.stanford.edu>
|
||||
//
|
||||
|
||||
@@ -25,7 +25,7 @@
|
||||
//
|
||||
#ifndef G4CASCADE_INTERPOLATOR_ICC
|
||||
#define G4CASCADE_INTERPOLATOR_ICC
|
||||
// $Id$
|
||||
// $Id: G4CascadeInterpolator.icc 71890 2013-06-27 22:14:13Z mkelsey $
|
||||
//
|
||||
// Author: Michael Kelsey <kelsey@slac.stanford.edu>
|
||||
//
|
||||
@@ -114,8 +114,8 @@ template <int NBINS>
|
||||
void G4CascadeInterpolator<NBINS>::printBins(std::ostream& os) const {
|
||||
os << " G4CascadeInterpolator<" << NBINS << "> : " << G4endl;
|
||||
for (G4int k=0; k<NBINS; k++) {
|
||||
os << " " << std::setw(5) << xBins[k];
|
||||
if ((k+1)%12 == 0) os << G4endl;
|
||||
os << " " << std::setw(6) << xBins[k];
|
||||
if ((k+1)%10 == 0) os << G4endl;
|
||||
}
|
||||
os << G4endl;
|
||||
}
|
||||
|
||||
@@ -23,7 +23,7 @@
|
||||
// * acceptance of all terms of the Geant4 Software license. *
|
||||
// ********************************************************************
|
||||
//
|
||||
// $Id$
|
||||
// $Id: G4CascadeKminusNChannel.hh 67796 2013-03-08 06:18:39Z mkelsey $
|
||||
//
|
||||
// 20100507 M. Kelsey -- Remove redundant total-bins template argument
|
||||
// 20100510 M. Kelsey -- Add initial "31" template arg. Add G4CascSampler
|
||||
@@ -39,7 +39,7 @@
|
||||
|
||||
struct G4CascadeKminusNChannelData {
|
||||
typedef G4CascadeData<31,5,15,28,42,20,11> data_t;
|
||||
static data_t data;
|
||||
static const data_t data;
|
||||
};
|
||||
|
||||
typedef G4CascadeFunctions<G4CascadeKminusNChannelData,G4KaonHypSampler> G4CascadeKminusNChannel;
|
||||
|
||||
@@ -23,7 +23,7 @@
|
||||
// * acceptance of all terms of the Geant4 Software license. *
|
||||
// ********************************************************************
|
||||
//
|
||||
// $Id$
|
||||
// $Id: G4CascadeKminusPChannel.hh 67796 2013-03-08 06:18:39Z mkelsey $
|
||||
//
|
||||
// 20100507 M. Kelsey -- Remove redundant total-bins template argument
|
||||
// 20100510 M. Kelsey -- Add initial "31" template arg. Add G4CascSampler
|
||||
@@ -39,7 +39,7 @@
|
||||
|
||||
struct G4CascadeKminusPChannelData {
|
||||
typedef G4CascadeData<31,8,20,34,48,22,16> data_t;
|
||||
static data_t data;
|
||||
static const data_t data;
|
||||
};
|
||||
|
||||
typedef G4CascadeFunctions<G4CascadeKminusPChannelData,G4KaonHypSampler> G4CascadeKminusPChannel;
|
||||
|
||||
@@ -23,7 +23,7 @@
|
||||
// * acceptance of all terms of the Geant4 Software license. *
|
||||
// ********************************************************************
|
||||
//
|
||||
// $Id$
|
||||
// $Id: G4CascadeKplusNChannel.hh 67796 2013-03-08 06:18:39Z mkelsey $
|
||||
//
|
||||
// 20100507 M. Kelsey -- Remove redundant total-bins template argument
|
||||
// 20100510 M. Kelsey -- Add initial "31" template arg. Add G4CascSampler
|
||||
@@ -39,7 +39,7 @@
|
||||
|
||||
struct G4CascadeKplusNChannelData {
|
||||
typedef G4CascadeData<31,2,5,13,22,32,41> data_t;
|
||||
static data_t data;
|
||||
static const data_t data;
|
||||
};
|
||||
|
||||
typedef G4CascadeFunctions<G4CascadeKplusNChannelData,G4KaonHypSampler> G4CascadeKplusNChannel;
|
||||
|
||||
@@ -23,7 +23,7 @@
|
||||
// * acceptance of all terms of the Geant4 Software license. *
|
||||
// ********************************************************************
|
||||
//
|
||||
// $Id$
|
||||
// $Id: G4CascadeKplusPChannel.hh 67796 2013-03-08 06:18:39Z mkelsey $
|
||||
//
|
||||
// 20100507 M. Kelsey -- Remove redundant total-bins template argument
|
||||
// 20100510 M. Kelsey -- Add initial "31" template arg. Add G4CascSampler
|
||||
@@ -39,7 +39,7 @@
|
||||
|
||||
struct G4CascadeKplusPChannelData {
|
||||
typedef G4CascadeData<31,1,4,10,19,28,38> data_t;
|
||||
static data_t data;
|
||||
static const data_t data;
|
||||
};
|
||||
|
||||
typedef G4CascadeFunctions<G4CascadeKplusPChannelData,G4KaonHypSampler> G4CascadeKplusPChannel;
|
||||
|
||||
+2
-2
@@ -23,7 +23,7 @@
|
||||
// * acceptance of all terms of the Geant4 Software license. *
|
||||
// ********************************************************************
|
||||
//
|
||||
// $Id$
|
||||
// $Id: G4CascadeKzeroBarNChannel.hh 67796 2013-03-08 06:18:39Z mkelsey $
|
||||
//
|
||||
// 20100507 M. Kelsey -- Remove redundant total-bins template argument
|
||||
// 20100510 M. Kelsey -- Add initial "31" template arg. Add G4CascSampler
|
||||
@@ -39,7 +39,7 @@
|
||||
|
||||
struct G4CascadeKzeroBarNChannelData {
|
||||
typedef G4CascadeData<31,8,20,34,48,22,16> data_t;
|
||||
static data_t data;
|
||||
static const data_t data;
|
||||
};
|
||||
|
||||
typedef G4CascadeFunctions<G4CascadeKzeroBarNChannelData,G4KaonHypSampler> G4CascadeKzeroBarNChannel;
|
||||
|
||||
+2
-2
@@ -23,7 +23,7 @@
|
||||
// * acceptance of all terms of the Geant4 Software license. *
|
||||
// ********************************************************************
|
||||
//
|
||||
// $Id$
|
||||
// $Id: G4CascadeKzeroBarPChannel.hh 67796 2013-03-08 06:18:39Z mkelsey $
|
||||
//
|
||||
// 20100507 M. Kelsey -- Remove redundant total-bins template argument
|
||||
// 20100510 M. Kelsey -- Add initial "31" template arg. Add G4CascSampler
|
||||
@@ -39,7 +39,7 @@
|
||||
|
||||
struct G4CascadeKzeroBarPChannelData {
|
||||
typedef G4CascadeData<31,5,15,28,42,20,11> data_t;
|
||||
static data_t data;
|
||||
static const data_t data;
|
||||
};
|
||||
|
||||
typedef G4CascadeFunctions<G4CascadeKzeroBarPChannelData,G4KaonHypSampler> G4CascadeKzeroBarPChannel;
|
||||
|
||||
@@ -23,7 +23,7 @@
|
||||
// * acceptance of all terms of the Geant4 Software license. *
|
||||
// ********************************************************************
|
||||
//
|
||||
// $Id$
|
||||
// $Id: G4CascadeKzeroNChannel.hh 67796 2013-03-08 06:18:39Z mkelsey $
|
||||
//
|
||||
// 20100507 M. Kelsey -- Remove redundant total-bins template argument
|
||||
// 20100510 M. Kelsey -- Add initial "31" template arg. Add G4CascSampler
|
||||
@@ -39,7 +39,7 @@
|
||||
|
||||
struct G4CascadeKzeroNChannelData {
|
||||
typedef G4CascadeData<31,1,4,10,19,28,38> data_t;
|
||||
static data_t data;
|
||||
static const data_t data;
|
||||
};
|
||||
|
||||
typedef G4CascadeFunctions<G4CascadeKzeroNChannelData,G4KaonHypSampler> G4CascadeKzeroNChannel;
|
||||
|
||||
@@ -23,7 +23,7 @@
|
||||
// * acceptance of all terms of the Geant4 Software license. *
|
||||
// ********************************************************************
|
||||
//
|
||||
// $Id$
|
||||
// $Id: G4CascadeKzeroPChannel.hh 67796 2013-03-08 06:18:39Z mkelsey $
|
||||
//
|
||||
// 20100507 M. Kelsey -- Remove redundant total-bins template argument
|
||||
// 20100510 M. Kelsey -- Add initial "31" template arg. Add G4CascSampler
|
||||
@@ -39,7 +39,7 @@
|
||||
|
||||
struct G4CascadeKzeroPChannelData {
|
||||
typedef G4CascadeData<31,2,5,13,22,32,41> data_t;
|
||||
static data_t data;
|
||||
static const data_t data;
|
||||
};
|
||||
|
||||
typedef G4CascadeFunctions<G4CascadeKzeroPChannelData,G4KaonHypSampler> G4CascadeKzeroPChannel;
|
||||
|
||||
@@ -23,7 +23,7 @@
|
||||
// * acceptance of all terms of the Geant4 Software license. *
|
||||
// ********************************************************************
|
||||
//
|
||||
// $Id$
|
||||
// $Id: G4CascadeLambdaNChannel.hh 67796 2013-03-08 06:18:39Z mkelsey $
|
||||
//
|
||||
// 20100507 M. Kelsey -- Remove redundant total-bins template argument
|
||||
// 20100510 M. Kelsey -- Add initial "31" template arg. Add G4CascSampler
|
||||
@@ -39,7 +39,7 @@
|
||||
|
||||
struct G4CascadeLambdaNChannelData {
|
||||
typedef G4CascadeData<31,3,12,33,59,30,20> data_t;
|
||||
static data_t data;
|
||||
static const data_t data;
|
||||
};
|
||||
|
||||
typedef G4CascadeFunctions<G4CascadeLambdaNChannelData,G4KaonHypSampler> G4CascadeLambdaNChannel;
|
||||
|
||||
@@ -23,7 +23,7 @@
|
||||
// * acceptance of all terms of the Geant4 Software license. *
|
||||
// ********************************************************************
|
||||
//
|
||||
// $Id$
|
||||
// $Id: G4CascadeLambdaPChannel.hh 67796 2013-03-08 06:18:39Z mkelsey $
|
||||
//
|
||||
// 20100507 M. Kelsey -- Remove redundant total-bins template argument
|
||||
// 20100510 M. Kelsey -- Add initial "31" template arg. Add G4CascSampler
|
||||
@@ -39,7 +39,7 @@
|
||||
|
||||
struct G4CascadeLambdaPChannelData {
|
||||
typedef G4CascadeData<31,3,12,33,59,30,20> data_t;
|
||||
static data_t data;
|
||||
static const data_t data;
|
||||
};
|
||||
|
||||
typedef G4CascadeFunctions<G4CascadeLambdaPChannelData,G4KaonHypSampler> G4CascadeLambdaPChannel;
|
||||
|
||||
+11
-9
@@ -23,19 +23,21 @@
|
||||
// * acceptance of all terms of the Geant4 Software license. *
|
||||
// ********************************************************************
|
||||
//
|
||||
#ifndef G4BertiniHydrogenCollision_h
|
||||
#define G4BertiniHydrogenCollision_h 1
|
||||
// $Id: $
|
||||
|
||||
#include "globals.hh"
|
||||
#include "G4BertiniModel.hh"
|
||||
#ifndef G4_CASCADE_MUMINUSP_CHANNEL_HH
|
||||
#define G4_CASCADE_MUMINUSP_CHANNEL_HH
|
||||
|
||||
class G4BertiniHydrogenCollision : public G4BertiniModel {
|
||||
public:
|
||||
G4BertiniHydrogenCollision();
|
||||
~G4BertiniHydrogenCollision();
|
||||
#include "G4CascadeData.hh"
|
||||
#include "G4CascadeFunctions.hh"
|
||||
#include "G4PionNucSampler.hh"
|
||||
|
||||
private:
|
||||
struct G4CascadeMuMinusPChannelData {
|
||||
typedef G4CascadeData<30,1,1,1,1,1,1,1,1> data_t;
|
||||
static const data_t data;
|
||||
};
|
||||
|
||||
typedef G4CascadeFunctions<G4CascadeMuMinusPChannelData,G4PionNucSampler> G4CascadeMuMinusPChannel;
|
||||
|
||||
#endif
|
||||
|
||||
@@ -23,7 +23,7 @@
|
||||
// * acceptance of all terms of the Geant4 Software license. *
|
||||
// ********************************************************************
|
||||
//
|
||||
// $Id$
|
||||
// $Id: G4CascadeNNChannel.hh 67796 2013-03-08 06:18:39Z mkelsey $
|
||||
|
||||
#ifndef G4_CASCADE_NN_CHANNEL_HH
|
||||
#define G4_CASCADE_NN_CHANNEL_HH
|
||||
@@ -34,7 +34,7 @@
|
||||
|
||||
struct G4CascadeNNChannelData {
|
||||
typedef G4CascadeData<30,1,6,18,32,7,8,10,11> data_t;
|
||||
static data_t data;
|
||||
static const data_t data;
|
||||
};
|
||||
|
||||
class G4CascadeNNChannel
|
||||
|
||||
@@ -23,7 +23,7 @@
|
||||
// * acceptance of all terms of the Geant4 Software license. *
|
||||
// ********************************************************************
|
||||
//
|
||||
// $Id$
|
||||
// $Id: G4CascadeNPChannel.hh 67796 2013-03-08 06:18:39Z mkelsey $
|
||||
//
|
||||
// 20120907 M. Kelsey -- Subclass and overload findCrossSection() function.
|
||||
|
||||
@@ -36,7 +36,7 @@
|
||||
|
||||
struct G4CascadeNPChannelData {
|
||||
typedef G4CascadeData<30,1,9,22,38,7,9,10,12> data_t;
|
||||
static data_t data;
|
||||
static const data_t data;
|
||||
};
|
||||
|
||||
|
||||
|
||||
+2
-2
@@ -23,7 +23,7 @@
|
||||
// * acceptance of all terms of the Geant4 Software license. *
|
||||
// ********************************************************************
|
||||
//
|
||||
// $Id: $
|
||||
// $Id: G4CascadeOmegaMinusNChannel.hh 67796 2013-03-08 06:18:39Z mkelsey $
|
||||
// GEANT4 tag: $Name: not supported by cvs2svn $
|
||||
//
|
||||
// Author: D.H. Wright (SLAC)
|
||||
@@ -42,7 +42,7 @@
|
||||
|
||||
struct G4CascadeOmegaMinusNChannelData {
|
||||
typedef G4CascadeData<31,4,18,55,76,20,34> data_t;
|
||||
static data_t data;
|
||||
static const data_t data;
|
||||
};
|
||||
|
||||
typedef G4CascadeFunctions<G4CascadeOmegaMinusNChannelData,G4KaonHypSampler> G4CascadeOmegaMinusNChannel;
|
||||
|
||||
+2
-2
@@ -23,7 +23,7 @@
|
||||
// * acceptance of all terms of the Geant4 Software license. *
|
||||
// ********************************************************************
|
||||
//
|
||||
// $Id: $
|
||||
// $Id: G4CascadeOmegaMinusPChannel.hh 67796 2013-03-08 06:18:39Z mkelsey $
|
||||
// GEANT4 tag: $Name: not supported by cvs2svn $
|
||||
//
|
||||
// Author: D.H. Wright (SLAC)
|
||||
@@ -42,7 +42,7 @@
|
||||
|
||||
struct G4CascadeOmegaMinusPChannelData {
|
||||
typedef G4CascadeData<31,4,18,55,76,20,34> data_t;
|
||||
static data_t data;
|
||||
static const data_t data;
|
||||
};
|
||||
|
||||
typedef G4CascadeFunctions<G4CascadeOmegaMinusPChannelData,G4KaonHypSampler> G4CascadeOmegaMinusPChannel;
|
||||
|
||||
@@ -23,7 +23,7 @@
|
||||
// * acceptance of all terms of the Geant4 Software license. *
|
||||
// ********************************************************************
|
||||
//
|
||||
// $Id$
|
||||
// $Id: G4CascadePPChannel.hh 67796 2013-03-08 06:18:39Z mkelsey $
|
||||
//
|
||||
// 20120907 M. Kelsey -- Subclass and overload findCrossSection() function.
|
||||
|
||||
@@ -36,7 +36,7 @@
|
||||
|
||||
struct G4CascadePPChannelData {
|
||||
typedef G4CascadeData<30,1,6,18,32,7,8,10,11> data_t;
|
||||
static data_t data;
|
||||
static const data_t data;
|
||||
};
|
||||
|
||||
|
||||
|
||||
+10
-1
@@ -23,9 +23,14 @@
|
||||
// * acceptance of all terms of the Geant4 Software license. *
|
||||
// ********************************************************************
|
||||
//
|
||||
// G4CascadeParamMessenger.hh
|
||||
// $Id: G4CascadeParamMessenger.hh 72016 2013-07-03 16:24:15Z mkelsey $
|
||||
// Define simple UI commands as alternative to environment variables
|
||||
//
|
||||
// 20130304 M. Kelsey -- Add flag to collect and display cascade structure
|
||||
// 20130621 M. Kelsey -- Add flag for CHECK_ECONS, replacing #ifdef's; add
|
||||
// flag to use three-body momentum parametrizations
|
||||
// 20130703 M. Kelsey -- Add flag for USE_PHASESPACE
|
||||
|
||||
#ifndef G4CascadeParamMessenger_hh
|
||||
#define G4CascadeParamMessenger_hh
|
||||
|
||||
@@ -63,8 +68,12 @@ private:
|
||||
|
||||
G4UIcmdWithAnInteger* verboseCmd;
|
||||
G4UIcmdWithoutParameter* reportCmd;
|
||||
G4UIcmdWithABool* balanceCmd;
|
||||
G4UIcmdWithABool* usePreCoCmd;
|
||||
G4UIcmdWithABool* doCoalCmd;
|
||||
G4UIcmdWithABool* historyCmd;
|
||||
G4UIcmdWithABool* use3BodyCmd;
|
||||
G4UIcmdWithABool* usePSCmd;
|
||||
G4UIcmdWithAString* randomFileCmd;
|
||||
G4UIcmdWithABool* nucUseBestCmd;
|
||||
G4UIcmdWithADouble* nucRad2parCmd;
|
||||
|
||||
@@ -23,10 +23,14 @@
|
||||
// * acceptance of all terms of the Geant4 Software license. *
|
||||
// ********************************************************************
|
||||
//
|
||||
// G4CascadeParameters.hh
|
||||
// $Id: G4CascadeParameters.hh 72016 2013-07-03 16:24:15Z mkelsey $
|
||||
// Encapsulate all user-configurable parameters with associated envvars
|
||||
//
|
||||
// 20120912 M. Kelsey -- Add interface to support UI commands
|
||||
// 20130304 M. Kelsey -- Add flag to collect and display cascade structure
|
||||
// 20130308 M. Kelsey -- Add flag to use separate 3-body momentum generators
|
||||
// 20130421 M. Kelsey -- Add flag for CHECK_ECONS, replacing #ifdef's
|
||||
// 20130702 M. Kelsey -- Add flag to use N-body phase-space generator
|
||||
|
||||
#ifndef G4CascadeParameters_hh
|
||||
#define G4CascadeParameters_hh 1
|
||||
@@ -44,8 +48,12 @@ public:
|
||||
|
||||
// Top-level configuration flags
|
||||
static G4int verbose() { return Instance()->VERBOSE_LEVEL; }
|
||||
static G4bool checkConservation() { return Instance()->CHECK_ECONS; }
|
||||
static G4bool usePreCompound() { return Instance()->USE_PRECOMPOUND; }
|
||||
static G4bool doCoalescence() { return Instance()->DO_COALESCENCE; }
|
||||
static G4bool showHistory() { return Instance()->SHOW_HISTORY; }
|
||||
static G4bool use3BodyMom() { return Instance()->USE_3BODYMOM; }
|
||||
static G4bool usePhaseSpace() { return Instance()->USE_PHASESPACE; }
|
||||
static const G4String& randomFile() { return Instance()->RANDOM_FILE; }
|
||||
|
||||
// Nuclear structure parameters
|
||||
@@ -67,8 +75,12 @@ public:
|
||||
|
||||
private: // Environment variable values, null pointers mean not set
|
||||
const char* G4CASCADE_VERBOSE;
|
||||
const char* G4CASCADE_CHECK_ECONS;
|
||||
const char* G4CASCADE_USE_PRECOMPOUND;
|
||||
const char* G4CASCADE_DO_COALESCENCE;
|
||||
const char* G4CASCADE_SHOW_HISTORY;
|
||||
const char* G4CASCADE_USE_3BODYMOM;
|
||||
const char* G4CASCADE_USE_PHASESPACE;
|
||||
const char* G4CASCADE_RANDOM_FILE;
|
||||
const char* G4NUCMODEL_USE_BEST;
|
||||
const char* G4NUCMODEL_RAD_2PAR;
|
||||
@@ -86,8 +98,12 @@ private: // Environment variable values, null pointers mean not set
|
||||
void Initialize(); // Fill parameter values from envvar strings
|
||||
|
||||
G4int VERBOSE_LEVEL; // Top-level configuration flags
|
||||
G4bool CHECK_ECONS;
|
||||
G4bool USE_PRECOMPOUND;
|
||||
G4bool DO_COALESCENCE;
|
||||
G4bool SHOW_HISTORY;
|
||||
G4bool USE_3BODYMOM;
|
||||
G4bool USE_PHASESPACE;
|
||||
G4String RANDOM_FILE;
|
||||
|
||||
G4bool BEST_PAR; // Nuclear structure parameters
|
||||
|
||||
+2
-2
@@ -23,7 +23,7 @@
|
||||
// * acceptance of all terms of the Geant4 Software license. *
|
||||
// ********************************************************************
|
||||
//
|
||||
// $Id$
|
||||
// $Id: G4CascadePiMinusNChannel.hh 67796 2013-03-08 06:18:39Z mkelsey $
|
||||
|
||||
#ifndef G4_CASCADE_PIMINUSN_CHANNEL_HH
|
||||
#define G4_CASCADE_PIMINUSN_CHANNEL_HH
|
||||
@@ -34,7 +34,7 @@
|
||||
|
||||
struct G4CascadePiMinusNChannelData {
|
||||
typedef G4CascadeData<30,2,7,15,24,5,6,7,8> data_t;
|
||||
static data_t data;
|
||||
static const data_t data;
|
||||
};
|
||||
|
||||
typedef G4CascadeFunctions<G4CascadePiMinusNChannelData,G4PionNucSampler> G4CascadePiMinusNChannel;
|
||||
|
||||
+2
-2
@@ -23,7 +23,7 @@
|
||||
// * acceptance of all terms of the Geant4 Software license. *
|
||||
// ********************************************************************
|
||||
//
|
||||
// $Id$
|
||||
// $Id: G4CascadePiMinusPChannel.hh 67796 2013-03-08 06:18:39Z mkelsey $
|
||||
|
||||
#ifndef G4_CASCADE_PIMINUSP_CHANNEL_HH
|
||||
#define G4_CASCADE_PIMINUSP_CHANNEL_HH
|
||||
@@ -34,7 +34,7 @@
|
||||
|
||||
struct G4CascadePiMinusPChannelData {
|
||||
typedef G4CascadeData<30,5,13,22,31,6,7,8,9> data_t;
|
||||
static data_t data;
|
||||
static const data_t data;
|
||||
};
|
||||
|
||||
typedef G4CascadeFunctions<G4CascadePiMinusPChannelData,G4PionNucSampler> G4CascadePiMinusPChannel;
|
||||
|
||||
@@ -23,7 +23,7 @@
|
||||
// * acceptance of all terms of the Geant4 Software license. *
|
||||
// ********************************************************************
|
||||
//
|
||||
// $Id$
|
||||
// $Id: G4CascadePiPlusNChannel.hh 67796 2013-03-08 06:18:39Z mkelsey $
|
||||
|
||||
#ifndef G4_CASCADE_PIPLUSN_CHANNEL_HH
|
||||
#define G4_CASCADE_PIPLUSN_CHANNEL_HH
|
||||
@@ -34,7 +34,7 @@
|
||||
|
||||
struct G4CascadePiPlusNChannelData {
|
||||
typedef G4CascadeData<30,5,13,22,31,6,7,8,9> data_t;
|
||||
static data_t data;
|
||||
static const data_t data;
|
||||
};
|
||||
|
||||
typedef G4CascadeFunctions<G4CascadePiPlusNChannelData,G4PionNucSampler> G4CascadePiPlusNChannel;
|
||||
|
||||
@@ -23,7 +23,7 @@
|
||||
// * acceptance of all terms of the Geant4 Software license. *
|
||||
// ********************************************************************
|
||||
//
|
||||
// $Id$
|
||||
// $Id: G4CascadePiPlusPChannel.hh 67796 2013-03-08 06:18:39Z mkelsey $
|
||||
|
||||
#ifndef G4_CASCADE_PIPLUSP_CHANNEL_HH
|
||||
#define G4_CASCADE_PIPLUSP_CHANNEL_HH
|
||||
@@ -34,7 +34,7 @@
|
||||
|
||||
struct G4CascadePiPlusPChannelData {
|
||||
typedef G4CascadeData<30,2,7,15,24,5,6,7,8> data_t;
|
||||
static data_t data;
|
||||
static const data_t data;
|
||||
};
|
||||
|
||||
typedef G4CascadeFunctions<G4CascadePiPlusPChannelData,G4PionNucSampler> G4CascadePiPlusPChannel;
|
||||
|
||||
@@ -23,7 +23,7 @@
|
||||
// * acceptance of all terms of the Geant4 Software license. *
|
||||
// ********************************************************************
|
||||
//
|
||||
// $Id$
|
||||
// $Id: G4CascadePiZeroNChannel.hh 67796 2013-03-08 06:18:39Z mkelsey $
|
||||
|
||||
#ifndef G4_CASCADE_PIZERON_CHANNEL_HH
|
||||
#define G4_CASCADE_PIZERON_CHANNEL_HH
|
||||
@@ -34,7 +34,7 @@
|
||||
|
||||
struct G4CascadePiZeroNChannelData {
|
||||
typedef G4CascadeData<30,5,13,21,30,6,7,8,9> data_t;
|
||||
static data_t data;
|
||||
static const data_t data;
|
||||
};
|
||||
|
||||
typedef G4CascadeFunctions<G4CascadePiZeroNChannelData,G4PionNucSampler> G4CascadePiZeroNChannel;
|
||||
|
||||
@@ -23,7 +23,7 @@
|
||||
// * acceptance of all terms of the Geant4 Software license. *
|
||||
// ********************************************************************
|
||||
//
|
||||
// $Id$
|
||||
// $Id: G4CascadePiZeroPChannel.hh 67796 2013-03-08 06:18:39Z mkelsey $
|
||||
|
||||
#ifndef G4_CASCADE_PIZEROP_CHANNEL_HH
|
||||
#define G4_CASCADE_PIZEROP_CHANNEL_HH
|
||||
@@ -34,7 +34,7 @@
|
||||
|
||||
struct G4CascadePiZeroPChannelData {
|
||||
typedef G4CascadeData<30,5,13,21,30,6,7,8,9> data_t;
|
||||
static data_t data;
|
||||
static const data_t data;
|
||||
};
|
||||
|
||||
typedef G4CascadeFunctions<G4CascadePiZeroPChannelData,G4PionNucSampler> G4CascadePiZeroPChannel;
|
||||
|
||||
@@ -25,7 +25,7 @@
|
||||
//
|
||||
#ifndef G4CASCADE_RECOIL_MAKER_HH
|
||||
#define G4CASCADE_RECOIL_MAKER_HH
|
||||
// $Id$
|
||||
// $Id: G4CascadeRecoilMaker.hh 71719 2013-06-21 00:01:54Z mkelsey $
|
||||
//
|
||||
// Collects generated cascade data (using Collider::collide() interface)
|
||||
// and computes the nuclear recoil kinematics needed to balance the event.
|
||||
@@ -43,6 +43,7 @@
|
||||
// 20100924 M. Kelsey -- Add raw excitation energy (mass difference) function
|
||||
// 20110214 M. Kelsey -- Replace "model" with G4InuclParticle::Model enum
|
||||
// 20110722 M. Kelsey -- For IntraNucleiCascader, take G4CollOut as argument
|
||||
// 20130620 Address Coverity complaint about missing copy actions
|
||||
|
||||
#include <cmath>
|
||||
#include <vector>
|
||||
@@ -123,6 +124,11 @@ private:
|
||||
|
||||
G4InuclNuclei theRecoilNuclei; // Reusable buffers for recoil
|
||||
G4Fragment theRecoilFragment;
|
||||
|
||||
private:
|
||||
// Copying of modules is forbidden
|
||||
G4CascadeRecoilMaker(const G4CascadeRecoilMaker&);
|
||||
G4CascadeRecoilMaker& operator=(const G4CascadeRecoilMaker&);
|
||||
};
|
||||
|
||||
#endif /* G4CASCADE_RECOIL_MAKER_HH */
|
||||
|
||||
@@ -23,7 +23,7 @@
|
||||
// * acceptance of all terms of the Geant4 Software license. *
|
||||
// ********************************************************************
|
||||
//
|
||||
// $Id$
|
||||
// $Id: G4CascadeSampler.hh 66241 2012-12-13 18:34:42Z gunter $
|
||||
//
|
||||
// 20100506 M. Kelsey -- Move functionality of G4CascadeChannel here,
|
||||
// use as base class to G4CascadeFunctions<T>.
|
||||
|
||||
@@ -25,7 +25,7 @@
|
||||
//
|
||||
#ifndef G4CASCADE_SAMPLER_ICC
|
||||
#define G4CASCADE_SAMPLER_ICC
|
||||
// $Id$
|
||||
// $Id: G4CascadeSampler.icc 66241 2012-12-13 18:34:42Z gunter $
|
||||
//
|
||||
// 20100506 M. Kelsey -- Move functionity of G4CascadeChannel here,
|
||||
// use as base class to G4CascadeFunctions<T>.
|
||||
|
||||
+2
-2
@@ -23,7 +23,7 @@
|
||||
// * acceptance of all terms of the Geant4 Software license. *
|
||||
// ********************************************************************
|
||||
//
|
||||
// $Id$
|
||||
// $Id: G4CascadeSigmaMinusNChannel.hh 67796 2013-03-08 06:18:39Z mkelsey $
|
||||
//
|
||||
// 20100507 M. Kelsey -- Remove redundant total-bins template argument
|
||||
// 20100510 M. Kelsey -- Add initial "31" template arg. Add G4CascSampler
|
||||
@@ -39,7 +39,7 @@
|
||||
|
||||
struct G4CascadeSigmaMinusNChannelData {
|
||||
typedef G4CascadeData<31,1,6,20,42,25,17> data_t;
|
||||
static data_t data;
|
||||
static const data_t data;
|
||||
};
|
||||
|
||||
typedef G4CascadeFunctions<G4CascadeSigmaMinusNChannelData,G4KaonHypSampler> G4CascadeSigmaMinusNChannel;
|
||||
|
||||
+2
-2
@@ -23,7 +23,7 @@
|
||||
// * acceptance of all terms of the Geant4 Software license. *
|
||||
// ********************************************************************
|
||||
//
|
||||
// $Id$
|
||||
// $Id: G4CascadeSigmaMinusPChannel.hh 67796 2013-03-08 06:18:39Z mkelsey $
|
||||
//
|
||||
// 20100507 M. Kelsey -- Remove redundant total-bins template argument
|
||||
// 20100510 M. Kelsey -- Add initial "31" template arg. Add G4CascSampler
|
||||
@@ -39,7 +39,7 @@
|
||||
|
||||
struct G4CascadeSigmaMinusPChannelData {
|
||||
typedef G4CascadeData<31,3,12,33,59,30,20> data_t;
|
||||
static data_t data;
|
||||
static const data_t data;
|
||||
};
|
||||
|
||||
typedef G4CascadeFunctions<G4CascadeSigmaMinusPChannelData,G4KaonHypSampler> G4CascadeSigmaMinusPChannel;
|
||||
|
||||
+2
-2
@@ -23,7 +23,7 @@
|
||||
// * acceptance of all terms of the Geant4 Software license. *
|
||||
// ********************************************************************
|
||||
//
|
||||
// $Id$
|
||||
// $Id: G4CascadeSigmaPlusNChannel.hh 67796 2013-03-08 06:18:39Z mkelsey $
|
||||
//
|
||||
// 20100507 M. Kelsey -- Remove redundant total-bins template argument
|
||||
// 20100510 M. Kelsey -- Add initial "31" template arg. Add G4CascSampler
|
||||
@@ -39,7 +39,7 @@
|
||||
|
||||
struct G4CascadeSigmaPlusNChannelData {
|
||||
typedef G4CascadeData<31,3,12,33,59,30,20> data_t;
|
||||
static data_t data;
|
||||
static const data_t data;
|
||||
};
|
||||
|
||||
typedef G4CascadeFunctions<G4CascadeSigmaPlusNChannelData,G4KaonHypSampler> G4CascadeSigmaPlusNChannel;
|
||||
|
||||
+2
-2
@@ -23,7 +23,7 @@
|
||||
// * acceptance of all terms of the Geant4 Software license. *
|
||||
// ********************************************************************
|
||||
//
|
||||
// $Id$
|
||||
// $Id: G4CascadeSigmaPlusPChannel.hh 67796 2013-03-08 06:18:39Z mkelsey $
|
||||
//
|
||||
// 20100507 M. Kelsey -- Remove redundant total-bins template argument
|
||||
// 20100510 M. Kelsey -- Add initial "31" template arg. Add G4CascSampler
|
||||
@@ -39,7 +39,7 @@
|
||||
|
||||
struct G4CascadeSigmaPlusPChannelData {
|
||||
typedef G4CascadeData<31,1,6,20,42,25,17> data_t;
|
||||
static data_t data;
|
||||
static const data_t data;
|
||||
};
|
||||
|
||||
typedef G4CascadeFunctions<G4CascadeSigmaPlusPChannelData,G4KaonHypSampler> G4CascadeSigmaPlusPChannel;
|
||||
|
||||
+2
-2
@@ -23,7 +23,7 @@
|
||||
// * acceptance of all terms of the Geant4 Software license. *
|
||||
// ********************************************************************
|
||||
//
|
||||
// $Id$
|
||||
// $Id: G4CascadeSigmaZeroNChannel.hh 67796 2013-03-08 06:18:39Z mkelsey $
|
||||
//
|
||||
// 20100507 M. Kelsey -- Remove redundant total-bins template argument
|
||||
// 20100510 M. Kelsey -- Add initial "31" template arg. Add G4CascSampler
|
||||
@@ -39,7 +39,7 @@
|
||||
|
||||
struct G4CascadeSigmaZeroNChannelData {
|
||||
typedef G4CascadeData<31,3,12,33,59,30,20> data_t;
|
||||
static data_t data;
|
||||
static const data_t data;
|
||||
};
|
||||
|
||||
typedef G4CascadeFunctions<G4CascadeSigmaZeroNChannelData,G4KaonHypSampler> G4CascadeSigmaZeroNChannel;
|
||||
|
||||
+2
-2
@@ -23,7 +23,7 @@
|
||||
// * acceptance of all terms of the Geant4 Software license. *
|
||||
// ********************************************************************
|
||||
//
|
||||
// $Id$
|
||||
// $Id: G4CascadeSigmaZeroPChannel.hh 67796 2013-03-08 06:18:39Z mkelsey $
|
||||
//
|
||||
// 20100507 M. Kelsey -- Remove redundant total-bins template argument
|
||||
// 20100510 M. Kelsey -- Add initial "31" template arg. Add G4CascSampler
|
||||
@@ -39,7 +39,7 @@
|
||||
|
||||
struct G4CascadeSigmaZeroPChannelData {
|
||||
typedef G4CascadeData<31,3,12,33,59,30,20> data_t;
|
||||
static data_t data;
|
||||
static const data_t data;
|
||||
};
|
||||
|
||||
typedef G4CascadeFunctions<G4CascadeSigmaZeroPChannelData,G4KaonHypSampler> G4CascadeSigmaZeroPChannel;
|
||||
|
||||
+2
-2
@@ -23,7 +23,7 @@
|
||||
// * acceptance of all terms of the Geant4 Software license. *
|
||||
// ********************************************************************
|
||||
//
|
||||
// $Id$
|
||||
// $Id: G4CascadeXiMinusNChannel.hh 67796 2013-03-08 06:18:39Z mkelsey $
|
||||
//
|
||||
// 20100507 M. Kelsey -- Remove redundant total-bins template argument
|
||||
// 20100510 M. Kelsey -- Add initial "31" template arg. Add G4CascSampler
|
||||
@@ -39,7 +39,7 @@
|
||||
|
||||
struct G4CascadeXiMinusNChannelData {
|
||||
typedef G4CascadeData<31,3,18,53,2,2,2> data_t;
|
||||
static data_t data;
|
||||
static const data_t data;
|
||||
};
|
||||
|
||||
typedef G4CascadeFunctions<G4CascadeXiMinusNChannelData,G4KaonHypSampler> G4CascadeXiMinusNChannel;
|
||||
|
||||
+2
-2
@@ -23,7 +23,7 @@
|
||||
// * acceptance of all terms of the Geant4 Software license. *
|
||||
// ********************************************************************
|
||||
//
|
||||
// $Id$
|
||||
// $Id: G4CascadeXiMinusPChannel.hh 67796 2013-03-08 06:18:39Z mkelsey $
|
||||
//
|
||||
// 20100507 M. Kelsey -- Remove redundant total-bins template argument
|
||||
// 20100510 M. Kelsey -- Add initial "31" template arg. Add G4CascSampler
|
||||
@@ -39,7 +39,7 @@
|
||||
|
||||
struct G4CascadeXiMinusPChannelData {
|
||||
typedef G4CascadeData<31,6,24,4,4,4,4> data_t;
|
||||
static data_t data;
|
||||
static const data_t data;
|
||||
};
|
||||
|
||||
typedef G4CascadeFunctions<G4CascadeXiMinusPChannelData,G4KaonHypSampler> G4CascadeXiMinusPChannel;
|
||||
|
||||
@@ -23,7 +23,7 @@
|
||||
// * acceptance of all terms of the Geant4 Software license. *
|
||||
// ********************************************************************
|
||||
//
|
||||
// $Id$
|
||||
// $Id: G4CascadeXiZeroNChannel.hh 67796 2013-03-08 06:18:39Z mkelsey $
|
||||
//
|
||||
// 20100507 M. Kelsey -- Remove redundant total-bins template argument
|
||||
// 20100510 M. Kelsey -- Add initial "31" template arg. Add G4CascSampler
|
||||
@@ -40,7 +40,7 @@
|
||||
|
||||
struct G4CascadeXiZeroNChannelData {
|
||||
typedef G4CascadeData<31,6,24,4,4,4,4> data_t;
|
||||
static data_t data;
|
||||
static const data_t data;
|
||||
};
|
||||
|
||||
typedef G4CascadeFunctions<G4CascadeXiZeroNChannelData,G4KaonHypSampler> G4CascadeXiZeroNChannel;
|
||||
|
||||
@@ -23,7 +23,7 @@
|
||||
// * acceptance of all terms of the Geant4 Software license. *
|
||||
// ********************************************************************
|
||||
//
|
||||
// $Id$
|
||||
// $Id: G4CascadeXiZeroPChannel.hh 67796 2013-03-08 06:18:39Z mkelsey $
|
||||
//
|
||||
// 20100507 M. Kelsey -- Remove redundant total-bins template argument
|
||||
// 20100510 M. Kelsey -- Add initial "31" template arg. Add G4CascSampler
|
||||
@@ -40,7 +40,7 @@
|
||||
|
||||
struct G4CascadeXiZeroPChannelData {
|
||||
typedef G4CascadeData<31,3,18,53,2,2,2> data_t;
|
||||
static data_t data;
|
||||
static const data_t data;
|
||||
};
|
||||
|
||||
typedef G4CascadeFunctions<G4CascadeXiZeroPChannelData,G4KaonHypSampler> G4CascadeXiZeroPChannel;
|
||||
|
||||
@@ -23,7 +23,7 @@
|
||||
// * acceptance of all terms of the Geant4 Software license. *
|
||||
// ********************************************************************
|
||||
//
|
||||
// $Id$
|
||||
// $Id: G4CollisionOutput.hh 71954 2013-06-29 04:40:40Z mkelsey $
|
||||
//
|
||||
// 20100114 M. Kelsey -- Remove G4CascadeMomentum, use G4LorentzVector directly
|
||||
// 20100407 M. Kelsey -- Replace ::resize(0) with ::clear()
|
||||
@@ -44,6 +44,7 @@
|
||||
// 20110323 M. Kelsey -- Add non-const access to lists (for G4NucleiModel)
|
||||
// 20110922 M. Kelsey -- Add optional stream argument to printCollisionOutput
|
||||
// 20121002 M. Kelsey -- Add strangeness calculation
|
||||
// 20130628 M. Kelsey -- Support multiple recoil fragments (for G4Fissioner)
|
||||
|
||||
#ifndef G4COLLISION_OUTPUT_HH
|
||||
#define G4COLLISION_OUTPUT_HH
|
||||
@@ -93,15 +94,15 @@ public:
|
||||
|
||||
void addOutgoingParticles(const G4ReactionProductVector* rproducts);
|
||||
|
||||
// Special buffer for initial, possible unstable fragment from cascade
|
||||
// Special buffer for initial, possible unstable fragments from cascade
|
||||
void addRecoilFragment(const G4Fragment* aFragment) {
|
||||
if (aFragment) addRecoilFragment(*aFragment);
|
||||
}
|
||||
|
||||
void addRecoilFragment(const G4Fragment& aFragment) {
|
||||
theRecoilFragment = aFragment;
|
||||
recoilFragments.push_back(aFragment);
|
||||
}
|
||||
|
||||
|
||||
// ===== Remove contents of lists, by index, reference or value =====
|
||||
|
||||
void removeOutgoingParticle(G4int index);
|
||||
@@ -116,7 +117,7 @@ public:
|
||||
if (nuclei) removeOutgoingNucleus(*nuclei);
|
||||
}
|
||||
|
||||
void removeRecoilFragment(); // There is only one fragment
|
||||
void removeRecoilFragment(G4int index=-1); // No argument removes all
|
||||
|
||||
// ===== Access contents of lists =====
|
||||
|
||||
@@ -138,9 +139,15 @@ public:
|
||||
|
||||
std::vector<G4InuclNuclei>& getOutgoingNuclei() { return outgoingNuclei; };
|
||||
|
||||
const G4Fragment& getRecoilFragment() const { return theRecoilFragment; }
|
||||
G4int numberOfFragments() const { return recoilFragments.size(); }
|
||||
|
||||
G4Fragment& getRecoilFragment() { return theRecoilFragment; }
|
||||
const G4Fragment& getRecoilFragment(G4int index=0) const;
|
||||
|
||||
const std::vector<G4Fragment>& getRecoilFragments() const {
|
||||
return recoilFragments;
|
||||
};
|
||||
|
||||
std::vector<G4Fragment>& getRecoilFragments() { return recoilFragments; };
|
||||
|
||||
// ===== Get event totals for conservation checking, recoil, etc. ======
|
||||
|
||||
@@ -170,7 +177,8 @@ private:
|
||||
|
||||
std::vector<G4InuclElementaryParticle> outgoingParticles;
|
||||
std::vector<G4InuclNuclei> outgoingNuclei;
|
||||
G4Fragment theRecoilFragment;
|
||||
std::vector<G4Fragment> recoilFragments;
|
||||
static const G4Fragment emptyFragment; // To return if list empty
|
||||
|
||||
G4double eex_rest; // Used by setOnShell() for kinematics
|
||||
|
||||
|
||||
@@ -23,7 +23,7 @@
|
||||
// * acceptance of all terms of the Geant4 Software license. *
|
||||
// ********************************************************************
|
||||
//
|
||||
// $Id$
|
||||
// $Id: G4Dineutron.hh 69389 2013-05-02 15:54:09Z mkelsey $
|
||||
//
|
||||
// ------------------------------------------------------------
|
||||
// Bertini Cascade dineutron class header file
|
||||
@@ -32,6 +32,7 @@
|
||||
// 17 Nov 2009: Michael Kelsey
|
||||
// 06 Apr 2010: Reset theInstance in dtor, implement ctor in .cc.
|
||||
// 13 Apr 2010: Per Kurashige, inherit from G4VShortLivedParticle.
|
||||
// 01 May 2013: Remove G4ThreadLocal from static pointer.
|
||||
// ----------------------------------------------------------------
|
||||
|
||||
#ifndef G4DINEUTRON_HH
|
||||
|
||||
@@ -23,7 +23,7 @@
|
||||
// * acceptance of all terms of the Geant4 Software license. *
|
||||
// ********************************************************************
|
||||
//
|
||||
// $Id$
|
||||
// $Id: G4Diproton.hh 69389 2013-05-02 15:54:09Z mkelsey $
|
||||
//
|
||||
// ------------------------------------------------------------
|
||||
// Bertini Cascade diproton class header file
|
||||
@@ -32,6 +32,7 @@
|
||||
// 17 Nov 2009: Michael Kelsey
|
||||
// 06 Apr 2010: Reset theInstance in dtor, implement ctor in .cc.
|
||||
// 13 Apr 2010: Per Kurashige, inherit from G4VShortLivedParticle.
|
||||
// 01 May 2013: Remove G4ThreadLocal from static pointer.
|
||||
// ----------------------------------------------------------------
|
||||
|
||||
#ifndef G4DIPROTON_HH
|
||||
|
||||
+28
-34
@@ -23,7 +23,7 @@
|
||||
// * acceptance of all terms of the Geant4 Software license. *
|
||||
// ********************************************************************
|
||||
//
|
||||
// $Id$
|
||||
// $Id: G4ElementaryParticleCollider.hh 71940 2013-06-28 19:04:44Z mkelsey $
|
||||
//
|
||||
// 20100114 M. Kelsey -- Remove G4CascadeMomentum, use G4LorentzVector directly
|
||||
// 20100315 M. Kelsey -- Remove "using" directive and unnecessary #includes.
|
||||
@@ -43,17 +43,29 @@
|
||||
// 20100726 M. Kelsey -- Move remaining std::vector<> buffers here
|
||||
// 20100804 M. Kelsey -- Add printFinalStateTables() function.
|
||||
// 20110923 M. Kelsey -- Add optional stream& to printFinalStateTables().
|
||||
// 20130129 M. Kelsey -- Add static arrays and interpolators for two-body
|
||||
// angular distributions (addresses MT thread-local issue)
|
||||
// 20130131 D. Wright -- Use new *AngDst classes for gamma-N two-body
|
||||
// 20130220 M. Kelsey -- Replace two-body angular code with new *AngDst classes
|
||||
// 20130221 M. Kelsey -- Move two-body angular dist classes to factory
|
||||
// 20130306 M. Kelsey -- Move printFinalStateTables() to table factory
|
||||
// 20130307 M. Kelsey -- Reverse order of dimensions for rmn array
|
||||
// 20130422 M. Kelsey -- Move kinematics to G4CascadeFinalStateAlgorithm
|
||||
// 20130508 D. Wright -- Add muon capture, with absorption on quasideuterons
|
||||
// 20130620 Address Coverity complaint about missing copy actions
|
||||
// 20130628 Add function to split dibaryon into particle_kinds list
|
||||
|
||||
#ifndef G4ELEMENTARY_PARTICLE_COLLIDER_HH
|
||||
#define G4ELEMENTARY_PARTICLE_COLLIDER_HH
|
||||
|
||||
#include "G4CascadeColliderBase.hh"
|
||||
#include "G4CascadeFinalStateGenerator.hh"
|
||||
#include "G4CascadeInterpolator.hh"
|
||||
#include "G4InuclElementaryParticle.hh"
|
||||
#include "G4LorentzVector.hh"
|
||||
#include <iosfwd>
|
||||
#include <vector>
|
||||
|
||||
class G4LorentzConvertor;
|
||||
class G4CollisionOutput;
|
||||
|
||||
|
||||
@@ -66,59 +78,41 @@ public:
|
||||
G4CollisionOutput& output);
|
||||
|
||||
private:
|
||||
void initializeArrays();
|
||||
|
||||
G4int generateMultiplicity(G4int is, G4double ekin) const;
|
||||
|
||||
void generateOutgoingPartTypes(G4int is, G4int mult, G4double ekin);
|
||||
|
||||
void generateSCMfinalState(G4double ekin, G4double etot_scm, G4double pscm,
|
||||
void generateSCMfinalState(G4double ekin, G4double etot_scm,
|
||||
G4InuclElementaryParticle* particle1,
|
||||
G4InuclElementaryParticle* particle2,
|
||||
G4LorentzConvertor* toSCM);
|
||||
G4InuclElementaryParticle* particle2);
|
||||
|
||||
void generateSCMpionAbsorption(G4double etot_scm,
|
||||
G4InuclElementaryParticle* particle1,
|
||||
G4InuclElementaryParticle* particle2);
|
||||
|
||||
void generateMomModules(G4int mult, G4int is, G4double ekin,
|
||||
G4double etot_cm);
|
||||
void generateSCMmuonAbsorption(G4double etot_scm,
|
||||
G4InuclElementaryParticle* particle1,
|
||||
G4InuclElementaryParticle* particle2);
|
||||
|
||||
// Samples the CM momentum for elastic and charge exchange scattering
|
||||
//
|
||||
G4LorentzVector
|
||||
sampleCMmomentumFor2to2(G4int is, G4int kw, G4double ekin,
|
||||
G4double pscm) const;
|
||||
G4bool splitQuasiDeuteron(G4int qdtype); // Fill kinds with NN components
|
||||
|
||||
void fillOutgoingMasses(); // Fill mass arrays from particle types
|
||||
|
||||
// Samples cos(theta) in the CM for elastic and charge exchange scattering
|
||||
//
|
||||
G4double sampleCMcosFor2to2(G4double pscm, G4double pFrac,
|
||||
G4double pA, G4double pC, G4double pCos) const;
|
||||
|
||||
|
||||
G4double getMomModuleFor2toMany(G4int is, G4int mult, G4int knd,
|
||||
G4double ekin) const;
|
||||
|
||||
|
||||
G4bool satisfyTriangle(const std::vector<G4double>& modules) const;
|
||||
|
||||
G4LorentzVector
|
||||
particleSCMmomentumFor2to3(G4int is, G4int knd, G4double ekin,
|
||||
G4double pmod) const;
|
||||
|
||||
void printFinalStateTables(std::ostream& os=G4cout) const;
|
||||
// Utility class to generate final-state kinematics
|
||||
G4CascadeFinalStateGenerator fsGenerator;
|
||||
|
||||
// Internal buffers for lists of secondaries
|
||||
std::vector<G4InuclElementaryParticle> particles;
|
||||
std::vector<G4LorentzVector> scm_momentums;
|
||||
std::vector<G4double> modules;
|
||||
std::vector<G4double> masses;
|
||||
std::vector<G4double> masses2;
|
||||
std::vector<G4int> particle_kinds;
|
||||
|
||||
// Parameter arrays
|
||||
static const G4double rmn[14][10][2];
|
||||
static const G4double abn[4][4][4];
|
||||
private:
|
||||
// Copying of modules is forbidden
|
||||
G4ElementaryParticleCollider(const G4ElementaryParticleCollider&);
|
||||
G4ElementaryParticleCollider& operator=(const G4ElementaryParticleCollider&);
|
||||
};
|
||||
|
||||
#endif /* G4ELEMENTARY_PARTICLE_COLLIDER_HH */
|
||||
|
||||
+30
-14
@@ -23,7 +23,7 @@
|
||||
// * acceptance of all terms of the Geant4 Software license. *
|
||||
// ********************************************************************
|
||||
//
|
||||
// $Id$
|
||||
// $Id: G4EquilibriumEvaporator.hh 71942 2013-06-28 19:08:11Z mkelsey $
|
||||
//
|
||||
// 20100413 M. Kelsey -- Pass G4CollisionOutput by ref to ::collide()
|
||||
// 20100517 M. Kelsey -- Inherit from common base class, make other colliders
|
||||
@@ -35,39 +35,47 @@
|
||||
// 20110801 M. Kelsey -- Move "parms" buffer to data member, allocate in
|
||||
// constructor.
|
||||
// 20110809 M. Kelsey -- Move "foutput" buffer to data member
|
||||
// 20130129 M. Kelsey -- Move QF interpolation to global statics for
|
||||
// multi-threaded shared memory.
|
||||
// 20130620 Address Coverity complaint about missing copy actions
|
||||
// 20130621 Follow base class change to explosion() reference interface
|
||||
// 20130622 Inherit from G4CascadeDeexciteBase, move to deExcite() interface
|
||||
// with G4Fragment
|
||||
// 20130808 Use new object-version of paraMaker, for thread safety
|
||||
// 20131001 Move QFinterpolation to data member to be thread local (not shared)
|
||||
|
||||
#ifndef G4EQUILIBRIUM_EVAPORATOR_HH
|
||||
#define G4EQUILIBRIUM_EVAPORATOR_HH
|
||||
|
||||
#include "G4CascadeColliderBase.hh"
|
||||
#include "G4CascadeDeexciteBase.hh"
|
||||
#include "G4CascadeInterpolator.hh"
|
||||
#include "G4CollisionOutput.hh"
|
||||
#include "G4Fissioner.hh"
|
||||
#include "G4BigBanger.hh"
|
||||
#include "G4InuclSpecialFunctions.hh"
|
||||
|
||||
class G4InuclParticle;
|
||||
|
||||
class G4EquilibriumEvaporator : public G4CascadeColliderBase {
|
||||
class G4EquilibriumEvaporator : public G4CascadeDeexciteBase {
|
||||
public:
|
||||
G4EquilibriumEvaporator();
|
||||
virtual ~G4EquilibriumEvaporator();
|
||||
|
||||
void collide(G4InuclParticle* bullet, G4InuclParticle* target,
|
||||
G4CollisionOutput& output);
|
||||
virtual void setVerboseLevel(G4int verbose);
|
||||
|
||||
virtual void deExcite(const G4Fragment& target, G4CollisionOutput& output);
|
||||
|
||||
private:
|
||||
// Replace base class verision
|
||||
// Replace base class verision with more complex conditions
|
||||
virtual G4bool explosion(G4int a, G4int z, G4double e) const;
|
||||
|
||||
// FIXME: Need to redeclare and call through base-class polymorphisms
|
||||
virtual G4bool explosion(G4InuclNuclei* target) const {
|
||||
return G4CascadeColliderBase::explosion(target);
|
||||
}
|
||||
|
||||
virtual G4bool explosion(G4Fragment* target) const {
|
||||
return G4CascadeColliderBase::explosion(target);
|
||||
// NOTE: Must redeclare base-class polymorphisms
|
||||
virtual G4bool explosion(const G4Fragment& target) const {
|
||||
return G4CascadeDeexciteBase::explosion(target);
|
||||
}
|
||||
|
||||
G4bool goodRemnant(G4int a, G4int z) const;
|
||||
|
||||
G4InuclSpecialFunctions::paraMaker theParaMaker;
|
||||
G4double getE0(G4int A) const;
|
||||
G4double getPARLEVDEN(G4int A, G4int Z) const;
|
||||
G4double getQF(G4double x, G4double x2, G4int a, G4int z, G4double e) const;
|
||||
@@ -77,8 +85,16 @@ private:
|
||||
std::pair<std::vector<G4double>, std::vector<G4double> > parms;
|
||||
G4CollisionOutput fission_output;
|
||||
|
||||
// Interpolation object for QF
|
||||
G4CascadeInterpolator<72> QFinterp;
|
||||
|
||||
G4Fissioner theFissioner;
|
||||
G4BigBanger theBigBanger;
|
||||
|
||||
private:
|
||||
// Copying of modules is forbidden
|
||||
G4EquilibriumEvaporator(const G4EquilibriumEvaporator&);
|
||||
G4EquilibriumEvaporator& operator=(const G4EquilibriumEvaporator&);
|
||||
};
|
||||
|
||||
#endif /* G4EQUILIBRIUM_EVAPORATOR_HH */
|
||||
|
||||
+12
-5
@@ -23,7 +23,7 @@
|
||||
// * acceptance of all terms of the Geant4 Software license. *
|
||||
// ********************************************************************
|
||||
//
|
||||
// $Id$
|
||||
// $Id: G4EvaporationInuclCollider.hh 71942 2013-06-28 19:08:11Z mkelsey $
|
||||
//
|
||||
// 20100315 M. Kelsey -- Remove "using" directive and unnecessary #includes.
|
||||
// 20100413 M. Kelsey -- Pass G4CollisionOutput by ref to ::collide()
|
||||
@@ -31,27 +31,34 @@
|
||||
// simple data members
|
||||
// 20100714 M. Kelsey -- Switch to new G4CascadeColliderBase class
|
||||
// 20110728 M. Kelsey -- Fix Coverity #23843, add destructor.
|
||||
// 20130620 Address Coverity complaint about missing copy actions
|
||||
// 20130622 Inherit from G4CascadeDeexciteBase, move to deExcite() interface
|
||||
// with G4Fragment
|
||||
|
||||
#ifndef G4EVAPORATIONINUCL_COLLIDER_HH
|
||||
#define G4EVAPORATIONINUCL_COLLIDER_HH
|
||||
|
||||
#include "G4CascadeColliderBase.hh"
|
||||
#include "G4CascadeDeexciteBase.hh"
|
||||
|
||||
class G4InuclParticle;
|
||||
class G4CollisionOutput;
|
||||
class G4EquilibriumEvaporator;
|
||||
class G4BigBanger;
|
||||
|
||||
class G4EvaporationInuclCollider : public G4CascadeColliderBase {
|
||||
class G4EvaporationInuclCollider : public G4CascadeDeexciteBase {
|
||||
public:
|
||||
G4EvaporationInuclCollider();
|
||||
~G4EvaporationInuclCollider();
|
||||
|
||||
void collide(G4InuclParticle* bullet, G4InuclParticle* target,
|
||||
G4CollisionOutput& output);
|
||||
virtual void deExcite(const G4Fragment& target, G4CollisionOutput& output);
|
||||
|
||||
private:
|
||||
G4EquilibriumEvaporator* theEquilibriumEvaporator;
|
||||
|
||||
private:
|
||||
// Copying of modules is forbidden
|
||||
G4EvaporationInuclCollider(const G4EvaporationInuclCollider&);
|
||||
G4EvaporationInuclCollider& operator=(const G4EvaporationInuclCollider&);
|
||||
};
|
||||
|
||||
#endif /* G4EVAPORATIONINUCL_COLLIDER_HH */
|
||||
|
||||
@@ -23,7 +23,7 @@
|
||||
// * acceptance of all terms of the Geant4 Software license. *
|
||||
// ********************************************************************
|
||||
//
|
||||
// $Id$
|
||||
// $Id: G4ExitonConfiguration.hh 71942 2013-06-28 19:08:11Z mkelsey $
|
||||
//
|
||||
// 20100909 Add function to reset values to zero
|
||||
// 20100924 Migrate to integer A and Z
|
||||
@@ -31,6 +31,7 @@
|
||||
// 20110922 M. Kelsey -- Replace print() with stream operator<<(), put
|
||||
// implementation into new .cc file.
|
||||
// 20121009 M. Kelsey -- Add empty() test for no excitons, fix constness
|
||||
// 20130622 M. Kelsey -- Add interface to copy data from G4Fragment
|
||||
|
||||
#ifndef G4EXITON_CONFIGURATION_HH
|
||||
#define G4EXITON_CONFIGURATION_HH
|
||||
@@ -38,6 +39,8 @@
|
||||
#include "globals.hh"
|
||||
#include <iosfwd>
|
||||
|
||||
class G4Fragment;
|
||||
|
||||
class G4ExitonConfiguration {
|
||||
public:
|
||||
G4ExitonConfiguration()
|
||||
@@ -48,6 +51,11 @@ public:
|
||||
: protonQuasiParticles(qpp), neutronQuasiParticles(qnp),
|
||||
protonHoles(qph), neutronHoles(qnh) {}
|
||||
|
||||
explicit G4ExitonConfiguration(const G4Fragment& frag)
|
||||
: protonQuasiParticles(0), neutronQuasiParticles(0),
|
||||
protonHoles(0), neutronHoles(0) { fill(frag); }
|
||||
|
||||
|
||||
void clear() {
|
||||
protonQuasiParticles = neutronQuasiParticles = 0;
|
||||
protonHoles = neutronHoles = 0;
|
||||
@@ -58,6 +66,8 @@ public:
|
||||
protonHoles==0 && neutronHoles==0);
|
||||
}
|
||||
|
||||
void fill(const G4Fragment& frag); // Initialize from G4Fragment data
|
||||
|
||||
bool operator==(const G4ExitonConfiguration& right) const {
|
||||
return ( (&right == this) ||
|
||||
(protonQuasiParticles == right.protonQuasiParticles &&
|
||||
|
||||
@@ -23,7 +23,7 @@
|
||||
// * acceptance of all terms of the Geant4 Software license. *
|
||||
// ********************************************************************
|
||||
//
|
||||
// $Id$
|
||||
// $Id: G4FissionStore.hh 66241 2012-12-13 18:34:42Z gunter $
|
||||
//
|
||||
// 20100728 Move ::addConfig() to .cc file, add setVerboseLevel(), clear()
|
||||
// 20110801 Make configuration probs a data member array, reduce memory churn
|
||||
|
||||
@@ -23,7 +23,7 @@
|
||||
// * acceptance of all terms of the Geant4 Software license. *
|
||||
// ********************************************************************
|
||||
//
|
||||
// $Id$
|
||||
// $Id: G4Fissioner.hh 71954 2013-06-29 04:40:40Z mkelsey $
|
||||
//
|
||||
// 20100315 M. Kelsey -- Remove "using" directive and unnecessary #includes.
|
||||
// 20100413 M. Kelsey -- Pass G4CollisionOutput by ref to ::collide()
|
||||
@@ -32,25 +32,27 @@
|
||||
// 20100728 M. Kelsey -- Move G4FissionStore to data member and reuse
|
||||
// 20100914 M. Kelsey -- Migrate to integer A and Z
|
||||
// 20110801 M. Kelsey -- Pass C arrays to ::potentialMinimization()
|
||||
// 20130129 M. Kelsey -- Put buffer for output nuclei here for thread-safety
|
||||
// 20130620 Address Coverity complaint about missing copy actions
|
||||
// 20130622 Inherit from G4CascadeDeexciteBase, move to deExcite() interface
|
||||
// with G4Fragment
|
||||
// 20130628 Drop local list of fragments; add directly to output
|
||||
|
||||
#ifndef G4FISSIONER_HH
|
||||
#define G4FISSIONER_HH
|
||||
|
||||
#include "G4CascadeColliderBase.hh"
|
||||
#include "G4CascadeDeexciteBase.hh"
|
||||
#include "G4FissionStore.hh"
|
||||
#include "G4InuclNuclei.hh"
|
||||
#include <vector>
|
||||
|
||||
class G4CollisionOutput;
|
||||
class G4InuclParticle;
|
||||
|
||||
|
||||
class G4Fissioner : public G4CascadeColliderBase {
|
||||
class G4Fissioner : public G4CascadeDeexciteBase {
|
||||
public:
|
||||
G4Fissioner();
|
||||
virtual ~G4Fissioner() {}
|
||||
G4Fissioner() : G4CascadeDeexciteBase("G4Fissioner") {;}
|
||||
virtual ~G4Fissioner() {;}
|
||||
|
||||
void collide(G4InuclParticle* bullet, G4InuclParticle* target,
|
||||
G4CollisionOutput& output);
|
||||
virtual void deExcite(const G4Fragment& target, G4CollisionOutput& output);
|
||||
|
||||
private:
|
||||
G4FissionStore fissionStore;
|
||||
@@ -78,6 +80,11 @@ private:
|
||||
G4double AL1[2],
|
||||
G4double BET1[2],
|
||||
G4double& R12) const;
|
||||
|
||||
private:
|
||||
// Copying of modules is forbidden
|
||||
G4Fissioner(const G4Fissioner&);
|
||||
G4Fissioner& operator=(const G4Fissioner&);
|
||||
};
|
||||
|
||||
#endif /* G4FISSIONER_HH */
|
||||
|
||||
+33
-26
@@ -23,40 +23,47 @@
|
||||
// * acceptance of all terms of the Geant4 Software license. *
|
||||
// ********************************************************************
|
||||
//
|
||||
// $Id: $
|
||||
//
|
||||
// Implementation of the HETC88 code into Geant4.
|
||||
// Evaporation and De-excitation parts
|
||||
// T. Lampen, Helsinki Institute of Physics, May-2000
|
||||
|
||||
#ifndef G4BEGammaDeexcitation_h
|
||||
#define G4BEGammaDeexcitation_h 1
|
||||
// File: G4GDecay3.hh
|
||||
// Author: Dennis Wright (SLAC)
|
||||
// Date: 19 April 2013
|
||||
//
|
||||
// Description: three-body phase space momentum generator based on
|
||||
// GDECA3 of Geant3
|
||||
//
|
||||
#ifndef G4GDecay3_h
|
||||
#define G4GDecay3_h 1
|
||||
|
||||
#include "globals.hh"
|
||||
#include "G4ThreeVector.hh"
|
||||
#include <vector>
|
||||
|
||||
class G4BEGammaDeexcitation
|
||||
{
|
||||
public:
|
||||
G4BEGammaDeexcitation();
|
||||
virtual ~G4BEGammaDeexcitation();
|
||||
|
||||
void setVerboseLevel( G4int verbose );
|
||||
class G4GDecay3 {
|
||||
|
||||
void setNucleusA( G4int inputA );
|
||||
void setNucleusZ( G4int inputZ );
|
||||
void setExcitationEnergy( G4double inputE );
|
||||
public:
|
||||
G4GDecay3() {;}
|
||||
G4GDecay3(const G4double& pMass, const G4double& dMass0,
|
||||
const G4double& dMass1, const G4double& dMass2);
|
||||
~G4GDecay3() {;}
|
||||
|
||||
std::vector<G4ThreeVector> GetThreeBodyMomenta();
|
||||
|
||||
G4DynamicParticle * emit();
|
||||
private:
|
||||
G4bool CalculateMomentumMagnitudes();
|
||||
|
||||
private:
|
||||
G4double sampleKineticEnergy();
|
||||
G4int verboseLevel;
|
||||
G4int nucleusA;
|
||||
G4int nucleusZ;
|
||||
G4double excitationEnergy;
|
||||
void isotropicCosines( G4double&,
|
||||
G4double&,
|
||||
G4double& );
|
||||
};
|
||||
G4int loopMax;
|
||||
|
||||
G4double parentMass;
|
||||
G4double mDaughter0;
|
||||
G4double mDaughter1;
|
||||
G4double mDaughter2;
|
||||
|
||||
G4double pDaughter0;
|
||||
G4double pDaughter1;
|
||||
G4double pDaughter2;
|
||||
};
|
||||
|
||||
#endif
|
||||
|
||||
@@ -0,0 +1,48 @@
|
||||
//
|
||||
// ********************************************************************
|
||||
// * 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. *
|
||||
// ********************************************************************
|
||||
//
|
||||
// $Id: G4GamP2NPipAngDst.hh 67433 2013-02-20 21:27:31Z mkelsey $
|
||||
// Author: Dennis Wright (SLAC)
|
||||
// Date: 28 January 2013
|
||||
//
|
||||
// Description: class containing numerically integrated angular distributions
|
||||
// in the CM for the gamma p -> n pi+ reaction
|
||||
//
|
||||
// 20130219 M. Kelsey: Inherit from templated base, remove ctor arguments
|
||||
|
||||
|
||||
#ifndef G4GamP2NPipAngDst_h
|
||||
#define G4GamP2NPipAngDst_h 1
|
||||
|
||||
#include "G4NumIntTwoBodyAngDst.hh"
|
||||
|
||||
|
||||
class G4GamP2NPipAngDst : public G4NumIntTwoBodyAngDst<15,19> {
|
||||
public:
|
||||
G4GamP2NPipAngDst(G4int verbose=0);
|
||||
virtual ~G4GamP2NPipAngDst() {}
|
||||
};
|
||||
|
||||
#endif
|
||||
@@ -0,0 +1,47 @@
|
||||
//
|
||||
// ********************************************************************
|
||||
// * 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. *
|
||||
// ********************************************************************
|
||||
//
|
||||
// $Id: G4GamP2PPi0AngDst.hh 67433 2013-02-20 21:27:31Z mkelsey $
|
||||
// Author: Dennis Wright (SLAC)
|
||||
// Date: 28 January 2013
|
||||
//
|
||||
// Description: class containing numerically integrated angular distributions
|
||||
// in the CM for the gamma p -> p pi0 reaction
|
||||
//
|
||||
// 20130219 M. Kelsey: Inherit from templated base, remove ctor arguments
|
||||
|
||||
#ifndef G4GamP2PPi0AngDst_h
|
||||
#define G4GamP2PPi0AngDst_h 1
|
||||
|
||||
#include "G4NumIntTwoBodyAngDst.hh"
|
||||
|
||||
|
||||
class G4GamP2PPi0AngDst : public G4NumIntTwoBodyAngDst<15,19> {
|
||||
public:
|
||||
G4GamP2PPi0AngDst(G4int verbose = 0);
|
||||
virtual ~G4GamP2PPi0AngDst() {;}
|
||||
};
|
||||
|
||||
#endif
|
||||
+13
-18
@@ -23,29 +23,24 @@
|
||||
// * acceptance of all terms of the Geant4 Software license. *
|
||||
// ********************************************************************
|
||||
//
|
||||
// $Id: G4GammaNuclAngDst.hh 67633 2013-02-27 20:38:04Z mkelsey $
|
||||
// Author: Michael Kelsey (SLAC)
|
||||
// Date: 20 February 2013
|
||||
//
|
||||
// Description: class containing parametrized angular distributions
|
||||
// in the CM for gamma - nucleon two-body scattering
|
||||
//
|
||||
// Implementation of the HETC88 code into Geant4.
|
||||
// Evaporation and De-excitation parts
|
||||
// T. Lampen, Helsinki Institute of Physics, May-2000
|
||||
|
||||
#ifndef G4BEDeuteronChannel_h
|
||||
#define G4BEDeuteronChannel_h 1
|
||||
#ifndef G4GammaNuclAngDst_h
|
||||
#define G4GammaNuclAngDst_h 1
|
||||
|
||||
#include "G4BEChargedChannel.hh"
|
||||
#include "G4ParamExpTwoBodyAngDst.hh"
|
||||
|
||||
class G4BEDeuteronChannel : public G4BEChargedChannel
|
||||
{
|
||||
|
||||
class G4GammaNuclAngDst : public G4ParamExpTwoBodyAngDst<10> {
|
||||
public:
|
||||
G4BEDeuteronChannel();
|
||||
virtual ~G4BEDeuteronChannel();
|
||||
|
||||
G4DynamicParticle * emit();
|
||||
G4double constant();
|
||||
virtual G4double coulombFactor();
|
||||
virtual G4double qmFactor( );
|
||||
|
||||
private:
|
||||
G4GammaNuclAngDst(G4int verbose = 0);
|
||||
virtual ~G4GammaNuclAngDst() {;}
|
||||
};
|
||||
|
||||
|
||||
#endif
|
||||
+14
-20
@@ -23,31 +23,25 @@
|
||||
// * acceptance of all terms of the Geant4 Software license. *
|
||||
// ********************************************************************
|
||||
//
|
||||
// $Id: G4HadNElastic1AngDst.hh 67633 2013-02-27 20:38:04Z mkelsey $
|
||||
// Author: Michael Kelsey (SLAC)
|
||||
// Date: 20 February 2013
|
||||
//
|
||||
// Description: class containing parametrized angular distributions
|
||||
// in the CM for elastic scattering of pi+p, pi0p, gammap,
|
||||
// k+p, k0bp, pi-n, pi0n, gamman, k-n, or k0n
|
||||
//
|
||||
// Implementation of the HETC88 code into Geant4.
|
||||
// Evaporation and De-excitation parts
|
||||
// T. Lampen, Helsinki Institute of Physics, May-2000
|
||||
|
||||
#ifndef G4BENeutronChannel_h
|
||||
#define G4BENeutronChannel_h 1
|
||||
#ifndef G4HadNElastic1AngDst_h
|
||||
#define G4HadNElastic1AngDst_h 1
|
||||
|
||||
#include "globals.hh"
|
||||
#include "G4BertiniEvaporationChannel.hh"
|
||||
#include "G4ParamExpTwoBodyAngDst.hh"
|
||||
|
||||
class G4BENeutronChannel : public G4BertiniEvaporationChannel
|
||||
{
|
||||
|
||||
class G4HadNElastic1AngDst : public G4ParamExpTwoBodyAngDst<10> {
|
||||
public:
|
||||
G4BENeutronChannel();
|
||||
virtual ~G4BENeutronChannel();
|
||||
|
||||
virtual void calculateProbability();
|
||||
|
||||
G4DynamicParticle * emit();
|
||||
G4double sampleKineticEnergy();
|
||||
|
||||
private:
|
||||
G4double alpha();
|
||||
G4double beta();
|
||||
G4HadNElastic1AngDst(G4int verbose = 0);
|
||||
virtual ~G4HadNElastic1AngDst() {;}
|
||||
};
|
||||
|
||||
#endif
|
||||
@@ -0,0 +1,46 @@
|
||||
//
|
||||
// ********************************************************************
|
||||
// * 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. *
|
||||
// ********************************************************************
|
||||
//
|
||||
// $Id: G4HadNElastic2AngDst.hh 67633 2013-02-27 20:38:04Z mkelsey $
|
||||
// Author: Michael Kelsey (SLAC)
|
||||
// Date: 20 February 2013
|
||||
//
|
||||
// Description: class containing parametrized angular distributions
|
||||
// in the CM for elastic scattering of pi-p, pi+n, k-p,
|
||||
// k0bn, k+n, or k0p
|
||||
|
||||
#ifndef G4HadNElastic2AngDst_h
|
||||
#define G4HadNElastic2AngDst_h 1
|
||||
|
||||
#include "G4ParamExpTwoBodyAngDst.hh"
|
||||
|
||||
|
||||
class G4HadNElastic2AngDst : public G4ParamExpTwoBodyAngDst<10> {
|
||||
public:
|
||||
G4HadNElastic2AngDst(G4int verbose = 0);
|
||||
virtual ~G4HadNElastic2AngDst() {;}
|
||||
};
|
||||
|
||||
#endif
|
||||
+13
-27
@@ -23,37 +23,23 @@
|
||||
// * acceptance of all terms of the Geant4 Software license. *
|
||||
// ********************************************************************
|
||||
//
|
||||
#ifndef G4BertiniElasticCollision_h
|
||||
#define G4BertiniElasticCollision_h 1
|
||||
// $Id$
|
||||
// Author: Michael Kelsey (SLAC)
|
||||
// Date: 22 April 2013
|
||||
//
|
||||
// Description: class containing parametrized angular distributions
|
||||
// in the CM for hadron/nucleon 3-body final states
|
||||
//
|
||||
|
||||
#include "G4BertiniModel.hh"
|
||||
#ifndef G4HadNucl3BodyAngDst_h
|
||||
#define G4HadNucl3BodyAngDst_h 1
|
||||
|
||||
class G4BertiniElasticCollision : public G4BertiniModel {
|
||||
#include "G4InuclParamAngDst.hh"
|
||||
|
||||
class G4HadNucl3BodyAngDst : public G4InuclParamAngDst {
|
||||
public:
|
||||
G4BertiniElasticCollision();
|
||||
~G4BertiniElasticCollision();
|
||||
void interpolateElasticNeutronData(G4int medium, G4int kdd, G4double e);
|
||||
void geti(G4double es, G4int npts, G4double e, G4int i);
|
||||
void scatteringWithHydrogen();
|
||||
|
||||
private:
|
||||
G4double pt[16];
|
||||
G4double col[23];
|
||||
G4HadNucl3BodyAngDst(G4int verbose = 0);
|
||||
virtual ~G4HadNucl3BodyAngDst() {;}
|
||||
};
|
||||
|
||||
#endif
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
+12
-18
@@ -23,29 +23,23 @@
|
||||
// * acceptance of all terms of the Geant4 Software license. *
|
||||
// ********************************************************************
|
||||
//
|
||||
// $Id: G4HadNucl3BodyMomDst.hh 67796 2013-03-08 06:18:39Z mkelsey $
|
||||
// Author: Michael Kelsey (SLAC)
|
||||
// Date: 7 March 2013
|
||||
//
|
||||
// Description: class containing parametrized momentum distributions
|
||||
// in the CM for hadron/nucleon 3-body final states
|
||||
//
|
||||
// Implementation of the HETC88 code into Geant4.
|
||||
// Evaporation and De-excitation parts
|
||||
// T. Lampen, Helsinki Institute of Physics, 30-May-2000
|
||||
|
||||
#ifndef G4BEProtonChannel_h
|
||||
#define G4BEProtonChannel_h 1
|
||||
#ifndef G4HadNucl3BodyMomDst_h
|
||||
#define G4HadNucl3BodyMomDst_h 1
|
||||
|
||||
#include "G4BEChargedChannel.hh"
|
||||
#include "G4InuclParamMomDst.hh"
|
||||
|
||||
class G4BEProtonChannel : public G4BEChargedChannel
|
||||
{
|
||||
class G4HadNucl3BodyMomDst : public G4InuclParamMomDst {
|
||||
public:
|
||||
G4BEProtonChannel();
|
||||
virtual ~G4BEProtonChannel();
|
||||
|
||||
G4DynamicParticle * emit();
|
||||
G4double constant();
|
||||
virtual G4double coulombFactor();
|
||||
virtual G4double qmFactor( );
|
||||
|
||||
private:
|
||||
G4HadNucl3BodyMomDst(G4int verbose = 0);
|
||||
virtual ~G4HadNucl3BodyMomDst() {;}
|
||||
};
|
||||
|
||||
|
||||
#endif
|
||||
@@ -0,0 +1,45 @@
|
||||
//
|
||||
// ********************************************************************
|
||||
// * 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. *
|
||||
// ********************************************************************
|
||||
//
|
||||
// $Id: G4HadNucl4BodyMomDst.hh 67796 2013-03-08 06:18:39Z mkelsey $
|
||||
// Author: Michael Kelsey (SLAC)
|
||||
// Date: 7 March 2013
|
||||
//
|
||||
// Description: class containing parametrized momentum distributions
|
||||
// in the CM for hadron/nucleon >= 4-body final states
|
||||
//
|
||||
|
||||
#ifndef G4HadNucl4BodyMomDst_h
|
||||
#define G4HadNucl4BodyMomDst_h 1
|
||||
|
||||
#include "G4InuclParamMomDst.hh"
|
||||
|
||||
class G4HadNucl4BodyMomDst : public G4InuclParamMomDst {
|
||||
public:
|
||||
G4HadNucl4BodyMomDst(G4int verbose = 0);
|
||||
virtual ~G4HadNucl4BodyMomDst() {;}
|
||||
};
|
||||
|
||||
#endif
|
||||
@@ -23,7 +23,7 @@
|
||||
// * acceptance of all terms of the Geant4 Software license. *
|
||||
// ********************************************************************
|
||||
//
|
||||
// $Id$
|
||||
// $Id: G4InteractionCase.hh 66241 2012-12-13 18:34:42Z gunter $
|
||||
//
|
||||
// 20100518 M. Kelsey -- Why use std::pair<> at all? Never exported; just
|
||||
// store pointers. Add clear() function. Move code from
|
||||
|
||||
@@ -23,7 +23,7 @@
|
||||
// * acceptance of all terms of the Geant4 Software license. *
|
||||
// ********************************************************************
|
||||
//
|
||||
// $Id$
|
||||
// $Id: G4IntraNucleiCascader.hh 71719 2013-06-21 00:01:54Z mkelsey $
|
||||
//
|
||||
// 20100315 M. Kelsey -- Remove "using" directory and unnecessary #includes.
|
||||
// 20100413 M. Kelsey -- Pass G4CollisionOutput by ref to ::collide()
|
||||
@@ -61,6 +61,8 @@
|
||||
// 20110801 M. Kelsey -- Add local target buffers for rescattering, to avoid
|
||||
// memory leak.
|
||||
// 20110919 M. Kelsey -- Add optional final-state clustering
|
||||
// 20130304 M. Kelsey -- Add new G4CascadeHistory for cacasde structure reporting
|
||||
// 20130620 Address Coverity complaint about missing copy actions
|
||||
|
||||
#ifndef G4INTRA_NUCLEI_CASCADER_HH
|
||||
#define G4INTRA_NUCLEI_CASCADER_HH
|
||||
@@ -72,6 +74,7 @@
|
||||
|
||||
class G4CascadParticle;
|
||||
class G4CascadeCoalescence;
|
||||
class G4CascadeHistory;
|
||||
class G4CascadeRecoilMaker;
|
||||
class G4ElementaryParticleCollider;
|
||||
class G4InuclElementaryParticle;
|
||||
@@ -133,6 +136,7 @@ private:
|
||||
G4ElementaryParticleCollider* theElementaryParticleCollider;
|
||||
G4CascadeRecoilMaker* theRecoilMaker;
|
||||
G4CascadeCoalescence* theClusterMaker;
|
||||
G4CascadeHistory* theCascadeHistory;
|
||||
|
||||
// Buffers and parameters for cascade attempts
|
||||
G4InuclNuclei* tnuclei; // Target nucleus (must be non-zero)
|
||||
@@ -153,6 +157,11 @@ private:
|
||||
G4ExitonConfiguration theExitonConfiguration;
|
||||
|
||||
std::vector<G4ThreeVector> hitNucleons; // Nucleons hit before rescatter
|
||||
|
||||
private:
|
||||
// Copying of modules is forbidden
|
||||
G4IntraNucleiCascader(const G4IntraNucleiCascader&);
|
||||
G4IntraNucleiCascader& operator=(const G4IntraNucleiCascader&);
|
||||
};
|
||||
|
||||
#endif /* G4INTRA_NUCLEI_CASCADER_HH */
|
||||
|
||||
@@ -23,7 +23,7 @@
|
||||
// * acceptance of all terms of the Geant4 Software license. *
|
||||
// ********************************************************************
|
||||
//
|
||||
// $Id$
|
||||
// $Id: G4InuclCollider.hh 71719 2013-06-21 00:01:54Z mkelsey $
|
||||
//
|
||||
// 20100413 M. Kelsey -- Pass G4CollisionOutput by ref to ::collide()
|
||||
// 20100517 M. Kelsey -- Inherit from common base class, make other colliders
|
||||
@@ -40,6 +40,7 @@
|
||||
// pre-existing secondaries as input. Add setVerboseLevel().
|
||||
// 20110304 M. Kelsey -- Modify rescatter to use original Propagate() input
|
||||
// 20110308 M. Kelsey -- Add ::deexcite() function to handle nuclear fragment
|
||||
// 20130620 Address Coverity complaint about missing copy actions
|
||||
|
||||
#ifndef G4INUCL_COLLIDER_HH
|
||||
#define G4INUCL_COLLIDER_HH
|
||||
@@ -85,6 +86,11 @@ private:
|
||||
|
||||
G4CollisionOutput output; // Secondaries from main cascade
|
||||
G4CollisionOutput DEXoutput; // Secondaries from de-excitation
|
||||
|
||||
private:
|
||||
// Copying of modules is forbidden
|
||||
G4InuclCollider(const G4InuclCollider&);
|
||||
G4InuclCollider& operator=(const G4InuclCollider&);
|
||||
};
|
||||
|
||||
#endif /* G4INUCL_COLLIDER_HH */
|
||||
|
||||
+15
-15
@@ -23,7 +23,7 @@
|
||||
// * acceptance of all terms of the Geant4 Software license. *
|
||||
// ********************************************************************
|
||||
//
|
||||
// $Id$
|
||||
// $Id: G4InuclElementaryParticle.hh 72074 2013-07-06 06:28:53Z mkelsey $
|
||||
//
|
||||
// 20100114 M. Kelsey -- Remove G4CascadeMomentum, use G4LorentzVector directly
|
||||
// 20100409 M. Kelsey -- Drop unused string argument from ctors.
|
||||
@@ -43,6 +43,7 @@
|
||||
// reuse of objects as buffers; c.f. G4InuclNuclei.
|
||||
// 20110922 M. Kelsey -- Add stream argument to printParticle() => print()
|
||||
// 20120608 M. Kelsey -- Fix variable-name "shadowing" compiler warnings.
|
||||
// 20130702 M. Kelsey -- Use static type classifiers in G4InuclParticleNames
|
||||
|
||||
#ifndef G4INUCL_ELEMENTARY_PARTICLE_HH
|
||||
#define G4INUCL_ELEMENTARY_PARTICLE_HH
|
||||
@@ -102,18 +103,17 @@ public:
|
||||
|
||||
static G4int type(const G4ParticleDefinition* pd);
|
||||
|
||||
G4bool isPhoton() const { return (type() == G4InuclParticleNames::photon); }
|
||||
// Ensure that type code refers to a known particle
|
||||
inline static G4bool valid(G4int ityp) { return ityp!=0; }
|
||||
G4bool valid() const { return valid(type()); }
|
||||
|
||||
G4bool pion() const { return (type()==G4InuclParticleNames::pionPlus ||
|
||||
type()==G4InuclParticleNames::pionMinus ||
|
||||
type()==G4InuclParticleNames::pionZero); }
|
||||
|
||||
G4bool nucleon() const { return (type()==G4InuclParticleNames::proton ||
|
||||
type()==G4InuclParticleNames::neutron); }
|
||||
|
||||
G4bool antinucleon() const {
|
||||
return (type()==G4InuclParticleNames::antiProton ||
|
||||
type()==G4InuclParticleNames::antiNeutron); }
|
||||
G4bool isPhoton() const { return G4InuclParticleNames::isPhoton(type()); }
|
||||
G4bool isMuon() const { return G4InuclParticleNames::isMuon(type()); }
|
||||
G4bool isElectron() const { return G4InuclParticleNames::isElectron(type()); }
|
||||
G4bool isNeutrino() const { return G4InuclParticleNames::isNeutrino(type()); }
|
||||
G4bool pion() const { return G4InuclParticleNames::pion(type()); }
|
||||
G4bool nucleon() const { return G4InuclParticleNames::nucleon(type()); }
|
||||
G4bool antinucleon() const { return G4InuclParticleNames::antinucleon(type()); }
|
||||
|
||||
G4int baryon() const { // Can use as a bool (!=0 ==> true)
|
||||
return getDefinition()->GetBaryonNumber();
|
||||
@@ -123,12 +123,12 @@ public:
|
||||
|
||||
G4bool hyperon() const { return (baryon() && getStrangeness()); }
|
||||
|
||||
G4bool quasi_deutron() const { return (type() > 100); }
|
||||
G4bool quasi_deutron() const {
|
||||
return G4InuclParticleNames::quasi_deutron(type());
|
||||
}
|
||||
|
||||
G4int getStrangeness() const { return getStrangeness(type()); }
|
||||
|
||||
G4bool valid() const { return type()>0; }
|
||||
|
||||
virtual void print(std::ostream& os) const;
|
||||
|
||||
static G4int getStrangeness(G4int type);
|
||||
|
||||
@@ -23,7 +23,7 @@
|
||||
// * acceptance of all terms of the Geant4 Software license. *
|
||||
// ********************************************************************
|
||||
//
|
||||
// $Id$
|
||||
// $Id: G4InuclEvaporation.hh 66241 2012-12-13 18:34:42Z gunter $
|
||||
// Defines an interface to evaporation models of Bertini cascase (BERT)
|
||||
// based on INUCL code.
|
||||
//
|
||||
|
||||
@@ -23,7 +23,7 @@
|
||||
// * acceptance of all terms of the Geant4 Software license. *
|
||||
// ********************************************************************
|
||||
//
|
||||
// $Id$
|
||||
// $Id: G4InuclNuclei.hh 66241 2012-12-13 18:34:42Z gunter $
|
||||
//
|
||||
// 20100112 Michael Kelsey -- Replace G4CascadeMomentum with G4LorentzVector
|
||||
// 20100301 M. Kelsey -- Add function to create unphysical nuclei for use
|
||||
|
||||
@@ -0,0 +1,64 @@
|
||||
//
|
||||
// ********************************************************************
|
||||
// * 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. *
|
||||
// ********************************************************************
|
||||
//
|
||||
// $Id$
|
||||
// Author: Michael Kelsey (SLAC)
|
||||
// Date: 22 April 2013
|
||||
//
|
||||
// Description: intermediate base class for INUCL parametrizations of
|
||||
// three-body angular distributions in Bertini-style cascade
|
||||
//
|
||||
// NOTE: Coefficient arrays have fixed dimensions, validated by compiler
|
||||
|
||||
#ifndef G4InuclParamAngDst_h
|
||||
#define G4InuclParamAngDst_h 1
|
||||
|
||||
#include "globals.hh"
|
||||
#include "G4VThreeBodyAngDst.hh"
|
||||
|
||||
|
||||
class G4InuclParamAngDst : public G4VThreeBodyAngDst {
|
||||
public:
|
||||
// NOTE: Array arguments must be STATIC, GLOBAL declarations
|
||||
G4InuclParamAngDst(const G4String& name,
|
||||
const G4double (&abnC)[2][4][4],
|
||||
G4int verbose=0)
|
||||
: G4VThreeBodyAngDst(name, verbose), coeffAB(abnC) {;}
|
||||
|
||||
virtual ~G4InuclParamAngDst() {;}
|
||||
|
||||
virtual G4double GetCosTheta(G4int ptype, G4double ekin) const;
|
||||
|
||||
// FIXME: Must re-declare base class interface with call-through
|
||||
// to avoid "hidden function" compiler warnings
|
||||
virtual G4double GetCosTheta(const G4double& ekin, const G4double& pcm) const {
|
||||
return G4VThreeBodyAngDst::GetCosTheta(ekin, pcm);
|
||||
}
|
||||
|
||||
protected:
|
||||
const G4double (&coeffAB)[2][4][4]; // (coeffs Ekin^0..3) * S^0..3
|
||||
};
|
||||
|
||||
#endif /* G4InuclParamAngDst_h */
|
||||
+27
-41
@@ -23,52 +23,38 @@
|
||||
// * acceptance of all terms of the Geant4 Software license. *
|
||||
// ********************************************************************
|
||||
//
|
||||
// $Id: G4InuclParamMomDst.hh 67796 2013-03-08 06:18:39Z mkelsey $
|
||||
// Author: Michael Kelsey (SLAC)
|
||||
// Date: 7 March 2013
|
||||
//
|
||||
// Implementation of the HETC88 code into Geant4.
|
||||
// Evaporation and De-excitation parts
|
||||
// T. Lampen, Helsinki Institute of Physics, 30-May-2000
|
||||
// Description: intermediate base class for INUCL parametrizations of
|
||||
// final-state momentum distributions in Bertini-style cascade
|
||||
//
|
||||
// NOTE: Coefficient arrays have fixed dimensions, validated by compiler
|
||||
|
||||
#include "G4BEProtonChannel.hh"
|
||||
#include "G4Proton.hh"
|
||||
#ifndef G4InuclParamMomDst_h
|
||||
#define G4InuclParamMomDst_h 1
|
||||
|
||||
G4BEProtonChannel::G4BEProtonChannel()
|
||||
{
|
||||
name = "proton";
|
||||
verboseLevel = 0;
|
||||
particleA = 1;
|
||||
particleZ = 1;
|
||||
rho = 0;
|
||||
A=1;
|
||||
spin = 0.5;
|
||||
}
|
||||
#include "globals.hh"
|
||||
#include "G4VMultiBodyMomDst.hh"
|
||||
|
||||
|
||||
G4BEProtonChannel::~G4BEProtonChannel()
|
||||
{
|
||||
}
|
||||
class G4InuclParamMomDst : public G4VMultiBodyMomDst {
|
||||
public:
|
||||
// NOTE: Array arguments must be STATIC, GLOBAL declarations
|
||||
G4InuclParamMomDst(const G4String& name,
|
||||
const G4double (&pqprC)[2][4][4],
|
||||
const G4double (&psC)[2][3],
|
||||
G4int verbose=0)
|
||||
: G4VMultiBodyMomDst(name, verbose), coeffPR(pqprC), coeffPS(psC) {;}
|
||||
|
||||
virtual ~G4InuclParamMomDst() {;}
|
||||
|
||||
virtual G4double GetMomentum(G4int ptype, const G4double& ekin) const;
|
||||
|
||||
G4DynamicParticle* G4BEProtonChannel::emit()
|
||||
{
|
||||
G4double u , v , w;
|
||||
G4DynamicParticle * pParticle = new G4DynamicParticle;
|
||||
pParticle -> SetDefinition( G4Proton::Proton() );
|
||||
pParticle -> SetKineticEnergy( sampleKineticEnergy() );
|
||||
isotropicCosines( u , v , w );
|
||||
pParticle -> SetMomentumDirection( u , v , w );
|
||||
return pParticle;
|
||||
}
|
||||
protected:
|
||||
const G4double (&coeffPR)[2][4][4]; // (coeffs Ekin^0..3) * S^0..3
|
||||
const G4double (&coeffPS)[2][3]; // PS = sum coeffs * Ekin^0..2
|
||||
};
|
||||
|
||||
|
||||
G4double G4BEProtonChannel::coulombFactor()
|
||||
{
|
||||
return coulombFactorForProton();
|
||||
}
|
||||
|
||||
|
||||
G4double G4BEProtonChannel::qmFactor()
|
||||
{
|
||||
// Coefficient representing the quantum mechanical barrier
|
||||
// penetration, see Dostrovsky, Phys. Rev. 116, 1959.
|
||||
return qmFactorForProton();
|
||||
}
|
||||
#endif /* G4InuclParamMomDst_h */
|
||||
@@ -23,7 +23,7 @@
|
||||
// * acceptance of all terms of the Geant4 Software license. *
|
||||
// ********************************************************************
|
||||
//
|
||||
// $Id$
|
||||
// $Id: G4InuclParticle.hh 66241 2012-12-13 18:34:42Z gunter $
|
||||
//
|
||||
// 20100112 M. Kelsey -- Remove G4CascadeMomentum, use G4LorentzVector directly
|
||||
// 20100409 M. Kelsey -- Drop unused string argument from ctors.
|
||||
|
||||
@@ -23,8 +23,7 @@
|
||||
// * acceptance of all terms of the Geant4 Software license. *
|
||||
// ********************************************************************
|
||||
//
|
||||
// $Id$
|
||||
// Geant4 tag: $Name: $
|
||||
// $Id: G4InuclParticleNames.hh 72074 2013-07-06 06:28:53Z mkelsey $
|
||||
//
|
||||
// Defines enums to map G4InuclElementaryParticle type codes to human
|
||||
// readable names. Meant to replace similar local enums scattered through
|
||||
@@ -32,10 +31,15 @@
|
||||
//
|
||||
// 20101029 M. Kelsey -- Move antinucleons to 50-series, add deuteron
|
||||
// 20111007 M. Kelsey -- Change photon code to 9, for use in initial states
|
||||
// 20130508 D. Wright -- Add leptons and electroweak bosons
|
||||
// 20130627 M. Kelsey -- Add functions to convert enum to strings for printing
|
||||
// 20130702 M. Kelsey -- Add type classifiers ported from G4InuclElemPart
|
||||
|
||||
#ifndef G4INUCL_PARTICLE_NAMES_HH
|
||||
#define G4INUCL_PARTICLE_NAMES_HH
|
||||
|
||||
#include "globals.hh"
|
||||
|
||||
namespace G4InuclParticleNames {
|
||||
enum Long { nuclei=0, proton=1, neutron=2,
|
||||
pionPlus=3, pionMinus=5, pionZero=7, photon=9,
|
||||
@@ -45,7 +49,12 @@ namespace G4InuclParticleNames {
|
||||
deuteron=41, triton=43, He3=45, alpha=47,
|
||||
antiProton=51, antiNeutron=53,
|
||||
antiDeuteron=61, antiTriton=63, antiHe3=65, antiAlpha=67,
|
||||
diproton=111, unboundPN=112, dineutron=122 };
|
||||
diproton=111, unboundPN=112, dineutron=122,
|
||||
electronNu=-1, muonNu=-3, tauNu=-5,
|
||||
antiElectronNu=-7, antiMuonNu=-9, antiTauNu=-11,
|
||||
WMinus=-13, WPlus=-15, Zzero=-17,
|
||||
electron=-21, muonMinus=-23, tauMinus=-25,
|
||||
positron=-27, muonPlus=-29, tauPlus=-31};
|
||||
|
||||
// NOTE: "km" cannot be used as conflicts with "kilometers" unit!
|
||||
enum Short { nuc=nuclei, pro=proton, neu=neutron,
|
||||
@@ -55,7 +64,59 @@ namespace G4InuclParticleNames {
|
||||
xi0=xiZero, xim=xiMinus, om=omegaMinus, deu=deuteron,
|
||||
ap=antiProton, an=antiNeutron,
|
||||
ade=antiDeuteron, atr=antiTriton, ahe=antiHe3, aal=antiAlpha,
|
||||
pp=diproton, pn=unboundPN, nn=dineutron };
|
||||
pp=diproton, pn=unboundPN, nn=dineutron,
|
||||
enu=electronNu, mnu=muonNu, tnu=tauNu,
|
||||
aenu=antiElectronNu, amnu=antiMuonNu, atnu=antiTauNu,
|
||||
wm=WMinus, wp=WPlus, z0=Zzero,
|
||||
ele=electron, mum=muonMinus, tm=tauMinus,
|
||||
pos=positron, mup=muonPlus, tp=tauPlus};
|
||||
|
||||
// Convert enum value to enum strings above for printing
|
||||
const char* nameLong(G4int ptype);
|
||||
const char* nameShort(G4int ptype);
|
||||
inline const char* name(G4int ptype) { return nameLong(ptype); }
|
||||
|
||||
// Classify particle types to reduce if-blocks in client code
|
||||
inline G4bool isPhoton(G4int ityp) { return (ityp==photon); }
|
||||
|
||||
inline G4bool isMuon(G4int ityp) { return (ityp==muonMinus||ityp==muonPlus); }
|
||||
|
||||
inline G4bool isElectron(G4int ityp) { return (ityp==electron||ityp==positron); }
|
||||
|
||||
inline G4bool isNeutrino(G4int ityp) {
|
||||
return (ityp==electronNu || ityp==muonNu || ityp==tauNu ||
|
||||
ityp==antiElectronNu || ityp==antiMuonNu || ityp==antiTauNu);
|
||||
}
|
||||
|
||||
inline G4bool pion(G4int ityp) {
|
||||
return (ityp==pionPlus || ityp==pionMinus || ityp==pionZero);
|
||||
}
|
||||
|
||||
inline G4bool nucleon(G4int ityp) { return (ityp==proton || ityp==neutron); }
|
||||
|
||||
inline G4bool antinucleon(G4int ityp) {
|
||||
return (ityp==antiProton || ityp==antiNeutron);
|
||||
}
|
||||
|
||||
inline G4bool quasi_deutron(G4int ityp) { return (ityp > 100); }
|
||||
|
||||
// Emulates G4PD::GetBaryonNumber(), rather than a simple bool
|
||||
inline G4int baryon(G4int ityp) {
|
||||
return ((ityp==pro || ityp==neu || ityp==lam || ityp==sp || ityp==s0 ||
|
||||
ityp==sm || ityp==xi0 || ityp==xim || ityp==om) ? 1 :
|
||||
(ityp==deu || ityp==pp || ityp==pn || ityp==nn) ? 2 :
|
||||
(ityp==ap || ityp==an) ? -1 :
|
||||
(ityp==ade) ? -2 :
|
||||
(ityp==atr || ityp==ahe) ? -3 :
|
||||
(ityp==aal) ? -4 : 0);
|
||||
}
|
||||
|
||||
inline G4bool antibaryon(G4int ityp) { return baryon(ityp) < 0; }
|
||||
|
||||
inline G4bool hyperon(G4int ityp) {
|
||||
return (ityp==lam || ityp==sp || ityp==s0 || ityp==sm || ityp==xi0 ||
|
||||
ityp==xim || ityp==om);
|
||||
}
|
||||
}
|
||||
|
||||
#endif /* G4INUCL_PARTICLE_NAMES_HH */
|
||||
|
||||
+35
-9
@@ -23,7 +23,7 @@
|
||||
// * acceptance of all terms of the Geant4 Software license. *
|
||||
// ********************************************************************
|
||||
//
|
||||
// $Id$
|
||||
// $Id: G4InuclSpecialFunctions.hh 67863 2013-03-11 19:00:21Z mkelsey $
|
||||
//
|
||||
// 20100114 M. Kelsey -- Remove G4CascadeMomentum, use G4LorentzVector directly
|
||||
// 20100319 M. Kelsey -- Add optional mass argument to generateWithFixedTheta;
|
||||
@@ -33,14 +33,21 @@
|
||||
// 20100914 M. Kelsey -- Migrate to integer A and Z. Discard unused binding
|
||||
// energy functions
|
||||
// 20120608 M. Kelsey -- Fix variable-name "shadowing" compiler warnings.
|
||||
// 20130308 M. Kelsey -- New function to encapsulate INUCL power expansion
|
||||
// 20130808 M. Kelsey -- Convert paraMaker[Truncated] to class object, to
|
||||
// allow thread isolation
|
||||
// 20130829 M. Kelsey -- Address Coverity #52158, 52161 for copy actions.
|
||||
|
||||
#ifndef G4INUCL_SPECIAL_FUNC_HH
|
||||
#define G4INUCL_SPECIAL_FUNC_HH
|
||||
|
||||
#include "globals.hh"
|
||||
#include "G4LorentzVector.hh"
|
||||
#include <algorithm>
|
||||
#include <vector>
|
||||
#include "G4LorentzVector.hh"
|
||||
|
||||
template <int N> class G4CascadeInterpolator;
|
||||
|
||||
|
||||
namespace G4InuclSpecialFunctions {
|
||||
G4double bindingEnergy(G4int A, G4int Z);
|
||||
@@ -50,11 +57,6 @@ namespace G4InuclSpecialFunctions {
|
||||
|
||||
G4double FermiEnergy(G4int A, G4int Z, G4int ntype);
|
||||
|
||||
// NOTE: Passing Z as double here, to be used as interpolation argument
|
||||
void paraMaker(G4double Z, std::pair<std::vector<G4double>, std::vector<G4double> >& parms);
|
||||
|
||||
void paraMakerTruncated(G4double Z, std::pair<G4double, G4double>& parms);
|
||||
|
||||
G4double getAL(G4int A);
|
||||
|
||||
G4double csNN(G4double e);
|
||||
@@ -63,9 +65,12 @@ namespace G4InuclSpecialFunctions {
|
||||
|
||||
G4double G4cbrt(G4double x); // Can't use "cbrt" name, clashes with <math.h>
|
||||
|
||||
G4double inuclRndm();
|
||||
G4double inuclRndm(); // Wrapper for G4UniformRand()
|
||||
|
||||
G4double randomGauss(G4double sigma);
|
||||
G4double randomInuclPowers(G4double ekin, // Power series in Ekin, S
|
||||
const G4double (&coeff)[4][4]);
|
||||
|
||||
G4double randomGauss(G4double sigma); // Gaussian distribution
|
||||
|
||||
G4double randomPHI();
|
||||
|
||||
@@ -78,6 +83,27 @@ namespace G4InuclSpecialFunctions {
|
||||
G4double mass=0.);
|
||||
|
||||
G4LorentzVector generateWithRandomAngles(G4double p, G4double mass=0.);
|
||||
|
||||
// This is an object to be instantiated by client code
|
||||
class paraMaker {
|
||||
public:
|
||||
paraMaker(G4int verbose=0);
|
||||
~paraMaker();
|
||||
|
||||
// NOTE: Passing Z as double here, to be used as interpolation argument
|
||||
void getParams(G4double Z, std::pair<std::vector<G4double>,
|
||||
std::vector<G4double> >& parms);
|
||||
|
||||
void getTruncated(G4double Z, std::pair<G4double, G4double>& parms);
|
||||
|
||||
private:
|
||||
G4int verboseLevel;
|
||||
G4CascadeInterpolator<5>* interp;
|
||||
|
||||
// No copy actions
|
||||
paraMaker(const paraMaker& right);
|
||||
paraMaker& operator=(const paraMaker& right);
|
||||
};
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -23,7 +23,7 @@
|
||||
// * acceptance of all terms of the Geant4 Software license. *
|
||||
// ********************************************************************
|
||||
//
|
||||
// $Id$
|
||||
// $Id: G4KaonHypSampler.hh 66241 2012-12-13 18:34:42Z gunter $
|
||||
//
|
||||
// 20100512 M. Kelsey -- Replaces (old, untemplated) G4CascadeSampler
|
||||
|
||||
|
||||
@@ -23,7 +23,7 @@
|
||||
// * acceptance of all terms of the Geant4 Software license. *
|
||||
// ********************************************************************
|
||||
//
|
||||
// $Id$
|
||||
// $Id: G4LorentzConvertor.hh 66241 2012-12-13 18:34:42Z gunter $
|
||||
//
|
||||
// 20100108 Michael Kelsey -- Use G4LorentzVector internally
|
||||
// 20100120 M. Kelsey -- BUG FIX: scm_momentum should be G4ThreeVector
|
||||
|
||||
@@ -0,0 +1,85 @@
|
||||
//
|
||||
// ********************************************************************
|
||||
// * 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. *
|
||||
// ********************************************************************
|
||||
//
|
||||
// $Id: G4MultiBodyMomentumDist.hh 71719 2013-06-21 00:01:54Z mkelsey $
|
||||
// Author: Michael Kelsey (SLAC)
|
||||
// Date: 7 March 2013
|
||||
//
|
||||
// Description: Singleton class to evaluate multi-body momentum distribution
|
||||
// functions based on intial state codes and multiplicity.
|
||||
//
|
||||
// NOTE: Separate multiplicity-3 generators are not used, per V.Uzhinsky
|
||||
//
|
||||
// 20130619 Change singleton instance to be thread-local, to avoid collisions.
|
||||
// 20130620 Address Coverity warnings about missing copy actions
|
||||
|
||||
#ifndef G4MultiBodyMomentumDist_h
|
||||
#define G4MultiBodyMomentumDist_h 1
|
||||
|
||||
#include "globals.hh"
|
||||
|
||||
class G4VMultiBodyMomDst;
|
||||
class G4NuclNucl3BodyMomDst;
|
||||
class G4NuclNucl4BodyMomDst;
|
||||
class G4HadNucl3BodyMomDst;
|
||||
class G4HadNucl4BodyMomDst;
|
||||
|
||||
|
||||
class G4MultiBodyMomentumDist {
|
||||
public:
|
||||
~G4MultiBodyMomentumDist();
|
||||
|
||||
static const G4MultiBodyMomentumDist* GetInstance();
|
||||
|
||||
// Return appropriate generator for initial state and multiplicity
|
||||
static const G4VMultiBodyMomDst* GetDist(G4int is, G4int mult) {
|
||||
return GetInstance()->ChooseDist(is, mult);
|
||||
}
|
||||
|
||||
// Pass verbosity through to owned objects
|
||||
static void setVerboseLevel(G4int vb=0);
|
||||
|
||||
private:
|
||||
// Constructor is private for singleton
|
||||
G4MultiBodyMomentumDist();
|
||||
const G4VMultiBodyMomDst* ChooseDist(G4int is, G4int mult) const;
|
||||
|
||||
void passVerbose(G4int verbose); // Pass verbosity through instance
|
||||
|
||||
static G4ThreadLocal G4MultiBodyMomentumDist* theInstance; // Per thread
|
||||
|
||||
// Generators for various initial/final state combinations
|
||||
G4NuclNucl3BodyMomDst* nn3BodyDst; // N N to X Y Z
|
||||
G4NuclNucl4BodyMomDst* nn4BodyDst; // N N to X Y Z W ...
|
||||
G4HadNucl3BodyMomDst* hn3BodyDst; // pi,K,Y,gamma N to X Y Z
|
||||
G4HadNucl4BodyMomDst* hn4BodyDst; // pi,K,Y,gamma N to X Y Z W ...
|
||||
|
||||
private:
|
||||
// Copying of modules is forbidden
|
||||
G4MultiBodyMomentumDist(const G4MultiBodyMomentumDist&);
|
||||
G4MultiBodyMomentumDist& operator=(const G4MultiBodyMomentumDist&);
|
||||
};
|
||||
|
||||
#endif /* G4MultiBodyMomentumDist_h */
|
||||
+13
-18
@@ -23,29 +23,24 @@
|
||||
// * acceptance of all terms of the Geant4 Software license. *
|
||||
// ********************************************************************
|
||||
//
|
||||
// $Id: $
|
||||
// Author: Dennis Wright (SLAC)
|
||||
// Date: 19 March 2013
|
||||
//
|
||||
// Description: class containing numerically integrated angular distributions
|
||||
// in the CM for the n p -> n p reaction
|
||||
//
|
||||
// Implementation of the HETC88 code into Geant4.
|
||||
// Evaporation and De-excitation parts
|
||||
// T. Lampen, Helsinki Institute of Physics, May-2000
|
||||
|
||||
#ifndef G4BEHe4Channel_h
|
||||
#define G4BEHe4Channel_h 1
|
||||
#ifndef G4NP2NPAngDst_h
|
||||
#define G4NP2NPAngDst_h 1
|
||||
|
||||
#include "G4BEChargedChannel.hh"
|
||||
#include "G4NumIntTwoBodyAngDst.hh"
|
||||
|
||||
class G4BEHe4Channel : public G4BEChargedChannel
|
||||
{
|
||||
|
||||
class G4NP2NPAngDst : public G4NumIntTwoBodyAngDst<11,19> {
|
||||
public:
|
||||
G4BEHe4Channel();
|
||||
virtual ~G4BEHe4Channel();
|
||||
|
||||
G4DynamicParticle * emit();
|
||||
G4double constant();
|
||||
virtual G4double coulombFactor();
|
||||
virtual G4double qmFactor( );
|
||||
|
||||
private:
|
||||
G4NP2NPAngDst(G4int verbose = 0);
|
||||
virtual ~G4NP2NPAngDst() {;}
|
||||
};
|
||||
|
||||
|
||||
#endif
|
||||
+20
-8
@@ -23,34 +23,46 @@
|
||||
// * acceptance of all terms of the Geant4 Software license. *
|
||||
// ********************************************************************
|
||||
//
|
||||
// $Id$
|
||||
// $Id: G4NonEquilibriumEvaporator.hh 71942 2013-06-28 19:08:11Z mkelsey $
|
||||
//
|
||||
// 20100315 M. Kelsey -- Remove "using" directive and unnecessary #includes.
|
||||
// 20100413 M. Kelsey -- Pass G4CollisionOutput by ref to ::collide()
|
||||
// 20100517 M. Kelsey -- Inherit from common base class
|
||||
// 20100714 M. Kelsey -- Switch to new G4CascadeColliderBase class
|
||||
// 20100914 M. Kelsey -- Migrate to integer A and Z
|
||||
// 20130620 Address Coverity complaint about missing copy actions
|
||||
// 20130622 Inherit from G4CascadeDeexciteBase, move to deExcite() interface
|
||||
// with G4Fragment
|
||||
// 20130808 Use new object-version of paraMaker, for thread safety
|
||||
// 20130924 Add local pointer to G4Pow for convenience
|
||||
|
||||
#ifndef G4NON_EQUILIBRIUM_EVAPORATOR_HH
|
||||
#define G4NON_EQUILIBRIUM_EVAPORATOR_HH
|
||||
|
||||
#include "G4CascadeColliderBase.hh"
|
||||
#include "G4CascadeDeexciteBase.hh"
|
||||
#include "G4InuclSpecialFunctions.hh"
|
||||
|
||||
class G4CollisionOutput;
|
||||
class G4InuclParticle;
|
||||
class G4Pow;
|
||||
|
||||
class G4NonEquilibriumEvaporator : public G4CascadeColliderBase {
|
||||
class G4NonEquilibriumEvaporator : public G4CascadeDeexciteBase {
|
||||
public:
|
||||
G4NonEquilibriumEvaporator();
|
||||
virtual ~G4NonEquilibriumEvaporator() {}
|
||||
|
||||
void collide(G4InuclParticle* bullet, G4InuclParticle* target,
|
||||
G4CollisionOutput& output);
|
||||
virtual void deExcite(const G4Fragment& target, G4CollisionOutput& output);
|
||||
|
||||
private:
|
||||
G4InuclSpecialFunctions::paraMaker theParaMaker;
|
||||
G4Pow* theG4Pow; // Convenient reference to singleton
|
||||
|
||||
private:
|
||||
G4double getMatrixElement(G4int A) const;
|
||||
G4double getE0(G4int A) const;
|
||||
G4double getParLev(G4int A, G4int Z) const;
|
||||
|
||||
private:
|
||||
// Copying of modules is forbidden
|
||||
G4NonEquilibriumEvaporator(const G4NonEquilibriumEvaporator&);
|
||||
G4NonEquilibriumEvaporator& operator=(const G4NonEquilibriumEvaporator&);
|
||||
};
|
||||
|
||||
#endif /* G4NON_EQUILIBRIUM_EVAPORATOR_HH */
|
||||
|
||||
+12
-18
@@ -23,29 +23,23 @@
|
||||
// * acceptance of all terms of the Geant4 Software license. *
|
||||
// ********************************************************************
|
||||
//
|
||||
// $Id$
|
||||
// Author: Michael Kelsey (SLAC)
|
||||
// Date: 22 April 2013
|
||||
//
|
||||
// Description: class containing parametrized angular distributions
|
||||
// in the CM for nucleon/nucleon 3-body final states
|
||||
//
|
||||
// Implementation of the HETC88 code into Geant4.
|
||||
// Evaporation and De-excitation parts
|
||||
// T. Lampen, Helsinki Institute of Physics, May-2000
|
||||
|
||||
#ifndef G4BEHe3Channel_h
|
||||
#define G4BEHe3Channel_h 1
|
||||
#ifndef G4NuclNucl3BodyAngDst_h
|
||||
#define G4NuclNucl3BodyAngDst_h 1
|
||||
|
||||
#include "G4BEChargedChannel.hh"
|
||||
#include "G4InuclParamAngDst.hh"
|
||||
|
||||
class G4BEHe3Channel : public G4BEChargedChannel
|
||||
{
|
||||
class G4NuclNucl3BodyAngDst : public G4InuclParamAngDst {
|
||||
public:
|
||||
G4BEHe3Channel();
|
||||
virtual ~G4BEHe3Channel();
|
||||
|
||||
G4DynamicParticle * emit();
|
||||
G4double constant();
|
||||
virtual G4double coulombFactor();
|
||||
virtual G4double qmFactor( );
|
||||
|
||||
private:
|
||||
G4NuclNucl3BodyAngDst(G4int verbose = 0);
|
||||
virtual ~G4NuclNucl3BodyAngDst() {;}
|
||||
};
|
||||
|
||||
|
||||
#endif
|
||||
@@ -0,0 +1,45 @@
|
||||
//
|
||||
// ********************************************************************
|
||||
// * 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. *
|
||||
// ********************************************************************
|
||||
//
|
||||
// $Id: G4NuclNucl3BodyMomDst.hh 67796 2013-03-08 06:18:39Z mkelsey $
|
||||
// Author: Michael Kelsey (SLAC)
|
||||
// Date: 7 March 2013
|
||||
//
|
||||
// Description: class containing parametrized momentum distributions
|
||||
// in the CM for nucleon/nucleon 3-body final states
|
||||
//
|
||||
|
||||
#ifndef G4NuclNucl3BodyMomDst_h
|
||||
#define G4NuclNucl3BodyMomDst_h 1
|
||||
|
||||
#include "G4InuclParamMomDst.hh"
|
||||
|
||||
class G4NuclNucl3BodyMomDst : public G4InuclParamMomDst {
|
||||
public:
|
||||
G4NuclNucl3BodyMomDst(G4int verbose = 0);
|
||||
virtual ~G4NuclNucl3BodyMomDst() {;}
|
||||
};
|
||||
|
||||
#endif
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user