ROOT - Object Oriented Data Analysis Framework

16. 6. 2004
Doba čtení: 5 minut

Sdílet

Lehké seznámení s prostředím pro analýzu a grafickou prezentaci dat. ROOT na rootu.

Nejprve tu byl PAW

Objektově orientované prostředí pro analýzu a grafickou prezentaci dat ROOT je pokračovatelem prostředí PAW – Physics Analysis Workstation. Projekt PAW je v současné době považován za zastaralý, protože je naprogramován ve Fortranu, a proto se již dále nevyvíjí. ROOT převzal mnoho částí z PAW, a tak většina generovaných obrázků vypadá v ROOTu a PAW stejně hezky. Není ovšem vždy pravda, že vlastnosti ROOTa tvoří superset vlastností PAW. Grafické možnosti PAW jsou v některých oblastech (práce s postscriptem, práce s fonty) lepší. Při návrhu ROOTa byl dán větší důraz na praktičnost než na to, aby podporoval všechny vlastnosti svého předchůdce PAW. Oba dva projekty pochází z laboratoří v CERNu od stejných autorů.

Design

Autoři chtěli použít pro skriptování i vlastní framework stejný programovací jazyk, podobně jak tomu dříve bylo v PAW. Protože základním požadavkem byla objektová orientovanost a snadnější použití prostředí, byl namísto Fortranu vybrán jazyk C++.

Při návrhu prostředí byly použity i myšlenky z jazyka SmallTalk např. společný předek všech objektů TObject, datový slovník tvořící nadstavbu C++ RTTI, kolekce, objektově orientovaný I/O systém.

Scriptování

Vlastní scriptování je prováděno za pomoci C, C++ interpretru CINT. CINT podporuje 95 % jazyka C a 85 % C++. Má však některá nepříjemná omezení, která vám znesnadňují práci v případě požadavku provozovat stejnou verzi programu v kompilované i interpretované verzi. Na CINTu se sice stále pracuje, ale od původní myšlenky mít stejný programovací jazyk pro kompilovanou i interpretrovanou aplikaci se vzhledem ke zbytečné komplikovanosti jazyka C++ už upustilo. CINT je tak v současné době označován jako scriptovací prostředek ROOTu dostatečně kompatibilní s C,C++.

Scriptování v CINTu pracuje výborně v obou směrech: z CINTu lze volat funkce frameworku a z frameworku lze volat funkce v CINTu. Navíc jsou při scriptování využívány běžné vymoženosti scriptovacích jazyků: nemusí se předem deklarovat proměnná, garbage collection, nemusí se používat includy a středníky. Práce s ROOTem je tak mnohem příjemnější než s jeho předchůdcem PAW. Ačkoliv v žádném případě nepatřím mezi fanoušky jazyka C++, překvapilo mne, jak může být práce s CINT interpretovaným C++ příjemná oproti jeho staticky kompilované verzi.

Architektura


ROOT obsahuje přes 310 tříd v 24 frameworcích rozdělených do 14 kategorií. Frameworky velice hezky pokrývají nejen celou oblast předpokládaného praktického nasazení, ale i oblast vývoje ROOT aplikací. Velice hezký je například Object Inspector a Class browser.

Frameworky nejčastěji využívané v praxi jsou:

Programování se nevyhnete

Pokud chcete cokoliv v ROOTu vytvořit, budete si muset zaprogramovat. Přesněji řečeno trochu zascriptovat. Programování kompilovaných ROOT aplikací se v praxi moc nepoužívá. Vzhledem k tomu, že je ROOT opravdu easy-to-use, mívají jednoduché programy tak jednu obrazovku. ROOT nenabízí žádné ready-to-run aplikace out-of-the-box. Velice hezké je, že ROOT obsahuje i standardní knihovní funkce z prostředí C/C++.

Grafické prostředí

