overview & major developments1 root project status summary of major developments root workshop...

72
Overview & Major Developments 1 ROOT Project Status Summary of major developments ROOT Workshop 2004 SLAC 25 February René Brun CERN

Upload: chloe-griffith

Post on 20-Jan-2016

220 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Overview & Major Developments1 ROOT Project Status Summary of major developments ROOT Workshop 2004 SLAC 25 February Ren é Brun CERN

Overview & Major Developments 1

ROOT Project StatusSummary of major

developments

ROOT Workshop 2004 SLAC25 February

René Brun

CERN

Page 2: Overview & Major Developments1 ROOT Project Status Summary of major developments ROOT Workshop 2004 SLAC 25 February Ren é Brun CERN

ROOT2002 Rene Brun Overview & Major Developments 2

Project History Jan 95: Thinking/writing/rewriting/??? November 95: Public seminar, show Root 0.5 Spring 96: decision to use CINT Jan 97: Root version 1.0 Jan 98: Root version 2.0 Mar 99: Root version 2.21/08 (1st Root workshop FNAL) Feb 00: Root version 2.23/12 (2nd Root workshop CERN)

Mar 01: Root version 3.00/06 Jun 01: Root version 3.01/05 (3rd Root workshop FNAL) Jan 02: Root version 3.02/07 (LCG project starts: RTAGs) Oct 02: Root version 3.03/09 (4th Root workshop CERN) Dec 03: Root version 3.10/02 (last PRO release) Feb 04: Towards version 4.00 (5th Root workshop SLAC)

9 years !!

Page 3: Overview & Major Developments1 ROOT Project Status Summary of major developments ROOT Workshop 2004 SLAC 25 February Ren é Brun CERN

ROOT2002 Rene Brun Overview & Major Developments 3

Plan of talk

The ROOT Team Summary of developments in

3.04,3.05,3.10 Version 4.00 highlights Medium term and long term Relations with LCG/AA

Page 4: Overview & Major Developments1 ROOT Project Status Summary of major developments ROOT Workshop 2004 SLAC 25 February Ren é Brun CERN

ROOT2002 Rene Brun Overview & Major Developments 4

Today full time on the project

Ilka Antcheva (LCG staff) (since 1st Aug 2002) GUI/Doc Maarten Ballintijn (MIT/Phobos) PROOF (since Sep 2001) Rene Brun: PH/SFT group and Alice part time Philippe Canal (FNAL/CD) (since 1998) Olivier Couet CERN (since 1st Jun 2002) Graphics Gerri Ganis (LCG) (since Dec 2002) Authentication Andrei Gheata: (Alice) Geometry package (since Sep 2001) Masa Goto (Agilent technologies) CINT fulltime! Eddy Offermann (from Finance world. Sabatical for 1 year) Valeriy Onuchin (LCG) GUI/Win32gdk (since 1st Feb 2002) Fons Rademakers: Alice and PH/SFT group

Page 5: Overview & Major Developments1 ROOT Project Status Summary of major developments ROOT Workshop 2004 SLAC 25 February Ren é Brun CERN

ROOT2002 Rene Brun Overview & Major Developments 5

Also a substantial fraction of their time

Bertrand Bellenot (Alcan) Win32gdk (since June 2000) Valery Fine (BNL/STAR) TVirtualX/Qt + Coin3D Victor Perevoztchikov (BNL/STAR) STL, foreign classes

AND more than 70 important contributions from people spending a substantial fraction of their time on the project. See $ROOTSYS/README/CREDITS

Page 6: Overview & Major Developments1 ROOT Project Status Summary of major developments ROOT Workshop 2004 SLAC 25 February Ren é Brun CERN

ROOT2002 Rene Brun Overview & Major Developments 6

New Splash Screen

Appears 4sWhen executing root

To see the list of all contributors, select the HELP button in the browser

or canvas.The window auto scrollsUntil you click on it.

Page 7: Overview & Major Developments1 ROOT Project Status Summary of major developments ROOT Workshop 2004 SLAC 25 February Ren é Brun CERN

ROOT2002 Rene Brun Overview & Major Developments 7

CINT & Masa

Continuous and impressive list of developments by Masa (see his talk)

towards full C++ standard ? Still problems with object scope in loops

CINT is fundamental to ROOT ROOT puts many difficult requirements to CINT

Hook when object does not exist Hook when an object is deleted

Many thanks to Masa for 9 years of very fruitful collaboration and 12 years of work on CINT !

Page 8: Overview & Major Developments1 ROOT Project Status Summary of major developments ROOT Workshop 2004 SLAC 25 February Ren é Brun CERN

ROOT2002 Rene Brun Overview & Major Developments 8

Special thanks to:

FermiLab for supporting Philippe since many years. Philippe is a KEY developer

CERN/LCG for providing manpower for GUI, Windows support and Authentication.

BNL for supporting Valeri and Victor since many years (via Star->Atlas->Star).

BaBar for supporting the xrootd development

Our colleagues in LCG/AA and PH/SFT for stimulating discussions

Page 9: Overview & Major Developments1 ROOT Project Status Summary of major developments ROOT Workshop 2004 SLAC 25 February Ren é Brun CERN

ROOT2002 Rene Brun Overview & Major Developments 9

Roottalk

1323 in 19972515 in 19983004 in 19993567 in 20004686 in 20015370 in 2002 5393 in 2003 +1419 in Forum (August 2003->Feb 2004)

Mails to roottalk + mails to rootdev and root-bugs

PLEASE:

