ROOT Progress Report1 ROOT Workshop 2001 FNAL June 13 Ren é Brun CERN

Slides:



Advertisements
Similar presentations
Configuration management
Advertisements

Configuration management
Copyright © 2008 Pearson Prentice Hall. All rights reserved Copyright © 2008 Prentice-Hall. All rights reserved. Committed to Shaping the Next.
Status and Future of CINT Reflex as Reflection Database Object-Oriented CINT Multi-Threading Masaharu Goto, Agilent Philippe Canal, Fermilab Stefan Roiser,
Blueprint RTAGs1 Coherent Software Framework a Proposal LCG meeting CERN- 11 June Ren é Brun ftp://root.cern.ch/root/blueprint.ppt.
O. Stézowski IPN Lyon AGATA Week September 2003 Legnaro Data Analysis – Team #3 ROOT as a framework for AGATA.
Guide To UNIX Using Linux Third Edition
ROOT courses1 The ROOT System A Data Access & Analysis Framework February 2003 Ren é Brun/EP Trees.
Qt Igor November 8, 2002 Friday’s HENP Group Meeting.
Large Data Bases in High Energy Physics Frontiers in Diagnostic Technologies Frascati November 26 Frascati November 26 Rene Brun/CERN.
Sept 11, 2003ROOT Day1, Suzanne Panacek39 ROOT An object oriented HEP analysis framework. Day 1.
ROOT An object oriented HEP analysis framework.. Computing in Physics Physics = experimental science =>Experiments (e.g. at CERN) Planning phase Physics.
XML I/O in ROOT S. Linev, R. Brun, H.G. Essel CHEP 2004.
Click to edit Master title style 21 st Nov, 2003 Valeri Fine (BNL) ROOT and ROOT4STAR framework V. Fine or Software for “C++ speaking” people.
ROOT: A Data Mining Tool from CERN Arun Tripathi and Ravi Kumar 2008 CAS Ratemaking Seminar on Ratemaking 17 March 2008 Cambridge, Massachusetts.
Status of SQL and XML I/O Sergey Linev, GSI, Darmstadt, Germany.
June 2001ROOT 2001 FNAL1 What Else is New Since ROOT 2000? Fons Rademakers.
CINT Retrospect ROOT Workshop Mar 2013 Agilent Technologies Masaharu Goto.
Java Analysis Studio Status Update 12 May 2000 Altas Software Week Tony Johnson
21-Apr-2005J. Adamczewski1 DVEE C++ course 2005 The ROOT framework 1: Introduction.
THttpServer class Sergey Linev (GSI). Some history Development was inspired by JSRootIO why not achieve similar functionality with online ROOT application?
Configuration Management (CM)
ROOT I/O recent improvements Bottlenecks and Solutions Rene Brun December
Java Root IO Part of the FreeHEP Java Library Tony Johnson Mark Dönszelmann
Computational Methods of Scientific Programming Lecturers Thomas A Herring, Room A, Chris Hill, Room ,
Introduction to ROOT1 Summer Students Lecture 20 July 2005 ftp://root.cern.ch/root/SummerStudents2005.ppt Introduction to ROOT.
The netCDF-4 data model and format Russ Rew, UCAR Unidata NetCDF Workshop 25 October 2012.
Chep 2006, Mumbai, IndiaPhilippe Canal (FNAL)1 Recent Developments in the ROOT I/O and TTrees CANAL, Philippe (FERMILAB) BRUN, Rene (CERN) FRANK, Markus.
ROOT for Data Analysis1 Intel discussion meeting CERN 5 Oct 2003 Ren é Brun CERN Distributed Data Analysis.
Acat OctoberRene Brun1 Future of Analysis Environments Personal views Rene Brun CERN.
ROOT Dreams & Facts ROOT Users Workshop: Saas Fe September René Brun.
ROOT I/O for SQL databases Sergey Linev, GSI, Germany.
Page 1 TOOLKIT / HDF-EOS Status and Development Abe Taaheri, Raytheon IIS Aura DSWG meeting October 2007.
ROOT Future1 Some views on the ROOT future ROOT Workshop 2001 June 13 FNAL Ren é Brun CERN Interesting to look at our programme of work 16 months ago.
ROOT Future1 Some views on the ROOT future ROOT Workshop 2001 June 13 FNAL Ren é Brun CERN.
National Center for Supercomputing ApplicationsNational Computational Science Grid Packaging Technology Technical Talk University of Wisconsin Condor/GPT.
Persistent Object References in ROOT1 Persistent Object References in ROOT I/O Status & Proposal CMS-ROOT meeting CERN- November 27 Ren é Brun ftp://root.cern.ch/root/refs.ppt.
Apr. 8, 2002Calibration Database Browser Workshop1 Database Access Using D0OM H. Greenlee Calibration Database Browser Workshop Apr. 8, 2002.
Using of XML for object store S. Linev, GSI Using of XML for object store. S.Linev2 Content XML and existing packages XML and existing packages.
March 2003 Conference for Computing in High Energy and Nuclear Physics1 ROOT Status and Future Developments CHEP 2003 La Jolla, CA March 24th Ren.
ROOT Tutorials - Session 51 ROOT Tutorials – Session 5 Dictionary Generation, rootcint, Simple I/O, Hands-on Fons Rademakers.
STAR Schema Evolution Implementation in ROOT I/O V. Perevoztchikov Brookhaven National Laboratory,USA.
Web Design and Development. World Wide Web  World Wide Web (WWW or W3), collection of globally distributed text and multimedia documents and files 
ROOT Data bases access1 LCG Data base deployment workshop 11 October Ren é Brun CERN.
ROOT courses1 The ROOT System A Data Access & Analysis Framework February 2003 Ren é Brun/EP Input/Output.
General Purpose ROOT Utilities Victor Perevoztchikov, BNL.
9/28/2005Philippe Canal, ROOT Workshop TTree / SQL Philippe Canal (FNAL) 2005 Root Workshop.
March, PROOF - Parallel ROOT Facility Maarten Ballintijn Bring the KB to the PB not the PB to the KB.
Alberto Colla - CERN ALICE off-line week 1 Alberto Colla ALICE off-line week Cern, May 31, 2005 Table of contents: ● Summary of requirements ● Description.
ROOT Team Meeting Axel Naumann CERN PH/SFT Crienftlex Extended Version. And also Director’s Cut. Crienftlex.
CINT & Reflex – The Future CINT’s Future Layout Reflex API Work In Progress: Use Reflex to store dictionary data Smaller memory footprint First step to.
ROOT Workshop M.Frank LHCb/CERN Improvements in the I/O Area (*)  General I/O related improvements  Tree related issues  Plans (*) I present.
Trees: New Developments1 Trees: New Developments Folders and Tasks ROOT Workshop 2001 June 13 FNAL Ren é Brun CERN
ROOT-CORE Team 1 Philippe Canal Markus Frank I/O Basic I/O, RDBMS interfaces, Trees.
Go4 Workshop J.Adamczewski-Musch, S.Linev Go4 advanced features.
Apache Avro CMSC 491 Hadoop-Based Distributed Computing Spring 2016 Adam Shook.
What is New in Core Fons Rademakers 1. Library Reorganization Split off from libCore: libRIO libNet libMath (soon) These libraries are now loaded at run-
Joe Foster 1 This talk extends the one I gave in 2006 called Visualizing Data with ROOT. –
2001 ROOT Workshop The Summary. Content Most Requested Request already satisfied Build and Distribution Web Page Information and Documentation.
Pyragen A PYTHON WRAPPER GENERATOR TO APPLICATION CORE LIBRARIES Fernando PEREIRA, Christian THEIS - HSE/RP EDMS tech note:
POOL Based CMS Framework Bill Tanenbaum US-CMS/Fermilab 04/June/2003.
HYDRA Framework. Setup of software environment Setup of software environment Using the documentation Using the documentation How to compile a program.
Persistent Object References in ROOT1 Persistent Object References in ROOT I/O Status & Proposal LCG meeting CERN- 5 June Ren é Brun ftp://root.cern.ch/root/longrefs.ppt.
Possibility of XML I/O support in ROOT
Recent Developments in ROOT I/O Support for foreign classes
C programming Language
Persistent Object References in ROOT I/O Status & Proposal
Zooming on ROOT files and Containers
Working with HADES WebDB HADES analysis workshop, Darmstadt, Germany, 31 January - 1 February 2012 Ilse Koenig, GSI Darmstadt Outline: Version management.
ROOT Support and Developments at FNAL
Presentation transcript:

ROOT Progress Report1 ROOT Workshop 2001 FNAL June 13 Ren é Brun CERN

ROOT2001 Rene BrunROOT Progress Report2 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) Sep 00: Root version 2.25/03 Mar 01: Root version 3.00/06 Jun 01: Root version 3.01/05 (3rd Root workshop at FNAL) In 1994, fundamental divergence of opinions in Application Software group in IT. The PAW/Geant3 team is dismantled. Fortran90 ??? C++, Commercial Software C++, Open Source ROOT

ROOT2001 Rene BrunROOT Progress Report3 ROOT: an Evolving System The ROOT system has been in continuous development since 1995 surviving major changes, major enhancements and an ever increasing number of users. In the same way that Root2001 is far from the original Root1995, we expect that Root2006 will include many contributions reflecting the continuous changes and new ideas in the field of computing. This implies a strong cooperation between software developers in the major experiments. Root is being developed in very close cooperation with a cloud of software developers in small, medium and large experiments. Computer scientists from non- HEP fields are also contributing.

ROOT2001 Rene BrunROOT Progress Report4 ROOT team today

ROOT2001 Rene BrunROOT Progress Report5 Plan of talk In this talk, I will review the main developments in version 2.25, 3.00 and Focusing on the I/O aspects CINT will be covered by Masa System classes and GUI by Fons ROOT GUI on Windows by Fons and Bertrand Trees and related things: see my next talk Documentation: see Suzanne’s talk

