| The Gaudi Framework v28r2-patches (bc4ad17a)

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

GaudiMP

    Package: GaudiMP
    Package manager : Sebastien Binet
    Commit Id: $Format:%H$

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

    ! 2017-02-08 - Charles Leggett (commit 09859bd)

     - add sysExecute(EventContext) and extract errorCount from Algorithm base class

       We need to extract the `m_errorCount` variable from the Algorithm base class,
        as it's not important on a per-instance basis, but rather on a job level.
       This is moved to the AlgExecStateSvc.
        This merge request also adds an explicit `IAlgorithm::sysExecute(const
       EventContext&)`, which should become the standard entry point to
       `Algorithm::execute`. This sets the local m_event_context variable, so
       derived classes can get quick access to the current context instead of going
       through the slower thead local `Gaudi::Hive::currentContext()`.
        Note that `IAlgorithm::sysExecute()` has been removed, to avoid "overloaded
       virtual" compiler errors, and should be replaced in all clients with
       `IAlgorithm::sysExecute(EventContext)`, or if the context is not immediately
       available, with `IAlgorithm::sysExecute(Gaudi::Hive::currentContext())`.
        All this is being done in preparation to re-introduce the ReEntrantAlgorithm
       class from merge !177 (see also !274)
        See merge request !273

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

    ================================ GaudiMP v3r5 ================================

    ! 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
    ================================ GaudiMP v3r4 ================================

    ! 2015-11-02 - commit 57f356c

     - Merge branch 'hive' into 'master'

       Fixes GAUDI-978.

       See merge request !65

    ================================ GaudiMP v3r3 ================================

    ! 2015-10-08 - commit c50c176

     - improvements to documentation and release tools

       See merge request !43

    ! 2015-10-06 - commit 0b7a459

     - Merge branch 'GAUDI-1093' into 'master'

       avoid (deprecated) Python module `commands`

       fixes GAUDI-1093

       See merge request !38

    ! 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

    ================================ GaudiMP v3r2 ================================
    ! 2014-05-27 - Marco Clemencic
     - Minor fix to CMake configuration (CMT equivalence).

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

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

    ! 2013-07-23 - Marco Clemencic
     - Modified IoComponentMgr::initialize to print the Python error in case of
       failure when importing 'GaudiMP.IoRegistry'.

    ! 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.

    ! 2013-07-03 - Marco Clemencic
     - Removed explicit link against Reflex from cmt/requirements.

    ================================ GaudiMP v2r1 ================================
    ================================ GaudiMP-02-00-01 ============================
    ! 2013-10-10 - Charles Leggett
     - implementation io_finalize() in IoComponentMgr.cpp

    M       src/component/IoComponentMgr.cpp

    ================================ GaudiMP-02-00-00 ============================
    ! 2013-08-30 - Charles Leggett
     - retag for Atlas merge

    ================================ GaudiMP-01-07-01 ============================
    ! 2013-03-06 - Charles Leggett
     - merge with GaudiMP-01-01-12
     - updated IoComponentMgr
     - added various Boost link libraries to GaudiMP_linkopts

    M       cmt/requirements
    M       src/component/IoComponentMgr.cpp
    M       src/component/IoComponentMgr.h

    ================================ GaudiMP v1r8 ================================
    ! 2013-09-04 - Marco Clemencic
     - Modified RecordOutputStream to allow an implicit value for  OutputStreamName:
       "Deferred:" + name.
       This is needed to enforce deferred write using algorithm type aliasing.

    ! 2013-08-30 - Marco Clemencic
     - Task #47619: Defer calls to OutputStreams in GaudiMP
       Added a class to record which streams should be triggered and a class to
       use the recorded informations to trigger the OutputStream instances:
       RecordOutputStream and ReplayOutputStream.

       To use the delayed write, one need to translate options like:

           mySeq.members.append(OutputStream('MyStream'))

       with something like:

           mySeq.members.append(RecordOutputStream('RecordMyStream',
                                                   OutputStreamName='MyStream'))
           ApplicationMgr().OutputStream.append(
             ReplayOutputStream(OutputStreams=[OutputStream('MyStream')])
           )

    ================================ GaudiMP v1r7 ================================
    ! 2013-01-15 - Nathalie Rauschmayr
     - Patch #5593: Implemented late forking for GaudiMP
       Implemented late forking on the level of the worker processes. After
       Application Manager has been initialized and before the first event has been
       processed, subworkers are forked by the main worker.

    ================================ GaudiMP v1r6 ================================
    ! 2012-11-14 - Marco Clemencic
     - Updated CMakeLists.txt.

    ================================ GaudiMP v1r5 ================================
    ! 2012-09-13 - Marco Clemencic
     - Fixed compilation warnings.

    ! 2012-07-27 - Marco Clemencic
     - Rationalized the permissions of files in the repository.

    ! 2012-07-25 - Nathalie Rauschmayr
     - Patch #5471: fixes to be able to run LHCb applications via GaudiParallel.
       - For Gauss:
         - GMPBase.py:
           - DoFirstEvent(): Call GetHistoNames instead of GetList (nearly the same
             except of the line "rootFID = node.address().par()")
           - GMPComponent.__init__(): Distinguish the applications
           - GetEventNumber(): In Gauss, EventNumber must be given by the Reader due
             to correctly set the random seeds
           - Initialize() of worker: Interface to EventCounter in order to modify
             the counters from outside
           - Engine() of worker: Set EventCounter which is given by the reader
       - General:
         - GMPBase.py:
           - Go(): SUCCESS/FAILURE is not a bool --> if-statement did not work
           - Terminate(): Termination won't work when one of the processes already
             died. Check existing processes
           - Engine() of writer: runTime of writer was not correct as it was
             overwritten every time
           - DoFirstEvent(): Register links in TransientEventStore (DAQ/RawEvent)
           - WAIT_SINGLE_EVENT = 60*6: In certain situations it happened that the
             waiting time for the finalization was too short
           - Engine() of worker: ItemList and optItemList have been modified. Double
             entries caused a memory leak
         - TESSerializer.cpp:
           - loadBuffer(): Find objects, which are not equal to /Event in TES, and
             read out the buffers
         - pTools.py:
           - ProcessTimeSpanFSR(): Time Span in FileRecords are not generated
             correctly (no merging). Instead of writing n times TimeSpanFSR, only
             the minimum and maximum is written
           - syncAllRolling(): In Gauss it happened often that the Reader is too
             fast and could not synchronize with the workers in the end. As the
             synchronization object is not reset the Reader waits for a long time
             until it calls processHang() and kills every process. Modifying the
             if-statement allows to reset the waiting time of the Reader
         - compareOutputFiles.py:
           - Sets-module is deprecated
           - Added functions for the comparison of FileRecords (CompareFSR(),
             GetFSRdict(), CheckFileRecords())

    ================================ GaudiMP v1r4 ================================
    ! 2012-06-08 - Marco Clemencic
     - Added CMake configuration files.

    ================================ GaudiMP v1r3 ================================
    ! 2012-01-18 - Wim Lavrijsen
     - address failures due to missing temp files
    M       python/GaudiMP/FdsRegistry.py

    ================================ GaudiMP v1r2 ================================
    ! 2011-07-18 - Charles Leggett
     - Patch #4941: bring up to date with GaudiMP-01-01-04
     - check StatusCode of Service::initialize
    M       src/Lib/IoComponentMgr.cpp
     - check for python initialization, add IoRegistry.py and FdsRegistry.py

       modules
    A       python/GaudiMP/IoRegistry.py
    A       python/GaudiMP/FdsRegistry.py
    M       cmt/requirements
    M       src/Lib/IoComponentMgr.cpp

     - made GaudiMP a component library too, added some debug output to
       IoComponentMgr
    M       cmt/requirements
    M       GaudiMP/IoComponentMgr.h
    M       src/Lib/IoComponentMgr.cpp

     - Add IIoComponentMgr
    M       cmt/requirements
    A       GaudiMP/IoComponentMgr.h
    A       src/Lib/IoComponentMgr.cpp

    ! 2011-06-23 - Hubert Degaudenzi
     - fixed warnings from the eclipse code analysis engine.

    ================================ GaudiMP v1r1 ================================
    ! 2011-04-04 - Pere Mato
     - Fixes to work with LHCb Brunel
       1) Namespace changed from GaudiPython to GaudiMP for TESSerializer class
       2) Firing "EndEvent" incidents in Worker event loop. This was needed to
          eliminate crashes in Brunel when invalid pointer to collection of
          cluster was used in fitting algorithms.
       3) Call update() method after having de-serialize a KeyedContainer<>. This
          is needed to re-build the internal direct access container.

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

    ! 2010-12-17 - Eoin Smith
      - Updated TESSerializer.h/cpp, python/GaudiPython for Multicore Execution
        TESSerializer class can now serialize/reconstruct Opaque Addresses using
        the GaudiKernel IOpaqueAddress interface.
        TESSerializer now uses a map as member variable for TClass names, to
        improve performance (initialize once, refer back on each event iteration)
        Multicore components collected in GMPBase.py ; the Reader, Worker and
        Writer.  pTools.py contains extra classes; HistoAgent, FileRecordsAgent
        for communication and consolidation of Histo and Records stores. pTools
        also contains some extra methods used by the Reader, Writer, Workers.

    ! 2010-12-16 - Sebastien Binet
     - Patch #4074: migrate GaudiPython.Parallel to multiprocessing
       First import