# Category hadr-casc History

See `CONTRIBUTING.rst` for details of **required** info/format for each entry,
which **must** added in reverse chronological order (newest at the top).
It must **not** be used as a substitute for writing good git commit messages!

-------------------------------------------------------------------------------

## 2025-12-16 Gabriele Cosmo (hadr-casc-V11-03-02)
- Directly use std::cbrt(double) in G4InuclSpecialFunctions, as now standard
  and available in <cmath>, replacing old ad-hoc implementation.
  Minor code formatting.

## 2025-11-26 Vladimir ivanchenko (hadr-casc-V11-03-01)
- G4BigBanger - fixed typo in the computation of probability, which is
    identified by the new compiler and should not change any result.

## 2025-04-22 Alberto Ribon (hadr-casc-V11-03-00)
- G4CascadeFinalStateAlgorithm, G4NucleiModel : introduced the possibility to
  retrieve either the behavior of these classes as in Geant4 version 11.3
  (default) or as in 11.2 according to the value of boolean flags in
  G4HadronicParameters.
  In the case that the behavior of the class G4CascadeFinalStateAlgorithm
  is chosen as in Geant4 version 11.2, the change introduced in
  hadr-casc-V11-02-02 is skipped; similarly, but independently, if the
  behavior of the class G4NucleiModel is chosen as in Geant4 version 11.2,
  the change introduced in hadr-casc-V11-02-00 is skipped.
  ( Note that the changes introduced in the two above classes in
    hadr-casc-V11-02-02 and hadr-casc-V11-02-00 can be considered as real
    improvements of the Bertini model, some degradation of thin-target data -
    in particular for the pion production in HARP data - are observed.
    This is likely due to the fact that a complete retuning of the parameters
    of the Bertini model would have been necessary after these changes. )

## 2024-08-21 Gabriele Cosmo (hadr-casc-V11-02-04)
- Fixed reported Coverity defect in G4NucleiModel for use of std::move().

## 2024-08-14 Gabriele Cosmo (hadr-casc-V11-02-03)
- Fixed reported Coverity defect in G4NucleiModel for unitialised data.

## 2024-01-29 Dennis Wright (hadr-casc-V11-02-02)
- G4CascadeFinalStateAlgorithm::GenerateCosTheta() 
    For 4-body and higher-body generation of cosTheta, use direct sampling
    of exp(1 - cosTheta) instead of previously used rejection method on
    sinTheta * exp(-sinTheta). This removes the reflection about cosTheta = 0
    that caused a symmetric double bump in the Feynman-x distribution.

## 2024-01-24 Dennis Wright (hadr-casc-V11-02-01)
- G4InuclSpecialFunctions::inuclRndm() is just a wrapper of G4UniformRand()
    remove method from class G4InuclSpecialFunctions and replace all
    occurrences of inuclRndm() with G4UniformRand() in files
    G4BigBanger.cc
    G4CascadeFinalStateAlgorithm.cc
    G4EquilibriumEvaporator.cc
    G4Fissioner.cc
    G4IntraNucleiCascader.cc
    G4InuclParamAngDst.cc
    G4InuclSpecialFunctions.cc
    G4NonEquilibriumEvaporator.cc
    G4NucleiModel.cc

## 2023-12-11 Dennis Wright (hadr-casc-V11-02-00)
- improved calculation of di-nucleon density using Levinger quasi-deuteron
  model proposed by Einar Elen (Lund) and Natalia Toro (SLAC) : 
    - add method G4NucleiModel::setDinucleonDensityScale() to calculate
      correction factor to be applied to dinucleon densities
    - modify method G4NucleiModel::getCurrentDensity() to apply this factor 

## 2023-11-17 Vladimir Ivantchenko (hadr-casc-V11-01-03)
- G4CascadeParamMessenger - fixed memory leak at exit and simplified the code.

## 2023-04-17 Alberto Ribon (hadr-casc-V11-01-02)
- G4BigBanger : added protection in the method  G4BigBanger::generateBangInSCM
  to avoid very rare cases of unphysical negative energy of one of the
  secondaries produced by the Bertini model.
  (Note: this problem was never reproduced in our tests, but was reported by
         ATLAS with Geant4 10.6; the secondaries with negative - both total
	 and kinetic - energy were always neutrons, produced by the internal
	 Bertini nuclear de-excitation, after the intra-nuclear cascade.
	 Many thanks to Mihaly Novak for providing detailed debugging
	 information!)

## 2023-04-05 Dennis Wright (hadr-casc-V11-01-01)
- Fix coverity bug 60840: incorrect integer divide in fission part of 
  G4EquilibriumEvaporator::deExcite.  Changed RHS to G4double.

## 2023-03-14 Alberto Ribon (hadr-casc-V11-01-00)
Extended Bertini model to allow the use of Abla as alternative post-cascade
nuclear de-excitation (the default de-excitation remains unchanged).
There are two ways to set Abla as de-excitation for Bertini:
via C++ interface, by calling G4CascadeInterface::useAblaDeexcitation();
via environmental variable, by setting G4CASCADE_USE_ABLA=1.
- G4AblaDeexcitation : new class that does the nuclear de-excitation,
  after the Bertini cascade, by using the Abla model, and then tranform
  the secondaries in Bertini objects.
- G4CascadeInterface : added the new method  useAblaDeexcitation()  which sets
  Abla as nuclear de-excitation; this method can be called directly by the
  user, or automatically in the constructor of the class when the flag
  G4CascadeParameters::useAbla() is enabled.
- G4InuclCollider : added new method  useAblaDeexcitation()  which creates
  an instance of the new class G4AblaDeexcitation.
- G4CascadeParameters : added a boolean flag that enables the Abla
  de-dexcitation model in the case that the new environmental variable
  G4CASCADE_USE_ABLA is set.

## 2022-11-26 Gabriele Cosmo (hadr-casc-V11-00-05)
- Fixed compilation warnings for implicit type conversions on macOS/XCode 14.1.

