Az adatok feldolgozásához rengeteg szoftver-környezet áll rendelkezésünkre. Ott van a veterránnak számító Matlab/Octave, újabban a számtalan kernellel futtatható Jupyter, a konzervatívabb beállítottságúaknak az RStudio., extravagánsaknak Julia. Sőt, állítólag van egy excel nevű is, de azt valami horror filmben mutatták, nagyon meg is ijedtem tőle.
Mégis van a kutatóknak egy olyan rétege, akik nem ezeket használják. A Cernben a részecskegyorsítók adatait nem a fenti megoldásokkal kezelik. Nekik olyan feldolgozási gyorsaságra van szükségük, amit a szkriptnyelvek nem biztosítanak, ezért megalkották a Root-ot. Persze azt sem szabad elfelejteni, hogy a rendszert 1995-ben kezdték fejleszteni, amikor a Python még pelenkát viselt, az R pedig éppen kibújt a tojásból.
Rendkívül furcsának tűnhet, hogy egy olyan világban, ahol az értelmezett nyelvek virágkorukat élik, valaki C++-t használ adatfeldolgozásra, de ha túl vagyunk az első sokkon, és csak alap funkciókra szorítkozunk, akkor a nyelv használata a meghívott osztályokon túl nem tér el jelentősen a Python osztályok használatától.
Az adat ábrázolási módszerek igen bőségesek, bár érezhető, hogy ki az elsődleges célközönség, ezért felülreprezentáltak a jelfeldolgozó függvények. De rengeteg magas szintű osztály segít abban, hogy saját vizualizációs eljárást implementáljunk, akár OpenGL segítségével is. Itt látszik igazán, hogy a C++ nem is olyan rossz választás. Hiszen, ha az R vagy Python képességeit akarjuk kiterjeszteni, mert az adott területre még nem létezik modul, akkor kénytelenek vagyunk egy másik programozási nyelvet választani. A Root-nál nem. Itt elég, ha csak a C++-t ismerjük. Amit használunk, azzal bővítjük a rendszer képességeit is.
De amin a leginkább meglepődtem, hogy a Root saját GUI fejlesztővel van felszerelve! Igen, jól olvastátok! Aki használt már Visual Basic-et, ahhoz hasonló módon tud felhasználói felületet készíteni. Kereszt platformosan! A QT meg a millió liszensz lehetőségével elmehet a...
Természetesen a Root is halad a korral. Számtalan kapcsolódási lehetősége van más keretrendszerekhez, úgy, mint Python, R, Jupyter, Spark, Ruby.
A fizikusoknak nyilván gazdag numerikus kelléktárat is biztosítani kell, hogy képesek legyenek modelleket alkotni, valamint eszközöket nyújtani a szimulációs adatok generálásához is. Ez utóbbihoz Monte Carlo szimulációs osztályok állnak a kutatók rendelkezésére.
A telepítése rendkívül egyszerű. Először kicsomagoljuk a letöltött állományt, majd létrehozunk egy könyvtárat a binárisoknak. Ezután kiadjuk a könyvtárból a következő parancsot:
cmake path_to_src
make
make install
A konfigurálás alatt rengeteg opciót adhatunk meg. Ha például szeretnénk R-ből használni a Root-ot, akkor a -Dr=on opcióval bekapcsolhatjuk azt (ebben az esetben az Rcpp és az RInside csomagoknak a gépen kell lenniük.) Én három különböző gépre telepítettem (ezek körül az egyik egy HPC környezet volt, fordító nélkül) és minimális problémába ütköztem. Azok is a függőségek hiányából fakadtak. A fordítási idő elég hosszú, több órát is igénybe vehet.
Nézzünk egy példát a rendszer használatára. Rajzoljunk egy denzitás függvényt:
TF1 myfunc("test", "1/sqrt(2*TMath::Pi())*exp(-0.5*x**2)",-3,3);
myfunc.Draw();
A fenti példában a TF1 osztályt használjuk, amivel egy dimenziós függvényeket ábrázolhatunk. A függvényt magát a második paraméterben adjuk meg, majd a tartományt, ahol ábrázolni akarjuk. A második sor maga a rajzolás. Eredményül egy interaktív plotot kapunk, amit tetszés szerint átszabhatunk. Csak nézzük meg az Edit -> Style menüpontot. Akár saját stílust is definiálhatunk. De akár a képet is elmenthetjük klikkelve, vagy módosíthatjuk, ha bekapcsoljuk a Toolbart. Szövegeket és nyilakat helyezhetünk el az ábrán, mintha csak rajzolnánk. R-ben ezt csak parancsokkal lehet megtenni, ami nem mindig öröm. Természetesen erre itt is lehetőség van.
Azért azt sem szabad elfelejteni, hogy a rendszer nem tökéletes. Fórumokon sokan kritizálják, hogy kevés ember fejleszti, kicsi a felhaszálói bázis, ezért egyes hibák sokáig rejtve maradhatnak. Nincs elég oktatói anyag, a C++ kódot értelmező Cint borzalmas memória kezeléssel van megáldva.
Például én is tapasztaltam, hogy az R-ben alkalmazott módszert, hogy a history-ból előhívjuk a korábban begépelt parancsot és lefuttatjuk újra, nem működik. A rendszer kiabál miatta.
De aki nem riad meg a C++-tól és szeretné adatait hatékonyan feldolgozni, esetleg szeretne modellezni, nyugodtan adjon neki egy esélyt.