ROOT Version 1.03 Release Notes

//________________________________________________________________________
//
//::>          VERSION  1.03/09   16/12/97 17.53.37
//
// 16/12/1997  16.59.42  by  Rene Brun & Fons Rademakers
//
- The main feature of this new version is a general CLEANUP of most
  ROOT classes. The complete Root system can now be compiled with NO WARNINGS
  on all supported platforms. The compiler option "-w" has been removed.
  On Linux, the option -Wall is now the default.
  We strongly encourage our users to also compile with the option warnings
  activated.
  During this cleanup operation, we found some inconsistencies in a few classes.
  The following changes are not backward compatible:
     TDirectory::Read  has been renamed TDirectory::ReadAll
     TDirectory::Write has a new signature.
     TKey::Read  has been renamed TKey::ReadObj.
     TMatrix::Clear has been renamed TMatrix::Zero.

- Following this cleanup, you must regenerate the dictionaries
  for your classes. In particular, the copy constructor of TCollection is
  now private. We did this to prevent people from accidentally copying or
  assigning collections. In the old version there was no correct copy ctor
  for collections and naive usage of passing collections around could cause
  unexpected behaviour.

- All ROOT specific DEFINEs have been renamed to R__oldname
     AIX       ->   R__AIX
     ALPHA     ->   R__ALPHA
     B64       ->   R__B64
     BYTESWAP  ->   R__BYTESWAP
     GNU       ->   R__GNU
     HPUX      ->   R__HPUX
     I386      ->   R__I386
     INT16     ->   R__INT16
     LINUX     ->   R__LINUX
     MAC       ->   R__MAC
     MKLINUX   ->   R__MKLINUX
     MWERKS    ->   R__MWERKS
     SGI       ->   R__SGI
     SOLARIS   ->   R__SOLARIS
     SUN       ->   R__SUN
     UNIX      ->   R__UNIX

- Fix a problem in TMath::Atan2(y,x). When x=0 returns pi/2 and not 0.
  (thanks Ping Yeh).

- Remove list of global functions from the list of browsable objects
  in TROOT.

- Change TGaxis::PaintAxis to support tickmarks on the negative side of the axis.
  TAxis::SetTickLength accepts now negative values.

- Change TColor::SetRGB to always call TGXW::SetRGB.

- Several changes in TGraph::PaintGraph. Minimum and Maximum were not
  read correctly in TGraph::Streamer.

- Implement option "B"ound in TGraph::Fit.

- Modify TGraph::GetHistogram. Returns pointer to
    1- TH1F histogram used to draw axis when option "A" given in Draw.
    2- TH1F histogram hframe when TPad::DrawFrame is called instead.

- Optimisation of TGraphErrors to clip correctly error bars
  in case of LogY scale.

- Implement TPolyMarker::SavePrimitive.

- Changes in TNode::DistancetoPrimitive.

- Modify TBranch::Print. The ouput of TTree::Print shows only two lines
  per branch. Format optimized.

- TBranchClones constructor issues a warning in case the class referenced
  by the TClonesArray contains pointers.

- TBranchObject constructor calls TClass::BuildRealData if necessary.
  In the old version, this task was left to TBranch::Fill.

- A few protections added in h2root. In case of a 2-D array in a CWN,
  the maximum of a leafcount was not correctly set, giving possible problems
  when reading the Tree (thanks Laurent Mirabito for an example).

//
// 05/12/1997  17.18.35  by  Rene Brun
//
- Delete TNamed::Draw. Uses now TObject::Draw.

- Fix a memory leak in TLeafObject::FillBasket.
  When a TBranchObject has a branch with a null pointer, Root creates a Zombie
  object. This zombie was not deleted.

- Modify TPad::PaintBox to accept a new fill style (range [3020,3099]).
  TPave, TBox objects filled with these styles have the same fill style
  as [3010,3019] but use the object color instead of black.

- Modify TBranchObject constructor to always create a TLeafObject.

- Modify TBranch::Streamer to reinitialize global gBranch after reading
  all branches of a branch and before reading all leaves of a branch.
  With these modifications, one can call a member function of the top level
  object. For example in the $ROOTSYS/test/Event program, one can do:
      Root > T.Draw("event.GetNtrack()")
  where event is the name of the top level branch.

- Modify TGraph constructor to initialize the default values
  for the graph maximum and minimum in case the constructor is called
  with null x and y arrays. This case happens when a canvas containing
  a TGraph object is saved as a macro.

