The Gaudi Framework  v30r3 (a5ef0a68)
Package: GaudiAlg
Package manager : Marco Clemencic
Commit Id: $Format:%H$

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

! 2017-07-26 - Sebastien Ponce (commit 98ceba03)

 - Merge branch 'sponce_ScalarTransformerPostprocessing' into 'master'

   Reallowed global postprocessing in ScalarTransformer

   See merge request !364

! 2017-07-20 - Gerhard Raven (commit bcdd986d)

 - Merge branch 'augment_tupleobj' into 'master'

   Augment TupleObj

   See merge request !352

! 2017-07-18 - Gerhard Raven (commit 49c12028)

 - Merge branch 'allow-algorithm-as-functional-base' into 'master'

   Allow Algorithm as baseclass of Gaudi::Functional algorithms

   See merge request !326

! 2017-06-02 - Paul Seyfert (commit acb3ca5e)

 - Merge branch 'pseyfert_IWYU' into 'master'

   make exported headers self contained
    See merge request !348

! 2017-05-19 - Chris Jones (commit 8b38c49d)

 - Merge branch 'GaudiFunctional-RangeZipSizeCheckImprovedErrorMessage' into
   'master'

   Gaudi functional range zip - size check improved error message
    See merge request !297

! 2017-05-18 - Sebastien Ponce (commit 231089d2)

 - Merge branch 'FixedGetData' into 'master'

   Fixed retrieval of data from TES in case AnyDataWrapper is used
    See merge request !328

! 2017-04-20 - Charles Leggett, leggett (commit 0d7cf453)

 - Merge branch 'dev/isSeq' into 'master'

   Add flag to Algorithm to identify a Sequence
    See merge request !317

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

! 2017-03-10 - Charles Leggett (commit 1c2b2e1)

 - Merge branch 'dev/combSeq' into 'master'

   Support for AthSequencers in Scheduler
    See merge request !287

! 2017-03-10 - Gerhard Raven (commit f3d7bff)

 - remove all references to endreq

   See merge request !79

! 2017-03-01 - Chris Jones, Marco Clemencic (commit 22ec1aa)

 - Merge branch 'GaudiAlg-HistoIDOptimisation' into 'master'

   GaudiAlg::ID optimisation
    See merge request !283

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

 - Readded missing accessors dropped with the ranges

   See merge request !250

! 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-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-26 - Marco Clemencic (commit 87456e0)

 - Revert IGenericTool changes in !217

   The changes in IGenericTool included in !217 were not discussed and break
   backward compatibility.

   See merge request !219


! 2016-10-25 - Chris Jones (commit be54ccc)

 - Update GaudiHandle to return const Tool access from const Handle

   via `->` and `*` operators and `get()` method
    Also removed unused `ThreadPoolSvc::getThreadInitTools()`.
    See merge request !217

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

 - Changes to build on MacOS X 10.11

   See merge request !200


! 2016-10-24 - Gerhard Raven (commit 1692616)

 - Streamline / simplify TupleObj

   See merge request !213

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

=============================== GaudiAlg v17r1 ===============================

! 2016-03-10 - commit 4a18175

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

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

! 2016-02-29 - commit 223ce08

 - Merge branch 'GAUDI-1183' into 'master'

   reorganize DataHandleHolder visitor acces to avoid non-retrieved tools
    This is not a perfect fix, more a workaround.
    The method `initToolHandles` have been modified to fill the list of used
   `ToolHandle`s only with the tools retrieved explicitly in the `initialize`
   method.

   `GaudiCommon` required the introduction of a hook so that the custom _fixer_
   visitor could be created in the `GaudiCommon::initialize`, but used only at
   the end of `PBASE::sysInitialize` (eb39274).
    I also fixed an issue (double delete) with the use of `ToolHandle` from
   `GaudiCommon` (0a1bec8).
    Fixes GAUDI-1183.
    See merge request !120

! 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-11 - commit e2c585c

 - Remove globalTimeOffset getter and GlobalTimeOffset property from GaudiCommon

   GaudiCommon adds a property GlobalTimeOffset and a corresponding getter
   globalTimeOffset to every algorithm/tool which uses GaudiCommon, regardless
   on whether this property is used.

   As there is no code anymore that actually uses globalTimeOffset, this patch
   removes this accessor and the corresponding property.

   Fixes GAUDI-1122.

   See merge request !61


! 2016-02-09 - commit 11d42e4

 - DataHandles fixes for LHCb

   - renamed IDataHandleHolder::accept to acceptDHVisitor to avoid build time
   warnings in LHCb
   - fixed reference file for GaudiExamples.thistwrite

   See merge request !104


! 2016-02-09 - commit a4bea2b

 - remove unprotected DEBUG messages added in v27r0

   The merge of the 'hive' branch introduced several _unprotected_ DEBUG
   messages,
 which is against LHCb policies.
    Fixes GAUDI-1174.
    See merge request !102

! 2016-02-06 - commit d905569

 - introduce DataHandle and DataObjectHandle

   See merge requests !57 !94 !95

=============================== GaudiAlg v17r0 ===============================

! 2016-01-12 - commit 4dbdc8e

 - fixed clang 3.7 compilation warnings

   Fixes GAUDI-1083.
 See merge request !89

! 2016-01-12 - commit 5165b50

 - extend the functionality of TupleObj::farray

   - accept an arbitrary number of columns
   - accept generic 'callables'
    With the exception of an added 'projection', this implements the

   functionality discussed in GAUDI-1100.
    See merge request !77

! 2015-12-17 - commit 8119d23

 - Merge branch 'GAUDI-1151' into 'master'

   GAUDI-1151: fixed reference counting of CounterSummarySvc
    In the merge commit fd7f1add, the conflicts in GaudiCommon.icpp were not

   correctly resolved, resulting in a wrong reference count.
    See merge request !81

! 2015-11-02 - commit 57f356c

 - Merge branch 'hive' into 'master'

   Fixes GAUDI-978.

   See merge request !65


! 2015-10-28 - commit 0335830

 - remove RootOnTES property from GaudiCommon

   RootOnTES has been marked as deprecated in favour of RootInTES since
   (at least) 2009.

   Fixes GAUDI-1112.

   See merge request !52


! 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

=============================== GaudiAlg v16r0 ===============================

! 2015-10-07 - commit e3e20a4

 - Merge branch 'GAUDI-1078' into 'master'

   GAUDI-1078: include caller algorithm name in messages from public tools

   Using a feature developed in the LHCb software update the Error, Warning and
   Info method for tools that inherit from GaudiTool to, when created as public
   tools (defined by ultimately being owned by the ToolSvc) to append the
   current active algorithm name to the end of each method.

   So for instance if a private tool would print

       TestToolAlg.ToolC    INFO TestTool:: test info

   a public instance instead prints

       ToolSvc.ToolB        INFO TestTool:: test info [TestToolAlg]

   This feature has proved very useful in applications where a very large number
   of algorithms all use the same public tools, as it allows problems associated
   with what the caller is doing to be much more easy isolated.

   Closes GAUDI-1078.

   See merge request !40


! 2015-10-05 - commit f75d8a5

 - Merge branch 'master' into 'master'

   make farray work with (buf,buf+n) range

   This fixes a compilation problem in the Analysis nightly

   See merge request !35


! 2015-10-04 - commit 328c078

 - Merge branch 'dev-variadic-interface-base' into 'master'

   Take advantage of variadic templates to implement interface bookkeeping and
   interface casting

   This patch updates the implementation of the interface bookkeeping and
   casting from the current macros + boost mpl code to use variadic templates.

   See merge request !22


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

 - Merge branch 'dev-common-messaging' into 'master'

   Generalize CommonMessaging, and use it to implement the messaging
   functionality ...

   ...in GaudiAlg/GaudiCommon

     CommonMessaging needs two methods to be available to implement its
   functionality:

           const std::string& name() const
          SmartIF<ServiceLocator>& serviceLocator() const

     As CommonMessaging is a mix-in class which uses the 'curiously recurring
   template'
    pattern, it can either demand that the 'Base' class it is 'mixed' into
   already
    provided this functionality, or it can add pure virtual methods to insure
   any
    derived class does so. As this depends on the template argument, one cannot
    a-priori decide which of the two solution is appropriate.

     To solve this problem in a generic way, this patch uses SFINAE to detect
    at compile time whether Base::name() and Base::serviceLocator() -- where
    Base is the template argument provided to CommonMessaging -- are valid
    expressions. If they are, no further action is taken. If not, the missing
    function(s) is (are) added as pure virtual. This is done by specialization
    of two template classes from which CommonMessaging inherits, prior to
    inheriting from Base.  Those specializations are either 'empty' classes,
    or add the missing interface requirement.

   See merge request !19


! 2015-09-14 - commit f6ed9be

 - GAUDI-1081: Fixed compilation with -O0 fails after merge request !7



! 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-07-21 - Marco Clemencic
 - Fixed some unchecked StatusCode.
 - Fixed some whitespaces.

=============================== GaudiAlg v15r3 ===============================
! 2015-07-09 - Gerhard Raven
 - Fixed GAUDI-996: GaudiSequencer calls resetExecuted of subAlgorithms

