    Package: GaudiRelease

    Package Coordinator: Marco Clemencic, Charles Leggett

    Purpose: Gaudi common set of packages

More recent versions

## Gaudi v20r4 (2008-12-15)

### Externals version: LCGCMT_55c

### Main Changes

- Patch #2699: First version of run records service (Marcus Frank).
- Fixed to compile with any of gcc 4.3, ROOT 5.21/06 and SLC5 (Marco Clemencic).

### Packages Changes

- GaudiKernel (v26r1):
  - Patch #2699: First version of run records service
    (Marcus Frank)
  - Fixed bug #44504. Inconsistent default for createIf flag for services
    (Marco Clemencic)
  - Fixed bug #44279. Ambiguous signature in setProperty functions
    (Marco Clemencic)
  - Fixed compilation problems with gcc 4.3 and ROOT 5.21/06
    (Marco Clemencic)
  - Improvements and fixes in ConfigurableUser
    (Marco Clemencic)
- GaudiPython (v9r4):
  - Fixed bug #45392: gaudrun.py returns status code 0 even if the application manager fails
    (Marco Clemencic)
- GaudiPolicy (v8r7):
  - Fixed compilation problems with SLC5
    (Marco Clemencic)
  - Fixes and improvements in GaudiTest.py
    (Marco Clemencic)
  - Patch #2664: Proper handling of shared libraries on Mac OSX platform.
    (Charles Leggett)
- GaudiAud (v8r8):
  - Patch #2710: NameAuditor support of new FSM
    (Frank Winklmeier)
- GaudiPoolDb (v4r2):
  - Patch #2699: First version of run records service
    (Marcus Frank)
- GaudiGridSvc (v1r8):
  - Disabled on SLC5.
    (Marco Clemencic)
- HbookCnv (v14r14):
  - Disable the build of the package on SLC5 (both i686 and x86_64) and with gcc-4.3
    (Marco Clemencic)
  - Fixed bug #44992: CHAR_BIT not defined in HbookCnv with gcc4.3
    (Charles Leggett)
- Gaudi (v20r4):
  - Fixed bug #45392: gaudrun.py returns status code 0 even if the application manager fails
    (Marco Clemencic)
- GaudiUtils (v2r2):
  - Fixed compilation problems with ROOT 5.21/06
    (Marco Clemencic)
- GaudiSvc (v17r3):
  - Fixed bug #45180: AuditorSvc creates duplicate auditors.
    (Charles Leggett)
  - Patch #2699: First version of run records service
    (Marcus Frank)
  - Patch #2698: StatusCodeSvc checks filter list too early
    (Charles Leggett)
  - Fixed compilation warning with gcc 4.3.
    (Marco Clemencic)
- GaudiExamples (v20r4):
  - Patch #2699: First version of run records service
    (Marcus Frank)
  - Improvements and updates in tests
    (Marco Clemencic)
- GaudiAlg (v11r3):
  - Fixed bug #44504. Inconsistent default for createIf flag for services.
    (Marco Clemencic)

## Gaudi v20r3 (2008-11-10)

### Externals version: LCGCMT_55b

### Packages Changes

- GaudiKernel (v26r0):
  - Major improvements in the usability of ConfigurableUser specializations. Mainly the automatic call of the method ConfigurableUser.__apply_configuration__ (or applyConf) and the addition of ConfigurableUser specialization to the database of configurables (see release notes)
    (Marco Clemencic)
  - Various fixed for Python job options ()
    (Marco Clemencic)
  - Fixed compilation errors and warnings on gcc 4.3
    (Marco Clemencic)
  - Fixed bug #43420. IPartPropSvc not accessible from Python
    (Marco Clemencic)
  - Fixed bug #43314. Memory leak in StatusCode
    (Marco Clemencic)
  - Fixed bug #42428. Properties of clones are not cloned.
    (Marco Clemencic)
  - Fixed bug #43065. Error when unpickling GaudiHandles.
    (Marco Clemencic)
  - Reverted old implementation (pre-FSM) of the reinitialize method of Algorithm, Service and AlgTool, i.e. do nothing. Fixes bug #39706
    (Marco Clemencic)
  - Fixed bug #42005. System::typeinfoName is missing 'signed char'
    (Sebastien Binet)
  - Fixed the cast of errno from "int" to "unsigned long". Fixes bug #25460.
    (Marco Clemencic)
  - Patch #2303. Improve/extend IAlgorithm interface
    (Marco Clemencic)
  - Fixed bug #39846. gaudirun.py creates invalid entries in flattened options
    (Marco Clemencic)
  - Patch #2073. SharedObjectsContainer and 'blind' access to TYPE::Container & TYPE::Selection
    (Vanya Belyaev)
  - Patch #2261. Introducing name alias for Algorithms and Services
    (Pere Mato)
  - Patch #2058. Extensions for AIDA::TProfile1D
    (Vanya Belyaev)
  - Patch #1797: Backtrace utility for System
    (Frank Winklmeier)
  - Patch #1796: Performance improvement for message reporting
    (Frank Winklmeier)
  - Fixed bug #39809 (wrong configuration of public tools).
    (Marco Clemencic)
  - Fixed bug #39250. Cannot use configurable instances as values for properties of type map<str,str>.
    (Marco Clemencic)
  - Fixed bug #39117. gaudirun.py export to old options does not handle correctly GaudiHandles.
    (Marco Clemencic)
  - Fixed bug #39116. gaudirun.py export to old options prints '#' instead of '//'
    (Marco Clemencic)
  - Added PrintOn and PrintOff functions to GaudiKernel.ProcessJobOptions to mimic the old "#pragma print"
    (Marco Clemencic)
- GaudiPython (v9r3):
  - Improvements in usability of ConfigurableUser specializations.
    (Marco Clemencic)
  - Fixed compilation errors and warnings on gcc 4.3
    (Marco Clemencic)
  - Fixed bug #38442. Support for alternative ApplicationMgr in GaudiPython
    (Charles Leggett)
  - Added support for serialization/deserialization of TES
    (Pere Mato)
  - Patch #2058. Extensions for AIDA::TProfile1D
    (Vanya Belyaev)
  - Patch #1938: Draw the native AIDA histograms through their internal ROOT representation
    (Vanya Belyaev)
- GaudiGSL (v6r10):
  - Fixed compilation errors and warnings on gcc 4.3
    (Marco Clemencic)
- GaudiPolicy (v8r6):
  - Added automatic registration of ConfigurableUser specializations to the database of configurables.
    (Marco Clemencic)
  - Fixed compilation errors and warnings on gcc 4.3
    (Marco Clemencic)
  - Improvements in the QMTest test class GaudiTest.py. (see release notes)
    (Marco Clemencic)
  - Added cmt action to create .pyc file in the InstallArea. To be called explicitly.
    (Hubert Degaudenzi)
  - Fixed bug #43114. Python clean make target not removing .pyc files
    (Marco Clemencic)
  - Fixed bug #35792: merge_genconfDb fragment does not need -dependencies
    (Marco Clemencic)
  - Fixed bug #39272. Cannot use cmt TestPackage before cmt make
    (Marco Clemencic)
  - Fixed bug #39273. Need separate qmtest reference files for slc4_ia32 and slc4_amd64 platforms
    (Marco Clemencic)
  - Added the ccache support and fixed gcov for gcc >= 3.4
    (Hubert Degaudenzi)
- GaudiAud (v8r7):
  - Patch #2183. Link to Atlas error policy in AlgErrorAuditor
    (Charles Leggett)
  - Patch #1939. Allow auditors to catch CustomEventTypes
    (Charles Leggett)
- GaudiPoolDb (v4r1):
  - Fixed compilation errors and warnings on gcc 4.3
    (Marco Clemencic)
