Releases notes for version 0.04

Releases notes for version 0.04

+DECK,V0_04.
*CMZ :  0.04/04 29/11/95  10.47.45  by  Rene Brun
*-- Author :    Rene Brun   08/11/95
//___________________________________________________________________________
*
//*::>          VERSION  0.04/04   29/11/95 10.47.45
*
//* 28/11/95  09.47.13  by  Rene Brun
*
- New directory Tutorials including all macros shown in the Web pages.

- New macro $KUMACS/tutorials to export all macros T=MAC.

- Mods in TRint::ProcessLine and cin_totext for special characters like |
  The OR symbol || can be used in selection expressions.

- Change TFormula::Analyze to start numbering parameters at 0 instead of 1.
  New possibilities demonstrated in tutorial macro fillrandom.mac.

- Change logic of TROOT::Reset. When a TDynamic is deleted, objects pointed
  by this dynamic may already have been deleted (in several pads for example).

- Mods in H1 to avoid drawing twice.

- THN::Draw copies the relevant attributes to its generated objects (1-D,
  2-D or 3-D). Option SAME operational.

- new member function TNode::SetLineColor.

- Protections introduced in several classes, in particular in the destructors
  to delete in the right order objects generated by THIS.
*
//* 27/11/95  18.49.39  by  Nenad Buncic
*
- New member function THtml::PackSignature. This will avoid multiple spaces
  in member function signature.

- Small bug fixed in THtml::Convert, thanks to Fons.
*
//* 24/11/95  14.42.15  by  Nenad Buncic
*
- Change in the calling secvence for the THtml::Class2Html member function.
  Parametar Char_t *filename removed.

- Instead of THtml::Make, from now we have a four different functions:
      - THtml::MakeAll ()
      - THtml::MakeClass (Char_t *className)
      - THtml::MakeIndex ()
      - THtml::MakeTree (Char_t *className)

- Added new data member - const Char_t *fHtmlOutputDir

- Improvements in the THtml::Make function. Aditional protection added.

- THtml::GetHtmlFileName takes care of source files availability and
  this implies that other users can use THtml::Make without any
  restrictions.
  By default all unrecognised classes will be set to point to the URL
  specified by an environment variable Root.Html.Root. So far, valid
  ROOT URL is:

      Root.Html.Root: http://root.cern.ch/root/html

- Thanks to Christian Bormann and Gunter Roland few bugs are fixed in
  the THtml class.

*
//* 23/11/95  08.35.22  by  Rene Brun
*
- Fix a problem in DICT in case data members are defined after
  member functions and the access mode changes to private or protected.

- Implement option same for 2-D and 3-D plots in THN::Draw.
  This function recognizes now the THN attributes when plotting polymarkers.
  Example:
    Root > hn.SetMarkerColor(1)
    Root > hn.Draw(x:y)
    Root > hn.SetMarkerColor(2)
    Root > hn.Draw(x:y,x*x+y*y<1,same)
    Root > hn.SetMarkerColor(4)
    Root > hn.Draw(x:y,x*x+y*y<0.5,same)

- Fix several problems in the destructors of TGeometry, TMaterial, TNode and TShape.
  Objects were not removed from the possible supporting lists.

- Protection in TList::FindLink in case one has to iterate over deleted objects.

- Introduce new TGlobal gHtml in TROOT constructor.
*
//* 22/11/95  16.42.31  by  Nenad Buncic
*
- Added global gHtml in $Html.
  gHtml is a dynamic created in TRint.

- THtml::WriteHtmlFooter supports user defined home page. Link must
  be defined in .rootrc file (see TEnv).

  Example:
     Root.Html.HomePage: http://hpna49-1.cern.ch/user/Clever
*
*
//* 22/11/95  09.02.58  by  Rene Brun
*
- Merge all TH1 files hfit, hmath, hpaint, htable with h1.

- Optimize the computation of errors for profile histograms in case
  the number of entries in one bin is 1 or the sum of weights in one bin
  is less than 1.