-Always indicate a mail subject

-Always indicate which version of ROOT and which OS

-Send a x.tar.gz file instead of many files in attachement

+ mails about-root-fnal

+ direct mails to team members

+ spam mail

Page 10: Overview & Major Developments1 ROOT Project Status Summary of major developments ROOT Workshop 2004 SLAC 25 February Ren é Brun CERN

ROOT2002 Rene Brun Overview & Major Developments 10

Short summary of main developments since ROOT2002

Dec 2002: version 3.04/07 Jun 2003: version 3.05/07 Dec 2003: version 3.10/02 Feb 2004: version 4.00/02 (released in June)

http://root.cern.ch/root/htmldoc/examples/Version30402.news.htmlhttp://root.cern.ch/root/htmldoc/examples/Version31002.news.htmlhttp://root.cern.ch/root/html/examples/V4.00.txt.html

We have implemented more than 80% of our plan announced at the previous workshop in October 2002. See:

ftp://root.cern.ch/root/R2002/future.pdf

We have implemented many new features not foreseenin Oct 2002

Page 11: Overview & Major Developments1 ROOT Project Status Summary of major developments ROOT Workshop 2004 SLAC 25 February Ren é Brun CERN

Overview & Major Developments 11

Summary of 3.04, 3.05 and 3.10

October 2002 ->December 2003

Page 12: Overview & Major Developments1 ROOT Project Status Summary of major developments ROOT Workshop 2004 SLAC 25 February Ren é Brun CERN

ROOT2002 Rene Brun Overview & Major Developments 12

ROOT Documentation

Page 13: Overview & Major Developments1 ROOT Project Status Summary of major developments ROOT Workshop 2004 SLAC 25 February Ren é Brun CERN

ROOT2002 Rene Brun Overview & Major Developments 13

New ports

Added port to IBM's xlC compiler under MacOS X, by Federico Carminati.

Port to Microsoft's VC++ 7.1. Port to Intel's icc v8.0. Port to RedHat 8.x, 9.x. Port to Fedora Core 1. Port to Cygwin gcc, by Axel Naumann. Port to AMD Opteron and Athlon64

Page 14: Overview & Major Developments1 ROOT Project Status Summary of major developments ROOT Workshop 2004 SLAC 25 February Ren é Brun CERN

ROOT2002 Rene Brun Overview & Major Developments 14

Plug-in Manager

Plugin.TFile: ^rfio: TRFIOFile RFIO "TRFIOFile(const char*,Option_t*,const char*,Int_t)"+Plugin.TFile: ^castor: TCastorFile RFIO "TCastorFile(const char*,Option_t*,const char*,Int_t,Int_t)"+Plugin.TFile: ^dcache: TDCacheFile DCache "TDCacheFile(const char*,Option_t*,const char*,Int_t)"+Plugin.TFile: ^chirp: TChirpFile Chirp "TChirpFile(const char*,Option_t*,const char*,Int_t)"Plugin.TSystem: ^rfio: TRFIOSystem RFIO "TRFIOSystem()"Plugin.TSQLServer: ^mysql: TMySQLServer MySQL "TMySQLServer(const char*,const char*,const char*)"+Plugin.TSQLServer: ^pgsql: TPgSQLServer PgSQL "TPgSQLServer(const char*,const char*,const char*)"+Plugin.TSQLServer: ^sapdb: TSapDBServer SapDB "TSapDBServer(const char*,const char*,const char*)"+Plugin.TSQLServer: ^oracle: TOracleServer Oracle "TOracleServer(const char*,const char*,const char*)"Plugin.TGrid: ^alien TAlien RAliEn "TAlien(const char*,const char*,const char*,const char*)"Plugin.TVirtualPad: * TPad Gpad "TPad()"Plugin.TVirtualHistPainter: * THistPainter HistPainter "THistPainter()"Plugin.TVirtualTreePlayer: * TTreePlayer TreePlayer "TTreePlayer()"Plugin.TVirtualTreeViewer: * TTreeViewer TreeViewer "TTreeViewer(const TTree*)"Plugin.TVirtualGeoPainter: * TGeoPainter GeomPainter "TGeoPainter()"Plugin.TVirtualUtil3D: * TUtil3D Graf3d "TUtil3D()"Plugin.TVirtualUtilHist: * TUtilHist Hist "TUtilHist()"Plugin.TVirtualUtilPad: * TUtilPad Gpad "TUtilPad()"Plugin.TVirtualFitter: Minuit TFitter Minuit "TFitter(Int_t)"+Plugin.TVirtualFitter: Fumili TFumili Fumili "TFumili(Int_t)"Plugin.TVirtualPS: ps TPostScript Postscript "TPostScript()"+Plugin.TVirtualPS: svg TSVG Postscript "TSVG()"Plugin.TViewerX3D: x11 TViewerX3D X3d "TViewerX3D(TVirtualPad*,Option_t*)” +Plugin.TViewerX3D: qt TQtViewerX3D QtX3d "TQtViewerX3D(TVirtualPad*,Option_t*)”

name class Shared lib How to call

Page 15: Overview & Major Developments1 ROOT Project Status Summary of major developments ROOT Workshop 2004 SLAC 25 February Ren é Brun CERN

ROOT2002 Rene Brun Overview & Major Developments 15

ACLIC

The '+' option now properly recreates the library when the script or one of the file it includes is newer than the shared library.

