overview & major developments1 root project status summary of major developments root workshop...
TRANSCRIPT
Overview & Major Developments 1
ROOT Project StatusSummary of major
developments
ROOT Workshop 2004 SLAC25 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 !!
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
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
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
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.
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 !
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
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
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
Overview & Major Developments 11
Summary of 3.04, 3.05 and 3.10
October 2002 ->December 2003
ROOT2002 Rene Brun Overview & Major Developments 12
ROOT Documentation
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
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
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
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 ?
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!
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 ?
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;
};
ROOT2002 Rene Brun Overview & Major Developments 20
TTreeViewer Several layout improvement and changes.
New Refresh button.
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.
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
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()
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
ROOT2002 Rene Brun Overview & Major Developments 25
TSpectrum New improvements in the Spectrum classes by Miro Morach.
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”);
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.
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.
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.
Overview & Major Developments 30
Version 4.00 hightlights
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
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
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
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”
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.
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…
ROOT2002 Rene Brun Overview & Major Developments 37
New Graphics Editor1-ToggleEditor mode
2-ClickOn the object
to beedited
3-Edit object
attributes
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
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)
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
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
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
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
ROOT2002 Rene Brun Overview & Major Developments 44
New Linear Algebra classes
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
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
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”)
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
ROOT2002 Rene Brun Overview & Major Developments 49
PythonRoot
http://alcaraz.home.cern.ch/alcaraz/PythonRoot/
ROOT2002 Rene Brun Overview & Major Developments 50
RubyRoot
http://alcaraz.home.cern.ch/alcaraz/RubyRoot/
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/
ROOT2002 Rene Brun Overview & Major Developments 52
ruby-root exampleroot ruby
Overview & Major Developments 53
Medium Term
Ideas for 4.01, 4.02..
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
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
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
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
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
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
Overview & Major Developments 60
Collaboration with LCG/AA
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
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
ROOT2002 Rene Brun Overview & Major Developments 63
Dictionaries : root only
X.hCINT
DS
rootcintXDictcint.cxx
CINT
API
ROOT
Root meta C++
CINT
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
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
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
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
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
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
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
ROOT2002 Rene Brun Overview & Major Developments 71
SEAL new proposal C
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.