Introduction to ROOT1 Summer Students Lecture 10 July 2007 Ren é Brun CERN/PH/SFT Introduction to ROOT

Slides:



Advertisements
Similar presentations
JavaScript FaaDoOEngineers.com FaaDoOEngineers.com.
Advertisements

Why ROOT?. ROOT ROOT: is an object_oriented frame work aimed at solving the data analysis challenges of high energy physics Object _oriented: by encapsulation,
ROOT TOOLKIT (I) Técnicas Fundamentales de Simulación, Reconstrucción y Análisis de Datos en Física Experimental de Partículas Isidro González Caballero.
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 Oracle10G1 Introduction To Forms Builder Chapter 5.
1 SWE Introduction to Software Engineering Lecture 22 – Architectural Design (Chapter 13)
A Guide to Oracle9i1 Introduction To Forms Builder Chapter 5.
ROOT courses1 The ROOT System A Data Access & Analysis Framework February 2003 Ren é Brun/EP Trees.
Large Data Bases in High Energy Physics Frontiers in Diagnostic Technologies Frascati November 26 Frascati November 26 Rene Brun/CERN.
PROOF: the Parallel ROOT Facility Scheduling and Load-balancing ACAT 2007 Jan Iwaszkiewicz ¹ ² Gerardo Ganis ¹ Fons Rademakers ¹ ¹ CERN PH/SFT ² University.
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.
Languages and Environments Higher Computing Unit 2 – Software Development.
ROOT: A Data Mining Tool from CERN Arun Tripathi and Ravi Kumar 2008 CAS Ratemaking Seminar on Ratemaking 17 March 2008 Cambridge, Massachusetts.
Basics of Web Databases With the advent of Web database technology, Web pages are no longer static, but dynamic with connection to a back-end database.
Herramientas de simulación, reconstrucción y análisis de datos en Física de Partículas (II): ROOT Javier Fernández Menéndez Master Técnicas de Computación.
CNIT 133 Interactive Web Pags – JavaScript and AJAX JavaScript Environment.
Client Scripting1 Internet Systems Design. Client Scripting2 n “A scripting language is a programming language that is used to manipulate, customize,
Computer Programming for Biologists Oct 30 th – Dec 11 th, 2014 Karsten Hokamp  Fill out.
21-Apr-2005J. Adamczewski1 DVEE C++ course 2005 The ROOT framework 1: Introduction.
ROOT I/O recent improvements Bottlenecks and Solutions Rene Brun December
Interactive Data Analysis with PROOF Bleeding Edge Physics with Bleeding Edge Computing Fons Rademakers CERN.
Introduction to ROOT May May Rene Brun/CERN.
Introduction to ROOT1 Summer Students Lecture 20 July 2005 ftp://root.cern.ch/root/SummerStudents2005.ppt Introduction to ROOT.
1 Computer Programming (ECGD2102 ) Using MATLAB Instructor: Eng. Eman Al.Swaity Lecture (1): Introduction.
1 Marek BiskupACAT2005PROO F Parallel Interactive and Batch HEP-Data Analysis with PROOF Maarten Ballintijn*, Marek Biskup**, Rene Brun**, Philippe Canal***,
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 and Federated Data Stores What Features We Would Like Fons Rademakers CERN CC-IN2P3, Nov, 2011, Lyon, France.
Introduction to ROOT1 Summer Students Lecture 10 July 2007 Ren é Brun CERN/PH/SFT Introduction to ROOT
Introduction to Processing. 2 What is processing? A simple programming environment that was created to make it easier to develop visually oriented applications.
ROOT-CORE Team 1 PROOF xrootd Fons Rademakers Maarten Ballantjin Marek Biskup Derek Feichtinger (ARDA) Gerri Ganis Guenter Kickinger Andreas Peters (ARDA)
ROOT Future1 Some views on the ROOT future ROOT Workshop 2001 June 13 FNAL Ren é Brun CERN.
3 Copyright © 2004, Oracle. All rights reserved. Working in the Forms Developer Environment.
H.G.Essel: Go4 - J. Adamczewski, M. Al-Turany, D. Bertini, H.G.Essel, S.Linev CHEP 2003 GSI Online Offline Object Oriented Go4.
Core Java Introduction Byju Veedu Ness Technologies httpdownload.oracle.com/javase/tutorial/getStarted/intro/definition.html.
ROOT Tutorials - Session 51 ROOT Tutorials – Session 5 Dictionary Generation, rootcint, Simple I/O, Hands-on Fons Rademakers.
1 Software. 2 What is software ► Software is the term that we use for all the programs and data on a computer system. ► Two types of software ► Program.
PROOF and ALICE Analysis Facilities Arsen Hayrapetyan Yerevan Physics Institute, CERN.
ROOT Users Workshop September 2005 Ilka Antcheva GUI Status and Development.
Introduction to ROOT1 Summer Students Lecture 6 July 2009 Fons Rademakers (PH/SFT) Jan Fiete Grosse-Oetringhaus (PH/AIP) Introduction to ROOT
Chapter 5 Introduction To Form Builder. Lesson A Objectives  Display Forms Builder forms in a Web browser  Use a data block form to view, insert, update,
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.
Postgraduate Computing Lectures PAW 1 PAW: Physicist Analysis Workstation What is PAW? –A tool to display and manipulate data. Learning PAW –See ref. in.
1 Status of PROOF G. Ganis / CERN Application Area meeting, 24 May 2006.
LCG AA Meeting 31 October 2007 The new dynamically and extensively customizable ROOT browser Bertrand Bellenot.
Overview, Major Developments, Directions1 ROOT Project Status Major developments Directions NSS05 Conference 25 October Ren é Brun CERN Based on my presentation.
ROOT: Status & Developments1 Aachen 1 February 2005 Ren The ROOT Project Status & Developments.
S.Linev: Go4 - J.Adamczewski, H.G.Essel, S.Linev ROOT 2005 New development in Go4.
Trees: New Developments1 Trees: New Developments Folders and Tasks ROOT Workshop 2001 June 13 FNAL Ren é Brun CERN
Latest Improvements in the PROOF system Bleeding Edge Physics with Bleeding Edge Computing Fons Rademakers, Gerri Ganis, Jan Iwaszkiewicz CERN.
CHEP06, Mumbai, India February 2006 General Status of ROOT GUI Ilka Antcheva, Bertrand Bellenot, René Brun, Valeriy Onuchin *, Fons Rademakers CERN,
Sept. 2000CERN School of Computing1 PROOF and ROOT Grid Features Fons Rademakers.
Go4 Workshop J.Adamczewski-Musch, S.Linev Go4 advanced features.
LCG AA Meeting 30 June 2004 Ilka Antcheva Graphics User Interface in ROOT.
PROOF on multi-core machines G. GANIS CERN / PH-SFT for the ROOT team Workshop on Parallelization and MultiCore technologies for LHC, CERN, April 2008.
2001 ROOT Workshop The Summary. Content Most Requested Request already satisfied Build and Distribution Web Page Information and Documentation.
LCG AA Internal Review 30 March 2005 ROOT Graphical User Interface Ilka Antcheva, Bertrand Bellenot, Valeri Fine, Valeriy Onuchin, Fons Rademakers.
HYDRA Framework. Setup of software environment Setup of software environment Using the documentation Using the documentation How to compile a program.
Go4 v2.2 Status & Overview CHEP 2003
Working in the Forms Developer Environment
Distributed object monitoring for ROOT analyses with Go4 v.3
POOL persistency framework for LHC
Summer Students Lecture 21 July 2004
Support for ”interactive batch”
Summer Students Lecture 8 July 2008 Fons Rademakers CERN/PH/SFT
PROOF - Parallel ROOT Facility
The ROOT framework 1: Introduction
Presentation transcript:

Introduction to ROOT1 Summer Students Lecture 10 July 2007 Ren é Brun CERN/PH/SFT Introduction to ROOT

Introduction to ROOT2 ROOT in a Nutshell The ROOT system is an Object Oriented framework for large scale data handling applications. It is written in C++. Provides, among others, an efficient data storage and access system designed to support structured data sets (PetaBytes) a query system to extract data from these data sets a C++ interpreter advanced statistical analysis algorithms (multi dimensional histogramming, fitting, minimization and cluster finding) scientific visualization tools with 2D and 3D graphics an advanced Graphical User Interface The user interacts with ROOT via a graphical user interface, the command line or scripts The command and scripting language is C++, thanks to the embedded CINT C++ interpreter, and large scripts can be compiled and dynamically loaded. A Python shell is also provided.

Introduction to ROOT3 The ROOT Libraries Over 1500 classes 1,550,000 lines of code CORE (8 Mbytes) CINT (2 Mbytes) Green libraries linked on demand via plug-in manager (only a subset shown) 100 shared libs

Introduction to ROOT4 ROOT: An Open Source Project The project was started in The project is developed as a collaboration between: Full time developers: 11 people full time at CERN (PH/SFT) +4 developers at Fermilab/USA, Protvino, JINR/Dubna (Russia) Large number of part-time contributors (155 in CREDITS file) A long list of users giving feedback, comments, bug fixes and many small contributions 2400 registered to RootForum 10,000 posts per year An Open Source Project, source available under the LGPL license

