The root system a data access analysis framework
This presentation is the property of its rightful owner.
Sponsored Links
1 / 40

The ROOT System A Data Access & Analysis Framework PowerPoint PPT Presentation


  • 63 Views
  • Uploaded on
  • Presentation posted in: General

The ROOT System A Data Access & Analysis Framework. Graphics. 3-4-5 June 2003 Ren é Brun/EP. http://root.cern.ch. The Graphics libraries. Basic principles TPad, list of primitives Painting, Picking 2-D, 3-D primitives. ROOT libs. R O O T. CERNLIB. ls -l $ROOTSYS/lib.

Download Presentation

The ROOT System A Data Access & Analysis Framework

An Image/Link below is provided (as is) to download presentation

Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.


- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -

Presentation Transcript


The root system a data access analysis framework

The ROOT SystemA Data Access & Analysis Framework

Graphics

3-4-5 June 2003

René Brun/EP

http://root.cern.ch

ROOT courses


The graphics libraries

The Graphics libraries

Basic principles

TPad, list of primitives

Painting, Picking

2-D, 3-D primitives

ROOT courses


The root system a data access analysis framework

ROOT corses


Root libs

ROOT libs

R O O T

CERNLIB

ls -l $ROOTSYS/lib

ls -l /cern/pro/lib

203856 libASImage.so

1273308 libCint.so

5658143 libCore.so

419481 libEG.so

152912 libEGPythia.so

160874 libEGPythia6.so

162181 libEGVenus.so

326000 libGX11.so

183065 libGX11TTF.so

2306421 libGeom.so

158895 libGeomPainter.so

1019977 libGpad.so

1602106 libGraf.so

1028762 libGraf3d.so

3669409 libGui.so

1605344 libHbook.so

1940222 libHist.so

332268 libHistPainter.so

114970 libHtml.so

167670 libMC.so

580851 libMatrix.so

319945 libMinuit.so

268321 libMySQL.so

21981 libNew.so

88438 libPgSQL.so

336736 libPhysics.so

196318 libPostscript.so

576691 libProof.so

681086 libRFIO.so

2017467 libRGL.so

177657 libRint.so

35410 libSRPAuth.so

1120731 libTable.so

312785 libThread.so

1067715 libTree.so

356186 libTreePlayer.so

409350 libTreeViewer.so

155664 libX3d.so

1434404 libgrafX11.a

1046944 libgraflib.a

4981896 libkernlib.a

2002460 libmathlib.a

11849762 libpacklib.a

4350440 libpawlib.a

TOTAL = 25.2 MBytes

TOTAL = 30.7 MBytes

ROOT corses


Gui graphics strategy

Gui/Graphics strategy

User/Root GUI

and Graphics classes

Applications see only

Abstract Interfaces

High level

pad graphics

TVirtualPad

Low level

screen graphics

and GUI

TVirtualX

TPad

TGWin32

TGQt

TG??

TGX11

TGWin32GDK

ROOT corses


Coordinate systems

Coordinate Systems

  • Pixel coordinates [0,32000] (TVirtualX)

    • (0,0) at top left corner

  • NDC (Normalized Device Coordinates)

    • [0,1], (0,0) at bottom left corner

    • System used for annotations

  • Normal User coordinates (TVirtualPad)

    • Linear/Log scale in x,y,z

    • Can switch between lin/log scale without calling Draw again.

  • TVirtualPad/TPad have functions to convert between systems

ROOT corses


Tpad main graphics container

TPad: main graphics container

Root > TLine line(.1,.9,.6,.6)

Root > line.Draw()

Root > TText text(.5,.2,”Hello”)

Root > text.Draw()

Hello

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

ROOT corses


Tpad hierarchy

TPad hierarchy

A primitive in the pad can be another pad.

The top level pad is a TCanvas.

A pad has an associate pixmap.

Painting is in the pixmap. When the pad must be redrawn, the pixmap is flushed to the window

canvas

pad1a

pad1

pad2

pad3

The pixmap is flushed when the pad is declared “modified” and TPad::Update called

ROOT corses


The root system a data access analysis framework

ROOT corses


Canvas pixmaps

Canvas pixmaps

Need Help?

Scroll bars