## 2022-11-13 Alberto Ribon (hadr-casc-V11-00-04)
(Two bug-fixes found and suggested by Sven Menke)
- G4NumIntTwoBodyAngDst.hh : corrected the incomplete initialization of the
  vector angDist (fixing bug #2515).
- G4TwoBodyAngularDist.cc : corrected the charge exchange reaction of pion+ on
  neutron producing in the final state pion0 and proton (fixing bug #2516)

## 2022-08-26 Gabriele Cosmo (hadr-casc-V11-00-03)
- Attempt to fix compilation warning on gcc-12.1 for
  G4CascadeParamMessenger::CreateDirectory().

## 2022-05-23 Gabriele Cosmo (hadr-casc-V11-00-02)
- Fixed wrong comparison between two arrays in findCrossSection(..)
  for G4CascadePPChannel, G4CascadeNPChanneland G4CascadeNNChannel.

## 2022-02-09 Gabriele Cosmo (hadr-casc-V11-00-01)
- Fixed compilation warnings on Intel compilers for unused variables.
- Use const iterator in G4InuclEvaporation::BreakItUp(..).

## 2021-12-10 Ben Morgan (hadr-casc-V11-00-00)
- Change to new Markdown History format.

---

# History entries prior to 11.0

 4 August 2021 Alberto Ribon (hadr-casc-V10-07-04)
--------------------------------------------------
- G4CascadeInterface : set the creator model ID for the secondaries
  produced by Bertini model using the new version of G4PhysicsModelCatalog

29 June 2021 Gabriele Cosmo (hadr-casc-V10-07-03)
-------------------------------------------------
- Fixed compilation warnings occurring when c++20 is enabled.

17 May 2021 Jonathan Madsen (hadr-casc-V10-07-02)
-------------------------------------------------
- Fixed TLS usage of G4CascadeChannelTables and G4CascadeParameters

16 April 2021  Ben Morgan (hadr-casc-V10-07-01)
--------------------------------------------------
- Migrate build to modular CMake API

13 April 2021  Alberto Ribon    (hadr-casc-V10-07-00)
-----------------------------------------------------
- GNUmakefile, sources.cmake : removed the subdirectories
  hadronic/models/management and hadronic/models/util
  (that have been now deleted, with their classes moved to
   hadronic/util and hadronic/management).
  Removed also the useless dependency to hadronic/process.

 5 May 2020  Gunter Folger      (hadr-casc-V10-06-04)
-----------------------------------------------------
 - Fix for clang10: confusing indentation caused by if
    add {} around statements

26 February 2020  Dennis Wright (hadr-casc-V10-06-03)
-----------------------------------------------------
- G4LightTargetCollider::collide() : avoid frequent energy conservation warning
  from G4HadronicProcess by setting up "no interaction" final state below
  threshold

13 January 2020  Dennis Wright (hadr-casc-V10-06-02)
----------------------------------------------------
- G4CascadeInterface.cc: fix memory leak by deleting ltcollider in class
  dtor

10 January 2020  Michael Kelsey (hadr-casc-V10-06-01)
-----------------------------------------------------
- G4CascadeParamMessenger.cc: Ensure that Bertini-specific commands get
  added to /process/had/cascade/ directory, instead of /process/had.
  Requires resetting cmdDir=0 between CreateDirectory() calls.

16 December 2019  Vladimir Ivanchenko (hadr-casc-V10-06-00)
-----------------------------------------------------------
- G4CascadeCheckBalance: fixed outstanding problem of the interface
  with native pre-compound model, which happens since in the
  default de-excitation internal electron conversion become
  enabled

 7 November 2019  Dennis Wright (hadr-casc-V10-05-02)
-----------------------------------------------------
- G4LightTargetCollider: fix crash when gamma energy below deuteron
  disintegration threshold and improve exception handling

 5 November 2019  Dennis Wright (hadr-casc-V10-05-01)
-----------------------------------------------------
- new class G4LightTargetCollider to more accurately handle collisons
  on p, d, t, 3He.  Currently only gamma on protons and deuterons is
  implemented.

29 May 2019  Dennis Wright (hadr-casc-V10-05-00)
------------------------------------------------
- fix bug found in biasing/B03 example due to FPE from unprotected sqrt
  of pperp2 + qv - p1r*p1r in G4NucleiModel::boundaryTransition

19 November 2018  Dennis Wright (hadr-casc-V10-04-12)
-----------------------------------------------------
- fix bug # 2096: non-conservation in precompound interface
 Four problems fixed:

 G4PreCompoundDeexcitation::deExcite: do not use const reference as
 input to theDeExcitation->DeExcite(G4Fragment) because G4PreCompound
 can change the fragment and upset the energy balance

 G4CollisionOutput::getTotalCharge: subtract electron charges in case
 of internal conversion in G4PreCompound

 G4CascadeCheckBalance::collide(const G4Fragment& fragment,
                                G4CollisionOutput& output):
 Convert fragment momentum given in MeV to GeV (Bertini units)
 and remove electrom masses from energy balance when internal conversion
 occurs

09 November 2018  Gabriele Cosmo (hadr-casc-V10-04-11)
------------------------------------------------------
- Fixed few printout typos.

25 October 2018  Makoto Asai (hadr-casc-V10-04-10)
--------------------------------------------------
- G4CascadeParamMessenger.cc : add description to /process/had/
  directory. Addressing to bug report #2020.

27 September 2018  Dennis Wright  (hadr-casc-V10-04-09)
-------------------------------------------------------
- G4NucleiModel::boundaryTransition : fix by Natalia Toro (SLAC) to
  prevent glancing incidence at shell boundaries from reflecting too
  many times

19 September 2018  Dennis Wright  (hadr-casc-V10-04-08)
-------------------------------------------------------
- G4CascadeT11pizNChannel.cc, G4CascadeT31piNChannel.cc,
  G4CascadeT33piNChannel.cc : re-order particle types in final state
    arrays so that pion is first and nucleon is second.  Two body final
    state methods assume this.

- G4CascadeKminusNChannel.cc, G4CascadeKminusPChannel.cc,
  G4CascadeKplusNChannel.cc, G4CascadeKplusPChannel.cc,
  G4CascadeKzeroBarNChannel.cc, G4CascadeKzeroBarPChannel.cc,
  G4CascadeKzeroNChannel.cc, G4CascadeKzeroPChannel.cc :
    same as above but re-order only for two- and three-body final states.

- G4CascadeT1GamNChannel.cc : re-order final state particle types so that
  mesons are first in two- and three-body cases

17 September 2018  Dennis Wright  (hadr-casc-V10-04-07)
-------------------------------------------------------
- G4NucleiModel: replace Kossov parameterization of gammaQDxsec with new
  values coming from smooth line through deuteron photo-disintegration
  data which include 2004 JLab data up to 3 GeV.

 6 July 2018  Vladimir Ivanchenko (hadr-casc-V10-04-06)
------------------------------------------------------
- G4GDecay3 - fixed problem reported by CMS due to wrong kinematics
    in the final state by removing loop check; adding protection
    for low value of mother mass

 7 June 2018  Dennis Wright  (hadr-casc-V10-04-05)
--------------------------------------------------
- G4CascadePPChannel, G4CascadeNPChannel, G4CascadeNNChannel: extend strange
    pair production channels to 6, 7, 8 and 9-body final states

- G4CascadeT11pizNChannel.cc : fix qnum conservation problem in 8-body final
    states

 2 May 2018  Dennis Wright  (hadr-casc-V10-04-04)
-------------------------------------------------
- G4ElementaryParticleCollider
   methods generateSCMpionAbsorption and
   generateSCMmuonAbsorption did not produce correct nucleon pairs when
   pion or muon was absorbed - both methods now re-written

   quantum number conservation test added to method
   collide(G4InuclParticle* bullet, G4InuclParticle* target,
           G4CollisionOutput& output)

 20 March 2018  Julia Yarba  (hadr-casc-V10-04-03)
---------------------------------------------------
- Fix implementation of nuclear_rad_2par configurable key (G4CascadeParamMessenger.cc)

 6 March 2018  Dennis Wright  (hadr-casc-V10-04-02)
---------------------------------------------------
- G4CascadeT11pizNChannel.cc: extend strange pair production channels to
  6,7,8 and 9 body final states

27 February 2018  Alberto Ribon (hadr-casc-V10-04-01)
-----------------------------------------------------
-  G4NucleiModel : replaced obsolete std::bind2nd with std::bind .

 2 February 2018  Dennis Wright (hadr-casc-V10-04-00)
-----------------------------------------------------
- Add strange pair production channels to list of 6, 7, 8 and 9-body
  final states in classes G4CascadeT31piNChannel and G4CascadeT33piNChannel.
  Modify template values accordingly in
    G4CascadePiMinusNChannel.hh
    G4CascadePiMinusPChannel.hh
    G4CascadePiPlusNChannel.hh
    G4CascadePiPlusPChannel.hh

27 November 2017  Dennis Wright (hadr-casc-V10-03-06)
-----------------------------------------------------
- G4CascadeInterface::createBullet, G4CascadeInterface::ApplyYourself:
  rotation to z-axis unnecessary and may
  cause irreproducibility.  Remove it according to bug report #1990.

20 October 2017  Tatsumi Koi (hadr-casc-V10-03-05)
------------------------------------------------
- G4CascadeParameters.cc FERMI_SCALE and RAD_TRAILING are added to changeable parameters from HDP
Lower and upper limits of changeable parameters form HDP are registered

6 October 2017  Tatsumi Koi (hadr-casc-V10-03-04)
------------------------------------------------
- G4CascadeParameters.cc Remove protection for using G4HadronicDeveloperParameters

5 October 2017  Tatsumi Koi (hadr-casc-V10-03-03)
------------------------------------------------
- Adding comment for BEST_PAR in G4CascadeParameters and test/README

22 May 2017  Dennis Wright (hadr-casc-V10-03-02)
------------------------------------------------
- G4ElementaryParticleCollider::generateSCMmuonAbsorption: fix rare seg fault
  spotted and diagnosed by Ralf Ehrlich (mu2e/Virgina).  Added line
      particles.clear();
  if GetThreeBodyMomenta() returns no momenta.

1 May 2017  Tatsumi Koi (hadr-casc-V10-03-01)
---------------------------------------------------
- G4CascadeParameters.cc: Use G4HadronicDeveloperParameters as a tool
for sharing parameters between developers and experienced users.
Need to set environment variable of "TEST_HDP" for testing the tool.

13 April 2017  Michael Kelsey (hadr-casc-V10-03-00)
---------------------------------------------------
- G4CascadeCoalescence:  Remove clusterHash() function and triedClusters
  registry.  Drop redundant calls of tryCluster() with subcombinatorics; all
  combinations are handled, uniquely, in main loop over indices.  Eliminates
  significant memory usage seen with high-energy applications of BERT.

- test/clusterComb.cc, test/GNUmakefile:  New standalone test to exercise
  combinatoric behaviour of G4CascadeCoalescence (used in testing above
  changes).

29 November 2016  Dennis Wright (hadr-casc-V10-02-05)
-----------------------------------------------------
- G4InuclCollider::photonuclearOkay(): fix segfault reported by Daren Sawkey
  in bug report #1883

 6 October 2016  Dennis Wright (hadr-casc-V10-02-04)
 ---------------------------------------------------
- G4EquilibriumEvaporator::deExcite: replace sampling of evaporation spectrum
   with original Dostrovsky method
- paraMaker.cc: add comments

 3 October 2016  Dennis Wright (hadr-casc-V10-02-03)
 ---------------------------------------------------
  Mike Kelsey added the lines
    process->PreparePhysicsTable(*part);
    process->BuildPhysicsTable(*part);
  in unit test cascade/test/cascade.cc to configure RunManager event loop

30 September 2016  Dennis Wright (hadr-casc-V10-02-02)
------------------------------------------------------
- add 8- and 9-body final states to K-, K0 and K0b induced reactions.
  Classes affected: G4CascadeKminusNChannel, G4CascadeKminusPChannel,
                    G4CascadeKzeroBarNChannel, G4CascadeKzeroBarPChannel,
                    G4CascadeKzeroNChannel, G4CascadeKzeroPChannel

14 March 2016  Dennis Wright (hadr-casc-V10-02-01)
--------------------------------------------------
- G4InuclCollider.cc: re-instate getenv for photonuclearOkay().  This
  method causes significant performance degradation and the physics needs
  to be improved before it can made default

25 January 2016  Michael Kelsey (hadr-casc-V10-02-00)
-----------------------------------------------------
- G4InuclCollider.cc:  Remove envvar which enables "photonuclearOkay()"
  test.  This test will now be used by default, improving the match for
  production of neutrons and protons in the GDR region.

6 November 2015  Dennis Wright (hadr-casc-V10-01-13)
----------------------------------------------------
- G4CascadeKplusNChannel: extend to 9-body final states and 32 GeV using same
  energy bins as G4CascadeKplusPChannel

16 October 2015  V.Ivanchenko (hadr-casc-V10-01-12)
---------------------------------------------------
- G4CascadeCoalescence.hh:  Add #include "G4InuclElementaryParticle.hh", to
  address compiler error from Cray (see Config HN 1764).

19 August 2015  V.Ivanchenko (hadr-casc-V10-01-11)
--------------------------------------------------
- G4NucleiModel.cc - Randomize.hh header is included

13 July 2015  M. Kelsey (hadr-casc-V10-01-10)
---------------------------------------------
- G4KaonSampler:  Per D. Wright, modify to 30 bins, finely divided up to 1.5
  GeV, very coarsely grained above 10 GeV.  Binning optimized to isolate
  various resonances in Kp and Kn spectra.

- G4CascadeKplusPChannel:  Per D. Wright, use new G4KaonSampler binning,
  with final states tabulated up to 9-body.  Should dramatically improve
  match to data.

26 June 2015  M. Kelsey (hadr-casc-V10-01-09)
---------------------------------------------
- G4CascadeCheckBalance.cc:  Address Coverity #60845-60850, with incorrect
  logical expression in diagnostic output.

22 June 2015  M. Kelsey (hadr-casc-V10-01-08)
---------------------------------------------
Follow new G4cbrt(int) by moving powers of Z and A out of argument.  Lookup
table only covers real nuclei (up to about 300 or so).

	G4EquilibriumEvaporator.cc
	G4Fissioner.cc
	bindingEnergyAsymptotic.cc

22 June 2015  M. Kelsey (hadr-casc-V10-01-07)
---------------------------------------------
Per request from G. Cosmo and A. Dotti, migrate the five "TLS" local buffers
to use the new G4AutoDelete mechanism.  This removes them as spurious memory
leaks at end of job.

	G4InuclSpecialFunctions.cc
	G4NucleiModel.cc

19 June 2015  M. Kelsey (hadr-casc-V10-01-06)
---------------------------------------------
Per request from A. Ribon, migrate few remaining instances of std::pow,
std::log, and std::exp to Geant4's VDT equivalents (G4Pow, G4Log, G4Exp).
Only G4Pow is problematic, requiring use of singleton pointer instead of
direct replacement.

	G4CascadeFinalStateAlgorithm.cc
	G4FissionStore.cc
	G4Fissioner.cc
	G4IntraNucleiCascader.cc

- G4InuclSpecialFunctions:  As above, and define G4cbrt(G4int) which uses
  G4Pow::Z13() with lookup table for integer arguments (e.g. Z, A, N).

8 June 2015  M. Kelsey (hadr-casc-V10-01-05)
--------------------------------------------
Per request from A. Ribon and ATLAS, mark every while loop in code with
special comment string authenticating that it terminates.

	G4BigBanger.cc
	G4CascadeFinalStateAlgorithm.cc
	G4CascadeInterface.cc
	G4ElementaryParticleCollider.cc
	G4EquilibriumEvaporator.cc
	G4FissionStore.cc
	G4Fissioner.cc
	G4GDecay3.cc
	G4IntraNucleiCascader.cc
	G4InuclCollider.cc
	G4InuclNuclei.cc
	G4InuclParamAngDst.cc
	G4NonEquilibriumEvaporator.cc
	G4NucleiModel.cc

23 March 2015  M. Kelsey (hadr-casc-V10-01-04)
----------------------------------------------
- G4CascadeInterface.cc:  Call static Initialize() function in constructor,
  for sequential builds or master thread.  Requires global-V10-01-08.

23 April 2015  A. Ribon (hadr-casc-V10-01-03)
---------------------------------------------
- G4PreCompoundDeexcitation: delete precompound products (i.e.
  G4ReactionProduct objects) before cleaning and deleting their
  vector container.

23 March 2015  M. Kelsey
------------------------
- G4KaonSampler, G4HyperonSampler:  NEW Copies of G4KaonHypSampler, which
  will eventually diverge with different energy binning, in order to extend
  kaon and hyperon final state tables to ~30 GeV.

23 February 2015  M. Kelsey (hadr-casc-V10-01-02)
-------------------------------------------------
- G4InuclCollider:  Speed up new photonuclearOkay() filter by checking final
  state nucleus vs. target directly, instead of looping over secondaries.
  Filter is still disabled behind G4CASCADE_CHECK_PHOTONUCLEAR envvar.

2 February 2015  M. Kelsey (hadr-casc-V10-01-01)
------------------------------------------------
- G4InuclCollider:  Add special end-of-cascade test to require low-energy
  photo-nuclear and lepto-nuclear events to produce at least one non-gamma
  secondary.  Currently hidden behind G4CASCADE_CHECK_PHOTONUCLEAR envvar.
  Will address bug #1680 to increase neutron yield around the giant dipole
  resonance, without model changes.

11 December 2014  M. Kelsey (hadr-casc-V10-01-00)
-------------------------------------------------
- G4CascadeParameters, G4CascadeParamMessenger:  Make G4CASCADE_PIN_ABSORPTION
  a double, specifying a probability for absorption.  Requirement is
  less-than, not less-than-or-equal, so 0. suppresses aborption in all
  cases.

- G4ElementaryParticleCollider.cc:  Use PIN_ABSORPTION value as probability.
  Fix boosting of pion-nucleon absorption; recoil nucleus should not be
  involved in boost.

11 December 2014  M. Kelsey
---------------------------
- G4CollisionOutput:  Move "hard tuning" from setOnShell() to separate
  function.  Add code in setOnShell() to do "hard tuning" of quasi-elastic,
  recomputing momentum for single particle and nuclear recoil directly.

11 December 2014  M. Kelsey
---------------------------
- G4IntraNucleiCascader:  Add function to identify non-interacting particles
  (e.g., neutrinos); in generateCascade(), move such particles directly to
  output list, rather than transporting them through the nucleus.  This
  deals with the "trapped neutrino" case (below) more efficiently.

1 December 2014  M. Kelsey (hadr-casc-V10-00-20)
------------------------------------------------
- G4CascadParticle.cc:  For stopped particles (zero path length), if at core
  of nucleus switch "movingIn" flag to false to particle will be forced to
  escape.  Protects against very rare infinite loop in mu- capture (nu_mu
  produced with tiny momentum, gets stuck in nucleus zone 0).

1 December 2014  M. Kelsey (hadr-casc-V10-00-19)
------------------------------------------------
- G4ElementaryParticleCollider.cc:  In muon absorption, check return from
  G4GDecay3 for null vector; report no-collision status and return.

- G4GDecay3.cc:  Fix typo in error report to use correct class name.

21 November 2014  M. Kelsey (hadr-casc-V10-00-18)
-------------------------------------------------
Per A. Dotti, introduce G4AutoDelete for all singleton classes to avoid
end-of-job memory leaks:

	G4CascadeChannelTables.cc,.hh	(also make dtor public)
	G4CascadeParameters.cc
	G4MultiBodyMomentumDist.cc
	G4TwoBodyAngularDist.cc

21 November 2014  M. Kelsey (hadr-casc-V10-00-17)
-------------------------------------------------
- G4PreCompoundDeexcitation.cc:  Per V.I., fix memory leak on exit by passing
  excitation handler through to PreCompound.

19 November 2014  M. Kelsey (hadr-casc-V10-00-16)
-------------------------------------------------
- G4CascadeInterface.cc:  Fix parentheses in retryInelasticNucleus()
  expression for conditional-compilation flag (does not affect defaults).

18 November 2014  M. Kelsey (hadr-casc-V10-00-15)
-------------------------------------------------
- G4CascadeInterface.cc:  Fix possible infinite-loop condition where (nTries
  >= maxTries) and momentum balance fails, by regrouping conditions in
  retryInelasticNucleus().

11 November 2014  M. Kelsey (hadr-casc-V10-00-14)
-------------------------------------------------
- G4CascadeParameters.cc:  Revert default changes in V10-00-12 tag:  turn
  off phase-space, trailing-effect, and PreCompound.

- G4InuclCollider.cc:  Replace G4Fragment::GetA() with GetA_asInt().

- G4ElementaryParticleCollider.cc:  Improve optional pion-nucleon
  absorption.  NOTE:  This is DISABLED by default; used for studies of pion
  stopping.

- G4NucleiModel.cc:  Initialize local p1r variable in declaration.

30 October 2014  M. Kelsey (hadr-casc-V10-00-13)
------------------------------------------------
- G4CascadeParameters, G4CascadeParamMessenger:  Add flag to enable
  absorbing pion on a single nucleon.  See G4EPCollider below for details.

- G4ElementaryParticleCollider:  Add support for absorbing a pion with a
  single nucleon (via a charge exchange interaction, e.g. pi- p -> n), with
  momentum conservation handled by recoiling against the nucleus.  This is
  intended to improve the match to data for pi- capture.

- G4NucleiModel.cc:  In boundaryTransition(), switch sign of "dv" so that
  particle sees a barrier (next_zone potential > current potential) as
  positive.  In generateParticleFate(), pass (A,Z) to EPCollider for
  possible nuclear-recoil calculations.

- G4CascadeCheckBalance.cc:  Per V.Ivantchenko, use G4Fragment::GetZ_asInt(),
  GetZ_asInt().  Should have been done long ago.

1 October 2014  M. Kelsey (hadr-casc-V10-00-12)
-----------------------------------------------
- G4CascadeCheckBalance:  Change ctor arg from "const char*" to "const
  G4String&" to avoid memory deallocation problems.

- G4CascadeColliderBase:  Change ctor arg from "const char*" to "const
  G4String&" to avoid memory deallocation problems.

- G4CascadeInterface.cc:  Call both usePreCompoundDeexcitation() and
  useCascadeDeexcitation() in ctor, with if-else.

- G4CascadeParameters.cc:  Make PreCompound, phase space, trailing effect,
  and light-ion clustering active by default.  User must set envvars to "0"
  to disable.

- G4InuclCollider.cc:  Make PreCompound the default in ctor.

- G4VCascadeCollider:  Change ctor arg from "const char*" to "const
  G4String&" to avoid memory deallocation problems.

- G4VCascadeDeexcitation.hh:  Change ctor arg from "const char*" to "const
  G4String&" to avoid memory deallocation problems.

27 June 2014  M. Kelsey (hadr-casc-V10-00-11)
---------------------------------------------
- G4CascadeFinalStateAlgorithm.cc:  Address bug #1558, using ".c_str()" in
  diagnostic outputs, to avoid IBM XL compiler error.

23 May 2014  M. Kelsey (hadr-casc-V10-00-10)
--------------------------------------------
- G4InuclNuclei.cc:  Avoid FPE in setExcitationEnergy() for zero Ekin.  This
  must be backported to 9.6 and 10.0.

9 May 2014  M. Kelsey (hadr-casc-V10-00-09)
-------------------------------------------
- G4PreCompoundDeexcitation.cc: Fix mistake in copying example code; created
  a local copy instead of filling the data member.

9 May 2014  M. Kelsey (hadr-casc-V10-00-08)
-------------------------------------------
- 4PreCompoundDeexcitation.cc:  Per V.Ivanchenko, attempt to use shared
  instance of PreCompound by fetching from hadronic registry.  Only if that
  fails should a local instance be created.

9 April 2014  M. Kelsey (hadr-casc-V10-00-07)
---------------------------------------------
- G4IntraNucleiCascader.cc:  Use const G4PD*.
- G4InuclEvaporation.cc:  Remove temporary const_cast<G4PD*> (see 10 Mar).

12 March 2014  M. Kelsey (hadr-casc-V10-00-06)
----------------------------------------------
- G4CascadeParameters:  Copy Gabriele's version of the singleton here, from
  the 9.6-patch-03 branch.

10 March 2014  M. Kelsey (hadr-casc-V10-00-05)
----------------------------------------------
- G4CollisionOutput.cc:  Use const G4PD* for G4HadronicProduct secondaries.

- G4InuclParticle:  Apply "const G4PD*" everywhere for consistency with
  hadr-util updates.

- G4InuclElementaryParticle:  Apply "const G4PD*" everywhere for consistency
  with hadr-util updates.

- G4InculEvaporation.cc:  TEMPORARY:  Use const_cast<G4PD*> to access ctor
  of G4Fragment, until new hadr-util code is public.

10 March 2014  M. Kelsey (hadr-casc-V10-00-04)
----------------------------------------------
- G4IntraNucleiCascader.cc:  Fix bug #1584, memory leak in secondaries.

10 March 2014  M. Kelsey (hadr-casc-V10-00-03)
----------------------------------------------
- G4CascadeParameters.cc:  Restore original 10.0 version, because January
  mods caused unexpected side effects in build, which aren't being fixed.

29 January 2014  G.Folger  not tagged
-------------------------------------
- Removed cascade/utils from cascade/sources.cmake

16 January 2014  M.Kelsey (hadr-casc-V10-00-02)
-----------------------------------------------
- G4CascadeInterface:  Move static member into const data, initialize in
  ctor.  This avoids calling G4CascadeParameters::Instance() before main().

- G4CascadeCoalescence:  Move static members into const data, initialize in
  ctor.  This avoids calling G4CascadeParameters::Instance() before main().

- G4NucleiModel:  Move static members which use envvars into const data,
  initialize in ctors (with copy-and-paste code blocks).  This avoids
  calling G4CascadeParameters::Instance() before main().

7 January 2014  Dennis Wright (hadr-casc-V10-00-01)
---------------------------------------------------
- added new pi-nucleon 2-body angular distributions:
  G4PipP2PipPAngDst, G4PimP2PimPAngDst, G4Pi0P2Pi0PAngDst and G4PimP2Pi0NAngDst.
  Below 2.6 GeV, distributions taken from SAID phase shift calculations with
  Coulomb phase removed.  Above 2.6 GeV, taken from data.
- also modified: G4TwoBodyAngularDist, sources.cmake

6 January 2014  M.Kelsey (hadr-casc-V10-00-00)
----------------------------------------------
- G4CascadeParameters.cc:  Improve singleton initialization by moving static
  instance to pointer in file scope (anon namespace), check for null pointer
  in Instance() call.  Drop use of messenger (temporarily) since it's not
  thread safe.  This change needs to be backported to 9.6 and 10.0.

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 initial 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
  continuous low-energy functions, add cutoff in K.E. to match zero-energy
  cross-section value, and avoid divide-by-zero divergence.

19 October 2012  Dennis Wright
------------------------------
- for classes G4CascadePPChannel, G4CascadeNNChannel, G4CascadeNPChannel
  use Stepanov's functions to fill in total and elastic cross section arrays
  at all energy bins from 10 to 320 MeV inclusive.  Below 10 MeV use
  Stepanov's continuous functions to generate cross section.

15 October 2012  Dennis Wright (hadr-casc-V09-05-25)
----------------------------------------------------
- replace SAID cross sections with in-medium cross sections of
  Li & Machleidt for incident energies below 420 MeV.  Classes
  changed: G4CascadePPChannel, G4CascadeNNChannel, G4CascadeNPChannel.
- method findCrossSection removed from G4CascadePPChannel and G4CascadeNPChannel
  since no Coulomb is included in L&M cross sections

9 October 2012 Michael Kelsey (hadr-casc-V09-05-24)
---------------------------------------------------
- G4ExitonConfiguration: Add empty() function to test exciton state, reduce
  printout to single line.

- G4InuclNuclei.cc:  Report non-empty exciton configuration in print().

- G4NonEquilibriumEvaporator.cc:  Add additional diagnostic messages.

- G4EquilibriumEvaporator.cc:  Add additional diagnostic messages.

- G4CascadeCollisionOutput:  Add calculations of net strangeness.

- G4CascadeCheckBalance:  Add reporting of strangeness conservation (but do
  not require validation).

1 October 2012 Michael Kelsey (hadr-casc-V09-05-23)
---------------------------------------------------
- sources.cmake:  Add G4CascadeOmegaMinus*Channel.hh and .cc.

1 October 2012 Dennis Wright, M. Kelsey (hadr-casc-V09-05-22)
-------------------------------------------------------------
- G4CascadeChannelTables.cc: Add "om*pro" and "om*neu" to LoadTables.

- create classes G4CascadeOmegaMinusPChannel and G4CascadeOmegaMinusNChannel
  containing partial cross sections for omega- p and omega- n reactions

25 September 2012 Gabriele Cosmo (hadr-casc-V09-05-21)
------------------------------------------------------
- Explicitly use inclusion of headers for system of units and physical
  constants, in plan to remove implicit inclusion from globals.hh.

18 September 2012 Michael Kelsey (hadr-casc-V09-05-20)
------------------------------------------------------
- G4CascadeParamMessenger.cc:  Fix complier warning from ctor initializers.

13 September 2012 Michael Kelsey (hadr-casc-V09-05-19)
------------------------------------------------------
- G4CascadeParamMessenger:  NEW class to define UI macro commands for
  setting the G4CascadeParameters (string) values, as an alternative to
  environment variables.

- G4CascadeParameters:  Add new G4CascadeParamMessenger (with friendship)
  to fill envvar-mapped parameters (const char*) from UI interface.

- sources.cmake:  Add G4CascadeParamMessenger.hh,cc, add dependences on
  G4intercoms (libraries and include dirs).

- GNUmakefile:  Add -I.../intercoms/include.

9 September 2012 Michael Kelsey (hadr-casc-V09-05-18)
-----------------------------------------------------
- G4CascadePPChannel.hh, G4CascadeNPChannel.hh: Replace 'typedef' with
  subclass of templated base.  Declare overridden findCrossSection()
  function.

- G4CascadePPChannel.cc, G4CascadeNPChannel.cc: Implement overrrided
  findCrossSection() function to apply analytic (parametrized) function for
  very low energy projectiles, falling back to base interpolation otherwise.

7 September 2012 Michael Kelsey (hadr-casc-V09-05-17)
-----------------------------------------------------
- sources.cmake:  Forgot to change list of source files to match renaming.

4 September 2012 Michael Kelsey (hadr-casc-V09-05-16)
-----------------------------------------------------
Per Dennis, rename all three nucleon-nucleon channel files to remove the
isospin designation.  Files now match corresponding .hh files:

	G4CascadeT1ppChannel.cc -> G4CascadePPChannel.cc
	G4CascadeT1nnChannel.cc -> G4CascadeNNChannel.cc
	G4CascadeT0npChannel.cc -> G4CascadeNPChannel.cc

4 September 2012 Michael Kelsey
-------------------------------
- G4CascadeT0npChannel.cc:  Fix misplaced semicolon in exclusive xsec list.

3 September 2012 Dennis Wright
------------------------------
- G4CascadeT1ppChannel.cc, G4CascadeT1nnChannel.cc, G4CascadeT0npChannel.cc:
  Use SAID calculations for total and elastic cross-sections up to 320 MeV.

31 August 2012 Michael Kelsey
-----------------------------
- G4CascadeT1NNChannel.cc:  REMOVE.  Split into separate pp and nn files.
- G4CascadeT1ppChannel.cc:  NEW.  Only proton-proton part of T1NNChannel.
- G4CascadeT1nnChannel.cc:  NEW.  Only neutron-neutron part of T1NNChannel.
- sources.cmake:  Remove T1NNChannel, add T1ppChannel and T1nnChannel.

22 August 2012 Michael Kelsey (hadr-casc-V09-05-15)
---------------------------------------------------
Consolidate all user-configurable environment variables into singleton
container class, instead of having them local to the code which uses them.
This will provide a way to query and report on values in a consistent way.

- G4CascadeParameters:  NEW singleton container class to hold and evaluate
  any user-configured environment variables.  Default values for parameters
  are provided, with code moved from original locations (see below).  Three
  new envvars are also defined:

  G4CASCADE_VERBOSE
	Pre-set verbosity in G4CascadeInterface constructor,
	passes down to all constituent modules.

  G4CASCADE_USE_PRECOMPOUND
	Select use of PreCompoundModel in G4CascadeInterface constructor.

  G4NUCMODEL_USE_BEST
	Pre-set all defaults for nuclear model with physical units.

- G4CascadeInterface.hh: Add new function for dumping configuration.

- G4CascadeInterface.cc: Replace environment variable usage with calls to
  G4CascadeParameters.  Add pre-setting of verbosity and PreCompoundModel.
  Implement configuration dump as call-through to G4CascadeParameters.

- G4CascadeCoalescence.cc: Replace environment variable usage with calls to
  G4CascadeParameters.

- G4IntraNucleiCascader.cc: Replace environment variable usage with calls to
  G4CascadeParameters.

- G4NucleiModel.cc: Replace environment variable usage with calls to
  G4CascadeParameters.

- sources.cmake: Add G4CascadeParameters.hh,.cc.

-----
NOTE:  Tag hadr-casc-V09-05-14 and changes to G4CascadeInterface.cc were
       lost due to SVN repository incident.
-----

3 July 2012 Michael Kelsey (hadr-casc-V09-05-13)
------------------------------------------------
- G4CascadeCoalescence.cc:  Bug fix: list of clusters already tried was not
  cleared at start of new event, so entries from previous events prevented
  formation of valid clusters.  Also improve diagnostic messages somewhat.

8 June 2012 Michael Kelsey (hadr-casc-V09-05-12)
------------------------------------------------
Address compiler warnings about variable-shadowing (local variable has same
name as data member or global variable) which appear when "-Wshadow" is used.

	G4InuclSpecialFunctions.hh
	G4CascadeSampler.icc
	G4CascadeData.icc
	G4InuclElementaryParticle.hh
	G4InuclEvaporation.cc
	G4EquilibriumEvaporator.cc
	G4InuclElementaryParticle.cc
	G4NonEquilibriumEvaporator.cc
	G4NucleiModel.cc
	G4CascadeInterface.cc
	G4InuclSpecialFunctions.cc
	G4ElementaryParticleCollider.cc
	G4BigBanger.cc
	(evaporation) G4BENeutronChannel.cc
	(evaporation) G4BEChargedChannel.cc
	(evaporation) G4BertiniEvaporationChannel.cc

25 May 2012 Michael Kelsey (hadr-casc-V09-05-11)
------------------------------------------------
- G4Dineutron.cc, G4Diproton.cc, G4UnboundPN.cc:  Add code to protect
  against warning messages from G4ParticleTable::Remove(), introduced with
  particles-V09-05-03.

- G4CascadeCheckBalance.cc:  Lower verbosity level for energy-conservation
  reports, change violation rules to allow relative OR absolute passing,
  consistent with new process-level checks.

- G4CascadeInterface.cc:  Check for small negative projectile energy and
  force to zero, to protect against occasional G4HadFinalState exceptions.

23 May 2012 Michael Kelsey (hadr-casc-V09-05-10)
------------------------------------------------
- G4CascadeInterface:  Add local implementation of IsApplicable(), both the
  base class (track,nucleus) and one using G4ParticleDefinition.  Returns
  true only if interaction tables are defined for projectile.

21 May 2012 Alberto Ribon (hadr-casc-V09-05-09)
-----------------------------------------------
- G4IntraNucleiCascader.cc:  Specify mass when decay trapped particle.
  This fixes reproducibility violations when hyperons are forced to
  decay inside the nucleus.

17 May 2012 Alberto Ribon (hadr-casc-V09-05-08)
-----------------------------------------------
- G4Fissioner.cc:  Removed static in local vectors AL1 and BET1 in the
  method G4Fissioner::collide, to ensure reproducibility.

4 April 2012  Michael Kelsey (hadr-casc-V09-05-07)
--------------------------------------------------
- G4CascadeCoalescence.cc:  Use std::ostream_iterator<size_t> to report
  cluster indices, to avoid compiler warning.

21 March 2012  Michael Kelsey (hadr-casc-V09-05-06)
---------------------------------------------------
- G4NucleiModel.cc:  Add check in isProjectile() for single-zone nuclei, and
  ignore "movingInward" flag in that case.

20 March 2012  Michael Kelsey (hadr-casc-V09-05-05)
---------------------------------------------------
- G4NucleiModel.cc:  Fill zone_volumes buffer for single-zone case.

14 March 2012  Michael Kelsey
-----------------------------
- test/: Tagged all existing, obsolete code as "OLD_Validation_Suite" for
  future recovery if desired.  Remove all code and files from active use, to
  be replaced with our separate "ppi4GeV" utility program, suitably renamed.

9 March 2012  Michael Kelsey
----------------------------
- G4CascadeSigmaMinusPChannel.cc: Change zero-bin cross-sections for
  Lambda-n and Sigma0-n, based on data from M. Goossens et al. measurements
  of Sigma- capture (per J. Yarba).

- G4NucleiModel.cc:  Add scale factor, set via envvar, for gamma absorption.

8 March 2012  Michael Kelsey
----------------------------
- G4NucleiModel.cc:  In absorptionCrossSection() add binned spectrum derived
  from Mikhail Kossov's gamma-D absorption data, for use with photons.

- G4ElementaryParticleCollider.cc:  Modify sanity checks on dibaryon targets
  to allow both photons and gamma to interact; gammas split the dibaryons
  the same way pi0's do.

7 March 2012  Michael Kelsey
----------------------------
- G4NucleiModel: In generateInteractionPartners() and
  absorptionCrossSection(), allow photons to be absorbed via dibaryon
  (quasideuteron) excitation.  Simplify and encapsulate path-length
  computations in generateInteractionPartners(), with several new internal
  functions, and a buffer to store the zone-by-zone shell volumes.

5 March 2012  Michael Kelsey
----------------------------
- G4CascadParticle.hh:  Add public accessor for cumulative path length.

- G4NucleiModel.cc:  In generateInteractionPartners(), check to see if
  CParticle is incident projectile (inbound from outside nucleus, not
  created in outer zone).  If so, force interaction to be attempted rather
  than cutting on mean free path.

- G4CascadeKminusPChannel.cc:  Modify two-body cross-section values in
  zero-energy bin, to reflect stopping data from Julia Yarba.

25 January 2012  Michael Kelsey (hadr-casc-V09-05-04)
-----------------------------------------------------
- G4CascadeInterface.cc: Check for no-interaction in retryInelasticProton,
  both in return value and in debugging report.

25 January 2012  Michael Kelsey (hadr-casc-V09-05-03)
-----------------------------------------------------
- G4NucleiModel.hh:  In getPotential() add test for ip==9 (photon) to return
  zero potential.  Otherwise it will return the 7 MeV flat pion potential,
  which is not correct.

20 January 2012  Vladimir Ivantchenko (hadr-casc-V09-05-02)
-----------------------------------------------------------
- G4PreCompoundDeexcitation.cc: Do not delete pre-compound model and excitation
  handler to avoid double deletion

 6 January 2012  Dennis Wright (hadr-casc-V09-05-01)
----------------------------------------------------
- G4ElementaryParticleCollider.cc:  add angular distributions for elastic and
  inelastic 2-body final states of gamma p and gamma n reactions.

19 December 2011  Michael Kelsey (hadr-casc-V09-05-00)
------------------------------------------------------
- G4ElementaryParticle.cc:  Expand diagnostics in getMomModuleFor2toMany(),
  in generateSCMfinalState(), defer "particles.resize()" action until after
  final-state properties have been validated.  In case no final state can be
  generated, this ensures that the failure propagates back up the calling
  chain, instead of simply looping forever.

- G4NucleiModel.cc:  If G4ElementaryParticle::collide() returns empty
  output, stop propagating.

7 November 2011  Michael Kelsey (hadr-casc-V09-04-41)
-----------------------------------------------------
- G4NucleiModel.cc:  Due to some validation discrepancies, revert structure
  parameters to old non-physical values.

- G4ElementaryParticleCollider.cc:  In sampleCMmomentumFor2to2(), hide
  message about unrecognized initial-state behind verbosity flag.

3 November 2011  Dennis Wright  (hadr-casc-V09-04-40)
-----------------------------------------------------
- G4CascadeInterface.hh, .cc: switch from Description() to ModelDescription()

27 October 2011  Gabriele Cosmo (hadr-casc-V09-04-39)
-----------------------------------------------------
- Added workaround to use 'this' pointer for internal calls in
  G4CascadeFunctions.hh/.icc, to allow for compilation on Xcode on MacOX Lion.

18 October 2011  Michael Kelsey (hadr-casc-V09-04-38)
-----------------------------------------------------
- G4CascadParticle.cc:  In getPathToTheNextZone(), check for zero momentum
  (pp < 1e-9) and return zero path-length; this will support capture at rest.

- G4NucleiModel.cc:  Change kaon potential to be positive, not negative, so
  slow kaons will occasionally be captured.

7 October 2011  Dennis Wright, Michael Kelsey
---------------------------------------------
- sources.cmake:  Add new channel files below.

- G4CascadeGamNChannel.hh, G4CascadeGamPChannel.hh, G4CascadeT1GamNChannel.cc:
  NEW final state tables for gamma-nucleon interactions, with final states
  up to 9-body, using the same energy binning as pion-nucleon.

- G4CascadeChannelTables.cc:  Add new gamma-nucleon interaction states to
  LoadTable() switch block.

- G4ElementaryParticleCollider.cc:  Add printing of gamma-nucleon tables.

- G4EquilibriumEvaporator.cc:  Replace hardwired particle codes with enums.

- G4InuclParticleNames.hh:  Change photon code to '9', to avoid initial
  state conflict between piMinus-n (= 5*2 = 10) and gamma-p (= 10*1 = 10).

4 October 2011  Michael Kelsey (hadr-casc-V09-04-37)
----------------------------------------------------
- G4IntraNucleiCascader.cc, G4ElementaryParticleCollider.cc,
  G4InuclCollider.cc:  Prepare for gamma-N interactions by checking for
  existence of final-state tables, rather than for "isPhoton()".

28 September 2011  Michael Kelsey (hadr-casc-V09-04-36)
-------------------------------------------------------
- evaporation/src/G4BertiniEvaporation.cc: Migrate to integer A&Z.  This
  code is moribund; migration is to avoid compilation errors.

27 September 2011  Michael Kelsey (hadr-casc-V09-04-35)
-------------------------------------------------------
- G4CascadeCoalescence.cc: BUG FIX for Windows: Replace strtof() with strtod().

27 September 2011  Michael Kelsey (hadr-casc-V09-04-34)
-------------------------------------------------------
- G4CascadeCoalescence.cc: BUG FIX for GCC>4.2: Add missing #include <iterator>.

26 September 2011  Michael Kelsey (hadr-casc-V09-04-33)
-------------------------------------------------------
- G4ElementaryParticleCollider.cc:  Protect against non-physical arguments
  and FPE in two-body angular distributions.

- G4IntraNucleiCascader.cc:  Replace compiler flag with one-time envvar
  access in ctor to enable clustering.

23 September 2011  Michael Kelsey (hadr-casc-V09-04-32)
-------------------------------------------------------
- sources.cmake:  Add G4CascadeChannel.cc.

- G4CascadeChannel:  Add optional stream& argument to printTable(), and new
  stream operator<<, calling virtual printTable().

- G4CascadeChannelTables:  Add optional stream& argument to printTable().

- G4CascadeData, G4CascadeFunctions, G4CascadeSampler,
  G4CascadeInterpolator:  Add optional stream& argument to print()
  functions, and pass through to members.

- G4ElementaryParticleCollider:  Add optional stream& argument to
  printFinalStateTables(), pass through to printing tables.

22 September 2011  Michael Kelsey
---------------------------------
- sources.cmake:  Add G4ExitonConfiguration.cc, G4FissionConfiguration.cc

- G4CascadeInterface.cc:  Modify throwNonConservationFailure() to be ready
  to use G4ExceptionDescription, once G4HadronicException supports it.

Replace most G4cout-specific print() functions with stream operators, in
order to anticipate supporting G4ExceptionDescription streams.

- G4CascadParticle: Add ostream& to print(), without trailing endl.  Define
  operator<<, calling virtual print().  Affects two classes:

	G4IntraNucleiCascader.cc	G4NucleiModel.cc

- G4CollisionOutput:  Add optional ostream& to printCollisionOutput(), with
  G4cout as the default.  No clients affected.

- G4ExitonConfiguration, G4FissionConfiguration:  Replace print() with
  stream operator<<, defined in new .cc files.  Affects G4FissionStore.cc.

- G4InuclParticle, G4InuclNuclei, G4InuclElementaryParticle:  Add ostream&
  to printParticle(), renamed as print(), without trailing endl.  Define
  operator<< only in base class, calling virtual print().  Affects 12 classes:

	G4BigBanger.cc			G4CascadParticle.cc
	G4CascadeCoalescence.cc		G4CascadeInterface.cc
	G4CollisionOutput.cc		G4ElementaryParticleCollider.cc
	G4EquilibriumEvaporator.cc	G4EvaporationInuclCollider.cc
	G4Fissioner.cc			G4IntraNucleiCascader.cc
	G4NonEquilibriumEvaporator.cc	G4NucleiModel.cc

22 September 2011  Michael Kelsey
---------------------------------
- G4CascadeCoalescence:  Add list of clusters already attempted, check list
  at top of tryClusters() to reduce combinatorial explosion (factor of >10).

22 September 2011  Michael Kelsey (hadr-casc-V09-04-31)
-------------------------------------------------------
- G4CascadeCoalescence.cc:  Create light ions without excitation energy.
  This will violate energy conservation, but is necessary since the excess
  from momentum exceeds the binding energy.

- G4IntraNucleiCascader.cc:  Recompute recoil fragment after clustering, to
  account for E-violation (above).

20 September 2011  Michael Kelsey
---------------------------------
- G4CascadeCoalescence.cc:  Relative momenta computed in c.m. frame of
  nucleon pair, not in event frame.  Add environment variables for cuts:
  DPMAX_2CLUSTER, DPMAX_3CLUSTER, DPMAX_4CLUSTER.  Clean up interfaces
  to use cluster as argument instead of polymorphic lists.  Improve
  combinatorics.

19 September 2011  Michael Kelsey
---------------------------------
- G4CascadeCoalescence:  NEW factory class to implement conversion of
  final-state nucleon "clusters" into light ions.  Uses LAQGSM algorithm
  (Sec. 2.3, http://lib-www.lanl.gov/la-pubs/00818645.pdf).

- G4IntraNucleiCascader:  Add final-state clustering as OPTIONAL facility,
  controlled through compile-time flag G4CASCADE_DO_COALESCENCE.  Clustering
  is done during cascade finalization.

- G4InuclNuclei.cc:  Allow A=0,Z=0 to produce null definition pointer.

- G4InuclParticle:  Add Coalescence to list of model IDs; move setDefinition
  to .cc file and allow passing null pointer.

- GNUmakefile:  Add G4CASCADE_DO_COALESCENCE flag.

16 September 2011  Michael Kelsey (hadr-casc-V09-04-30)
-------------------------------------------------------
- G4CascadeChannelTables:  Add load-on-demand via GetTable().  Move static
  implementations to .cc file (Windows compatibility issue).

- 	G4CascadeFunctions.icc:  Remove self-registration from ctor.

- G4Cascade*Channel.cc:  Remove all namespace self-instantiations;
  initialization is inconsistent across platforms.

31 August 2011  Michael Kelsey
------------------------------
- G4CascadeInterface.cc:  Undo copying of G4V3DNucleus; creates incorrect
  PDG codes for proton and neutron.

31 August 2011  Michael Kelsey (hadr-casc-V09-04-29)
----------------------------------------------------
- G4NucleiModel.cc:  Make "best guess" parameters defaults for structure model,
  leave "old" versions in place with C-style comments on each line.

- G4CascadParticle.cc:  Add protection against negative radicand.

29 August 2011  Michael Kelsey
------------------------------
- G4InuclNuclei:  Add constructor to copy G4V3DNucleus.
- G4CascadeInterface.cc:  Use new G4InuclNuclei ctor in ::Propagate()
- G4IntraNucleiCascader.cc:  Fill excitation state with holes determined
  from input G4V3DNucleus "hits".

25 August 2011  Michael Kelsey (hadr-casc-V09-04-28)
----------------------------------------------------
- G4EquilibriumEvaporator.cc:  Remove unprotected diagnostic statement.

25 August 2011  Michael Kelsey (hadr-casc-V09-04-27)
----------------------------------------------------
- G4NucleiModel:  Remove obsolete local cross-section arrays; use standard
  tables, which are numerically equivalent.  Add comment block with "best
  guess" values for converting model to physical units (these will hopefully
  become the defaults).

9 August 2011  Michael Kelsey (hadr-casc-V09-04-26)
---------------------------------------------------
- G4CascadParticle:  Add ::fill() function with ctor args to allow loading
  vectors by "assignment," rather than with temporaries.

- G4BigBanger.cc, G4ElementaryParticleCollider.cc:
  Reduce memory churn by using resize() and array assignment instead of
  push_back() with temporaries where appropriate.

- G4NucleiModel:  Move return buffer from generateParticleFate to non-const
  input argument, eliminating unnecessary copy.

- G4IntraNucleiCascader.cc:  Move "new_cascad_particles" to be argument to
  generateParticleFate(), for filling instead of copying.

- G4EquilibriumEvaporator.cc:  Improve building final-state particles to
  reduce creation of temporaries.

9 August 2011  Michael Kelsey
-----------------------------
- G4CascadeInterface.cc:  Clean up Description() implementation somewhat.
- G4EquilibriumEvaporator:  Move foutput to data member, use reference access.

9 August 2011  Dennis Wright
----------------------------
- G4CascadeInterface:  Add Description() function for autogenerated HTML.

3 August 2011  Michael Kelsey (hadr-casc-V09-04-25)
---------------------------------------------------
- G4PreCompoundDeexcitation.cc:  Add diagnostic output when processing results.
- G4CollisionOutput.cc:  Add diagnostics for copying G4ReactionProducts, and
  fix bug with momentum units (must convert to Bertini GeV).

2 August 2011  Michael Kelsey
-----------------------------
- G4CascadeChannel.hh:  Add ctor and virtual dtor (with no action) to fix
  Coverity report #29838.

2 August 2011  Michael Kelsey (hadr-casc-V09-04-24)
---------------------------------------------------
- G4CascadeInterface.cc:  Use new G4DecayKineticTracks in Propagate to
  handle short-lived inputs.  Requires hadr-mod-util-V09-04-01.

1 August 2011  Michael Kelsey (hadr-casc-V09-04-23)
---------------------------------------------------
- G4InuclElementaryParticle:  Add fill() functions to reuse existing object,
  reducing memory churn due to creating temporaries.

- G4CascadeInterface.cc:  Update local buffers to use G4InuclEP::fill().

- G4CollisionOutput.cc:  Use resize() and set/fill to eliminate temporary
  copies in addOutgoingParticles(G4ReactionProductVector*).

- G4IntraNucleiCascader:  Add local buffers for rescattering target, use
  fill to reduce memory churn, and eliminate memory leak!

31 July 2011  Michael Kelsey
----------------------------
- G4CascadeInterface: Add local buffers for bullet and target possibilities,
  assign pointers to buffer addresses as appropriate.  Reduces per-event
  memory churn for each particle.

- G4EquilibriumEvaporator: Move "parms" buffer (pair<vector<>,vector<>>) to
  data member, pre-allocate known size, to reduce per-event memory churn.

- G4FissionConfiguration.hh:  Make ::print() const.

- G4FissionStore: Move "probs" vector to data member, reducing memory churn.

- G4Fissioner: Use C-style arrays as arguments to potentialMinimization,
  since size is fixed.  Reduces memory churn.

29 July 2011  Michael Kelsey
----------------------------
- G4CascadParticle.hh:  Add functions to explicitly set all data members,
  including initial path and generation, to support changes below.  Re-order
  member functions in set/get pairs.

- G4IntraNucleiCascader:  Replace convertKineticToCascade() with
  processSecondary(), which writes directly to G4CascadParticle "buffer" in
  processing list.  Eliminates new/delete cycling and memory churn.

29 July 2011  Michael Kelsey (hadr-casc-V09-04-22)
--------------------------------------------------
- G4CascadeChannelTables.cc:  Use FindTable() to determine if table has been
  created already or not.  Add "clear()" to ctor to initialize empty map
  (GCC 4.1.2 segfaults on first insertion otherwise).  Add diagnostic
  messages hidden with G4CASCADE_DEBUG_SAMPLER compiler flag.

28 July 2011  Michael Kelsey
----------------------------
Fix, or flag as "Ignore," all outstanding Coverity reports.

20228 G4CascadeFunctions.icc:  Fix bug, compare (mult > maxMult) and set to
	max on true.  Otherwise, mult can overflow array dimension.

20230 G4CascadeInterpolator.icc:  Remove "recursive" #include of .hh file.

20231 G4CascadeSampler.icc:       Remove "recursive" #include of .hh file.

22951 G4EquilibriumEvaporator.cc:  Check for icase<0 after assignment loop,
	to avoid invalid array subscript.

22954 G4CascadeData.icc:          Remove "recursive" #include of .hh file.

22955 G4CascadeFunctions.icc:      Remove "recursive" #include of .hh file.

23843 G4EvaporationInuclCollider:  Add dtor to delete EquilibriumEvaporator.

28776 G4InuclEvaporation.cc:  Remove return following throw.

27 July 2011  Michael Kelsey (hadr-casc-V09-04-21)
--------------------------------------------------
- G4CascadeInterface.cc:  Simplify NoInteraction() per V.Ivantchenko.  No
  particles are returned, but "SetEnergyChange" is used to communicate to
  tracking that real track should be stopped and deposit all its energy.

- G4NucleiModel:  Compared local kaon/hyperon cross-section tables with
  sum-of-exclusive tables from G4Cascade*Channel.cc; all bin values below 10
  GeV are identical.  The channel tables have a somewhat more realistic
  treatment of high energy projectiles (a logarithmic decrease rather than
  flat).  Remove the local arrays, using channel table lookup for everything.

25 July 2011  Michael Kelsey (hadr-casc-V09-04-20)
--------------------------------------------------
Make cross-section tables self-registering at job initialization.  No switch
blocks needed any longer:  new initial-state tables become usable without
any code modification.

- G4CascadeData:  Add data member storing initial state argument.

- G4CascadeFunctions:  Move constructor implementation to .icc file, where
  registration to lookup table is done.

- G4CascadeChannelTables:  Change from namespace back to class, with
  std::map as data member.  Add public function to register new table in
  map, and return null pointer if lookup fails (i.e., no create-on-demand).

- G4Cascade*Channel.cc:  Add local instance of each cross-section table,
  used solely to trigger auto-registration in base class ctor.  The
  corresponding .hh files no longer appear anywhere else in Bertini code.

25 July 2011  Michael Kelsey (hadr-casc-V09-04-19)
--------------------------------------------------
- sources.cmake:  Update HEADERS and SOURCES list with new code added 20
  July 2011.  This must be done manually.

22 July 2011  Michael Kelsey (hadr-casc-V09-04-18)
--------------------------------------------------
- G4CascadeInterface.cc:  In makeDynamicParticle(), allow invalid type codes
  in order to process, e.g., resonances from Propagate() input.

- G4InuclNuclei.hh:  Fix bug in ctor (mom,A,Z,Eexc,model) -- failed to set
  excitation energy; causes energy non-conservation in de-excitation code.

22 July 2011  Michael Kelsey (hadr-casc-V09-04-17)
--------------------------------------------------
- G4IntraNucleiCascader:  Deprecate local "output_particles" list in favor
  of using "output" (G4CollisionOutput) buffer directly.  This will support
  handling light ions and unrecognized particles for rescattering.

- G4CascadeCheckBalance:  Replace std::vector<G4InuclEP> argument with
  G4CollisionOutput in version of ::collide() for G4IntraNucleiCascader.

- G4CascadeRecoilMaker:  Replace std::vector<G4InuclEP> argument with
  G4CollisionOutput in version of ::collide() for G4IntraNucleiCascader.

21 July 2011  Michael Kelsey
----------------------------
- G4IntraNucleiCascader:  For pre-cascade rescattering, put resonances, or
  any particle which cannot be propagated by Bertini, directly onto output,
  without decaying.  Requires G4InuclEP constructor which takes G4PartDef
  directly, avoiding possibly undefined type codes.

  NOTE:  The ::rescatter() process doesn't generate a proper recoil nucleus
  because outgoing_particles is used, rather than output.

- G4InuclParticle:  Modify all constructors to take the model code as an
  optional argument, so that subclasses don't have to set it manually.

- G4InuclNuclei:  Modify constructors to pass model code to base (as above),
  instead of calling SetModel() explicitly.

- G4InuclElementaryParticle: Modify constructors to pass model code to base
  (as above), instead of calling SetModel() explicitly.  Add new constructor
  which takes G4ParticleDefinition* argument instead of type code.  Allows
  client code to create objects without a valid (enumerated) type, e.g. for
  passing pre-cascade resonances through to output.

21 July 2011  Michael Kelsey (hadr-casc-V09-04-16)
--------------------------------------------------
- G4ElementaryParticleCollider.cc:  Hide "mult" argument to
  getMomModule2toMany(), as it is no longer used (V. Uzhinsky's fix).  Fixes
  compilation warning from hadr-casc-V09-04-15.

- G4CascadeInterface.cc:  In NoInteraction(), only projectile should be
  copied to final state, not target nucleus.

- G4CascadeT1NNChannel.cc:  Fix final 9-body final-state list for both nn
  and pp:  existing entries violate charge.

20 July 2011  Michael Kelsey
----------------------------
- G4CascadeInterface:  Drop local copy of G4HadFinalState (theResult),
  available directly from base class (theParticleChange).  Add NoInteraction()
  to copy input particle directly to return in case of problems.
  Modify createBullet() to leave pointer null if not a valid particle; in
  ApplyYourself(), check for both null bullets and bullet types without
  interaction tables and return NoInteraction() in those cases.  Fix bug in
  reporting charge violation.

- G4CascadeChannel.hh:  Repurpose this as non-template base class for all
  cross-section tables, specifying public interface (pure virtual).  Used
  with multiple inheritance for G4CascadeFunctions<> to allow instantiation
  and pointer return (below).

- G4CascadeChannel.cc:  DELETE code from previous version of name.

- G4CascadeFunctions:  Add inheritance from G4CascadeChannel, replace
  static functions with virtual; must create instance from now on.

- G4CascadeChannelTables:  NEW namespace with function to return
  cross-section tables by pointer based on two-body initial state.

- G4ElementaryParticleCollider.cc:  Remove all switch-blocks, replace with
  calls to G4CascadeChannelTables; in PrintFinalStateTables, use convenience
  funciton directly in G4CascadeChannelTables.

- G4NucleiModel.cc:  Remove use of G4CascadeXXXChannel in switch block;
  under "default:", make calls to G4CascadeTables.

19 July 2011  Michael Kelsey (hadr-casc-V09-04-15)
--------------------------------------------------
- G4CascadeInterface.cc:  If accept/reject loop fails (maximum retries),
  return initial state untouched rather than last generated cascade.  This
  avoids exposing an elastic scattering event under any circumstances.

19 July 2011  Michael Kelsey (hadr-casc-V09-04-14)
--------------------------------------------------
- G4ChannelData:  Add new ctor argument "initialState", to specify the
  product of the hadrons (e.g., for KminusP, the value is "kmi*pro").  This
  argument is used to find the elastic channel cross-sections to be
  subtracted from tot[] to get inelastic[] (other two-body channels,
  including the quasi-elastic charge exchange, are treated as inelastic).

- G4Cascade*Channel.cc:  Add new ctor argument for all cross-section tables.

18 July 2011  Michael Kelsey (hadr-casc-V09-03-91) ***BRANCH TAG***
--------------------------------------------------
- G4LorentzConvertor.cc:  Copy HEAD version, which includes protections for
  ::rotate() applied to at-rest system (i.e., z-axis ~ (0,0,0)), and
  simplifies calculations to avoid similar errors elsewhere.

NOTE:  Changes below not included in branch tag.

18 July 2011  Michael Kelsey (hadr-casc-V09-04-13)
--------------------------------------------------
- G4ChannelData:  Add new "inelastic" array, filled in initialize() to the
  sum of 3-body and higher multiplicity cross-sections.

- G4CascadeInterface.cc:  Change an error message to not show "ApplyYourself"

- G4ElementaryParticleCollider.cc:  Per V. Uzhinskiy, remove special
  "mult==3" case from getMomModule2toMany().  Replace magic numbers in
  switch blocks with particle-name enums.

1 July 2011  Michael Kelsey
---------------------------
- G4NucleiModel.hh/.cc, G4InuclPartice.hh, G4InuclElementaryParticle.hh:
  Copy minor comment changes applied to 9.4-ref-06 and 9.5-beta to HEAD.

17 June 2011  Michael Kelsey
----------------------------
- G4NucleiModel.cc:  Change "R_nucleon" (trailing effect nucleon radius) to
  be adjustable parameter using G4NUCMODEL_RAD_TRAILING.  Also apply radius
  scaling factor to numerical value.  This code should NOT be proposed for
  builds until tested with thick-target models.

2 June 2011  Michael Kelsey (hadr-casc-V09-04-12)
-------------------------------------------------
- G4LorentzConvertor:  Drop most "intermediate" kinematic parameters used in
  rotate, in favor of somewhat more direct vector operations.  Change test
  for "degenerated" to use "small" rather than "small*small".

25 May 2011  Michael Kelsey (hadr-casc-V09-04-11)
-------------------------------------------------
- G4LorentzConvertor.cc:  Add diagnostic messages in both ::rotate().

- G4NucleiModel.cc:  Revert length scales to pre-V09-04-04 ("2.82" factor);
  see 18 March 2011 notes below.  Should undo visible-energy and angular
  distribution effects seen in GEANT4 9.4-ref-04 testing.

19 May 2011  Michael Kelsey (hadr-casc-V09-04-10)
-------------------------------------------------
- G4CollisionOutput.cc:  Drop unused "p2" from selectPairToTune().
- G4NucleiModel.cc:  Use computed value "rho" instead of recomputing twice.

- G4CascadeInterface: Add support for capturing random-engine state to user
  file (specified with environment variable G4CASCADE_RANDOM_FILE) at each
  ApplyYourself() or Propagate() invocation.  This will allow (hopefully!)
  easier reproduction of crashes in complex applications.

3 May 2011  Michael Kelsey
--------------------------
- G4LorentzConvertor.cc:  Add a couple of diagnostic messages to ::rotate().

27 April 2011 Michael Kelsey (hadr-casc-V09-04-09)
--------------------------------------------------
- G4InuclNuclei.cc:  Remove preface about "non-standard PDGencoding," since
  particles-V09-04-01 has removed the corresponding warning messages.

15 April 2011 Michael Kelsey
----------------------------
- G4ParticleLargerEkin.hh, G4ParticleLargerBeta.hh: Add interfaces to do
  sorting of G4CascadParticles, needed for initial setup of ::Propagate().

- G4IntraNucleiCascader.cc:  In ::copySecondaries(), sort list by kinetic
  energy.

13 April 2011 Michael Kelsey (hadr-casc-V09-04-08, hadr-casc-V09-03-88)
-----------------------------------------------------------------------
- G4ElementaryParticleCollider.cc:  For 2-body scattering, adjust test to term1
  to avoid divide-by-zero errors (see 19 Jan 2011, tag -00).

13 April 2011 Michael Kelsey
----------------------------
- G4NucleiModel:  Encapsulate trailing effect test in ::passTrailing().

13 April 2011 Michael Kelsey (hadr-casc-V09-04-07)
--------------------------------------------------
Deploying operational rescattering.  This code requires modifications to
G4VIntraNuclearTransportModel.hh and G4TheoFSGenerator.hh which are included
in the geant4-09-04-ref-03 build.

NOTE:  In testing, some input cascades lead to nuclei with excessive
excitation energy; this code should not be used in production.

- G4CascadeInterface.cc: Add construction of bullet from cached copy of
  original projectile, saved by G4TheoFSGenerator.

- G4InuclCollider.cc:  Adjust diagnostic messages in ::rescatter() to match
  those in ::collide().

- G4IntraNucleiCascader.cc:  Reduce number of retries from 1000 to 100.

28 March 2011 Michael Kelsey
----------------------------
- G4CascadeCheckBalance.hh:  Add non-limit ctor and explicit limit setting.
- G4CascadeInterface.cc:  Set internal E/p limits to match Gunter's below
  (currently 5% and 10 MeV, want to make them tighter).

28 March 2011 Gunter Folger
----------------------------
- Set up for E/p checking by G4HadronicProcess in ctor of G4CascadeInterface.

24 March 2011 Michael Kelsey
----------------------------
- G4NucleiModel:  Add optional argument to reset() with list of collision
  points, for copying cascade state when rescattering.

- G4IntraNucleiCascader:  Add list of hit-nucleon locations, filled by
  copyWoundedNucleus() for initialization of G4NucleiModel (above).

24 March 2011 Dennis Wright (hadr-casc-V09-04-06)
-------------------------------------------------
- G4NucleiModel - add trailing effect

23 March 2011 Michael Kelsey
----------------------------
- G4CollisionOutput.hh:  Add non-const accessors for lists.

21 March 2011 Michael Kelsey (hadr-casc-V09-04-03-01, -V09-04-05)
--------------------------------------------------
Fixes for compiler warnings (and one error on Windows).  The -03-01 tag
backs out change to G4NucleiModel.cc in -04 tag, which will be restored to
the HEAD.

- G4InuclElementaryParticle:  Make getStrangeness() and getStrangeness(type)
  both return G4int.
- G4CascadeColliderBase.hh:  Hide names of arguments to rescatter().
- G4NucleiModel.cc:  Replace strtof() with strtod().

18 March 2011 Michael Kelsey (hadr-casc-V09-04-04)
--------------------------------------------------
- G4NucleiModel.cc:  Change internal length scale to use femtometers
  directly (instead of apparent 2.8197 fm), and internal cross-section scale
  to use fm^2 (instead of millibarns).

17 March 2011 Michael Kelsey (hadr-casc-V09-04-03)
--------------------------------------------------
Tag all revisions for deployment in next reference build.

1)  Implement most of rescattering capability (G4CascadeInterface::Propagate
    and dependent code).  Substantial factoring of ::collide() functions to
    allow functional reuse by ::rescatter().  Not operational without code
    to capture and use primary projectile.

2)  Simplify cascade test-and-repeat loops; do four-momentum balancing with
    nuclear fragment, now used exclusively as G4Fragment, at end of cascade,
    not after de-excitation.

16 March 2011 Michael Kelsey
----------------------------
More improvements to rescattering code.  Not yet functional without code to
construct "bullet" from original projectile.

- G4CascadeInterface: Simplify target-construction functions by moving
  active code to one with simple (A,Z) arguments.

- G4CollisionOutput.cc:  Add reset() at start of trivialize().

- G4IntraNucleiCascader:  Add functions to convert single G4KineticTrack to
  G4CascadParticle (move out of preloadCascade()), and to decay G4KT
  hadronic resonances in situ.  Improve diagnostic messages.

- G4InuclElementaryParticle.cc:  Move K0S/K0L "mixing" to K0/K0bar into type().

11 March 2011 Michael Kelsey
----------------------------
- G4CollisionOutput:  Include G4Fragment as part of final state for
  setOnShell() (including computing totalOutputMomentum).  Note that the
  four-momentum in G4Fragment is in GEANT4 units (MeV), not Bertini units!

- G4IntraNucleiCascader.cc:  Reorganize post-cascade handling to do
  setOnShell() check for all cases, allowing G4Fragment to be adjusted.
  This should leave final state fully balanced before InuclCollider sees it.

- G4InuclCollider.cc:  Simplify de-excitation handling (fragment test is in
  deexcite() function).  Suppress momentum-conservation check on de-excitation
  unless G4CASCADE_CHECK_ECONS compiler flag was used, as all functions have
  been confirmed to conserve four-momentum.

8 March 2011 Michael Kelsey
---------------------------
- G4InuclCollider:  Move post-cascade (deexcitation) block out of collide()
  to separate function.  Pass G4Fragment instead of G4InuclNuclei.

- G4IntraNucleiCascader.cc:  Don't put recoil "nucleus" onto output list.

- G4CollisionOutput.cc, G4InuclNuclei.cc:  Follow additions to G4Fragment
  interface to store and access charged and neutral holes separately.

4 March 2011 Michael Kelsey (kelsey-20110304)
---------------------------------------------
Continue development of rescattering infrastructure.  All executable
functionality should be in place, BUT no "bullet" is available yet, so code
(especially conservation checks) will crash with segmentation fault.

- G4CascadeColliderBase.hh:  Add ::rescatter() interface with null body, to
  enforce common interface in all (both) affected colliders.

- G4CascadeInterface:  Move conversion functions used by ::Propagate() from
  here down to G4IntraNucleiCascader.  Just pass input arguments through.
  Convert cascade results to G4ReactionProducts for ::Propagate() output.

- G4IntraNucleiCascader:  Move conversion functions used by ::Propagate() to
  here from G4CascadeInterface.  Replace ::rescatter() interface to take
  arguments from ::Propagate and do conversion locally.  Remove unnecesary
  "itry" arguments from cascade functions.

- G4InuclCollider:  Follow ::rescatter() interface change above, passing
  arguments from G4CascadeInterface through to G4IntraNucleiCascader.

- G4NucleiModel.hh:  Add optional arguments to reset() to force values of
  neutron and proton counts (default behaviour is unchanged).

3 March 2011 Michael Kelsey
---------------------------
- G4CascadeInterface:  Change name of "bulletList" to "inputFragments".

- G4CascadeRecoilMaker.cc:  Add diagnostic message to ::wholeEvent().

- G4IntraNucleiCascader:  Add function to copy input cascade particles to
  local list for propagation, move clearing functions to separate action.

- G4NucleiModel.hh:  Add accessors for radius (including zone radii),
  mapping radial position to zone index, and converting radius units.

- G4NucleiModel.cc:  Add a couple of FIXME messages about binding_energies[].

3 March 2011 Michael Kelsey (kelsey-20110303)
---------------------------------------------
- G4CascadeDeexcitation.cc:  Don't do conservation check at end of process.
- G4CascadeInterface.cc:  Rearrange messages for G4CASCADE_DEBUG_INTERFACE.
- G4CascadeOutput.cc:  Fix diagnostic message reporting initial momentum.
- G4IntraNucleiCascader.cc:  Move model->printModel() call to G4NucleiModel.
- G4NucleiModel.cc:  Put printModel() call at end of generateModel().
- G4CascadeRecoilMaker.cc:  Add diagnostics to goodNucleus().
- G4CollisionOutput.cc:  Move ini_mom calculation to fix diagnostic output.

28 February 2011 Michael Kelsey (kelsey-20110228)
-------------------------------------------------
Continue infrastructure development for rescattering.

- G4CascadeInterface:  New ::copyPreviousCascade() to transfer rescattering
  into to Bertini particles, along with data buffers for the converted list.
  New ::makeReactionProduct() for conversion of internal to external
  hadronic-tracks.  New ::makeCascadParticle() for conversion of pre-cascade
  G4KineticTrack to Bertini type.

- G4InuclCollider.cc:  Set verbosity when de-excitation module is changed.

25 February 2011 Michael Kelsey (kelsey-20110225b)
--------------------------------------------------
Develop infrastructure to support using Bertini as a "rescattering" model
for the output of the FTF simulation.

- G4CascadeColliderBase:  Add ::setVerboseLevel() function which passes
  verbosity through to G4CheckBalance data member.

- G4CascadeInterface:  Add ::createTarget(G4V3DNucleus*).  Move setVerboseLevel
  implementation to .cc file, and propagate verbosity to member objects.
  Move conservation checking to separate function.  Begin to populate Propagate
  function.

- G4IntraNucleiCascader:  Split ::collide() into separate utility functions
  to handle different stages of cascade process (initialization, cascade
  development, final state).  Add new ::rescatter() function which takes a
  list of pre-existing secondaries as input to "seed" the processing.  Add
  setVerboseLevel implementation, and propagate verbosity to member objects.

- G4InuclCollider:  Add ::rescatter() function which calls through to
  G4IntraNucleiCascader(), and setVerboseLevel implementation.

NOTE:  G4InuclCollider above was accidentally commited to kelsey-20110225a

25 February 2011 Michael Kelsey (kelsey-20110225a)
--------------------------------------------------
Infrastructure improvements to support modifying output particle lists

- G4CollisionOutput:  Add ::removeXXX() interfaces to take particles off of
  lists.

- G4InuclParticle.hh, G4InuclNuclei.hh, G4ExitonConfiguration.hh:  Add
  equality and inequality operators.  NOTE: Sorting (operator<) NOT SUPPORTED.

23 February 2011 Michael Kelsey (hadr-casc-V09-04-02)
-----------------------------------------------------
- G4NucleiModel:  Bring changes for parametrizing "rescaled" nuclear model
  parameters from orphaned CVS tag kelsey-20101020b into HEAD of SVN.  The
  scale factors are set specifically to reproduce the existing production
  code, but will be adjusted to give the model "natural units" (fm lengths
  and millibarn cross sections).  Use environment variables to set scale
  factors:

  G4NUCMODEL_RAD_SCALE  (3.3836/1.2 ~ 2.8197)
	Internal length scale (conversion from femtometers).  All of the
	lengths in G4NucleiModel are larger by this factor than one would
	expected from the literature.  To do all of the model parameter
	calculations in fm, this scale factor should be set to 1.

  G4NUCMODEL_RAD_2PAR   (not defined)
	The current model computes the nuclear radius as a one-parameter
	function of mass: 1.2*cbrt(A) (multiplied by the length scale
	above).  A better parametrization is 1.16*cbrt(A) - 1.3456/cbrt(A);
	setting this environment variable chooses that parametrization.

  G4NUCMODEL_RAD_SMALL  (8.0/G4NUCMODEL_RAD_SCALE)
	For nuclei below A=5 (alphas, tritons, etc.), instead of the
	mass-dependent scaling, a constant radius is used.  In the current
	model, a value of 8.0 (corresponding to 2.83 fm) is set; published
	data suggests 1.992 fm instead.

  G4NUCMODEL_RAD_ALPHA  (0.70)
	This scale factor multiplies G4NUCMODEL_RAD_SMALL to account for the
	anomalous binding energy of alphas compared to nearby light nuclei.
	Published data suggests a value of 0.84 instead.

  G4NUCMODEL_FERMI_SCALE (0.685)
	This factor converts from the length scale (cbrt(volume)) to the
	Fermi momentum for each nuclear species.  Published data suggests a
	value of 0.61 GeV/fm instead.

  G4NUCMODEL_XSEC_SCALE (1.)
	Scaling factors for total cross-sections.  The current code has all
	the cross sections in millbarns.  If we are able to migrate to a
	length scale in femtometers, this factor will change to 10. to
	convert mb to fm^2.

14 February 2011 Michael Kelsey (hadr-casc-V09-04-01)
-----------------------------------------------------
- G4InuclParticle:  Continue migration to enumerator Model.  Replace
  previous enum word "default" with "DefaultModel", add "PreCompound".

- G4InuclNuclei, G4InuclElementaryParticle:  Follow G4InuclParticle::Model
  migration, and drop use of "generation."

- G4CascadeRecoilMaker:  Replace integer model with G4InuclParticle::Model.

- G4BigBanger.cc, G4CollisionOutput.cc, G4ElementaryParticleCollider.cc,
  G4EqulibriumEvaporator.cc, G4Fissioner.cc, G4NonEquilibriumEvaporator.cc,
  G4PreCompoundDeexcitation.cc:  Replace integer model code with
  G4InuclParticle::Model enumerator values.

31 January 2011 Michael Kelsey
------------------------------
- G4IntraNucleiCascader.cc:  Move "momentum_in" calculation inside verbosity.

- G4InuclElementaryParticle.hh: Change getStrangeness() to return int, use
  as pseudo-bool in hyperon() implementation.  Drop local "generation" data
  member, not used anywhere.

- G4InuclParticle.hh:  Change "modelId" to enumerated type.  Will require
  numerous changes throughout code.

19 January 2011 Michael Kelsey (hadr-casc-V09-04-00)
----------------------------------------------------
- G4ElementaryParticleCollider.cc: In sampleCMcosFor2to2(), protect against
  divide-by-zero by testing for term1==0. before other computations.
  Addresses ~10^-7 FPE rate reported by A. Dotti.

16 January 2011 Michael Kelsey
------------------------------
- G4InuclParticleNames.hh:  Add enumerator values for some light ions as
  "elementary particles," and names for antibaryons and light antinuclei.
  These will support upcoming developments, but are not currently used.

- G4InuclElementaryParticle.hh:  Add antinucleon() and antibaryon() flags
  (the latter will cover the light-ion cases).

- G4InuclElementaryParticle.cc:  Add switch cases for new particles above.

24 November 2010 Michael Kelsey (hadr-casc-V09-03-87)
-----------------------------------------------------
- G4InuclCollider.cc:  Delete local "zbullet" before exiting.  Fixes memory
  leak reported for 9.4 cand-01.

19 November 2010 Michael Kelsey (hadr-casc-V09-03-86)
-----------------------------------------------------
- G4NucleiModel.cc:  Put messages related to negative-path-length and
  zero-interaction-partners behind verbosity flag.

29 October 2010 Michael Kelsey (hadr-casc-V09-03-85)
----------------------------------------------------
- G4NucleiModel:  Bring tagged version kelsey-20101020 (refactoring) to HEAD
  and tag for 9.4 release.  This is the last substantive modification to be
  included; validated by direct |diff|ing of output vs. V09-03-84 code.

22 October 2010 Michael Kelsey (hadr-casc-V09-03-84)
----------------------------------------------------
- G4WatcherGun.cc: Change first numeric argument to G4NuclWatcher to int.

NOTE:  Only this change is include in tag.

20 October 2010 Michael Kelsey (kelsey-20101020b)
-------------------------------------------------
- G4NucleiModel:  Add scaling factors ("units") for nuclear radii and
  cross-sections, in order to adapt calculations to the literature.

20 October 2010 Michael Kelsey (kelsey-20101020a)
-------------------------------------------------
- G4NucleiModel:  Re-activate changes in worthToPropagate() to use existing
  nuclear potential values for kaons and hyperons to decide on trapping.

20 October 2010 Michael Kelsey (kelsey-20101020)
------------------------------------------------
- G4NucleiModel:  Clean up some bugs in refactoring generateModel().  Back
  out changes (28 Sep) in worthToPropagate() in order to compare refactored
  to production code.

20 October 2010 Michael Kelsey (hadr-casc-V09-03-83)
----------------------------------------------------
- G4CascadParticle.cc:  Remove debugging output left in by accident.

NOTE:  Tag does not include reorganization of G4NucleiModel (5 Oct 2010)

19 October 2010 Michael Kelsey
------------------------------
G4FissionStore, G4FissionConfiguration: Undo migration to integer A and Z.

19 October 2010 Michael Kelsey
------------------------------
Clean up CoVerity software analysis reports (three are ignored from obsolete
code):
	G4Analyser.cc
	G4CascadeCheckBalance.cc
	G4CascadeInterpolator.icc
	G4CascadeSampler.icc
	G4CollisionOutput.cc
	G4ElementaryParticleCollider.cc
	G4InuclCollider.cc
	G4NuclWatcher.cc
	G4NucleiModel.hh,cc
	G4RegionModel.cc

14 October 2010 Michael Kelsey
------------------------------
- G4NucleiModel.cc:  Fix misspelled "G4doulbe" -> G4double.

Pick up several missed bits of the "integer A and Z migration," mostly in
test and diagnostic code:

	G4Analyser.hh,cc
	G4FissionConfiguration.hh
	G4FissionStore.hh,cc
	G4NuclWatcher.hh,cc

14 October 2010 Michael Kelsey (hadr-casc-V09-03-82)
----------------------------------------------------
- G4CascadParticle.cc:  Add protection in getPathToTheNextZone() so that d2
  is always computed non-negative.  Avoids 10^-5 FPEs.

05 October 2010 Michael Kelsey
------------------------------
- G4NucleiModel:  Major reorganization of generateModel() code.
  1) Rename integration functions from "volNumInt[1]" to "zoneIntegralxxx"
     with "xxx" = "WoodsSaxon" or "Gaussian".
  2) Move hardwired constants out to static data members, give clear names.
  3) Split function into separate pieces to set binding energies, zone
     radii, volume/density values, and potential heights.
  4) Within new functions, simplify if-cascades where possible, eliminate
     duplicated code.
  5) Move std::vector<> buffers out to data members.

  Also, modify worthToPropagate() to use non-nucleon potential heights to
  terminate propagation.  Previously, non-nucleons could never fail, as the
  "getFermiKinetic" always returned zero.