Introduction to ROOT5 ROOT: a Framework and a Library User classes User can define new classes interactively Either using calling API or sub-classing API These classes can inherit from ROOT classes Dynamic linking Interpreted code can call compiled code Compiled code can call interpreted code Macros can be dynamically compiled & linked This is the normal operation mode Interesting feature for GUIs & event displays Script Compiler root >.x file.C++

Introduction to ROOT6 ROOT Application Domains Data Storage: Local, Network Data Analysis & Visualization General Framework

Introduction to ROOT7 Three User Interfaces GUI windows, buttons, menus Command line CINT (C++ interpreter) Macros, applications, libraries (C++ compiler and interpreter)

Introduction to ROOT8 CINT Interpreter

Introduction to ROOT9 CINT in ROOT CINT is used in ROOT: As command line interpreter As script interpreter To generate class dictionaries To generate function/method calling stubs Signals/Slots with the GUI The command line, script and programming language become the same Large scripts can be compiled for optimal performance

Introduction to ROOT10 Compiled versus Interpreted  Why compile? ! Faster execution, CINT has limitations…  Why interpret? ! Faster Edit → Run → Check result → Edit cycles ("rapid prototyping"). Scripting is sometimes just easier.  Are Makefiles dead? ! No! if you build/compile a very large application ! Yes! ACLiC is even platform independent!

Introduction to ROOT11 Running Code To run function mycode() in file mycode.C: root [0].x mycode.C Equivalent: load file and run function: root [1].L mycode.C root [2] mycode() All of CINT's commands (help): root [3].h

Introduction to ROOT12 Running Code Macro: file that is interpreted by CINT (.x ) Execute with.x mymacro.C(42) Unnamed macro: no function, just statements – e.g. cannot have arguments..x myunnamed.C int mymacro(int value) { int ret = 42; ret += value; return ret; }

Introduction to ROOT13 Unnamed Macros No functions, just statements Execute with.x mymacro.C No functions thus no arguments! Named macro recommended! Compiler prefers it, too… { float ret = 0.42; return sin(ret); }

Introduction to ROOT14 Running Code – Libraries "Library": compiled code, shared library CINT can call its functions! Building a library from a macro: ACLiC! (Automatic Compiler of Libraries for CINT) +.x mymacro.C(42)+ Use "+" instead of writing a Makefile… CINT knows all functions in mymacro_C.so/.dll mymacro(42)

Introduction to ROOT15 My first session root [0] (const double) e+002 root [1] float x=89.7; root [2] float y=567.8; root [3] x+sqrt(y) (double) e+002 root [4] float z = x+2*sqrt(y/6); root [5] z (float) e+002 root [6].q root root [0] try up and down arrows See file $HOME/.root_hist

Introduction to ROOT16 My second session root [0].x session2.C for N=100000, sum= root [1] sum (double) e+004 Root [2] r.Rndm() (Double_t) e-001 root [3].q root { int N = ; TRandom r; double sum = 0; for (int i=0;i<N;i++) { sum += sin(r.Rndm()); } printf("for N=%d, sum= %g\n",N,sum); } session2.C unnamed macro executes in global scope

Introduction to ROOT17 My third session root [0].x session3.C for N=100000, sum= root [1] sum Error: Symbol sum is not defined in current scope *** Interpreter error recovered *** Root [2].x session3.C(1000) for N=1000, sum= root [3].q root void session3 (int N=100000) { TRandom r; double sum = 0; for (int i=0;i<N;i++) { sum += sin(r.Rndm()); } printf("for N=%d, sum= %g\n",N,sum); } session3.C Named macro Normal C++ scope rules