=============================== GaudiAlg v15r2 ===============================
! 2014-09-18 - Marco Clemencic
 - Fixed Eclipse Code Analysis warning.
 - Fixed unchecked StatusCode.

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

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

! 2013-07-19 - Marco Clemencic
 - Clean up in the use of the new PluginService.

! 2013-07-18 - Marco Clemencic
 - Removed use of obsolete AlgFactory.h, SvcFactory.h, ToolFactory.h,
   AudFactory.h and CnvFactory.h.

! 2013-07-17 - Marco Clemencic
 - Removed factories forward declarations and use of DECLARE_FACTORY_ENTRIES.

! 2013-07-03 - Marco Clemencic
 - Replaced Reflex queries with TClass queries.

=============================== GaudiAlg v14r6 ===============================
! 2013-07-08 - Marco Cattaneo
 - Patch #5653: Add HistoCountersPrint property to GaudiHistos
   - Add HistoCountersPrint property to GaudiHistos, to control printing of
     booked histogram statistics in finalize. Default true (print the summary)
   - Fix some unchecked StatusCodes

=============================== GaudiAlg v14r5 ===============================
! 2013-04-29 - Chris Jones
 - Patch #5641: Suppress GaudiAlg HbookName.h clang warnings
   Removed the unused method, and reorganized things a bit so this header is no
   longer included by the class headers, and thus everyone downstream, but only
   when the icpp files are compiled.

! 2013-04-22 - Marco Clemencic
 - Fixes to patch #5631

! 2013-04-22 - Chris Jones
 - Patch #5631: Fix bug in sequencer timer in GaudiAlg

=============================== GaudiAlg v14r4 ===============================
! 2012-11-14 - Marco Clemencic
 - Updated CMakeLists.txt.

=============================== GaudiAlg v14r3 ===============================
! 2012-09-13 - Marco Clemencic
 - Fixed compilation warnings.

! 2012-09-11 - Ben Couturier
 - Patch #5518: save TimingHistograms in job histograms
   - converted the SequencerTimerTool to be a GaudiHistoTool
   - book the histograms normally but convert them to ROOT (using Aida2ROOT) in
     order to fill them with alphanumeric bin names
   Note: to ensure that the histograms are correctly written, TimingAuditor was
   changed to intercept the algorithms "Finalize" event, and create the
   histograms at the first time an algorithm is finalized.
   To enable the feature, use the options:

     from Configurables import TimingAuditor, SequencerTimerTool
     p = TimingAuditor()
     p.addTool(SequencerTimerTool, name = "TIMER")
     p.TIMER.HistoProduce = True


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

! 2012-07-15 - Chris Jones
 - Patch #5464: Implement the 'getIfExists' for GaudiTool as well as GaudiAlgorithm

=============================== GaudiAlg v14r2 ===============================
! 2012-06-08 - Marco Clemencic
 - Added CMake configuration files.

! 2012-06-08 - Vanya Belyaev
 - Patch #5410: Enable the suppression of misbalance summary from GaudiTool
   Added a couple of static methods to GaudiTool to enable/disable the summary.

! 2012-06-06 - Marco Clemencic
 - Task #22742: Optimize the GaudiAlgorithm get() functions
   - avoid use of SmartDataPtr (only when returning pointers)
   - added an argument to the GetData class to bypass the check
   - implemented getIfExists variants

! 2012-05-30 - Vanya Belyaev
 - Patch #5379: Improvements for GaudiAlgs.py
   - GaudiCommon.h
     move fullTESLocation from private to public interface
     (useful for interactive inspections and debug in python)

! 2012-05-03 - Marco Clemencic
 - Fixed some "pedantic" warnings.

=============================== GaudiAlg v14r1 ===============================
! 2012-02-24 - Chris Jones
 - Patch #5234: Fix incorrect type in GaudiAlg tuples

=============================== GaudiAlg v14r0 ===============================
! 2011-12-05 - Marco Clemencic
 - Removed the unused FastContainerSvc.

! 2011-12-01 - Chris Jones
 - Fixed bug #85377: GaudiTuple tuple does not understand ulonglong
   Update TupleObj to properly support different data types.

=============================== GaudiAlg v13r8 ===============================
! 2011-08-08 - Marco Clemencic
 - Fixing bug #83775: unprotected MSG::DEBUG/VERBOSE
   - Sequencer
   - GaudiCommon

! 2011-08-04 - Patrick Koppenburg
 - Patch #4923: GaudiSequencer
   - Correct indentation
   - Protect all debug() with if msgLevel()
   - Add some more verbose() printout
   - Improve doxygen documentation

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

! 2011-04-27 - Charles Leggett
 - added "-import Boost" to requirements for new CMT
 M     cmt/requirements

=============================== GaudiAlg v13r7 ===============================
! 2011-04-15 - Marco Clemencic
 - Patch #4814: Move EventNodeKiller algorithm from LHCb to Gaudi.
   Imported EventNodeKiller.{h,cpp} from
     svn+ssh://svn.cern.ch/reps/lhcb/LHCb/trunk/Kernel/LHCbAlgs/src
   Modified the imported files to avoid generating debug messages if they are
   not going to be printed.

! 2011-03-02 - Patrick Koppenburg
 - Patch #4711: fixed doxygen comment

=============================== GaudiAlg v13r6 ===============================
! 2011-02-18 - Marco Clemencic
 - Fixed icc warnings.

! 2011-02-01 - Marco Clemencic
 - Fixed a configuration problem with icc on i686.

=============================== GaudiAlg v13r5 ===============================
! 2011-01-11 - Marco Clemencic
 - Fixed some ICC remarks.

=============================== GaudiAlg v13r4 ===============================
! 2010-09-17 - Vanya Belyaev
 - Patch #4360: Fix for bug #71237 (GaudiHistos treatment of histoProduce incomplete)
   GaudiAlg/GaudiHistos*.h(.icpp)
   - book* & plot* return NULL if histogram are disabled
   - fill          does not rely on "produceHistogram" at all
   with such behaviour everything is coherent.

! 2010-09-13 - Olivier Callot, Patrick Koppenburg, Roel Aaij, Marco Clemencic
 - Patch #4299, patch #4332: Add option for filed size in SequencerTimerTool
   Added an option to change the size of the algorithm name in the Sequencer Timer tool:
   SequencerTimerTool("TimingAuditor.TIMER").NameSize = 30

! 2010-08-19 - Marco Clemencic
 - Fix for ICC in GaudiAlg/CheckForNaN.h.

=============================== GaudiAlg v13r3 ===============================
! 2010-05-27 - Vanya Belyaev
 - Patch #4044: Fix for bug #66397 and task #13911
   src/GaudiSequencer.cpp
   Fixes to (re)enable the "interactive" insertion of sub-algorithms into
   GaudiSequencer:
    1. Fix the invalid "isInitialized" condition in property handler for
       "Members".
    2. "Upgrade" the state for located sub-algorithms up to the own state
       through the calls for sysInitialize/sysStart.
    3. Add new entries into the timing table in case of update for "Members"
       property.

=============================== GaudiAlg v13r2 ===============================
! 2010-04-20 - Marco Clemencic
 - Removed ICC warnings and remarks.

! 2010-04-16 - Vanya Belyaev
 - Patch #3982: Tiny fix for Gaudi::Utils::GetData
   The purpose is to make the utility more safe, in particular the creation of
   ranges is allowed now only for T::Selection and T::container types. Now the
   helper range-creation methods can be used outside the context (e.g. for
   Phys and Hlt), and one can immediately profit e.g. in the fixing of
   FilterDesktop.
   Also the bug("feature") on creation of named-range from container is fixed
   now (the empty name have been always assigned to the range).

=============================== GaudiAlg v13r1 ===============================
! 2010-03-09 - Vanya Belyaev
 - Patch #3892: Proper implementation of GaudiCommon::exist
   - GaudiCommon<>:exist: provide the proper implementation,
                  compatible with "blind" access to data
   - Reimplement GaudiCommon<>::get : make it more efficient
                 (thanks to Gerhard for nice suggestion)
   - Reimplement GaudiCommon<>::getOrCreate provide the proper implementation
                 to be compatible with "blind access to the data"
   - GaudiCommon<>::addToToolList/releaseTool
                 add "debug" printout for added/release tools

! 2010-01-29 - Marco Clemencic
 - Fixed icc remark #1599: declaration hides variable

! 2010-01-28 - Marco Clemencic
 - Fixed icc remark #424: extra ";" ignored

=============================== GaudiAlg v13r0 ===============================
! 2010-01-15 - Marco Clemencic
 - Fixed compilation on icc 11.
   - GaudiCommon, GaudiHistos, GaudiTuples:
     icc requires that virtual methods of templated classes are defined in the
     class declaration (at least is seems so), otherwise you get an undefined
     reference to virtual thunk at link time.
     For the virtual destructors the change was easy (just move the definition).
     For initialize an finalize, the implementation has been wrapped in
     non-virtual methods and the virtual methods have been modified to call
     their non-virtual counterparts (to be reviewed).
   - TupleObj.h:
     in Tuples::TupleObj::matrix(string,SMatrix), icc cannot tell if the
     unisgned int template argument D1 is a int* or a MIndex (typedef of
     unsigned short), so a hint has been added.

