$Id:$
-------------------------------------------------------------------

     =========================================================
     Geant4 - an Object-Oriented Toolkit for Simulation in HEP
     =========================================================

                      Category History file
                      ---------------------
This file should be used by G4 developers and category coordinators
to briefly summarize all major modifications introduced in the code
and keep track of all category-tags.
It DOES NOT substitute the  CVS log-message one should put at every
committal in the CVS repository !

     ----------------------------------------------------------
     * Reverse chronological order (last date on top), please *
     ----------------------------------------------------------

11 December 2017 - G.Cosmo
- MixMaxRng: fixed guard for assembly code in modadd() to protect
  builds on 32-bit systems.

15 November 2017 - G.Cosmo
- MixMaxRng: fixed print_state() method to proper C++.

13 November 2017 - G.Cosmo
- Fixed shadowing warning in MixMaxRng.

09 November 2017 - G.Cosmo
- Updated MixMaxRng class to include latest C++ revision by K.Savvidy
  based in MixMax-2.0. Replaced skipping coefficients optional set for
  N=256 with N=240. Removed old C implementation files.
- Set MixMax as the default random number generator in HepRandom.

09 October 2017 - G.Cosmo
- Added missing DLL_API specification for static data member in Transform3D
  class.

10 May 2017 - G.Cosmo
- Fixed shadowing compilation warnings on RotationA.cc.

09 May 2017 - G.Cosmo
- Updated to CLHEP-2.3.4.4.
- Fix in HepRotation::axis() for proper treatment of degenerating cases.
- Fixed compilation warnings on gcc-7.1 in Evaluator.cc.

03 February 2017 - B.Morgan (clhep-V10-03-00)
- Set interface include directories on G4clhep{-static} targets
  in CMakeLists.txt. This provides the needed interface to allow transparent
  usage of internal/external CLHEP via targets and without needing to use
  include_directories explicitly. Only set include paths in BUILD
  interface for consistency with other targets.

04 November 2016 - G.Cosmo
- Updated to CLHEP-2.3.4.3.
- Fixed array initialisation in Evaluator static method function().

08 July 2016 - G.Cosmo
- Corrected value of SPECIALMUL in mixmax.h to correspond to exact formula
  for N=17 (m=2^36+1).

10 May 2016 - G.Cosmo
- Updated to CLHEP-2.3.3.0.
- Corrected check for counter range in MixMaxRng::getState().
  Avoid hard-coded constant for initialisation of VECTOR_STATE_SIZE in
  MixMaxRng, to directly use actual value of "N" from mixmax.

02 May 2016 - G.Cosmo
- Added symbols 'us' and 'ps' for microsend and picosecond respectively
  to SystemOfUnits.h and setSystemOfUnits.cc and converted all symbols and
  constants from "static const" to "static constexpr".

28 April 2016 - G.Cosmo
- Restored skipping of sequences for safer setting of seeds in setSeeds()
  in MixMaxRng. Changed number of N in mixmax to 17 (was 256) and provided
  new skipping coefficients for the new value of N and for the case N=8.

25 April 2016 - G.Cosmo
- Use seed_spbox() for seeding MixMax with single seed.

21 April 2016 - G.Cosmo
- Refined fix for sequence skipping; make it optional by adding Boolean flag
  argument (true by default) in seed_uniquestream() function in mixmax.cc to
  force sequence skipping when setting seeds. Simplified code, removing
  compilation guard flags.
  Set flag to false by default in MixMaxRng wrapper and defined function
  skipSequencesOnce() to optional instruct to apply skipping of sequences
  at the next seeds setting.

20 April 2016 - G.Cosmo
- Updated to CLHEP-2.3.2.2:
  * Utility (L.Garren <garren@fnal.gov>)
    o Added use_atomic.h: use std::atomic when the compiler declares it 
      uses the C++11 standard.
  * Random (W.D.Dagenhart <wdd@fnal.gov>)
    o MixMaxRng.cc: the uncorrected code might not always yield independent
      seeds.
      If two threads execute numberOfEngines++ and after both finish that both
      execute setSeed, then they will have the same seed. Fixed.
    o Random.cc: there is a thread local variable of the type "defaults"
      that contains two shared_ptr's in Random.cc.  This causes an intermittent
      problem on OSX.  The complex objects containing the shared_ptr's have been
      moved into a list of objects and the now the thread_local only contains a
      simple pointer now that points into the list.
      Use the new Utility/use_atomic.h header.

19 April 2016 - G.Cosmo
- Commented out sequence skipping from built-in table in mixmax.cc (undefined
  flag SKIPISON), in order to avoid contention in multi-threaded jobs and
  simplify seeding procedure. Removed use of obselete 'register' keyword.
- Minor code cleanup in MixMaxRng.

11 April 2016 - G.Cosmo
- Use simple loop for flatArray() in MixMaxRng; engine built-in function
  turns out to be extremely slot and unefficient.

