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

       ==========================================================
       Geant4 - an Object-Oriented Toolkit for Physics Simulation
       ==========================================================

            History file for hadronic/models/util directory
            -----------------------------------------------

This file should be used to summarize modifications introduced in the 
code and to keep track of all tags.

     ---------------------------------------------------------------
     * Please list in reverse chronological order (last date on top)
     ---------------------------------------------------------------

9 November 2018  Gabriele Cosmo (hadr-mod-util-V10-04-04)
- G4KineticTrack, G4PolynomialPDF: fixed printout typos.

17 May 2018  Jonathan Madsen (hadr-mod-util-V10-04-03)
- updated "thread-local-static-var" model to
  "function-returning-thread-local-static-reference" model
  which fixes Windows DLL + MT

21 December 2017  Alberto Ribon (hadr-mod-util-V10-04-02)
- G4Fancy3DNucleus : in the case of difficulties in the method
  ChooseFermiMomenta(), emit a "JustWarning" exception instead of
  writing to the error stream.

12 December 2017  Alberto Ribon (hadr-mod-util-V10-04-01)
- G4Nucleon : clean-up.
- G4Fancy3DNucleus : fixed irreproducibility seen with (but not caused by)
  the previous tag; added also loop checks; general clean up.

11 December 2017  V. Uzhinsky (hadr-mod-util-V10-04-00)
- The first implementation of alpha cluster structure of carbon nuclei
  is done in the G4Fancy3DNucleus according to the paper
  (P. Bozek, W. Broniowski, E.R. Arriola and M. Rybczynski, 
   Phys. Rev. C90, 064902 (2014)). The class G4Nucleon is also improved
   a little bit.

14 November 2017  Alberto Ribon (hadr-mod-util-V10-03-15)
- G4SampleResonance: added protection for rare cases when a wide parent
    resonance, with a very small dynamic mass, decays into another wide
    (daughter) resonance.

07 October 2017  Dennis Wright  (hadr-mod-util-V10-03-14)
- re-tag and propose because of mistaken rejection in system testing
 
28 September 2017 Vladimir Ivanchenko (hadr-mod-util-V10-03-13)
- G4NuclearPolarizationStore - use fix length array instead of vector 
    of pointers

05 September 2017  Dennis Wright (hadr-mod-util-V10-03-12)
- G4NuclearPolarizationStore::~G4NuclearPolarizationStore(): remove printout
  of pointer 

04 July 2017 Vladimir Ivanchenko (hadr-mod-util-V10-03-11)
- G4NuclearPolarizationStore - extend and cleanup
- G4Fragment - improved printout

03 July 2017 Vladimir Ivanchenko (hadr-mod-util-V10-03-10)
03 July 2017 Vladimir Ivanchenko (hadr-mod-util-V10-03-09)
- G4NuclearPolarizationStore - added class to handle G4NuclearPolarization
    objects for correlated gamma emission simualtion

30 June 2017 Vladimir Ivanchenko (hadr-mod-util-V10-03-08)
- G4Fragment - do not delete G4NuclearPolarization object, after
    this change other classes are responsible for new/delete
    of G4NuclearPolarization

16 June 2017 Vladimir Ivanchenko (hadr-mod-util-V10-03-07)
- G4Fragment - improved printout

14 June 2017 Vladimir Ivanchenko (hadr-mod-util-V10-03-06)
- G4Fragment - added non-const method NuclearPolarization() allowing 
    get non-const pointer to the G4NuclearPolarization object;
    removed G4Fragment printout by pointer, because this method
    is a problem for debigging 

13 June 2017  Alberto Ribon (hadr-mod-util-V10-03-05)
- G4LegendrePolynomial : applied Jason Detwiler's caching to speed up
    the calculations.

1 June 2017  Dennis Wright (hadr-mod-util-V10-03-04)
- G4PolynomialPDF: apply Jason Detwiler's fix to divide by zero bug