! 2010-01-12 - Marco Clemencic
 - Fixed bug #61116: GaudiCommon::Assert and GaudiCommon::Exception should return void
   Changed the return type to void and modified the code accordingly.

! 2010-01-11 - Vanya Belyaev
 - Patch #3478: Registration for Algorithm Context Service
   Moved the registration for the context service from GaudiAlgorithm to Algorithm

================ GaudiAlg v12r4 ====================================
! 2009-10-05 - Marco Clemencic
 - Improvement to the fix to bug #55292:
   Fix the reference counting of sub-algorithms (of GaudiSequencer) to properly
   take into account shared sub-algorithms.

! 2009-10-02 - Vanya Belyaev
 - Patch #3157: Remove redundant duplicated  maps from GaudiHistos/GaudiTuples
   - GaudiHistos, GaudiTuples
     remove the separate maps by numerical and by literal ID, use the unique "ID"
     User code which relies on methods

       histoXDMapXXXID    -> histoXDMapID
       profileXDMapXXXID  -> profileXDMapID
       nTupleMapXXXID     -> nTupleMapID
       evtColMapXXXID     -> evtColMapID

     where XXX = { Lit, Num , Numeric ,Literal }

! 2009-10-02 - Marco Clemencic
 - Fixed bug #55292: Algorithms are never deleted
   - Fixed a problem in the reference counting of sub-algorithms.

================ GaudiAlg v12r3 ====================================
! 2009-09-02 - Rob Lambert
 - Patch #3182: Changes in GaudiCommon required for CounterSummarySvc
  Added RegEx.h, ICounterSummarySvc.h
  new protected members:
	  m_counterSummarySvc, holding a pointer to the service
    m_counterList, a list of RegEx to be declared
    m_statEntityList, a list of RegEx to be declared
  properties:
    CounterList, set the above list, [".*"] default
    StatEntityList, set the above list [] default
  m_counterSummarySvc:
	  explicitly found in initialize
    explicitly filled and released in finalize
    relies on an ICounterSummarySvc being instantiated by the user.
    it must have the name "CounterSummarySvc"
    If it doesn't exist, a debug message is printed.

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

! 2009-07-27 - Marco Clemencic
 - Modified GaudiHistos and GaudiTuples to print histograms and tuples in
   alphabetical order during finalize.

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

! 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

================ GaudiAlg v12r2 ====================================
! 2009-07-08 - Christopher Rob Jones
 - Patch #3095: Add support for variable bin width histograms to GaudiAlg

! 2009-07-08 - Marco Clemencic
 - Removed the usage of extend_interfaces1.

! 2009-07-07 - Marco Clemencic
 - Fixed warning: "dereferencing type-punned pointer will break strict-aliasing rules"
   in GetData.h

! 2009-07-03 - Marco Clemencic
 - Fixed bug #46519: Implement the method GaudiCommon::Info()
   Added the method GaudiCommon::Info() similar to GaudiCommon::Warning().

================ GaudiAlg v12r1 ====================================
! 2009-06-26 - Gerhard Raven
 - Fixed bug #46919: GaudiSequencer does not always register subAlgorithms
   Always register members as subAlgorithms even if not created be the sequencer.

! 2009-06-23 - Marco Clemencic, Vanya Belyaev
 - Patch #2980: Moved Range.h and NamedRange.h from GaudiUtils to GaudiKernel.

! 2009-06-11 - Hubert Degaudenzi
 - use the new LCG tag convention.

================ GaudiAlg v12r0 ====================================
! 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.
 - Renamed back INamed to INamedInterface.

! 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 virtual destructors for IGenericTool and ISequencerTimerTool.
   - Minor clean-up (spelling and extra ';')

! 2009-01-22 - Marco Clemencic
 - Adapted to the new IInterface functionalities (see GaudiKernel release.notes)
 - Removed the IID_* constants.

================ GaudiAlg v11r3 ====================================
! 2008-12-01 - Marco Clemencic
 - Fixed bug #44504. Inconsistent default for createIf flag for services.
   Set the default of the flag to "true" as in IServiceLocator.

================ GaudiAlg v11r2 ====================================
! 2008-11-04 - Marco Cattaneo
 - Patch #2601. Introduce support for file summary records.
   - Two new options for the GaudiAlgorithm base class:
     - "VetoObjects" is a list of TES locations. If one or more of these TES
       objects exists, the algorithm skips the event (execute is not called)
     - "RequireObjects" is a list of TES locations. If set, execute is only
       called if one or more of these TES objects exists.

! 2008-10-27 - Marco Clemencic
 - Fixed warnings reported by gcc 4.3:
   - type qualifiers ignored on function return type

! 2008-10-10 - Chris Jones
 - Patch #2509. Suppress messages in GaudiAlg when tools are loaded multiple times
   Suppress the warnings when a component loads a tool with the same name
   more than once as this makes sometimes sense (tools with multiple
   interfaces for instance).

! 2008-10-10 - Gerhard Raven
 - Patch #2506. GaudiSequencer: bug in setFilterPassed logic in case
                ModeOR=true, IgnoreFilterPassed=true
   When IgnoreFilter is set to True, and ModeOR is also set to True, the
   filterpassed status was set to False, when it shouldn't be set at all.
 - Patch #2483. Return pointer to 'put' object in GaudiCommon::put
   (includes minor improvement of the debug output)

! 2008-10-10 - Marco Clemencic
 - Changed the default value of the property HistoPrint of GaudiHistos base
   class.

! 2008-10-10 - Vanya Belyaev
 - Patch #2073: SharedObjectsContainer and 'blind' access to TYPE::Container &
                TYPE::Selection
   - GaudiCommon<TYPE>::get methods are rewritten in terms of
     Gaudi::Utils::GetData to allow "blind" access to the vector-like
     containers.
   - Utility Gaudi::Utils::GetData which "gets" the data from TES.

! 2008-10-09 - Vanya Belyaev
 - Patch #2058. Extensions for AIDA::TProfile1D
    * GaudiAlg/GaudiHistos.h
    * GaudiAlg/GaudiHistos.icpp
   add more default arguments to the methods GaudiHistos::profile1D and
   GaudiHistos::bookProfile1D to allow definition of Y-range and options.

================ GaudiAlg v11r1 ====================================
! 2008-07-17 - Marco Clemencic
 - Added the interface IGenericTool (from LHCb).

================ GaudiAlg v11r0 ====================================
! 2008-06-05 - Chris Jones
 - Fixed bug #36021. Unchecked StatusCodes in GaudiCommon<T>::releaseTool.

! 2008-06-04 - Chris Jones
 - Patch #1862. Extend space for 'counter' name in GaudiAlg summary.
   - Changed the default format of the counters report table in GaudiAlg to
     give more space for counter names.

! 2008-06-02 - Marco Clemencic
 - Task #5809. Extension to Gaudi Application state machine.
   - Removed the usage of setInitialized from sequencers. It is not needed since
     the state is set in sysInitialize.

! 2008-05-14 - Patrick Koppenburg
 - Patch #1807. Reduced default print-out of GaudiHistos and GaudiTuples.

================ GaudiAlg v10r5 ====================================
! 2008-04-04 - Marco Clemencic
 - Bug #35199: GaudiSequencer segfaults if an algorithm cannot be loaded.
   Implemented the suggested check even if the bug is not reproducible with a
   simple test.
 - Bug #34565: Unchecked StatusCode in GaudiTuples<>::initialize().
   Fixed.

! 2008-04-03 - Vanya BELYAEV
 - Patch #1749. Improvements of print-outs.
   - Decrease a little bit the number of lines produced by GaudiHistos &
     GaudiTuples classes (requested by Patrick KOPPENBURG).
   - Improve the print-out of the statistical counters & histograms,
     in particular now the final tables looks much nicer, they are not prepended
     with "standard" prefixes, and are more readable.
   - GaudiAlg/Print.h, add the methods PrintXXX::toString.

! 2008-04-03 - Marco Clemencic
 - Patch #1725. New IAuditor interface.
   Modified TimingAuditor to implement the new IAuditor interface for both
   standard events and user events.

================ GaudiAlg v10r4 ====================================
! 2008-02-21 - Marco Clemencic
 - Fixed bug #30209. Support for namespaced algorithms in Sequencer
   The ':' in the name of a member of the Sequencer was interpreted as separator
   for the inversion of the logic of the algorithm, creating problems if the
   algorithm class was in a namespace and an explicit name for the instance was
   not provided.

================ GaudiAlg v10r3 ====================================
! 2008-01-18 - Marco Clemencic
 - Fixed bug #32541.
   Modified the logic of GaudiCommon<PBASE>::fullTESLocation to return RootInTES
   when the user asks for "" or "/Event" (and the rootInTES flag is true).
 - Fixed a bug in the reporting of booked profile histogram exposed by the
   changes of patch #1625.

