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

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

        History file for hadronic/cross_sections 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 December 2010 Dennis Wright (hadr-cross-V09-03-21)
-----------------------------------------------------
- G4ElectroNuclearCrossSection::GetEquivalentPhotonEnergy() : remove
  initialization of array Y[]. This forced expensive re-calculation 
  at each call.
 
26 November 2010 Vladimir Ivanchenko (hadr-cross-V09-03-20)
----------------------------------------------------------
- G4BGGPionElasticXS, G4BGGNucleonElasticXS,G4BGGNucleonInelasticXS 
        fixed low-energy (E < 20 MeV) models
- G4TripathiLightCrossSection - J.M.Quesada fix for threshold shape

23 November 2010 Vladimir Ivanchenko (hadr-cross-V09-03-19)
----------------------------------------------------------
- added G4CrossSectionInelastic and G4CrossSectionElastic - wrappers 
	for components

19 November 2010 Gunter Folger       (hadr-cross-V09-03-18)
- replace leftover calls to GetIsoZACrossSection by  GetZandACrossSection, and 
   IsZAApplicable by IsIsoApplicable.

18 November 2010 Vladimir Ivanchenko (hadr-cross-V09-03-17)
----------------------------------------------------------
- G4NeutronCaptureXS, G4NeutronElasticXS, G4NeutronInelasticXS - do
  not use G4Element, only G4NistManager 
- G4ComponentAntiNuclNuclearXS - new class (A.Galoyan)

13 November 2010 Gunter Folger (hadr-cross-V09-03-16)
------------------------------------------------------
- Fix bug from Integer A&Z transition:
  - G4VCrossSectionDataSet.cc: 
  make new methods (IsIsoApplicable, GetZandACrossSection) forward to old 
  methods (IsZAApplicable, GetIsoZACrossSection); old methods print a obsolete
   warning once.
  - G4CrossSectionDataStore.cc: use new methods only. 

12 November 2010  Gunter Folger (hadr-cross-V09-03-15)
------------------------------------------------------
- Add new class G4CrossSectionPairGG to extend a given cross-section with
   a scaled G4GlauberGribovCrossSection. Scaling result in smooth transition.

11 November 2010  Dennis Wright (hadr-cross-V09-03-14)
------------------------------------------------------
Back out memory leak fixes of G4NeutronElasticXS.cc and G4NeutronInelasticXS.cc
Not a memory leak after all.

10 November 2010  Dennis Wright (hadr-cross-V09-03-13)
------------------------------------------------------
NOTE: this tag deals exclusively with fixes of CoVerity-identified 
bugs

- G4HadronCrossSections.hh : fix uninitialized variable prevElement in ctor

- Initialize arrays theGlauberFac and theCoulombFac in ctors of 
  G4BGGNucleonElasticXS.cc, G4BGGNucleonInelasticXS.cc, G4BGGPionElasticXS.cc,
  G4BGGPionInelasticXS.cc

- Initialize all elements of array Y[nE] to 0.0 in 
  G4ElectroNuclearCrossSection::GetEquivalentPhotonEnergy()

- Initialize fTotalXsc, fElasticXsc, fInelasticXsc, fProductionXsc,
  fDiffractionXsc, fHadronNucleonXsc to 0.0 in ctors of 
  G4GlauberGribovCrossSection.cc, G4GGNuclNuclCrossSection.cc

- Initialize fTotalXsc, fElasticXsc, fInelasticXsc, fHadronNucleonXsc to 0.0
  in ctor of G4HadronNucleonXsc,  

- fix memory leak in G4NeutronElasticXS:Initialise and
  G4NeutronInelasticXS:Initialise :
   const G4Element* Elem = 
     G4Element* G4NistManager::FindOrBuildElement(G4int Z, G4bool isotopes)
  Elem goes out of scope, so delete it

- Initialize fTotalXsc, fElasticXsc to 0.0 in ctors of
  G4NucleonNuclearCrossSection.cc, G4PiNuclearCrossSection.cc

