All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Modules Pages
! =============================================================================
! Package     : GaudiGSL
! Responsible : Vanya Belyaev Ivan.Belyaev@itep.ru
! Commit Id   : ce1274ce7ddd2188f6c1f62d6323d6dd041cc85f
! =============================================================================

=============================== GaudiGSL v9r1 ================================

! 2016-01-21 - commit 10300ee

 - Revert "remove unused GSL components"

   This reverts commit 4244357375685702d7d6322f9990bf539b6375a1.
 Fixes
   GAUDI-1167.
 See merge request !98
    Conflicts:

   GaudiExamples/src/GSLTools/EqSolverIAlg.h
   GaudiExamples/src/GSLTools/EqSolverPAlg.h
   GaudiExamples/src/GSLTools/FuncMinimumGenAlg.h
   GaudiExamples/src/GSLTools/FuncMinimumIAlg.h
   GaudiExamples/src/GSLTools/FuncMinimumPAlg.h
   GaudiGSL/GaudiGSL/GaudiGSL.h
   GaudiGSL/GaudiGSL/GslError.h
   GaudiGSL/GaudiGSL/GslErrorHandlers.h
   GaudiGSL/GaudiGSL/IFuncMinimum.h
   GaudiGSL/GaudiGSL/IGslErrorHandler.h
   GaudiGSL/GaudiGSL/IGslSvc.h
   GaudiGSL/src/Components/EqSolver.cpp
   GaudiGSL/src/Components/EqSolver.h
   GaudiGSL/src/Components/FuncMinimum.cpp
   GaudiGSL/src/Components/FuncMinimum.h
   GaudiGSL/src/Components/GslErrorCount.cpp
   GaudiGSL/src/Components/GslErrorCount.h
   GaudiGSL/src/Components/GslErrorException.cpp
   GaudiGSL/src/Components/GslErrorException.h
   GaudiGSL/src/Components/GslErrorPrint.cpp
   GaudiGSL/src/Components/GslErrorPrint.h
   GaudiGSL/src/Components/GslSvc.cpp
   GaudiGSL/src/Components/GslSvc.h
   GaudiGSL/src/Lib/GaudiGSL.cpp
   GaudiGSL/src/Lib/GslErrorHandlers.cpp


! 2015-11-02 - commit 57f356c

 - Merge branch 'hive' into 'master'

   Fixes GAUDI-978.

   See merge request !65


! 2015-10-26 - commit de80db5

 - More modernization changes

   Fix (almost) all warnings from clang 3.7, and use clang-modernize to further
   modernize the code.

   Fixes GAUDI-1118.

   See merge request !49


! 2015-10-21 - commit fecec81

 - removed duplicated dictionary selections

   Fixes GAUDI-1115.

   See merge request !56

=============================== GaudiGSL v9r0 ================================

! 2015-09-25 - commit 35dd00c

 - Merge branch 'dev-smartif-use' into 'master'

   Provide (and use) C++11 smart pointer 'look and feel' for SmartIF

   The aim of this branch is to confine, for everything that inherits from
   IInterface, the calls to addRef(), release() and queryInterface() to the
   SmartIF implementation. Exceptions are a few places where interfaces
   (currently) return bare pointers (instead of SmartIF...) and where one thus
   has to addRef() explicitly to avoid returning a dangling pointer. This can be
   avoided by changing the relevant interface to return a SmartIF instead of a
   bare pointer.

   In addition, make SmartIF 'look and feel' like a smart pointer.

   - use explict bool conversion instead of .isValid()
   - add SmartIF::as(), to return a SmartIF to an alternate
      interface -- which (together with move) encourages the use of auto
   - add ISvcLocator::as(), to return a SmartIF to the current
   ISvcLocator.
   - add ServiceManager::service() which return SmartIF which
   encourages
      the use of auto

   And add a few other C++11 modernizations (eg. prefer STL over raw loop)

   Fixes GAUDI-1094

   See merge request !24


! 2015-09-11 - commit c062cbe

 - C++11 modernization changes

   Some trivial - and some not so trivial! - changes which take advantage of
   C++11...

   See merge request !7

=============================== GaudiGSL v8r4 ================================
! 2014-11-18 - Marco Clemencic
 - Cleaned up link statement in the CMake configuration.

=============================== GaudiGSL v8r3 ================================
! 2014-07-11 - Marco Clemencic
 - Removed references to the obsolete IFactory.

