# Category externals 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!

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

## 2022-12-12 Ben Morgan (externals-V11-01-00)
- Remove obsolete GNUmakefile scripts

## 2022-10-10 Gabriele Cosmo (externals-V11-00-05)
- Synchronised with CLHEP-2.4.6.0.
  o Resolved gcc-12 warnings in Evaluator source (C.Green).

## 2022-10-06 Gabriele Cosmo (externals-V11-00-04)
- Synchronised with CLHEP-2.4.5.4.
  o Fix in RandGamma::genGamma() to fix reproducibility in multi-threading
    environment (J.Junggeburth).

## 2022-05-31 Guilherme Amadio (externals-V11-00-03)
- Update CMake install directory for PTL to match recent changes
  in default install directories in Geant4.

## 2022-03-15 Ben Morgan (externals-V11-00-02)
- Rationalize externals builds to decouple them from the core Geant4 module/category
  definitions.

## 2022-02-11 Ben Morgan (externals-V11-00-01)
- Export builtin PTL include directory to build directory include path list
  - Allows use of geant4-config from build directory

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

---

# History entries prior to 11.0

01 September 2021 - G.Cosmo (externals-V10-07-07)
- Synchronised with CLHEP-2.4.5.1:
  o New random engine RANLUX++ and related helper classes (J.Hahnfeld).
    RANLUX++ is an extension of RANLUX and uses the equivalent LCG to
    offer a much higher luxury level at better performance. It inherits
    the excellent statistical properties and passes the full BigCrush.

07 July 2021 - G.Cosmo (externals-V10-07-06)
- CLHEP: Fixed seeding in Ranlux64Engine (J.Hahnfeld).

03 June 2021, B. Morgan (externals-V10-07-05)
- PTL: Hide PTL_... options from clients building Geant4
  - Forward relevant Geant4 options to PTL: TBB, sanitizer, locks

11 May 2021, J. Allison  (externals-V10-07-04)
- g4tools-V10-07-03: Rename g4tools/include/tools/sg/gL_manager to GL_manager.

07 May 2021 - G.Cosmo (externals-V10-07-03)
- CLHEP: Updated values in SystemOfUnits.h and PhysicalConstants.h:
  o Added units: minute, hour, day, year and millielectronvolt.
  o Added constants: Bohr_magneton and nuclear_magneton.

06 May 2021 - G.Cosmo (externals-V10-07-02)
- CLHEP: Fixed trivial compilation warnings on gcc-11 in Random headers.

18 February 2021 - B.Morgan (externals-V10-07-01)
- Move g4tools from analysis to externals category

8 December 2020 - B.Morgan (externals-V10-07-00)
- Force PTL to install its CMake configuration files within the directory
  where Geant4 installs its own.
- Force PTL to install its headers under CMAKE_INSTALL_INCLUDEDIR/Geant4

11 November 2020 - G.Cosmo (externals-V10-06-05)
- Synchronised with CLHEP-2.4.4.0:
  o Removed obsolete #pragma interface/implementation in Vector classes.
  o Get rid of switch statement in operator()/operator[] of Hep3Vector
    Replaced dx/dy/dz with operator[] in Hep3Vector.
    Replaced private dx/dy/dz with public x()/y()/z() in Hep3Vector
  o Added missing includes in Vector and Random classes for translation
    unit encapsulation.

17 July 2020 - G.Cosmo (externals-V10-06-04)
- CLHEP: Updated values in SystemOfUnits.h and PhysicalConstants.h for:
  - e_SI, electron charge
  - h_Planck, Planck constant
  - Avogadro, Avogadro constant
  - k_Boltzmann, Boltzmann constant
  based on May 2019 redefinition of SI units. References:
  https://en.wikipedia.org/wiki/2019_redefinition_of_the_SI_base_units
  https://www.britannica.com/science/electron-charge.

14 July 2020 - G. Cosmo (externals-V10-06-03)
- CLHEP: Use 32-bit internal seeds types coherently in MixMaxRng.
  Addressing CLHEP JIRA ticket #156.

10 June 2020 - J. Madsen (externals-V10-06-02)
- Migrated PTL's used of CMAKE_BINARY_DIR to PROJECT_BINARY_DIR
- Fixed PTLConfig.cmake.in for testing
- Reduced cmake to 3.8 to match Geant4

4 June 2020 - J. Madsen (externals-V10-06-01)
- Fixed ptl installation of interface libraries

4 June 2020 - J. Madsen (externals-V10-06-00)
- Added ptl (Parallel Tasking Library) source code

