# Presentation: 826130

## ROOT Status

**BNL April 2000**
**René Brun/CERN**

## Project history

**Jan 95: Thinking/writing/rewriting/???**
**April 95: proposal to ****NA49**
**November 95: Public seminar, show Root 0.5**
**Spring 96: adopt ****CINT**
**Jan 97: Root version 1.0**
**Jan 98: Root version 2.0**
**Mar 99: Root version 2.21/08 (****FNAL workshop****)**
**Feb 00: Root version 2.23/12**** (****CERN workshop****)**
**Developing version 2.24 (today 2.24/02)**

- Alice Offline Meeting

- 6/5/99

## Slide 3

- Alice Offline Meeting

- 6/5/99

## Root abstract interfaces

**Following many comments received on ****modularity****, Root version 2.23 includes a new set of abstract interfaces and a reorganisation of the libraries structure. This has been possible without breaking too much backward compatibility.**
**The ****abstract interfaces**** have two functions:**
**Possibility for a user to redefine or extend a given implementation.**
**Minimize dependencies between classes and shared libraries.**

- Alice Offline Meeting

- 6/5/99

## Slide 5

- Alice Offline Meeting

- 6/5/99

## Lib reorganisation

**A major change (mainly internal) in version 2.23**
**Work to minimize ****libraries/classes dependency**
**The two are important**
**A lot of coupling because of ****dictionaries**
**Classes may be independent, but if they are in the same dictionary, you get an indirect coupling**
**Importance of **_**abstract interfaces**_** .**

- Alice Offline Meeting

- 6/5/99

## Root Libs structure