- In TTree::Branch and TLeaf::TLeaf implement changes to support
  static arrays data members in case of the top level object.
  This functionality was already implemented for TBranchclones only.

- Fix problem in TPadOpenGLView::MoveModelView.
  A TStopWatch was systematically created twice.

- Support for positive and negative tick marks size in class TGaxis.

- Fix a problem in TGraph::Streamer (thanks M.Woudstra).
  When a TGraph object was written to a file, the maximum/minimum
  for the Y scale were not correctly saved.

- Changes in TPad::CreateNewPave. When the corners of the pave
  are the same pixel, artificially make a pave with 10 pixels.

- Changes in TGaxis::Paint.
  Give possibility to specify a negative label offset.

- Fix a problem in TGraphErrors::Paint.
  In case of log scale and if the value of the error in Y was larger
  than Y itself, than the error bar was not drawn.

- Modify h2root to take into account a nasty case with Hbook.
  You had an Hbook error message when creating the file (too many records).
  Hbook file should have been created with a bigger LRECL.
  h2root will try to recover.

- Fix a problem in TNode::DistancetoPrimitive.
  In case one single node with no sons was drawn, it was not possible
  to rotate this node.

- Change maximum size of a local array (member name+value+title)
  in TObject::Dump from 250 to 350.

- Change definition of local variable nwh from char to unsigned char
  in TString::ReadBuffer. This removes a limitation to 127 chars
  for keys in a directory.
//________________________________________________________________________
//
//::>          VERSION  1.03/08   24/11/97 17.21.27
//
// 24/11/1997  16.48.50  by  Fons Rademakers
//
- Fixed the copy ctor and operator= for a number of classes
  (a.o. TObject, TNamed, TH1, TH2, TArray, TUrl, TInetAddres).

- Made copy ctor and operator= private for TCollection baseclass.

- Split the global operator new(size_t), operator(size_t,void*)
  and operator delete(void*) from the TStorage class. These three global
  operators are now in their own shared library libNew.so. You can
  now link your applications without the libNew.so to not have
  ROOT's memory checking new/delete. Note, however, that without
  ROOT's new/delete you will not be able to use the shared memory
  features of TMapFile. The distributed root executable module itself
  is always linked with libNew.so (source of the root main program
  is now included in the $ROOTSYS/include directory so you can relink
  your own root module without new/delete if desired).

- Introduction of TMatrix, TVector and utility classes. Physics specific
  vectors (TVector3, TVector4, TLorentzVector) will come in the next
  version. Also more linear algebra operations using TMatrix will come
  later. For a full description of the matrix classes see:
  http://root.cern.ch/root/html/TMatrix.html#TMatrix:description
  And for some test programs see $ROOTSYS/test/vmatrix.cxx and vvector.cxx.

- TTree::SetBranchStatus, fix in setting status for single attribute
  of object in a TClonesArray.

//
// 14/11/1997  10.30.35  by  Rene Brun
//

