ROOT Tutorial für HEPHY@CERN. D. Liko



Ähnliche Dokumente
ROOT. Schaltungstechnik. Michael Ritzert Vorlesung Tools Heidelberg

Große Übung Praktische Informatik 1

Softwareschnittstellen

Python SVN-Revision 12

BartPE. Dokumentation. Projektarbeit Network Services. Dozent: Wolf-Fritz Riekert. Belmondo Kovac. Autor: Andreas Dinkelacker, 3.

Einführung in wxwidgets & wxdev-c++

Zählen von Objekten einer bestimmten Klasse

C++11 ist da. Und jetzt?

Konzept zur Push Notification/GCM für das LP System (vormals BDS System)

Professionelle Seminare im Bereich MS-Office

Software Engineering. Zur Architektur der Applikation Data Repository. Franz-Josef Elmer, Universität Basel, HS 2015

Positionierungsspiel. Statements und Fragen zu Werbung im Social Web

Hinweise zur Installation von MySQL

Menü auf zwei Module verteilt (Joomla 3.4.0)

Kurzanleitung um Transponder mit einem scemtec TT Reader und der Software UniDemo zu lesen

KIP Druckerstatus Benutzerhandbuch KIP Druckerstatus Installations- und Benutzerhandbuch

2. Semester, 2. Prüfung, Lösung

Listening Comprehension: Talking about language learning

Einrichten einer mehrsprachigen Webseite mit Joomla (3.3.6)

SharePoint 2010 Mobile Access

MobiDM-App Handbuch für Windows Mobile

Version 0.3. Installation von MinGW und Eclipse CDT

Handbuch. Artologik EZ-Equip. Plug-in für EZbooking version 3.2. Artisan Global Software

Lineargleichungssysteme: Additions-/ Subtraktionsverfahren

Konfiguration von Igel ThinClients fu r den Zugriff via Netscaler Gateway auf eine Storefront/ XenDesktop 7 Umgebung

miditech 4merge 4-fach MIDI Merger mit :

Die Programmiersprache Java. Dr. Wolfgang Süß Thorsten Schlachter

Luis Kornblueh. May 22, 2014

Die Captimizer BTZ-Datei 2015

Matrix42. Use Case - Bearbeiten einer Störung unter Verwendung von Inventardaten, Aktionen und Knowledge Base. Version

Android Remote Desktop & WEB

Würfelt man dabei je genau 10 - mal eine 1, 2, 3, 4, 5 und 6, so beträgt die Anzahl. der verschiedenen Reihenfolgen, in denen man dies tun kann, 60!.

Objects First With Java A Practical Introduction Using BlueJ. Mehr über Vererbung. Exploring polymorphism 1.0

L10N-Manager 3. Netzwerktreffen der Hochschulübersetzer/i nnen Mannheim 10. Mai 2016

Matrix42. Use Case - Sicherung und Rücksicherung persönlicher Einstellungen über Personal Backup. Version September

Lösungsvorschlag zum Übungsblatt 1 zur Vorlesung Informatik II / WS2001/02

Klausur in Programmieren

Fotogalerie mit PWGallery in Joomla (3.4.0) erstellen

Customer-specific software for autonomous driving and driver assistance (ADAS)