- Initialize array theFac in ctors of
  G4UElasticCrossSection.cc, G4UInelasticCrossSection.cc


09 November 2010 Vladimir Ivanchenko (hadr-cross-V09-03-12)
-----------------------------------------------------------
- G4VComponentCrossSection - use G4ParticleDefinition and kinetic 
   energy instead of G4DynamicParticle
- G4EMDissociationCrossSection - is now applicable for Hydrogen but 
   cross section for Hydrogen is zero 


20 October 2010 Gunter Folger (hadr-cross-V09-03-11)
----------------------------------------------------
- add missing inline for GetCrossSection in G4BGGPionElasticXS.hh


15 October 2010 Dennis Wright (hadr-cross-V09-03-10)
----------------------------------------------------
- integer Z and A migration:
  in all cross section data sets, replace IsZAApplicable with IsIsoApplicable
  and replace GetIsoZACrossSection with GetZandACrossSection
 
23 September 2010 Vladimir Ivanchenko (hadr-cross-V09-03-09)
------------------------------------------------------------
- G4NeutronElasticXS, G4NeutronInelasticXS, G4NeutronCaptureXS cleanup:
                    use std vectors instead of C arrays;
                    use G4HadronNucleonXsc class and PDG parameterisation
                    for high energy cross sections off Hydrogen;
                    removed Get/Set methods for verboseLevel

30 July 2010 Vladimir Ivanchenko (hadr-cross-V09-03-08)
- G4IonProtonCrossSection - move virtual methods to source,
                            add constructor and destructor,
                            make G4ProtonInelasticCrossSection class member,
                            fix bug in kinematics

05 July 2010 Vladimir Ivanchenko (hadr-cross-V09-03-07)
- G4VComponentCrossSection - new interface for cross sections
- G4VCrossSectionDataSet - added name, min and max kinetic energy and access 
                           methods

11 Jun 2010 Vladimir Ivanchenko (hadr-cross-V09-03-06)
- G4UPiNuclearCrossSection - fixed memory leak at destruction
- G4GlauberGribovCrossSection - (V.Grichine) updated for anti-protons

03 Jun 2010 Vladimir Ivanchenko (hadr-cross-V09-03-05)
------------------------------------------------------
- G4NeutronElasticXS, G4NeutronInelasticXS, G4NeutronCaptureXS - substitute
     environment variable G4NEUTRONXS by G4NEUTRONXSDATA

02 Jun 2010 Gunter Folger       (hadr-cross-V09-03-04)
------------------------------------------------------
- fix compilation error on Windows: use G4lrint not lrint

29 Apr 2010 Gunter Folger       (hadr-cross-V09-03-03)
------------------------------------------------------------
- G4CrossSectionDataStore integer Z and A transition
   ( note that cross sections data sets still have G4double in interface)
   
25 Mar 2010 Vladimir Ivanchenko (hadr-cross-V09-03-02)
------------------------------------------------------------
- G4CrossSectionDataSetRegistry - do not pop_back vector of pointers
   when DeRegister cross section data set - big fixed for Windows

17 Mar 2010 Gabriele Cosmo (hadr-cross-V09-03-01)
------------------------------------------------------------
- Cache computation of std::pow() in GetCaptureCrossSection() method of
  G4HadronCrossSections, to avoid repeated calls with same argument.

26 Feb 2010 Vladimir Ivanchenko (hadr-cross-V09-03-00)
------------------------------------------------------------
- G4UPiNuclearCrossSection - fixed bug for high Z (>83) atoms

9 Dec 2009 Gunter Folger       (hadr-cross-V09-02-18)
------------------------------------------------------------
- G4TripathiLightCrossSection.cc modified by Macrus Mendenhall:
   - re-enable low energy check code, but without creating new instances of 
      G4TripathiLightCrossSection

2 Dec 2009 Vladimir Ivanchenko (hadr-cross-V09-02-17)
------------------------------------------------------------
- G4CrossSectionDataSetRegistry - more accurate cross section deletion