- Two new functions in TChain to merge Root files.
  TChain::Merge(const Text_t *name)
     Merge all files in this chain into a new file
  TChain::Merge(TFile *file, Int_t basketsize, Option_t *option)
     Merge all files in this chain into a new file
     if option ="C" is given, the compression level for all branches
        in the new Tree is set to the file compression level.
     By default, the compression level of all branches is the
     original compression level in the old Trees.
     if (basketsize > 1000, the basket size for all branches of the
     new Tree will be set to basketsize.

- Modify all header files of the geometry package to declare all
  destructors virtual.

- Protect TPad::Editor in case the corners of TPavexxx or TDiamond
  are identical.

- Fix a problem in TCanvas::Build. The pointer fContextMenu was not
  initialized in some cases.

- Implement new member function TPad::RedrawAxis.
  Redrawing axis may be necessary in case of superimposed histograms
  when one or more histograms have a fill color

- Add TVirtualPad::Divide. We had only TPad::Divide.
  With this change, one can do
      gPad->Divide(2,2)
  where gPad is a global always pointing to the current pad.

- Modify TDirectory::Browse to also browse objects (histograms) only
  defined in memory.

- Modify TObject::Inspect. Data member names and values are painted
  always in black color (to avoid problems with Netscape).

- Implement new function TBranchObject::UpdateAddress.
  This function is called by TTree::Fill when the Tree consists
  of one single super branch (a TBranchObject) and the object referenced
  by this branch is at a different address than in the previous fill.
  This situation happens when for example a new Event object
  is created and deleted inside the Event loop.
  TBranchObject has a new data member fOldObject.

- Modify class TTree and TBranchClones.
  Change calling sequence for TBranchClones constructor to be consistent
  with the other branch constructors.
  For all cases of branch, the address of the pointer is given.
  In the case of a ClonesArray, it was the pointer that was given.

- Fix a problem in TBranchClones in case a TTree contains more than
  one branch with a  TClonesArray referencing the same class.
  (many thanks to Andre Schungel).
  This change has also required a new function TLeaf::SetLeafCount.

- Implement new set of functions in TStyle to set/get the definition
  of line styles. This info is only used by PostScript currently.
  See TStyle::SetLineStyleString for more information.

- Protect TCanvas::MakeDefCanvas in case the default canvas
  already exists. If c1 exists, c1_1 will be created,
  If 5 canvases already exist, then c1_6 will be created,

- Rewrite TClonesArray destructor. Really deletes now all objects in
  the clonesarray.

- In TContextMenu::Execute, sets the current pad to the pad where
  the mouse was clicked before excution the action.

- Renormalize rootmarks
//
//________________________________________________________________________
//
//::>          VERSION  1.03/07   08/11/97 13.37.55
//
//
- Implement new member functions in TH1 class to return integral of bins:
    -- TH1::Integral()
          returns integral of all bins (work for 1-D, 2-D and 3-D histograms)
    -- TH1::Integral(Int_t binx1, Int_t binx2)
          for 1-D histograms, return integral in range [binx1,binx2].
    -- TH1::Integral(Int_t binx1, Int_t binx2, Int_t biny1, Int_t biny2)
          for 2-D histograms, return integral in range [binx1,binx2],[biny1,biny2].
    -- TH1::Integral(Int_t binx1, Int_t binx2, Int_t biny1, Int_t biny2, Int_t binz1, Int_t binz2)
          for 3-D histograms, return integral in range [binx1,binx2],[biny1,biny2],[binz1,binz2].[binx1,binx2].

- Implement TH1::Fill(Float_t x, Float_t y, Float_t z, Stat_t w).
  This function should be used instead of TH3x::Fill to fill
  a 3-D histogram.
  Modify TH1::Fill(Float_t x, Float_t y, Stat_t w) to automatically
  invoke the 3-D Fill function with a weight=1 in case of a 3-d
  histogram.

- First attempt to compile Root with gcc under AIX (thanks pasha Murat).
  Files $kumacs/globals and root_libs modified accordingly.
  Not yet tested.

- Fix a bug in TH1::ProjectionY (thanks Torsten Henkel)
  The projection along Y had NX bins instead of NY bins.

- In TLeafObject::FillBasket and TLeafObject::ReadBasket implement support
  for NULL pointers.
  In case a TBranchObject references a NULL pointer, FillBasket creates
  a Zombie object of the class. When ReadBasket reads an object, it checks
  if it is a Zombie object and delete it.

- Modify TGraph::PaintGraph. In case option "A" is specified,
  the pad range and axis are automatically updated. If a point has been modified
  and is outside the current range, the new range will be automatically
  computed. (thanks Reiner Rohlfs and Wolgang Korsch).

- Activate TGraph::SetOption. This function was dummy before.

- Protect TTree::SetBranchAddress in case of an invalid branch name
  and prints an error message.

- Protect class TWin32ListViewCrtl in case a class IsaFolder and
  there is nothing to browse.

- g2root implemented on Linux and AIX.
  (thanks to Laurent Aphecetche)

- Protection in THtml class (Fons). Problem reported by Jim White.

- Protect TTreeFormula::DefinedVariable in case of very long expressions.
  (Thanks to Patrice Lebrun for providing a test example).

- Implement two new functions in TMinuit class;
  TMinuit::SetMaxIterations(Int_t maxiter=500)
  Int_t TMinuit::GetMaxIterations();

- Modify TH1::Fit to call TMinuit::GetMaxIterations.
  In the previous implementation, the maximum number of iterations
  was hardwired in TH1::Fit with a value of 500.
  To modify this value, before a fit, do:
      gMinuit->SetMaxIterations(myMaxIter);

- Modify $TObjPtr.
  g++ under AIX requires function Compare to be declared inline
  despite the fact that it is really given as inline in the include.

- changes in TButton::ExecuteEvent. In case of WindowsNT, one must
  execute all the ButtonUp functions in the main Thread.

- Modify macro root_dll for WindowsNT.
  Creation of Root_Pythia.dll requires $PYTHIA/Pythia.lib.

- Modify macro MaheDistWindows.
  By default, do not export Pythia library.
  The library is renamed .tmp before making the tar file
  and again renamed .dll after tar.

- Fix a problem in TTree::Draw when drawing an array element.
  The new version forces reading of the branch count in this case.
  This modification implied a new function  GetValuepointer in
  all TLeaf classes.

- Fix a problem in TGaxis::Paint when drawing an axis for which the
  wmin,wmax values have no connection at all with the current pad range.
  (thanks to Reiner Rohlfs).

- Take into accounts non-persistent data members in split mode.
  A data member is declared persistent by default.
  To make a data member non-persistent, use the character "!"
  as the first character in the comment field of this member.

- Modify TBranchClones::TBranchClones to take into account
  objects in a TClonesArray having subobjects. For example
  a Track object could have two ThreeVector objects inside.
//________________________________________________________________________
//
//::>          VERSION  1.03/06   27/10/97 18.11.42
//
//
// 27/10/1997  18.00.26  by  Rene Brun
//
- TTree::Branch modified to enable the creation of a branch in case
  a data member is a static array of basic types.
  (Thanks to Gordon Watts for providing a simple test program).

- Implement TF2::GetRange with 6 return parameters.
  This function is called from TH1::Fit. With this new function
  one can now fit a 2-d or 3-d histogram with a range specified.

- Improvements in TCanvas::SaveSource. Take into account screen factor.

//
// 24/10/1997  16.46.55  by  Fons Rademakers
//
- New version of CINT from Masa Goto intoduced (version )

- Improvements in TClonesArray::ExapandCreate and TClonesArray::RemoveAt.

- Redone all TArrayX classes. They now inherit from a common TArray
  class. Since TArray does not inherit from TObject it contains a
  private interface to TBuffer (via the statics ReadArray() and
  WriteArray()) so we can now also save pointers to TArray objects,
  which was not possible before (only embedded arrays could be streamed).
  Also added a number of new methods for the array classes, like:
    - copy constructor
    - assignment operator
    - Adopt() method (allows array to adopt any existing primitive array
      without having to make a copy)
    - AddAt() like in TObjArray
    - At() line in TObjArray
    - operator[] like in TObjArray
  last three methods also perform range checking. For the rest the
  TArrayX classes are backward compatible (also for I/O).

- Rootcint understands a new option in the LinkDef.h. In case the
  class name is trailed by a ! rootcint will not generate the
  operator>>() method. This is necessary because the default generated
  method for non TObject derived classes is not correct (prints error
  message instead of reading object). Example:
   #pragma link C++ class TArray!;
   #pragma link C++ class TArrayC-!;

//________________________________________________________________________
//
//::>          VERSION  1.03/05   16/10/97 15.40.07
//
// 15/10/1997  17.28.10  by  Rene Brun
//
- Implement TGraphErrors::GetErrorX (in addition to GetErrorY).
  Fix a problem in TGraphErrors header. GetEX and GetEY were returning
  wrong values.

- In h2root, change default buffer size from 32000 to 8000 bytes
  when converting CWNs.

- New function TStyle::Browse. This gives the possibility to automatically
  set a style from the browser.

- new class TSystemDirectory (implemented by Christian Bormann, IKF Franckfurt).
  Changes in TSystemFile.
  Thanks to these changes, the current working directory can be browsed.

- Changes in TContextMenu to use TVirtualPad instead of TPad/TCanvas.
  With this change, using a contextmenu does not force linking
  with the graphics libraries.

- Protection added in TH1::PaintHist. The log of a variable was computed
  in case of non-log scale.

- Change in TBranch::Browse. In case different branches contain leaves
  with the same name, the browser was always drawing the first occurence found.

- Mods in TBranchClones::Streamer. The branch address is now computed
  when reading the branch definition from the file. Previous implementation
  assumed that the offset of data members with respect to the object pointer
  was identical on all machines.

- Mods in TBranchObject::SetAddress. The branch address is now recomputed
  Previous implementation assumed that the offset of data members with
  respect to the object pointer was identical on all machines.

- several changes in the TPythia and TMCParticle classes.

//
// 15/10/1997  17.28.10  by  Fons Rademakers
//
- several improvements in rootd. Ported to all supported systems.
  Rootd can also be configured for anonymous usage (like anonymous
  ftp). To setup rootd to accept anonymous logins do the following
  (while being logged in as root):

 - Add the following line to /etc/passwd:

   rootd:*:71:72:Anonymous rootd:/var/spool/rootd:/bin/false

   where you may modify the uid, gid (71, 72) and the home directory
   to suite your system.

 - Add the following line to /etc/group:

   rootd:*:72:rootd

   where the gid must match the gid in /etc/passwd.

 - Create the directories:

   mkdir /var/spool/rootd
   mkdir /var/spool/rootd/tmp
   chmod 777 /var/spool/rootd/tmp

   To make writeable directories for anonymous do, for example:

   mkdir /var/spool/rootd/pub
   chown rootd:rootd /var/spool/rootd/pub

 That's all.

 Several remarks:
  - you can login to an anonymous server either with the names
    "anonymous" or "rootd".
  - the passwd should be of type user@host.do.main. Only the @ is
    enforced for the time being.
  - in anonymous mode the top of the file tree is set to the rootd
    home directory, therefore only files below the home directory
    can be accessed.
  - anonymous mode only works when the server is started via inetd.

- new function TCint::Calc.
    Directly execute an executable statement (e.g. "func()", "3+5", etc.
    however not declarations, like "Int_t x;").

- New functions in TClonesArray (Compress, RemoveAt, Remove and Sort).
  An entry in a clonesarray can be removed and a garbage collection
  can be triggered via Compress.
  Similar functions in TObjArray.

- Modify macro globals and install_test.
  globals include uptodate compiler options for hpux/g++.
  install_test includes root/macros in the distribution kit.

- Changes in TMath. Hyperbolic functions now inline.
//________________________________________________________________________
//
//::>          VERSION  1.03/04   01/10/97 08.37.28
//
//
// 30/09/1997  18.16.10  by  Rene Brun
//
- Changes in the installation procedures.
  By default the patch EG (Event Generators interface) is compiled.
  The new patches VENUS and PYTHIA are compiled if the corresponding
  options are set before running the installation procedure.

- The patch Venus includes an interface to the Venus event generator.

- The patch Pythia includes an interface to the Pythia event generator.

- The shared libraries libEG.so, libEGVenus.so and libEGPythia.so
  are part of the distribution kit (except under AIX).

//
// 30/09/1997  17.48.23  by  Fons Rademakers
//
- TApplication: the macros specified as program arguments will
  only be executed the first time Run() is called. Second or
  more calls to Run() will not re-execute the start-up macros.

- TRint: raw terminal mode will only be set when calling Run()
  and not directly by the TRint ctor. Leaving Run() will unset
  raw mode. This allows easier embedding of ROOT eventloop.

- TCollection: the Remove() method now returns pointer to
  removed object or 0 when object was not found in collection.
  This allows easy detection if removed pointer was really in
  collection.

- TUnixSystem: fix bug in dispatching of Async timer event.

- TEnv: resource values surrounded by $() will be expanded to
  shell environment value. For example:
  Root.DynamicPath:    .:~/rootlibs:$(LD_LIBRARY_PATH)
  will be expanded to:
  Root.DynamicPath:    .:~/rootlibs:/user/rdm/root/lib:/usr/local/lib

- TMath: Sign() functions now behave like the Fortran intrinsic
  SIGN funtions.

//
// 29/09/1997  18.33.46  by  Rene Brun
//
- TStyle improvements.
  The following new functions are available in the TStyle class:
     - TStyle::SetFrameBorderMode
     - TStyle::SetCanvasBorderSize
     - TStyle::SetCanvasBorderMode
     - TStyle::SetPadBorderSize
     - TStyle::SetPadBorderMode
     - TStyle::SetPadBottomMargin
     - TStyle::SetPadTopMargin
     - TStyle::SetPadLeftMargin
     - TStyle::SetPadRightMargin

     - TStyle::SetTitleXOffset
     - TStyle::SetTitleXFont
     - TStyle::SetTitleXSize
     - TStyle::SetTitleYOffset
     - TStyle::SetTitleYFont
     - TStyle::SetTitleYSize

- Changes in class TROOT.
  By default, the ROOT constructor creates two styles:
    - "Default"
    - "Plain" with all fancy 3-d effects and colors removed.
  New styles can be created by invoking the TStyle constructor
  or by making a clone of an existing style. Example
     TStyle *mystyle = gStyle->Clone();
  this statement will create a clone/copy of the current style.
  If you intend to work all the time with a given style (eg,Plain), add
  the following statement in your rootlogon.C file:
      gROOT->SetStyle("Plain");

- New function TROOT::SetStyle(const char *stylename).
  This function looks for an already defined style named stylename
  and sets it as the current style.

- New function TROOT::ForceStyle(Bool_t force)
  If this function is called, then when reading objects from a file
  their attributes will be replaced by the corresponding ones in the
  current style.
  Note that object attributes are set in the object constructor or by
  calling functions such as:
     TAttLine::SetLineColor
     TAttFill::SetFillColor, etc..

- New function TCanvas::UseCurrentStyle and TPad::UseCurrentStyle.
  These two functions may be invoked from the command line or the
  canvas/pad context menu respectively.
  When invoking these functions, all objects in the canvas/pad will see
  their attributes replaced by the corresponding attributes in the
  current style.

- Changes in TGraph::DistancetoPrimitive (thanks Wolfgang Korsch).
  When a graph/grapherrors has an associated fitted function,
  DistancetoPrimitive gives preference to the function when the mouse
  is far from the graph points.


- New CINT 5.13/28 version introduced.

- Changes in rootcint in case a class contains several static arrays.
  The code generated for Streamer defines the loop index R__i outside
  the loop.

- Changes in getline.

- Protection in TMotifBrowser.

- Changes in TBranch, TBranchClones and TBasket.
  Remove unnecessary delete of TBaskets. New function TBasket::DropBaskets.

- Changes in $TPadOpenGLView. Change from protected to public
  some member functions.

- New function TClonesArray::Compress. This function compress entries
  in a clonesarray(it removes all entries with null pointers).
//
//________________________________________________________________________
//
//::>          VERSION  1.03/03   10/09/97 08.33.38
//
//
// 09/09/1997  16.47.04  by  Rene Brun
//
- Protection in Widgets/Iconbox. Remove code freeing pixmaps.
  Prior to this change, a TBrowser could not be deleted.

- Protect TPad::Draw in case fPixmapID = -1. This may happen when
  the DrawClone item is selected on a pad.

- In TContextMenu:: , the current pad is correctly restored before
  executing the action item.
  With this change, one can now DrawClone a pad.

- Introduce new Thread patch. Implementation by Victor Perevoztchikov.

- Improve output quality (mainly Postscript) when drawing error bars.
  (change size of BASEMARKER in TGraphErrors::paint).

- Many changes in patch META by Piotr Golonka. The Root dictionary
  includes additional info when special comments are given in the adta member
  or member functions.

- Allow leading and trailing blanks in TTree::Draw for the expressions
  to be processed, including the name of the user-defined histogram.

- Merge with Piotr Golonka's new version of context menu
  and dialog boxes.

- Implement a few changes in mmconfig, mmapsup and mvalloc
  (thanks Damir Buskulic) for the implementation under MkLinux.
//________________________________________________________________________
//
//::>          VERSION  1.03/02   03/09/97 19.16.09
//
//
// 03/09/1997  15.40.40  by  Fons Rademakers
//
- TNetFile fully implemented. Its functionality is as follows:

  A TNetFile is like a normal TFile except that it reads and writes
  its data via a rootd server (for more on the rootd daemon see the
  source files ROOTD_*.cxx). TNetFile file names are in standard URL
  format with protocol "root". The following are valid TNetFile URL's:

     root://hpsalo/files/aap.root
     root://hpbrun.cern.ch/root/hsimple.root
     root://pcna49a:5151/~na49/data/run821.root
     root://pcna49d.cern.ch:5050//v1/data/run810.root

  The only difference with the well known httpd URL's is that the root
  of the remote file tree is the user's home directory. Therefore an
  absolute pathname requires a // after the host or port specifier
  (see last example). Further the expansion of the standard shell
  characters, like ~, $, .., are handled as expected.
  TNetFile (actually TUrl) uses 432 as default port for rootd.

  Connecting to a rootd requires the remote user id and password.
  TNetFile allows three ways for you to provide your login:
    1) Setting it globally via the static functions:
           TNetFile::SetUser() and TNetFile::SetPasswd()
    2) Getting it from the ~/.netrc file (same file as used by ftp)
    3) Command line prompt
  The different methods will be tried in the order given above.
  On machines with AFS rootd will authenticate using AFS.

  The rootd daemon lives in the directory $ROOTSYS/bin. It can be
  started either via inetd or by hand from the command line (no need
  to be super user). For more info about rootd see the web page:
  http://root.cern.ch/root/NetFile.html.

