28
Global Overview of the Current ROOT System CHEP09 : Prague, 24 March 2009 René Brun/CERN for the ROOT team Global Overview of ROOT system 1 Rene Brun

Global Overview of the Current ROOT System

  • Upload
    kendall

  • View
    34

  • Download
    0

Embed Size (px)

DESCRIPTION

Global Overview of the Current ROOT System. CHEP09 : Prague, 24 March 2009 Ren é Brun/CERN for the ROOT team. Project History : Politics. Staff consolidation. Project starts Jan 1995. Hoffman review. Objectivity, LHC++. Public presentation Nov 1995. LCG RTAGs - PowerPoint PPT Presentation

Citation preview

Page 1: Global Overview of the Current ROOT System

Global Overview ofthe Current ROOT System

CHEP09 : Prague, 24 March 2009 René Brun/CERN

for the ROOT team

Global Overview of ROOT system 1 Rene Brun

Page 2: Global Overview of the Current ROOT System

Project History : Politics

Rene Brun Global Overview of ROOT system 2

FNAL RHIC

Sep 1998

LCG RTAGsSEAL,POOL

,PI

LCG 2 main stream

Staffconsolidation

Public presentation

Nov 1995

ALICE

Objectivity, LHC++

Hoffman review

Project starts

Jan 1995

Page 3: Global Overview of the Current ROOT System

CMZ…………………………………CVS………………………………………………………….SVN……………

Major Technical Steps

Rene Brun Global Overview of ROOT system 3

CINT

I/O based on dictionaries in memory

Graphics based on TVirtualX

GUI based on signal/slots

P R O O F CINT7

GL/EVE

RooFitTMVA

MathLibs

ReflexFrom SEAL to

ROOT

Trees automatic

split

Page 4: Global Overview of the Current ROOT System

From CVS to SVN

Smooth and fast transition from CVS to SVN We are very happy with SVN

Rene Brun Global Overview of ROOT system 4

Page 5: Global Overview of the Current ROOT System

SVN Structureroot/graf2d/gpad/doc/index.txt

20 top

pac

kage

s

Page 6: Global Overview of the Current ROOT System

export

Rene Brun Global Overview of ROOT system 6

Page 7: Global Overview of the Current ROOT System

ROOT libs

Granularity: More than 100 shared libs You load what you use root.exe links 6 shared libs (VM < 20 Mbytes)

x

x

x

x

x

x

x

Page 8: Global Overview of the Current ROOT System

CINT LLVM CINT is the CORE of ROOT for

Parsing code Interpreting code Storing the classes descriptions

A new version of CINT (CINT7) is based on Reflex, but found too slow to go to production.

We are considering an upgrade of CINT using LLVM (Apple-driven OS project). LLVM is a GCC compliant compiler with a parser and a Just In Time Compiler. (see talk by Axel Naumann)

CINT/LLVM (CLING) should be c++0x compliant

Page 9: Global Overview of the Current ROOT System

Input/Output: Major Steps

Rene Brun Global Overview of ROOT system 9

User written streamersfilling TBuffer

streamers generatedby rootcint

automatic streamers from dictionary with StreamerInfosin self-describing files

member-wise streamingfor TClonesArray

member-wise streaming for STL col<T*>

generalized schema evolution

parallel merge

Page 10: Global Overview of the Current ROOT System

Input/Output: Object Streaming

From single-object-wise streaming from hand-code Streamer to rootcint-generated Streamer to generic Streamer based on dictionary

To collections member-wise streaming Member-wise streaming saves space and time

ABCD ABCD ABCD ABCD ABCD ABCD … ABCD

ABCDABCDABCDABCDABCDABCD …ABCD

AAAAAA..A

CCCCCC..C

BBBBBB..B

DDDDDD..D

TBuffer bufAll

TBuffer bufA

TBuffer bufB

TBuffer bufC

TBuffer bufD

std::vector<T>std::vector<T*>

Page 11: Global Overview of the Current ROOT System

Files: Local/Remote Local files

From 32 to 64 bits pointers What about Lustre/ZFS TFile::Open(“mylocalfile.root”)

Web files on a remote site using a standard Apache web server

