| The Gaudi Framework v27r1

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

GaudiGSL

    ! =============================================================================
    ! Package     : GaudiGSL
    ! Responsible : Vanya Belyaev Ivan.Belyaev@itep.ru
    ! Commit Id   : 42dec2462c6bee3f5c65240baea2ec6b387d7ac1
    ! =============================================================================

    =============================== 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 };