- Rootd daemon now fully implemented. Its functionality is as follows:

  Root remote file server daemon.
  This small server is started either by inetd when a client requests
  a connection to a rootd server or by hand (i.e. from the command
  line). The rootd server works with the ROOT TNetFile class. It
  allows remote access to ROOT database files in either read or
  write mode. By default TNetFile assumes port 432 (which requires
  rootd to be started as root). To run rootd via inetd add the
  following line to /etc/services:

  rootd     432/tcp

  and to /etc/inetd.conf:

  rootd stream tcp nowait root /user/rdm/root/bin/rootd rootd -i

  Force inetd to reread its conf file with "kill -HUP <pid inetd>".
  You can also start rootd by hand running directly under your private
  account (no root system priviliges needed). For example to start
  rootd listening on port 5151 just type:

  rootd -p 5151

  Notice: no & is needed. Rootd will go in background by itself.

  Rootd arguments:
    -i                says we were started by inetd
    -p port#          specifies a different port to listen on
    -d level          level of debug info written to syslog
                      0 = no debug (default)
                      1 = minimum
                      2 = medium
                      3 = maximum

- TFile::Open() new static method. Depending on the file name it either
  returns a TFile, TNetFile or a TWebFile. In case a TNetFile url is
  given a local TFile will be returned in case the local hostname and
  the hostname in the url are the same. Typical usage:

     TFile *f1 = TFile::Open("local/file.root");
     TFIle *f2 = TFile::Open("root://pcna49a.cern.ch/data/file.root", "new");
     TFIle *f3 = TFile::Open("http://root.cern.ch/~rdm/root/hsimple.root");