28 September 2010 Michael Kelsey (hadr-casc-V09-03-81)
------------------------------------------------------
- G4BigBanger:  Missed some integer A/Z migrations, which caused a bus error
  in test47.

26 September 2010 Michael Kelsey (hadr-casc-V09-03-80)
------------------------------------------------------
- G4VCascadeDeexcitation.hh:  NEW abstract base class for post-cascade
  processing.  Some common activities will be implemented here from the two
  actual modules.

- G4CascadeDeexcitation, G4PreCompoundDeexcitation:  Use new base class
  above, reorganize code in collide() to use new deExcite(G4Fragment*) where
  appropriate.

- G4InuclCascader.hh:  Reference new base class for de-excitation modules.

25 September 2010 Michael Kelsey
--------------------------------
- G4CascadeColliderBase:  Add explosion(G4Fragment*) and explosion(A,Z,Eexc).
  Move implementation to latter, and write others as call-throughs.  Add
  Z==0 condition for explosion, regardless of A.

- G4EquilibriumEvaporator.hh:  Remove explosion(G4InuclNuclei*), as
  unnecessary.  Existing explosion(A,Z,E) now overrides base class.

- G4CollisionOutput:  Add function to process G4ReactionProducts from
  PreCompound.

- G4PreCompoundDeexcitation.cc:  Move G4ReactionProducts loop to
  G4CollisionOutput.

