12.12.2012 Aufrufe

ingo.strauch.diplom - Desy

ingo.strauch.diplom - Desy

ingo.strauch.diplom - Desy

MEHR ANZEIGEN
WENIGER ANZEIGEN

Erfolgreiche ePaper selbst erstellen

Machen Sie aus Ihren PDF Publikationen ein blätterbares Flipbook mit unserer einzigartigen Google optimierten e-Paper Software.

3.2. KONZEPTE IM OO-PROJEKT 19<br />

Die Auswertung der vom Runkatalog zur Verfügung gestellten Daten obliegt dem H1Tree,<br />

welcher in Abschnitt 3.2.3 näher beschrieben wird.<br />

Für den Runkatalog wird eine relationale Datenbank nach dem SQL-Standard (SQL = Standard<br />

Query Language) benutzt. Zur Zeit ist dies MySQL, eine frei verfügbare Datenbank, die unter der<br />

GPL (GNU Public License) steht. Die benötigten Leistungsmerkmale sind verfügbar, das Plus<br />

dieser Wahl liegt darin, einen MySQL-Server ohne kostenpflichtige Lizenzen an externen Instituten<br />

aufsetzen zu können. Am DESY selbst gibt es einen “Master” und einen “Slave” Server<br />

auf verschiedenen Rechnern. Das Replizieren auf einem PC an externen Instituten ist ebenfalls<br />

getestet und durchführbar.<br />

Die Alternative zu MySQL ist Oracle, für das das DESY bereits Lizenzen besitzt. Das Interface<br />

in ROOT unterstützt zur Zeit genau diese beiden Datenbanken, d.h. ein Übergang wäre<br />

transparent. Diese Umstellung auf Oracle ist dann zu erwägen, wenn sich herausstellt, daß an<br />

externen Instituten kein Bedarf für einen Slave-Server besteht, oder wenn mit MySQL nicht noch<br />

ein weiteres System gepflegt und administriert werden soll.<br />

3.2.3 Das zentrale Objekt: der H1Tree<br />

Bei dem H1Tree (siehe auch [Pro] Abschnitt 2) handelt es sich um eine Generalisierung des<br />

TTree von ROOT. Dieser wiederum ist eine Verallgemeinerung des N-Tupel-Prinzips und dient<br />

der Strukturierung und effizienten Speicherung von großen Datenmengen (siehe auch [BRP + 00]).<br />

Die wesentlichen Unterschiede zu einem N-Tupel sind, daß nicht nur Zahlen und Arrays gespeichert<br />

werden können sondern auch Objekte, ein TTree kann auf mehrere Dateien verteilt und<br />

Teile – sogenannte Branche – unabhängig voneinander geladen werden. Genau genommen stellt<br />

ein H1Tree drei parallele Trees dar, die über ein und dasselbe Interface angesprochen werden.<br />

Dabei ist es besonders hilfreich für den Benutzer, daß sich der H1Tree um die Zugriffe<br />

auf die Dateien kümmert. Ein Physiker muß selbst nur noch einen Run/Event Bereich angeben,<br />

wobei es für ihn nicht wichtig ist, in welchen Dateien die Informationen gespeichert sind und<br />

auf welchem Rechner und in welchen Verzeichnissen die Daten physikalisch liegen. Weiterhin<br />

werden nur dann Informationen in den Arbeitsspeicher gelesen, wenn sie auch wirklich angefordert<br />

werden, d.h. es wird nicht generell das gesamte Ereignis eingelesen. Folgendes Beispiel<br />

illustriert, wie dies ausgenutzt werden kann:<br />

Die Listen identifizierter Teilchen auf dem µODS enthalten nicht die kinematischen<br />

Informationen. Ein sogenannter “Smart Pointer” (siehe auch Abschnitt 3.2.4)<br />

verweist auf einen Eintrag in der Liste aller Teilchenkandidaten, von wo aus auf die<br />

kinematischen Eigenschaften zugegriffen werden kann.<br />

Will man nun weitere Schnitte anwenden, die ohne kinematische Information<br />

auskommen, so bietet es sich an, die (u.U. recht große) Liste aller Teilchenkandidaten<br />

erst dann zu laden, nachdem die zusätzliche Selektion stattgefunden hat. Dies<br />

geschieht automatisch wenn die Smart Pointer dereferenziert werden, d.h. auf das<br />

Objekt zugegriffen werden soll, auf das sie verweisen. Die zugehörige Liste muß<br />

also nicht von Hand angefordert werden.

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!