//
// 02/09/1997  16.07.48  by  Rene Brun
//
- Protect TObject::Execute in case a canvas has not yet been created.

- Implement new options in TNode::SetVisibility. The following visibility
  options are provided:
     vis = 3  node is drawn and its sons are drawn
     vis = 2  node is not drawn but its sons are drawn
     vis = 1  (default) node is drawn
     vis = 0  node is not drawn
     vis = -1 node is not drawn. Its sons are not drawn
     vis = -2 node is drawn. Its sons are not drawn
     vis = -3 Only node leaves are drawn
     vis = -4 Node is not drawn. Its immediate sons are drawn
  The macro tutorials/na49visible has been modified accordingly.

- Macro tutorials/rootmarks modified to renormalize rootmarks to current
  results on an HP735. Root version number is printed.

- Improve TGraph::Fit. An algorithm has been introduced to make
  an estimation of the errors at point of a graph.

- New member functions TGraph::GetErrorY and TGraphErrors::GetErrorY.

- Fix a problem in TH1::PaintFrame when drawing with option "cont".
  (The TFrame object cannot be created in this case).
  This was producing a corrupted picture on Postscript.

- Implement TButton::Paint (calling TPad::Paint).
  With this change TButton objects can also be painted on Postscript.

- Modify installation procedure under Windows. The Root version number
  is now automatically generated in the MakeDist,etc files.