! 2008-01-17 - Chris Jones
 - Patch #1625.
   - Introduce fix for the problem of non-deterministic automatically
     assigned numerical IDs in the GaudiTuples and GaudiHistos base
     classes.
    + New default behavior is to create a literal (string) auto-ID using
      the histogram title as a basis.
     + Various problematic characters are purged from the string ID.
       By default / is replaced with =SLASH=
    + An option exists to allow the user to switch back to the old way
      if they prefer (a warning is printed to remind the user this is
      potentially dangerous)
   - Remove direct (unnecessary) inclusion of GaudiHistos.icpp in the
     public headers GaudiHistoAlg.h and GaudiHistoTool.h - This include
     draws in other headers that are not needed (and in fact was causing
     compilation problems when the user also included certain ROOT includes).
   - Move a few more methods from inlined in GaudiHistos.h to non-inlined
     in GaudiHistos.icpp (Started by Vanya).
   - Various code clean ups (such as removing some duplicated code)

! 2008-01-14 - Gerhard Raven + Marco Cattaneo + Marco Clemencic
 - Re-introduced some code that was removed with patch #1620, but needed for the
   correct work of contexts and rootOnTES.

! 2008-01-10 - Gerhard Raven
 - patch #1620 (bug #32030).
   - Modified GaudiSequencer to use createSubAlgorithm instead of creating them
     via the ApplicationManager. This allow also some clean up.
   - Added the property ShortCircuit (true by default) to allow to run all the
     sub-algorithms regardless the accumulated result.

! 2007-12-12 - Marco Clemencic
 - patch #1585.
   Fixed warnings about breaking of strict-aliasing rules (gcc 4.1 optimized).

! 2007-11-20 - Marco Clemencic
 - Fixed few compilation warnings on win32.

================ GaudiAlg v10r2 ====================================
! 2007-10-16 - Chris Jones
 - patch #1418. (Register histograms to monitor service using full TES path
                 instead of just base ID)
   Minor fix to GaudiHistos<PBASE>::monitorHisto to use the full TES path
   instead of just the base histogram ID when registering the histogram to
   the monitoring service. I.e. When an algorithm called 'MyAlg' creates a
   histogram with ID 'MyID' register this as 'MyAlg/MyID' instead of just
   'MyID', in order to prevent conflicts in the case some another algorithm
   also creates a histogram with base ID MyID.

================ GaudiAlg v10r1 =====================================
! 2007-10-02 - Vanya Belyaev
 - Added a few wrapper functions to remove unwanted explicit dependency
   on AIDA (was breaking LHCb compilation).

! 2007-09-28 - Vanya Belyaev
 - patch #1345.
   - GaudiAlg/TupleObj.h
     1) change the default type for "integer" data-fields from "long" to "int".
        (it requires some changes in GaudiKernel)
     2) change the signature of some methods for (1)
     3) issue the warning messages for truncated fields:
          - long
          - unsigned long
          - unsigned int
          - double
     4) add a shortcut for column ( IOpaqueAddress* )
     5) remove some clearly confusing "put"-methods
     6) improve doxygen comments
   - src/lib/TupleObj.cpp
     add few static (boost)assertions for explicit checking of
     all assumptions used for Tuples::TupleObj
   - Changed names from "Long" to "Int" (Marco Clemencic).

! 2007-09-26 - Vanya Belyaev
 - patch #1375. Allow configuration of Histogram1D from job options.
   - Extended "plot" and "book" methods to use "histogram properties" without
     unpacking them into title/low/high/bins.
   - Move all function bodies (except 1-line) form GaudiHistos.h to
     GaudiHostos.icpp
   - Improve a bit doxygen comments.

! 2007-09-25 - Vanya Belyaev
 - patch #1356.
   - GaudiAlgorithm:
     - provide the accessors to IAlgContextSvc service
     - provide new property "RegisterForContextService" to enforce the algorithm
       registration in Algorithm Context Service independently on the external
       configuration of Auditor Service and AlgContextAuditor
       (the default value is true)
     - provide the functionality to select "interesting" algorithms from the
       algorithm context queues (algorithm selectors)
     - implement few simple specializations of selectors for accessors

! 2007-09-19 - Vanya Belyaev
 - patch #1273.
   - Added automatic conversion of GaudiAlg::ID to std:string.
   - Added properties to define histograms print out format in GaudiHistos.
   (needs patched GaudiUtils)

! 2007-08-06 - Vanya Belyaev
 - patch #1231.
   Remove duplicated lines for printout of counters.
   Added new properties to format the counters to GaudiCommon<TYPE>:
    * "StatTableHeader" : (string) the header line for printout of the table
    * "RegularRowFormat" : (string) the format of the row for the regular
                                    counters
    * "EfficiencyRowFormat" : (string) the format of the row for the "binomial
                                       efficiency counters"
    * "UseEfficiencyRowFormat": (bool) the flag to allow the special formatting
                                       of "binomial efficiency" counters

! 2007-07-16 - Marco Clemencic
 - fixes to please gcc 4.1.

================ GaudiAlg v10r0 =====================================
! 2007-06-05 - Marco Clemencic
 - Added to GaudiCommon.h the include removed from StatEntity.h
   for backward-compatibility.

! 2007-05-23 - Vanya Belyaev
 - patch #1161. Improvements and clean-up in StatEntity:
    - Removed "weight"-related functions and methods (unused)
    - Added binomial error calculation for efficiency-like counters
    - Improved print-out format
    - Added methods to make StatEntity mode DIM friendly
    - Some clean up in comments

! 2007-05-23 - Marco Clemencic
 - patch #1160. Changed the returned value of
    - Algorithm::setExecuted()
    - Algorithm::resetExecuted()
    - Algorithm::setFilterPassed()
   from StatusCode to void.

! 2007-05-15 - Chris Jones
 - Patch #1134. Update the way GaudiCommon handles get and put methods
   to respect the settings of the RootOnTES(now renamed RootInTES, see
   below)
  + Trivially rename the RootOnTES option RootInTES, to force code
    using this to no longer compile. Fixes will be trival, but this is
    done to make sure all cases where this is used are found and
    properly assessed to make sure they are updated appropriately, to
    caught a few special cases.
  + All get and put methods now interally prepend the rootInTES() to
    their data locations as appropriate. A new argument is added to
    the get and put methods to optional disable this new behaviour.

! 2007-05-15 - Chris Jones
 Patch #1136:
 - Update to GaudiHistos to automatically register histograms to the
   monitoring service via calls declareInfo(...) when they are booked
   via the plotXD(...) or bookXD(...) methods.
 - New job option 'MonitorHistograms' to turn on/off the histogram
   registration as required (default is true)
 - various other (minor) cleanups to code/doxygen I found along the way