30 May 2017 Vladimir Ivanchenko (hadr-mod-util-V10-03-03)
- G4Fragment - fixed destructor and printout

16 February 2017 Vladimir Ivanchenko (hadr-mod-util-V10-03-02)
- G4PolynomialPDF - added control on printout

14 February 2017 Vladimir Ivanchenko (hadr-mod-util-V10-03-01) 
- G4Fragment - added method SetExcEnergyAndMomentum(...) allowing preserve
    excitation energy value without any precision lost, 4-momentum 
    is recomputed; added class member and  Get/Set method for floating
    levels number which was missing before

16 December 2016 Vladimir Ivanchenko (hadr-mod-util-V10-03-00)
- G4Fragment - minor cleanup of check on excitation energy of
    a ground state 

25 October 2016 V. Uzhinsky (hadr-mod-util-V10-02-08)
- New method - void SetDefinition(G4ParticleDefinition * aDefinition);
  was added to G4Parton class. It is needed for an implementation of
  quark exchange processes in QGSM.

16 August 2016 Alberto Ribon (hadr-mod-util-V10-02-07)
- G4KineticTrack : improved the decay part, by checking whether the
  sampled decay channel is kinematically below threshold; if this is so,
  then the sampling is repeated (but not more than a max number of times).

12 August 2016 Alberto Ribon (hadr-mod-util-V10-02-06)
- G4GeneralPhaseSpaceDecay : added "throw" to hadronic exception
  (fix suggested by the PVS-Studio static code analyzer)

10 June 2016 Vladimir Ivanchenko (hadr-mod-util-V10-02-05)
- G4Fragment - real fix of the Coverity warning

31 May 2016 Vladimir Ivanchenko (hadr-mod-util-V10-02-04)
31 May 2016 Vladimir Ivanchenko (hadr-mod-util-V10-02-03)
- G4Fragment - fixed Coverity warning

08 April 2016 Vladimir Ivanchenko (hadr-mod-util-V10-02-02)
- G4Fragment - introduced "spin", added Get/Set interfaces needed
    for INCL++ model fixing memory leak discussed in HyperNews 
    forum PhysicsList thread #930

29 February 2016 Andrea Dotti (hadr-mod-util-V10-02-01)
- Use of new G4VDecayChannel API to avoid data-race in MT.
  requires particles-V10-02-08

27 January 2016 Alberto Ribon (hadr-mod-util-V10-02-00)
- G4KineticTrack : replaced G4cerr with a 'JustWarning' G4Exception.

09 October 2015 Vladimir Ivanchenko (hadr-mod-util-V10-01-11)
- G4PolynomialPDF - fixed Coverity report

02 November 2015 Alberto Ribon (hadr-mod-util-V10-01-10)
- Checking of 'while' loops.

18 October 2015 Vladimir Ivanchenko (hadr-mod-util-V10-01-09)
- G4PolynomialPDF - modifications for correlated gamma emission

17 October 2015 Vladimir Ivanchenko (hadr-mod-util-V10-01-08)
- G4Clebsch, G4PolynomialPDF - fixed Coverity reports

24 August 2015 Gabriele Cosmo (hadr-mod-util-V10-01-07)
- G4Fragment - fixed leak in operator=(). Use initialisers in constructors.

23 August 2015 Vladimir Ivanchenko (hadr-mod-util-V10-01-06)
- G4Fragment - fixed copy constructor

20 August 2015 Vladimir Ivanchenko (hadr-mod-util-V10-01-05)
- G4Fragment - add usage of G4NuclearParameterization
- G4KineticTrack - fixed final products list

19 August 2015 Gabriele Cosmo    (hadr-mod-util-V10-01-04)
- Temporarly withdrawn changes introduced in the last tag, as causing
  error conditions from G4KineticTrack to cerr in the calorimeter benchmark:
    Error condition encountered in G4KineticTrack::Decay()
     phase-space decay failed.
     particle was f2(1270)
     channel index 2of 6channels
     4 Daughter particles: pi+ pi- pi+
  Note the 3 daughter particles printed instead of 4...

