ROOT Version 6.10 Release Notes

2017-06-13

Introduction

ROOT version 6.10/00 has been released on 13 June 2017

For more information, see http://root.cern.ch

The following people have contributed to this new version:

David Abdurachmanov, Kim Albertsson, Guilherme Amadio, Whitney Armstrong, Attila Bagoly, Benjamin Bannier, Wolf Behrenhoff, Bertrand Bellenot, Georgios Bitzes, Brian Bockelman, Will Breaden, Philippe Canal, Santiago Castro, Sylvain Corlay, Olivier Couet, Sergey Divakov, Mattias Ellert, Giulio Eulisse, Gerardo Ganis, Andrei Gheata, Luca Giommi, Konstantin Gizdov, Enrico Guiraud, John Harvey, Ivana Hrivnacova, Filip Ilic, Raphael Isemann, Thomas James, Chris Jones, David Lange, Wim Lavrijsen, Lawrence Lee J, Sergey Linev, Olli Lupton, Spencer Lyon, Shahzad Malik, Maurizio Martinelli, Pere Mato, Lorenzo Moneta, Abhinav Moudgil, Frederich Munch, Jan Musinsky, Axel Naumann, Ajith Pandel, Simon Pfreundschuh, Danilo Piparo, Timur Pocheptsov, Dmitry Polukhin, Fons Rademakers, Martin Ritter, Heshy Roskes, Maarten Scholl, Paul Seyfert, Karl Smith, Martin Storø Nyflott, Matevz Tadel, Enric Tejedor, Diego Torres, Sebastian Uhl, Xavier Valls, Peter Van Gemeren, Vassil Vassilev, Andreas Weiden, Sandro Wenzel, Stefan Wunsch, Omar Zapata, Zhe Zhang, Roman Zulak

Removed interfaces

The following interfaces have been removed, after deprecation in v6.08.

CINT remnants, dysfunctional for ROOT 6

Interpreter

Core Libraries

  TList formulas;
  // Add several TTreeFormula to the list;
  chain.SetNotify(&formulas);

TObjString to TString

TObjString::GetString() now returns a const TString& to the TString inside the TObjString, instead of copying it. This is to prevent very common misunderstanding of the interface.

In several cases, the misunderstanding of the interface caused invalid memory accesses to the already destructed temporary TString returned by GetString(), e.g. objStr->GetString().Data(). This will be fixed automatically by the new return type.

In rare cases, the caller expected GetString() to return a (non-const) reference to the embedded TString, e.g. objString->GetString().ReplaceAll("a", "b"); // WRONG! This will now fail to compile, instead of not doing what the author of the code expected. Please fix that code by using the TObjString::String() interface, which returns a non-const TString&: objString->String().ReplaceAll("a", "b");.

In extremely rare cases, this change breaks a valid use where the temporary TString was modified and then captured in a new TString object before the destruction of the temporary: TString str = objStr->GetString().ReplaceAll("a", "b");. In these rare cases, please use the new function CopyString() which clearly indicates that it involves a temporary.

Histogram Libraries

TProfile2Poly

Addition of TProfile2Poly class. It is analogous to TH2D/TProfile2D except it allows the creation of profiles of histograms that have polygonal bins. Just for a quick recap some of the functionality includes:

Two tutorials outlining the use of the added class can be found at: * root/tutorials/hist/tprofile2polyRealistic.C * root/tutorials/hist/tprofile2polyRealisticModuleError.C

Other features added in the Hist Library

Math Libraries

MathCore

GenVector

TMatrix

TMVA

RooStats

TTree Libraries

TDataFrame

2D Graphics Libraries

{
   TCanvas c1("c1");
   TFile f("hsimple.root");
   hpx->Draw();        gPad->WaitPrimitive();
   hpxpy->Draw();      gPad->WaitPrimitive();
   hprof->Draw();

this was reported here. - New flag Cocoa.EnableFillAreaAntiAliasing in system.rootrc to enable the anti-aliasing for filled area for the Cocoa backend. Default is no. - The “BOX” option, to draw 3D histograms, has been reimplemented by Evgueni Tcherniaev The following picture show the old and new version

New box option for 3D histograms
  h->GetYaxis()->SetTitleOffset(0.);

the axis title is automatically placed to avoid overlaps with the axis labels. - Implement the automatic placement of the TLegend. A new constructor not specifying the legend position is available. Only width and height are defined. - ChangeLabel is now available for log axis as well as requested here. - The TGraph copy constructor also copy the underlying TH1F if it exists (it holds the axis titles). - TGraph axis range was computed differently depending on the order of SetLog[x|y]” This issue was reported here - Add the new markers suggested here. Improve the marker style for the OpenGl backend (some where wrong or missing).

New markers
   g->Draw("APL");
   g->Draw("A RX RY PL");
New box option for 3D histograms

3D Graphics Libraries

Geometry

Dictionaries

I/O Libraries

Parallelism

PyROOT

JavaScript ROOT

JSROOT upgraded from 4.6.0 to 5.1.2. The major changes:

Tutorials

New tutorials have been added: - TDataFrame tutorials to exercise the different use cases - Annotation on a 3D plot using 3D plylines - Palette coloring for graphs - CandlePlot tutorials to exercise different options - Multicore tutorials for multi-threaded and multi-process

Build, Configuration and Testing Infrastructure

Bugs fixed in this release

Release 6.10/02

ROOT version 6.10/02 has been released on 6 July 2017

TTree Libraries

TDataFrame

Build system

Graphics

Bugs and Issues fixed in this release

Release 6.10/04

Released on July 28, 2017

Bugs and Issues fixed in this release

Release 6.10/06

Released on September 19, 2017

Bugs and Issues fixed in this release

Release 6.10/08

Core Libraries

I/O Libraries

Bugs and Issues fixed in this release

HEAD of the v6-10-00-patches branch

These changes will be part of the future 6.10/10

I/O Libraries

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

Miscellanea