19 November 2019 - G.Cosmo (externals-V10-05-05)
- CLHEP: Fixed warnings for cases of implicit type conversions in
  Rand*Ziggurat classes.

14 October 2019 - E.Tcherniaev (externals-V10-05-04)
- Synchronised with CLHEP-2.4.1.3:
  CLHEP/Geometry: Use std::enable_if and std::is_same to explicitly
  define constructor for BasicVector<double> from BasicVector<float>.
  Added move constructor and move assignment in all classes.

11 October 2019 - E.Tcherniaev (externals-V10-05-03)
- CLHEP/Vector: added move constructor and move assignment in all classes.
- CLHEP/Geometry: added move constructor and move assignment in Transform3D.

20 June 2019 - G.Cosmo (externals-V10-05-02)
- Synchronised with CLHEP-2.4.1.2:
  MixMaxRng: throw if seed is zero. Use throw instead of exit() elsewhere.

07 June 2019 - G.Cosmo (externals-V10-05-01)
- CLHEP: defaulted operator=() also for Plan3D; fixing deprecation warnings
  on gcc-9.1.
  Fixed shadowing compilation warnings in Transform3D as reported on gcc-9.1.

06 June 2019 - G.Cosmo (externals-V10-05-00)
- CLHEP: defaulted operator=() for BasicVector3D; fixing deprecation warnings
  on gcc-9.1.

10 July 2018 - G.Cosmo (externals-V10-04-06)
- CLHEP: removed not implemented constructor declaration in MixMaxRng.
- Includes tag zlib-V10-04-03.

24 May 2018 - G.Cosmo (externals-V10-04-05)
- CLHEP: fixed compilation warnings from gcc-8.1.0 when using
  -Woverloaded-virtual compilation option (default in Geant4).

19 March 2018 - G.Cosmo (externals-V10-04-04)
- Corrected GNUmakefile for Windows.

16 March 2018 - G.Cosmo (externals-V10-04-03)
- Synchronised with CLHEP-2.4.0.4.

07 March 2018 - G.Cosmo (externals-V10-04-02)
- CLHEP: removed kludge for Windows previously introduced to MinMaxRng.hh.
  Further simplified setup for thread-local storage and atomics, as
  now all supported by c++11 in either clang or VC++.

06 March 2018 - G.Cosmo (externals-V10-04-01)
- CLHEP: enabled thread-local storage and atomics on Windows; added flag in
  thread_local.h, use_atomic.h and atomic_in.h.

19 February 2018 - J.Madsen
- CLHEP: temporary fix for Windows MT data race in MinMaxRng.hh.
  Fixed warning C4293: '>>': shift count negative or too big, undefined behavior
  in Ranlux64Engine on Windows

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

15-November-2017 - G.Cosmo (externals-V10-03-08)
- CLHEP: fixed print_state() method to proper C++ in MixMaxRng.

13-November-2017 - G.Cosmo (externals-V10-03-07)
- CLHEP: fixed shadowing warning in MixMaxRng.

09-November-2017 - G.Cosmo (externals-V10-03-06, 05, 04)
- CLHEP: 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 (externals-V10-03-03)
- CLHEP: added missing DLL_API specification for static data member in
  Transform3D class.

10-May-2017 - G.Cosmo (externals-V10-03-02)
- CLHEP: fixed shadowing compilation warnings on RotationA.cc.

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

28-February-2017 - G.Cosmo (externals-V10-03-00)
- Adapted CMake scripts to new configuration for internal/external
  packages of CLHEP, expat and zlib.

04-November-2016 - G.Cosmo (externals-V10-02-11)
- Updated to CLHEP-2.3.4.3.
- CLHEP: fixed array initialisation in Evaluator static method function().

08-July-2016 - G.Cosmo (externals-V10-02-10)
- CLHEP: corrected value of SPECIALMUL in mixmax.h to correspond to exact
  formula for N=17 (m=2^36+1).

10-May-2016 - G.Cosmo (externals-V10-02-09)
- Updated to CLHEP-2.3.3.0.
- CLHEP: 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 (externals-V10-02-08)
- CLHEP: 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 (externals-V10-02-07)
- CLHEP: restored skipping of sequences for safer seeds setting 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 (externals-V10-02-06)
- CLHEP: use seed_spbox() for seeding MixMax with single seed.

