ROOT Version 2.21 Release Notes

//________________________________________________________________________
//
//::>          VERSION  2.21/08   18/03/99 21.49.29
//
//
// 17/03/1999  08.32.29  by  Rene Brun
//
- New CINT version 5.13.92 introduced.

- Makefiles for SGI configurations updated. Remove -DG__DECCXX from
  the list of compiler options.

- new makefile makeaixegcs to install Root with egcs1.1 under aix.
  Note that this makefile (thanks Richard Dubois & Donald Brenton)
  is not yet tested. This makefile requires a new utility provided
  in the distribution "makeSharedLib".

- A few fixes from Philippe Canal in the makefiles to install rootd,
  h2root, g2root. this is currently operational under SGI/KCC only.
  We will update all other makefiles later.

- The test program for the TMinuit class in test/minexam has been
  substantially rewritten to reflect the new interface routines
  introduced in TMinuit.

- Fix a problem in TMinuit::mnset preventing to call this function
  with the option "Show params". Thanks Christian Lacunza.

- Implement function TEventList::Sort. This function sorts an event list
  in increasing number of event ids.

- Change default parameters in the histogram functions generating
  projections of 2-d, 3-d histograms. Default is to make the projection
  including all bins with under/overflow bins.
  In the previous version, default was firstbin=0, lastbin=0 (this meant all bins).
  In the new version, default is firstbin=0, lastbin=9999.
  If lastbin is greater than the overflow bin number (nbins+1), lastbin
  is reset to be nbins=1.
  The new default allows to make a projection with firstbin=0 and lastbin=0, ie
  a projection of the undeflow bin. This was not possible with the previous default.
        TProfile    *ProfileX(const char *name="_pfx", Int_t firstybin=0, Int_t lastybin=9999, Option_t *option="");
        TProfile    *ProfileY(const char *name="_pfy", Int_t firstxbin=0, Int_t lastxbin=9999, Option_t *option="");
            TH1D    *ProjectionX(const char *name="_px", Int_t firstybin=0, Int_t lastybin=9999, Option_t *option="");
            TH1D    *ProjectionY(const char *name="_py", Int_t firstxbin=0, Int_t lastxbin=9999, Option_t *option="");
            TH1D    *ProjectionZ(const char *name="_pz", Int_t firstxbin=0, Int_t lastxbin=9999, Int_t firstybin=0, Int_t lastybin=9999, Option_t *option="");
  Thanks to Hans Dijkstra for the suggestion.

- Implement change suggested by Valery in THtml::CopyHtmlFile to support
  WindowsNT pathnames including special characters. This solves a problem
  reported by F.X.Gentit.
//
// 15/03/1999  18.28.12  by  Rene Brun
//
- in class TH1, static function H1InitGaus, set constraint for RMS
  to be positive.

- Changes in classes TTree, TBranchClones and TBranchObject to support
  branches with leaves having the same name.
  Support case of objects with different addresses at each Fill.
  In case a Tree branch is a TObject and split mode , one can force
  the specified branch name to preceed the object data member name
  by terminating the branch name with a "."
  For example, if one wants two branches in a TTree referencing
  two objects of the same class Track, one can do:
  Track *track1=0, *track2=0;
  T->Branch("track1.","Track",&track1,16000,1);
  T->Branch("track2.","Track",&track2,16000,1);

- new class TPaveStats, a specialized TPaveText to draw histogram statistics.
  Functions TH1::PaintStat and TH1::PaintStat2 modified to create a TPaveStats
  instead of a TPaveText.
  By clicking on the TPaveStats object, one can select the "stats" options.
  The current stats option can be saved in gStyle via the context menu
  item "SaveStyle".
  The new class is introduced in the HIST directory. Corresponding
  dictionary makers and makefiles have been modified.

- Change default level of optimisation in the makefiles from -g to -O

- Modify test program test/MainEvent.cxx. Instead of
       Event *event = 0;
  always create an Event object before setting the event address
       Event *event = new Event();
  The creation of this object is mandatory before setting the branch address
  in case this object has data members that are Root containers (TList,
  TObjArray, TClonesArray, TMap).

- Implement TH1::SetBins for 3-d histograms.

//
// 10/03/1999  19.36.02  by  Fons Rademakers
//
- TCanvas, TRootCanvas, TRootEmbeddedCanvas: fix pop-down of tooltips
  in case of multiple canvases (reported by Otto Schaille).

- TGMenu: removed harmless compiler warning.

- TMapFile: can now open in UPDATE mode and update objects in the file
  (thanks to Otto Schaille and Valeriy Onuchin). To do so, just open in
  update mode, Get() the object, play with it, and Update() the file.
  If the object is not an histogram that is automatically added to the
  current directory, you have to call Add() yourself after Get().
//
// 10/03/1999  09.05.14  by  Rene Brun
//
- Add new functions to class TMinuit. These functions are simpler interfaces
  to existing TMinuit functions. (Thanks Christian Lacunza)
     Int_t  Command(const char *command);
     Int_t  DefineParameter( Int_t parNo, const char *name, Double_t initVal, Double_t initErr, Double_t lowerLimit, Double_t upperLimit );
     Int_t  FixParameter( Int_t parNo );
     Int_t  GetParameter( Int_t parNo, Double_t& current_value, Double_t& current_error );
     Int_t  Migrad();
     Int_t  Release( Int_t parNo );
     Int_t  SetErrorDef( Double_t up );
     Int_t  SetPrintLevel( Int_t printLevel=0 );

