ROOT logo
ROOT » Download » Release Notes

ROOT Version 5.34/08 Release Notes

ROOT version 5.32/00 has been released on November 29, 2011. In case you are upgrading from an old version, please read the releases notes of version 5.26, 5,28 and version 5.30 in addition to these notes.

The release of version 5.34 is scheduled for May 30, 2012.

For more information, see:

      http://root.cern.ch

The following people have contributed to this new version:

Bertrand Bellenot, CERN/SFT,
Rene Brun, CERN/SFT,
Philippe Canal, FNAL,
Olivier Couet, CERN/SFT,
Kyle Cranmer, NYU, RooStats,
Gerri Ganis, CERN/SFT,
Andrei Gheata, CERN/Alice,
Wim Lavrijsen, LBNL, PyRoot,
Lorenzo Moneta, CERN/SFT,
Axel Naumann, CERN/SFT,
Fons Rademakers, CERN/SFT,
Paul Russo, FNAL,
Joerg Stelzer, DESY/Atlas, TMVA,
Alja Tadel, UCSD/CMS, Eve,
Matevz Tadel, UCSD/CMS, Eve,
Eckhard von Toerne, University Bonn, ATLAS, TMVA,
Wouter Verkerke, NIKHEF/Atlas, RooFit,


Core Libraries

ROOT Error Handlers

There is a new rootrc variable which allows to control the installation of the ROOT error handlers. By default the handlers are activated:

 
   Root.ErrorHandlers:      1

but setting the value to 0 result in no error handlers being installed and the originals remaining in place. This can be useful if ROOT is used in conjunction with other frameworks that already installed their own handlers.

TString

TString::Hash() and thus also TMath::Hash() now use MurmurHash3_x64_128 from http://code.google.com/p/smhasher/ which is public domain. To accelerate the hash in the case of pointers even further, pointers (and same-sized texts) are hashed using a simple bitwise xor. This dramatically increases the hash performance for long texts, and still by a factor 5 for pointers. The pointer case is most visible for certain I/O operations (TExMap).

TColor

Add the method SetAlpha() to set the alpha value (transparency level) for an existing color.

TStyle

The default font set by gStyle->SetLegendFont() was ignored.

TUnixSystem

TROOT

Implemented new gROOT->GetTutorialsDir() static method to return the actual location of the tutorials directory. This is $ROOTSYS/tutorials when not configuring with --prefix or -Dgnuinstall for CMake.


I/O Libraries

TFileCacheRead

TFileMerger



Networking Libraries

A new class TS3WebFile has been introduced. The new class TS3WebFile is an extension of TWebFile and belongs to the net module. The name TS3WebFile reflects better the fact that this solution is intended to be generic to several S3 servers and not limited to Amazon's, in addition to the fact that it actually extends the capabilities of TWebFile.

Compared to the current support of S3 in ROOT (basically the class TAS3File), the modifications include the improvements below:

Here are some examples of usages from the end user perspective:

   TFile* f = TFile::Open("s3://s3.amazonaws.com/mybucket/path/to/my/file", "AUTH=<accessKey>:<secretKey> NOPROXY")
   TFile* f = TFile::Open("s3://s3.amazonaws.com/mybucket/path/to/my/file")   // Uses environmental variables for retrieving credentials

Limitations:

The TAS3File class will be removed and should not have been used directly by users anyway as it was only accessed via the plugin manager in TFile::Open().

New HTTP Server package

A new HTTP Server package has been introduced. The idea behind such server is to provide direct access to the data from a running ROOT application. Any object can be streamed when requested and delivered to the browser.

Starting the HTTP server

To start the http server, at any time create instance of the THttpServer class like:

serv = new THttpServer("http:8080");

This will start civetweb-based http server on port 8080. Then, one should be able to open address "http://localhost:8080" in any modern browser and browse objects created in application. By default, the server can access files, canvases and histograms via gROOT. All such objects can be displayed with JSRootIO graphics.

At any time one could register other objects with the command:

TGraph* gr = new TGraph(10);
gr->SetName("gr1");
serv->Register("graphs/subfolder", gr);

If the object content is changing in the application, like for example histograms being continuously filled, one could enable the monitoring flag in the browser, then the object view will be regularly updated.



SQL Libraries



Tree Libraries

Performance

Reading form text file

Reworked TTree::ReadStream and TTree::ReadFile mainly to fix delimited reading of string columns:

TEntryList

Miscellaneous


PROOF System



Histogram Libraries

THn, THnBase, THNSparse

THistPainter

TGraphPainter

TPaletteAxis

TAxis

TGraph2DPainter

TMultiGraph

TH1



CINT



