ROOT Version v5-34-00 Patch Release Notes

A new production version ROOT v5-34-18 has been released Mar 14, 2014.

The AFS version of v5-34-18 for many different platforms and compilers can be found at:

/afs/cern.ch/sw/lcg/app/releases/ROOT/5.34.18/

The complete source tree for all systems (54 MB) is available here:

   ftp://root.cern.ch/root/root_v5.34.18.source.tar.gz

Alternatively get the source from Git using:

   git clone http://root.cern.ch/git/root.git root-v5-34
   cd root-v5-34
   git checkout -b v5-34-18 v5-34-18

After obtaining the source read the file README/INSTALL (in short just do: cd root; ./configure; make).

To get the source of the head of the v5-34-00-patches branch do:

   git clone -b v5-34-00-patches http://root.cern.ch/git/root.git root-v5-34

Changes in head of v5-34-00-patches branch

  • Core
    • Fix compiler warning in TArray (ROOT-5864.).
    • Prevent out-of-bounds access in TClass::EscapeChars. (ROOT-6239.).
  • I/O
    • Fix memory leak in TKeyXML (ROOT-6139.).
    • Prevent random behavior in case of corrupted file (fNbytesFree)(ROOT-6240.).
    • Allow TBranch::DropBaskets to drop the write basket if it is empty.
    • Add support for multi-dimensional array in Cintex (when dictionary is generated via genreflex) (ROOT-6243.).
  • TTree
    • TTreePerfStats now calculated properly the unzipping time for its given TTree only.
    • Fix TTreeCache learning when used by TTree::Draw (problem with SetEntryRange) ; this solves ROOT-6103.
  • Proof
    • Disable by default memory checks during event loop as they can impact significantly performance with fast I/O devices (no impact for CPU intensive tasks). They can be enabled by setting the parameter PROOF_MemLogFreq or the env PROOF_MEMLOGFREQ to the checking period in terms of events.
    • Lite: reduce default number of old session logs kept in the sandbox to 1, to avoid filling up the sandbox.
    • Server side: add support unix secondary groups in group access control.
    • Fix memory leak in TProofDraw due to double histogram cloning. Affects repeated queries with large histograms.
  • RooFit
    • Fix the computation of fit parameter errors in weighted extended maximum likelihood fits
  • Vc
    • Upgrade to latest Vc version (0.7.3)
  • TMath
    • Add a new more accurate (although a factor of 2 slower) implementation of TMath::RMS. See ROOT-5545
  • Hist
    • Improve the merging of histogram with user defined binning (ROOT-5542)
    • Fix a bug when some of the merged histogram have zero entries (ROOT-5509)

