Introduktion til ROOT


Christian Holm
Niels Bohr Institutet
<cholm@nbi.dk>

Overblik

[Følgende er oversat fra http://root.cern.ch/root/Mission.html]

ROOT systemet giver et sæt af Objekt Orienteret arbejdsrammer (frameworks) med al den funktionalitet der er brug for til at håndtere og analysere store datamængder på en meget effektiv måde. Med datasæt defineret som objekter, bruges specialiserede opbevaringsmetoder til at få adgang til separate egenskaber af brugerudvalgte objekter, uden at skulle røre ved hovedparten af datasættet.

Inkluderet er histogrammerings metoder i 1, 2, og 3 dimensioner, funktionstilpasning (linært og ikke-linært), minimeringsmetoder (Least-square, Log-likelyhood, etc.), grafik, og visualiserings klasser, hvilket tillader et nemt anskueligt analyse system der kan spørge til og processere data enten interaktivt eller i batch.

Takket være den indbygget CINT C++ fortolker, er kommandosproget til scripts og programmeringsproget begge C++. Fortolkeren tillader hurtig udvikling af prototype scripts, som uden større besvær kan laves om til et egentligt programmer. Fortolkeren giver også et godt miljø til at lære C++ i.

Systemet er designet sådan, at det kan stille spørgsmål til dets databaser parallelt på Multi-Processor maskiner, Farme, klynger a arbejdsstationer eller på kraftige desktopmaskiner.

ROOT er et åbent system der kan udvides dynamisk ved at linke eller indlæse eksterne biblioteker.

Alt dette gør at ROOT er en perfekt platform til at bygge dataakvisition-, simulation- og dataanalyse systemer på.

Lidt baggrund

ROOT står for ROOT's Object Oriented Technologies, men navnet kom egentlig af at ROOT var tænkt som "The ROOT of everything" - ikke mere, men heller ikke mindre!

ROOT er udviklet ved CERN af René Brun og Fons Rademarkers i begyndelsen. Siden er flere kommet til og blevet en del af ROOT Team som lige nu tæller 6 personer. Mange andre (42) har bidraget større og mindre dele til ROOT.

Christian Holm [eller jeg] har bidraget med klasserne TPrincipal og TMultiDimFit som er to algoritmer til statistisk behandling og parametersering af multidimensionelle datasæt. Desuden har han [eller jeg] bidraget en del til byggesystemet.

Takket være at kildekoden er tilgængelig og postlisten roottalk@root.cern.ch kommer der også mange bugreporter og -løsninger fra den store brugerskare.

ROOTs brugerskare tæller omkring 100 fysik kollaboration verden over, plus et antal firmaer, og enkelt personer.

Selvom ROOT ikke er OpenSource i OSD-forstanden, på grund af et enkelt klausul i ROOTs Licens vedrørende redistribution af afledt arbejde, så foregår udviklingen meget i Bazaar-stilen.

ROOT kører på mange platforme. De platforme som ROOT tilbyder binære distributioner til er:

Operativ system Chip
Linux i386
Itanium
PPC
Compaq iPAQ Pocket PC
HP-UX HP-UX (?)
Digtal Unix (OSF1)Compaq Alpha
AIX IBM (?)
Solaris Sun SPARC
SGI IRIX SGI
Windows/NT/95/98 i386

Listen er sikkert ikke komplet, for på en hvilken som helst Un*x (det vil sige, lever op til POSIX) skulle der være muligt at kører ROOT, og da kildekoden er tilgængelig (via CVS eller FTP), kan man jo bare forsøge sig. Det er også mulig at bygge RPM og DEB pakker direkte fra kildekoden. Forholdsvis nye RPM'er er tilgængelig.

Endelig findes der en udemærket manual til ROOT.

I forhold til foredraget

Det første eksempel jeg vidste, var at lave et histogram af tilfældige tal trukket fra en Gauss fordeling:

    prompt% root 
      *******************************************
      *                                         *
      *        W E L C O M E  to  R O O T       *
      *                                         *
      *   Version   3.02/01   17 October 2001   *
      *                                         *
      *  You are welcome to visit our Web site  *
      *          http://root.cern.ch            *
      *                                         *
      *******************************************
    
    FreeType Engine v1.x used to render TrueType fonts.
    Compiled with thread support.
    
    CINT/ROOT C/C++ Interpreter version 5.15.15, Sep 30 2001
    Type ? for help. Commands must be C++ statements.
    Enclose multiple statements between { }.
    
    root [0] TH1F* h = new TH1F("h", "Random numbers", 100, 0, 10);
    root [1] TRandom* r = new TRandom
    root [2] for (Int_t i = 0; i < 10000; i++) h->Fill(r->Gaus(5,2))
    root [3] h->Draw()
    <TCanvas::MakeDefCanvas>: created default TCanvas with name c1
  

Det histogram fittede jeg ved at højreklikke på histogrammet, vælge "FitPanel" i dropmenuen, trykke "gaus" på fit panelet og så trykke "Fit". Det gav:

    root [4]  FCN=94.0864 FROM MIGRAD    STATUS=CONVERGED      61 CALLS          62 TOTAL
                       EDM=1.1486e-08    STRATEGY= 1      ERROR MATRIX ACCURATE 
      EXT PARAMETER                                   STEP         FIRST   
      NO.   NAME      VALUE            ERROR          SIZE      DERIVATIVE 
       1  Constant     2.02030e+02   2.58627e+00   9.71957e-03  -7.91212e-06
       2  Mean         4.98734e+00   2.05747e-02   9.79547e-05   7.04231e-03
       3  Sigma        1.95475e+00   1.66673e-02   1.09125e-05   1.06915e-02
  

For at vise fit parameterene på plottet valgte jeg "Options->Show Fit Parameters" på Canvaset (det vindue histogrammet er tegnet i).

Resten af eksemplerne var fra ROOT's tutorials.


Noter:

Gaus fordeling

I C:

     
     A * 1 / srqt(2 * sigma) * exp(pow((x-mean)/sigma, 2);
  

I LATEX:

     A \frac1{\sqrt{2\sigma}} e^{\left(\frac{x - \mu}/\sigma\right)^2}
  

Tilbage til tekst


Valid HTML 4.01!