Numerische Simulation January 18, 2016 1 Numerical Methods in Extraterrestrial Physics - Numerische Simulationen Nachdem wir in der letzten Übung eine Klasse für die Bewegung und Visualisierung von Teilchen in Python implementiert haben, soll es heute um deren Interaktion in Materie gehen. Eine bereits fertig gestellte Teilchen Klasse findet ihr hier. Genauer gesagt, werden wir heute den ersten Teil eines virtuellen Detektors implementieren, der mittels einer Flugzeit Messung die Geschwindigkeit der Teilchen bestimmt. In [1]: %matplotlib inline %config InlineBackend.figure_format = ’svg’ from tof import Tof T = Tof() ax = T.plot() ax.legend(); 1 Für die Bestimmung der Geschwindigkeit eines Teilchens, bedienen wir uns einen Prinzips, das in echten Flugzeit-Masse Spektrometern verwendet wird. Beim Durchgang eines Teilchens durch Materie, wechseltwirkt dieses unter inealstischen Stößen mit den Elektronen des Materials. Dabei werden zum Einen Elektronen aus dem Material herausgelöst (welche als elektrischer Puls registriert und somit zur Bestimmung der Start-Zeit unseres Teilchens verwendet werden) und zum zweiten das eingeschossene Teilchen abgebremst und gestreut, d.h. das Teilchen verliert einen Teil seiner Energie. Ein einfaches Beispiel für die Wechselwirkung eines Teilchens in Materie ist hier gezeigt: In [11]: from particle import Particle P = Particle() P.set_v((4e5,0,0)) ax=T.plot() ax.set_xlim(0.09,0.12); ax.set_ylim(-0.06,0.06) T.scatter_rate = 5e-9 T.scatter_angle = 10 #Normalverteile Streuung im Winkel in T.scatter_loss = 5 #Normalverteilter Energieverlust in % ◦ T.compute_particle(P,ax=ax) P.plot(ax) Die gesetzten Größen scatter rate, scatter angle und scatter loss bestimmen hierbei das Streuverhalten der Teilchen. In diesem Beispiel unterliegen die Teilchen einer durchschnittlichen Streurate von ν = 5 · 10−9 1/s, wobei sie im Winkel um 0◦ ± 10◦ gestreut werden und 0% − 10% ihrer Energie verlieren. Jede Interaktion mit der Materie ist im o.g. Beispiel mit einem schwarzen Kreis gekennzeichnet. Als nächstes muss die Stop-Zeit des Teilches registrieren werden, was wieder über die Interaktion in einem zweiten Materie Block geschieht, welcher 10 cm gegenüber dem ersten verschoben ist. 2 In [17]: P = Particle() P.set_v((4e5,0,0)) ax=T.plot() T.compute_particle(P,ax=ax) P.plot(ax) Aus der Differenz von Start- und Stop-Signal lässt sich dann die Teilchengeschwindigkeit bestimmen. Hierbei ist noch anzumerken, dass die bestimmte Teilchengeschwindigkeit wegen des Energieverlustes und der Streuung unter der eigentlichen Teilchengeschwindigkeit liegt. D.h. wir müssen für ein Ensemble von Teilchen konstanter Geschwindigkeit, die mittlere detektierte Geschwindigkeit der Teilchen bestimmen, um unsere Messung zu kalibrieren. In [18]: ax = T.plot() pv = [] for p in range(100): P = Particle() P.set_v((4e5,0,0)) T.compute_particle(P) P.plot(ax) pv.append(T.get_v()) 3 Die gemessene Teilchenenergie ergibt sich dann zu In [19]: ax = pylab.figure().gca() ax.hist(array(pv)/1000.) ax.set_xlabel("V [km/s]");ax.set_ylabel("N") print "Mittlere Teilchen Geschwindigkeit %4.2f [km/s]"%(mean(pv[pv>0])/1000.) Mittlere Teilchen Geschwindigkeit 195.69 [km/s] 4 Ein mit 400 km/s eingeschossenes Teilchen wird wegen der Streuung und des Energieverlustes also im Mittel mit einer Geschwindigkeit von nur 263 km/s gemessen. Wiederholen wir diese Prozedur nun für mehrere Teilchen Ensembles unterschiedlicher Geschwindigkeiten zwischen 100 km/s und 1000 km/s, liesse sich unsere Flugzeit-Messung für unterschiedliche Teilchengeschwindkeiten kalibrieren. 1.1 Übung: Die Flugzeit Klasse In dieser Übung geht es nun um die Implementierung einer Klasse für die Flugzeit Messung unserer Teilchenquelle. Die Interaktion des Teilchens mit Materie soll dabei nur “pseudo”-physikalisch, also ohne realistische Wechselwirkungsquerschnitte und Streuprozesse ablaufen. Im Folgenden ein möglicher Bauplan für die Flugzeit Klasse: 1.) Erstellen Sie eine Klasse für die Flugzeitmessung mit jeweils 2 Attributen, welche Ihnen die Detektor Geometrie beschreibt, d.h. den Ort und die Ausmaße der beiden Materieblöcke für die Start- und StopMessung. Beide Materieblöcke sollen eine Breite und Höhe von jeweils ∆x = 1 cm und ∆y = 10 cm haben und in x−Richtung 10 cm voneinander entfernt sein. Implementieren sie eine Methode zur Visualisierung der Detektor Geometrie. 2.) Schreiben Sie eine Methode mit der Sie ein Teilchen durch die Detektor Geometrie propagieren lassen können. Das Teilchen soll dabei eine konstante Geschwindigkeit von 400 km/s in x-Richtung haben und die Berechnung sollte mit einer Zeitauflösung von dt = 1 · 10−9 s durchgeführt werden. Visualisieren sie die Teilchen Trajektorie zusammen mit der Detektor Geometrie. 3.) Schreiben Sie eine Methode für die Flugzeitklasse, um herauszufinden ob sich das Teilchen gerade innerhalb oder außerhalb von Materie befindet. Befindet sich das Teilchen innerhalb von Materie, “würfeln” sie ob das Teilchen einen Streuprozess durchführt. Die Wahrscheinlichkeit für einen Streuprozess pro Zeitschritt dt ist dabei geben durch P = dt/ν. Verwenden Sie hierfür eine Streurate von ν = 1 · 10−8 . 4.) Schreiben Sie eine Methode, die das Teilchen bei jedem Stoßvorgang im Winkel um 0◦ ± 5◦ (normal verteilt) streut und einen Geschwindigkeitsverlust von 0% − 5% (gleich verteilt) erfährt. 5.) Propagieren Sie 100 Teilchen konstanter Geschwindigkeit (vx = 450 km/s) durch die Detektor Geometrie und visualisieren Sie die Teilchen Trajektorien. Histogrammieren sie zudem die detektierten Teilchen Geschwindigkeiten. 5 6.) (Optional) Lösen Sie Aufgabe 5) für 10 unterschiedliche Teilchengeschwindigkeiten und stellen Sie die eigentlichen Teilchengeschwindigkeiten als Funktion der mittleren detektierten Teilchengeschwindigkeit dar. Interpolieren Sie diese Funktion um eine Kalibrationskurve für die Geschwindigkeits Messung zu erhalten. In [5]: 6