09.03.2013 Aufrufe

Folien

Folien

Folien

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.

Schaltungstechnik<br />

und Simulation<br />

gnuplot & ROOT<br />

Michael Ritzert<br />

michael.ritzert@ziti.uni-heidelberg.de<br />

Vorlesung „Tools“<br />

Heidelberg<br />

02.12.2011


gnuplot<br />

• Tool zum 2- und 3-dimensionalen Plotten von Daten:<br />

Funktionen und Datenfiles.<br />

• Einfache Fits von Funktionen<br />

• Viele Ausgabeformate:<br />

– Auf Bildschirm,<br />

– Postscript,<br />

– Bitmap (JPEG, PNG, GIF, ...),<br />

– EPS + LaTeX (sehr nützlich für Papers, etc.),<br />

– EMF (für Powerpoint-Präsentationen)<br />

– Noch VIEL mehr...<br />

• Hauptsächlich Steuerung über Kommandozeile.<br />

Details zu Befehlen immer mit help Befehl.<br />

Fast alle Befehle können viel mehr als hier gezeigt...<br />

• http://www.gnuplot.info<br />

Galerie: http://gnuplot.sourceforge.net/demo_4.5/<br />

LS Schaltungstechnik<br />

gnuplot & ROOT<br />

& Simulation<br />

2


• gnuplot starten mit<br />

> gnuplot<br />

• Einfache 2D-Plots:<br />

> plot Funktion<br />

• „Übliche“ Funktionen sofort<br />

verfügbar. Potenz x y mit x**y.<br />

• Achsen skalieren:<br />

> set xrange [­20:20]<br />

ebenso yrange, zrange, cbrange<br />

• Y-Achse skaliert per default<br />

automatisch, x-Achse nur bei<br />

Plots aus Daten-Files.<br />

• Mehrere Plots:<br />

ein plot-Befehl, Funktionen mit<br />

Komma getrennt.<br />

• Kurzformen fast aller Befehle.<br />

gnuplot : erste Plots<br />

LS Schaltungstechnik<br />

gnuplot & ROOT<br />

& Simulation<br />

3


gnuplot : Datenfiles plotten<br />

• Üblich: Text-File als Input (binary möglich)<br />

• Kürzeste Form:<br />

plot 'Datei' (with lines title "Titel")<br />

• Beliebige Anzahl Spalten, mit Leerzeichen getrennt<br />

Adressierung über using.<br />

• Mehrere Datensätze pro Datei mit zwei Leerzeilen getrennt.<br />

Addressierung über index.<br />

• Kommentare mit # am Zeilenanfang.<br />

• DEMO<br />

– Datenfile plotten, verschiedene Spalten und Blöcke<br />

– Plot-Stile<br />

– 2. y-Achse<br />

• Besondere Dateinamen:<br />

– '': gleiche Datei wie zuvor<br />

– '­': lies von Kommandozeile. Ende mit e.<br />

1 1 1<br />

2 4 8<br />

3 9 27<br />

4 16 64<br />

1 1<br />

2 1.41<br />

3 1.73<br />

4 2<br />

LS Schaltungstechnik<br />

gnuplot & ROOT<br />

& Simulation<br />

4


• Angabe mit „with“ nach der<br />

zu plottenden Funktion.<br />

• Linien, Punkte, Flächen.<br />

lines, points,<br />

linespoints,<br />

filledcurve<br />

• Treppen, Histogramme,<br />

Fehlerbalken.<br />

steps, boxes,<br />

errorbars<br />

• Farben<br />

linecolor rgb 'name'<br />

(ohne with)<br />

• Eigene Stile (Kombinationen<br />

von Eigenschaften)<br />

definieren mit set style.<br />

gnuplot : Plotstile<br />

LS Schaltungstechnik<br />

gnuplot & ROOT<br />

& Simulation<br />

5


gnuplot : Rechnen mit Werten aus Spalten<br />

• gnuplot kann nach Belieben mit Werten rechnen, auch aus<br />