//________________________________________________________________________
//
//::>          VERSION  2.21/07   08/03/99 13.26.00
//
//
// 08/03/1999  13.23.02  by  Rene Brun
//
- Add a call to TPostScript::Close in the TPostScript destructor.
  In TPostScript::Close protection against gCurrentPS = 0.

- Modify prototype for all TLeaf::Export. add a second argument Int_t n.

- Several improvements in the TTree/TBranch/TLeaf classes to speed up
  reading and writing time. With these improvements, up to a factor 2 gain
  when reading TTrees containing TClonesArray.
  TLeafI::Export and TLeafF::Export recoded to replace calls to memcpy
  by an internal loop.

- Important change in TBranch::GetBasket. Use a static TBuffer object
  instead of creating/deleting the buffer at each entry.
//
// 08/03/1999  12.53.56  by  Fons Rademakers
//
- rootcint: strip off correctly path name of header file when using
  an automatically generated LinkDef file. Now this works:
     rootcint -f dict.cxx -c ../include/myClass.h

- TMapFile: added Remove(const char*). Also when Add()ing an object
  with a name of an already existing object, the existing object will
  be deleted. Provided TMapRec::GetObject(). Be careful with this one
  and read the documentation.

- Exported TGFrameElement to dicitionary. It will now appear in the HTML doc.

- Fixed warnings in several tutorials for new CINT: use -> instead of .

- New CINT 5.13.90 18 Feb 1999
  * 1004, recursive G__process_cmd call in interpreted function bug fix
  * 1005, vector<const A*> a;  bug fix
  * 1006, A *p=A(); A *p=new int;  error report
  * 1007, while(x) sum+=; error detection
  * 1008, '.cover ' SEGV avoided
  * 1009, f(char const*) bug fix
  * 1010, G__defined_tagname
  * 1011, return A(x); return type mismatch error, bug fix
  * 1012, 986 fix,  class A{void f() {const int a=3;const int b=a;}};
  * 1013, . vs -> warning message
  * 1014, 2dt  error detection
  * 1015, G__linked_taginfo::tagnum
//
// 05/03/1999  17.22.00  by  Rene Brun
//
- Thanks to Markus Oldenburg for pointing out that the xwho service at
  cern has changed its address. So the default value of the fXwho variable
  in THtml should be changed to "http://consult.cern.ch/xwho/people?"

- Modify TPave::PaintPave to process the case fBorderSize = 1.
  (same problem as TWBox::paintFrame below).

- Modify TWBox::PaintFrame in the Postscript interface. the line width
  for the frame was not taking into account correctly the Wbox attribute.
  (thanks Scott Wakely).

- Protect TTree::Branch (case TBranchObject) in case of an invalid
  class name.

- Speed up TBranch::DropBaskets by using TObjArray::UncheckedAt
  instead of the operator [].

- Speed up TBranchClones::GetEvent by using TObjArray::UncheckedAt
  instead of the operator [].

- Modify $kumacs/aliascreate and globals to add
   -alias ccprof to compile with the gprof option.
//
// 04/03/1999  16.54.17  by  Rene Brun
//
- Implement new class TRandom2 derived from TRandom.
  TRandom2 has the same functionality than TRandom. It has
  a periodicity of 10**14 instead of 10**8 for TRandom.
  Two new functions are defined to set/get the current seed (two numbers).

- Add new makefile Makesgiegcs

- Add new makefile Makesgi64egcs (thanks Martin Weber)
//
// 03/03/1999  11.59.27  by  Rene Brun
//
- Protect TCanvas::DrawEventstatus.
  When  "Canvas.ShowEventStatus: true" in the .rootrc file, one get
  a segmentation violation as soon as one close a DrawPanel or FitPanel.
  In this case, the member fCanvasImp = 0 for the deleted canvas.
  (thanks Gerco Onderwater for reporting the problem).

- Implement new class TGraphAsymmErrors.
  Like TGraphErrors, this new class is derived from TGraph and supports
  asymmetric error bars in both X and Y.

- Take into account the number of fit parameters during the evaluation
  of the size of the TPaveText for "stats" in TH1::PaintStat.
  (thanks to Thomas Walter for the remark).
//
// 02/03/1999  19.01.41  by  Rene Brun
//
- Implement Sort functions in TMath;
   static void  Sort(Int_t n, Short_t *a,  Int_t *index, Bool_t down=kTRUE);
   static void  Sort(Int_t n, Int_t *a,    Int_t *index, Bool_t down=kTRUE);
   static void  Sort(Int_t n, Float_t *a,  Int_t *index, Bool_t down=kTRUE);
   static void  Sort(Int_t n, Double_t *a, Int_t *index, Bool_t down=kTRUE);

  Sort the n elements of the array a.
  In output the array index contains the indices of the sorted array.
  if down is false sort in increasing order (default is decreasing order)
   This is a translation of the CERNLIB routine sortzv (M101)
   based on the quicksort algorithm
  NOTE that the array index must be created with a length >= n
  before calling this function.

- Protect TMath::Atan2 in case 2nd argument = 0.
  TMath::ATan2 was already protected.
  TMath::Atan2 is a variant of TMath::ATan2 returning results in degrees
  instead of radians.

- Change TCanvas::Build to take into account log scale settings in TStyle.
  The log settings were OK in TPad.
  (thanks Damir Buskulic for reporting the anomaly).

- Move TF1::GetHistogram from include to implementation.
  If, when this function is called, fHistogram=0, the function forces
  a pad update.

- Change TGraph::GetHistogram to force a pad update in case GetHistogram
  is called in a macro before TGraph::paint has been called.