13 August 2015 Alberto Ribon     (hadr-mod-util-V10-01-03)
- G4GeneralPhaseSpaceDecay, G4KineticTrack : extension to deal with
  decays with maximum 4 daughters (instead of 3). 
  (Decided to keep using G4GeneralPhaseSpaceDecay instead of replacing
   it with G4PhaseSpaceDecayChannel, as suggested by Hisaya, to preserve
   the sophisticated treatment of 2-body resonance decays into resonance
   daughters, which is essential for intra-nuclear cascade models.)

11 June 2015 Vladimir Ivanchenko (hadr-mod-util-V10-01-02)
- G4FermiMomentum, G4KineticTrack, G4NuclearFermiDensity,
  G4NuclearShellModelDensity, G4SampleResonance, G4Fancy3DNucleus,
  G4WilsonRadius - use G4Pow, G4Exp, G4Log

11 June 2015 Vladimir Ivanchenko (hadr-mod-util-V10-01-01)
- G4Clebsch, G4LegendrePolynomial, G4PolynomialPDF (Jason Detwiler
    developed for correlated gamma nuclear de-excotation); 
    G4Exp, G4Log are added and minor code cleaup of top of Jason's
    original code 

13 May 2015 Vladimir Ivanchenko  (hadr-mod-util-V10-01-00)
- G4Clebsch is moved here without any change of the code

26 November 2014 Alberto Ribon   (hadr-mod-util-V10-00-16)
- G4ExcitedString : fixed a memory leak.

04 October 2014 Vladimir Ivanchenko  (hadr-mod-util-V10-00-15)
- G4Fragment - added model type

06 August 2014 Gunter Folger     (hadr-mod-util-V10-00-14)
- G4Fancy3DNucleus: remove thread local alloc in ChoosePositions().
    Tool for Mt conversion probably confused by a static, creating a small leak.
	 Replaced by const G4double nd2.
	  
02 July 2014  Alberto Ribon      (hadr-mod-util-V10-00-13)
- G4ExcitedString.hh : minor clean-up of the previous, internal tag,
  and propose for testing.

25 May 2014   V. Uzhinsky        (hadr-mod-util-V10-00-12)
- G4ExcitedString.hh is improved to treat a non-excited string when
  it is given as a KineticTrack, especially to give its 4-momentum.

08 May 2014   Gunter Folger      (hadr-mod-util-V10-00-11)
- remove temp. method GetDefintion_asConst() from G4Nucleon.hh

24 April 2014 Gunter Folger      (hadr-mod-util-V10-00-10)
- change ctors to take const & for position and 4momentum.

  not existing in svn : hadr-mod-util-V10-00-09
 
14 April 2014 Gunter Folger      (hadr-mod-util-V10-00-08)
- remove temp. method GetDefintion_asConst(), GetDefintion() now returns 
   const G4ParticleDefinition*, and fix remaining uses of non const.

05 March 2014 Gunter Folger      (hadr-mod-util-V10-00-07)
- G4Fragment: make G4ParticleDefinition* const.

05 March 2014 Gunter Folger      (hadr-mod-util-V10-00-06)
- G4SampleResonance.cc remove const_cast in use of G4ParticleDefinition
 
20 February 2014 Gunter Folger   (hadr-mod-util-V10-00-05)
- G4KineticTrack: make G4ParticleDefinition* const.
    add temp. method returning const G4ParticleDefinition* GetDefintion_asConst()
	 will replace GetDefinition() once hadronics converted.  

29-Jan-2014 Vladimir Ivanchenko		   hadr-mod-util-V10-00-04
- G4Fragment - warning is printed out only if G4VERBOSE is set 

28-Jan-2014 Vladimir Ivanchenko		   hadr-mod-util-V10-00-03
- G4Fragment - removed counter of warnings, 
    added G4Exception with "ifdef debug_G4Fragment"