- Add new functions (CosH,SinH,TanH,AcosH,AsinH,AtanH) in class TMath. On Unix, these
  functions call the standard C functions. Code introduced for Windows.
//________________________________________________________________________
//
//::>          VERSION  1.03/01   22/08/97 12.48.47
//
//
// 22/08/1997  11.37.51  by  Rene Brun
//
- Fix a bug in TBranch::GetEvent (Thanks Valerio Filippini).
  One must call TBuffer::ResetMap for each event.

- Implement new function TTree::CloneTree(Int-t nevents).
  This function is useful to make a copy of an existing Tree
  with a subset of the original entries. If nevents=0, no events are copied.

- Implement functions TTree::Reset and corresponding TBranch::Reset.
  TTree::Reset resets all entries of an existing Tree.

- New function TPad::DrawFrame.
  This function us useful to draw an empty frame in a given range.
  It sets the pad range automatically from the limits given in the parameters.
  It draws the x and y axis.
  Example:
    gPad->DrawFrame(-2,0,10,1000)
   draws a new frame with x in range [-2,10] and y in range [0,1000]

- Optimisation of TF1::Paint in case of log x axis.
  In case of a log x axis, the intermediate histogram is created
  using variable bin size. The corresponding bin edges are computed
  by dividing log(x) in fNpx bins (fNpx can be set via TF1::SetNpx).
  This new algorithms solves the old problem of drawing functions
  with many decades along X (thanks to Thomas Kraemerkaempe for reporting).
  TF1::DistancetoPrimitive and TF1::ExecuteEvent works correctly
  for log axis.