1200x800

600x400

ROOT corses


Saving a pad canvas

Saving a pad/canvas

  • A pad/canvas may be saved in many formats using the GUI menu or via TPad::SaveAs

    • canvas.C : a C++ script is automatically generated. The canvas may be generated again via .x canvas.C

    • canvas.ps(eps) Postscript or encapsulated ps

    • canvas.svg : scalable vector graphics

    • canvas.gif

    • canvas.root: keep objects in a compressed and portable format.

ROOT corses


Graphics in batch mode

Graphics in Batch mode

  • No changes required to your program

  • X11 libs are not loaded

  • Can produce output with .ps,.eps,.svg,.root

  • example:

    • canvas.SavesAs(“file.ps”)

ROOT corses


Picking graphics event loop

Picking- Graphics event loop

TCanvas::HandleInput manages the event loop. When the mouse moves to a pad, TPad::Pick is called.

TPad::Pick loops on all primitives in the pad, calling their function DistancetoPrimitive. The selected object is the one with the smallest distance.

Activate the tool bar option “ShowEventStatus” to understand the behaviour.

ROOT corses


Picking graphics event loop1

Picking- Graphics event loop

When an object has been selected by DistancetoPrimitive, its ExecuteEvent function is called.

The result of ExecuteEvent is object dependent. The cursor changes shape to suggest possible actions : grow/shrink/move box, rotation, etc.

Pressing the right mouse button on an object shows its context menu.

ROOT corses


The graphics event loop

The Graphics Event Loop

  • The ROOT event handler supports:

    • keyboard interrupts

    • system signals

    • X11, Xt, Xm events

    • Sockets interrupts

    • Special messages (shared memory, threads..)

  • Foreign systems (eg Inventor, X3d..) can easily be integrated in the ROOT loop.

    • ROOT will dispatch the foreign events using Timers.

  • Signals and Slots like in Qt

    • Qt and ROOT can work together

ROOT corses


Basic primitives

Basic Primitives

TLine

TArrow

TEllipse

TButton

TBox

TCurvyLine

TDiamond

TText

TPave

TMarker

TPavesText

TCrown

TPaveLabel

TCurlyArc

TPolyLine

TLatex

ROOT corses


The graphics editor

The Graphics Editor

See HELP button

to use the graphics editor

ROOT corses


Graphics attributes

Graphics attributes

Most Root classes derive from very light weight data objects classes like TAttLine, TAttFill, TAttMarker, TAttText

ROOT corses


Annotations paves

Annotations, Paves

quarks.C

ROOT corses


The root system a data access analysis framework

Full LateXsupport on screen and postscript

latex3.C

Formula or

diagrams can be

edited with the mouse

Feynman.C

TCurlyArc

TCurlyLine

TWavyLine

and other building blocks for Feynmann diagrams

ROOT corses


Graphs

Graphs

TGraphErrors(n,x,y,ex,ey)

TGraph(n,x,y)

gerrors2.C

TCutG(n,x,y)

TMultiGraph

TGraphAsymmErrors(n,x,y,exl,exh,eyl,eyh)

ROOT corses


Graphs1

Graphs

zdemo.C

ROOT corses


Graphics 1 2 3 d functions

Graphics : 1,2,3-D functions

FittingDemo.C

surfaces.C

TF3 f3(“f3”,”sin(x*x+y*y+z*z-36)”,-2,2,-2,2,-2,2);

f3->Draw();

ROOT corses


Tgaxis

TGaxis

gaxis.C

ROOT corses


Adding dynamic objects to a pad

Adding dynamic objects to a pad

A TExec object may be added to the pad. Its Paint function can call any CINT command.

DynamicSlice.C

ROOT corses


Using timers with graphics

Using Timers with graphics

Double_t pi = TMath::Pi();

TF2 *f2;

Float_t t = 0;

Float_t phi = 30;

void anim() {

gStyle->SetFrameFillColor(42);

TCanvas *c1 = new TCanvas("c1");

c1->SetFillColor(17);

f2 = new TF2("f2","sin(2*x)*sin(2*y)*[0]",0,pi,0,pi);

f2->SetParameter(0,1);

f2->SetNpx(15);

f2->SetNpy(15);

f2->SetMaximum(1);

f2->SetMinimum(-1);

f2->Draw("surf1");

TTimer *timer = new TTimer(20);

timer->SetCommand("Animate()");

timer->TurnOn();

}