22-Jan-2014 Gabriele Cosmo		   hadr-mod-util-V10-00-02
- Corrected use of DLL export flag for G4Fragment.

21-Jan-2014 Vladimir Ivanchenko		   hadr-mod-util-V10-00-01
- G4Fragment - fixed DLL name

20-Jan-2014 Vladimir Ivanchenko		   hadr-mod-util-V10-00-00
- G4Fragment - used G4Allocator to reduce memory churn

01-May-2013 Andrea Dotti		   hadr-mod-util-V09-06-05
- Replace use of CLHEP::HepRandom with MT safe equivalent G4Random

22-Apr-2013 Michael Kelsey                 hadr-mod-util-V09-06-04
- Add family of "phase space" generator functions, intended to replace
  model-specific redundancies.  G4HadDecayGenerator provides a simple
  interface, with algorithm selection handled via constructor argument.

21-Mar-2013 Alberto Ribon                  hadr-mod-util-V09-06-03
- Fixed warning in the class G4NuclearShellModelDensity.

08-Mar-2013 Gabriele Cosmo                 hadr-mod-util-V09-06-02
- Fixed use of internal MT data in G4GeneralPhaseSpaceDecay.

22-Feb-2013 Dennis Wright                  hadr-mod-util-V09-06-01
- G4NuclearFermiDensity.hh, .cc: remove member variable theZ which
  was unused and causing a compiler warning

04-Feb-2013 Gunter Folger                  hadr-mod-util-V09-06-00
- Protect LorentzContraction for at Rest nucleus
- Add data member for excitation energy, including Add/Get methods. 

20-Sep-2012 Gabriele Cosmo                 hadr-mod-util-V09-05-03
- Explicitly use inclusion of headers for system of units and physical
  constants, in plan to remove implicit inclusion from globals.hh.

16-Aug 2012 Vladimir Ivanchenko            hadr-mod-util-V09-05-02
- G4Fragment - added flag of stable fragment and Get/Set method

16-Jul 2012 Gunter Folger                  hadr-mod-util-V09-05-01
- fixes for coverity

12 Jun 2012 Gunter Folger                  hadr-mod-util-V09-05-00
- fix variable shadowing warnings

22 Nov 2011 Gunter Folger                  hadr-mod-util-V09-04-04
- fix leak in G4DecayKineticTracks.cc

21 Nov 2011 Gunter Folger                  hadr-mod-util-V09-04-03
- fix memory leak in G4DecayStrongResonances.cc.

5 Aug 2011 Michael Kelsey                  hadr-mod-util-V09-04-02
- G4Fancy3DNucleus:  Reduce memory churn by eliminating duplicate arrays of
  G4Nucleon (using std::vector<G4Nucleon>, which changes base class), moving
  the Helper buffer and other buffers into class data members.

- G4Fancy3DNucleusHelper.hh:  Move Helper definition into separate file.

- sources.cmake:  Add G4Fancy3DNucleusHelper.hh to list of HEADERS

  Requires consistent changes in other packages:
  	hadr-modman-V09-04-01
  	hadr-mod-util-V09-04-02
	had-partonstring-mgt-V09-04-01
  	hadr-qgsm-V09-04-04
  	had-theo-HE-V09-04-01

27 Jul 2011 Michael Kelsey                  hadr-mod-util-V09-04-01
- G4DecayKineticTracks, new utility class to be used by models'
   ::Propagate() member function, scans input list and decays any
   short-lived resonances in situ.  Parent particles are deleted from the
   list following decay.

- G4DecayStrongResonances: Replace most code with G4DecayKineticTracks.

23 Feb. 2011 Vladimir Uzhinsky                  hadr-mod-util-V09-04-00
-  New methods are added in G4Nucleon.hh for a creation of anti-nucleus.
   They can be used to replace protons and neutrons into anti-protons
   and anti-neutron, respectively.