**Root libs are a layered structure**
**the ****CORE classes**** always required (support for ****RTTI****, ****basic I/O**** and ****interpreter****.**
**The ****application libraries****.   **_**Y**__**ou load only what you use**_**. Separation between ****Data Objects**** and the ****high level**** ****classes acting on these objects****. Example, a batch job uses only the ****Hist**** lib, no need to link ****HistPainter****.**

- Alice Offline Meeting

- 6/5/99

## Slide 8

- Alice Offline Meeting

- 6/5/99

## New graphics classes

**TGraphAssymErrors**
**TLatex**
**Axis titles, PaveLabels, PaveText use TLatex**
**TLegend, TLegendEntry**
**TCurlyArc****, ****TCurlyLine**** (Otto Schaile)**
**TAxis3D**** (Valery Fine)**

- Alice Offline Meeting

- 6/5/99

## TLatex

- TCurlyArc
- TCurlyLine
- TWavyLine

- Alice Offline Meeting

- 6/5/99

## TStyle

**New styles ****Bold**** and ****Video**** added to ****Plain**** & ****Default**
**New attributes**
**New color palette**

- Alice Offline Meeting

- 6/5/99

## Basic widgets

- Alice Offline Meeting

- 6/5/99

## GUI User example

- Alice Offline Meeting

- 6/5/99

## Graphical user Interface

- Alice Offline Meeting

- 6/5/99

## Slide 15

- Alice Offline Meeting

- 6/5/99

## TExec class

**TPad::AutoExec**
**Root > TCanvas c1("c1");**
**Root > c1.AddExec("ex1",".x exec1.C");**
**TExec::Draw**
**Root > TExec exec("ex2","DoSomething();")**
**Root > exec.Draw()**
**TH1::GetListOfFunctions()->Add(exec)**
**Nice to add graphics primitives depending on the histogram bin contents.**

- Alice Offline Meeting

- 6/5/99

## Development version 2.24

**2.23/12  is frozen since February**
**Stable. No major problems found so far**
**First dev version introduced this week**
**New TH2, TH3 inheritance from TH1**
**Secure rootd daemon**
**Extensions in the script compiler**
**More powerful rootcint**
**Byte-swapping optimisation on Linux**
**TMath:  new Bessel functions**
**TSpline classes (cubic, quintic)**

- Alice Offline Meeting

- 6/5/99

## TClassTree

**To draw classes inheritance tree**
**Automatic layout + Interactive editor**
**Options to show several relation types**
**Root >**** TClassTree ct("ct","*TH1")**

- Alice Offline Meeting

- 6/5/99

## Script Compiler

** ****Extensions to TSystem such that the following will nicely work:**
**root>**** .L stress.cxx**
**root>**** stress();              ****// will interpret**
**root>**** .L stress.cxx**
**root>**** stress();              ****// will interpret a new version**
**root>**** .L stress.cxx++**
**root>**** stress();              ****// will execute compiled code**
**root>**** .L stress.cxx++  ****// not recompiled if stress.cxx is not newer.**
**root>**** stress();              ****// will execute new compiled code**

- Alice Offline Meeting

- 6/5/99

## Secure rootd deamon

-  Rootd now supports secure authentication by using the SRP package
-   from Stanford (http://srp.stanford.edu/srp/).
-                        SRP, Secure Remote Passwords,
-   uses a so called "asymmetric key exchange protocol"
-     in which no passwords are ever send over the wire.
-   read about the main features of SRP look at:
-          http://jafar.stanford.edu/srp/advantages.html
-   Now when creating a TNetFile object via TFile::Open("root://....")
-   libSRPAuth.so will be loaded if it exits and the secure login
-   protocol will be used. Note that other rootd trafic is not encrypted.

- Alice Offline Meeting

- 6/5/99

## Improved byte-swapping on Linux

- Changes in include Bytes.h to support an optimized byte swapping code on Linux machines (thanks to Sasha Vanyashin ).
-   The Bytes.h uses asm macros from the #include <byteswap.h>
-   This is a part of the GNU C library: /usr/include/byteswap.h
-   and /usr/include/bits/byteswap.h.
-   Because the byteswap.h is missing on many Linux systems, a
-   copy of this include is provided in Byteswap.h

- Alice Offline Meeting

- 6/5/99

## Problems

**Windows/NT support in general**
**support for old TGWin32 classes becoming a problem**
**need full implementation of TVirtualX**
**FNAL work with Java could be a solution**
**Documentation in a poor status**
**Need more Howtos, examples**
**Good start with FNAL tutorials**

- Our intention to upgrade the documentation for the
- CERN School of Computing in Grece in September

- Alice Offline Meeting

- 6/5/99

## JAVA  and ROOT

**step1****: Transparent access to C++/Root services via web applets or JRE. (In development with FNAL)**
**step2****: Exchange of objects (data objects only) between C++, Java. Easy to do via the CINT RTTI. Could be very quickly implemented.**
**Step3****: Full Java integration. Implement C++ methods on the Java classes where it makes sense**

- Alice Offline Meeting

- 6/5/99

## ROOT users

- ATLAS      79
- ALICE      55
- PHENIX     49
- STAR       47
- CDF        46
- CMS        40
- BABAR      38
- JLAB       38
- D0         28
- NA49       28
- H1         24
- HERA-B     24
- LHCB       20
- L3         19
- PHOBOS     18
- HADES      17
- DELPHI     15
- WA98       13
- BELLE      11
- COMPASS    11

- KLOE        9
- ZEUS        9
- AMS         8
- OPAL        8
- AUGER       7
- MINOS       7
- AMANDA      6
- BRAHMS      6
- GLAST       6
- NOMAD       6
- LIGO        5
- ALEPH       5
- HERMES      5
- INTEGRAL    5
- ANTARES     4
- BES         4
- CELESTE     4
- CHORUS      4
- SLD         4
- VIRGO       4

- NA48        3
- CLEO        3
- NA50        3
- SNO         3
- FINUDA      2
- DIRAC       2
- ATIC        2
- BLAST       2
- COSMOS      2
- NA44        2
- NA45        2
- TAPS        2
- WASA        2
- ACCESS      1
- ASTER       1
- BAIKAL      1
- CHIMERA     1
- CHOOZ       1
- HEGRA       1
- ICARUS      1
- JLC         1
- NA47        1
- NSLS        1

**hep         917**
**scientific  264**
**commercial  129**
**private      67**
**all        1377**
**experiments  63**

- ROOT HEP Users
- in **roottalk**

- Alice Offline Meeting

- 6/5/99