====== N1 - Sternspektren verschiedener Spektraltypen (DADOS) ======
/*
Diese Anleitung befindet sich aktuelle in der Überarbeitung. Bitte solange auf die englische Version ausweichen. Danke!
*/
=== Aufgabe ===
Ziel des Versuches ist es eine Übersicht der Spektren verschiedener Spektraltypen zu gewinnen. Hierfür sollen anhand einer zur Verfügung gestellten Liste von Sternen (Koordinaten und scheinbare Magnituden) vier Sterne spektroskopiert werden, die während der Nacht gut zu beobachten sind. Die so gewonnenen Spektren gilt es dann anhand der Linien im Spektrum sowie der Form des Kontinuums einem Spektraltyp zuzuordnen.
/*
Ziel des Versuches ist es eine Übersicht der Spektren verschiedener Spektraltypen zu gewinnen. Dazu sollte von jedem Spektraltyp (O, B, A, F, G, K, M, Spezialfälle nach Absprache) ein gut beobachtbarer Stern ($m_\mathrm{V} \le 9\,$mag) ausgewählt und spektroskopiert werden, um ihn danach anhand der Linien im Spektrum einem Spektraltyp zuzuordnen. Zur Suche nach geeigneten Sternen kann u.a. [[http://simbad.u-strasbg.fr/simbad/|Simbad]] genutzt werden - eine Hilfe zur Parametersuche von Simbad gibt es [[de:etc:simbad|hier]].
*/
===== Beobachtung =====
Der Versuch erfordert Nachtbeobachtungen am OST der Uni Potsdam. Der Versuchshintergrund und die Technik zur Aufnahme der Spektren wird im Rahmen von Vorträgen im Praktikumsseminar vorbesprochen. Eine Liste mit geeigneten Objekten wird von den Betreuern zur Verfügung gestellt.
**Beachte:** Folgende Aufnahmen müssen für //jeden// Stern gemacht werden:
* die Sternspektren
* Kalibrationsspektren mit einer diskreten Lichtquelle
* Kalibrationsspektren mit einer kontinuierlichen Lichtquelle
* Darkframes für die Sternspektren und die kontinuierlichen Kalibrationsspektren
Die Kalibrationsaufnahmen werden später benötigt, um von einer Pixelskala auf Wellenlängen umzurechnen bzw. um Geräteartefakte herauszurechnen.
/*
==== Ansehen der Bilder ====
Eine Bedienungsanleitung für WRplot erhält man auf dem prakt-Account mit dem Kommando ''manwrplot''. Ausführen der Skripte geschieht durch das Kommando
wrplot dateiname.plot
Dabei wird das Ergebnis direkt als Fenster auf dem Bildschirm ausgegeben. Dies ist für Kontrollzwecke
oder Schnellansichten sehr praktisch. Mit der Option \INTERACTIVE stehen sogar zusätzliche Buttons
für direkte Bildschirmauswertung zur Verfügung, unter anderem zum Definieren eines Kontinuums oder
dem Ausmessen von Äquivalentbreiten.
Die Endresultate einer Auswertung werden in der Regel als Bild (z.B. im Praktikumsprotokoll oder auf
einem Poster) benötigt. Hierfür kann man die Plotausgabe (ohne Interactive-Funktionen) als PS-Datei
speichern lassen. Mittels
wrps dateiname[.plot]
wird eine Datei namens ''dateiname.ps'' im aktuellen Arbeitsverzeichnis erzeugt. (Achtung: Eine existierende
PS-Datei wird ggf. überschrieben. Wer also mit demselben Skript mehrere Bilder erzeugen will, sollte die
PS-Datei jeweils vor dem n¨achten Skriptaufruf umbenennen.)
WRPlot-Skripte brechen nach dem ersten Auffinden des Schlüsselwortes ''END'' ab. Ein vorzeitiges Einfügen
von ''END'' kann damit zur Fehlersuche (Debuggen) verwendet werden.
In den WRplot-Skripts angegebene Dateinamen (z.B. auf die FITS-Dateien mit unseren Aufnahmen)
können auch einen (absoluten oder relativen) Pfad beinhalten. In dem hier vorgeführten Beispiel liegen
die benutzten FITS-Dateien alle im gegenwärtigen Arbeitsverzeichnis. Konkret sind dies folgende fünf
Dateien:
| Sternspektrum | castor-120s.FIT |
| CCD-Dunkelstrom | dark kuppel.FIT |
| Kont. Spektrum zur Fringeskorrektur (roter Wellenlängenbereich) | fringes_rote_lampe_dome.FIT |
| Kont. Spektrum zur Fringeskorrektur (blauer Wellenlängenbereich) | fringes_rote_lampe_dome2.FIT |
| Linienspektrum zur Wellenlängenkalibration | wavecal_schwarze_lampe_kupel.FIT |
*/
===== Datenauswertung =====
Die Skripte für die Auswertung sind auf dem [[de:praktikum:zugang| Praktikumsrechner]] im Ordner ''~/scripts/n1_dados'' zu finden.
{{section>deng:praktikum:a12:python#Deutsch&noheader}}
==== Datenauswahl ====
Die ersten zwei Schritte sind das Einloggen im [[de:praktikum:zugang| Praktikumspool]] und das Kopieren der Beobachtungsdaten (FITS-Files), inklusive Darkframe- und Kalibrations-Aufnahmen aus dem Verzeichnis ''~/data/'' ins eigene Verzeichnis ''~/data_reduction/'' . Es gibt verschiedene Tools, um die im FITS-Format abgelegten zweidimensionalen CCD-Bilder (Images) zu betrachten. Beispielsweise //ds9//, dass im Terminal gestartet werden kann
ds9 filename.fit
* Man notiere sich den Zeilenbereich, der das Sternspektrum enthält
* Man notiere sich einen Zeilenbereich, den man als Hintergrund verwenden kann. Dieser Bereich muss also außerhalb des Sternspektrums liegen, jedoch noch innerhalb des benutzten Spektrographenschlitzes. Falls man letzteren nicht auf dem Bild mit dem Stern-Spektrum sehen kann, orientiere man sich auf den Bildern der Lampenspektren.
==== Wellenlängenkalibration ====
=== Funktionsprinzip ===
Das benötigte Skript sucht die Maxima im Kalibrationspektrum, markiert diese und notiert deren Pixelnummer, an der sich die Intensitätsmaxima befindet. Schließlich wird diesen Werten jeweils eine Wellenlänge zugeordnet. So ergibt sich eine Pixel-Wellenlängenzuordnung, die dann für die Auswertung des Sternspektrums benutzt wird.
=== Parameter ===
Das zugehörige Skript heißt ''1_findcaliblines.py''. In dieser Datei editiert man mit einem Editor seiner Wahl (z.B. //Kate//) den Pfad und den Namen der Datei mit dem Spektrum der Energiesparlampe, i.e. die schwarze Lampe mit dem Linienspektrum, sowie den Zeilenbereich, in dem man auch das Sternspektrum extrahieren will und einen Zeilenbereich, der **außerhalb des Spaltes** liegt. Beispielsweise:
# name of the file with the wavelength calibration spectrum
calibFileName = "calib_wave.FIT"
# region (rows on the image) containing the calibration spectrum
specRegionStart = 495
specRegionEnd = 600
# background region (rows on the image), which needs to be outside of the slits
bgRegionStart = 0
bgRegionEnd = 200
Die Kalibration beruht darauf, dass Quecksilber- und Argonlinien identifiziert werden. Die stärksten Linien, welche zu erwarten sind, sind in der folgenden Grafik identifiziert.
[{{ :ost:spektrograph:spectra:calib_lines_dados.jpg?direct&800 | Quecksilber- und Argonemissionslinienspektrum mit entsprechenden Linienidentifikation}}]
===Ausführen des Skriptes ===
Nun kann das Skript ausgeführt werden:
python 1_findcaliblines.py
Nach dem Ausführen des Skriptes erscheint folgendes Fester, auf dem das Quecksilber- und Argonemissionslinienspektrum dargestellt ist und alle Linien, die durch das Skript identifiziert wurden mit einem roten Kreis markiert sind. Nun müssen in diesem Fenster alle Emissionslinien markiert werden, für die die Wellenlänge bekannt ist. Hierfür ist das obere Beispielspektrum mit den identifizierten Linien sehr hilfreich. Das Skript gibt die möglichen Linien vor, sodass jeweils nur die entsprechenden roten Kreise durch einen Linksklick markiert werden müssen. Die Wellenlänge der aktuellen Linie ist in rot oben in dem jeweiligen Fenster zusehen. Sollte die Wellenlänge einer Linie angezeigt werden, die nicht mit einem roten Kreis markiert ist, kann diese durch einen Rechtsklick übersprungen werden. Erfolgreich markierte Linien erscheinen dann blau und die entsprechende Wellenlänge wird neben den Emissionspeak geschrieben (siehe unten). Es müssen wenigsten vier Linien markiert werden um eine erfolgreiche Wellenlängenkalibration zu ermöglichen. Wenn alle möglichen Linien markiert sind kann dieser Prozess mittels drücken der ''Q-Taste'' auf der Tastatur abgeschlossen werden.
[{{ :ost:spektrograph:dados:dados_select_line.png?direct&600 | Kalibrationsplot ohne markierte Linien}}]
[{{ :ost:spektrograph:dados:dados_select_line_2.png?direct&600 | Kalibrationsplot mit sieben markierten Linien }}]
++++ Fehleroutput |
Es kann passieren, dass das Skript folgen Fehleroutput produziert:
can't invoke "event" command: application has been destroyed
while executing
"event generate $w <>"
(procedure "ttk::ThemeChanged" line 6)
invoked from within
"ttk::ThemeChanged"
Dieser kann getrost ignoriert werden, da er keinen Einfluss auf das Kalibratiosresultat hat.
++++
Anschließend wird von dem Skript die Kalibrationskurve geplotted (siehe unten). Eine Erfolgreiche Kalibration erkennt man daran, dass die Kalibrationskurve nahezu linear ist.
[{{ :ost:spektrograph:dados:calibration_fit_dados.jpg?direct&400 |Kalibrationskurve für den DADOS-Spektrographen }}]
Von dem Skript werden standardmäßig folgende Dateien erstellt:
* ''calibration_spectrum.dat'' - darin wird jedem Pixel eine Wellenlänge in Angstrom zugeordnet
* ''calibration_selection.pdf'' - Plot mit den ausgewählten Linien für die Wellenlängenkalibration (bitte an das Protokoll anhängen)
* ''calibration_fit.pdf'' - hier ist die Wellenlängenkalibration, also ''wcalibration_spectrum.dat'', geplottet (bitte an das Protokoll anhängen)
/* * ''calibration_fit.pdf'' - das diskrete Kalibrationsspektrum wird geplottet und die Wellenlängen der höchsten Intensitätsmaxima angegeben */
=== Fehlerbehebung ===
Die Plots sollten dann auf mögliche Fehler inspiziert werden. Sollte der Kalibrationsplot nicht linear aussehen, muss das Skript korrigiert und neu ausgeführt werden. Fehlerquellen können sein:
* falsch markierte Linien
* ein anderer Wellenlängenbereich als normalerweise wird beobachtet oder eine andere Kalibrationslampe wird benutzt. Man kann z.B. in der [[http://physics.nist.gov/PhysRefData/ASD/index.html|NIST Datenbank]] nachsehen und andere Linien ausfindig machen, die dann in der Variable ''linelist'' im Skript eingetragen werden müssen.
==== Das Sternspektrum ====
=== Funktionsprinzip ===
Nach der Bestimmung der Kalibrationskurve kann nun das eigentliche Sternspektrum ausgewertet werden. Zunächst wird das Darkframe des Sternspektrums abgezogen. Dann wird das Spektrum durch das Flatfield geteilt und schließlich die Wellenlängenkalibatrion durchgeführt. Außerdem besteht die Möglichkeit im Spektrum identifizierte Spektrallinien zu kennzeichnen.
=== Parameter ===
Das zugehöriges Skript heißt ''2_extractspectrum.py''. In dieser Datei werden viele Parameter ganz analog zu den obigen Skript gesetzt. Die Parametersektion kann beispielsweise so aussehen:
### science spectrum file ###
# file with stellar spectrum
science = 'star.FIT'
# directory of the darkframe for the stellar spectrum
darkframe_dir = 'darks/??s/'
# flatfield directory
flatfield_dir = 'flats/'
# directory of the darkframe for the flats
flatdark_dir = 'darks/??s/'
### Data that should be extracted ###
# region containing the science spectrum
specRegionStart = 495
specRegionEnd = 590
# sky background region (inside the slit)
bgSkyStart = 96
bgSkyEnd = 104
### Plot range ###
# set the variables to '?' for an automatic resizing
lambdamin = '?'
lambdamax = '?'
#lambdamin = 3500.
#lambdamax = 5000.
Zu diesen Parametern sei angemerkt:
* Über die Variablen ''specRegionStart'' und ''specRegionEnd'' werden die CCD-Zeilen definiert, die das Spektrum enthalten und die ausgelesen werden.
* Der Himmelshintergrund soll noch abgezogen werden. Dafür muss ein Bereich ausgewählt, der **innerhalb vom Spalt** liegt, aber **kein Spektrum** enthält. Wenn möglich, sollen die gleiche Zeilenanzahl wie beim Spektrum verwendet werden. Also (specRegionStart - specRegionEnd) = (bgSkyStart - bgSkyEnd).
* Mittels der Option ''lambdamin'' und ''lambdamax'' kann der Plotbereich eingeschränkt werden. Werden in diese Variablen ''?'' geschrieben, dann wird der Plotbereich automatisch festgelegt.
++++ Zusätzliche Parameter |
**Auswertungsmethode:**
Die Variable ''mode'' steuert, die Auswertungsmethode. Bei der Methode //mean// wird über alle extrahierten Zeilen aus dem CCD-Bild gemittelt. Bei //median// wird der Median gebildet. Diese Methode ist sollte standardmäßig ausgewählt werden.
### Image reduction mode ###
#mode = 'mean'
mode = 'median'
**Linienidentifikation:**
Die Linienidentifikation kann über den Parameter ''plotident'' an oder abgeschaltet werden:
### Idents ###
# plot idents yes or no
plotident = 'yes'
#plotident = 'no'
Die Datei mit den gefundenen Spektrallinien, welche standardmäßig einfach ''absorption_lines'' heißt, wird zum Ausführen des Skriptes nicht zwingend gebraucht. In diesem Fall wird der Variable ''lineFile'' einfach nur ein leerer String zugewiesen oder alternativ ein Pfad zu einer leeren Datei übergeben:
#File containing line identifications
lineFile = ""
# oder
lineFile = "Ordner/leere_datei.dat"
Siehe unten für eine Erklärung wie die Linienidentifikation für die einzelnen Sterne individuell angepasst werden kann.
** Dateinamen:**
Des Weiteren besteht die Möglichkeit die Namen der Outputdateien sowie des für die Wellenlängenkalibrierung benötigten Kalibrationsfiles aus dem ersten Schritt der Datenreduktion individuell anzupassen.
/*
* Zwischen den Spalten?????
# background region (outside the slit)
bgRegionStart = 0
bgRegionEnd = 200
*/
++++
=== Ausführen des Skriptes ===
Analog zu oben wird das Skript mittels:
python 2_extractspectrum.py
ausgeführt. Dabei werden in den Standardeinstellungen folgende Dateien erstellt:
* ''stern_spectrum.dat'' - mit dem tabellierten Spektrum
* ''stern_spectrum.pdf'' - mit dem geplotetem Spektrum
* ''flatfield.pdf'' - mit dem geplotetem Flatfield (bitte an das Protokoll anhängen)
=== Identifizieren der Spektrallienien ===
Es besteht die Möglichkeit im Spektrum gefundenen Linien im Spektrumsplot einzuzeichnen. In der Datei ''absorption_lines'' im Skriptverzeichnis sind einige wichtige Linien aufgelistet. Allerdings **enthält diese Datei nicht alle Spektralllinien**, die in den vielen unterschiedlichen Sternen auftreten, die wir beobachten. **Daher ist es nötig nach zusätzlichen Spektralllinien und deren Übergängen** z.B. in der [[http://physics.nist.gov/PhysRefData/ASD/index.html|NIST-Datenback]] **zu suchen**. Eine [[de:praktikum:nist|Anleitung]] hierfür haben wir natürlich auch. Darüber hinaus ist es empfohlen, für jeden Stern eine individuelle Datei mit Linienidenifikationen zu erstellen. Um Linien im Plot zu kennzeichnen, überträgt man die relevanten Wellenlängen und Elemente/Ionen in die separate Datei, deren Inhalt dann wie folgt aussehen könnte (Wellenlänge in Å | Ident):
3888.052 HI
3970.075 HI
4861.38 HI
6562.88 HI
5801.33 5811.98 CIV
Wie im letzten Eintrag zu sehen ist, können auch Ionen mit Multipletübergängen dargestellt werden. **Linien, die nicht im Stern wieder gefunden werden, sind aus der entsprechenden Datei zu entfernen.**
Hat man diese Datei für ein Spektrum erstellt, kann der dazugehörige Pfad nun in der Parametersektion gesetzt werden. Beispielsweise
#File containing line identifications
lineFile = "directory/line_list_for_starname.dat"
Dann kann das Skript erneut ausgeführt werden und im Plot sollten die Linien benannt sein.
/*
Zusätzliche Specktrallinien können z.B. mit Hilfe der [[http://physics.nist.gov/PhysRefData/ASD/index.html|NIST Datenbank]] identifiziert werden.
Weitere Übergänge können mit Hilfe der [[de:praktikum:nist|NIST Datenbank]] gefunden werden.
*/
===== Protokoll =====
Ein ueblicher Praktikumsbericht ist anzufertigen. Allemeine Hinweise zum Schreiben von Praktkumsberichten zum Thema Struktur und Inhalt koennen [[https://polaris.astro.physik.uni-potsdam.de/wiki/doku.php?id=de:praktikum:protocol|hier]] eingesehen werden.
Die Uebersicht ueber den theoretischen Hintergrund fuer diesen Versuch beinhaltet eine Beschreibung der Entstehung von Sternspektren, den verschiedenen Spektraltypen und deren Charakteristiken und das Konzept hinter der Messung von Radialgeschwindigkeiten.
In den Methoden sollen die Ablaeufe der Beobachtung beschrieben werden und die anschliessende Reduktion der Daten. Dazu gehoert eine allgemeine Beschreibung der unternommenen Schritte, moeglichen Abweichungen von Standardprozedere und einer Auflistung alle gesetzten Parameter. Alle im Zuge der Datenreduktion anfallenden Grafiken sollen im Bericht vorhanden sein, koennen aber in den Appendix ausgelagert werden.
Der Resultateabschnitt des Reports praesentiert und beschreibt die reduzierten Spektren (ein paar signifikante Ordnungen im Text, der Rest kann in den Appendix).
Die Analyse beinhaltet die Bestimmung des Spektraltyps fuer die einzelnen Sterne basieren auf den Charakteristiken, die im theoretischen Hintergrund gelistet sind.
Abschliessend, diskutiere die Ergebnisse und bringe sie in den groesseren Zusammenhang. Dazu zaehlt z.B. ein Literaturvergleich wo moeglich. Weiterhin soll eine Diskussion moeglicher Fehlerquellen gemacht werden. Gibt es in euren Daten Inkonsistenzen oder Abweichungen vom Erwarteten? Oder gibt es Strukturen und Auffaelligkeiten in den Spektren die ihr nicht erklaeren koennt? Beschreibe moegliche Loesungen und Erklaerungen fuer die gefundenen Probleme.
//**Anmerkung:** Diese {{en:labcourse:n1:abb85karttunen_en.pdf|Grafik}} [1] kann hilfreich sein fuer eine erste Klassifizierung der Spektren. Desweiteren koennen die Spektren auch mit einem {{en:labcourse:n1:atlas.pdf|Spektralatlas}} verglichen werden. Die [[http://ned.ipac.caltech.edu/level5/Gray/frames.html | NIST web page]] erlaubt es explizit nach Spektrallinien zu suchen. Auf dieser [[https://www.handprint.com/ASTRO/specclass.html|Website]] gibt es eine gute Anleitung zum Klassifizieren von Sternspektren.//
//**Anmerkung:** Die Plots der individuellem Ordnungen der Spektren sind sehr speicherintensiv und gewoehlich zu gross fuer einen Emailanhang. Ihr koennt den Report in den [[https://boxup.uni-potsdam.de/index.php/login|Universitaetseigenen Cloud Service (BoxUP)]] hochladen und uns den Link zusenden, oder aber den Dateipfad zu den Plots wenn ihr sie auf dem Praktikumsrechner gespeichert habt.//
[1] [[https://ui.adsabs.harvard.edu/abs/1959elas.book.....S/abstract|Struve, O. (1959): Elementary Astronomy (Oxford University Press, New York) p. 259]]
[[de:praktikum:index|Übersicht: Praktikum]]