ATLAS Software eine beispielorientierte Einführung Aktuelle Probleme der experimentellen Teilchenphysik WS 2009 / 10 Lehrstuhl für Physik und ihre Didaktik
Athena-Klassen Algorithms Aufruf der Tools und Anwendung der Tools auf Data Objects Möglichst wenige Operationen innerhalb von Algorithmen, Trennung von Tools und Algorithmen (Verzeichnisse) Tools Jede Funktion, die außerhalb des Tools verfügbar sein soll, muss im Interface (Schnittstelle) des Software- Package definiert werden Data Objects Container mit Informationen Services Ermöglichen den Zugriff auf Tools und Data Objects
Beispiele für Packages
Erste Schritte Account unter LXPLUS bash oder zsh-shell ssh -X username@lxplus.cern.ch Erzeugung vom Verzeichnis cmthome im Home-Verzeichnis Editieren einer eigenen requirements-datei set CMTSITE CERN set SITEROOT /afs/cern.ch macro ATLAS_DIST_AREA ${SITEROOT}/atlas/software/dist macro ATLAS_TEST_AREA ${HOME}/testarea use AtlasLogin AtlasLogin-* $(ATLAS_DIST_AREA) Setup von CMT-Version source /afs/cern.ch/sw/contrib/cmt/vlr20p20080222/mgr/setup.sh cmt config Bei jeder neuen Sitzung (Athena-Laufzeitumgebung): source $HOME/cmthome/setup.sh -tag=15.6.1,setup,32 Wechsel ins Verzeichnis $TestArea
Start eines Athena-Jobs Für Standardaufgaben ohne Veränderung des zugrunde liegenden Quellcodes Athena Laufzeitumgebung starten Überprüfung durch type athena (Rückgabe athena.py) Erzeugung eines run-verzeichnisses in $TestArea Job Options in eigenes Verzeichnis kopieren get_files -jo HelloWorldOptions.py Starten des Jobs athena.py HelloWorldOptions.py Job Options als Python-Skripte Grundlagen von Python: Beispiel1, Beispiel2
HelloWorldOptions.py Import von Basis-Klassen, Def. von Package und Algorithmus from AthenaCommon.AlgSequence import AlgSequence job = AlgSequence() from AthExHelloWorld.AthExHelloWorldConf import HelloAlg job += HelloAlg( "HelloWorld" ) # 1 alg, named "HelloWorld" Ausgabe-Level (job.helloworld.outputlevel = INFO) Zahl der Events / Schleifen (theapp.evtmax = 10) Name zur Übergabe von Variablen an Alg. (HelloWorld = job.helloworld) Übergabe von Variablen an Alg. (HelloWorld.MyInt = 42) Übergabe von Variablen an Tool from AthExHelloWorld.AthExHelloWorldConf import HelloTool ToolSvc += HelloTool( "PublicHello" ) HelloWorld.MyPublicHelloTool = ToolSvc.PublicHello HelloWorld.MyPrivateHelloTool = HelloTool( "HelloTool" )
CMT Software ''Configuration Mangement Tool'' Entwickelt am LAL (Linear Accelerator Laboratory) bei Paris Einsatz in physikalischer Grundlagenforschung (LHCb, Virgo, Planck, Auger, GLAST) Organisation der Software in Packages und Verzeichnisse Build-Prozess Tests und Erzeugung von Dokumentation Auswahl der Work Area Verändern der Compiler Optionen ''Aufräumen'' der Binaries Anpassen der Umgebungsvariablen
AFS (Andrew File System) OpenAFS von Transarc / IBM vermarktet Erlaubt Zugang zu Dateien in einer heterogenen, stark verteilten Umgebung bei Authentifizierung durch Kerberos AFS-Zelle: Zusammenfassung von Servern zu einem ''zusammenhängenden'' Dateisystem (z.b. /afs/cern.ch) Cache Manager kopiert / hält ''Datenblöcke'' von empfangenen Dateien im lokalen Speicher Spätere Zugriffe viel schneller als über das Netzwerk Protokolle TCP/IP Zugriffsrechte: ''Access control list'' für jedes Verzeichnis Nutzer-Dateiverzeichnisse unter /afs/cern.ch
SVN Versionsmangement Ersatz von CVS (Concurrent Versioning System) seit 24.05.2009 Vorteile gegenüber CVS Geschwindigkeit (lokale Kopie der Repository Version) Nur komplette, konsistene Änderung am Repository akzeptiert (oder abgelehnt) Unterschiede auf Binary-Ebene darstellbar Unterstützung für verschiedene Repositories Vereinfachung von Verzeichnisverzweigungsstrukturen Verbesserung beim Logging von Revisionen
SVN Repository Struktur ATLAS offline und High Level Trigger: atlasoff Nutzer und Gruppen: atlasuser Dokumente: atlasdocs Versionen (Unterverzeichnisse) eines Package: Trunk: Version mit den letzten Modifikationen von Verzeichnissen cmt, doc, Package, share, src, test Tags: Stabile Version des gesamten Package (Snapshot) Beispiel: MuonHitTest-00-01-02 Branch: Entwicklungsversion basierend auf einer speziellen Tag-Version
Package MuonHitTest: Trunk-Strukur Spezielle Header -Bibliotheken in C++ (z.b. MDTHitsValAlg.h) requirements, setup-skripte Dokumentation Standard JobOption Skripte C++ Quellcode Verzeichnis zu Testzwecken Auflistung von Veränderungen der Software in diesem Package Empfohlen: Erzeugung eines run-verzeichnisses für eigene JobOptions und Ergebnisse
Package MuonHitTest: Check Out Möglichkeit der Veränderung bestehender Software (lokal in Laufzeitumgebung des Nutzers) Anzeige der aktuellen Version (des letzten Tags) cmt show versions MuonSpectrometer/MuonValidation/MuonHitTest Kopie des Package mit Angabe der Version in Verzeichnis $TestArea cmt co -r MuonHitTest-00-00-24 MuonSpectrometer/MuonValidation/ MuonHitTest Veränderung von Quellcode im Verzeichnis $TestArea/MuonSpectrometer/MuonValidation/MuonHitTest/src Im Verzeichnis.../cmt: cmt config (erzeugt setup.sh und Makefile) source setup.sh gmake (Komplieren, neue lokale Binaries)
Package MuonHitTest: Run Ausführen der JobOptions durch athena.py JobOptions.py Beispiel ReadMuonHitTest_AtlasGeo200.py: Include-Files Flags Detektorbeschreibung über GeoModel-Version Input-Files (xxx.pool.root) Zahl von Events Verwendete Algorithmen mit Übergabeparametern Ausgabe-Files mit Format (xxx.root bzw. xxx.aan.root)
Dokumentation: Twiki-Seiten Web-basierte Dokumentation für (große) Kollaborationen WikiNames: Zusammenhängende Wörter mit Großbuchstaben werden automatisch als Thema erkannt und mit Link versehen Modifikationen: Zuerst TWiki-Account Edit / Attach Versionskontrolle Testmöglichkeit Sandbox Beispiel: Validierung der Myonspektrometer-Geometrie mit Package MuonHitTest Erweiterungen durch Plugins, z.b. MathModePlugin, LatexModePlugin
ATLAS- Simulationskette
Event Generation Anhand JobOptions für Z->mu mu get_files -jo MC8.105145.PythiaZmumu.py Verwendung der Athena- Pythia- Schnittstelle Import der Standard-Pythia-Einstellungen (MC8_Pythia_Common.py) Liste von Pythia-Befehlen: "pysubs msel 0" (Nutzer spezifiziert alle Zerfallskanäle selbst) "pysubs msub 1 1" (Harter Prozess zur Erzeugung von Z-Bosonen) "pysubs ckin 1 60.0" (Minimale invariante Masse) "pydat3 mdme 184 1 1" (Auswahl Zerfallskanal Z->mu mu) Schnitt auf Lepton-Pt und Lepton-Eta (LeptonFilter.Ptcut = 5000, LeptonFilter.Etacut = 2.8) Anzahl von generierten Events (evgenconfig.minevents = 100)
Event Generation- Job Transforms Aufruf durch ''transform script'' csc_evgen08new_trf.py mit Param. 105145 (Run number, für physikalischen Prozess) 1 (Erstes Event in Output-Datei) -1 (Maximale Anzahl von Events, hier spez. In JobOptions) 1324354657 (Basis für Zufallszahlengenerator)./MC8.105145.PythiaZmumu.py (JobOptions mit Einstellungen) /tmp/$user/105145.pool.root (Output-Datei) Überprüfung der erzeugten Events durch get_files -jo readgeneventfrompool.py (zunächst Anpassung an vorher erzeugte Output-Datei) athena.py readgeneventfrompool.py > dumpmc.log
Event Generation- Output Ausgabe eines Teils von dumpmc.log:
Simulation und Digitalisierung Transform script csc_simul_trf.py mit Param. 105145.pool.root Input-Datei nach Event Generation hits.pool.root Simulierte Detektor-HITs rdo.pool.root Digitalisierte Dektor-RDOs 2 Zahl der Events 0 Auslassen von Events 1324354656 Basis für Zufallszahlengenerator ATLAS-GEO-06-00-00 Version der Detektor-Beschreibung 100 ''Offset'' Zufallszahlengenerator 1000 ''Offset'' Zufallszahlengenerator
Rekonstruktion Transform script csc_reco_trf.py mit Param. rdo.pool.root RDO-Input (Ergebnis von Digitalisierung) esd.pool.root Ausgabeformat: Event Summary Data aod.pool.root Ausgabeformat: Analysis Object Data ntuple.root Ausgabeformat: Root-NTupel 2 Zahl der Events ATLAS-GEO-06-00-00 Version für Detektorbeschreibung DEFAULT Konfiguration für Trigger
Literatur ATLASRegularComputingTutorial CMTTool AFS-Filesystem CERN TWiki