=============================== GaudiGSL v8r2 ================================
! 2014-05-26 - Marco Clemencic
 - Removed duplicated dictionary entries (already in RELAX).

! 2014-04-25 - Marco Clemencic
 - Removed duplicated dictionary entries (already in RELAX).

=============================== GaudiGSL v8r1 ================================
! 2014-03-18 - Ben Couturier
 - Fixed bug #104127: remove hwaf configuration.

=============================== GaudiGSL v8r0 ================================
! 2014-01-27 - Marco Clemencic
 - Fixed long standing issue with InterpTest test, actually due to a bug in the
   copy constructor of SplineBase.

! 2013-12-11 - Sebastien Binet
 - Added hwaf configuration files.

! 2013-07-19 - Marco Clemencic
 - Clean up in the use of the new PluginService.

! 2013-07-18 - Marco Clemencic
 - Removed use of obsolete AlgFactory.h, SvcFactory.h, ToolFactory.h,
   AudFactory.h and CnvFactory.h.

! 2013-07-17 - Marco Clemencic
 - Removed factories forward declarations.

=============================== GaudiGSL v7r12 ===============================
! 2012-11-06 - Marco Clemencic
 - Renamed the source file of a test.

=============================== GaudiGSL v7r11 ===============================
! 2012-06-08 - Marco Clemencic
 - Added CMake configuration files.

=============================== GaudiGSL v7r10 ===============================
! 2011-03-23 - Marco Clemencic
 - Fixed VC9 warnings.
   - Replaced C-style string manipulation and formatting with C++ (and Boost)
     implementations.
   - Disabled some warnings.