24 September 2010 Michael Kelsey
--------------------------------
- G4IntraNucleiCascader.cc:  Minor shuffle of post-cascade recoil checking,
  in preparation for moving fragment construction and processing away.

- G4CollisionOutput.cc:  Replace names "TargetFragment*" and "NucleiFragment*"
  with "OutgoingNuclei" and "OutgoingNucleus" for consistency with
  "OutgoingParticles" names.  This affects the following source files, all
  of which are modified to match (using |sed|):

	cascade/include/G4Analyser.hh
	cascade/include/G4CollisionOutput.hh
	cascade/src/G4Analyser.cc
	cascade/src/G4CascadeCheckBalance.cc
	cascade/src/G4CascadeDeexcitation.cc
	cascade/src/G4CascadeInterface.cc
	cascade/src/G4CollisionOutput.cc
	cascade/src/G4EquilibriumEvaporator.cc
	cascade/src/G4Fissioner.cc
	cascade/src/G4IntraNucleiCascader.cc
	cascade/src/G4InuclCollider.cc
	cascade/src/G4InuclEvaporation.cc
	cascade/src/G4NonEquilibriumEvaporator.cc
	cascade/src/G4PreCompoundDeexcitation.cc

- G4CollisionOutput:  Add new G4Fragment data member, with get() and add()
  accessors.  This fragment is *not* used by setOnShell() or by any of the
  event-total calculations.  It will be filled by G4IntraNucleiCascader for
  use by de-excitation modules.  Include G4Fragment in diagnostic output if
  not empty.

- G4CascadeRecoilMaker.cc:  Remove G4Fragment::SetExcitationEnergy() call.

- G4InuclNuclei:  Add new constructor to create from G4Fragment input, and
  new makeG4Fragment() to spit out a G4Fragment.  Also provide a casting
  operator for the latter.

24 September 2010 Michael Kelsey (hadr-casc-V09-03-79)
------------------------------------------------------
Fix numerous compilation warnings on Linux (not seen on MacOSX) left over
from migration to integer A and Z (-73 tag).

	G4BigBanger.cc
	G4CascadeCheckBalance.hh
	G4CascadeColliderBase.cc
	G4CascadeRecoilMaker.cc
	G4EquilibriumEvaporator.hh,cc
	G4ExitonConfiguration.hh
	G4Fissioner.cc
	G4InuclCollider.cc
	G4NonEquilibriumEvaporator.cc
	G4NucleiModel.cc

- G4PreCompoundDeexcitation.cc:  Drop "G4int" casts as no longer required.

23 September 2010 Michael Kelsey (hadr-casc-V09-03-78)
------------------------------------------------------
- G4CascadeInterface, G4InuclCollider:  change user selection function name
  to usePreCompoundDeexcitation(), per Julia Yarba.

- G4PreCompoundCascadeInterface.hh,.cc, G4PreCompountInuclCollider.hh,.cc:
  REMOVE THESE CLASSES.  These were copied and modified versions of the
  standard versions, in order to test the new pre-compound de-excitation.
  That has been integrated with runtime flags, so the parallel versions are
  not required.

23 September 2010 Michael Kelsey
--------------------------------
- G4InuclElementaryParticle.cc:  Drop warning message when converting
  G4ParticleDefinition to type code.

- G4CascadeInterface:  Add functions for user selection of which
  post-cascade module to use for de-excitation of the residual nucleus.
  These call through to the equivalent G4InuclCollider functions.

- G4InuclCollider:  Add functions for user selection of which
  post-cascade module to use for de-excitation of the residual nucleus.
  These delete and re-instantiate the appropriate de-excitation "collider".