! 2007-05-14 - Ivan Belyaev
 Patch #1127.
 - Event tag collections (aka "N-tuples with POOL persistency") allows
   to write as N-tuples items almost all objects, known for
   POOL/Reflex. However this nice fucntionality was not available from
   "friendly" N-tuples interface, used in GaudiTupleAlg and
   GaudiTupleTool.
   The proposed patch solved this problem. Now for tuples with POOL
   persistency one can store ANY objects, known for POOL/Reflex. It is
   done through new (templated) method Tuples::TupleObj::put.

   typical example:

	   Tuple tuple = evtCol( "COL1" , "Some Event Tag Collection") ;

	   // fill some fields using regular methods:
	   tuple -> column ( ... ) ;
	   tuple -> fill ( ... ) ;
	   tuple -> array ( ... ) ;
	   tuple -> farray ( ... ) ;
	   tuple -> matrix ( ... ) ;
	   tuple -> fmatrix ( ... ) ;

	   // fill mandatory IOpaqueAddress field:
	   DataObject* event = get<DataObject>("/Event") ;
	   tuple -> column ("Address" , event->registry()->address() ) ;

	   // get some object, known for POOL/Reflex
	   const MyTrack* track = ... ;

	   // put the track directly into Event Tag Collection:
	   tuple-> put ( "track' , track ) ;

	   // commit the filled record into N-tuple:
	   // ATTENTION: the method is again reenabled fro ETC !
	   tuple -> write() ;

 - Other changes:
   (0) IMPORTANT:Previously the method Tuples::TupleObj::write have
       been disabled form event tag collections. (The actual writing
       have been postponed for OutputStream phase). From now method is
       reenabled again. One CAN use it.. The old way (with
       OutputStream) is still possible but, of course, deprecated.
   (1) The end-of-the-job printout of all known Event Tag Collection
       is extended with the printout of the full map of the field
       names and their actual types.
   (2) The return codes from various methods of class Tuples::TupleObj
       are modified a bit to use the predefined enums instead of the
       generic StatusCode::FAILURE
   (3) The default CLID for event tag collections is set to be
       CLID_ColumnWiseTuple

! 2007-05-03 - Chris Jones
 - patch #1135. A minor little fix for GaudiAlg, to correctly define
   the < operator for the GaudiAlg::ID class (was actually doing > !!)

================ GaudiAlg v9r12 =====================================
! 2007-01-10 - Ivan Belyaev
  patch #1002:
  - New auditor for enhanced timing/profiling of the code. Essentially
    it apply ISequencerTimerTool (used inside GaudiSequencer) for much
    wider context. It perform the audition for ALL algorithms
    (including top level algorithms, algorithms not embedded into
    GaudiSequencers and algorithms invoked by Data-On-Demand service).
  - The auditor depends on the file GaudiAlg/ISequencerTimerTool.h.
  - The usage is fairly trivial:

      ApplicationMgr.ExtSvc = { "ToolSvc", "AuditorSvc"} ;
      ApplicationMgr.AuditAlgorithms = True ;
      AuditorSvc.Auditors += {"TimingAuditor/TIMER"} ;

    The auditor is NOT absolutely perfect. It has 2 modes, defined by
    the boolean property "OptimizedForDOD" (the default value is
    False) :

      TIMER.OptimizedForDOD = True ; /// the default value is "False"

    For difference between modes see the attached printouts for
    standard examples AlgSequencer and DataOnDemand.

    For the mode, optimized for DOD-algorithms they will be shown
    properly at the occasion of the first invocation. In this mode,
    the algorithms, which have been prescaled, filtered or disabled,
    appears (if any) only at the end of the printout table (see
    e.g. the line about "ORCounter", which is NEVER invoked).

    For the mode, non-optimized for DOD-algorithms, one has a proper
    appearence of all prescaled&disabled algorithms, even if they are
    never invoked, but DOD-algorithms appears at the end of the
    listing and are marked with '*' in the first columns.


================ GaudiAlg v9r11 =====================================
! 2007-01-10 - Patrick Koppenburg
 - patch #967. Changed the incomprehensible message
   "This machine is 0.93 times faster than a 2.8 GHz Xeon"
                        to
    "This machine has a speed about 0.93 times the speed of a 2.8 GHz
    Xeon"

! 2006-12-10 - Charles Leggett
 - Removed extra ";" in HbookName.h, HistoID.h, Maps.h, TupleObj.h
 - added reinitialize to Sequencer
 - removed extra GaudiAlgorithm: from GaudiAlgorithm::evtColSvc
 - statuscode fixes in SequencerTimerTool.cpp, Sequencer.cpp

! 2006-11-27 - Pere Mato
  Adapted package to the new PluginSvc
  - Removed protected from constructor/destructors and fiendship of
    Factory class

! 2006-11-27 - Vanya BELYAEV
  Patch #923
  Fixes in reply to Savannah bug-reports #20265 and #20198
  - GaudiAlg/TupleObj.h
    add the method for filling N-Tuples with
    few basic ROOT::Math objects:
      - 3D/4D vectors and points
          using "TupleObj::columns"
      - SVectors & SMatrices
          using "TupleObj::array" and "TupleObj::matrix"
      - "ExtraInfo" objects
          using "TupleObj::fmatrix"
  - cmt/requirements
    add explicit usage of ROOT

! 2006-11-08 - Hubert Degaudenzi
 - fixed memory leak in GaudiCommon.

================ GaudiAlg v9r9 ======================================
! 2006-10-20 - Olivier Callot
 - Fix the handling of Context and RootOnTES due to the change of
   interface of StringProperty, the adding/removal of extra quote is
   no longer needed.

! 2006-10-04 - Olivier Callot
 patch #861:
 - Add two new options 'RootOnTES' and 'GlobalTimeOffset' to work
   with Time Alignment events, propagated to members of a Sequencer
   and to dependent tools of GAudiAlgorithms/Tools like the
   'Context' property.

 - The value of Context, RootOnTES and GlobalTimeOffset is printed at
   the end of the list of algorithms in GaudiSequencer

! 2006-09-19 - Olivier Callot
 - Fix the GaudiSequencer setting of the Context property for non-
   GaudiAlgorithm algorithms. This correct a bug due to bug fix
   #18581 on 31/07/2006

================ GaudiAlg v9r8 ======================================
! 2006-08-21 - Chris Jones
 - patch #813. Currently in GaudiAlg there is an option to split up
   the path used to save the tuple. This is useful for HBOOK which
   has a hard limit, but not for ROOT which does not. Currently this
   option is turned on by default. This simple patch changes the
   default behaviour to not applying this directory splitting. It
   makes the default state better for ROOT, rather than HBOOK.

================ GaudiAlg v9r7 ======================================
! 2006-06-06 - Ivan Belyaev & Alexander Mazurov
 - update for the new property parser/compiler.

! 2006-06-01 - Ivan Belyaev
 - improvement of the counters output. Doesn't print the weight any
   more if it is trivial (=1).

! 2006-05-31 - Marco Clemencic
 - patch #731. This patch allows to set the initial storage of the
   TransientFastContainer created via
   GaudiCommon::getFastContainer. Incidentally, it also fixes the bug
   which was preventing GaudiCommon::getFastContainer to work when the
   location of the object does not have the initial root-path
   (equivalent of "/Event").

================ GaudiAlg v9r6 ======================================
! 2006-05-04 - Marco Clemencic
 - Patch #720. Added to GaudiCommon few commodity functions for
   FastContainersSvc.  fastContainersSvc() returns a pointer to the
   FastContainers Transient Store (creating it if needed).
   getFastContainer<T>(location) returns a pointer to the
   TransientFastContainer<T> located at "location". If it does not
   exist, it is created and registered.

================ GaudiAlg v9r5 ======================================
! 2006-03-15 - Hubert Degaudenzi
 - changed the return value of the {GaudiAlgorithm,GaudiTool}::put
   from StatusCode::SUCCESS to void. It was meaningless.

 patch #669:
 - Remove boost from public interface (includes in GaudiAlg directory)
 - Implement proper postfix and prefix ++ and -- operators to
   GaudiAlg::ID

! 2006-03-09 - Chris Jones
 - patch #665. Make the counter printing by default turned on in
   GaudiCommon. make the counter number summary obey the same job
   option.

! 2006-02-22 - Hubert Degaudenzi
 - fix -no_auto_import statements in the requirements file. Remove
   extra semicolon producing warnings with GCC 3.4.4

================ GaudiAlg v9r4 ======================================
! 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.

================ GaudiAlg v9r3 ======================================
! 2005-11-29 - Marco Clemencic
 - added registration of the current instance to the UpdateManager as
   a consumer for a condition.

! 2005-11-29 - Vanya BELYAEV

 - GaudiAlg/Tuple.h
   GaudiAlg/TupleObj.h
   src/lib/TupleObj.cpp
      remove the member functions of class Tuples::TupleObj
      for filling the N-Tuple with CLHEP objects (3D and 4D-vectors).

    The recommended substitutions:

     SOMEWHERE in LOCAL package, which depends on corresponding
     Geometry or Math library:


      typedef XXXXXX    MyVector3D ;

      // define corresponding partial specialization:
     template <>
     inline Tuples::Tuple& operator<<
        ( Tuples::Tuple&                      tuple ,
         const Tuples::TupleColumn<MyVector>& item  )
      {
        if( !tuple.valid() ) { return tuple ;}
        const MyVector& vct = item.value() ;
        tuple -> column ( item.name() + "X" , vct.x() ) ;
        tuple -> column ( item.name() + "Y" , vct.y() ) ;
        tuple -> column ( item.name() + "Z" , vct.z() ) ;
        return tuple ;
     };

   Of course it is a bit better to split this code into 2 parts

    some *.h file:

      // forward declaration:
      Tuples::Tuple&
          fillNTuple ( tuple                     ,
                       const std::string&  name  ,
                       const MyVector&     vct   ) ;

      // define corresponding partial specialization:
     template <>
     inline Tuples::Tuple& operator<<
        ( Tuples::Tuple&                      tuple ,
         const Tuples::TupleColumn<MyVector>& item  )
      {
        return fillNTuple( tuple , item.name() , item.value() ) ;
      }

     and in some *.cpp file:

     // forward declaration:
      Tuples::Tuple&
          fillNTuple ( tuple                     ,
                       const std::string&  name  ,
                       const MyVector&     vct   )
       {
        if ( !tuple.valid() ) { return tuple ; }
        tuple -> column ( name + "X" , vct.x() ) ;
        tuple -> column ( name + "Y" , vct.y() ) ;
        tuple -> column ( name + "Z" , vct.z() ) ;
        return tuple ;
     };

  As an example one can see the partial specialization
  from LoKi packages for types "TrgDecision*" ,
  "L0DUReport", "L1Score" and many others..

  Simple examples could be found in the head revision of
  GaudiExample package src/TupleEx

 - cmt/requirements
   remove the dependency on CLHEP

================ GaudiAlg v9r2 ======================================
! 2005-11-18 -  Marco Clemencic
  - Adapted to use the new classes (GaudiUtils::Map, GaudiUtils::Hash,
    GaudiUtils::HashMap) replacing HashTable and the hacks in stl_hash.h

 ! 2005-11-09 - Chris Jones
 - Add fix to GaudiCommon to allow the changes in the messaging levels
   to be correctly picked up. Attaches a callback function to the
   OutputLevel property of the Algorithm or AlgTool base classes

! 2005-11-03 - Chris Jones
 - Add fix to obscure crash when using profile histograms in tools, with
   literal IDs and multiple sub-directories. Fixed by cleaning up the
   finalisation counting of histograms.

================ GaudiAlg v9r1 ======================================

! 2005-10-06 - Chris Jones
 - Add (another) fix for a problem found whilst testing GaudiAlg against
   all of LHCb code. Despite the fact that some methods are members of
   the base class GaudiCommon,
   such as get( IDataProviderSvc*, const std::string& location), it seems
   they are not found unless a forwarding method is placed in both
   GaudiAlgorithm and GaudiTool. ( Possible it could be fixed in user code
   by using the "template" or some such qualifier when making the call,
   but this avoids the need )

! 2005-10-03 - Chris Jones
 - Add work around for the fact that the MsgStream object in
   GaudiCommon is first created during construction, and did not have
   the correct properties.  Symptoms are debug messages are not seen
   even if OutputLevel = 2 is set.  Work around is to delete it, if it
   exists, at the start of initialisation, which forces a new object
   to be created with the correct properties.

! 2005-09-19 - Chris Jones
 - Techical changes. Switch over from multiple inheritance to
   templated inheritance.  Functionailty remains unaltered.

! 2005-08-11 - Chris Jones

 - Introduction of base class GaudiCommon for GaudiAlgorithm and
   GaudiTool that implements much of the common functionality, to
   reduced duplicate code.

 - Introduction of base class GaudiHistos for GaudiHistoAlg and
   GaudiHistoTool that implements the common histogramming
   functionality, to reduced duplicate code.
 - Introduction of base class GaudiHistos for GaudiTupleAlg and
   GaudiTupleTool that implements the common ntupling functionality,
   to reduced duplicate code.

    + With these new classes, it is now possible or any algorithm or
      tool (as long as they ultimately derive from GaudiTool or
      GaudiAlgorithm) to "opt-in" to the histogramming or ntupling
      features, by simply deriving from GaudiHistos or GaudiTuples
      (GaudiHistoTool and GaudiHistoAlg are in fact now simply
      examples of classes which do this). A use case for this is for
      example, if a user wishes to use an algorithm base class which
      ultimately inherits from GaudiAlgorithm, say 'RichAlgBase', but
      also wishes to have histogramming available, they can now do so
      by creating an algorithm which inherits from *both* RichAlgBase
      and GaudiHistos.

 - Add support for 'easy' 1D and 2D profile histograms to GaudiHistos

 - Add support for alpha-numeric histogram and ntuple IDs in
   GaudiHistos and GaudiTuples. Acheived by extending
   GaudiAlg::HistoID which was previously a typedef to an integer,
   into a simple class with both integer and string constructors.

================ GaudiAlg v9r0 ======================================
! 2005-08-06 - Vanya BELYAEV

 - a lot of minor modifications, but everything
   is *BACKWARD COMPATIBLE* modifications are forced mainly
   by requirement of better interactive functionality in
   Python-mode

                    Major Modifications:
                   ======================

       I. GaudiAlgorithm & GaudiTool
       -----------------------------

   I.A) The same classes GaudiAlgorithm & GaudiTools now are equipped
      with the embedded generic statistical "counters", e.g.

       if ( 100 < nTrack  ) { ++counter("busy event") ; }

       counter("#Tracks") += tracks->size() ;

   The counters are based on modified  StatEntity object from
   GaudiKernel package.

       StatEntity& ok = counter("OK") ;
        ok += 10 ;
        ok -= 10 ;
        ++ok ;
        --ok ;
        ok++ ;
        ok-- ;

   They provide the access to the overall number
   of invocations, mean value min/max/rms, etc... , e.g.

        const StatEntyty& nTrack = counter("#nTrack") ;
        double nTrack_MEAN = nTrack.flagMean() ;
        double nTrack_RMS  = nTrack.flagRMS () ;
        double nTrack_MIN  = nTrack.flagMin () ;
        double nTrack_MAX  = nTrack.flagMax () ;

   The actual functionality comes from StatEntity object,
   which allows "additive" and "multiplicative" arithmetic.

   I.B) The base classes GaudiAlgorithm and GaudiTool now get three
      new properties:

   ======================================================================
      Property   | default value |       description
   ==============+===============+=======================================
    "TypePrint"  |    true       | The actual algorithm/tool C++ type
                 |               | to be used in the standard "Print"
                 |               | printout.
   --------------+---------------+---------------------------------------
    "StatPrint"  |   false       | The printout of general statistical
                 |               | counters to be performed at the
                 |               | finalization step.
   --------------+---------------+---------------------------------------
   "ErrorsPrint" |    true       | The printout of exception/error/warning
                 |               | counters to be performed at the
                 |               | finalization step.
   ======================================================================

   The choice of default values guarantees the absolute backward
   compatibility.

   The public accessors("getters") to these new properties are provided:

         bool typePrint   () const ;
         bool statPrint   () const ;
         bool errorsPrint () const ;

   I.C) The base classes GaudiAlgorithm and GaudiTool now get two
      new public methods:

         long printStat   () const ;
         long printErrors () const ;

      These new methods allows "dump" the current values of
      general statistical counters ("printStat") and the
      exception/error/warning counters ("printErrors").
      The return value is a total number of corresponding
      counters

     II. GaudiHistoAlg & GaudiHistoTool
     -----------------------------------

  II.A) The base classes GaudiHistoAlg and GaudiHistoTool now get
        new property:

   ======================================================================
      Property   | default value |       description
   ==============+===============+=======================================
    "HistoPrint" |   false       | The printout of general information
                 |               | about booked histograms (ID,title,
                 |               | #entries,<X>,rms) to be performed
                 |               | at finalization step
   ======================================================================

   The public accessor("getter") to this new property is provided:

         bool histosPrint   () const ;

   II.B) The base classes GaudiHistoAlg and GaudiHistoTool now get
         the new public method:

         long printHistos () const ;

      These new methods allows to perform printout of
      general information about all currently booked
      histograms (ID, title, #entries, <X>, rms, ...)

   II.C) The bug is fixed in the filling of 3D-histograms


     III. GaudiTupleAlg & GaudiTupleTool
     -----------------------------------

  III.A) The base classes GaudiTupleAlg and GaudiTupleTool now get
         two new properties:

   ======================================================================
      Property   | default value |       description
   ==============+===============+=======================================
   "NTuplePrint" |   false       | The printout of general information
                 |               | about booked N-Tuples (ID,title,
                 |               | #items, item list,...) to be performed
                 |               | at finalization step
   --------------+---------------+---------------------------------------
   "EvtColsPrint"|   false       | The printout of general information
                 |               | about booked Event Tag Collections
                 |               | (ID,title, #items, item list,...) to
                 |               | be performed  at finalization step
   ======================================================================

   The public accessors("getters") to these new properties are provided:

         bool tuplesPrint    () const ;
         bool evtColsPrint   () const ;

  III.B) The base classes GaudiTupleAlg and GaudiTupleTool now get
         two new public method:

         long printTuples  () const ;
         long printEvtCols () const ;

      These new methods allows to perform a printout of
      general information about all currently booked
      N-Tuples and Event Tag Collections
      (ID, title, #items, item list, etc..)

      IV. Technical modifictaions to please python.
      ----------------------------------------------

   1) For *Tool.h classes few methods have been moved from
   the private/protected into the public interface
   2) For *Tuple* classes few methods have been moved from
   the private/protected into the public interface
   3) Some code duplication is eliminated from GaudiToolImpl.h
   and GaudiAlgorithmIml.h files. In particular the namespaces
   GaudiAlgLocal and GaudiToolLocal are eliminated. The components
   have been merged togather into reimplemented GaudiAlg namespace
   4) New files GaudiAlg/Print.h and src/lib/Print.cpp to
      (a) make easier implementation of new "print*" methods in
      the base classes and (b) make trivial printout of this
      classes in the python
   5) Imporved Doxygen comments for some classes/files/methods

  Nes files:
  ==========

  $GAUDIALGROOT/GaudiAlg/GaudiAlg.h
  $GAUDIALGROOT/GaudiAlg/Print.h
  $GAUDIALGROOT/src/lib/GaudiAlg.cpp
  $GAUDIALGROOT/src/lib/Print.cpp


