Środowisko do Analizy Danych Obiektowo Orientowane. Izabela Ciepał Instytut Fizyki Jądrowej PAN Kraków



Podobne dokumenty
Podstawy ROOTa. Maciej Trzebiński. Praktyki studenckie na LHC IFJ PAN. Instytut Fizyki Jądrowej Polskiej Akademii Nauk. M. Trzebiński ROOT 1/26

ROOT III (I/O+TTree+TNtuple)

Modelowanie obiektowe - Ćw. 1.

MentorGraphics ModelSim

PODSTAWOWE ZASADY PROGRAMOWANIA OBIEKTOWEGO NA BAZIE PAKIETU ROOT

Praktyki studenckie na LHC IFJ PAN, 5 lipca 2017

BIBLIOGRAFIA W WORD 2007

Programowanie obiektowe

KARTA KURSU. Programowanie obiektowe

5.4. Tworzymy formularze

1. Wprowadzenie. 1.1 Uruchamianie AutoCAD-a Ustawienia wprowadzające. Auto CAD Aby uruchomić AutoCada 14 kliknij ikonę

Dariusz Brzeziński. Politechnika Poznańska, Instytut Informatyki

Qtiplot. dr Magdalena Posiadała-Zezula

INSTYTUT FIZYKI JĄDROWEJ

Cel: Przypisujemy przyciskom określone funkcje panel górny (Panel1)

Prezentacja multimedialna MS PowerPoint 2010 (podstawy)

OPROGRAMOWANIE UŻYTKOWE

Ćwiczenie 1: Pierwsze kroki

Tematy lekcji informatyki klasa 4a styczeń 2013

Edytor tekstu OpenOffice Writer Podstawy

Dodawanie i modyfikacja atrybutów zbioru

Programowanie Obiektowe GUI

Prezentacja multimedialna MS PowerPoint 2010 (podstawy)

narzędzie Linia. 2. W polu koloru kliknij kolor, którego chcesz użyć. 3. Aby coś narysować, przeciągnij wskaźnikiem w obszarze rysowania.

Tworzenie prezentacji w MS PowerPoint

Kadry Optivum, Płace Optivum

Lekcja 1: Origin GUI GUI to Graficzny interfejs użytkownika (ang. GraphicalUserInterface) często nazywany też środowiskiem graficznym

Wizualne systemy programowania. Wykład 11 Grafika. dr Artur Bartoszewski -Wizualne systemy programowania, sem. III- WYKŁAD

Laboratorium 1 Temat: Przygotowanie środowiska programistycznego. Poznanie edytora. Kompilacja i uruchomienie prostych programów przykładowych.

Tutorial prowadzi przez kolejne etapy tworzenia projektu począwszy od zdefiniowania przypadków użycia, a skończywszy na konfiguracji i uruchomieniu.

Podstawy Programowania Obiektowego

Rys. 1. Rozpoczynamy rysunek pojedynczej części

SPIS ILUSTRACJI, BIBLIOGRAFIA

I. Program II. Opis głównych funkcji programu... 19

Programowanie obiektowe

Utworzenie aplikacji mobilnej Po uruchomieniu Visual Studio pokazuje się ekran powitalny. Po lewej stronie odnośniki do otworzenia lub stworzenia

Podstawy tworzenia prezentacji w programie Microsoft PowerPoint 2007

Następnie zdefiniujemy utworzony szkic jako blok, wybieramy zatem jak poniżej

Technologie i usługi internetowe cz. 2

Delphi podstawy programowania. Środowisko Delphi

Rys. 1. Główne okno programu QT Creator. Na rysunku 2 oznaczone zostały cztery przyciski, odpowiadają kolejno następującym funkcjom:

WYKONANIE APLIKACJI OKIENKOWEJ OBLICZAJĄCEJ SUMĘ DWÓCH LICZB W ŚRODOWISKU PROGRAMISTYCZNYM. NetBeans. Wykonał: Jacek Ventzke informatyka sem.

Jak utworzyć plik SIO dla aktualnego spisu?

