ROOT version 3.02/07 Update Notes

Bug fixes
=========

Bug fixed in the TBranchElement constructor in case of a TClonesArray.
The class version for TClonesArray was erroneously set to 1 instead of
the current version of the class TClonesArray.
As a result, when reading a Tree with branches having TClonesArray,
the StreamerInfo for TClonesArray itself was rebuilt each time the branch
was rebuilt.

When reading more than 2500 Trees from the same file (or TChain),
the index of classes was overwritten and TFile::Close was crashing when
writing the class index to the file.

Bug fixed when reading/writing/printing fixed size arrays of TString,
TObject and TNamed.

Fix in GetDataMemberOffset() to support the case when a class and
one or more of its parent class have data members with identical names.


CINT
====

Latest version of CINT. Main new features:

- bool is now a natively supported basic data type
- the power operand ** has been disabled in interpret code


Added support for I/O of const pointer members
==============================================

The ClassDef macro in Rtypes.h is modified to generate the code
for the corresponding I/O operator>>().


New features in TTree::Draw()
=============================

Saving the result of Draw() to an histogram (Heiko.Scheit@mpi-hd.mpg.de).

By default the temporary histogram created is called htemp.
If varexp0 contains >>hnew (following the variable(s) name(s),
the new histogram created is called hnew and it is kept in the current
directory, example:

    tree.Draw("sqrt(x)>>hsqrt","y>0")

will draw sqrt(x) and save the histogram as "hsqrt" in the current
directory.

The binning information is taken from the environment variables

   Hist.Binning.?D.? (see below)

In addition, the name of the histogram can be followed by up to 9
numbers between '(' and ')', where the numbers describe the
following:

   1 - bins in x-direction
   2 - lower limit in x-direction
   3 - upper limit in x-direction
   4-6 same for y-direction
   7-9 same for z-direction

When a new binning is used the new value will become the default.
Values can be skipped. Examples:

   tree.Draw("sqrt(x)>>hsqrt(500,10,20)", ...)

plot sqrt(x) between 10 and 20 using 500 bins

   tree.Draw("sqrt(x):sin(y)>>hsqrt(100,10,,50,.1,.5)", ...)

plot sqrt(x) against sin(y), 100 bins in x-direction, lower limit on
x-axis is 10, no upper limit, 50 bins in y-direction, lower limit on
y-axis is .1, upper limit is .5

By default, the specified histogram is reset.
To continue to append data to an existing histogram, use "+" in front
of the histogram name. A '+' in front of the histogram name is ignored,
when the name is followed by binning information as described in the
previous paragraph,

    tree.Draw("sqrt(x)>>+hsqrt","y>0")

will not reset hsqrt, but will continue filling. This works for 1-D,
2-D and 3-D histograms.

In system.rootrc, added the new variables (with their default):

   # default binnings
   Hist.Binning.1D.x:     100

   Hist.Binning.2D.x:      40
   Hist.Binning.2D.y:      40
   Hist.Binning.2D.Prof:  100

   Hist.Binning.3D.x:      20
   Hist.Binning.3D.y:      20
   Hist.Binning.3D.z:      20
   Hist.Binning.3D.Profx: 100
   Hist.Binning.3D.Profy: 100


New Drawing options for histograms
==================================

The BAR options
---------------

When the option "bar" or "hbar" is specified, a bar chart is drawn.
Vertical BAR chart: options "bar","bar0","bar1","bar2","bar3" and
"bar4". The bar is filled with the histogram fill color.
The left side of the bar is drawn with a light fill color.
The right side of the bar is drawn with a dark fill color.
The percentage of the bar drawn with either the light or dark color:
   is  0 per cent for option "bar" or "bar0"
   is 10 per cent for option "bar1"
   is 20 per cent for option "bar2"
   is 30 per cent for option "bar3"
   is 40 per cent for option "bar4"

Use TH1::SetBarWidth() to control the bar width (default is the bin
width). Use TH1::SetBarOffset() to control the bar offset (default is 0).
See example in $ROOTSYS/tutorials/hbars.C


Horizontal BAR chart: options "hbar","hbar0","hbar1","hbar2","hbar3"
and "hbar4". An horizontal bar is drawn for each bin.
The bar is filled with the histogram fill color.
The bottom side of the bar is drawn with a light fill color.
The top side of the bar is drawn with a dark fill color.


Alphanumeric bin labels
-----------------------

By default, an histogram axis is drawn with its numeric bin labels.
One can specify alphanumeric labels instead with:
   1 - call TAxis::SetBinLabel(bin,label);
       This can always be done before or after filling.
       When the histogram is drawn, bin labels will be automatically
       drawn. See example in $ROOTSYS/tutorials/labels1.C, labels2.C.
   2 - call to a Fill() function with one of the arguments being a
       string, e.g.:
          hist1->Fill(somename,weigth);
          hist2->Fill(x,somename,weight);
          hist2->Fill(somename,y,weight);
          hist2->Fill(somenamex,somenamey,weight);
       See example in $ROOTSYS/tutorials/hlabels1.C, hlabels2.C.
   3 - via TTree::Draw(). See for example $ROOTSYS/tutorials/cern.C:
          tree.Draw("Nation:Division");
       where "Nation" and "Division" are two branches of a tree.
When using the options 2 or 3 above, the labels are automatically
added to the list (THashList) of labels for a given axis.
By default, an axis is drawn with the order of bins corresponding
to the filling sequence. It is possible to reorder the axis
   - alphabetically
   - by increasing or decreasing values
The reordering can be triggered via the TAxis contextMenu by selecting
the menu item "LabelsOption" or by calling directly
   TH1::LabelsOption(option,axis)
where
   -axis may be "X","Y" or "Z"
   -option may be:
      = "a" sort by alphabetic order
      = ">" sort by decreasing values
      = "<" sort by increasing values
      = "h" draw labels horizonthal
      = "v" draw labels vertical
      = "u" draw labels up (end of label right adjusted)
      = "d" draw labels down (start of label left adjusted)

When using the option 2 above, new labels are added by doubling
the current number of bins in case one label does not exist yet.
When the filling is terminated, it is possible to trim the number
of bins to match the number of active labels by calling
   TH1::LabelsDeflate(axis)
with axis = "X","Y" or "Z". This operation is automatic when using
TTree::Draw(). Once bin labels have been created, they become persistent
if the histogram is written to a file or when generating the C++ code
via SavePrimitive().


Added new methods to TDirectory
===============================

   TKey *TDirectory::FindKey(const char *keyname) const

Find key with name keyname in the current directory.

   TKey *TDirectory::FindKeyAny(const char *keyname) const

Find key with name keyname in the current directory or its
subdirectories.
NOTE that if a key is found, the directory containing the key becomes
the current directory

   TObject *TDirectory::FindObjectAny(const char *aname) const

Find object by name in the list of memory objects of the current
directory or its sub-directories.
After this call the current directory is not changed.
To automatically set the current directory where the object is found,
use:
   FindKeyAny("aname")->ReadObj().


In TMatrix, TMatrixD
====================

New functions to compute eigenvectors, eigenvalues.


New functions in TStyle
=======================

   void TStyle::SetStripDecimals(Bool_t strip=kTRUE)

Set option to strip decimals when drawing axis labels.
By default, TGaxis::PaintAxis removes trailing 0s after a dot
in the axis labels, e.g.: {0,0.5,1,1.5,2,2.5,...}
If this function is called with strip=kFALSE, TGAxis::PaintAxis()
will draw labels with the same number of digits after the dot, e.g.:
(0.0,0.5,1.0,1.5,2.0,2.5,...}

The method SetTimeOffSet() does not convert anymore the given
offset to UTC. It UTC is needed pass directly the offset in
UTC (TDatime::Convert(kTRUE) can be used for that).


New symbol #slash in TLatex
===========================

#slash{E} draws the character E with a slash on top.
For example to draw the missing ET symbol, use #slash{E}_{T}


More interaction with TGraph, TGraphErrors, etc
===============================================

Added new functions to all the TGraph classes to interactively
with the mouse add a new point or remove a point. These new
functions are available from the context menu:

   Int_t InsertPoint();
   Int_t RemovePoint();

Added new function SetPointError() in TGraphErrors and
TGraphAsymmErrors. This new function is also in the context menu.


TBits
=====

New optional argument to functions CountBits(), FirstNullBit()
and FirstSetBit().


Signal/Slots
============

Fix in CheckConnectArgs() in case signal is emitted via TQObjSender
delegation class (via RQ_OBJECT macro). To allow full checking of
signal/slot consistency in interpreted classes pass string containing
class name to RQ_OBJECT macro, like:

   class myclass {
      RQ_OBJECT("myclass")
      ...
   };

(see guitest.C). To be backward compatible also allow old form,
but with reduced checking capability.


New tutorials
=============

labels1.C     showing how to set alphanumeric labels in a 1-D histogram
labels2.C     showing how to set alphanumeric labels in a 2-D histogram
hlabels1.C    illustrating 1-D histograms with alphanumeric labels
hlabels2.C    illustrating 2-D histograms with alphanumeric labels
hbars.C       example of vertical and horizontal bar charts
cernstaff.C   showing the use of string variables in a Tree
tree0.C       a simple Tree example with two classes
seism.C       strip chart example


ROOT page - Class index - Top of the page

This page has been automatically generated. If you have any comments or suggestions about the page layout send a mail to ROOT support, or contact the developers with any questions or problems regarding ROOT.