ewmk-soft

Projekt HFSFit

Projekt­name HFSFIT
Aufgaben­stellung Programm zur Auswertung der mit HFS gemessenen atomaren Spektren. Mittels "Least Square Fit" lassen sich Lorenz oder Gausskurven (oder Summen der beiden) an die Messdaten anpassen. Umfangreiche Zusatz­funktionen erlauben die Berechnung von atomaren Hyper­fein­struktur­konstanten oder die Einblendung zusätzlicher Crossover­signale in die Anpassung.
Auftrag­geber Physikalisches Institut der Universität Tübingen
Zeitraum 1990-1992
Ziel­system 80386/80486 PC mit 10 MB Festplatte und 2 MB RAM.
Betriebssystem Microsoft Windows 3.0.
Programmier­sprache Borland Pascal

Programm­funktio­nen  
Das Hauptfenster des Programms zeigt das gemessene Spektrum (grün) und die theoretische Kurve (rot). Die für die Anpassung notwendigen Startparameter (Linienpositionen usw.) werden interaktiv mit der Maus festgelegt. Eine Zoomfunktion erlaubt die Vergrößerung von Bereichen.
Datenauswertung

Nach Zuordnung der quantenmechanischen Drehimpulswerte für die einzelnen Übergänge kann ein theoretisches Spektrum berechnet werden. Die dafür notwendigen A/B-Faktoren werden aus den Messdaten ermittelt.
Eingabe Fitparameter

Die Daten können in verschiedenen Formaten ausgegeben werden: Als normale Windows Druckausgabe, als HPGL Plotdatei oder im PicTeX Format. Eine Vorschauansicht erlaubt die Einstellung des gewünschten Druckumfangs.
Druckvorschau

Druckeinstellungen

Eine eingebauter Skriptinterpreter erlaubt die Bearbeitung großer Datenmengen über Skripte. So kann ein Skript z.B. eine Serie von Messdateien mit ihren Anpassungen einlesen und über eine gewünschte Größen den Mittelwert bilden. Das zugehörige Skript sieht dann so aus:
Makroeditor
%echo off
output window
output file log.hfm

procedure exit
? "------------------"
set &su1:=&su1/&n
set &su2:=
  sqrt((&su2-&n*sqr(&su1))/(&n-1))
? &n:1:0,"   ",&su1:1:2,"(",&su2:1:2,")"
output
? &n:1:0,"   ",&su1:1:2,"(",&su2:1:2,")"
return

define ifeld : 611,609,608,607,606,605,604,
               603,602,601,600,599;
              ,598,597,596,595,594,593,592,591,
               590,589,588,587,586
define rstack: 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
var &a,&i,&c1,&c2,&su1,&su2,&n
set &n:=0
set &su1:=0
set &su2:=0
set &i:=1
1:getentry ifeld,&i,&a
set &error:=0
l hfs&asc
l hfs&af1/fit/nocheck
data /bez105/F'1.5/F1.5
pop rstack
getentry rstack,2,&c1
getentry rstack,3,&c2
if (&error=0)
 ? &a:1:0,"   ",&c1:1:1,"(",&c2:1:1,")"
 set &n:=&n+1
 set &su1:=&su1+&c1
 set &su2:=&su2+sqr(&c1)
else
 output
 ? "Fehler beim Einlesen einer Messung [bel. Taste]"
 wait
endif
set &i:=&i+1
goto 1