Google Earth. Co to jest Google Earth? Co to jest KML? Skąd można pobrać Google Earth?

Programowanie obiektowe

Rozdział 4: PIERWSZE KROKI

Programowanie współbieżne Wykład 8 Podstawy programowania obiektowego. Iwona Kochaoska

Programowanie obiektowe

Ustalanie dostępu do plików - Windows XP Home/Professional

I Tworzenie prezentacji za pomocą szablonu w programie Power-Point. 1. Wybieramy z górnego menu polecenie Nowy a następnie Utwórz z szablonu

Finanse VULCAN. Jak wprowadzić fakturę sprzedaży?

Nowy interfejs w wersji 11.0 C8 BETA

Tablet bezprzewodowy QIT30. Oprogramowanie Macro Key Manager

Papyrus. Papyrus. Katedra Cybernetyki i Robotyki Politechnika Wrocławska

Zajęcia nr 15 JavaScript wprowadzenie do JavaScript

Sekretariat Optivum. Jak przygotować listę uczniów zawierającą tylko wybrane dane, np. adresy ucznia i jego opiekunów? Projektowanie listy

Program współpracuje z : Windows XP, Powerdraft 2004, v8, XM, Microstation 2004, v8, XM.

6.4. Efekty specjalne

Baltie 3. Podręcznik do nauki programowania dla klas I III gimnazjum. Tadeusz Sołtys, Bohumír Soukup

RYSUNEK TECHNICZNY I GEOMETRIA WYKREŚLNA INSTRUKCJA DOM Z DRABINĄ I KOMINEM W 2D

Wprowadzenie do Doctrine ORM

Programowanie na poziomie sprzętu. Programowanie w Windows API

Makropolecenia w PowerPoint Spis treści

Misja #1 Poznajemy Prophio.

Wykład 8: klasy cz. 4

Laboratorium 9 (Więcej Aktywności, w Androidzie)

Podstawy technologii WWW

Java: otwórz okienko. Programowanie w językach wysokiego poziomu. mgr inż. Anna Wawszczak

Ćwiczenie 5 Animacja tekstu

Expo Composer Garncarska Szczecin tel.: info@doittechnology.pl. Dokumentacja użytkownika

MS Access formularze

Projektowanie baz danych za pomocą narzędzi CASE

Menu Plik w Edytorze symboli i Edytorze widoku aparatów

SZYBKI START DLA IGSS FREE50 - PRZEWODNIK

Podstawowe operacje na chmurze punktów pochodzących z lotniczego skaningu laserowego

ROZSZERZANIE MOŻLIWOŚCI...

Diagramy klas. dr Jarosław Skaruz

JAVA. Java jest wszechstronnym językiem programowania, zorientowanym. apletów oraz samodzielnych aplikacji.

I. WSTĘP. Przykład 1. Przykład 2. Programowanie czyli tworzenie programów komputerowych (aplikacji komputerowych)

Gdy z poziomu programu Delphi otworzysz folder pierwszy program, zauważysz tylko dwa pliki [rys.1]:

Programowanie w środowisku graficznym GUI

Makropolecenia w Excelu

Program MS PowerPoint umożliwia tworzenie prezentacji z wykorzystaniem trzech podstawowych sposobów:

Celem ćwiczenia jest zapoznanie się z podstawowymi funkcjami i pojęciami związanymi ze środowiskiem AutoCAD 2012 w polskiej wersji językowej.

Wykład 9: Polimorfizm i klasy wirtualne

Poniżej przedstawiono przykład ich zastosowania dla najprostszego obiektu 3D kostki.

Z nowym bitem Zajęcia komputerowe dla szkoły podstawowej. Wymagania na poszczególne oceny szkolne dla klasy IV

Laboratorium 1 - Programowanie proceduralne i obiektowe

Opis szybkiego uruchomienia programu APBSoft

Funkcje i instrukcje języka JavaScript

Tworzenie oprogramowania

Przed rozpoczęciem pracy otwórz nowy plik (Ctrl +N) wykorzystując szablon acadiso.dwt