! 2005-08-05 - Olivier Callot
 - Remove the printing of the context in GaudiAlgorithm and GaudiTool
   constructors: This was using 'info()' which was not properly initialised
   and thus is no longer working: setting OutputLevel to 2 or 1 had no effect.

! 2005-07-29 - Olivier Callot
 - patch #493. Add a jobOption 'GlobalTiming' (bool) to the
   SequencerTimerTool. If set 'true', this forces 'measureTime' for
   all GaudiSequencer. Default is false. This is a way to get an
   indented list of the algorithms used in a job.

! 2005-07-18 - Hubert Degaudenzi
 - patch applied to solve bug #9470 from Mattias Ellert.

================ GaudiAlg v8r9 ======================================
! 2005-06-23 - Olivier Callot
 - New data member 'm_context' and public accessor 'context()' for
   GaudiAlgorithm and GaudiTool, a string which is passed from
	 GaudiSequencer to created GAudiAlgorithms, or to GaudiTools
   created by a GaudiAlgorithm or GaudiTool.
   If the value is non empty, it is printed in the base class
   constructor and available as early as in the class constructor.

! 2005-06-17 - Olivier Callot
 - New method to ISequencerTimerTool : int indexByName( std::string )
   This returns the index of the timer with that name. Leading and
   trailing spaces are ignored. If not found, -1 is returned. This
   can be used to get the time spent on the current event by another
   algorithm, using 'lastTime( int )', for monitoring purpose.