When asked to load a script (file.C) which has already been compiled (into file_C.so), ACLiC looks for a dependency file (file_C.d). If this dependency file is older than the library or does not exist, ACLiC generates a new dependency file using ROOT's rmkdepend tool and the list of -I and -D directives it knows about (see ACLiC description on how to set those).

Then ACLiC compare the time stamp of all the files listed in the dependency file and rebuild the library if any of them is newer than the library

Root > .x file.C++

Root > .x file.C+

Root > .x file.C++g

Page 16: Overview & Major Developments1 ROOT Project Status Summary of major developments ROOT Workshop 2004 SLAC 25 February Ren é Brun CERN

ROOT2002 Rene Brun Overview & Major Developments 16

Rootcint (see Philippe talk)

Many developments. Consolidation Digestion of STL collections Better support for templates Dictionary size: a problem ?

Page 17: Overview & Major Developments1 ROOT Project Status Summary of major developments ROOT Workshop 2004 SLAC 25 February Ren é Brun CERN

ROOT2002 Rene Brun Overview & Major Developments 17

ROOT Dictionary sizeIf all classes have a dictionary, the size of the dictionary may become a large fraction of the executable module!

Page 18: Overview & Major Developments1 ROOT Project Status Summary of major developments ROOT Workshop 2004 SLAC 25 February Ren é Brun CERN

ROOT2002 Rene Brun Overview & Major Developments 18

Full native support for 64 bit integers

Support on all platforms for 64 bits integers via the portable typedefs Long64_t and ULong64_t.

Long long on Unix _int64 with VC++ Big-endian, little-endian byte swapping

Many internal class tables moved to Long64_t Still more classes/functions to be converted

fEntries in TH1, TTree Replacememt of TTree::BuildIndex internal tables with an

array of ULong64_t TEventList ?

Page 19: Overview & Major Developments1 ROOT Project Status Summary of major developments ROOT Workshop 2004 SLAC 25 February Ren é Brun CERN

ROOT2002 Rene Brun Overview & Major Developments 19

Trees improvements

Huge number of improvements (see Philippe)

Support for split mode in more complex cases

Performance improvement Support for foreign classes as top

branches

#include “TObject.h”

Class MyClass : public TObject {

int i,j,k;

ClassDef(MyClass,1)

};

TTree T(“T”,”test foreign”)

MyClass *a = new MyClass;

T.Branch(“event”,”MyClass”,&a);Class MyClass {

int i,j,k;

};

Page 20: Overview & Major Developments1 ROOT Project Status Summary of major developments ROOT Workshop 2004 SLAC 25 February Ren é Brun CERN

ROOT2002 Rene Brun Overview & Major Developments 20

TTreeViewer Several layout improvement and changes.

New Refresh button.

Page 21: Overview & Major Developments1 ROOT Project Status Summary of major developments ROOT Workshop 2004 SLAC 25 February Ren é Brun CERN

ROOT2002 Rene Brun Overview & Major Developments 21

TSelector The TSelector class has been upgraded to improve

its general functionality and better support its use in PROOF. Specific changes:

- Introduction of a Version() function to provide backward compatibility for the old version and support future upgrades.

- Replace ProcessCut() and ProcessFill() with a single Process() function. Reduce the information that needs to be shared between functions. Promote a more granular access to data by reading branches as they are needed.

Add SlaveBegin() and SlaveTerminate(), in the case of PROOF these routines are called on the slave servers. The Begin() and Terminate() function now always run on the (local) client machine even when using PROOF.

Page 22: Overview & Major Developments1 ROOT Project Status Summary of major developments ROOT Workshop 2004 SLAC 25 February Ren é Brun CERN

ROOT2002 Rene Brun Overview & Major Developments 22

rootd

The rootd daemon uses the new authentication methods described in detail at: http://root.cern.ch/root/Auth.html

Client/Server Authentication Client/Server authentication for access to data on remote hosts (via the rootd daemon) or to a PROOF cluster has been deeply restructured..

See Gerri talk

Page 23: Overview & Major Developments1 ROOT Project Status Summary of major developments ROOT Workshop 2004 SLAC 25 February Ren é Brun CERN

ROOT2002 Rene Brun Overview & Major Developments 23

PROOF (see Maarten & Fons)

improved packetizer (work distributor). interface to AliEn grid system via the

TGridProof/TAlienProof classes. interface to Condor Computing on

Demand via TCondor class. - query progress dialog

introduced the Package Manager and Sandbox:

gProof->UploadPackage() gProof->EnablePackage() gProof->ClearPackage()

Page 24: Overview & Major Developments1 ROOT Project Status Summary of major developments ROOT Workshop 2004 SLAC 25 February Ren é Brun CERN

ROOT2002 Rene Brun Overview & Major Developments 24

Fitting/TMinuit/TFumili