Korzystanie z edytora zasad grupy do zarządzania zasadami komputera lokalnego w systemie Windows XP

Grafika komputerowa. Zajęcia IV

Laboratorium 8 ( Android -pierwsza aplikacja)

POLSKI. Macro Key Manager Podręcznik użytkownika

1. Wstawianie macierzy

Instytut Mechaniki i Inżynierii Obliczeniowej Wydział Mechaniczny Technologiczny Politechnika Śląska

Transkrypt:

Środowisko do Analizy Danych Obiektowo Orientowane Izabela Ciepał Instytut Fizyki Jądrowej PAN Kraków

Środowisko do Analizy Danych Obiektowo Orientowane Plan: 1. Co to jest ROOT? 2. Programowanie OO. 3. Główne elementy/obiekty. 4. Co potrafi ROOT drzewa ntuple, dopasowanie funkcji, cięcia graficzne, analiza danych.

Co to jest ROOT? System ROOT jest to Obiektowo Orientowane (OO) środowisko, którego funkcjonalności pozwalają na przechowywanie danych, jak i ich efektywną analizę. Dane są definiowane jako zestaw obiektów, do których możemy sięgać przy pomocy istniejących metod oraz funkcji. bazuje na językach programowania C++ (interpreter) i C, kod opensource (jest dostępny za darmo), przeznaczony do obiektowej analizy dużych zbiorów danych, ciągle i aktywnie rozwijany przez wielu ludzi, elastyczność jest związana ze złożonością manual jest obszerny (ponad 300 stron), istnieje wiele poradników i kursów w internecie. 3

Programowanie Obiektowo Orientowane Klasa ENCJA/BYT (ang. Entity): atrybuty, operacje, Relacje (ang. Relations) relacje między encjami, Obiekt instancja klasy/encji (zbiór obiektów opisywanych tymi samymi cechami) Model E/R (Entity/Relations) Struktura logiczna systemu graficzny język zapisu UML 4

Programowanie Obiektowo Orientowane Zapis UML-owy: diagram klas cechy klasy usługi danej klasy: funkcje i metody 5

Programowanie Obiektowo Orientowane Cechy OO : Klasy Dziedziczenie Polimorfizm Hermetyczność 7

Programowanie Obiektowo Orientowane Dziedziczenie przykład: 8

Podstawowe obiekty w ROOT THistogram przedstawienie graficzne danych 1D, 2D lub 3D TTree - gałęzie, liście, - bardziej skomplikowany format danych, - przechowuje informacje o każdym zdarzeniu NTupla - pojedyncza gałąź + liście TFile - przechowuje dane w dowolnej postaci tj. histogramów, grafów, drzew. Makro (nie jest obiektem) - plik zawierający zestaw komend wykonywanych przez interpreter GUIs Graphical User Interface nakładka graficzna, nie trzeba znać komend 10

Jak tworzymy obiekty danej klasy? bez wskaźnika z użyciem wskaźnika Pies_domowy kajtek; kajtek Szczekaj(); Pies_domowy *mojpies; Pies_domowy kajtek; Pies_domowy = & kajtek; mojpies Szczekaj(); dynamicznie Pies_domowy *mojpies = new Pies_domowy() ; mojpies Szczekaj(); delete mojpies; 11

Co to jest ROOT? strona www ROOT-a: http://root.cern.ch/ - wiele przykładów, poradników, informacja o dostępnych klasach, metodach i funkcjach, kod źródłowy (do ściągnięcia) RootTalk mailing list - bardzo pomocna kurs Fermilab ROOT: http://www-root.fnal.gov/root/ kurs SLAC ROOT: http://www.slac.stanford.edu/bfroot/www/doc/workbook /root1/root1.html 12

Zadanie 1: Proszę uruchomić ROOT-a oraz zakończyć jego działanie. WSKAZÓWKI: http://root.cern.ch/ Documentation User's Guide ROOT User's Guide Pro version 5.34.00 Getting Started 13

