The Gaudi Project

Gaudi v18r11

The Gaudi v18r11 Full Release Notes

Gaudi Release Notes
Package: Gaudi
Package Coordinator: Pere Mato, Charles Leggett
Purpose: Gaudi common set of packages

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