If you wanna run COOL, you got to run
On heavy, heavy fuel

Dire Straits - Heavy Fuel


This page contains some documentation about COOL_IO, one of the packages I added to the COOL repository, under the contrib/ directory.

This page was last updated on Aug, 31st 2006
Last version available: COOL_IO-00-02-10

Table Of Contents

A bit of documentation

COOL_IO has a double aim. First of all, it allows copying data from/to COOL to/from other formats (ROOT TTree and text formatted files are available at present, and other ideas may arise); in this it completely supersedes Cool2Root. Secondly, COOL_IO offers a bunch of simple command-line tools for data management, such as database/folderset creation/deletion, folderset listing, folder removal and channel listing. These applications work in COOL and in whatever else format is supported for data transfer.

This was the announcement mail for the first release, with some instructions to start playing with it.

Here is the presentation I gave to the ATLAS Online Database meeting on Aug, 1st 2005.

Aug, 15th 2005: please note that some minor details changed in the example; refer to the new automatic test.

Click here  to browse the code.

AFS installation and Setup

Aug, 4th 2005: COOL_IO-00-01-05 is out! This is the first version available under AFS.
No big changes, just some automatism to have it installed under /afs.

The repository for this and the future releases is: /afs/cern.ch/atlas/project/database/COOL_IO

COOL_IO-00-01-05 contains two directories with binary files: i686-slc3-gcc323-deb and  i686-slc3-gcc323-opt.
Choose whatever you prefer and source the file setup/COOL_IO.(c)sh; this will set the PATH so that COOL_IO
applications will be available in your shell. Btw, you don't need any other setup in order to reach the plugins: COOL_IO
applications know where they are stored!

Well, you still need some setup to USE the plugins, but, as I said during the
presentation, it's up to you!
You don't want me to control whatever you do with your account, do you? ;-)
I can help you, providing many files under setup/, but you have to choose the most suitable for you.


The test/ directory contains some quantum mixture of automatic tests and user examples.

rom COOL_IO-00-02-04 on, in order to run a test,  you don't need to source any setup file by yourself.
Copy the test/ directory to your private working, enter it and issue the following command:

COOL_IO_test.sh  <COOL_IO>  <test>  <COOL>  <ROOT>  <COOL_conn_string>

  1. COOL_IO: COOL_IO installation directory;
  2. test: subdirectory containing the test code you want to run;
  3. COOL: COOL version to use;
  4. ROOT: ROOT version to use;
  5. COOL_conn_string: COOL connection string; please use a temporary COOL database, as it will be deleted at startup.

cool2root+update: a complete example on how you can create a COOL database copying data from a text file, select some data from a COOL database, store them into a ROOT file for quick analysis, add some data via ROOT and then update the original COOL database. This example uses ROOT trees, but it is completely general and you may obtain the same result with a COOL_IO Text File or via any other plugin that will be eventually added. This test unit shows some usage of other COOL_IO applications, too.

text: this is more devoted to the text and log plugins, showing all the possible IoV formats and options;  moreover, it shows how you can
dump a COOL database on a text formatted file, or easily create a new COOL database starting from an ASCII file. The same example is repeated with a ROOT tree instead of a COOL database, just to show how plugins are interchangeable in COOL_IO.

If you want to try the commands by yourself, setup your environment and then copy the commands from the run_test.sh script that is available under each test directory
, without the echo_cmd keyword, and specifying the correct version for COOL and ROOT plugins. For example, you may choose to use the default versions:
  1. source /afs/.../COOL_IO-00-02-05/i686-slc3-gcc323-opt/setup/COOL_IO.sh
  2. source /afs/.../COOL_IO-00-02-05/i686-slc3-gcc323-opt/setup/cool/s2u_setup-COOL.sh
  3. source /afs/.../COOL_IO/COOL_IO-00-02-05/i686-slc3-gcc323-opt/setup/root/root.sh
  4. COOL_IO_cp cool@"$MYORADB"@/my/folder root@test.root@/my/tree
or specify a particular version for each plugin:
  1. source /afs/.../COOL_IO-00-02-05/i686-slc3-gcc323-opt/setup/COOL_IO.sh
  2. source /afs/.../COOL_IO-00-02-05/i686-slc3-gcc323-opt/setup/cool/s2u_setup-COOL_1_3_1-slc3_ia32_gcc323.sh
  3. source /afs/.../COOL_IO/COOL_IO-00-02-05/i686-slc3-gcc323-opt/setup/root/root_v4.04.02f.sh
  4. COOL_IO_cp cool_1_3_1@"$MYORADB"@/my/folder root_v4.04.02f@test.root@/my/tree