- Remove spurious backslashes in TClass::EscapeChars(Text_t *text).

*
//* 21/11/95  20.40.43  by  Fons Rademakers
*
- Added comments for all classes in CONT.

- Class TObjArray: AddLast() behaves as expected, adding object to last
  empty slot, not to last slot in array.
*
*
//* 21/11/95  17.53.51  by  Nenad Buncic
*
- Bug fixed in the member function THtml::Class2Html. Data member names
  containing a characters other than a valid C++ name characters (i.e
  fRmin[3] or **fDir), are treated correctly.

- Improvements in the THtml::ExpandKeywords member function. From now
  on arrays are recognized in the class data members. It means that if
  we have something like a fNames[i].Sizeof() there will be no problems
  any more. A HTML link will be set correctly.

- Solved problem with the 'ambiguous method' warrning.

//___________________________________________________________________________
*
//*::>          VERSION  0.04/03   21/11/95 09.38.00
*
//* 21/11/95  09.25.16  by  Nenad Buncic
*
- So far, THtml class have been described very shortly (in fact, not at all).
  Now, when work is almost done, here is the few words about class and usage.

 Configuration:
 -------------

   The output directory could be specified using the Root.Html.OutputDir
 environment variable (default value: "html/"). Also it is necessary to
 define Root.Html.SourceDir to point to directories containing .C and .h
 files (see: TEnv).

       Examples:
                Root.Html.OutputDir: html
                Root.Html.SourceDir: src:include:.:/usr/user/source


   During the conversion, THtml will look for the certain number of
 user defined strings, i.e. author's name, copyright note, etc.
 This could be defined with following environment variables:

       Root.Html.Author        (default: "//*-- Author :")
       Root.Html.LastUpdate    (default: "//*CMZ :")
       Root.Html.Copyright     (default: "// Copyright")



 Coding rules:
 ------------

   A class description block, which must be placed before the first
 member function, have a following form:

       //_____________________________________________________________
       // A description of the class starts with the line above, and
       // will take a place here !
       //

   The environment variable Root.Html.Description (see: TEnv) contents
 a delimiter string (default value: //_________________). Also a plain
 plain C++ comments are supported  (it means that delimiter line could
 be something like this //////////////////////////////// as well).

   Everything until the first non-commented line is considered as a
 valid class description block.



   A member function description block starts immediately after '{'
 and looks like this:

       void TWorld::HelloWorldFunc (Char_t *text)
       {
       // This will be a short description of the
       // TWorld member function

          helloWorld.Print(text);
       }

   Like in a class description block, everything until the first
 non-commented line is considered as a valid member function
 description block.



 Environment variables:
 ---------------------

   Root.Html.OutputDir     (default: "html/")
   Root.Html.SourceDir     (default: "src/")

   Root.Html.Author        (default: "//*-- Author :")
   Root.Html.LastUpdate    (default: "//*CMZ :")
   Root.Html.Copyright     (default: "// Copyright")
   Root.Html.Description   (default: "//____________________")



 Usage:
 -----

     Root> THtml html               // creates object 'html'
     Root> html.Make                // invoke make for all classes

           or

     Root> html.Make(TClass)        // create HTML files for that class only

           or

     Root> html.Make(index)         // creates index files only


*
//* 20/11/95  19.30.06  by  Fons Rademakers
*
- Added comments for all classes in BASE.

- Changed the first letter of all exported names of the getline file to
  uppercase. This to avoid conflicts with the version in packlib.

- Class TROOT: new resource defined: Root.ObjectStat. By default it is
  turned on and causes the TObjectTable to be filled. Setting
  Root.ObjectStat to false turns off the recording of objects in the
  object table.

- Class TSystem: changed UnLoad() to Unload().

- Class TUnixSystem: changed UnLoad() to Unload() and UnixDynUnLoad()
  to UnixDynUnload(). Don't automatically add .sl to names not ending
  in .sl. Only add .sl when there is no . in the name.

- New compile flag: NOSTATS. Setting NOSTATS on the compiler directive
  (CC -DNOSTATS -c ....) removes completely all memory checking and
  memory statistic gathering from TStorage and remove the TObjectTable
  call from the TObject ctor and dtor. This flag can also be set in $Rconfig.

- Class MBaseWindow: fix in Show() member. Shows now also iconified windows
  (i.e. pops the windows up).

- Clas TMenuWindow: added protection to not create a menubar twice when
  calling Show() again.
//___________________________________________________________________________
*
//*::>          VERSION  0.04/02   17/11/95 18.53.56
*
*
//* 17/11/95  18.53.56  by  Rene Brun
*
- TROOT::Reset(dynamic) is a new function to reset all dynamics
  starting (possibly excluding) dynamic itself.
  For example :
    Root > gROOT.Reset(wh)
    will reset all dynamics and objects pointed by dynamics created
    after the object named wh. If wh is teh name of a canvas, the canvas
    will be correctly closed.

- Update the TWbox and TNamed destructors to also reset any possible
  dynamic object pointing to the destructed object.

- Documented many classes (class description).
  See the wonderful list of classes on the Web.
*
//* 17/11/95  00.54.26  by  Fons Rademakers
*
- New class TGuiFactory: this is an ABC that provides a protocol for the
  concrete GUI factory classes. A GUI factory is an object that produces
  GUI components. The style (Motif, Mac, Windows) of components depends
  on the concrete factory class. Based on the Factory pattern.

- New class TMotifGuiFactory: this class creates Motif GUI components.

- New class TCanvasImp: ABC defining a GUI system independent canvas window.
  Based on the Bridge pattern.

- New class TMotifCanvas: concrete class inheriting from TCanvasImp.
  Creates Motif version of canvas window.

- New class TBrowserImp: ABC defining a GUI system independent browser window.

- New class TMotifBrowser: concrete class inheriting from TBrowserImp.
  Creates Motif version of browser window.

- Class TROOT: create a TMotifGuiFactory (or TMacGuiFactory).

- Class TCanvas: new members IsBatch() and SetBatch(). Test batch drawing
  mode and set batch mode. Introduced the IsBatch() test in a number of
  classes.

- Class TF1, TF2, TF3: introduced the typedef:
     typedef Double_t (TF1::*Function_t)(Double_t *,Double_t *);
  and changed a number of calling sequences to use Function_t as argument.

- Class TObject: introduced new system flag: kZombie. New member functions:
  MakeZombie() and IsZombie(). MakeZombie() can be used in ctor's in case
  the ctor failed in one way or another. E.g.: TFile f(bb.root), where
  bb.root does not exist. In this case f will be marked as a zombie object.
  Using IsZombie() one can test the state of the object and delete it when
  it is a zombie. Efficient exception handling should make this obsolete.

- Class TFile: in case the file to be opened does not exist the object
  is marked as a zombie object.
*
//* 15/11/95  12.29.26  by  Rene Brun
*
- Implement new member function TROOT::FindObjectClassName(name).
  This function scans all the lists of ROOT objects, including global variables
  and dynamics for an object with name name.
  If successfull, it returns the name of the corresponding class.
  This function is used by the THtml parser.

- Rename dynamic variables ROOT and GXW to gROOT and gGXW.

- Implement two new member functions in TClass:
  GetDataMember(name) returns a pointer to the data member object with name.
  GetBaseDataMember(name) returns a pointer to the class itself or one of
  its base classes containing data member name.

- Remove opening of file2.root in TRint::TRint
  Connect this file in your rintlogon.mac if you wish.
*
//*::>          VERSION  0.04/01   13/11/95 18.23.08
*
//* 13/11/95  18.22.17  by  Rene Brun
*
- Fix several problems in DICT.
    With a declaration like  TString  &String() { return fString; }
    Dict generated:
        *(TString*)gUI[0] =p.tp->&String();
    In the corrected version, it is:
        *(TString*)gUI[0] =p.tp->String();

    Missing argument names caused problems. Fixed

    A statement like    const Int_t fData;
    was not correctly parsed by dict/readh.
    The data type returned was const instead of Int_t.

    A member function declared with a void generated wrong code. Fixed

- Implement FillRandom for 1-D, 2-D and 3-D histograms. The new TH1::Fillrandom
  is totally rewritten. It is also faster. The new function invokes the
  new TH1::LocateBinary member function to perform a binary search of a value
  in a sorted array.

- TFormula has been documented with new diagrams generated by Nicolas.
  These diagrams appear when browsing on the WEB the functions Analyze, EvalPar
  and Compile.

- Instead of one function TFormula::Eval with two different signatures,
  a new function EvalPar has been implemented. As a consequence, Eval(x,y,z)
  may now be called with the missing parameters y and z.
  This change implied changes in the TH1, TF1, TF2 and THN classes.

- In TH1::HTable, change the normalization factor from 50 to 500 for the
  number of points generated in one cell of a scatter plot.
*
//* 13/11/95  15.45.32  by  Fons Rademakers
*
- New class TObjString: this is a simple class inheriting from TObject
  which contains a single TString. This allows strings to be added to
  containers.

- New class TMap: this class implements an associative array ((key,value)
  pairs) using a THashTable for efficient retrieval (therefore insertion
  order is not maintained). Both key and value must inherit from TObject.

- Class TBrowser: uses a TMap in TBrowserNode to keep an association between
  the object's name and the object itself.
*
//* 09/11/95  22.40.35  by  Rene Brun
*
- Insert comments in many classes (H, G and Minuit)

- Protect format in TH1::PaintStat in case of more than 1000000 entries.

- Small mods in TClass::Draw. Do not erase functions in second inheritance.
  Change text color from black to blue.
*
//* 08/11/95  18.39.36  by  Rene Brun
*
- Correct bug in TPostScript::Text.
  A comment finishing with a backslash was destroying the next line !!!!!

- Change in TPad::Clear. In case of PostScript issue a NewPage
  only when the currentpad is equal to the current canvas.
*
//*::>          VERSION  0.04/00   08/11/95 15.02.21
*
//* 08/11/95  08.07.14  by  Rene Brun
*
- Many small bug fixes:
  Drawing an histogram with 100 channels, only 99 channels shown.
  Problem in ROOT::GetType affecting the HTML class.
  PaveText OK again to ReadFile.

- Fix bug in TRint::ProcessLine. Remove trailing blanks in command line.

- Fix bug in TROOT::GetType(Text_t *name). If name="interface", then
  GetType was finding int as a valid type!

- Inconsistency in several functions to superimpose on top of the existing
  picture. One must use now the option SAME and not simply S.

- TH1::GetSum member function renamed to GetSumOfWeigths to avoid a clash
  with TArray::GetSum.

- New function TH1::Eval(TF1 *f1, Option_t *option).
  Eval computes the value of the function f1 at the center of the histogram bins.
  If option "A" is specified, Eval add the function value to the current
  bin content.

- Protections in several places when running in batch mode.

- Canvas virtual size fixed to 712x950 for batch (used by Html).

- Document nearly all histogram classes.

- Mods in TH1::Fit. By default when a bin has a null error, the error is assumed
  to be equal to the function value for that bin.

- Mods in TRint::AnalyzeLeft to authorize statements like
    THtml html
  as equivalent to:
    THtml html()

- Fix problem in program dict. Change Uint_t, Ushort_t, Ulong_t to
                                      UInt_t, UShort_t, ULong_t
  (thanks to Christian Bormann).

- Protected member functions are now kept by dict to generate the UI routines
  and the member functions definition.
*
//* 07/11/95  17.01.11  by  Fons Rademakers
*
- Class TClass: fixed bug in offset calculation for this in case of
  multiple inheritance.

- Class TObject: added abstract Browse() method.

- Class TROOT: added Browse() method. Added UpdateDisplay() method which
  updates all canvases and not only the current canvas.

- New class TBrowser: browse the ROOT system. First version, many things
  still missing.

- New patch WIDGETS: contains the Motif IconBox widget used by TBrowser.

- Class TCanvas: fixed a number of problems related to having two canvases
  open at the same time (event handling and drawing got mixed up between
  the different canvases).
*
//* 02/11/95  12.11.02  by  Rene Brun
*
- Fix a serious problem with PostScript.
  Implement new member function NewPage. NewPage is called by TPad::Clear.
  With this change, it is now possible to have several consecutive pictures
  on the same PostScript file.

- Implement New member function TClass::Draw.
  This new function draws the complete inheritance tree for a class,
  including multiple inheritance for the base classes.
  The list of data members and methods for each class is drawn.
  Overloaded functions are shown with a different color.

- Change dimensions in $READH to reduce the size of the DICT executable module.

- Minor changes in dict and drawtree.

- Include copyright notice in several decks.
*
//* 01/11/95  15.31.37  by  Nenad Buncic
*
-  Found & fixed bug in TView::ExecuteRotateView().

-  Changes in x3d. New include file 'X3DBuffer.h' which contains structures
for data exchange between ROOT and x3d. This makes changes in following
files:
             PolyLine3D.h, PolyMarker3D.h, Shape.h, x3d.h
             Pad.C, Node.C, H3.C

  Also, old put-object-in-center logic have been installed again. It seems
like a last change in this part.
*
//* 27/10/95  18.56.18  by  Fons Rademakers
*
- Class TApplication: new static member CreateApplication() that creates
  a gTheApplication if it does not yet exist.

- Class MBaseWindow: call TApplication::CreatApplication before trying to
  create a window. This ensures that a TApplication is active before
  opening the first Motif window.

- Class RWindow: window positioning arguments are now respected.
*
//* 27/10/95  00.12.49  by  Fons Rademakers
*
- $Color: moved EColor enum into $Gtypes.

- Class TMath: introduced Nint(). Nint() returns the nearest integer. When
  fraction is 0.5 it rounds to the nearest even number.

- Class TView: when moving on top of a TView show the rotation cursor.
  Set correctly color and linestyle for rotating cube.

- Class TH1 and TText: modified the move cursor in ExecuteEvent().

- Class GXW: return correctly the window geometry (based on the window
  and not the double buffer window, which may be larger).

- Class TRWindow: installed a resize action to track ConfigureNotify events
  on the scrolledwindow. When these events happens resize the canvas
  accordingly. Unless fAutoFit=kFALSE.
*
//* 25/10/95  12.01.24  by  Rene Brun
*
- New classes TH3 and TF3.
  TH3 is a 3-D histogram. It supports two constructors, one with fix bin sizes
  and the other with all axis with variable bin sizes.
  a TH3 object is filled with member function Fill3(x,y,z,w).
  TH3 has the derived classes TH3C,TH3S,TH3F,TH3D.
  All operations except graphics are supported on TH3 objects.
  The TF3 class is the 3-D formula implementation. It is used by TH3
  for fitting operations.

- Implement logic to draw axis titles.
  Mods in TGaxis::PaintAxis
  New member functions SetXTitle, SetYTitle and SetZTitle in TH1 class.
  Example:
    Root > h101.SetXTitle(GeV/C)
    Root > h101.SetYTitle("Number of events per GeV")
    Root > h200.SetXTitle(GeV/C)
    Root > h200.SetYTitle("Rapidity")
    Root > h200.SetZTitle("Number of events per GeV")

- New DECK,HMATH introduced in H directory.
  HMATH contains new member functions Add and Divide for the histogram classes.
  These member functions recompute the contents and the errors.
  If an histogram has an existing function, this function is ignored
  in the operation.
  In case of a division, it is recommended to invoke the existing function Sumw2
  before making the division if one wants to compute errors correctly.
  Example:
     h104.Sumw2
     h104.Divide(h101,h102)
  TH1::Add(TH1 *h1)   Add histogram h1 to this histogram
      this = this + h1
  TH1::Add(TH1 *h1, TH1 *h2, Float_t c1, Float_t c2)
     Replace contents of this histogram by the addition of h1 and h2
     this = c1*h1 + c2*h2
  TH1::Divide(TH1 *h1)   Divide this histogram by h1
     this = this/h1
  TH1::Divide(TH1 *h1, TH1 *h2, Float_t c1, Float_t c2, Option_t *option)
     Replace contents of this histogram by the division of h1 by h2*-*-*
     this = c1*h1/(c2*h2)
     If option B is given, binomial errors are computed.

- Additions in program DICT.
  So far if the class name was followed by the '+' character, then the I/O
  routines FillBuffer, ReadBuffer and Sizeof were automatically generated
  in the dictionary code.
  With the new version, if the + sign is followed by an additional string,
  this string will be appended to the ReadBuffer member function
  assuming a valid C++ line.
  This new feature is useful when additional actions are required after
  reading an object from a file. The string can be a call to a class member function.

- Add the possibility to pass a class pointer as an argument to member functions.
  This required several mods in RINT.

- Mods in classes DAtaMember, MethodArg, Root, Class and also in
  include files $CIN, $COUT, $SPRINTF to support the above change.

- New member function TROOT::ProcessLine(Text_t *command).
  This member function is a direct interface to the same function in TRint,
  but it copies the parameter command before invoking TRint::ProcessLine.

- Class ELLipse. Implemented DistancetoPrimitive.

- Many changes in class TPaveText.

- New version of UTILS/TOROOT (the Geant to ROOT conversion program)
*
//* 22/10/95  10.48.11  by  Fons Rademakers
*
- Class TClassTable: removed const from static member Next(). Static members,
  of course, can not be const since they have no associated object. HP CC
  did not complain. It was fatal for g++.

- $Rconfig: introduced sun case.

- Classes THelpPane, TRadioSubMenu and TSubMenu: ifdef's in case old Motif
  does not support tear-off menu's (old Motif 1.1 still found on new
  SunOS machines).

- Class TH1: another fix in ExecuteEvent(). When changing the bin value this
  could also trigger a pad range change. Therefore execute PaintInit() in
  ExecuteEvent() and Recalculate the range before redrawing the pad.

- Class TGXW: Set the window bit gravity to NorthWestGravity. This prevents
  X from clearing the bitmap incase it is resized. The default behaviour
  (of clearing the resized window) was causing a white flash in
  TObject::Inspect().

- Deck Getline: introduced a description for the new routines I introduced
  some time ago.

- Class TCanvas: fix in Resize(). Don't repaint and flush the canvas after
  a resize. This caused the many screen flashes in TObject::Inspect().
  The screen update after a canvas resize is now the duty of the caller
  of Resize().

- Class TWbox: fix in PaintFrame(). Set the FillStyle correctly (i.e.
  to solid) before drawing the frame.

- Class TLink: fixed ExecuteEvent() to track mousemotion events. On links
  the cursor becomes a pointing finger.
*
//* 21/10/95  16.38.08  by  Fons Rademakers
*
- Class TCanvas: fixed member Update(). Update now all modified pads, not
  only the currenlty selected one. This fixes the problem with the demos
  macro.

- Class TH1: fix in ExecuteEvent(). In case an axis has been dragged
  recalculate the pad range before doing any other pad painting. The pad
  range change might cause the system to create a new pad pixmap (due
  to small rounding errors) and in that case the already drawn pad background
  color would get lost. Also ExecuteEvent() now tracks mousemotion events
  and will change the cursor according to its position in the histogram:
  pointer on bins and double horizontal and vertical arrows on the y and x
  axes, respectively.

- Class TLine: fixed ExecuteEvent() to track mousemotion events. On the
  line end points the cursor will become a pointer and on the other parts
  of the line it will be a 4-way arrow indicating that the line can be moved.

- Class TText: fixed ExecuteEvent() to track mousemotion events and to
  correctly grab and drag text.




[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.