! 2011-02-28 - Marco Clemencic
 - Excluded few classes that are causing troubles on Windows.
   (see ROOT bug #78837)

=============================== GaudiGSL v7r9 ================================
! 2011-02-13 - Marco Clemencic
 - Exclude few classes from the dictionary because they are typedefs to
   vector and cause problems (duplicated dictionaries warnings).

! 2011-02-08 - Charles Leggett
 - Fixed bug #77948: GaudiGSL/requirements calls for lcg_dictionary
   replace lcg_dictionary pattern with reflex_dictionary

=============================== GaudiGSL v7r8 ================================
! 2011-01-17 - Brett Viren, Marco Clemencic
 - Fixed bug #75996: Support for CLHEP 2.0
   Added a "using namespace CLHEP".

! 2011-01-11 - Marco Clemencic
 - Fixed some ICC remarks.

! 2010-11-25 - Marco Clemencic
 - Fixed Coverity detected defect
   http://lhcb-coverity.cern.ch:8080/sourcebrowser.htm?projectId=10001#mergedDefectId=10027

=============================== GaudiGSL v7r7 ================================
! 2010-08-24 - Marco Clemencic
 - Fixed a linkage problem with ICC.

============================== GaudiGSL v7r6 =================================
! 2010-04-23 - Marco Clemencic
 - Minor fix to compile with gcc 4.5.0

! 2010-04-20 - Marco Clemencic
 - Removed ICC warnings and remarks.

=============================== GaudiGSL v7r5 ================================
! 2010-01-29 - Marco Clemencic
 - Fixed icc remark #1599: declaration hides variable

! 2010-01-28 - Marco Clemencic
 - Fixed icc remark #424: extra ";" ignored
 - Fixed icc remark #111: statement is unreachable

=============================== GaudiGSL v7r4 ================================
! 2010-01-15 - Marco Clemencic
 - Fixed compilation on icc 11.
   - cmt/requirements:
     removed "--as-needed" and "--no-as-needed", they do not work when linking
     executables (only for icc).
   The test gaudiexamples.gsltools fails because of
     symbol lookup error: libgsl.so.0: undefined symbol: cblas_dnrm2
   probably we need some tuning of the link options.

================ GaudiGSL v7r3 ====================================
! 2009-07-30 - Marco Clemencic
 - Fixed some doxygen warnings.

! 2009-07-20 - Marco Clemencic
 - Added '-no_static' to the declaration of the libraries (implemented since CMT
   v1r20p20081118).

================ GaudiGSL v7r2 ====================================
! 2009-07-08 - Marco Clemencic
 - Removed the usage of extend_interfaces1.

================ GaudiGSL v7r1 ====================================
! 2009-06-15 - Hubert Degaudenzi
 - use the new LCG tag convention.

! 2009-06-10 - Marco Clemencic
 - Removed _dll.cpp and _load.cpp files (not needed anymore).

================ GaudiGSL v7r0 ====================================
! 2009-04-07 - Marco Clemencic
 - Moved back the namespace MSG to the global namespace.

! 2009-04-06 - Marco Clemencic
 - Renamed back the namespace Msg to MSG and moved it into the namespace Gaudi.

! 2009-03-13 - Marco Clemencic
 - Task #9061: Introduction of component managers
   - Adapted to use the changes in the ISvcLocator, ISvcManager and IAlgManager
     interfaces.

! 2009-02-19 - Marco Clemencic
 - Patch #2790: Rename the namespace MSG to Msg

! 2009-01-30 - Marco Clemencic
 - Replaced all the occurrences of endreq with endmsg.

! 2009-01-29 - Marco Clemencic
 - Symbol visibility
   - Decorated all the classes and functions that needs to be exported (see
     GaudiKernel release.notes).

! 2009-01-22 - Marco Clemencic
 - Adapted to the new IInterface functionalities (see GaudiKernel release.notes)
 - Removed the IID_* constants.

================ GaudiGSL v6r10 ====================================
! 2008-10-27 - Marco Clemencic
 - Fixed warnings reported by gcc 4.3:
   - type qualifiers ignored on function return type

================ GaudiGSL v6r9 ====================================
! 2008-02-25 - Hubert Degaudenzi & Marco Clemencic
 - Fixed a linkage problem with libgsl.so and libgslcblas.so.

================ GaudiGSL v6r8 ====================================
! 2007-11-20 - Marco Clemencic
 - Fixed few compilation warnings on win32.

================ GaudiGSL v6r7 ====================================
! 2007-05-24 - Hubert Degaudenzi
 - Comments clean-up.

================ GaudiGSL v6r6 =======================================
================ GaudiGSL v6r5 =======================================
! 2006-11-30 - Pere Mato
  Adpated package to the new PluginSvc
  - Removed protected from constructor/destructors and fiendship of
    Factory class

================ GaudiGSL v6r4 =======================================
! 2006-01-10 - Hubert Degaudenzi
 - use of the DECLARE_XXX_FACTORY macros. replacement of the
   corresponding code.

================ GaudiGSL v6r3 =======================================
! 2005-11-25 - Pere Mato
 - requirements: adapted to use generate reflex dictionary

================ GaudiGSL v6r2 =======================================
! 200501-10 - Pere Mato
 - requirements: adapted to use CLHEP 1.9.x.x (with namespace CLHEP) and GSL 1.5

================ GaudiGSL v6r1 =======================================
! 2004-07-06 - Pere Mato
 - requirements: adapted to use new LCGCMT interface packages

================ GaudiGSL v6r0 =======================================
! 2004-03-06 - Vanya BELYAEV

New files:
============
  GaudiMath/Adapters.h
  GaudiMath/FunAdapters.h
  GaudiMath/GSLFunAdapters.h
  GaudiMath/Interpolation.h
  GaudiMath/Splines.h

  src/Lib/Adapters.cpp
  src/Lib/GSLFunAdapters.cpp
  src/Lib/Splines.cpp
  src/Tests/GSLAdaptersTest.cpp
  src/Tests/Interp.cpp

	dict/GaudiGSLMath.h
	dict/GaudiGSLMath.xml

Modified files:
===============
  GaudiMath/GaudiMath.h
  cmt/requirements
  doc/release.notes
  src/Components/EqSolver.cpp
  src/Components/FuncMinimum.cpp
  src/Lib/Adapter.cpp
  src/Tests/2DoubleFuncTest.cpp
  src/Tests/3DoubleFuncTest.cpp
  src/Tests/PFuncTest.cpp

removed file :
==============
   GaudiMath/Adapter.h

                   ===============================================
                            Modifcations in details:
                   ===============================================

 - src/Component/FuncMininum.cpp
       fix a compiler warning
 - src/Component/EqSolver.cpp
       fix a compiler warning

 - GaudiMath/GSLFunAdapters.h
    - new file with adapters to "typical" GSL fucntions

 - improvemend with different adapters

 - GaudiMath/GaudiMath.h
       add NumericalDefiniteIntegral into namespace GaudiMath with name
       DefIntegral
  - GaudiMath/Interpolation.h
       new file with definition of Interpolation types
       available interpolation types:
          - Linear
          - Polynomial
          - Cubic spline with natural  boundary conditions
          - Cubic spline with periodic boudary conditions
          - Akima spline with natural  boundary conditions
          - Akima spline with periodic boundary conditions
  - GaudiMath/Splines.h
      new classes
     SplineBase - more or less effective (but not inlined)
                  definition of spline function
     GSLSpline       - "GenericFunction" (Genfun) which performs spline
                       interpolation using SplineBase object
     GSLSplineDeriv  - "GenericFunction" (Genfun) which corresponds to
                       the first  derivative of spline function
     GSLSplineDeriv2 - "GenericFunction" (Genfun) which corresponds to
                       the second derivative of spline function
     GSLSplineInteg  - "GenericFunction" (Genfun) which corresponds to
                       the integral of spline function

    All these objects are imported into gamespace GaudiMath under the names
     GaudiMath::SimpleSpline
     GaudiMath::Spline
     GaudiMath::SplineDeriv
     GaudiMath::SplineDeriv2
     GaudiMath::SplineInteg

    All objects have few constructors:
     1)  "a'la Matt"
     FUN ( const std::vector&           x    ,
           const std::vector&           y    ,
           const GaudiMath::Interpolation::Type type ) ;
     2) constructor from pairs (x,y(x))
     FUN ( const std::vector >& data ,
           const GaudiMath::Interpolation::Type          type ) ;
     3) templated constructor in STL spirit
        from 2 sequences
     template 
     FUN ( DATAX  xbegin                            ,
           DATAX  xend                              ,
           DATAY  ybegin                            ,
           const GaudMath::Interpolation::Type type ) ;
     3) templated constructor in STL spirit
        from sequence of (x,y(x)) pairs
      template 
     FUN ( DATA  begin                            ,
           DATA  end                              ,
           const GaudMath::Interpolation::Type type ) ;

        This constructor is well suited to be used in conjuncion
        with class TabulatedPropery:

        // tabulated property
        const TabulatedProperty* prop = ... ;
        // create the interpolation function
        const GaudiMath::Function& fun =
               GaudiMath::Spline( prop->table().begin() ,
                                  prop->table().end  () ,
                                  GaudiMath::Interpolation::Akima ) ;
         // use the constructed interpolation function
         double value = fun( -1.0 ) ;