- Gaudi (v20r3):
  - Improvements in gaudirun.py and Configurables (see release notes)
    (Marco Clemencic)
  - Added tests for various bugs (bug #42428, bug #43065, bug #39846, bug #39809, bug #39116)
    (Marco Clemencic)
  - Fixed bug #39846. gaudirun.py creates invalid entries in flattened options
    (Marco Clemencic)
  - Fixed bug #39116. gaudirun.py export to old options prints '#' instead of '//'
    (Marco Clemencic)
- GaudiUtils (v2r1):
  - Patch #2073: SharedObjectsContainer and 'blind' access to TYPE::Container & TYPE::Selection
    (Vanya Belyaev)
  - Patch #1943. Added update handler to MultiFileCatalog.Catalogs
    (Vanya Belyaev)
- GaudiSvc (v17r2):
  - Fixed compilation errors and warnings on gcc 4.3
    (Marco Clemencic)
  - Patch #2608. Thread-safe IncidentSvc
    (Frank Winklmeier)
  - Added an option to ApplicationMgr to enable/disable the initialization loop check. (Patch #2199)
    (Marco Clemencic)
  - Patch #2601. Introduce support for file summary records.
    (Marco Cattaneo)
  - Fixed bug #38572. THistSvc initialize/finalize cycles
    (Marco Clemencic)
  - Fixed bug #42509. Allow THistSvc to write multiple streams to the same file
    (Charles Leggett)
  - Fixed bug #41136. ToolSvc keeps tools even if initialize fails
    (Marco Clemencic)
  - Fixed bug #37049. Use recursive mutexes in MessageSvc
    (Marco Clemencic, Frank Winklmeier)
  - Fixed bug #41058. Better warning messages when a factory can't be loaded
    (Marco Clemencic)
  - Fixed bug #36917. Listen to all incidents
    (Marco Clemencic)
  - Patch #2261. Introducing name alias for Algorithms and Services
    (Pere Mato)
  - Patch #2400. Allow to suppress warnings in the EventLoopMgr
    (Markus Frank)
  - Patch #2058. Extensions for AIDA::TProfile1D
    (Vanya Belyaev)
  - Patch #1963. Add getGraphs() method to THistSvc
    (Charles Leggett)
  - Reimplemented IssueLogger::getTraceBack() in terms of the version of System::backTrace() introduced with patch #1797.
    (Marco Clemencic, Frank Winklmeier)
  - Patch #1796: Performance improvement for message reporting
    (Frank Winklmeier)
  - Patch #1750. Improved printout of Data-On-Demand Service
    (Vanya Belyaev)
- GaudiExamples (v20r3):
  - Fixed compilation errors and warnings on gcc 4.3
    (Marco Clemencic)
  - Patch #1964. GaudiExample to demonstrate Service initialization loops
    (Charles Leggett, Marco Clemencic)
  - Patch #2601. Introduce support for file summary records.
    (Marco Cattaneo)
  - Added an example (options/ConfigurableUser.py) of usage of ConfigurableUser.
    (Marco Clemencic)
  - Added test for few bug #41136.
    (Marco Clemencic)
  - Updated few reference files.
    (Marco Clemencic)
  - Patch #2509. Suppress messages in GaudiAlg when tools are loaded multiple times
    (Chris Jones)
  - Patch #2073: SharedObjectsContainer and 'blind' access to TYPE::Container & TYPE::Selection
    (Vanya Belyaev)
  - Patch #2261. Introducing name alias for Algorithms and Services
    (Pere Mato)
  - Patch #2058. Extensions for AIDA::TProfile1D
    (Vanya Belyaev)
  - Temporarily disabled the DataListener test, until the configuration problem is fixed (Ganga).
    (Marco Clemencic)
- GaudiMonitor (v1r5):
  - Fixed compilation errors and warnings on gcc 4.3
    (Marco Clemencic)
- GaudiAlg (v11r2):
  - Fixed compilation errors and warnings on gcc 4.3
    (Marco Clemencic)
  - Patch #2601. Introduce support for file summary records.
    (Marco Cattaneo)
  - Patch #2509. Suppress messages in GaudiAlg when tools are loaded multiple times
    (Chris Jones)
  - Patch #2506. GaudiSequencer: bug in setFilterPassed logic in case ModeOR=true, IgnoreFilterPassed=true
    (Gerhard Raven)
  - Patch #2483. Return pointer to 'put' object in GaudiCommon::put
    (Gerhard Raven)
  - Patch #2073: SharedObjectsContainer and 'blind' access to TYPE::Container & TYPE::Selection
    (Vanya Belyaev)
  - Patch #2058. Extensions for AIDA::TProfile1D
    (Vanya Belyaev)
  - Temporarily disabled the DataListener test, until the configuration problem is fixed (Ganga).
    (Marco Clemencic)

## Gaudi v20r2 (2008-07-17)

### Externals version: LCGCMT_55a

### Packages Changes

- GaudiKernel (v25r2):
  - Added the interface IEventTimeDecoder (from LHCb).
    (Marco Clemencic)
  - Fixed bug #38868. MinimalEventLoopMgr does not restart algorithms
    Implemented restart so that it calls the restart of all the algorithms. Fixed the implementation of reinitialize too.
    (Marco Clemencic)
  - Fixed bug #38855. Inconsistent check in Service::sysRestart. Fixed a the result of a bad cut & paste.
    (Gerhard Raven)
  - Patch #1756. Decrease the probability for FPE in StatEntity::addFlag
    Added a check in StatEntity::addFlag to avoid floating point exceptions.
    (Vanya Belyaev)
- GaudiAlg (v11r1):
  - Added the interface IGenericTool (from LHCb).
    (Marco Clemencic)
- GaudiPython (v9r2):
  - Added dictionary for IGenericTool.
    (Marco Clemencic)
  - Fixed:
    - bug #38885: no execute method for algorithms in GaudiPython
    - bug #38882: AppMgr.addAlgorithm does not work correctly after initialization
    (Marco Clemencic)
- GaudiExamples (v20r2):
  - Added test for bug #38882.
    (Marco Clemencic)

## Gaudi v20r1 (2008-06-30)

### Externals version: LCGCMT_55

### Packages Changes

- GaudiPolicy (v8r4):
  - Fixed bug #38208: The pattern GaudiApp does not work if inherited.
    Modified the pattern to use <package> and <version> instead of $(package) and $(version).
    (Marco Clemencic)
- GaudiKernel (v25r1):
  - Fixed:
    - bug #38206: gaudirun.py fails to set a list property from a property reference.
    - bug #38194: gaudirun.py expands too many environment variables Avoid to expand the environment variables in the strings.
    (Marco Clemencic)
- GaudiPython (v9r1):
  - 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).
    (Marco Clemencic)
- Gaudi (v20r1):
  - Added tests for bug #38206 and bug #38194.
    (Marco Clemencic)

## Gaudi v20r0 (2008-06-13)

### Externals version: LCGCMT_55

### Packages Changes

- GaudiPolicy (v8r3):
  - Added a pattern to generate a header file containing macros to identify the version of the project.
    (Marco Clemencic)
  - Changed the name of the extension for libraries on OSX from ".dylib" to ".so".
    (Charles Leggett)
  - Added a path cleaner to the global Gaudi setup. This is removing invalid or empty components in the PATH, LD_LIBRARY_PATH, JOBOPTSEARCHPATH, PYTHONPATH.
    (Hubert Degaudenzi)
  - Added the pattern pyd_module in order to be able to create python binary modules (.pyd files).
    (Hubert Degaudenzi)
- GaudiKernel (v25r0):
  - Fixed bug #37690: message svc release() in Auditor destructor. (Charles Leggett, Marco Clemencic)
  - Fixed few bugs:
    - bug #36742: Cannot pickle options using "PropertyReference"
    - bug #37479: gaudirun.py fails parsing old option lines with comments and quotes
    - bug #37488: importOptions does not expand environment variables
    - bug #35347: Cannot import 2 Python option files with the same name
    - bug #35913: Configurables type checking fails on Gaudi::Histo1DDef
    - bug #34769: Assigning a configurable to a list property does not fail
    (Marco Clemencic)
  - Patch #1865. Better printouts for HistorySvc.
    (Charles Leggett)
  - Task #5809. Extension to Gaudi Application state machine (see release notes of the package).
    (Marco Clemencic)
  - Patch #1865. Improvements for Chrono/ChronoStat&IChronoSvc.
    (Vanya Belyaev)
  - Added small interface (IFileAccess) for services/tools that allow read-only file access agnostic of the storage backend (filesystem, web, CondDB, ...).
    (Marco Clemencic)
- GaudiSvc (v17r0):
  - Modified the way the EndEvent incident is fired by the EventLoopMgr. Instead of after the top algorithms, it is now fired before BeginEvent (if appropriate) and at the beginning of EventLoopMgr::stop.
    (Marco Clemencic)
  - Fixed bug #26327. JobOptionsSvc::finalize is never invoked.
    (Marco Clemencic)
  - Patch #1865. Better printouts for HistorySvc.
    (Charles Leggett)
  - Patch #1819. Fix printout in THistSvc.
    (Charles Leggett)
  - Task #5809. Extension to Gaudi Application state machine (see release notes of the package).
    (Marco Clemencic)
  - Patch #1806. Reduced default print-out of DataOnDemandSvc.
    (Patrick Koppenburg)
  - Patch #1801. Allow exclusion in HistogramPersistencySvc.
    (Vanya Belyaev)
  - Patch #1761. Fixed print-out in ToolSvc.
    (Vanya Belyaev)
  - Patch #1756. Improvements for Chrono/ChronoStat&IChronoSvc.
    (Vanya Belyaev)
  - Minimal implementation of IFileAccess interface:
    - Added small service (VFSSvc, Virtual File System Service) implementing the interface IFileAccess, to dispatch the call to tools implementing the actual protocols.
    - Added a tool to provide the basic implementation of IFileAccess to access files on the filesystem.
    - Modified the ParticlePropertySvc to use VFSSvc to open the file containing particle properties.
    (Marco Clemencic)
- GaudiUtils (v2r0):
  - Patch #1861. Prevent division-by-zero results in skewness and kurtosis.
    (Chris Rob Jones)
  - Task #5809. Extension to Gaudi Application state machine (see release notes of the package).
    (Marco Clemencic)
- GaudiPoolDb (v4r0):
  - Patch #1794.
    - Adapt GaudiPoolDb to SEAL-free implementation of POOL.
    - Fixed bug #34176: Remove link dependencies on POOL component libraries.
    (Markus Frank)
- GaudiAlg (v11r0):
  - Fixed bug #36021. Unchecked StatusCodes in GaudiCommon<T>::releaseTool.
    (Chris Rob Jones)
  - Patch #1862. Extend space for 'counter' name in GaudiAlg summary.
    (Chris Rob Jones)
  - Task #5809. Extension to Gaudi Application state machine (see release notes of the package).
    (Marco Clemencic)
  - Patch #1807. Reduced default print-out of GaudiHistos and GaudiTuples.
    (Patrick Koppenburg)
- GaudiPython (v9r0):
  - Patch #1866. Enable pickle support in GaudiPython.
    (Pere Mato)
  - Task #5809. Extension to Gaudi Application state machine (see release notes of the package).
    (Marco Clemencic)
- Gaudi (v20r0):
  - Added tests for bug #36742, bug #37479, bug #37488, bug #35347, bug #34769.
    (Marco Clemencic)
  - Added to the command line option "--option" to gaudirun.py. It allows to specify Python lines to be executed after the standard configuration to modify it. E.g.:
    `gaudirun.py default.py --option "MessageSvc().OutputLevel = DEBUG"`
    (Marco Clemencic)
- GaudiExamples (v20r0):
  - Updated reference files and tests (see release notes of the package).
    (Marco Clemencic)

## Gaudi v19r9 (2008-04-11)

### Externals version: LCGCMT_54d

### Packages Changes

- GaudiPolicy (v8r2):

- Added patterns to produce and use helper libraries for genconf. The helper libraries are useful if the constructors of the compenents need special actions to be taken before the instantiation.
  (Hubert Degaudenzi)
- Patch #1724. Do not create stamp files in the InstallArea for merged files.
  The stamp files created by merge_files.py for rootmap files are read by ROOT because it thinks they are real rootmap files, slowing down the application startup. The script and the related fragments have been modified to create the stamp files in the same directories of the files to be merged.
  (Sebastien Binet)
- Added a pattern to define the environment variables GAUDIAPPNAME and GAUDIAPPVERSION, used by gaudirun.py to set the default values for the corresponding ApplicationMgr properties.
  (Marco Clemencic)
- Added a generic fragment/document to call a script.
  (Marco Clemencic)

- GaudiKernel (v24r0):

- Patch #1751. Fixed a typo in `Stat::operator-=`.
  (Vanya Belyaev)
- Fixed Bug #35201. Python options parser '//' interpreted as comment in strings.
  (Marco Clemencic)
- Fixed Bug #34680. Some obsolete methods were not forwarding the call to the relevant new methods.
  (Marco Clemencic)
- Patch #1757. Detect creation/initialization loops for services.
  Modified the way the state of the service is set:
  - the base class initialize sets the state to CONFIGURED
  - the service becomes INITIALIZED in the sysInitialized, after the specialized service completed (successfully) the initialization
  (Charles Leggett)
- Modified DataStreamTool to call `sysInitialize` instead of `initialize` for conversion services. (related to Patch #1757)
  (Marco Clemencic)
- Bug #34752/Patch #1747. Fixed a problem with `GaudiHandleArray.__getstate__` preventing pickling.
  (Sebastien Binet / Martin Woudstra)
- Patch #1751. Changed the signature of `declareProperty`/`declareRemoteProperty` methods to get `Property*` instead of `void` or a `StatusCode` that is always success.
  (Vanya Belyaev)
- Patch #1725. New IAuditor interface.
  - The Auditor member functions are now only 8, for all the combinations of:
    - before or after
    - standard event or custom event
    - INamedInterface* or string
  - All the after methods accept a StatusCode (if not specified, a SUCCESS with the checked flag set is used).
  - The obsolete member functions are kept for backward compatibility.
  - The default implementations of "before" and "after" are using the obsolete methods to make legacy Auditors to work.
  - IAuditorSvc is now an extension of IAuditor.
  - AuditorGuard has been adapted to the new interface and the audit with a status code check is simpler.
  - The standard event types defined in the enum IAuditor::StandardEventType can be printed and converted to strings with operator<<.
  (Marco Clemencic)
- Python job options:
  - Removed the possibility of assigning a tool to an attribute of a configurable if that attribute/property does not exists. It was intended to allow simple declaration of private tools, but it is dangerous because it avoids the checking of the spelling of properties.
  - Modified Configurable.addTool() to accept a subclass of ConfigurableAlgTool as first argument (as well as an instance) to avoid the instantiation of an unneeded instance of the public tool configurable.
  (Marco Clemencic)
- Added a work around for ROOT bug #34282 in dict/dictionary.xml (excluded few data members of `Gaudi::Time`).
  (Marco Clemencic)
- Fixed Bug #34046. False warning when mixing Python options and old options. The check on the case of old options have been improved.
  (Marco Clemencic)
- Modified genconf to take an extra argument "--load-library" to which the full path of a helper library is passed.
  (Hubert Degaudenzi)

- GaudiSvc (v16r5):

- Patch #1765. Allow THistSvc to write to the same file storegate is writing to. This functionality is needed for the UserDataSvc in ATLAS.
  (Yushu Yao)
- Hack to change the order of finalization such that HistorgamDataSvc is finalized after ToolSvc (avoids segmentation faults).
  (Marco Clemencic)
- Patch #1757. Detect creation/initialization loops for services.
  Modified the way the state of the service is set:
  - the base class initialize sets the state to CONFIGURED
  - the service becomes INITIALIZED in the sysInitialized, after the specialized service completed (successfully) the initialization
  (Charles Leggett)
- Fixed problems introduced with patch #1757.
  - Modified ApplicationMgr to call sysInitialize instead of initialize for JobOptionSvc and MessageSvc (see also bug #26327).
  - Modified also NTupleSvc, TagCollectionSvc and RndmGenSvc to use sysInitialize instead of initialize for their sub-services.
  (Marco Clemencic)
- Patch #1763. Demote some ERROR messages to WARNINGs in HistorySvc.
  (Charles Leggett)
- Patch #1744. Speed up HistorySvc by caching a MsgStream.
  (Charles Leggett)
- Fixed Bug #34121. Solved a problem in the check on the emptiness of tool type/name in `ToolSvc::retrieve`.
  (Marco Clemencic)

- GaudiUtils (v1r6):

- Patch #1749. Improve some printout of the histogram.
  (Vanya Belyaev)
- Fixed Bug #33372 (Patch #1746). Fixed memory leak in XmlFileCatalog.
  (Markus Frank)

- GaudiAlg (v10r5):

- 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.
  (Marco Clemencic)
- Fixed Bug #34565: Unchecked StatusCode in GaudiTuples<>::initialize().
  (Marco Clemencic)
- Patch #1749. Improvements of print-outs.
  (Vanya Belyaev)
- Patch #1725. Modified TimingAuditor to implement the new IAuditor interface for both standard events and user events.
  (Marco Clemencic)

- GaudiAud (v8r5):

- Patch #1717. Audit memory at initialize time.
  Uncommented the function to get the memory utilization after initialize (in MemStatAuditor).
  (Charles Leggett)

- Gaudi (v19r9):

- Added a test for bug #35201.
  (Marco Clemencic)
- Fixed Bug #34046. False warning when mixing Python options and old options.
  (Marco Clemencic)
- Modified Gaudi.Main.gaudimain to use the environment variables GAUDIAPPNAME and GAUDIAPPVERSION to set the default values for the ApplicationMgr properties AppName and AppVersion.
  (Marco Clemencic)

- GaudiExamples (v19r9):

- Added an example/test to show how to audit some pieces of user code (AuditorTestAlg), and how to write a minimal auditor (LoggingAuditor).
  (Marco Clemencic)
- Updated the reference files for the changes introduced with Patch #1749.
  (Marco Clemencic)
- Added a test for bug #34121.
  (Marco Clemencic)

## Gaudi v19r8 (2008-02-29)

### Externals version: LCGCMT_54b

### Packages Changes

- GaudiPolicy (v8r1):

- Minor improvements.
  (Marco Clemencic, Hubert Degaudenzi)

- GaudiKernel (v23r4):

- Modified IInterface::hash32 to use and return `unsigned int` instead of `unsigned long` for portability.
  (Vanya Belyaev)
- Patch #1666, Patch #1687. Interface changes to allow the implementation of special tools in Athena.
  (Yushu Yao)
- Patch #1668. Hack to avoid a problem with ServiceHandles in Python 2.5 (`__str__` called instead of `toStringProperty`).
  (Charles Leggett)
- Improvements to Python options: Fixed bug #33209 and added a (limited) lock on configurables to try to avoid that people use them after the ApplicationMgr has been instantiated.
  (Marco Clemencic)
- Patch #1710. Convenience method for removing entries from GaudiHandleArray by name.
  (Wim Lavrijsen)
- Patch #1711. Get all instances of a tool type, function used in the Atlas event display.
  (Charles Leggett)
- Hack to avoid a conflict in the way Configurables are used in Athena and Gaudi.
  (Marco Clemencic)

- GaudiSvc (v16r4):

- Patch #1652, fixed reference counting in HistorySvc.
  (Charles Leggett)
- Patch #1656, improved debugging messages for IncidentSvc.
  (Frank Winklmeier)
- Fixed Bug #33036, unchecked StatusCode in HistorySvc::initialize.
  (Marco Clemencic)
- Patch #1711. Get all instances of a tool type, function used in the Atlas event display.
  (Charles Leggett)

- GaudiUtils (v1r5):

- Patch #1700, fixed the filter mechanism to reduce the number of messages for inaccessible objects.
  (Markus Frank)
- Fixed Bug #33372, tiny memory leak in XmlFileCatalog.
  (Markus Frank)
- Patch #1722, fixed dataset access by LFN. Was simply not working.
  (Markus Frank)

- GaudiPoolDb (v3r1):

- Patch #1700, fixed the filter mechanism to reduce the number of messages for inaccessible objects.
  (Markus Frank)

- GaudiAlg (v10r4):

- Fixed Bug #30209, added support for namespaced algorithms in Sequencer.
  (Marco Clemencic)

- GaudiGSL (v6r9):

- Fixed a linkage problem with libgsl.so and libgslcblas.so.
  (Hubert Degaudenzi, Marco Clemencic)

- GaudiPython (v8r19):

- Fixed Bug #32854, MessageSvc options ignored in Python.
  (Marco Clemencic)
- Hack to avoid a conflict in the way Configurables are used in Athena and Gaudi.
  (Marco Clemencic)

- Gaudi (v19r8):

- Added aliases for the configurables `FileCatalog` (`Gaudi::MultiFileCatalog`) and `IODataManager` (`Gaudi::IODataManager`).
  (Marco Clemencic)
- Modified python/Gaudi/CommonGaudiConfigurables.py to ignore missing packages, essentially to allow the import of Gaudi.Configuration when GaudiPoolDb is missing.
  (Marco Clemencic)

- GaudiExamples (v19r8):

- Added test for bug #30209 (support of namespaced algorithms in Sequencer).
  (Marco Clemencic)

## Gaudi v19r7 (2008-01-18)

### Externals version: LCGCMT_54

### Packages Changes

- GaudiPolicy (v8r0):

- Improvements in the QMTest infrastructure and the tests. Simplified actions to run the test: TestPackage and TestProject.
  (Marco Clemencic)
- Removed the genmap related macros and fragments, now available in LCG_Interfaces/ROOT (needs LCGCMT >= 54)
- Fixes for Python 2.5.
  (Marco Clemencic)
- Fixed bug #32341. install.py uses absolute path if the source and the destination files are on different windows drives.
  (Hubert Degaudenzi)

- GaudiKernel (v23r3):

- Fixed bug #32549. Changed the level of the message about the AbortEvent incident from ERROR to DEBUG.
  (Marco Clemencic)
- Patch #1581. Added support to std::map<int,std::string> and std::map<unsigned int,std::string> in the parser.
  (Vanya Belyaev)
- Patch #1621 (bug #32466). Add to IToolSvc/ToolSvc the possibility of using observers to monitor the creation of and retrieval of tools.
  (Gerhard Raven)
- Many fixes and improvements in Python job options.
  (Marco Clemencic)
- Improved the message of DataSvc when re-throwing a std::exception. Now the message contains the type of the exception.
  (Marco Clemencic)
- Patch #1585.
  - Added the templated function pp_cast<DEST>(SRC**) to replace the common casts `(void**)&pointer` and `(IInterface *&)m_mySvc` to avoid the warning "dereferencing type-punned pointer will break strict-aliasing rules".
  - Fixed warnings about breaking of strict-aliasing rules (gcc 4.1 optimized).
  (Marco Clemencic)
- Improvements in DsoUtils.h (support for Win32 and OSX).
  (Markus Frank & Marco Clemencic)
- Fix for bug #31677. Move GaudiHandles.py from GaudiPython to GaudiKernel.
  (Marco Clemencic)
- Fixed various compilation warnings.
  (Marco Clemencic)

- GaudiSvc (v16r3):

- Fixed bug #31950. Missing call to Service::finalize in
  - ChronoStatSvc
  - IssueLogger
  - THistSvc
  (Marco Clemencic)
- Fixed bug #32476. Missing checks of few status codes.
  (Marco Clemencic)
- Patch #1610. If StatusCodeSvc.AbortOnError was set to true, the filter list was ignored.
  (Charles Leggett)
- Patch #1607. Fixed a memory leak in HistorySvc, occurring when an algorithm or a tool was registered twice.
  (Charles Leggett)
- Patch #1584. Fixed a crash (WIN32) or an infinite loop (Linux) when the DataOnDemandSvc is configured but not initialized.
  (Chris Rob Jones)
- Patch #1621 (bug #32466). Add to IToolSvc/ToolSvc the possibility of using observers to monitor the creation of and retrieval of tools.
  (Gerhard Raven)
- Modified ToolSvc to allow to specify the name of a tool in the type argument (Type/Name), which takes precedence over the provided name.
  (Marco Clemencic)
- Patch #1585. Fixed warnings about breaking of strict-aliasing rules (gcc 4.1 optimized).
  (Marco Clemencic)
- Simplified the implementation of MultiStoreSvc fixing a segmentation fault occurring on gcc 4.1 optimized.
  (Marco Clemencic & Markus Frank)
- Fixed a problem preventing the parsing of option files with Boost 1.34.1.
  (Sascha Mazurov)

- GaudiMonitor (v1r4):

- Fixed bug #31950. Missing call to Service::finalize in
  - DataListenerSvc
  (Marco Clemencic)
- Fixed compilation warnings.
  (Marco Clemencic)

- GaudiGridSvc (v1r5):

- Patch #1611. Build disabled for ATLAS.
  (Marco Clemencic)

- RootHistCnv (v9r16):

- Patch #1585. Fixed warnings about breaking of strict-aliasing rules (gcc 4.1 optimized).
  (Marco Clemencic)

- HbookCnv (v14r13):

- Disable the build of the package on AMD64 because it doesn't work on that platform.
  (Marco Clemencic)

- GaudiUtils (v1r4):

- Patch #1622. Reduce printout level on unsuccessful catalog lookup. (MultiFileCatalog) An unsuccessful catalog lookup is not an error, but rather a normal operation if e.g. the existence of a file should be checked.
  (Markus Frank)
- Patch #1585. Fixed warnings about breaking of strict-aliasing rules (gcc 4.1 optimized).
  (Marco Clemencic)

- GaudiPoolDb (v3r0):

- Removed the (obsolete) namespace "poolDb" (needs LCGCMT >= 54).
  (Marco Clemencic)
- Patch #1603. Use file catalog implementation in GaudiUtils.
  (Markus Frank)
- Patch #1585. Fixed warnings about breaking of strict-aliasing rules (gcc 4.1 optimized).
  (Marco Clemencic)

- GaudiAlg (v10r3):

- 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).
  (Marco Clemencic)
- Patch #1625. Introduce fix for the problem of non-deterministic automatically assigned numerical IDs in the GaudiTuples and GaudiHistos base classes.
  (Chris Rob Jones)
- 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.
  (Gerhard Raven)
- Patch #1585. Fixed warnings about breaking of strict-aliasing rules (gcc 4.1 optimized).
  (Marco Clemencic)

- GaudiGSL (v6r8):

- Fixed compilation warnings.
  (Marco Clemencic)

- GaudiPython (v8r18):

- Fixed macro for test_GPyTestDict needed after change in the reflex test dictionary pattern.
  (Pere Mato)
- Fixed a bug in Pythonization._loadDict. Missing "import sys".
  (Wim Lavrijsen)
- Improvements and fixes to Python job options.
  (Marco Clemencic, Wim Lavrijsen)
- Fixed compilation problem with Python 2.5.
  (Marco Clemencic)
- Fixed bug #31677. Move GaudiHandles.py from GaudiPython to GaudiKernel. Added a fake module for backward compatibility.
  (Marco Clemencic)
- Fixed bug #31819: Reduce GaudiPython dictionaries to strict minimum.
  (Pere Mato)
- Patch #1550. Fix to compile with Python 2.5 (backward compatible).
  (Paolo Calafiura, Sebastien Binet & Marco Clemencic)

- Gaudi (v19r7):

- Added few tests for Python job options.
  (Marco Clemencic)

- GaudiExamples (v19r7):

- Modified GaudiCommonTests to expose bug #32541 (cannot retrieve RootOnTES node).
  (Marco Clemencic)
- Improvements and updates of the tests and updates the reference files.
  (Marco Clemencic, Vanya Belyaev)

## Gaudi v19r6 (2007-11-23)

### Externals version: LCGCMT_53f

### Packages Changes

- GaudiPolicy (v7r2):
  - Added patterns and actions to automatically run tests based on QMTest. See relese notes in GaudiPolicy for details. (Marco Clemencic)
  - Many fixes and improvements to install.py and replaced the cmt_installarea_command. (Marco Clemencic, Hubert Degaudenzi & David Quarrie)
  - Added a pattern to disable the build of a package on specific platforms from the package itself, to avoid conditional uses in GaudiRelease. (Marco Clemencic)
- GaudiKernel (v23r2):
  - Added a new incident type (AbortEvent) that force the (Minimal)EventLoopMgr to skips all the top algorithms still to be executed for the current event. (Marco Clemencic)
  - Many improvements to python job options and configurables. See release notes of GaudiKernel for details. (Sebastien Binet, Marco Clemencic & Pere Mato)
  - Patch #1523 (Vanya Belyaev)
    Add possibility to have properties of the types `std::map<int,int>` and `std::vector<std::pair<int,int> >`.
  - Task #5807 (Marco Clemencic)
    Added the header GaudiKernel/SerializeSTL.h to provide implementations of operator<< for some common STL containers and GaudiUtils::*Map. (Marco Clemencic)
  - Minor change to the IUpdateManagerSvc interface. (Marco Clemencic)
  - Patch #1416 (Paolo Calafiura)
    Improvements to DirSearchPath.
- GaudiSvc (v16r2):
  - Patch #1533 (Charles Leggett)
    Modified THistSvc to check if the file associated with a TTree has changed and update the relevant structures. This happens when a ROOT file grows above the maximum allowed size (a parameter in ROOT).
  - Removed the message "ApplicationMgr INFO Successfully loaded modules :" if the list of loaded modules is empty. (Hubert Degaudenzi)
  - Patch #1469 (Markus Frank) improve method PersistencySvc::getService(const std::string& service_type, IConversionSvc*& refpSvc) to also check attached services and services known by name.
- GaudiGridSvc (v1r4):
  - Disabled the build of the package on the unsupported platforms. (Marco Clemencic)
- GaudiPoolDb (v2r15):
  - Disabled the build of the tests (re-enable it with the tag `GaudiPoolDbTests`). (Marco Clemencic)
- HbookCnv (v14r12):
  - Disabled the build of the package on the unsupported platforms. (Marco Clemencic)
- GaudiUtils (v1r3):
  - Patch #1492, Patch #1493, Patch #1494 (Markus Frank)
    Add components library containing file catalog and I/O data manager. Used by DAQ/MDF and GaudiPoolDb.
- GaudiAlg (v10r2):
  - Patch #1418 (Chris Jones)
    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.
- GaudiGSL (v6r7):
  - Comments clean-up. (Hubert Degaudenzi)
- GaudiPython (v8r17):
  - Changed the structure of the package. (description) (Pere Mato)
  - Removed dependency on Gaudi.Configuration. (Marco Clemencic)
- GaudiAud (v8r4):
  - Bug #28570 (Charles Leggett)
    Modified AlgContextAuditor to avoid that it passes a null pointer to AlgContextSvc. It happens if the AuditorSvc is auditing objects that inherit from INamedInterface, but not from IAlgorithm (e.g. services).
- GaudiSys (v19r6):
  - Added dependency on GaudiPython, which is needed for gaudirun.py. (Marco Clemencic)
- Gaudi (v19r6):
  - Added the function Gaudi.Configuration.configurationDict to produce the dictionary of configurations. (Marco Clemencic)
  - Many improvements to gaudirun.py. (Marco Clemencic & Pere Mato)
- GaudiExamples (v19r6):
  - Various minor improvements and fixes. (Marco Clemencic & Pere Mato)

## Gaudi v19r5 (2007-10-03)

### Externals version: LCGCMT_53c

### Packages Changes

- Gaudi (v19r5):

- new package that contains only the application part of the framework (Gaudi.exe)

- GaudiAlg (v10r1):

- Added a few wrapper functions to remove unwanted explicit dependency on AIDA (was breaking LHCb compilation) (Vanya Belyaev).
- patch #1345 (TupleObj) (Vanya Belyaev):

- change the default type for "integer" data-fields from "long" to "int".
- issue the warning messages for truncated fields:
  - long
  - unsigned long
  - unsigned int
  - double
- add a shortcut for column ( IOpaqueAddress* )
- Changed names from "Long" to "Int" (Marco Clemencic).

- patch #1375 (Vanya Belyaev). Allow configuration of Histogram1D from job options. Extended "plot" and "book" methods to use "histogram properties" without unpacking them into title/low/high/bins.
- patch #1356 (Vanya Belyaev) 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

- patch #1273 (Vanya Belyaev):

- Added automatic conversion of GaudiAlg::ID to std:string.

- Added properties to define histograms print out format in GaudiHistos.

- patch #1231 (Vanya Belyaev):

- 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

- GaudiExamples (v19r5):

- patch #1375 (Vanya Belyaev). Allow configuration of Histogram1D from job options (src/Histograms/HistoProps.cpp, options/Histograms.opts)
- patch #1273 (Vanya Belyaev): Added print out of "skewness" and "kurtosis" to Aida2Root example.
- patch #1265 (Vanya Belyaev). TupleEx4.py: new example to illustrate the usage of TupleUtils module.
- patch #1263 (Vany Belyaev): New python example which illustrates the usage of various 1D&2D profile histograms in python (HistoEx2.py).
- patch #1231 (Vanya Belyaev): New example to illustrate the usage of "Stat"-part of IChronoStatSvc.
- patch #1178 (Vanya Belyaev). added example CounterSvcAlg.

- GaudiKernel (v23r1):

- Patch #1345 (Vanya Belyaev). Minor modifications to improve Tuples::TupleObj (GaudiAlg package) in GaudiKernel/NTuple.h

- substitute the explicit specialization for NTuple::Range with the regular calls of std::numeric_limits<T>::min()/max()

- disable "#ifndef ALLOW_ALL_TYPES"

- patch #1375 (Vanya Belyaev). Allow configuration of Histogram1D from job options.

- New class Gaudi::Histo1DDef for histogram description/definition.

- Implementation of parsing for new histogram properties. (Sascha Mazurov)

- Patch #1357 (Vany Belyaev). Minor improvements to Gaudi::Utils::setProperty():

- allow to set the documentation of a property

- allow to set a property from a PopertyType

- patch #1247. (partial) Sebastien Binet (& Marco Clemencic) avoid duplication of symbols in files generated by genconf. (Warning: Win32 implementation missing)
- Fixed bug #29806 (Markus Frank). Wrong call to setDataProvider.
- Hubert Degaudenzi & Marco Clemencic

- factored out the main application part to the Gaudi package.
- added an option to genconf that adds a fallback module for the location of Configurables and ConfigurableDb
- Modified the genconfig CMT pattern for the previous change to have AthenaCommon by default and if it doesn't exist fall back to GaudiKernel. This is a temporary fix until both approaches are merged.

- Patch #1260 (Hubert Degaudenzi & Paolo Calafiura) .moved the MinimalEventLoopMgr from GaudiSvc to GaudiKernel. The factory for this service is still in GaudiSvc
- patch #1231 (Vanya Belyaev):

- Splitted IChronoStatSvc.h into IChronoSvc and IStatSvc.

- Remove ICounterSvc::CountObject and replaced it with Stat.

- Added few free functions to format StatEntity objects as table rows.

- Added the file cbrt.h, which provides an implementation of cbrt (cubic root) to all the platforms (it is a built-in function of gcc) (Marco Clemencic).
- patch #1246 (Vanya Belyaev). Introduced 2 new classes:

- Gaudi::Guards::ExceptionGuard. executes a functor in a "standard" try-catch block.
- Gaudi::Guards::AuditorGuard. executes a function of an object when the instance is created and a second one when destroyed, allowing automatic "clean-up" (in case of early exit).

- patch #1253 (Charles Leggett). This patch fixes Algorithm.cpp, AlgTool.cpp and Service.cpp such that there is a consistent use of the auditorSvc-after[whatever] in the catch loops when an exception is thrown.
- patch #1250 (Pere Mato): Removed the default constructor of Service because it is causing a memory leak in Reflex.
- patch #1227 (Vanya Belyaev). Added the functions "Gaudi::Utils::setProperty(IInterface*,...)", simpler counterparts of "Gaudi::Utils::setProperty(IProperty*,...)".
- patch #1226 (Vanya Belyaev):

- SmartIFBase<TYPE>:

- explicitely disable copy constructor and assignement

- add "checking operator", operator!()

- SmartIF<TYPE> and SmartIF<IInterface>:

- add "const" into copy constructor
- add the constructor from underlying pointer
- add "const" into standard assignment
- add "const" into template assignment remove line duplicates between standard assignement and assignment from the regular pointer

- fix typo in return type of assignment from the base

- add "checking operator", operator!()

- patch #1182 (Sebastien Binet): Improved precision for timing measurements in ProcessDescriptor
  (on linux). The patch allow to use the function getrusage when possible to get a microsecond precision instead of millisecond. When getrusage cannot be used, the timing is measured in the old way.
- added the possibility to use the universal time for the messages. There is a new "%u" format for this. It replaces the usual "%t" in the MessageSvc.Format (Hubert Degaudenzi).
- patch #1178 (Vany Belyaev). The patch substitute the internal counters, used for (I)CounterSvc by generic counters of type StatEntity:

- This allow to reuse the useful functionality of StatEntity class.
- In addition it will allow an easy publishing and integration of counters with monitoring tasks.
- Also it adds more functionality for grouping of counters, in particular the extraction of the whole group of counters (required by Matt Needham)
- The printout of counters is now coherent with printout of generic counters through GaudiCommon<T>.

- GaudiPolicy (v7r1):

- added global macro <project>_home (Hubert Degaudenzi).
- Introduced 2 new make fragments (install_python and install_scripts) based on the install.py script for the python modules and script installation (Hubert Degaudenzi).
- fixed the merge_rootmap and merge_genConf fragments to avoid the double building of the target in case of parallel build (Hubert Degaudenzi).
- patch #1249 (Sebastien Binet). Fix to avoid "use" cycle with GaudiSvc.
- added "use Python * LCG_Interfaces -no_auto_imports" for compilation on win32. the "win32con" module is needed with the locker.py script (which is used for rootmap building) (Hubert Degaudenzi).
- Added a python script to handle the installation of files in a platform-independent way and to keep track of the installed files so that if many packages add files to the same directory, a "make clean" in a package removes only the files that the package installed (use cases: python modules, LHCb event model classes) (Macro Clemencic).
- added an option to install.py to be able to select a destination name different for the source one (Marco Clemencic).

- GaudiPython (v8r16):

- patch #1158 (Sebastien Binet). (slightly modified by Marco Clemencic): Minor changes to GaudiHandles.py to improve memory footprint
- patch #1265 (Vanya Belyaev):

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

- Add dictionaries for ITupleTool and IHistoTool.

- New module TupleUtils.py: allow manipulation of tuples from outside algorithms or tools.

- patch 1263 (Vanya Belyaev).

- Allow "smart and friendly" manipulation of AIDA::IProfile[1D,2D] objects from Python.
- Improvements in iProperty: raise AttributeError in __getattr__ and __setattr__ if the property does not exist (instead of the internal C++ exception).
- Added module HistoUtils containing "script-friendly" functions to manipulate histograms.

- GaudiSiteSvc (removed): should be supersided by GaudiGridSvc and the DataStreamTool.
- GaudiSvc (v16r1):

- Fix to allow any of the following commands in the job options (Sascha Mazurov):
  #printOptions full
  #printOptions
- patch #1213 (Charles Leggett). Finalize HistorySvc before any other service.
- patch #1392 (Vanya Belyaev & Sascha Mazurov). Allow "::" in algorithm and tool names to configure them, e.g.:
  MyNamespace::MyAlg.MyProperty = 123;
- patch #1375 (Vanya Belyaev). Allow configuration of Histogram1D from job options.

- Allow tuple-like quantities to appear as right-hand-expressions in job options. (Sascha Mazurov)

- Allow the "on-the-fly" redefinition of the histogram properties via options of the HistogramSvc.

- Patch #1358 (Charles Leggett). Fixed a bug in THistSvc. In the initialization clause of a "for" loop, the iterator was set using "==" instead of "=".
- Patch #1359. (fixes bug #28603) (Vanya Belyaev): Added 2 warnings in case an option file is included twice (one at the parser level and one at the JobOptionSvc level). Note: The included file is processed only the first time it is included.
- Patch #1346 (Vanya Belyaev): Add the possibility to print all properties of application manager. The properties are printed in ApplicationMgr::configure()
  if the (new) property "PropertiesPrint" is set to true (default is false).
- patch #1273 (Vanya Belyaev): Avoid print out of the table header for empty stats (ChronoStatSvc).
- patch #1252 (Charles Leggett):

- Do not dereference the TFile pointer in finalize if it is a temporary file (== NULL).

- Add a job option to turn on/off printing of all TObjects in finalize. (off by default)

- Convert all double slashes ("//") to single slashes (so that the path "A/B/C" matches "A//B/C") to avoid problems in case of typos in job options.

- patch #1234 (Charles Leggett). Modified the way the ToolSvc uses the HistorySvc. ToolSvc will try to get the HistorySvc when creating a tool and cache the pointer if it is available.
- Patch #1243 (Chris Jones): Equipe ApplicationMgr with a new job option ReflexPluginDebugLevel which is used to set the debug level of ROOT::Reflex::PluginService::SetDebug(level). Useful to aid in the debugging of library loading problems.
- task #5157 (Make MessageSvc thread-safe) (Marco Clemencic): Added 3 boost mutexes to MessageSvc to protect few internal data members from possible concurrent access.
- patch #1178 (Vanya Belyaev).

- The proposed patch substitute the internal counters, used for (I)CounterSvc by generic counters of type StatEntity.
- This allow to reuse the useful functionality of StatEntity class.i n addition it will allow an easy publishing and integration of counters with monitoring tasks.
- Also it adds more functionality for grouping of counters, in particular the extraction of the whole group of counters (required by Matt Needham)
- The printout of counters is now coherent with printout of generic counters through GaudiCommon<T>.

- GaudiUtils (v1r2):

- Patch #1266 (Vanya Belyaev) GaudiUtils/HistoStats.h, src/Lib/HistoStats.cpp: new files with simple class Gaudi::Utils::HistoStats for evaluation of few basic statistical quantities for AIDA::histograms. The moments (and therefore all other quantities) are calculated on bin-by-bin"-basis, since the corresponding cumulants needed for "event-by-event"-calculations are not available:

- moments
- central moments
- skewness
- kurtosis

- patch #1273 (Vanya Belyaev). added new functions to GaudiUtils/HistoStats.h:

- meanErr

- rmsErr

- kurtosisErr

- skewnessErr

- momentErr

- centralMomenErr

## Gaudi v19r4 (2007-06-07)

### Externals version: LCGCMT_52a

### Packages Changes

- GaudiAlg (v10r0):

- patch #1161 (Vanya Belyaev). 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

- patch #1160 (Marco Clemencic). Changed from StatusCode to void the returned value of

- Algorithm::setExecuted()
- Algorithm::resetExecuted()
- Algorithm::setFilterPassed()

- Patch #1134 (Chris Jones). 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.

- Patch #1136 (Chris Jones):

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

- Patch #1127 (Vanya Belyaev):

- 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.
- 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 mehtod is reenabled again. One CAN use it.. The old way (with OutputStream) is still possible but, of course, deprecated.
- 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.
- 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
- The default CLID for event tag colelctions is set to be CLID_ColumnWiseTuple

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

- GaudiAud (v8r2):

- patch #1171 (Vanya Belyaev). The enhancement of existing Algorithm Context Service is the primary goal of the proposed patch. The existing AlgContextSvc is not safe with respect to e.g. Data-On-Demand service or to operations with subalgorithms. The patched service essentially implements the queue of executing algorithms, thus the problems are eliminiated. In addition the enriched interface provides the access to the whole queue of executing algorithms.
- patch #1150 (Charles Leggett). If the AlgErrAuditor detects that an illegal StatusCode/MessageStream combination has been issued by an Algorithm, an exception or an abort() can be thrown, configured by a jobOpt. Also prints out summaries at the end of the job of illegal combination.

- GaudiPolicy (v7r0):

- Fixed a problem with merge_files.py when the directory of the destination file does not exist (Marco Clemencic).
- Applied an committed a slightly modified version of the latest version of patch #1159 (file #4075), to allow the concurrent merging of files on NFS (Marco Clemencic & Sebastien Binet).
- patch 1159 (Pere Mato): merging files during build procedure with some additional changes:

- Reverted the dependency to GaudiSvc. This is needed for genconf to work specially when building the Gaudi project itself. The only possibility to remove this dependency is by providing a minimal application manager to support the instantiation of the components for which you need to dump the properties and they default values.
- Moved the stampfiles to the destination area (i.e. the InstallArea). In this way if the install area gets deleted the merged file is reconstructed again.
- Renamed the fragment merge_genmap to merge_rootmap to generalize it and use it also for merging the rootmaps from reflex dictionaries.
- Improved the rules in the makefile fragments and corrected some error messages.

- Fixed a problem with the pattern "install_more_includes" which did not add the correct include dirs if the project was not using the install area (Marco Clemencic).
- fix to bug #24973 (Mattias Ellert) : Two pattern in GaudiPolicy uses private ... public instead of private ... end_private. This causes some private definitions the leak into public. Many client package could be affected.

- GaudiKernel (v23r0):

- Extended the IIncidentSvc interface to make it possible to register a listener for only one occurrence of the requested event (see bug #25552) (Marco Clemencic).
- patch #1171 (Vanya Belyaev). The enhancement of existing Algorithm Context Service is the primary goal of the proposed patch. The existing AlgContextSvc is not safe with respect to e.g. Data-On-Demand service or to operations with subalgorithms. The patched service essentially implements the queue of executing algorithms, thus the problems are eliminiated. In addition the enriched interface provides the access to the whole queue of executing algorithms.
- patch #1163 (Vanay Belyaev). Patch to allow the following syntax (The setting of properties through strings is still possible):

setProperty ( "OutputLevel" , "4" ) ;
setProperty ( "OutputLevel" , 4 ) ; //new
setProperty ( "Enable" , "False" ) ;
setProperty ( "Enable" , false ) ; //new
setProperty ( "ErrorMax" , "10" ) ;
setProperty ( "ErrorMax" , 10 ) ; //new
std::vector<double> data = ... ; //new
setProperty( "Data" , data ) ; //new
std::map<std::string,double> cuts = ... ; //new
setProperty( "Cuts" , cuts ) ; //new
std::map<std::string,std::string> dict = ... ; //new
setProperty( "Dictionary" , dict ) ; //new

- patch #1161 (Vanya Belyaev). 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

- patch #1160 (Marco Clemencic). Changed the returned value from StatusCode to void of

- Algorithm::setExecuted()
- Algorithm::resetExecuted()
- Algorithm::setFilterPassed()

- patch #1157 (Sebastien Binet). Here is a simple patch to harmonize the interaction with the underlying m_outputLevel data member of each of these main Gaudi components. It makes sure that the 3 of them have:

int outputLevel () const;
void initOutputLevel(Property&); //update handler
also added this method to MsgStream:
void setMsgSvc( IMessageSvc* svc ) {
m_service = svc;
}

- patch #1136 (Chris Jones): Updates to Algorithm and AlgTool required for changes in GaudiAlg for automatic registration of data to the monitoring service

- Addition of the same declareInfo(...) methods in AlgTool as in Algorithm
- Replace hardcoded monitor service name with new job option
- New method to provide 'easy' direct access to monitor service via pointer

- patch #1129 (Sebastien Binet): Add the method outputLevel() to Auditor.
- fix to bug #25852 bis (Marco Clemencic): Fixed compilation problem on windows by adding the definitions for the missing functions localtime_r and gmtime_r (header GaudiKernel/time_r.h).
- Patch #1126 (Vanya Belyaev):

- GaudiKernel/StatEntity.h, src/Lib/StatEntity.cpp

1. Add the assignment operator from the scalar value according to the request by Ulrich Kerzel (LHCb/RICH)
2. Add two new methods "efficiency" and "efficiencyErr" for evaluation of binomial estimate of the efficiency, associated with the counter. If the counter could be interpreted as efficiency, these methods produce right results. Method "efficiency" returns either "flagMean" or -1, if the interpretation of counter as efficiency is not possible. In a similar way "efficiencyErr" returns the binomial estimate of the uncertainty or -1, if the interpretation of counter as efficiency is not possible. Note that there could be sizable difference between RMS estimate "flagMeanRMS" and the binomial estimate "efficiencyErr", however for large statistics and for non-extremal (close to ~0 or, especially ~100%) efficiencies, these estimates should be very similar.

- GaudiKernel/ToStream.h

1. Add the printout for std::list
2. Add the template parameters for std::vector, std::set, std:map, GaudiUtils::Map, GaudiUtils::VectorMap, GaudiUtils::HashMap. It allows to use all these function for containers with non-default optional template arguments, e.g. allocators, comparison criteria, hash functions or underlying containers.

- fix to bug #25852 (Andy Salnikov). Message and MessageSvc. Messages now have one more format flag which is replaced with the formatted timestamp on output. Default format string has not changed so default output will look identical to what it was before. The format of the timestamp can be changed through the additional format string similarly to the message format string. Time format can contain anything that is accepted by strftime plus additional '%f' code for milliseconds.
- patch #1125 (Marco Clemencic). Fixed INamedInterface in order to provide the right IInterfaceID. An empty virtual destructor has been added.
- Patch #1103 (Martin Woudstra). 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
- Patch #1099 (Chris Jones). Add Specialization stream operator for std::vector<T,A> to MsgStream.h Allows print out of vector created with custom allocators e.g. std::vector< RichSmartID, boost::pool_allocator< RichSmartID > >
- Patch #1092 (Chris Jones). There is a bug in the current implementation of the format(..) method in MsgStream.(cpp,h) which means if a user uses the format method twice in one message request, wrong information is printed. The attached patch fixes this by returning instead a std::string. However, if somewere a user is explicitly using the returned char * pointer (They really shouldn't be...) a small change to their code would be required. i.e.

char * c = format("XXX,x)
to
std::string s = format("XXX,x);
c = s.c_str();

- GaudiPoolDb (v2r13):

- fixed load<TYPE> function in PoolDbNTupleCnv.cpp. The "len" argument which is passed to the swapFromBuffer method is now an int instead of a long. This ensures backward readability for the already written data. This fixes the problem of the framework with the amd64 platform (Marco Clemencic).
- enlarge the limit for the output file size to 500 GBytes (Markus Frank).
- removed explicit loading of component libraries through ApplicationMgr.Dlls. It is not needed any more. Only the PoolDbCacheSvc needs explicit loading of POOL component and GaudiKernelDict (Hubert Degaudenzi).

- GaudiPython (v8r15):

- Patch #1126 (Vanya Belyaev). 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::>"

- Patch #1103 (Martin Woudstra). 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.
- added setOwnership() calls in addAlg() and removeAlg() to avoid segfault at the end of the execution due to double deletion of algorithms (Pere Mato)
- Patch #1106 (Vanya Belyaev). possible solution for Savannah bug #25109 and patch #1024

- dict/selection_kernel.xml. add the dictionary for GaudiHandleProperty class
- python/gaudimodule.xml

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

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

- GaudiSvc (v16r0):

- Patch #1146. HistorySvc is now capturing the state of algorithms and service during the BeginEvent incident. It uses the new feature of the incident service to be called only once (Charles Leggett & Marco Clemencic).
- Extended IncidentSvc to make it possible to register a listener for only one occurrence of the requested event (see bug #25552) (Marco Clemencic).
- Fixed bug #25552 (Marco Clemencic). If a listener is removed in the middle of an incident, there will not be a segmentation fault. If a listener unregister itself, it will not be called again. If the listener is removed from outside, the listener will be called once more.
- patch #1171 (Vanya Belyaev). See above.
- patch #1172 (Sasha Mazurov & Vanya Belyaev). Consider the first line of an option file as a comment if it starts with "#!" .
- patch #1161 (Vanya Belyaev). See above.
- patch #1160 (Marco Clemencic). See above
- patch #1162 (Vanya Belyaev):

- Fix a bug with vectors-properties in "python"-format.
- New features for "#printOptions" directive:

1. "#printOptions FULL" directives now switches off ("#pragma print OFF") the printout of properties during the processiong phase and blocks the subsequent actions of "#pragma print OFF" directives. The feature has been requested by Gloria Corti for Gauss.
2. The printout of parser catalogue (activated by "#printOptions FULL" directive) is modified to include the trailing semicolumn symbol ";". It allows the save of this printout through cut-n-paste as configuration file for other jobs.
3. One can now dump the content of parser catalogue into a file. It is controlled by the property of JobOptionsSvc "DumpFile". The value of the property is a name of the output file for dumping of parser/property catalogue. The default value of this property is empty. It also check the environment variable "JOBOPTSDUMPFILE", where one can specify the name of output file:

bash> JOBOPTSDUMPFILE=dump.opts Gaudi.exe ExtendedProperties.opts
[t]csh> setenv JOBOPTSDUMPFILE dump.opts
[t]csh> Gaudi.exe ExtendedProperties.opts
use it later:
> Gaudi.exe dump.opts

- patch #1130 (Sebastien Binet). Here is a patch to allow doing this (in pseudo-code) from the C++ side:

StatusCode Alg::initialize()
{
// blah-blah IProperty * svc = 0;
service( "THistSvc", svc, createIf=false ).ignore();
StringArrayProperty outputProperty( svc->getProperty(pName) );
// update/modify the property and send it back to the service
return svc->setProperty( outputProperty );
}
i.e: even if the THistSvc has already gone through its initialize method, the configuration of in-/output (ROOT) streams will be reconfigured. This patch replaces std::vector<std::string> properties by StringArrayProperty and attaches to each of them a callback method.

- Patch #1104 (Charles Leggett):

- Currently, one can have the MessageSvc summarize all message counts at the end of the job using the showStats boolean prop. However, this only works if the enableSuppression prop is set to True. This patch to MsgSvc.cpp separates the two functions to make them independantly configurable. If you're not using these flags, it won't affect you (by default, these flags are set to False).
- extension to only print stats above a certain level if desired, controlled using a new property "statLevel".

- patch #1060 (Sebastien Binet). Added multiple log feature to the MessageSvc. One can define a log file per algorithm.

MessageSvc.loggedStreams = {
'MyAlg1' : 'some_file.log',
'MyAlg2' : 'some_other_file.log',
'MyAlg3' : 'some_file.log'
};

- fix to bug #25852 (Andy Salnikov). See above.

- RootHistCnv (v9r14):

- Added extra argument needed in constructor of TBranch. This is new in version 5.15.06 of ROOT (Pere Mato).

- PartPropSvc (v2r6):

- Patch #1186 (Paolo Calafiura). added missing charged geantino.

- GaudiExamples (v19r4):

- Added example to show the usage of "single-shot" incident listeners (see bug #25552) (Marco Clemencic).
- patch #1134 (Chris Jones). Patch to demonstrate the patch. Please have a look at the release notes of the GaudiAlg package.
- patch #1127 (Vanya Belyaev). Added examples POOLIOExtCollWrite and POOIOExtCollRead to demonstrates the patch. Please have a look at the GaudiAlg package release notes.
- patch #1126 (Vanya Belyaev). Modification of examples to illustrate the patch
- patch #1060 (Sebastien Binet). Added QotdAlg which demonstrates this new multiple log stream feature.
- removed explicit loading of component libraries through ApplicationMgr.Dlls. It is not needed any more (Hubert Degaudenzi).
- patch #1106 (Vanya Belyaev). python/Properties.py python/ExtenderProperties.py an attempt to deal with new semantics of iProperty.properties() method (see the series of patched to GaudiPython package)

## Gaudi v19r3 (2007-03-23)

### Externals version: LCGCMT_50b

### Packages Changes

- GaudiPolicy (v6r5):

- added the local package root directory for the compilation of the package. It is needed for the parallel build . No need for dependency on the install_more_include pattern any more (Hubert Degaudenzi).
- patch #1080: fix in the GaudiPolicy/cmt/fragments/genconfig_header to address make's slc3 limited features (and prevents CMT from looping or stopping build in PEDANTIC mode) (Sebastien Binet).
- removed the genconfig_cmd macro. Rely on the one in the GaudiKernel requirements file (Hubert Degaudenzi).
- reenabled the -Wl,--no-undefined option by default (not under the LHCb tag any more)

- GaudiKernel (v22r2):

- Patch #1081 (fix to bug #24704): fix the crash that happens when the destinatin file of genconf has a "+" in its path (Sebastien Binet).
- Patch #1080: fixes to GaudiKernel/src/Util/genconf.cpp (Sebastien Binet):

- fix handling of templated components

- fix handling of (default value of) BooleanProperties

- fix handling of NaN DoubleProperties (follows the good old Garbage In, Garbage Out pattern, even though a warning is issued during genconf processing...)

- Patch #1073. Simple modification of IExceptionSvc interface (and the implementation ExceptionSvc) to avoid the explicit appearence of class Algorithm in the interface. The interface is modified to substitute Algorithms with INamedInterface. It allows to use the service in much wider context, in particular with tools, services and auditors (Vanya Belyaev).
- Patch #1058 (partially). Makes sure a DoubleProperty is understood as a double on the python side (and not converted into an int as it the cast) (Sebastien Binet)
- added merge_genconfDb.py scripts to merge configurables (Sebastien Binet).
- patch #1070. The python configurables generated with the current genconf.cpp return the python (mangled) class name from the function getType(). This should be the C++ class name, otherwise the ToolSvc will not find tools from classes in namespaces and/or templated classes. This is critical as many classes in ATLAS as of these categories and all those are broken now (Martin Woudstra).
- patch #1071. The GaudiHandle version used in ATLAS has since some time an 'empty()' member function to indicate that no component is supposed to be retrieved nor used. For some reason this member function did not make it into Gaudi 19, so now the ATLAS code is broken. patch adds this member function to the GaudiHandleBase class, and allows the users to specify an 'empty' handle in the constructor (i.e. "" is kept is-as and does not trigger the setting to the default type) (Martin Woudstra).
- patch #1049: do a full include of SmartDataPtr.h instead of a forward declaration (Paolo Calafiura).

- GaudiSvc (v15r3):

- fixed bug #24769. use of the TFile::Open method instead of the TFile constructor to open a file. This enable the use of the ROOT plugins (castor, rfio, gfal, ...) (Hubert Degaudenzi)
- reverted to ranlux instead of ranlux64 for the random engine. (please see bug #24689) (Hubert Degaudenzi)
- Patch #1073. Simple modification of IExceptionSvc interface (and the implementation ExceptionSvc) to avoid the explicit appearence of class Algorithm in the interface. The interface is modified to substitute Algorithms with INamedInterface. It allows to use the service in much wider context, in particular with tools, services and auditors (Vanya Belyaev).
- Patch #1060. patch to MessageSvc to be able to log individual message sources ("Alg1", "Foo") to individual ofstreams ("Alg1.log", "Foo.log") (Sebastien Binet).
- Patch #1035 (Vanya Belyaev)

- changed the storage of the seeds of HepRdm::Engine to vector<long>
  instead of vector<int>

- removed the C-cast (long *) to initialize the CLHEP seeds

- RootHistCnv (v9r13):

- fixed bug #24769. use of the TFile::Open method instead of the TFile constructor to open a file. This enable the use of the ROOT plugins (castor, rfio, gfal, ...) (Hubert Degaudenzi)

- GaudiMonitor (v1r2):

- fixed compilation problems on windows (Hubert Degaudenzi)

- PartPropSvc (v2r5):

- Fixed default for PDGTABLE (Charles Leggett)

## Gaudi v19r2 (2007-02-19)

### Externals version: LCGCMT_50a

### Packages Changes

- GaudiAlg (v9r12):

- patch #1002: New auditor for enhanced timing/profiling of the code. Essentially it apply ISequencerTimerTool (used inside GauduSequencer) for much wider context. It perform the autition for ALL algorithms (including top level algororithms, algorithms not embedded into GaudiSequencers and algorithms invoked by Data-On-Demand service) (Ivan Belyaev).

- GaudiAud (v8r1):

- patch #972 (Charles Leggett).

- add messageCount to IMessageSvc
- extend Auditor::(sys)afterExecute to pass a const StatusCode&, which is the return code of the algorithm
- new auditor to monitor algorithms, issue message if algorithm writes out an ERROR or FATAL, but returns SUCCESS

- GaudiExamples (v19r2):

- patch #1019: refactor of the library into a component library. Added example for the PartPropSvc (Charles Leggett).
- patch #1024 (Vanya Belyaev)

- added python/Properties.py python/ExtendedProperties.py. Two python examples (full analogues for C++ examples options/Property.opts and options/ExtendedProperties.opts) which illustrates the usage of simple and extended properties through python
- options/DataOnDemandSvc.opts

1. replace the (old) properties DataOnDemand.Nodes and DataOnDemand. Algorithms with new map-like properties DataOnDemand.NodeMap and DataOnDemand.AlgMap
2. make use of shorter TES paths (omit the leading '/Event')

- patch #990 (Vanya Belyaev):

- src/Histograms/Aida2Root.cpp, options/Aida2Root.opts: new example which illustrated the usage of Aida2ROOT utility
- python/Aida2RootEx.py: the same in Python
- python/TupleEx3.py: new example which illustrates more possibilities to fill N-tuples with arrays&matrices

- patch #972: Added AlgErrAud example (Charles Leggett)

- GaudiKernel (v22r1):

- Patch #1033. patch to genconf which prevents it to segfault when no property could be dyn-casted (Sebastien Binet).
- Patch 1032: Added a helper class to allow the usage of IUpdateManagerSvc from python. The helper class is IUpdateManagerSvc::PythonHelper, declared as friend of IUpdateManagerSvc. The implementation consists of 2 static functions implemented in dictionary.h (Marco Clemencic).
- Fixed bug #23811: patch #1001 is breaking Configurables generation (Pere Mato).
- Patch #1001 (Vanya Belyaev):

- fixes which allow to retrieve the private tools not only from Algorithm, Services and AlgTools, but also from Auditors.
- Update the queryInteface method for AlgTool, Algorithm, Auditor and Servicebase classes to allow query for INamedInterface, in addition "C-cast" is substituted with "static_cast"

- genconf.cpp: applied "patch #1016: configurable genconf" fixed "bug #23649: ICounterSvc inheritance tree and Reflex::PluginSvc" (Pere Mato)
- fix to patch #1009. Avoid infinite recursion (Martin Woudstra).
- Applied patch #1009: patches to fix XyzHandle parsing from python jobOptions (Sebastien Binet)
- Patch #1007 (Paolo Calafiura):

- turned the templated member functions operator << (T&) and its partial spec operator << (vector<T>&) into open functions. This appears to remove ambiguities a user defined MsgStream operator << template (typically in a data object header file). The compiler sees the user defined template as a better specialization and matches that with no ambiguity.
- removed the MsgStream& operator(std::ostream&) recently proposed as a patch since it does not serve any useful purpose

- Applied patch #1000: improvement in ConfigurableDb output for genconf (Pere Mato)
- Applied [partially] patch #997: genconf.cpp patch (Pere Mato). It adds to genconf.cpp:

1. a "double loading" libraries to shield against dual_use libraries (which could bring lots of external libraries into the generated Configurable)
2. the generation of an ASCII file (a-la-rootmap) to describe Configurables for the benefit of the (athena) PropertyProxy.py.

- Variation of the templated streamer that should provide the same functionality and address the ambiguous overload problems ATLAS saw with the template (Paolo Calafiura)
- patch #977 on MsgStream (Charles Leggett).
- patch #972 (Charles Leggett):

- add messageCount to IMessageSvc
- extend Auditor::(sys)afterExecute to pass a const StatusCode&, which is the return code of the algorithm
- new auditor to monitor algorithms, issue message if algorithm writes out an ERROR or FATAL, but returns SUCCESS

- removed GCCXML_CXXFLAGS definition following fix in reflex (Marco Cattaneo).
- patch #971: added ServiceHandle and GaudiHandle (Charles Leggett).

- GaudiPolicy (v6r4):

- Modified GaudiPolicy so that it supports distcc at CERN. The value of the macro "cpp" has been changed (David Quarrie).
- Applied patch #1016: configurable genconf. Added genconfig fragments and modified requirements to make use of it (default is not to do it) (Pere Mato)
- linking option modification (Marco Clemencic):

- added the "--no-undefined" link flag for the building of librairies and applications on Linux. This enforces the symbols resolution.
- added the "--as-needed" link flag for the building of librairies and applications on the slc4 platform. This instructs the runtime linker to avoid looking for uneeded librairies.
- These flags are only enabled with the LHCb CMTEXTRATAGS.

- added a global cmtpath_pattern in the GaudiPolicy requirements file in order to at least prepend to the PYTHONPATH env variable the InstallArea/python directory (Hubert Degaudenzi).

- GaudiPoolDb (v2r11):

- Patch #999 (Markus Frank): Properly implement (previously existing, but not working...) option to set database domain options. To increase e.g. max. file size to ~3.5 GB for ROOT set: PoolDbCacheSvc.DomainOpts = { "Domain[ROOT_All].TREE_MAX_SIZE=3500000000 TYP=longlong" };
- fixed compilation flags for the generation of the dictionary in 32 bits mode (Hubert Degaudenzi).

- GaudiPython (v18r14):

- Patch #1032:Extended the python interface of IUpdateManagerSvc using the helper class IUpdateManagerSvc.PythonHelper (Marco Clemencic)
- cmt/requirements: moved apply_patter linker_library to the public section to allow packages to linker with GaudiPythonLib linker library. Request from Vanya (Pere Mato).
- Patch #989 (Vanya Belyaev):

- GaudiPython/TupleDecorator.h, src/Lib/TupleDecorator.cpp use new typedefs from GaudiKernel instead of local types.
- dict/kernel.h, dict/selection_kernel.h added 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
- python/gaudimodule.py add 2 methods for HistogramService: getAsROOT ans getAsAIDA for returning either the native representation or the usual one.

- Patch #988: new class PropertyEntry in gaudimodule (Pere Mato)

- GaudiSvc (v15r2):

- Patch #1017: Here is a patch to ChronoStatSvc to optionally dumps its stats into an ASCII file (a .INI-like format) to ease the offline processing of these stats (usefull for, eg, a performance monitoring framework) (Sebastien Binet).
- patch #1001 (Vanya Belyaev)

- src/ToolSvc/ToolSvc.cpp Couple of fixes with allows to use the private tools from Auditors.
- src/AuditorSvc/AuditorSvc.cpp Allow to have an auditor with name not equal to the type.
- src/ApplicationMgr/ApplicationMgr.cpp add INamedInterface into ApplicationMgr::queryInterface method

- patch #1018. Fix memory leak in the IncidentSvc class (Scott Snyder).
- fix (to bug #23471) in the MinimalEvtLoopMgr to catch exception. (Charles Leggett)
- patch #1008: in the last version of Gaudi, it is not possible anymore to create a service using the name format "ServiceType/ServiceName". This patch fixes that (Marco Clemencic).
- patch #1006. The various finalize methods in the ToolSvc don't propagate errors that occur during the finalization of tools back up the chain. Exceptions are caught, and error messages are printed, but a StatusCode::SUCCESS is always returned. This patch causes a FAILURE to be returned if an error is encountered (Charles Leggett).
- patch #981. MinimalEventLoopMgr doesn't remove algs from the algmanager during finalize (Charles Leggett).
- patch #994. If the finalization of a service fails, a warning message is printed, but the return code is always a success. This makes it difficult for the applicationManager to figure out if something went wrong. ServiceManager::finalize() should return a failure if any of the services it's trying to finalize failed (Charles Leggett).
- ToolSvc.cpp: Fixed problem reported by David Quarrie. Return StatusCode::FAILURE if tool can not be instantiated (Pere Mato).
- patch #973 (Charles Leggett):

- sets up limits on numbers of messages issued by any source. suppresses messages if count is exceeded. prints out summary at end of job. controlled by jobopts, for each MSG::LEVEL individually, or a global limit. default is not to do anything.
- also prints out stats on all messages if requested.

- patch #972 (Charles Leggett):

- add messageCount to IMessageSvc
- extend Auditor::(sys)afterExecute to pass a const StatusCode&, which is the return code of the algorithm
- new auditor to monitor algorithms, issue message if algorithm writes out an ERROR or FATAL, but returns SUCCESS

- Removed the DataListenerSvc. It is now located in the GaudiGridSvc package (Hubert Degaudenzi).
- fix to patch #954. Modification of the interface of IDataStreamTool to avoid explicit reference to std::vector. Added the method addStream, in parallel to addStreams (Marco Clemencic).
- Patch #966. Don't force the creation of the HistorySvc in the ToolSvc - if it's not available, it's because it hasn't been created in the ApplicationMgr, and that's because ActivateHistory == false (Charles Leggett).
- fixed DataListenerSvc in order to respect the new IMonitorSvc interface introduced by the patch #943 (Hubert Degaudenzi).

- PartPropSvc (v2r4):

- patch #1019: refactor of the library into a component library (Charles Leggett).

## Gaudi v19r1 (2007-01-15)

This release is the first stable one from the v19 series. It encompass number of bug fixes and improvements to the v19r0 version. 2 new packages are also available:

1. GaudiGridSvc (v1r0): This one is meant to replace the GaudiSiteSvc package for the prestaging of files. It is using the GFAL library and thus is more general than the prestaging of the CASTOR files only. It supports now the GFAL backends.

2. GaudiMonitor (v1r0): The DataListenerSvc has been moved from the GaudiSvc package to this new package.

Since these new features depends on external software (GFAL and MonaLisa), they have not been included in the GaudiSvc package but deserve their own packages.

To be noted that the steering package for the framework is not the "Gaudi" package anymore. It is now called "GaudiRelease". This version also incorporates the merge with th v18r7b branch.

### Externals version: LCGCMT_49

### Packages Changes

- GaudiAlg (v9r10):

- 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" (Patrick Koppenburg)
- Charles Leggett:

- added reinitialize to Sequencer

- removed extra GaudiAlgorithm: from GaudiAlgorithm::evtColSvc

- statuscode fixes in SequencerTimerTool.cpp, Sequencer.cpp

- Adapted package to the new PluginSvc. Removed protected from constructor/destructors and fiendship of Factory class (Pere Mato)
- Patch #923 (Ivan Belyaev): 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"

- fixed memory leak in GaudiCommon (Hubert Degaudenzi).

- GaudiAud (v8r0):

- bug #22799. changed the return value of chronoStart, chronoStop, chronoPrint, stat and statPrint method of the IChronoStatSvc from StatusCode to void.
- instrumented auditors for reinitialize, beginRun, endRun (Charles Leggett)
- Adpated package to the new PluginSvc: removed protected from constructor/destructors and fiendship of Factory class (Pere Mato)

- RootHistCnv (v9r11):

- Fix histogram converters to automatically convert THxF to THxD when reading from file (Markus Frank).

- Adpated package to the new PluginSvc: removed protected from constructor/destructors and fiendship of Factory class (Pere Mato).

- patch #908: simplify histogram conversion. Take advantage of the fact that the underlying implementation is realized using ROOT (Markus Frank).

- GaudiPolicy (v6r3):

- because of the install area and to maintain the dependencies to the include files, CMT v1r19 or above has to be used for the building.

- use cmtpath_pattern_reverse to set macro <project>_include_dir and then set include_dirs with it remove setting of cppcomp and pp_cppflags introduced previously (Florence Ranjard).
- add "-m32" flag in ${for), ${libraryShr} and ${componentShr} when tag slc4-ia32 (Florence Ranjard)
- remove setting of <library>Shr for <project>_with_installarea (Florence Ranjard)
- added $(cmt_installarea_linkopts) in the <library>_shlibflags for the component library pattern. Was failing on Windows because the script to build the shared library does not add it as it is on Linux (Pere Mato).
- set a macro copyInclude depending on the platform to be used in install_more_includes pattern (Florence Ranjard).
- added the -p flag to the copyInclude macro to preserve the time stamp of the source header files (Florence Ranjard).
- prepend pp_cppflags with InstallArea/include if with_installArea (Florence Ranjard)

- Adpated package to the new PluginSvc. The following changes have been done (Pere Mato):

- Using a local copy of cmt_make_shlib.bat to make libraries on windows from *.objs instead of using the archive library. It avoids to have the _entries.cpp and _load.cpp files.

- prepend PATH for linker libraries on windows

- added new pattern and fragments to generate rootmap files from component libraries

- added generate_rootmap in the component_library pattern

- added tags for MacOS 10.4 (David Quarrie)

- GaudiPoolDb (v2r10):

- PoolDbCnvSvc.cpp: implemented the posibility to retry when a converter could not be initialized because missing dictionary by call gInterpreter->AutoLoad(class) (Pere Mato)

- GaudiPython (v8r13):

- Added default functions for endRun() and beginRun() in gaudimodule.py and GaudiAlg.py (Pere Mato)
- patch #923 (Ivan Belyaev)

- 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

- GaudiSvc (v15r1):

- Merge with the v14rb branch (Hubert Degaudenzi)
- patch #954 (Andres Osorio):

- Moved EventSelectorDataStream from GaudiSvc to GaudiKernel

- EventSelector uses an IDataStreamTool to loop over the files (by default the implementation DataStreamTool, overridable with the option EventSelector.StreamManager)

- patch #951. fix memory leak in HistorySvc (Charles Leggett).
- Adpated package to the new PluginSvc. The following changes have been done (Pere Mato):

- Removed protected from constructor/destructors and fiendship of Factory class

- Removed files: ConverterFactory.cpp(h), ObjectFactory.cpp(h)

- All the references to factories removed.

- GaudiKernel (v22r0):

- Merge with the v10r9 branch (Hubert Degaudenzi)
- fix to patch #954 (Marco Clemencic):

- Modification of the interface of IDataStreamTool to avoid explicit reference to std::vector.

- added the method addStream, in parallel to addStreams.

- bug #22799. changed the return value of chronoStart, chronoStop, chronoPrint, stat and statPrint method of the IChronoStatSvc from StatusCode to void (Hubert Degaudenzi).
- Patch #943 & #946. Update of the IMonitorSvc interface. To be compatible with the DIM format. Added declareInfo for the special case of general structure monitoring to Algorithm.h (Eric van Herwijnen).
- Patch #954 (Andres Osorio & Marco Clemencic)

- Moved EventSelectorDataStream from GaudiSvc to GaudiKernel

- Added IDataStreamTool and the basic implementation DataStreamTool (to be used by EventSelector to loop over the files)

- ConversionSvc.cpp(.h): added method ConversionSvc::loadConverter(DataObject*) to load anything necessary (typically a dictionary) for finding/initializing a converter. Dummy at the base class level (Pere Mato).
- ServiceLocatorHelper.cpp: added the code that declares the service pair type/name. It was removed by mistake (Pere Mato).
- VectorMap.h: removed protected find() method to avoid compilation error in Event/HtlEvent package (Pere Mato).
- fixed the SimpleProperty constructors for ATLAS usage (with Ivan Belyaev's help) (Charles Leggett & Hubert Degaudenzi).
- removed unused static function PR_indent in PathResolver.cpp (Hubert Degaudenzi)
- added Transform3DTypes.h, Transform4DTypes.h, Vector3DTypes.h, Vector4DTypes.h, Plane3DTypes.h, Point3DTypes.h, Point4DTypes.h, SymmetricMatrixTypes.h, Coord3DTypes.h, GenericMatrixTypes.h, GenericVectorTypes.h. These are typdefs to ROOT types (Pere Mato).
- Adpated package to the new PluginSvc (Pere Mato)

- Removed protected from constructor/destructors and fiendship of Factory class
- Removed files: FactoryTable.h, IAlgFactory.h, IAuditorFactory.h, ICnvFactory.h, IObjManager.h, IObjectFactory.h, IRndmGenFactory.h, ISvcFactory.h, IToolFactory.h, FactoryTable.h, ICnvManager.h
- Deep changes in the XXXFactory.h files to take into account the new plugin service

## Gaudi v19r0 (2006-09-11)

New major version that begins the inclusion of the specific ATLAS Gaudi features.

### Externals version: LCGCMT_46e

### Packages Changes

- GaudiKernel (v21r0):

- Imported new services interfaces from ATLAS: IExceptionSvc, IIssueLogger, IStatusCodeSvc, ITHistSvc (Charles Leggett & Hubert Degaudenzi).
- patch #839: enhancements in the JobOptions/Property part. Please have a look at the release notes of the package (Ivan Belyaev & Alexander Mazurov).

- GaudiSvc (v15r0):

- The DataListenerSvc doesn't compile on windows. So it has been temporarily commented out as well as its example (Hubert Degaudenzi).
- added new services: ExceptionSvc, StatusCodeSvc, IssuLogger and THistSvc (Charles Leggett & Hubert Degaudenzi).
- patch #839: enhancements and bug fixes to the JobOptions/Property part (Ivan Belyaev)
- removed AlgContextAuditor (moved to GaudiAud)
- fixed many StatusCode Check.
- dynamic switch of the StatusCode checking in the Application manager (ApplicationMgr.StatusCodeCheck = true/false;). By default the checking is on. It is disabled anyway at the ApplicationMgr::finalize method to avoid problems with GaudiPython

- GaudiAud (v7r2):

- added AlgContextAuditor (remove from GaudiSvc)

- GaudiPolicy (v5r26):

- added the -msse2 and -mfpmath=sse options flags for compilation.

## Gaudi v18r11 (2006-11-22)

### Externals version: LCGCMT_48a

- CORAL_1_6_2
- RELAX_1_1_5a
- castor 2.1.1-9
- dcache_client 1.7.0.16
- ROOT 5.13.04c

### Packages Changes

- GaudiPolicy (v6r1):

- Patch #916. Add flags to compile in 32-bit mode even on 64-bit machines, when slc4-ia32 tag is set (Marco Cattaneo).
- Commented out momentarily the SSE2 flags.

- GaudiPython (v8r12):

- 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 (Pere Mato)
- fix a major problem with AppMgr::config method: the lists of DLLs&ExtSvc must be APPENDED (and not assigned) (Ivan Belyaev).
- some decoration (Ivan Belyaev):

- add new class iJobOptSvc for easy handling of properties (import from Bender)
- add new method ApMgr::optSvc - accessor to iJobOptSvc

- GaudiPoolDb (v2r9):

- patch #921 (Markus Frank):

- update PoolDbCnvSvc::createConverter to take into account specialized converters.
- Update test to use specialized converter for MyTrack.
- Set default agelimit in PoolDbCacheSvc back to 2.

- GaudiExamples (v18r11 - branch v18r7b):

- fixed cmt.py to use "os.environ" instead of "os.putenv". This is needed since we are using the variable GAUDIEXE inside the runexamples.py script (and not in its subprocesses). GAUDIEXE is set by GaudiKernel to $GAUDIKERNELROOT/$(tag)/Gaudi.exe (Hubert Degaudenzi).
- fixed valgrind options in runexamples.py. It has to use a tool and memcheck has been chosen (Hubert Degaudenzi).

- GaudiKernel (v20r12 - branch v20r9b):

- added environment variable GCCXML_CXXFLAGS=" -m32" for 32 bits compilation on amd64 machines (with the slc4-ia32 tag) (Marco Cattaneo).
- added environment variable GAUDIEXE which points to the Gaudi executable (Hubert Degaudenzi).

## Gaudi v18r10 (2006-11-03)

### Externals version: LCGCMT_48

- COOL_1_3_3c
- CORAL_1_6_1
- POOL_2_4_8
- RELAX_1_1_5
- SEAL_1_9_0
- HepMC 1.26.02
- castor 2.1.1-4
- ROOT 5.13.04b

### Packages Changes

- GaudiExamples (v18r10 - branch v18r7b):

- Modified the examples in order to use two libraries (GaudiExamples and GaudiExamplesDict) and $GAUDIKERNELROOT/$(tag)/Gaudi.exe (Hubert Degaudenzi)
- Patch #736. Modified the FastContainers example to be more readable and to show the usage of the three ways of adding a new object to the containers (Marco Clemencic).
- Changed cdiff.py in order to use the difflib python module. Allows to avoid the use of cygwin on windows to compute the diffs between the output log file and the reference log file (Hubert Degaudenzi).

- GaudiKernel (v20r11 - branch v20r9b):

- Modified rootmapdump.py in order to match any file beginning with "rootmap" and not only the "rootmap" filename. This is the same matching behavior as the one in ROOT itself (Hubert Degaudenzi).
- Patch #870. Added operator << for StatusCode (Ivan Belyaev)
- Patch #736. Improvemts to TransientFastContainer. Now it allows to use for new objects the default constructor, the copy constructor and a user specified constructor (via placement new) (Marco Clemencic).

- GaudiPython (v8r11):

- 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 (Pere Mato)
- Adapted config() to deal with new JobOptions that are always strings. Detected by Thomas when running Panoramix from Python (Pere Mato)
- Add default initialize() method in PyAlgorithm. This fixes bug #20957 (Pere Mato).

- GaudiSvc (v14r12 - branch v14r10b):

- Patch #882. The proposed patch fixes the problem with the unique Parser Catalogue for reading of multiple *.opts files. The fix does not affect at all the "regular" Gaudi job, but it is vital for GaudiPython-based applications, e.g. Bender, where the reading of several configuration *.opts-files is possible (Alexander Mazurov).
- Patch #895. Add new functionality for Particle Property Service: (Ivan Belyaev)

1. Modified to add possibility to redefine properties of existing particles and to read additional files. New property "OtherFiles" (default is empty vector) is introduced. Service parses additional files after the main one
2. Add possibility to modify only certain particles through the new property "Particles"

- fixed the random engine declaration in the GaudiSvc_load.cpp file (Hubert Degaudenzi).

## Gaudi v18r9 (2006-10-23)

This version is a rebuilt against POOL 2.4.7b. Please have a look at the v18r8 release notes for more details.

### Externals version: LCGCMT_47c

## Gaudi v18r8 (2006-10-05)

This version is a branch from the v18r7 release version.

### Externals version: LCGCMT_46e

### Packages Changes

- GaudiKernel (v20r10 - branch v20r9b):

- Patch #839: enhancements in the JobOptions/Property part. Please have a look at the release notes of the package (Ivan Belyaev & Alexander Mazurov).
- Added the rootmapdump.py script in the new scripts directory. Allows the dump of the rootmap files in the LD_LIBRARY_PATH. It is also able to check for duplicate entries (Hubert Degaudenzi).
- Patch #863. Add the function System::setEnv to set an environment variable. Setting the variable to "" results in removing it from the environment (same behavior on windows and linux). The parameter overwrite define the behavior in the case the variable is alredy present (0=no change, 1=overwrite). (Marco Clemencic)

- GaudiSvc (v14r11 - branch v14r10b):

- The DataListenerSvc doesn't compile on windows. So it has been temporarily commented out as well as its example (Hubert Degaudenzi).
- Patch #839: enhancements and bug fixes to the JobOptions/Property part (Ivan Belyaev)
- Patch #863. Add map property "Environment" to ApplicationMgr. Adding a pair ("VARNAME","VALUE") have the result of setting the environment variable VARNAME to the value "VALUE" before starting any service (except the message and job option ones) or algorithm. Setting the variable to "" results in removing it from the environment (same behavior on windows and linux, see System::setEnv). If the variable is already present it prints a warning. (Marco Clemencic)
- Patch #881. Modifications for the DataOnDemand service (Ivan Belyaev)

- New properties are added

- "AlgMap" - the map<string,string> property for mapping of address in TES and the algorithm
- "NodeMap" - the map<string,string> property for mapping of adess in TES and soem predefined data type
- "Prefix" - the defautl prefix for TES locations, which codul be omitted from TES location.

- The treatment of "preceding paths" has been modified a bit. Now for each data location also all upwards directories are automatically added as "nodes" (if other behaviour for the particular not is not defined explicitly) of defautl directory type "DataObject". As a result a bit confusing coupling of some the algorithms as "node creators" is removed.

- GaudiPolicy (v6r0 - merge from the v5r25b branch):

- Added the -msse2 and -mfpmath=sse options flags for compilation.
- Use now LCG_Settings for the platform tags (Florence Ranjard)
- Introduced new patterns for future use of the InstallArea. Must be compiled with CMT v1r18p20061003 or later (Florence Ranjard).

- GaudiAlg (v9r9):

- 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 (Olivier Callot)

- GaudiPoolDb (v2r8):

- New scripts directory to contain the ROOT macro files (.C).
- Patch #855 (Markus Frank)

- Allow to turn OFF the default usage of GFAL. Property: PoolDbCacheSvc.UseGFAL, default: true.
- Enforce checking of file GUIDS when opening existing files Default: GUID match is required. Switch off using e.g.: PoolRootTreeEvtCnvSvc.CheckFIDs = false;
- Allow to fill and remember a map with bad files, which cannot be accessed. Removes dramatically printout since the error trace is only printed:

- once per unaccessible data file
- once per container

## Gaudi v18r7 (2006-09-04)

### Externals version changes (LCGCMT_46e)

- POOL_2_4_6
- ROOT 5.12.00c
- COOL_1_3_2c
- CORAL_1_5_3
- CASTOR 2.1.0-7

### Packages Changes

- GaudiKernel (v20r9):

- Patch #817: fixed unnatural behavior for map used in the JobOptions with the "+=" statement (Ivan Belyaev)
- Correct wrong release of strings allocated by strerror and dlerror in System.cpp (Markus Frank)
- Changed interface IJobOptionsSvc from pointer to reference to fix bug #18581 overview: Memory leak due to changed behaviour of the JobOptionsSvc (Pere Mato)

- GaudiSvc (v14r10):

- Fix for the ToolSvc::create that didn't return a StatusCode::FAILURE if the AlgTool::setProperties fails. Now the job should stop cleanly (Ivan Belyaev).
- Creation of the DataListenerSvc service. DataListenerSvc implements the declareInfo methods from IMonitorSvc (without the histogram and pair methods which have empty implementations) and the handle method from IIncidentListener to provide monitoring of variables within a GAUDI algorithm (Ben King).
- Patch #816. Fix for "-=" to work nicely with new Job Options. For details, please have a look at the package release notes (Alexander Mazurov)
- Patch #796: (Markus Frank)

- Improve output stream:
  - If intermediate leaves in the TES are not given in the ItemList (or OptItemList) then they are automatically added: e.g. "/Event/MC/Particles" will add: "/Event" (if not already present)
  "/Event/MC" (if not already present)
  "/Event/MC/Particles"
  This behaviour can be switched OFF by setting the options OutputStream.VerifyItems = false;
  - Add optional stream specification SHARED='YES' to be passed
  directly to the conversion service for further usage.
  - Do not connect output device if the leaf list is empty
  - Remove unnecessary call to setProperties in initialize().
- Create a new output stream PersistencySvc/TagCollectionStream. See
  the header file for further information.
- Implement service remapping in the ApplicationMgr differing from the default <class-name>-<class-name> mapping. Option SvcMapping (vector<string>) allows to change the default services (EventDataSvc etc.). Option SvcOptMapping allows to enter additional mappings.
- NTuples and tag collections:
  - Remove "endreq" entries and replace them by "endmsg"
  - Fix bug in NTupleSvc::isConnected()

- Patch #763. The attached patch encases the library loading in a try block, and makes it much easier to spot the throwing of exeception(s) during that phase (Chris Jones).
- Fix bug #18581 overview: Memory leak due to changed behaviour of JobOptionsSvc(Pere Mato)

- GaudiAlg (v9r8):

- 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 hads 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 (Chris Jones).

- GaudiObjDesc has been removed from Gaudi.
- GaudiExamples (v18r7):

- Added DataListener example. Please have a look at the service for the details (Ben King).

- GaudiPoolDb (v2r6): Markus Frank, patch #816

- Fix to N-tuple converter when writing multi dimensional stuff
- Allow conversion service to open files in shared mode (ie. Files do not get closed on finalize).
- If file ids cannot be located in the file catalog, then assume that the guid is known to GFAL ie <FID> -> gfal:guid:<FID>.

## Gaudi v18r6 (2006-07-14)

This release introduces the new options files compiler/parser. It also uses the new version of ROOT (5.12.00) which is able to open GFAL file.

### Externals version changes (LCGCMT_46)

- POOL_2_4_5
- ROOT 5.12.00
- COOL_1_3_2a
- CORAL_1_5_1
- RELAX_1_1_2
- GSL 1.8
- CASTOR 2.1.0-4

### Packages Changes

- GaudiKernel (v20r8):

- Patch #748: fixed the recipient of the std::string::find method. It should not be assigned to int but to std::string::size_type since it has a different size on 64 bits plateforms (Marco Clemencic).
- Bug #17739. Changed the return value of GaudiMain. Before it was always returning 0 and now it returns the StatusCode of the ApplicationMgr in the UNIX command line way (Hubert Degaudenzi).

- "0" for success

- "1" for failure

- GaudiSvc (v14r9):

- The 5-argument method ToolSvc::retrieve is modified to allow "ToolType:PUBLIC" ( before it allowed "ToolType", "ToolType/ToolName", "ToolType/ToolName:PUBLIC"). "ToolType:PUBLIC" was wrongly resolved in type = "ToolType:PUBLIC" (with correct name "ToolType") (Ivan Belyaev).

- GaudiAlg(v9r7):

- Improvement of the counters output. Doesn't print the weight any more if it is trivial (=1) (Ivan Belyaev).
- 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") (Marco Clemencic).

- GaudiKernel (v20r8), GaudiSvc (v14r9), GaudiHistory (v1r5), GaudiPython (v8r7) and GaudiAlg (v9r7):

- New property parser installed. It relies on the Boost::spirit lexer/parser. For details, please consult the GaudiExamples package. Misc. bug fixes (Alexander Mazurov & Ivan Belyaev).

- GaudiExamples (v18r7):

- Changed the backend for python examples from HBook to ROOT (Hubert Degaudenzi).
- Inserted example which demonstrated the possibilities of the new property parser/compiler (Ivan Belyaev and Alexander Mazurov).

## Gaudi v18r5 (2006-05-24)

This release is basically a bug fix release. It introduces almost no new feature but uses also the new version of ROOT and the new version of POOL.

### Externals version changes (LCGCMT_44)

- POOL_2_4_3
- COOL_1_3_2a
- CORAL_1_4_3
- RELAX_1_1_1

### Packages Changes

- GaudiKernel (v20r7)

- Patch #727. Fixed a compilation problem on Win32 after using std::map instead of hash_map in GaudiUtils::HashMap (Marco Clemencic).
- Patch #725. Fixed a warning on Win32 (Marco Clemencic).
- Patch #723. Redefines the unit "pascal" to "Pa" to avoid a name clash that causes a compiler warning on on Windows in SystemOfUnits.h (Marco Cattaneo)
- Added templated SmartRefVector constructor with first and last iterator pointers as arguments (Vanya Belyaev)

- GaudiExamples (v18r5)

- Added FastContainers example (Marco Clemencic)

- GaudiObjDesc (v9r6)

- Patch #726. Removed a work-around introduced with patch #716 that is not needed with ROOT 5.11 (the change of default allocator for contained objects) (Marco Clemencic).

- GaudiPoolDb (v2r4)

- Patch #724. Do not use anymore SEAL plugin manager for IOHandler installation, since this causes malicious interference with Cintex when used from the python prompt. The IOHandlers get directly installed in PoolDbCacheSvc::initialize (Markus Frank).

- GaudiPython (v8r6) - Pere Mato

- Added changes from Radu Stoica:

- More protections in iDataService
- Introduction of CallbackStreamBuf to be implemented from Python to catch stream output.

###

## Gaudi v18r4 (2006-05-04)

### Externals version changes (LCGCMT_43a)

- POOL_2_4_1
- COOL_1_3_1
- CORAL_1_4_2
- RELAX_1_1_0

### Packages Changes

- GaudiSvc (v14r8)

- Patch #720 (beta test). Added a specialized DataSvc for TransientFastContiner: FastContainersSvc. Lifetime of the objects in this store is the same of objects in DetDataSvc. Each BeginEvent incident triggers a clear() of all the instances of TransientFastContinerBase (Marco Clemencic).
- Removed legacy compiler code in the MsgSvc.
- Patch #707 (Markus Frank)

- Suppress Application manager startup banner if property: ApplicationMgr.AppName = "";
- Allow to attach runables and event loop managers with different type/name combinations. (as it always was for the external services....)

- Inserted ATLAS feature INamedInterface.
- PropertyCompiler.cpp: fixed to allow for a 'f', 'F', 'l', 'L', 'u', or 'U' at the end of a numerical value. Reported by Wim Lavrijsen (Pere Mato).

- GaudiKernel (v20r6)

- Patch #720 (beta test). Added TransientFastContiner<T> (and related helper classes TransientFastContainerBase and DefaultObjectCleaner<T>). The new container does its own memory management, recycling the objects not used and not deleting them when it is cleared (just reset an internal counter) (Marco Clemencic).
- Added PhysicalConstants.h and SystemOfUnits.h (from CLHEP) in GaudiKernel. The constants and units are in the Gaudi::Units namespace.
- Patch #715. Added boost allocator wrapper (Marco Clemencic).
- Patch #719. Added 2 functions to make the UpdateManagerSvc work safely in multi-thread environment. They allow to block the activities of the service while interacting with it (Marco Clemencic).
- Clean up of the legacy lines of code for obsolete compiler version (before gcc 3).
- Patch #705. The default hash functions is extremely expensive for integers. This causes extremely poor performaces for the standard KeyedContainer<>. The patch introduces efficient specializations of Hash<> for int, long and long long (and unsigned) (Marco Clemencic).
- Inserted ATLAS feature INamedInterface.

- GaudiAlg (v9r6)

- 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 (Marco Clemencic).

- GaudiAud (v7r1)

- Inserted ATLAS feature INamedInterface.

- GaudiExamples (v18r4)

- Removed legacy lines of code for old compilers (before gcc 3)

- GaudiObjDesc (v9r5)

- Patch #716. Added support for custom allocators. The type ("NO" or "BOOST") can be chosen via an attribute of the XML tag class (allocator) or via a command line option to G.O.D. (that can be used to override the XML selection) (Marco Clemencic).
- Turning on doxygen documentation for generated typedefs (Stefan Roiser)

- GaudiPolicy (v5r24)

- Added slc4_ia32_gcc345 tags.

- GaudiPython (v8r5)

- Clean up of legacy lines of code.

- RootHistCnv (v9r10)

- Changed "Athena Trees" to "Gaudi Trees" titles.

## Gaudi v18r3 (2006-04-03)

### Externals version changes (LCGCMT_42b)

- ROOT 5.10.00c
- POOL_2_4_0
- COOL_1_2_9
- CORAL_1_3_1
- RELAX_1_0_1
- SEAL_1_8_1

### Packages Changes

- GaudiPolicy (v5r23)

- removed the obsolete Solaris platform tags.
- changed default optimization for fflags (Fortran) to "`-O2`".
- added `slc3_amd64_gcc344` tags and `slc3_ia32_gcc344`.
- remove `$(use_linkopts)` from pattern `<library>_shlibflags`
- remove `rh*` and `slc3_gcc323` tags (not the `slc3_ia32_gcc323` tags)

- GaudiKernel (v20r5)

- modified the returned values of the Auditors beforeExecute/afterExecute (etc) to be "`void`" instead of "`StatusCode::SUCCESS`".
- patch #691. Add support for objects in N-tuples. Note: This only works for `NTuple::Item`. `NTuple::Array` and `NTuple::Matrix` is __NOT__ supported for objects. If you need this functionality store an `std::vector<Object*>`. See GaudiExamples/POOLIO/EvtCollectionWrite for an example of the usage (Markus Frank).
- Added GaudiMain.cpp in the library (Markus Frank).
- patch #668. Fix retrieval of error string in `System::getErrorString()`. The routine caused a core dump on linux when dl_error() returned NULL (Markus Frank).
- patch #678. It has been reported that MS implementation of `hash_map` is extremely slow. The idea is to use `std::map` instead (which is faster than hash_map on win), while we investigate to find a better solution (Marco Clemencic).
- fixed windows compilation warning (bug #14852).

- GaudiSvc (v14r7)

- Fix memory leak in `EventSelector::releaseContext`: context object was not always deleted (Markus Frank).

- GaudiPoolDb (v2r3) - Markus Frank

- Add property AgeLimit to the PoolDbCnvSvc. This allows to defer the closing of databases.
- Tests: update + removal of CLHEP dependency. Change options to use the precompiled dictionaries from Relax.
- Remove patches for ROOT 3.

- Modify printout when unable to load dictionary shared library

- Adapt tests in requirements to use Reflex from ROOT

- GaudiAud (v7r0)

- replaced the returned StatusCode with void for `before*/after*` public methods of auditors. Interface changed.

- GaudiObjDesc (v9r4) - Stefan Roiser

- introducing two new typedefs

- `typedef KeyedContainer<T,Containers::HashMap> Container;`

- `typedef KeyedContainer<const T,Containers::Hashmap> ConstContainer;`

- These macros are generated in addition to the

- `typedef KeyedContainer<T,Containers::HashMap> Ts;(Ts being the the plurial of the class name).`

- These macros will be created if a class directly inherits from `KeyedObject` or if the `keyedContTypeDef` attribute of `<class>` is set to `"TRUE"`
- fix for destructor implementation. An empty code element will result in an empty inline implementation

- GaudiAlg (v9r5)

- changed the return value of the `{GaudiAlgorithm,GaudiTool}::put` from `StatusCode::SUCCESS` to void.
- patch #669: (Chris Jones)

- Remove boost from public interface (includes in GaudiAlg directory)

- Implement proper postfix and prefix `++` and `--` operators to `GaudiAlg::ID`

- patch #665. Make the counter printing by default turned on in GaudiCommon. make the counter number summary obey the same job option (Chris Jones).
- fix -no_auto_import statements in the requirements file. Remove extra semicolon producing warnings with GCC 3.4.4.

## Gaudi v18r2 (2005-12-20)

### Global Changes

- First version released using ROOT::Reflex.

- A new interface package Reflex has been created
- It define a new cmt pattern reflex_dictionary which replaces the old cmt pattern lcg_dictionary
- The "--split" and "--reflex" options are therefore now obsolete.

- The dictionary libraries for the common libraries are now provided by a new package: RELAX (CLHEPRflx, HepMCRflx, MathRflx, STLRflx, ReflexRflx). They replaced the old ones provided originally by SEAL.
- Use of the macros defined in GaudiKernel/DeclareFactoryEntries wherever possible in the Gaudi packages.

### Externals version changes (LCGCMT_41)

- ROOT 5.08.00b
- POOL_2_3_0
- SEAL_1_8_0
- COOL_1_2_7
- CORAL_1_2_1
- Reflex (from ROOT 5.08.00b)
- RELAX_0_1_0

### Packages Changes

- GaudiKernel (v20r4)

- Added new program genconf to generate the python configuration file for component libraries (Pere Mato)
- Fix bug #14665 overview: IID_IAlgorithm and IID_IConversionSvc Conflict (Pere Mato)
- Moved some class in the dictionary of GaudiPython to the dictionary in GaudiKernel (Pere Mato)
- Added class Gaudi::Time (based on seal::Time). Updated interfaces IDetDataSvc, IValidity and IUpdateManager in order to use the new class. Modified dictionary.h and dictionary.xml in order to produce dictionaries for Gaudi::Time (Marco Clemencic).

- GaudiObjDesc (v9r3)

- Fix allowing tospecify additional flags to be passed to gccxml, by defining the macro use_obj2dict_gccxmlflags (Marco Cattaneo)

- GaudiPI (v1r0)

- refactoring of the #include statements in order to conform to the Gaudi way: #include "GaudiPI/..."
- Removed XML files and removed dependency to Expat (Pere Mato)

- GaudiPolicy (v5r22)

- added $(<library>_use_linkopts) into the macro <library>_shlibflags for various patterns. This fixes the problem with the -import option not taken into account when building libraries (visible on windows only) (Pere Mato)

- GaudiPython (v8r3) - 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
- inserted workaround to match the correct naming of dictionaries on Linux

- GaudiSvc (v14r6) - Marco Clemencic

- patch #659. Modified POOLIO and RootIO examples replacing ITime+TimePoint with Gaudi::Time .
- patch #648. Currently, an incident listener cannot stop the execution of a program even if it throws an exception. In some cases it is important to exit if a problem occurs, to avoid hard to debug problems. A simple way to allow an incident listener to stop the program is to use the IEventProcessor::stopRun() method.

## Gaudi v18r1 (2005-12-20)

### Externals version changes (LCGCMT_40a)

- Python 2.4.2
- ROOT 5.08.00
- POOL_2_2_7
- SEAL_1_7_9
- COOL_1_2_7
- CORAL_1_2_1
- PI removed (replace by GaudiPI)

### Packages Changes

- GaudiPI (v0r6)

- replaces the PI package.

- GaudiKernel (v20r3)

- added the UpdateManager interface (Marco Clemencic)
- Fix problems of KeyedContainer when using keys with explicit constructors (Markus Frank).

- GaudiAlg (v9r3)

- added registration of the current instance to the UpdateManager as a consumer for a condition in GaudiCommon (Marco Clemencic).
- remove the member functions of class Tuples::TupleObj for filling the N-Tuple with CLHEP objects (3D and 4D-vectors) (Vanya Belyaev).

- GaudiPython (v8r2) - (Pere Mato)

- Changed requirements to be able to put temporary libraries ahead in the LD_LIBRARY_PATH
- Added PyCintex.py as a temporary basis
- Changed the order when loading the dictionaries
- Minor changes to make python GaudiExamples to work

- HbookCnv (v14r6)

- Modification to allow creation of huge hbook ntuples. 100% backward compatible (Vanya Belyaev)

- RootHistCnv (v9r7)

- replacement of the PI dependency with the GaudiPI dependency

- GaudiSiteSvc (v1r4) - (Hubert Degaudenzi)

- added the flag STAGE_DEFERRED to the stagein command in order to allocate the disk space only when the tape is staged on the robot.
- added the flag STAGE_NORETRY to the stagein command in order to cure the hang of the system when a medium error occurs.

- GaudiExamples (v18r1)

- added the examples from the python directory (Vanya). Added the corresponding reference files (.pyref).
- added new (sub)example which illustrate how to define effective custom columns for N-Tuple. In this example filling N-Tuple with "dublets" and "triplets" are illustrated, where "dublet" is std::pair<double,double> and "triplet" is std::pair<std::pair<double,double>,double> (Vanya Belyaev)

## Gaudi v18r0 (2005-11-22)

First data format incompatible series. The hacks which allowed to read back the old format (RTTC) have been removed.

### Packages Changes

- GaudiKernel (v20r1)
  - Added 3 new classes to replace the HashTable and the hacks in stl_hash.h: GaudiUtils::Map, GaudiUtils::Hash and GaudiUtils::HashMap (Marco Clemencic)
  - Change output level data member in Algorithms and AlgTools from int to IntegerProperty, and add a non-const access method for this property. Allows uses to attach callback handle methods to this property. (Chris Jones)
  - Added new methods to IAlgorithm: isInitialized(), isFinalized() and isExecuted()
  - Fixed problems of KeyedContainer when using keys with explicit constructors.
  - Added new class GaudiUtils::VectorMap that implements an associative vector (Vanya Belyaev)
  - Converted the Gaudi class in Bootstrap.h into a namespace. Needed as namespace.
- GaudiAlg(v9r2)
  - Adapted to use the new classes (GaudiMap, GaudiHash, GaudiHashMap) replacing HashTable and the hacks in stl_hash.h (Marco Clemencic)
  - Added 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
  - Added fix obscure crash when using profile histograms in tools, with literal IDs and multiple sub-directories. Fixed by cleaning up the finalisation counting of histograms.
- GaudiObjDesc (v9r1)
  - Merged in some more changes from the branch
  - MsgStream overloading for public enum types (by default)
  - Namespace LHCb - all event classes and namespaces live in the namespace LHCb
  - Renamed container typedefs for classes inheriting from ContainedObject
  - Only one typedef (from vector), the name has changed from <Class>Vector to <Class>es (plural)
  - The typedef for lists has been removed
  - Removed obsolete xml attributes
- GaudiSvc (v14r4)
  - Eventloop calls resetExecuted() to all "known" algorithms instead to only the topAlgs. This was needed to be able to call sequences by the DataOnDemand service.
- GaudiPython (v8r1)
  - Minor changes. Removed unneeded dictionary entries (not needed with PyROOT).

## Gaudi v17r2 (2005-11-14)

### Externals version changes (LCGCMT_38)

- ROOT 5.06.00
- POOL_2_2_4
- SEAL_1_7_6
- COOL_1_2_6

### Minor Changes

- GaudiKernel (v20r1)

- added the transient state to the refCount and hasKey Methods of KeyedObject in the dictionary_rflx.xml selection file (Markus Frank).
- removed obsolete files GaudiKernel/KeyedDictionary.h and GaudiKernel/SealDictonary.h (Marco Cattaneo).

- GaudiSvc (v14r2)

- bug #12556. fix behavior for the "-=" of the property compiler. Now only issues a warning if the keyword to be removed is not in the list. Before it was stopping the job (Patrick Koppenburg).
- modified requirements file for future use of the new package GaudiPI.

- RootHistCnv (v9r6)

- modified requirements file for future use of the new package GaudiPI.

- GaudiObjDesc (v8r2 branch v8r1b)

- Add "ioname" hack to lcgdict selection xml file, to be picked by cintex. Needed to read event classes written with old GOD generated dictionaries, where attribute names are not prefixed by "m_". This hack must be removed before writing large amounts of new data and it is sitting in a different branch (v8r1b) (Marco Cattaneo).

- GaudiPython (v8r0)
  - Changed package to based it with the Reflex dictionaries and PyROOT (part of ROOT). The new package uses the module PyCintex that interfaces Reflex to CINT, which is what PyROOT uses to provide the generic Python interface (Pere Mato).

## Gaudi v17r1 (2005-10-13)

### Externals version changes (LCGCMT_37c)

- POOL_2_2_2
- SEAL_1_7_4

### Changes

- few fixes in GaudiObjDesc to accomodate new reflection system (Reflex)

## Gaudi v17r0 (2005-10-04)

### Externals version changes (LCGCMT_37b)

- COOL_1_2_4, MathLib_1_0_0
- PI_1_3_6, POOL_2_2_1, ROOT 4.04.02g
- SEAL_1_7_3

### Changes

- GaudiAlg (v9r0)

- 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 (Olivier Callot).
- GaudiAlgorithm and GauidTool classes gets the new functionality for generic statistical counters (Ivan Belyaev).
- Few technical changes to improve the overall flexibility and the control for printout (Ivan Belyaev).
- Few technical reshuffling in between public/protected and private interfaces for simplicity of building dictionaries (Ivan Belyaev).

- GaudiAlg (v9r1)

- Introduction of support for profile histograms and also the introduction of common code for the tools and algorithms (Chris Jones).

- GaudiExamples (v17r0)

- Patch #505. New examples for GaudiExample package to illustrate new features in GaudiAlg and GaudiPython packages. The detailed description of new features can be found in doc/release.notes file (Ivan Belyaev).
- Add algorithm GaudiHistoAlgorithm to the src/Histograms example. Illustrates the use of the GaudiHistoAlg base class (Chris Jones).
- Update TupleAlg example algorithm to illustrate the use of both numeric and literal IDs (Chris Jones).
- Patch #518. New python example to access Event Tag Collections form python. As input the "pseudo-DST", created by C++-example EvtColsEx (see patch #517) is used (Ivan Belyaev).

- GaudiKernel (v20r0)

- patch #476. Overload for the MsgStream::operator << for StatusCode to cure failed compilation of some Reflex dictionaries (Stefan Roiser).
- patch #445. Move basic dictionaries from GaudiPoolDb to GaudiKernel (Markus Frank).

- gccxml inputs in new subdirectory dict
- output id in a dictionary DLL called "GaudiKernelDict"
- Reflex dictionary produced in parallel: "GaudiKernelRflxDict"

- patch #502. Minor polishing of Stat and StatEntity classes to improve their functionality (in absolutely backward compatible way) (Ivan Belyaev).
- added 'long long' format in the instantiation of SimpleProperty and SimplePropertyRef templates.
- Changed CLID from "unsigned long" to "unsigned int" to satisfy the new POOL 2_2_0 which uses reflex.

- GaudiPolicy (v5r21)

- added slc3_ia32_gcc323_cov tag for coverage test. To be used along with gcov or lcov
- added slc3_ia32_gcc323_pro tag for profiling. To be used along gprof or kcachegrind.
- added dependency of the component library on the linker library (when it exists) (Pere Mato)

- HbookCnv (v14r4)

- fix for the problem of the overflow of the 2D histograms. HbookCnv was producing wrong numbers for overflows in N/W/S/E summing up the whole row/column (Stefan Roiser).

- HbookCnv (v14r5)

- Update Histogram and NTuple converters to reassign IDs if a non-numeric ID is found. Reassigned IDs start at 1001 and increment each time. If subsequently, an ID is found (in the same directry) that corresponds to one of the reassigned IDs, then that ID is also reassigned (This only occurs if a mixture of numeric and non-numeric IDs is used, which is probably rare). A warning is issued for all reassignments (Chris Jones).

- RootHistCnv (v9r5)

- patch #506. Creating H2D and H3D histograms (function createPersistent) was creating wrong values for weights in some cases. This patch removes all the implementation code and calls the Aida Root histogram converter (from pi) instead (Stephan Roiser).

- GaudiPoolDb (v2r0)

- Multiple changes. Remove dependency from POOL persistency service. Adapt to ROOT 4 using reflex (Markus Frank).

- GaudiPython (v7r0)

- patch #504. It is mainly the extension of GaudiPython to incorporate C++ classes from GaudiAlg package. These changes includes the resuffling of existing lines to allow use them outside GaudiPython New module python/GaudiAlgs.py provides 3 base classes (python versions of GaudiAlgorithm, GaudiHistoiAlg and GaudiTupleAlg classes) For detailes description of new features see doc/release.notes file (Ivan Belyaev).
- patch #512 and #516. Modifications for updated GaudiAlg to incorporate very attractive feature: "universal" (numeric or alphanumeric) histogram/ntuple identifier, introduced by Chris Jones into GaudiAlg (Ivan Belyaev)

- GaudiObjDesc (v8r0)

- Move dictionary generation from Reflection to Reflex. GOD now produces header files with proper includes and instantiations of templated classes plus a selection.xml file which will be passed to the SEAL lcgdict command to generate dictionary source code (Stefan Roiser).

## Gaudi v16r5 (2005-07-08)

### No externals version changes (LCG_35)

### Minor Changes

- GaudiPython (v6r13)

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

- GaudiSvc (v14r0)

- use TimePoint instead of ITime* (should be faster) and few fixes (Marco Clemencic)
- Implementation of an output stream doing a shallow copy of the main input file identified by it's dbase set in /Event. /Event may be overwritten by ItemList[0]. Also sub-trees may be written for interactive analysis, by specifying several sub-trees in ItemList. Otherwise identical behavior to OutputStream (Markus Frank).
- Explicitly finalize each stream after usage. It turns out that for several thousands of input files even the properties allocate several MBytes of memory (found by Niko during LHCb-RTTC) (Markus Frank).
- The property compiler now supports the removal of an option (-=) (Patrick Koppenburg)

- GaudiObjDesc (v7r4)

- adding template support for methods (attribute template). No dictionaries for templated methods are created (if needed use lcgdict) (Stefan Roiser).
- new <bitfield> attribute "exclusive" triggers inclusive or exclusive setting of the bitfield. Fix for bitfield check-methods, bit to check shifted into right position (Stefan Roiser)

- GaudiAlg (v8r9)

- 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 (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 (Olivier Callot).

- GaudiKernel (v19r3)

- modifications for the new service StagerSvc. Added IStagerSvc and a new incident "EndStream" that will trigger the end of the processing of one file (Hubert Degaudenzi).

- GaudiExamples (v16r3)

- added example for the Stager Service (Hubert Degaudenzi)

- GaudiSiteSvc (v1r0)

- new package import. Added the StagerSvc. Will only be built if CMTSITE is set to CERN. The function of this service is to stage in advance a set of CASTOR files (Hubert Degaudenzi).

## Gaudi v16r4 (2005-05-20)

### Externals version changes (LCG_35)

- CERNLIB 2004, ROOT 4.04.02
- SEAL 1.6.3, POOL 2.0.7, PI 1.3.3

### Minor Changes

- GaudiKernel (v19r2)

- Added const qualifiers to function members of the IValidity class (Marco Clemencic)
- Added path access to SmartRef (Marco Clemencic)

- GaudiSvc (v13r4)

- Added fix to avoid an endless loop if an environment variable doesn't exist in the options file (Pere Mato)
- Fixed bug #8498 overview: cannot use the same file twice as input to EventSelector.EventSelector/EventSelector.cpp: Added a warning when the input file is already in the list and continue. (Pere Mato)
- Fixed bug #5476 overview: Gaudi crashes when having 2 topalgs with the same name. ApplicationMgr/MinimalEventLoopMgr.cpp added extra addRef(). (Pere Mato)

- GaudiExamples (v16r2)

- Added example for Vanya's extensions of TupleAlg (Ivan Belyaev).

- GaudiAlg (v8r8)

- Extensions of the TupleAlg algorithm. Please have a look at the release notes of the package. (`Ivan Belyaev`)
- Change the time normalisation in SequencerTimerTool: Default is not to normalise, i.e. to print measured time, but we always print the value of the normalisation factor, now compared to 2.8 GHz Xeon (Olivier Callot)

## Gaudi v16r3 (2005-04-14)

### Externals version changes (LCG_34)

- CERNLIB 2004, ROOT 4.03.04a
- SEAL 1.6.2, POOL 2.0.1, PI 1.3.2

### Minor Changes

- GaudiKernel (v19r1)

- Removed obsolete interface files

- GaudiSvc (v13r3)

- Added AIDATupleSvc (Manuel Domenech)
- Add AppName and AppVersion properties to ApplicationMgr to print a welcome message using their value

- GaudiExamples (v16r1)

- added CppUnit in the requirements file

- added "ApplMgr.appName=GSLTools" to test the renaming of the application manager with GSLTools.exe.

- added AIDATuple examples:

1. to write Tuples: AIDATupleWrite.exe ../options/AIDATupleWrite.opts
2. to read Tuples: AIDATupleRead.exe ../options/AIDATupleRead.opts

- GaudiAlg (v8r7)

- removed memory leaks from GaudiTool and GaudiAlgorithm finalize methods (`Ivan Belyaev and Chris Jones`)

## Gaudi v16r2 (2005-03-02)

### Externals version changes (LCG_33)

- CERNLIB 2004, ROOT 4.03.02, CLHEP 1.9.1.2_spi1
- SEAL 1.6.0, POOL 2.0.0, PI 1.3.0

### Minor Changes

- GaudiKernel (v19r0)
  - Changed interfaces IAlgManager and ISvcManager: removed obsolete methods and added getFactory(...)
  - System.cpp: applied patch to overcome CXXABI problem (merge from v17r1)
  - Added the interface IAIDATupleSvc.h for the AIDA-based tuple service.
  - ClassID, Algorithm.h and lib/Algorithm.cpp: added declarations for the AIDATupleSvc.
- GaudiSvc (v13r2)
  - EventSelector: Use unmanaged service for sub-event selector. Sub-event selector management is entirely done by the event selector itself. This should solve the crashes when opening several files on SLC3.
  - JobOptionsSvc: Added the possibility to print the list of jobOptions, sorted.
    - The line "#printOptions" switches off completely the printing of jobOptions during their processing, but afterwards print a sorted list of options, truncated to about 100 characters. Truncation can be suppressed by adding the keyword 'full' i.e. "#printOptions full" prints all options.
    - Make the "#pragma print on/off" nested, i.e. a counter is used, incremented by "print off" and decremented by "print on", and printing of options is done only when the counter is zero.
    - The included files (open/return) are printed only if the print level is zero.
  - ToolSvc.cpp(.h): Added catch clauses in initialization and finalization of tools
  - Added AIDATupleSvc to work with tuples using the AIDA interfaces. Currently suports ROOT and XML persistency.
- GaudiAlg (v8r6)
  - TupleObj.h/.cpp: Overcome the problem that CLHEP::Hep3Vector and HepGeom::BasicVector3D<double> are completely unrelated classes in the new CLHEP.

## Gaudi v16r1 (2005-02-09)

### Minor Changes

- GaudiKernel (v18r2)
  - System.cpp(typeinfoName): removed extra spaces between types and "*" and "&
- GaudiAlg (v8r5)
  - Added #include "GaudiAlg/TupleObj.h"
  - Changes in comments to fix Doxygen documentation
- GaudiObjDesc (v7r3)
  - lowering getter names of bitfields (as for all other getters) (e.g. HTL()->htl(), PDRow()->pdRow())
  - fix for dictalias when generating info for dictionary fields
  - generation of bitfield accessor methods fixed
  - added support for transient attribute of <attribute> element
  - fix to not self include the header file after the class definition

## Gaudi v16r0 (2005-01-17)

### Minor Changes

- Change of CMT version to v1r18p20041201
- Changed to CLHEP 1.9.1.2
  - Introduced CLHEP namespace. There is an implicit "using namespace CLHEP" but does not work 100% of the cases.
    Here are some examples where the change is affecting in a non compatible way:
    - Random number engines are called like "HepRndm::Engine<CLHEP::RanluxEngine>"
- Changed GSL 1.5, ROOT 4.02.00
- GaudiKernel(v18r0):
  - Interface IMonitorSvc and changes to base class Algorithm to support online monitoring.
  - Changed IEventProcessor. Added stopRun() to schedule a stop of the event processing loop.
  - System: dynamic libraries with RTLD_GLOBAL and removed special implementation of type_info (tinfo.cc)
- GaudiSvc(v13r0)
  - Implementation of IEventLoopMgr::stopRun() to schedule a stop of the event loop.
  - Added Profile histograms 1D and 2D (from ATLAS). Can only be saved using ROOT.
- RootHistCnv(v9r4):
  - Added profile histogram converters
- GaudiAlg(v8r4):
  - GaudiSequencer: Added the option "ReturnOK" forcing the sequencer to return a good status.
  - Changed normalization of the SequencerTimerTool
  - 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
- GaudiObjDesc(v7r1)
  - New redesigned package using python scripts to generate the code.
  - See release.notes for detailed information.
- New package LCGEnv to set the environment for LCGCMT

## Gaudi v15r3 (2004-10-25)

### Minor changes

- GaudiKernel (v17r0)
  - Algorithm.cpp: added setFinalized() at the end of of the finalization to avoid doing it more than once.
  - Service.cpp: added protection on accessor msgSvc() for the MessageSvc itself.
  - Changed IAlgManager interface.
    - Added initializeAlgorithms() and finalizeAlgorithms()
    - Removed declareAlgCreator()
    - Added optional argument to createAlgorithm() to tell if the Algorithm should be managed
  - New class ServiceLocatorHelper used to implement service methods in Algorithm.(h,cpp), Service.(h,cpp), AlgTool.(h,cpp), Converter.(h,cpp)
  - ISvcLocator.h: new method service<T>(type, name, T*, bool) to
    create/retrieve a non-default instance of a service
  - Service.(h,cpp): callback for output level
- GaudiSvc(v12r5)
  - Bug fix in CollectionCloneAlg.cpp: typo in float and double types. It prevented stripping.
  - Removed AlgorithmFactory.h(.cpp) and replaced by AlgorithmManager.h(cpp). AlgorithmManager keeps a list of "managed algorithms". These algorithms are added into the list when the flag managed=true on ::createAlgorithm() method. They are initialized and finalized by the AlgorithmManager. ApplicationMgr.cpp: added a call to m_algManager->finalizeAlgorithms();
  - DataOnDemandSvc.cpp: added managed=true when creating an Algorithm
- GaudiAlg (v8r2)
  - Use the 'filterPassed' result even if the algorithm was already run and not run a second time, in GaudiSequencer.
  - 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'
- GaudiExamples (v15r1)
  - Added DataOnDemand example
- GaudiPython(v6r9)
  - Implementation of AppMgr.config() following the ideas from Vanya
  - Documentation string for some more classes and methods
  - Implementation of AppMgr.tool()
  - Implementation of AppMgr.setAlgorithms()
  - Implementation of iNTupleSvc class and AppMgr.ntuplesvc()
  - Implementation of iNtupleSvc.defineOutput( {}, type='ROOT' )
- GaudiPoolDb(v1r10)
  - Minor changes due to GaudiKernel change

## Gaudi v15r2 (2004-09-17)

### Minor changes

- LCG configuration 26_2d
- GaudiPolicy (v5r19)
  - Removed /D_DEBUG from cppdebugflags_s (for Windows)
- GaudiKernel (v16r2)
  - ParticleProperty: Two methods for particle<-->antiparticle relations
- GaudiSvc( v12r3)
  - Added algorithm to merge event collections ( CollectionCloneAlg)
  - Update to StoreExplorerAlg to force object access for ContainedObject(s) in ObjectContainerBase(s)
  - Updated description in DataOnDemandSvc header file
  - Changes to options for the DataOnDemandSvc.Algorithms property in the form: 'TYPE/NAME'. If the algorithm name is omitted the class name will be the instance name.
  - Two new methods from IChronoStatSvc are implemented to allow public run-time inspection of Chrono & Stat counters.
  - Modification to fill a proper particle <--> antiparticle relations for ParticleProperty objects
- GaudiPoolDb (v1r9)
  - Removed some false printout about memory leakage
- GaudiPython (v6r8)
  - Reworked AppMgr.run() to avoid calling reinitialize(). This is currently a problem because resets the event stream to the beginning each run().
  - Added protection when algorithm/service does not exists and no properties are yet defined.

## Gaudi v15r1[p1] (2004-08-04)

### Patches

- GaudiSvc (v12r2p1)
  - EventLoopMgr: Release event loop context on finalize
  - EventSelector: Finalize properly input streams to release sub-EventSelector instances
  - MinimalEventLoopMgr: Moved resetExecuted() out of the loop of top Algorithms. The reset executed flag of all Algorithms is done before starting executing them.
- GaudiPoolDb (v1r8p1)
  - PoolDbCnvSvc: Fix memory leaks of leaking tokens on write/read. Added some printout if memory leaks are suspected.
  - PoolDbCnvSvc/PoolDbCacheSvc: Fix error on DatabaseConnectionPolicy when setting setWriteModeForExisting
  - Avoided crash returning from main(). There are problems unloading certain dictionary libraries. For the time being no fix was found to cure this problem. In order to keep things running no dictionaries are unloaded for the time being.

## Gaudi v15r1 (2004-07-26)

### Minor changes

- GaudiSvc (v12r2)
  - EvtSelector: Fixed bug that the option EventSelector.FirstEvent was skipping twice the number of events. Improved printout with the real event record number.
  - ToolSvc: Added the option to switch between "private" and "public" tools based on the name given to the tool. If the tool name ends with ":PUBLIC", the tool will be public.
- RootHistCnv (v9r3)
  - Added the option to prefix histograms id with "h" when they are numerical (mandatory for HBOOK). This facilitates the interaction with them from the ROOT application. (RootHistSvc.ForceAlphaIds = true;)
- GaudiPython (v6r7)
  - Moved method AppMgr.loaddict() as module function
- GaudiPolicy()
  - Changed pattern library_Softlinks to use macro_append instead of macro

## Gaudi v15r0 (2004-07-19)

### Major changes

- CMT interface packages taken from LCGCMT
  - Interface packages are located under LCG_Interfaces (ex: use CLHEP v* LCG_Interfaces)
  - Some of the packages have been renamed: CERNLIB -> cernlib, BOOST -> Boost, PYTHON -> Python
- New version of AIDA interfaces package (3.2.1)
- GaudiKernel (v16r0)
  - Changed IEvtSelector interface (Carmine Cioffi). Replaced Iterator by "Context". It is NOT backwards compatible
  - Removed typedef IID to InterfaceID to eliminate the clash with Windows.h IID. It is NOT backwards compatible. It requires to change IID by InterfaceID.
  - MsgStream.h. Added templated MsgStream& operator << (MsgStream&, const T&) to handle all cases for which the standard std::ostream& operator << exists.
  - New header file Environment.h extending the System namespace to handle standard environment manipulations
  - Allow for environment resolution in token values - if requested. Default is backwards compatible
  - Implementation of "data on demand". The DataSvc issues "incidents" by using the IncidentSvc when accessing persistent data or data faults (configurable by job options).
  - ParticleProperty.h: added method pdgID() and setPdgID as aliases to jetsetID.
  - Interface and base classes for HistorySvc and HistoryObjects.
- GaudiSvc(v12r0)
  - Updated EventSelector implementation to use new definition of IEvtSelector interface
  - Allow for logical names (environment variables) in file specifications of OutputStream, EventSelector and HistogramPersistencySvc
  - Added new service DataOnDemandSvc. The DataOnDemandSvc listens to incidents typically triggered by the data service.
  - Added new Service MultiStoreSvc. Transient datastore with several concurrent partitions all initialized with the same opaque address, hence the same persistent data content. However when adding data different algorithms could act on.
  - Added new algorithm PartitionSwitchAlg & Tool to switch e.g. above service in a sequence.
  - Added new algorithm SToreExplorerAlg. Explore data stores to see content. May or may not load objects. Very useful debugging tool.
  - Modify SvcManager to accept standard type/name tuples for Service creation: getService("svc/myinstance", IMyService, createIf)
  - In JobOptionsSvc added path separator ':' (';' for Windows) when processing JOBOPTSEARCHPATH such that it can be build with CMT with path_append (path_prepend) directives.
  - MessageSvc: use callbacks to set properties
  - AlgContextSvc: moved from Athena. Determine which Algorithm is currently executing.
  - HistorySvc: Management of HistoryObjects
- GaudiTools
  - This package has been removed. The contents ( only the GaudiTool class) has been merged with GaudiAlg package. The User needs to change any occurrence of use GaudiTools v* in requirements files to use GaudiAlg v* and any occurrence of #include "GaudiTools/GaudiTool.h" to #include "GaudiAlg/GaudiTool.h".
- GaudiAlg (v7r4)
  - GaudiAlgorithm:
    - Added exist() to check existence of objects in Gaudi Transient Store
    - Added existDet() to check existence of objects in Detector Transient Store
    - Added getOrCreate() to get or create objects in the Event Transient Store
    - Added the message "The ERROR message is suppressed : ....." when a error is supressed
  - 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
  - Separated in two libraries: link and component library
  - Added 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
- GaudiHistory (v1r3)
  - New package containing the definition of "History" objects : JobHistory, ServiceHistory, AlgorithmHistory, AlgToolHistory, DataHistory

### Minor changes and Bug Fixes

- Fixed [bugs #3667] bytes to Mbytes conversion in ProcStats.cpp
- GaudiDb(v10r0)
  - Fix in DbGenericConverter: identified links were never written correctly.
  - Upgrade to new EventSelector interface
- GaudiPoolDb (v1r7)
  - Fix: [bugs #3247] Memory leak in gaudipooldb image rundown. Properly unload libraries now on finalize()
  - Updated to new event selector interface
  - Allow for usage of environment variables
- GaudiExamples(v15r0)
  - Added a bunch of examples for POOL I/O (Write, Read, CollWrite, CollRead)

## Gaudi v14r6 (2004-06-10)

- GaudiKernel(v15r4)
  - Added changes from Vanya to fix the problems reported by Matt on output level for AlgTools
- GaudiSvc(v11r7)
  - JobOptionsSvc: Fixed infinite loop reporting errors when "unit" file is not present
- GaudiAlg(v7r3)
  - Changed the length of Hbook names from 8 to 16
  - 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.
  - 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
- GaudiAud(v6r5)
  - Fixed [bugs #3667] bytes to Mbytes conversion in ProcStats.cpp
- GaudiPython(v6r5)
  - Small corrections in iProperty and completed the set of different property types.

## Gaudi v14r5 (2004-04-20)

     uses POOL_1_6_3 and SEAL_1_3_4

### Minor changes and Bug Fixes

- GaudiKernel (v15r3)
  - KeyedContainer: modified erase() method to use a temporary vector to increase dramatically its performance. Tested by VeloSim
- GaudiSvc (v11r6p1)
  - Added debug printout in ServiceManager

## Gaudi v14r4 (2004-04-02)

     uses POOL_1_6_2 and SEAL_1_3_4

### Minor changes and Bug Fixes

- ExternalLibs (v4r5)
  - uses Xerces from sw/packages because the win32_vc71 lcg installation has a problem.
  - GaudiSvc (v11r6)
    - OutputStream: add an option PreloadOptItems (default false) to preload also the objects defined in OptItemList. This is needed when making a copy of a dataset containing OptItems.
    - ToolSvc: Fixed a long standing problem on the finalize Tools when they have cyclic dependencies. See release.notes for the full explanation from Chris Jones
    - ParticlePropertySvc: Adaptation to new interface IParticlePropertySvc. New format for the input file is parsed and the default is now read from $PARAMFILESROOT/data/ParticleTable.txt
    - [bugs #2854] Print the abosule path of the XML detector geometry/description file
  - GaudiAlg (v7r2)
    - Fix a trivial and stupid bug in the implementation of Tuples::make_column and Tuples::Column partial specializations
  - GaudiTools (v8r1)
    - GaudiTool: add attribute "true" to create the service, if it not done earlier for accessors to detSvc() , incSvc() , evtSvc() and incSvc()
  - GaudiGSL (v6r0)
    - Added NumericalDefiniteIntegral into namespace GaudiMath with name DefIntegral
    - Added interpolation. Available interpolation types:
      - Linear
      - Polynomial
      - Cubic spline with natural boundary conditions
      - Cubic spline with periodic boundary conditions
      - Akima spline with natural boundary conditions
      - Akima spline with periodic boundary conditions
  - GaudiPython(v6r4)
    - Changed the initialization of AppMgr. Initialize() is not called at AppMgr.__init__() and it is done later at the AppMgr.run() method
    - Aliases for common AppMgr methods

  ## Gaudi v14r3 (2004-03-04)

  ### Minor changes and Bug Fixes

  - GaudiKernel (v15r2)
    - Changes in IParticlePropertties and ParticleProperty to add Pythia ID and remove obsolete assessors.
  - GaudiSvc (v11r4)
    - ParticlePropertySvc: Adaptation to new interface IParticlePropertySvc. New format for the input file is parsed and the default is now read from $PARAMFILESROOT/data/ParticleTable.txt.
    - A new input file is also provided, that has a new name: ParticleTable.txt. This new file should be put in $PARAMFILESROOT and is used now instead of particle.cdf.
  - GaudiPython (v6r3)
    - Added a the function getComponentProperties(module) to obtain the properties of all component classes available in a given component library (module)
  - GaudiAlg (v7r1)
    - 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.
  - GaudiGSL (v5r1)
    - Fix a serious bug in code for numerical integration

  ## Gaudi v14r2 (2004-02-16)

  ### Minor changes and Bug Fixes

  - GaudiPoolDb (v1r5)
    - Changes to fix the problem with spillover events (changed relative path to absolute ones). The files created with previous versions should be readable with this new one.
    - Fix bug which occurs only on linux in optimized mode (!!). For HepMatrices/vectors the data got scrambled on reading.
  - GaudiDb (v9r2)
    - Fix the problem with missing link manager entries for ROOT files
  - GaudiSvc(v11r3): Bug fix in EventSelector to avoid crash when calling reinitialize()
  - GaudiPython(v6r2):
    - 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
  - GaudiAlg(v7r0), GaudiTools(v8r0):
    - New base classes (GaudiAlgorithm, GaudiHistoAlg,GaudiTupleAlg) 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

  ## Gaudi v14r1 (2004-01-26)

  ### Minor changes and Bug Fixes

  - GaudiKernel: New accessors in Algorithm and AlgTool base classes ( evtSvc() , svcLoc() and OutputLevel() )
  - GaudiKernel: Changes in SmartRef to optimize CPU for POOL based persistency
  - GaudiPython: Small changes from feedback given by Vanya.
  - New version of POOL (1.5.0-zeta)

  ## Gaudi v14r0 (2004-01-20)

  ### Major changes

  - Using SEAL, POOL and PI as external packages.
  - GaudiPoolDb: New package to support object persistency based on POOL.
  - HistogramSvc: Replaced HTL package used by HistogramSvc with the ROOT based AIDA histograms
    implementation from the LCG PI project (Grigori Rybkine)
  - Mac OSX: A number of minor changes needed by the Mac OSX port of the Gaudi software (Guy Barrand)
  - GaudiGSL: Updated GaudiGSL with new solving nonlinear system with n equations in n unknowns (Kirill Miklyaev)
  - GaudiPython: New implementation using the LCG dictionaries (SEAL)

  ### Minor changes and Bug Fixes

  - JobOptionsSvc: Added the possibility to read additional option files.
  - Added additional POOL storage types as known types to the persistency service
  - HbookCnv: deal with empty ntuples (Charles Leggett)
  - RootHistCnv: deal with empty ntuples (Charles Leggett)

  ### Known Problems and Issues

  - Not known issues at this moment

  ## Gaudi v12r1(2003-07-04 )

  ### Improvements and changes

  ### New Functionality

  - JobOptionsSvc supports a search path for job opt file
  - RootHistCnv: Added ability to read in Matrices, and fixed size Arrays

  ### Bug Fixes

  - RootHistCnv: in RCWNtupleCnv::book, where was setting range for non integer TLeaf
  - RootHistCnv: in analyzeItem (Bug #576 Matrices in CWN not filled correctly)
  - GaudiPython: in src/Test/Dictionary/Class_Dict.cpp use new OffsetOf macro

  ### Incompatible Changes

  - BOOST does not add -lboost_python to the link opts anymore (as this implies using PYTHON as well)

  ### Known Problems and Issues

  - Although a warning is printed out, there is no protection against double inclusions of job option files
  - service_i method implementation is replicated in multiple classes

  ## 2003-06-26 Gaudi v12r0p1

  ### Bug Fixes

  - Modified System::typeinfoName() to remove extra white spaces for templated classes with two or more arguments. Prevented loading LHCb associators.
  - Bug #927. In Algorithm::service_i pointer to an unaccessible service is returned unchanged instead of being null

  ## 2003-05-07 Gaudi v12r0

  ### Improvements and changes

  - Full support for gcc 3.2. This is one of the main new changes and the one that has taken us more time and effort. The main difficulties have been to handle dynamic_cast between libraries that are loaded dynamically. See complete explanation in GaudiKernel/doc/dynamic_cast.pb.
  - Major re-write of GaudiPyhton. Changes introduced to convert the package to new version of Boost.Python 2.0. Added the capability of setting/getting properties of Algorithms and Services before they are created by the ApplicationMgr.
  - Major re-write of GaudiObjDesc. Adapted to new version of Xerces 2.2.0
  - Changed CLHEP Random Number distribution from RandGauss to RandGaussQ.
  - Added MessageSvcType property to ApplicationMgr to select alternative MessageSvc implementations
  - Changed connectOutput call of conversion service interface to allow specify the opening mode (NEW, RECREATE, UPDATE)
  - Implement the ability to reinitialize for changing the event file input specification
  - Implement new option RandSvc.Engine.SetSingleton. If set to true, set the default engine in HepRandom.
  - Changed IAddressCreator interface to be able to convert to and from address string.
  - Support to enable/disable Algorithms. Algorithm::sysExecute() returns immediately if isEnabled() is false.
  - Improved code in GaudiGSL minimization tool: all static variables and static methods are removed.
  - Implemented event file "aging" and and algorithm to close files which are "old". This is to avoid having many files open with the consequent waste of memory resources.
  - Added ability to read H1D, H2D, H1DVar histograms from ROOT files.
  - Added ability to read CWNT from ROOT files.
  - Added in GaudiExamples and script (runexamples.py) to run all examples and compare the output with reference files.

  ### New functionality

  - Thread support. Added utilities to get and parse thread instance names.
    Changes in the Service and Algorithm base classes.
    - service() method asks first for thread specific service instance, if not available get generic service instance
    - allow for setting of thread specific and generic properties
    - create thread specific sub-Algorithms automatically
    Changes in MinimalEventLoopMgr and ApplicationMgr to support to support event-level multi-threading
  - Colored Messages. Support colored messages on x-terminals.

  ### Bug Fixes

  - Bug #348. Modified PropertyCompiler to to do a case insensitive compare when appending string options into an option array.
  - Fix memory leak in the event selector. The opaque object address was not deleted when skipping initial event records (FirstEvent property set).
  - Corrected bug in finalizing ToolSvc when Tools are not properly released by end-users.
  - Fix a memory leak at finalization in RndmGenerators.
  - Fixed bug in NTuples/Event collection: NT-tuple description was limited to 4k on gcc 2.95.
  - Bug #214. Fix problem with event selector that caused a crash after last event.

  ### Changes of version in external packages.

  - ROOT v3.05.04
  - Xerces 2.2.0
  - Pyhton 2.2.2
  - Boost 1.29
  - GSL 1.3

  ## 2002-10-06 Gaudi v11r0

  ### Improvements and changes

  - Improved reference counting. Quite a lot effort has been put to handle correctly reference counting on services, tools and algorithms. In general, the user should "release" services that has been located and used during the execution at the finalize() method. If the release is not done, the service will not be destroyed at the end of the execution of the program, and thus showing as a possible memory leak. If an excessive number of releases is done a premature destruction may happen with unpredictable behavior.
  - New way to handle projects with CMT. The Gaudi project is being released in a different directory root with the project version number in its name (/GAUDI_v11r0) and a single version of each package. This implies to change the CMTPATH accordantly. For more details look at Florence Ranjard presentation. In practice:
    - Version numbers have been removed from the "use" statements in the requirements files of individual packages. The versions are fix using the Gaudi requirement file. Beware that "old" versions in user's private areas may be used by mistake.
    - The user will have to setup the CMTPATH to contain the directory where this version is installed. This can be done by "source $Gaudi_release_area/GaudiEnv/v11r0/cmt/setup.csh"
  - This version compiles with gcc 3.2.
  - Removed -Bsymbolic link flag for component libraries. This flag is suspected of producing memory leaks.
  - ApplicationMgr re-factoring. Removed direct implementation of many interfaces by the ApplicationMgr, it delegates now to other objects.

  ### New functionality

  - Controlling the output level of components without properties. Introduced new properties to MessageSvc.
    MessageSvc.setVerbose += {"name1", "name2"};
    (or setDebug, setInfo, setWarning, setError, setFatal, setAlways )
  - Added a more complete algorithm "GaudiAlg/GaudiAlgorithm.h" that can be used as base class for user algorithms. See documentation for details.
  - Added function format(string fmt, ...) that can be used to format messages
    within the MsgStream class.
  - New minimization tool with GSL added in package GaudiGSL. The abstract interface is available GaudiGSL/IFuncMinimum.h.

  ### Changes of version in external packages.

  - CLHEP 1.8.0.0, ROOT 3.03/09, CERNLIB 2002, HTL 1.3..2.1, Boost 1.28

### Incompatible Changes

## 2002-07-18 Gaudi v10r0

### Improvements and changes

- AIDA 2.2. Release v10r0 uses the latest version of AIDA interfaces.
- 3D histograms. Support for 3D histograms (fix and variable binning). Saving them only possible with ROOT.
- Bug fixes collected since last release:
  - If the initialization any sub-algorithms fails should fail job initialization.
  - Fixed problem in user defined random number generator.
- Small improvements:
  - Added more accessors to AlgTool base class
  - Support for long long in MsgStream and StreamBuff
  - Replaced some interfaces forward reference in Algorithm base class by includes.
  - Moved ListItem.h from GaudiSvc to GaudiKernel.
  - New property "OutStreamType" for selecting the default output stream.
  - Major cleanup and removing static storage in RooHistCnv
- Changes needed for Solaris (provided by Wim Lavrijsen)
- Using CMT v1r11. New tags, primitive tags and new patterns defined. Reduced compilation and link dependencies by exploiting -no_auto_imports flag in use statements.
- Changes on External package versions: Python 2.2, Boost 1.27.0, Xerces-C 1.6.0

### Incompatible Changes

- Removed IHistogramXX.h files from GaudiKernel. The user should use AIDA/IHistogramXX.h instead. The dependency on AIDA in GaudiKernel has been removed because is not needed any more.
- Due to the change in the AIDA version some methods have changed (e.g. IHistogram::dimentions() is now IHistogram::dimension() ). Refer to the Doxygen documentation for details.