ROOT2001 Rene BrunROOT Progress Report6 Version 2.25 (1) Sep 00 In March 2000, move to CVS Makefile system Modularization of the libraries ACLIC TLatex, TSpline TPrincipal, TMultiDimFit TTree::MakeClass, MakeSelector see talk on Trees TFolder, TTask see talk on Folders and tasks Float_t --> Double_t in graphics classes + TH1 + TGraph

ROOT2001 Rene BrunROOT Progress Report7 ACLIC by Philippe Canal Automatic Compiler Linker Interface to CINT.x hsimple.cxx (via CINT).x hsimple.cxx+ (via native compiler/linker) second call to.x hsimple.cxx+ will not recompile if hsimple.cxx is not modified since previous call.x hsimple.cxx++ (same, force compilation) Same behavior on all systems We recommend to write always valid C++ with the include files specified. This works for C++ and CINT.

ROOT2001 Rene BrunROOT Progress Report8 ACLIC example Root >.x hsimple.C Root >.x hsimple.C+ Add includes normal C++

ROOT2001 Rene BrunROOT Progress Report9 TLatex formula emulator

ROOT2001 Rene BrunROOT Progress Report10 TPrincipal by Christian Holm Christensen Principal Components Analysis class Translation in C++ of LINTRA (cernlib) Extensive documentation at URL: Tutorial example $ROOTSYS/tutorials/principal.C

ROOT2001 Rene BrunROOT Progress Report11 TMultiDimFit by Christian Holm Christensen MultiDimensional Parameterisation and Fit Translation in C++ of MUDIFI Extensive documentation at URL: Tutorial example $ROOTSYS/tutorials/multidimfit.C

