# Category hadr-man 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!

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

## 2024-10-19 Vladimir Ivanchenko (hadr-man-V11-02-02)
- G4HadronicProcessStore - fixed minor memory leak at exit by addition of
    G4ThreadLocalSingleton pattern and removed deletion of extra processes
    to avoid double deletion at exit.

## 2024-05-27 Vladimir Ivanchenko (hadr-man-V11-02-01)
- G4HadronicProcessStore - fixed handling of rare processes: printout, 
    cross section maximum search, and deletion end of run.

## 2023-12-09 Vladimir Ivanchenko (hadr-man-V11-02-00)
- G4HadronicProcess - explicitly define cross section type per particle type,
    this should CPU performance for few %

## 2023-11-18 I. Hrivnacova (hadr-man-V11-01-08)
- G4HadronicProcess, G4HadXSHelper - fixed memory leak at exit

## 2023-11-17 Vladimir Ivanchenko (hadr-man-V11-01-07)
- G4HadronicProcessStore - fixed memory leak at exit

## 2023-11-06 Vladimir Ivanchenko (hadr-man-V11-01-06)
- G4HadronicProcessStore - added printouts for neutrino processes
  G4HadronicProcessType - added new types for neutrino interactions

## 2023-08-16 Vladimir Ivanchenko (hadr-man-V11-01-05)
- G4HadronicProcessStore - removed extra not needed empty lines from
    information printout

## 2023-07-14 Alberto Ribon (hadr-man-V11-01-04)
- G4HadronicProcess : reduced the number of warnings concerning kaon0 and
  anti_kaon0 (which are transformed in kaon0S and kaon0L) to max 1 warning
  per thread. 
  (This is useful for Fluka-Cern because it produces kaon0 and anti_kaon0.)