================ GaudiGSL v5r1 =======================================
! 2004-02-03 - Vanya Belyaev
 - serious bug in GaudiGSL code for numerical integration

================ GaudiGSL v5r0 =======================================
! 2003-08-18 - Kirill Miklyaev
 - new solving nonlinear system with n equations in n unknowns is added
  GaudiGSL/IEqSolver.h                   the abstract interface
  src/Components/EqSolver.h, .cpp        the concrete implementation of solving tool
 - class Adapter is added
  GaudiMath/Adapter.h                    convert function types "point to function"
  src/Lib/Adapter.cpp                    and "IFunction" to "GenFunction"

================ GaudiGSL v4r0 =======================================
! 2003-05-12 - Kirill Miklyaev
 - minimization tool is changed
 - the abstract interface is updated
 - error handling is added
	GaudiGSL/IFuncMinimum.h     the abstact interface is changed
	src/FuncMinimum.h, .cpp     the concrete implementation
                              of minimization tool are changed
 ================ GaudiGSL v3r0 =======================================
! 2003-01-22 - Kirill Miklyaev
 - minimization tool is changed
 - all static variables and static methods are removed
  scr/FuncMinimum.h,.cpp      the concrete implementation
                              of minimization tool are changed

================ GaudiGSL v2r0 =======================================
! 2002-09-27 - Ivan Belyaev & Kirill Miklyaev
 - new minimization tool is added
  GaudiGSL/IFuncMinimum.h     the abstract interface
  src/FuncMinimum.h,.cpp      the concrete implementation
                              of minimization tool

  Example of the configuration of minimization tool:

// choice of underlying minimization algorithms:
//  (1) conjugate_fr  ( default )
//  (2) conjugate_pr
//  (3) vector_bfgs
//  (4) steepest_descendent
ToolSvc.FuncMinimum.Algorithm = "conjugate_fr" ;  /// default value

/// declare maximum of iteration
ToolSvc.FuncMinimum.Iteration = 1000           ; // default value is 200

/// declare the absolute tolerance for the Euclidean norm of the gradient
ToolSvc.FuncMinimum.Gradient  = 1e-10          ; // defualt value