ROOT2001 Rene BrunROOT Progress Report12 New Histogram type TH1K by Victor Perevoztchikov TH1K class supports the nearest K Neighbors method, widely used in cluster analysis. This method is especially useful for small statistics. In this method : DensityOfProbability ~ 1/DistanceToNearestKthNeighbor TH1K::TH1K(name,title,nbins,xlow,xup,K=0) differs from TH1F only by "K" K - is the order of K Neighbors method, usually >=3 K = 0, means default, where K is selected by TH1K in such a way that DistanceToNearestKthNeighbor > BinWidth and K >=3 A TH1F and TH1K with 400 bins and 200 entries

ROOT2001 Rene BrunROOT Progress Report13 Version 3.00 Constness in many classes (TObject) TStreamerInfo rootcint supports more complex C++ TFile::ShowStreamerInfo TFile::MakeProject Long_t portable format Parallel Sockets Many improvements in GUI new TTreeViewer new classes TBits TMultiGraph TXTRu, TH1K Font size in pixels (precision 3) new test suite bench many new tutorials

ROOT2001 Rene BrunROOT Progress Report14 ROOT classes are const aware We had to do it. Helps in making your functions const Has generated some backward incompatibility Warning: compilers are poor in reporting potential conflicts when redefining functions in derived classes Example TObject

ROOT2001 Rene BrunROOT Progress Report15 New class TBits

ROOT2001 Rene BrunROOT Progress Report16 New class TMultiGraph

ROOT2001 Rene BrunROOT Progress Report17 New geometry class TXTRU by Robert Hatcher The 15 GEANTshapes seen in the X3D viewer A TXTRU example in OpenInventor XTRU is a poly-extrusion with fixed outline shape in x-y, a sequence of z-extents and two end faces perpendicular to the z axis

ROOT2001 Rene BrunROOT Progress Report18 The Tree Viewer & Analyzer A very powerful class supporting complex cuts, event lists, 1-d,2-d, 3-d views parallelism

ROOT2001 Rene BrunROOT Progress Report19 Version 3.01 New class TBranchElement new branch style by default split/no-split mode symmetric Most restrictions in split mode removed TClonesArray accept more complex classes Tree Friends Many improvements in TTreeFormula (thanks Philippe Canal) Trees can be generated from Folders Can read/query Trees without the classes Open Inventor Interface See talk on Trees See talk on Folders

ROOT2001 Rene BrunROOT Progress Report20 ROOT + OpenInventor CMS with Geant3 converted via g2root to ROOT TNodes

ROOT2001 Rene BrunROOT Progress Report21 ROOT and the WEB An Apache Web-server plug-in module is being developed by Valeriy OnuChin. Provides interactive access to ROOT files, CINT macros and all the graphics. Web pages generated on the fly. Interesting alternative to PHP using C++ as an embedded scripting system with full access to user classes dynamically See talk by Valeriy Friday morning

ROOT2001 Rene BrunROOT Progress Report22 Evolution of ROOT I/O Hand-written Streamers Streamers generated via rootcint Support for Class Versions Support for ByteCount Several attempts to introduce automatic class evolution Persistent class Dictionary written to files rootcint modified to generate automatic Streamers can generate code for “DataObjects” classes in a file Support for STL and more complex C++ cases Trees take advantage of the new scheme Can read files without the classes

ROOT2001 Rene BrunROOT Progress Report23 ROOT Data Base Model Put Event write-once data in an object store via object.Write() or Trees in split/no-split modes Use a RDBMS for : Run/Event catalogs Geometry, calibrations eg with ROOT Oracle interface Use ROOT split/no-split mode for phys analysis Use PROOF for large-scale distributed physics analysis Integration with the GRID model Combining 2 technologies ROOT Oracle

ROOT2001 Rene BrunROOT Progress Report24 ROOT + RDBMS Model histograms Calibrations Geometries Run/File Catalog Trees Event Store ROOT files Oracle MySQL

