Oktave-Tools für den Radiacode und MCA‘s

Begonnen von opengeiger.de, 29. Januar 2022, 19:03

⏪ vorheriges - nächstes ⏩

opengeiger.de

Oktave-Tools für den Radiacode und MCA's

Viele waren sicher schon einmal an dem Punkt, wo es besser war einzusehen, dass Excel nicht so ganz das passende Tool für die Messdaten-Nachbearbeitung in dem gegebenen Fall war. Die Frage ist dann, wie kann man weiterkommen ohne aufzugeben? An dieser Stelle hilft es meist, auf ein Mathe-Tool umzusteigen. Es gibt da einige, MathCad, Mathematica, Matlab, Scilab, R, Octave um nur einige zu nennen. Der Platzhirsch ist sicher Matlab, nur ist's eben so, dass wenn man nicht gerade Student ist oder einen spendablen Chef hat, dann bezahlt man da ordentlich für eine Lizenz. Das wird für die anderen kommerziellen Tools dieser Art sicher auch so sein. Bei den Freeware Tools ist's schwer zu sagen, welches das Beste ist, R hat einen stark statistischen Fokus und Scilab und Octave sind eher was für Ingenieure. Für mich war insofern die Entscheidung einfach, da ich von der Arbeit her Matlab gut kenne und Octave versucht ja Matlab nachzubilden und ist ,,weitestgehend" Code-kompatibel.

Für die Anwendungen, die sich mit der Nachverarbeitung von Spektren beschäftigen, denke ich, passt Octave jedenfalls recht gut.   Mehr zu diesem GNU Freeware Mathe-Tool unter https://www.gnu.org/software/octave/index.

Was sie Doku zu den Funktionen anbelangt kann man auch einfach bei Matlab nachschauen, das Meiste ist in Matlab auch vorhanden, aber oft besser bzw. etwas anders dokumentiert. Auf kleinere Differenzen sollte man aber schon gefasst sein.

Um für die Anwendungen hier eine ,,Hello World"-Beispiel zu geben, hab ich hier ein kleines Beispiel angehängt, das einfach eine aus Theremino exportierte Spektrum-Datei eines Th-Glühstrumpfes einliest, in cps umrechnet und daraus dann ne Grafik erzeugt. Von diesem Beispiel aus kann man mit weiterem ,,Postprocessing" dann leicht weitermachen.

opengeiger.de