ROOT používá svůj vlastní grafický toolkit, aby zajistil pixel-exact multiplatformní zobrazení. V posledních verzích je možné ROOTa volitelně přeložit s podporou Qt toolkitu. Rootův toolkit velmi připomíná Windows-9X systém, pouze tlačítka vypadají trochu jinak. Docela věrně vypadá i Object browser.

Grafický editor

Jedinou věcí, kterou lze občas použít k velmi jednoduchým věcem, je vestavěný editor u objektů typu TCanvas. Spustí se vytvořením TCanvas objektu: na příkazovou řádku ROOTa napište: TCanvas t a v menu Edit spusťte Editor. Celé to pak vypadá takto:


Obsah objektu TCanvas je možné vyexportovat do formátů: ps, eps, pdf, svg, gif, .C (root scriptovací jazyk) a root (Marshalovaný TCanvas objekt).

V ROOTu je možné tvořit také hezké blokové diagramy. Rád tuto vlastnost používám. I když je teoreticky možné tyto diagramy poskládat v grafickém editoru ručně, nedoporučuji to s ohledem na velkou časovou náročnost. Grafický editor v praxi slouží k dodatečným předtiskovým úpravám výstupu z programu.

Čeština není

ROOT narozdíl od svého předchůdce PAW officiálně nepodporuje používání non-ASCII znaků v textech. V některých případech lze docílit českých znaků pomocí textu generovaného třídou TLatex, která bohužel zafunguje jen v případě výstupu do gif, a to ještě ne vždy. Pokud bude vůbec někdy podpora non ASCII znaků v ROOTu, rozhodně to nebude v blízké budoucnosti.

ROOT dema

K ROOTu je dodáváno několik jednoduchých ukázkových aplikací. Výstupy některých z nich si můžete prohlédnout. To, co není na obrázcích vidět, je jejich interaktivita. Grafy je možné zoomovat či otáčet, editovat jednotlivé body, texty je možné ve výše zmíněném editoru upravovat či posouvat. Tyto vlastnosti velice zpříjemňují a hlavně zrychlují práci s ROOTem.

Z obrázků je vidět, že ROOT se nezaměřuje na kvantitu, ale na praktickou použitelnost. Nenajdete v něm tolik typů čar, vybraných barev, typů grafů či histogramů jako v programech primárně zaměřených na grafickou prezentaci dat. V ROOTu lze totiž vše snadno doprogramovat. Barvy použité v color selectoru jsou tzv. offset-safe, česky řečeno optimalizované pro věrný tisk na offsetovém tiskovém stroji.

Dokumentace

Pokud chcete používat ROOTa i k něčemu jinému, než je prohlížení demo aplikací, budete muset nahlédnout do dokumentace. Doporučuji začít studiem uživatelské příručky, která je velmi hezky napsaná, a teprve potom se začít probírat tutoriály.

bitcoin_skoleni

Mailing list

Snad každý projekt má dnes i svůj mailing list, nejinak je tomu i v případě ROOTa, jehož primárním mailing listem je roottalk@cern.ch. Tento mailing list je narozdíl od většiny ostatních velmi přátelský. Nikomu není nadáváno za to, že pokládá začátečnické dotazy, snad na každý problém dostanete hezkou odpověď obvykle obsahující kód, jak to udělat, bug reporty jsou analyzovány a bugy jsou opravovány v CVS verzi řádově v jednotkách hodin, to samé platí i pro easy-to-do feature requesty. Moc příjemná společnost. ROOT se používá téměř výhradně ve vědecké komunitě a je vidět, že s rostoucím IQ uživatelů roste i společenská úroveň diskusí.

Závěr

Hledal jsem program pro analýzu dat a kreslení grafů a diagramů. Poté co jsem se podíval na programy typu GNUPlot, Grace, R, … Tak jsem si nakonec vybral ROOT, protože je to velmi široký a současně snadno použitelný framework, který zvládne všechny typy analýz, které budu i do budoucna potřebovat. Škoda jen té češtiny.

Autor článku