# 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