================ GaudiAlg v8r8 ======================================
! 2005-05-18 - Olivier Callot
 - Change the time normalisation in SequencerTimerTool: Default is not
   to normalise, i.e. to print measured time, but we always pring the
   value of the normalisation factor, now compared to 2.8 GHz Xeon.

! 2005-05-01 - Vanya BELYAEV

 - GaudiAlg/TupleObj.h, src/lib/TupleObj.cpp

   add 3 families of new methods
   (1) "array" :
       put a FIXED-size arrays/vetors in to N-Tuple
       This possibility is often useful to allow
       a more names/varianbles to be put into N-Tuple
   (2) "matrix" :
       put a FIXED-size MATRICES into N-Tuple
   (3) "fmatrix" :
       put a VARIABLE-size MATRICES into N-Tuple

  Typical examples:
  =================

    // fixed-size array (A)
    const size_t nCol =  50 ;
    double array1[nCol] ;
    tuple -> array( "a1" , array1 , array1 + nCol ) ;

    // fixed-size array (B)
    typedef std::vector<double> Array ;
    Array array2 = ... ;
    tuple -> array( "a2" , array2 ) ;

    // fixed-size array (C)
    CLHEP::HepVector array3 = ... ;
    tuple -> array( "a3" , array3 , array3.num_row() ) ;

    // fixed-size matrix (A)
    const size_t nRow = 15 ;
    const size_t nCol =  5 ;
    double mtrx1[nRow][nCol] ;
    ...
    tuple -> matrix ( "m1" , mtrx1 , nRow , nCol ) ;

    // fixed-size matrix (B)
    const CLHEP::HepMatrix mtrx2 = ... ;
    tuple -> matrix ( "m2"            ,
                      mtrx2           ,
                      mtrx2.num_row() ,
                      mtrx2.num_col() ) ;

    // fixed-size matrix (C)
    typedef std::vector<double> Row  ;
    typedef std::vector<Row>    Mtrx ;
    Mtrx mtrx3 = Mtrx( nRow , Row( nCol ) ) ;
    ...
    tuple -> matrix ( "m3" , mtrx3 , nRow , nCol ) ;

    // variable-size matrix (A)
    Mtrx mtrx4 = Mtrx( nRow , Row ( nCol ) ) ;
    ...
    tuple-> fmatrix( "m4"          ,
                     mtrx.begin () ,
                     mtrx.end   () ,
                     nCol          ,
                     "Len1"        ,
                     100           ) ;

    // variable-size matrix (B)
    Mtrx mtrx5 = Mtrx( nRow , Row ( nCol ) ) ;
    ...
    tuple-> fmatrix( "m5"          ,
                     mtrx          ,
                     nRow          ,
                     nCol          ,
                     "Len2"        ,
                     100           ) ;

    // "direct"("cross") product of variable vector of data
    // with fixed size vector of  functions/functors
    Array array4 = .... ; // vector of data (variable size)
    ...
    typedef double (*fun) ( double ) ;
    typedef std::vector<fun> Funs    ;
    Funs.push_back( sin ) ;
    Funs.push_back( cos ) ;
    Funs.push_back( tan ) ;

    tuple -> fmatrix ( "m6"            ,
                       funs.begin   () ,
                       funs.end     () ,
                       array4.begin () ,
                       array4.begin () ,
                       "Len6"          ,
                       200             ) ;

     //It is especially convinient to be used in conjunction with
     //LoKi functors (or any piece of software which uses the concept
     //of generic functors)

      typedef std::vector<Fun>  VctFun ;

      // sequence of Particles
      Range particles = .... ;

      // vector of functions:
      VctFun funs ;
      funs.push_back( E  / GeV ) ;
      funs.push_back( PX / GeV ) ;
      funs.push_back( PY / GeV ) ;
      funs.push_back( PZ / GeV ) ;
      funs.push_back( PT / GeV ) ;
      funs.push_back( M  / GeV ) ;
      funs.push_back( ID       ) ;

       // fill N-Tuple with information abvout each particle
       tuple -> fmatrix ( "vars"             ,
                          funs.begin      () ,
                          funs.end        () ,
                          particles.begin () ,
                          particles.end   () ,
                          "nParts"           ,
                          200                ) ;

  - GaudiAlg/Tuples.h
    add new useful adapter to resurrect a possibility to
    use pointer to functions in conjunction with
    TupleObj::* methods (this possiblity has been
    eliminated by gcc 3.X compiler: pointer to function
    has never been evaluates as "const TYPE&" in template
    instantiations)

    using namespace Tuples ;

    typedef std::vector<double> Array ;
    Array arr = ... ;

    tuple -> farray ( "sinarr"        ,
                      useFun  ( sin ) , // use adapter!
                      "cosarr"        ,
                      useFun  ( cos ) , // use adapter!
                      "tanarr"        ,
                      useFun  ( tan ) , // use adapter!
                      arr.begin ()    ,
                      arr.end   ()    ,
                      "Length"        ,
                      500             ) ;



================ GaudiAlg v8r7 ======================================
! 2005-04-14 - Vanya Belyaev
  - removed memory leaks in GaudiTool and GaudiAlgorithm finalize method.

The missing include is

#include "GaudiAlg/TupleObj.h"

================ GaudiAlg v8r6 ======================================
! 2005-02-02 - Vanya Belyaev
 - TupleObj.h/.cpp: Overcome the problem that CLHEP::Hep3Vector and
                    HepGeom::BasicVector3D<double>  are completely unrelated classes
                    in the new CLHEP.

================ GaudiAlg v8r5 ======================================
! 2005-02-02 - Chris Jones
 - Added #include "GaudiAlg/TupleObj.h"
 - Changes in comments to fix Doxygen documentation
================ GaudiAlg v8r4 ======================================
! 2005-01-18 - Chris Jones
 - Updates to GaudHistoAlg and GaudiHistoTool to add 2D and 3D histograms
 - Various improvements to the doxygen comments
 - Downgrade the warning messages about histogramming or ntupling turned off
   to debug level

================ GaudiAlg v8r3 ======================================
! 2005-01-10 - Pere Mato
 - GaudiSequencer: Added the option "ReturnOK" forcing the sequencer to return a good status.
   This will be useful for DaVinci and Hlt studies.  (Olivier Callot)

! 2004-11-12 - Olivier Callot
 - Change the normalisation of the SequencerTimerTool: Now done with user time,
   less accuirate ( 10ms step) but reproducible ! Need to measure on 1 second
   to get 100 ticks to get some accuracy. shots defaults to 2 167 000.

================ GaudiAlg v8r2 ======================================
! 2004-10-20 - Olivier Callot
 - Use the 'filterPassed' result even if the algorithm was already run and not
   run a second time, in GaudiSequencer.
 - The SequencerTimerTool normalizes all the measurement times to a  random
   number generation loop, which takes 100 ms on a 1 GHz P3. Can be changed
   with the option 'shots' = 207500 by default. Normalisation printed at the
   finalization of the tool, in the table.
   This normalisation can be removed by the option 'normalised = false'

================ GaudiAlg v8r1 ======================================
! 2004-10-13 - Marco Cattaneo
 - In GaudiHistoAlg, GaudiHistoTool:
   . Remove m_histoPath member variable and setHistoPath accessor
   . Full histogram path is build explicitly when invoking histoPath() function
   > These changes allow to modify histoTopDir and histoDir even after initialize
   > Equivalent changes done also in GaudiTupleAlg, GaudiTupleTool
 - Many fixes to doxygen comments to suppress doxygen warnings

! 2004-09-06 - Vanya Belyaev
 - GaudiAlgorithmImp.h, GaudiToolImp.h: typo in the implementation of method ::exist().

! 2004-08-03 - Olivier Callot
 - In SequencerTimerTool, prevent printing two consecutive lines with the same
   name: This occurs when a Sequencer calls a Sequencer and both are timed. The
   two lines have almost the same values.


================ GaudiAlg v8r0 ======================================
! 2004-07-12 - Pere Mato
 - Merged with GaudiTools package to avoid cyclic dependency

! 2004-07-02 - Vanya BELYAEV
 - GaudiAlgorithm: Added exist() method to check existence of objects in Gaudi Transient Store
                   Added existDet() method to check existence of objects in Detector Transient Store
                   Added getOrCreate() method to get or create objects in the Event Transient Store
 - GaudiTool: Added exist() method to check existence of objects in Gaudi Transient Store
              Added getOrCreate() method to get or create objects in the Event Transient Store
 - Added AIDA namespace for Histograms
 - Added the message "The ERROR message is suppressed : ....." when a error is supressed
 - CheckForNaN.h header file
 - New GaudiHistoTool: The base class for tools, equipped with histogramming facilities
 - New GaudiTupleTool: The base class for tools, equipped with N-tuple facilities
 - Added three new tools:  ErrorTool, HistoTool, TupleTool

! 2004-07-06 - Pere Mato
 - requirements: adapted to use new LCGCMT interface packages