Das erste ,,nenneswert" nützliche Tool mit dem ich in diesem Thread hier starten will, ist für das Postprocessing eines Radiacode RC101 Spektrums gedacht. Es hat sich aus dem ,,Thorium-Zerfall Thread"  (https://www.geigerzaehlerforum.de/index.php/topic,932.msg10743/topicseen.html#msg10743) ergeben, und zwar auf eine Anregung von Etalon hin. Er war nicht der Erste, der nach einer Glättung des Radiacode RC-101 Spektrums gefragt hat. Nun bin ich allerdings nicht so der Freund des ,,Beautifying" von Spektren, aber in dem Fall muss ich nun zugeben, das bringt  wirklich echt etwas. Der Vorteil ist nämlich, dass man dann viel einfacher und sicherer mit Interspec wieterarbeiten kann. Mit so ner groben Zicke-Zacke Funktion, wie es die Rohform des RC101-Spektrums darstellt, tut sich Interspec nämlich ganz schön schwer, vor allem beim Peak-Fitten wenn die Peaks recht schmal sind.

Auf der anderen Seite war ja der Ruf nach mehr Spektrum-Kanälen (Bins) auch schon relativ deutlich. Es heißt zwar, dass die Radiacode Leute dran arbeiten, aber vielleicht hat es halt doch nicht die höchste Prio.  Also, dann machen wir das doch einfach mal mit Octave und sehen wie das in der Praxis rauskommt. Nicht schlecht für den ersten Eindruck muss ich zugeben, auch wenn's natürlich bisschen ist, wie wenn sich jemand vor dem Fernsehauftritt die Falten zuschminkt und noch ein wenig Farbe dazu aufträgt.  ;D

Man kann das spektrale Glätten des groben Spektrums relativ gut erreichen, wenn man die Energieachse ,,Überabtastet" z.B. mit einem Faktor 10, dann bekommt man 2550 Kanäle, und man kann dann bequem zwischen den 256 Kanälen (0-255) interpolieren. So hab ich's jedenfalls in diesem Skript gemacht. Ansonsten muss man halt drauf achten, dass die Peakflächen gleichbleiben, und dass man den Background mit der Messzeit richtig skaliert bevor man ihn vom Foreground-Spektrum abzieht. Ich bin auch dem Vorschlag von Etalon gefolgt und habe die Differenzbildung bereits auf dem RC101-Kanalraster gemacht und hab nicht die mit Oversampling und Interpolation erzeugten Daten voneinander subtrahiert. Ich hab's dann auch mit nem Hirschgraben-Spektrum getestet. Ja und nun muss ich sagen, so zurechtgemacht, das hat doch was. :good2:



Aber ums nochmal klar zu sagen: Die spektrale Auflösung des RC-101 geht dadurch natürlich nicht hoch. Das bräuchte ne kräftige Änderung an der Hardware (mehr Zellen im SiPM, besserer ADC, usw.). Es ist eher so, wie wenn das Linienspektrum mit hoher Auflösung durch einen Tiefpass gelaufen wäre. Das Ganze bleibt daher rein optisch gesehen ein ,,Rausputzen". Allerdings, und das ist nun doch auch für mich etwas unerwartet, wenn man dann so ein ,,aufgehübschtes" Spektrum in Interspec rein lädt, man glaubt es nicht, das Peak-Fitting flutscht, selbst vorne beim Peak des Ba137m, der vorher grad mal ein Kanal breit war, und wo freiwillig kein Peak rein wollte. Auch die Konversion in der Energieachse in ein Polynom für das Nachkalibrieren in Interspec geht nun wie geschmiert. Das war irgendwie nicht so ganz absehbar. Daher gibt es also doch noch einen handfesten technischen Grund das Tool einzusetzen.   :D

Das Tool liest also einen ein RC101-Spektrum im XML-Format ein und erzeugt 3 ,,gesmoothte" Interspec kompatible Spektrum-Dateien für den Foreground, den Background und für die Differenz von beidem. Alle ganz hübsch und glatt zum Verlieben. Die Zwischenresultate werden beim Verarbeiten gleichzeitig in eine kleine Grafik geplottet. Die Bedienung ist sicher selbsterklärend, wenn man sich mit mathematisch orientierten Skript-Sprachen ein wenig vertraut gemacht hat. Ansonsten natürlich wie immer ohne Gewähr, was die noch versteckte Fehlerchen und irgendwelche unbegründete Abstürze anbelangt. Und viel Spaß beim ,,Aufhübschen". :-*

PS:Danke noch an Etalon, für die guten Anregungen   :good3: ! (Das hier ist ne neue Version gegenüber dem im Thorium Zerfall Thread. Ich hoffe dass nun das Fitten bei Dir auch klappt.)


etalon

Super! Danke erst mal an dich für die viele Arbeit und das Skripten. Auch wenn ich Matlab habe, bin ich darin nicht so fit, wie ich es gerne wäre. In der Arbeit habe ich professionelle Spektrometriesoftware. Auch wenn man da mal das eine oder andere kleine Skript schreiben muss, so bin ich doch froh, dass das hier jemand übernommen hat, der davon mehr Ahnung hat als ich. :ok:

Das mit dem Fitten hat bei mir mit dem alten Skript auch geklappt, aber wenn man halt so ein schimmliges Spektrum hat, und die Impulse auf die zehnfache Anzahl Kanäle verteilt, dann reicht das S/N halt nicht mehr für den Algorithmus, um die Peaks noch zu erkennen... Daher finde ich die Option für schlechte Spektren ganz charmant, dass man das Skript recht einfach abändern kann, und mit dem besseren S/N fitten kann, um danach die Peakinhalte durch Zehn zu dividieren. Dann kann man auch mit schlechten Spektren was ausrichten, ohne gleich die Messzeit gewaltig hochschrauben zu müssen...

Grüße Markus

opengeiger.de

PRA ist sicherlich das bessere MCA-Tool was Genauigkeit vor allem im niederenergetischen Bereich anbelangt im Vergleich zu Theremino. Das liegt an dem Algorithmus das es verwendet um Störimpulse auszublenden. Es heißt aber nicht, dass es ganz ohne ,,Unschönheiten" wäre. Wer mit PRA arbeitet ist beim Peak-Fitten in Interspec sicher auch schon mal an folgendem Artefakt hängengeblieben, nachdem er ein PRA-Spektrum importiert hat: Die Gauss-Funktion erschein aufgesplittet in zwei Hälften, eine links der zugehörigen Gamma-Linie und die andere rechts davon und beide Hälften haben einen Versatz.

Nachdem ich mich viel darüber geärgert habe, bin ich dem Problem nachgegangen. Es tritt an Peaks von Linien auf, die man auch zum Kalibrieren benutzt hat. Da PRA zwischen den Kalibrierstützstellen nur linear interpoliert, hat die Zuordnungsfunktion zwischen den intern verwendeten ,,arbitrary units" und den Energien, die nachher im exportierten Spektrum stehen, an den Kalibrierstützstellen einen Knick. Daher ändern sich auch die Energieintervalle in der Export-Datei an den Stellen auch sprunghaft. Das mag Interspec nicht so sehr. Aber immerhin fliegt es dabei nicht aus der Kurve, sondern erzeugt eben zwei nicht ganz passende Gauss-Hälften für den Peak.

Das Problem kann aber auch dazu führen, dass man nach einer Energie-Nachkalibrierung in Interspec plötzlich Stufen im Spektrum bekommt, dort wo man Stützstellen für die Kalibrierung in PRA hatte. Das kommt auch daher.

Wenn man dieses Problem wegbekommen möchte, dann kann man seine Energieachse vorher mit sanften Splines interpolieren. Dann hat man das Problem nicht mehr.

Das angehängte Octave Tool ,,EnyLin" macht genau das. Wenn man also die exportierte PRA-Datei damit nachbearbeitet, hat man dieses Problem nicht mehr. Siehe Grafiken.