- G4PreCompoundDeexcitation:  Remove convertFragment() function, remove
  pass-by-value std::vector<> from getDeExcitedFragments() (use data member
  instead).  Clean up some obsolete code usage.

- G4CascadeRecoilMaker:  Change fragment-making interface:
  makeRecoilNuclei() now returns G4InuclNuclei* for standard Bertini colliders.
  makeRecoilFragment() returns G4Fragment* for external PreCompound models.
  addExcitonConfiguration() sets local copy of excitons, needed in order to
    call the individual G4Fragment->Setxxx() functions.

- G4IntraNucleiCascader.cc:  Follow renaming RecoilMaker::makeRecoilNuclei(),
  use new addExcitonConfiguration().

- G4CascadeRecoilMaker:  Change fragment-making interface:
  makeRecoilNuclei() now returns G4InuclNuclei*.
  makeRecoilFragment() returns G4Fragment*.
  addExcitonConfiguration() sets local copy of excitons, needed in order to
    call the individual G4Fragment->Setxxx() functions.

- G4IntraNucleiCascader.cc:  Follow renaming RecoilMaker::makeRecoilNuclei(),
  use new addExcitonConfiguration().

22 September 2010 Michael Kelsey
--------------------------------
- G4CascadeMomentum.hh:  This should have been removed from the package long
  ago.  Apologies for the oversight.

22 September 2010 Julia Yarba
-----------------------------
Added 1st prototype of interface between Bartini cascade and PreCompound model
(post-cascade de-excitation).

Changes only to:
/geant4/source/processes/hadronic/models/cascade/cascade

New developments are those G4PreCompound* classes; the GNUmakefile adapted to
include necessary links.

The PreComp wrapper is G4PreCompundDeexcitation class.

The logic, loops, conditions, etc., in the event processing are the same as in
the "native" Bertini code. I actually copied it over from G4CascadeInterface,
and started from there.

However, there're a few technical changes that I'd like to mention.

1. G4PreCompoundInterface inherits directly from G4HadronicInteraction.
I felt that we'd not need G4VIntra..., because its only advantage is a pointer
(and related access methods) to G4VPreCompoundModel.
This has now moved to the de-excitation wrapper.

2. In the Collider itself, I've made the data member to be
 G4CascadeColliderBase* theDeexcitation
This way, it can be transparently set to the native one or the PreComp one
(both inherit from G4CascadeColliderBase).

3. There's a setDeExcitation(...) methond in the collider, and also in the interface
(which will pass it down to the collider).

19 September 2010 Michael Kelsey (hadr-casc-V09-03-77)
------------------------------------------------------
- G4CascadeInterface.cc:  Bug fix to logic in retryInelasticNucleus()

17 September 2010 Michael Kelsey (hadr-casc-V09-03-76)
------------------------------------------------------
- G4CascadeInterface:  Add support to pass nucleus projectiles into
  collider.  Not tested or guaranteed to work, but G4IntraNucleiCascader is
  supposed to deal with them.

16 September 2010 Michael Kelsey
--------------------------------
- G4CascadeInterface:  Extensive reorganization, moving most
  functionality out of ApplyYourself and into small member functions.
  Complicated end-of-loop conditions encapsulated.  Data members made into
  pointers to hide dependences from outside world.

16 September 2010 Michael Kelsey (hadr-casc-V09-03-75)
------------------------------------------------------
- G4CascadeInterface.cc:  Add parentheses in end-of-while block to fix
  compilation warning in GCC 4.3.

- G4IntraNucleiCascader.cc:  In decayTrappedParticle(), check for photon
  daughters and put them directly onto output list.

16 September 2010 Michael Kelsey
--------------------------------
- G4CascadParticle.hh:  Make getGeneration() const.

- G4CascadeDeexcitation.hh:  Fix compiler warning about order of data members.

- G4IntraNucleiCascader:  Intercept hyperons which are "trapped" in nuclear
  potential, and decay them immediately to produce usable secondaries.  This
  resolves problem with sub-MeV final-state hyperons (reported by A. Dotti),
  but is not entire correct.  Properly, the hyperon should be incorporated
  into a hypernucleus fragment.

- G4InuclElementaryParticle.hh:  Add hyperon() identification function, and
  constructor to take G4DynamicParticle directly.

- G4InuclParticle.hh, G4InuclNuclei.hh:  Add constructor to take
  G4DynamicParticle directly.

15 September 2010 Michael Kelsey (hadr-casc-V09-03-74)
------------------------------------------------------
- G4CascadeDeexcitation:  NEW collider to handle post-cascade processing of
  nuclear fragment.  Encapsulates BigBanger and Evaporators.  Eventually
  will have alternative (configurable or #ifdef) implementation using G4
  external "pre-compound" models instead of Bertini factories.

- G4InuclCollider:  Remove post-cascade colliders (BigBanger, Evaporators),
  replace with new G4CascadeDeexcitation.

- G4LorentzConverter:  Move construtor implementations to .cc file, and make
  sure all constructors have initializers for all data members.

14 September 2010 Michael Kelsey (hadr-casc-V09-03-73)
------------------------------------------------------
Migrate to integer A and Z values for nuclear configurations.  Includes both
explicit arguments for G4InuclNuclei, and function arguments, computational
parameters involved in nuclear configurations, breakup, etc.

	G4CascadeCheckBalance.cc
	G4CascadeInterface.cc
	G4CascadeRecoilMaker.hh
	G4Fissioner.hh,cc
	G4InuclEvaporation.cc
	G4InuclNuclei.hh,cc
	G4InuclSpecialFunctions.hh
	G4NonEquilibriumEvaporator.hh,cc
	G4NucleiModel.hh,cc
	G4PreCompoundCascadeInterface.cc
	bindingEnergy.cc
	bindingEnergyAsymptotic.cc
	nuclearLevelDensity.cc
	paraMaker.cc

- G4InuclSpecialFunctions.hh:  Eliminate bindingEnergy functions which are
  no longer used, along with their .cc files:

	bindingEnergyKummel
	bindingEnergyExact

Migration validated using 100 events (20 GeV pi+ on lead) with verbose==4.
Entire log files (9.6M lines, 433 MB) identical before and after migration.

13 September 2010 Michael Kelsey
--------------------------------
- G4InuclElementaryParticle:  Move printParticle() implementation to .cc,
  and add printing of particle name to output.

- G4InuclNuclei.cc:  Move base-class printing to first line of output, to
  match G4InuclEP.

10 September 2010 Michael Kelsey (hadr-casc-V09-03-72)
------------------------------------------------------
- G4CascadeRecoilMaker:  Add new goodNucleus() function with functionality
  from G4IntraNucleiCascader::goodCase().  Add parameter to set "rounding
  tolerance" for small/negative mass differences.  Drop getRecoilFragment()
  in favor of user calling makeRecoilFragment() directly (instead of doing
  it collide()), which returns a non-const pointer.

- G4IntraNucleiCascader: Remove previously introduced getResidualMass() and
  makeResidualFragment() functions, along with G4InuclNuclei object.
  Replace with new RecoilMaker utility.  Move goodCase() to RecoilMaker, and
  begin to simplify end-of-cascade processing.

- G4ExitonConfiguration.hh:  Add function to reset values to zero.

- G4InuclNuclei:  Add function to zero out exciton configuration, and use
  it in fill() functions.

9 September 2010 Michael Kelsey
-------------------------------
- G4CascadeCheckBalance:  Add new collide() interface to take lists of both
  G4InuclElementaryParticles and G4CascadParticles; supports use by
  G4IntraNucleiCascader and G4CascadeRecoilMaker.

- G4CascadeRecoilMaker:  NEW pseudo-Collider class to compute the nuclear
  recoil kinematics of a cascade, either in process or completed.  To be
  used by G4IntraNucleiCascader; uses G4CascadeCheckBalance to do work.

6 September 2010 Michael Kelsey (hadr-casc-V09-03-71)
-----------------------------------------------------
- G4NucleiModel:  Add protections in generateInteractionPartners() so that
  nucleon and quasideuteron interactions are only selected if there are
  "enough" nucleons of the necessary type still available (xxxNumberCurrent).

- G4InuclNuclei:  Add fill() functions which overwrite the entire particle
  structure, with same argument lists as constructors.  Will be used mainly
  by G4IntraNucleiCascader::makeResidualFragment().

- G4IntraNucleiCascader:  Hide non-physical nucleus message behind verbose
  flag.  Add function and data member to build recoil nucleus (fragment) at
  end of every iteration; will eventually replace functionality of
  getResidualMass().

2 September 2010 Michael Kelsey (hadr-casc-V09-03-70)
-----------------------------------------------------
- G4NucleiModel.cc:  Restore hadr-casc-V09-03-68 revision 1.71, and remove
  the two resize(3) actions.

NOTE:  The exercise below has (finally) resolve the cross-section
discrepancy reported by Sunanda Banerjee back in July.  It turns out that my
use of "resize(3)" to pre-allocate the qdeutron and acsec buffers on each
interaction was incorrect.  This doesn't just reserve memory, it fills the
vectors with three elements, so that subsequent push_back()'s fill [3], [4],
etc.

2 September 2010 Michael Kelsey
-------------------------------
- G4NucleiModel.cc: Reverted to hadr-casc-V09-03-38 revision 1.45, and
  interface changes incorporated.  See NOTE below from 28 July 2010.
  Cross-section changes have not been resolved or validated.  Since -38
  revision has better data/MC matching (ratio near 1), it is restored as the
  baseline version, and changes will be re-done incrementally.

  Each increment after (0) is tagged "kelsey-20100902x", x=a,b,c,d etc.

	0)  Implement new ctor and generateModel() calls
	    Make cross-section tables statically initialized
	    Include absorptionCrossSection definition
	1)  Use lookup tables for cross-sections, and new interpolator
	    Change CHC_CHECK to G4CASCADE_DEBUG_CHARGE
	2)  Use this package's bindingEnergy() function
	3)  Update diagnostic messages and verbosity levels;
	    Add missing initializers to all constructors;
	    Use data-member buffer for G4CollisionOutput
	4)  Use generateWithRandomAngles() everywhere appropriate;
	    Collapse if-cascades to use if-return where possible
	5)  Make generateModel() re-usable with data-member buffers
	6)  Energy-momentum conservation checking;
	    Implement generateNucleonMomentum;
	    Remove extraneous semicolons and blank lines
	7)  Use local variables in passFermi();
	    Fix some minor LorentzVector calculations;
	    Use generateNucleonMomentum() for quasi-deuterons
	8)  Use data-member buffers for quasideuterons, coords, mom.
	9)  Use enum labels for quasideuteron codes
	10) Restore Dennis' improved potential (6-zone) calculations

4 August 2010 Michael Kelsey (hadr-casc-V09-03-69)
--------------------------------------------------
- G4CascadeData:  Add name data member and optional ctor argument, use
  when printing tables.

- G4CascadeFunctions.icc:  Pretty-up printing output using name string.

- G4Cascade*Channel.cc:  Add name string to data() ctor, use central part of
  class name, e.g., "PiMinusP" for G4CascadePiMinusPChannel.

- G4ElementaryParticleCollider.cc:  Add printing of all final-state tables,
  one time only, protected by G4CASCADE_DEBUG_SAMPLER.

- GNUmakefile:  Add G4CASCADE_DEBUG_SAMPLER preprocessor flag.

3 August 2010 Michael Kelsey (hadr-casc-V09-03-68)
--------------------------------------------------
- G4CascadeData.hh: Add print() and printXsec() functions to dump tables.
- G4CascadeData.icc:  Move implementations out of G4CascadeData.hh file.

- G4CascadeFunctions.hh,icc: Add printTable() to dump tables.

- G4CascadeInterpolator.hh,icc: Add printBins() to dump energy bin edges.

- G4CascadeSampler.hh,icc: Add print() to call through to interpolator.

NOTE:  This should be the last set of functional changes for a while.
Sunanda Bannerjee reported substantial changes in validation plots for the
Bertini cascade between 4.9.3-ref-05 (hadr-casc-V09-03-23-01) and
4.9.3-ref-06/4.9.4-beta-01 (hadr-casc-V09-03-43).

28 July 2010 Michael Kelsey (hadr-casc-V09-03-67)
-------------------------------------------------
- G4NucleiModel.cc:  Set deuteron arrays to fixed length (3).  Add A/Z
  values to generateModel diagnostic message.

- G4EquilibriumEvaporator.cc:  Change some fixed length std::vector<> to
  simple C arrays.

- G4Fissioner.cc:  Move G4FissionStore to class data member for reuse.

- G4FissionStore:  Add ::clear() function to support reuse, move addConfig()
  implementation to .cc file.

- G4IntraNucleiCascader:  Move G4NucleiModel to class-level data member
  (pointer) so it can be reused across collisions.

26 July 2010 Michael Kelsey
---------------------------
- G4Analyzer.cc:  Use const-refs for particle lists.

- G4BigBanger, G4ElementaryParticleCollider:  Move std::vector<> buffers to
  .hh file to allow reuse.

- G4NucleiModel.cc:  Simplify buffers used in generateModel() to reduce
  G4double allocations.

23 July 2010 Michael Kelsey (hadr-casc-V09-03-66)
-------------------------------------------------
- G4CascadeInterface:  Move G4CollisionOutput to .hh file for reuse between
  events.

- G4IntraNucleiCascader:  Move buffers for cascade output to .hh file, so
  they can be reused between events.

- G4NucleiModel:  Move G4CollisionOutput to .hh file for reuse; use
  references for bullet and target args to G4EPCollider.

21 July 2010 Michael Kelsey (hadr-casc-V09-03-65)
-------------------------------------------------
- GNUmakefile:  Add new G4CASCADE_CHECK_ECONS to turn off all of the
  internal conservation checks (reduce std::vector<> memory churn!).

- G4CascadeColliderBase.cc:  Use G4CASCADE_CHECK_ECONS to set the default
  value of "doConservationChecks": true if defined, false if not defined.
  This is done with #ifdef-else-endif block, NOT some fancy macro.

- G4CascadeInterface.cc:  Use G4CASCADE_SKIP_ECONS to toggle reporting
  violations before end of loop (don't need to call balance.okay() twice!).

- G4ElementaryParticleCollider.cc:  Put verbosity check before call to
  validateOutput() to avoid unnecessary vector manipulations.

- G4IntraNucleiCascader.cc:  Set doConservationChecks = true
  unconditionally; used to reject bad cascades.

- G4NucleiModel.cc:  Use G4CASCADE_CHECK_ECONS to hide balance.collide().

20 July 2010 Michael Kelsey (hadr-casc-V09-03-64)
-------------------------------------------------
- G4CascadeColliderBase: Make G4CascadeCheckBalance a pointer member, move
  ctor and dtor to .cc file.  Change balance tolerances to 1 per mil and 1
  MeV.

- G4InuclCollder:  Make all colliders pointer members.

- G4IntraNucleiCascader:  Make EPCollider a pointer member, and call
  G4CollisionOutput::setOnShell() to balance energy-momentum for null fragments.

- G4InuclNuclei.cc:  Preserve momentum magnitude when setting excitation
  energy by setting mass and kinetic energy.

19 July 2010 Michael Kelsey (hadr-casc-V09-03-63)
-------------------------------------------------
- G4CascadeCheckBalance.cc:  Change zero-tolerance to 10 keV (1e-5) from
  1 keV (1e-6).

- G4CollisionOutput.hh:  Fix capitalization of "numberOfOutgoingParticles".

- G4EquilibriumEvaporator.cc:  Remove duplicate EEXS setting.

- G4InuclNuclei:  Change implementation of setExitationEnergy() to adjust
  mass while keeping momentum vector constant.  Currently done with
  "expensive" LorentzVector manipuation.  Should be done by recomputing
  kinetic energy given new mass value.

- G4NonEquilibriumEvaporator.cc:  Modify particle-creation block to work as
  G4EquilibriumEvaporator now does.  Simplify some if-blocks.

16 July 2010 Michael Kelsey (hadr-casc-V09-03-62)
-------------------------------------------------
- G4CollisionOutput:  Add interfaces to handle G4CascadParticles.

- G4IntraNucleiCascader:  Eliminate local "inter_case" data member and
  function.  Use base class G4InteractionCase directly.  Add functionality
  to test for conservation and recoil before exiting "itry" loop, and redo
  cascade if unbalanced recoil fragment.

- G4{PreCompound}InuclCollider.cc:  Drop "setInteractionCase()" function.

15 July 2010 Michael Kelsey (hadr-casc-V09-03-61)
-------------------------------------------------
- G4CollisionOutput:  New ::add() function to combine two objects.  New
  accessors to get total charge and baryon number.

- G4CascadeCheckBalance:  Make tempOutput data member, for thread-safety,
  rather than static variables.  Use new G4CollisionOutput accessors.

- G4IntraNucleiCascader.cc:  Move local output buffers outside while loop,
  use std::vector<>::insert() for copying.

- G4InuclCollider.cc:  Use new G4CollisionOutput::add() interface.

- G4NucleiModel.cc:  Hide conservation checks behind verbose>2.  Otherwise
  log files get too big

15 July 2010 Michael Kelsey (hadr-casc-V09-03-60)
-------------------------------------------------
- G4CascadeCheckBalance:  Add layer of protection in relativeX() (check
  initial values) to avoid divide-by-zero errors.  Add another interface to
  accept list of G4CascadParticles, for use with G4NucleiModel.  Add check
  of momentum direction balance, not just magnitudes.

- G4IntraNucleiCascader.cc:  Rearrange end-of-loop if-blocks to allow for
  conservation checking prior to return.  Add reporting of both too-low and
  too-high residual energy (at verbose=2) for single-nucleon fragments.

- G4InuclCollider.cc:  Remove re-named conservation checks, now all done by
  colliders themselves.

- G4InuclParticle.hh:  Add setKineticEnergy() function to simplify handling
  of some kinematics.

- G4NucleiModel:  Add G4InuclNuclei data member (created in generateModel()),
  for use with conservation checks.  Do check at end of generateParticleFate().

15 July 2010 Michael Kelsey (hadr-casc-V09-03-59)
-------------------------------------------------
- G4InuclNuclei:  Use G4DynamicParticle::theDynamicalMass to carry around
  excitation energy (== theDynamicalMass-thePDGMass).  This allows
  excitation to be changed on the fly, with all kinematics handled
  correctly.  It also allows ONLY the ground state nucleus to be created as
  a G4Ions object (whether global or private), reducing the number of such
  objects by a factor of thousands.

14 July 2010 Michael Kelsey (hadr-casc-V09-03-58)
-------------------------------------------------
- G4CollisionOutput.cc:  For initial four-momentum adjustment, skip over
  particles which would acquire negative energy after "correction."

- G4ElementaryParticleCollider.cc: Bug fix for two-body final states.
  Kinematics should not require "rescaling."  That was driven by states
  which were kinematically forbidden, with m1+m2 > etot_scm (e.g., pi0 p ->
  pi+ n with just 5 MeV kinetic energy).  Now those states are caught and
  rejected.

- G4CascadeInterface.cc, G4InuclCollider.cc:  Improve diagnostics reporting
  number of retries.

- G4EquilibriumEvaporator.cc:  When computing residual excitation
  (EEXS_new), original thrown energy, S, should be used, not reboosted
  particle after recoil.  Simplify evaporation kinematics to conserve
  four-momentum automatically (PEX -= mom).

14 July 2010 Michael Kelsey (hadr-casc-V09-03-57)
-------------------------------------------------
- G4CascadeColliderBase: New subclass of G4VCascadeCollider, which takes
  over all of its concrete functionality, and adds conservation checker
  (G4CascadeCheckBalance) as data member.  Wrapper functions and control
  flag allow colliders to user it transparently.

- G4VCascadeCollider:  Move concrete functionality to new base class.

- All colliders:  Change base class to new G4CascadeColliderBase.  Remove
  local copies of conservation-checker, using new base function instead.

	cascade/include/G4BigBanger.hh
	cascade/include/G4ElementaryParticleCollider.hh
	cascade/include/G4EquilibriumEvaporator.hh
	cascade/include/G4EvaporationInuclCollider.hh
	cascade/include/G4Fissioner.hh
	cascade/include/G4IntraNucleiCascader.hh
	cascade/include/G4InuclCollider.hh
	cascade/include/G4NonEquilibriumEvaporator.hh
	cascade/include/G4PreCompoundInuclCollider.hh
	cascade/src/G4BigBanger.cc
	cascade/src/G4ElementaryParticleCollider.cc
	cascade/src/G4EquilibriumEvaporator.cc
	cascade/src/G4EvaporationInuclCollider.cc
	cascade/src/G4Fissioner.cc
	cascade/src/G4IntraNucleiCascader.cc
	cascade/src/G4InuclCollider.cc
	cascade/src/G4NonEquilibriumEvaporator.cc
	cascade/src/G4PreCompoundInuclCollider.cc

- G4EquilibriumEvaporator:  Use new functionality (above) to turn off
  conservation checks when evaporating fission products.

- G4CascadeInterface.cc:  Report number of retries in verbose messages.

- G4IntraNucleiCascader.cc:  Remove sanity check on afin/zfin vs. model.

13 July 2010 Michael Kelsey (hadr-casc-V09-03-56)
-------------------------------------------------
- G4CascadeCheckBalance:  Add zero protection (needed for momentum ratio)
  using a static tolerance parameter.

- G4EquilibriumEvaporator.cc:  Add dumping of G4CollisionOutput before exit,
  some fixes for "PEX" adjustments as EEXS changes.

- G4NonEquilibriumEvaporator.cc:  Add conservation checking, dump of output,
  some fixes for "PEX" adjustments as EEXS changes.

- G4Fissioner.cc:  Add conservation checking, remove addition of excitation
  energy to input nucleus mass, since already included.

13 July 2010 Michael Kelsey
---------------------------
- G4CascadeCheckBalance.cc:  Hide violation reports behind verbose == 1.

- G4ElementaryParticleCollider.cc:  Bump ::collide() message to verbose > 1.

- G4EquilibriumEvaporator.cc:  Add conservation checking, collapse if-cascades
  by doing failure tests and exits up front, add sanity check on eex_real.

- G4IntraNucleiCascader.cc:  Add diagnostic messages and some FIXME
  comments, validate afin/zfin against G4NucleiModel result.

- G4InuclCollider.cc:  Move conservation check outside verbosity flag.  This
  adds to CPU usage, so may need #ifdef protection later.  Adjust a few
  verbosity levels.

- G4LorentzConvertor.cc:  Bump all diagnostic messages to verbose > 2.

- G4NucleiModel.cc:  Simplify main if-block to put failure up front; add
  debugging messages when decrementing proton or neutron counts.

11 July 2010 Michael Kelsey
---------------------------
- G4CascadeCheckBalance:  Add ctor argument with name of parent class; use
  this name when reporting results.  Add interface for nuclear fragment
  list.  Allow parent class name to be changed dynamically.

- G4BigBanger.cc, G4CascadeInterface.cc, G4ElementaryParticleCollider.cc,
  G4InuclCollider.cc, G4NucleiModel.cc:  Pass name to G4CascadeCheckBalance.

- G4Fissioner.cc:  Use G4CascadeCheckBalance to test energy conservation.

- G4InuclNuclei.hh:  Add model ID as optional ctor argument.

- G4InuclCollider.cc:  Move balance checks on evaporators outside verbosity.
  Adjust name of G4CascadeCheckBalance for clear reporting.

- G4VCascadeCollider.hh:  Add protected function to change name dynamically.

6 July 2010 Dennis Wright (hadr-casc-V09-03-55)
-----------------------------------------------
- G4IntraNucleiCascader.cc: add to final particle list those cascade
  particles which were formerly abandoned at cascade termination;
- G4IntraNucleiCascader.cc: allow meson excitons to pass out of nucleus
  since they are not proper excitons, and would be lost otherwise

4 July 2010 Dennis Wright (hadr-casc-V09-03-54)
-----------------------------------------------
- tag changes up to now

2 July 2010 Michael Kelsey
--------------------------
- G4BigBanger.cc:  Moving "generateMomentumModules()" inside loop.  For
  three-body decays, the angles are not ajustable (so always fails).

- G4CascadeInterface.cc:  Set verbosity on G4CollisionOutput.

- G4EquilibriumEvaporator.cc:  Simplify if-cascades to reduce nesting (test
  for errors and exit up front, rather than in else-blocks).

- G4InuclCollider.cc:  Set verbosity on G4CollisionOutput.

- G4IntraNucleiCascader.cc:  Throw away casacde which leaves "negative energy
  recoil" (i.e. rest-frame energy of recoil less than mass of nucleus or
  nucleon).