================ GaudiAlg v7r3p1 ======================================
! 2004-07-02 - Patrick Koppenburg
 - GaudiHistoAlg.cpp Fixed uninitialzed variable.

================ GaudiAlg v7r3 =======================================
! 2004-06-04 - Olivier Callot
 - Fix the way to return an error in GaudiSequencer, my bad understanding of
   the GaudiAlgorithm methods.

! 2004-06-14 - Marco Cattaneo
 - HbookName.h: Changed the length of Hbook names from 8 to 16


! 2004-05-24 - Olivier Callot
 - Add new algorithm GaudiSequencer (.h, .cpp), to replace the Sequencer. Uses
   a private auxiliary class AlgorithmEntry.h.
   Auxiliary tool SequencerTimerTool(.h, .cpp), with private class
   TimerForSequencer.h, to measure the time taken in the sequencer.

! 2004-05-28 - Marco Cattaneo
 - GaudiHistoAlg.h/.cpp:
   . Change default value of HistoSplitDir option to false. The true option is
     useful only for HBOOK persistency, if algorithm name is longer than 16 chars
   . Re-order data member initialization to avoid gcc warnings

! 2004-04-28 - Matthew David Needham
 - GaudiHistoAlg.h: Added function missing from the implementation of the
  GaudiHistoAlg class (as is described in the documentation !)

! 2004-04-28 - Gerhard.Raven@nikhef.nl
 - Corrected tiny typos in GaudiTupleAlg

================ GaudiAlg v7r2 =======================================
! 2004-04-01 - Pere Mato
 - requirements: added -no_auto_imports for AIDA
   [bugs #2797] Missing no_auto_import in GaudiAlg requirements (Marco Cattaneo)

! 2004-03-15 - Vanya BELYAEV
 - GaudiAlg/Tuple.h
  fix a trivial and stupid bug in the
  implementation of Tuples::make_column and Tuples::Column
  partial specializations

================ GaudiAlg v7r1 =======================================
! 2004-03-04 - Vanya Belyaev
 - The purpose of these modification is to provide the possibility
   to extend the N-tuple "representation" of specific "complex" objects
   (e.g. EventHeader, L0DUReport, or L1Report) through class template
   specializations. It could be useful also to modify the default representation
   of e.g. HepLorentzVector. The default implemtation puts 4 components in the
   Ntuple, but for local specialization one could use alternative
   representation e.g. mass & pt.
   Aslo the possibility to use other implementations of TupleObj class in
   derived classes is provided.

================ GaudiAlg v7r0 =======================================
 - GaudiAlgorithm, GaudiHistoAlg,GaudiTupleAlg - new base classes for
   user algorithms with
    - easy and safe access to tools, services, and data in  TES
    - error handling
    - histogramming
    - ntuples
   The detailed description if available  in doc/GaudiAlg.tex file

================ GaudiAlg v6r5 =======================================
! 2003-11-20 - Pere Mato
 - removed compilation warnings

================ GaudiAlg v6r4 =======================================
! 2003-01-06 - Sebastien Ponce
 - better support for gcc 3.2

================ GaudiAlg v6r3p1 =======================================
! 2002-11-29 - Pere Mato
 - Corrections to support linking applications statically

================ GaudiAlg v6r3 =======================================
! 2002-09-27 - Vanya Belyaev
 - Corrected bug it setDetData()
 - Added macro ALG_ERROR to print file name and line number when reporting errors

================ GaudiAlg v6r2 =======================================
! 2002-09-27 - Pere Mato
 - Added new base class GaudiAlgorithm developed originally in the context of
   the LHCb Calorimeter (Ivan Belyaev [Ivan.Belyaev@cern.ch])

   The most essential features

   1) 3 predefined properties: a) "Input", b) "Output", c) "Detector"
      for value of each property the special accessor is defined:
      inputData(), outputData(), detData()

   2) initialize method prints the values of all used properties
      in MSG::DEBUG mode

   3) Simplified error/warning/exceptions/printing:

      StatusCode sc = ... ;
      if( sc.isFailure() ) { return Error("something wrong here!",sc);}
      ...
      if( sc.isFailure() ) { return Warning("something wrong here!",sc);}

      Each errors and warning are counted internally and at the end
      one has the full printout of all errors, warnings and exceptions.

      The actual error message is extended with the name the actual
      type (RTTI) of the algorithm

   4) Easy way to deal with exceptions (catch, throw, re-throw)

     a) throw the exception:

      if( sc.isFailure() ) { return Exception(" something wrong here!");}

      "Return" here is artificial. Nothing is actually returned.
      and exception is thrown

     b) catch and rethrow the exceptions
      try { ... }
      catch( const GaudiException& e1 )  {
        /* do something here */
        /// rethrow the exception (if needed)
        return Exception(" coudl not recove Gaudi exception, rethrow it ", e1 );
      }
      catch( const std::exception& e2 )  {
        /* do something here */
        /// rethrow the exception (if needed)
        return Exception(" could not recove the std::exception, rethrow it ", e2 );
      }
      catch( ... ) {
        /* do something here */
        /// rethrow the exception (if needed)
        return Exception(" could not recove the unknown  exception ");
      }


   5) easy ("1 line") access to the data, e.g.

     const MCParticles* particles = get( eventSvc() , inputData() , particles  );

     In the case of errors, method throws an exception.
     Error message is printed.
     One does not need to check the value of pointer against null.
     For "DEBUG" output level the actual data type and location will be
     printed.

   6) easy ("one line) registration of object into GTES:

     MCParticles* particles = ... ;
     StatusCode sc = put( particles , outputData() );

     In the case of errors, method throws an exception.
     Error message is printed.
     One does not need to check the return value.
     For "DEBUG" output level the actual data type and
     location will be printed.


   7) easy ("one line") access to tools:

     IMyTool* mytool1 = tool( "some combination of type and name" , mytool1 , this ) ;
     IMyTool* mytool2 = tool( "some type", "some name" , mytool2 , this ) ;

     Both methods throw exception for unlocated tools.
     Type coudl be "Type" or "Type/Name" , Name could be "Name" or "",
     and any combination is possible and has sence.
     It is useful if one specify Type, Name or  Type/Name from properties.
     The methods are able to decoder properly all these cases.
     For "DEBUG" output level the actual tool type and name will be printed.

   8) Assertions

     StatusCode sc = ... ;
     Assert( sc.isSuccess() , " soem failure occurs! " );

     Assertions are efficient (they are inlined), they do not
     result in significant performance degradation and could be
     used for all purposes.

! 2002-09-24 - Pere Mato
 - Changes to clean the reference counting and memory deallocation
   detected by the "valgrind" tool. Changed files: Sequencer.cpp

!==============v6r1p1=======================================================
! 2002-09-23 - Florence Ranjard
 - requirements - use v*

!===============v6r1===========================================================
! 20020704 - Pere Mato
 - Eliminated INFO messages during the construction of the algorithm sequence
   Output a summary of it.

!===============v6r0===========================================================
! 20020205 - Pere Mato (v5r1)
 - Fixed bug reported by O. Callot that a Sequence must return an
   error when it can not create one or more of the member Algorithms.
   Changed Sequencer.cpp

! 20011210 - Pere Mato (v5r0)
 - Changes from David Quarrie concerning creating two libraries (linker + component)

! 20010705 - Pere Mato
 - Fixed CT0000000065248 (Sequencer does not test and propagate status on initialization)

! 20010702 - David Quarrie
 - Add beginRun/endRun handling to Sequencer, and rework the setting up
   of the Members and BranchMambers properties.

! 20010618 - v4 (Flr)
 - requirements - adapt to GaudiPolicy v5 and CMT v1r8

! 20010509 - Pere Mato
 - Fixed bug reported by M. Cattaneo (CT0000000059803). Sequencer should fail
   initialize() if any sub-algorithm fails.
 - Using GaudiKernel v10

! 20010226 - Pere Mato
  - Small changes to make it compile in NT

!=============================================================================
! 20010223 - David Quarrie
  - Add update callback handler for "Members" and "BranchMembers" properties.
    This allows them to be changed at run-time via the scripting interface.
  - Rename *.cxx to *.cpp to conform to GAUDI file name conventions.

!=============================================================================
! 20001108 GaudiAlg v1r1

!=============================================================================
! 20001025 - David Quarrie

  - Add support for an explicit branch and for inverted logic. The syntax
    is:

    Sequencer.Members       = { "First", "Second", "Third" };
    Sequencer.BranchMembers = { "Second", "Forth" };

    If the "Second" Algorithm passes the event, the "Third" Algorithm
    is executed. If it fails the "Forth" Algorithm is executed. The
    branch point is determined by the first element of the BranchMembers.

    The syntax for inverted logic is:

    Sequencer1.Members = { "First", "Second", "Third" };
    Sequencer2.Members = { "First", "Second:invert", "Forth" };

    If the "Second" Algorithm passes and event, the "Third" Algorithm
    is executed, otherwise the "Forth" Algorithm is executed.

!=============================================================================
!20000720 GaudiAlg v1

!=============================================================================
!20000621 Pere Mato
- This is a new package based on the code provided by David Quarrie (ATLAS)