25 Nov 2009 Gunter Folger       (hadr-cross-V09-02-16)
------------------------------------------------------------
- modify upper limit of validity to 100 TeV in 
  G4NeutronInelasticCrossSection, G4ProtonInelasticCrossSection,
  and G4PiNuclearCrossSection
  Use constant cross section above original range

23 Nov 2009 Vladimir Ivanchenko (hadr-cross-V09-02-15)
------------------------------------------------------------
- fixed mistake in previous tag

20 Nov 2009 Vladimir Ivanchenko (hadr-cross-V09-02-14)
------------------------------------------------------------
- use as a default hadron-nucleon cross section parameterisation
  of Nikolay Starkov in G4GlauberGribovCrossSection, 
  G4GGNuclNuclCrossSection, G4NeutronElasticXS, G4NeutronInelasticXS,
  G4BGGNucleonElasticXS, G4BGGNucleonInelasticXS, G4BGGPionElasticXS,
  G4BGGPionInelasticXS

19 Nov 2009 Vladimir Ivanchenko (hadr-cross-V09-02-13)
------------------------------------------------------------
- restored head version of hadr-cross-V09-02-06 for all files, added
  bug fixes for G4BGGXX classes and added back new G4NeutronXXXS 
  cross sections

17 Nov 2009 Mikhail Kosov (hadr-cross-V09-02-12)
------------------------------------------------------------
- CHIPS-cross_sections dependent classes are temporary moved to
  source/processes/hadronic/models/chiral_inv_phase_space/xs_dependent
  directory (till the beter place for CHIPS physics package is found)

16 Nov 2009 Mikhail Kosov (hadr-cross-V09-02-11)
------------------------------------------------------------
- dependency on CHIPS-cross_sections

12 Nov 2009 Vladimir Ivanchenko (hadr-cross-V09-02-10)
------------------------------------------------------------
- added G4NeutronElasticXS, G4NeutronInelasticXS, G4NeutronCaptureXS

11 Nov 2009 Mikhail Kosov (hadr-cross-V09-02-09)
------------------------------------------------------------
- CHIPS inelastic XS implementation in a form of G4VCrossSectionDataSet

4 Nov 2009 Mikhail Kosov (hadr-cross-V09-02-08)
------------------------------------------------------------
- Resolving of the circular dependency with CHIPS for the previous tag 

23 Oct 2009 Mikhail Kosov (hadr-cross-V09-02-07)
------------------------------------------------------------
- in G4GlauberGribovCrossSection, G4GGNuclNuclCrossSection, G4HadronNucleonXsc
  the CHIPS hN cross-sections are used directly instead of three times replication 

12 Aug 2009 Vladimir Ivanchenko (hadr-cross-V09-02-06)
------------------------------------------------------------
- G4CrossSectionDataSetRegistry - return to more simple variant of
                                  deletion, because of problem for 
                                  specific PhysicsLists

08 Aug 2009 Vladimir Ivanchenko (hadr-cross-V09-02-05)
------------------------------------------------------------
- G4TripathiLightIonCrossSection - add simple check that X-section is
                              positive and remove not optimal control
- G4TripathiCrossSection - added constructor and destructor
- G4CrossSectionDataSetRegistry - use pure stl commands to remove elements
                                  of stl vector

21 March 2009 Vladimir Ivanchenko (hadr-cross-V09-02-04)
------------------------------------------------------------
- G4IonsKoxCrossSection, G4IonsShenCrossSection, G4TripathiCrossSection,
  G4TripathiLightCrossSection - added protections against numerical 
                                exceptions (V.Grichine)
- G4GGNuclNuclCrossSection - Glauber-Gribov new cross section for ions 
                             (V.Grichine)  

25 February 2009 Vladimir Ivanchenko (hadr-cross-V09-02-03)
------------------------------------------------------------
- G4CrossSectionDataStore - added protection to the Clean method

14 February 2009 Vladimir Ivanchenko (hadr-cross-V09-02-02)
------------------------------------------------------------
- G4CrossSectionDataStore - added Clean method

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