- Improve automatic error computation in TGraph::FitChisquare.
  In case the range in Y was very small, the automatic errors were
  not realistic. Also fix a problem in same function in the algorithm
  computing the graph boundaries.
  These two changes fix a problem on DEC/Alpha reported by Peter Wuerdemann.

- Modify GPAD/Helptext for the help to draw a polyline and a TCutG.

- In TF1::EvalPar protect case of a compiled function when the second
  argument params is not specified (thanks Federico Carminati).

- In TH1::PainTable, the 2-d Paint functions are called even when
  the number of entries is zero. Some users use directly functions
  such as TH1::SetCellContent and not the TH1::Fill functions.

- Fix a problem (thanks Philippe canal) in TH1::Divide and TH1::Multiply
  when computing the x value of the current bin/cell.
  Note that the 2-d statistics are not (yet) correctly processed
  by the TH1::Add, Divide and Multiply.

- Fix a problem introduced in the development version in TH2x::Reset
  and TH3x::Reset. For example TH2F::Reset must invoke TH1F::Reset
  instead of TH1::Reset. Thanks Cristoph Borgmeier for reporting.

- Merged with Valery's version.

- Implement a suggestion from Thierry Auger to automatically extend the
  arrays of errors in TGraphErrors::SetPointError. This has implied
  to overload TGraph::SetPoint in TGraphErrors::SetPoint to cope with
  all possible combinations where SetPoint is called before or after
  SetPointError.

- Implement suggestion from Philippe Canal in include DllImport.

//
// 28/02/1999  16.54.57  by  Valery Fine(fine@mail.cern.ch)
//
-  TBrowser::new data-member and Get/Set method to access the last selected
      object has been introduced
      WIN32BROWSERIMP,WIN32LISTVIEWCTRL,WIN32TREEVIEWCTRL have been adjusted
      to provide fLastSelected object properly under WIN32

-  G3D  -  special option "range" for all Paint() methods have been introduced to
           estimate the space the 3D object will occupy faster.
           See: TNode::Draw(Option_t *option) method:

             // *-*- Create a 3-D View
             TView *view = gPad->GetView();
             if (!view) {
                view = new TView(1);
                view->SetAutoRange(kTRUE);
                Paint("range");          // This is NEW, there was just Paint() here
                view->SetAutoRange(kFALSE);
             }
//
// 19/02/1999  20.14.28  by  Fons Rademakers
//
- TFile: removed redundant SysOpen() with two arguments.

- TMapFile: correct a cast of fhSemaphore for WIN#@.

- Tutorial h1draw.C: correct size of pave so text fits nicely.

- Make-macros: corrected TV2 and TV3 to TVector2 and TVector3.

- Makefile.solaris: added comment in case of 5.4 (default is for 5.6).
//________________________________________________________________________
//
//::>          VERSION  2.21/06   18/02/99 14.30.11
//
//
// 18/02/1999  09.10.07  by  Rene Brun
//
- Add new function void TH1::SetStats(Bool_t stats)
  to set the statistics box option on/off.
  By default, the statistics box is drawn.
  The paint options can be selected via gStyle->SetOptStats.
  This function sets/resets the kNoStats bin in the histogram object.
  It has priority over the Style option.
  (thanks Philippe Canal for the suggestion).

- Introduce option in TH1::Draw to draw/not draw the color scale
  when option "COL" is specified. Note this small backward incompatibility:
   option "COL" now does not draw the color scale
   option "COLZ" in addition draw the color scale.

- A few additional protections in test/Event and test/stress to avoid
  possible memory leaks.
  A new function Event::ResetHistogramPointer has been introduced
  to simply set to 0 the data member fH in Event.
  This function is called in a few places in the stress program before
  deleting the object event.

- minor correction in tutorial "file".

//
// 17/02/1999  18.41.19  by  Fons Rademakers
//
- TKey: fix in Read() to obtain correctly version of TKey.
  (thanks to Victor Perevoztchikov for reporting the problem).
//
// 15/02/1999  13.16.58  by  Rene Brun
//
- Add a protection in TTree::Branch (BranchClones case).
  In case of an invalid data type, an invalid branch address was used.

- Modify TText::ExecuteEvent when rotating the text with the mouse.
  Authorize only exact multiples of 1 degree. With this change, it is easier
  to select angles like 0, 90 or 180 degrees.

- WARNING. Class TDatime specs modified. TDatime::Set accepts time of the day
  in format hhmmss only. TDatime::Get always returns date in the format
  19990223 (February 23 1999) instead of 990223.