English. Deutsch. niwis consulting gmbh ( manual NSEPEM Version 1.0

MARCANT - File Delivery System

2. ERSTELLEN VON APPS MIT DEM ADT PLUGIN VON ECLIPSE

Wir machen neue Politik für Baden-Württemberg

Installation und Inbetriebnahme von Microsoft Visual C Express

Objektorientierte Programmierung

Einführung in die Programmierung

Folgende Voraussetzungen für die Konfiguration müssen erfüllt sein: - Ein Bootimage ab Version Optional einen DHCP Server.

Gern beraten wir auch Sie. Sprechen Sie uns an!

EU nimmt neues Programm Mehr Sicherheit im Internet in Höhe von 55 Millionen für mehr Sicherheit für Kinder im Internet an

How-To Guide 002. Wie stelle ich den virtuellen Speicher von Windows ein?

Software-Engineering und Optimierungsanwendungen in der Thermodynamik

Was ist das Budget für Arbeit?

Security Patterns. Benny Clauss. Sicherheit in der Softwareentwicklung WS 07/08

Wenn Russland kein Gas mehr liefert

FLASH. Flash und Video. Flash und Video, macht das Sinn?

Algorithmen mit Python

Programmierung in C. Grundlagen. Stefan Kallerhoff

Java: Vererbung. Teil 3: super()

Schrittweise Anleitung zur Erstellung einer Angebotseite 1. In Ihrem Dashboard klicken Sie auf Neu anlegen, um eine neue Seite zu erstellen.

Eclipse User Interface Guidelines

Rapide An Event-Based Architecture Definition Language

WEBSEITEN ENTWICKELN MIT ASP.NET

Beispiel 2a Die eigenen ersten Schritte mit dem Gnu-Debugger GDB für Remote-Debugging


Der Wetterbericht für Deutschland. Read the weather reports and draw the correct weather symbols for each town.

Tutorial Moodle 2 Rollenzuweisung

Xcode/Cocoa/Objective-C Crashkurs Programmieren unter Mac OS X

wie / warum, wann, Braucht die Schweiz zum Heizen mehr oder weniger als ein Drittel der Gesamtenergie?

Übersicht. Wo lebt die Schildkröte? Wie programmiert man die Schildkröte? Wo lebt die Schildkröte? Wie programmiert man die Schildkröte?

Unigraphics Schnittstelle entfernen

Eclipse 3.0 (Windows)

Brainfuck. 1 Brainfuck. 1.1 Brainfuck Geschichte und Umfeld. 1.2 Esoterische Programmiersprachen

Frankfurt,

MORE Profile. Pass- und Lizenzverwaltungssystem. Stand: MORE Projects GmbH

Arbeiten mit UMLed und Delphi

MSXFORUM - Exchange Server 2003 > SMTP Konfiguration von Exchange 2003

Der Begriff Cloud. Eine Spurensuche. Patric Hafner geops

Anleitung zum GUI Version 2.x

Softwareupdate-Anleitung // AC Porty L Netzteileinschub

Braucht Social TV ein neues Interface? Felix Segebrecht

SARA 1. Project Meeting

Installation und Start der Software AQ2sp Installation and Start of the software AQ2sp

Für AX 4.0, den letzten Hotfix rollup einspielen. Der Hotfix wurde das erste Mal im Hotfix rollup eingeschlossen:

Grundbegriffe der Informatik

Installationsanweisung editit

12. Vererbung. Prof. Dr. Markus Gross Informatik I für D-ITET (WS 03/04)

Schritt 1. Anmelden. Klicken Sie auf die Schaltfläche Anmelden

Géoservices - Nouveautés 2012 ou tout ce que l IFDG peut faire pour vous

Technische Dokumentation SilentStatistikTool

versus Christian Grobmeier

Discovery Tool für COMbricks PROCENTEC

Howto. Einrichten des TREX Monitoring mit SAP Solution Manager Diagnostics

EinfÅhrung in die objektorientiere Programmierung (OOP) unter Delphi 6.0. EDV Kurs 13/2

Daten haben wir reichlich! The unbelievable Machine Company 1

Contents. Interaction Flow / Process Flow. Structure Maps. Reference Zone. Wireframes / Mock-Up

SEW Übung EMFText. 1 Aufgabe. 2 Domänenbeschreibung. 3 Installation von Eclipse/EMFText. 4 Schritt-für-Schritt Anleitung. 4.

Klausur BWL V Investition und Finanzierung (70172)

Scala kann auch faul sein

Webseiten und Web-Apps grafisch gestalten mit HTML5 Canvas ohne Flash und sonstige Tools

Freie Bildung: Web2.0-Tools als Türöffner für die Wirtschaft

Transkript:

ROOT Tutorial für HEPHY@CERN D. Liko

Was ist ROOT? Am CERN entwickeltes Tool zur Analyse von Daten Funktionalität in vielen Bereichen Objekte C++ Skriptsprachen

Was kann ROOT

Verschiedene Aspekte C++ as script language with interpreter CINT Also python and ruby GUI for interactive visualization(tcanvas, TBrowser,...) I/O and analysis of large amountof data(tfile, TTree,...) Histograming, plotting, fits(th1x, TGraph, TF1,...) Physics and mathematics(tmatrix, TLorentzVector, TMath,..) Objectorganisation(TCollection, TDirectory, TFolder,...) Parallel analysis via network(tproof) Vieles mehr http://root.cern.ch hat alle Dokumentation

Setup ROOT Environment Variable PATH LD_LIBRARY_PATH ROOTSYS

Hello ROOT 1 [heplx02] /scratch/liko/workbook/cmssw_3_3_1 $ root ******************************************* * * * W E L C O M E to R O O T * * * * Version 5.22/00d 27 July 2009 * * * * You are welcome to visit our Web site * * http://root.cern.ch * * * ******************************************* ROOT 5.22/00d (branches/v5-22-00-patches@29532, Sep 25 2009, 00:59:00 on linux) CINT/ROOT C/C++ Interpreter version 5.16.29, Jan 08, 2008 Type? for help. Commands must be C++ statements. Enclose multiple statements between { }. root [0] cout << "Hello World" << endl; Hello World root [1] printf("hello World\n"); Hello World

Hello Root 2 root [0] TCanvas *c = new TCanvas("canvas1","Hello World Canvas",600,400) root [1] c->cd() root [2] TText *t = new TText(0.5, 0.5, "Hallo Welt") root [3] t->draw()

root [0].x HelloWorld.C ROOT Scripte

Objekt Orientiert Wenn man etwas in ROOT machen will, muss man Objekte benutzen Objekt wird durch eine Klasse definiert Attribute Methoden

Inheritance TFile TRFIOFile TNetFile

Beispiel TFile * input = new Tfile::Open( http://... ) TFile is the main class that provides the interface TFile has a Factory Method Actual implementation is TNetFile

Shared Libraries Main Root Program Extension A Extension B

Histogramme Ein Histogramm ist eine komfortable Art Daten darzustellen und zu speichern. Im Prinzip besteht es aus einer Achse, die einen minimalen und ein maximalen Wert hat. Die Achse ist in eine Anzahl von Abschnitten (Bins) aufgeteilt ist, für die es jeweils einen Zähler gibt. Wenn man nun einen Wert in das Histogramm einfüllt, wird der Abschnitt gesucht, in den der Wert fällt, und dessen Zähler dann um eins erhöht. Man speichert also nicht mehr die Werte an sich sondern nur die Häufigkeiten, mit denen ein Wert innerhalb eines bestimmten Abschnittes vorkommt.

Beispiel Histogramm TCanvas *c = new TCanvas("canvas3", "Beispiel Histogram", 600, 400); c->cd(); TH1D *hist1d = new TH1D("hist1D", "Erstsemester", 10, 15., 25.); double werte[20] = {18., 17., 18., 18., 19., 23., 19., 18., 19., 18., 20., 21., 20., 18., 19., 20., 18., 19., 18., 18.}; for(int i = 0; i < 20; i++) { hist1d->fill(werte[i]); } hist1d->getxaxis()->settitle("alter (Jahren)"); hist1d->getyaxis()->settitle("anzahl"); hist1d->draw();

2D Histogramm TCanvas *c = new TCanvas("canvas4", "Beispiel 2D Histogram", 600, 400); c->cd(); TH2D *hist2d = new TH2D("hist2D", "Erstsemester 2D", 10, 15., 25., 10, 1.60, 2.00); double alter[20] = {18., 17., 18., 18., 19., 23., 19., 18., 19., 18., 20., 21., 20., 18., 19., 20., 18., 19., 18., 18.}; double groesse[20] = {1.76, 1.68, 1.90, 1.72, 1.87, 1.64, 1.78, 1.82, 1.75, 1.70, 1.72, 1.79, 1.80, 1.75, 1.89, 1.68, 1.77, 1.77, 1.87, 1.72}; for(int i = 0; i < 20; i++) { hist2d->fill(alter[i], groesse[i]); } hist2d->getxaxis()->settitle("alter (Jahren)"); hist2d->getyaxis()->settitle("groesse (m)"); hist2d->getzaxis()->settitle("anzahl"); hist2d->draw("lego2");

Daten mit Fehlern double zeit[4] = {2., 4., 6., 8.}; double geschw[4] = {10., 12., 15., 19.}; double geschwfehler[4] = {1., 1.2, 1.6, 1.4}; TGraphErrors *gr = new TGraphErrors(4, zeit, geschw, 0, geschwfehler); gr->settitle(""); gr->setmarkerstyle(22); gr->getxaxis()->settitle("zeit (s)"); gr->getyaxis()->settitle("geschwindigkeit (m/s)"); gr->draw("ap");

Ntuple and TTree Ntuple Most simple structure to store data Data are Tuples Ttree Advanced data structure to store all kind of Objects Ntuples Histograms, Canvas, etc Event Data

Create and Examine Ntuple root $ROOTSYS/tutorials/hsimple.C ******************************************* * * * W E L C O M E to R O O T * * * * Version 5.22/00d 27 July 2009 * * * * You are welcome to visit our Web site * * http://root.cern.ch * * * ******************************************* ROOT 5.22/00d (branches/v5-22-00-patches@29532, Sep 25 2009, 00:59:00 on linux) CINT/ROOT C/C++ Interpreter version 5.16.29, Jan 08, 2008 Type? for help. Commands must be C++ statements. Enclose multiple statements between { }. root [0] Processing /afs/hephy.at/project/cms/software/slc4_ia32_gcc345/lcg/root/5.22.00dcms//tutorials/hsimple.c... hsimple : Real Time = 65.46 seconds Cpu Time = 0.46 seconds

$ROOTSYS/tutorials/tree/ntuple1.C

What is python? Python is an interpreted, object-oriented, highlevel programming language with dynamic semantics. Its high-level built in data structures, combined with dynamic typing and dynamic binding, make it very attractive for Rapid Application Development, as well as for use as a scripting or glue language to connect existing components together.

Python Hello World [heplx02] /scratch/liko/workbook/cmssw_3_3_1 $ python Python 2.4.2 (#1, Mar 4 2008, 22:56:43) [GCC 3.4.5] on linux2 Type "help", "copyright", "credits" or "license" for more information. >>> print "hello World" hello World >>>

Python and ROOT ROOT and Python are often used together Same objects Different syntax python $ROOTSYS/tutorials/pyroot/hsum.py