mehreren Spalten.<br />

• Die Syntax ist using mit () um das Argument, das berechnet<br />

werden soll. Die Spalten werden mit $1, $2, ... angesprochen.<br />

• $0 ist ein Sonderfall: Nummer des aktuelles Punkts (ab 0).<br />

• plot 'Datei' using 3:($1+sqrt($2)) with lines<br />

• Funktionen können auch vorher definiert werden:<br />

squaredSum(a,b)=sqrt(a**2+b**2)<br />

LS Schaltungstechnik<br />

gnuplot & ROOT<br />

& Simulation<br />

6


• Überschrift über dem Plot:<br />

set title "Text"<br />

gnuplot : Beschriftungen, Dekorationen<br />

• Achsenbeschriftung:<br />

set xlabel "Text". Ebenso für y, cb, etc.<br />

• Legende:<br />

set key on/off zum ein-/ausschalten<br />

set key bottom left oder set key at x,y<br />

• Striche an Achsen:<br />

(un)set xtics, etc. zum ein-/ausschalten<br />

• Textlabels im Plot:<br />

set label "Text" at x,y<br />

• Pfeile im Plot:<br />

set arrow from x1,y1 to x2,y2<br />

• Änderungen übernehmen (letzten plot-Befehl mit neuen<br />

Einstellungen ausführen):<br />

replot<br />

LS Schaltungstechnik<br />

gnuplot & ROOT<br />

& Simulation<br />

7


gnuplot : Beispiele für Fits<br />

• fit Funktion 'Datensatz' via var1, var2, ...<br />

• Anfangswerte für Variablen: einfach vorher zuweisen<br />

var1=42<br />

• Nach dem Fit: Variablen entsprechen dem Fit-Ergebnis.<br />

• Bereich einschränken:<br />

fit [von:bis] ...<br />

• Gewichte können aus einer 3. Spalte gelesen werden.<br />

einfach using um 1 Spalte erweitern.<br />

• Probleme bei sehr großen oder kleinen Zahlen!<br />