Changes in version v5-34-18 (Mar 14, 2014)
Binary Incompatible

  • Build System
    • Fix build problem on OSX 10.9 with the new Xcode 5.1 and clang-503.0.38 (undefined symbol TStreamerInfo::WriteBufferAux<char**>()).
  • Graphics
    • Implement this option `pads`. This option is equivalent to the one in `THStack`. It allows to draw all the `TGraphs` in separated pads.
    • Introduce the flag `CanvasPreferGL` in `rootrc.in`. So OpenGL can be use by default. The default value for this flag is 0 (no OpenGL).
    • Fix size issues with the FTGL text.
    • Make `TMathText` work with FTGL
  • Hist
    • TH2Poly: implement a simple version of "Scale"
  • Core
    • TUrl: Fix bug inadvertently introduced in 5.34/15 preventing PROOF from working at all.
  • Proof
    • See Core (important)
    • Fixed bug ROOT-5337 preventing proper use of existing TH2, TH3 histograms with the draw functionatlty.
  • Math
    • Include in the distribution the Vc library from Matthias Kretz (see Vc Web Site
    • Include in the distribution also the vdt mathematical library from Danilo Piparo (see vdt Web

Changes in version v5-34-17 (Feb 24, 2014)
Binary Incompatible

  • I/O
    • Fix schema evolution for std::map when one of the type (key or value) is a class and changed ('was renamed'). This fixes ROOT-6064.
  • Graphics
    • The histogram drawing option "9" as been removed. It is not needed anymore since the line compression has been implemented in `TPadPainter`.

Changes in version v5-34-16

  • This version does not exist.

Changes in version v5-34-15 (Feb 11, 2014)
Binary Incompatible

  • Platform support
    • On OSX >= 10.8 use by default the Cocoa backend instead of X11. The Cocoa backend works much better on Retina displays. To build the X11 version configure with --disable-cocoa.
  • CINT / genreflex
    • Enable Intel compiler icpc in genreflex (ROOT-5848).
  • Core
    • Fixed the implementation of TClass::InheritsFrom(const char*) when the class does not have a dictionary.
  • I/O
    • Fix the reading of the case where the last branch/data member of a class in no longer in memory, and is the source of a rule, it was inadervently marked as not-to-be read (effectively preventing the execution of the rule). (ROOT-5831).
  • TTree
    • Prevent spurrious warning (TRefTable::Add: SetParent must be called before adding) when a TRef-ed object is stored in the TTree list of user info.
    • Extended TTreeIndex and TTreeFormula to support 64 integers.
  • Graphics
    • TPad::Print() really works on TCanvas only. A protection has been added in case it is called on a pure TPad.
    • Implement the Candle Plots (Box Plots) for 2D histograms.
  • Hist
    • Add an error message in TH1::GetBinWidth/GetBinLowEdge when called from a TH2/TH3 histograms. (ROOT-5049) 
  • Pythia6 and Pythia8
    • Fix in Pythia6 for longer than 8 char beam names, like: "gamma/mu+"
    • Fix in Pythia8 to allow initialisation for beams with different energies, and add some useful information printing methods.

Changes in version v5-34-14 (Dec 16, 2013)
Binary Incompatible

  • Net
    • Import of TDavixFile plugin for the DavIx HTTP/WEBDAV access library. The TDavixFile will replace TWebFile for HTTP file access as it supports all possible HTTP/WEBDAV features, including the writing of files. To compile this plugin use the $ROOTSYS/build/unix/installDavix.sh script to install libdavix. To turn this plugin on by default edit $ROOTSYS/etc/system.rootrc and set: Davix.UseOldClient: no.
    • Import of the TNetXNGFile plugin, which uses the Next Generation (NG) xrootd client code. To compile this plugin use the $ROOTSYS/build/unix/installXrootd.sh script to install xrootd >= 3.3.5, needed by the NG plugin.
  • MathCore
    • Add a protection to create the Minimizer classes in multiple threads (Fix 5335)
  • Graphics
    • New option "noclear"in THStack::Draw() (Fix 5241).
    • SVG output: some markers did not show in Google-Chrome.
  • Hist
    • Add a new function TH1::Chisquare (see 4722). Add in TGraph::Chisquare the possibility to compute the chi-square in the given function range. The default is now to use all graph points (different than 5.34.13).
    • Fix a bug in TAxis::SetBinLabel, when updating a bin label (Fix 5025).
    • Improve TH2::FillRandom to use the integral of the function in the bin. Make a check that it can be used only for TF2 functions (Fix 5608).
    • Implement for all TProfile classes SetBinLengths. (Fix 5611)
  • CINT / Reflex
    • Pass "--gccxmlopt" to gccxml also with --print; allow lcg-g++-* (ROOT-5810, f145436)

Changes in version v5-34-13 (Dec 1, 2013)
Binary Incompatible

  • I/O
    • Fix an issue with the file generated by MakeProject when std::set or std::multimap are involved. This fixes ROOT-5730
  • Graphics
    • In TColor::SetPalette predefined palettes were redefined even if it was not necessary.
    • Better way to handle the string input in the Pad toolbar.
  • Core/Meta
    • Implement passing of Reflex Properties to the new TClassAttributeMap.
  • Hist
    • Adopt THnBase (and thus THnSparse and THn) to changes in TAxis::SetRange().

Changes in version v5-34-12 (Nov 19, 2013)
Binary Incompatible

  • Platform support
    • Completed OSX 10.9 (Mavericks) port, roottest runs now without errors to completion.
  • Core
    • Fixed possible buffer overflow in TDirectory::DecodeNameCycle (it was also affecting multi-dataset processing by name in PROOF).
  • I/O
    • Add TBuffer::ReadVersionNoCheckSum to allow reading the version of classes that were always versioned but used to have a version number equal to zero (and no byte counte was stored).
  • TTree
    • Fix a problem when a TTree alias was used in a boolean expression. In some circumstances the branch(es) used in the alias would not be loaded properly leading to random results (i.e. passing the result on the previous entries' value).
  • Graphics
    • In TGaxis: 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.
  • Proof
    • TSelectorList (used for the output list) now derives from THashList speeding up names lookups during merging
  • MathMore
    • Add possibility to skip a given n value of quasi-random numbers

Changes in version v5-34-11 (Oct 31, 2013)
Binary Incompatible

  • Platform support
    • Added support for OSX 10.9 (Mavericks). OSX 10.9 comes only with the clang compilers and the new libc++ C++ run-time library. As libc++ is not compatible with libstdc++, third party C++ libraries have to be recompiled on 10.9 to be able to be used with ROOT.
  • Core
    • Fix thread safety of the creation of a TThread was an already running thread.
    • Reduce the risk of out-of-order execution of file and socket closing (compared to when the libraries are unloaded) by using atexit.
    • Extend TInterpreter interface with a DeleteVariable() method so that all RooFits interpreter interactions can now be handled through the abstract interface.
    • Fix end of process issues when a TApplication object is not [created and then] deleted before the end of main. ROOT-5620 and GENSER-157
  • I/O
    • I/O protocol "xroot://" now also supported and doing same as "root://".
    • Properly call an I/O rule that applies to a whole object that is split (deficiency introduced in v5.34/10). This fixes ROOT-5483
    • Fix a memory leak while reading a std::vector<bool>. This fixes ROOT-5539.
    • Fix thread safety of TGenCollectionProxy's iterator creation.
    • Fix a memory issue when cloning some file with freed-up blocks. This fixes ROOT-5616
  • TTree
    • Fix spurrious issue when same name was twice in branch name. This fixes ROOT-5628
  • RooFit (with substantial contributions from M. Schiller)
    • Various speedups in core code in management of expression trees (faster lookup of nodes, cloning of expression trees etc...)
    • Make RooAbsArg::setExpensiveObjectCache() virtual so that cache association of RooRealVar objects never happens. Fixes ROOT-5502
    • Trim verbosity of algorithms that optimize likelihood calculations prior to fit: nodes evaluated in cache-and-track mode are only reported if there are less than 20, otherwise only the number of such nodes is reported
    • Add option to optimize calculation of likelihoods represented by stacks of RooHistFuncs stored in a RooRealSum by evaluating them as a genuine binned likelihood, rather than as a probability density function with an extended likelihood term. To activate this feature, the RooRealSumPdf must have a boolean attribute "BinnedLikelihood" set.
    • Modify workspace strategy for importing functions and pdfs with embbeded datasets (such a RooHistPdf). Now store datasets that were not already imported in workspace in a separate 'embedded datasets namespace' that is also visible to the user. Previously such imported datasets were inivisible.
    • Extend string buffer size of RooDataSet ctor with importSlices() argument
    • Bug fix in RooRealIntegral in classification of exclusive lvalue branches
    • Add horizontal morphing option to RooMomentMorph [ M. Baak ]
    • Modify RooCintUtils to route all interpreter interactions through TInterpreter rather than calling CINT functions directly. This unifies the RooFit code with that in the master branch that now works with cling rather than cint.
    • Make RooAbsReal::plotOn() version taking a RooLinkedList of arguments a public method
    • Fix potential race condition bidirectional memory-mapped pipe used for multi-core likelihood parallelization
    • Fixes to SumW2Error() option of RooAbsPdf::plotOn()
    • RooHistPdf now has analytical integrals over subranges
    • RooFit::Minimizer() option now recognized by RooAbsReal::chi2FitTo()
    • In RooRandom() allow internal generator to be modified by user
    • In RooRandom::uniform() for arrays use TRandoms RndmArray method for greater speed.
    • Optimize histfactory classes PiecewiseInterpolation and FlexibleInterpVar for speed
    • Fix in handling of extended likelihood terms when using SumW2Error correction for weighted unbinned data
  • PROOF
    • Import improvements in TProofBench: recording and display of the maximum rate during query, CPU efficiency calculation for PROOF-Lite runs, better measurement of wall time.
    • MInor fixes in the new dataset manager mostly for multi-dataset processing
  • Graphics
    • In TLatex some operators like #minus #plus #mp #hbar ... ignored the color defined by the operator #color.
    • In TLatex: 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.
    • In TMathText: implement \frac using \over.
    • In TMathText: Treat \mbox as \hbox to improve the compatibility with TTexDump.
    • TLegend:
      • 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").
    • In PDF files, italic greek characters were not correct for non null text angle.
  • Eve
    • Bugfix in TEveStraightLineSet::ComputeBBox() -- existence of markers was not checked before creating a null bounding box. This lead to objects with no lines (only markers) being skipped during rendering, effectively making them invisible.
  • MathCore
    • Speed-up TMath::NInt by making it inline and using templates (see ROOT-5290)
    • Use std::abs to implement TMath::Abs (see ROOT-5473)
  • MathMore
    • Add quasi-random numbers based on GSL
  • SMatrix
    • Add several improvements to the Cholesky decomposition provided by M. Schiller

Changes in version v5-34-10 (Aug 29, 2013)
Binary Incompatible

  • Core
    • Improve TFormula performance when it calls C++ functions
  • I/O
    • Add proper support for custom collection (i.e class that have a CollectionProxy but are not STL collections).
    • Fix support of iotype=Double32_t in Cintex when this was the only used of Double32_t seen by genreflex
  • TTree
    • Fix the reading a 8 bit integer by TTree::ReadFile and TTree::ReadStream
  • Eve
    • Consolidate handling of TGFileBrowser* TEveBrowser::fFileBrowser member, see ROOT-5294.
    • Fix TEveTrackPropagator::LineIntersectPlane, see ROOT-5373.
  • PROOF
    • Dynamic addition of workers to a currently running process (currently supported by the unit packetizer)
    • Interface with igprof for fast statistic profiling.
    • Fix PROOF-Lite crash at destruction reported in ROOT-5280.
    • Import patch to fix fatal bug in xproofd affecting setups using authentication introduced in 5-34-06 (synptom: session do not start).
    • Modification of output sending protocol to control memory usage as described in PROOF-30.
  • Graphics
    • TGraph::Draw() needed at least the option AL to draw the graph axis even when there was no active canvas or when the active canvas did not have any axis defined. This was counter-intuitive. Now if TGraph::Draw() is invoked without parameter and if there is no axis defined in the current canvas, the option ALP is automatically set.
    • TH1s were drawn improperly in "Logx" mode if "X" axis starts at negative values (see Jira report ROOT-4505).
    • Fix some misplacements of characters in TLatex formulae (with TASImage).
    • New class TTeXDump to generate PGF/TikZ vector graphics output
    • Allow parenthesis in PDF and PS file names.
  • RooFit (with substantial contributions from M. Schiller)
    • Deprecate RooComplex, adapt rest of code to use std::complex instread
    • New faster & more precise implementation of complex error function
    • Analytical integrals for RooChebychev
    • In RooAbsPdf::plotOn() allow to project an asymmetry of region
    • Change multi-core likelihood calculation strategy: keep master node idle and farm out all calculations to slave nodes
    • Fix treatment of weighted datasets with RooSimultaneous (Fixes ROOT-5229)
    • Implement new method of interprocess communication for multi-core likelihood calculation with lower IO overhead: a class BidirMMapPipe, which buffers communications internally and minimizes times spent in OS
    • Make RooAbsReal::EvalError contain std::strings rather than character arrays to support untruncated lengthy error messages
    • Implement Kahan summation of likelihood components over process boundaries
    • Bug fix in assignment of extended term calculation to slave process ID, which caused extended term to be omitted in some special cases
    • Check for positive eigenvalues of covariance matrix with weights squared when using SumW2Error() option in RooAbsPdf::fitTo()
    • Implement analytical integrals and maximum reporting for RooKeysPdf
    • Save RooRealVar bin boundaries in sorted vector instead of set to speed up bin lookup
    • Update hashing algorithm to construct unique object names from crc32 to FNV1a to obtain better hashing for short strings

Changes in version v5-34-09 (Jun 26, 2013)
Binary Incompatible, xproofd not usable with authentication (use >= 5.34/10)

  • Core.
    • Add TInterpreter::SetClassSharedLibs to extend and replace G__set_class_autoloading_table
  • I/O.
    • Fix the handling of rule that specify a version range "[1-]" but applies to a classes with a specified version numbered. It now properly applies to all schemas.
    • Prevent out-of-bounds access when switching a TBuffer from Read to Write mode.
    • Fix spurrious (fatal) removal of duplicate part of branch names.
      Since v5-34-06 (specifically commit b454e81), a TTree fails to save the content of a branch that is part of a split STL collection and whose name (of the data member) match some other component of the branch name (and the two must be separted my at least one level).
      For example out.OBJ.vec.OBJect or TH1DMEtoEDM_MEtoEDMConverter_MEtoEDMConverterRun_TEST.obj.MEtoEdmObject.object. When reading the file back in v5-34-06, 07 or 08, this will result in the data not being written and the missing data not being noticed in any way by the I/O .. but of course, it is not being read. When reading the file back with v5-34-05 or below, this can result in error messages like:
      Error in : Could not find the StreamerInfo with a checksum of 0x20000 for the class "TH1F" in output.root.
    • Issue an error/warning when the source field of a I/O customization rule is not a list of "type name"
    • No longer ignore rules that target an existing member but do not have it as a source; instead this rule signal that the input should be ignored.
    • Issue a Fatal error when TTree::BranchOld is called for a non-TObject class.
    • Fix ROOT-5297 by fixing the implementation of TClass's MoveAddressInRepository.
    • Fix several issues found by running clang's AddressSanitizer
  • CINT.
    • Fix rootcint -I / defined_in on Windows for histfactory (a079afe).
  • Proof
    • Import fixes for TProofBench in dynamic startup mode. TProofBench needs to know the maximum number of workers and to setup the context for the benchmark run. For this it was relying on TProof::GetParallel and TProof::GetListOfSlaveInfos. The information obtained was not correct in the case of a dynamic worker setup. This patch fixes several small issues related to this which are also relevant for the dynamic addition of workers.

Changes in version v5-34-08 (May 31, 2013)
xproofd not usable with authentication (use >= 5.34/10)

  • Meta and I/O
    • Avoid null pointer deference in TStreamerBase.
    • Add Error message when missing dictionary for STL collection.
    • Issue an error in the case of missing dictionary for STL base class of compiled classes.
    • Prevent integer overflow (unsigned int/int conversion) in TEmulatedMapProxy.
    • Implement a correct Write() method also writing the map value.
    • Add a example on how to grab the aggregate size on disk or memory for a branch.
    • Give example on how to create nested subdirectories.
    •  
    • add support for some the I/O rule element to be optional (in particular source and target)
  • Proof
    • Import some fixes from the master, mostly related to dynamic startup.
    • Import fix for the processing rate and local sub-merging (thanks to B. Butler, M. Swiatlowski).
    • Import improvement in worker log naming and handling, relevant for the dynamic mode.
    • Import fix for potential issue with the generation of the TProofBench PAR files.
  • Geom
    • Precision fix for TGeoPolygon affecting convexity checks and subsequently navigation for nearby vertices at large coordinates values.
    • Precision fix for safety calculation for a conical segment of a polycone
    • Precision fix for Boolean nodes affecting distance calculations from boundary points with inconsistent in/out state
    • Added user-defined extensions to volumes and nodes. This can be done inheriting from the base class TGeoExtension. To attach a user TObject derived class, one can use the reference counted TGeoRCExtension. The TGeoExtension class allows for either using or not reference counting. A utility TGeoRCPtr was added to allor smart reference counted pointers. To attach a user extension, use TGeoVolume::SetUserExtension() or TGeoNode::SetUserExtension(). To grab a reference counted pointer use GrabUserExtension(), to simply use/release use the method GetExtension().
    • Added possibility to draw polygons in 2D using TGeoPolygon::Draw() or TGeoXtru::DrawPolygon()

Changes in version v5-34-07 (April 26, 2013)
xproofd not usable with authentication (use >= 5.34/10)

  • I/O
    • Repair support for std::bitset (broken in v5-34-06).

Changes in version v5-34-06 (April 19, 2013)
Binary Incompatible, xproofd not usable with authentication (use >= 5.34/10)

  • Core
    • Prevent silent potential data corruption when reaching more than 16777215 references objects and increase the maximum number of references object to 16777215*65535. This addresses the Savannah report #97630 and #93360.
    • In TPRegexp::Compile() do not call Optimize() if regexp compilation has failed. Add a static flag 'Bool_t TPRegexp::fgThrowAtCompileError' that allows callers to intercept a faulty regexp being passed to Compile(). When this flag is in effect, a failed regexp compilation throws a std::runtime_error. Add member function 'Bool_t TPRegexp::IsValid() const' that returns true if the object holds a valid compiled representation of the regexp.
    • Add support in genreflex for data member that are arrays and are source or target of an I/O customization rule
    • TClonesArray::Delete now deletes properly the content of the objects even when they are representing an emulated class.
  • IO
    • Allow the implicit conversion from any type of numerical STL collection to any other type of numerical STL collection (e.g. vector<int> to list<float>)
    • Implement the implicit rule for matching pair (based on being able to convert their content)
    • hadd now enables Cintex (if it has been built) so that library that are autoloaded and have a Reflex dictionary are effectively used. This fixes Savannah Report #100759.
    • In genreflex add support for some the I/O rule element to be optional (in particular source and target)
    • Extent/correct the detection of renamed classes
    • Implementation the streamerInfo actions for kBits
    • Improve performace of reading a vector of non-class type by 25% (i.e. std::vector).
    • Improve performance of reading a branch with an std::list<int> by 25% by migrating to using the StreamerInfoAction and by implementing the access to iterator (creation, copy, increment, delete) via template function (rather than reallying on the slow mechanism using 'At' (and its use of the fEnv) ...)
    • Remove inadvertent match between 2 unrelated STL collection containing objects.
    • Add the concept of implicit rules to (centrally) support automatic translation of STL collection from numeric type to other numeric type or for when the contained class has some rules. Currently enabled only when the target is an std::vector.
    • Fix the Conversion of a Double32 or Float16 inside a collection of object to another type (the previous implemetation was not supporting the customization of the factor nor the number of bits).
  • TTree
    • In SetBranchAddress, use the result of CheckBranchAddressType to decide whether to actually use the address or not. This avoid mis-using the user's pointer (but also might make invalid/awkward code fails). To prevent the check (and hence for the use a pointer no matter what), the user needs to cast the pointer to a void*.
    • SetBranchAddress now returns an error code.
    • In TTree::SetBranchAddress, properly reset the TargetClass when the address is changed (back) to the original type.
    • Issue an error message if the class type of the argument to TTree::SetBranchAddress can not be determined (missing dictionary but having only a typeid).
    • Correct the behavior when attempting to create a branch with split level zero with an object that requires the use a TBranchObject (for example TVector3). See the ROOT Forum #15975
    • Properly handle the evolution of an STL container containing a class with contains sub-object.
    • Extend the output of TTree::Print(debugInfo) to include the action sequence information (and add support for the sub option 'func' that also prints the function's (mangled) name.
  • Math
    • Put explicit template instantiations from ChebyshevPol.h in implementation file, to avoid duplicate symbols that prevented static linking from succeeding.
  • Net
    • The class TS3WebFile was modified to support also reading files hosted by Google using the S3 protocol. Its TFile plugin was also modified to reflect this.
  • Proof
    • Import patch #46634 removing the dependence on the XRootD header XrdSutAux.hh
    • Import patch #48766 fixing a possible double-delete when a selector is processed by object.
    • Import patch #48939 fixing problem in pq2-verify.
    • Import patch #49113 fixing a possible crash in submerger mode due to missing protection.
  • PyROOT
    • Support for python3.3.
  • GL
    • Make camera state streamable. See tutorials/eve/camera_restore.C
  • Eve
    • TEveRGBAPalette: fix bug in palette color interpolation.
  • RooFit
    • Fix for the notorious 'proxy error' problem that would crash toy studies
      of complex models after a couple of hours of running
    • Eliminated most memory leaks
    • Support up to 9 arguments in RenameVariables() argument of RooWorkspace::import()
    • Introduce new generic MultiArg() named argument that can be passed to any RooFit function taking named argument with the purpose of extending the maximum number of accepted named arguments. Since MultiArg() can be nested inside RooMultiArg() there is now no technical limitation on the numer of named arguments that can be passed
    • In RooCategory interpert the null-range as the default range so categories behave analogous to RooAbsReals when used with ranges
    • In RooPlot avoid drawing of stray entry in first bin when user has TH1::DefaultSumW2() set to kTRUE
    • Improve robustness of likelihood offsetting procedure that is enable via the Offset(kTRUE)
      argument to RooAbsPdf::createNLL() or RooAbsPdf::fitTo()
    • In RooWorkspace allow to access snapshot contents as RooArgSet [ JIRA-ROOT-178 ]
    • Fix bug in parallelized likelihood calculations (NumCPU(n)) for models that have extended likelihood components in one bin. With this fix likelihood parallization will work robustly for all known HistFactory-style models
    • Add new strategies to parallelize likelihood calculations over multiple cores. New strategies allow to distribute whole pdf components over cores instead of splitting them internally. This is particularly efficient for small components (with few associated dataset entries). The new 'hybrid' parallelization option will automatically select this strategy for small components, while keeping the 'BulkPartition' internal splitting for larger components
    • In RooMinuit improve retrieval of MINOS status code
    • Update RooNovosibirsk with analytical integral (M. Petric -JIRA-ROOT-5013)
    • In RooProfileLL fix crash in call to bestFitObs() prior to calling getVal() [ JIRA-ROOT-4884 ]
    • Allow Bool_t datatypes in TTrees to be associate with RooRealVars in RooDataSets [ JIRA-ROOT-179 ]
    • Fix RooAbsData::addColumn() for datasets that are internally represented as a composit dataset,
      i.e datasets from RooSimultaneous::generate() [ JIRA-ROOT-4771 ]
    • In RooFitResult::createHessePdf() fix variable mapping problem in info message [JIRA-ROOT-4993 ]
    • Fix chi^2 calculation when empty bins are present in RooCurve::calculateChi2() [ JIRA-ROOT-4826 ]
    • Fix RooAbsReal copy ctor - include plot label as well [ JIRA-ROOT-4987 ]
    • Fix possible hangup in NumCPU() multi-core parallization of likelihood when complex errors
      occur on the server-side
  • HistFactory
    • Fix broken schema evolution of class HistFactory::Measurement with full backward compatibility
  • RooStats
    • In ModelConfig add sanity check that objects passed to SetNuisanceParameters(),
      SetPOI() etc are genuine variable objects and not functions

Changes in version v5-34-05 (Feb 14, 2013)
Binary Incompatible

  • Core
    • Updated the class checksum calculation to be more platform independent. Notably this changes the value of checksum for classes that inherit from STL collections.
  • I/O
    • Enhance the performance of reading STL collection by 25%.
    • Enabled the implicit conversion from any colletion of a Type to any other collection of a compatible type. Compatible types includes two numerical types, two class for a explicit renaming I/O customization rule and two std::pair of compatible types.
    • Fix compilation errors with castor 2.1.13-6 (DLL_DECL is not defined in Castor anymore)
    • Remove a race condition in the asynchronous TFile prefetecher. This fixes the Savannah report
    • Added possibility to merge only a list of objects/folders from the input files, specified by name,
      or to skip them from merging. This is fully integrated with the new PartialMerge(flags) schema.

Usage:
The names of the objects to be merged or skipped have to be specified using the interface:

    TFileMerger::AddObjectNames(const char *names)
This method can be called several times to add object names. Several names can be added with one
call separated by single blancs (no blanc at the end). Directory names are accepted, applying the
merging selection to all content. Two new options are being supported for partial merging:

    TFileMerger::PartialMerge(flags | kOnlyListed)
This will merge only the objects in the files having the names in the specified list. If a folder is
specified, it whole content will be merged

     TFileMerger::PartialMerge(flags | kSkipListed)

This will skip merging for the specified objects. If a folder is specified, its whole content will be skipped

Important note: The kOnlyListed and kSkipListed flags have to be bitwise OR-ed
on top of the merging defaults: kAll | kIncremental (as in the example $ROOTSYS/tutorials/io/mergeSelective.C)

  • Graphics
    • Implement #backslash in TLatex.
    • Add the optional parameter "alpha" to TColor::SetPalette. The default value is 1. (opaque palette). Any value between 0. and 1 define the level of transparency. 0. being fully transparent and 1. fully opaque.
    • Implement transparency for GL in Pad (gStyle->SetCanvasPreferGL(1)).
    • Fix a problem with the option SAME.
  • Proof
    • Correctly set the PROOF internal protocol value to the level required by the new dataset staging request functionality.
    • Import patch #48355 with important fixes in TDataSetManagerAliEn.
    • Import patch #48439 with fixes/modifications in xpdtest, setxrd.sh and installXrootd.sh.
  • Eve
    • Added a few extra class members to TEveRecTrackT needed by ALICE.
  • RooFit
    • Make sure 'generic projection terms' of a RooProdPdf, as well assits payload
      are associated with the expensive object cache of the RooProdPdf, so that
      these are cached in workspace files when persisted
    • Make RooFFTConvPdf support convolution in a range narrower than the
      the full domain (the narrow range can be specified as part of the 'cache' binning
      associated with the convolution observable that also controls the sampling density)
    • In RooChi2Var offer an explicit choice between modified and normal chi^2 calculation
    • In RooWorkspace improve functionality of importClassCode(): include files specified
      in the class code that are have encoded path names are now also found and stored
      [ Savannah #100027 ]
    • Reorder ctor order of RooMultiVarGaussian so that version with RooArgList
      for the mu vector is accessible in the workspace factory.

Changes in version v5-34-04 (Jan 10, 2013)
Binary Incompatible

  • Core
    • Fixes two thread safety issues affecting accessing TClonesArray objects in more than one thread (see revision #47726).
    • Import patch #48132 fixing an issue in TUnixSystem::RedirectOutput; this resolves the Savannah report #96935.
  • I/O
    • Prevent a segmentation fault at the time a TFile is closed and/or deleted if it contains a TTree that is stored in a subdirectory.
    • Prevent infinite loop when encountering unzipping error. This resolves the Savannah report #99523.
    • Import patch #48115 in TFileMerger basically skipping, for non-mergeable objects, the check on recurrent names. This should fix the Savannah report #99015.
  • Proof
    • Import patch #46864 fixing a crash in TStatus::Add in the case of missing files. This was a regression introduced by branch patch #45751 (import of #45283).
    • Import patch #46992 addressing a possible crash after finalisation.
    • Import patch #47067 fixing possible (random) failure of test 22.
    • Import patch #47235 fixing a file permission issue in afdsmgrd.
    • Import patch #47238 fixing a few issues preventing proper cleaning of the 'data' directory when running stressProof in Proof-Lite.
    • Import patch #47251 fixing an issue with unexpected settings in TStatus::fBits.
    • Import patch #47270 adding notification of the estimated time left (and, at the end, of the processing time) also when running in batch mode.
    • Import patch #47367 fixing an issue with TDSet::Validate.
    • Import patch #47444 to not print all progress messages during the merging phase in non-tty mode (avoid filling up the logs with useless info).
    • Import patch #47451 to add flexibility in defining directories for PAR packages.
    • Import patches #47528 and #47573 to support specifying the check version option in TProof::EnablePackage.
    • Import patch #47664 fixing an undefined variable in TSelEventGen (proofbench PAR package).
    • Import patch #47729 fixing a backward incompatibility introduced by patch #45751.
    • Import patch #47832 to make sure that the fSlaves list contains always ALL workers, even those which did not initially startup; this way GetListOfSlaveInfos can be used to find out which workers had problems starting up.
    • Import patch #47833 to make sure that the XrdProofClient instance is always defined when calling MapClient. This was not done for example when using the weak authentication protocol 'host', or similar protocols not requiring a real authentication token.
    • Import patches #48060 and #48239 introducing an improved dataset management model where the PROOF (ROOT) dataset manager is a light frontend to the experiment file catalogs; TDataSetManagerFile is still used as local cache of the experiment information or to store the work-in-progress status of the dataset manager daemon. This model is expected to solve the scalability issues observed currently at AAFs. The patches include the new class TDataSetManagerAliEn with the first concrete implementation of experiment catalog interface and a new version of afdsmgrd able to cope with the new dataset model.
    • Import patch #48063 fixing fixing possible deadlock in session startup.
    • Import patch #48068 fixing some issues in TProofBench.
    • Import patches #48086 and #48099 fixing some building issues.
    • Import patch #48104 fixing fixes failure in TProofBench.
    • Import patch #48122 turning-off role checking for localhost connections (not required and limiting daemon test applications).
    • Import patches #48016 and #48127 with several fixes in xproofd.
    • Import patch #48130 adding the executable 'ptest' which can be used to test the status of the daemon.
    • Import patches #48130 and #48141 to support building ROOT using an untagged xrootd (e.g. the trunk).
    • Import patch #48166 reducing verbosity during merge of TProofOutputFile in no debug mode.
    • Import patches #48211 and #48226 to fix possible deadlocks associated with the handling of asynchronous timers.
  • Tree
    • Import patch #47057 in TTree::Merge to make sure that things are really written out to disk before attempting any reading; solves an issue in TFileMerger when the merged file is written to a xrootd backend.
    • TTree::ReadFile and TTree::ReadStream now skip empty lines and commented out line (starting with #) before looking for a description. (This fixes the most recent part of the Savannah report #28084).
    • In TTree::ReadFile and TTree::ReadStreama allow colon (:) as the separator for the list of branch and types even in the case of a comma separated file. This resolves the Savannah report #99528.
  • Graphics
    • Import the TMathText class.
    • In the following example the white spaces were ignored.
      	   TFileMerger::AddObjectNames(const char *names)
      	
    • Fit parameters with very long names destroyed the stats display.
    • Import new palettes from the trunk.
    • New drawing option "SC" for TPie to draw the labels with the slices' colours.
    • Modify the Clear function in order to be able to reuse a TGraph2D after a Clear is performed.
    • In TGraph2D::GetHistogram() the lower and higher axis limits are always different.
  • PyROOT
    • Reworked GIL release to be as close to the C++ call as possible
  • Hist
    • Fix a bug in fitting TGraphAsymErrors when including error in x (see Forum #15564)
    • Improve TAxis::SetRange with the possibility to include/exclude also underflow and overflow bins (see issue #97331)  
    • Fix a bug in re-using the stored fit function in the histogram for fitting a second time
  • Minuit
    • Fix a problem in TMinuitMinimizer when all parameters are fixed (see #99058)
  • RooFit
    • Fix a bug,introduced in 5.34.01, when generating the correct number of events when using the Extended() option (#98832)
    • Import in RooPoisson the implementation of the analytical integral for the mean
  • RooStats
    • Fix an issue in FactorizePdf (see Forum #15694)
    • Fix a memory leak in SPlot (#99400)
    • Add functions in RooStatsUtils to factorize the pdf and to remove constraint terms. Speed-up the SimpleLikelihoodRatio evaluation by avoiding to evaluate the constraints
    • Fix the AsymptoticCalculator to try to use same binning for Asimov data set as observed data
    • Add support for generating same toys for alternate hypothesis at each point to get more stable bands
  • HistFactory

Changes in version v5-34-03 (Oct 25, 2012)
Binary Incompatible

  • Build System
    • Fix in ACliC for builds with --enable-soversion on MacOS X.
  • IO
    • Fix for reloading TClass via Cintex (This fixes Savannah issue #97765.
  • TTree
    • In the case where the content of STL collection has one of its member removed, avoid mistakenly trying to read if SetAddress is called more than once on that branch.
    • In TTreeSQL prevent a spurrious duplicate column error (Fixes Savannah issues #98126.
  • RooFit
    • Fix a bug in level-2 optimization of likelihoods involving pdfs containing products of conditional pdfs 
    • Import weight variable of imported dataset if no weight variable is specified (Savannah #95641)

    • When importing TH1s in a RooDataHist omit 'average bin density' correction factor as that
      proves to be very uninuitive (Savannah #96153)

    • In RooStreamParser fix parsing issue for variables starting with an 'i' (Savannah #82458)

    • Allow to import RooPlots in workspace with crashing (Savannah #94239)

    • Fix crash in reading of RooVectorDataStore of variabes with weights stored (Savannah #94908)

    • RooProduct and RooAddition now accept multiple copies of the same input argument, e.g. a*a or a+a (Savannah #94925)

    • In fitTo() only invoke SUMW2 afterburner if there are >0 free parameters (Savannah #92332)

    • Fix documentation of RooFormulaVar (Savannah #93498)

    • In RooAbsData::splot() don't add extra weight variable when split()-ting binned datasets (Savannah #93867)

    • Fix dynamic updated of mapped binning of RooLinearVar (Savannah #82087)

  • RooStats

    • Fix a bug in re-defining the same set in ModelConfig::DefineSetInWS
    • Fix a memory leak in using the test statistics detailed output
    • Fix the computation of p-values in ProfileLikelihoodCalculator::GetHypoTest for multi-dimensional models (with more than one parameter of interest)
  • FFTW
    • Fix bug #97707 in TFFTComplexReal::SetPoint(ipoint, c)
  • MathCore
    • Fix a bug in the Fitter class in setting a different error scale for likelihood fits (see post #15368)
  • Graphics
    • Implementation of MacOS X back-end finished.
    • When GetX(YZ)axis were called on a TGraph2D, the frame limit and plotting options were changed.
    • Thick dashed lines were not correct in TASImage files
  • GL
    • Make sure to pass identity matrix to TGeoCompositeShape::PaintComposite() when transformation is not included in boolean operation.
    • Enable automatic scaling of surface normals when transformation matrix is a scaling transformation.
    • Add option preventing GL viewer to disregard very small objects. Call TGLLogicalShape::SetIgnoreSizeForCameraInterest(kTRUE);
    • Fix a bug in CSG operations that manifested with gcc-4.7 (only with optimization on).
    • Move enums from global namespace:
      • EOverlap moved to Rgl namespace;
      • EClipType moved into class TGLClip as EType;
      • EPosition and EManip type were not used and have been removed.
    • Fix a bug in arc-ball camera rotation mode (when camera center was moved from window center).
  • EVE
    • Fix an issue in Eve shutdown sequence.

Changes in version v5-34-02 (Sept 21, 2012)
Binary Incompatible

  • Build System
    • When checking if "-std=c++11" compiler option exists use the compiler that is selected via --with-cxx.
  • Thread
    • In Thread::Join, avoid a dead lock/race condition that sometimes prevented the TFilePrefetcher from properly finishing.
  • Meta
    • Making sure that when we lookup for an existing entry we look for an exact match (as oppose to doing a lookup of the unqualified name) to avoid unrelated nested typedef/names to over-ride global scope classes that are marked for autoloading (r42421).
  • I/O
    • Avoid spurious error message when reading an existing file with a class inheriting from std::string (r45117)
    • Corrected the calculation of the number of read calls in TRFIOFile (See the forum post on the subject. Fixed by revision 45140).
    • Add protection against corrupted ROOT File (wrong length stored in the file header) (Revision 45170).
    • Fix file->Get("Lumi/physics;2") to properly retrieve the 2nd cycle (revision 45243).
    • Implement TChain::RemoveFriend to avoid leaving the TChain in an unstable state (See the forum post on the subject.  Fixed by revision 46069).
  • Proof
    • Import patches #45846, #45847 and #45849 fixing a few consistency issues (honoring 'workers=N' when passed as option in PROOF-Lite, parallel dataset verification when PROOF is sequential).
    • Import patches #45876, #45823 and #45827 fixing, in stressProof, sandbox cleaning and adding some switches to better control log saving an path in case of failures. The patch also adds the correct switches in test/CMakeList.txt for cmake -based test running.
    • Import patch #45759 fixing possible double delete in TProofDraw.
    • Import patches #45283, #45289, #45318, #45348, #45367, #45570, #45610, #45614, #45615, #45632, #45634, #45282, #45696, #45697, #45718 and #45740 automatizing the usage of file-based technology to handle outputs (see Handling Outputs).
    • Import patch #45664 fixing an issue with afdsmgrd build in the case a '--prefix=' was passed.
    • Import patches #45283 (parts), #45318, #45607, #45610, #45613, #45614 (parts), #45630, #45632 (parts) and #45643 fixing several issues:
      - consolidation of username definition in the automatic LOCALDATASERVER setting (by xproofd);
      - fix for TProof::GetUser (Savannah issue #92533)
      - use of LOCALDATASERVER in ProofAux.C, fixing potential failures of stressProof
      - fix for potential segv in the destructors of TPacketizerUnit and TVirtualPacketizer
      - fix issue with merging elements in ProcFileElements which was causing spurious failures in stressProof, test #19
    • Import patches #45568 and #45597 fixing a few issues in PROOF-Lite.
    • Import patches #45092 and #45093 adding functions to retrieve environment information from the nodes, typically from the master (datadir or some env settings).
      Warning: This change in binary incompatible.
    • Import patch #45181 fixing a crash in xproofd when using security.
  • Graphics
    • 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)
  • GUI
    • Prevent the use of a global by TGLabel before it is initialized (revision #46073
  • EVE
    • Avoid crash in TEveTrack::TEveTrack(TEveMCTrack*) constructor when PDG code is unknown. fCharge is set to 0 in this case.
    • Add support for asymmetric calorimeters in TEveCalo classes (Christian Pulvermacher).
  • RooFit
    • Fix a bug in RooBernsteing for degree 1 polynomial (#97190)
  • RooStats
    • Fix a bug in using the correct one-sided test statistics in the AsymptoticCalculator (see corresponding discussion on RooStats mailing list)
    • Fix a bug in SimpleInterval
    • Improve LikelihoodIntervalPlot for drawing 2D contours
    • Fix the evaluation of the likelihood  for ConditionalObservables
    • Fix setting a second time the nuisance pdf in the ToyMCSampler. This bug affect the HybridCalculator when using different nuisance pdf's for the null and alternate models.
    • Fix generation of AsymptoticCalculator::GenerateAsimovData  for counting models containing several observables  
  • HistFactory
    • Import changes described in revision 45703
    • Import changes to have model built without a data tag selected 
  • Hist
    • Update projection methods to re-set binning on a previously existing histogram (#94101 and #95808)
  • Minuit
    • Apply some fixes in TMInuitMinimizer: fix resetting the configuration in a second Minos run and fix the number of contour points.

Changes in version v5-34-01 (July 13, 2012)
Binary Incompatible

  • Core
    • Avoid risk of executing the tear down routines twice at process termination when -q is used and there is no input file descriptor. (revision 44838).
    • Fix linking of qtcint.dll when explicitly linking is required (see the related forum post).
  • I/O
    • Fail gracefully instead of segfaulting on broken files in GetStreamerInfoList (Fixes Savannah #5439).
    • Avoid seg fault when deleting a reseted TMemFile (revision 44749).
    • Avoid seg in I/O operation if you change the prefetch settings after the cache is created (revision 44755).
    • Add an explicit 'Close' for the read cache so that we can insure that all the (concurrent) outstanding connection/use of the TFile are closed before closing the file.
  • TTree
    • Restore support for the TTreeCache use case where the lifetime of the TTreeCache is explicitly managed by the user and detach from the TFile/TTree via a call to: file.SetCacheRead(0);
    • Fixes issue in TChainIndex that made reading the first entry of the 2nd and subsequent files in the TChain not beeing properly reading when using the index. (Fixes Savannah #94910).
    • Avoid an unnecessary flushing of the TTreeCache after the first time it filled (revision 44750)
  • Proof
    • Import patch #44606 adding support for gcc4.7 in afdsmgrd (version 1.0.3).
    • Import patch #44701 with several important fixes in xproofd. Patch is server side only; only the upgrade of xproofd (or libXrdProofd) are required.
  • RooFit
    • Fix bug in binned generation of extended pdf (patch #44630 )
  • HistFactory
    • Fix a problem for pyroot and an issue in creating directory (patch #44579 ).
  • Hist
    • Fix bug in merging histograms and profile when first histogram to merge is empty (bug #95190 and #94295)
    • Enable TBrowser to access THnSparse with more than 16 axes (r44827).
  • THtml
    • Set ROOTSYS in makehtml by calling root instead of root.exe (bug #95635, r44726)
  • OpenGL
    • If creation of frame-buffer object for saving of a screenshot fails, fallback to using back-buffer. This can be disabled via the following rootrc setting:
        OpenGL.SavePictureFallbackToBB: off
      Latest SLC5, SLC6 intel/mesa drivers seem to often lie that they support FBOs and then fail when asked to provide it.
    • Provide switching between standard and arc-ball rotation in TGLViewer (keybinding 'a').
    • Allow setting of non-standard coordinate systems (arbitrary up and forward direction) via new function TGLViewer::ReinitializeCurrentCamera().
  • EVE
    • Add new type of track path-mark - TEvePathMatk::kLineSegment. This is to be used for silicon strip detectors rec-hits, especially for low pT tracks where searching for closest point of approach to a line segment is more robust that searching for intersection with a plane.
    • Add support for somewhat continuous energy loss along track propagation. This only makes sense if many path-marks are set for a given track, see TEveTrack::fDpDs.

Changes in v5-34-00 (June 5, 2012)

  • TTree
    • Repair the plotting of string histogram by TTree::Draw
  • Net
    • Fix in TWebFile reading using https (via TSSLSocket).
  • IO
    • Optimization in TFileMerger for the case where there is only one file to 'merge' (patch #44533).
  • Proof
    • Import patches #44411 and #44425 fixing a problem in handling local files in TDataSetManager::ScanFile;
    • Import version 1.0.2 of afdsmgrd (patches #44243, #44292 and #44332) with several important fixes for PEAC and AAFs and the integration in the cmake build
    • Import patch #44397 changing the default merging procedure used histograms to cover correctly all the cases.
    • Import patches for Coverity-related issues
  • THtml
    • Also check for modifications in headers (bug #94695, r44323).
  • Textinput
    • Always move to right after prompt before writing text (bug #91752, r44337).
    • Implement ^G: abort an incremental search and restore the original line (r44337).
  • CINT
    • genreflex: fix an issue with base classes defining operator new() (bug #94981, r44403).
  • Misc
    • Remove using namespace declarations (bug #94452, r44342-44352, r44368).