ROOT Version 6.14 Release Notes

2018-07-27

Introduction

ROOT version 6.14/00 has been released on June 13, 2018.

For more information, see:

http://root.cern

The following people have contributed to this new version:

Kim Albertsson, CERN/EP-ADP-OS,
Guilherme Amadio, CERN/SFT,
Bertrand Bellenot, CERN/SFT,
Brian Bockelman, UNL,
Rene Brun, CERN/SFT,
Philippe Canal, FNAL,
Olivier Couet, CERN/SFT,
Gerri Ganis, CERN/SFT,
Andrei Gheata, CERN/SFT,
Enrico Guiraud, CERN/SFT,
Raphael Isemann, Chalmers Univ. of Tech.,
Vladimir Ilievski, GSOC 2017,
Sergey Linev, GSI,
Pere Mato, CERN/SFT,
Lorenzo Moneta, CERN/SFT,
Axel Naumann, CERN/SFT,
Danilo Piparo, CERN/SFT,
Fons Rademakers, CERN/SFT,
Enric Tejedor Saavedra, CERN/SFT,
Oksana Shadura, UNL,
Saurav Shekhar, GSOC 2017,
Xavier Valls Pla, UJI, CERN/SFT,
Vassil Vassilev, Princeton/CMS,
Wouter Verkerke, NIKHEF/Atlas, RooFit,
Stefan Wunsch, CERN/SFT,
Zhe Zhang, UNL

Important Notice

The default compression algorithm was LZ4 for v6.14/00 and v6.14/02, and reverted to zlib for v6.14/06 due to a lack of compression efficiency for certain kinds of data. LZ4 will likely become the default again once this behavior is repaired.

The default compression algorithm used when writing ROOT files has been updated to use LZ4 in particular to improve read (decompression) performance. You can change this default for each file through (for example) the TFile constructor or TFile::SetCompressionAlgorithm.

It should be noted that ROOT files written with LZ4 compression can not be read with older release of ROOT. Support for LZ4 was however back-ported to the patch branches of previous releases and the following tags (and later release in the same patch series) can read ROOT files written with LZ4 compression:

Removed interfaces

Core Libraries

Thread safety

Interpreter

I/O Libraries

TTree Libraries

  for(auto e = 0; e < tree->GetEntries(); ++e) { // loop over entries.
    for(auto branch : branchCollection) {
      ... Make change to the data associated with the branch ...
      branch->BackFill();
    }
  }

Since we loop over all the branches for each new entry all the baskets for a cluster are consecutive in the file.

RDataFrame (formerly TDataFrame)

Behaviour, interface and naming changes

New features

  // mu_pts_tvec and mu_etas_tvec are two equally sized RVecs holding kinematic properties of muons
  // a filter on muons pseudorapidities is applied considering a range in pseudo rapidity.
  filtered_mu_pts_tvec = mu_pts_tvec[abs(mu_etas_tvec) < 2)];

Fixes

Other changes

Histogram Libraries

Math Libraries

RooFit Libraries

TMVA Library

New Deep Learning Module

Other New TMVA Features

2D Graphics Libraries

3D Graphics Libraries

Geometry Libraries

Database Libraries

Networking Libraries

GUI Libraries

Montecarlo Libraries

Parallelism

Language Bindings

PyROOT

Notebook integration

JavaScript ROOT

Upgrade JSROOT to v5.4.1. Following new features implemented:

Code Examples

Class Reference Guide

Build System and Configuration

Note: The use of PYTHON_EXECUTABLE requires the full path to the interpreter.

Infrastructure and Testing

Bugs and Issues fixed in this release

Release 6.14/02

Released on July 27, 2018

TTree Libraries

Bugs and Issues fixed in this release

Release 6.14/04

Released on August 23, 2018

I/O

Core

RDataFrame

TGeo

Build system

Bugs and Issues fixed in this release

Release 6.14/06

Released on November 5, 2018

Platforms

MacOS 10.14 / Xcode 10 is supported.

I/O

include/TSQLFile.h:225:19: error: declaration of 'GetStreamerInfoList' overrides a 'final' function
virtual TList *GetStreamerInfoList();
^
include/TFile.h:231:24: note: overridden virtual function is here
virtual TList      *GetStreamerInfoList() final; // Note: to override behavior, please override GetStreamerInfoListImpl
^

Instead you need to override the protected method:

InfoListRet GetStreamerInfoListImpl(bool lookupSICache);

which can be implemented as

InfoListRet DerivedClass::GetStreamerInfoListImpl(bool /*lookupSICache*/) {
ROOT::Internal::RConcurrentHashColl::HashValue hash;
TList *infolist = nullptr;
//
// Body of the former Derived::GetStreamerInfoList with the
// return statement replaced with something like:

// The second element indicates success or failure of the load.
// (i.e. {nullptr, 0, hash} indicates the list has already been processed
//  {nullptr, 1, hash} indicates the list failed to be loaded
return {infolist, 0, hash};
}

See TFile::GetStreamerInfoListImpl implementation for an example on how to implement the caching.

RDataFrame

Bugs and Issues fixed in this release

HEAD of the v6-14-00-patches branch

These changes will be part of the future 6.14/08

Core Libraries