24 January 2009 Vladimir Ivanchenko (hadr-cross-V09-02-00)
------------------------------------------------------------
- G4CrossSectionDataStore - moved constructor and destructor to source,
                            added destruction of data sets, use STL
                            vector instead of C-array
- G4CrossSectionDataSetRegistry - new singleton to keep pointers to 
                            cross section data sets
- G4VCrossSectiondataSet - constructor and detructor moved to source and
                           registration/deregistration added

01 December 2008 Vladimir Ivanchenko (hadr-cross-V09-01-07)
------------------------------------------------------------
G4BGGPionElasticXS, G4BGGPionInelasticXS, G4BGGNucleonInelasticXS,
G4BGGNucleonElasticXS, G4UPiNuclearCrossSection - added proper
   Coulomb barrier and cleanup implementations

24 October 2008 Dennis Wright (hadr-cross-V09-01-06)
----------------------------------------------------
- replace G4NucleiPropertiesTable::IsInTable with 
  G4NucleiProperties::IsInStableTable for G4PhotoNuclearCrossSection
  and G4ElectroNuclearCrossSection

24 September 2008 Vladimir Ivantchenko (hadr-cross-V09-01-05)
------------------------------------------------------------
- G4GlauberGribovCrossSection provides a smooth transition from 
  Barashenkov cross sections at 90 GeV; set threshold 90 GeV
  in classes, where this cross section is used 

16 September 2008 Dennis Wright (hadr-cross-V09-01-04)
------------------------------------------------------
- G4PiNuclearCrossSection.cc: comment out G4ping and its instances
  following result of Pete Elmer who showed G4ping is very slow

01 September 2008 Vladimir Ivantchenko (hadr-cross-V09-01-03)
------------------------------------------------------------
- G4CrossSectionDataStore - added method SampleZandA, which
    return G4Element and fill G4Nucleaus

28 April 2008 Dennis Wright (hadr-cross-V09-01-02)
--------------------------------------------------
- T. Koi added capability to use element-based cross section data 
  sets if no isotope-based ones are available.  This is required to 
  get the HP neutron code to work within the cross section framework 
  introduced in version 9.0.
  Files affected: G4CrossSectionDataStore.hh, .cc.  Added method 
  whichDataSetInCharge().

- DHW: G4NeutronInelasticCrossSection.cc : fix bug which returned 
  zero cross section for 3He

- G4TripathiLightCrossSection::IsApplicable(): bug fix from T. Koi:
  changed theTarget->GetA() to theTarget->GetN()

31 March 2008 Dennis Wright (hadr-cross-V09-01-01)
--------------------------------------------------
- G4GlauberGribovCrossSection.cc and G4HadronNucleonXsc.cc - put () 
  around && in || in order to fix gcc-4.3 compiler warnings.

17 January 2008 Vladimir Ivantchenko (hadr-cross-V09-01-00)
----------------------------------------------------------
- G4PhotoNuclearCrossSection and G4ElectroNuclearCrossSection - move 
   compicate inlined method with many returns to source; fixed one wrong 
   return value (was zero instead of pseudo-inf) and comment out 
   extra warning which tell nothing useful to users

28 June 2007 Dennis Wright (hadr-cross-V09-00-00)
-------------------------------------------------
- V. Grichine changed log to std::log in G4HadronNucleonXsc.cc and
    G4GlauberGribovCrossSection.cc
- D. Wright added log(0) protection in G4NeutronInelasticCrossSection.cc
    and G4ProtonInelasticCrossSection.cc

15 June 2007 Gabriele Cosmo (hadr-cross-V08-03-04)
--------------------------------------------------
- Fixed memory leak in classes G4ElectroNuclearCrossSection and
  G4PhotoNuclearCrossSection.

08 June 2007 Vladimir Grichine
------------------------------
- Fixed bug in push_back of fTotalXsc for pi- in G4PiNuclearCrossSection.

08 June 2007 Vladimir Ivantchenko (hadr-cross-V08-03-03)
-------------------------------------------------------
- G4PiNuclearCrossSection.cc - fix non-initilised total cross section 
                               for pi-

