Specifying ROOT compression for data products¶
It is possible to specify whether and how ROOT should compress data products. This is done in the
classes_def.xml file, specifically the line identifying the wrapped data product (
art::Wrapper<...>). For instance, to deactivate compression for the data product
ds50::CompressedV172X, you would need a line:
<class name="art::Wrapper<ds50::CompressedV172x>" compression="0"/>Notes:
- Specifying the compression level attribute on an item that is not
art::Wrapper<...>will have no effect.
- If the compression level is not specified, it defaults to the level specified for the file as a whole. This may be specified using the parameter
ROOTOutputmodule, and currently this defaults to 7, slightly higher than the compression level one would get invoking
zipfrom the command line.
Specifying the compression level.¶
The compression attribute is a combined numeric value:
(<root compression algorithm> * 100) + <root compression level>
The currently supported compression levels range from 0 to 9. A level of 0 means no compression, and a level of 9 means maximum compression.
The currently supported (ROOT 5.34) compression algorithms are:
- 0: use the root global compression setting from
R__ZipMode, which defaults to zlib, and is set with
- 1: zlib,
- 2: lzma (from package xz),
- 3: old method, Chernyaev-Smirnov variant of zlib.
- Specify the default algorithm at level 9:
<class name="art::Wrapper<art::MyProd>" compression="9"/>
- lzma compression at level 6:
<class name="art::Wrapper<art::MyProd>" compression="206"/>
- Disable compression:
<class name="art::Wrapper<art::MyProd>" compression="0"/>