(groß/klein: >~10 10 ,


• einfachster 3D-Plot:<br />

plot ... with image<br />

• x-y-Matrix in 2D, z-Werte<br />

farbcodiert.<br />

• Farbbalken als Legende für z-<br />

Werte. Angesprochen als<br />

colorbox (cb).<br />

• In Datenfiles:<br />

3 Spalten für x, y, z.<br />

Matrix muss vollständig und<br />

sortiert sein!<br />

• oder matrix<br />

gnuplot : Einfache 3D-Plots<br />

LS Schaltungstechnik<br />

gnuplot & ROOT<br />

& Simulation<br />

9


• eigener Befehl für 3D-Plots:<br />

splot<br />

• für „bunte“ Plots:<br />

set pm3d<br />

• unabhängige Variablen:<br />

x und y<br />

• In Datenfiles:<br />

3 Spalten,<br />

x-Blöcke mit Leerzeilen<br />

getrennt<br />

• oder<br />

matrix<br />

gnuplot : echte 3D-Plots<br />

LS Schaltungstechnik<br />

gnuplot & ROOT<br />

& Simulation<br />

10


gnuplot : parametrische Plots<br />

• parametrischer Plot: Keine Funktion von x, sondern x und y<br />

abhängig von einem weiteren Parameter.<br />

• In parametrischen Modus:<br />

set parametric<br />

⇒ t ist jetzt die unabhängige Variable.<br />

• plot-Befehl nimmt zwei Funktionen für x(t) und y(t), mit Komma<br />

getrennt:<br />

plot [0:2*pi] sin(t),cos(t)<br />

LS Schaltungstechnik<br />

gnuplot & ROOT<br />

& Simulation<br />

11


gnuplot : weitere Tricks<br />

• Kurve sieht eckig aus? Anzahl Punkte erhöhen:<br />

set samples #<br />

• Kein Taschenrechner zur Hand? gnuplot hilft:<br />

gnuplot> print sqrt(24792) + 725 ** 0.274<br />

163.532362408873<br />

• Andere Spaltentrenner (z.B. CSV):<br />

set datafile separator ","<br />

• Formatierung der Achsenbeschriftungen:<br />

set format [x|y|...] "Formatstring"<br />

z.B. "%.1s %c" für Zahlen mit 1 Nachkommastelle und SI-<br />

Präfix.<br />

LS Schaltungstechnik<br />

gnuplot & ROOT<br />

& Simulation<br />

12


gnuplot : Ausgabe in Datei<br />

• Zuerst Ausgabeformat („Terminal“) festlegen. Hier: Postscript<br />

set term postscript enhanced color solid<br />

Jedes Terminal hat viele Optionen ⇒ help<br />

• Dann Ausgabedatei öffnen:<br />

set out "Datei.ps"<br />

• Plot ausgeben<br />

replot<br />

• Datei schließen(!)<br />

set out<br />

LS Schaltungstechnik<br />

gnuplot & ROOT<br />

& Simulation<br />

13


gnuplot : Zusammenspiel mit LaTeX<br />

• epslatex Terminal: 2 Ausgabedateien:<br />

– Grafische Elemente als EPS,<br />

– Text als TeX.<br />

• In TeX wird die .tex-Datei eingebunden, die .eps-Datei wird dann<br />

automatisch geladen.<br />

• Für pdflatex: .eps mit epstopdf nach .pdf wandeln.<br />

• (Zur Zeit noch? ¹) Probleme mit der Breite von LaTeX-Text<br />

⇒ viel Handarbeit nötig: Breite der Legende, Position der<br />

Achsenbeschriftungen, etc.<br />

¹ http://sourceforge.net/tracker/index.php?<br />

func=detail&aid=3434978&group_id=2055&atid=352055<br />

LS Schaltungstechnik<br />

gnuplot & ROOT<br />

& Simulation<br />

14


gnuplot : Batch<br />

• Üblicherweise werden gnuplot-Befehle aus Skript-Dateien<br />

ausgeführt.<br />

– Analysen müssen oft wiederholt mit verschiedenen Daten<br />

durchgeführt werden. Die benötigten Einstellungen und Funktionen<br />

werden dann nur 1x geschrieben und wiederverwendet.<br />

• Dazu werden einfach die Befehle untereinander in eine Textdatei<br />

geschrieben.<br />

• Zum Ausführen:<br />

– gnuplot auf der Kommandozeile den Namen der Datei übergeben.<br />

Springt sofort zurück auf die Kommandozeile nach Beendigung,<br />

außer gnuplot wird mit -persist aufgerufen.<br />

– gnuplot starten und load “Datei.gnuplot“ eingeben.<br />

Liest die Datei in der aktuellen Sitzung ein.<br />

LS Schaltungstechnik<br />

gnuplot & ROOT<br />

& Simulation<br />

15


ROOT<br />

• DAS Allround-Tool der Teilchenphysiker<br />

• Plotting, Datenspeicherung, Datenanalyse (Histogramme).<br />

• Interface über C++-Interpreter(!)<br />

– Auf der Kommandozeile: Relativ laxe Syntax.<br />

– ROOT-Skripte lassen sich auch compilieren.<br />

• Hier wird nur ein WINZIGER Teil des Funktionsumfangs<br />

vorgestellt.<br />

• http://root.cern.ch/<br />

LS Schaltungstechnik<br />

gnuplot & ROOT<br />

& Simulation<br />

16


• ROOT starten mit<br />

> root<br />

ROOT : erste Plots<br />

• im Pool: /opt/root­5.28/bin/root<br />

• Funktion definieren:<br />

> f = new TF1( "f", "sin(x)<br />

* x", ­10., 10. );<br />

Argumente:<br />

Name der Funktion<br />

Funktion<br />

min x, max x<br />

Beachte: kein Typ für f angegeben.<br />

• Funktion sich zeichnen lassen:<br />

> f­>Draw();<br />

• Mehrere Plots: Mehrere Funktionen<br />

definieren, jede Funktion mit<br />

Draw() zeichnen. Zweite und<br />

weitere Funktionen mit Option<br />

"SAME".<br />

Farben manuell setzen über<br />

f­>setLineColor( kGreen );<br />

LS Schaltungstechnik<br />

gnuplot & ROOT<br />

& Simulation<br />

17


ROOT : Plots<br />

• Plots sind nicht unbedingt einfach, aber der Funktionsumfang ist<br />

riesig.<br />

– Ableitungen, Integrale (numerisch)<br />

– Fits!<br />

• Plots (und andere Objekte im Canvas) können angeklickt<br />

werden.<br />

– Zeichenstil ändern<br />

– Fits mit GUI ausführen<br />

• Wichtige Funktion: Beenden von ROOT:<br />

.q oder exit();<br />

LS Schaltungstechnik<br />

gnuplot & ROOT<br />

& Simulation<br />

18


ROOT : Plots aus Datei<br />

• Dateiformat: Zeilenweise Datensätze, mehrere Spalten<br />

• Option1: Mit TGraph (per Default nur 2 Spalten):<br />

g = new TGraph( "file.dat" );<br />

g­>Draw( "ALP" );<br />

Optionen: http://root.cern.ch/root/html/TGraphPainter.html<br />

• Option2: mit TTree:<br />

– Zuerst in einen TTree einlesen (Spaltennamen sp1, sp2, sp3)<br />

t = new TTree();<br />

t­>ReadFile( "file.dat", "sp1:sp2:sp3" );<br />

(beliebige, sinnvolle(!) Namen für Spalten)<br />

– Dann die interessanten Spalten zeichnen. Format: y:x.<br />

t­>Draw( "sp2:sp1", "", "line" );<br />

Rechnen in der Spaltenliste ist möglich.<br />

(2. Argument wird später erklärt)<br />

Optionen: http://root.cern.ch/root/html/THistPainter.html (viele...)<br />

LS Schaltungstechnik<br />

gnuplot & ROOT<br />

& Simulation<br />

19


ROOT : Histogramme<br />

• Übliche Anwendung von ROOT:<br />

Messdaten werden in .root-Dateien gespeichert und (meist<br />

offline) ausgewertet.<br />

• .root-Datei: Kann alle ROOT-Objekte beinhalten. Funktionen,<br />

Histogramme, ..., und Trees.<br />

• TTree: Liste von Einträgen gleichen (beliebig komplexen) Typs,<br />

üblicherweise Messdaten<br />

• Sehr einfaches Erstellen von Histogrammen aus TTrees.<br />

– Statistiken über die Häufigkeit von Einträgen. 1D und 2D.<br />

– Verschiedenste Zeichenstile.<br />

– Filtern nach (komplexen) Kriterien.<br />

LS Schaltungstechnik<br />

gnuplot & ROOT<br />

& Simulation<br />

20


ROOT : Zu zeichnende Daten filtern<br />

• ROOT kann Einträge aus einem Tree nach beliebigen<br />

Eigenschaften auswählen.<br />

• Sehr wichtige Funktion, da die wenigstens Daten in der Reinform<br />

sofort zu verwenden sind.<br />

• Das Kriterium (der „Cut“) wird der Draw()-Funktion von TTree<br />

als 2. Argument übergeben.<br />

t­>Draw( "sp2:sp1", "sp3>42", "line" );<br />

• C++-Syntax. Also z.B. und-Verknüpfung:<br />

"sp3>42 && sin(sp1/sp2)


ROOT : Histogramm aus Tree berechnen<br />

• Häufigkeitsverteilung eines<br />

Eintrags als Histogramm<br />

darstellen.<br />

T­>Draw( "Spalte",<br />

"Bedingung" );<br />

• Ergebnis ist ein neues<br />

Histogramm mit Default-<br />

Namen htemp.<br />

LS Schaltungstechnik<br />

gnuplot & ROOT<br />

& Simulation<br />

22


ROOT : 3D-Histogramme<br />

• Einfach mehrere Spalten angeben und passende Plotoption<br />

auswählen, z.B. LEGO oder COL2.<br />

LS Schaltungstechnik<br />

gnuplot & ROOT<br />

& Simulation<br />

23


ROOT : Fits<br />

• Einfachste Möglichkeit: Über Rechtsklick auf ein Histogramm und<br />

„Fit-Panel“.<br />

• Zu fittende Funktion auswählen aus vordefinierter Liste,<br />

z.B. „gaus“ (ohne Parameter!),<br />

oder selbst eingeben: Parameter [0], [1], etc.<br />

Gerade a*x+b: [0]*x + [1] (oder pol1)<br />

• Fit-Ergebnis im Plot anzeigen:<br />

Options->Fit Parameters im Menü.<br />

• Auf der Kommandozeile:<br />

zunächst eine Funktion (TF1) definieren.<br />

Dann den Fit durchführen:<br />

o­>Fit( "Funktion" );<br />

(o kann ein Histogramm oder ein TGraph sein).<br />

LS Schaltungstechnik<br />

gnuplot & ROOT<br />

& Simulation<br />

24


ROOT : Skripte<br />

• ROOT kann Skripte verarbeiten.<br />

• Skripte sind kurze C++-Codestücke in .cpp-Dateien.<br />

Der Code ist komplett mit {} zu umschließen.<br />

{<br />

ehochx = new TF1( "ehochx", "exp(x)", 0, 10 );<br />

ehochx­>Draw();<br />

}<br />

• Wird ROOT mit dem Namen der Datei auf der Kommandozeile<br />

gestartet, so wird der Inhalt sofort zu Beginn der Sitzung<br />

ausgeführt.<br />

Um ROOT nach Ausführen der Datei automatisch zu beenden<br />

Kommandozeilenoption ­q verwenden.<br />

• Innerhalb einer Sitzung kann die Datei mit .x "Dateiname"<br />

ausgeführt werden.<br />

LS Schaltungstechnik<br />

gnuplot & ROOT<br />

& Simulation<br />

25


ROOT : .root-Dateien lesen<br />

• Stehen Daten schon im .root-Format zur Verfügung, kann root<br />

einfach mit root Datei.root gestartet werden.<br />

• Alle Objekte in der Datei stehen dann sofort mit Ihrem Namen<br />

zur Verfügung.<br />

• Weiß man nicht, was in der Datei ist, hilft TBrowser weiter.<br />

Starten mit new TBrowser();<br />

• Unter „ROOT Files“ findet man dann die Datei und kann<br />

browsen.<br />

• Für Trees gibt es im Kontextmenü (rechte Maustaste) die Option<br />

„Start Viewer“, die ein mächtiges Tool zum analysieren des<br />

Trees (zusammenklicken von Histogrammen inkl. Cuts etc.)<br />

zur Verfügung stellt. (Ausführen: Symbol unten links)<br />

• Der Viewer lässt sich auch direkt für jeden Tree starten, egal wie<br />

er erstellt wurde.<br />

tree­>StartViewer();<br />

LS Schaltungstechnik<br />

gnuplot & ROOT<br />

& Simulation<br />

26


ROOT : Plots speichern<br />

• Auch ROOT kann Plots in vielen Vektor- und Bitmap-Formaten<br />

speichern.<br />

• Allerdings mit weniger Einstellmöglichkeiten als gnuplot.<br />

• Zum Speichern im Menü File->Save As... auswählen<br />

• oder zunächst einen Canvas selbst anlegen:<br />

c = new TCanvas();<br />

Dann ganz normal zeichnen, und mit<br />

c­>Print( "Dateiname" );<br />

in Ausgabedatei speichern. Der Dateityp wird durch die<br />

Endung (.pdf, .png, ...) festgelegt.<br />

LS Schaltungstechnik<br />

gnuplot & ROOT<br />

& Simulation<br />

27


Thank you!

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

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!