3 Nov 2010 Gunter Folger 			hadr-mod-util-V09-03-07
- G4Nuclear...Density: migrate to integer A&Z

3 Nov 2010 Gunter Folger 			hadr-mod-util-V09-03-06
- G4KineticTrack: fix coverity warnings of memory leak

02 Nov 2010 Vladimir Ivanchenko hadr-mod-util-V09-03-05
- G4Fragment - improved printout of negative excitation energy
- G4DecayStrongResonances - constructor and destructor moved to source,
                            fixed Coverity warning

27 Sep 2010 Vladimir Ivanchenko hadr-mod-util-V09-03-04
- G4Fragment - added members numberOfChargedHoles, numberOfShellElectrons
               and corresponding Get/Set methods;
               reodered inline methods and extended comments;
               removed unused private methods and headers

25 Sep 2010 Michael Kelsey
- G4Fragment - Change "setprecision" to "setw" in operator<<, add null
	pointer check there as well.
- History - Add CVS "Id" string at top of file.

8 Sep 2010 Gunter Folger      hadr-mod-util-V09-03-03
- G4DecayStrongResonances: cleanup unused #includes
- G4Fancy3DNucleus: add integer (A,Z) Init(A,Z) 

19 May 2010 Gabriele Cosmo    hadr-mod-util-V09-03-02
- G4Fancy3DNucleus: added missing std:: to call to sort() algorithm in code.

19 May 2010 Vladimir Ivanchenko    hadr-mod-util-V09-03-01
- G4Fragment: minor speedup by adding member and access method 
              to GroundStateMass.

10 May 2010 Vladimir Ivanchenko    hadr-mod-util-V09-03-00
- G4Fragment cleanup: only 1 return left in inline methods;
        do not add any shift to excitation energy but use direct 
        computation (this is needed to avoid infinite loop in gamma 
        deexcitation); use G4NucleiProperties to access or compute
        ground state mass; added inline method ComputeGroundStateMass;
        added Get/Set methods for integer Z and A; added 
        ExcitationEnergyWarning method; allowed e- as a fragment

10 December 2009 Gunter Folger     hadr-mod-util-V09-02-07
- G4NuclearFermiDensity.hh: change value of prtection in GetDeriv() to lower
    value
    
09 December 2009 Gunter Folger     hadr-mod-util-V09-02-06
--------------------------------------------------------
- G4NuclearFermiDensity.hh: Protect GetDeriv(pos) for positions far 
   outside the nucleus causing an FP overflow in exp.

09 December 2009 Gunter Folger     hadr-mod-util-V09-02-05
--------------------------------------------------------
- G4WilsonRadius.cc change provided by M.Mendenhall via P.Truscott:
   Data vector r[] made static const
   
19 November 2009 Gunter Folger     hadr-mod-util-V09-02-04
--------------------------------------------------------
-  Restore methods storing/retrieving G4SplitableHadron*, 
   now in use in FTF

13-November 2009 Gunter Folger     hadr-mod-util-V09-02-03
--------------------------------------------------------
- Correct use of G4ThreeVector, ie. avoid vector=0;

19 December 2008 V, Uzhinsky (hadr-mod-util-V09-02-02)
--------------------------------------------------------
New method (SortNucleonsDecZ()) for sorting nucleons on decreasing Z-coordanates 
is inserted in G4Fancy3DNucleus class. It is needed for nucleus-nucleus collision.
SortNucleonsInc() is re-named in SortNucleonsIncZ().

12 December 2008 Gunter Folger    (hadr-mod-util-V09-02-01)
-------------------------------------------------------
-  Correct G4Nucleon: typo, and ctor need to init isHit

10 December 2008 Gunter Folger    (hadr-mod-util-V09-02-00)
-------------------------------------------------------
-  G4Nucleon.hh: Hit was storing G4SplitableHadron*, but this is no
   longer used. Can use bool isHit instead. Avoids confusing reinterpret_cast. 