Documentation User's Guide ROOT User's Guide Pro version 5.34.00 Getting Started root [] linia komend 14

TBrowser nawigator w ROOT root [0] new TBrowser; 15

TBrowser rootfile rootfile 16

TBrowser rootfile Ikony reprezentujące różne typy spektr/obiektów profile, 1-D histogram, 2-D histogram, N-tuple 17

TBrowser 18

Histogramy 19

Histogram 1D 20

Histogram 1D bin histogramu 21

TCanvas - obiekty Tytuł hist. Histogram Statystyka Y-axis Frame Canvas X-axis 22

TPad 23

Zadanie 2: Proszę stworzyć obiekt c1 klasy TCanvas : 1. o nazwie MyCanvas, 2. o wielkości 400 x 600 px, 3. podzielony na 4 pady, 4. na 3 padzie proszę umieścić napis Hallo World!, 5. ustawić rozmiar czcionki na 0.15 6. narysować ten obiekt WSKAZÓWKI http://root.cern.ch/ Documentation User's Guide ROOT User's Guide Pro version 5.34.00 Getting Started 24 https://root.cern.ch/root/html/tutorials/graphics/canvas.c.html

ODPOWIEDŹ: root [] TCanvas c1("c1", "MyCanvas", 600, 400); root [] c1.divide(2,2); root [] c1.cd(3); root [] TText t1(0.05,0.8, Hello World! ); root [] t1.settextsize(0.15); root [] t1.draw(); 25

Zadanie 3: Proszę wygenerować (przy użyciu FillRandom()) histogram, będący rozkładem Gaussa dla 5 000 zdarzeń o dowolnej szerokości rozkładu i wartości oczekiwanej. WSKAZÓWKI http://root.cern.ch/ Documentation User's Guide ROOT User's Guide Pro version 5.34.00 Histograms 26

tworzenie histogramu 1D ODPOWIEDŹ: root[ ] TH1F h1("h1","rozklad Gaussa",100,-3,3); root[ ] h1.fillrandom("gaus",10000); root[ ] h1.draw( E ); 27

Histogram 1D zmiana wyglądu histogramu aktywny histogram kolor hist. 28

Histogram 1D zmiana wyglądu histogramu aktywny histogram rodzaj wypełnienia 29

Histogram 1D zmiana wyglądu histogramu tytuł histogramu 30

Histogram 1D zmiana wyglądu histogramu zmiana binowania i zakresu 31

Zadanie 4: Proszę zmienić dla histogramu z poprzedniego zadania: 1. kolor, 2. wypełnić go teksturą, 3. wpisać tytuł, 4. zmienić binowanie, 5. zrobić zoom WSKAZÓWKI http://root.cern.ch/ Documentation User's Guide ROOT User's Guide Pro version 5.34.00 Getting Started 32

Histogram 2D tworzenie histogramu 2D root [ ] TH2F mojhist("h_nazwa", "h_tytul", 5, 0., 5., 5, 0.,5.); root [ ] mojhist.fill(0,0); root [ ] mojhist.draw("colz"); root [ ] mojhist.fill(4,4); root [ ] mojhist.fill(4,1); root [ ] mojhist.fill(1,4); root [ ] mojhist.draw("colz"); 33

Dopasowywanie funkcji do danych (Data Fitting) Zadanie 5: Do wygenerowanego w zadaniu 3 histogramu, proszę dopasować funkcję rozkładu Gaussa, z użyciem: 1. interfejsu graficznego (Tools-> Fit Panel), 2. linii komend (h1->fit("gaus","v","e1",-1,1.5)) http://root.cern.ch/ Documentation User's Guide ROOT User's Guide Pro version 5.34.00 Fitting Histograms 1 x - [1] 2 [2] - ( [0] e ) 34