//
// 15/02/1999  12.21.23  by  Fons Rademakers
//
- TApplication and TRint: handle directories and ROOT files on the
  command line. When a directory is specified it is made the current
  working directory (if multiple directories are specified the latest
  one becomes the current working directory). ROOT files are attached
  to the session using the interpreter. The file will be accessable in
  the interpreter via its basename minus the .root extension. Examples:

     $ root $ROOTSYS/tutorials hsimple.root demos.C

  In this case ROOT will run in the $ROOTSYS/tutorials directory, connect
  the file hsimple.root (available as "TFile *hsimple" via the interpreter)
  and execute the script demos.C (both hsimple.root and demos.C are taken
  from $ROOTSYS/tutorials.

- TClonesArray: fix in the reading part of the Streamer(). Array was not
  correctly sized.

- Observed a memory leak in XCopyArea() on XFree86 3.3.x.x of +/- 90 bytes.
  Bug report has been submitted to xfree86.org. This leak shows up, a.o., in
  TCanvas::Update(). It is independent of the canvas size.

- TMapFile: put the TMapRec class definition in the TMapFile header so it
  can be used to loop over objects in the mapped file.

- TGFrame: provided a number of static functions to export protected class
  static variables. This is needed because WIN32 DLL's cannot export class
  statics. The WIN32 port of the GUI classes has begun!
//
// 15/02/1999  11.38.46  by  Rene Brun
//
- Introduce new classes in PHYSICS and EG initially developped by Pasha Murat.
  In PHYSICS:
    - new class TLorentzVector
    - new class TVector2
    - new class TVector3
   in EG:
    - new class TParticlePDG

- Mods in test/MainEvent, Event and stress to avoid a memory leak
  when reading the TTree in split mode.

- Delete reference to unused variables in:
  GUI_Gtext  (return kNpos)
  GPAD_TreeViewer (TCanvas *c1)
  BASE_System (variable lfname)

- class TGraph modified to use the new Clipping facility introduced
  in TPad when drawing a Polyline. The TGraph constructor sets the TGraph
  status bit kClipFrame on.

- Modify TPad::CreateNewPolyline to reset the kClipFrame bit when
  a normal polyline is created via the graphics editor.

- Function TPad::PaintPolyLine invokes TPad::PaintLine to take advantage
  of the Clipping algorithm.

- Function TPad::PaintLine modified to clip
  either at the pad boundary
  or     at the frame boundary.
  Clipping at the frame boundary is triggered when the pad object has its
  status bit kClipFrame set. Currently this bit is set only when painting
  a TGraph object.

- Merge with new Valery's version introducing a skeleton for the new GUI
  under NT.
//
// 12/02/1999  15.31.57  by  Rene Brun
//
- Mods in TGraphErrors constructor. Following a suggestion
  from Christian Lacunza, the arguments ex or ey can be null.
  in this case, the corresponding array of errors is preset to 0.

- a problem fixed in TPostScript::DrawPS in case of special fill patterns
  in the range 3010->3025. (thanks to Olivier Couet for help
  and to Peter Wiennemann for showing evidence of the problem).

- implement change in TGX11TTF::DrawRotatedText TGX11TTF::DrawText
  when calling the X11 function XCreateImage. this function was failing
  on X servers with a bit depth of 15 bits.
  (Thanks to Marcus Mendenhall for submitting the fix).
//
// 11/02/1999  19.01.27  by  Rene Brun
//
- TChain::Startviewer now operational.

- TEventList supported by TChain.

- Simplify code in functions TTUBS::MakeTableOfCoSin, TPCON, TTUBE, TSPHE.
//________________________________________________________________________
//
//::>          VERSION  2.21/05   10/02/99 15.58.38
//
//
// 10/02/1999  15.58.38  by  Rene Brun
//
- Several changes in class TMinuit to correct incorrect passing
  of string arguments. TMinuit::mncomd, TMinuit::mnexcm, TMinuit::mnset
  and TMinuit::mnhelp should be OK now.
  (thanks Christian Lacunza for reporting).

- Implement functions TH2C::Reset, TH2S::Reset, TH2F::Reset, TH2D::Reset
  and same for TH3. The Reset function invokes TH1::Reset and in addition
  resets the statistics specific to TH2 objects.
  (thanks to Marcus Mendelhall for reporting).

- Add some comments in TF1 constructors.

- Start to introduce changes in classes TChain and TTree to support
  the TTreeViewer and TEventList in TChains.

- Changes in g2root. Due to changes in recent versions of Zebra/RZ,
  the Zebra routine RZINK has been imported in g2root. With this change
  the baBar Geant3 geometry has been successfully converted to Root.

- introduce modification from Valery in TWinNTSystem::ExpandPathname.
//
// 09/02/1999  16.58.47  by  Fons Rademakers
//
- A number of small changes in different places for the port to FreeBSD.
  Thanks A.Yu.Isupov <isupov@moonhe.jinr.ru> for this work.

- TBox: any TBox or derivative (TPave, TPad, TButton, etc.) supports now
  tool tips (little boxes containing hints).

- TVirtualPad: implements interface for tool tips that can be called
  via any other class. This allows classes in front of the graphics barrier
  to call graphics objects.

- TRootCanvas: propagate kKeyPress events to TCanvas.

- TCanvas: HandleInput() now handles kKeyPress events and forwards them
  to the selected objects ExecuteEvent(). The event==kKeyPress and
  px==pressed char and py=0.
//
// 07/02/1999  17.16.19  by  Rene Brun
//
- Following the introduction of TCanvas::EnterLeave, a change had to be made
  in TCanvas::Clear. the members fSelected and fSelectedPad must be set to 0
  to avoid calling TCanvas::EnterLeave with an invalid pointer.

- Modify install_h2root macro under Linux to link with libf2c_minus.so
  instead of libf2c.so.

- Changes in g2root to circumvent the recursivity problem on some machines.
  A new routine node2 calling node is introduced.
  (thanks Chul Su Park for the suggestion).

- Optimize the computation of the text size in TPostScript::Text in case
  of vertical pads.

- Minor change in TPaveLabel and TPaveText in the algorithm computing
  the text size.

- Slight change of format in TH1::PaintStats when printing statistics.
//________________________________________________________________________
//
//::>          VERSION  2.21/04   05/02/99 19.28.38
//
//
// 05/02/1999  11.21.44  by  Fons Rademakers
//
- test/Makefile: added --no_exceptions for SGI / KCC.

- Buttons.h: added new events kMouseEnter and kMouseLeave.

- TCanvas: Added new member EnterLeave(). It is called in HandleInput() and
  calls ExecuteEvent() for the previous (kMouseLeave) and newly selected
  (kMouseEnter) objects. Also made the following functions const:
    virtual Float_t  PadtoX(Axis_t x) const;
    virtual Float_t  PadtoY(Axis_t y) const;
    Int_t            UtoAbsPixel(Float_t u) const;
    Int_t            VtoAbsPixel(Float_t v) const;
    Int_t            UtoPixel(Float_t u) const;
    Int_t            VtoPixel(Float_t v) const;
    Int_t            XtoAbsPixel(Axis_t x) const;
    Int_t            YtoAbsPixel(Axis_t y) const;
    Float_t          XtoPad(Axis_t x) const;
    Float_t          YtoPad(Axis_t y)  const;
    Int_t            XtoPixel(Axis_t x) const;
    Int_t            YtoPixel(Axis_t y) const;
    virtual void     XYtoAbsPixel(Axis_t x, Axis_t y, Int_t &xpixel, Int_t &ypixel) const;
    virtual void     XYtoPixel(Axis_t x, Axis_t y, Int_t &xpixel, Int_t &ypixel) const;
  updated also TVirtualPad and TPad equivalents. More getters should be made
  const in TPad and TCanvas. Later.

- TBox: made GetX1(), GetX2(), GetY1() and GetY2() const.

- TButton: check kMouseEnter and kMouseLeave. Will be later used to
  activate and deactivate tooltips.

- TGToolTip: new ctor that accepts now also a TPad and TBox, so tooltips
  can be bound to objects in a TCanvas.

- TString: fix in TString ctor and operator=() to correctly treat 0 pointer
  char* arguments.

- TString: removed conts for several members returning an object by value.
  Const makes no sense in such cases.
//
// 04/02/1999  15.45.09  by  Fons Rademakers
//
- AA_README: updated to mention how to install TTF fonts.

- AA_INSTALL: updated to mention to remove the include directory
  and make it a link to src.

- ROOTD: fix loop in RootdCloseTab(). Don't call ErrorFatal() in this
  routine because that causes a loop.
//
// 03/02/1999  12.22.03  by  Rene Brun
//
- mods in TCanvas::Build to use the style options grid and ticks.
  (thanks Scott Wakely for the remarks)

- mods in TH1::UseCurrentStyle to use the new TStyle functions.

- mods in TAttAxis::Reset to use TStyle::GetTitleSize

- Several changes in TStyle.
  Do not use the following functions:
     SetTitleXOffset(Float_t offset=1)  {SetTitleOffset(offset,"X");}
     SetTitleXSize(Float_t size=0.02)   {SetTitleSize(size,"X");}
     SetTitleYOffset(Float_t offset=1)  {SetTitleOffset(offset,"Y");}
     SetTitleYSize(Float_t size=0.02)   {SetTitleSize(size,"Y");}
  Instead use:
     SetTitleOffset(Float_t offset=1, Option_t *axis="X"); //set axis title offset
     SetTitleSize(Float_t size=0.02, Option_t *axis="X");  //set axis title size
  same for Get Functions.
  (thanks Stephen Bailey for the suggestions and remarks).

- Modify TTree::TakeAction And TTree::TakeEstimate to correctly fill
  2-D histograms with statistics.

- Add a protection against fMatrix=0 in TNode::DistancetoPrimitive.

- Merge with Valery's version. Valery made changes in
  TSystem, TUnixSystem, TWintNTSystem.
  Also updated TGeometry, TPolyLine3D and TNode.
//
// 03/02/1999  11.40.49  by  Fons Rademakers
//
- TGFrame: new member ChangeBackground() to make it easier to change the
  backgound color of a TGFrame. Search in $ROOTSYS/test/guitest.cxx for
  "green".

- TGTab: new members GetTabContainer(Int_t tabIndex) and
  GetTabTab(Int_t tanIndex). These return TGFrame derived objects that can
  then be manipulated. Search in $ROOTSYS/test/guitest.cxx for
  "yellow". Also tab text can be changed by calling
  GetTabTab(idx)->SetText(new TGString("bla")).

- TUnixSystem: removed ExpandFileName(), protected function now only in TSystem.
//
// 30/01/1999  18.06.06  by  Fons Rademakers
//
- TGeometry: reordered SetPosition() inline functions, need to be defined
  before being used (AIX4.3 complained).

- TUnixSystem: number of mods for port to AIX4.3.
//
// 29/01/1999  14.15.00  by  Fons Rademakers
//
- TMapFile: fix for linux ppc.

- Globals and makesgikcc: added option --no_exceptions for KCC.

- TDatime: applied fix by Victor Perevovchikov to be Y2K safe.
  Still to do: need to fix setting of time now we can not set time
  for hour 0!

- test/Makefile: fix for HP-UX egcs.
//
// 27/01/1999  10.05.18  by  Fons Rademakers
//
- Decks ROOTX, UnixSystem, $RConfig: Introduced Damir's mods for egcs
  and linux ppc.
//
// 26/01/1999  18.42.37  by  Fons Rademakers
//
- TGX11TTF: fix in SetTextSize() in case text angle is not 0.
  This error resulted in text to be draw microscopically small.

- New version of CINT (5.13.88 17 Jan 1999) by Masa introduced:
  5.13.88 17 Jan 1999
  990, unary + operator const int a(+1);
  991, for(i=0;i<10;i++){if(i){A a(6);}}  Object creation bug fix
  992, A *p(0); bug fix
  993, int a[2][3][4]; a a[0] a[0][0] eval pointer level bug fix
  817-2, class A{virtual void f() throw=0;};  bug fix throw=0 in ifunc.c
  994, int *p=(int*)new int;  bug fix
  995, operator@(A& a,int*& b) { } bug fix
//
// 25/01/1999  11.58.16  by  Fons Rademakers
//
- Test stress: cleanup temp files.

- Makefile for SGI/KCC: added -32 to compile and link flags.

- TUnixSystem: fixes for AIX 4.2.

- TUnixSystem: fix in ExpandPathName(). Don't prepend full pathname to
  local files.
//________________________________________________________________________
//
//::>          VERSION  2.21/03   22/01/99 16.29.37
//
//
// 22/01/1999  08.42.31  by  Rene Brun
//
- Apply changes proposed by Otto Schaille in TH1::Fit, TGraph::Fit
  to support fits with one or more fixed parameters.
  Otto also fixed a problem in TMinuit::mnline when calling the user
  function in case of a fixed parameter.
  Thanks to Otto for this important contribution.

- Small mods in TF2::Paint, TF2::SetContour and TF2::GetContourLevel.
  The new algorithm returns a correct contour level by default when
  no contours have been set.
  With this change, the tutorial "surfaces.C" works correctly again.

- Optimize the automatic computation of the text size in TPaveLabel::Paint.

- Cosmetic changes in tutorial "tree"
//
// 20/01/1999  18.10.44  by  Fons Rademakers
//
- Introduce new version of TUnixSystem::ExpandPathName from Victor Perevovchikov.

- TString: fix in ReadToken() and also operator>>(istream& str, TString& s)
  (which uses ReadToken()).
//
// 20/01/1999  17.20.46  by  Rene Brun
//
- Change a parameter in test program stress5.

- Introduce a change in TH1::Fit with Log LikeliHood technique
  to not reject bins with no entries.
  (Thanks to Thorsten Brandt and Roland Waldi).
//
// 20/01/1999  16.08.37  by  Fons Rademakers
//
- TRFIOFile: new class supporting I/O via the CERN rfiod daemon. To use
  RFIO (part of the CERN SHIFT software) open a file like:

     TFile *f = TFile::Open("rfio:/path/galice.root")

  where "/path/galice.root" is a symlink to a file of the type
  "/shift/.../.../galice.root" or:

     TFile *f = TFile::Open("rfio:server:/path/galice.root")

  where "server" is the machine running the rfiod. The returned
  object is a TRFIOFile which derives from TFile and has the
  same functional interface as a TFile.

  Note: the code for class TRFIOFile resides in the shared library
  libRFIO.so. This library is dynamically loaded by TFile::Open()
  when an "rfio:" file is specified. Do not link explicitely with this
  shared library!!! The library libRFIO.so is statically linked with
  libshift.a and will only be build via the make process if you define
  the shell variable RFIO to point to libshift.a, e.g.:

     export RFIO=~/shift-1.10.2.9/lib/libshift.a

- TFile: basic I/O goes now via the protected virtual functions:
  SysOpen(), SysClose(), SysWrite(), SysRead(), SysSeek(). The class
  TRFIOFile only overrides these basic I/O functions.

- New library libPhysics.so introduced. Currently it contains a
  dummy TLorentzVector class, but all placeholders for this lib
  have been added in the CMZ and make Makefiles.

- TInterpreter, TCint and TROOT: return Long_t instead of Int_t from
  method Calc() and TROOT::ProcessLineFast(). Return value is typically
  an address to an object.

- TUrl: recognize rfio: and hpss: as predefined protocols.

- TVector: don't export variable number of argument ctor to interpreter.

- New version of CINT (5.13.87 8 Jan 1999) by Masa introduced:
  5.13.85 19 Dec 1998
  971, 'namespace x{ class A{ A();}; A::A(){}}' ctor/dtor scope bug fixed
  972, friend template function improved (still not 100%)
  -  , Solaris(SunOS5.6) lib/posix,lib/socket fix,
  -  , predefined macro G__SUN,G__SUNPRO_C,G__SPARC added
  -  , 965 deactivated because of ROOT special symbol search problem
  973, 948, 969 still problem, Fixed again, ???
     , G__othermain, G__globalcomp exposed for libcint.dll
  974, store/restore bytecode param in G__loadfile
  975, 'if([enum val])' bug fix
  976, 'class A { A(nontype E) { } };' catch syntax error

  5.13.86 20 Dec 1998
  977, 'unsigned int a=0x80000000; a>>12;' bug fix
  978, 'enum x {a,b}; void f(x *y){} f(b);' bug fix
  -  , demo/tcpip, TCP/IP demo program added
  -  , demo/mthread, Multi-Thread demo program added
  979, iterator& operator=(iterator& x); scope bug fix
  980, basector, G__no_exec_compile bug fix

  5.13.87 8 Jan 1999
  981, Private dtor linkage in rootcint, bug fixed
  -  , 762 deactivated, seekg,seekp, need to verify portability
  982, reference member error message
  983, Txxx a = new Txxx; error rejected
  984, shl.c HPUX/egcs fix
  985, Double_t(1)/a bug fix
  986, f(){const int SIZE;static int a[SIZE];} bug fix, need verification
  987, f(){static int a[3]={1,2,3};} bytecode compile validation
  988, bytecode abort message
  989, f(int &,int a) { } byteocde POP bug fix
//________________________________________________________________________
//
//::>          VERSION  2.21/02   18/01/99 17.52.46
//
//
// 18/01/1999  11.07.10  by  Rene Brun
//
- Add new function TAxis::GetBinUpEdge.

- Delete option "B" (Bound) from TH1::Fit and TGraph::Fit.
  You can specify the limits on a parameter via TF1::SetParLimits.
  If (lower_limit >= upper_limit) the parameter is fixed.
  Note that you are not forced to fix the limits for all parameters.
  For example, if you fit a function with 6 parameters, you can do:
    func->SetParameters(0,3.1,1.e-6,0.1,-8,100);
    func->SetParLimits(4,-10,-4);
    func->SetParLimits(5, 1,1);
  With this setup, parameters 0->3 can vary freely
  Parameter 4 has boundaries [-10,-4] with initial value -8
  Parameter 5 is fixed to 100.

- Following a suggestion by Chris Jillings, modify the automatic
  generation of a new canvas name to avoid clashes with pad names
  obtained by dividing a canvas.
  The new scheme generates c1_n1 instead of c1_1 if c1 already exists.
  The change was in TCanvas::MakeDefCanvas.
//
// 17/01/1999  09.34.28  by  Rene Brun
//
- TF2::GetObjectInfo reports now correct position in case of a TF2 object
  drawn with the option "cont".

- TH1::GetObjectInfo reports now correct position in case of a TH2 object
  drawn with the option "cont".

- Implement non-equidistant contours in TH1::PaintContour.
  Changes in TH1::PaintContourLine prototype.
  Non-equidistant contours also available when painting a TF2.

- Add the following new functions to class TF2:
   Int_t    GetContour(Float_t *levels=0);
   Float_t  GetContourLevel(Int_t level);
   void     SetContour(Int_t nlevels=20, Float_t *levels=0);
   void     SetContourLevel(Int_t level, Float_t value);

   The previous data member fNlevels has been replaced by TArrayF fContour.

- Remove drawing of statistics box when painting a TF2.
//
// 16/01/1999  11.07.48  by  Rene Brun
//
- Modify TPad::SavePrimitive to use the new functions from TAttPad.
  With this change, the pad/frame attributes are now saved in the
  generated macro file.

- Add new functions in class  TAttPad:
     void SetFrameFillColor(Color_t color=1) {fFrameFillColor = color;}
     void SetFrameLineColor(Color_t color=1) {fFrameLineColor = color;}
     void SetFrameFillStyle(Style_t styl=0)  {fFrameFillStyle = styl;}
     void SetFrameLineStyle(Style_t styl=0)  {fFrameLineStyle = styl;}
     void SetFrameLineWidth(Width_t width=1) {fFrameLineWidth = width;}
     void SetFrameBorderSize(Width_t size=1) {fFrameBorderSize = size;}
     void SetFrameBorderMode(Int_t mode=1)   {fFrameBorderMode = mode;}
    + the corresponding Get functions.
    + the corresponding data members.

- Use the new functions from TStyle in the TPad constructor
  and also in TH1::PaintTitle and TH1::PaintStat.

- Extend functions in class TStyle. Add:
     void SetPadGridX(Bool_t gridx) {fPadGridX = gridx;}
     void SetPadGridY(Bool_t gridy) {fPadGridY = gridy;}
     void SetPadTickX(Int_t tickx)  {fPadTickX = tickx;}
     void SetPadTickY(Int_t ticky)  {fPadTickY = ticky;}
     void SetStatBorderSize(Width_t size=2) {fStatBorderSize=size;}
     void SetTitleBorderSize(Width_t size=2) {fTitleBorderSize=size;}
    + the corresponding Get functions.
    + the corresponding data members.

- Fix a problem in TF1::IntegralMultiple and in TF3::GetRandom3.
  In case of an interpreted user-defined function, the address of the arguments
   was not given to CINT. InitArgs must be called.
   (Thanks Stefan Kluth).
//________________________________________________________________________
//
//::>          VERSION  2.21/01   14/01/99 13.49.10
//
//
// 14/01/1999  14.21.56  by  Fons Rademakers
//
- TSocket, TUnixSystem, TWinNTSystem, TVmsSystem: improved error reporting
  on sockets. In the new version TSocket::Recv() returns either:

   0   -- peer has closed connection (SIGSEGV problem fixed)
  -1   -- general error
  -4   -- EWOULDBLOCK in case socket is in non-blocking mode and nothing to read

  and TSocket::Send() returns:

  -1   -- in case pipe is closed SIGPIPE signal is handled and -1 returned

- Tutorials file.C and na49view.C: adjusted size of some paves to contain
  correctly the text.
//
// 14/01/1999  12.49.16  by  Rene Brun
//
- Bug fixed in TH3F::Copy. This function was invoking TH3F::Copy instead
  of TH1F::Copy. (Thanks Alexander Zvyagin for reporting the problem)

- Several additional protections added in class THtml.
  The order of some ifs like if (a && b) changed to  if( b&& a).
//
// 12/01/1999  11.12.04  by  Fons Rademakers
//
- Port to HP-UX/egcs: changes in TUnixSystem and CINT_shl.c to force
  execution of ctors/dtors of global static objects when loading and
  unloading shared libraries. Small change also in H2ROOT since egcs
  on HP-UX also defines the symbol HIUX (for Hitachi HP-UX).

- Makefile for HP-UX/egcs.

- TFile/TDirectory: made copy ctor and assignment operators private,
  i.e. files and directories cannot be trivially copied.

- TList: optimization in At(). Thanks Victor P.
//
// 12/01/1999  10.03.24  by  Rene Brun
//
- Fix a problem in TMinuit::SetFCN when this function is called interactively.
  The 4th parameter to FCN IFLAG was incorrectely passed by reference
  instead of value. (thanks Stefan Kluth for reporting the problem)

- Modify test program minexam to be run in batch mode with the Makefile
  or interactively. See comments
//
// 12/01/1999  08.03.20  by  Valery Fine(fine@mail.cern.ch)
//
- Upgrade of classes TPolyLine3D and TPolyMarker3D.
  I am offering a correction for TPolyMarker3D, since my users were surprised
  that this class can not allocate points dynamically but TPolyLine3D can.
  So I did TPolyMarker3D allocating space dynamically as well (a'la TpolyLine3D).
  Mean time I found one bug with TPolyLine3D::SetNextPoint(...) and did some
  clean up as well.
  The only question. At the moment both classes expand the space by one point.
  May be it would be more clever to allocate some extra space in advance.
  (See:
      void TPolyMarker3D::SetPoint(Int_t n, Float_t x, Float_t y, Float_t z)
      void TPolyLine3D::SetPoint(Int_t n, Float_t x, Float_t y, Float_t z)
  )
//
// 11/01/1999  08.34.33  by  Rene Brun
//
- Implement new functions in class TF1,TF2,TF3 to support multiple integrals.
   TF2::Integral(Float_t xmin, Float_t xmax, Float_t ymin, Float_t ymax);
   TF3::Integral(Float_t xmin, Float_t xmax, Float_t ymin, Float_t ymax, Float_t zmin, Float_t zmax);
  These two new functions use the new function TF1::IntegralMultiple.
  TF2::GetRandom2 modified to invoke TF2::Integral instead of computing
  the function integral bin by bin.

- Change specifications of TH1::Fit and TGraph::Fit when
  the "B" (Bound) option is specified.
  When the Bound option is used, if parmin=parmax, the parameter is not bound
  When the Bound option is used, if parmin>parmax, the parameter is fixed.
  In the previous algorithm, when the Bound option was specified, the parameter
  was fixed if parmin >= parmax.
//
// 08/01/1999  17.50.42  by  Rene Brun
//
- Implement new function TH1::ProjectionZ (see comments in code).
   Thanks to original implementation by Paola Collins and Hans Dijkstra.
//
// 07/01/1999  14.48.00  by  Rene Brun
//
- Change algorithm in TGaxis::PaintAxis when drawing the x10 exponent
  on the X axis. (Thanks Julio Lozano)

- Delete a wrong comment from TEventList::Resize. (Thanks Damon Spayde)
//
// 06/01/1999  09.04.25  by  Rene Brun
//
- Change argument in TROOT:SetDefCanvasName from type Text_t to const Text_t.

- Add support for variable bin size histograms in h2root.
  Take into accounts leading and trailing blanks in column names.

- Fix a memory leak in TPythia constructor. fPrimaries was already
  allocated as a TObjArray in the base class TGenerator.
  (Thanks to Pasha Murat for reporting this problem).

- WARNING: IMPORTANT CHANGE
  =========================
  All TH1::Fill and TProfile::Fill functions have been changed
   from void  TH1::Fill
   to   Int_t TH1::Fill
  These functions return -1 in case of under/overflow and the bin
  number otherwise. This new feature is used in case of 2-d histograms
  to not fill the statistics parameters in case of under/overflows.
  As a result, TH1::GetCovariance, GetRMS, etc correctly return
  the parameters not taking into account the under/overflows.
  ===> IN CASE YOU DERIVE FROM TH1, UPDATE your Fill prototype.

- Changes in TH1::ProjectionX, TH1::ProjectionY, TH1::FitSlicesY, TH1::FitSlicesZ
  When generating the projected histogram, the errors in the source
  histogram are now taken into account (Thanks Hans Dijkstra).

//________________________________________________________________________
//
//::>          VERSION  2.21/00   04/01/99 07.57.27
//
//
// 03/01/1999  23.25.02  by  Valery Fine(fine@mail.cern.ch)
// G3D package has been changed:
//
    G3D system made more flexible:
    The goal was to separate TShape and TNode classes to be able
    to use TShape's classes without TNode's

    Methods: TNode::UpdateMatrix
             TNode::UpdateTempMatrix(...)
             TNode::Local2Master(Float_t *,Float_t *)
             TNode::Local2Master(Double_t *,Double_t *)

    were moved from TNode class to TGeometry class. Several new data-members
    were added to support these new methods as well.
    All TShape's DistancetoPrimitive(..) and Paint(...) methods were adjusted.

    New methods:
                TShape::SetPoints
                TShape::ShapeDistancetoPrimitive(...)
    have been implemented.

    G3D patch:
    The loop:
      for (Int_t i = 0; i < numpoints; i++)
             gNode->Local2Master(&points[3*i],&points[3*i]);
    was moved from all Paint() methods of these classes derived from TShape
    to TShape::ShapePaint() method directly.
//
// 22/12/1998 13.24.52  by  Rene Brun
//
- Changes in TPostScript::DrawPS when drawing fill areas with the special fill
  area interior styles in the range 3000->3100. This problem was reported
  a long time ago by Peter Wienemann.

- Modify THtml header to include TString required for the generation
  of the dictionary. (thanks Stefan Kluth).

- Modify TPaveLabel::PaintPavelabel. The font size was not correct when
  the canvas width was smaller than the canvas height.

- Modify TPave::ExecuteEvent to add new functionality.
  When the object bit kNameIsAction is set, double-clicking on a TPave
  object executes the action (via the interpreter) in TPave::GetName().
  This change has also required a change in TBox::ExecuteEvent.




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.