| The Gaudi Framework v32r1 (f65d50dc)

GaudiCoreSvc

    ################################################################################
    # Package: GaudiCoreSvc
    # Maintainer: Marco Clemencic
    # Description: basic and mandatory components for a Gaudi application
    # Commit Id: $Format:%H$
    ################################################################################

    ================================ Gaudi v28r3 =================================

    ! 2017-03-29 - Marco Clemencic (commit f1a1e30d)

     - Merge branch 'GAUDI-1277' into 'master'

       Removed unnecessary methods of EventIterator
        Closes GAUDI-1277
        See merge request !311

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

    ! 2017-03-16 - Marco Clemencic (commit e27fee6)

     - cleaned up MessageSvc color handling and fixed inconsitencies

       Closes GAUDI-1293
        See merge request !296

    ! 2017-03-07 - Marco Clemencic (commit d19e41b)

     - Merge branch 'minor-fix-to-incidentsvc' into 'master'

       minor fixes to exception reports in IncidentSvc
        See merge request !291

    ! 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 - Sebastien Ponce (commit efc88ab)

     - Context fixes

       See merge request !248

    ! 2016-12-07 - many contributors (commit dc1b505)

     - port LHCb MT developments to Gaudi master

       among others we have
       - `Gaudi::Functional`: base classes to write algorithms as pure functions
       - `AnyDataWrapper`/`AnyDataHandle`: helper to store any type in the Transient
       Store (DataSvc)
       - fixes to `DataObjectHandle`
       - fixes to `GaudiHive`
       - new tests and examples
       - modernization (removed empty destructors, ...)
        See merge request !245

    ================================ 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-19 - Charles Leggett (commit 958570b)

     - Algorithm Execution State Service

       Introduction of AlgExecStateSvc
        All event state information removed from Algorithm base class
       (m_filterPassed, m_isExecuted) as it will cause difficulties with re-entrant
       Algorithms.
        event success/fail flag removed from EventContext
        These flags are moved to be under control of a new service, the
       AlgExecStateSvc, which keeps track of the execution state of all Algorithms,
       and the Event as a whole.
        Algorithm status kept in a new class ```AlgExecState``` which has
       ```
           bool m_filterPassed  {true};
           bool m_isExecuted    {false};
           StatusCode m_execStatus  {StatusCode::FAILURE};
       ```
        AlgExecStateSvc holds an AlgExecState for each Algorithm in each Event
       Slot, as well as an overall ```EventStatus``` for each EventSlot, which can
       be one of

       ```
         Invalid = 0,
         Success = 1,
         AlgFail = 2,
         AlgStall = 3,
         Other = 4
       ```
        Algorithms add themselves to the AlgExecStateSvc upon initialization, but
       the Service's initialization of  the data structures is deferred until the
       first time ```AlgExecStateSvc::reset()``` is called, at which point it's
       probably safe to figure out if there's a WhiteBoard, and the number of slots
       to allocate.
        The EventLoopMgr should call ```AlgExecStateSvc::reset()``` at the start of
       each event. If it's a concurrent EventLoopMgr, it should be
       ```AlgExecStateSvc::reset(EventContext)```, after the EventContext object
       has been updated to reflect the new event.
        Also added an EventContext object to the MinimalEventLoopMgr, so that
       serial/concurrent behaviour is similar.
        Concurrent queries to the AlgExecStateSvc must contain the EventContext, so
       the correct EventSlot can be determined. Serial access is via methods that
       don't have the EventContext as a parameter. For access from Algorithm base
       class (eg from setFilterPassed, isExecuted, etc), if the EventContext ptr
       (m_event_context) in the Algorithm is null, we assume we're running
       serially.
        See merge request !197

    ! 2016-10-19 - Marco Clemencic (commit e2c1f4a)

     - fixes and improvements for ROOT 6.08 and gcc 6.1

       * added option to use or not GCC old C++11 ABI (off by default)
       * added some missing #include for the usual headers clean up in gcc
       * fixed a few places where old GCC behaviour was assumed
       * fixed default C++ standard version for clang >= 3.7
       * fixed GAUDI-1242

        See merge request !187

    ! 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-23 - Sami Kama (commit 3735737)

     - Adding concurrent incident support and example utilization.

       `GaudiExamples/options/AsyncIncidents.py` demonstrates example utilization of
       asynchronous incident mechanism.
        Fixes GAUDI-1213
        See merge request !181

    ! 2016-05-31 - Charles Leggett (commit d79ce22)

     - use std::list for ListenerList in IncidentSvc

       Using std::list instead of std::vector allows the possibility of listeners
       being added during the handling of an incident, which cannot be forbidden
       because a handler may trigger instantiation of a component that wants to be
       registered.
        From Scott Snyder. See atlas/Gaudi!20
        See merge request !164

    ============================= GaudiCoreSvc v4r1 ==============================

    ! 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-03-10 - commit 8a11f51

     - fixed unprotected debug messages

       I also added the possibility of dumping a stack trace for unprotected

       messages.
        Fixes GAUDI-1192
        See merge request !129

    ! 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

    ! 2016-02-06 - commit d905569

     - introduce DataHandle and DataObjectHandle

       See merge requests !57 !94 !95

    ============================= GaudiCoreSvc v4r0 ==============================

    ! 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

    ============================= GaudiCoreSvc v3r6 ==============================

    ! 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-17 - commit 616d3da

     - Merge branch 'master' into 'master'

       GAUDI-1088: restored IncidentSvc debug output for removed listeners

       See merge request !28

    ! 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

    ! 2015-02-27 - Marco Clemencic
     - Minor change in stats report at the end of loop in EventLoopMgr.

    ============================= GaudiCoreSvc v3r5 ==============================
    ! 2015-06-17 - Marco Clemencic
     - GAUDI-1044: allow 'L' numeric suffix in .opts files parsed with Gaudi.exe.

    ============================= GaudiCoreSvc v3r4 ==============================
    ! 2015-03-14 - Marco Clemencic
     - GAUDI-1024: Replaced GaudiKernel/Tokenizer with the new AttribStringParser.

    ============================= GaudiCoreSvc v3r3 ==============================
    ! 2015-02-06 - Marco Clemencic
     - Added methods to IToolSvc to get all the tool instances.

    ============================= GaudiCoreSvc v3r2 ==============================
    ! 2015-01-07 - Gerhard Raven
     - GAUDI-995: improve Algorithm storage/management in AlgorithmManager

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

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

    ! 2013-12-04 - Marco Clemencic
     - Removed unnecessary use of boost::shared_ptr.

    ! 2013-07-26 - Marco Clemencic
     - Ported new GaudiPluginService to CMT.

    ! 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
     - Use the new ROOT-free Plugin Service.

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

    ! 2013-07-03 - Marco Clemencic
     - Replaced Reflex queries with TClass queries.
     - Changed cmt/requirements to link against ROOT libraries (needed by the
       replacement of Reflex).
     - Replaced references to ROOT::Reflex::PluginService with Gaudi::PluginService.
     - Renamed the ApplicationMgr property ReflexPluginDebugLevel to
       PluginDebugLevel.

    ============================= GaudiCoreSvc v2r1 ==============================
    ! 2013-11-18 - Marco Clemencic
     - Removed duplicated print of of service ref count (use old format for
       backward compatibility with tests).

    ============================= GaudiCoreSvc-02-00-03 =========================
    ! 2013-10-24 - Charles Leggett
     - implement IncidentSvc::getListeners
     - ServiceManager will trigger SvcPostFinalize incident

    M       src/ApplicationMgr/ServiceManager.cpp
    M       src/IncidentSvc/IncidentSvc.h
    M       src/IncidentSvc/IncidentSvc.cpp

    ============================= GaudiCoreSvc-02-00-02 =========================
    ! 2013-09-10 - Charles Leggett
     - re-introduce release/deletion of services during ServiceManager::finalize()

    M       src/ApplicationMgr/ServiceManager.cpp

    ============================= GaudiCoreSvc-02-00-01 =========================
    ! 2013-09-09 - Charles Leggett
     - re-introduce ordering rules for HistorySvc and FileMgr in
       ServiceManager::finalize()

    M       src/ApplicationMgr/ServiceManager.cpp

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

    ! 2013-04-24 - Charles Leggett
     - ApplicationMgr:
       - a "ScheduledStop" should not result in a termination error message
    M       src/ApplicationMgr/ApplicationMgr.cpp

    ! 2013-04-02 - Charles Leggett
     - ServiceManager:
       - use default service priority from ISvcManager
       - incorporate def priority in AppMgr
    M       src/ApplicationMgr/ServiceManager.h
    M       src/ApplicationMgr/ApplicationMgr.cpp

    ! 2013-04-02 - Charles Leggett
     - ServiceManager:
       - allow setting of priority from a service's initialize method
       - change default piority of services to 100 from 10
       - push down priorities of "problematic" services
       - added dump() method to list services for debugging
    M       src/ApplicationMgr/ServiceManager.h
    M       src/ApplicationMgr/ServiceManager.cpp

    ============================= GaudiCoreSvc v1r6 ==============================
    ! 2013-09-04 - Marco Clemencic
     - Extended AlgorithmManager and ApplicationMgr to allow aliasing of algorithm
       types.
       These options:

           from Configurables import ApplicationMgr

           app = ApplicationMgr()
           app.AlgTypeAliases['MyAlg'] = 'MyNewAlg'

       instruct the AlgorithmManager to create instances of MyNewAlg whenever it is
       requested to create a MyAlg.
       The aliasing can be bypassed by prefixing the string 'unalias:' to the class
       name.

    ============================= GaudiCoreSvc v1r5 ==============================
    ! 2013-04-09 - Hubert Degaudenzi
     - src/EventSelector/EventSelector.cpp: fixed cppcheck warning.

    ! 2013-06-06 - Marco Clemencic
     - Minor change in the printout of the job option parser.

    ! 2013-06-03 - Sasha Mazurov
     - Fixed parsing of '.opts' files with C++11 enabled.

    ============================= GaudiCoreSvc v1r4 ==============================
    ! 2013-04-16 - Marco Clemencic
     - Fixed Clang warnings.

    ============================= GaudiCoreSvc v1r3 ==============================
    ! 2012-11-12 - Marco Clemencic
     - Set the application return code to CorruptedInput in case of incident
       CorruptedInputFile.

    ! 2012-11-07 - Marco Clemencic
     - Fixes to use the '-pedantic' option.

    ! 2012-10-26 - Marco Clemencic
     - Initialize the application return code to 'Success' in
       ApplicationMgr::configure() instead of EventLoopMgr::nextEvent(int), to
       avoid that error conditions (like failure to open a file) happening during
       initialization are discarded.

    ! 2012-10-21 - Marco Clemencic
     - Modified TBBMessageSvc to use the new Gaudi::SerialTaskQueue.
     - Modified MessageSvc to separate the locking from the reportMessage
       implementation so that TBBMessageSvc can use non-locked code.

    ! 2012-07-26 - Benedikt Hegner
     - Fixed compilation with -std=c++0x.

    ! 2012-07-02 - Marco Clemencic
     - Added specialization of MessageSvc (TBBMessageSvc) that uses TBB (Intel
       Threading Building Blocks) tasks to print the messages asynchronously.

    ============================= GaudiCoreSvc v1r2 ==============================
    ! 2012-06-08 - Marco Clemencic
     - Added CMake configuration files.

    ! 2012-06-07 - Marco Clemencic
     - Fixed compilation with Clang (lookup of operator<<).

    ============================= GaudiCoreSvc v1r1 ==============================
    ! 2012-02-06 - Marco Clemencic
     - minor esthetic fix

    ! 2012-01-26 - Marco Clemencic
     - Added protection to debug messages (reported by Marco Cattaneo).

    ============================= GaudiCoreSvc v1r0 ==============================
    ! 2012-01-25 - Marco Clemencic
     - Set non-zero return code in case of failure during finalization.
     - Modified the last messages (finalization and termination) of ApplicationMgr
       in case of failures.

    ! 2012-01-24 - Illya Shapoval
     - Modified ServiceManager to avoid race conditions on concurrent requests of
       services from different threads.

    ! 2012-01-20 - Marco Clemencic
     - Moved ToolSvc to GaudiCoreSvc because it's used by some other core services.

    ! 2012-01-19 - Marco Clemencic
     - Improved debug (VERBOSE) messages in DataOnDemandSvc.

    ! 2012-01-17 - Sasha Mazurov
     - Patch #5183: JobOptionsSvc: warnings and environment variables
       - Disable the warning "Reassignment of option".
       - Fix a bug: Environment variables aren't replaced by their values in a
         property's value.

    ! 2012-01-17 - Marco Clemencic
     - Improvements to DataOnDemandSvc:
       - do not load the ToolSvc if not needed
       - ensure that the tools are not released if the ToolSvc is already finalized

    ! 2012-01-16 - Marco Clemencic
     - Modified DataOnDemandSvc to accept tools to map paths to node types
       (IDODNodeMapper) and to algorithms (IDODAlgMapper).
       Note: the mapping is cached in the usual internal structures so the
             implementation of the tools must always return the same answer for the
             same path.
     - Added a basic IDODNodeMapper and IDODAlgMapper (DODBasicMapper) implementing
       the minimal DataOnDemandSvc static mapping.

    ! 2011-12-15 - Sasha Mazurov
     - Patch #5176: fix problem with underscore in property names (Boost 1.48)

    ! 2011-12-15 - Marco Clemencic
     - Make ApplicationMgr print the version of the package if no version is
       specified in the options.

    ! 2011-12-13 - Sasha Mazurov
     - Patch #5166: Allow "::" in property and component names.

    ! 2011-11-01 - Marco Clemencic
     - Moved core services out of GaudiSvc and into the new packages GaudiCoreSvc
       and GaudiCommonSvc. (patch #1816)