!==========================GaudiGSL v1r0=========================================
! 2001-05-12  Vanya Belyaev
  New package

    The Gsl Service is the service which perform intelligent error handling
    for GSL (GNU Scientific Library)

  It provides a choice between different "Error Handling Policies"

  Current implementation supports the
  several "error handling policies", which are driven by
  "ErrorPolicy" property of class GslSvc:

  - "GSL":
    The simplest error policy, no action, the error
    hadling defined in GSL does not redefined

  - "Off":
    The GSL empty error handling is used, what means the
    ignorance of all GSL errors. Program continues after
    any error, so the return values from any library routines
    must be checked. This policy is recommended by GSL team for
    production programs

  - "Abort"
    The default GSL error policy, causes abort on error.

  - "Ignore"
    The policy which is essentialy the same as "Off",
    but performed with local error handler GslErrorHandlers::ignoreTheError

  - "Exception"
    This policy throws the GaudiException with tag *GSL Error" to be thrown
    at the error. The policy implemented by lcal error handler
    GslErrorHandlers::throwException

  - "Handle"
    The policy which uses the call back from local error handler
    GslErrorHandlers::handleTheError to IGslSvc::handle method.
    Current implementation of this method is sequential execution of
    declared handlers, defined throught the property "Handlers" of
    class GslSvc in a format:
    GslSvc.Handlers = { "H1Type/H1Name" , "H2Type/H2Name" , "H3ype/3Name" };
    The "handlers" must implement IGslErrorHandler interface
    The three concrete simple handlers are provided in GaudiGSL package:
    class GslErorCount, GslErrorPrint and GslErrorException.

  The  typical job-configurations:

  //
  // This configuration perform the "on-flight" printout of all GSL
  // errors and the printout of overall statistics of all errors
  // at the end of the job
  ApplicationMgr.DLLs         += { "GaudiGSL" };
  ApplicationMgr.ExtSvc       += { "GslSvc"   };
  ApplicationMgr.ErrorPolicy   = "Handle" ;
  ApplicationMgr.Handlers     += { "GslErrorPrint/GslPrint" };
  ApplicationMgr.Handlers     += { "GslErrorCount/GslCount" };

  //
  // This configuration is good for massive production.
  // Program continues after any error, so the return values from
  // any library routines must be checked. This policy is recommended
  // by GSL team for production programs
  ApplicationMgr.DLLs         += { "GaudiGSL" };
  ApplicationMgr.ExtSvc       += { "GslSvc"   };
  ApplicationMgr.ErrorPolicy   = "Off" ;

  //
  // This configuration corresponds to default GSL behaviour and
  // functional it is equivalent to the absence of special error
  // handling at all. Program just makes abortion on errors.
  ApplicationMgr.DLLs         += { "GaudiGSL" };
  ApplicationMgr.ExtSvc       += { "GslSvc"   };
  ApplicationMgr.ErrorPolicy   = "Abort" ;

  //
  // Under this configuration on the error the handler throws
  // GaudiException with tag = *GSL Error*
  ApplicationMgr.DLLs         += { "GaudiGSL" };
  ApplicationMgr.ExtSvc       += { "GslSvc"   };
  ApplicationMgr.ErrorPolicy   = "Exception" ;

  //
  // This configuration is similar to the previous one
  // but GaudiException is throwed by specialized handler, and
  // thus it could be combined in a sequence with other
  // specialized handlers
  ApplicationMgr.DLLs         += { "GaudiGSL" };
  ApplicationMgr.ExtSvc       += { "GslSvc"   };
  ApplicationMgr.ErrorPolicy   = "Handle" ;

  //
  // "Everything altogether" configuration.
  // It prints the error message, accumulate statistics of errors
  // and throws the exception
  ApplicationMgr.DLLs         += { "GaudiGSL" };
  ApplicationMgr.ExtSvc       += { "GslSvc"   };
  ApplicationMgr.ErrorPolicy   = "Handle" ;
  ApplicationMgr.Handlers     += { "GslErrorPrint/GslPrint" };
  ApplicationMgr.Handlers     += { "GslErrorCount/GslCount" };
  ApplicationMgr.Handlers     += { "GslErrorException/GslException" };


   The handling of some error codes could be suppressed explicitely, e.g.:

   GslSvc.IgnoreCodes = {  0 , 15 , -1 , 158 } ;

   (this option is valid only for "Handle" mode)


  In addition one could forbid the exception throws for certain erro codes:

   GslException.IgnoreCodes = { 0 , -1 };