void Animate() {

t += 0.05*pi;

f2->SetParameter(0,TMath::Cos(t));

phi += 2;

gPad->SetPhi(phi);

gPad->Modified();

gPad->Update();

}

anim.C

Every 20 milliseconds:

-Modify the function parameter

-Change the view angle

ROOT corses


More on timers with graphics

More on Timers with Graphics

{

// run the dancing Hello World

Hello hello;

// run the analog clock

Aclock clock;

// run the Tetris game

Tetris tetris;

}

The 3 canvases

run in parallel

games.C

ROOT corses


Gui user example

GUI User example

Example of GUI

based on ROOT tools

Each element

is clickable

ROOT corses


Gui examples

GUI Examples

ROOT corses


Graphical user interface ex zeus event display

Input modes

Zoom controls

Option tabs

Status information

Canvas

Pads

Object information

Graphical User InterfaceEx: ZEUS event display

ROOT corses


Fish eye view

Fish-eye View

ROOT corses


Tasimage classes

TASImage classes

New set of image processing classes. The TImage class is the abstract image base class and TASImage is the concrete implementation using the libAfterImage imaging library of Sasha Vasko <[email protected]>.

A large part of the development was done by Reiner Rohlfs from the ISDC based on a set of astrophysics user requirements.

The image class allows for the reading and writing of images in different formats, several image manipulations (scaling, tiling, merging, etc.) and displaying in pads. The size of the image on the screen does not depend on the original size of the image but on the size of the pad.Therefore it is very easy to resize the image on the screen by resizing the pad.

Galaxy_image.C

Rose_image.C

ROOT corses


3 d graphics

3-D Graphics

  • Basic primitives

    • TPolyLine3D, TPolyMarker3D, THelix, TMarker3DBox,TAxis3D

  • Geant primitives

    • Support for all Geant3 volumes + a few new volume types

    • TBRIK,TCONE,TCONS,TCTUB,TELTU,TGTRA,THYPE,TPARA,TPCON, TPGON,TSPHE,TTUBE,TTUBS,TTRAP,TTRD1,TTRD2,TXTRU

  • Geometry package

  • Rendering with:

    • TPad

    • X3D (very fast. Unix only. Good on networks)

    • OpenGL

    • OpenInventor (new addition in 3.01)

ROOT corses


Some detectors in root geometry

Some detectors in ROOT geometry

ROOT corses


Alice

Alice

3 million nodes

ROOT corses


The root system a data access analysis framework

ROOT corses


Interfaces with other systems

Interfaces with other systems

  • RootPython interface by Pere Mato

    • http://root.cern.ch/root/R2002/Program.html

  • JavaRoot by Subir Sarkar

    • http://sarkar.home.cern.ch/sarkar/jroot/main.html

  • The ROOT interface to Mathematica

    • http://mathroot.sourceforge.net

  • and many more, see;

    • http://root.cern.ch/root/ExApplications.html

ROOT corses


Rootpython pere mato

RootPython (Pere Mato)

RootModule

TObjectWrap

TObject

TClassWrap

TClass

Python

interpreter

CINT

TMethodWrap

TMethod

Boost.Python

TCArrayWrap

Other

ROOT

Libraries

TROOTWrap

ROOT corses


Javaroot

JavaRoot

http://sarkar.home.cern.ch/sarkar/jroot/main.html

Extend Java with Root libraries

  • Java gets a matured HistogramingAPI,Fittingand Physics analysis classes, a HEP specificSocket programming API

  • Root reaches an even wider audience, finds a number of interpreter and scripting environments that are (re)implemented in Java (Jython, BeanShell etc.)

Jython

BeanShell

NetRexx

Jacl

J

A

V

A

J

N

I

R

O

O

T

ROOT corses


Cint vs java python jython

CINT vs Java/Python/Jython

CINT: 280 Rootmarks

JAVA: 105 Rootmarks

JYTHON: 52 Rootmarks

ROOT corses


  • Login