1 July 2010 Michael Kelsey
--------------------------
- G4InuclCollider.cc:  Used wrong input target for conservation-law checking
  subsequent to G4EquilibriumEvaporator.

- G4EquilibriumEvaporator.cc, G4NonEquilibriumEvaporator.cc:  Handle
  excitation energy differently with new G4InuclNuclei interface.  Compute
  updated values correctly, by taking nuclear mass difference then
  subtracting energy of evaporated particle.

- G4InuclNuclei:  Reorganization to properly incorporate excited states.
  Excitation energy included in mass in all cases.  setExcitationEnergy() now
  replaces G4PartDefn pointer with new excited state.  getNucleiMass() takes
  (optional) excitation, calls G4NucleiProperties to get mass value.  For
  weird fragments, multiple isomers allowed, assigned unique non-standard
  PDG codes.  Include particle name in printout (now in .cc file).

- G4CollisionOutput.cc:  Do not include nuclear excitation energy in output
  sum; now included with nuclear mass automatically (and properly).

- G4CascadeCheckBalance.cc:  Do not include nucler excitation energy in input
  sum; now inluded with nuclear mass automatically (and properly).

- G4IntraNucleiCascader.cc:  For recoil nuclear fragments, treat excitation
  energy properly: compute as difference between recoil "mass" (recoil-frame
  energy) and ground-state A/Z mass, and pass into G4InuclNuclei ctor.
  After the cascade, add some recoil energy checks to deal with both
  floating-point round-off, and quasi-elastic scatters (which change the
  bullet direction, and leave the nucleus with "missing" energy).

- G4BigBanger.cc:  Simplify boost to "target" nucleus, using "boostVector"
  instead of G4LorentzConvertor machinery.

30 June 2010 Michael Kelsey
---------------------------
- G4BigBanger.cc:  Improve handling of excitation energy as part of nuclear
  mass, deal with two-body explosion properly (x=0.5, not random).  Some
  tweaks to diagnostic messages.

- G4CascadeCheckBalance:  Add excitation energy to total energy for bullet
  and target nuclei.  This is done in G4CollisionOutput for secondaries.  It
  is NOT relativistically correct (should add to mass, not energy), but is
  consistent.

- G4CollisionOutput.cc:  Use "getExitationEnergyInGeV()" instead of "0.001*".

- G4IntraNucleiCascader.cc:  More diagnostic messages, improve the afin/zfin
  sanity check by requiring A>=Z.

28 June 2010 Michael Kelsey
---------------------------
- G4CascadeCheckBalance:  Report violations on G4cerr always, regardless
  of verbosity level.  Add collide(...,<vector>) interface to allow use
  from within G4ElementaryParticleCollider.

- G4ElementaryParticleCollider.cc:  Add conservation checks within ::collide().

- G4IntraNucleiCascader.cc:  Add more diagnostic messages.  Test for
  negative values of afin, zfin, and try again.  Set round-off limit (1e-6),
  and test nuclear recoil energy for bound (setting to zero) before doing
  energy-violation test.

- G4InuclNuclei.cc:  Abort job if passed negative Z or A argument.

28 June 2010 Michael Kelsey
---------------------------
- G4BigBanger.cc:  Missed one instance of GetBindingEnergy().

26 June 2010 Dennis Wright
--------------------------
- G4InuclNuclei:  Fix bug in calculation of PDG code.

25 June 2010 Michael Kelsey (hadr-casc-V09-03-53)
-------------------------------------------------
- G4ElementaryParticleCollider.cc:  MAJOR BUG FIX:  Three different places
  in generating N-body momenta had incorrect "recoil" calculations.  The
  Nth four-vector was computed as simply -total, which produced negative
  energy states (obviously).  The correct calculation should have been
  N = G4LV(0,0,0,etot) - (total) in each instance.

24 June 2010 Michael Kelsey (hadr-casc-V09-03-52)
-------------------------------------------------
- G4CascadeCheckBalance.cc:  Bug fixes to limit checks; should be using
  std::abs(), or negative violations don't get caught!  Also did some
  cleanup for compiler warnings see on Linux.

23 June 2010 Michael Kelsey
---------------------------
- G4CascadeInterface.cc:  Fix infinite-loop bug with energy-violation; must
  check for (nTries>maxTries) outside parenthetical, with balance.okay()
  inside.  Do conservation checks all the time, not just with flag set.  If
  e-violation is "infinite loop", dump last generated event and abort job.

- G4CascadeCheckBalance:  Add checks on baryon number, charge, and kinetic
  energy.  "Global" sanity check (::okay() function) does not include K.E.

23 June 2010 Michael Kelsey (hadr-casc-V09-03-51)
-------------------------------------------------
- bindingEnergy.cc:  Replace entire function with call-through to
  G4NucleiProperties.  Copy test for valid A/Z from there, and return
  0. directly on failure; suppresses warning message in 9.4-beta.

- G4EquilibriumEvaporator.cc, G4Fissioner.cc, G4IntraNucleiCascader.cc
  G4InuclNuclei.cc, G4NonEquilibriumEvaporator.cc, G4NucleiModel.cc
  G4VCascadeCollider.cc:  Restore calls to local "bindingEnergy()" to
  get wrapper function above; suppresses warning messages in 9.4-beta.

- G4NucleiModel.cc:  Make class re-usable (had been assumed in -47 tag, but
  was not true!), by clearing all parameter vectors in generateModel().
  Values of A,Z are tested first, and previous data kept if same nucleus is
  being modelled.

23 June 2010 Michael Kelsey
---------------------------
- G4CascadeInterface.cc:  Minor fix to rationalize version jumpings.
- G4NucleiModel.cc:  Fix bug in partners list termination mods below, and
  remove reflection-recoil from boundaryTransition().


21 June 2010 Michael Kelsey (MHK-20100621)
------------------------------------------
- G4CascadeInterface.cc:  Bring MHK-20100620 version back to HEAD, make same
  parenthesis fix for GCC 4.5 compilation.

- G4IntraNucleiCascader.cc:  Bug fix nuclear recoil kinematics introduced in
  MHK-20100620.

- G4NucleiModel.cc:  Bring MHK-20100620 version back to HEAD, apply ctor
  argument fix.  Eliminate creating temporaries for terminal "partners" on
  list; default ctor will take care of it.  Hide negative path-length report
  behind verbose flag, and don't return an empty list.

  Add block of code in ::boundaryTransition() which recoils the nucleus when
  the secondary is reflected off the potential, to balance the momentum
  transfer.  This is implemented by computing the boost for the full nucleus
  using the computed three-momentum transfer, and applying that boost to the
  secondary.

23 June 2010 Michael Kelsey (hadr-casc-V09-03-50)
-------------------------------------------------
- G4IntraNucleiCascader.cc:  Restore G4NucleiModel as local data member.
  Not well designed for reuse.

21 June 2010 Michael Kelsey (hadr-casc-V09-03-49)
-------------------------------------------------
NOTE:  Changes below were version jumped into V09-03-48.  Tag above ONLY
       includes these two changes!

- G4CascadeInterface.cc:  Add parentheses in main iteration loop to support
  mixed && and || (reported by gcc-4.5).

- G4NucleiModel.cc:  Fix mistake in passing ctor args to generateModel().

20 June 2010 Michael Kelsey (MHK-20100620)
------------------------------------------
- G4CascadeCheckBalance:  New utility class to do energy and momentum
  conservation testing.  Implemented as a "collider" to resue interface.

- G4CascadeInterface.cc:  Use new G4CascadeCheckBalance for energy
  conservation.

- G4CollisionOutput:  Add setVerboseLevel() function, diagnostic reports in
  ::setOnShell(), and collapse if-cascades to use "if (!xxx) return" instead
  of multiple nestings.

- G4ElementaryParticleCollider.cc: Collapse if-cascade to use "if (!xxx)
  return" instead of multiple nestings.

- G4IntraNucleiCascader.cc:  Improve diagnostic messages, change some G4cout
  to G4cerr.

- G4InuclCollider:  Make output buffers data members to reduce churn;
  simplify if-cascades to use "if (!xxx) return" instead of nesting; add
  energy-conservation checks at each stage of cascade.

- G4NucleiModel.cc:  Improve diagnostics, collapse if-cascades to use "if
  (!xxx) return" instead of multiple nestings.

18 June 2010 Michael Kelsey (hadr-casc-V09-03-48)
-------------------------------------------------
- G4CascadeInterface.cc:  Add check on energy conservation between initial
  and final states; more than 5% imbalance triggers repeat generation of
  cascade.  This check may be disabled with flag G4CASCADE_SKIP_ECONS.  Also
  did some minor cleanup of the code.

- cascade/GNUmakefile:  Add support for new flag above.

17 June 2010 Michael Kelsey (hadr-casc-V09-03-47)
-------------------------------------------------
- G4CascadeInterface, G4PreCompoundCascadeInterface:  Make G4InuclCollider a
  local data member, pass verbosity to it in ::ApplyYourself().

- G4InuclCollider, G4ElementaryParticleCollider, G4IntraNucleiCascader,
  G4EquilibriumEvaporator, G4BigBanger: Make all sub-colliders local data
  members, pass verbosity to each of them.

- G4NucleiModel:  Add ctors and generateModel() signatures so both can do
  particle or A/Z initialization.  Add setVerboseLevel() function.

17 June 2010 Michael Kelsey (hadr-casc-V09-03-46)
-------------------------------------------------
- cascade/GNUmakefile: Add series of "ifneq (,...)" blocks to map
  environment variables for debugging onto "-D..." compiler flags:

	G4CASCADE_COULOMB_DEV
	G4CASCADE_DEBUG_CHARGE
	G4CASCADE_DEBUG_INTERFACE
	G4CASCADE_DEBUG_SORT
	G4CASCADE_WATCHER_HIGHZ

- G4CascadeInterface.cc: Replace preprocessor flags "debug_G4...Interface"
  with G4CASCADE_DEBUG_INTERFACE, and "BERTDEV" with G4CASCADE_COULOMB_DEV.
  Fix bug with information access in debugging block.

- G4EquilibriumEvaporator.cc, G4IntraNucleiCascader.cc,
  G4NonEquilibriumEvaporator.cc:  Eliminate preprocessor flag RUN and all
  code contained in "#else" blocks.

- G4LorentzConverter.cc:  Add diagnostic output with different levels:  All
  " >>>" entry messages done for verboseLevel >= 1; all numeric reports for
  verboseLevel > 2.

- G4NucleiModel: Replace preprocessor flag "CHC_CHECK" with
  G4CASCADE_DEBUG_CHARGE.

- G4PreCompoundCascadeInterface.cc: Replace preprocessor flag
  "debug_G4...Interface" with G4CASCADE_DEBUG_INTERFACE.  Fix bug with
  information access in debugging block.

- G4WatcherGun.cc: Replace preprocessor flag "PB" with G4CASCADE_WATCHER_HIGHZ.

16 June 2010 Michael Kelsey
---------------------------
- G4CascadeInterface.hh:  Add setVerboseLevel() function.

- G4IntraNucleiCascader.cc:  Add reporting of momentum content for residual
  nuclear fragment, list of final-state particles, some cleanup of momentum
  balancing code.

- G4LorentzConvertor:  Add reporting of bullet and target four-vectors.

- G4NucleiModel.cc:  Add diagnostic output for partner-list generation,
  replace one random-angle code block with generateWithRandomAngles().

15 June 2010 Michael Kelsey (hadr-casc-V09-03-45)
-------------------------------------------------
- G4CascadeInterface.cc, G4PreCompoundCascadeInterface.cc:  When converting
  output particles from K0/K0bar to K0S/K0L, convert kinetic energy from
  Bertini internal units (GeV) to GEANT4 units (MeV).

- G4VCascadeCollider:  Make two separate ctors, name and name+verbose, with
  no default values.  All subclasses *must* provide a literal name string.

12 June 2010 Michael Kelsey (hadr-casc-V09-03-44)
-------------------------------------------------
- G4CascadeT33piNChannel.cc:  Swapped 8-body final state tables for pipP
  vs. pimN.

11 June 2010 Michael Kelsey (hadr-casc-V09-03-43)
-------------------------------------------------
- G4CascadeData.hh:  Equally trivial fix for compiler warking on Intel ICC
  for index[] array bounds in ::initialize().  Dimension array as [9], and
  set all values.

08 June 2010 Gunter Folger (hadr-casc-V09-03-42)
------------------------------------------------
-  trivial fix for compiler warning on gcc43 on empty body in for(...) in
    cascade/include/G4CascadeInterpolator.icc:67

01 June 2010 Michael Kelsey (hadr-casc-V09-03-41)
-------------------------------------------------
- paraMaker.cc:  Fix vector initialization for Windows crash.

26 May 2010 Dennis Wright (hadr-casc-V09-03-40)
-----------------------------------------------
- G4NucleiModel: remove conversion to fm, and conversion of cross
  sections to fm**2

21 May 2010 Michael Kelsey (hadr-casc-V09-03-39)
------------------------------------------------
Final tag for inclusion in GEANT 4.9.4-beta.  Will be validated internal and
included in global Hadronics tag.

- G4CascadeSampler.icc:  Activate time-saving checks on single bins.
- G4ElementaryParticleCollider.cc:  Remove special case for nucleon elastic
  scattering.

21 May 2010 Michael Kelsey (kelsey-20100521c)
---------------------------------------------
- G4CascadeInterface, G4PreCompoundCascadeInterface, G4InuclEvaporation:
  Simplify code: fetch G4DynamicParticle out of outgoing G4InuclParticles,
  rather than creating new ones.  Remove all of the *Collider data members
  (instantiated within G4InuclCollider).  Move final state rotations to
  G4CollisionOutput.

- G4InuclParticle:  Provide accessor to return G4DynamicParticle.

- G4CollisionOutput:  Add function to apply LorentzRotation to both lists;
  used by G4CascadeInterface.

- G4ElementaryParticleCollider:  Avoid memory churn with G4LorentzVector
  temporaries.

21 May 2010 Michael Kelsey (kelsey-20100521b)
---------------------------------------------
- G4VCascadeCollider:  New base class for all Colliders.  Carries
  verboseLevel data member and set-function.  ::collide() is pure virtual.
  Additional protected member functions will be defined to include all code
  shared across multiple Colliders.

- Migrate all of the "Collider" factories to use new base class, removing
  common member functions, and replace passed-in sibling colliders with
  local data members (pointers for now).  Since none of these classes have
  persistent (state preserving) data members, the cost of more than one
  instantiation is minimal.

	G4BigBanger
	G4ElementaryParticleCollider
	G4EquilibriumEvaporator
	G4EvaporationInuclCollider
	G4Fissioner
	G4IntraNucleiCascader
	G4InuclCollider
	G4NonEquilibriumEvaporator
	G4PreCompoundInuclCollider

- G4CascadeInterface.cc, G4InuclEvaporation.cc,
  G4PreCompoundCascadeInterface.cc:  Remove siblings from constructors for
  the Colliders.

- G4InteractionCase.hh:  Eliminate unnecessary copying of std::pair<>'s, use
  initializers in ctors, add clear() function to reset to 0-0-0.  Move
  evaluation of bullet vs. target to new set() function, replacing separate
  bulletTargetSetter() in the colliders.  Add boolean accessors to avoid
  hard-coding inter_case values.  Change code numbers so nucleus collisions
  are negative, and positive codes refer to the "is" or "rtype" numbers.

- G4ElementaryParticleCollider.cc:  Use G4InteractionCase to compute "is",
  instead of hardwiring the meaning.

- G4Collider.hh:  Remove empty and never-used file.

- G4EvaporationInuclCollider.cc:  Eliminate unnecessary creation of
  duplicate G4InuclNuclei: pass input through to G4EquilibriumEvaporator.

- G4LorentzConvertor:  Add interfaces to pass G4InuclParticles directly.

21 May 2010 Michael Kelsey (kelsey-20100521a)
---------------------------------------------
Replace hand-coded interpolation of arrays with use of G4CascadeInterpolator.
In all cases, local arrays are replaced with static const, and the
interpolator object itself is declared static, to reduce memory churn.

	G4NucleiModel::totalCrossSection()
	G4EquilibriumEvaporator::getQF()
	G4InuclSpecialFunctions::paraMaker[Truncated]() (in paraMaker.cc)

- G4CascadSpecialFunctions:  Remove. totalCrossSection() redundant with
  G4NucleiModel.  Move absorptionCrossSection() to G4NucleiModel.

- G4CascadeInterpolator.icc:  Bug fix to catch special case of exact upper
  bin edge (occurs when !doExtrapolation).  If index == last + 0., just
  return upper edge value, without calculation.

- G4NucleiModel.cc:  Use G4Cascade{Pi*}Channel and G4Cascade{NN,NP,PP}Channel
  classes to get total cross-sections for pi-N and N-N scattering.  Arrays
  for kaon and hyperon scattering should be migrated as well, once binning
  is resolved.  Move absorptionCrossSection() here from SpecialFunctions.

20 May 2010 Michael Kelsey (kelsey-20100521)
--------------------------------------------
- G4CascadeInterpolator.icc:  Two bug fixes involving values at array edges.

19 May 2010 Michael Kelsey, Dennis Wright
-----------------------------------------
- G4BertiniData.hh,.cc:  Remove unused and unnecessary class.
- G4NucleiModel.cc: convert nuclear radii to fm and cross sections to
    fm**2.  Use six-zone model for A > 99, and make alpha a 1-zone
    nucleus.
- G4CascadSpecialFunctions: convert pion absorption cross sections from
    mb to fm**2, correct spelling of method absorptionCrossSection

17 May 2010 Michael Kelsey (hadr-casc-V09-03-38)
------------------------------------------------
- paraMaker.cc (G4InuclSpecialFunctions::paraMaker[Truncated]):  Upper edge
  of interpolation array not properly handled.  Should be "if (Z >= 70.0)".
  This affects G4NonEquilibriumEvaporator output.

17 May 2010 Michael Kelsey (hadr-casc-V09-03-37)
------------------------------------------------
Bug fixes for compiler warnings (not seen on MacOSX, even with g++ -Wall)

- G4CascadeData.hh: Dummy arrays needed double-braces for initialization.

- G4CascadeInterpolator.icc: Extraneous decimal point in "for (i=0.;".

- G4CascadeKzeroBarNChannel.cc:  Left three "old" arrays in place during
  conversion.

14 May 2010 Michael Kelsey (hadr-casc-V09-03-36)
------------------------------------------------
Remove obsolete files following reorganization of two-body scattering
lookup tables.

	G4CascadeElasticInterface.hh,.cc
	G4ElasticCascadeInterface.hh,.cc
	G4FinalStateSampler.hh,.cc
	G4NucleonSampler.hh,.cc
	G4PionSampler.hh,.cc

- G4CascadeChannel.hh,.cc:  All functionality removed, replaced with
  namespace containing only getQnums and CheckQnums validation functions.

14 May 2010 Michael Kelsey (hadr-casc-V09-03-35)
------------------------------------------------
Replace independent parallel samplers with templated base class and single
implementation.  This completes the reorganization of the channel tables.

- G4CascadeSampler:  Redefine as templated base, taking binning array as
  constructor argument.  Move implementation file from .cc to .icc.
  NOTE:  G4CascadeSampler.cc is removed, since not consistent with new .hh.

- G4PionNucSampler:  Subclass of G4CascadeSampler<30>, replaces
  G4FinalStateSampler, using bins array from there.

- G4KaonNucSampler:  Sublcass of G4CascadeSampler<31>, replaces previous
  G4CascadeSampler, using bins array from there.

- G4Cascade*Channel.hh:  Change all typedefs to pass appropriate of two new
  samplers in template.

- G4ElementaryParticleCollider.cc: Replace long "if (is==)"-cascades with
  switch blocks.  Move all getOutgoing calls (for pions and nucleons) into
  one function, and call it from outside multiplicity checks.  Use
  G4CascadeInterpolator for angular distributions.  Set modelID=3 in all
  G4InuclParticle constructions.

14 May 2010 Michael Kelsey (hadr-casc-V09-03-34)
------------------------------------------------
Extract lookup tables from G4PionSampler and G4NucleonSampler into
individual "classes" defined and initialized with G4CascadeData.

- G4CascadePi{Plus,Minus,Zero}{P,N}Channel.hh: Six new typedefs defined as
  with the existing G4CascadeXXXChannel, to replace G4PionSampler.

- G4CascadeT33piNChannel.cc: Lookup tables for both PiPlusP and PiMinusN,
  implemented as with existing G4CascadeXXXChannel, from G4PionSampler.cc.

- G4CascadeT31piNChannel.cc: Lookup tables for both PiMinusP and PiPlusN,
  implemented as with existing G4CascadeXXXChannel, from G4PionSampler.cc

- G4CascadeT11pizNChannel.cc: Lookup tables for both PiZeroP and PiZeroN,
  implemented as with existing G4CascadeXXXChannel, from G4PionSampler.cc

- G4Cascade{PP,NP,NN}Channel.hh: Three new typedefs defined as with the
  existing G4CascadeXXXChannel, to replace G4NucleonSampler.

- G4CascadeT1NNChannel.cc: Lookup tables for both p-p and n-n scattering,
  implemented as with existing G4CascadeXXXChannel, from G4NucleonSampler.cc

- G4CascadeT0npChannel.cc: Lookup tables for p-n scattering, implemented as
  with existing G4CascadeXXXChannel, from G4NucleonSampler.cc