Dopasowywanie funkcji do danych (Data Fitting) Funkcje dostępne w ROOT: "gaus" gaus = p0*exp(-0.5*pow((x-p1)/p2),2) "expo" expo = exp(p0+p1*x) "poln" poln = p0 + p1*x + p2*pow(x,2) + p3*... Parametry dopasowania: root[ ] TF1 *gfit = (TF1 *)h1->getfunction("gaus"); root[ ] gfit->getparameter(0); root[ ] gfit->getparameter(1); root[ ] gfit->getparerror(0); root[ ] double par[3]; root[ ] gfit->getparameters(par); 35

Dopasowywanie funkcji do danych (Data Fitting) Funkcje zdefiniowane przez użytkownika: root[ ] root[ ] root[ ] root[ ] TF1 *fu = new TF1("f1", "sin(x)/x", 0, 10); TF1 *fd = new TF1("f2", "f1 * 2", 0, 10); fu->draw(); fd->draw("same"); 36

Dopasowywanie funkcji do danych (Data Fitting) Zadanie 6: Do histogramu hfs, proszę: 1. dopasować funkcję sinusoidalną korzystając z linii komend, 2. wyświetlić parametry tego dopasowania 3. narysuj legendę http://root.cern.ch/ http://root.cern.ch/ Documentation Documentation User's Guide ROOT User's Guide Pro version 5.34.00 Fitting Histograms Fit Statistics User's Guide ROOT User's Guide Pro version 5.34.00 Graphics Legends 37

Dopasowywanie funkcji do danych (Data Fitting) ODPOWIEDŹ: root[ ] TF1 *fu = new TF1("f1","[0]*sin([1]*x+[2])",-20,20); root[ ] fu->setparameter(0,80); root[ ] fu->setparameter(1,0.5); root[ ] fu->setparameter(2,10); root[ ] hfs->fit("f1"); root[ ] gstyle->setoptfit(1111); TLegend *legend =new TLegend(.75,.80,.95,.95); legend->addentry(hfs,"dane"); legend->addentry(f1,"fit"); legend->draw(); 38

TTree & NTuple TTree jest to struktura, która przechowuje dane w postaci tzw. zdarzenie po zdarzeniu (ang. event by event ), TChain łańcuch/lista zbiorów Roota, TNtuple dziedziczy po TTree - jedna gałąź drzewa. 39

TTree & TNtuple Co można zrobić z drzewem/ntuplą? 1. mamy dostęp do każdego zdarzenia, gdy analizujemy dane 2. możemy tworzyć różne wykresy/zależności 1D oraz 2D. 3. możemy nakładać/definiować różne cięcia (ang. Cut) 4. możemy tworzyć dowolne histogramy pod zdefiniowanymi przez nas warunkami/cięciami 5. Ntuple/drzewa są wygodniejsze od histogramów, bo można przy pomocy ich liści (TLeaf) tworzyć dowolne zależności i nie trzeba za każdym razem sortować danych, co jest bardzo czasochłonne 40

TTree & TNtuple Zadanie 7: Proszę otworzyć plik root dp_eksperyment.root : 1. zlokalizować drzewo, gałęzie, liście, 2. uruchomić TreeViewer, 42

TTree & TNtuple Kilka gałęzi: gałęzie TBranch liście TLeaf 43

TTree & TNtuple Kilka gałęzi: prawy przycisk myszy i StartViewer 44

TTree & TNtuple opcje rysowania gałęzie cięcia (TCut) wyrażenia liście przeciągamy liście, aby narysować histogram rysujemy histogram 45

TTree & TNtuple Zadanie 8: 1. Proszę narysować histogram 1D dla zmiennych Event.fEn1, Event.fTh1, za pomocą: a) interfejsu graficznego, b) linii komend. 2. Proszę zapisać uzyskany histogram jako plik.root oraz.pdf. 46

TTree & TNtuple Histogram 1D: 1.wybieramy zmienną i przeciągamy ją 2.klikamy 47

TTree & TNtuple Histogram 1D: 1.wybieramy zmienną i przeciągamy ją 3.histogram! 2.klikamy 48

TTree & TNtuple ODPOWIEDŹ: z linii komend: root [ ] TFile f ("dp_eksperyment.root"); root [ ] TTree *T = (TTree*)f Get("T"); root [ ] TCanvas *mycanvas = new TCanvas(); root [ ] T->Draw("Event.fEn1"); 49

