310 likes | 441 Views
ROOT status and current developments. Alice workshop Sibiu 21 August 2008 Ren é Brun CERN/PH/SFT. http://root.cern.ch. Situation in 1994. pawlib. kernlib. packlib hbook zebra. paw. mathlib. cernlib. graflib. geant3. fluka. Situation in 1996. cernlib. objectivity. X. paw.
E N D
ROOT status andcurrent developments Alice workshop Sibiu 21 August 2008 René Brun CERN/PH/SFT http://root.cern.ch ROOT developments
Situation in 1994 pawlib kernlib packlib hbook zebra paw mathlib cernlib graflib geant3 fluka ROOT developments
Situation in 1996 cernlib objectivity X paw lhc++ root geant3 geant4 fluka ROOT developments
Situation in 2008 geant4 root vmc replacement of cernlib fluka ROOT developments
ROOT in 1995 • ROOT started in January 1995 as a replacement for PAW/PAW++ in C++ • Histograms • Fitting • Ntuples • Visualization • Macros a la kuip/kumacs (very basic C++) • About 200,000 lines of code ROOT developments
ROOT in 2008 • Full replacement for CERNLIB, PAW, ZEBRA • + many new packages and options • Used by all HEP experiments • 2000 classes, 2,000,000 lines of code ROOT developments
Team • CERN • 4 permanent staff • 2 short term • 1 fellow • 2 tech/doct students • FNAL • 1 permanent staff • Others • Many collaborators( >20) spending a small fraction of their time in dev ROOT-specific tools ROOT developments
Software Hierarchy End user Analysis software 0.1 MLOC Experiment Software 2 MLOC Frameworks like ROOT, Geant4 2 MLOC OS & compilers 20 MLOC Hardware Networking Hardware Hardware Hardware Hardware ROOT developments
ROOT Application Domains Data Analysis & Visualization General Framework Data Storage: Local, Network ROOT developments
Priorities • Consolidation and Robustness • I/O performance and functionality • CINT+Reflex merge • ACLIC: more and more auto-compiled code • Math, Stats, Fitting • 3-D graphics + event displays • GUI builder, editors, recorder ROOT developments
ROOT I/O in 1995 • Ad hoc per class (manual custom streamer) • Only for histograms, graphs and ntuples • Only basic types supported (PAW support) ROOT developments
ROOT I/O in 1996 • Generic I/O • Rootcint generates the class streamer functions • The TBuffer class • TTree split mode for simple types only ROOT developments
ROOT I/O since 1998 • The generated Streamer functions are replaced by the TStreamerInfo system that uses the dictionary info during Streaming. • The TStreamerInfo objects are stored in the file to support schema evolution and the possibility to process a ROOT file without the original classes. • Full support for templates and STL collections or deeply nested collections. • More and more complex cases of schema evolution. ROOT developments
ROOT I/O current developments • Extension of auto schema evolution • See ftp://root.cern.ch/root/SchemaEvolution.pdf • A cat may become a cow • Evolution rules set stored with the file ROOT developments
I/O improvements • Performance improvements (thanks to TTreeCache) when accessing remote files with http, rootd or Dcache. • Parallel unzipping in a separate thread on multi-core systems (20 to 25% RT improvement) • Better use of the TreeCache in xrootd ROOT developments
PROOF • Stability improvements (new xrootd plugin) • Allows PROOF workers to reconnect in case xrootd needs to be restarted • Improved logging and memory monitoring • Needed to find out where things do go wrong • Improved dataset management (TFileCollection) • Interfaced to grid file catalogs, DBMS, flat files • Scheduling developments (avoid congestion) • Fair share, group priorities & quotas • PROOF Lite prototype working (PROOF on single multi-core machine) ROOT developments
Math libraries ROOT developments
Geometry package • Stable and Robust • Improvements in overlap checker • G4root interface allowing G4 to use a ROOT geometry at tracking time. ROOT developments
GL Viewer • Many developments (by Matevz/Alja Tadel) to implement efficient GL data structures supporting caching and partial updates (show only what changes and set level of details). • Implement special lines, markers, cone jets, calorimeter cells required by event displays. • Implement multiple scenes in same canvas and support special transformations (eg fish-eye views, v-plots) • Improve GUI for clipping, cameras, selections, etc ROOT developments
GL in the ROOT TPad • Efficient GL in pad for • Parametric 3-D, 4-D functions • 3-D,4-D points on a regular grid (scanner) ROOT developments
GL in TPAD • Working on visualization of 4-D and 5-D data sets with non equidistant points ROOT developments
EVE: Event Displays • New package by Matez, Alja Tadel and Bertrand Bellenot • Many examples of event displays for CMS and Alice. ROOT developments
CMS event display ROOT developments
Hist Browser + stdin/stdout ROOT developments
TGhtml web browser plug-in URL You can browse a root file You can execute a script ROOT developments
Macro Manager/Editor plug-in Click on button to execute script with CINT or ACLIC ROOT developments
ROOT Event Recording System • Goal: To record and replay all kinds of events in ROOT • Commands typed by user in console (“new TBrowser()”) • GUI events in ROOT windows (mouse movement, click, button press…) • Motivation: • QA purposes (especially ROOT GUI) • Presentations, tutorials • To avoid performing the same operations manually again and again • Create once and then just replay • Like macros in Excel • Current state: • Creation of window is part of recording • State is recorded and replayed together with events • All events stored in TTree in single TFile record replay ROOT developments
Dictionary Options – You Choose! Reflex dictionary gccxml parser selection.xml genreflex.py ROOT Cintex Linkdef.h rootcint CINT parser CINT dictionary ROOT developments
Dictionary Options – The Goal Reflex dictionary gccxml parser selection.xml genreflex.py ROOT Linkdef.h rootcint CINT parser ROOT developments
QA • LCG nightly builds check • Compilation, link on Linux(ia32,64), windows, MAC • The test suite and tutorials (more than 1000 programs today) ROOT developments
Release procedure • 2 production releases/year (June, December) • Monthly development releases • Release notes per package automatically merged in one single html file at release time. ROOT developments