## 2023-03-29 Vladimir Ivanchenko (hadr-man-V11-01-03)
- G4HadronicProcess - added extra G4Exception for the case if worker cannot 
  share initialisation with master thread (problem #2528), diagnostic is
  improved
- G4HadronicProcessStore - avoid checks of environment variables, instead call 
  to G4HadronicParameters

## 2023-01-21 Vladimir Ivanchenko (hadr-man-V11-01-02)
- G4HadronicProcess - removed usage of DebugFlag and RandomFile

## 2023-01-17 Vladimir Ivanchenko (hadr-man-V11-01-01)
- G4HadronicProcess - moved several class members to be protected, which 
    is needed for hadron elastic process (and may be other processes)

## 2023-01-09 Vladimir Ivanchenko (hadr-man-V11-01-00)
- G4HadronicProcess - substitute access to environment variables by call to
  G4HadronicParameters

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

## 2022-11-11 Alberto Ribon (hadr-man-V11-00-07)
- G4HadronicProcessStore: extended the Dump method for hypertriton and 
  anti_hypertriton.

## 2022-08-24 Vladimir Ivanchenko (hadr-man-V11-00-06)
- G4HadronicProcessType - added fNeutronGeneral

## 2022-08-22 Vladimir Ivanchenko (hadr-man-V11-00-05)
- G4HadronicProcess - make access to target nucleus public needed for 
    neutron general process

## 2022-07-01 Alberto Ribon (hadr-man-V11-00-04)
- G4HadronicProcess: removed the temporary check and protection introduced
  in the previous tag (see below). This is not needed any longer after 
  replacing the threshold used for checking the absolute energy 
  non-conservation from DLB_MAX (implying no checking at all) to 350 GeV
  (this value allows for cases where the residual nucleus is not produced,
   even when super-heavy nuclides are involved).

## 2022-06-16 Alberto Ribon (hadr-man-V11-00-03)
- G4HadronicProcess: temporary check and protection against the crashes
  that have been seen recently with neutronHP; when a secondary particle
  has a huge kinetic energy (i.e. higher than the max energy allowed in
  Geant4 hadronic physics - by default 100 TeV), a JustWarning is thrown
  and the particle is neglected (i.e. a corresponding G4Track object is
  not created).

## 2022-05-25 Alberto Ribon (hadr-man-V11-00-02)
- G4HadronicProcess: propagate the information on parent resonance
  (in the FillResults method, from G4HadSecondary to G4Track)

## 2022-05-14 Vladimir Ivanchenko (hadr-man-V11-00-01)
- G4HadronicProcess - implemented integral method
- G4HadXSTypes, G4HadXSHelper - new helper objects 

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

---

# History entries prior to 11.0

16 November 2021 V. Ivanchenko (hadr-man-V10-07-10)
---------------------------------------------------
- G4HadronicProcessStore : attempt to fix memory leak at exit

23 September 2021 A. Ribon (hadr-man-V10-07-09)
---------------------------------------------------
- G4HadronicProcessType : added new enum value (fEMDissociation = 310)
  for EM dissociation process (as requested by Laurence James Nevay).

04 August 2021 A. Ribon (hadr-man-V10-07-08)
---------------------------------------------------
- HadronicProcess : removed unused private member variable (idxIC);
  updated the call to the G4Track method to set the model creator ID.

04 June 2021 A. Ribon (hadr-man-V10-07-07)
---------------------------------------------------
- HadronicProcess : made public (instead of protected) the method
  GetHadronicInteraction(). This can be useful for users to access at
  run-time some information available from a hadronic final-state model.

17 May 2021 J. Madsen (hadr-man-V10-07-06)
---------------------------------------------------
- Fixed TLS usage of G4HadronicProcessStore
- Fixed loops in G4HadronicProcessStore::Clean()

16 April 2021 B. Morgan (hadr-man-V10-07-05)
---------------------------------------------------
- Migrate build to modular CMake API

13 April 2021 A. Ribon (hadr-man-V10-07-04)
---------------------------------------------------
- GNUmakefile, sources.cmake : moved most classes of
  hadronic/models/management into hadronic/management
  (with the remaining few ones moved into hadronic/util ;
   moreover, all the classes of hadronic/model/util have been
   moved to hadronic/util; note that the directories
   hadronic/models/management/ and hadronic/models/util/ have
   now been deleted).

22 March 2021 A. Ribon (hadr-man-V10-07-03)
---------------------------------------------------
- G4HadronicEPTestMessenger : removed deprecated commands.

18 March 2021 A. Ribon (hadr-man-V10-07-02)
---------------------------------------------------
- G4HadronInelasticProcess : moved to hadronic/mangement/ .

08 March 2021 A. Ribon (hadr-man-V10-07-01)
---------------------------------------------------
- G4HadronInelasticProcess : removed old and unused header file
  corresponding to the Gheisha inelastic cross section (that has been
  deleted).

04 March 2021 A. Ribon (hadr-man-V10-07-00)
---------------------------------------------------
- G4HadronInelasticProcess : added a new method to return the particle
  definition (useful in practice to distinguish between baryons and
  antibaryons, or between hadrons and ions).

01 November 2020 V. Ivanchenko (hadr-man-V10-06-10)
---------------------------------------------------
- G4HadronicProcessStore : fixed Coverity report on the Print(..) method

14 October 2020 A. Ribon (hadr-man-V10-06-09)
---------------------------------------------------
- G4HadronicProcess : removed the warnings when the environmental variables
  G4Hadronic_*Level are used.
  This is needed for system testing, in order to activate in some platforms
  these conservation checks for all examples and tests.
  Note that for advanced users, the use of UI commands are preferable.

05 August 2020 A. Ribon (hadr-man-V10-06-08)
---------------------------------------------------
- G4HadronicEPTestMessenger, G4HadronicProcess : deprecated the three
  environmental variables G4Hadronic_*Level and the corresponding old
  UI commands "/heptst/*Level", recommending instead the new UI commands
  "/process/had/heptst/*Level".

04 August 2020 V. Ivanchenko (hadr-man-V10-06-07)
---------------------------------------------------
- G4HadronicProcessStore : use verbosity level from the G4HadronicParameters
    class, add printout of cross section factor
- G4HadronicProcess - removed unused flag

20 July 2020 V. Ivanchenko (hadr-man-V10-06-06)
---------------------------------------------------
- G4HadronicProcessStore : extended default initialisation printout to
  anti_lambda

18 May 2020 G. Cosmo (hadr-man-V10-06-05)
---------------------------------------------------
- G4HadronicProcessStore: removed unnecessary use of deprecated
  G4USE_STD11 flag in HtmlFileName(). Also indicated in GitHub PR#13.

16 May 2020 V. Ivanchenko (hadr-man-V10-06-04)
---------------------------------------------------
- G4HadronicProcessStore : extended default initialisation printout to
  sigma-, D-, B-.
- G4HadronicProcess : removed check for G4HadronicException, where it
  cannot be; limit printout on kaon0 in final state.

12 May 2020 A. Ribon (hadr-man-V10-06-03)
---------------------------------------------------
- G4HadronicProcessStore : in the method Dump, check the internal verbosity
  level as well as the newly introduced global hadronic verbosity level,
  returning immediately (without printing anything) if one of these is 0.

1 April 2020 V. Ivanchenko (hadr-man-V10-06-02)
---------------------------------------------------
- G4HadronicProcess : fixed Coverity warning to EP check method for
    the case when primary particle remains in the interaction

16 January 2020 A. Ribon (hadr-man-V10-06-01)
---------------------------------------------------
- G4HadLeadBias : replaced 'G4int' with 'size_t' to avoid warnings (seen on
  Windows).

3 January 2020 V. Ivanchenko (hadr-man-V10-06-00)
---------------------------------------------------
- G4HadronicProcess : for charge check assume, that all final electrons
  come from internal conversion

11 November 2019 A. Ribon (hadr-man-V10-05-07)
---------------------------------------------------
- G4HadronicProcess : in the method CheckResult, a short-lived secondary
  particle is allowed to have a dynamic mass which differ from the PDG mass
  by less than three times the particle's width.

17 October 2019 V. Ivanchenko (hadr-man-V10-05-06)
---------------------------------------------------
- G4HadronicProcess : for particle out of the mass shell correct
    kinetic energy in a way, that it is always above 10 keV;
    use std::getenv method recommended for concurrency

12 September 2019 V. Ivanchenko (hadr-man-V10-05-05)
---------------------------------------------------
- G4HadronicProcess : fixed Coverity warnings

21 August 2019 V. Ivanchenko (hadr-man-V10-05-04)
---------------------------------------------------
- G4EnergyRangeManager : move operators to be private, removed
    obsolete method, removed G4HadronicException, instead in case of
    problem return nullptr
- G4HadronicProcess : do not use try/catch pattern to choose hadronic
    interaction; decrease limit on check of offshell mass from 1.5 MeV
    to 10 keV - fixed problem 2175; removed unused headers

13 July 2019 V. Ivanchenko (hadr-man-V10-05-03)
---------------------------------------------------
- G4EnergyRangeManager : added short  cut - if only one model registered
    for a process no check is applied; implemented C++11 paterns

11 June 2019 A. Ribon (hadr-man-V10-05-02)
---------------------------------------------------
- G4EnergyRangeManager : fixed bug regarding the kinetic energy per nucleon
  in the case of anti-nuclei (the bug was harmless because one single model,
  FTFP, is used for all energies in the case of anti-nuclei projectiles).

03 June 2019 V. Ivanchenko (hadr-man-V10-05-01)
---------------------------------------------------
- G4HadronicProcess - removed try/couch pattern from computation of mean
    free path, removed final state random rotation

08 May 2019 V. Ivanchenko (hadr-man-V10-05-00)
---------------------------------------------------
- G4HadronicInelasticProcess - removed default GHEISHA cross section

08 November 2018 V. Ivanchenko (hadr-man-V10-04-12)
07 November 2018 V. Ivanchenko (hadr-man-V10-04-10)
06 November 2018 V. Ivanchenko (hadr-man-V10-04-09)
---------------------------------------------------
- G4HadronicProcess - added check if secondary particle is on the mass
    shell, if its mass differ from the PDG mass more for 1.5 MeV then mass
    is forced to the mass shell, energy concerved, but momentum is changed

20 August 2018 V. Ivanchenko (hadr-man-V10-04-08)
---------------------------------------------------
- G4HadronicInteractionWrapper - removed as obsolete class

10 August 2018 A. Ribon (hadr-man-V10-04-07)
---------------------------------------------------
- sources.cmake, G4HadronicParameters : moved away class G4HadronicParameters
  in hadronic/util/ to avoid circular dependency between hadronic/management/
  and hadronic/cross_sections/ (the former has to depend on the latter, but
  not vice versa; hadronic/util/ does not depend on either).

6 August 2018 A. Ribon (hadr-man-V10-04-06)
---------------------------------------------------
- G4HadronicParameters : created new singleton to keep global hadronic
  parameters. For the time being, it has only the high-energy limit of
  hadronic physics (instead of spreading this value in many different
  files, as done up to now). The default value is set to 100 TeV.

14 July 2018 M.Maire (hadr-man-V10-04-05)
---------------------------------------------------
- add function G4HadronicProcess::GetHadronicModel(modelName)
  which return a G4HadronicInteraction*

8 June 2018 J. Yarba (hadr-man-V10-04-04)
---------------------------------------------------
- G4HadronicProcess - use correct return type when calling CheckResult
  (from PostStepDoIt); otherwise the value of pointer 'result' does not
  get properly reset to NULL in case a non-conservation is detected,
  thus "bad" interaction does not get re-sampled

31 May 2017 V. Ivanchenko (hadr-man-V10-04-03)
---------------------------------------------------
- G4HadronicProcess, G4HadronInelasticProcess - added keyword
    "override", cleanup cross section scale factor and weights
- G4HadronicProcessStore - use "nullptr", added flag buildXSTable
    and get/set methods

30 May 2017 V. Ivanchenko (hadr-man-V10-04-02)
---------------------------------------------------
- G4HadronicProcess, G4VLeadingParticleBiasing, G4HadLeadBias
    fixed compilation warning of CMSSW at gcc7.0.0

29 May 2017 V. Ivanchenko (hadr-man-V10-04-01)
---------------------------------------------------
- G4HadronicProcess - use const pointers and "nullptr" for
    G4Material and G4Element, use ComputeCrossSection(...) method,
    remove creation of new materials in run time inside
    GetElementCrossSection(..) method, all materials should
    be created in user code

09 May 2018  Alberto Ribon (hadr-man-V10-04-00)
---------------------------------------------------
- G4HadronicProcess : fixed warnings in gcc 8 regarding catching
    polymorphic type by value, instead of by reference.

12 September 2017  Krzysztof Genser (hadr-man-V10-03-06)
---------------------------------------------------
- G4HadronicProcessType.hh added fMuAtomicCapture

31 August 2017  Dennis Wright  (hadr-man-V10-03-05)
---------------------------------------------------
- G4HadronicProcessStore.cc: remove circular dependence on G4RadioactiveDecay

17 July 2017  Dennis Wright  (hadr-man-V10-03-04)
-------------------------------------------------
- G4HadronicProcessStore::DumpHtml(): add PrintHtml for generic ion
- G4HadronicProcessStore::PrintHtml(): add loop to print descriptions
   of "extra" processes, including radioactive decay.
- G4HadronicProcessStore::Clean(): add exception to prevent deletion
   of G4RadioactiveDecay - already deleted somwhere else.

11 May 2017 V. Ivanchenko (hadr-man-V10-03-03)
10 May 2017 V. Ivanchenko (hadr-man-V10-03-00)
---------------------------------------------------
- G4HadronicProcess - correctly check charge and energy balance
    in the case of e- internal conversion; improved initialisation
    for constructors

01 July 2016 V. Ivanchenko (hadr-man-V10-02-03)
---------------------------------------------------
- G4EnergyRangeManager - fixed Coverity warning

24 June 2016  Alberto Ribon  (hadr-man-V10-02-02)
---------------------------------------------------
- G4HadronicProcess - added check on the final-state secondaries to see
  if kaon0 or anti_kaon0 are present: if this the case, they are transformed
  into either kaon0S or kaon0L, with equal (50%) probability.

27 May 2016 V. Ivanchenko (hadr-man-V10-02-01)
---------------------------------------------------
- G4HadronicProcess - added flag of "integral" approach to take into
    account cross section change at a step; use nullptr;
    do not create new materials in the method GetElementCrossSection(),
    istead only try to find existing simple G4Material

18 April 2016 V. Ivanchenko (hadr-man-V10-02-00)
---------------------------------------------------
- G4HadronicProcessStore - call initialisation of all G4HadronicInteractions

30 October 2015  Gunter Folger    (hadr-man-V10-01-06)
---------------------------------------------------
- while loop check: G4HadronicProcess.cc has one loops, already checked with
    counter

21 September 2015  Dennis Wright  (hadr-man-V10-01-05)
------------------------------------------------------
- G4HadronicProcess::BiasCrossSectionByFactor : replace
  if( (it != "PhotonInelastic") &&
      (it != "ElectroNuclear") &&
      (it != "PositronNuclear") )

    by

  if( (it != "photonNuclear") &&
      (it != "electronNuclear") &&
      (it != "positronNuclear") )

    to fix fatal exception in bug report 1740.


09 September 2015 A. Ribon (hadr-man-V10-01-04)
---------------------------------------------------
- G4HadronicProcessStore : print "/n", i.e. "per nucleon", in the
  kinetic energy limits of hadronic models in the case of ions
  (address bug report #1775).

13 August 2015 A. Ribon (hadr-man-V10-01-03)
---------------------------------------------------
- G4HadronicProcess : trivial and useless Coverity fixes.

27 May 2015 G.Folger (hadr-man-V10-01-02)
---------------------------------------------------
- Updates to G4HadronicProcessStore for Html documentation

15 May 2015 A. Ribon (hadr-man-V10-01-01)
---------------------------------------------------
- G4HadronicProcess : improved the method GetElementCrossSection
  to be used also with neutronHP (which needs a material defined).

11 March 2015 V. Ivanchenko (hadr-man-V10-01-00)
---------------------------------------------------
- G4HadronicProcessStore, G4HadronicProcess - fixed procedure of deletion
    at exit

19 November 2014 G. Folger(hadr-man-V10-00-17)
---------------------------------------------------
- G4HadronicProcess::CheckResult(): Add check for dynamic mass
    to correspond to PDG mass within ~10%.

12 November 2014 V. Ivanchenko (hadr-man-V10-00-16)
---------------------------------------------------
- G4HadronicProcessStore -fixed computation of cross sections for ions

12 November 2014 V. Ivanchenko (hadr-man-V10-00-15)
---------------------------------------------------
- G4HadronicProcess - fixed final track status for some models like
    G4WilsonAbrasionModel

11 November 2014 V. Ivanchenko (hadr-man-V10-00-14)
---------------------------------------------------
- G4HadronicProcess - clear final state before resample interaction
  due to energy balance violation

7 November 2014 V. Ivanchenko (hadr-man-V10-00-13)
------------------------------------------------
4 November 2014 V. Ivanchenko (hadr-man-V10-00-12)
------------------------------------------------
- G4HadronicProcess - added creator model type to secondary

12 September 2014 Tatsumi Koi (hadr-man-V10-00-11)
------------------------------------------------
- Add BuildPhysics method for Initialisation of models before run
	Co working with hadr-modman-V10-00-05
	include/G4EnergyRangeManager.hh
	src/G4EnergyRangeManager.cc
	src/G4HadronicProcess.cc

4 August 2014 V. Ivanchenko (hadr-man-V10-00-10)
------------------------------------------------
- G4HadronicProcessStore, G4HadronicProcess: simplified registration and
    de-registration; fixed Coverity report

1 August 2014 Alberto Ribon (hadr-man-V10-00-09)
------------------------------------------------
- G4EnergyRangeManager, G4HadronicProcess: moved the computation of
  the kinetic energy per nucleon (in the case of ion projectile)
  from G4HadronicProcess to G4EnergyRangeManager.

1 August 2014 Alberto Ribon (hadr-man-V10-00-08)
------------------------------------------------
- G4EnergyRangeManager : added a new method GetHadronicInteraction
  which uses G4HadronicInteraction::IsApplicable.
- G4HadronicProcess : replaced the old method of G4EnergyRangeManager
  (still there but deprecated) with the new one.

1 July 2014 Gunter Folger (hadr-man-V10-00-07)
----------------------------------------------
- G4HadronicProcessStore::PrintHtml(): include ProcessDescription
    inline in physics lists description

22 May 2014 Andrea Dotti (hadr-man-V10-00-06)
--------------------------------------------
- Code cleanup

22 May 2014 Andrea Dotti (hadr-man-V10-00-05)
--------------------------------------------
- Fixing valgrind report

21 May 2014 Andrea Dotti (hadr-man-V10-00-04)
--------------------------------------------
- Retagging: previous tag was ok.

21 May 2014 Alberto Ribon (hadr-man-V10-00-03)
---------------------------------------------
- G4HadronicProcessStore : add printout information for deuteron, triton,
  He3 and alpha.

20 May 2014 Andrea Dotti (hadr-man-V10-00-02)
---------------------------------------------
- G4HadronicProcessStore : correct for bug in Clear() for which stopping
  processes are deleted twice (once because are registered as normal
  processes and once are registered as extra processes).

15 May 2014 Vladimir Ivanchenko (hadr-man-V10-00-01)
---------------------------------------------------
- G4HadronicProcess: added method  GetHadronicInteractionList() allowing
    access to the list of registered models, removed obsolete access
    methods to G4EnergyRangeManager
- G4HadronicProcessStore - become G4ThreadLocalSingletone allowing
    proper destruction of hadronic processes/models/x-sections
- G4EnergyRangeManager - cleaned up; instead of c-array models pointers
    are stored in stl vector
- this tag requires remove deletion of Physics vectors from destructors
    of all hadronic classes

03 February 2014 Gunter Folger (hadr-man-V10-00-00)
---------------------------------------------------
- G4HadronicProcess: in EnergyMomentumCheck... add printout of 3momentum

20 June 2013  Dennis Wright  (hadr-man-V09-06-03)
-------------------------------------------------
- G4EnergyRangeManager : re-order initialization of hadronicInteractionCounter
  in copy ctor and assignment operator to satisfy coverity

19 April 2013 Tatsumi Koi (hadr-man-V09-06-02)
-------------------------------------------------------
- Add dump method
	include/G4EnergyRangeManager.hh
	src/G4EnergyRangeManager.cc

 7 March 2013 michel maire  (hadr-man-V09-06-01)
- G4HadronicProcessStore- Dump and Print: cosmetic in Processes summary

30 January 2013 michel maire  (hadr-man-V09-06-00)
-------------------------------------------------------
- G4HadronicProcessStore::GetCrossSectionPerAtom() - add material

14 November 2012 Vladimir Ivantchenko  (hadr-man-V09-05-24)
-------------------------------------------------------
- G4HadronicProcess.cc - added full printout about hadronic exception
    inside G4Exception printout, fixed bug#1377

14 November 2012 Vladimir Ivantchenko  (hadr-man-V09-05-23)
-------------------------------------------------------
- G4HadronicProcess.cc - added catch of G4HadronicException
    inside BuildPhysicsTable method

11 October 2012 Krzysztof Genser   (hadr-man-V09-05-22)
-------------------------------------------------------
- G4HadronicProcessType.hh added fLeptonAtRest

01 October 2012 Alberto Ribon      (hadr-man-V09-05-21)
-------------------------------------------------------
- Fixed warnings in G4HadronicProcessStore.cc.

28 September 2012 Michael Kelsey   (hadr-man-V09-05-20)
-------------------------------------------------------
- G4HadronicProcess:  Restore inheritance from G4VDiscreteProcess; this
  migration will be done during 10.0 development.  Remove deprecation
  warning from original constructor for now (keep new constructor in
  addition).

28 September 2012 Alberto Ribon    (hadr-man-V09-05-19)
-------------------------------------------------------
- Fixed warnings in G4HadronicProcessStore.cc.

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

19 September 2012 Michael Kelsey   (hadr-man-V09-05-17)
-------------------------------------------------------
- G4HadronicProcess.hh:  Fix compiler warning about unused parameters in
  GetMeanLifeTime() (added to cover pure virtual in AtRest).

18 September 2012 Michael Kelsey   (hadr-man-V09-05-16)
-------------------------------------------------------
- G4HadronicProcess:  Inherit from G4VRestDiscreteProcess, to unify "normal"
  and stopping/capture activities.  Change constructor signature to take
  G4HadronicProcessType argument (requires changes to all subclasses), use
  it to toggle base-class configuration flags.
- G4HadronInelasticProcess.cc: Follow base class migration, above.
- Requires co-working tags: hadr-proc-V09-05-08, hadr-cohe-V09-05-10,
  hadr-chips-proc-V09-05-05, hadr-stopping-V09-05-21

31 August 2012 Michael Kelsey   (hadr-man-V09-05-15)
----------------------------------------------------
- G4HadronicProcessStore.cc: Add e+ and mu+ to level-1 reporting.

31 August 2012 Gunter Folger    (hadr-man-V09-05-14)
----------------------------------------------------
- G4HadronicProcess: avoid printing of blank line from
  CheckEnergyMomentumConservation()

02 August 2012 V.Ivanchenko (hadr-man-V09-05-13)
----------------------------------------------
- G4HadronicProcess: removed GetTargetDefinition()
  instead added GetTargetIsotope; check cross section in PostStepDoIt
  only for charged particles (for performance reasons)

28 July 2012 michel maire (hadr-man-V09-05-12)
----------------------------------------------
- G4HadronicProcess: add function GetTargetDefinition()

24 July 2012 michel maire (hadr-man-V09-05-11)
----------------------------------------------
- G4HadronicProcessStore: add functions GetCrossSectionPerAtom()
  and GetCrossSectionPerVolume()

11 July 2012 Gunter Folger    (hadr-man-V09-05-10)
--------------------------------------------------
- G4HadronicProcess.cc: fix problem of flushing stdout/stderr for energy
  checking printout.

2  July 2012 John Apostolakis (hadr-man-V09-05-09)
-------------------------------------------------
- G4HadronicProcess.cc: Improved quick check and full check for case of
  electro-nuclear.
  Copes with case that both primary survives and secondaries are created.

8  June 2012 Gabriele Cosmo   (hadr-man-V09-05-08)
-------------------------------------------------
- Fixed trivial cases of hidden variable visibility, detected with
  '-Wshadow' compilation option on gcc compiler.

4  June 2012 Dennis Wright    (hadr-man-V09-05-07)
-------------------------------------------------
- G4HadronicProcess.hh: remove methods ResetNumberOfInteractionLengthLeft()
    and GetTotalNumberOfInteractionLengthTraversed() as these have been
    moved to G4VProcess.   Must use with tag procman-V09-05-00 or later.

21 May 2012 Gunter Folger    (hadr-man-V09-05-06)
---------------------------------------------------
-  E/p conservation fails only if both absolute and relative fail;
	effect: at low energies, compare to absolute limit, and at
	  high energies use relative limit; cross-over when limits cross,
	  or at absolute = Ekinetic * relative
   Charge, baryon non-conservation will make test fail as before.


10 May 2012 Gunter Folger    (hadr-man-V09-05-05)
---------------------------------------------------
-  Improve format of E/p conservation check printout
-  Ignore check for charge and baryon number conservation when limit is DBL_MAX


09 May 2012 Gunter Folger    (hadr-man-V09-05-04)
---------------------------------------------------
-  Add check for momentum conservation, reusing limits for energy.
-  Add check for charge and baryon number conservation

05 May 2012 Vladimir Ivantchenko (hadr-man-V09-05-03)
---------------------------------------------------
- G4HadronicProcess - methods FillResult, CheckResult,
    CheckEnergyMomentumConservation and members theTotalResult,
    epReportLevel, thePro moved to protected to be used
    in derived classes; removed unused ModelingState;
    commented out obsolete method FillTotalResult;
    change logic of definition of time for secondary particles
    inside method FillResults

28 April 2012 Mikhail Kosov  (hadr-man-V09-05-02)
---------------------------------------------------
-  Sorry, I tagged it for Gunter to compile stopping

16 march 2012 Gunter Folger  - not yet tagged
---------------------------------------------------
-  Add printing of model desciptions to html files.

16 March 2012 Gunter Folger    (hadr-man-V09-05-01)
---------------------------------------------------
-  add method for energy non-conservation check; in case of non-conservation,
    re-sample the interaction. Limits are set in G4HadronicInteraction, and
    may be overridden for models; LEP and HEP override defaults, as these do not
    return the nucleus in teh final state.
   A test mode aborting events and reporting info on stderr is available, and
   triggered by a negative value in G4Hadronic_epReportLevel env. variable.

22 January 2012  Dennis Wright (hadr-man-V09-05-00)
---------------------------------------------------
- move isotope production infrastructure from process to model level;
  now done only for LEP models
- G4HadronicProcess.hh, .cc: remove all isotope production
  infrastructure
- G4IsoParticleChange.hh : move to models/management

24 November 2011 Vladimir Ivantchenko (hadr-man-V09-04-23)
--------------------------------------------------------
- G4HadronicProcess - changed order of checks - first track status,
    after value of cross section to remove potential numerical problem
    of cross section computation for zero kinetic energy hadrons

6 November 2011 Vladimir Ivantchenko (hadr-man-V09-04-22)
--------------------------------------------------------
- G4HadronicProcess - more accurate check of zero primary energy

4 November 2011 Vladimir Ivantchenko (hadr-man-V09-04-21)
--------------------------------------------------------
- G4HadronicProcess - more accurate check of zero primary energy

3 November 2011 Vladimir Ivantchenko (hadr-man-V09-04-20)
--------------------------------------------------------
- G4HadronicProcess - added change status if final energy
    of primary particle is zero

1 November 2011 Vladimir Ivanchenko (hadr-man-V09-04-19)
21 October 2011 Vladimir Ivanchenko (hadr-man-V09-04-18)
----------------------------------------------------------
- G4HadronicProcess: added protected method GetTargetNucleusPointer;
                     make DumpState method protected

18 October 2011 Michael Kelsey (hadr-man-V09-04-17)
---------------------------------------------------
- G4HadronicProcess.cc: In ::CheckEnergyMomentumConservation(), check for
  projectile kinetic energy below the absolute energy-conservation bound;
  extremely slow particles should not have a "relative" conservation check.

11 October 2011 Michael Kelsey (hadr-man-V09-04-16)
---------------------------------------------------
- G4HadronicProcess.cc: In ::CheckEnergyMomentumConservation(), check for
  "do nothing" result (G4ParticleChange with "fAlive" status), and compute
  final-state momentum differently than just adding up secondaries.

06 October 2011 Dennis Wright (hadr-man-V09-04-15)
--------------------------------------------------
- replace Description() with ProcessDescription(std::ostream&)

28 September 2011 Vladimir Ivanchenko (hadr-man-V09-04-14)
----------------------------------------------------------
- G4HadronicProcess: complete migration to integer Z and A.

26 Sepember 2011 Michael Kelsey (hadr-man-V09-04-13)
----------------------------------------------------
- G4HadronicProcess.cc:  Add file-scope variable to capture envvar with name
  of file for saving random engine state.  Used immediately prior to model
  "ApplyYourself" call.

9 September 2011 Michael Kelsey (hadr-man-V09-04-12)
----------------------------------------------------
- G4HadronicProcess.cc: migration to new G4HadFinalState interface
- G4HadLeadBias.cc: migration to new G4HadFinalState interface

  Requires hadr-util-V09-04-02

6 September 2011 Vladimir Ivanchenko (hadr-man-V09-04-11)
--------------------------------------------------------
- G4HadronicProcess: migration to new G4Exception interface;
                     return back GetMicroscopicCrossSection and mark
                     it as an obsolete method;
                     make GetElementCrossSection inlined

23 August 2011 Vladimir Ivanchenko (hadr-man-V09-04-10)
--------------------------------------------------------
- G4HadronicProcess: use new interface to cross sections;
                     substitute GetMicroscopicCrossSection by
                     GetElementCrossSection;
                     added check on zero kinetic energy of primary and
                     secondary after interaction (active if
                     G4HadronicProcess_debug environment variable is set)
- G4HadronicProcessStore - use  new interface to cross sections

 1 August 2011  Dennis Wright (hadr-man-V09-04-09)
--------------------------------------------------
- Add method G4HadronicProcessStore::DumpHtml to write out html physics
     list documentation
- Add method G4HadronicProcessStore::PrintHtml to print html
     documentation for processes, models and cross sections for each
     particle

25 July 2011 Vladimir Ivanchenko (hadr-man-V09-04-08)
----------------------------------------------------
- G4HadronicProcess: added public method GetTargetNucleus to access
  target isotope; added private method FillResult which provides
  more simple and transparent handle of primary and secondaries,
  in particular, allowing primary be unchanged

20 July 2011 Michael Kelsey
---------------------------
- G4HadronicProcess:  Add null-pointer checks for material and volume to
   DumpState()

 7 June 2011 Dennis Wright      (hadr-man-V09-04-07)
----------------------------------------------------
- G4HadronicProcessType: fRadioactiveDecay changed from 211 to 210

 5 June 2011 Dennis Wright      (hadr-man-V09-04-06)
----------------------------------------------------
- G4HadronicProcessType: add fRadioactiveDecay = 211 to enum

6 April 2011 Gunter Folger      (hadr-man-V09-04-05)
----------------------------------------------------
- enhance printout for case 3 in E/p checking with initial state info.

5 April 2011 Gunter Folger      (hadr-man-V09-04-04)
----------------------------------------------------
- modify E/p checking to allow to use stdout or stderr, depending on
   checklevel>0 or checklevel<0.


17 March 2011 Gunter Folger     (hadr-man-V09-04-03)
----------------------------------------------------
- modify E/p checking to take the tighter limit of process and model


25 February 2011 Gunter Folger  (hadr-man-V09-04-02)
----------------------------------------------------
-  allow to turn on checking for E/p conservation by environment variables:
	G4Hadronic_epReportLevel : set to checklevel [1,4]
	G4Hadronic_epCheckRelativeLevel: level of relative conservation
	G4Hadronic_epCheckAbsoluteLevel: level for absolute conservation

10 February 2011 Dennis Wright  (hadr-man-V09-04-01)
----------------------------------------------------
- add method MultiplyCrossSectionBy() to G4HadronicProcess so that
cross sections can be scaled for testing

 7 January 2011  Dennis Wright  (hadr-man-V09-04-00)
----------------------------------------------------
- G4HadronicProcess.cc: make GetCrossSectionDataStore public so it
    can be accessed through the process
- G4HadronicProcessStore::Print() : extend to include cross section
    info

30 November 2010  Dennis Wright  (hadr-man-V09-03-06)
-----------------------------------------------------
- G4HadronicProcess.cc : in PostStepDoIt, check cross section value
  before calling ApplyYourself.  If less than or equal to zero, return
  track unchanged.

21 November 2010  Dennis Wright  (hadr-man-V09-03-05)
-----------------------------------------------------
- G4EnergyRangeManager: initialize theHadronicInteractionCounter
  and ptr theHadronicInteraction as per CoVerity

17 August 2010  Vladimir Ivanchenko (hadr-man-V09-03-04)
--------------------------------------------------------
- G4HadronicProcess - use const GetParticleDefinition method of
                      G4DynamicParticle
- G4HadronicProcessStore - remove const_cast

29 July 2010  Vladimir Ivanchenko (hadr-man-V09-03-03)
------------------------------------------------
- G4HadronicProcess - added protection against negative cross section;
                      removed commented old code
- G4HadronicProcessStore - reduce number of const_cast

01 June 2010  Gunter Folger (hadr-man-V09-03-02)
------------------------------------------------
-  restore #include for <typeinfo>

21 April 2010 Dennis Wright (hadr-man-V09-03-01)
------------------------------------------------
- create G4HadronicEPTestMessenger to make energy/momentum test
  commands available in UI
- include G4HadronicEPTestMessenger in G4HadronicProcessStore

2 April 2010 Dennis Wright (hadr-man-V09-03-00)
-----------------------------------------------
- G4HadronicProcess: add methods CheckEnergyMomentumConservation,
  SetEpReportLevel, SetEnergyMomentumCheckLevels,
  GetEnergyMomentumCheckLevels, which implement energy/momentum
  checking
- also includes Vladimir Ivantchenko's clean-up of unused code

2 December 2009 Vladimir Ivanchenko (hadr-man-V09-02-05)
---------------------------------------------------------
- G4HadronicProcessStore - added protection to the Clean method

25 February 2009 Vladimir Ivanchenko (hadr-man-V09-02-04)
---------------------------------------------------------
- G4HadronicProcessStore - added protection to the Clean method

22 February 2009 Vladimir Ivanchenko (hadr-man-V09-02-03)
---------------------------------------------------------

14 February 2009 Vladimir Ivanchenko (hadr-man-V09-02-02)
---------------------------------------------------------
- G4HadronicProcessStore - added Clean method and cleanup of model
                           and cross section stores

06 February 2009 Vladimir Ivanchenko (hadr-man-V09-02-01)
---------------------------------------------------------

24 January 2009 Vladimir Ivanchenko (hadr-man-V09-02-00)
-------------------------------------------------------
- G4HadronicProcessStore - added destruction of processes

01 December 2008 Dennis Wright (hadr-man-V09-01-10)
---------------------------------------------------
- G4HadronicProcess - make MeanFreePath() public again.  In future
  make it protected again, but make a public method which calls it.

21 November 2008 Dennis Wright (hadr-man-V09-01-09)
---------------------------------------------------
- G4HadronicProcess - remove again method SetDispatch for major release

22 October 2008 Vladimir Ivanchenko (hadr-man-V09-01-08)
------------------------------------------------------
- G4HadronicProcessStore - use G4HadronicProcessType enumerator
- G4HadronicProcess - returned back obsolete method SetDispatch for minor release

02 October 2008 Dennis Wright (hadr-man-V09-01-07)
--------------------------------------------------
- create new hadronic process subtype enum G4HadronicProcessType:
    enum G4HadronicProcessType
    {
      fHadronElastic =   111,
      fHadronInelastic = 121,
      fCapture =         131,
      fFission =         141,
      fHadronAtRest =    151,
      fChargeExchange =  161
    };

- G4HadronicProcess.hh - add enum to identify process subtypes

- G4HadronInelasticProcess.cc - change process sub-type from 12 to fHadronInelastic

04 August 2008 Vladimir Ivanchenko (hadr-man-V09-01-06)
------------------------------------------------------
- G4HadronicProcessStore - improve cout
- G4HadronicProcess - cleanup: use method SampleZandA to select an isotope
                               do not use home-made NanCheck
                               do not check environment variables run-time
                               directly fill G4HadronicWhiteBoard
                               implement PostStepDoIt and DumpPhysicsTable
                               methods
- G4HadronInelasticProcess - use methods of the base class

04 August 2008 Vladimir Ivanchenko (hadr-man-V09-01-05)
------------------------------------------------------
- G4HadronicProcessStore - use sub-types to access cross sections,
                           add proceses following only G4VProcess interface

08 July 2008 Dennis Wright (hadr-man-V09-01-04)
-----------------------------------------------
- set process sub-type to 12 for G4HadronInelasticProcess

09 June 2008 Dennis Wright (hadr-man-V09-01-03)
-----------------------------------------------
- G4HadronicProcess.cc - turn off error in case of fStopButAlive, but leave
  it in place for fStopAndKill, fKillTrackAndSecondaries and fPostponeToNextEvent

05 June 2008 Vladimir Ivanchenko (hadr-man-V09-01-02)
----------------------------------------------------
- G4HadronicProcessStore - comment out destructor

19 May 2008 Vladimir Ivanchenko (hadr-man-V09-01-01)
----------------------------------------------------
- G4HadronicProcessStore - new singleton to keep pointers to all
                      hadronic processes
- G4HadronicProcess - added PreparPhysicsTable and BuildPhysicsTable
                      methods, added registration in G4HadronicProcessStore


19 May 2008 Vladimir Ivanchenko (hadr-man-V09-01-00)
----------------------------------------------------
- G4HadronicProcess - cleanup of the header (add comments, move
                      methods for isotope production to the src, make
                      GetMeanFreePath protected, remove duplication
                      of PostStepDoIt), add default implementation of
                      GetMicroscopicCrossSection, comment out check
                      IfApplicable in MeanFreePath

15 October 2007 Dennis Wright (hadr-man-V09-00-00)
--------------------------------------------------
- G4HadronicProcess::FillTotalResult: T. Koi's fix of bug #967 - replaced
aT.GetGlobalTime() with the variable time at line #664.

15 June 2007 Gabriele Cosmo (hadr-man-V08-03-03)
------------------------------------------------
- G4HadronicProcess: fixed memory leak with deletion of 'theIsoResult' and
  'theCrossSectionDataStore' in destructor.

12 June 2007 Dennis Wright (hadr-man-V08-03-02)
-----------------------------------------------
- G4HadronicProcess::FillTotalResult: use different G4DynamicParticle constructor
  and do not allow kinetic energy to be exactly 0.  This partly removes a spurious
  peak at 90 degrees

01 June 2007 Dennis Wright (hadr-man-V08-03-01)
-----------------------------------------------
- G4HadronicProcess.cc : change default for isotope production to off
       this fixes a memory leak.

30 Apr 2007 Dennis Wright (hadr-man-V08-03-00)
----------------------------------------------
- G4HadronicProcess.cc
       remove effective charge calculation
       remove unused variable newWeight

23 Apr 2007 Dennis Wright (hadr-man-V08-02-03)
----------------------------------------------
- G4HadronicProcess.hh
       remove AlwaysKillLeadingHadron method
- G4HadronicProcess.cc
       use Alex Howard's fix of weighting error in leading particle killer

10 Apr 2007 Dennis Wright (hadr-man-V08-02-02)
----------------------------------------------
- G4HadronicInteractionWrapper.hh, .cc
       add process and model name arguments to ApplyInteraction method
       and enter them into whiteboard

- G4HadronicProcess.cc
        add process and model name arguments to ApplyInteraction method


2 Mar 2007 Dennis Wright (hadr-man-V08-02-01)
---------------------------------------------
- G4HadronicProcess.cc: put in Vladimir Ivantchenko's fix to
       stop killing primaries for elastic

26 Dec 2006 Dennis Wright (hadr-man-V08-02-00)
----------------------------------------------
- G4HadronicProcess.hh, .cc:
       Add handling of user-defined isotopes: re-implement methods
         GetMeanFreePath() and ChooseAandZ() to use new methods in
         G4CrossSectionDataStore.
       No longer use dispatch pointer to call data store methods.
       Data members currentZ, currentN and methods GetCurrentZ(),
         GetCurrentN() removed as no longer needed

20 Oct 2006 Dennis Wright (hadr-man-V08-01-00)
----------------------------------------------
- G4HadronicProcess.hh, .cc:
       remove unused method GetDistanceToBoundary()

13 Mar 2006 Dennis Wright (hadr-man-V08-00-03)
----------------------------------------------
- G4HadronicProcess::ChooseAandZ() : throw fatal exception if
       Z > 92 is chosen

- G4HadronicProcess::GeneralPostStepDoIt() : for suspended tracks, allow
       PostStep action to occur at end of step, but maintain suspended
       track status.  Remove warning for suspended tracks.


17 Jan 2006 Dennis Wright (hadr-man-V08-00-02)
----------------------------------------------
- G4HadronicProcess.cc: add comments

12 Jan 2006 Dennis Wright for Mikhail Kossov (hadr-man-V08-00-01)
-----------------------------------------------------------------
- G4EnergyRangeManager.cc: in method GetHadronicInteraction, case 2,
                         print out some diagnostic information for
                         exception of two fully overlapping models.

16 Dec 2005 Dennis Wright for Mikhail Kossov (hadr-man-V08-00-00)
-----------------------------------------------------------------
- G4HadronicProcess.hh:  in method ChooseHadronicInteraction, check
                         G4HadronicInteractionCounter for error - if
                         so print out

- G4EnergyRangeManager.hh: make method GetHadronicInteractionCounter public
- G4EnergyRangeManager.cc: in method GetHadronicInteraction, case 0, print out
                           diagnostic information for exception when no model
                           is found.

15 Dec 2005 Dennis Wright
-------------------------
- G4HadronicProcess.cc:
       fixed bug # 611 - problems caused when hadronic interactions
       reset stopButAlive particle to Alive
       solution: In method FillTotalResult add lines

       } else if (aT.GetKineticEnergy() == 0) {
         theTotalResult->ProposeTrackStatus(fStopButAlive);
       }


18 Nov 2005 Dennis Wright (hadr-man-V07-01-00)
----------------------------------------------

- G4HadronicProcess.cc: <sstream> migration
