| The Gaudi Framework v28r2-patches (bc4ad17a)

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

GaudiPython

    Package: GaudiPython
    Package manager : Marco Clemencic
    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

    ! 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-10-28 - Marco Clemencic (commit f2881a2)

     - minor fixes for new Property

       - removed deprecation warning in `Gaudi::Details::PropertyBase::clone`
       - removed Property from GaudiPython dictionary
        See merge request !224

    ! 2016-10-28 - Marco Clemencic (commit 7a372bb)

     - fixed a few compilation warnings

       See merge request !221

    ! 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 - Marco Clemencic (commit 9d0e74a)

     - removed obsolete/unused files from GaudiPython

       - removed GPyTest related files (see GAUDI-982, fixes GAUDI-1248)
       - removed unused directories `home` and `examples`
       - removed `src/Embedded/main.cpp`
        See merge request !208

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

    ! 2016-04-13 - Charles Leggett (commit d86d094)

     - fix unchecked StatusCode in GaudiPython

       (from Scott Snyder)
        See merge request !156

    ============================= GaudiPython v14r2 ==============================

    ! 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-01 - commit 12c3a15

     - Merge branch 'GAUDI-1189' into 'master'

       exclude classes referring to `__int128` from GaudiPythonDict
        Fixes GAUDI-1189
        See merge request !121

    ! 2016-02-12 - commit 416a1ec

     - remove unnecessary printouts in GaudiPython.TupleUtils

       Fixes GAUDI-1171
        See merge request !109

    ! 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

    ============================= GaudiPython v14r1 ==============================

    ! 2016-01-07 - commit fabc739

     - fixed compilation with clang 3.7 (after hive merge)

       * fixed compilation problems related to `operator<<` (gcc is more
        permissive than clang).
       * fixed also some clang warnings.
        Fixes GAUDI-1157.
        See merge request !84

    ! 2015-10-21 - commit fecec81

     - removed duplicated dictionary selections

       Fixes GAUDI-1115.

       See merge request !56

    ============================= GaudiPython v14r0 ==============================

    ! 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-21 - commit 850d801

     - Merge branch 'master' into 'master'

       Functions added to GaudiUtils that allow generation of random numbers from
       integer and string input

       Add hash functions with good avalanche characteristiscs to GaudiUtils.

       - Header and implementation are QuasiRandom.{h,cpp} in GaudiUtils
       - Relevant functions have been added to GaudiPython dictionary for
        interactive use
       - Update RandomNumber test to include these functions
       - Update RandomNumber test reference

       See merge request !20

    ! 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

    ============================= GaudiPython v13r5 ==============================
    ! 2015-04-13 - Marco Clemencic
     - Refactored printing of alg sequences and moved it after the initialize,
       to allow an implemetation in C++ (to avoid GaudiPython in gaudirun.py).

    ! 2015-04-10 - Marco Clemencic
     - Added missing 'terminate' method to AppMgr.

    ! 2015-03-23 - Marco Clemencic
     - Removed workaround for ROOT-6032 and added workaround for ROOT-7201
       (it's practically the same bug)

    ! 2015-03-23 - Rosen Matev
     - Faster version of the workaround for ROOT-6697.

    ! 2015-02-19 - Marco Clemencic
     - GAUDI-1009: remove GaudiPython.Bindings.makeClass

    ============================= GaudiPython v13r4 ==============================
    ! 2015-01-13 - Marco Clemencic
     - Fixed a problem building with the latest ROOT 6.02.

    ! 2015-01-08 - Marco Clemencic
     - Adapted GaudiPython.Bindings to the changes introduced with GAUDI-995
       (backward incompatible change in IAlgManager).

    ============================= GaudiPython v13r3 ==============================
    ! 2014-10-02 - Marco Clemencic
     - Introduced work-around for ROOT-6697 (wrong overloaded method called).

    ! 2014-09-18 - Marco Clemencic
     - Fixed Eclipse Code Analysis warning.

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

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

    ! 2014-05-24 - Marco Clemencic
     - Address the problem described in ROOT-6315 by making the enum overriding
       optional.

    ! 2014-05-21 - Marco Clemencic
     - Moved dictionary for InterfaceID from GaudiPython to GaudiKernel.

    ! 2014-05-21 - Marco Clemencic
     - Moved dictionary for GaudiHandle*Property from GaudiPython to GaudiKernel.

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

    ============================= GaudiPython v13r0 ==============================
    ! 2014-02-13 - Marco Clemencic
     - Added workaround for ROOT-6028...
       or ROOT-6054 or ROOT-6073.. depending on the point of view.
       https://sft.its.cern.ch/jira/browse/ROOT-6028
       https://sft.its.cern.ch/jira/browse/ROOT-6054
       https://sft.its.cern.ch/jira/browse/ROOT-6073

    ! 2014-02-07 - Marco Clemencic
     - Added workaround for ROOT-6032.
       https://sft.its.cern.ch/jira/browse/ROOT-6032

    ! 2014-02-06 - Marco Clemencic
     - Added missing (?) header to the dictionary (needed for ROOT 6).

    ! 2014-01-06 - Marco Clemencic
     - Removed workarounds for ROOT-5850 and ROOT-5847.
       https://sft.its.cern.ch/jira/browse/ROOT-5850
       https://sft.its.cern.ch/jira/browse/ROOT-5847

    ! 2013-12-16 - Marco Clemencic
     - Added workaround for ROOT-5850.
       https://sft.its.cern.ch/jira/browse/ROOT-5850

    ! 2013-12-16 - Marco Clemencic
     - Added workaround for ROOT-5847.
       https://sft.its.cern.ch/jira/browse/ROOT-5847

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

    ! 2013-11-05 - Marco Clemencic
     - Restore the old order of load of Pythonizations because the new order was
       causing a failure in ROOT 5.
     - Reenabled the work-around for bug ROOT-5581, renamed ROOT-5478 because it
       fixes that problem too and it works in both ROOT 5 and ROOT 6.

    ! 2013-10-31 - Marco Clemencic
     - Moved the import of Pythonizations (in Bindings) after the auto-loading of
       the main dictionaries, to avoid the warnings about the order of inclusion of
       Python.h (see <https://sft.its.cern.ch/jira/browse/ROOT-5478>, point 2).

    ! 2013-10-29 - Marco Clemencic
     - Removed work-around for bug ROOT-5581.
       https://sft.its.cern.ch/jira/browse/ROOT-5581

    ! 2013-10-29 - Marco Clemencic
     - Removed work-around for bug ROOT-5623.
       https://sft.its.cern.ch/jira/browse/ROOT-5623

    ! 2013-10-29 - Marco Clemencic
     - Modified __str__ implementation in Pythonizations.py to return a Python
       string and not an std::string.

    ! 2013-10-24 - Marco Clemencic
     - Added work-around for bug ROOT-5623.
       https://sft.its.cern.ch/jira/browse/ROOT-5623

    ! 2013-10-24 - Marco Clemencic
     - Use ROOT6WorkAroundEnabled for bug ROOT-5581.
       https://sft.its.cern.ch/jira/browse/ROOT-5581

    ! 2013-09-30 - Marco Clemencic
     - Switched from ROOT.py to cppyy.
       See https://sft.its.cern.ch/jira/browse/ROOT-154

    ! 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-03 - Marco Clemencic
     - Removed explicit link against Reflex from cmt/requirements.
     - Removed references to Reflex from comments.

    ! 2013-06-13 - Marco Clemencic
     - Replaced PyCintex with ROOT.
       We still try to import PyCintex because it's the only way to enable Cintex
       (see <https://sft.its.cern.ch/jira/browse/ROOT-3623>, but it does not work
       in Python).

    ============================= GaudiPython v12r7 ==============================
    ! 2013-09-25 - Marco Clemencic
     - Enforce LC_ALL=C in the GaudiPython module.

    ! 2013-07-19 - Marco Clemencic
     - Replaced "#ifdef linux" with "#ifdef __linux" (more reliable: Rolf Seuster
       reported that "linux" is not defined when using C++11).

    ============================= GaudiPython v12r6 ==============================
    ! 2013-04-22 - Marco Clemencic
     - Fixed Clang warnings.

    ============================= GaudiPython v12r5 ==============================
    ! 2013-01-24 - Marco Clemencic
     - Added dictionaries for HistoStrings (GaudiUtils).

    ============================= GaudiPython v12r4 ==============================
    ! 2012-10-26 - Marco Clemencic
     - Stop execution (in AppMgr.run()) if the return code of the application is not
       0 (success) after configure or initialize.

    ============================= GaudiPython v12r3 ==============================
    ! 2012-09-13 - Marco Clemencic
     - Fixed compilation warnings.

    ! 2012-07-25 - Nathalie Rauschmayr
     - Patch #5471: fixes to be able to run LHCb applications via GaudiParallel.
       Bindings.py: runSelectedEvents(): first parameter in gbl.GenericAddress must
       be 0x02 instead of 0x202 (POOL-->ROOT)

    ============================= GaudiPython v12r2 ==============================
    ! 2012-06-08 - Marco Clemencic
     - Added CMake configuration files.

    ! 2012-05-30 - Vanya Belyaev
     - Patch #5379: Improvements for GaudiAlgs.py
       - equip python-algorithms with  "get" and "exist" that are
         coherent with C++ (respect RootInTES flag)
          - AlgDecorator: add get_ and exist_ methods
          - GaudiAlgs.py: add get_ and exist_ methods
       - TupleDecorator
         add long long and unsigned long long fields

    ============================= GaudiPython v12r1 ==============================
    ! 2012-02-24 - Vanya Belyaev
     - Patch #5235: ntuples in (Gaudi)Python
       - TupleDecorators:
           remove some extra classes
           add Gaudi::Time

    ============================= GaudiPython v12r0 ==============================
    ! 2011-12-14 - Marco Clemencic
     - Fixed bug #88448: HistoFile does not know TFile
       Fixed as suggested in the bug report.

    ! 2011-12-12 - Marco Clemencic
     - First prototype of generic/extensible persistency configuration.
       - GaudiPython.Persistency: (new) module hosting the persistency helpers
       - GaudiPython.Bindings: modified iNTuleSvc and iEventSelector to use the new
         helpers

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

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

    ! 2011-04-27 - Charles Leggett
     - add explicit import=Reflex statements to requirements for new CMT
     M       cmt/requirements

    ============================= GaudiPython v11r0 ==============================
    ! 2011-01-19 - Markus Frank
     - Fixes for bug #77109.  Remove calls to DataObject::serialize.
       (patch #4613)

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

    ! 2010-12-16 - Sebastien Binet
     - Patch #4074: migrate GaudiPython.Parallel to multiprocessing
       Modified GaudiPython.Parallel to use 'multiprocessing' instead of
       'processing'.

    ! 2010-12-01 - Charles Leggett
     - Added a reference to the Gaudi C++ namespace in AppMgr, so that it is still
       available during "atexit".
       (included in the attachment of bug #75834)

    ============================= GaudiPython v10r11 =============================
    ! 2010-08-24 - Marco Clemencic
     - Fixed a compilation problem on mac106.

    ! 2010-07-29 - Marco Clemencic
     - Fixed a compilation warning with Python 2.6.5 and gcc 4.3.

    ============================= GaudiPython v10r10 =============================
    ! 2010-06-21 - Vanya Belyaev
     - Patch #4207: Allow creation of new C++ algorithms from GaudiPython

    ! 2010-06-17 - Marco Clemencic
     - Fixed a bug in patch #3311 (wild import of GaudiPython.HistoUtils broken).

    ! 2010-05-27 - Vanya Belyaev
     - Patch #4044: Fix for bug #66397 and task #13911
       Now all python algorithms of "GaudiAlgo"-type are protected from deletion in
       python by copy them into local storage of application manager...
       As a result, one resurrect the possibility for very flexible manipulations
       with GaudiPython algorithms.

    ! 2010-05-20 - Vanya Belyaev
     - Patch #3677: Iteration over map-like containers in python
       Proper pythonization of the class Gaudi::Utils::MapBase.

    ! 2010-05-11 - Marco Clemencic
     - Fixed bug #64571: Python 2.6 warnings
       Removed extra arguments in the call to "object.__new__".

    ! 2010-04-26 - Marco Clemencic
     - Re-introduce the usage of the exit handler to finalize the application when
       exiting from Python.
       A special hack has been introduced to ensure that the ROOT exit handler is
       called after the Gaudi one.

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

    ! 2010-04-16 - Vanya Belyaev
     - Patch #3989: Tiny (but very important) fix for Gaudi::RangeBase_
       Added dictionary for Gaudi::RangeBase_.

    ============================= GaudiPython v10r8 ==============================
    ! 2010-01-29 - Marco Clemencic
     - Fixed icc remark #1599: declaration hides variable
     - Fixed icc warning #191: type qualifier is meaningless on cast type

    ! 2010-01-28 - Marco Clemencic
     - Fixed icc remark #424: extra ";" ignored
     - Fixed icc remark #522: function "X" redeclared "inline" after being called
     - Fixed icc remark #177: X declared but never referenced

    ============================= GaudiPython v10r7 ==============================
    ! 2010-01-14 - Juan Palacios
     - Patch #3652: Bug fixes for GaudiPython HistoUtils.py and TupleUtils.py
       - Fix order of services initialization and release.

    ! 2010-01-11 - Vanya Belyaev
     - Patch #3588: Fix a typo (&logic) in GaudiPython.GaudiAlgs module for "Histo()" method
       - python/GaudiPython/GaudiAlgs.py
         fix the typo (and invalid logic) for "Histos()" method

    ! 2009-12-15 - Charles Leggett
     - Fixed bug #60502: typo in GaudiPython/Bindings.py

    ============================= GaudiPython v10r6 ==============================
    ! 2009-10-26 - Marco Clemencic
     - Removed some dictionaries of basic types that conflict with the CINT ones.

    ================ GaudiPython v10r5 ====================================
    ! 2009-10-15 - Marco Clemencic
     - Fixed a compilation (visibility) problem on gcc43 with GAUDI_V21 tag enabled
       introduced by patch #3328.

    ! 2009-10-13 - Marco Clemencic
     - Fixed a compilation problem on gcc34 platforms caused by patch #3328.

    ! 2009-10-12 - Marco Clemencic
     - Normalization of white-spaces in Python files.
       (using http://svn.python.org/projects/python/tags/r254/Tools/scripts/reindent.py)

    ! 2009-10-12 - Vanya Belyaev
     - Patch #3328: iDataSvc.findObject
       - GauidPython::Helper
         1. add method findobject (wrapper for IDataProviderSvc::findObject)
         to get object from Transient store without trying to load or
         use on-demand actions
         2. add method getobject with allows total control over access
         object in Transient Store : retrieve versus find, and allows
         temporarily disable on-demand actions. Thus one can allow loading
         the object from tape, but switch off on-demand actions
       - GaudiPyton/Bindings.py
         1. iDataSvc      : add methods findObject and getObject
         2. PropertyEntry : for properties with missing dictionaries
            (essentially,  missing "value" attribute) use the
            "toString"-result as self._value.
     - Patch #2978: GaudiKernel/StringKey.h
       Added dictionary and support in Pythonizations.py and Bindings.py

    ! 2009-10-09 - Eoin Smith
     - Patch #3297: Support for GaudiPython Parallel in gaudirun.py
       Added scatter-gather parallel model to python/GaudiPython/Parallel.py
       Consists of 1reader-Nworkers-1writer, for event-parallel execution using
       Python processing package, forking and unix queues/pipes.
       Execute gaudirun.py with flag --parallel=N (N>=1)

       Two new methods in python/GaudiPython/Bindings.py
       iDataSvc().getList() returns a list of all paths present on a local
       file.  For example, all local TES paths for one event.  Links to external
       files are ignored (by checking the address() property)
       iDataSvc().getHistoNames() returns a list of all paths in a Transient Store
       without checking File ID

       Modified src/Lib/TESSerializer.cpp : method dumpBuffer now takes a
       TBufferFile pointer as an argument.  Previously, dumpBuffer was creating
       its own new TBufferFiles for each call, which led to an error where new
       calls reset the buffer of previous calls. loadBuffer also modified to
       use data directly from TBufferFile to rebuild Transient Event Store
       (instead of intermediate buffer)

       Modified GaudiPython/TESSerializer.h to reflect these changes.

    ! 2009-10-09 - Marco Clemencic
     - Disabled the dictionary for GaudiAlg::HistoBinEdges (a typedef to vector<double>)
       because it triggers the presence of vector<double> in the rootmap file, which
       produces a warning in ROOT > 5.24.00a.

    ! 2009-10-08 - Vanya Belyaev
     - Patch #3311: Add ASCII dump for 1D-profile histograms
       Extension of patch #3261 to 1D-profile histograms
     - Patch #3223: Add some more "Extended" property types to Gaudi
       Fix to use the new properties.

    ! 2009-10-07 - Vanya Belyaev
     - Patch #3261: Utility for ASCII dump of 1D-histograms
       Added the bindings for function Gaudi::Utils::Histo::histoDump.

    ! 2009-10-02 - Vanya Belyaev
     - Patch #3157: Remove redundant duplicated  maps from GaudiHistos/GaudiTuples
       Adapted HistoDecorator to the changes in GaudiHistos.

    ! 2009-10-02 - Marco Clemencic
     - Fixed bug #56358: Algorithms crashing in finalize are finalized a second time
       - Added a protection to avoid that AppMgr.exit() can be called twice.
       - Removed the "atexit" handler and replaced it with a specialized destructor
         for AppMgr. Note that it may not be called in case of circular dependencies
         between Python objects, in which case AppMgr.exit() have to be called
         explicitely.

    ================ GaudiPython v10r4 ====================================
    ! 2009-07-30 - Marco Clemencic
     - Fixed some doxygen warnings.

    ! 2009-07-23 - Pere Mato
     - Patch #3152: Adapting GaudiPython to new null pointer semantic of ROOT 5.22.00c
       The new patched version of ROOT 5.22.00c returns 'typed null pointers' instead
       of None. Form the point of view of python this is different than None and
       therefore tries to call _repr_ when ever the object is evaluated interactively.
       For this reason we need to protect the generic implementation of __repr__ for
       DataObject and ContainedObject.
       At the same time tried to load the necessary ostream and stringstream from
       the beginning avoiding some spurious problems (fixes bug #28426).

    ! 2009-07-22 - Vanya Belyaev
     - Fixed bug #53514: The local symbol "HID" is not defined.

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

    ! 2009-07-17 - Juan Palacios
     - Patch #3091: Class for easy saving of GaudiPython histograms
       Add HistoFile, a class for easy writing of ROOT and AIDA histograms
       to a file.

    ! 2009-07-16 - Vanya Belyaev
     - Patch #3134:
       - Some polishing of GaudiPython.GaudiAlgs module and related modules
       - More handles for interactive algorithm inspection (GaudiPython)
       Detailed description in GaudiAlg/doc/patch_3134.html

    ================ GaudiPython v10r3 ====================================
    ! 2009-07-03 - Marco Clemencic
     - Removed explicit manipulation of the PYTHONPATH (obsolete).

    ================ GaudiPython v10r2 ====================================
    ! 2009-06-29 - Marco Clemencic
     - Removed the special compile time flag for the dictionary (problem fixed in
       ROOT 5.22.00c)

    ! 2009-06-26 - Marco Clemencic
     - Fixed bug #51026: Typo in GaudiPython/HistoUtils

    ! 2009-06-22 - Marco Clemencic
     - Added a compile time flag for the dictionary to hide warnings.

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

    ================ GaudiPython v10r1 ====================================
    ! 2009-05-06 - Charles Leggett
     - Patch #2977: catch exception in GaudiPython Bindings.py
       Added a try-catch block around the call to queryInterface in
       InterfaceCast.__call__ to print a meaningful error message.

    ================ GaudiPython v10r0 ====================================
    ! 2009-04-08 - Pere Mato
     - Patch #2958: New runSelectedEvents() method in GaudiPython.AppMgr
       Added new method runSelectedEvents(self, pfn, events) on AppMgr class
       This method allows to execute the event loop on a specific event(s) for a given input (POOL)
       file (physical file name).
       It requires new version of GaudiUtils including the dictionary for IFileCatalog interface

    ! 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-04-06 - Marco Clemencic, Vanya Belyaev
     - Patch #2931: Added few classes/function to GaudiPython dictionaries
       for interactive histogram manipulation.

    ! 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).
       - Added a hack to force the export of the symbols of AIDA interfaces to allow
         the dynamic_cast (see GaudiSvc release.notes).

    ! 2009-01-22 - Marco Clemencic
     - Adapted to the new IInterface functionalities (see GaudiKernel release.notes)
     - Replaced the usage of TimePoint with Gaudi::Time.

    ================ GaudiPython v9r4 ====================================
    ! 2008-12-16 - Marco Clemencic
     - Fixed bug #45392: gaudrun.py returns status code 0 even if the application
                         manager fails
       Made GaudiPython.AppMgr correctly return the status after calls to run, exit,
       etc.

    ================ GaudiPython v9r3 ====================================
    ! 2008-11-13 - Pere Mato
     - Fixed the dependency for the serialization functions.

    ! 2008-10-31 - Vanya Belyaev
     - Fixed a typo in Bindings.iDataSvc (it was "self.dict" instead of
       "self.__dict__").

    ! 2008-10-30 - Marco Clemencic
     - Modified AppMgr to ensure that GaudiKernel.Configurable.applyConfigurableUsers()
       is called before configuring the application (needed for GaudiPython scripts).

    ! 2008-10-29 - Charles Leggett
     - Fixed bug #38442. Support for alternative ApplicationMgr in GaudiPython

    ! 2008-10-27 - Marco Clemencic
     - Fixed warnings reported by gcc 4.3:
       - type qualifiers ignored on function return type
       - deprecated conversion from string constant to `char*'
       - declaration ‘class AIDA::...’ does not declare anything

    ! 2008-10-16 - Pere Mato
     - Added support for serialization/deserialization of TES

    ! 2008-10-16 - Marco Clemencic
     - Excluded a few problematic mothods from the dictionaries (generated only with
       ROOT >= 5.21 and gccxml >= 0.9.0).
     - Minor changes in dict/kernel.h to avoid errors with gccxml 0.9.0.

    ! 2008-10-09 - Vanya Belyaev
     - Patch #2058. Extensions for AIDA::TProfile1D
        * GaudiPython/HistoDecorator.h
        * src/Lib/HistoDecorator.cpp
       add the default parameters to 1D-profile "decorators".

    ! 2008-10-01 - Vanya Belyaev
     - Patch #1938: Draw the native AIDA histograms through their internal ROOT
                    representation
       "Draw" and "plot" member functions are added to the AIDA histogram interfaces
       at import time. They are implemented forwarding the call to the internal
       ROOT instances.

    ! 2008-09-22 - Marco Clemencic
     - Removed a couple of warnings in PyROOTPickle.cpp when using ROOT >= 5.19
     - Fixed a typo in selection_kernel.xml.

    ================ GaudiPython v9r2 ====================================
    ! 2008-07-17 - Marco Clemencic
     - Fixed a mistake in the spelling of a function (thanks to Vanya for reporting
       it).
     - Added sys* methods to GaudiPython.Bindings.iAlgorithm.
     - Added dictionary for IGenericTool.

    ! 2008-07-15 - Marco Clemencic
     - Fixed bug #38885: no execute method for algorithms in GaudiPython
       Added the method iAlgorithm.execute, which disappeared by mistake.
     - Fixed bug #38882: AppMgr.addAlgorithm does not work correctly after
                         initialization
       Made addAlgorithm and setAlgorithms call sysInitialize and sysStart instead
       of initialize and start.
     - Added start and stop methods to Python algorithms.

    ! 2008-07-11 - Charles Leggett
     - requirements: tweak test_GPyTest_rootmap macro to work with GAUDI_ATLAS tag

    ! 2008-06-25 - Marco Clemencic
     - Fixed GaudiPython/Bindings.py to work with the HEAD version of ROOT too.

    ================ GaudiPython v9r1 ====================================
    ! 2008-06-25 - Marco Clemencic
     - Fixed bug #38194: gaudirun.py expands too many environment variables
       Expand the environment variables in the strings before passing them to the
       C++ services (ApplicationMgr, MessageSvc and JobOptionsSvc).

    ================ GaudiPython v9r0 ====================================
    ! 2008-06-02 - Pere Mato
     - Patch #1866. Enable pickle support in GaudiPython.
       Added support for pickling objects from Wim Lavrijsen. Code already added to
       ROOT SVN trunk but not used by this version of Gaudi.

    ! 2008-06-02 - Marco Clemencic
     - Task #5809. Extension to Gaudi Application state machine.
       - Adapted GaudiPython.Bindings according to the changes in the state machine.

    ! 2008-04-24 - Stefan Roiser
     - Fixed compilation problem on MacOS Leopard.

    ================ GaudiPython v8r19 ====================================
    ! 2008-02-27 - Marco Clemencic
     - Hack to avoid a conflict in the way Configurables are used in Athena and
       Gaudi.  In GaudiPython they are used in the AppMgr constructor, while in
       Athena they are used in a different moment (and not even all of them are
       needed).
       The conflict is resolved by using a function to return the needed
       configurables, implemented to return the keys of allConfigurables for Gaudi
       and and empty list for Athena.

    ! 2008-01-29 - Marco Clemencic
     - Fixed Bug #32854. (MessageSvc options ignored in Python)
       Modified the constructor of GaudiPython.AppMgr to set explicitly the
       properties of MessageSvc just after the ApplicationMgr configuration.
       (It does not work for MessageSvc.loggedStreams because the update handler is
       missing)
     - Lock the configurables setting Configurable.__configurationLocked (if it
       exists) after the configuration of AppMgr, to avoid that users try to change
       the configuration when it is too late.

    ================ GaudiPython v8r18 ====================================
    ! 2008-01-18 - Marco Clemencic
     - Fixed a problem with python options: the ApplicationMgr output level was not
       set.

    ! 2008-01-17 - Pere Mato
     - Fixed macro for  test_GPyTestDict needed after change in the reflex test dictionary pattern

    ! 2008-01-16 - Wim Lavrijsen
     - Fixed a bug in Pythonization._loadDict. Missing "import sys".

    ! 2008-01-15 - Wim Lavrijsen
     - AthenaCommon does not have Configurable.PropertyReference and this must be
       considered in GaudiPython.Bindings.

    ! 2008-01-11 - Marco Clemencic
     - Implemented correct handling of late-bound options.

    ! 2007-12-18 - Marco Clemencic
     - Fixed a compilation bug with Python 2.5 (backward compatible).

    ! 2007-11-30 - Marco Clemencic
     - Fix for bug #31677.
       Move GaudiHandles.py from GaudiPython to GaudiKernel. Added a fake module for
       backward compatibility.

    ! 2007-11-30 - Pere Mato
     - Fix for bug #31819: Reduce GaudiPython dictionaries to strict minimum.
       Removed common STL classes (9 in total) from the rootmap file using
       the attribute rootmap="false" in the selection file.

    ! 2007-11-28 - Paolo Calafiura & Sebastien Binet
     - patch #1550.
       Fix to compile with Python 2.5 (backward compatible).

    ================ GaudiPython v8r17 ====================================
    ! 2007-11-13 - Marco Clemencic
     - Remove the dependency of GaudiPython/__init__.py from Gaudi.Configuration.
     - Use GaudiKernel.Proxy to get the correct version of Configurable.

    ! 2007-10-29 - Pere Mato
     - Changed the structure of the package.
       decribed at:  https://twiki.cern.ch/twiki/bin/viewfile/LHCb/GaudiPython?rev=1;filename=GaudiPython_20071017.pdf

    ! 2007-10-24 - Marco Clemencic
     - Fixed a problem in the generation of rootmap files for GaudiPython test
       dictionaries (target "tests").

    =================== v8r16 ==================================
    ! 2007-10-04 - Wim Lavrijsen
     - patch #1404.
       - Adding a couple of functions to GaudiHandles and GaudiHandleArrays to
         support pickling.

    ! 2007-09-27 - Sebastien Binet
     - patch #1158. (slightly modified by Marco Clemencic)
       - Minor changes to GaudiHandles.py to improve memory footprint

    ! 2007-08-07 - Vanya Belyaev
     - patch 1265.
       - Add new class GaudiPython::TupleToolDecorator for "decorations"
         of ITupleTool interface.
       - Change the default CLID for event tag collections from
         RowWiseTuple to ColumnWiseTuple. This change has been done in
         C++ long time ago, but have not been propagated to python.
       - Improve doxygen comments.
       - Add dictionaries for ITupleTool and IHistoTool.
       - New module TupleUtils.py: allow manipulation of tuples from
         outside algorithms or tools.
     - patch 1263.
       - Allow "smart and friendly" manipulation of AIDA::IProfile[1D,2D]
         objects from Python.
       - Added few dictionaries and few new helpers.
       - Improvements in iProperty: raise AttributeError in __getattr__
         and __setattr__ if the property does not exist (instead of the
         internal C++ exception).
       - Improved the documentation strings of few functions.
       - Improvements to GaudiAlgo, HistoAlgo and TupleAlgo as for
         iProperty.
       - Added module HistoUtils containing "script-friendly" functions
         to manipulate histograms.

    ! 2007-07-16 - Hubert Degaudenzi
     - remove the explicit Dlls options from gaudimodule.py (not needed
       any more)

    =================== v8r15 ==================================
    ! 2007-05-10 - Ivan Belyaev
     - Patch #1126. dict/selection_kernel.xml update the exclusion list
       and remove unnesessaryclasses, picked up by internal typedefs, in
       particular:
    	"std::unary_function<std::pair<,Tuples::>"
    	"std::unary_function<std::pair<,NTuple::>"
    	"std::unary_function<std::pair<,AIDA::>"

    ! 2007-04-27 - Mattias Ellert
     - patch #24974. fixed test building.

    ! 2007-04-05 - Martin Woudstra
     - Patch #1103. The attached 2 patches (one for GaudiPython and one
       for GaudiKernel) contain the changes needed to support
       ToolHandleArray's (a 'vector' of ToolHandles). This is a new
       feature, and is already in use in ATLAS. In addition to the
       ToolHandleArray and its associated base classes, there is the
       GaudiHandleArrayProperty, and an update to genconf to support it

    ! 2007-04-04 - Pere Mato
     - added setOwnership() calls in addAlg() and removeAlg() to avoid
       segfault at the end of the execution due to double deletion of
       algorithms

    ! 2007-03-29 - Vanya BELYAEV
      Patch #1106. possible solution for Savannah bug #25109 and patch
      #1024 (wrongly closed)
     - dict/selection_kernel.xml
        add the dictionary for GaudiHandleProperty class
     - python/gaudimodule.xml
        a) PropertyEntry
          1) reimplement constructor in a way to
          set the data member _value to be valid python type for
          LHCbproperties and to keep the previousl behaviour for ATLAS
          GaudiHandleProperty
          2) add local data mamber PropertyEntry._property and
           function PropertyEntry.property() to access to the original
           property. (Useful to perform the second try, if the
           failure occurs in constructor)
        b) minor modification of iProperty.__getattr__
           to avoid the sad printout of numerous warning messages:
         "Warning in <TClass::TClass>: no dictionary for class
         vector<pair<double,double> > is available "..

    =================== v8r14 ==================================
    ! 2007-02-15 - Marco Clemencic
     Patch #1032:
     - Extended the python interface of IUpdateManagerSvc using the helper class
       IUpdateManagerSvc.PythonHelper

    ! 2007-02-13 - Pere Mato
     - cmt/requirements: moved apply_patter linker_library to the public section to allow packages to linker with
                         GaudiPythonLib linker library. Request from Vanya.

    ! 2007-01-26 - Vanya BELYAEV
     Patch #989:
     - GaudiPython/TupleDecorator.h, src/Lib/TupleDecorator.cpp
         use new typedefs from GaudiKernel instead of local types
     - dict/kernel.h, dict/selection_kernel.h
         add the new class Gaudi::Aida2ROOT
     - python/GaudiAlgs.py
         add the default None argument for method "histoSvc" to be coherent
         with documentation and "evtSvc"/"detSvc" methods

           # get histogram data service iself
           svc = self.histoSvc()
           # get the data
           histo = self.histoSvc('/stat/Calo/1')
     - python/gaudimodule.py
        add 2 methods for HistogramService:

           # return the native ROOT representation of the
           # underlying histogram
           hsvc.getAsROOT('/stat/Calo/1')
           # return the histogram (the same as hsvc['/stat/Calo/1']
           hsvc.getAsAIDA('/stat/Calo/1')

    ! 2007-01-27 - Pere Mato
     - Applied patch #987, new GaudiPython module...

    ! 2007-01-26 - Pere Mato
     - Applied patch #988: new class PropertyEntry in gaudimodule

    =================== v8r13 ==================================
    ! 2006-12-18 - Pere Maro
     - Added default functions for endRun() and beginRun() in
       gaudimodule.py and GaudiAlg.py

    ! 2006-11-26 - Vanya BELYAEV - patch #923
     - GaudiPython/TupleDecorator.h
       src/Lib/TupleDecorator.cpp
        add few method for easy filing of N-tupel with
        few basic objects, like 3D/4D vectors, points, SVector
        and SMatrix
     - python/GaudiAlgs.py
        improve the both the on-line (Python) and off-line (Doxygen)
        documentation strings

    =================== v8r12 ==================================
    ! 2006-11-09 - Pere Mato
     - python/gaudimodule.py
         Added __del__ to PyAlgorithm to remove it from the list of known algorithms of Gaudi.
         This change allows to reload modules containing new versions of algorithms.
         Problem reported by Ulrich Kerzel

    ! 2006-11-08 - Vanya BELYAEV ibelyaev@physics.syr.edu
     - python/gaudimodule.py
          fix a major problem with AppMgr::config method:
           - the lists of DLLs&ExtSvc must be APPENDED (and not assigned)

         In addition some decoration:
          1) add new class iJobOptSvc for easy handling of properties
                                                  (import from Bender)
          2) add new method ApMgr::optSvc - accessor to iJobOptSvc

    =================== v8r11 ==================================
    ! 2006-11-03 - Pere Mato
     - Corrected problem with properties having as value a Python variable
       name. The error was that eval() was evaluating the value of
       variables defined locally or globaly. Problem detected by Thomas
       with variable ROOT

    ! 2006-11-02 - Pere Mato
     - Adapted config() to deal with new JobOptions that are always
       strings. Detected by Thomas when running Panoramix from Pyhton

    ! 2006-10-24 - Pere Mato
     - Add default initialize() method in PyAlgorithm.
       This fixes bug #20957, GaudiPython segfaults if an Python...

    =================== v8r10 ==================================
    ! 2006-10-12 - Vanya Belyaev
     - Patch #878. python/GaudiAlg.py: restructurize some internal
       function to be available for external usage (e.g. from Bender)

    ! 2006-10-06 - Pere Mato
     - make visible some of the functions available in ROOT.py from
       gaudimodule

    =================== v8r9 ===================================
    ! 2006-09-13 - Charles Leggett & Hubert Degaudenzi
     -fixed StatusCode Check.

    =================== v8r8 ===================================

    ! 2006-09-01 - Ivan Belyaev
     - Add protector accessor to the GaudiPyhton::PyAlg in order to be
       able to inherit from the class.

    =================== v8r7 ===================================
    ! 2006-06-06 - Ivan Belyaev & Alexander Mazurov
     - inserted modification for the new property parser/compiler.

    =================== v8r6 ===================================
    ! 2006-05-24 - Pere Mato
     - Added changes from Radu Stoica:
     - More protections in iDataService
     - Introduction of CallbackStreamBuf to be implemented from Python to
        catch stream output.

    =================== v8r5 ===================================
    ! 2006-05-04 - Hubert Degaudenzi
     - Clean up legacy lines of codes.

    =================== v8r4 ===================================
    ! 2006-03-28 - Hubert Degaudenzi
     - commented out the generation of the dictionary for vector<double>
       which is already present in ROOT

    ! 2006-03-17 - Pere Mato
     - Changed TootSvc.create() to input requested interface
     - Dictionaries do not need to be loaded. Done with ROOT autoload

    =================== v8r3 ===================================
    ! 2006-01-26 - Pere Mato
     - moved classes in dictionary to GaudiKernel dictionary
     - gaudiconf.py: introduced the use of __new__ to avoid duplication of
       configurables
     - gaudimodule.py: added iteration catabilities to ObjectContainedBase
       (all KeyedContainers)
     - tests: updated to use KeyedContained instead of ObjectVector

    ! 2006-01-23 - Hubert Degaudenzi
     - added IUpdateManagerSvc in the dictionary generation.

    ! 2006-01-23 - Hubert Degaudenzi
     - inserted workaround to match the correct naming of dictionaries on Linux

    ! 2006-01-19 - Pere Mato
     - adapted to use genreflex (Reflex from ROOT)

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

    =================== v8r2 ===================================
    ! 2006-01-06 - Pere Mato
     - Added GaudiPython in the PATH. Needed to load the initial dictionary

    ! 2005-12-01 - Hubert Degaudenzi
     - Commented out the AIDATupleSvc.

    ! 2005-12-01 - Pere Mato
     - Changed requirements to be able to put temporary libraries
       ahead in the LD_LIBRARY_PATH

    ! 2005-11-25 - Pere Mato
     - Added PyCintex.py as a temporary basis
     - Changed the order when loading the dictionaries
     - Minor changes to make python GaudiExamples to work

    =================== v8r1 ===================================
    ! 2005-11-16 - Pere Mato
     - Removed GaudiPython.Interface classes from the generated dictionary. They are not
       needed with PyROOT implementation (smalled dictionaries)

    =================== v8r0 ===================================
    ! 2005-10-27 - Pere Mato
     - Adapted to generate Reflex dictionaries and use PyROOT instead of PyLCGDict
     - Improved unit test test_basics.py
     - Added support for long types (long long, long double) as properties

    =================== v7r0 ===================================
    ! 2005-08-17 - Vanya BELYAEV
     - modifications for updated GaudiAlg to incorporate
      very attractive feature: "universal" (numeric or
      alphanumeric) histogram/ntuple identifier, introduced
      by Chris into GaudiAlg

      Now major methods of Python's HistoAlgo and Tuple Algo
      from now could accept both numerical identifier,
      string identifier or "universal identifier:

      e.g. for N-Tuples :

        t1 = self.nTuple( 1             , 'My first  NTuple'     )
        t1 = self.nTuple( 'BLAH'        , 'My second NTuple'     )
        t1 = self.nTuple( TID ( 16 )    , 'My third NTuple # 16' )
        t1 = self.nTuple( TID ( 'XXX' ) , 'My fourth NTuple '    )
        t1 = self.nTuple( 'SUBDIR/AA'   , 'My fifth NTuple in subdirectory')

      similar for (1D,2D,3D)-histograms:

        self.plot1D( mass ,          ' This is 1st histogram ' , 1 , 10 )
        self.plot1D( mass , 2      , ' This is 2nd histogram ' , 1 , 10 )
        self.plot1D( mass , 'MASS' , ' This is 3rd histogram ' , 1 , 10 )
        self.plot1D( mass , 'subdir/MASS' , ' This is 4th histogram ' , 1 , 10 )
        self.plot1D( mass , HID( 44)  , ' This is 5th histogram ' , 1 , 10 )
        self.plot1D( mass , HID('M')  , ' This is 6th histogram ' , 1 , 10 )

      for profiles, one need to use HID explicitly:

         self.profile1D ( x , y ,                  ' title1 ' , 0 , 10 )
         self.profile1D ( x , y , HID(25)        , ' title2 ' , 0 , 10 )
         self.profile1D ( x , y , HID('x%y')     , ' title3 ' , 0 , 10 )
         self.profile1D ( x , y , HID('dir/x%y') , ' title4 ' , 0 , 10 )

    ! 2005-08-07 - Vanya BELYAEV
     - few major (*BACKWARD COMPATIBLE*) modifications to simplify
       the interactive analysis. Namely the useful base classes from
       GaudiAlg package are imported into the Python.
       Also major reshuffling of existing codes is performed to allow
       the reuse of code outside the GaudiPython package (e.g.
       in the context of Bender or Panoramix projects) without
       multiple explicit code duplicated (as it is now... :-((( )

       From now package builds also linker library GaudiPythonLib
       The dictionary is renamed to GaudiPythonDict (to avoid the
       masking of GaudiKernelDict built by GaudiKernel package)
       As a result the package now builds 3 library:
         1) component library  GaudiPython
         2) linker library     GaudiPythonLib
         3) dictionary library GaudiPythonDict

       New module GaudiAlgs.py is added into $GAUDIPYTHONROOT/python
       directory. This module contains essentially the base classes
       GaudiAlgo, HistoAlgo and TupleAlgo and the extensive documentations

       GaudiPython/kernel.h and GaudiPython/selection_kernel.xml
       now contains *ALL* abstract interfaces from GaudiKernel and
       GaudiAlgs packages

       $GAUDIPYTHON/python/gaudimodule.py file gets "atexit" function,
       making the exit statement optional (it is VERY convenient
       for scripts which is supposed to work both interactively and
       "as batch")

         New files:
         ==========
         $GAUDIPYTHONROOT/python/GaudiAlgs.py
         $GAUDIPYTHONROOT/GaudiPython/GaudiPython.h
         $GAUDIPYTHONROOT/GaudiPython/HistoDecorator.h
         $GAUDIPYTHONROOT/GaudiPython/Interface.h
         $GAUDIPYTHONROOT/GaudiPython/Printer.h
         $GAUDIPYTHONROOT/GaudiPython/TupleDecorator.h
         $GAUDIPYTHONROOT/GaudiPython/Vector.h
         $GAUDIPYTHONROOT/src/Lib/Algorithm.cpp
         $GAUIDIPYTHOROOT/src/Lib/AlgDecorators.cpp
         $GAUDIPYTHONROOT/src/Lib/HistoDecorator.cpp
         $GAUDIPYTHONROOT/src/Lib/TupleDecorator.cpp

    ! 20050804 - Pere Mato
     - gaudiconf.py: added new module to support configuration using Python
     - Gaudi.py: main top level gaudi script (still quite primitive)
     - genconf.py: the script to generate the "shadow-classes" from the C++ libraries
     - gaudimodule.py: added optional argument in AppMgr.__init__ to set ApplicationMgr
       own properties "before" configuration
       Added conversion to string of property values of non Python primitives
       Modified getComponentProperties() to handle the GaudiSvc case

    =================== v6r13 ===================================
     - gaudimodule.py: removed 'GaudiDb' from the list of DLLs
     - getComponentProperties(): changed the order of initialization of AppMgr.

    =================== v6r12 ===================================
     - GaudiPython/Algorithm.h: changed the inheritance of PyAlgorithm to inherit directly from Algorithm.
       This should solve [bug #7713] overview: Reassigned item: Problems with Gaudi\\\\\\\\\\\\\\\'s PyAlgorithm

    =================== v6r11 ===================================
     - getClass(): added new method to get a C++ class and eventually load the needed
                   dictionary
     - AppMgr.ntuplesvc(): added a line to ntuplesvc into the list of ExtSvc if not already there

    =================== v6r10 ===================================
     - AppMgr.config(): make sure that the first property set is "Dlls" (problem reported by Vanya)
     - iDataSvc: added 'name' in __init__ for the case that the real object is not yet instantiated
     - Tool support: Appmgr.toolsvc() and improved Appmgr.tool()
       It is now possible to do access existing tools, or create new instances.
         gaudi.toolsvc().create('MyTool')
         gaudi.tool('Alg.Tool.SubTool').MyProperty = value
     - Added extra Helper functions toArray() to convert pointers (int*, float*,...) to sequenceable
       Python objects (needed for LHCb DAQBuffer)
     - Added also toXXXArray() functions for unknown pointer types (void*) like "raw_int", "l1_int"
         For example in the case of RawBuffer:
           rb  = evt['DAQ/RawBuffer']
           raw = gaudimodule.toIntArray( rb.buffer(), rb.currentSize() )
           for i in raw :  print i

    =================== v6r9 ===================================
     - Implementation of AppMgr.config() following the ideas from Vanya
     - Documentation string for most of the classes and methods
     - Implementation of AppMgr.tool()
     - Implementation of AppMgr.setAlgorithms()
     - Implementation of iNTupleSvc class and AppMgr.ntuplesvc()
     - Implementation of iNtupleSvc.defineOutput( {}, type='ROOT' )

    Not Done yet....
     - Check that EvtSel.open() does not work without "stream=..."

    ! 20041004 - Pere Mato
     - gaudimodule.py: changed AppMgr.__init__() to avoid changing OutputLevel back to default (3)

    =================== v6r8 ===================================
    ! 20040910 - Pere Mato
     - gaudimodule.py: reworked AppMgr.run() to avoid calling reinitialize(). This is currently a problem because
       resets the event stream to the beginning each time. Problem reported by Vanya.

    ! 20040908 - Wim Lavrijsen
     - gaudimodule.py: added protection when algorithm/service does not exists and no properties are
                       yet defined.

    =================== v6r7 ===================================
    ! 20040726 - Pere Mato
     - Moved method AppMgr.loaddict() as module function
     - Added iHistogramSvc.__getitem__() to return any type of histogram (suggested by Vanya)

    =================== v6r6 ===================================
    ! 20040706 - Pere Mato
     - requirements: adapted to use new LCGCMT interface packages
     - renamed type IID to InterfaceID

    ! 20040622 - Wim Lavrijsen
     - Small correction on String properties to add " " to take into account blanks

    =================== v6r5 ===================================
    ! 20040610 - Wim Lavrijsen
     - Added more instances of SimpleProperty<T> to cover all cases

    ! 20040524 - Wim Lavrijsen
     - Small corrections in in iProperty

    =================== v6r4 ===================================
    ! 20040315 - Pere Mato
     - Change the initialization of AppMgr. Initialize() is not called at AppMgr.__init__() and
       it done later at the AppMgr.run() method
     - Alias for common AppMgr methods
       evtSvc  = evtsvc
       histSvc = histsvc
       evtSel  = evtsel
       detSvc  = detsvc
       partSvc = partsvc

    =================== v6r3 ===================================
    ! 20040227 - Pere Mato
     - Added a the function getComponentProperties(module) to obtain the properties of all
       component classes available in a given component library (module)

    =================== v6r2 ===================================
    ! 20040216 - Pere Mato
     - Added a number of new functions to AppMgr class to simplify the end-user interaction
     - The constructor AppMgr() configures and initializes the Gaudi Application manager
     - Added new class EventSelector to manage the opening of input files

    ! 20040202 - Pere Mato
     - Added histogram service functionality. retrieve1D(), 2D(), 3D()
     - Updated test_basics to test this functionality

    =================== v6r1 ===================================
    ! 20040126 - Pere Mato
     - A number of small corrections mainly coming from feedback of Vanya

    =================== v6r0 ===================================
    ! 20040116 - Pere Mato
     - New dictionaries for IRegister, IDataManagerSvc
     - DataSvc: Added new methods: clearStore, leaves, dump, setRoot
     - Extended the test test_basics.py

    ! 200401208 - Pere Mato
     - This is a complete new version of GaudiPython using LCG dictionaries to provide
       python bindings and it does not use boost.python.
     - The high-level interface has been kept as close as possible to the old version
     - The file gaudimodule.py is the main file to document the existing functionality

    =================== v5r1 ===================================
    ! 20031127 - Pere Mato
     - Changes due to AIDA namespace (3.0)
     - Replaced macro WIN32 by _WIN32
     - Minor changes in requirement file for vc++ 7.1

    ! 20031029 - Paolo Calafiura (for wlav)
     -bug fixes in HistosFunctionality.cpp and HistoSvc.cpp
    ! 20030805 - Pere Mato
     - PythonScriptinfSvc.cpp
       avoid using FILE* since there are problems when libraries are compiled with different versions
       of the Visual C++. (currently Python 2.2.3 the binaries are produced by VC6 and
       does not compile out-of-the box with VC7)

    =================== v5r0p1 ===================================
    ! 20030523 - Paolo Calafiura
     - cmt/requirements add boost_python explicitly to linkopts
    ! 20030520 - Paolo Calafiura
     - src/Test/Dictionary/Class_Dict.cpp use new OffsetOf macro

    =================== v5r0======================================
    ! 20030408 - Pere Mato
     - Added new method execute(n) to AppMgr to overcome the problem that
       run(n) does always a reinitialize() in addition to execute events. The
       re-initialize is not well handled by DetDataSvc and Algorithms.

    ! 20030313 - Pere Mato
     - Correctly load the python dynamic library with GLOBAL flag to resolve
       symbols that may appear on other python extension modules.

    ! 20030130 - Wim Lavrijsen, Pere Mato
     - Changes introduced to convert the package Boost.Python 2.0
     - Added the capability of setting/getting properties of Algorithms
       and Services BEFORE they are created by the ApplicationMgr.

    =================== v4r3======================================
    ! 20020930 - Pere Mato
     - Added Auditor support (Wim Lavrijsen)

    =================== v4r2p1======================================
    ! 20020910 - Flr
     - requirements - use v*

    ===================v4r2==============================================
    ! 20020517 - Pere Mato
     - PyhtonScriptingSvc.cpp: load the python dynamic library with the
       global flag turned on to avoid problems when importing python modules
    	 later that require resolving symbols from the python library
    	 but they do not depend explicitly from it.

    ! 20020515 - Paolo Calafiura
     - AppMgr.cpp: replaced temp d-cast with queryInterface //Wim

    ===================v4r1==========================================
    ! 20020503 - Pere Mato
     - Adapted to new LHCb event model (KeyedContainers in addition to
       ObjectVectors).
     - Re-structured a bit: the IntrosObj and IntrosFunc share a single
       function to handle conversion of single and complex types to python.
     - Better handling argument conversions for methods and functions

    ===================v4r0==========================================
    ! 20020321 - Pere Mato
     - Adapted to the new GaudiIntrospection, which adds method support

    ! 20020319 - Markus Frank
     - Added the possibility to obtain any interface implemented by
       a component (service)

    ===================v2r0==========================================
    ! 20011130 - Pere Mato (v2)
     - Added initialize() and finalize() for algorithms and services

    ! 20011109 - Pere Mato (v1)
     - First version with somehow limited functionality but useful for testing

    ! 20011015 - Pere Mato
     - New package for interfacing Python using boost/python libraries