| The Gaudi Framework v28r2-patches (bc4ad17a)

- Main Page
- Related Pages
- Modules
- Namespaces
- Classes
- Files

GaudiGSL

    ! =============================================================================
    ! Package     : GaudiGSL
    ! Responsible : Vanya Belyaev Ivan.Belyaev@itep.ru
    ! Commit Id   : $Format:%H$
    ! =============================================================================

    ================================ Gaudi v28r2 =================================

    ================================ Gaudi v28r1 =================================

    ! 2016-12-14 - Attila Krasznahorkay (commit a42ff2a)

     - CMake configuration changes to build Gaudi with optional externals missing

       In the last days I experimented a bit with teaching Gaudi how to build when
       only ROOT, Boost and TBB are available to it. This is the result. As far as I
       can tell the code builds in the same way as the current master branch when
       all possible externals are available. (All the ones available in a full ATLAS
       offline build at least.) And I'm also able to build the project in these
       modes:
         * On Ubuntu 16.04 with the system provided Boost and TBB versions, against
       a privately built ROOT 6 version.
         * On macOS Sierra against privately built Boost, ROOT and TBB versions.
       Both when building the project completely on its own, and when building it
       against an ATLAS externals project.
        Some notes:
         * The code uses C++14 expressions in quite a few places by now. So I raised
       the default C++ standard to C++14. This is the default in ATLAS builds since
       a while, I only saw this as an issue when building Gaudi "on its own" with a
       very minimal configuration command.
         * While the code advertises that it still has support for ROOT 5, it's not
       able to build against it since a wile. Since the updates I put in for TLS
       variables on macOS. (The macros used there are ROOT 6 only.) And this update
       makes things even worse. As the code now relies on not providing the
       definition of some classes to the dictionary generator in GaudiPython that
       are not available. (Because AIDA or XercesC is missing.) While ROOT 6 handles
       this with just a build warning, ROOT 5's genreflex treats this with an ERROR
       message. That I was unable to get rid of.
        So, extended testing is clearly necessary, the configuration code could
       definitely be fine tuned as I probably turned off the build of more source
       files than absolutely necessary, but I think we should move ahead with such a
       configuration organisation.
        See merge request !241

    ================================ Gaudi v28r0 =================================

    ! 2016-11-08 - Marco Clemencic (commit ec96c27)

     - cleaning up last minute glitches

       - fixed warnings from clang
       - fixed issues with ROOT 6.08
       - minor polishing
       - minor fixes to tests
       - fixed GAUDI-1221
        See merge request !230

    ! 2016-10-27 - Gerhard Raven, Marco Clemencic (commit b111898)

     - modernization of Property

       This is a major rewrite of the system of `Property` classes. Started as  the
       implementation of GAUDI-1214, it continued as a review of
       `IProperty` and `PropertyMgr`, to end up in a complete rewrite
       (and optimization) of `PropertyWithValue`.

       * Fixes GAUDI-1214
        - added missing `declareProperty` signature
        - added `PropertyHolder` (an updated `PropertyMgr`)
        - adapted all properties in Gaudi
       * improved use of `PropertyHolder`
        - use inheritance instead of composition
        - removed ~200 (duplicated) lines of code in GaudiKernel
       * optimization of Property (fixes GAUDI-1229)
        - use templates and automatic code generation to handle efficiently
          both value and reference properties
          - avoid creation of values on the heap (see GAUDI-1229)
          - removed the *owned* boolean flag
          - improved usability of properties (e.g. begin/end wrappers for
            C++11 loops, increment/decrement operators...)
          - deprecated use of C arrays as properties
        - merged features of `PropertyWithVerifier`, `SimpleProperty` and
          `SimplePropertyRef` into `PropertyWithValue`
        - deduplication of name and doc strings via

       [`boost::string_ref`](http://www.boost.org/doc/libs/1_61_0/libs/utility/doc/html/string_ref.html)

          and a static storage  (see GAUDI-1229)
       * Fixes GAUDI-1205
       * add deprecation warnings in service accessors of `Algorithm` (@graven)
       * renamed `Property` base class to `Gaudi::Details::PropertyBase` and
       `PropertyWithValue` to `Gaudi::Property`
        - added backward compatibility type aliases (but not compatible with
          forward declarations of `class Property`, which should be replaced
          by `#include "GaudiKernel/PropertyFwd.h"`)
       * added macro `GAUDI_PROPERTY_v2` to allow easy implementation of
        backward compatible changes in derived projects (e.g. when user code
        relied on `DoubleProperty` having a verifier)
       * Fixes GAUDI-1268
        The changes are as backward compatible as much as possible (except if you
       explicitly inherit from `SimpleProperty`, or you forward declared
       `class Property`, which now are typedefs), but must be validated in the
       experiment frameworks.
        See merge request !182

    ! 2016-10-24 - Attila Krasznahorkay (commit ac4dbc7)

     - Changes to build on MacOS X 10.11

       See merge request !200

    ! 2016-10-24 - Marco Clemencic (commit a8d6605)

     - hidden/fixed "missing override" warnings exposed after !192

       - warnings from external headers are hidden declaring the include directories
       as `-system`
       - warnings from a couple of new files have been fixed
       - warnings in `HistogramSvc` are hidden because unavoidable (see f83c3d8e)
       - warnings related to CLHEP-136 have been hidden with a special trick (see
       0a238135)
        See merge request !205

    ! 2016-10-12 - Marco Clemencic (commit b5e05a1)

     - improved handling of package version in CMake configuration

       use project version if a package version is not provided
        See GAUDI-1215.
        See merge request !175

    ! 2016-10-01 - Marco Clemencic (commit 99b1001)

     - enable missing override warnings (gcc >= 5.1)

       Fixes GAUDI-1241
        See merge request !192

    ! 2016-08-19 - Marco Clemencic (commit f3050c3)

     - Fix compile time warnings

       fixed/hidden all warnings in GCC builds
        See merge request !189

    ! 2016-07-25 - Marco Clemencic (commit e3d4b07)

     - remove CMT configuration and related files

       * removed CMT configuration files
       * adapted scripts not to use CMT
        Fixes GAUDI-1216 Fixes GAUDI-979
        See merge request !186

    ! 2016-06-15 - Marco Clemencic (commit 7ef9a38)

     - flag m_ws as transient in GaudiGSLMath dictionary

       Fixes GAUDI-1210
        See merge request !179

    ! 2016-05-18 - Sami Kama (commit 9eeef96)

     - allow build of Gaudi without LCG and fix ThreadPoolSvc

       Allow building of Gaudi with local externals.
        It also contains a fix to an issue introduced with merge request !160
       (GAUDI-1212).
        Fixes GAUDI-1211, GAUDI-1212.
        See merge request !166

    =============================== GaudiGSL v9r2 ================================

    ! 2016-03-10 - commit 4a18175

     - removed uses of templates implements[1-4], extends[1-4] and
       extend_interfaces[1-4]

       Since merge request !22 they are unnecessary.
        See merge request !133

    ! 2016-02-11 - commit fcf9b05

     - Fix for failing test GaudiGSL.InterpTest (on latest GSL)

       This test confuses interpolation and extrapolation. These have
     historically
       been the same in GSL, but haven't been for a while now. If
     you want to
       extrapolate, you have to tell GSL to do so explicitly.
        The test is modified to solely do interpolation.
        See merge request !107

    ! 2016-02-11 - commit b0618f7

     - Improve CommonMessaging

       Implementation of GAUDI-1146: Improve CommonMessaging and use it in more
       places.

       See merge request !76

       Conflicts:
       GaudiExamples/tests/qmtest/refs/AlgTools2.ref
       GaudiExamples/tests/qmtest/refs/MultiInput/Read.ref
       GaudiExamples/tests/qmtest/refs/conditional_output/write.ref
       GaudiKernel/GaudiKernel/AlgTool.h
       GaudiKernel/GaudiKernel/Algorithm.h
       GaudiKernel/GaudiKernel/Service.h
       GaudiKernel/src/Lib/AlgTool.cpp
       GaudiKernel/src/Lib/Algorithm.cpp

    =============================== 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<IFace>(), to return a SmartIF<IFace> to an alternate
          interface -- which (together with move) encourages the use of auto
       - add ISvcLocator::as<IFace>(), to return a SmartIF<IFace> to the current
       ISvcLocator.
       - add ServiceManager::service<IFace>() which return SmartIF<IFace> 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<double> 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<double>&           x    ,
               const std::vector<double>&           y    ,
               const GaudiMath::Interpolation::Type type ) ;
         2) constructor from pairs (x,y(x))
         FUN ( const std::vector<std::pair<double,double> >& data ,
               const GaudiMath::Interpolation::Type          type ) ;
         3) templated constructor in STL spirit
            from 2 sequences
         template <class DATAX,class DATAY>
         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 <class DATA>
         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 };