What to do in case of problems

Whatever problem you may encounter with COOL_IO, please let me know!

If an application crashes, or behaves in what you believe is a strange way, please do the following:

1) use the
i686-slc3-gcc323-deb installation;
2) set the MESS_REP_LVL  environmental variable to DEBUG;
3) re-run the same application as before;
4) send me *all* the output.

Release notes

August, 31st 2006: COOL_IO-00-02-10 is out!
  • COOL: added support for COOL_1_3_3
  • ROOT: added more releases

July, 12th 2006: COOL_IO-00-02-09 is out!
  • COOL: added support for COOL_1_3_2c
  • ROOT: added support for v5.12.00

June, 29th 2006: COOL_IO-00-02-08 is out!
  • Test for recursive removal of foldersets removal in order to use COOL_IO_rmfolderset
  • Bug found and fixed in the text plugin, about nested directories

June, 28th 2006: COOL_IO-00-02-07 is out!
  • Recursive removal of foldersets (option "-r" for COOL_IO_rmfolderset)
    • ROOT versions older then 5.08.00 do not seem to work well with nested TDirectory-es
  • COOL: added support for COOL_1_3_2b
  • ROOT: added support for versions up to v5.11.06a

May, 28th 2006: COOL_IO-00-02-06 is out!
  • COOL: added support for COOL_1_3_2a

May, 14th 2006: COOL_IO-00-02-05
is out!
  • COOL: all versions COOL_1_2_X and COOL_1_3_X presently available are supported; default version is 1_3_2
  • COOL: option to create a multi version folder (default is still single version)
  • ROOT: all the versions presently listed under /afs/cern.ch/sw/lcg/external/root/, and older than v4.03.02, are supported. Default version is v5.10.00c
  • ROOT: no more repeated objects in COOL_IO_lsfolderset
  • ROOT: no more misleading errors from TDirectory::Cd
  • Human readable formats for IoV introduced for COOL_IO_cp options and for text and log plugins. IoV can be expressed as
    • number of nanoseconds from 01-01-1970 UTC/GMT
    • "yyyy-mm-dd hh:mm:ss" (date and time, one second precision)
    • "yyyy-mm-dd hh:mm:ss nanoseconds" (date and time, one nanosecond precision)
    • run/event
  • added support for bool and unsigned char types
  • tests enhanced

Oct, 27th 2005: COOL_IO-00-02-04 is out!
  • Added support for COOL_1_2_5 (default version is still COOL_1_2_4).
  • Enhanced testing procedure: all the combinations of COOL/ROOT supported versions are tested.
  • ROOT makefiles, provided under setup/, are now COOL_IO independent.

Oct, 24th 2005: COOL_IO-00-02-03 is out!
  • Added support for until="inf" in COOL_IO Text Files.

Oct, 13th 2005: COOL_IO-00-02-02 is out!
  • Added support for COOL_1_2_4 (using last StandaloneCool release).
  • Default version of COOL changed to COOL_1_2_4.

Sep, 21st 2005: COOL_IO-00-02-01 is out!
  • Added complete support for formatted text files.
  • Default version of COOL changed to COOL_1_2_3.

Aug, 15th 2005: COOL_IO-00-02-00 is out!
  • Uniformed format for ROOT version in file names (-> increase the minor number).
  • Defined default version for COOL (COOL_1_2_2) and ROOT (root_v04.03.04).
  • current link defined under /afs.
  • Example turned into first automatic test.
  • Examples of SEAL configurations files provided.
  • do_it_all.mk moved back to StandaloneCool.
  • COOL setup files removed from repository; created on the fly by StandaloneCool.

Aug, 4th 2005: COOL_IO-00-01-05 is out!
  • AFS installation.

Aug, 3rd 2005: COOL_IO-00-01-04 is out!
  • COOL setup files: upgraded to StandaloneCool-01-00-23; added s2u_makefile* for users' comfort.

Aug, 1st 2005: COOL_IO-00-01-03 is out!
  • See already mentioned presentation.


COOL_IO uses scram2unix/StandaloneCool to find out the correct setup needed to compile and run COOL applications; furthermore, nearly all af its Makefiles are based on do_it_all.mk, provided by scram2unix/StandaloneCool.

Feedback, please!

Hoping that you find it useful, I invite you to send me any comment/question/idea/criticism you may get while using this software!

 Federico Zema

 mail: Federico.Zema@cern.ch