Introduction to ROOT18 My third session with ACLIC root [0] gROOT->Time(); root [1].x session4.C( ) for N= , sum= e+006 Real time 0:00:06, CP time root [2].x session4.C+( ) for N= , sum= e+006 Real time 0:00:09, CP time root [3] session4( ) for N= , sum= e+006 Real time 0:00:01, CP time root [4].q #include “TRandom.h” void session4 (int N) { TRandom r; double sum = 0; for (int i=0;i<N;i++) { sum += sin(r.Rndm()); } printf("for N=%d, sum= %g\n",N,sum); } session4.C File session4.C Automatically compiled and linked by the native compiler. Must be C++ compliant

Introduction to ROOT19 Macros with more than one function root [0].x session5.C >session5.log root [1].q void session5(int N=100) { session5a(N); session5b(N); gROOT->ProcessLine(“.x session4.C+(1000)”); } void session5a(int N) { for (int i=0;i<N;i++) { printf("sqrt(%d) = %g\n",i,sqrt(i)); } void session5b(int N) { double sum = 0; for (int i=0;i<N;i++) { sum += i; printf("sum(%d) = %g\n",i,sum); } session5.C.x session5.C executes the function session5 in session5.C root [0].L session5.C root [1] session5(100); >session5.log root [2] session5b(3) sum(0) = 0 sum(1) = 1 sum(2) = 3 root [3].q use gROOT->ProcessLine to execute a macro from a macro or from compiled code

Introduction to ROOT20 Generating a Dictionary MyClass.h MyClass.cxx rootcint –f MyDict.cxx –c MyClass.h compile and link libMyClass.so MyDict.h MyDict.cxx

Introduction to ROOT21 Graphics & GUI

Introduction to ROOT22 TPad: main graphics container Hello Root > TLine line(.1,.9,.6,.6) Root > line.Draw() Root > TText text(.5,.2,”Hello”) Root > text.Draw() The Draw function adds the object to the list of primitives of the current pad. If no pad exists, a pad is automatically created with a default range [0,1]. When the pad needs to be drawn or redrawn, the object Paint function is called. Only objects deriving from TObject may be drawn in a pad Root Objects or User objects

Introduction to ROOT23 Basic Primitives TButton TLineTArrow TEllipse TCurvyLine TPaveLabel TPave TDiamond TPavesText TPolyLine TLatex TCrown TMarker TText TCurlyArc TBox

Introduction to ROOT24 Full LateX support on screen and postscript TCurlyArc TCurlyLine TWavyLine and other building blocks for Feynmann diagrams Formula or diagrams can be edited with the mouse Feynman.C latex3.C

Introduction to ROOT25 Graphs TGraph(n,x,y) TCutG(n,x,y) TGraphErrors(n,x,y,ex,ey) TGraphAsymmErrors(n,x,y,exl,exh,eyl,eyh) TMultiGraph gerrors2.C

Introduction to ROOT26 Graphics examples

Introduction to ROOT27

Introduction to ROOT28

Introduction to ROOT29

Introduction to ROOT30 Graphics (2D-3D) “SURF” “LEGO” TF3 TH3 TGLParametric

Introduction to ROOT31 ASImage: Image processor

Introduction to ROOT32 GUI (Graphical User Interface)

Introduction to ROOT33 Canvas tool bar/menus/help

Introduction to ROOT34 Object editor Click on any object to show its editor

Introduction to ROOT35 RIDE widget (future default browser) see $ROOTSYS/test/RootIDE

Introduction to ROOT36 RIDE widget (future default browser)

Introduction to ROOT37 GUI C++ code generator When pressing ctrl+S on any widget it is saved as a C++ macro file thanks to the SavePrimitive methods implemented in all GUI classes. The generated macro can be edited and then executed via CINT Executing the macro restores the complete original GUI as well as all created signal/slot connections in a global way // transient frame TGTransientFrame *frame2 = new TGTransientFrame(gClient- >GetRoot(),760,590); // group frame TGGroupFrame *frame3 = new TGGroupFrame(frame2,"curve"); TGRadioButton *frame4 = new TGRadioButton(frame3,"gaus",10); frame3->AddFrame(frame4); root [0].x example.C

Introduction to ROOT38 The GUI builder provides GUI tools for developing user interfaces based on the ROOT GUI classes. It includes over 30 advanced widgets and an automatic C++ code generator. The GUI Builder

Introduction to ROOT39 More GUI Examples $ROOTSYS/tutorials/gui $ROOTSYS/test/RootShower $ROOTSYS/test/RootIDE

Introduction to ROOT40 Geometry The GEOMetry package is used to model very complex detectors (LHC). It includes -a visualization system -a navigator (where am I, distances, overlaps, etc)

Introduction to ROOT41 OpenGL see $ROOTSYS/tutorials/geom

Introduction to ROOT42 Math libraries

Introduction to ROOT43 Peak Finder + Deconvolutions TSpectrum

Introduction to ROOT44 Fitters Minuit Fumili LinearFitter RobustFitter Roofit

Introduction to ROOT45 Fit Panel

Introduction to ROOT46 Roofit: a powerful fitting framework see $ROOTSYS/tutorials/fit/RoofitDemo.C

Introduction to ROOT47 Input/Output

Introduction to ROOT48 I/O Object in Memory Streamer: No need for transient / persistent classes http sockets File on disk Net File Web File XML XML File SQL DataBase Local Buffer

Introduction to ROOT49 Object Oriented Concepts Members: a “has a” relationship to the class. Inheritance: an “is a” relationship to the class.  Class: the description of a “thing” in the system  Object: instance of a class  Methods: functions for a class TObject JetsTracksEvNum Momentum Segments Charge Event IsA HasA

Introduction to ROOT50 TFile / TDirectory A TFile object may be divided in a hierarchy of directories, like a Unix file system. Two I/O modes are supported Key-mode (TKey). An object is identified by a name (key), like files in a Unix directory. OK to support up to a few thousand objects, like histograms, geometries, mag fields, etc. TTree-mode to store event data, when the number of events may be millions, billions.

Introduction to ROOT51 Self-describing files Dictionary for persistent classes written to the file. ROOT files can be read by foreign readers Support for Backward and Forward compatibility Files created in 2001 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++”);

Introduction to ROOT52 Example of key mode void keywrite() { TFile f(“keymode.root”,”new”); TH1F h(“hist”,”test”,100,-3,3); h.FillRandom(“gaus”,1000); h.Write() } void keyRead() { TFile f(“keymode.root”); TH1F *h = (TH1F*)f.Get(“hist”);; h.Draw(); }

Introduction to ROOT53 A Root file pippa.root with two levels of directories Objects in directory /pippa/DM/CJ eg: /pippa/DM/CJ/h15

Introduction to ROOT54 1 billion people surfing the Web LHC: How Much Data? Level 1 Rate (Hz) High Level-1 Trigger (1 MHz) High No. Channels High Bandwidth (500 Gbit/s) High Data Archive (5 PetaBytes/year) 10 Gbits/s in Data base LHCB KLOE HERA-B CDF II CDF H1 ZEUS UA1 LEP NA49 ALICE Event Size (bytes) ATLAS CMS STAR

Introduction to ROOT55 ROOT Trees

Introduction to ROOT56 Why Trees ?  Trees have been designed to support very large collections of objects. The overhead in memory is in general less than 4 bytes per entry.  Trees allow direct and random access to any entry (sequential access is the best)  Trees have branches and leaves. One can read a subset of all branches.  High level functions like TTree::Draw loop on all entries with selection expressions.  Trees can be browsed via TBrowser  Trees can be analyzed via TTreeViewer

Introduction to ROOT57 Memory Tree Each Node is a branch in the Tree tr T.Fill() T.GetEntry(6) T Memory

Introduction to ROOT58 ROOT I/O -- Split/Cluster Tree version Streamer File Branches Tree in memory Tree entries

Introduction to ROOT59 Writing/Reading a Tree class Event : public Something { Header fHeader; std::list fVertices; std::vector fTracks; TOF fTOF; Calor *fCalor; } main() { Event *event = 0; TFile f(“demo.root”,”recreate”); int split = 99; //maximum split TTree *T = new TTree(“T”,”demo Tree”); T->Branch(“event”,&event,split); for (int ev=0;ev<1000;ev++) { event = new Event(…); T->Fill(); delete event; } t->AutoSave(); } main() { Event *event = 0; TFile f(“demo.root”); TTree *T = (TTree*)f.Get”T”); T->SetBranchAddress(“event”,&event); Long64_t N = T->GetEntries(); for (Long64_t ev=0;ev<N;ev++) { T->GetEntry(ev); // do something with event } Event.h Write.CRead.C

Introduction to ROOT60 8 Branches of T 8 leaves of branch Electrons A double-click to histogram the leaf Browsing a TTree with TBrowser

Introduction to ROOT61 The TTreeViewer

Introduction to ROOT62 TTree Selection Syntax Prints the first 8 variables of the tree. Prints all the variables of the tree. Specific variables of the tree can be explicit selected by list them in column separated list: Prints the values of var1, var2 and var3. A selection can be applied in the second argument: Prints the values of var1, var2 and var3 for the entries where var1 is exactly 0. MyTree->Scan(); MyTree->Scan("*"); MyTree->Scan("var1:var2:var3"); MyTree->Scan("var1:var2:var3", "var1==0");

Introduction to ROOT63 Data Volume & Organisation 100MB1GB10GB1TB100GB100TB1PB10TB TTree TChain A TChain is a collection of TTrees or/and TChains A TFile typically contains 1 TTree A TChain is typically the result of a query to the file catalogue

Introduction to ROOT64 Chains of Trees A TChain is a collection of Trees. Same semantics for TChains and TTrees root >.x h1chain.C root > chain.Process(“h1analysis.C”) { //creates a TChain to be used by the h1analysis.C class //the symbol H1 must point to a directory where the H1 data sets //have been installed TChain chain("h42"); chain.Add("$H1/dstarmb.root"); chain.Add("$H1/dstarp1a.root"); chain.Add("$H1/dstarp1b.root"); chain.Add("$H1/dstarp2.root"); }

Introduction to ROOT65 Tree Friends Public read Public read User Write Entry # 8

Introduction to ROOT66 GRIDs & PROOF

Introduction to ROOT67 From the desktop to the GRID Desktop Local/remote Storage Online/Offline Farms GRID New data analysis tools must be able to use in parallel remote CPUS, storage elements and networks in a transparent way for a user at a desktop

Introduction to ROOT68 GRID: Interactive Analysis Case 1 Data transfer to user’s laptop Optional Run/File catalog Optional GRID software Optional run/File Catalog Remote file server eg xrootd Trees Analysis scripts are interpreted or compiled on the local machine

Introduction to ROOT69 GRID: Interactive Analysis Case 2 Remote data processing Optional Run/File catalog Optional GRID software Optional run/File Catalog Remote data analyzer eg proofd Trees Commands, scripts histograms Analysis scripts are interpreted or compiled on the remote machine

Introduction to ROOT70 GRID: Interactive Analysis Case 3 Remote data processing Run/File catalog Full GRID software Run/File Catalog Remote data analyzer eg proofd Trees Commands, scripts Histograms,trees Trees slave Analysis scripts are interpreted or compiled on the remote master(s)

Introduction to ROOT71 Parallel ROOT Facility The PROOF system allows: Parallel analysis of trees in a set of files Parallel analysis of objects in a set of files Parallel execution of scripts on clusters of heterogeneous machines Its design goals are: Transparency, scalability, adaptability

Introduction to ROOT72 PROOF Storage PROOF farm MASTER  farm perceived as extension of local PC  same syntax as in local session  more dynamic use of resources  real time feedback  automated splitting and merging commands,scripts list of output objects (histograms, …)

Introduction to ROOT73 Sample of analysis activity G. Ganis, CHEP06, 15 Feb 2006 AQ1: 1s query produces a local histogram AQ2: a 10mn query submitted to PROOF1 AQ3->AQ7: short queries AQ8: a 10h query submitted to PROOF2 BQ1: browse results of AQ2 BQ2: browse temporary results of AQ8 BQ3->BQ6: submit 4 10mn queries to PROOF1 CQ1: Browse results of AQ8, BQ3->BQ6 Monday at 10h15 ROOT session on my laptop Monday at 16h25 ROOT session on my laptop Wednesday at 8h40 Browse from any web browser

Introduction to ROOT74 ROOT is MORE…. In this talk, I presented the most basic classes typically used during Physics Analysis. ROOT contains many more libraries, eg FFT library Oracle, MySQL, etc interfaces XML drivers TMVA (Multi Variate Analysis) GRID and networking classes, threads Interfaces to Castor, Dcache, GFAL, xrootd Interfaces to Pythia, Geant3, Geant4, gdml Matrix packages, Fitting packages, etc

Introduction to ROOT75 Documentation Users Guide and Reference Manuals are available at Printed copies of the Users Guide are available in Building 32-R-C13 or 32-R-C16 Enjoy Reading Now Demo