- G4CascadeFunctions.hh, .icc: Pass std::vector as non-const argument to
  getOutgoingParticleTypes() instead of returning internal buffer.

- G4CascadeSampler.cc, G4FinalStateSampler.cc:  Add some checks in
  findFinalStateIndex, fillSigmaBuffer, and sampleFlat(), such that
  single-entry ranges don't go through the analysis, just return index 0.

- G4ElementaryParticleCollider.cc: Follow change to getOutgoingParticleTypes()
  in generateStrangeChannelPartTypes().  Replace all uses of G4PionSampler
  and G4NucleonSampler with new channel "classes".

14 May 2010 Michael Kelsey (hadr-casc-V09-03-33)
------------------------------------------------
Continue consolidation of two-body collision lookup tables.  Unify
interfaces between pion/nucleon and kaon/hyperon samplers.

- G4CascadeData: Many changes to support use as data class for both
  kaon/hyperon and pion/nucleon tables (migration will be next tag):

  1) Add new first argument to template with number of bins in energy
     interpolation.  This replaces the (temporary) use of
     G4CascadeSampler::energyBins within the class definition.

  2) Add two additional template arguments, N8 and N9, with default values
     of zero.  These will be used by the pion/nucleon tables, but not by the
     existing kaon/hyperon tables.

  3) Define additional arrays for 8- and 9-body final states, using
     conditional dimensioning (e.g., if N8==0, use [1]).  Define second
     9-body constructor to accept and initialize the new arrays.

  4) Eliminate static initialization of index[], moving it into
     initialize().  Template specialization can't be used with data!

  5) Add separate "sum" (summed N-body cross-sections) and "tot" arrays
     (measured inclusive xsec).  Latter is a const-ref, initialized to "sum"
     if not provided as ctor argument, with two new ctors as needed.

  6) Add accessor to return maximum multiplicity (NM+1).

- G4CascadeFunctions.hh:  Add second template argument to specify which
  "final state sampler" is the base class.  Use both T::data.tot and
  T::data.sum in GetMultiplicity(), to support sum/tot comparisons in
  pion/nucleon channels.  Extend GetOutputParticleTypes() to support up to
  multiplicity 9.

- G4CascadeFunctions.icc:  Implementations of template class functions.

- G4CascadeXXXChannel.hh: Add "31," as initial template argument for Data.
  Add G4CascadeSampler as second template argument in G4CascadeXXXChannel
  typedef.


14 May 2010 Michael Kelsey (hadr-casc-V09-03-32)
------------------------------------------------
Continue revisions to two-body collision lookup tables.  Make the kaon and
hyperon channels compatible with the pion/nucleon samplers, before the next
stage of unifying the structure.

- G4CascadeSampler: NEW class, parallel to G4FinalStateSampler but with a
  different energy binning.  Used as base class to G4CascadeFunctions<T>,
  from which the cross-section and other arrays are passed.  Implement
  findMultiplicity (cf. G4CascadeFunctions::getMultiplicity) to return the
  true value, not the array index.

  This class replaces functionality of G4CascadeChannel, which is redundant.

- G4CascadeChannel: Remove all interpolation code, leaving only getQnums().

- G4CascadeFunctions:  Inherit from G4CascadeSampler for interpolations,
  except for final-state extraction (where FS type arrays are dealt with
  locally, not passed).  Public static functions rely on private instantiated
  version of class to do work, so that G4CascadeSampler gets instantiated.

- G4CascadeData: Remove final template argument (total number of indices),
  as redundant with simple sum of multplicity indices.  Use template args to
  dimension data member arrays (const references), and to statically
  initialize the start-stop index table.  Make large cross-sections table
  G4double, not G4float.  Define ctor to pass in array refs for initialization.
  Reduce index array to single dimension (start=index[i], stop=index[i+1]).

- G4CascadeXXXChannel:  All of the initial-state channel "classes"
  (typedef names) modified to follow G4CascadeData rewrite.  In .cc file,
  the explicit lookup tables are static, and passed by const-ref to
  G4CascadeData.  The "initializer" struct is dropped; with the static
  "data" object initialized by ctor here.

- G4ElementaryParticleCollider.cc:  In ::generateMultiplicity(), eliminate
  extra "+2" and "-2" applied to local "mul" variables.  With change above,
  all functions return return true multiplicity, not array index.

- G4FinalStateSampler:  Add findFinalStateIndex() function, to make
  interface match G4CascadeSampler exactly.  Reduce index array to single
  dimension.

- G4PionSampler.cc, G4NucleonSampler.cc:  Use new findFinalStateIndex()
  function in GetFSPartTypesXXX() functions.  Reduce index array to single
  dimension (start=index[i], stop=index[i+1]).

14 May 2010 Michael Kelsey (hadr-casc-V09-03-31)
------------------------------------------------
Begin revisions to two-body collision lookup tables.  This will be a major
reorganization, splitting the G4PionSampler and G4NucleonSampler into
separate little "classes" (typedefs) for each initial state, in the same way
that the kaon and hyperon states are done now.  The underlying templated and
base classes will be unified across all of the channels.

- G4CascadeInterpolator: NEW class to encapsulate interpolation procedure.
  Uses C-style arrays passed by dimensioned reference, to allow compile-time
  array bounds checking.  Template argument is array dimension, and array of
  energy bins is saved by ctor.  User array to be interpolated is passed as
  function argument.  Last value interpolated, along with result, is saved,
  to allow fast multiple interpolations.

  This class is substantially more lightweight than G4PhysicsVector.

- G4FinalStateSampler: Replace manual interpolation with G4CascadeInterpolator.
  Remove redundant sampleFlat(...) function with argument.  Rename member
  functions in anticipation of merging with G4CascadeFunctions.

- G4PionSampler.cc, G4NucleonSampler.cc: Follow use of G4CascadeInterpolator
  above, and drop local caching of interpolation results.  Reduce offset
  list for cross-sections to one dimension (start=index[i], stop=index[i+1]).

11 May 2010 Michael Kelsey (hadr-casc-V09-03-30)
------------------------------------------------
Bug fixes in the two-body scattering code.

- G4PionSampler.cc, G4NucleonSampler.cc:  Fix long-standing bug with offset
  indices computed for cross-section tables.  XXXindex[m][0] (start) and
  XXXindex[m][1] (stop) are computed in initChannels() as [start,stop]
  inclusive range (i.e., "for (i=start; i<=stop; i++)"), but used with
  G4FinalStateSampler::fillSigmaBuffer (and its predecessor code) as
  [start,stop) exclusive range (i.e., normal C style "for (i=start; i<stop;
  i++)").  This is fixed by properly setting XXXindex[m-1][1] =
  XXXindex[m][0], and using the ranges consistently in initChannels().

- G4ElementaryParticleCollider.cc:  In the six pion-nucleon scatters, the
  two-body final state is incorrectly tested for charge-exchange.  All the
  if statements check whether "particle_kinds[0]" is the initial nucleon,
  but the outgoing baryon actually appears in particle_kinds[1].  Replace
  the individual tests with the use of "finaltype", moved out of the
  strangeness if-block.

06 May 2010 Michael Kelsey (hadr-casc-V09-03-29, hadr-casc-V09-03-23-01)
------------------------------------------------------------------------
- G4Diproton.cc, G4Dineutron.cc, G4UnboundPN.cc:  After creating instance
  of these "internal" particles, remove the pointer from G4ParticleTable.
  This avoids an issue with the FTFP de-excitation code, which occasionally
  picks up the diproton and puts it onto a final-state particle list.

These three changes, and nothing else, are "backported" on top of -23 for
continued validation tests.

30 Apr 2010 Dennis Wright (hadr-casc-V09-03-28)
-----------------------------------------------
- G4ElementaryParticleCollider:
    improved pi-nucleon two-body angular distributions, and made
    sampling of CM angle faster.  As a result, the methods
    getElasticCase and adjustIntervalForElastic were made redundant
    and removed.  Also removed array containing old angular distribution
    parameters.

    Now use nucleon-nucleon angular distributions for hyperon-nucleon
    scattering, and pi-nucleon dsitributions for kaon-nucleon scattering
    (until specific kaon distributions are added).

29 Apr 2010 Michael Kelsey (hadr-casc-V09-03-27)
------------------------------------------------
- G4InuclPartcleNames.hh:  Long name "gamma" conflicts with math function.
  Change back to "photon".

- G4InuclElementaryParticle.cc, G4InuclEvaporation.cc,
  G4NonEquilibriumEvaporator.cc, G4NucleiModel.cc, G4NucleonSampler.cc,
  G4PionSampler.cc, G4PreCompoundCascadeInterface.cc,
  G4PreCompoundInuclCollider.cc:  Replace "gamma" with "photon".

- G4InuclElementaryParticle.hh:  Change "photon()" to "isPhoton()" to avoid
  conflicts with names enum.  Use names enum internally as well.

- G4ElementaryParticleCollider.cc, G4InuclCollider.cc,
  G4PreCompoundInuclCollider.cc:  Change "photon()" to "isPhoton()".

28 Apr 2010 Michael Kelsey (hadr-casc-V09-03-26)
------------------------------------------------
All changes below within "cascade/" subdirectory:

- G4InuclParticleNames.hh:  Define enums for particle type codes, using both
  "long" and "short" names copied from existing duplicated enums.  One
  change is that "kp" and "km" are replaced by "kpl" and "kmi" respectively,
  since "km" conflicts with GEANT4 "kilometers" unit.  Deploy in classes:

	include/G4FinalStateSampler.hh
	src/G4CascadeElasticInterface.cc
	src/G4CascadeInterface.cc
	src/G4ElasticCascadeInterface.cc
	src/G4ElementaryParticleCollider.cc
	src/G4InuclElementaryParticle.cc
	src/G4InuclEvaporation.cc
	src/G4NucleonSampler.cc
	src/G4PionSampler.cc
	src/G4PreCompoundCascadeInterface.cc

- G4InuclElementaryParticle.cc:  Add Omega- and antinucleon partcles to lists.
  No code uses these (yet).

24 April 2010 Michael Kelsey (hadr-casc-V09-03-25)
--------------------------------------------------
Remove redundant classes, G4Ibertini and G4BertiniRegionModel.

21 April 2010 Michael Kelsey (hadr-casc-V09-03-24)
--------------------------------------------------
- G4NucleiModel.hh,cc:  Eliminate last remaining hardwired baryon masses.

18 April 2010 Michael Kelsey (hadr-casc-V09-03-23)
--------------------------------------------------
Final revisions to access std::vector<particle> via const-references:

	G4CascadeInterface.cc
	G4EquilibriumEvaporator.cc
	G4IBertini.cc
	G4InuclCollier.cc
	G4NucleiModel.cc
	G4PreCompoundCascadeInterface.cc

- G4CollisionOutput:  Add new function to boost output lists to lab frame.

14 April 2010 Michael Kelsey (hadr-casc-V09-03-22)
--------------------------------------------------
- G4CascadeInterface.cc, G4IBertini.cc, G4PreCompoundCascadeInterface.cc:
  In ::ApplyYourself(), do the check on K0L/K0S _before_ passing G4PartDefn
  to G4InuclElemPart::type().  This avoids unnecessary warning message.

14 April 2010 Michael Kelsey (temporary: kelsey-memClean3)
----------------------------------------------------------
All changes below within "cascade/" subdirectory:

- G4FinalStateSampler: Replace "sigma" argument for sampling with data
  member, add functions to fill sigma buffer by passing in array references.
  Provide typedef for interpolator, and function to apply interpolation.

- G4PionSampler, G4NucleonSampler:  Follow changes to base class,
  eliminating much of the copy-and-paste code blocks via function calls.
  Replace G4float arrays with G4double, to support passing into functions.

13 April 2010 Michael Kelsey (hadr-casc-V09-03-21)
--------------------------------------------------
All changes below within "cascade/" subdirectory:

- G4InuclSpecialFunctions.hh, paraMaker.cc, paraMakerTruncated.cc:  Drop
  return-by-value from paraMaker() and paraMakerTruncated().  Add second
  argument with non-const reference to output buffer for return.

- G4EquilibriumEvaporator.cc:  Follow changes above to paraMaker(), use
  references to address parms.first and parms.second, instead of copying.

- G4NonEquilibriumEvaporator.cc:  Follow changes above to
  paraMakerTruncaed(), use references to address parms.first and
  parms.second, instead of copying.

- G4Dineutron, G4Diproton, G4UnboundPN:  Inherit from G4VShortLivedParticle,
  per Kurashige.  Thought it would eliminate G4ElectronOccupancy churn, but
  did not.

12 April 2010 Michael Kelsey (hadr-casc-V09-03-20)
--------------------------------------------------
All changes below within "cascade/" subdirectory:

- G4NucleiModel: Move function implementations from .hh to .cc.  Replace
  manual sorting (inefficient O(N^2)) with std::sort() and simple
  "less-than" function for std::pair<> "partners".

- G4CollisionOutput: Move function implementations from .hh to .cc.  Use
  std::vevtor<>::insert() to add vectors together.

- Replace return-by-value G4CollisionOutput with non-const reference buffer
  passed into xxx::collide(), in the following classes:
	G4BigBanger
	G4CascadeElasticInterface
	G4CascadeInterface
	G4ElasticCascadeInterface
	G4ElementaryParticleCollider
	G4EquilibriumEvaporator
	G4EvaporationInuclCollider
	G4Fissioner
	G4IBertini
	G4IntraNucleiCascader
	G4InuclCollider
	G4InuclEvaporation
	G4NonEquilibriumEvaporator
	G4NucleiModel
	G4PreCompoundCascadeInterface
	G4PreCompoundInuclCollider

  Note that some places where internal G4CollisionOutput buffers are being
  used (and their contents appended to the global output) have not been
  cleaned up yet.  These will require some rearrangement of the algorithms,
  or/and elimination of debugging output.

09 April 2010 Michael Kelsey (hadr-casc-V09-03-16-01)
-----------------------------------------------------
This modification is included in a pseudo-patch of hadr-casc-V09-03-16,
without brining in any of the -17 through -19 modifications.

- G4LorentzVector.cc:  Protect two instances of sqrt() against tiny negative
  arguments (due to tiny-tiny subtractions).

09 April 2010 Michael Kelsey (hadr-casc-V09-03-19)
--------------------------------------------------
All changes below within "cascade/" subdirectory:

- G4InuclParticle, G4InuclElementaryParticle, G4InuclNuclei:  Eliminate
  unused G4String ctor argument, introduced in hadr-casc-V09-03-01.  Causes
  a lot of pointless memory churn.

- G4BigBanger.cc:  Fix type conversion warning I introduced by mistake.

08 April 2010 Michael Kelsey (hadr-casc-V09-03-18)
--------------------------------------------------
All changes below within "cascade/" subdirectory:

- G4PionSampler, G4NucleonSampler: For all ::GetFSPartTypes*() functions,
  eliminate return-by-value std::vector<>, and pass in non-const reference
  for filling in situ.  Buffer is cleared.

- G4ElementaryParticleCollider.cc:  Follow changes above for Sampler calls.

07 April 2010 Michael Kelsey (hadr-casc-V09-03-17)
--------------------------------------------------
All changes below within "cascade/" subdirectory:

Replace return-by-value std::vector<> with either const-ref returns, or
with use of an internal buffer which can be reused, to reduce memory
churn due to copying, allocation, and resizing.

- G4BigBanger:  Create data buffer for lists of secondaries and momenta.
  Fill buffers in ::generateBangInSCM() and ::generateMomentumModules(),
  which are now non-const.  Reference buffers in ::collide().

- G4CascadeFunctions::getOutgoingParticleTypes():  Make "kinds" a static
  variable (buffer), and return it by const-ref.

- G4ElementaryParticleCollider:  Eliminate return-by-value std::vector<>
  on the functions listed below, by creating data buffers for particles,
  momenta, and particle types.  The functions become non-const and void:
  ::generateSCMfinalState(), ::generateMomModules()
  ::generateStrangeChannelPartTypes(), ::generateSCMpionAbsorption()

  Also, in ::generateStrangeChannelPartTypes(), use a switch statement
  instead of the long cascade of if-else-else.

- G4NucleiModel: Several member functions have different modifications:

  ::initializeCascad(bullet,target) -- Replace return value with a passed-in
	(non-const reference) buffer to be filled.  The calling code can
	pass in a data member, local variable, or whatever.

  ::generateParticleFate() -- Replace local "thePartners" variable with data
  	member, filled below.  Move "outgouing_cparticles" to data member
  	(fix the spelling!), and return by const-ref.

  ::generateInteractionPartners() -- Eliminate return value; fill data
	member instead, to be used by ::generateParticleFate().

- G4IntraNucleiCascader.cc:  Follow changes to initializeCascad() above.

- G4NucleonSampler, G4PionSampler: ** DON'T KNOW WHAT TO DO HERE **

- G4WatcherGun:  Return const-ref to list of watchers, instead of copy.

Replace all uses of std::vector<>::resize(0) with ::clear().  The former
causes deallocation/reallocation/resizing cycles, while clear() just removes
content, preserving the allocated buffer.

	include/G4CollisionOutput.hh
	src/G4ElementaryParticleCollider.cc
	src/G4NucleiModel.cc
	src/G4WatcherGun.cc

07 April 2010 Dennis Wright (hadr-casc-V09-03-16)
-------------------------------------------------
- fix negative energy bug in G4BigBanger, and switch to using
  G4NucleiProperties::GetBindingEnergy

07 April 2010 Michael Kelsey (hadr-casc-V09-03-15)
--------------------------------------------------
All changes below within "cascade/" subdirectory:

1) Systematically replace pass-by-value function arguments with const-refs.
This is the first step in reducing unnecessary memory churn, to be followed
by replacing return-by-value std::vector<> with non-const argument buffers.

	include/G4CascadeChannel.hh
	include/G4FinalStateSampler.hh
	include/G4InuclEvaporation.hh
	include/G4NuclWatcher.hh
	src/G4CascadeChannel.cc
	src/G4FinalStateSampler.cc
	src/G4InuclEvaporation.cc
	src/G4NuclWatcher.cc

2) Fix constness on some operator== and operator!= definitions.

	include/G4CascadeElasticInterface.hh
	include/G4CascadeInterface.hh
	include/G4ElasticCascadeInterface.hh
	include/G4IBertini.hh
	include/G4PreCompoundCascadeInterface.hh

07 Apr 2010 Michael Kelsey (hadr-casc-V09-03-14)
------------------------------------------------
- G4Dineutron.hh, G4Diproton.hh, G4UnboundPN.hh:
  Reset static "theInstance" pointer to zero in (now virtual) destructor.

- G4Dineutron.cc, G4Diproton.cc, G4UnboundPN.cc:
  Implement constructor to do the G4Ions initialization, rather than in
  ::Definition().  Drop use of G4ParticleTable; just monitor static pointer.
  Set "ShortLived" flag in G4Ions initialization, to avoid interactions with
  ProcessManager.

- G4InuclNuclei.cc:  In ::makeNuclearFragment(), set "ShortLived" flag for
  G4Ions, to avoid interactions with ProcessManager.