void FitBench(Int_t npass=100) { TCanvas *c1 = new TCanvas("c1"); c1->Divide(1,2); fitFcn = new TF1("fitFcn",fitFunction,0,3,6); fitFcn->SetNpx(200); gStyle->SetOptFit(); gStyle->SetStatY(0.6); //with Minuit c1->cd(1); TVirtualFitter::SetDefaultFitter("Minuit"); DoFit(npass); //with Fumili c1->cd(2); TVirtualFitter::SetDefaultFitter("Fumili"); DoFit("Fumili",npass);}

Choose Fitter at run timeor via system.rootrc

Page 25: Overview & Major Developments1 ROOT Project Status Summary of major developments ROOT Workshop 2004 SLAC 25 February Ren é Brun CERN

ROOT2002 Rene Brun Overview & Major Developments 25

TSpectrum New improvements in the Spectrum classes by Miro Morach.

Page 26: Overview & Major Developments1 ROOT Project Status Summary of major developments ROOT Workshop 2004 SLAC 25 February Ren é Brun CERN

ROOT2002 Rene Brun Overview & Major Developments 26

TGraph2D This new class is a set of N points x[i],y[i],zi[i] in a

non uniform grid. Several visualization techniques are implemented, including Delaunay triangulation.

TCanvas c;

Double_t x, y, z, P = 6.;

Int_t np = 200;

TGraph2D dt;

TRandom r;

for (Int_t N=0; N<np; N++) {

x = 2*P*(r.Rndm(N))-P;

y = 2*P*(r.Rndm(N))-P;

z = (sin(x)/x)*(sin(y)/y)+0.2;

dt.SetPoint(N,x,y,z);

}

gStyle->SetPalette(1);

dt.Draw("surf1");

dt.Draw(“same p0”);

Page 27: Overview & Major Developments1 ROOT Project Status Summary of major developments ROOT Workshop 2004 SLAC 25 February Ren é Brun CERN

ROOT2002 Rene Brun Overview & Major Developments 27

TMultiLayerPerceptron package

(see Christophe Delaere talk) New MultiLayerPerceptron (mlp) package, by

Christophe Delaere. The package has 3 classes TMultiLayerPerceptron, TNeuron, TSynapse These classes describe a neural network. There are facilities to train the network and use the output.

The input layer is made of inactive neurons (returning the normalized input), hidden layers are made of sigmoids and output neurons are linear. The basic input is a TTree and two (training and test) TEventLists.

For classification jobs, a branch (maybe in a TFriend) must contain the expected output. 6 learning methods are available: kStochastic, kBatch, kSteepestDescent, kRibierePolak, kFletcherReeves and kBFGS. This implementation is *inspired* from the mlpfit package from J.Schwindling et al.

Page 28: Overview & Major Developments1 ROOT Project Status Summary of major developments ROOT Workshop 2004 SLAC 25 February Ren é Brun CERN

ROOT2002 Rene Brun Overview & Major Developments 28

New tutorials in $ROOTSYS/tutorial

graph2dfit.C: TGraph2D example. graph2derrorsfit.C: TGraph2DErrors example. markerwarning.C illustrating the danger of using asymmetric

markers. logscales.C illustrating the use of axis with log scales. triangles.C illustrating how to interact with closed polylines. multigraph.C illustrating the use of TMultiGraph. mlpHiggs.C illustring the use of the NN classes

TMultiLayerPerceptron, etc. bent.C illustrating the use of the new class TGraphBentError peaks.C illustrating how to use the peak finder (class TSpectrum)

associated with a complex minimization problem. TestAuth.C to test the ROOT Authentication methods. threads.C illustrating the use of the Thread classes. geoshapes.C illustrating the use of the TGeo shapes. timeonaxis2.C illustrating the basics of the time units on the

histogram axis.

Page 29: Overview & Major Developments1 ROOT Project Status Summary of major developments ROOT Workshop 2004 SLAC 25 February Ren é Brun CERN

ROOT2002 Rene Brun Overview & Major Developments 29

New tutorials in $ROOTSYS/tutorial

clonesA_Event.C illustrating complex situations of inheritance and multiple inheritance.

jets.C illustrating the use of a Tree using the JetEvent class. The JetEvent class has several collections (TClonesArray) and other collections (TRefArray ) referencing objects in the TClonesArrays.

tree2a.C with the same functionality than tree2.C but using a class instead of a C-struct.

copytree3.C showing how to copy selected entries to another Tree.

Page 30: Overview & Major Developments1 ROOT Project Status Summary of major developments ROOT Workshop 2004 SLAC 25 February Ren é Brun CERN

Overview & Major Developments 30

Version 4.00 hightlights

Page 31: Overview & Major Developments1 ROOT Project Status Summary of major developments ROOT Workshop 2004 SLAC 25 February Ren é Brun CERN

ROOT2002 Rene Brun Overview & Major Developments 31

ROOT version 4 Highlights (1)(already in 4.00/02)

Support for Automatic Schema evolution for foreign classes without using a class version number.Support for large files (> 2 GBytes)New data type Double32_t (double in memory, saved as float on the file)Native support for STL: automatic Streamers.

Tree split mode with STL vector/list New Linear Algebra package New class TRolke by Jan Conrad New class TGraph2DErrors. More features in

TGraph2D Consolidation of win32gdk. More features in the authentication system. Consolidation of the PROOF classes. GUI code generation

See Philippe

See Eddy

See Gerri

See Fons & Maarten

See Ilka

Page 32: Overview & Major Developments1 ROOT Project Status Summary of major developments ROOT Workshop 2004 SLAC 25 February Ren é Brun CERN

ROOT2002 Rene Brun Overview & Major Developments 32

ROOT version 4 Highlights (2)(will be in final release in

June) Plug-in Manager upgrade (rlimap) with automatic library/class

discovery/load. xrootd Virtual MC (G3, Fluka, G4?) Support for Qt (alternative option to x11) GUI builder PROOF/Alien in production Interface with Python (PyRoot with SEAL) Interface with Ruby (ruby-root) Geometry interface to OpenGL/Coin3D (V.Fine/STAR) MakeClass/MakeSelector upgrade. Support for Tree friends New GUI Histogram editor and Fitter

see BaBar talks

see Andrei Gheata /Alice

see Valeri Fine/STAR

see Ilka

see Fons

see Wim /Atlas/LBL

Page 33: Overview & Major Developments1 ROOT Project Status Summary of major developments ROOT Workshop 2004 SLAC 25 February Ren é Brun CERN

ROOT2002 Rene Brun Overview & Major Developments 33

Foreign classes checksum#include “Rtypes.h”

class MyClass {

int i,j,k;

ClassDef(MyClass,1)

};

....bytecountversion

ObjectN

bytecountversion

objectN+1....

class MyClass {

int i,j,k;

};

....Bytecount

0checksum

ObjectN

Bytecount0

checksum

objectN+1....

4 bytes

2 bytes

2 bytes

4 bytes

4 bytesbuffer

buffer

foreign class

Page 34: Overview & Major Developments1 ROOT Project Status Summary of major developments ROOT Workshop 2004 SLAC 25 February Ren é Brun CERN

ROOT2002 Rene Brun Overview & Major Developments 34

ClassDef advantages

The IsA function generated by ClassDef speeds up considerably the access to the TClass for a given object.

The version number (2 bytes maximum) consumes less space on disk than the “0+checksum”

Page 35: Overview & Major Developments1 ROOT Project Status Summary of major developments ROOT Workshop 2004 SLAC 25 February Ren é Brun CERN

ROOT2002 Rene Brun Overview & Major Developments 35

Support for large files By default, a TFile will grow above 2 GBytes

if necessary. A TTree will only go above 2 GBytes if

TTree::SetMaxTreeSize has been called. Below 2 GBytes, all pointers are 4 bytes.

Above 2 GBytes, they are 8 bytes. This saves some space when writing many small keys/baskets.

If a file is > 2GBytes, fSeekKey or fBasketSeek are always 8 bytes.

A file written with version 4 can be read by version 3 if the file size is < 2 GBytes.

Page 36: Overview & Major Developments1 ROOT Project Status Summary of major developments ROOT Workshop 2004 SLAC 25 February Ren é Brun CERN

ROOT2002 Rene Brun Overview & Major Developments 36

New Data type Double32_t A new data type Double32_t is defined in

Rtypes.h Same as Double_t in memory Same as Float_t on disk

The Automatic Schema evolution supports conversions from

Double32_t to Double_t and vice-versa Double32_t to Float_t and vice-versa Double32_t* to Double_t* and vice-versa Double32_t* to Float_t* and vice-versa

This new data type may save a non negligible space on disk.

However be careful with loss of precision when making write->read->write->read->write…

Page 37: Overview & Major Developments1 ROOT Project Status Summary of major developments ROOT Workshop 2004 SLAC 25 February Ren é Brun CERN

ROOT2002 Rene Brun Overview & Major Developments 37

New Graphics Editor1-ToggleEditor mode

2-ClickOn the object

to beedited

3-Edit object

attributes

Page 38: Overview & Major Developments1 ROOT Project Status Summary of major developments ROOT Workshop 2004 SLAC 25 February Ren é Brun CERN

ROOT2002 Rene Brun Overview & Major Developments 38

Gui Builder/Gui Code Generator

Type CRTL/S anywhere on a widgetTo generate the C++ code for this widget

Then doroot > .x guisave.C

Page 39: Overview & Major Developments1 ROOT Project Status Summary of major developments ROOT Workshop 2004 SLAC 25 February Ren é Brun CERN

ROOT2002 Rene Brun Overview & Major Developments 39

Virtual Monte Carlo VMC The VMC has considerably evolved in the past

two years.The VMC was designed to have A common input for the kinematics A common input for the geometry A common output for the hits (StepManager)

The original version was feeding the final target system (G3 or G4) via a common API.

In addition the new version has interfaces from G3 and Fluka to the Root geometry (G4 in plan)

In case of G3, one can run with the native G3 geometry or the ROOT geometry with no changes in the application. (See Andrei Gheata talk)

Page 40: Overview & Major Developments1 ROOT Project Status Summary of major developments ROOT Workshop 2004 SLAC 25 February Ren é Brun CERN

ROOT2002 Rene Brun Overview & Major Developments 40

Geometry classes TGeoxxx

Geometrypackage

Reconstructionprogram

Simulationprogram

Geant3-basedGeant4-basedFluka-based

C++classes

MySQL

Visualisation

Modelling

Visualisation

Interactivity

Where am I?

Distance to boundary

Closest boundary

Persistency

XML

Page 41: Overview & Major Developments1 ROOT Project Status Summary of major developments ROOT Workshop 2004 SLAC 25 February Ren é Brun CERN

ROOT2002 Rene Brun Overview & Major Developments 41

Geometry and Geometries

GeometryIn memory

XMLFiles

Eg, GDML

ROOTfile

C++ classesGeant3rz file

C++ classesC++ classes

G3

G4

Fluka

Recons

geometry

geometry

Page 42: Overview & Major Developments1 ROOT Project Status Summary of major developments ROOT Workshop 2004 SLAC 25 February Ren é Brun CERN

ROOT2002 Rene Brun Overview & Major Developments 42

Geometries: not the same goal !

XMLFiles

Eg, GDML

External description onlyUsed as input to a real geometry (G4, ROOT)

Checker , Viewer may be implementedRequires some data structure in memory

This has very limited functionality.Interesting (may be?) for input.

Too much emphasis on this solution

GeometryIn memory

(G3,G4,ROOT)

Simulation/Reconstruction orientedC++ API for the constructionInput can be via first solution

Checker, Viewer must be (are) implementedProvide interface to navigators

THIS IS THE MAIN HORSE TO BE OPTIMIZED

Page 43: Overview & Major Developments1 ROOT Project Status Summary of major developments ROOT Workshop 2004 SLAC 25 February Ren é Brun CERN

ROOT2002 Rene Brun Overview & Major Developments 43

New Linear Algebra classes

Eddy Offermann has kindly maintained the old TMatrix, TVector classes for a few years.

Eddy is now spending one year with us at CERN.He has developed a new set of classes with more functionality and better performance.

See Eddy’s talk on FridayTDecompBase TDecompChol TDecompLU TDecompQRHTDecompSVD TMatrix TMatrixD TMatrixDBaseTMatrixDCramerInv TMatrixDEigen TMatrixDLazy TMatrixDSymTMatrixDSymEigen TMatrixDUtils TMatrixF TMatrixFBaseTMatrixFCramerInv TMatrixFLazy TMatrixFSym TMatrixFUtilsTVector TVectorD TVectorF

Page 44: Overview & Major Developments1 ROOT Project Status Summary of major developments ROOT Workshop 2004 SLAC 25 February Ren é Brun CERN

ROOT2002 Rene Brun Overview & Major Developments 44

New Linear Algebra classes

Page 45: Overview & Major Developments1 ROOT Project Status Summary of major developments ROOT Workshop 2004 SLAC 25 February Ren é Brun CERN

ROOT2002 Rene Brun Overview & Major Developments 45

New class TRolke by Jan Conrad

This class computes confidence intervals for the rate of a Poisson in the presence of background and efficiency with a fully frequentist treatment of the uncertainties in the efficiency and background estimate using the profile likelihood method.

The signal is always assumed to be Poisson. It allows the following Models:

1: Background - Poisson, Efficiency - Binomial (cl,x,y,z,tau,m) 2: Background - Poisson, Efficiency - Gaussian

(cl,xd,y,em,tau,sde) 3: Background - Gaussian, Efficiency - Gaussian (cl,x,bm,em,sd) 4: Background - Poisson, Efficiency - known (cl,x,y,tau,e) 5: Background - Gaussian, Efficiency - known (cl,x,y,z,sdb,e) 6: Background - known, Efficiency - Binomial (cl,x,z,m,b) 7: Background - known, Efficiency - Gaussian (cl,x,em,sde,b)

See example in tutorial Rolke.C

Page 46: Overview & Major Developments1 ROOT Project Status Summary of major developments ROOT Workshop 2004 SLAC 25 February Ren é Brun CERN

ROOT2002 Rene Brun Overview & Major Developments 46

Plugin manager & rlimap An extension of the Plugin Manager and a new

tool rlimap are currently under development (now in CVS).

$ROOTSYS/bin rlimap is a new tool generating the list of classes for a shared lib

rlimap libxxx.so libXXX.map At run time, when CINT finds an unknown class, it

calls a new Root module that is able to find the shared lib containing the class by looking into all libXXX.map files in the LD_LIBRARY_PATH. Eg.

TLorentzVector v; will automatically trigger gSystem->Load(“libPhysics”);

gSystem->Load(libXXX”) can still be called

Page 47: Overview & Major Developments1 ROOT Project Status Summary of major developments ROOT Workshop 2004 SLAC 25 February Ren é Brun CERN

ROOT2002 Rene Brun Overview & Major Developments 47

Python/Root & Ruby/Root interfaces

We consider CINT + ACLIC to be the right combination for interactive data analysis

Having in addition an interface with other scripting languages is a bonus. We do not see these scripting languages to be an alternative to CINT/ACLIC, but an interesting complement. We are collaborating with:

LCG/AA for PyRoot (Pere Mato, Wim Lavrijsen) Juan Alcaraz for PythonRoot & RubyRoot Elias Athanasopoulos for ruby-root

It would be interesting to have a similar interface for PERL. See also JavaRoot

http://sarkar.home.cern.ch/sarkar/jroot/main.html

root > .x script.C

root > .x script.C+

root > gSystem->Load(“libClasses”)

Page 48: Overview & Major Developments1 ROOT Project Status Summary of major developments ROOT Workshop 2004 SLAC 25 February Ren é Brun CERN

ROOT2002 Rene Brun Overview & Major Developments 48

PyRoot

PyRoot (successor of RootPython by Pere Mato) is an automatic interface between Python and any class having a CINT dictionary.

It does not require code generation. We will distribute PyRoot as a sub-ROOT

component, once PyRoot is stable. See talk by Wim Lavrijsen

Page 49: Overview & Major Developments1 ROOT Project Status Summary of major developments ROOT Workshop 2004 SLAC 25 February Ren é Brun CERN

ROOT2002 Rene Brun Overview & Major Developments 49

PythonRoot

http://alcaraz.home.cern.ch/alcaraz/PythonRoot/

Page 50: Overview & Major Developments1 ROOT Project Status Summary of major developments ROOT Workshop 2004 SLAC 25 February Ren é Brun CERN

ROOT2002 Rene Brun Overview & Major Developments 50

RubyRoot

http://alcaraz.home.cern.ch/alcaraz/RubyRoot/

Page 51: Overview & Major Developments1 ROOT Project Status Summary of major developments ROOT Workshop 2004 SLAC 25 February Ren é Brun CERN

ROOT2002 Rene Brun Overview & Major Developments 51

Ruby-Root

Welcome to ruby-rootNews19/02/2004: ruby-root v0.0.1 is released! Added support for singleton methods. Download: ruby-root v0.0.1 11/02/2004: ruby-root v0.0.0-crowd is released! ruby-root is still at an early development stage. This release is meant only for getting feedback from users and not for serious development. You can download ruby-root: ruby-root v0.0.0 crowd Don't forget to read first the Installation Guide, as well as the User's Guide.

Elias Athanasopoulos (HEPA Lab,

University of Athens)

http://null.edunet.uoa.gr/~elathan/rr/

Page 52: Overview & Major Developments1 ROOT Project Status Summary of major developments ROOT Workshop 2004 SLAC 25 February Ren é Brun CERN

ROOT2002 Rene Brun Overview & Major Developments 52

ruby-root exampleroot ruby

Page 53: Overview & Major Developments1 ROOT Project Status Summary of major developments ROOT Workshop 2004 SLAC 25 February Ren é Brun CERN

Overview & Major Developments 53

Medium Term

Ideas for 4.01, 4.02..

Page 54: Overview & Major Developments1 ROOT Project Status Summary of major developments ROOT Workshop 2004 SLAC 25 February Ren é Brun CERN

ROOT2002 Rene Brun Overview & Major Developments 54

ROOT versions 4.01,…

Consolidation, consolidation, I/O: Remove limitations (eg rootcint) Improve performance Offset computation algorithm from Victor? TXMLFile/TXMLBuffer from Sergey Linev xrootd in operation

Page 55: Overview & Major Developments1 ROOT Project Status Summary of major developments ROOT Workshop 2004 SLAC 25 February Ren é Brun CERN

ROOT2002 Rene Brun Overview & Major Developments 55

ROOT versions 4.01,… Trees: Improve performance Extend query mechanism Support for TRefs and TRefArray

In case the referenced object is in another branch of the same Tree (friend Tree) or another file/Tree, TRef must be able to load the corresponding branch

Support tree.Draw(“myfunc.C(….)”) where myfunc uses Tree variables.

Add support for Bit Slice Index (see next slide) BuildIndex using ULong64_t MakeClass/MakeSelector upgrade

Many cases (Friend Trees) not supported

Page 56: Overview & Major Developments1 ROOT Project Status Summary of major developments ROOT Workshop 2004 SLAC 25 February Ren é Brun CERN

ROOT2002 Rene Brun Overview & Major Developments 56

Bitmap Indices(collaboration with Helmut Schmucker

LCG/AA)

Improvement of selection speed by a factor up to 5 on:

sparse multidimensional queries on large trees (eg catalogs). Interactive repetitive queries on large tuples (selection

optimisation)

Applicable on queries that can be written as logical combinations of comparisons between any TFormula expression and a constant:

eg. Sqrt(px**2+py**2)>23, but not px<py

The size of the index is of the same order of magnitude as the size of the indexed data attributes.

Further information and first performance results will be available at: http://schmucke.home.cern.ch/schmucke/IndexedTree/index.html

Page 57: Overview & Major Developments1 ROOT Project Status Summary of major developments ROOT Workshop 2004 SLAC 25 February Ren é Brun CERN

ROOT2002 Rene Brun Overview & Major Developments 57

ROOT versions 4.01,…

GUI Builder fully operational Improve widgets like

Histogram editor/rebin Histogram fitter

TGeo ->Coin3D/OI operational (& picking) New THtml (see Axel’s talk) Help using new THtml output +

libxxxx.map

Page 58: Overview & Major Developments1 ROOT Project Status Summary of major developments ROOT Workshop 2004 SLAC 25 February Ren é Brun CERN

ROOT2002 Rene Brun Overview & Major Developments 58

ROOT versions 4.01,…

VMC: Fluka fully operational (may be in 4.00?) hoping to get G4 into the picture

Geometry input from various sources gdml ->G4->gdml gdml->root->gdml

Page 59: Overview & Major Developments1 ROOT Project Status Summary of major developments ROOT Workshop 2004 SLAC 25 February Ren é Brun CERN

ROOT2002 Rene Brun Overview & Major Developments 59

The ARDA Project The purpose of this project is to coordinate the interaction of the

different projects and activities that are involved in the realisation of a distributed analysis system:

Grid middleware, generic in the sense that it does not have significant functionality that is of exclusive interest to high energy physics, or any other science.

HEP common tools and libraries that interact directly with the middleware or that are specific to distributed analysis and would benefit by being part of a distributed analysis project common to the LHC experiments. Examples are POOL, ROOT, PROOF, GANGA, GAE.

Teams within the LHC experiments that have been building distributed analysis systems using the applications environment of their experiment.

Users - early adopters of these distributed analysis systems providing feedback to applications and middleware developers to guide development priorities and direction.

Providers of computing resources (Regional Centres) that will take part in early

Page 60: Overview & Major Developments1 ROOT Project Status Summary of major developments ROOT Workshop 2004 SLAC 25 February Ren é Brun CERN

Overview & Major Developments 60

Collaboration with LCG/AA

Page 61: Overview & Major Developments1 ROOT Project Status Summary of major developments ROOT Workshop 2004 SLAC 25 February Ren é Brun CERN

ROOT2002 Rene Brun Overview & Major Developments 61

Applications Area Organisation

Applicationsmanager

Architectsforum

Applicationsarea

meeting

Simulationproject

PIproject

SEALproject

POOLproject

SPIproject

decisionsstrategy

consultation

ROOTUser - provider

We are currently discussing with our colleagues in LCG/AA to see if a convergence on key items is possible in the medium & long term.With SEAL a possible cooperation is envisaged for - a common Dictionary approach - the design/implementation of a MATHLIB

Page 62: Overview & Major Developments1 ROOT Project Status Summary of major developments ROOT Workshop 2004 SLAC 25 February Ren é Brun CERN

ROOT2002 Rene Brun Overview & Major Developments 62Technology dependent

.h.h

ROOTCINTROOTCINT

CINT dictionary codeCINT dictionary code

DictionaryGeneration

CIN

T

dic

tio

nar

yC

INT

d

icti

on

ary

I/O I/O

Data I/O

SEAL Dictionary: Reminder

GCC-XMLGCC-XML

LCG dictionary codeLCG dictionary code

.xml.xml

Code GeneratorCode Generator

LC

Gd

icti

on

ary

LC

Gd

icti

on

ary

Gat

eway

Gat

eway

Reflection

Oth

er

Cli

en

tsO

the

r C

lie

nts

Page 63: Overview & Major Developments1 ROOT Project Status Summary of major developments ROOT Workshop 2004 SLAC 25 February Ren é Brun CERN

ROOT2002 Rene Brun Overview & Major Developments 63

Dictionaries : root only

X.hCINT

DS

rootcintXDictcint.cxx

CINT

API

ROOT

Root meta C++

CINT

Page 64: Overview & Major Developments1 ROOT Project Status Summary of major developments ROOT Workshop 2004 SLAC 25 February Ren é Brun CERN

ROOT2002 Rene Brun Overview & Major Developments 64

Dictionaries : situation today

X.h

X.xml

XDictlcg.cxx

LCGDICTDS

CINTDS

rootcint

lcgdict

gccxml

XDictcint.cxx

CINT

API

LCG

API

POOL

ROOT

Root meta C++

CINT

Page 65: Overview & Major Developments1 ROOT Project Status Summary of major developments ROOT Workshop 2004 SLAC 25 February Ren é Brun CERN

ROOT2002 Rene Brun Overview & Major Developments 65

Dictionaries : step 1 gain space

X.h

X.xml

XDictlcg.cxx

LCGDICT DS C++

CINTDS

rootcint

lcgdict

gccxml

XDictcint.cxx

CINT

API

LCG2

API

POOL

ROOT

Root meta C++

CINT

Page 66: Overview & Major Developments1 ROOT Project Status Summary of major developments ROOT Workshop 2004 SLAC 25 February Ren é Brun CERN

ROOT2002 Rene Brun Overview & Major Developments 66

Dictionaries : step 2 simplification

X.h

meta DS C++

CINTDS

rootcintXDictcint.cxx

CINT

API

LCG

ROOT

APIPOOL

ROOT

CINT

Page 67: Overview & Major Developments1 ROOT Project Status Summary of major developments ROOT Workshop 2004 SLAC 25 February Ren é Brun CERN

ROOT2002 Rene Brun Overview & Major Developments 67

Dictionaries : step 3 coherency

X.h

meta DS C++

CINTDS

XDict.cxx

CINT

API

LCG

ROOT

APIPOOL

ROOT

CINT

gccxml

rootcint

Page 68: Overview & Major Developments1 ROOT Project Status Summary of major developments ROOT Workshop 2004 SLAC 25 February Ren é Brun CERN

ROOT2002 Rene Brun Overview & Major Developments 68

Mathlibs proposals

A: SEAL proposal: Install GSL, collaborate with the GSL team.

B: Rene/Eddy proposal: see ftp://root.cern.ch/root/mathlib.pdf

C: New SEAL proposal: see next slides

October 2003

November 2003

February 2004

Page 69: Overview & Major Developments1 ROOT Project Status Summary of major developments ROOT Workshop 2004 SLAC 25 February Ren é Brun CERN

ROOT2002 Rene Brun Overview & Major Developments 69

Mathlib Proposal BlibGSL++.so

Contains full standard GSL+ CINT dictionary

TMath or/and TMath likeC++ static functions

Contains the most used math functions

High Level C++ classesFunctions (a la TF1), Physics Vectors

Linear Algebra, Random Numbers, Minimisation

Callable from interpreter(s)

Persistency

ROOT

libraries

Page 70: Overview & Major Developments1 ROOT Project Status Summary of major developments ROOT Workshop 2004 SLAC 25 February Ren é Brun CERN

ROOT2002 Rene Brun Overview & Major Developments 70

Summary of proposal B Install standard gsl: libGSL.so Provide a CINT front-end (say libGSL++.so)

Nearly done, thanks Lorenzo

Extend TMath with more static functions from CERNLIB, GSL,..

New Linear Algebra from Eddy (already in CVS) Extend functions classes TF1 and like with more

algorithms. 2/3 of the estimated total work already done. Main work is the development of a

test/benchmark suite

Page 71: Overview & Major Developments1 ROOT Project Status Summary of major developments ROOT Workshop 2004 SLAC 25 February Ren é Brun CERN

ROOT2002 Rene Brun Overview & Major Developments 71

SEAL new proposal C

Page 72: Overview & Major Developments1 ROOT Project Status Summary of major developments ROOT Workshop 2004 SLAC 25 February Ren é Brun CERN

ROOT2002 Rene Brun Overview & Major Developments 72

Summary Many developments in the past 14 months.

Major new developments in 4.00 The system is still growing, but (we hope)

getting more mature. Many points in the relationship

ROOT/LCG/AA still to be clarified. We will be in ARDA.

As usual, we are waiting your comments, suggestions to improve the system.

Come to the session tomorrow afternoon with your views on the project, our plans, interaction with LCG/AA, etc.