ingo.strauch.diplom - Desy
ingo.strauch.diplom - Desy
ingo.strauch.diplom - Desy
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.