30 May 2007 Dennis Wright (hadr-cross-V08-03-02)
------------------------------------------------
- G4GlauberGribovCrossSection.cc, G4HadronNucleonXsc.cc
    fix compiler warning: un-initialized variable

24 May 2007 Dennis Wright (hadr-cross-V08-03-01)
------------------------------------------------
- G4HadronCrossSections.hh, .cc : replace PSIZE with NPARTS to avoid
    name conflict with SDK windows environment

23 May 2007 Dennis Wright for Vladimir Grichine (hadr-cross-V08-03-00)
----------------------------------------------------------------------
- G4GlauberGribovCrossSection.hh, .cc : add new methods:

    G4double GetRatioSD(const G4DynamicParticle*, G4double At, G4double Zt);
    G4double GetRatioQE(const G4DynamicParticle*, G4double At, G4double Zt);

     allowing one to get qe/in and sd/in ratios.

- G4HadronNucleonXsc.hh, .cc : add new method GetHadronNucleonXscMK to get 
     hadron-nucleon cross section using Mikhail Kossov's parameterization.

03 May 2007 Dennis Wright (hadr-cross-V08-02-06)
------------------------------------------------
- G4HadronCrossSections::GetParticleCode() : replace code which
    tested by particle name with code that tests by PDG ID.  Also
    use switch-case instead of else-if.

02 Apr 2007 Gunter Folger (hadr-cross-V08-02-05)
------------------------------------------------
- G4PiNuclearCrossSection.cc: remove special treatment ('tuning')
    for Copper (Z=29), i.e. the Cu cross section is no longer lowered by 4%

22 Mar 2007 Dennis Wright for V. Ivanchenko (hadr-cross-V08-02-04)
------------------------------------------------------------------
- G4UPiNuclearCrossSection.cc: better handling of low energy cross sections
- Added new classes (V.Ivanchenko): 
    G4BGGNucleonElasticXS: proton and neutron elastic cross section wrapper
                           class using Barashenkov parameterization below 
                           100 GeV and Glauber-Gribov model above
    G4BGGNucleonInelasticXS: proton and neutron inelastic cross section
                             wrapper of Barashenkov-Glauber-Gribov
    G4BGGPionElasticXS: pion elastic cross section wrapper of BGG
    G4BGGPionInelasticXS: pion inelastic cross section wrapper of BGG

8 Mar 2007 Dennis Wright for V. Ivanchenko (hadr-cross-V08-02-03)
-----------------------------------------------------------------
- use G4NucleonNuclearCrossSection in G4UInelasticCrossSection and
  G4UElasticCrossSection (V.Ivanchenko)
- complete implementations of A and Z interfaces to classes (V.Ivanchenko): 
  G4UPiNuclearCrossSection
  G4UInelasticCrossSection
  G4UElasticCrossSection
  G4GlauberGribovCrossSection
  G4NucleonNuclearCrossSection

30 Jan 2007 Dennis Wright (hadr-cross-V08-02-02)
------------------------------------------------
- add divide by zero protection to 
  G4CrossSectionDataStore::SelectRandomIsotope

27 Jan 2007 V. Ivanchenko (hadr-cross-V08-02-01)
------------------------------------------------
- add implementations of A and Z interfaces to classes: 
  G4UPiNuclearCrossSection
  G4UInelasticCrossSection
  G4UElasticCrossSection
  G4GlauberGribovCrossSection
  G4NucleonNuclearCrossSection