TTree & TNtuple Histogram 2D: 1.wybieramy 1-szą zmienną i przeciągamy ją 2.wybieramy 2-gą zmienną i przeciągamy ją 3.klikamy 50

TTree & TNtuple Histogram 2D: 2.wybieramy 2-gą 4.histogramzmienną! i przeciągamy ją 51

TTree & TNtuple Zadanie 9: 1. Proszę narysować histogram 2D bazując na liściach z gałęzi Event: Event.fdE1_conv vs. Event.fEn1 za pomocą: a) interfejsu graficznego, b) linii komend. 2. Proszę zapisać uzyskany histogram jako plik.root oraz.pdf. 52

TTree & TNtuple ODPOWIEDŹ: z linii komend: root [ ] TFile f ("dp_eksperyment.root"); root [ ] TTree *T = (TTree*)f Get("T"); root [ ] TCanvas *mycanvas = new TCanvas(); root [ ] T Draw("Event.fdE1_conv:Event.fEn1"); 53

Zadanie 10: 1. Proszę przygotować histogram Event.fdE1_conv vs. Event.fEn1 do dalszej pracy w następujący sposób: a) użyć opcji colz, b) ustawić skalę osi X : 0-180, c) ustawić skalę osi Y: 0-900, d) zmienić binowanie obu osi. 2. Proszę zapisać uzyskany histogram jako plik.root oraz.pdf. 54

REZULTAT: 55

Cięcia graficzne (Graphical Cuts) Pozwala na zdefiniowanie określonego, zamkniętego obszaru histogramu: 56

Cięcia graficzne (Graphical Cuts) Klikamy w kolejne punkty histogramu i tworzymy zamknięty obszar: 57

Cięcia graficzne (Graphical Cuts) Efekt końcowy: 58

Cięcia graficzne (Graphical Cuts) Zapisujemy cięcie: 59

Cięcia graficzne (Graphical Cuts) Zapisujemy dwukrotnie z rozszerzeniem.root oraz.c: 60

Cięcia graficzne (Graphical Cuts) Jak zobaczyć cięcie? linia komend: root [ ] TFile f("c1.root"); root [ ] TGraph *g = (TGraph*)f->Get("CUTG"); root [ ] g->draw("al"); GUI: 1. root [ ] new TBrowser; 2. StartViewer 3. Event.fdE1_conv vs. Event.fEn1 4. root [ ].x mycut.c 61

Rysowanie histogramów pod różnymi warunkami 62

Rysowanie histogramów pod różnymi warunkami 63

Rysowanie histogramów pod różnymi warunkami 64

Proste makra w ROOT Makro zestaw poleceń/komend, które potrafi przeczytać interpreter; Makro to plik z rozszerzeniem nazwa.c: - można używać poleceń takich jak w linii komend, - język programowania C++ (Object Oriented) lub C. Makro uruchamiamy z linii komend: root [ ].x mojemakro.c 66

Proste makra w ROOT Otwieramy proste makro o nazwie mojemakro1.c: W tym celu należy: 1. > emacs mojemakro1.c & 2. każde makro zawiera: { otwarcie } zamknięcie Pomiędzy tymi nawiasami znajdują się instrukcje dla Root. Odwolujemy się do pliku dp_eksperyment.root oraz korzystamy z metody Ttree::Draw. 67

Proste makra w ROOT Draw( wyrazenie, warunki, opcje ); wyrazenie= e1, e1:e2 lub e1:e2:e3, co odpowiada histogramom 1-D, 2-D 3-D warunki = "x<y && sqrt(z)>3.2", Używamy operatorów: ==, +, *,!, &&, opcje= colz 68

Dziękuję za uwagę :) Izabela Ciepał Instytut Fizyki Jądrowej PAN Kraków izabela.ciepal@ifj.edu.pl Prezentacja przygotowana w ramach Warsztaty 3N 69