TFile::Open(“http://myserver.xx.yy/file.root”)

Remote files served by xrootd Support for parallelism Support for intelligent read-ahead (via TTreeCache) Support for multi-threading At the heart of PROOF TFile::Open(“root://myxrootdserver.xx.yy/file.root”)

Page 12: Global Overview of the Current ROOT System

Files in XML

Rene Brun Global Overview of ROOT system 12

Canvas.Print(“x.C”)Canvas.Print(“x.root”)Canvas.Print(“x.xml”)

ROOT/XML filesA good tool to understand ROOT

I/O

Page 13: Global Overview of the Current ROOT System

I/O and Trees from branches of basic types created by hand to branches automatically generated from very

complex objects to branches automatically generated for complex

polymorphic objects Support for object weak-references across

branches (TRef) with load on demand Tree Friends TEntryList

Page 14: Global Overview of the Current ROOT System

2-D Graphics New functions

added at each new release.

Always new requests for new styles, coordinate systems.

ps,pdf,svg,gif, jpg,png,c,root,

etc

Rene Brun Global Overview of ROOT system 14

Move to GL ?

Page 15: Global Overview of the Current ROOT System

The Geometry Package TGEO

The TGeo classes are now stable. Can work with different simulation engines

(G3,G4,Fluka) (See Virtual Monte Carlo) G3->G4, G4->TGeo, TGeo>GDML Used in online systems and reconstruction

programs Built-in facilities for alignment Impressive galery of experiments (35 detectors in

$ROOTSYS/test/stressGeometry)

Page 16: Global Overview of the Current ROOT System

3-D Graphics

Highly optimized GL views in TPad the GL viewer

Rene Brun Global Overview of ROOT system 16

Page 17: Global Overview of the Current ROOT System

Event Display: EVE EVE is a ROOT package (GL-based) for event

displays. Developed in collaboration with Alice (AliEve) and

CMS (FireWorks). Provides all the GUI widgets, browsers, GL

infrastructure (far better than the old OpenInventor).

Used now by many experiments (see eg FAIRROOT, ILCROOT) to display raw data, MC events or detector oriented visualization.

Page 18: Global Overview of the Current ROOT System

GUI Many enhancements in the GUI classes: browser,

html browser, TABs, EVE widgets. GUI builder with C++ code generator. Note that

the code generator works from any existing widget (CTRL/S). see poster

class TRecorder see poster

can store and replay a GUI session: All mouse events Keyboard input, including macro execution

QT interfaces: a big pain, difficult to maintain with the successive versions of Qt.

CRTL/S

Page 19: Global Overview of the Current ROOT System

GUI Examples

Page 20: Global Overview of the Current ROOT System

GUI Examples II

Can browse a ROOT file on the

remote web server

Page 21: Global Overview of the Current ROOT System

RooFit/ RooStats

The original Babar RooFit package has been considerably extended by Wouter Verkerke.

Now structured in RooFitCore and RooFit RooFit is the base for the new RooStats

package developed by Atlas and CMS (see Lorenzo’s talk)

Page 22: Global Overview of the Current ROOT System

Documentation

The Reference Guide is generated by THtml including dynamic graphics, latex, macros.

The Tutorials doc is now generated automatically by THtml including graphics and the index.

Release and Development Notes also generated automatically from SVN by THtml.

Users Guide still in MS/Word format. Plan to convert it to (DocBook) with pdf and html versions.

Page 23: Global Overview of the Current ROOT System

Documentation examples Put as much as possible in the source in SVN, including

html pages, scripts and graphics processed by THtml.

Page 24: Global Overview of the Current ROOT System

The new http://root.cern.ch

old

new

The old web site http://root.cern.ch has been replaced by a better version with improved contents

and navigation using the drupal system.

Page 25: Global Overview of the Current ROOT System

Supported Platforms Linux (RH, SLCx,Suse, Debian, Ubuntu)

gcc3.4, gcc4.3 (32 and 64 bits) icc10.1

MAC (ppc, 10.4, 10.5) gcc4.0.1, gcc4.3 icc10.1, icc11.0

Windows (XP, Vista) VC++7.1, VC++9 Cygwin gcc3.4, 4.3

Solaris + OpenSolaris CC5.2 gcc3.4, gcc4.3

Page 26: Global Overview of the Current ROOT System

Robustness & QA Impressive test suite roottest run in the nightly

builds (several hundred tests) Working on GUI test suite (based on Event

Recorder)

Page 27: Global Overview of the Current ROOT System

ROOT developersmore stability

Page 28: Global Overview of the Current ROOT System

Summary After 15 years of development, good balance

between consolidation and new developments. The ROOT main packages (I/O & Trees) are

entering a consolidation, optimization phase. We would like to upgrade CINT with the LLVM C+

+0x compliant compiler (CLING). Better documentation and User Support More stable manpower Usage rapidly expanding outside HEP