27 Dec 2006 Dennis Wright (hadr-cross-V08-02-00)
------------------------------------------------
- added handling of user-defined isotope abundances for elements and
  proper cross section and abundance weighted choice of isotopes in 
  reactions.  New virtual methods for IsApplicable and GetCrossSections
  added to classes G4VCrossSectionDataSet and G4CrossSectionDataStore.
  Other classes affected:

   G4EMDissociationCrossSection.hh, .cc
   G4ElectroNuclearCrossSection.hh, .cc
   G4GeneralSpaceNNCrossSection.hh, .cc
   G4HadronCaptureDataSet.hh
   G4HadronCrossSections.hh, .cc
   G4HadronElasticDataSet.hh
   G4HadronFissionDataSet.hh
   G4HadronInelasticDataSet.hh
   G4IonProtonCrossSection.hh
   G4IonsKoxCrossSection.hh, .cc
   G4IonsShenCrossSection.hh, .cc
   G4IonsSihverCrossSection.hh, .cc
   G4NeutronInelasticCrossSection.hh, .cc
   G4PhotoNuclearCrossSection.hh, .cc
   G4PiNuclearCrossSection.hh, .cc
   G4ProtonInelasticCrossSection.hh, .cc
   G4TripathiCrossSection.hh, .cc
   G4TripathiLightCrossSection.hh, .cc

  NOTE: This tag should be used with the tag hadr-man-V08-02-00 of the
  hadronic/management directory because G4HadronicProcess was affected 
  also.

- from Vladimir Grichine:
   added new class G4NucleonNuclearCrossSection which
   contains Barashenkov cross sections for nucleon-nucleus scattering

   modified the G4PiData and G4GlauberGribovCrossSection classes

   added ROOT files to test/analysis directory


16 Nov 2006 D.W. for Vladimir Grichine (hadr-cross-V08-01-08)
-------------------------------------------------------------
- G4GlauberGribovCrossSection: extend applicability down to 0.3 GeV for 
  protons and neutrons (not 100 MeV as in hadr-cross-V08-01-06)

- Dennis Wright: add missing methods
   G4double 
   GetHadronNucleaonXsc(const G4DynamicParticle*,G4double At,G4double Zt);
   G4double 
   GetHadronNucleaonXscNS(const G4DynamicParticle*,const G4Element*);
   G4double 
   GetHadronNucleaonXscNS(const G4DynamicParticle*,G4double At,G4double Zt);
  to get code to compile

- initialize hpXsc, hnXsc to 0

15 Nov 2006 Tatsumi Koi (hadr-cross-V08-01-07)
----------------------------------------------------------------------
- include/G4IonsShenCrossSection.hh
- src/G4IonsShenCrossSection.cc
: extend range of validity to 1TeV/n, using
  constant cross section above 10GeV/n.

13 Nov 2006 Dennis Wright for Vladimir Grichine (hadr-cross-V08-01-06)
----------------------------------------------------------------------
- G4GlauberGribovCrossSection.cc: extend range of validity for protons 
  down to 100 MeV

3 Oct 2006 Gunter Folger (hadr-cross-V08-01-04)
---------------------------------------------------
- G4ProtonInelasticCrossSection: extend range of validity to 1TeV, using
   constant cross section above 20GeV.
   
2 Oct 2006 Vladimir Grichine (hadr-cross-V08-01-03)
---------------------------------------------------

- G4GlauberGribovCrossSection::GetCrossSection() : fix bug in inelastic 
cross section.  Bug was discovered in the paper from which the cross
was derived.

31 Aug 2006 Vladimir Ivanchenko (hadr-cross-V08-01-02)
------------------------------------------------------
- new wrapper cross section classes  G4UInelasticCrossSection and 
  G4UElasticCrossSection which combine cross sections from different 
  data sets 
- new G4UPiNuclearCrossSection providing another implementation 
  of elastic and inelastic cross sections from Barashenkov 


17, 21 Aug 2006 Gunter Folger (same tag as 31 Aug above)
--------------------------------------------------------
- added two missing Ca inelastic pi- entries, changed formatting
- changed scaling of cross sections for elements not tabulated from scaling 
  in Z^(2/3) to A^0.75


11 Aug 2006 Dennis Wright (hadr-cross-V08-01-00)
------------------------------------------------
- new cross section class G4GlauberGribovCrossSection for proton, pion,
  kaon, (and maybe gamma and neutron) total and elastic cross sections
  introduced by V. Grichine.  Effective energies: > 3 GeV.