ROOT2001 Rene BrunROOT Progress Report25 Old Streamers in 0.90/08 class TAxis : public TNamed, public TAttAxis { private: Int_t fNbins; Axis_t fXmin; Axis_t fXmax; TArrayF fXbins; Char_t *fXlabels; void TAxis::Streamer(TBuffer &b) { if (b.IsReading()) { Version_t v = b.ReadVersion(); TNamed::Streamer(b); TAttAxis::Streamer(b); b >> fNbins; b >> fXmin; b >> fXmax; fXbins.Streamer(b); } else { b.WriteVersion(TAxis::IsA()); TNamed::Streamer(b); TAttAxis::Streamer(b); b << fNbins; b << fXmin; b << fXmax; fXbins.Streamer(b); } rootcint

ROOT2001 Rene BrunROOT Progress Report26 Old Streamers in 2.25 class TAxis : public TNamed, public TAttAxis { private: Int_t fNbins; Axis_t fXmin; Axis_t fXmax; TArrayF fXbins; Char_t *fXlabels; Int_t fFirst; Int_t fLast; TString fTimeFormat; Bool_t fTimeDisplay; TObject *fParent; void TAxis::Streamer(TBuffer &R__b) { UInt_t R__s, R__c; if (R__b.IsReading()) { Version_t R__v = R__b.ReadVersion(&R__s, &R__c); TNamed::Streamer(R__b); TAttAxis::Streamer(R__b); R__b >> fNbins; R__b >> fXmin; R__b >> fXmax; fXbins.Streamer(R__b); if (R__v > 2) { R__b >> fFirst; R__b >> fLast; } if (R__v > 3) { R__b >> fTimeDisplay; fTimeFormat.Streamer(R__b); } else { SetTimeFormat(); } R__b.CheckByteCount(R__s, R__c, TAxis::IsA()); } else { R__c = R__b.WriteVersion(TAxis::IsA(), kTRUE); TNamed::Streamer(R__b); TAttAxis::Streamer(R__b); R__b << fNbins; R__b << fXmin; R__b << fXmax; fXbins.Streamer(R__b); R__b << fFirst; R__b << fLast; R__b << fTimeDisplay; fTimeFormat.Streamer(R__b); R__b.SetByteCount(R__c, kTRUE); } rootcint

ROOT2001 Rene BrunROOT Progress Report27 New Streamers in 3.00 class TAxis : public TNamed, public TAttAxis { private: Int_t fNbins; Axis_t fXmin; Axis_t fXmax; TArrayF fXbins; Char_t *fXlabels; //! Int_t fFirst; Int_t fLast; TString fTimeFormat; Bool_t fTimeDisplay; TObject *fParent; //! void TAxis::Streamer(TBuffer &R__b) { // Stream an object of class TAxis. if (R__b.IsReading()) { UInt_t R__s, R__c; Version_t R__v = R__b.ReadVersion(&R__s, &R__c); if (R__v > 5) { TAxis::Class()->ReadBuffer(R__b, this, R__v, R__s, R__c); return; } //====process old versions before automatic schema evolution.... //====end of old versions } else { TAxis::Class()->WriteBuffer(R__b,this); } rootcint

ROOT2001 Rene BrunROOT Progress Report28 Support for more complex C++ enum {kSize=10}; char fType[20]; //array of 20 chars Int_t fNtrack; //number of tracks Int_t fNvertex; //number of vertices Int_t fX[kSize]; //an array where dimension is an enum UInt_t fFlag; //bit pattern event flag Float_t fMatrix[4][4]; //a two-dim array Float_t *fDistance; //[fNvertex] array of floats of length fNvertex Double_t fTemperature; //event temperature TString *fTstringp; //[fNvertex] array of TString TString fNames[12]; //array of TString TAxis fXaxis; //example of class derived from TObject TAxis fYaxis[3]; //array of objects TAxis *fVaxis[3]; //pointer to an array of TAxis TAxis *fPaxis; //[fNvertex] array of TAxis of length fNvertex TAxis **fQaxis; //[fNvertex] array of pointers to TAxis objects TDatime fDatime; //date and time EventHeader fEvtHdr; //example of class not derived from TObject TObjArray fObjArray; //An object array of TObject* TClonesArray *fTracks; //-> array of tracks TH1F *fH; //-> pointer to an histogram TArrayF fArrayF; //an array of floats TArrayI *fArrayI; //a pointer to an array of integers ………………..(see next)

ROOT2001 Rene BrunROOT Progress Report29 Support for STL vector fVectorint; //STL vector on ints vector fVectorshort; //STL vector of shorts vector fVectorD[4]; //array of STL vectors of doubles vector fVectorTLine; //|| STL vector of TLine objects vector *fVectorTobject; //|| pointer to an STL vector vector *fVectorTnamed[6]; //|| array of pointers to STL vectors deque fDeque; //STL deque list fVectorTobjectp; //STL list of pointers to objects list *fListString; //STL list of strings list fListStringp; //STL list of pointers to strings map fMapTNamedp; //STL map map fMapList; //STL map map *fMapTAxisp; //pointer to STL map set fSetTAxis; //STL set set *fSetTAxisp; //pointer to STL set multimap fMultiMapTNamedp; //STL multimap multiset *fMultiSetTAxisp; //pointer to STL multiset string fString; //C++ standard string string *fStringp; //pointer to standard C++ string UShortVector fUshort; //class with an STL vector as base class

ROOT2001 Rene BrunROOT Progress Report30 Complex STL use not supported vector > fVectAxis; //!STL vector of vectors of TAxis* map > fMapString; //!STL map of string/vector deque > fDequePair; //!STL deque of pair Use a custom Streamer for these complex cases

ROOT2001 Rene BrunROOT Progress Report31 Self-describing files Dictionary for persistent classes written to the file when closing the file. ROOT files can be read by foreign readers (see presentation on JavaRoot (Tony slides) Support for Backward and Forward compatibility Files created in 2003 must be readable in 2015 Classes (data objects) for all objects in a file can be regenerated via TFile::MakeProject Root >TFile f(“demo.root”); Root > f.MakeProject(“dir”,”*”,”new++”);

ROOT2001 Rene BrunROOT Progress Report32 StreamerInfo The description of all classes in a file is written in one single record when the file is closed StreamerInfo

ROOT2001 Rene BrunROOT Progress Report33 Showing classes in a file TFile::ShowStreamerInfo Root > f.ShowStreamerInfo()

ROOT2001 Rene BrunROOT Progress Report34 Automatic Schema Evolution

ROOT2001 Rene BrunROOT Progress Report35 Auto Schema Evolution (2)

ROOT2001 Rene BrunROOT Progress Report36 Missing Classes The system warns you when opening a file and the class library is missing

ROOT2001 Rene BrunROOT Progress Report37 read/query Trees without the classes

ROOT2001 Rene BrunROOT Progress Report38 read/query Trees without the classes

ROOT2001 Rene BrunROOT Progress Report39 TFile::MakeProject Generate the classes header files Compile them make a shared lib link the shared lib

ROOT2001 Rene BrunROOT Progress Report40 TFile::MakeProject All necessary header files are included Comments preserved Can do I/O Inspect Browse,etc

ROOT2001 Rene BrunROOT Progress Report41 The Test suite “bench” ( example on fcdfsgi2 with KAI compiler) Test performance of STL vector of objects, vectors of pointers and same with a TClonesArray of TObjHit deriving from THit Better compression with TClonesArray Better write with TClonesArray Much better read with TClonesArray

ROOT2001 Rene BrunROOT Progress Report42 Test suite “bench”

ROOT2001 Rene BrunROOT Progress Report43 Makefiles 3 major OS (Unix, Windows, Mac OS/X) 10 different compilers gcc with many flavors on nearly all platforms, Solaris:CC4,5, HPUX:CC:aCC, SGI:CC, AIX:xlC Alpha:CXX6, Windows:VC++6 KAI on SGI, Linux, Solaris 37 Makefiles

ROOT2001 Rene BrunROOT Progress Report44 Download source, Binaries 20 binary tar balls + source

ROOT2001 Rene BrunROOT Progress Report45 ROOT Downloads 114,000 binaries download 650,000 clicks per month 19,000 docs in 6 months 2200 reg users in roottalk