09 November 2015 - G.Cosmo
- Updated to CLHEP-2.3.1.1.
- Added MixMaxRng to Randomize.h.

30 October 2015 - G.Cosmo
- Fixed default seeding in MixMaxRng::setSeeds().

28 September 2015 - G.Cosmo
- Fixed compilation warning on gcc in mixmax.h for signed/unsigned comparison.
- Added reference to MixMaxRng.h.

25 September 2015 - G.Cosmo
- Added MixMaxRng to EngineFactory.
- Added copy-constructor and assignment operator to MixMaxRng.
- Replaced "#define N 256" with "static const unsigned int N = 256;"
  in mixmax[.h.cc] and adapted code accordingly; commented out unused
  cases for different values of N.
  Fixes symbols clashes within CLHEP namespace.

18 September 2015 - G.Cosmo
- Disable thread_local and atomic c++11 features specific for Intel-icc
  compiler in Utility module: thread_local.h, atomic_int.h.
  Use settings related to gcc.

15 September 2015 - G.Cosmo
- Fixes by K.Savvidy to allow for porting on Intel-icc compiler and
  Windows Visual Studio. Updated files: minmax[h.cc].

14 September 2015 - G.Cosmo
- Included changes by K.Savvidy to make MixMax support 32-bits platforms.
  Updated files: minmax[h.cc], mixmax_skip_N256.icc.

25 August 2015 - G.Cosmo
- Added MixMax random engine classes implementing the "Matrix Generator of
  Pseudorandom Numbers", as described in J. Compt. Phy. 97, 573 (1991).
  Added files:
  o MixMaxRng[h.cc]: CLHEP interface class to MixMax generator.
  o minmax[h.cc]: C++ translation/adaptation of the MixMax generator.
  o mixmax_skip_N256.icc: table of skipping coefficients for MixMax (N=256).

19 August 2015 - M.Maire
- Added liter and its sub units to SystemOfUnits.h: liter, L, dL, cL, mL.

12 August 2015 - G.Cosmo
- Use std::shared_ptr in random classes instead of internal Boost-derived
  implementation.
- Corrected RandExpZiggurat to use shared_ptr as for all other distributions.
- Utility module: removed Boost derived implementation of shared_ptr and
  weak_ptr, now typedefs to c++0x standard std::shared_ptr and std::weak_ptr
  respectively. Removed no longer used type_traits.h header.

7 August 2015 - G.Cosmo
- Temporarly commented out assertion in memory.h, in view of full transition
  to C++11 for use of shared_ptr et al..

6 August 2015 - G.Cosmo
- Enable thread_local and atomic c++11 features for Intel-icc compiler
  in Utility module: thread_local.h, atomic_int.h.

15 June 2015 - G.Cosmo
- Updated to CLHEP-2.2.0.8. 
- Switch off gcc-5 warning for unused variable in Randomize.h header.

11 June 2015 - G.Cosmo
- Moved static methods handling static data in G4RandGauss from inline
  to source. Addressing problem report #1754.
- Switch off gcc-5 warnings for deprecated calls to auto_ptr in Utility headers.

9 April 2015 - G.Cosmo
- Fixed usage of std::abs() in RandGaussZiggurat source...

12 December 2014 - G.Cosmo
- Fixed usage of std::abs() in RandGaussZiggurat header.

24 November 2014 - G.Cosmo
- Updated to CLHEP-2.2.0.4:
  * Utility (L.Garren <garren@fnal.gov>)
    o memory.h: fixed a type mismatch (compilation warning on Windows/VC9).
  * Random (L.Garren <garren@fnal.gov>)
    o RanshiEngine.cc: use a pragma to ignore aggressive 32bit compiler
      warnings.
  * Vector (L.Garren <garren@fnal.gov>)
    o ThreeVector.icc: inline Hep3Vector::operator () (int i), following
      patch included in Geant4 on November 12th below.

14 November 2014 - G.Cosmo
- Updated to CLHEP-2.2.0.3:
  * Units (L.Garren <garren@fnal.gov>)
    o Moved definition of pi into SystemOfUnits.h so that its hard-coded
      value is not defined twice.

12 November 2014 - G.Cosmo
- Moved operators 'operator()(int)' in Hep3Vector to be inline and
  removed printout to improve CPU performance.
  Patch provided by S.Wenzel/CERN.

17 June 2014 - G.Cosmo
- Updated to CLHEP-2.2.0.0:
  * Random (L.Garren <garren@fnal.gov>)
    o RanshiEngine.cc: use explicit 32bit mask to avoid compiler warnings
    o MTwistEngine.cc: make sure we don't go past the end of the 
      array in MTwistEngine::showStatus().

24 April 2014 - G.Cosmo
- Corrected definition of 'thread_local' keyword in Utility/thread_local.h.
- Removed 'inline' specification in Random.cc for theDefaults().