24 October 2008 Dennis Wright (hadr-mod-util-V09-01-07)
-------------------------------------------------------
- replace G4NucleiPropertiesTable::GetBindingEnergy with 
  G4NucleiProperties::GetBindingEnergy in G4Fancy3DNucleus

19 June 2008 G.Folger (hadr-mod-util-V09-01-06)
-----------------------------------------------
-  Attempt to fix memory leak in G4Fancy3DNucleus::SortNucleonsInZ().
-   remove debug introduced code by VU

19 June 2008 G. Cosmo (hadr-mod-util-V09-01-05)
-----------------------------------------------
-  Fixed noisy compilation warning in G4ExcitedString.hh for
   unnecessary const qualifier to function return argument.

19 June 2008 V. Uzhinsky (hadr-mod-util-V09-01-04)
-------------------------------------------------
-  Update of include/G4ExcitedString.hh

18 June 2008 V. Uzhinsky (hadr-mod-util-V09-01-03)
--------------------------------------------------
-  G4ExcitedString::GetTimeOfCreation() const;
-  G4ExcitedString::SetTimeOfCreation(G4double aTime);
   Two new methods for operations with Time of a string Creation

14 May 2008 G.Folger      (hadr-mod-util-V09-01-02)
---------------------------------------------------
-  G4Fancy3DNucleus::SortNucleonsInZ() new method to sort nucleons 
     using z-coordinate 

5 May 2008 G.Folger       (hadr-mod-util-V09-01-01)
---------------------------------------------------
- correct logic bug in CalculateExcitationEnergy() introduced by gcc-4.3 fix.

21 Mar 2008 Dennis Wright (hadr-mod-util-V09-01-00)
---------------------------------------------------
- fix gcc-4.3 compiler warnings for G4Fragment.cc

16 Nov 2007 Dennis Wright (hadr-mod-util-V09-00-02)
---------------------------------------------------
- remove initialization by random number of angular momentum vector 
  from G4Fragment ctors.
- use production version of G4Fancy3DNucleus (see note of 24 Aug 2007) 

24 Aug 2007 Gunter Folger        NOT for production
---------------------------------------------------
- change radial limit where choosing nucleons from 1% of density 
  to 1per-mille for testing purposes- NOT for production

5 Jul 2007 Dennis Wright  (hadr-mod-util-V09-00-01)
---------------------------------------------------
- G4KineticTrack.cc : change variable names to avoid Sun warnings about hiding

24 Jan 2007 Gunter Folger  (hadr-mod-util-V08-02-00)
----------------------------------------------------
- G4Parton.{cc,hh}: add method setting momentum using both + and - momentum
  component
- G4Fragment.cc: more info on warning output of negative excitation energy
  
5 Oct 2006 Gunter Folger   (hadr-mod-util-V08-01-01)
-------------------------------------------------
-  G4Fancy3DNucleus:ChoosePositions(): Correctly use std::vector.
    This should fix bug 887 on WIN32/VC8
    
5 Oct 2006 Gunter Folger   (hadr-mod-util-V08-01-00)
-------------------------------------------------
-  Reduce warning output from G4Fragment on negative excitation energy; 
   a max. of 10 warnings is printed now.
   
19 Aug 2006 Dennis Wright (hadr-modutl-V08-01-00)
-------------------------------------------------
- G4Fancy3DNucleus.cc : remove meaningless const in G4Fancy3DNucleusHelper
  methods size() and index()

30 Nov 2005 Gabriele Cosmo (hadr-modutl-V07-01-01)
--------------------------------------------------
- Trivial fix in G4Fancy3DNucleus for support of CLHEP-2.0.X series.

23 Nov 2005 Dennis Wright (hadr-modutl-V07-01-00)
-------------------------------------------------
- include change of G4KineticTrack::GetActualMass() which uses 
  the4Momentum.mag2() to get mass 
- D. Wright created History file for models/util directory