21-April-2016 - G.Cosmo (externals-V10-02-05, 04)
- CLHEP: 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 (externals-V10-02-03, 02)
- Updated to CLHEP-2.3.2.2:
  o Added use_atomic.h header to use std::atomic if compiler supports it.
  o MixMaxRng: corrected initialisation and use of 'numberOfEngines'
    when more than one threads calls the constructor.
  o HepRandom: revised settings of "defaults" to use a single thread_local
    pointer.
- Including tag "zlib-V10-02-01":
  o Fix in gzguts.h for Windows with Visual Studio 2015 in 64 bit compilation.

19-April-2016: G.Cosmo (externals-V10-02-01)
- CLHEP: commented out seeds 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 (externals-V10-02-00)
- CLHEP: use simple loop for flatArray() in MixMaxRng; engine built-in
  function turns out to be extremely slow and unefficient.

9-November-2015: G.Cosmo (externals-V10-01-19)
- Updated to CLHEP-2.3.1.1.
- Added MixMaxRng to Randomize.h.

30-October-2015 - G.Cosmo (externals-V10-01-18)
- CLHEP: fixed default seeding in MixMaxRng::setSeeds().

7-October-2015 - G.Cosmo (externals-V10-01-17)
- Removed internal USolids module. Now USolids/VecGeom can be used only as
  external installation.

28-September-2015 - G.Cosmo (externals-V10-01-16)
- CLHEP: fixed compilation warning on gcc in mixmax.h for signed/unsigned
  comparison. Added reference to MixMaxRng.h.

25-September-2015 - G.Cosmo (externals-V10-01-15)
- CLHEP: added MixMaxRng to EngineFactory and fixed symbols clashes for
  definition of N in mixmax[h.cc].
  Added copy-constructor and assignment operator to MixMaxRng.
- Includes tag "expat-V10-01-01".

18-September-2015 - G.Cosmo (externals-V10-01-14)
- CLHEP: 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 (externals-V10-01-13)
- CLHEP: 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 (externals-V10-01-12)
- CLHEP: added liter and its sub units to SystemOfUnits.h:
  liter, L, dL, cL, mL.

12-August-2015: G.Cosmo (externals-V10-01-11)
- CLHEP: use std::shared_ptr in random classes instead of internal
  Boost-derived implementation. In the Utility module, removed Boost derived
  implementation of shared_ptr and weak_ptr; removed no longer used
  type_traits.h header.
  Corrected RandExpZiggurat to use shared_ptr as for all other distributions.

7-August-2015: G.Cosmo (externals-V10-01-10)
- CLHEP: 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 (externals-V10-01-09)
- CLHEP: enable thread_local and atomic c++11 features for Intel-icc compiler
  in Utility module: thread_local.h, atomic_int.h.
- Includes tags "expat-V10-01-00" and "zlib-V10-01-01".

19-June-2015: G.Cosmo (externals-V10-01-08, 07, 06, 05, 04)
- Updated to CLHEP-2.2.0.8:
  o Avoid gcc-5 warnings on deprecated calls to auto_ptr in Utility headers.
  o Switch off gcc-5 warning for unused variable in Randomize.h header.

11-June-2015: G.Cosmo (externals-V10-01-03, 02)
- CLHEP: Moved static methods handling static data in G4RandGauss from inline
  to source. Addressing problem report #1754.
  Switch off warnings for deprecated calls to auto_ptr in Utility headers.

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

12-December-2014: G.Cosmo (externals-V10-01-00)
- CLHEP: Fixed usage of std::abs() in RandGaussZiggurat header.
- USolids: Use canonical form for operator=() in UPolycone.

24-November-2014: G.Cosmo (externals-V10-00-08)
- Updated to CLHEP-2.2.0.4:
  o Fixed a type mismatch in Utility/memory.h,
    reported as compilation warning on Windows/VC9.
  o Use pragma in RanshiEngine.cc to ignore aggressive 32bit gcc compiler
    warnings.
  o Synchronised inlining of Hep3Vector::operator () (int i).

14-November-2014: G.Cosmo (externals-V10-00-07)
- Updated to CLHEP-2.2.0.3: moved definition of pi into SystemOfUnits.h
  so that its hard-coded value is not defined twice.

12-November-2014: G.Cosmo (externals-V10-00-06)
- Removed unused 'tpmalloc' and 'memoryprotection' modules.
- Update to CLHEP Hep3Vector to move operators 'operator()(int)' to be
  inline and removed printout to improve CPU performance.

30-October-2014: B.Morgan (externals-V10-00-05)
- Update build of USolids library to ensure it is built for
  the default global mode.