- Changes in TH1::distancetoPrimitive and TH1::ExecuteEvent in case
  of log axis.

- Improvements in TDrawPanelHist::ExecuteEvent in case of log scales.

- Clean function TGraph::PaintGrapHist.
  Remove obsolete code corresponding to old optionZ.

- Protect TContextMenu::Execute in case the object currently in
  the context menu is deleted.

- Modify TGX11::SetColor.
  X11 colors are only initialized when they are effectively used.
  This should speed up the creation of the first Root canvas on
  some Unix systems.
  This function is not called anymore from TColor::SetRGB on Unix.

- Small fix in h2root. Swap (Int_t and UInt_t) cases.

- Modify TMotifCanvas and TWin32Canvas to clear the pad/canvas
  without clicking on the pad when the "Clear Pad" item is selected
  in the canvas "View" menu.

- CINT version 5.13.21 introduced.

- Generate all dictionaries. Slight format change in the G__ routines.

- New patch ROOTD (root daemon).

- new class TNetfile.

- Several changes in the PostScript class.
  TPostScript::Open uses now the information set by gStyle->SetPaperSize.
  The code previously in TPad::Print to recalculate the size of
  the Postscript paper in function of the canvas/pad size has been
  moved in TPostScript::Open.
  The EPS files also use correctly the info set by gStyle->SetPaperSize.