26 Mar 2010 Dennis Wright (hadr-casc-V09-03-13)
-----------------------------------------------
- G4EquilibriumEvaporator.cc: remove line #include "G4types.hh"
  (file doesn't exist)

20 Mar 2010 Michael Kelsey (hadr-casc-V09-03-12)
------------------------------------------------
All changes below within "cascade/" subdirectory:

- G4EquilibriumEvaporator.cc:  Move subtraction of Q1[i] outside new
  GetBindingEnergy() call.

- G4InuclNuclei.cc::makeNuclearFragment():  Add message warning users about
  non-physical creation.  Use new GetBindingEnergy() function here as well
  (V09-03-05 didn't have this function, so wasn't included in migration).

19 Mar 2010 Michael Kelsey (hadr-casc-V09-03-11)
------------------------------------------------
All changes below within "cascade/" subdirectory:

- G4InuclSpecialFunctions:  Two new functions:

::generateWithRandomAngles() to encapsulate random-direction generation.
  This function and existing generateWithFixedTheta() take optional mass
  argument to produce proper four-vector.

  Replace duplicated random angle code with new function above, and use new
  optional mass argument where available:

	G4BigBanger.cc
	G4ElementaryParticleCollider.cc
	G4EquilibriumEvaporator.cc
	G4Fissioner.cc
	G4NonEquilibriumEvaporator.cc
	G4NucleiModel.cc

::G4cbrt():  Define cube-root in terms of log and exp, rather than pow().
  Note that "cbrt()" can't be used, as it conflicts with <math.h> on Linux.

  Eliminate unnecessary uses of std::pow() with fixed arguments.  For
  example, "pow(x,3)" -> "x*x*x", "pow(x,1/3)" -> G4cbrt(x):

	G4BertiniRegionModel.cc
	G4EquilibriumEvaporator.cc
	G4EvaporationInuclCollider.cc
	G4Fissioner.cc
	G4IntraNucleiCascader.cc
	G4InuclCollider.cc
	G4NonEquilibriumEvaporator.cc
	G4NucleiModel.cc
	G4PreCompoundInuclCollider.cc
	G4RegionModel.cc
	bindingEnergyAsymptotic.cc
	bindingEnergyKummel.cc

  WARNING!  In G4IntraNucleiCascader.cc, the Coulomb barrier was calculated
  using "std::pow(A, 0.333)", rather than the "exact" 1./3.  This leads to
  per-mil differences in the value, and occasional differences in wheter an
  outgoing particle tunnels through.  The new code is exact to double
  precision, and therefore fixes a bug.

- Move "using" directive from all .hh files to corresponding .cc, along with
  some unnecessary #includes:

	G4BigBanger.hh, .cc
	G4ElementaryParticleCollider.hh, .cc
	G4EquilibriumEvaporator.hh, .cc
	G4EvaporationInuclCollider.hh, .cc
	G4Fissioner.hh, .cc
	G4IntraNucleiCascader.hh, .cc
	G4InuclCollider.hh
	G4InuclNuclei.hh
	G4NonEquilibriumEvaporator.hh, .cc
	G4NucleiModel.hh, .cc
	G4PreCompoundInuclCollider.hh, .cc

- G4NuclWatcher.hh and .cc (new):  Move implementation code from .hh to .cc.

18 March 2010 Michael Kelsey (hadr-casc-V09-03-10)
--------------------------------------------------
All changes below within "cascade/" subdirectory:

Missed one bug in repairs below, found when testing 4 GeV pi -> Pb.

- G4Fissioner.cc:  Replace incorrect G4LorentzVector ctor arguments
  (G4ThreeVector,m) with call to G4LV::setVectM().

17 March 2010 Dennis Wright (hadr-casc-V09-03-09)
-------------------------------------------------
Fix warning in G4InuclNuclei.cc: G4Ions:G4Ions was being called with
a double (a) in its 13th argument, when an integer is required.  Use
G4lrint to convert.

16 March 2010 Michael Kelsey (hadr-casc-V09-03-08)
--------------------------------------------------
All changes below within "cascade/" subdirectory:

Fix bugs introduced during migration from G4CascadeMomentum to
G4LorentzVector (see hadr-casc-V09-03-03).  With these bug fixes, 2000
events generated with "ppi4GeV" test executable are equivalent to production
output (GEANT 4.9.3), allowing for differences in hardwired nucleon masses.
When compared with hadr-casc-V09-03-02 (which uses G4ParticleDefinition for
all the particle masses) the 2000-event results are identical within
floating point precision.

- G4BigBanger.cc:  Line 72, fix unit conversion bug, GeV/MeV vs. MeV/GeV.
  Replace incorrectly introduced cross-product with original vector
  manipulation, written with G4LorentzVector accessors.

- G4CollisionOutput::selectPairToTune(): Test on "i3>0" not appropriate with
  G4LorentzVector indexing.  Replace with failure-test on "i3<0".  Also
  simplify final if-cascade for readability.

- G4EquilibriumEvaporator.cc:  Replace incorrect G4LorentzVector ctor
  arguments (px,py,pz,m) with call to G4LV::setVectM().

- G4IntraNuclearCascader.cc:  Replace leftover momentum_out[0] with .e().

- G4InuclNuclei.cc,hh:  Add new function ::makeNuclearFragment(a,z,exc),
  which "manually" construct a G4Ions object for cases where A/Z is not a
  valid stable or unstable nucleus.  These unphysical objects are passed
  back from G4IntraNuclearCascader.cc and immediately passed to G4BigBanger
  for conversion to nucleons.  A future change should move this action into
  G4INCascader and eliminate the need for unphysical nuclei.

- G4LorentzConvertor::toTheTargetRestFrame():  Remove local declaration of
  scm_momentum, restoring access to data member with that name.

- G4NucleiModel::generateQuasiDeutron(): Undo consolidation of dmom with
  local variables for each of the nucleon momenta.  Stack corruption led to
  differences in unbound p-n state relative to pp and nn states.

Minor updates:  Changed all the "verboseLevel()" initializers to (0), via a
shell script.  This allows making the code uniformly verbose or quiet.

	include/G4NucleiModel.hh
	src/G4Analyser.cc
	src/G4CollisionOutput.cc
	src/G4ElementaryParticleCollider.cc
	src/G4FissionStore.cc
	src/G4Fissioner.cc
	src/G4IntraNucleiCascader.cc
	src/G4NonEquilibriumEvaporator.cc
	src/G4NucleiModel.cc
	src/G4WatcherGun.cc

16 March 2010 Michael Kelsey (hadr-casc-V09-03-DO-NOT-USE)
--------------------------------------------------
All changes below within "cascade/" subdirectory:

Restore version hadr-casc-V09-03-05 to HEAD of CVS in order to apply bug
fixes and re-deploy migration from G4CascadeMomentum to G4LorentzVector.
This reversion is tagged as a checkpoint only, and should not be used for
testing or running (since it restores the known bugs in V09-03-03).

The update to G4InteractionCase.hh by Gabriele Cosmo in hadr-casc-V09-03-07
is not touched by this reversion!

The following CVS commands were used to perform the reversion:

	cvs update -j1.13 -j1.12 cascade/include/G4CascadParticle.hh
	cvs update -j1.4 -j1.3 cascade/include/G4CascadeMomentum.hh
	cvs update -j1.15 -j1.14 cascade/include/G4CollisionOutput.hh
	cvs update -j1.23 -j1.22 cascade/include/G4ElementaryParticleCollider.hh
	cvs update -j1.9 -j1.8 cascade/include/G4InuclCollider.hh
	cvs update -j1.19 -j1.18 cascade/include/G4InuclElementaryParticle.hh
	cvs update -j1.12 -j1.11 cascade/include/G4InuclNuclei.hh
	cvs update -j1.16 -j1.15 cascade/include/G4InuclParticle.hh
	cvs update -j1.13 -j1.12 cascade/include/G4InuclSpecialFunctions.hh
	cvs update -j1.13 -j1.12 cascade/include/G4LorentzConvertor.hh
	cvs update -j1.4 -j1.3 cascade/include/G4ParticleLargerBeta.hh
	cvs update -j1.9 -j1.8 cascade/include/G4ParticleLargerEkin.hh
	cvs update -j1.20 -j1.19 cascade/src/G4BigBanger.cc
	cvs update -j1.13 -j1.12 cascade/src/G4CascadParticle.cc
	cvs update -j1.6 -j1.5 cascade/src/G4CascadeElasticInterface.cc
	cvs update -j1.68 -j1.67 cascade/src/G4CascadeInterface.cc
	cvs update -j1.18 -j1.17 cascade/src/G4CollisionOutput.cc
	cvs update -j1.7 -j1.6 cascade/src/G4ElasticCascadeInterface.cc
	cvs update -j1.6 -j1.5 cascade/src/G4EvaporationInuclCollider.cc
	cvs update -j1.5 -j1.4 cascade/src/G4IBertini.cc
	cvs update -j1.3 -j1.2 cascade/src/G4InuclElementaryParticle.cc
	cvs update -j1.10 -j1.9 cascade/src/G4InuclEvaporation.cc
	cvs update -j1.3 -j1.2 cascade/src/G4InuclNuclei.cc
	cvs update -j1.4 -j1.3 cascade/src/G4InuclParticle.cc
	cvs update -j1.17 -j1.16 cascade/src/G4InuclSpecialFunctions.cc
	cvs update -j1.19 -j1.18 cascade/src/G4LorentzConvertor.cc
	cvs update -j1.5 -j1.4 cascade/src/G4PreCompoundCascadeInterface.cc
	cvs update -j1.4 -j1.3 cascade/src/G4PreCompoundInuclCollider.cc

Intermediate versions below had bindingEnergy changes from -05 re-applied

	cvs update -j1.23 -j1.21 cascade/src/G4EquilibriumEvaporator.cc
	cvs update -j1.22 -j1.20 cascade/src/G4Fissioner.cc
	cvs update -j1.29 -j1.27 cascade/src/G4IntraNucleiCascader.cc
	cvs update -j1.24 -j1.22 cascade/src/G4InuclCollider.cc
	cvs update -j1.23 -j1.21 cascade/src/G4NonEquilibriumEvaporator.cc
	cvs update -j1.38 -j1.36 cascade/src/G4NucleiModel.cc

G4ElementaryParticleCollider::particleSCMmomentumFor2to2:  Restore new
parametrization of elastic scattering added by D.Write in hadr-casc-V09-03-06

	cvs update -j1.47 -j1.45 cascade/src/G4ElementaryParticleCollider.cc
	+ editing

05 Mar 2010 Gabriele Cosmo (hadr-casc-V09-03-07)
------------------------------------------------
- Reinstated fix in G4InteractionCase.hh for initialisation in constructor to
  allow for porting on C++0x Standard.

07 Feb 2010 Dennis Wright (hadr-casc-V09-03-06)
-----------------------------------------------
- back out changes from tags V09-03-00 to V00-03-05 by restoring HEAD
  to V09-02-11, and keeping the di-nucleon classes
- replace Bertini method bindingEnergy() with
  G4NucleiProperties::GetBindingEnergy() in classes
  G4IntraNuclearCascader, G4InuclCollider, G4NucleiModel, G4EquilibriumModel,
  G4NonEquilibriumModel, G4Fissioner.  Note that G4Fissioner still uses the
  Bertini method bindingEnergyAsymptotic.

- G4ElementaryParticleCollider::particleSCMmomentumFor2to2
  replace original (incorrect) pp, pn, nn 2-body to 2-body scattering angular
  distributions with a new parameterization of elastic scattering data using
  the sum of two exponentials

02 Feb 2010 Dennis Wright (hadr-casc-V09-03-05)
-----------------------------------------------
- replace all uses of bindingEnergy (local Bertini method) with the
  Geant4 standard G4NucleiProperties::GetBindingEnergy(A,Z)
  files modified:
    G4IntraNucleiCascader.cc
    G4InuclCollider.cc
    G4NucleiModel.cc
    G4EquilibriumEvaporator.cc
    G4NonEquilibriumEvaporator.cc
    G4Fissioner.cc
- note that G4Fissioner still uses Bertini method bindingEnergyAsymptotic

28 Jan 2010 Dennis Wright (hadr-casc-V09-03-04)
-----------------------------------------------
- fix unused variable warnings in G4InuclParticle.hh, .cc and
  G4NonEquilibriumEvaporator.cc

26 Jan 2010 Michael Kelsey (hadr-casc-V09-03-03)
------------------------------------------------
All changes below within "cascade/" subdirectory:

- G4ParticleLargerBeta.hh:  Fix to use of CVS "Name" tag; no code changes.

- G4CascadParticle: Replace the position std::vector<> with G4ThreeVector.

- G4NucleiModel: Replace all std::vector<> coordinates with G4ThreeVector,
  and use vector math for computations.

Remove all use of G4CascadeMomentum (a simple container with a C-style
four-element array) with G4LorentzVector.  This is a fairly invasive change,
since G4CascMom was used for all of the three- and four-vector operations
throughout the Bertini code:

	include/G4CascadParticle.hh
	include/G4CollisionOutput.hh
	include/G4ElementaryParticleCollider.hh
	include/G4InuclCollider.hh
	include/G4InuclElementaryParticle.hh
	include/G4InuclNuclei.hh
	include/G4InuclParticle.hh
	include/G4InuclSpecialFunctions.hh
	include/G4LorentzConvertor.hh

	src/G4BigBanger.cc
	src/G4CascadParticle.cc
	src/G4CascadeElasticInterface.cc
	src/G4CascadeInterface.cc
	src/G4CollisionOutput.cc
	src/G4ElasticCascadeInterface.cc
	src/G4ElementaryParticleCollider.cc
	src/G4EquilibriumEvaporator.cc
	src/G4EvaporationInuclCollider.cc
	src/G4Fissioner.cc
	src/G4IBertini.cc
	src/G4IntraNucleiCascader.cc
	src/G4InuclCollider.cc
	src/G4InuclElementaryParticle.cc
	src/G4InuclEvaporation.cc
	src/G4InuclNuclei.cc
	src/G4InuclParticle.cc
	src/G4InuclSpecialFunctions.cc
	src/G4LorentzConvertor.cc
	src/G4NonEquilibriumEvaporator.cc
	src/G4NucleiModel.cc
	src/G4PreCompoundCascadeInterface.cc
	src/G4PreCompoundInuclCollider.cc

The new code is not yet entirely "correct," since Bertini also does a lot of
operations by way of three-momentum, imposing masses (and hence energy
conservation) separately, after the fact.

20 Jan 2010 Gabriele Cosmo
--------------------------
- G4InteractionCase.hh:  Minor fix in initialisation in constructor to
  allow for porting on C++0x Standard.

20 Jan 2010 Michael Kelsey (hadr-casc-V09-03-02)
------------------------------------------------
- G4LorentzConvertor.hh:  Fix scm_momentum data member to be G4ThreeVector
  (as used in previous versions) rather than G4LorentzVector.

NOTE:  I have *retagged* cascade/include/G4LorentzConverter.hh and this
       History file, rather than creating a new tag, since these are private
       development only, not public releases.

12 Jan 2010 Michael Kelsey (hadr-casc-V09-03-02)
------------------------------------------------
All changes below within "cascade/" subdirectory:

- G4CascadeMomentum: Replace use of static G4LV variables within functions
  with mutable data member of object; this does introduce more memory
  thrashing, but the plan is to get rid of the whole thing anyway.  Improve
  implicit casting and add assignment from G4LV.

- G4LorentzConverter:  Change function signatures to accept G4LV as input,
  using implicit cast to convert existing G4CascadeMomentum argument
  passing.  Use G4LV internally throughout, again using implicit cast to
  return G4CascMom values.  This substantially increases (temporarily!)
  memory thrashing.  Simplify ::rotate() functions to use G4LV and
  G4ThreeVec operations rather than array index gymnastics.  Move some
  function implementations out of .hh file into .cc.

- G4ParticleLargerEkin.hh: Fix use of CVS "Name" tag.  No code changes.

12 Jan 2010 Michael Kelsey (hadr-casc-V09-03-01)
------------------------------------------------
All changes below within "cascade/" subdirectory:

- G4ParticleLargerBeta, G4ParticleLargerEkin: Add additional operator()
  which takes pointers (for future mods to reduce ctor/dtor cycling), and
  fix ordering bug in beta sorting.  Add debugging printout togged with
  preprocessor flag.

- G4InuclParticle, G4InuclNuclei, G4InuclElementaryParticle:  Rewrite to
  carry G4DynamicParticle data member, and to instantiate particle
  properties via G4ParticleDefinition subclasses.  This is first stage in
  eventually eliminating the G4InuclParticle stuff entirely in favor of
  direct use of G4DynamicParticle for internal propagation.

These changes have been testing using debugging output on the production
(4.9.3) code compared to the above changes.  |diff| shows mostly identical
results, with occasional ~1e-5 floating point differences.

08 Jan 2010 Michael Kelsey (hadr-casc-V09-03-00)
------------------------------------------------
All changes below within "cascade/" subdirectory:

- G4BertiniNuclearModel:  REMOVE this class from the HEAD, and hopefully all
  future tags.  It is redundant with the G4NuclearModel class, and is not
  used anywhere in the G4 distribtion; the latter is referenced in both
  regular G4 code and in examples.

- G4Diproton, G4Dineutron, G4UnboundPN:  New G4ParticleDefinition
  subclasses, which implement the Bertini-specific dibaryon states.  These
  are not used anywhere as yet, but will be used in future modifications to
  the G4InuclParticle subclasses.

- G4CascadeMomentum:  Add interface to create from and cast to
  G4LorentzVector.  Will be used (in future) by G4InuclParticle modifications,
  and provides a transition to eliminating this class entirely.

1 Dec 2009 Dennis Wright (hadr-casc-V09-02-11)
----------------------------------------------
- G4PionSampler, G4NucleonSampler: change loop variable in ctor from i to j
  in order to satisfy Windows compiler

11 Nov 2009 Dennis Wright (hadr-casc-V09-02-10)
-----------------------------------------------
- G4CascadParticle, G4InuclElementaryParticle: add integer argument to ctor
  to indicate which generation cascade particle belongs to.
  Also change G4NucleiModel and G4BertiniNucleiModel to use this.

 8 Oct 2009 Dennis Wright (hadr-casc-V09-02-09)
-----------------------------------------------
- G4PionSampler:  use charge exchange cross section for pi0-p, go back
   original Bertini pi0-p elastic partial cs.  Update pi0 total cross
   section accordingly.  Improve fits to pi-p partial cs and update
   pi- total cross sections.
- G4NucleiModel: update pi- and pi0 total cross sections

24 Sep 2009 Dennis Wright (hadr-casc-V09-02-08)
-----------------------------------------------
- add class G4NucleonSampler which replaces old pp, pn, and nn partial and
    total cross sections also modify other classes which use them
- move large arrays which are instantiated at every call of frequently
    used methods.  They are now initialized once in constructors.
- G4CascadSpecialFunctions: put copy of total cross section method
    in G4NucleiModel, also remove unneeded energy scale arrays
    (now replaced with a new one)
- G4CascadeInterface: move instantiation of various collider classes
    outside of loop, and put on stack instead of heap
- G4ElementaryParticleCollider: re-design to use G4NucleonSampler and
    remove instantiation of large arrays from within loops in code
- G4NucleiModel: remove instatiation of large arrays from with loops,
    add new total cross section sampling, remove use of all but one
    energy scale

17 Sep 2009 Dennis Wright (hadr-casc-V09-02-07)
-----------------------------------------------
- G4PionSampler: remove large static arrays
- G4FinalStateSampler: remove static array pointer to G4 particle types
- G4ElementaryParticleCollider: clean up

4 Sep 2009 Dennis Wright (hadr-casc-V09-02-06)
----------------------------------------------
- add assignment operator to class G4CollisionOutput

31 Aug 2009 Dennis Wright (hadr-casc-V09-02-05)
-----------------------------------------------
- add class G4FinalStateSampler which was accidentally omitted from
  the previous tag

25 Aug 2009 Dennis Wright (hadr-casc-V09-02-04)
-----------------------------------------------
- correct bug in particle ordering in G4PionSampler
- clean up dead code in G4NucleiModel and G4ElementaryParticleCollider

20 Aug 2009 Dennis Wright (hadr-casc-V09-02-03)
-----------------------------------------------
- create class G4PionSampler: samples partial cross sections, multiplicities
  and final state particle types required for pi+, pi- and pi0 scattering
  within a nucleus.  This class uses re-evaluated pion partial cross sections
  and includes production of strange particle pairs.
- G4CascadeSigmaPlusNChannel: correct sigma plus cross sections
- G4CascadSpecialFunctions:  move pion, kaon, hyperon total cross sections
  to this class
- G4ElementaryParticleCollider: re-write to use G4PionSampler class for
  cross sections and multiplicities, remove method reChargering (now redundant)

15 Apr 2009 Dennis Wright (hadr-casc-V09-02-02)
-----------------------------------------------
- previous tag no longer used.  Bring hadr-casc-V09-02-00 back to
  HEAD and re-tag

21 Feb 2009 Dennis Wright (hadr-casc-V09-02-01)
-----------------------------------------------
- add printCrossSection method to G4CascadSpecialFunctions
- in GeElementaryParticleCollider, add high energy flag to distinguish
  "string-like" behavior
- G4IntraNucleiCascader.cc - allow secondaries from HE interaction to
  leave nucleus without interacting
- G4NucleiModel - get high_energy_interaction flag value from G4ElementaryParticleCollider

11 Feb 2009 V.Ivanchenko (hadr-casc-V09-02-00)
-----------------------------------------------
- set absorption coefficient 1.0 instead of 0.2 inside
  G4CascadSpecialFunctions (D.Wright)

25 Nov 2008 Dennis Wright (hadr-casc-V09-01-10)
-----------------------------------------------
- fix multiplicity sampling in G4ElementaryParticleCollider::generateMultiplicity().
  Now partial cross sections are normalized to the total cross section instead
  of just the sum of 2-body to 6-body final state cross sections.  Also fix
  2-body cross sections above 7 GeV where they were too small.
  Fix the same cross sections which appear in G4CascadSpecialFunctions.cc

21 Nov 2008 Dennis Wright (hadr-casc-V09-01-09)
-----------------------------------------------
- add some comments to cross section tables in G4CascadSpecialFunctions.cc
  and G4ElementaryParticleCollider.cc

24 Oct 2008 Dennis Wright (hadr-casc-V09-01-08)
-----------------------------------------------
- replace GetAtomicMass() with GetNuclearMass() in cascade/G4InuclEvaporation
  and evaporation/G4BertiniEvaporation
- V. Ivantchenko added name to G4CascadeInterface ("Bertini Cascade")

17 Oct 2008 Dennis Wright (hadr-casc-V09-01-07)
-----------------------------------------------
- added Coulomb barrier plus barrier penetration in G4IntraNucleiCascader.cc

27 Sep 2008 Dennis Wright (hadr-casc-V09-01-06)
-----------------------------------------------
- Fixed 4.3 compiler warnings for G4InuclElementaryParticle.hh by providing
  initializers for particle type and mass
- Remove unused variables totscm, totlab in G4BigBanger.cc,
  G4ElementaryParticleCollider.cc, and unused mom1 from G4InuclSpecialFunctions.cc

22 Sep 2008 Gabriele Cosmo (hadr-casc-V09-01-05)
------------------------------------------------
- Introduced simple wrapper class G4CascadeMomentum meant to replace usage
  of std::vector<double> in the cascade code, to reduce memory allocations.
  Courtesy of P.Elmer (princeton Univ.).
- Modified cascade code to make use of G4CascadeMomentum.

 3 Sep 2008 Dennis Wright (hadr-casc-V09-01-04)
-----------------------------------------------
- G4ElementaryParticleCollider.cc: in method generateMultiplicity, remove
  large_cut which increases multiplicity from 3 to 4 abruptly at 4 GeV
  and above.   This caused a sharp drop-off in the single pion spectra from
  pH reactions.   The effect in heavier nuclei is small.

29 Jun 2008 Dennis Wright (hadr-casc-V09-01-03)
-----------------------------------------------
- add changes made by M. Paterno, J. Kowalkowski, and M. Fischler (FNAL)
  to speed up code.  All G4Cascade***Channel classes and related code changed.

 5 May 2008 Dennis Wright (hadr-casc-V09-01-02)
-----------------------------------------------
- retag hadr-casc-V09-csbug as hadr-casc-V09-01-02

30 Apr 2008 Dennis Wright (hadr-casc-V09-csbug)
-----------------------------------------------
- fix cross section bug in G4CascadSpecialFunctions that returned
  low or zero total cross sections for pi-p, pi+n, np, and pi0
  interactions

29 Apr 2008 Dennis Wright (hadr-casc-V09-01-01)
-----------------------------------------------
- bring tag hadr-casc-V09-01-coula to HEAD, make official tag

22 Apr 2008 Dennis Wright (hadr-casc-V09-01-param)
--------------------------------------------------
- changed pp, nn total cross section parameterization in
  G4CascadSpecialFunctions to more closely reflect the PDG values (old one
  was off by as much as a factor of 3.

3 Apr 2008 Dennis Wright (hadr-casc-V09-01-coula)
-------------------------------------------------
- removed Coulomb barrier from G4IntraNucleiCascader.cc (causes unphysical spike)

3 Apr 2008 Dennis Wright (hadr-casc-V09-01-coul)
------------------------------------------------
- Added Coulomb barrier in G4EquilibriumEvaporator.cc, G4IntraNucleiCascader.cc

17 Nov 2007 Dennis Wright (hadr-casc-V09-00-02)
-----------------------------------------------
- Fix angular distribution for nucleon-nucleon elastic scattering
  above 2.8 GeV, by modifying G4ElementaryParticleCollider::getElasticCase

25 May 2007 Dennis Wright for Aatos Heikkinen (hadr-casc-V08-03-00)
-------------------------------------------------------------------
- implemented interfaces for pre-equilibrium and equilbrium evaporation
  models

04 May 2007 Aatos Heikkinen (hadr-casc-V08-02-00)
-------------------------------------------------

- Added protection in G4ElementaryParticleCollider against negative
  value to sqrt().

08 May 2006 Dennis Wright (hadr-casc-V08-00-00)
-----------------------------------------------

- cascade: remove G4BERTINI_KAON conditional assembly flags.  Files
  affected:
  G4ElementaryParticleCollider.hh, cc
  G4InuclElementaryParticle.hh
  G4NucleiModel.hh, cc
  G4CascadeInterface.cc
  G4IntraNucleiCascader.cc

- cascade (Pekka Kaitaniemi): G4ElasticCascadeInterface: derive
  from G4VIntraNuclearTransportModel instead of G4HadronElastic.
  Check for case when no elastic scattering occurs.  If so,
  return original bullet and target.

24 Nov 2005 Dennis Wright (hadr-casc-V07-01-00)
----------------------------------------------

- cascade (bertini-V07-01-00 by Aatos Heikkinen)
   elastic scattering interface added:
   G4ElasticCascadeInterface.hh, .cc added
   G4CascadeInterface.hh modified