29-October-2014: G.Cosmo (externals-V10-00-04)
- Moved module from source/geometry/solids to source/externals.
  Adapted scripts for optional external USolids library build.

17-June-2014: G.Cosmo (externals-V10-00-03)
- Updated to CLHEP-2.2.0.0: fixes for compilation warnings on clang compiler
  for RanshiEngine.cc and MTwistEngine.cc.

24-April-2014: G.Cosmo (externals-V10-00-02)
- Corrected definition of 'thread_local' keyword in CLHEP module.

09-April-2014: G.Cosmo (externals-V10-00-01)
- Updated CLHEP module to version 2.2.0.0.b01.

24-February-2014: G.Cosmo (externals-V10-00-00)
- Removed deprecated 'register' qualifiers in implementation of CLHEP classes.

14-November-2013: G.Cosmo (externals-V09-06-07, externals-V09-06-06)
- Updated CLHEP module to version 2.1.4.1.

20-August-2013: G.Cosmo (externals-V09-06-05)
- Corrected CMakeLists.txt script in CLHEP module to have missing .icc
  and .cdat files explicitly listed.

19-April-2013: G.Cosmo (externals-V09-06-04)
- Hack for making tracer.cxx application in memoryprotection module
  compile on Mac/clang.

19-April-2013: G.Cosmo (externals-V09-06-03)
- More corrections for compilation warnings on gcc for tpmalloc
  and memoryprotection modules.

18-April-2013: G.Cosmo (externals-V09-06-02, externals-V09-06-01)
- Moved 'tpmalloc' and 'memoryprotection' modules from global.
- Fixed compilation errors and warnings (NOTE: "tracer" application
  in memoryprotection does -not- compile yet!).
- Adapted build setup (currently disabled).

20-March-2013: G.Cosmo (externals-V09-06-00)
- Moved G4 zlib module from visualization/externals.

15-November-2012: G.Cosmo (externals-V09-05-04)
- Updated CLHEP module to version 2.1.3.1.

14-November-2012: G.Cosmo (externals-V09-05-03)
- Updated CLHEP module to version 2.1.3.0.

05-June-2012: G.Cosmo (externals-V09-05-02)
- Updated CLHEP module to version 2.1.2.3.

30-May-2012: G.Cosmo (externals-V09-05-01)
- Additional correction for shadowed variable in CLHEP module.

10-May-2012: G.Cosmo (externals-V09-05-00)
- Updated CLHEP module to version 2.1.2.2.

21-November-2011: G.Cosmo (externals-V09-04-11)
- Use USE flags in main GNUmakefile for selection of packages,
  for backwards compatibility.

07-November-2011: G.Cosmo (externals-V09-04-10)
- Updated CLHEP module to version 2.1.1.0.
- Abilited possibility to force building of internal 'expat' module also
  for Linux and Mac, through use of G4LIB_BUILD_EXPAT flag.

27-September-2011: G.Cosmo (externals-V09-04-09)
- More static symbols for DLL build of CLHEP module.

20-September-2011: G.Cosmo (externals-V09-04-08)
- Added missing export statements for static symbols required for DLL build
  to CLHEP module.

22-June-2011: B.Morgan (externals-V09-04-07)
- Added CLHEp include dirs to GEANT4_BUILDTREE_INCLUDE_DIRS so that its
  picked up from the buld tree when used.

20-June-2011: B.Morgan (externals-V09-04-06)
- Modified install of CLHEP headers to use Geant4 name on end of DESTINATION
  as per changes in cmake-V09-04-06 (REQUIRES cmake-V09-04-06).

14-June-2011: B.Morgan (externals-V09-04-05)
- Tidied up CMakeLists.txt for G4clhep to use standard library target macro.

2-June-2011: B.Morgan (externals-V09-04-04)
- CMakeLists.txt : NEW file adding CMake build support to externals module.
  CMake support added for clhep and expat modules.

1-June-2011: G.Cosmo (externals-V09-04-03)
- ixed trivial compilation warnings on gcc-4.6.0 in clhep module files
  NonRandomEngine.h and Ranlux64Engine.cc for parameters defined but not used.

24-May-2011: Gabriele Cosmo (externals-V09-04-02)
- Added missing files in CLHEP built-in module.
  Allow for generation of DLL library on Windows for it.

11-May-2011: Gabriele Cosmo (externals-V09-04-01)
- Added "clhep" module.

20-April-2011: Gunter Folger (externals-V09-04-00)
- Added "expat" module.