- TPolyline::Streamer and TPolyMarker::Streamer are now operational.
  (arrays of x and y points were not saved in the previous versions).

- Several changes in TCanvas::Streamer and TPad::Streamer.
  Thanks to these changes, one can now save a complete canvas in a Root file.
  TCanvas::Draw has been rewritten to take into account the case where
  a canvas object is read from a file and drawn. For example, the
  following sequence is now working:
    Root > TFile f("canvas.root","NEW");
    Root > c1.Write();  // current canvas c1 is saved on file canvas.root.
   then in a following session , when can do:
    Root > TFile f("canvas.root");
    Root > c1.Draw();
   You get the original canvas with all its attributes.

- New member function TVirtualPad::SaveAs.
  The implementation in TPad::SaveAs replaces the functions of TPad::Print.
  TPad::SaveAs supports the new option .root to save a canvas/pad
  in a root file.
  The functions TCanvas::Print (2 forms) have been deleted.
  TPad::Print is kept for backward compatibility and calls TPad::SaveAs.

- New menu option "SaveAs canvas.root" in the FILE menu.
  Changes in TMotifCanvas and TWin32Canvas.

- New member functions TObject::Clone and TObject::DrawClone.
  TObject::Clone makes a copy of an object via the Streamer functions
    eg:  TH1F *hnew = h->Clone();
  TObject::DrawClone makes a clone of an object and draws it.
  DrawClone can be accessed interactively via the object context menu
  to draw a copy of an object.

- Mods in TTree::MakeCode. The code generated in case a leave is a static array
  was not correct.
  Note that MakeCode still does not process correctly the case of branches
  with multiple leaves.
//
//________________________________________________________________________
//
//::>          VERSION  1.03/00   11/08/97 11.02.57
//

- Modify TH1::PaintFrame. Remove the TFrame object from the pad (if it exists).
  It may happen that one changes the DrawOption (via the contextmenu).
  In case the new draw option invokes a 3-d view (lego, surf), the previous
  TFrame object must be removed from the pad list.

- Change class TAxis. Add two new data members fFirst and fLast.
  These new members are used to store the current first and last bin
  to be used in the display.
  Previous version used the fUniqueID member from TObject to store
  the catenated info first+last with 16 bits each.
  This 16 bits introduced a limitation to a maximum of 32000 bins
  that can be displayed.
  TAxis::Streamer moved from G__Base to Axis.
  Cint_base modified to not generate TAxis::Streamer.

- Modify TGraph::PaintGraph to take into account minimum and maximum
  limits along y (set via fHistogram->SetMaximum).

- Clip errors for points outside the y range in TGraphErrors::Paint.

- Fix a problem in TF1::DistancetoPrimitive (thanks Andrew Sonnenscheim).
  Problem apparent only on Alpha/Unix caused by call to EvalPar without
  calling InitPar first.

- In TGraph::Fit, do not assume that xmin and xmax are the first
  and last point respectively. Min and max are correctly computed by looping
  on all data points. With this change, a TGraph object may contain
  unordered data points and be fitted (thanks S.G. Voropaev).

- Help reorganized. New sequence $HelpText and corresponding changes
  in all Motif classes where help is referenced.

- Optimize TGaxis::PaintAxis in case of Log axis.

- Take into account logz scale when drawing a 2-d histogram with option "col"
  Use a log axis to show the color scale.

- Changes in TH1::GetSumOfWeights to support 2-d and 3-d histograms.


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.