Python/Ruby Bindings



Math Libraries



RooFit Package



TMVA Package

Factory

Boosted Decision Trees

some changes to the training options:
nEventsMin (deprecated) please replace by --> MinNodeSize
The option nEventsMin which specified the minimum number of training event in a leaf node as an absolute number has been replaced by "MinNodeSize" which is given in "percentage of the trainin sample". Like this the training options become less dependent on the actual number of training sample size
NNodesMax (deprecated) please replace by --> MaxDepth
GradBaggingFraction and UseNTrainEvents replaced by BaggedSampleFraction
- they both meant the same thing and are now deprecated --> use BaggedSampleFraction instead
UsedBaggedGrad replaced by UseBaggedBoost
- like this, the use of a bagged sample in Grad-Boost or AdaBoost has the same option name
UseWeightedTrees --> removed
- it was default anyway and the only reasonable choice there is
PruneBeforeBoost --> removed
- it has been mostly a debug/trial option
NegWeightTreatment=IgnoreNegWeights --> replaced by NegWeightTreatment=IgnoreNegWeightsInTraining
- Unfortunatly the default "IgnoreNegWeights" to the BDT option "NegWeightTreatment" collided with the a global option and had to be replaced.

MethodBoost

  • some cleanup (removed strange experimental boosting option HighEdgeGaus, HighEdgeCoPara ..... )
  • remove options MethodWeightType... have it defined by the Boost Method (these have been trial options.. but for clarity it is much better to stick to the "standard" ones (i.e log(alpha) for AdaBoost etc)
  • up to now, the first classifier was trained with the full sample, I think however, it should also be a bagged sample (i.e. particularily if smaller sample sizes for the bagged samples were demanded) .. it's changed now, accordingly


  • Geometry Libraries



    MonteCarlo Libraries

    VMC

    • Update of the VMC interfaces for multi-threading: TVirtualMC and TVirtualMCApplication instances are now declared thread local. Added new functions in TVirtualMC and TVirtualMCApplication for multi-threading applications with default implementation.
      In TVirtualMC:
       virtual Bool_t IsMT() const { return kFALSE; }
      
      In TVirtualMCApplication:
        virtual TVirtualMCApplication* CloneForWorker() const { return 0;}
        virtual void InitForWorker() const {}
        virtual void BeginWorkerRun() const {}
        virtual void FinishWorkerRun() const {}
        virtual void Merge(TVirtualMCApplication* /*localMCApplication*/) {}
      
    • Removed default implementation of newly added functions in TVirtualMC:
        virtual Bool_t IsRootGeometrySupported() const = 0;
        virtual Bool_t GetMaterial(Int_t imat, TString& name,...) = 0;
        virtual Bool_t CurrentBoundaryNormal(..) = 0;
      
    • Removed deprecated functions from TVirtualMC:
        // Return parameters for material specified by material number imat
        // Deprecated - replaced with GetMaterial()
        virtual void  Gfmate(Int_t imat, char *name, Float_t &a, Float_t &z,
                             Float_t &dens, Float_t &radl, Float_t &absl,
                             Float_t *ubuf, Int_t &nbuf) = 0;
      
        //  Return parameters for material specified by material number imat
        // (in double precision)
        // Deprecated - replaced with GetMaterial()
        virtual void  Gfmate(Int_t imat, char *name, Double_t &a, Double_t &z,
                             Double_t &dens, Double_t &radl, Double_t &absl,
                             Double_t *ubuf, Int_t &nbuf) = 0;
      
        // Check the parameters of a tracking medium
        // Deprecated
        virtual void  Gckmat(Int_t imed, char *name) = 0;
      


    GUI Libraries

    TGTextButton

    • Fix a problem with new style when using SetBackgroundPixmap() with flat buttons. To be able to set (and keep) a pixmap as background, one should set the kOwnBackground flag. E.g.:
         fButton->SetBackgroundPixmap(img->GetPixmap());
         fButton->ChangeOptions(fButton->GetOptions() | kOwnBackground);
         fButton->SetStyle("modern");
      

    TRootBrowser

    • Use the ProcessedConfigure signal to be notified when an embedded frame change its layout, to properly call Layout() on its parent frame, to automatically display the change (for example, showing the EventStatusBar of a TCanvas embedded in a TBrowser was only appearing after manually resizing the window)

    TGFileBrowser

    TGFSComboBox

    • Fix a problem when the current directory is similar to $ROOTSYS, for example with $ROOTSYS being /home/user/root and $PWD being /home/user/rootdev, only "dev" was displayed, stripping off $ROOTSYS
    • Properly handle backslashes as directory separators on Windows

    TGFileDialog

    • Change the file name only if the selected entry is not a directory (as reported on the forum)

    TGMsgBox

    • Implemented "Enter" and "Escape" key handling in TGMsgBox (used as Ok and Cancel buttons, if they are there)

    TGTextEntry

    • Several issues with text selection and combination of cursor position and text alignment in text entries have been solved

    TRootCanvas

    • A check has been added for the case where the canvas is embedded (e.g. in the browser), then the layout of the main frame has to be re-applied when showing/hiding the editor
    • Stay in the current (working) directory when using "File -> Save as..." from a canvas or from a text editor (as the file dialog changes the current directory)

    TFitParametersDialog

    • Implemented keyboard navigation (tab and shift+tab) between the different number entry fields of the dialog

    TFitEditor

    • Layout improvements and removed useless text in message box

    TTreeViewer

    • Fixed a problem with array names (e.g. fVertex[]) as reported on the forum)

    TGWin32

    • Fixed several resource leaks (including GDI & USER objects)

    Attributes editors

    • The transparency sliders change the transparency only for the currently edited object.

    Object editing on canvas

    • The "move opaque" way to edit object on canvas, has been extended to all kind of objects.
    • When in move opaque mode, a canvas can show guide lines to place object relatively to each other. A new resource in etc/system.rootrc allows to turn the feature on or off: Canvas.ShowGuideLines.
    • For a fine adjustment at the pixel level, the arrow keys can be used to move object on pad.
    • The zoom on axis and on 2D histogram has be improved. A shaded area is shown instead on simple lines. Also it is possible to zoom a 2D histogram with a shaded rectangle.

    Saving Files

    • When saving files from a canvas, the default file type is now .pdf instead of .ps, since pdf is probably becoming more popular than ps.
    • In the "File Save Dialog", there is now a default file name and its extension (if a specific one is selected), and the name is highlighted, so when the user types something, only the file name is changed.
    • The default file type can be changed with a new Canvas.SaveAsDefaultType option in etc/system.rootrc (default being pdf).

    ROOT browser and pad editor

    • The Pad Editor is now embedded in the left tab of the browser instead of inside the canvas itself, so the layout of the canvas remains untouched when opening the editor.


    2D Graphics Libraries

    TASImage

    • In some cases dashed lines with a line width greater than "1" were not drawn.
    • The TLatex symbol #tilde, was misplaced.
    • In TASImage::DrawtText, TTF::SetTextSize was called with a rounded value (to pixel). This cause some misplacements of character in TLatex formulae.

    TPDF and TPostScript

    • The table of content entries were not correct if there was and extra option before "Title:".
    • After a title was once set, this title will be used for all following additions to the PDF file, instead of "Page ###".
    • Better sizes matching with the screen output for markers 6 and 7 (dots).
    • Implement the transparency in PDF files. To make a graphics object transparent it is enough to set its color to a transparent one. The color transparency is defined via its alpha component. The alpha value varies from 0. to 1. 0. makes an object fully transparent, and 1. makes it fully opaque. To set the alpha value of an existing color it is enough to do:
               TColor *col26 = gROOT->GetColor(26);
               col26->SetAlpha(0.01);
            
      A new color can be created transparent the following way:
               Int_t ci = 1756;
               TColor *color = new TColor(ci, 0.1, 0.2, 0.3, 0.5); // alpha = 0.5
            
      An example of tranparency usage with parallel coordinates can be found in $ROOTSYS/tutorials/tree/parallelcoordtrans.C
    • Parenthesis can be used in PDF and PS file names.
    • In PDF files, italic greek characters were not correct for non null text angle.

    TSVG

    • Implement the transparency in SVG files (cf TPDF).
    • Some markers did not show in Google-Chrome.

    TImageDump

    • Fix a TBox clipping issue.

    TMathText

    • TMathText's purpose is to write mathematical equations, exactly as TeX would do it. The syntax is the same as the TeX's one. Author: Yue Shi Lai (MIT))
      Example:
        {
        {
           TMathText l;
           l.SetTextAlign(23);
           l.SetTextSize(0.06);
           l.DrawMathText(0.50, 1.000, "\\prod_{j\\ge0} \\left(\\sum_{k\\ge0} a_{jk}z^k\\right) = \\sum_{n\\ge0} z^n \\left(\\sum_{k_0,k_1,\\ldots\\ge0\\atop k_0+k_1+\\cdots=n} a_{0k_0}a_{1k_1} \\cdots \\right)");
           l.DrawMathText(0.50, 0.800, "W_{\\delta_1\\rho_1\\sigma_2}^{3\\beta} = U_{\\delta_1\\rho_1\\sigma_2}^{3\\beta} + {1\\over 8\\pi^2} \\int_{\\alpha_1}^{\\alpha_2} d\\alpha_2^\\prime \\left[ {U_{\\delta_1\\rho_1}^{2\\beta} - \\alpha_2^\\prime U_{\\rho_1\\sigma_2}^{1\\beta} \\over U_{\\rho_1\\sigma_2}^{0\\beta}} \\right]");
           l.DrawMathText(0.50, 0.600, "d\\Gamma = {1\\over 2m_A} \\left( \\prod_f {d^3p_f\\over (2\\pi)^3} {1\\over 2E_f} \\right) \\left| \\mathscr{M} \\left(m_A - \\left\\{p_f\\right\\} \\right) \\right|^2 (2\\pi)^4 \\delta^{(4)} \\left(p_A - \\sum p_f \\right)");
           l.DrawMathText(0.50, 0.425, "4\\mathrm{Re}\\left\\{{2\\over 1-\\Delta\\alpha} \\chi(s) \\left[ \\^{g}_\\nu^e \\^{g}_\\nu^f (1 + \\cos^2\\theta) + \\^{g}_a^e \\^{g}_a^f \\cos\\theta \\right] \\right\\}");
           l.DrawMathText(0.50, 0.330, "p(n) = {1\\over\\pi\\sqrt{2}} \\sum_{k = 1}^\\infty \\sqrt{k} A_k(n) {d\\over dn} {\\sinh \\left\\{ {\\pi\\over k} \\sqrt{2\\over 3} \\sqrt{n - {1\\over 24}} \\right\\} \\over \\sqrt{n - {1\\over 24}}}");
           l.DrawMathText(0.13, 0.150, "{(\\ell+1)C_{\\ell}^{TE} \\over 2\\pi}");
           l.DrawMathText(0.27, 0.110, "\\mathbb{N} \\subset \\mathbb{R}");
           l.DrawMathText(0.63, 0.100, "\\hbox{RHIC スピン物理 Нью-Йорк}");
        }
    
    TMathText example

    TMathText example

    • Implement \\frac using \\over.
    • Treat \\mbox as \\hbox to improve the compatibility with TTexDump.

    TLegend

    • The option E, to draw the error bar on a legend entry, does not need anymore the option L to be active. It is now possible to draw the error bar only using the option E alone. The combination of the options E and L still works as before.
    • The text attributes were not properly initialized by the default constructor.
    • The line attribute of objects in the legend were not taken into account with the option "e".
    • In case of automatic computation of the legend items' size, the text size was wrong if the font precision was set to 3.
    • Improve the spacing between lines. Due to the way the vertical text centring is done (bounding based) the spacing between lines may appeared irregular in some cases.
    • The error bar in the legend (option "E") didn't have the line attributes when drawn alone (without option "L").

    TPie

    • New drawing option "SC" to draw the labels with the slices' colors.

    TLine

    • Add SetNDC.

    TPave

    • Implement SetX1() etc ... for TPave and inherited classes to make sure the NDC coordinates are also defined.

    TLatex

    • The class TMathText is a TeX math formulae interpreter. It uses plain TeX syntax and uses "\" as control instead of "#". If a piece of text containing "\" is given to TLatex then TMathText is automatically invoked. Therefore, as histograms' titles, axis titles, labels etc ... are drawn using TLatex, the TMathText syntax can be used for them also.
    • Fix a very old bug (in TTF.cxx since the beginning). With the following code the spaces between "text" and #lambda were ignored.
           TLatex t; t.DrawLatex( 0.1,0.1,"text   #Lambda" )
    
    • Implement #backslash.
    • Implement DrawLatexNDC.
    • Implement #minus and #plus typographically better than the standard "-" and "+".
    • Make sure all greek and math symbols are printed correctly by TTexDump.
    • Implement dummy operators #mbox and #hbox to improve the compatibility between TLatex, TMathText and TTexDump.
    • Some operators like #minus, #plus, #mp, #hbar etc ... ignored the color defined by the operator #color.
    • With the Cocoa backend on Mac the text string were a bit too large compared to the TTF rendering.

    TCanvas and TPad

    • New method DivideSquare a canvas in to n sub-pads. The number of sub-pads along the X and Y axis are computed according to the square root of n. Example:
            void divsquare(int w, int h, int n) 
            {
               TCanvas *c = new TCanvas ("c","c",0,0,w,h);
               c->DivideSquare(n);
               for (int i=1; i<=n; i++) {
                  c->cd(i);
                  gPad->DrawFrame(0,0,1,1);
               }
            }
         
    • TPad::Print always use TImageDump to print gif, png and jpeg files, in interactive and batch mode (previously it was used in the batch case only). This allows to generate output transparent colors in these formats even in interactive mode. The generation of gif, png and jpeg files from the graphics window in interactive mode is kept for OpenGL canvases.
    • Change the way the string input is done in the Pad toolbar for text and Pave Label. It doesn't use anymore the TGX11 function RequestString. Now the text appears directly as it will show and it is possible to enter several text string. The input is not block in the RequestString event loop.
    • The toolbar methods now work without XOR mode (useful for OpenGL()).

    TGaxis and TAxis

    • The time axis behavior should now be correct along time zone and summer saving time. A fix has been done with the of Philippe Gras (CEA Saclay. IRFU/SEDI) and Julian Sitarek (IFAE). Time axis transported from a time zone to an other in a ROOT file are correct too. A new example test have been introduced to test the time axis (timeonaxis3.C)
    • In some case the format use to build the axis labels was incorrect. (cf: Jira report ROOT-5635).
    • New static function to change the position of the "power of 10" near the axis. A static function is used instead of data members in TAxis in order to keep the TAxis class small. Adding two floating point numbers in that class (in fact in TAttAxis) would have a none negligible effect on the Root files' sizes as there is at least two axis per histogram and that there is often 1000th histograms in a single file. So we choose to follow the same mechanism as for the SetMaxDigits static method. The new function is: SetExponentOffset. Example:
      ...
         TGaxis::SetMaxDigits(2);
         TGaxis::SetExponentOffset(-0.01, 0.01, "y"); // X and Y offset for Y axis
         TGaxis::SetExponentOffset(-0.05, 0.01, "x"); // Y and Y offset for X axis
      ...
         hist->Draw();
      
    • TGaxis::SetMaxDigits() was not acitve on standalone TGaxis.

    New class TTeXDump: Graphics interface to TeX

    This class allow to generate PGF/TikZ vector graphics output which can be included in TeX and LaTeX documents.

    PGF is a TeX macro package for generating graphics. It is platform and format-independent and works together with the most important TeX backend drivers, including pdftex and dvips. It comes with a user-friedly syntax layer called TikZ.

    To generate a such file it is enough to do:

       gStyle->SetPaperSize(10.,10.);
       hpx->Draw();
       gPad->Print("hpx.tex");

    Then, the generated file (hpx.tex) can be included in a LaTeX document (simple.tex) in the following way:

    \documentclass{article}
    \usepackage{tikz}
    \usetikzlibrary{patterns}
    \title{A simple LaTeX example}
    \date{July 2013}
    \begin{document}
    \maketitle
    The following image as been generated using the TTeXDump class:
    \par
    \input{hpx.tex}
    \end{document}

    Note the two directive needed at the top of the LaTeX file:

    \usepackage{tikz}
    \usetikzlibrary{patterns}

    Then including the picture in the document is done with the \input directive.

    The command pdflatex simple.tex will generate the corresponding pdf file simple.pdf.

    X11 fonts

    • A coverity fix in Rotated.cxx had a side effect on rotated text drawn with X11 fonts.

    New graphical back-end for MacOSX

    TGCocoa/TGQuartz classes are the implementation of TVirtualX based on Cocoa and Quartz 2D. They let to use ROOT's GUI and graphics on MacOS X without installing X11.app and also give an access to Apple's native graphics and GUI frameworks. Window management, event loop, event dispatching, etc. are implemented on top of Cocoa. Graphics (GUI rendering and non-GUI) is done by Quartz 2D (Core Grapchis). An example of a TCanvas with a THStack object, transparency, anti-aliasing, gradient fill, shadows:

    Transparency and gradients
    ROOT must be configured with --enable-cocoa parameter to use Cocoa back-end instead of X11 version. Please note, this is still a work in progress.

    3D Graphics Libraries

    EVE

    • TEveRGBAPalette: Add support for displaying palette values in UI elements (GUI, overlay) as real values, mapped with a linear function. This is enabled by calling:
        TEveRGBAPalette::SetUIDoubleRep(Bool_t b, Double_t f=1, Double_t c=0);
      
      and the mapping between integer 'i' and real 'r' values is:
        r = f*i + c;
      
    • TEveRGBAPaletteOverlay New class - an overlay element showing TEveRGBAPalette legend in GL overlay. See tutorials/eve/overlay_palette.C.


    Html Generator



    Misc Packages



    Tutorials

    • The new tutorial timeonaxis3.C test the time axis.
    • New version of cernbluid.C allowing to turn off the printouts.


    ROOT page - Class index - Top of the page - Valid XHTML 1.0 Transitional