9 April 2014 - G.Cosmo
- Updated to CLHEP-2.2.0.0.b01:
  * Random (D.Dagenhart <wdd@fnal.gov>)
    o Converted statics and globals to const, thread-local or atomic
      to improve thread safety.
    o Introduced CLHEP_THREAD_LOCAL and CLHEP_ATOMIC_INT_TYPE macros
      thread_local and atomic<int> keywords.

24 February 2014 - G.Cosmo
- Removed deprecated 'register' qualifier in implementation.

14 November 2013 - G.Cosmo
- Updated to CLHEP-2.1.4.1:
  * Random (L.Garren <garren@fnal.gov>):
    o Added RandGaussZiggurat and RandExpZiggurat distributions
      contributed by ATLAS.
  * Units (L.Garren <garren@fnal.gov>):
    o Added new units for Radioactivity:
      kilo/mega/gigabecquerel, milli/microcurie.

20 August 2013 - G.Cosmo
- Corrected CMakeLists.txt script to have missing .icc and .cdat files
  explicitly listed.

15 November 2012 - G.Cosmo
- Updated to CLHEP-2.1.3.1:
  * Vector (L.Garren <garren@fnal.gov>):
    o Fixed typo in operator*() for HepRotation.
    o Clean up remaining naming overlap between Units and internal variables.

14 November 2012 - G.Cosmo
- Updated to CLHEP-2.1.3.0:
  * Vector (L.Garren <garren@fnal.gov>):
    o Make the HepLorentzVector(double t) constructor explicit.

5 June 2012 - G.Cosmo
- Updated to CLHEP-2.1.2.3:
  * Random, Vector (L.Garren <garren@fnal.gov>):
    o More fixes for shadowing when global units used.
  * Vector, Evaluator, Random, Geometry (L.Garren <garren@fnal.gov>):
    o Use explicit std:: with math functions.

10 May 2012 - G.Cosmo
- Updated to CLHEP-2.1.2.2:
  * Random (L.Garren <garren@fnal.gov>):
    o Use a template to get rid of the warnings in Ranlux64Engine.
  * Vector, Geometry, Random (L.Garren <garren@fnal.gov>):
    o Changed names of internal variables so -Wshadow does not complain.
  * Evaluator (M.Fischler <mf@fnal.gov>):
    o Fixed a problem with unary +/- and exponentials in Evaluator class.

7 November 2011 - G.Cosmo
- Updated to CLHEP-2.1.1.0:
  * Utility (W.E.Brown  <wb@fnal.gov>):
    o removing C++0X-like keywords constexpr, noexcept, and nullptr
      to avoid collision with similar symbols in other packages.

20 September 2011 - G.Cosmo
- Added missing export statements for static symbols required for DLL build.

22 June 2011 - B.Morgan
- CMakeLists.txt : Added the CLHEP include directory to
  GEANT4_BUILDTREE_INCLUDE_DIRS so that its visible from the build tree if
  we use the internal CLHEP.

20 June 2011 - B.Morgan
- CMakeLists.txt : Install CLHEP headers to
  CMAKE_INSTALL_INCLUDEDIR/PROJECT_NAME in line with new standard install
  directory structure.

14 June 2011 - B.Morgan
- CMakeLists.txt : Build G4clhep through standard GEANT4_LIBRARY_TARGET
  macro. Keep installation of headers as is.

13 June 2011 - B.Morgan
- CMakeLists.txt : Added use of new CMAKE_INSTALL_XXX variables to control
  installation of libraries and headers, and add exported libraries to a
  global property as per other Geant4 targets. Header paths are not added to
  a global property though because these can be internal or external, so
  we handle them higher up when generating the configuration files.

2 June 2011 - B.Morgan
- CMakeLists.txt : NEW file adding CMake build of 'G4clhep'
  Implemented as a single CMakeLists.txt because special handling of
  the nested header structure of CLHEP is needed at install time.

1 June 2011 - G.Cosmo
- Fixed trivial compilation warnings on gcc-4.6.0 in NonRandomEngine.h
  and Ranlux64Engine.cc for parameters defined but not used.

24 May 2011 - G.Cosmo
- Added missing files in CLHEP built-in module.
  Allow for generation of DLL library on Windows for it.

11 May 2011 - G.Cosmo
- Including a subset of CLHEP classes imported from version CLHEP-2.1.0.1.
- Modifications applied vs. original CLHEP classes:
  * Removed dependency on internal CLHEP "defs.h" configuration header;
    the Geant4 built-in module for CLHEP follows the Geant4 build scheme.
  * Adopt "std" namespace for standard mathematical functions, where needed.
  * Removed dependency on ZM exceptions and replaced with "cerr" printouts
    where necessary.
  * Renamed following files for coherency and standard:
    o Inlined code *.src to *.icc and moved to includes set;
    o DualConv.hh to DualConv.h.
  * Use coherent inclusion scheme also for internal headers/data/inline-code,
    where applicable.
  * Use of standard WIN32 compiler flag where applicable.
  * Cleared source code of de-activated debug blocks and minor cleanup,
    where applicable.
  * Rename of final CLHEP library produced, from 'CLHEP' to 'g4clhep'.
