7. Übung
Bearbeitung vom 6.12.06 - 12.12.06
Aufgabe 1: ROOT- Demos
Laden Sie sich Demos.zip herunter und packen Sie die zip- Datei aus (z.B. mit unzip ). Studieren Sie einige der Demos und suchen Sie gegebenenfalls in den Dokumentationen nach der genauen Bedeutung der Methoden und Argumente.
Aufgabe 2: Histogram
In den Praktika werden Sie mit einer Vielzahl von elektronischen Messgeräten arbeiten. Alle diese arbeiten nur mit einer endlichen Auflösung, sodass man sich Gedanken darber machen muss, wie genau ein Wert nun gemessen werden kann. Ein Weg dies zu ermitteln ist es, das Rauschen eines Messgerätes zu messen. Dazu wiederholt man eine Messung sehr oft in kurzer Zeit und beobachtet wie sich die Werte verändern.
Die Datei rausch.dat enthält eine solche Messung. Hier wurde ein Widerstand von nominell 169 Ohm sehr oft gemessen und jedesmal der Widerstand aufgezeichnet. Histogrammieren Sie diese Einzelmessungen sinnvoll. Vervollständigen sie dazu die Datei rausch.C.
Aufgabe 3: Funktionen, Graphen und Fits
a) Lesen Sie die Daten in der Datei $messung.dat$ in zwei Arrays ein. Gehen Sie dabei wie in Aufgabe 1 auf dem 3. Blatt vor. Setzen Sie die maximale Anzahl Messwerte n auf 10000. In der ersten Spalte befinden sich die x-Werte, in der zweiten die y-Werte.
b) Erzeugen Sie ein Objekt der Klasse $TGraph$. Der Constructor braucht als Argumente die Anzahl der Werte und die beiden Arrays. Plotten sie den Graphen mit der Elementfunktion $Draw()$. Um eine brauchbare Graphik zu erreichen, verwendet man z.B. die Optionen $Draw(''LA'')$.
c) Suchen Sie eine Funktion mit freien Parametern, die Ihrer Meinung nach am besten zu den Messungen passt. (Was haben wir also gemessen?).
d) Fitten Sie diese Funktion an den Graphen mit der Elementfunktion $Fit()$ und zeigen Sie das Ergebnis wieder an. $Fit()$ braucht als Parameter den Namen der Funktion, also z.B. $Fit(''f1'')$. Ausserdem müssen die Parameter der Funktion vorher auf Werte gesetzt werden, die zumindest nicht total sinnlos sind. Wie genau lauten die Parameter?

Hinweise:
Funktionen:
Eine einfache Funktion mit drei freien Parametern $y(x)=A+B*x+C*x^2$ wird so definiert:
$TF1 f1(''f1'',''[0]+[1]*x+[2]*x*x'',x_{min},x_{max});$
Die Parameter werden mit Elementfunktionen gesetzt:
$f1.SetParameter(0,3);$
$f1.SetParameter(1,5);$
$f1.SetParameter(2,9);$
Damit wird der erste Parameter aus 3, der zweite auf 5 und der dritte auf 9 gesetzt.
Um eine glatte Zeichnung zu erhalten, sollte man die Anzahl der Punkte, an denen die Funktionen ausgewertet wird, erhöhen, also z.b. $f1.SetNpx(1000);$

Initialisieren:
Beginnen Sie ein Script immer mit:
$gRoot->Reset();$ //Räumt auf
$TCanvas* c1 = new TCanvas(''c1'',''name'');$ //Erzeugt ein Plot-Fenster
$char *s = new\ char;$ //Temporäre Variable, Nutzen siehe unten

Plotten:
Am besten gehen Sie jedesmal, wenn Sie etwas plotten wollen, folgendermassen vor:
$c1.Clear();$ //Leert das Plot-Fenster
$x.Draw();$ //Führt den Plot aus
$c1.Update();$ //Zeigt den Plot an
$gets(s);$ //Wartet auf einen Tastendruck

Bevor Sie den Graph erneut plotten um den Fit zu überprüfen, sollten sie mit
$gr.SetLineColor(kRed);$
die Farbe für die Linien auf Rot setzen. Die Liniendicke stellt man mit $SetLineWidth()$ ein.
Die oben genannte Option $Draw(''LA'')$ sorgt dafür, dass der Graph aus kurzen Linien besteht, die die Datenpunkte verbinden. An den eigentlichen Punkten befinden sich aber keine Marker. Man kann diese Marker mit $SetMarkerStyle(1)$ z.B. auf einen Punkt setzen und dann mit $Draw(''PA'')$ einen Plot erstellen, der Punkte an den Werten aber keine Linien mehr hat. Die Farbe der Marker setzt man dementsprechend mit $SetMarkerColor()$. Alle möglichen Marker kann man hier finden:
http://root.cern.ch/root/html/TAttMarker.html#TAttMarker:fMarkerStyle
Die Optionen findet man hier:
http://root.cern.ch/root/html/TGraph.html#TGraph:PaintGraph
Aufgabe 4: Buttons (Zusatzaufgabe)
a) Erzeugen Sie einen Canvas und unterteilen Sie diesen in zwei gleiche Teile. In jedem Teil plotten Sie eine unterschiedliche Funktion Ihrer Wahl.
b) Erzeugen Sie einen zweiten Canvas mit zwei Buttons (TButton ). Bei Betätigung des linken Buttons soll die im linken Teil des ersten Canvas gezeigte Funktion im zweiten Canvas angezeigt werden, bei Betätigung des rechten Buttons entsprechend die im rechten Teil des ersten Canvas gezeigte Funktion.



Harm Fesefeldt
2006-12-04