From b845bbb1a2f8df0b414b2319e089da81788b7323 Mon Sep 17 00:00:00 2001 From: TomasCampante Date: Mon, 30 Jun 2025 13:54:13 +0100 Subject: [PATCH 01/44] OS update: * ARC-TF now runs on Linux. * There are still some problems with directories, such as \ instead of /. One solution can be to use os.pathjoin() . --- ARC-TF.py | 27 ++++++++++++++++++++------- 1 file changed, 20 insertions(+), 7 deletions(-) diff --git a/ARC-TF.py b/ARC-TF.py index 1f526dd..5689fd5 100644 --- a/ARC-TF.py +++ b/ARC-TF.py @@ -21,8 +21,15 @@ ########## Ajusta-se ao ecra e foca os widgets - Windows ###### +import sys import ctypes -ctypes.windll.shcore.SetProcessDpiAwareness(1) + +# Adjust DPI awareness on Windows only +if sys.platform == "win32": + try: + ctypes.windll.shcore.SetProcessDpiAwareness(1) + except Exception as e: + print(f"Warning: DPI awareness setting failed: {e}") ########################################################### # Returns the index of the Tab the user is on ########################################################### @@ -1421,7 +1428,7 @@ def File_Manager(Choice, Nature, Action): tk.Button(wng.warning, command = lambda: wng.warning.destroy(), text = 'Return').pack() - Dir = os.scandir('Files\Sources\Values') + Dir = os.scandir(os.path.join('Files', 'Sources', 'Values')) source_list.clear() for entry in Dir: if entry.is_file(): @@ -1595,8 +1602,14 @@ def __init__(self): ############# A Janela Mae ############## self.main = tk.Tk() - self.main.title('ARC_TF') - self.main.state('zoomed') + self.main.title('ARC-TF') + try: + if sys.platform == 'win32': + self.main.state('zoomed') + else: + self.main.attributes('-zoomed', True) # May work on Linux (e.g., GNOME) + except Exception as e: + print(f"Window zoom/maximize not supported: {e}") self.main.configure(background = 'dark grey') ############## A barra de Ferramentas e opcoes ################# @@ -2299,14 +2312,14 @@ def threshold(self, height): self.figure_canvas.draw() ############################################################################ -Dir = os.scandir('Files\Sources\Values') +Dir = os.scandir(os.path.join('Files', 'Sources', 'Values')) source_list = [] for entry in Dir: if entry.is_file(): temp = (os.path.splitext(entry.name)) source_list.append(temp[0]) -Dir = os.scandir('Files\Materials') +Dir = os.scandir(os.path.join('Files', 'Materials')) materials_list = [] for entry in Dir: if entry.is_file(): @@ -2350,4 +2363,4 @@ def threshold(self, height): if os.path.isfile(TabList[i][4]) == True: os.remove(TabList[i][4]) # Apaga os resultados das regressoes lineares -os.rmdir('Temp') # Apaga a pasta Temp \ No newline at end of file +os.rmdir('Temp') # Apaga a pasta Temp From efb6351aa9f20f9c325c9c8cb89a3c43bb259eef Mon Sep 17 00:00:00 2001 From: RiPires Date: Wed, 2 Jul 2025 15:31:03 +0100 Subject: [PATCH 02/44] ARC-TF.py update: * Added script header, imports, and display handling section; --- ARC-TF.py | 33 +++++++++++++++++++++++++++++---- 1 file changed, 29 insertions(+), 4 deletions(-) diff --git a/ARC-TF.py b/ARC-TF.py index 1f526dd..d2ec7cd 100644 --- a/ARC-TF.py +++ b/ARC-TF.py @@ -1,3 +1,20 @@ +#################################################################################################### +## ## +## ARC-TF stands for Alpha particles' energy loss and Rutherford backscattering ## +## spectrometry methods for Characterization of Thin Films. ## +## ## +## ARC-TF is a GUI (Guided User Interface) intended to expedite the process of ## +## characterizing thin films, via an interface with ease of use, and backend ## +## algorithms that accelerate the data analysis. ## +## ## +## This project is the result of a LIP Summer Internship, within the NUC-RIA group. ## +## A publication resulting from the internship, resuming the work taken to develop ## +## the first version of ARC-TF, can be searched for by the reference LIP-STUDENTS-23-15. ## +## Directly available at https://www.lip.pt/files/training/papers/2023/pdf/2023-PAPER-179-15.pdf ## +## ## +#################################################################################################### + +## ------------------------------- Import necessary librarires ---------------------------------- ## import tkinter as tk from tkinter import ttk from tkinter import filedialog as fd @@ -12,17 +29,25 @@ import math from shutil import copy2 import numpy as np +import ctypes from Include.Analyze import* from Include.Calibration import* from Include.FitData import* from Include.Eloss import* from Include.Thick import* +from Include.clear_frame import* +from Include.remove_file import* +from Include.update_file_list import* +from Include.show_deletion_popup import* +## ---------------------------------------------------------------------------------------------- ## + +############################################### +# Handles display scaling # +# works on Windows 10/11 and Linux/Kubuntu # +############################################### +ctypes.windll.shcore.SetProcessDpiAwareness(1) - -########## Ajusta-se ao ecra e foca os widgets - Windows ###### -import ctypes -ctypes.windll.shcore.SetProcessDpiAwareness(1) ########################################################### # Returns the index of the Tab the user is on ########################################################### From e4b78bea7a07321e27eeec9e11f8d6f31fbaec7f Mon Sep 17 00:00:00 2001 From: RiPires Date: Wed, 2 Jul 2025 15:39:24 +0100 Subject: [PATCH 03/44] Code review: * review of Current_Tab() function - docstring, comments in english and variable names; * review of ClearWidget() function - docsctring, comments in english and variable names; * creation of clear_frame.py module in Include, as auxiliary function for the ClearWidget(); --- ARC-TF.py | 219 ++++++++++++++++++----------------------- Include/clear_frame.py | 22 +++++ 2 files changed, 120 insertions(+), 121 deletions(-) create mode 100644 Include/clear_frame.py diff --git a/ARC-TF.py b/ARC-TF.py index d2ec7cd..0eb4c57 100644 --- a/ARC-TF.py +++ b/ARC-TF.py @@ -48,155 +48,132 @@ ############################################### ctypes.windll.shcore.SetProcessDpiAwareness(1) -########################################################### -# Returns the index of the Tab the user is on -########################################################### +############################################### +# Returns the index of the Tab the user is on # +############################################### def Current_Tab(): - - final_num = Notebook.notebook.index(Notebook.notebook.select()) - 1 # Devolve o id da tab onde o utilizador se encontra # Vai buscar o numero na string do id - # Altera-se o valor para corresponder aos indices da lista - - if final_num >= 0: - return final_num - - elif final_num < 0: # Para o caso do utilizador se encontrar na tab dos resultados finais + """ + Returns the ID of the tab where the user is on, + by getting the index of the selected tab in the notebook. + """ + ## Get index of the current tab in the notebook + tabID = Notebook.notebook.index(Notebook.notebook.select()) - 1 + + ## Check if the user is in the "final results" tab (has negative index) + if tabID < 0: pass + else: + return tabID ######################################################################################### -# Apaga as widgets dentro de frames e tira a geometria de frames, para fazer renovacao -# de dados. Podera conter, eventualmente, mais frames do que contem agora +# Clears and resets specific UI frames and associated data files depending on the +# type of frame specified. ######################################################################################### def ClearWidget(Frame, parameter): + """ + Function: ClearWidget + -------------------------------------------- + Purpose: + Clears and resets specific UI frames and + associated data files depending on the + type of frame specified. + + Parameters: + Frame (str) : The name of the frame to clear. + Options include: 'Graphic', 'Algorithm', + 'Results', 'Source', 'Popup', 'Image', + 'Linear', 'Thickness', 'Final', 'Everything' + parameter (int) : Used to control conditional deletion of + files or reset of variables. + (1 = full reset with file deletion) + + Dependencies: + - Uses the global TabList and TabTracker structures. + - Assumes each frame is a Tkinter Frame with children. + - Depends on external objects like `Notebook`, `wng`. + """ num = Current_Tab() + tab = TabList[num][1] if Frame == 'Graphic': - ## Delete old plot and build new one - for widget in TabList[num][1].GraphicFrame.winfo_children(): - widget.destroy() - TabList[num][1].GraphicFrame.grid_remove() - widget = 0 - for widget in TabList[num][1].Extra_Frame.winfo_children(): - widget.destroy() - TabList[num][1].Extra_Frame.grid_remove() - - elif Frame == 'Algorithm': - for widget in TabList[num][1].AlgFrame.winfo_children(): - widget.destroy() #Destroi a opcao de widgets anteriores dos algoritmos + # Clear all widgets from graphic-related frames + clear_frame(tab.GraphicFrame) + clear_frame(tab.Extra_Frame) + elif Frame == 'Algorithm': + # Clear previous algorithm UI and reset selection + clear_frame(tab.AlgFrame) if parameter == 1: - TabList[num][1].Algorithm_Method.set('Select Algorithm to Run') - TabList[num][1].Algorithm.set(0) - + tab.Algorithm_Method.set('Select Algorithm to Run') + tab.Algorithm.set(0) + elif Frame == 'Results': - for widget in TabList[num][1].ResultFrame.winfo_children(): - widget.destroy() #Destroi os resultados anteriores dos algoritmos - TabList[num][1].ResultFrame.grid_remove() - - if parameter == 1: #Porque o search do algoritmo de selecao manual reconstroi os widgets - # da frame sempre que se encontra um novo ponto, e necessario - # configurar o caso onde ha reset dos dados e o caso onde nao ha reset - if os.path.isfile(TabList[num][3]) == True: - os.remove(TabList[num][3]) - - elif Frame == 'Source': # Este for remove as opcoes de energia de decaimento das fontes de alphas - for widget in TabList[num][1].SourceOptionsFrame.winfo_children(): - widget.destroy() - TabList[num][1].SourceOptionsFrame.grid_remove() + # Clear result display and delete results file if required + clear_frame(tab.ResultFrame) if parameter == 1: - TabList[num][1].Source.set('Radiation Sources') - + remove_file(TabList[num][3]) # Output file + + elif Frame == 'Source': + # Clear source options UI and reset selection + clear_frame(tab.SourceOptionsFrame) + if parameter == 1: + tab.Source.set('Radiation Sources') - elif Frame == 'Popup': # Remove os popups que existem no programa + elif Frame == 'Popup': + # Destroy warning popup for widget in wng.warning.winfo_children(): widget.destroy() wng.warning.destroy() - elif Frame == 'Image': # Remove a imagem sempre que se clicar a comecar outra + elif Frame == 'Image': + # Destroy decay image popup for widget in wng.decay.winfo_children(): widget.destroy() wng.decay.destroy() + elif Frame == 'Linear': + # Clear linear regression result display and optionally delete file + clear_frame(tab.LinearRegressionFrame) + clear_frame(Notebook.Calib_Result2) + if parameter == 1: + remove_file(TabList[num][4]) # Calibration file - elif Frame == 'Linear': # Remove os resultados da regressao linear - for widget in TabList[num][1].LinearRegressionFrame.winfo_children(): - widget.destroy() - TabList[num][1].LinearRegressionFrame.grid_remove() - widget = 0 - for widget in Notebook.Calib_Result2.winfo_children(): - widget.destroy() - - if parameter == 1: # Nem todas as opcoes necessitam de destruir os resultados, - # portanto existe o parametro, para fazer a escolha de apagar o documento - os.remove(TabList[num][4]) - - elif Frame == 'Thickness': # Remove os resultados do calculo da espessura - for widget in TabList[num][1].ThicknessFrame.winfo_children(): - widget.destroy() - TabList[num][1].ThicknessFrame.grid_remove() - widget = 0 - for widget in Notebook.Mat_Result2.winfo_children(): - widget.destroy() - - - if parameter == 1: # Apaga os resultados escritos calculados da espessura - TabList[num][1].Mat.set('Select Material') - os.remove(TabList[num][4]) - - elif Frame == 'Final': # Para o caso de se apagarem tabs, o final results e atualizado - for widget in Notebook.Mat_Result2.winfo_children(): - widget.destroy() - widget = 0 - for widget in Notebook.Calib_Result2.winfo_children(): - widget.destroy() - - elif Frame == 'Everything': # Esta e a opcao que da reset a tudo numa tab - for widget in TabList[num][1].GraphicFrame.winfo_children(): - widget.destroy() - widget = 0 - TabList[num][1].GraphicFrame.grid_remove() - - for widget in TabList[num][1].Extra_Frame.winfo_children(): - widget.destroy() - TabList[num][1].Extra_Frame.grid_remove() - widget = 0 - - for widget in TabList[num][1].AlgFrame.winfo_children(): - widget.destroy() - widget = 0 - TabList[num][1].AlgFrame.grid_remove() - TabList[num][1].Algorithm_Method.set('Select Algorithm to Run') - TabList[num][1].Algorithm.set(0) - - for widget in TabList[num][1].ResultFrame.winfo_children(): - widget.destroy() - widget = 0 - TabList[num][1].ResultFrame.grid_remove() - + elif Frame == 'Thickness': + # Clear thickness calculation results and optionally delete file + clear_frame(tab.ThicknessFrame) + clear_frame(Notebook.Mat_Result2) + if parameter == 1: + tab.Mat.set('Select Material') + remove_file(TabList[num][4]) # Thickness file + + elif Frame == 'Final': + # Clear final results display + clear_frame(Notebook.Mat_Result2) + clear_frame(Notebook.Calib_Result2) + + elif Frame == 'Everything': + # Full reset of all UI elements and files in the current tab + clear_frame(tab.GraphicFrame) + clear_frame(tab.Extra_Frame) + clear_frame(tab.AlgFrame) + tab.Algorithm_Method.set('Select Algorithm to Run') + tab.Algorithm.set(0) + clear_frame(tab.ResultFrame) + + # Conditional clearing depending on tab type if TabTracker[num] < 0: - - for widget in TabList[num][1].SourceOptionsFrame.winfo_children(): - widget.destroy() - widget = 0 - TabList[num][1].SourceOptionsFrame.grid_remove() - TabList[num][1].Source.set('Radiation Sources') - - for widget in TabList[num][1].LinearRegressionFrame.winfo_children(): - widget.destroy() - widget = 0 - TabList[num][1].LinearRegressionFrame.grid_remove() + clear_frame(tab.SourceOptionsFrame) + tab.Source.set('Radiation Sources') + clear_frame(tab.LinearRegressionFrame) elif TabTracker[num] > 0: + clear_frame(tab.ThicknessFrame) + tab.Mat.set('Select Material') - for widget in TabList[num][1].ThicknessFrame.winfo_children(): - widget.destroy() - TabList[num][1].ThicknessFrame.grid_remove() - TabList[num][1].Mat.set('Select Material') - + # Delete associated output files if requested if parameter == 1: - if os.path.isfile(TabList[num][3]) == True: - os.remove(TabList[num][3]) - if os.path.isfile(TabList[num][4]) == True: - os.remove(TabList[num][4]) + remove_file(TabList[num][3]) + remove_file(TabList[num][4]) ############################################################################################ # Funcao que le os ficheiros e devolve listas. Estas podem ser 2d ou 1d, podem ter separadores diff --git a/Include/clear_frame.py b/Include/clear_frame.py new file mode 100644 index 0000000..b1a5b47 --- /dev/null +++ b/Include/clear_frame.py @@ -0,0 +1,22 @@ +#################################################################################################### +## ## +## ARC-TF stands for Alpha particles' energy loss and Rutherford backscattering ## +## spectrometry methods for Characterization of Thin Films. ## +## ## +## ARC-TF is a GUI (Guided User Interface) intended to expedite the process of ## +## characterizing thin films, via an interface with ease of use, and backend ## +## algorithms that accelerate the data analysis. ## +## ## +## This project is the result of a LIP Summer Internship, within the NUC-RIA group. ## +## A publication resulting from the internship, resuming the work taken to develop ## +## the first version of ARC-TF, can be searched for by the reference LIP-STUDENTS-23-15. ## +## Directly available at https://www.lip.pt/files/training/papers/2023/pdf/2023-PAPER-179-15.pdf ## +## ## +#################################################################################################### + +def clear_frame(frame, remove_grid=True): + """Destroy all widgets in the given frame and optionally remove it from the grid.""" + for widget in frame.winfo_children(): + widget.destroy() + if remove_grid: + frame.grid_remove() \ No newline at end of file From a2fee70364084578cfe3d937fae0b124288b7e07 Mon Sep 17 00:00:00 2001 From: RiPires Date: Wed, 2 Jul 2025 15:45:50 +0100 Subject: [PATCH 04/44] Code review - function File_Reader() * included docstring, comments in english, and deleted code that was unnecessary; --- ARC-TF.py | 95 +++++++++++++++++++++++++++++++------------------------ 1 file changed, 54 insertions(+), 41 deletions(-) diff --git a/ARC-TF.py b/ARC-TF.py index 0eb4c57..bff0f02 100644 --- a/ARC-TF.py +++ b/ARC-TF.py @@ -176,66 +176,79 @@ def ClearWidget(Frame, parameter): remove_file(TabList[num][4]) ############################################################################################ -# Funcao que le os ficheiros e devolve listas. Estas podem ser 2d ou 1d, podem ter separadores -# diferentes (entre as colunas) e pode devolver as listas como strings, floats ou ints +# Reads data from a text file and returns it as a 1D or 2D list, depending on the format. # +# Handles different column separators, number formats (int/float/string), and optional # +# real-time data extraction for GUI updates. # ############################################################################################ def File_Reader(Document, Separator, Decimal, Upload): - + """ + Function: File_Reader + ------------------------------------------------------------------------------------------ + Purpose: + Reads data from a text file and returns it as a 1D or 2D list, depending on the format. + Handles different column separators, number formats (int/float/string), and optional + real-time data extraction for GUI updates. + + Parameters: + Document (str) : Path to the text file to be read. + Separator (str) : Character used to separate columns (e.g. '\t', ',', ' '). + Use '0' to indicate a 1D list (no column separation). + Decimal (str) : Controls data type conversion: + 'Yes' -> Convert values to float + 'No' -> Convert values to int + 'String' -> Return raw strings (1D only) + Upload (str) : If set to 'Yes', updates the GUI with a real-time value from the file. + + Returns: + List of values: + - 2D list if Separator != '0' + - 1D list if Separator == '0' + - Type of values (string/float/int) based on Decimal input + + Notes: + - Assumes that if Upload is 'Yes', line 9 (index 8) contains real-time info (in seconds). + - Assumes valid format and no missing separators for 2D inputs. + """ num = Current_Tab() - with open(Document, 'r') as OpenFile: # Abre (e fecha) o documento - lines = OpenFile.read() # Le os dados como string - lines = lines.splitlines() #Separa o array em linhas + # Open file and read its entire content + with open(Document, 'r') as OpenFile: + lines = OpenFile.read() + + # Split the content by lines + lines = lines.splitlines() + # If needed, update GUI with the "measurement live-time" value from line 9 if Upload == 'Yes': - TabList[num][1].Real_Time.set(lines[8] + ' s') - - if Separator != '0': # O separator verifica se temos uma matriz ou um vetor - # caso seja '0', o documento a ser lido e um vetor, e nao e necessario - # separar por colunas - - Results = [[0 for i in range(1)]for j in range(len(lines))] # Inicio de uma matriz com entradas - # independentes - i = 0 - - for line in lines: - Results[i] = (line.split(Separator)) # Aqui separam se as colunas - i += 1 - - i = 0 - j = 0 + TabList[num][1].Real_Time.set(lines[8] + ' s') - for j in range(0, len(lines)): # Neste ciclo, sao transformados os resultados em int ou float, - # conforme o input - for i in range(0, len(Results[0])): + # If it's a 2D file (e.g. table with multiple columns) + if Separator != '0': + Results = [[0] for _ in range(len(lines))] # Create a placeholder matrix + for i, line in enumerate(lines): + Results[i] = line.split(Separator) # Split each line by separator + # Convert each value to float or int + for j in range(len(Results)): + for i in range(len(Results[0])): # Assumes all lines have equal number of columns if Results[j][i] == '': - pass - + pass # Skip empty entries elif Decimal == 'Yes': Results[j][i] = float(Results[j][i]) - elif Decimal == 'No': Results[j][i] = int(Results[j][i]) - return Results - - else: - i = 0 - if Decimal == 'String': # Caso queiramos apenas uma string, a funcao devolve logo o vetor lines - return lines - + else: + # Handle 1D vector (no separator between values) + if Decimal == 'String': + return lines # Return raw strings else: - - for i in range(0, len(lines)): # Aqui transforma se o vetor string em int ou float e devolve - + for i in range(len(lines)): if Decimal == 'Yes': - lines[i] = float(lines[i]) - + lines[i] = float(lines[i]) elif Decimal == 'No': lines[i] = int(lines[i]) - return lines ############################################################################################## From 49d58ab6d86a94b43af87a027a6b2de18001e630 Mon Sep 17 00:00:00 2001 From: RiPires Date: Wed, 2 Jul 2025 15:55:27 +0100 Subject: [PATCH 05/44] Review of Precision() function: * included docstring, comments in english, and rewrote the code to be more readable, and avoid unnecessary loops; --- ARC-TF.py | 40 +++++++++++++++++++++++++--------------- 1 file changed, 25 insertions(+), 15 deletions(-) diff --git a/ARC-TF.py b/ARC-TF.py index bff0f02..bbd0b7a 100644 --- a/ARC-TF.py +++ b/ARC-TF.py @@ -251,24 +251,34 @@ def File_Reader(Document, Separator, Decimal, Upload): lines[i] = int(lines[i]) return lines -############################################################################################## -# Devolve o numero de algarismos significativos com base numa incerteza -############################################################################################### +########################################################################### +# Returns the number of significant figures based on an uncertainty value # +########################################################################### def Precision(value): + """ + Calculate the number of decimal places required to represent the first significant digit + of based on an uncertainty value. - counter = 0 - number = float(value) + Parameters: + value (float or str): The uncertainty value. - if abs(number) < 1: - while abs(number) < 1: - number = number * 10 - counter += 1 - counter = counter + 1 - return counter - - elif abs(number) > 1: - counter = 0 - return counter + Returns: + int: Number of decimal places needed for the first significant digit. + Returns 0 if the value is zero or invalid. + """ + try: + number = abs(float(value)) + if number == 0: + return 0 + # Get exponent of the first significant digit + exponent = int(math.floor(math.log10(number))) + # If exponent >= 0, no decimal places needed + if exponent >= 0: + return 0 + else: + return abs(exponent) + except Exception: + return 0 ############################################################################################ # Le os resultados finais e exibe os na primeira tab From 5be672ee474563aef905970510688998b40bee4a Mon Sep 17 00:00:00 2001 From: RiPires Date: Wed, 2 Jul 2025 16:02:02 +0100 Subject: [PATCH 06/44] Code review Final_Results() fucntion: * added docstring and comments in english; * removed unnecessary code; --- ARC-TF.py | 188 +++++++++++++++++++++++++----------------------------- 1 file changed, 86 insertions(+), 102 deletions(-) diff --git a/ARC-TF.py b/ARC-TF.py index bbd0b7a..1568e49 100644 --- a/ARC-TF.py +++ b/ARC-TF.py @@ -280,136 +280,120 @@ def Precision(value): except Exception: return 0 -############################################################################################ -# Le os resultados finais e exibe os na primeira tab -############################################################################################ +#################################################################### +# Reads and displays the final results on the first tab of the GUI # +#################################################################### def Final_Results(tracker): - + """ + Function: Final_Results + ------------------------ + Reads and displays the final results on the first tab of the GUI. + + The behavior depends on: + - The current method (e.g., 'ROI Select') chosen for the analysis. + - The tracker value, which indicates whether calibration (-), material thickness (+), + or idle (0) operations are being requested. + + If calibration: calls Linearize or LinearizeWithErrors depending on the method. + If material thickness: calls Final_Calculation or ROI_Thick_Calculation. + + For each tab (loop over TabTracker): + - Reads result files and displays values using tkinter labels. + - If calibration: shows slope/intersect with uncertainties. + - If material: shows thickness per peak and average with uncertainty. + """ num = Current_Tab() method = TabList[num][1].Algorithm_Method.get() + # Decide which analysis to apply if tracker < 0 and method == 'ROI Select': LinearizeWithErrors() - elif tracker < 0 and method != 'ROI Select': Linearize() - elif tracker > 0 and method != 'ROI Select': Final_Calculation() - elif tracker > 0 and method == 'ROI Select': ROI_Thick_Calculation() - elif tracker == 0: - pass - - for i in range(0, len(TabTracker)): - if (tracker < 0 or tracker == 0) and TabTracker[i] < 0: - if os.path.isfile(TabList[i][4]) == True: + pass - if TabList[i][1].energy.get() == 1000: - unit_energy = 'MeV' + # Loop through all tabs to update results + for i in range(len(TabTracker)): + # CALIBRATION RESULTS DISPLAY + if (tracker <= 0) and TabTracker[i] < 0: + if os.path.isfile(TabList[i][4]): - elif TabList[i][1].energy.get() == 1: - unit_energy = 'keV' + # Determine energy units + energy_val = TabList[i][1].energy.get() + unit_energy = 'MeV' if energy_val == 1000 else 'keV' + # Read calibration results Results = File_Reader(TabList[i][4], '0', 'String', 'No') - tk.Label(Notebook.Calib_Result2, text = 'Calibration Trial ' + - str(-TabTracker[i]) + ' - ' + - TabList[i][1].Source.get()).grid(row = 4 * i + i, columnspan = 3) - tk.Label(Notebook.Calib_Result2, - text = '(' + unit_energy + ')').grid(row = 4 * i + i + 1, column = 0) - tk.Label(Notebook.Calib_Result2, - text = 'Values').grid(row = 4 * i + i + 1, column = 1) - tk.Label(Notebook.Calib_Result2, - text = 'Uncertainty').grid(row = 4 * i + i + 1, column = 2) - tk.Label(Notebook.Calib_Result2, - text = 'Slope').grid(row = 4 * i + i + 2, column = 0) - tk.Label(Notebook.Calib_Result2, - text = 'Intersect').grid(row = 4 * i + i + 3, column = 0) - tk.Label(Notebook.Calib_Result2, - text = '').grid(row = 4 * i + i + 4, column = 0) - - tk.Label(Notebook.Calib_Result2, - text = '%.*f' %(int(Results[5]), float(Results[1]))).grid( - row = 4 * i + i + 2, column = 1) - tk.Label(Notebook.Calib_Result2, - text = '%.*f' %(int(Results[5]), float(Results[2]))).grid( - row = 4 * i + i + 2, column = 2) - tk.Label(Notebook.Calib_Result2, - text = '%.*f' %(int(Results[6]), float(Results[3]))).grid( - row = 4 * i + i + 3, column = 1) - tk.Label(Notebook.Calib_Result2, - text = '%.*f' %(int(Results[6]), float(Results[4]))).grid( - row = 4 * i + i + 3, column = 2) - else: - Notebook.calib_canvas.update_idletasks() - Notebook.calib_canvas.config(scrollregion = Notebook.Calib_Result2.bbox()) - Notebook.Calib_Result2.bind('', - lambda e: Notebook.calib_canvas.configure( - scrollregion = Notebook.calib_canvas.bbox('all'), width = e.width)) - - if (tracker > 0 or tracker == 0) and TabTracker[i] > 0: - if os.path.isfile(TabList[i][4]) == True and os.path.isfile(TabList[i][3]) == True: + # Display calibration trial info + tk.Label(Notebook.Calib_Result2, text=f'Calibration Trial {-TabTracker[i]} - {TabList[i][1].Source.get()}').grid(row=4*i+i, columnspan=3) + tk.Label(Notebook.Calib_Result2, text=f'({unit_energy})').grid(row=4*i+i+1, column=0) + tk.Label(Notebook.Calib_Result2, text='Values').grid(row=4*i+i+1, column=1) + tk.Label(Notebook.Calib_Result2, text='Uncertainty').grid(row=4*i+i+1, column=2) + tk.Label(Notebook.Calib_Result2, text='Slope').grid(row=4*i+i+2, column=0) + tk.Label(Notebook.Calib_Result2, text='Intersect').grid(row=4*i+i+3, column=0) + tk.Label(Notebook.Calib_Result2, text='').grid(row=4*i+i+4, column=0) + + # Display slope and intercept with uncertainty + tk.Label(Notebook.Calib_Result2, text='%.*f' % (int(Results[5]), float(Results[1]))).grid(row=4*i+i+2, column=1) + tk.Label(Notebook.Calib_Result2, text='%.*f' % (int(Results[5]), float(Results[2]))).grid(row=4*i+i+2, column=2) + tk.Label(Notebook.Calib_Result2, text='%.*f' % (int(Results[6]), float(Results[3]))).grid(row=4*i+i+3, column=1) + tk.Label(Notebook.Calib_Result2, text='%.*f' % (int(Results[6]), float(Results[4]))).grid(row=4*i+i+3, column=2) + + else: + # Update canvas if no result file + Notebook.calib_canvas.update_idletasks() + Notebook.calib_canvas.config(scrollregion=Notebook.Calib_Result2.bbox()) + Notebook.Calib_Result2.bind('', + lambda e: Notebook.calib_canvas.configure( + scrollregion=Notebook.calib_canvas.bbox('all'), width=e.width)) + + # MATERIAL RESULTS DISPLAY + if (tracker >= 0) and TabTracker[i] > 0: + if os.path.isfile(TabList[i][4]) and os.path.isfile(TabList[i][3]): + + # Read result and peak files Results = File_Reader(TabList[i][4], '0', 'Yes', 'No') Peaks = File_Reader(TabList[i][3], ',', 'Yes', 'No') Peaks.sort() - units_list = ['nm', '\u03bcm', - '\u03bcg' + ' cm' + '{}'.format('\u207B' + '\u00b2'), - '10' + '{}'.format('\u00b9' + '\u2075') + ' Atoms' - + ' cm' + '{}'.format('\u207B' + '\u00b3')] - - units_values = [10.0**9, 10.0**6, 0.0, -1.0] + # Units and conversion setup + units_list = ['nm', 'μm', 'μg cm⁻²', '10¹⁵ Atoms cm⁻³'] + units_values = [1e9, 1e6, 0.0, -1.0] index = units_values.index(TabList[i][1].units.get()) size = len(Peaks) - for j in range(0, size): + for j in range(size): if j == 0: - - tk.Label(Notebook.Mat_Result2, text = 'Material Trial ' + - str(TabTracker[i]) + ' - ' + - TabList[i][1].Mat.get()).grid(row = (4 + size) * i + i + j , columnspan = 2) - tk.Label(Notebook.Mat_Result2, - text = 'Peak Centroid').grid(row = (4 + size) * i + i + j + 1, column = 0) - tk.Label(Notebook.Mat_Result2, - text = 'Thickness').grid(row = (4 + size) * i + i + j + 1, column = 1) - - tk.Label(Notebook.Mat_Result2, - text = str("{:.1f}".format(Peaks[j][0]))).grid(row = (4 + size) * i + i + j + 2, - column = 0) - tk.Label(Notebook.Mat_Result2, - text = '%.*f' % (int(Results[-1]), Results[j]) + - ' ' + units_list[index] ).grid(row = (4 + size) * i + i + j + 2, - column = 1) - - tk.Label(Notebook.Mat_Result2, - text = '\nAverage').grid(row = (4 + size) * i + i + j + 3, column = 0) - tk.Label(Notebook.Mat_Result2, - text = 'Uncertainty').grid(row = (4 + size) * i + i + j + 4, column = 0) - tk.Label(Notebook.Mat_Result2, - text = '\n' + '%.*f' % (int(Results[-1]), Results[j + 1]) - + ' ' + units_list[index]).grid( - row = (4 + size) * i + i + j + 3, column = 1) - tk.Label(Notebook.Mat_Result2, - text = '%.*f' % (int(Results[-1]), Results[j + 2]) - + ' ' + units_list[index]).grid( - row = (4 + size) * i + i + j + 4, column = 1) - tk.Label(Notebook.Mat_Result2, - text = '').grid(row = (4 + size) * i + i + j + 5, - columnspan = 2) - + # Trial header and column labels + tk.Label(Notebook.Mat_Result2, text=f'Material Trial {TabTracker[i]} - {TabList[i][1].Mat.get()}').grid(row=(4+size)*i+i+j, columnspan=2) + tk.Label(Notebook.Mat_Result2, text='Peak Centroid').grid(row=(4+size)*i+i+j+1, column=0) + tk.Label(Notebook.Mat_Result2, text='Thickness').grid(row=(4+size)*i+i+j+1, column=1) + + # Peak energy and thickness + tk.Label(Notebook.Mat_Result2, text=f'{Peaks[j][0]:.1f}').grid(row=(4+size)*i+i+j+2, column=0) + tk.Label(Notebook.Mat_Result2, text='%.*f %s' % (int(Results[-1]), Results[j], units_list[index])).grid(row=(4+size)*i+i+j+2, column=1) + + # Display average and uncertainty + tk.Label(Notebook.Mat_Result2, text='\nAverage').grid(row=(4+size)*i+i+j+3, column=0) + tk.Label(Notebook.Mat_Result2, text='Uncertainty').grid(row=(4+size)*i+i+j+4, column=0) + tk.Label(Notebook.Mat_Result2, text='\n%.*f %s' % (int(Results[-1]), Results[j+1], units_list[index])).grid(row=(4+size)*i+i+j+3, column=1) + tk.Label(Notebook.Mat_Result2, text='%.*f %s' % (int(Results[-1]), Results[j+2], units_list[index])).grid(row=(4+size)*i+i+j+4, column=1) + tk.Label(Notebook.Mat_Result2, text='').grid(row=(4+size)*i+i+j+5, columnspan=2) + + # Update scrollable canvas Notebook.mat_canvas.update_idletasks() - Notebook.mat_canvas.config(scrollregion = Notebook.Mat_Result2.bbox()) - Notebook.Mat_Result2.bind('', - lambda e: Notebook.mat_canvas.configure( - scrollregion = Notebook.mat_canvas.bbox('all'), width = e.width)) - else: - print('WDK') - else: - print('WTF') + Notebook.mat_canvas.config(scrollregion=Notebook.Mat_Result2.bbox()) + Notebook.Mat_Result2.bind('', + lambda e: Notebook.mat_canvas.configure( + scrollregion=Notebook.mat_canvas.bbox('all'), width=e.width)) + ########################################################################################### # Permite a escolha de regressoes lineares por parte do utilizador ########################################################################################### From 3dda388711e4249aadb4812523edd7f62553841f Mon Sep 17 00:00:00 2001 From: RiPires Date: Wed, 2 Jul 2025 19:00:13 +0100 Subject: [PATCH 07/44] Review Calib_Choice() and FinalCalculation(): * added docstrings and comments in english; * changed some variable names to be more descriptive, and rearranjed some code for clarity; * still needs some refactoring; --- ARC-TF.py | 387 ++++++++++++++++++++++++++++++++---------------------- 1 file changed, 228 insertions(+), 159 deletions(-) diff --git a/ARC-TF.py b/ARC-TF.py index 1568e49..debabfd 100644 --- a/ARC-TF.py +++ b/ARC-TF.py @@ -394,197 +394,266 @@ def Final_Results(tracker): lambda e: Notebook.mat_canvas.configure( scrollregion=Notebook.mat_canvas.bbox('all'), width=e.width)) -########################################################################################### -# Permite a escolha de regressoes lineares por parte do utilizador -########################################################################################### +############################################################################### +# Allows the user to choose which linear regression(s) to use for calibration # +############################################################################### def Calib_Choice(): + """ + Opens a popup window allowing the user to select which linear regression(s) to use for calibration. - num = Current_Tab() - Measure = [] + This function scans all calibration tabs (where TabTracker < 0) and checks for the existence of valid + regression result files. For each valid regression, a checkbox is presented to the user. The user can + select one or more regressions to be used in subsequent calculations (e.g., thickness determination). + If no valid regressions are found, a warning popup is shown. - for i in range(0, len(TabList[num][1].Regression_List)): - TabList[num][1].Regression_List[i].set(-1) - # Este for previne as escolhas antigas de interferir com a nova selecao de regressoes - - for i in range(0, len(TabTracker)): + Behavior: + - Resets all previous regression selections for the current tab. + - Lists all calibration tabs with valid regression files. + - If none are found, displays a warning and instructions. + - Otherwise, displays a selection menu with checkboxes for each regression. + - User selections are stored in Regression_List variables for the current tab. - if TabTracker[i] < 0: # Certifica que so le ficheiros com regressoes lineares + Dependencies: + - Uses global TabList and TabTracker structures. + - Relies on tkinter for GUI elements and wng for popup management. - if os.path.isfile(TabList[i][4]) == True: - Measure.append(TabTracker[i]) - # Neste ciclo, o measure regista quantas tabs de calibracao tem uma regressao linear, - # ja que o tabtracker identifica as tabs de calibracao como sendo negativas, - # o measure tera sempre valores entre -1 e -10 + Returns: + None + """ + num = Current_Tab() # Get the index of the currently active tab + validCalib = [] # List of calibration tabs with valid regressions + validCalib_index = [] # Corresponding index in TabList for each valid regression + regression_value_map = {} - if not Measure: + # Reset all previous selections (checkboxes set to -1 = unchecked) + for i in range(len(TabList[num][1].Regression_List)): + TabList[num][1].Regression_List[i].set(-1) + + # Identify all calibration tabs (TabTracker < 0) with valid regression result files + for i in range(len(TabTracker)): + if TabTracker[i] < 0 and os.path.isfile(TabList[i][4]): + validCalib.append(TabTracker[i]) # e.g., -1, -2, ... + validCalib_index.append(i) # Store actual tab index for reference + + # If no valid calibration regressions found, show warning popup + if not validCalib: wng.popup('No Linear Regressions detected') - tk.Label(wng.warning, text = 'No linear Regressions were detected.\n\n' + - 'Please Perform a Calibration Trial before calculating the Film\'s Thickness.\n\n').pack() - tk.Button(wng.warning, text = 'Return', command = lambda: wng.warning.destroy()).pack() - # No caso do Measure estar vazio, aparece um aviso que nenhuma regressao linear foi efetuada + tk.Label(wng.warning, text=( + 'No linear regressions were detected.\n\n' + 'Please perform a Calibration Trial before calculating the film\'s thickness.\n\n')).pack() + tk.Button(wng.warning, text='Return', command=lambda: wng.warning.destroy()).pack() - else: # Caso contrario, entra o popup para selecionar quais as regressoes a utilizar + # Otherwise, show selection popup for user to choose regressions + else: wng.popup('Linear Regression Selection Menu') - tk.Label(wng.warning, text = 'Please Select a Calibration Trial \n' + - 'Choosing more than one calibration will average the slopes and intersects.\n\n').pack() - - for i in range(0, len(Measure)): - button_Choice = tk.Checkbutton(wng.warning, - text = 'Linear Regression of Calibration Trial ' + - str(-Measure[i]), - variable = TabList[num][1].Regression_List[i], - onvalue = -Measure[i], offvalue = -1) + tk.Label(wng.warning, text=( + 'Please select one or more calibration trials.\n' + 'Choosing multiple calibrations will average the slopes and intercepts.\n\n')).pack() + + for i in range(len(validCalib)): + tab_idx = validCalib_index[i] # Actual index in TabList and TabTracker + if i >= len(TabList[num][1].Regression_List): + print(f"Warning: More regressions than Regression_List slots (i={i})") + break + # Create a checkbox for each valid calibration regression + # Use a unique positive value for onvalue + on_value = i + 1 + regression_value_map[on_value] = TabTracker[tab_idx] + button_Choice = tk.Checkbutton( + wng.warning, + text=f'Linear Regression of Calibration Trial {-validCalib[i]}', + variable=TabList[num][1].Regression_List[i], # Correct indexing + onvalue=on_value, + offvalue=-1) + TabList[num][1].Regression_List[i].set(-1) # Ensure unchecked by default button_Choice.pack() - # Neste ciclo, por cada regressao linear efetuada, o utilizador pode esolher utilizar uma ou - # mais, para a calibracao. A Regression_List guarda valores 1 ou -1 sendo que o indice desta - # lista, e utilizado depois nos calculos finais + + # Store the mapping for later use (e.g., as an attribute of the tab or globally) + TabList[num][1].regression_value_map = regression_value_map - tk.Button(wng.warning, text = 'Return', command = lambda: ClearWidget('Popup', 0)).pack() + # Button to simply close the popup (could be extended with a Confirm button) + tk.Button(wng.warning, text='Return', command=lambda: ClearWidget('Popup', 0)).pack() -################################################################################################ -# Calcula a espessura por cada pico e a media das espessuras -################################################################################################ +##################################################################################### +# Calculate the material thickness for each detected peak and the average thickness # +# based on selected calibration regressions and stopping power data # +##################################################################################### def Final_Calculation(): + """ + Workflow: + - Reads the calibration regressions selected by the user. + - Calculates average calibration parameters (slope and intercept). + - Reads material stopping power data from file. + - Converts peak channels to energy using calibration. + - Integrates inverse stopping power over energy intervals to estimate thickness. + - Converts units according to user selection. + - Calculates average thickness and uncertainty. + - Displays results in the GUI and writes to an output file. + + Assumptions: + - TabList and TabTracker structures contain calibration and peak data. + - Material stopping power file has specific format with density and atomic mass on first line. + - User selections for material, units, and regressions are valid. + + Side effects: + - Updates GUI widgets with thickness results. + - Writes thickness results and uncertainty to a file. + """ num = Current_Tab() ClearWidget('Thickness', 0) - TabList[num][1].ThicknessFrame.grid(row = 5, columnspan = 3, pady = 5) - units_list = ['nm', '\u03bcm', - '\u03bcg' + ' cm' + '{}'.format('\u207B' + '\u00b2'), - '10' + '{}'.format('\u00b9' + '\u2075') + ' Atoms' - + ' cm' + '{}'.format('\u207B' + '\u00b3')] - - units_values = [10.0**9, 10.0**6, 0.0, -1.0] - index = units_values.index(TabList[num][1].units.get()) - - Material_choice = TabList[num][1].Mat.get() # Determina qual o ficheiro do material a ler - Material_choice = 'Files\Materials\\' + Material_choice + '.txt' - - slope = 0 - intersect = 0 - points = [] - regressions_index = [] - material_data = File_Reader(Material_choice, '|', 'Yes', 'No') #Daqui obtemos a lista que ira guardar - # as energias e o stopping power do material em uso - -# Este ciclo determina a tab de calibracao cuja regressao foi selecionada para uso -# o regressions_index guarda o indice do Tab Tracker -# Com este valor, podemos aceder ao indice do TabList para obter todos os dados que queiramos - for i in range(0, len(TabList[num][1].Regression_List)): - - if TabList[num][1].Regression_List[i].get() != -1: - regressions_index.append(TabTracker.index(-TabList[num][1].Regression_List[i].get())) + TabList[num][1].ThicknessFrame.grid(row=5, columnspan=3, pady=5) - i = 0 - j = 0 - Aux_Channel = [] - Temp = [] - - for j in range(0, len(TabList[regressions_index[i]][1].DecayList)): - if TabList[regressions_index[0]][1].DecayList[j].get() != -1: # Aqui, vamos buscar os valores de - # decaimento que a utilizar para o intervalo - Aux_Channel.append(TabList[regressions_index[0]][1].DecayList[j].get()) # de stopping powers - # Como a fonte e a mesma para todas as calibracoes, nao importa qual delas e selecionada - - Aux_Channel.sort() - peaks = len(Aux_Channel) # Para referencia do tamanho - - for i in range(0, len(regressions_index)): - - Aux = File_Reader(TabList[regressions_index[i]][4], '0', 'String', 'No') # Aqui - #vamos buscar as regressoes lineares para fazer uma media - - if Aux[0] == 'keV': - placeholder1 = float(Aux[1]) * 1000 - Aux[1] = str(placeholder1) - placeholder2 = float(Aux[3]) * 1000 - Aux[3] = str(placeholder2) - - slope = float(Aux[1]) + slope # Acumular o declive - intersect = float(Aux[3]) + intersect # Acumular a ordenada na origem - - points = File_Reader(TabList[num][3], ',', 'No', 'No') # Analise dos picos de materiais em estudo - points.sort() # Ordenar os picos por ordem crescente - slope = slope / len(regressions_index) # Buscar a media do declive - intersect = intersect / len(regressions_index) # Buscar a ordenada na origem - - i = 0 - j = 0 - Aux.clear() - thickness = 0 + units_list = ['nm', '\u03bcm', + '\u03bcg cm\u207B\u00B2', # µg cm⁻² + '10\u00B9\u2075 Atoms cm\u207B\u00B3'] # 10¹⁵ Atoms cm⁻³ - tk.Label(TabList[num][1].ThicknessFrame, - text = 'Thickness (' + units_list[index] + ')').grid(row = 0, column = 0) - tk.Label(TabList[num][1].ThicknessFrame, text = 'Channel').grid(row = 0, column = 1) + units_values = [1e9, 1e6, 0.0, -1.0] - for j in range(0, peaks): + # Get the index of the currently selected units from the units_values list + try: + index = units_values.index(TabList[num][1].units.get()) + except ValueError: + print("Error: Selected unit not found in units_values list.") + return - Temp.append((slope * points[j][0]) + intersect ) # Calibracao dos picos do material - uncertain = 0 # Ira devolver a incerteza da media da espessura - summed_values = 0 # Faz o somatorio dos valores do stopping power - i = 1 + # Determine the material file path based on user selection + material_filename = 'Files/Materials/' + TabList[num][1].Mat.get() + '.txt' + material_data = File_Reader(material_filename, '|', 'Yes', 'No') + # material_data expected to contain energy and stopping power info for chosen material + + # Initialize accumulators for slope and intercept from selected regressions + slope_sum = 0.0 + intercept_sum = 0.0 + selectedCalibs = [] + regression_value_map = getattr(TabList[num][1], 'regression_value_map', {}) + + # Build the list of indices from TabTracker corresponding to selected regressions + for i, reg_var in enumerate(TabList[num][1].Regression_List): + val = reg_var.get() + if val != -1 and val in regression_value_map: + # val is negative identifier, e.g. -1, -2, corresponding to calibration tabs in TabTracker + try: + idx = TabTracker.index(regression_value_map[val]) # Find index in TabTracker with positive value + selectedCalibs.append(idx) + except ValueError: + print(f"Warning: Regression selection value {regression_value_map[val]} not found in TabTracker") - for i in range(1, len(material_data)): # O ciclo comeca em 1 porque a linha 0 tem a densidade e - # o numero atomico - if material_data[i][0] >= Temp[j] and material_data[i][0] <= Aux_Channel[j]: + if not selectedCalibs: + print("No valid regression selected. Aborting calculation.") + return - stopping_power = ( 1 / material_data[i][1]) # Stopping power a dividir pelo step - summed_values = summed_values + stopping_power # O somatorio que - #resulta na aproximacao da espessura - - if index == 0 : - summed_values = summed_values / material_data[0][1] - summed_values = summed_values * 10000 + print(f"Selected calibrations: {selectedCalibs}") + # Assuming all selected calibrations share the same DecayList source, get channels used for stopping power range + selectedEnergies = [] + first_reg_idx = selectedCalibs[0] - if index == 1: - summed_values = summed_values / material_data[0][1] - summed_values = summed_values * 10 + if first_reg_idx >= len(TabList): + print(f"Error: First regression index {first_reg_idx} out of range for TabList.") + return - if index == 2: - summed_values = summed_values * 0.001 + for j in range(len(TabList[first_reg_idx][1].DecayList)): + decays = TabList[first_reg_idx][1].DecayList[j].get() + print(f"decays = {decays}") + if decays != -1: + selectedEnergies.append(decays) + + selectedEnergies.sort() + nrPeaks = len(selectedEnergies) + + # Sum slopes and intercepts from each selected regression file to compute average later + for reg_idx in selectedCalibs: + if reg_idx >= len(TabList): + print(f"Warning: Regression index {reg_idx} out of range for TabList, skipping.") + continue + reg_file = TabList[reg_idx][4] + reg_data = File_Reader(reg_file, '0', 'String', 'No') + + if reg_data[0] == 'keV': + # Convert keV to eV for slope and intercept if needed + reg_data[1] = str(float(reg_data[1]) * 1000) + reg_data[3] = str(float(reg_data[3]) * 1000) + + slope_sum += float(reg_data[1]) + intercept_sum += float(reg_data[3]) + + if len(selectedCalibs) == 0: + print("No regressions to average.") + return - if index == 3: - summed_values = summed_values * 1000 * ((6.02214076**(-23)) / material_data[0][0]) + slope_avg = slope_sum / len(selectedCalibs) + intercept_avg = intercept_sum / len(selectedCalibs) - Aux.append(summed_values) # Lista que guarda a espessura por perda de energia - thickness = thickness + (Aux[j]) # Espessua media + # Read the peaks data (material points), sort ascending by channel or energy + points = File_Reader(TabList[num][3], ',', 'No', 'No') + points.sort() - tk.Label(TabList[num][1].ThicknessFrame, text = '%.2f' % (Aux[j]) ).grid( - row = j + 1, column = 0) - tk.Label(TabList[num][1].ThicknessFrame, text = str(points[j][0])).grid( - row = j + 1, column = 1) + # Prepare to calculate thicknesses for each peak + thickness_list = [] - if j == peaks - 1: # No ultimo run do ciclo for - i = 0 - thickness = thickness / len(Aux) # A fazer a media da espessura - - my_file = open(TabList[num][4], 'w') - for i in range(0, len(Aux)): # Por fim faz se a incerteza da espessura media - uncertain = (Aux[i] - thickness)**2 + uncertain - my_file.write('%.3f' %(Aux[i])) - my_file.write('\n') + # Setup labels for GUI + tk.Label(TabList[num][1].ThicknessFrame, text=f'Thickness ({units_list[index]})').grid(row=0, column=0) + tk.Label(TabList[num][1].ThicknessFrame, text='Channel').grid(row=0, column=1) - uncertain = uncertain / (peaks - 1) - uncertain = math.sqrt(uncertain) # Ultimo passo que resulta na espessura certa + for j in range(nrPeaks): + # Calibrate each point with average regression slope and intercept + calibrated_energy = (slope_avg * points[j][0]) + intercept_avg - sig_fig = Precision(('%.2g' % (uncertain))) + summed_stopping_power = 0.0 - my_file.write(str(thickness) + '\n') - my_file.write(str(uncertain) + '\n') - my_file.write(str(sig_fig)) - my_file.close() + # Sum inverse stopping power over energy interval [calibrated_energy, selectedEnergies[j]] + for i in range(1, len(material_data)): + energy = material_data[i][0] + stopping = material_data[i][1] - tk.Label(TabList[num][1].ThicknessFrame, - text = 'Average Thickness (' + units_list[index] + ')').grid(row = j + 2, column = 0) - tk.Label(TabList[num][1].ThicknessFrame, - text = 'Uncertainty (' + units_list[index] + ')').grid(row = j + 2, column = 1) - tk.Label(TabList[num][1].ThicknessFrame, - text = '%.*f' %(sig_fig, thickness)).grid(row = j + 3, column = 0) - tk.Label(TabList[num][1].ThicknessFrame, - text = '%.*f' %(sig_fig, uncertain)).grid(row = j + 3, column = 1) - tk.Button(TabList[num][1].ThicknessFrame, - command = lambda: ClearWidget('Thickness', 1), - text = 'Reset Results').grid(row = j + 4, columnspan = 2) + if calibrated_energy <= energy <= selectedEnergies[j]: + if stopping != 0: + summed_stopping_power += (1 / stopping) + else: + print(f"Warning: Stopping power zero at energy {energy}") + + # Unit conversions according to selected unit + if index == 0: + summed_stopping_power = summed_stopping_power / material_data[0][1] * 10000 + elif index == 1: + summed_stopping_power = summed_stopping_power / material_data[0][1] * 10 + elif index == 2: + summed_stopping_power *= 0.001 + elif index == 3: + # Avogadro's number: 6.02214076e23; material_data[0][0] assumed atomic mass + summed_stopping_power *= 1000 * (6.02214076e-23 / material_data[0][0]) + + thickness_list.append(summed_stopping_power) + + # Display thickness and channel values in GUI + tk.Label(TabList[num][1].ThicknessFrame, text=f'{summed_stopping_power:.2f}').grid(row=j+1, column=0) + tk.Label(TabList[num][1].ThicknessFrame, text=str(points[j][0])).grid(row=j+1, column=1) + + # Calculate average thickness and uncertainty + avg_thickness = sum(thickness_list) / len(thickness_list) + + uncertainty_sum = sum((x - avg_thickness)**2 for x in thickness_list) / (len(thickness_list) - 1) + uncertainty = math.sqrt(uncertainty_sum) + + # Determine significant figures for display + sig_fig = Precision(f'{uncertainty:.2g}') + + # Save results to file + with open(TabList[num][4], 'w') as my_file: + for val in thickness_list: + my_file.write(f'{val:.3f}\n') + my_file.write(f'{avg_thickness}\n') + my_file.write(f'{uncertainty}\n') + my_file.write(str(sig_fig)) + + # Display average thickness and uncertainty in GUI + tk.Label(TabList[num][1].ThicknessFrame, text=f'Average Thickness ({units_list[index]})').grid(row=nrPeaks+2, column=0) + tk.Label(TabList[num][1].ThicknessFrame, text=f'Uncertainty ({units_list[index]})').grid(row=nrPeaks+2, column=1) + tk.Label(TabList[num][1].ThicknessFrame, text=f'{avg_thickness:.{sig_fig}f}').grid(row=nrPeaks+3, column=0) + tk.Label(TabList[num][1].ThicknessFrame, text=f'{uncertainty:.{sig_fig}f}').grid(row=nrPeaks+3, column=1) + + tk.Button(TabList[num][1].ThicknessFrame, command=lambda: ClearWidget('Thickness', 1), + text='Reset Results').grid(row=nrPeaks+4, columnspan=2) ######################################################################################### # Calculo da espessura no método ROI Select From f024bab0585dc24424768990b39de5d8a582f660 Mon Sep 17 00:00:00 2001 From: RiPires Date: Wed, 2 Jul 2025 19:27:12 +0100 Subject: [PATCH 08/44] Code review: * merged Final_Calculation() and ROI_Thick_Calculation() into a single funtion called Thickness_Calculation() - created docstring and comments in english; * merged ResultManager() and ROIResultManager() into a single function called ResultManager() - created docstring and comments in english; * changed Final_Results() and ROI_Select_Alg functions accordingly; * tested the workflow for the new changes and it works as before; but still needs to be revisited for variable names and code structure; --- ARC-TF.py | 625 +++++++++++++++++++++++++++--------------------------- 1 file changed, 309 insertions(+), 316 deletions(-) diff --git a/ARC-TF.py b/ARC-TF.py index debabfd..2de1e85 100644 --- a/ARC-TF.py +++ b/ARC-TF.py @@ -288,15 +288,15 @@ def Final_Results(tracker): Function: Final_Results ------------------------ Reads and displays the final results on the first tab of the GUI. - + The behavior depends on: - The current method (e.g., 'ROI Select') chosen for the analysis. - The tracker value, which indicates whether calibration (-), material thickness (+), or idle (0) operations are being requested. - + If calibration: calls Linearize or LinearizeWithErrors depending on the method. - If material thickness: calls Final_Calculation or ROI_Thick_Calculation. - + If material thickness: calls Calculate_Thickness (handles both standard and ROI Select). + For each tab (loop over TabTracker): - Reads result files and displays values using tkinter labels. - If calibration: shows slope/intersect with uncertainties. @@ -310,10 +310,8 @@ def Final_Results(tracker): LinearizeWithErrors() elif tracker < 0 and method != 'ROI Select': Linearize() - elif tracker > 0 and method != 'ROI Select': - Final_Calculation() - elif tracker > 0 and method == 'ROI Select': - ROI_Thick_Calculation() + elif tracker > 0: + Calculate_Thickness() elif tracker == 0: pass @@ -322,7 +320,6 @@ def Final_Results(tracker): # CALIBRATION RESULTS DISPLAY if (tracker <= 0) and TabTracker[i] < 0: if os.path.isfile(TabList[i][4]): - # Determine energy units energy_val = TabList[i][1].energy.get() unit_energy = 'MeV' if energy_val == 1000 else 'keV' @@ -356,7 +353,6 @@ def Final_Results(tracker): # MATERIAL RESULTS DISPLAY if (tracker >= 0) and TabTracker[i] > 0: if os.path.isfile(TabList[i][4]) and os.path.isfile(TabList[i][3]): - # Read result and peak files Results = File_Reader(TabList[i][4], '0', 'Yes', 'No') Peaks = File_Reader(TabList[i][3], ',', 'Yes', 'No') @@ -392,7 +388,8 @@ def Final_Results(tracker): Notebook.mat_canvas.config(scrollregion=Notebook.Mat_Result2.bbox()) Notebook.Mat_Result2.bind('', lambda e: Notebook.mat_canvas.configure( - scrollregion=Notebook.mat_canvas.bbox('all'), width=e.width)) + scrollregion=Notebook.mat_canvas.bbox('all'), width=e.width)) + return ############################################################################### # Allows the user to choose which linear regression(s) to use for calibration # @@ -478,330 +475,326 @@ def Calib_Choice(): # Calculate the material thickness for each detected peak and the average thickness # # based on selected calibration regressions and stopping power data # ##################################################################################### -def Final_Calculation(): - """ - Workflow: - - Reads the calibration regressions selected by the user. - - Calculates average calibration parameters (slope and intercept). - - Reads material stopping power data from file. - - Converts peak channels to energy using calibration. - - Integrates inverse stopping power over energy intervals to estimate thickness. - - Converts units according to user selection. - - Calculates average thickness and uncertainty. - - Displays results in the GUI and writes to an output file. - - Assumptions: - - TabList and TabTracker structures contain calibration and peak data. - - Material stopping power file has specific format with density and atomic mass on first line. - - User selections for material, units, and regressions are valid. - - Side effects: - - Updates GUI widgets with thickness results. - - Writes thickness results and uncertainty to a file. +def Calculate_Thickness(): """ + Calculates the material thickness for each detected peak and the average thickness + for the current material trial tab, using the selected calibration regression(s) + and stopping power data. + + This function supports both the standard and 'ROI Select' analysis methods: + - For 'ROI Select', it uses a single selected calibration and calculates thickness + based on energy loss between calibration and film peaks. + - For the standard method, it allows averaging over multiple selected calibration + regressions, computes the average slope/intercept, and determines thickness for + each detected peak. + + The results (thickness per peak, average, and uncertainty) are written to a results file + and displayed in the GUI. + + Steps: + 1. Clears previous thickness results from the GUI. + 2. Determines the analysis method and retrieves relevant calibration(s). + 3. Loads material stopping power data and peak information. + 4. Calculates thickness for each peak and the average/uncertainty. + 5. Updates the results file and displays results in the GUI. + + Dependencies: + - Uses global TabList, TabTracker, and tkinter for GUI elements. + - Relies on helper functions: File_Reader, Eloss, Thickness, Precision, ClearWidget. + Returns: + None + """ num = Current_Tab() + method = TabList[num][1].Algorithm_Method.get() ClearWidget('Thickness', 0) TabList[num][1].ThicknessFrame.grid(row=5, columnspan=3, pady=5) + # Units and conversion setup units_list = ['nm', '\u03bcm', - '\u03bcg cm\u207B\u00B2', # µg cm⁻² - '10\u00B9\u2075 Atoms cm\u207B\u00B3'] # 10¹⁵ Atoms cm⁻³ - + '\u03bcg cm\u207B\u00B2', + '10\u00B9\u2075 Atoms cm\u207B\u00B3'] units_values = [1e9, 1e6, 0.0, -1.0] - - # Get the index of the currently selected units from the units_values list - try: - index = units_values.index(TabList[num][1].units.get()) - except ValueError: - print("Error: Selected unit not found in units_values list.") - return - - # Determine the material file path based on user selection - material_filename = 'Files/Materials/' + TabList[num][1].Mat.get() + '.txt' - material_data = File_Reader(material_filename, '|', 'Yes', 'No') - # material_data expected to contain energy and stopping power info for chosen material - - # Initialize accumulators for slope and intercept from selected regressions - slope_sum = 0.0 - intercept_sum = 0.0 - selectedCalibs = [] - regression_value_map = getattr(TabList[num][1], 'regression_value_map', {}) - - # Build the list of indices from TabTracker corresponding to selected regressions - for i, reg_var in enumerate(TabList[num][1].Regression_List): - val = reg_var.get() - if val != -1 and val in regression_value_map: - # val is negative identifier, e.g. -1, -2, corresponding to calibration tabs in TabTracker - try: - idx = TabTracker.index(regression_value_map[val]) # Find index in TabTracker with positive value - selectedCalibs.append(idx) - except ValueError: - print(f"Warning: Regression selection value {regression_value_map[val]} not found in TabTracker") - - if not selectedCalibs: - print("No valid regression selected. Aborting calculation.") - return - - print(f"Selected calibrations: {selectedCalibs}") - # Assuming all selected calibrations share the same DecayList source, get channels used for stopping power range - selectedEnergies = [] - first_reg_idx = selectedCalibs[0] - - if first_reg_idx >= len(TabList): - print(f"Error: First regression index {first_reg_idx} out of range for TabList.") - return - - for j in range(len(TabList[first_reg_idx][1].DecayList)): - decays = TabList[first_reg_idx][1].DecayList[j].get() - print(f"decays = {decays}") - if decays != -1: - selectedEnergies.append(decays) - - selectedEnergies.sort() - nrPeaks = len(selectedEnergies) - - # Sum slopes and intercepts from each selected regression file to compute average later - for reg_idx in selectedCalibs: - if reg_idx >= len(TabList): - print(f"Warning: Regression index {reg_idx} out of range for TabList, skipping.") - continue - reg_file = TabList[reg_idx][4] - reg_data = File_Reader(reg_file, '0', 'String', 'No') - - if reg_data[0] == 'keV': - # Convert keV to eV for slope and intercept if needed - reg_data[1] = str(float(reg_data[1]) * 1000) - reg_data[3] = str(float(reg_data[3]) * 1000) - - slope_sum += float(reg_data[1]) - intercept_sum += float(reg_data[3]) - - if len(selectedCalibs) == 0: - print("No regressions to average.") - return - - slope_avg = slope_sum / len(selectedCalibs) - intercept_avg = intercept_sum / len(selectedCalibs) - - # Read the peaks data (material points), sort ascending by channel or energy - points = File_Reader(TabList[num][3], ',', 'No', 'No') - points.sort() - - # Prepare to calculate thicknesses for each peak - thickness_list = [] - - # Setup labels for GUI - tk.Label(TabList[num][1].ThicknessFrame, text=f'Thickness ({units_list[index]})').grid(row=0, column=0) - tk.Label(TabList[num][1].ThicknessFrame, text='Channel').grid(row=0, column=1) - - for j in range(nrPeaks): - # Calibrate each point with average regression slope and intercept - calibrated_energy = (slope_avg * points[j][0]) + intercept_avg - - summed_stopping_power = 0.0 - - # Sum inverse stopping power over energy interval [calibrated_energy, selectedEnergies[j]] - for i in range(1, len(material_data)): - energy = material_data[i][0] - stopping = material_data[i][1] - - if calibrated_energy <= energy <= selectedEnergies[j]: - if stopping != 0: - summed_stopping_power += (1 / stopping) - else: - print(f"Warning: Stopping power zero at energy {energy}") - - # Unit conversions according to selected unit - if index == 0: - summed_stopping_power = summed_stopping_power / material_data[0][1] * 10000 - elif index == 1: - summed_stopping_power = summed_stopping_power / material_data[0][1] * 10 - elif index == 2: - summed_stopping_power *= 0.001 - elif index == 3: - # Avogadro's number: 6.02214076e23; material_data[0][0] assumed atomic mass - summed_stopping_power *= 1000 * (6.02214076e-23 / material_data[0][0]) - - thickness_list.append(summed_stopping_power) - - # Display thickness and channel values in GUI - tk.Label(TabList[num][1].ThicknessFrame, text=f'{summed_stopping_power:.2f}').grid(row=j+1, column=0) - tk.Label(TabList[num][1].ThicknessFrame, text=str(points[j][0])).grid(row=j+1, column=1) - - # Calculate average thickness and uncertainty - avg_thickness = sum(thickness_list) / len(thickness_list) - - uncertainty_sum = sum((x - avg_thickness)**2 for x in thickness_list) / (len(thickness_list) - 1) - uncertainty = math.sqrt(uncertainty_sum) - - # Determine significant figures for display - sig_fig = Precision(f'{uncertainty:.2g}') - - # Save results to file - with open(TabList[num][4], 'w') as my_file: - for val in thickness_list: - my_file.write(f'{val:.3f}\n') - my_file.write(f'{avg_thickness}\n') - my_file.write(f'{uncertainty}\n') - my_file.write(str(sig_fig)) - - # Display average thickness and uncertainty in GUI - tk.Label(TabList[num][1].ThicknessFrame, text=f'Average Thickness ({units_list[index]})').grid(row=nrPeaks+2, column=0) - tk.Label(TabList[num][1].ThicknessFrame, text=f'Uncertainty ({units_list[index]})').grid(row=nrPeaks+2, column=1) - tk.Label(TabList[num][1].ThicknessFrame, text=f'{avg_thickness:.{sig_fig}f}').grid(row=nrPeaks+3, column=0) - tk.Label(TabList[num][1].ThicknessFrame, text=f'{uncertainty:.{sig_fig}f}').grid(row=nrPeaks+3, column=1) - - tk.Button(TabList[num][1].ThicknessFrame, command=lambda: ClearWidget('Thickness', 1), - text='Reset Results').grid(row=nrPeaks+4, columnspan=2) - -######################################################################################### -# Calculo da espessura no método ROI Select -######################################################################################## -def ROI_Thick_Calculation(): - - num = Current_Tab() ## Get current tab's index nr - ClearWidget('Thickness', 0) - TabList[num][1].ThicknessFrame.grid(row = 5, columnspan = 3, pady = 5) - units_list = ['nm', '\u03bcm', - '\u03bcg' + ' cm' + '{}'.format('\u207B' + '\u00b2'), - '10' + '{}'.format('\u00b9' + '\u2075') + ' Atoms' - + ' cm' + '{}'.format('\u207B' + '\u00b3')] - units_values = [10.0**9, 10.0**6, 0.0, -1.0] index = units_values.index(TabList[num][1].units.get()) - calibration = TabList[num][1].Regression_List[0].get() ## vamos selecionar apenas uma calibração - - ## Get the selected material and stop. pow. - Material_choice = TabList[num][1].Mat.get() # Determina qual o ficheiro do material a ler - Material_choice = 'Files\Materials\\' + Material_choice + '.txt' - material_data = File_Reader(Material_choice, '|', 'Yes', 'No') #Daqui obtemos a lista que ira guardar - - ## Get energies of selected source - energies = [TabList[0][1].DecayList[k].get() for k in range(len(TabList[0][1].DecayList))] - energies.remove(-1.0) ## Remove unselected energies - - ## Get slope and intercept of the selected calib - calib_params = File_Reader(TabList[0][4], '0', 'String', 'No') - ## Check energy units to match the stop. pow. ones - if calib_params[0] == 'keV': - m = str(float(calib_params[1])*1000) ## slope - dm = str(float(calib_params[2])*1000) ## slope uncertainty - else: ### !!!!!!!!!! VERIFICAR ESTA PARTE !!!!!!!!!!! ### - m = str(float(calib_params[1])*1000) - dm = str(float(calib_params[2])*1000) - - ## Get calibration centroids - calibCents = [File_Reader(TabList[0][3], ',', 'Yes', 'No')[k][0] for k in range(len(File_Reader(TabList[0][3], ',', 'Yes', 'No')))] - ## Get calibration peak error - calibErr = [File_Reader(TabList[0][3], ',', 'Yes', 'No')[k][1] for k in range(len(File_Reader(TabList[0][3], ',', 'Yes', 'No')))] - ## Get film centroids - filmCents = [File_Reader(TabList[num][3], ',', 'Yes', 'No')[k][0] for k in range(len(File_Reader(TabList[num][3], ',', 'Yes', 'No')))] - ## Get film peak error - filmErr = [File_Reader(TabList[num][3], ',', 'Yes', 'No')[k][1] for k in range(len(File_Reader(TabList[num][3], ',', 'Yes', 'No')))] - - ## Calculate energy loss and uncertainty, returning min and max energy of alphas after crossing the film - Emin, Emax, eloss = Eloss(energies, calibCents, filmCents, calibErr, filmErr, m, dm) - - ## Get selected material stop. pow. - Material_choice = TabList[num][1].Mat.get() - Material_choice = 'Files\Materials\\' + Material_choice + '.txt' - material_data = File_Reader(Material_choice, '|', 'Yes', 'No') - - ## Calculate thickness from energy loss - ## for each peak - thickPeak = Thickness(energies, Emin, Emax, material_data) - ## the mean of all peaks - meanThick = np.mean([thick for thick in thickPeak]) - ## Calculate mean thickness std deviation - stdDevThick = np.std(thickPeak) - - ## Write results to file - result_file = open(TabList[num][4], 'w') - for i in range(0, len(thickPeak)): - result_file.write(str("{:.0f}".format(thickPeak[i]))+'\n') - result_file.write(str(meanThick) + '\n') - result_file.write(str(stdDevThick) + '\n') - result_file.write(str(0)) - result_file.close() - - ## Display results in the frame - ## header - tk.Label(TabList[num][1].ThicknessFrame, text = 'Peak Energy\n(MeV)').grid(row = 0, column = 0) - tk.Label(TabList[num][1].ThicknessFrame, text = ' ').grid(row = 0, column = 1) #spacer - tk.Label(TabList[num][1].ThicknessFrame, text = 'Channel\n').grid(row = 0, column = 2) - tk.Label(TabList[num][1].ThicknessFrame, text = ' ').grid(row = 0, column = 3) #spacer - tk.Label(TabList[num][1].ThicknessFrame, text = 'Eloss\n(keV)').grid(row = 0, column = 4) - tk.Label(TabList[num][1].ThicknessFrame, text = ' ').grid(row = 0, column = 5) #spacer - tk.Label(TabList[num][1].ThicknessFrame, text = 'Thickness\n(' + units_list[index] + ')').grid(row = 0, column = 6) - ## peak info - for k in range(len(eloss)): - tk.Label(TabList[num][1].ThicknessFrame, text = '%.3f' % (energies[k]) ).grid(row = k + 1, column = 0) - tk.Label(TabList[num][1].ThicknessFrame, text = ' ').grid(row = 0, column = 1) #spacer - tk.Label(TabList[num][1].ThicknessFrame, text = '%.1f' % (filmCents[k]) ).grid(row = k + 1, column = 2) - tk.Label(TabList[num][1].ThicknessFrame, text = ' ').grid(row = 0, column = 3) #spacer - tk.Label(TabList[num][1].ThicknessFrame, text = '%.0f' % (eloss[k]) ).grid(row = k + 1, column = 4) - tk.Label(TabList[num][1].ThicknessFrame, text = ' ').grid(row = 0, column = 5) #spacer - tk.Label(TabList[num][1].ThicknessFrame, text = '%.0f' % (thickPeak[k]) ).grid(row = k + 1, column = 6) - ## thickness final result - tk.Label(TabList[num][1].ThicknessFrame, - text = 'Average Thickness (' + units_list[index] + ')').grid(row = k + 2, column = 0) - tk.Label(TabList[num][1].ThicknessFrame, - text = 'Uncertainty (' + units_list[index] + ')').grid(row = k + 2, column = 4) - tk.Label(TabList[num][1].ThicknessFrame, - text = "{:.0f}".format(meanThick)).grid(row = k + 3, column = 0) - tk.Label(TabList[num][1].ThicknessFrame, - text = "{:.0f}".format(stdDevThick)).grid(row = k + 3, column = 4) - tk.Button(TabList[num][1].ThicknessFrame, - command = lambda: ClearWidget('Thickness', 1), - text = 'Reset Results').grid(row = k + 4, columnspan = 2) + + if method == 'ROI Select': + # --- ROI Select logic --- + calibration = TabList[num][1].Regression_List[0].get() # vamos selecionar apenas uma calibração + + # Get the selected material and stop. pow. + Material_choice = TabList[num][1].Mat.get() + Material_choice = 'Files\\Materials\\' + Material_choice + '.txt' + material_data = File_Reader(Material_choice, '|', 'Yes', 'No') + + # Get energies of selected source + energies = [TabList[0][1].DecayList[k].get() for k in range(len(TabList[0][1].DecayList))] + energies = [e for e in energies if e != -1.0] # Remove unselected energies + + # Get slope and intercept of the selected calib + calib_params = File_Reader(TabList[0][4], '0', 'String', 'No') + # Check energy units to match the stop. pow. ones + if calib_params[0] == 'keV': + m = str(float(calib_params[1]) * 1000) # slope + dm = str(float(calib_params[2]) * 1000) # slope uncertainty + else: + m = str(float(calib_params[1]) * 1000) + dm = str(float(calib_params[2]) * 1000) + + # Get calibration centroids and errors + calibCents = [File_Reader(TabList[0][3], ',', 'Yes', 'No')[k][0] for k in range(len(File_Reader(TabList[0][3], ',', 'Yes', 'No')))] + calibErr = [File_Reader(TabList[0][3], ',', 'Yes', 'No')[k][1] for k in range(len(File_Reader(TabList[0][3], ',', 'Yes', 'No')))] + filmCents = [File_Reader(TabList[num][3], ',', 'Yes', 'No')[k][0] for k in range(len(File_Reader(TabList[num][3], ',', 'Yes', 'No')))] + filmErr = [File_Reader(TabList[num][3], ',', 'Yes', 'No')[k][1] for k in range(len(File_Reader(TabList[num][3], ',', 'Yes', 'No')))] + + # Calculate energy loss and uncertainty, returning min and max energy of alphas after crossing the film + Emin, Emax, eloss = Eloss(energies, calibCents, filmCents, calibErr, filmErr, m, dm) + + # Get selected material stop. pow. + Material_choice = TabList[num][1].Mat.get() + Material_choice = 'Files\\Materials\\' + Material_choice + '.txt' + material_data = File_Reader(Material_choice, '|', 'Yes', 'No') + + # Calculate thickness from energy loss for each peak + thickPeak = Thickness(energies, Emin, Emax, material_data) + meanThick = np.mean([thick for thick in thickPeak]) + stdDevThick = np.std(thickPeak) + + # Write results to file + with open(TabList[num][4], 'w') as result_file: + for val in thickPeak: + result_file.write(str("{:.0f}".format(val)) + '\n') + result_file.write(str(meanThick) + '\n') + result_file.write(str(stdDevThick) + '\n') + result_file.write(str(0)) + + # Display results in the frame + # header + tk.Label(TabList[num][1].ThicknessFrame, text='Peak Energy\n(MeV)').grid(row=0, column=0) + tk.Label(TabList[num][1].ThicknessFrame, text=' ').grid(row=0, column=1) # spacer + tk.Label(TabList[num][1].ThicknessFrame, text='Channel\n').grid(row=0, column=2) + tk.Label(TabList[num][1].ThicknessFrame, text=' ').grid(row=0, column=3) # spacer + tk.Label(TabList[num][1].ThicknessFrame, text='Eloss\n(keV)').grid(row=0, column=4) + tk.Label(TabList[num][1].ThicknessFrame, text=' ').grid(row=0, column=5) # spacer + tk.Label(TabList[num][1].ThicknessFrame, text='Thickness\n(' + units_list[index] + ')').grid(row=0, column=6) + # peak info + for k in range(len(eloss)): + tk.Label(TabList[num][1].ThicknessFrame, text='%.3f' % (energies[k])).grid(row=k + 1, column=0) + tk.Label(TabList[num][1].ThicknessFrame, text=' ').grid(row=0, column=1) # spacer + tk.Label(TabList[num][1].ThicknessFrame, text='%.1f' % (filmCents[k])).grid(row=k + 1, column=2) + tk.Label(TabList[num][1].ThicknessFrame, text=' ').grid(row=0, column=3) # spacer + tk.Label(TabList[num][1].ThicknessFrame, text='%.0f' % (eloss[k])).grid(row=k + 1, column=4) + tk.Label(TabList[num][1].ThicknessFrame, text=' ').grid(row=0, column=5) # spacer + tk.Label(TabList[num][1].ThicknessFrame, text='%.0f' % (thickPeak[k])).grid(row=k + 1, column=6) + # thickness final result + tk.Label(TabList[num][1].ThicknessFrame, + text='Average Thickness (' + units_list[index] + ')').grid(row=k + 2, column=0) + tk.Label(TabList[num][1].ThicknessFrame, + text='Uncertainty (' + units_list[index] + ')').grid(row=k + 2, column=4) + tk.Label(TabList[num][1].ThicknessFrame, + text="{:.0f}".format(meanThick)).grid(row=k + 3, column=0) + tk.Label(TabList[num][1].ThicknessFrame, + text="{:.0f}".format(stdDevThick)).grid(row=k + 3, column=4) + tk.Button(TabList[num][1].ThicknessFrame, + command=lambda: ClearWidget('Thickness', 1), + text='Reset Results').grid(row=k + 4, columnspan=2) + else: + # --- Standard (non-ROI) logic --- + # Get the index of the currently selected units from the units_values list + try: + index = units_values.index(TabList[num][1].units.get()) + except ValueError: + print("Error: Selected unit not found in units_values list.") + return + + # Determine the material file path based on user selection + material_filename = 'Files/Materials/' + TabList[num][1].Mat.get() + '.txt' + material_data = File_Reader(material_filename, '|', 'Yes', 'No') + + # Initialize accumulators for slope and intercept from selected regressions + slope_sum = 0.0 + intercept_sum = 0.0 + selectedCalibs = [] + regression_value_map = getattr(TabList[num][1], 'regression_value_map', {}) + + # Build the list of indices from TabTracker corresponding to selected regressions + for i, reg_var in enumerate(TabList[num][1].Regression_List): + val = reg_var.get() + if val != -1 and val in regression_value_map: + try: + idx = TabTracker.index(regression_value_map[val]) + selectedCalibs.append(idx) + except ValueError: + print(f"Warning: Regression selection value {regression_value_map[val]} not found in TabTracker") + + if not selectedCalibs: + print("No valid regression selected. Aborting calculation.") + return + + # Assuming all selected calibrations share the same DecayList source, get channels used for stopping power range + selectedEnergies = [] + first_reg_idx = selectedCalibs[0] + if first_reg_idx >= len(TabList): + print(f"Error: First regression index {first_reg_idx} out of range for TabList.") + return + + for j in range(len(TabList[first_reg_idx][1].DecayList)): + decays = TabList[first_reg_idx][1].DecayList[j].get() + if decays != -1: + selectedEnergies.append(decays) + + selectedEnergies.sort() + nrPeaks = len(selectedEnergies) + + # Sum slopes and intercepts from each selected regression file to compute average later + for reg_idx in selectedCalibs: + if reg_idx >= len(TabList): + print(f"Warning: Regression index {reg_idx} out of range for TabList, skipping.") + continue + reg_file = TabList[reg_idx][4] + reg_data = File_Reader(reg_file, '0', 'String', 'No') + if reg_data[0] == 'keV': + reg_data[1] = str(float(reg_data[1]) * 1000) + reg_data[3] = str(float(reg_data[3]) * 1000) + slope_sum += float(reg_data[1]) + intercept_sum += float(reg_data[3]) + + if len(selectedCalibs) == 0: + print("No regressions to average.") + return + + slope_avg = slope_sum / len(selectedCalibs) + intercept_avg = intercept_sum / len(selectedCalibs) + + # Read the peaks data (material points), sort ascending by channel or energy + points = File_Reader(TabList[num][3], ',', 'No', 'No') + points.sort() + thickness_list = [] + + # Setup labels for GUI + tk.Label(TabList[num][1].ThicknessFrame, text=f'Thickness ({units_list[index]})').grid(row=0, column=0) + tk.Label(TabList[num][1].ThicknessFrame, text='Channel').grid(row=0, column=1) + + for j in range(nrPeaks): + # Calibrate each point with average regression slope and intercept + calibrated_energy = (slope_avg * points[j][0]) + intercept_avg + summed_stopping_power = 0.0 + + # Sum inverse stopping power over energy interval [calibrated_energy, selectedEnergies[j]] + for i in range(1, len(material_data)): + energy = material_data[i][0] + stopping = material_data[i][1] + if calibrated_energy <= energy <= selectedEnergies[j]: + if stopping != 0: + summed_stopping_power += (1 / stopping) + else: + print(f"Warning: Stopping power zero at energy {energy}") + + # Unit conversions according to selected unit + if index == 0: + summed_stopping_power = summed_stopping_power / material_data[0][1] * 10000 + elif index == 1: + summed_stopping_power = summed_stopping_power / material_data[0][1] * 10 + elif index == 2: + summed_stopping_power *= 0.001 + elif index == 3: + summed_stopping_power *= 1000 * (6.02214076e-23 / material_data[0][0]) + + thickness_list.append(summed_stopping_power) + + # Display thickness and channel values in GUI + tk.Label(TabList[num][1].ThicknessFrame, text=f'{summed_stopping_power:.2f}').grid(row=j+1, column=0) + tk.Label(TabList[num][1].ThicknessFrame, text=str(points[j][0])).grid(row=j+1, column=1) + + # Calculate average thickness and uncertainty + avg_thickness = sum(thickness_list) / len(thickness_list) + uncertainty_sum = sum((x - avg_thickness) ** 2 for x in thickness_list) / (len(thickness_list) - 1) + uncertainty = math.sqrt(uncertainty_sum) + sig_fig = Precision(f'{uncertainty:.2g}') + + # Save results to file + with open(TabList[num][4], 'w') as my_file: + for val in thickness_list: + my_file.write(f'{val:.3f}\n') + my_file.write(f'{avg_thickness}\n') + my_file.write(f'{uncertainty}\n') + my_file.write(str(sig_fig)) + + # Display average thickness and uncertainty in GUI + tk.Label(TabList[num][1].ThicknessFrame, text=f'Average Thickness ({units_list[index]})').grid(row=nrPeaks+2, column=0) + tk.Label(TabList[num][1].ThicknessFrame, text=f'Uncertainty ({units_list[index]})').grid(row=nrPeaks+2, column=1) + tk.Label(TabList[num][1].ThicknessFrame, text=f'{avg_thickness:.{sig_fig}f}').grid(row=nrPeaks+3, column=0) + tk.Label(TabList[num][1].ThicknessFrame, text=f'{uncertainty:.{sig_fig}f}').grid(row=nrPeaks+3, column=1) + tk.Button(TabList[num][1].ThicknessFrame, command=lambda: ClearWidget('Thickness', 1), + text='Reset Results').grid(row=nrPeaks+4, columnspan=2) return -######################################################################################### -# Recebe os resultados dos algoritmos e mostra no GUI -######################################################################################## +######################################### +# Displays algorithm results in the GUI # +######################################### def ResultManager(): + """ + Displays the results of the selected analysis algorithm in the Results frame of the current tab. - num = Current_Tab() + This function handles both standard and 'ROI Select' analysis methods: + - For 'ROI Select', it displays a list of detected peak centroids, their uncertainties (σ), and σ/√N, + each with a selectable checkbox. + - For standard methods, it displays a list of detected channels and their counts, each with a selectable checkbox. - ClearWidget('Results', 0) # A funcao e evocada para dar reset aos valores anteriores - TabList[num][1].ResultFrame.grid(row = 3, columnspan = 2, pady = 5) + For each result, a Tkinter Checkbutton is created to allow the user to select or deselect individual results. + The function also resets the Results frame before displaying new results. - values = File_Reader(TabList[num][3], ',', 'No', 'No') #Esta leitura devolve os valores de channel e counts + Dependencies: + - Uses global TabList and tkinter for GUI elements. + - Relies on the File_Reader helper function to load results from file. - for j in range(0, len(values)): # O ciclo for apenas cria os checkbuttons e as labels para depois guardar - # os valores a serem apagados/usados nas funcoes seguintes - Result_Button = tk.Checkbutton(TabList[num][1].ResultFrame, variable = TabList[num][1].Var_Data[j], - onvalue = 1, offvalue = -1, - text = 'Channel: ' + str(values[j][0])) - Result_Button.grid(row = j , column = 0) - Result_Button.select() - tk.Label(TabList[num][1].ResultFrame, - text = '\t Counts: ' + str(values[j][1])).grid(row = j , column = 1) + Returns: + None + """ + num = Current_Tab() -######################################################################################### -# Recebe os resultados do algoritmo ROI Select e mostra no GUI -######################################################################################## -def ROIResultManager(): + ClearWidget('Results', 0) # Reset previous results + TabList[num][1].ResultFrame.grid(row=3, columnspan=2, pady=5) - num = Current_Tab() + method = TabList[num][1].Algorithm_Method.get() - ClearWidget('Results', 0) # A funcao e evocada para dar reset aos valores anteriores - TabList[num][1].ResultFrame.grid(row = 3, columnspan = 2, pady = 5) - - values = File_Reader(TabList[num][3], ',', 'Yes', 'No') #Esta leitura devolve os valores de channel e counts - - for j in range(0, len(values)): # O ciclo for apenas cria os checkbuttons e as labels para depois guardar - # os valores a serem apagados/usados nas funcoes seguintes - Result_Button = tk.Checkbutton(TabList[num][1].ResultFrame, variable = TabList[num][1].Var_Data[j], - onvalue = 1, offvalue = -1, - text = 'Centroid: ' + str("{:.1f}".format(values[j][0]))) - Result_Button.grid(row = j , column = 0) - Result_Button.select() - tk.Label(TabList[num][1].ResultFrame, - text = '\t \u03C3 = ' + str("{:.1f}".format(values[j][2]))).grid(row = j , column = 1) - tk.Label(TabList[num][1].ResultFrame, - text = '\t \u03C3/\u221aN = ' + str("{:.3f}".format(values[j][1]))).grid(row = j , column = 2) + # ROI Select: expects centroids, sigma/sqrt(N), sigma + if method == 'ROI Select': + values = File_Reader(TabList[num][3], ',', 'Yes', 'No') + for j in range(len(values)): + Result_Button = tk.Checkbutton( + TabList[num][1].ResultFrame, + variable=TabList[num][1].Var_Data[j], + onvalue=1, offvalue=-1, + text='Centroid: ' + str("{:.1f}".format(values[j][0])) + ) + Result_Button.grid(row=j, column=0) + Result_Button.select() + tk.Label( + TabList[num][1].ResultFrame, + text='\t \u03C3 = ' + str("{:.1f}".format(values[j][2])) + ).grid(row=j, column=1) + tk.Label( + TabList[num][1].ResultFrame, + text='\t \u03C3/\u221aN = ' + str("{:.3f}".format(values[j][1])) + ).grid(row=j, column=2) + # Standard: expects channel and counts + else: + values = File_Reader(TabList[num][3], ',', 'No', 'No') + for j in range(len(values)): + Result_Button = tk.Checkbutton( + TabList[num][1].ResultFrame, + variable=TabList[num][1].Var_Data[j], + onvalue=1, offvalue=-1, + text='Channel: ' + str(values[j][0]) + ) + Result_Button.grid(row=j, column=0) + Result_Button.select() + tk.Label( + TabList[num][1].ResultFrame, + text='\t Counts: ' + str(values[j][1]) + ).grid(row=j, column=1) + return ########################################################################################## # Retira os resultados que nao estao checked e atualiza o txt dos resultados @@ -1198,7 +1191,7 @@ def ROI_Select_Alg(): for i in range(len(cents)): results.write(str(cents[i]) + ',' + str(errs[i]) + ',' + str(sigmas[i]) + '\n') - ROIResultManager() + ResultManager() return ############################################################################### From 522092539993359b4dcec71ff88ff4001ffe3221 Mon Sep 17 00:00:00 2001 From: RiPires Date: Wed, 2 Jul 2025 19:35:43 +0100 Subject: [PATCH 09/44] Review Unchecked_Results() fucntion: * included docstring and comments in english; * removed unnecessary code; * still need to test that this feature is working properly; * needs additional code review for variable names and logic; --- ARC-TF.py | 74 +++++++++++++++++++++++++++++++------------------------ 1 file changed, 42 insertions(+), 32 deletions(-) diff --git a/ARC-TF.py b/ARC-TF.py index 2de1e85..7cf12c1 100644 --- a/ARC-TF.py +++ b/ARC-TF.py @@ -796,62 +796,72 @@ def ResultManager(): ).grid(row=j, column=1) return -########################################################################################## -# Retira os resultados que nao estao checked e atualiza o txt dos resultados -########################################################################################## +##################################################################### +# Remove unchecked results from the GUI and update the results file # +##################################################################### def Unchecked_Results(): + """ + Unchecked_Results: Remove unchecked results from the GUI and update the results file + + This function: + - Scans all result widgets (checkbuttons and labels) + - Removes GUI elements corresponding to unchecked channels + - Updates the results file with only the checked channels and counts + """ + num = Current_Tab() # Get the current tab index - num = Current_Tab() - i = 0 - j = 0 - k = 0 - Eraser = [] - Aux = [] + Eraser = [] # List to store widgets (checkbuttons and labels) to be potentially destroyed + Aux = [] # List to store checked lines for rewriting the results file + # Collect all widgets (both checkbuttons and labels) from the ResultFrame for widget in TabList[num][1].ResultFrame.winfo_children(): + Eraser.append(widget) - Eraser.append(widget) # Aqui guardamos todos os widgets que exibem os resultados. - # E necessario guardar num vetor, para que depois sejam apagados os corretos + # Read the results file as raw lines (strings) containing channel and counts + values = File_Reader(TabList[num][3], '0', 'String', 'No') + + j = 0 # Index for Eraser list (widgets) + k = 0 # Index for values list (file lines) - values = File_Reader(TabList[num][3], '0', 'String', 'No') # Aqui vao se buscar os valores de channel e counts - # Como nao se fazem contas, apenas utilizamos a linha de - # string que contem ambos valores for i in range(len(TabList[num][1].Var_Data)): - if TabList[num][1].Var_Data[i].get() == 1: - Aux.append(values[k]) # Caso seja selecionada a opcao, guardamos a linha para depois reescrever - # o documento que contem os resultados, de forma a guardar os pretendidos - - elif TabList[num][1].Var_Data[i].get() == -1: - # No caso do Var_data devolver um -1, significa que se removeu a selecao do valor - # Nesse caso, tornamos esse valor num 0, destruimos o checkbutton no Eraser[j] - # e destruimos a label dos counts no Eraser[j + 1] + var_value = TabList[num][1].Var_Data[i].get() + + if var_value == 1: + # If checked, keep this line for rewriting the file + Aux.append(values[k]) + + elif var_value == -1: + # If unchecked (-1), remove widgets and reset variable to 0 TabList[num][1].Var_Data[i].set(0) + # Destroy checkbutton and label widgets (assumes pairs) Eraser[j].destroy() Eraser[j + 1].destroy() - elif TabList[num][1].Var_Data[i].get() == 0: - # Caso haja um 0 no meio, na mudanca de dados, tiramos valores de iteracao do vetor Aux - # e do vetor Eraser, para manter todas as contas certas + elif var_value == 0: + # If variable is already 0, adjust indices to keep synchronization k -= 1 j -= 2 + # Increment widget index by 2 (checkbutton + label) j += 2 + # Increment values line index by 1 k += 1 + # Move all variables with value 0 to the end of Var_Data list to keep selected variables grouped + # Do this after main loop to avoid index shifting issues during iteration for i in range(len(TabList[num][1].Var_Data)): - # Este for esta separado para nao haver confusoes de indices no primeiro ciclo - # Aqui, se for detetado um 0, pomos o IntVar no final do vetor Var_Data e - # eliminamos os Var_Data[i] = 0 do meio dos valores selecionados/nao selecionados if TabList[num][1].Var_Data[i].get() == 0: TabList[num][1].Var_Data.append(TabList[num][1].Var_Data[i]) TabList[num][1].Var_Data.pop(i) - with open(TabList[num][3], "w") as file: # Por fim, reescrevemos o documento dos resultados - # com os resultados unchecked removidos - for i in range(len(Aux)): - file.write(Aux[i] + '\n') + # Rewrite the results file with only checked (selected) entries + with open(TabList[num][3], "w") as file: + for line in Aux: + file.write(line + '\n') + + return ######################################################################################### # Faz a regressao linear dos resultados From e01bd0052792a766ecff3f3d9fa8c518c22ffe2d Mon Sep 17 00:00:00 2001 From: RiPires Date: Wed, 2 Jul 2025 19:47:48 +0100 Subject: [PATCH 10/44] Code review: * merged both Linearize() and LinearizeWithErrors() functions into a single function called LinearRegression(); * included docstring and comments in english; * tested the code and it works as expected; * still needs to be cheked for unnecessary code, variable names and other improvements; * changed Final_Results() accordingly; --- ARC-TF.py | 338 ++++++++++++++++++++++++++---------------------------- 1 file changed, 164 insertions(+), 174 deletions(-) diff --git a/ARC-TF.py b/ARC-TF.py index 7cf12c1..54f995b 100644 --- a/ARC-TF.py +++ b/ARC-TF.py @@ -306,10 +306,8 @@ def Final_Results(tracker): method = TabList[num][1].Algorithm_Method.get() # Decide which analysis to apply - if tracker < 0 and method == 'ROI Select': - LinearizeWithErrors() - elif tracker < 0 and method != 'ROI Select': - Linearize() + if tracker < 0: + LinearRegression() elif tracker > 0: Calculate_Thickness() elif tracker == 0: @@ -863,210 +861,202 @@ def Unchecked_Results(): return -######################################################################################### -# Faz a regressao linear dos resultados -######################################################################################### -def Linearize(): +##################################################################################### +# Performs linear regression (with or without errors) on selected data and displays # +# results in the GUI. # +##################################################################################### +def LinearRegression(): + """ + Performs linear regression on selected data and displays results in the GUI. + + This function automatically detects whether to use errors (uncertainties) in the regression + based on the current analysis method ('ROI Select' uses errors, others do not). + + - For standard methods: + * Reads channel (x-axis) data from results file. + * Collects selected decay values (y-axis) from GUI. + * Checks if x and y data match in length. + * Calculates slope (m), intercept (b), and their uncertainties (sigma_m, sigma_b). + * Converts units if needed (MeV or keV). + * Saves regression results to a file. + * Displays the results in the GUI with options to clear. + + - For 'ROI Select': + * Reads centroids and errors from results file. + * Collects selected decay energies from GUI. + * Checks if centroids and energies match in length. + * Performs weighted linear regression using uncertainties. + * Converts units if needed (MeV or keV). + * Saves regression results to a file. + * Displays the results in the GUI with options to clear. - num = Current_Tab() - - xaxis = [] - yaxis = [] - values = File_Reader(TabList[num][3], ',', 'No', 'No') # Le os dados dos picos + Dependencies: + - Uses global TabList, TabTracker, and tkinter for GUI elements. + - Relies on helper functions: File_Reader, Calib, Precision, ClearWidget. - for i in range(0, len(values)): - xaxis.append(values[i][0]) # Junto os canais apenas ao valor xaxis + Returns: + None + """ + num = Current_Tab() + method = TabList[num][1].Algorithm_Method.get() - for i in range(0, len(TabList[num][1].DecayList)): + # --- ROI Select: Use errors in regression --- + if method == 'ROI Select': + centroids = [] + errors = [] + energies = [] + # Read centroids and errors from results file + values = File_Reader(TabList[num][3], ',', 'Yes', 'No') + for i in range(len(values)): + centroids.append(values[i][0]) + errors.append(values[i][1]) + # Collect selected decay energies from GUI + for i in range(len(TabList[num][1].DecayList)): + if TabList[num][1].DecayList[i].get() != -1: + energies.append(TabList[num][1].DecayList[i].get()) + # Sort for consistency + centroids = sorted(centroids) + errors = sorted(errors) + energies = sorted(energies) + # Check for matching lengths + if len(centroids) != len(energies): + wng.popup('Invalid Linear Regression Configuration') + tk.Label(wng.warning, + text="Number of Radiation Decay does not match the number of Peaks detected.\n").pack() + tk.Label(wng.warning, + text="Please adjust the Searching Algorithms or the number of Decay Energy.\n\n").pack() + tk.Button(wng.warning, text='Return', command=lambda: wng.warning.destroy()).pack() + return - if TabList[num][1].DecayList[i].get() != -1: -# Na lista que guarda os valores dos alfas, juntam se aqueles que foram selecionados pelo utilizador - yaxis.append(TabList[num][1].DecayList[i].get()) - - - xvalues = sorted(xaxis) #Organizam se ambos dados por ordem - yvalues = sorted(yaxis) - - if len(xvalues) != len(yvalues): # Esta condicao verifica se para a regressao linear - # existe uma relacao sobrejetiva - wng.popup('Invalid Linear Regression Configuration') - tk.Label(wng.warning, - text = "Number of Radiation Decay does not " + - "match the number of Peaks detected.\n").pack() - tk.Label(wng.warning, text ="Please adjust the Searching Algorithms or the " + - "number of Decay Energy.\n\n").pack() - tk.Button(wng.warning, text = 'Return', - command = lambda: wng.warning.destroy()).pack() - - else: + # Clear previous regression output and show regression frame ClearWidget('Linear', 0) - TabList[num][1].LinearRegressionFrame.grid(row = 3, columnspan = 2, pady = 5) - - avgx = sum(xvalues) #Guardam se os valores das medias dos canais e da radiacao alfa - avgy = sum(yvalues) - avgx = avgx / len(xvalues) - avgy = avgy / len(yvalues) - - Placeholder1 = 0 - Placeholder2 = 0 + TabList[num][1].LinearRegressionFrame.grid(row=3, columnspan=2, pady=5) - for i in range(len(xvalues)): - Placeholder1 = Placeholder1 + ((xvalues[i] - avgx) * (yvalues[i] - avgy)) - Placeholder2 = Placeholder2 + (xvalues[i] - avgx)**2 - - m = Placeholder1 / Placeholder2 # Valor do declive - b = avgy - m * avgx # Valor da ordenada na origem - - sigma = 0 - Placeholder1 = 0 - Placeholder2 = 0 - - # Estes proximos somatorios e contas servem para obter as incertezas dos valores do - # declive e da ordenada de origem - for i in range(0, len(xvalues)): - sigma = (yvalues[i] - m * xvalues[i] - b)**2 + sigma - Placeholder1 = xvalues[i]**2 + Placeholder1 - - Placeholder2 = (sum(xvalues))**2 - sigma = sigma / (len(xvalues) - 2) - - sigma_m = math.sqrt(sigma / ( Placeholder1 - (Placeholder2/len(xvalues)))) - sigma_b = math.sqrt((sigma * Placeholder1)/((len(xvalues) * Placeholder1) - Placeholder2)) + # Perform weighted linear regression using Calib() + m, b, sigma_m, sigma_b = Calib(energies, centroids, errors) + # Handle units and significant digits if TabList[num][1].energy.get() == 1000: unit_string = 'MeV' - significant_digits_m = Precision('%.2g' % (sigma_m)) - significant_digits_b = Precision('%.2g' % (sigma_b)) - elif TabList[num][1].energy.get() == 1: unit_string = 'keV' m = m * 1000 sigma_m = sigma_m * 1000 b = b * 1000 sigma_b = sigma_b * 1000 - if sigma_m > 1: - significant_digits_m = 0 - else: - significant_digits_m = Precision('%.2g' % (sigma_m)) - if sigma_b > 1: - significant_digits_b = 0 - else: - significant_digits_b = Precision('%.2g' % (sigma_b)) + # Save regression results to file with open(TabList[num][4], 'w') as my_file: - # Aqui, escrevem se os resultados num documento txt para outras funcoes - # poderem aceder my_file.write(unit_string + '\n') my_file.write(str(m) + '\n') my_file.write(str(sigma_m) + '\n') my_file.write(str(b) + '\n') my_file.write(str(sigma_b) + '\n') - my_file.write(str(significant_digits_m) + '\n') - my_file.write(str(significant_digits_b)) - - # Por fim, escreve se no GUI os resultados obtidos - tk.Label(TabList[num][1].LinearRegressionFrame, text = '(' + unit_string + ')').grid( - row = 0, column = 0) - tk.Label(TabList[num][1].LinearRegressionFrame, text = 'Values').grid(row = 0, column = 1) - tk.Label(TabList[num][1].LinearRegressionFrame, text = 'Uncertainty').grid(row = 0, column = 2) - tk.Label(TabList[num][1].LinearRegressionFrame, text = 'Slope').grid(row = 1, column = 0) - tk.Label(TabList[num][1].LinearRegressionFrame, text = 'Intersect').grid(row = 2, column = 0) - - tk.Label(TabList[num][1].LinearRegressionFrame, - text = '%.*f' %(6, m)).grid(row = 1, column = 1) - tk.Label(TabList[num][1].LinearRegressionFrame, - text = '%.*f' % (6, sigma_m)).grid(row = 1, column = 2) - tk.Label(TabList[num][1].LinearRegressionFrame, - text = '%.*f' %(6, b)).grid(row = 2, column = 1) - tk.Label(TabList[num][1].LinearRegressionFrame, - text = '%.*f' % (6, sigma_b)).grid(row = 2, column = 2) - - tk.Button(TabList[num][1].LinearRegressionFrame, text = 'Clear Regression', - command = lambda: ClearWidget('Linear', 1 )).grid(row = 3, column = 0, columnspan = 3) - -######################################################################################### -# Faz a regressao linear dos resultados com input da incerteza nosa canais -######################################################################################### -def LinearizeWithErrors(): + my_file.write(str(6) + '\n') + my_file.write(str(6)) - num = Current_Tab() - - centroids = [] - errors = [] - energies = [] - values = File_Reader(TabList[num][3], ',', 'Yes', 'No') # Le os dados dos picos - - for i in range(0, len(values)): - centroids.append(values[i][0]) # Junto os canais apenas ao valor xaxis - errors.append(values[i][1]) - - for i in range(0, len(TabList[num][1].DecayList)): - if TabList[num][1].DecayList[i].get() != -1: - # Na lista que guarda os valores dos alfas, juntam se aqueles que foram selecionados pelo utilizador - energies.append(TabList[num][1].DecayList[i].get()) - - centroids = sorted(centroids) #Organizam se ambos dados por ordem - errors = sorted(errors) - energies = sorted(energies) - - if len(centroids) != len(energies): # Esta condicao verifica se para a regressao linear - # existe uma relacao sobrejetiva - wng.popup('Invalid Linear Regression Configuration') - tk.Label(wng.warning, - text = "Number of Radiation Decay does not " + - "match the number of Peaks detected.\n").pack() - tk.Label(wng.warning, text ="Please adjust the Searching Algorithms or the " + - "number of Decay Energy.\n\n").pack() - tk.Button(wng.warning, text = 'Return', - command = lambda: wng.warning.destroy()).pack() - + # Display results in GUI + tk.Label(TabList[num][1].LinearRegressionFrame, text='(' + unit_string + ')').grid(row=0, column=0) + tk.Label(TabList[num][1].LinearRegressionFrame, text='Values').grid(row=0, column=1) + tk.Label(TabList[num][1].LinearRegressionFrame, text='Uncertainty').grid(row=0, column=2) + tk.Label(TabList[num][1].LinearRegressionFrame, text='Slope').grid(row=1, column=0) + tk.Label(TabList[num][1].LinearRegressionFrame, text='Intersect').grid(row=2, column=0) + tk.Label(TabList[num][1].LinearRegressionFrame, text='%.*f' % (6, m)).grid(row=1, column=1) + tk.Label(TabList[num][1].LinearRegressionFrame, text='%.*f' % (6, sigma_m)).grid(row=1, column=2) + tk.Label(TabList[num][1].LinearRegressionFrame, text='%.*f' % (6, b)).grid(row=2, column=1) + tk.Label(TabList[num][1].LinearRegressionFrame, text='%.*f' % (6, sigma_b)).grid(row=2, column=2) + tk.Button(TabList[num][1].LinearRegressionFrame, text='Clear Regression', + command=lambda: ClearWidget('Linear', 1)).grid(row=3, column=0, columnspan=3) + + # --- Standard: No errors in regression --- else: - ClearWidget('Linear', 0) - TabList[num][1].LinearRegressionFrame.grid(row = 3, columnspan = 2, pady = 5) - - ## Faz a a regressao linear com a função do ficheiro Calibration - m, b, sigma_m, sigma_b = Calib(energies, centroids, errors) + xaxis = [] + yaxis = [] + # Read peak data from results file: returns list of [channel, counts] + values = File_Reader(TabList[num][3], ',', 'No', 'No') + # Extract channel numbers as x-axis values + for val in values: + xaxis.append(val[0]) + # Extract selected decay energies as y-axis values + for var in TabList[num][1].DecayList: + if var.get() != -1: + yaxis.append(var.get()) + # Sort both datasets for consistency + xvalues = sorted(xaxis) + yvalues = sorted(yaxis) + # Ensure both datasets have the same length (necessary for linear regression) + if len(xvalues) != len(yvalues): + wng.popup('Invalid Linear Regression Configuration') + tk.Label(wng.warning, + text="Number of Radiation Decay does not match the number of Peaks detected.\n").pack() + tk.Label(wng.warning, + text="Please adjust the Searching Algorithms or the number of Decay Energy.\n\n").pack() + tk.Button(wng.warning, text='Return', command=lambda: wng.warning.destroy()).pack() + return - if TabList[num][1].energy.get() == 1000: + # Clear previous regression output and show regression frame + ClearWidget('Linear', 0) + TabList[num][1].LinearRegressionFrame.grid(row=3, columnspan=2, pady=5) + + # Calculate averages of x and y + avgx = np.sum(xvalues) / len(xvalues) + avgy = np.sum(yvalues) / len(yvalues) + + # Calculate slope (m) and intercept (b) + numerator = np.sum((x - avgx) * (y - avgy) for x, y in zip(xvalues, yvalues)) + denominator = np.sum((x - avgx) ** 2 for x in xvalues) + m = numerator / denominator + b = avgy - m * avgx + + # Calculate uncertainties (sigma_m and sigma_b) + residual_sum = np.sum((y - m * x - b) ** 2 for x, y in zip(xvalues, yvalues)) + residual_variance = residual_sum / (len(xvalues) - 2) + sum_x2 = np.sum(x ** 2 for x in xvalues) + sum_x = np.sum(xvalues) + n = len(xvalues) + sigma_m = math.sqrt(residual_variance / (sum_x2 - (sum_x ** 2) / n)) + sigma_b = math.sqrt(residual_variance * sum_x2 / (n * sum_x2 - sum_x ** 2)) + + # Handle units and significant digits depending on energy unit selected + energy_unit = TabList[num][1].energy.get() + if energy_unit == 1000: unit_string = 'MeV' - - elif TabList[num][1].energy.get() == 1: + significant_digits_m = Precision('%.2g' % sigma_m) + significant_digits_b = Precision('%.2g' % sigma_b) + elif energy_unit == 1: unit_string = 'keV' - m = m * 1000 - sigma_m = sigma_m * 1000 - b = b * 1000 - sigma_b = sigma_b * 1000 - + # Convert slope and intercept and their uncertainties to keV + m *= 1000 + sigma_m *= 1000 + b *= 1000 + sigma_b *= 1000 + significant_digits_m = 0 if sigma_m > 1 else Precision('%.2g' % sigma_m) + significant_digits_b = 0 if sigma_b > 1 else Precision('%.2g' % sigma_b) + + # Write regression results to file for use in other functions with open(TabList[num][4], 'w') as my_file: - # Aqui, escrevem se os resultados num documento txt para outras funcoes - # poderem aceder my_file.write(unit_string + '\n') my_file.write(str(m) + '\n') my_file.write(str(sigma_m) + '\n') my_file.write(str(b) + '\n') my_file.write(str(sigma_b) + '\n') - my_file.write(str(6) + '\n') - my_file.write(str(6)) + my_file.write(str(significant_digits_m) + '\n') + my_file.write(str(significant_digits_b)) - # Por fim, escreve se no GUI os resultados obtidos - tk.Label(TabList[num][1].LinearRegressionFrame, text = '(' + unit_string + ')').grid( - row = 0, column = 0) - tk.Label(TabList[num][1].LinearRegressionFrame, text = 'Values').grid(row = 0, column = 1) - tk.Label(TabList[num][1].LinearRegressionFrame, text = 'Uncertainty').grid(row = 0, column = 2) - tk.Label(TabList[num][1].LinearRegressionFrame, text = 'Slope').grid(row = 1, column = 0) - tk.Label(TabList[num][1].LinearRegressionFrame, text = 'Intersect').grid(row = 2, column = 0) - - tk.Label(TabList[num][1].LinearRegressionFrame, - text = '%.*f' %(6, m)).grid(row = 1, column = 1) - tk.Label(TabList[num][1].LinearRegressionFrame, - text = '%.*f' % (6, sigma_m)).grid(row = 1, column = 2) - tk.Label(TabList[num][1].LinearRegressionFrame, - text = '%.*f' %(6, b)).grid(row = 2, column = 1) - tk.Label(TabList[num][1].LinearRegressionFrame, - text = '%.*f' % (6, sigma_b)).grid(row = 2, column = 2) - - tk.Button(TabList[num][1].LinearRegressionFrame, text = 'Clear Regression', - command = lambda: ClearWidget('Linear', 1 )).grid(row = 3, column = 0, columnspan = 3) + # Display results in GUI with proper formatting + tk.Label(TabList[num][1].LinearRegressionFrame, text='(' + unit_string + ')').grid(row=0, column=0) + tk.Label(TabList[num][1].LinearRegressionFrame, text='Values').grid(row=0, column=1) + tk.Label(TabList[num][1].LinearRegressionFrame, text='Uncertainty').grid(row=0, column=2) + tk.Label(TabList[num][1].LinearRegressionFrame, text='Slope').grid(row=1, column=0) + tk.Label(TabList[num][1].LinearRegressionFrame, text='Intercept').grid(row=2, column=0) + tk.Label(TabList[num][1].LinearRegressionFrame, text=f'{m:.6f}').grid(row=1, column=1) + tk.Label(TabList[num][1].LinearRegressionFrame, text=f'{sigma_m:.6f}').grid(row=1, column=2) + tk.Label(TabList[num][1].LinearRegressionFrame, text=f'{b:.6f}').grid(row=2, column=1) + tk.Label(TabList[num][1].LinearRegressionFrame, text=f'{sigma_b:.6f}').grid(row=2, column=2) + tk.Button(TabList[num][1].LinearRegressionFrame, text='Clear Regression', + command=lambda: ClearWidget('Linear', 1)).grid(row=3, column=0, columnspan=3) + + return ############################################################################### # Este e o algoritmo que determina a distancia quadrada minima entre pontos From f2c15eb1b7f526637c576020f81eb258d9826d63 Mon Sep 17 00:00:00 2001 From: RiPires Date: Thu, 3 Jul 2025 17:53:45 +0100 Subject: [PATCH 11/44] Code review: * ManSelec_Alg(), Threshold_Alg(), ROI_Select_Alg(), showimage(), onclick(), DataUploader(), and handleTabChange() functions; * added docstring, and comments in english; * tested and it works; * further review may be necessary to check for code logic; --- ARC-TF.py | 398 ++++++++++++++++++++++++++++++++++-------------------- 1 file changed, 250 insertions(+), 148 deletions(-) diff --git a/ARC-TF.py b/ARC-TF.py index 54f995b..b8ef81b 100644 --- a/ARC-TF.py +++ b/ARC-TF.py @@ -1058,244 +1058,346 @@ def LinearRegression(): return -############################################################################### -# Este e o algoritmo que determina a distancia quadrada minima entre pontos -# input, e pontos de dados -############################################################################### +########################################################################## +# Manual aelection algorithm, finds the data point closest to the given # +# input point (Valuex, Valuey) by calculating the minimum Euclidean # +# distance between the input point and the points in the dataset # +########################################################################## def ManSelec_Alg(Valuex, Valuey): - + """ + Finds the data point closest to the given input point (Valuex, Valuey) + by calculating the minimum Euclidean distance between the input point + and the points in the dataset (where x = channel index, y = counts). + + Inputs: + Valuex - the x-coordinate (channel) of the input point + Valuey - the y-coordinate (count) of the input point + + The function reads the counts data from the current tab file, finds the + closest data point, writes the result (channel,count) to an output file + (appending or creating it), and then calls ResultManager() to update results. + """ num = Current_Tab() Counts = File_Reader(TabList[num][2], '0', 'No', 'No') - AuxList = [] #Lista para guardar minimos quadrados - - for i in range(0, len(Counts)): - AuxList.append(math.sqrt(((Valuey - Counts[i])**2)+((Valuex - i + 1)**2))) - - # O ciclo for guarda toda a distancia quadrado dos valores input e dos valores dos dados + # Function to calculate Euclidean distance between input point and data point at index i + def dist(i): + channel = i + 1 # Channels start at 1 + count = Counts[i] + return math.sqrt((Valuex - channel)**2 + (Valuey - count)**2) - Valuex = AuxList.index(min(AuxList)) + 1 #Corresponde ao channel com distancia minima - Valuey = Counts[Valuex - 1] #Corresponde ao count do indice do xvalue + # Find the index of the data point with the minimum distance to the input point + min_index = min(range(len(Counts)), key=dist) - if os.path.isfile(TabList[num][3]) == True: - with open(TabList[num][3], 'a') as results: - results.write(str(Valuex) + ',' + str(Valuey) + '\n') - - elif os.path.isfile(TabList[num][3]) == False: + # Update Valuex and Valuey with the closest data point found + Valuex = min_index + 1 + Valuey = Counts[min_index] - with open(TabList[num][3], 'w') as results: - results.write(str(Valuex) + ',' + str(Valuey) + '\n') + # Write the closest data point (channel,count) to the output file + mode = 'a' if os.path.isfile(TabList[num][3]) else 'w' + with open(TabList[num][3], mode) as results: + results.write(f"{Valuex},{Valuey}\n") + # Update results after selection ResultManager() + + return -############################################################################### -# Este e o algoritmo que regista os picos acima de um determinado threshold -############################################################################### +################################################################ +# Algorithm to detect and record peaks above a given threshold # +################################################################ def Threshold_Alg(): - + """ + Algorithm to detect and record peaks above a given threshold. + + The function scans through the count data to identify peaks where + counts exceed a specified threshold after a certain channel cut-off. + For each peak found, it records the maximum count and the corresponding channel. + It also merges peaks that are closer than a specified width, keeping only + the highest peak in such cases. + + Results are saved to an output file (appending or writing new). + """ num = Current_Tab() Counts = File_Reader(TabList[num][2], '0', 'No', 'No') - Threshold = TabList[num][1].Algorithm.get() - yaxis = [] - current_peak_counts = 0 - current_peak = [] - counter = 0 - xaxis = [] - i = 0 - j = 0 - - cut = TabList[num][1].channels_cut.get() - width = TabList[num][1].peaks_widths.get() - -#Just iterate of the values of the list itself. Each "count" is an element of Counts - for count in (Counts): - #Remember, if you hit a peak the condition - # will enter this part always. So the "current_peak_counts" will just - #add the total sum of the area under the peak - # (this may even be useful for FWHM calculations). - + Threshold = TabList[num][1].Algorithm.get() # Threshold value for peak detection + yaxis = [] # Stores peak heights (max counts) + xaxis = [] # Stores peak positions (channels) + current_peak = [] # Temporary list to hold counts belonging to current peak + current_peak_counts = 0 # Sum of counts in current peak (not used further here but can be for FWHM) + counter = 0 # Tracks overall position in counts array + i = 0 # Index for looping over counts + j = 0 # Index for tracking peaks stored in xaxis/yaxis + + cut = TabList[num][1].channels_cut.get() # Channel index cut-off, ignore counts below this channel + width = TabList[num][1].peaks_widths.get() # Minimum width to consider two peaks separate + + # Iterate over all counts + for count in Counts: + # If count is above threshold and past the cut-off channel, accumulate peak data if count > Threshold and i > cut: - current_peak_counts += count - current_peak.append(count) + current_peak_counts += count + current_peak.append(count) else: counter += 1 - #Just checking that our current_peak list is not empty, - #if it is then we're out of a peak and this will just skip this if statment - #but if it is not, then we're at the end of a peak - #(count is now <= Threshold) and we should save the max value of - #current_peak and put everything to zero (aka move to the next peak) + # If current_peak is not empty, we have reached the end of a peak if current_peak: - yaxis.append(max(current_peak)) - xaxis.append(counter + current_peak.index(max(current_peak))) - if len(xaxis) > 1: - if xaxis[j] - xaxis[j-1] < width: - decider = max(yaxis[j-1], yaxis[j]) - if decider == yaxis[j]: - yaxis.pop(j-1) - xaxis.pop(j-1) - elif decider == yaxis[j-1]: - yaxis.pop(j) - xaxis.pop(j) - j -= 1 - counter = counter + len(current_peak) - current_peak_counts = 0 - current_peak = [] - j += 1 + # Record the maximum value of the current peak and its position + max_peak = max(current_peak) + peak_pos = counter + current_peak.index(max_peak) + yaxis.append(max_peak) + xaxis.append(peak_pos) + + # Merge peaks closer than 'width' + if len(xaxis) > 1: + if xaxis[j] - xaxis[j-1] < width: + # Decide which peak to keep (the highest one) + decider = max(yaxis[j-1], yaxis[j]) + if decider == yaxis[j]: + yaxis.pop(j-1) + xaxis.pop(j-1) + elif decider == yaxis[j-1]: + yaxis.pop(j) + xaxis.pop(j) + j -= 1 + + # Reset for next peak + counter = counter + len(current_peak) + current_peak_counts = 0 + current_peak = [] + j += 1 i += 1 - if os.path.isfile(TabList[num][3]) == True: - with open(TabList[num][3], 'a') as results: - for i in range(len(xaxis)): - results.write(str(xaxis[i]) + ',' + str(yaxis[i]) + '\n') + # Write detected peaks (channel, count) to output file + mode = 'a' if os.path.isfile(TabList[num][3]) else 'w' + with open(TabList[num][3], mode) as results: + for i in range(len(xaxis)): + results.write(f"{xaxis[i]},{yaxis[i]}\n") - elif os.path.isfile(TabList[num][3]) == False: - with open(TabList[num][3], 'w') as results: - for i in range(len(xaxis)): - results.write(str(xaxis[i]) + ',' + str(yaxis[i]) + '\n') + # Note: If the last peak extends to the end of the data, it may not be added. + # This should be checked if needed. - #If the last peak is not added because the data ends with a peak (could be a problem, you should check it) ResultManager() -############################################################################### -# Funcao para o algoritmo ROI Select +################################################################################ +# ROI_Select_Alg: Detects peaks within user-defined ROIs and records their # +# centroids, uncertainties, and sigma/sqrt(N) for the ROI Select algorithm. # ################################################################################ def ROI_Select_Alg(): - + """ + Detects and analyzes peaks within user-defined Regions of Interest (ROIs) + for the 'ROI Select' analysis method. For each ROI, calculates the centroid, + uncertainty, and sigma/sqrt(N) using the Analyze() helper. + + Results are appended or written to the results file for the current tab, + and the GUI is updated to display the detected peaks and their statistics. + + Steps: + 1. Reads the current tab's counts data. + 2. Retrieves lower and upper bounds for up to 6 ROIs from the GUI. + 3. Calls Analyze() to compute centroids, uncertainties, and sigma/sqrt(N). + 4. Writes results to the output file (appending if it exists, creating otherwise). + 5. Calls ResultManager() to update the results display in the GUI. + + Dependencies: + - Uses global TabList and tkinter for GUI elements. + - Relies on File_Reader and Analyze helper functions. + + Returns: + None + """ num = Current_Tab() + # Read counts data for the current tab counts = File_Reader(TabList[num][2], '0', 'Yes', 'No') + # Retrieve ROI lower and upper bounds from the GUI (up to 6 ROIs) roi_down = [TabList[num][1].ROIdown1.get(), TabList[num][1].ROIdown2.get(), TabList[num][1].ROIdown3.get(), TabList[num][1].ROIdown4.get(), TabList[num][1].ROIdown5.get(), TabList[num][1].ROIdown6.get()] - - roi_up = [ TabList[num][1].ROIup1.get(), - TabList[num][1].ROIup2.get(), - TabList[num][1].ROIup3.get(), - TabList[num][1].ROIup4.get(), - TabList[num][1].ROIup5.get(), - TabList[num][1].ROIup6.get()] - - cents, errs, sigmas = Analyze(counts, roi_down, roi_up) - - if os.path.isfile(TabList[num][3]) == True: + roi_up = [TabList[num][1].ROIup1.get(), + TabList[num][1].ROIup2.get(), + TabList[num][1].ROIup3.get(), + TabList[num][1].ROIup4.get(), + TabList[num][1].ROIup5.get(), + TabList[num][1].ROIup6.get()] + + # Analyze the counts within each ROI to get centroids, uncertainties, and sigma/sqrt(N) + cents, errs, sigmas = Analyze(counts, roi_down, roi_up) + + # Write results to file: append if file exists, otherwise create new + if os.path.isfile(TabList[num][3]): with open(TabList[num][3], 'a') as results: for i in range(len(cents)): - results.write(str(cents[i]) + ',' + str(errs[i]) + ',' + str(sigmas[i]) + '\n') - - elif os.path.isfile(TabList[num][3]) == False: + results.write(f"{cents[i]},{errs[i]},{sigmas[i]}\n") + else: with open(TabList[num][3], 'w') as results: for i in range(len(cents)): - results.write(str(cents[i]) + ',' + str(errs[i]) + ',' + str(sigmas[i]) + '\n') + results.write(f"{cents[i]},{errs[i]},{sigmas[i]}\n") + # Update the results display in the GUI ResultManager() + return -############################################################################### -# Esta e a funcao que abre as imagens da cadeia de decaimento -################################################################################ +################################################################ +# Displays the decay chain image for the selected alpha source # +################################################################ def showimage(): + """ + Displays the decay chain image for the currently selected alpha source. + + This function scans the 'Files/Sources/Images' directory for an image file + whose name matches the selected alpha source. If a match is found, it constructs + the image path and, for specific isotopes, assigns a relevant URL for more information. + The function then attempts to clear any previous image widgets and display the + selected image in a popup window, optionally with a hyperlink. + + Steps: + 1. Get the currently selected alpha source from the GUI. + 2. Scan the images directory for a matching file. + 3. If found, construct the image path and assign a URL if applicable. + 4. Clear any previous image widgets. + 5. Display the image and optional link in a popup window. + + Dependencies: + - Uses global TabList and tkinter for GUI elements. + - Relies on the wng.Images helper for displaying images and links. + + Returns: + None + """ num = Current_Tab() - alphas = TabList[num][1].Source.get() - Dir = os.scandir('Files\Sources\Images') + alphas = TabList[num][1].Source.get() # Get the selected alpha source name + Dir = os.scandir('Files\Sources\Images') # Scan the images directory for entry in Dir: if entry.is_file(): - temp = (os.path.splitext(entry.name)) - if alphas == temp[0]: - picture = 'Files\Sources\Images\\' + alphas + temp[1] + temp = os.path.splitext(entry.name) # Split filename and extension + if alphas == temp[0]: # Check if file name matches the selected source + picture = 'Files\Sources\Images\\' + alphas + temp[1] # Construct image path + # Assign relevant URL for specific isotopes if alphas == '226Ra': domain = 'https://www.nist.gov/image-23773' - elif alphas == '232U': - domain = 'https://www.nuclear-power.com/nuclear-power-plant/nuclear-fuel/uranium/uranium-232/decay-half-life-uranium-232/' - + domain = ('https://www.nuclear-power.com/nuclear-power-plant/' + 'nuclear-fuel/uranium/uranium-232/decay-half-life-uranium-232/') else: - domain = '' + domain = '' # No URL for other isotopes try: - ClearWidget('Image', 0) - wng.Images('Decay Chain of ' + alphas, picture, domain) - + ClearWidget('Image', 0) # Clear previous image widget(s) + wng.Images('Decay Chain of ' + alphas, picture, domain) # Display image and link except: + # If clearing fails, still try to display the image wng.Images('Decay Chain of ' + alphas, picture, domain) -################################################################################ -# Gere o evento de obtencao de pontos diretamente do grafico -################################################################################ -def onclick(event): + return + +############################################################################ +# Event handler for capturing points directly from the plot on mouse click # +############################################################################ +def onclick(event): + """ + This function is triggered when the user clicks on the graph. It checks if + the current algorithm method is set to 'Manual Selection' and the right mouse + button (button 3) is clicked. If both conditions are met, it captures the + x and y coordinates of the click event and passes them to the manual selection + algorithm function (ManSelec_Alg). + """ num = Current_Tab() decider = TabList[num][1].Algorithm_Method.get() + # Only process right-click events in 'Manual Selection' mode if decider == 'Manual Selection' and event.button == 3: - # Estas duas opcoes verificam que so no modo Manual selection e so com o botao direito do rato - # e que aparecem os dados - xpoint = event.xdata - ypoint = event.ydata - ManSelec_Alg(xpoint, ypoint) + xpoint = event.xdata # Get x-coordinate from the click event + ypoint = event.ydata # Get y-coordinate from the click event + ManSelec_Alg(xpoint, ypoint) # Call function to process selected point + + return -############################################################################## -#Esta funcao ira ler o ficheiro input. -############################################################################## +############################################################## +# Opens a file dialog to upload a data file and processes it # +############################################################## def DataUploader(): - + """ + It restricts the selectable files to '.mca' text files and all files. + After the user selects a file, it reads the data, processes the structure, + plots the graph, and applies the selected algorithm (e.g., thresholding). + The tab label is also updated with the filename. + """ num = Current_Tab() - domain = (('Text Files', '*.mca'), ('All Files', '*.*')) # Aqui limitamos os ficheiros que podem ser abertos - filename = fd.askopenfilename(title = 'Open a file', initialdir = ',', filetypes = domain) - # Faz a ligacao tkinter - janela do SO para abrir o ficheiro de dados + # Define the allowed file types for upload + domain = (('Text Files', '*.mca'), ('All Files', '*.*')) + # Open a file dialog window for user to select the data file + filename = fd.askopenfilename(title='Open a file', initialdir=',', filetypes=domain) + + # If no file was selected, do nothing and exit if not filename: - pass # Certifica que o programa nao queixa caso nao seja efetuado um upload + pass else: - file = File_Reader(filename, '0', 'string', 'Yes') # Aqui le se o ficheiro que foi feito o upload - TabList[num][5].Structure(file, filename) # Logo de seguida faz se o grafico + # Read the uploaded file's contents using File_Reader function + file = File_Reader(filename, '0', 'string', 'Yes') + + # Process the file structure and generate the initial plot + TabList[num][5].Structure(file, filename) TabList[num][5].subplots() + + # Retrieve the current algorithm selection and apply it if needed value = TabList[num][1].Algorithm.get() if value != 0: TabList[num][5].threshold(value) - ## Renames the tab with the filename + # Rename the tab to the filename (only the file's name, not the full path) try: Tabs.RenameTab(filename.split('/')[-1]) except: - () + pass # Ignore errors in renaming tab return -############################################################################## -# Esta funcao gere o evento especifico de adicionar tabs, futuramente -# ira ter uma seccao especifica para esconder tabs e recuperar a tab -# de adicionar tabs, caso haja menos que 15 tabs -############################################################################# + +###################################################### +# Handles the event of changing tabs in the notebook # +###################################################### def handleTabChange(event): + """ + If the user selects the last tab (the '+' tab) and the number of tabs is less than 15, + a popup menu appears to allow the user to select a new type of tab to open. + + If the number of tabs reaches 15 or more, the '+' tab is hidden to prevent adding more tabs. + """ + # Check if the currently selected tab is the last one (the '+' tab) + # and if the total number of tabs is less than 15 if Notebook.notebook.select() == Notebook.notebook.tabs()[-1] and len(Notebook.notebook.tabs()) < 15: - # Se a tab 'atual' for igual a ultima, que sera sempre a tab '+', e se o numero de tabs for menor que 15 - # Adiciona se outra tab - + # Show popup menu for tab selection wng.popup('Tab Selector Menu') - tk.Label(wng.warning, text = 'Please Select New Type of Tab to Open \n').pack() - tk.Button(wng.warning, command = lambda: Tabs.tab_change(1), - text = 'Calibration Trial').pack() - tk.Button(wng.warning, command = lambda: Tabs.tab_change(2), - text = 'Material Trial').pack() - tk.Label(wng.warning, text ='\n').pack() - tk.Button(wng.warning, text = 'Return', - command = lambda : Tabs.tab_change(3)).pack() - # os numeros do tab_change indicam quais os tipos de tabs a adicionar - + tk.Label(wng.warning, text='Please Select New Type of Tab to Open \n').pack() + tk.Button(wng.warning, command=lambda: Tabs.tab_change(1), + text='Calibration Trial').pack() + tk.Button(wng.warning, command=lambda: Tabs.tab_change(2), + text='Material Trial').pack() + tk.Label(wng.warning, text='\n').pack() + tk.Button(wng.warning, text='Return', + command=lambda: Tabs.tab_change(3)).pack() + # The numbers passed to tab_change() indicate which type of tab to add + + # If there are already 15 or more tabs, hide the '+' tab to prevent adding more elif len(Notebook.notebook.tabs()) >= 15: Notebook.notebook.hide(14) - # Caso se chege ao numero 15 de tabs, o botao '+' e escondido + + return ############################################################################ # Esta funcao gere as fontes de radiacao From 06098d660b00654c25448887911488b11fa9d1a5 Mon Sep 17 00:00:00 2001 From: RiPires Date: Thu, 3 Jul 2025 23:34:21 +0100 Subject: [PATCH 12/44] Code review: * added remove_file.py script to the Include directory, forgoten in a previous commit - related to the ClearWidget fucntion; * reviewed SourceReader(), Method(), on_entry_change(), Delete(), File_Manager(), and Save_Results() functions - created docstrings, added comments in english, renamed variables to be more descriptive, and deleted unnecessary code; * tested the code, and it is working; --- ARC-TF.py | 596 +++++++++++++++++++++++------------------ Include/remove_file.py | 23 ++ 2 files changed, 359 insertions(+), 260 deletions(-) create mode 100644 Include/remove_file.py diff --git a/ARC-TF.py b/ARC-TF.py index b8ef81b..6664970 100644 --- a/ARC-TF.py +++ b/ARC-TF.py @@ -1399,127 +1399,163 @@ def handleTabChange(event): return -############################################################################ -# Esta funcao gere as fontes de radiacao -############################################################################# +############################################################# +# Handles the setup and display of available alpha sources, # +# decay energies, and related controls for the current tab # +############################################################# def SourceReader(*args): + """ + Sets up the source options for the current tab, including available alpha decay energies, + checkbuttons for user selection, and controls for displaying the decay chain image and + performing linear regression. + Steps: + 1. Clears and resets the source options frame for the current tab. + 2. Loads the available alpha decay energies from the corresponding file. + 3. Creates checkbuttons for each decay energy, all selected by default. + 4. Adds a button to display the decay chain image for the selected source. + 5. Adds a button to perform linear regression and display results. + + Path Handling: + - Uses os.path.join for all file and directory paths to ensure compatibility + across different operating systems. + + Dependencies: + - Uses global TabList, TabTracker, and tkinter for GUI elements. + - Relies on the showimage and Final_Results helper functions. + + Returns: + None + """ num = Current_Tab() value = TabTracker[num] - - ClearWidget('Source', 0) # Reset dos widgets e da geometria - TabList[num][1].SourceOptionsFrame.grid(row = 2, columnspan = 2) + ClearWidget('Source', 0) # Reset widgets and layout geometry + TabList[num][1].SourceOptionsFrame.grid(row=2, columnspan=2) + + # Reset all decay energies in DecayList to -1 to avoid interference with linear regression for i in range(len(TabList[num][1].DecayList)): - TabList[num][1].DecayList[i].set(-1) # Aqui garantimos que a mudanca de fontes de radiacao - # alpha, nao interfere com a regressao linear a ser efetuada - - Alpha = TabList[num][1].Source.get() - Alpha = 'Files\Sources\Values\\' + Alpha + '.txt' # Esta adicao garante que o programa - #encontra o ficheiro pretendido - with open(Alpha, 'r') as file: # Aqui vai-se buscar todas as opcoes possiveis contidas no ficheiro - # das fontes de radiacao + TabList[num][1].DecayList[i].set(-1) + + # Construct path to the file containing alpha decay energies based on user selection + Alpha_name = TabList[num][1].Source.get() + Alpha_path = os.path.join('Files', 'Sources', 'Values', f'{Alpha_name}.txt') + + # Read all decay energies from the file + with open(Alpha_path, 'r') as file: Decay = [float(line) for line in file] - for i in range(len(Decay)): # Aqui esta a criacao dos checkbuttons para selecionar os valores que o - # utilizador pretende empregrar nos calculos - checkbutton = tk.Checkbutton(TabList[num][1].SourceOptionsFrame, text = str(Decay[i]) + ' MeV', - variable = TabList[num][1].DecayList[i], onvalue = Decay[i], offvalue = -1) - checkbutton.grid(row = i, columnspan = 2) - checkbutton.select() - - tk.Button(TabList[num][1].SourceOptionsFrame, # Mostra uma imagem da cadeia - text = 'Show Decay Chain', command = showimage).grid(row = i + 1, column = 0) - tk.Button(TabList[num][1].SourceOptionsFrame, text = 'Linear Regression', # Efetua a regressao linear e poe os resultados na primeira tab - command = lambda: Final_Results(value)).grid(row = i + 1, column = 1) - -############################################################################## -# Esta funcao altera a interface dos dados inputs para cada algoritmo -############################################################################## + # Create checkbuttons for each decay energy for user selection + for i in range(len(Decay)): + checkbutton = tk.Checkbutton(TabList[num][1].SourceOptionsFrame, + text=str(Decay[i]) + ' MeV', + variable=TabList[num][1].DecayList[i], + onvalue=Decay[i], + offvalue=-1) + checkbutton.grid(row=i, columnspan=2) + checkbutton.select() # By default, select all options + + # Button to show the decay chain image corresponding to the selected source + tk.Button(TabList[num][1].SourceOptionsFrame, + text='Show Decay Chain', + command=showimage).grid(row=i + 1, column=0) + + # Button to perform linear regression and display results on the first tab + tk.Button(TabList[num][1].SourceOptionsFrame, + text='Linear Regression', + command=lambda: Final_Results(value)).grid(row=i + 1, column=1) + return + +################################################################### +# Updates the algorithm input interface for the selected analysis # +# method in the current tab # +################################################################### def Method(*args): + """ + Updates the algorithm input interface for the selected analysis method in the current tab. + + This function dynamically configures the controls and widgets in the algorithm frame + based on the user's choice of analysis method: + - Manual Selection: Provides instructions and buttons for manual peak selection. + - Threshold Input: Provides entry for threshold value and buttons for peak detection. + - ROI Select: Provides entry fields for up to 6 Regions of Interest (ROIs) and buttons + for peak detection within those regions. + + Steps: + 1. Clears the previous algorithm UI and resets the algorithm frame. + 2. Determines the selected analysis method from the GUI. + 3. Sets up the appropriate controls and widgets for the chosen method. + + Notes: + - Avoids unnecessary repetition by grouping similar widget creation. + - Ensures only relevant controls are shown for the selected method. + - Calls helper functions to clear results or trigger algorithm execution. + Dependencies: + - Uses global TabList and tkinter for GUI elements. + - Relies on helper functions: ClearWidget, Unchecked_Results, ROI_Select_Alg, Threshold_Alg. + + Returns: + None + """ num = Current_Tab() + # Clear previous algorithm UI and reset the algorithm frame ClearWidget('Algorithm', 0) - TabList[num][1].AlgFrame.grid(row = 2, columnspan = 2) + TabList[num][1].AlgFrame.grid(row=2, columnspan=2) - decider = TabList[num][1].Algorithm_Method.get() #Devolve a StringVar que decide qual o algoritmo em uso + decider = TabList[num][1].Algorithm_Method.get() # Get selected algorithm method - if decider == 'Manual Selection': #Definicao dos controlos para o algoritmo ManSelec_Alg + if decider == 'Manual Selection': + # Manual Selection: Instructions and buttons for manual peak selection tk.Label(TabList[num][1].AlgFrame, - text = 'Right-Click on/near the Peaks in the Graphic ').grid(row = 2, columnspan = 2) + text='Right-Click on/near the Peaks in the Graphic ').grid(row=2, columnspan=2) tk.Label(TabList[num][1].AlgFrame, - text = 'For an automatic point detection: ').grid(row = 3, columnspan = 2) - tk.Button(TabList[num][1].AlgFrame, text = 'Remove Unchecked', - command = Unchecked_Results).grid(row = 4, column = 0) - tk.Button(TabList[num][1].AlgFrame, text = 'Remove All', - command = lambda: ClearWidget('Results', 1)).grid(row = 4, column = 1) + text='For an automatic point detection: ').grid(row=3, columnspan=2) + tk.Button(TabList[num][1].AlgFrame, text='Remove Unchecked', + command=Unchecked_Results).grid(row=4, column=0) + tk.Button(TabList[num][1].AlgFrame, text='Remove All', + command=lambda: ClearWidget('Results', 1)).grid(row=4, column=1) TabList[num][1].Algorithm.set(0) TabList[num][5].destroyer() - - elif decider == 'Threshold Input': #Definicao dos controlos para o algoritmo Threshold_Alg - tk.Label(TabList[num][1].AlgFrame, - text = 'Please input Threshold: ').grid(row = 2, columnspan = 3) - tk.Entry(TabList[num][1].AlgFrame, textvariable = TabList[num][1].Algorithm, relief = 'sunken', - borderwidth = 2).grid(row = 3, columnspan= 3) - tk.Button(TabList[num][1].AlgFrame,text = 'Search', - command = Threshold_Alg).grid(row = 4, column = 0) - tk.Button(TabList[num][1].AlgFrame,text = 'Remove Unchecked', - command = Unchecked_Results).grid(row = 4, column = 1) - tk.Button(TabList[num][1].AlgFrame,text = 'Remove All', - command = lambda: ClearWidget('Results', 1)).grid(row = 4, column = 2) - - elif decider == 'ROI Select': #Definicao dos controlos para o algoritmo ROI Select - tk.Label(TabList[num][1].AlgFrame, - text = 'ROI Down: ').grid(row = 2, column = 0) - tk.Label(TabList[num][1].AlgFrame, - text = 'ROI Up: ').grid(row = 2, column = 1) + elif decider == 'Threshold Input': + # Threshold Input: Entry for threshold value and buttons for peak detection tk.Label(TabList[num][1].AlgFrame, - text = 'Peak 1').grid(row = 3, column = 2) - tk.Label(TabList[num][1].AlgFrame, - text = 'Peak 2').grid(row = 4, column = 2) - tk.Label(TabList[num][1].AlgFrame, - text = 'Peak 3').grid(row = 5, column = 2) - tk.Label(TabList[num][1].AlgFrame, - text = 'Peak 4').grid(row = 6, column = 2) - tk.Label(TabList[num][1].AlgFrame, - text = 'Peak 5').grid(row = 7, column = 2) - tk.Label(TabList[num][1].AlgFrame, - text = 'Peak 6').grid(row = 8, column = 2) - - tk.Entry(TabList[num][1].AlgFrame, textvariable = TabList[num][1].ROIdown1, relief = 'sunken', - borderwidth = 2).grid(row = 3, column = 0) - tk.Entry(TabList[num][1].AlgFrame, textvariable = TabList[num][1].ROIup1, relief = 'sunken', - borderwidth = 2).grid(row = 3, column = 1) - tk.Entry(TabList[num][1].AlgFrame, textvariable = TabList[num][1].ROIdown2, relief = 'sunken', - borderwidth = 2).grid(row = 4, column = 0) - tk.Entry(TabList[num][1].AlgFrame, textvariable = TabList[num][1].ROIup2, relief = 'sunken', - borderwidth = 2).grid(row = 4, column = 1) - tk.Entry(TabList[num][1].AlgFrame, textvariable = TabList[num][1].ROIdown3, relief = 'sunken', - borderwidth = 2).grid(row = 5, column = 0) - tk.Entry(TabList[num][1].AlgFrame, textvariable = TabList[num][1].ROIup3, relief = 'sunken', - borderwidth = 2).grid(row = 5, column = 1) - tk.Entry(TabList[num][1].AlgFrame, textvariable = TabList[num][1].ROIdown4, relief = 'sunken', - borderwidth = 2).grid(row = 6, column = 0) - tk.Entry(TabList[num][1].AlgFrame, textvariable = TabList[num][1].ROIup4, relief = 'sunken', - borderwidth = 2).grid(row = 6, column = 1) - tk.Entry(TabList[num][1].AlgFrame, textvariable = TabList[num][1].ROIdown5, relief = 'sunken', - borderwidth = 2).grid(row = 7, column = 0) - tk.Entry(TabList[num][1].AlgFrame, textvariable = TabList[num][1].ROIup5, relief = 'sunken', - borderwidth = 2).grid(row = 7, column = 1) - tk.Entry(TabList[num][1].AlgFrame, textvariable = TabList[num][1].ROIdown6, relief = 'sunken', - borderwidth = 2).grid(row = 8, column = 0) - tk.Entry(TabList[num][1].AlgFrame, textvariable = TabList[num][1].ROIup6, relief = 'sunken', - borderwidth = 2).grid(row = 8, column = 1) - - tk.Button(TabList[num][1].AlgFrame,text = 'Search', - command = ROI_Select_Alg).grid(row = 9, column = 0) - tk.Button(TabList[num][1].AlgFrame,text = 'Remove Unchecked', - command = Unchecked_Results).grid(row = 9, column = 1) - tk.Button(TabList[num][1].AlgFrame,text = 'Remove All', - command = lambda: ClearWidget('Results', 1)).grid(row = 9, column = 2) + text='Please input Threshold: ').grid(row=2, columnspan=3) + tk.Entry(TabList[num][1].AlgFrame, textvariable=TabList[num][1].Algorithm, relief='sunken', + borderwidth=2).grid(row=3, columnspan=3) + tk.Button(TabList[num][1].AlgFrame, text='Search', + command=Threshold_Alg).grid(row=4, column=0) + tk.Button(TabList[num][1].AlgFrame, text='Remove Unchecked', + command=Unchecked_Results).grid(row=4, column=1) + tk.Button(TabList[num][1].AlgFrame, text='Remove All', + command=lambda: ClearWidget('Results', 1)).grid(row=4, column=2) + + elif decider == 'ROI Select': + # ROI Select: Entry fields for up to 6 ROIs and buttons for peak detection + tk.Label(TabList[num][1].AlgFrame, text='ROI Down: ').grid(row=2, column=0) + tk.Label(TabList[num][1].AlgFrame, text='ROI Up: ').grid(row=2, column=1) + + # Create labels for each peak (1-6) + for idx in range(6): + tk.Label(TabList[num][1].AlgFrame, text=f'Peak {idx+1}').grid(row=3+idx, column=2) + + # Create entry fields for each ROI lower and upper bound + for idx in range(6): + tk.Entry(TabList[num][1].AlgFrame, textvariable=getattr(TabList[num][1], f'ROIdown{idx+1}'), + relief='sunken', borderwidth=2).grid(row=3+idx, column=0) + tk.Entry(TabList[num][1].AlgFrame, textvariable=getattr(TabList[num][1], f'ROIup{idx+1}'), + relief='sunken', borderwidth=2).grid(row=3+idx, column=1) + + tk.Button(TabList[num][1].AlgFrame, text='Search', + command=ROI_Select_Alg).grid(row=9, column=0) + tk.Button(TabList[num][1].AlgFrame, text='Remove Unchecked', + command=Unchecked_Results).grid(row=9, column=1) + tk.Button(TabList[num][1].AlgFrame, text='Remove All', + command=lambda: ClearWidget('Results', 1)).grid(row=9, column=2) + return ############################################################################# # Esta funcao muda uma linha de threshold, caso o utilizador escreva um numero @@ -1549,214 +1585,254 @@ def Delete(deletes, names, directory, last): wng.warning.destroy() -############################################################################# -# Esta funcao deixa dar upload ou apagar ficheiros para a pasta de dados -# permanentes que utiliza -############################################################################# +########################################################################## +# Handles uploading and deleting of permanent data files used # +# by the application, including alpha source value files, source images, # +# and material files # +########################################################################## def File_Manager(Choice, Nature, Action): + """ + Manages the upload and deletion of permanent data files used by the application. + + Parameters: + Choice (str): Type of file to manage ('Source' or 'Material'). + Nature (int): For 'Source', 1 = value file (.txt), 0 = image file (.jpg/.jpeg/.png). + For 'Material', always 0. + Action (int): 1 = Upload file, 0 = Delete file. + Behavior: + - For uploading, opens a file dialog for the user to select a file and copies it to the + appropriate directory. + - For deleting, shows a popup with checkboxes for each file in the relevant directory, + allowing the user to select files to delete. + - After any change, updates the source or material dropdown menus in all relevant tabs. + + Notes: + - Uses os.path and os.scandir for directory/file handling. + - Uses tkinter.filedialog for file selection and tkinter for popups. + - Uses shutil.copy2 for file copying. + - Updates global lists (source_list, materials_list) after changes. + + Returns: + None + """ + # Handle Source files (value files or images) if Choice == 'Source': - + # Value files (.txt) if Nature == 1: if Action == 1: - filename = fd.askopenfilename(filetypes = (('Text Files', '*.txt'), ('All Files', '*.*')), - title = 'Add Alpha Source Energy File') - - dir = os.getcwd() - dir = dir + '\Files\Sources\Values' - if not filename: - pass - else: - copy2(filename, dir, follow_symlinks=True) - + # Upload: Open file dialog and copy selected file to source values directory + filename = fd.askopenfilename(filetypes=(('Text Files', '*.txt'), ('All Files', '*.*')), + title='Add Alpha Source Energy File') + target_dir = os.path.join(os.getcwd(), 'Files', 'Sources', 'Values') + if filename: + copy2(filename, target_dir, follow_symlinks=True) else: - domain = 'Files\Sources\Values' - dir = os.scandir(domain) + # Delete: Show popup with checkboxes for each file in source values directory + domain = os.path.join('Files', 'Sources', 'Values') + dir_entries = os.scandir(domain) wng.popup('Delete Alpha Source Files') name_list = [] - delete_list = [] - - for entry in dir: + delete_vars = [] + for entry in dir_entries: if entry.is_file(): - temp = (os.path.splitext(entry.name)) - name_list.append(temp[0]) - delete_list.append(tk.IntVar()) - - tk.Label(wng.warning, text = 'Files available for deletion\n').pack() - - for i in range(0, len(name_list)): - tk.Checkbutton(wng.warning, text = name_list[i], variable = delete_list[i], - onvalue = 1, offvalue = 0).pack() - - tk.Button(wng.warning, command = lambda: Delete(delete_list, name_list, domain, '.txt'), - text = 'Delete Files').pack() - - tk.Button(wng.warning, command = lambda: wng.warning.destroy(), - text = 'Return').pack() - - Dir = os.scandir('Files\Sources\Values') + name, _ = os.path.splitext(entry.name) + name_list.append(name) + delete_vars.append(tk.IntVar()) + tk.Label(wng.warning, text='Files available for deletion\n').pack() + for i, name in enumerate(name_list): + tk.Checkbutton(wng.warning, text=name, variable=delete_vars[i], + onvalue=1, offvalue=0).pack() + tk.Button(wng.warning, command=lambda: Delete(delete_vars, name_list, domain, '.txt'), + text='Delete Files').pack() + tk.Button(wng.warning, command=lambda: wng.warning.destroy(), + text='Return').pack() + # Update source_list after changes + Dir = os.scandir(os.path.join('Files', 'Sources', 'Values')) source_list.clear() for entry in Dir: if entry.is_file(): - temp = (os.path.splitext(entry.name)) - source_list.append(temp[0]) - + name, _ = os.path.splitext(entry.name) + source_list.append(name) + # Image files (.jpg, .jpeg, .png) elif Nature == 0: if Action == 1: - filename = fd.askopenfilename(filetypes = (('Image Files', '.jpg .jpeg .pgn'), - ('All Files', '*.*')), - title = 'Add Alpha Source Energy Decay Image') - dir = os.getcwd() - dir = dir + '\Files\Sources\Images\\' - if not filename: - pass - else: - copy2(filename, dir, follow_symlinks=True) - + # Upload: Open file dialog and copy selected image to source images directory + filename = fd.askopenfilename(filetypes=(('Image Files', '.jpg .jpeg .png'), + ('All Files', '*.*')), + title='Add Alpha Source Energy Decay Image') + target_dir = os.path.join(os.getcwd(), 'Files', 'Sources', 'Images') + if filename: + copy2(filename, target_dir, follow_symlinks=True) else: - domain = 'Files\Sources\Images' - dir = os.scandir(domain) + # Delete: Show popup with checkboxes for each file in source images directory + domain = os.path.join('Files', 'Sources', 'Images') + dir_entries = os.scandir(domain) wng.popup('Delete Alpha Source Chain Images') name_list = [] - delete_list = [] - - for entry in dir: + delete_vars = [] + for entry in dir_entries: if entry.is_file(): - temp = (os.path.splitext(entry.name)) - name_list.append(temp[0]) - delete_list.append(tk.IntVar()) - - tk.Label(wng.warning, text = 'Files available for deletion\n').pack() - - for i in range(0, len(name_list)): - tk.Checkbutton(wng.warning, text = name_list[i], variable = delete_list[i], - onvalue = 1, offvalue = 0).pack() - - tk.Button(wng.warning, command = lambda: Delete(delete_list, name_list, domain, '.txt'), - text = 'Delete Files').pack() - - tk.Button(wng.warning, command = lambda: wng.warning.destroy(), - text = 'Return').pack() - + name, _ = os.path.splitext(entry.name) + name_list.append(name) + delete_vars.append(tk.IntVar()) + tk.Label(wng.warning, text='Files available for deletion\n').pack() + for i, name in enumerate(name_list): + tk.Checkbutton(wng.warning, text=name, variable=delete_vars[i], + onvalue=1, offvalue=0).pack() + tk.Button(wng.warning, command=lambda: Delete(delete_vars, name_list, domain, '.txt'), + text='Delete Files').pack() + tk.Button(wng.warning, command=lambda: wng.warning.destroy(), + text='Return').pack() + + # Handle Material files (.txt) elif Choice == 'Material': if Action == 1: - filename = fd.askopenfilename(filetypes = (('Text Files', '*.txt'), ('All Files', '*.*')), - title = 'Add Material File') - dir = os.getcwd() - dir = dir + '\Files\Materials\\' - if not filename: - pass - else: - copy2(filename, dir, follow_symlinks=True) - + # Upload: Open file dialog and copy selected file to materials directory + filename = fd.askopenfilename(filetypes=(('Text Files', '*.txt'), ('All Files', '*.*')), + title='Add Material File') + target_dir = os.path.join(os.getcwd(), 'Files', 'Materials') + if filename: + copy2(filename, target_dir, follow_symlinks=True) else: - domain = 'Files\Materials' - dir = os.scandir(domain) + # Delete: Show popup with checkboxes for each file in materials directory + domain = os.path.join('Files', 'Materials') + dir_entries = os.scandir(domain) wng.popup('Delete Material Files') name_list = [] - delete_list = [] - - for entry in dir: + delete_vars = [] + for entry in dir_entries: if entry.is_file(): - temp = (os.path.splitext(entry.name)) - name_list.append(temp[0]) - delete_list.append(tk.IntVar()) - - tk.Label(wng.warning, text = 'Files available for deletion\n').pack() - - for i in range(0, len(name_list)): - tk.Checkbutton(wng.warning, text = name_list[i], variable = delete_list[i], - onvalue = 1, offvalue = 0).pack() - - tk.Button(wng.warning, command = lambda: Delete(delete_list, name_list, domain, '.txt'), - text = 'Delete Files').pack() - - tk.Button(wng.warning, command = lambda: wng.warning.destroy(), - text = 'Return').pack() - - Dir = os.scandir('Files\Materials') + name, _ = os.path.splitext(entry.name) + name_list.append(name) + delete_vars.append(tk.IntVar()) + tk.Label(wng.warning, text='Files available for deletion\n').pack() + for i, name in enumerate(name_list): + tk.Checkbutton(wng.warning, text=name, variable=delete_vars[i], + onvalue=1, offvalue=0).pack() + tk.Button(wng.warning, command=lambda: Delete(delete_vars, name_list, domain, '.txt'), + text='Delete Files').pack() + tk.Button(wng.warning, command=lambda: wng.warning.destroy(), + text='Return').pack() + # Update materials_list after changes + Dir = os.scandir(os.path.join('Files', 'Materials')) materials_list.clear() for entry in Dir: if entry.is_file(): - temp = (os.path.splitext(entry.name)) - materials_list.append(temp[0]) + name, _ = os.path.splitext(entry.name) + materials_list.append(name) - for i in range(0, len(TabTracker)): + # Update dropdown menus in all tabs after file changes + for i in range(len(TabTracker)): if TabTracker[i] < 0: TabList[i][1].Source_Menu.destroy() - TabList[i][1].Source_Menu = tk.OptionMenu(TabList[i][1].SourceFrame, TabList[i][1].Source, - *source_list, command = SourceReader) - TabList[i][1].Source_Menu.grid(row = 1, columnspan = 2) - + TabList[i][1].Source_Menu = tk.OptionMenu( + TabList[i][1].SourceFrame, TabList[i][1].Source, + *source_list, command=SourceReader) + TabList[i][1].Source_Menu.grid(row=1, columnspan=2) elif TabTracker[i] > 0: TabList[i][1].Mat_Menu.destroy() - TabList[i][1].Mat_Menu = tk.OptionMenu(TabList[i][1].SourceFrame, - TabList[i][1].Mat, *materials_list) - TabList[i][1].Mat_Menu.grid(row = 1, columnspan = 2) + TabList[i][1].Mat_Menu = tk.OptionMenu( + TabList[i][1].SourceFrame, TabList[i][1].Mat, *materials_list) + TabList[i][1].Mat_Menu.grid(row=1, columnspan=2) + return -############################################################################# -# Permite guardar os resultados todos obtidos no programa para um txt -############################################################################# +########################################## +# Allows the user to save all results # +# obtained in the program to a text file # +########################################## def Save_Results(): - - domain = (('Text Files', '*.txt'), ('All Files', '*.*')) - file = fd.asksaveasfile(title = 'Save Results', initialdir = ",", filetypes = domain, defaultextension = ".txt") + """ + Saves all results obtained in the program to a user-specified text file. - if file: - file.write('The Results calculated by NUC-RIA\'s ARC-TF were the following:\n\n') - for i in range(0, len(TabTracker)): - if TabTracker[i] < 0: - file.write('Calibration Trial ' + str(-TabTracker[i]) + '\n\n') - file.write('The detected Peaks and Counts were: \n \n') - Peaks = File_Reader(TabList[i][3], ',', 'Yes', 'No') + This function opens a file dialog for the user to choose a save location and filename. + It then writes a summary of all calibration and material trials, including: + - Detected peaks and counts for each calibration trial. + - Radiation source used and linear regression results (slope, intercept, uncertainties). + - Detected peaks, counts, and calculated thickness for each material trial. + - Average thickness and uncertainty for each material. - for j in range(0, len(Peaks)): - file.write('Channel: ' + str("{:.1f}".format(Peaks[j][0])) + '\tCounts: ' + str("{:.1f}".format(Peaks[j][1])) + '\n') + Steps: + 1. Opens a save file dialog for the user to specify the output file. + 2. Iterates through all tabs (TabTracker) to collect calibration and material results. + 3. For calibration trials: + - Writes detected peaks and counts. + - Writes source and regression results. + 4. For material trials: + - Writes detected peaks, counts, and thickness. + - Writes average thickness and uncertainty. + 5. Formats all numerical results with appropriate units and significant digits. + + Notes: + - Uses File_Reader to load peak and regression/thickness data. + - Handles both calibration (TabTracker < 0) and material (TabTracker > 0) tabs. + - Units and formatting are handled according to user settings. - file.write('\nThe Radiation source used for this trial was: ' + + Returns: + None + """ + # Define file types for save dialog + filetypes = (('Text Files', '*.txt'), ('All Files', '*.*')) + file = fd.asksaveasfile( + title='Save Results', + initialdir=".", + filetypes=filetypes, + defaultextension=".txt") + + if file: + file.write("The Results calculated by NUC-RIA's ARC-TF were the following:\n\n") + # Loop through all tabs for calibration trials + for i in range(len(TabTracker)): + if TabTracker[i] < 0: + file.write(f'Calibration Trial {-TabTracker[i]}\n\n') + file.write('The detected Peaks and Counts were:\n\n') + peaks = File_Reader(TabList[i][3], ',', 'Yes', 'No') + for peak in peaks: + file.write(f'Channel: {peak[0]:.1f}\tCounts: {peak[1]:.1f}\n') + file.write('\nThe Radiation source used for this trial was: ' + TabList[i][1].Source.get() + '\n\n') - Regression = File_Reader(TabList[i][4], '0', 'String', 'No', ) - file.write('The Linear Regression calculated was the following, using ' + - Regression[0] + ' units.\n\n') - - file.write('The Slope: ' + '%.*f' % (int(Regression[5]), float(Regression[1])) + ' ' + - u"\u00B1" + ' ' + '%.*f' % (int(Regression[5]), float(Regression[2])) + '\n') - file.write('The Intersect: ' + '%.*f' % (int(Regression[6]), float(Regression[3])) + ' ' + - u"\u00B1" + ' ' + '%.*f' % (int(Regression[6]), float(Regression[4])) + '\n') + regression = File_Reader(TabList[i][4], '0', 'String', 'No') + file.write('The Linear Regression calculated was the following, using ' + + regression[0] + ' units.\n\n') + file.write('The Slope: ' + + '%.*f' % (int(regression[5]), float(regression[1])) + ' ± ' + + '%.*f' % (int(regression[5]), float(regression[2])) + '\n') + file.write('The Intersect: ' + + '%.*f' % (int(regression[6]), float(regression[3])) + ' ± ' + + '%.*f' % (int(regression[6]), float(regression[4])) + '\n') file.write('_______________________________________________________________\n\n') - for i in range(0, len(TabTracker)): + # Loop through all tabs for material trials + for i in range(len(TabTracker)): if TabTracker[i] > 0: - file.write('Material Trial ' + str(TabTracker[i]) + '\n\n') - file.write('The detected Channels, Counts and respectful Thickness approximation were:' - + '\n\n') - Peaks = File_Reader(TabList[i][3], ',', 'Yes', 'No') - Peaks.sort() + file.write(f'Material Trial {TabTracker[i]}\n\n') + file.write('The detected Channels, Counts and respective Thickness approximation were:\n\n') + peaks = File_Reader(TabList[i][3], ',', 'Yes', 'No') + peaks.sort() thickness = File_Reader(TabList[i][4], '0', 'String', 'No') - units_list = ['nm', '\u03bcm', - '\u03bcg' + ' cm' + '{}'.format('\u207B' + '\u00b2'), - '10' + '{}'.format('\u00b9' + '\u2075') + ' Atoms' - + ' cm' + '{}'.format('\u207B' + '\u00b3')] - - units_values = [10.0**9, 10.0**6, 0.0, -1.0] + units_list = [ + 'nm', '\u03bcm', + '\u03bcg cm\u207B\u00B2', + '10\u00B9\u2075 Atoms cm\u207B\u00B3' + ] + units_values = [1e9, 1e6, 0.0, -1.0] index = units_values.index(TabList[i][1].units.get()) - for j in range(0, len(Peaks)): - file.write('Channel: ' + str("{:.1f}".format(Peaks[j][0])) + '\tCounts: ' + str("{:.1f}".format(Peaks[j][1])) + - '\tThickness: ' + '%.*f' % (int(thickness[-1]), float(thickness[j])) + - ' ' + units_list[index] + '\n') - - file.write('\nThe average thickness, of material ' + - TabList[i][1].Mat.get() + ' was calculated to be: ' + '(' - '%.*f' % (int(thickness[-1]), float(thickness[j + 1])) + - ' ' + u"\u00B1 " + - '%.*f' % (int(thickness[-1]), float(thickness[j + 2])) + ') ' + + for j, peak in enumerate(peaks): + file.write( + f'Channel: {peak[0]:.1f}\tCounts: {peak[1]:.1f}\tThickness: ' + f'%.*f {units_list[index]}\n' % (int(thickness[-1]), float(thickness[j])) + ) + + file.write('\nThe average thickness, of material ' + + TabList[i][1].Mat.get() + ' was calculated to be: (' + + '%.*f' % (int(thickness[-1]), float(thickness[j + 1])) + + ' ± ' + + '%.*f' % (int(thickness[-1]), float(thickness[j + 2])) + ') ' + units_list[index] + '\n\n') - - '%.*f' % (int(Regression[6]), float(Regression[4])) - file.write('_______________________________________________________________\n\n') + return ############################################################################# # A classe do esqueleto, onde esta a barra de ferramentas e a janela principal diff --git a/Include/remove_file.py b/Include/remove_file.py new file mode 100644 index 0000000..a1aed50 --- /dev/null +++ b/Include/remove_file.py @@ -0,0 +1,23 @@ +#################################################################################################### +## ## +## ARC-TF stands for Alpha particles' energy loss and Rutherford backscattering ## +## spectrometry methods for Characterization of Thin Films. ## +## ## +## ARC-TF is a GUI (Guided User Interface) intended to expedite the process of ## +## characterizing thin films, via an interface with ease of use, and backend ## +## algorithms that accelerate the data analysis. ## +## ## +## This project is the result of a LIP Summer Internship, within the NUC-RIA group. ## +## A publication resulting from the internship, resuming the work taken to develop ## +## the first version of ARC-TF, can be searched for by the reference LIP-STUDENTS-23-15. ## +## Directly available at https://www.lip.pt/files/training/papers/2023/pdf/2023-PAPER-179-15.pdf ## +## ## +#################################################################################################### +import os + +def remove_file(filepath): + """Remove file safely if it exists, ignoring FileNotFoundError.""" + try: + os.remove(filepath) + except FileNotFoundError: + pass \ No newline at end of file From e1982ddbb084be32edc837f0a5836a7799c8eafb Mon Sep 17 00:00:00 2001 From: RiPires Date: Mon, 7 Jul 2025 17:46:39 +0100 Subject: [PATCH 13/44] Code review update: * reviewed classes Skeleton, Warnings, Tabs and Plot; checked for code clarity, meaningful variable names, created docstrings and headers, and wrote comments in english; * need to check again the Tabs class, regarding the definition of decay, regression and "variable" variables (this is not so good at the moment); * changed the global variable "Notebook" to "tab_manager"; this has notebook-like properties from the TKinter tkk package, but this way it gets less confuse; * changed the global variable "wng" to "warnings_manager" - self-explanatory; --- ARC-TF.py | 907 ++++++++++++++++++++++++++++++------------------------ 1 file changed, 500 insertions(+), 407 deletions(-) diff --git a/ARC-TF.py b/ARC-TF.py index 6664970..ed63455 100644 --- a/ARC-TF.py +++ b/ARC-TF.py @@ -57,7 +57,7 @@ def Current_Tab(): by getting the index of the selected tab in the notebook. """ ## Get index of the current tab in the notebook - tabID = Notebook.notebook.index(Notebook.notebook.select()) - 1 + tabID = tab_manager.notebook.index(tab_manager.notebook.select()) - 1 ## Check if the user is in the "final results" tab (has negative index) if tabID < 0: @@ -90,7 +90,7 @@ def ClearWidget(Frame, parameter): Dependencies: - Uses the global TabList and TabTracker structures. - Assumes each frame is a Tkinter Frame with children. - - Depends on external objects like `Notebook`, `wng`. + - Depends on external objects like `tab_manager`, `warnings_manager`. """ num = Current_Tab() tab = TabList[num][1] @@ -121,35 +121,35 @@ def ClearWidget(Frame, parameter): elif Frame == 'Popup': # Destroy warning popup - for widget in wng.warning.winfo_children(): + for widget in warnings_manager.warning.winfo_children(): widget.destroy() - wng.warning.destroy() + warnings_manager.warning.destroy() elif Frame == 'Image': # Destroy decay image popup - for widget in wng.decay.winfo_children(): + for widget in warnings_manager.decay.winfo_children(): widget.destroy() - wng.decay.destroy() + warnings_manager.decay.destroy() elif Frame == 'Linear': # Clear linear regression result display and optionally delete file clear_frame(tab.LinearRegressionFrame) - clear_frame(Notebook.Calib_Result2) + clear_frame(tab_manager.Calib_Result2) if parameter == 1: remove_file(TabList[num][4]) # Calibration file elif Frame == 'Thickness': # Clear thickness calculation results and optionally delete file clear_frame(tab.ThicknessFrame) - clear_frame(Notebook.Mat_Result2) + clear_frame(tab_manager.Mat_Result2) if parameter == 1: tab.Mat.set('Select Material') remove_file(TabList[num][4]) # Thickness file elif Frame == 'Final': # Clear final results display - clear_frame(Notebook.Mat_Result2) - clear_frame(Notebook.Calib_Result2) + clear_frame(tab_manager.Mat_Result2) + clear_frame(tab_manager.Calib_Result2) elif Frame == 'Everything': # Full reset of all UI elements and files in the current tab @@ -326,27 +326,27 @@ def Final_Results(tracker): Results = File_Reader(TabList[i][4], '0', 'String', 'No') # Display calibration trial info - tk.Label(Notebook.Calib_Result2, text=f'Calibration Trial {-TabTracker[i]} - {TabList[i][1].Source.get()}').grid(row=4*i+i, columnspan=3) - tk.Label(Notebook.Calib_Result2, text=f'({unit_energy})').grid(row=4*i+i+1, column=0) - tk.Label(Notebook.Calib_Result2, text='Values').grid(row=4*i+i+1, column=1) - tk.Label(Notebook.Calib_Result2, text='Uncertainty').grid(row=4*i+i+1, column=2) - tk.Label(Notebook.Calib_Result2, text='Slope').grid(row=4*i+i+2, column=0) - tk.Label(Notebook.Calib_Result2, text='Intersect').grid(row=4*i+i+3, column=0) - tk.Label(Notebook.Calib_Result2, text='').grid(row=4*i+i+4, column=0) + tk.Label(tab_manager.Calib_Result2, text=f'Calibration Trial {-TabTracker[i]} - {TabList[i][1].Source.get()}').grid(row=4*i+i, columnspan=3) + tk.Label(tab_manager.Calib_Result2, text=f'({unit_energy})').grid(row=4*i+i+1, column=0) + tk.Label(tab_manager.Calib_Result2, text='Values').grid(row=4*i+i+1, column=1) + tk.Label(tab_manager.Calib_Result2, text='Uncertainty').grid(row=4*i+i+1, column=2) + tk.Label(tab_manager.Calib_Result2, text='Slope').grid(row=4*i+i+2, column=0) + tk.Label(tab_manager.Calib_Result2, text='Intersect').grid(row=4*i+i+3, column=0) + tk.Label(tab_manager.Calib_Result2, text='').grid(row=4*i+i+4, column=0) # Display slope and intercept with uncertainty - tk.Label(Notebook.Calib_Result2, text='%.*f' % (int(Results[5]), float(Results[1]))).grid(row=4*i+i+2, column=1) - tk.Label(Notebook.Calib_Result2, text='%.*f' % (int(Results[5]), float(Results[2]))).grid(row=4*i+i+2, column=2) - tk.Label(Notebook.Calib_Result2, text='%.*f' % (int(Results[6]), float(Results[3]))).grid(row=4*i+i+3, column=1) - tk.Label(Notebook.Calib_Result2, text='%.*f' % (int(Results[6]), float(Results[4]))).grid(row=4*i+i+3, column=2) + tk.Label(tab_manager.Calib_Result2, text='%.*f' % (int(Results[5]), float(Results[1]))).grid(row=4*i+i+2, column=1) + tk.Label(tab_manager.Calib_Result2, text='%.*f' % (int(Results[5]), float(Results[2]))).grid(row=4*i+i+2, column=2) + tk.Label(tab_manager.Calib_Result2, text='%.*f' % (int(Results[6]), float(Results[3]))).grid(row=4*i+i+3, column=1) + tk.Label(tab_manager.Calib_Result2, text='%.*f' % (int(Results[6]), float(Results[4]))).grid(row=4*i+i+3, column=2) else: # Update canvas if no result file - Notebook.calib_canvas.update_idletasks() - Notebook.calib_canvas.config(scrollregion=Notebook.Calib_Result2.bbox()) - Notebook.Calib_Result2.bind('', - lambda e: Notebook.calib_canvas.configure( - scrollregion=Notebook.calib_canvas.bbox('all'), width=e.width)) + tab_manager.calib_canvas.update_idletasks() + tab_manager.calib_canvas.config(scrollregion=tab_manager.Calib_Result2.bbox()) + tab_manager.Calib_Result2.bind('', + lambda e: tab_manager.calib_canvas.configure( + scrollregion=tab_manager.calib_canvas.bbox('all'), width=e.width)) # MATERIAL RESULTS DISPLAY if (tracker >= 0) and TabTracker[i] > 0: @@ -366,27 +366,27 @@ def Final_Results(tracker): for j in range(size): if j == 0: # Trial header and column labels - tk.Label(Notebook.Mat_Result2, text=f'Material Trial {TabTracker[i]} - {TabList[i][1].Mat.get()}').grid(row=(4+size)*i+i+j, columnspan=2) - tk.Label(Notebook.Mat_Result2, text='Peak Centroid').grid(row=(4+size)*i+i+j+1, column=0) - tk.Label(Notebook.Mat_Result2, text='Thickness').grid(row=(4+size)*i+i+j+1, column=1) + tk.Label(tab_manager.Mat_Result2, text=f'Material Trial {TabTracker[i]} - {TabList[i][1].Mat.get()}').grid(row=(4+size)*i+i+j, columnspan=2) + tk.Label(tab_manager.Mat_Result2, text='Peak Centroid').grid(row=(4+size)*i+i+j+1, column=0) + tk.Label(tab_manager.Mat_Result2, text='Thickness').grid(row=(4+size)*i+i+j+1, column=1) # Peak energy and thickness - tk.Label(Notebook.Mat_Result2, text=f'{Peaks[j][0]:.1f}').grid(row=(4+size)*i+i+j+2, column=0) - tk.Label(Notebook.Mat_Result2, text='%.*f %s' % (int(Results[-1]), Results[j], units_list[index])).grid(row=(4+size)*i+i+j+2, column=1) + tk.Label(tab_manager.Mat_Result2, text=f'{Peaks[j][0]:.1f}').grid(row=(4+size)*i+i+j+2, column=0) + tk.Label(tab_manager.Mat_Result2, text='%.*f %s' % (int(Results[-1]), Results[j], units_list[index])).grid(row=(4+size)*i+i+j+2, column=1) # Display average and uncertainty - tk.Label(Notebook.Mat_Result2, text='\nAverage').grid(row=(4+size)*i+i+j+3, column=0) - tk.Label(Notebook.Mat_Result2, text='Uncertainty').grid(row=(4+size)*i+i+j+4, column=0) - tk.Label(Notebook.Mat_Result2, text='\n%.*f %s' % (int(Results[-1]), Results[j+1], units_list[index])).grid(row=(4+size)*i+i+j+3, column=1) - tk.Label(Notebook.Mat_Result2, text='%.*f %s' % (int(Results[-1]), Results[j+2], units_list[index])).grid(row=(4+size)*i+i+j+4, column=1) - tk.Label(Notebook.Mat_Result2, text='').grid(row=(4+size)*i+i+j+5, columnspan=2) + tk.Label(tab_manager.Mat_Result2, text='\nAverage').grid(row=(4+size)*i+i+j+3, column=0) + tk.Label(tab_manager.Mat_Result2, text='Uncertainty').grid(row=(4+size)*i+i+j+4, column=0) + tk.Label(tab_manager.Mat_Result2, text='\n%.*f %s' % (int(Results[-1]), Results[j+1], units_list[index])).grid(row=(4+size)*i+i+j+3, column=1) + tk.Label(tab_manager.Mat_Result2, text='%.*f %s' % (int(Results[-1]), Results[j+2], units_list[index])).grid(row=(4+size)*i+i+j+4, column=1) + tk.Label(tab_manager.Mat_Result2, text='').grid(row=(4+size)*i+i+j+5, columnspan=2) # Update scrollable canvas - Notebook.mat_canvas.update_idletasks() - Notebook.mat_canvas.config(scrollregion=Notebook.Mat_Result2.bbox()) - Notebook.Mat_Result2.bind('', - lambda e: Notebook.mat_canvas.configure( - scrollregion=Notebook.mat_canvas.bbox('all'), width=e.width)) + tab_manager.mat_canvas.update_idletasks() + tab_manager.mat_canvas.config(scrollregion=tab_manager.Mat_Result2.bbox()) + tab_manager.Mat_Result2.bind('', + lambda e: tab_manager.mat_canvas.configure( + scrollregion=tab_manager.mat_canvas.bbox('all'), width=e.width)) return ############################################################################### @@ -410,7 +410,7 @@ def Calib_Choice(): Dependencies: - Uses global TabList and TabTracker structures. - - Relies on tkinter for GUI elements and wng for popup management. + - Relies on tkinter for GUI elements and warnings_manager for popup management. Returns: None @@ -432,16 +432,16 @@ def Calib_Choice(): # If no valid calibration regressions found, show warning popup if not validCalib: - wng.popup('No Linear Regressions detected') - tk.Label(wng.warning, text=( + warnings_manager.popup('No Linear Regressions detected') + tk.Label(warnings_manager.warning, text=( 'No linear regressions were detected.\n\n' 'Please perform a Calibration Trial before calculating the film\'s thickness.\n\n')).pack() - tk.Button(wng.warning, text='Return', command=lambda: wng.warning.destroy()).pack() + tk.Button(warnings_manager.warning, text='Return', command=lambda: warnings_manager.warning.destroy()).pack() # Otherwise, show selection popup for user to choose regressions else: - wng.popup('Linear Regression Selection Menu') - tk.Label(wng.warning, text=( + warnings_manager.popup('Linear Regression Selection Menu') + tk.Label(warnings_manager.warning, text=( 'Please select one or more calibration trials.\n' 'Choosing multiple calibrations will average the slopes and intercepts.\n\n')).pack() @@ -455,7 +455,7 @@ def Calib_Choice(): on_value = i + 1 regression_value_map[on_value] = TabTracker[tab_idx] button_Choice = tk.Checkbutton( - wng.warning, + warnings_manager.warning, text=f'Linear Regression of Calibration Trial {-validCalib[i]}', variable=TabList[num][1].Regression_List[i], # Correct indexing onvalue=on_value, @@ -467,7 +467,7 @@ def Calib_Choice(): TabList[num][1].regression_value_map = regression_value_map # Button to simply close the popup (could be extended with a Confirm button) - tk.Button(wng.warning, text='Return', command=lambda: ClearWidget('Popup', 0)).pack() + tk.Button(warnings_manager.warning, text='Return', command=lambda: ClearWidget('Popup', 0)).pack() ##################################################################################### # Calculate the material thickness for each detected peak and the average thickness # @@ -920,12 +920,12 @@ def LinearRegression(): energies = sorted(energies) # Check for matching lengths if len(centroids) != len(energies): - wng.popup('Invalid Linear Regression Configuration') - tk.Label(wng.warning, + warnings_manager.popup('Invalid Linear Regression Configuration') + tk.Label(warnings_manager.warning, text="Number of Radiation Decay does not match the number of Peaks detected.\n").pack() - tk.Label(wng.warning, + tk.Label(warnings_manager.warning, text="Please adjust the Searching Algorithms or the number of Decay Energy.\n\n").pack() - tk.Button(wng.warning, text='Return', command=lambda: wng.warning.destroy()).pack() + tk.Button(warnings_manager.warning, text='Return', command=lambda: warnings_manager.warning.destroy()).pack() return # Clear previous regression output and show regression frame @@ -986,12 +986,12 @@ def LinearRegression(): yvalues = sorted(yaxis) # Ensure both datasets have the same length (necessary for linear regression) if len(xvalues) != len(yvalues): - wng.popup('Invalid Linear Regression Configuration') - tk.Label(wng.warning, + warnings_manager.popup('Invalid Linear Regression Configuration') + tk.Label(warnings_manager.warning, text="Number of Radiation Decay does not match the number of Peaks detected.\n").pack() - tk.Label(wng.warning, + tk.Label(warnings_manager.warning, text="Please adjust the Searching Algorithms or the number of Decay Energy.\n\n").pack() - tk.Button(wng.warning, text='Return', command=lambda: wng.warning.destroy()).pack() + tk.Button(warnings_manager.warning, text='Return', command=lambda: warnings_manager.warning.destroy()).pack() return # Clear previous regression output and show regression frame @@ -1181,8 +1181,8 @@ def Threshold_Alg(): ResultManager() ################################################################################ -# ROI_Select_Alg: Detects peaks within user-defined ROIs and records their # -# centroids, uncertainties, and sigma/sqrt(N) for the ROI Select algorithm. # +# ROI_Select_Alg: Detects peaks within user-defined ROIs and records their # +# centroids, uncertainties, and sigma/sqrt(N) for the ROI Select algorithm. # ################################################################################ def ROI_Select_Alg(): """ @@ -1265,7 +1265,7 @@ def showimage(): Dependencies: - Uses global TabList and tkinter for GUI elements. - - Relies on the wng.Images helper for displaying images and links. + - Relies on the warnings_manager.Images helper for displaying images and links. Returns: None @@ -1291,14 +1291,13 @@ def showimage(): try: ClearWidget('Image', 0) # Clear previous image widget(s) - wng.Images('Decay Chain of ' + alphas, picture, domain) # Display image and link + warnings_manager.Images('Decay Chain of ' + alphas, picture, domain) # Display image and link except: # If clearing fails, still try to display the image - wng.Images('Decay Chain of ' + alphas, picture, domain) + warnings_manager.Images('Decay Chain of ' + alphas, picture, domain) return - ############################################################################ # Event handler for capturing points directly from the plot on mouse click # ############################################################################ @@ -1365,7 +1364,6 @@ def DataUploader(): return - ###################################################### # Handles the event of changing tabs in the notebook # ###################################################### @@ -1379,23 +1377,23 @@ def handleTabChange(event): # Check if the currently selected tab is the last one (the '+' tab) # and if the total number of tabs is less than 15 - if Notebook.notebook.select() == Notebook.notebook.tabs()[-1] and len(Notebook.notebook.tabs()) < 15: + if tab_manager.notebook.select() == tab_manager.notebook.tabs()[-1] and len(tab_manager.notebook.tabs()) < 15: # Show popup menu for tab selection - wng.popup('Tab Selector Menu') + warnings_manager.popup('Tab Selector Menu') - tk.Label(wng.warning, text='Please Select New Type of Tab to Open \n').pack() - tk.Button(wng.warning, command=lambda: Tabs.tab_change(1), + tk.Label(warnings_manager.warning, text='Please Select New Type of Tab to Open \n').pack() + tk.Button(warnings_manager.warning, command=lambda: Tabs.tab_change(1), text='Calibration Trial').pack() - tk.Button(wng.warning, command=lambda: Tabs.tab_change(2), + tk.Button(warnings_manager.warning, command=lambda: Tabs.tab_change(2), text='Material Trial').pack() - tk.Label(wng.warning, text='\n').pack() - tk.Button(wng.warning, text='Return', + tk.Label(warnings_manager.warning, text='\n').pack() + tk.Button(warnings_manager.warning, text='Return', command=lambda: Tabs.tab_change(3)).pack() # The numbers passed to tab_change() indicate which type of tab to add # If there are already 15 or more tabs, hide the '+' tab to prevent adding more - elif len(Notebook.notebook.tabs()) >= 15: - Notebook.notebook.hide(14) + elif len(tab_manager.notebook.tabs()) >= 15: + tab_manager.notebook.hide(14) return @@ -1583,7 +1581,7 @@ def Delete(deletes, names, directory, last): if deletes[i].get() == 1: os.remove(directory + names[i] + last) - wng.warning.destroy() + warnings_manager.warning.destroy() ########################################################################## # Handles uploading and deleting of permanent data files used # @@ -1631,7 +1629,7 @@ def File_Manager(Choice, Nature, Action): # Delete: Show popup with checkboxes for each file in source values directory domain = os.path.join('Files', 'Sources', 'Values') dir_entries = os.scandir(domain) - wng.popup('Delete Alpha Source Files') + warnings_manager.popup('Delete Alpha Source Files') name_list = [] delete_vars = [] for entry in dir_entries: @@ -1639,13 +1637,13 @@ def File_Manager(Choice, Nature, Action): name, _ = os.path.splitext(entry.name) name_list.append(name) delete_vars.append(tk.IntVar()) - tk.Label(wng.warning, text='Files available for deletion\n').pack() + tk.Label(warnings_manager.warning, text='Files available for deletion\n').pack() for i, name in enumerate(name_list): - tk.Checkbutton(wng.warning, text=name, variable=delete_vars[i], + tk.Checkbutton(warnings_manager.warning, text=name, variable=delete_vars[i], onvalue=1, offvalue=0).pack() - tk.Button(wng.warning, command=lambda: Delete(delete_vars, name_list, domain, '.txt'), + tk.Button(warnings_manager.warning, command=lambda: Delete(delete_vars, name_list, domain, '.txt'), text='Delete Files').pack() - tk.Button(wng.warning, command=lambda: wng.warning.destroy(), + tk.Button(warnings_manager.warning, command=lambda: warnings_manager.warning.destroy(), text='Return').pack() # Update source_list after changes Dir = os.scandir(os.path.join('Files', 'Sources', 'Values')) @@ -1668,7 +1666,7 @@ def File_Manager(Choice, Nature, Action): # Delete: Show popup with checkboxes for each file in source images directory domain = os.path.join('Files', 'Sources', 'Images') dir_entries = os.scandir(domain) - wng.popup('Delete Alpha Source Chain Images') + warnings_manager.popup('Delete Alpha Source Chain Images') name_list = [] delete_vars = [] for entry in dir_entries: @@ -1676,13 +1674,13 @@ def File_Manager(Choice, Nature, Action): name, _ = os.path.splitext(entry.name) name_list.append(name) delete_vars.append(tk.IntVar()) - tk.Label(wng.warning, text='Files available for deletion\n').pack() + tk.Label(warnings_manager.warning, text='Files available for deletion\n').pack() for i, name in enumerate(name_list): - tk.Checkbutton(wng.warning, text=name, variable=delete_vars[i], + tk.Checkbutton(warnings_manager.warning, text=name, variable=delete_vars[i], onvalue=1, offvalue=0).pack() - tk.Button(wng.warning, command=lambda: Delete(delete_vars, name_list, domain, '.txt'), + tk.Button(warnings_manager.warning, command=lambda: Delete(delete_vars, name_list, domain, '.txt'), text='Delete Files').pack() - tk.Button(wng.warning, command=lambda: wng.warning.destroy(), + tk.Button(warnings_manager.warning, command=lambda: warnings_manager.warning.destroy(), text='Return').pack() # Handle Material files (.txt) @@ -1698,7 +1696,7 @@ def File_Manager(Choice, Nature, Action): # Delete: Show popup with checkboxes for each file in materials directory domain = os.path.join('Files', 'Materials') dir_entries = os.scandir(domain) - wng.popup('Delete Material Files') + warnings_manager.popup('Delete Material Files') name_list = [] delete_vars = [] for entry in dir_entries: @@ -1706,13 +1704,13 @@ def File_Manager(Choice, Nature, Action): name, _ = os.path.splitext(entry.name) name_list.append(name) delete_vars.append(tk.IntVar()) - tk.Label(wng.warning, text='Files available for deletion\n').pack() + tk.Label(warnings_manager.warning, text='Files available for deletion\n').pack() for i, name in enumerate(name_list): - tk.Checkbutton(wng.warning, text=name, variable=delete_vars[i], + tk.Checkbutton(warnings_manager.warning, text=name, variable=delete_vars[i], onvalue=1, offvalue=0).pack() - tk.Button(wng.warning, command=lambda: Delete(delete_vars, name_list, domain, '.txt'), + tk.Button(warnings_manager.warning, command=lambda: Delete(delete_vars, name_list, domain, '.txt'), text='Delete Files').pack() - tk.Button(wng.warning, command=lambda: wng.warning.destroy(), + tk.Button(warnings_manager.warning, command=lambda: warnings_manager.warning.destroy(), text='Return').pack() # Update materials_list after changes Dir = os.scandir(os.path.join('Files', 'Materials')) @@ -1835,133 +1833,187 @@ def Save_Results(): return ############################################################################# -# A classe do esqueleto, onde esta a barra de ferramentas e a janela principal -# do programa +# Skeleton: Main application window and menu bar class for ARC-TF GUI # +# # +# This class creates the main Tkinter window, sets up the menu bar, and # +# provides access to all major program functions (file operations, tab # +# management, settings, help, etc.). # ############################################################################# class Skeleton: + """ + Main application window and menu bar class for the ARC-TF GUI. + + Responsibilities: + - Initializes the main Tkinter window with title, size, and background. + - Sets up the main menu bar with submenus for: + * File operations (plot, save, clear, exit) + * Settings (opens settings dialog) + * Tab management (add/remove calibration/material tabs) + * Data file management (add/remove source files, images, materials) + * Help and About (opens help dialog or README link) + - Each menu item is linked to the appropriate callback function. + Notes: + - Variable and method names are in English for clarity. + - Menu and submenu variables use double underscores to indicate internal use. + - All menu commands use lambda for parameterized callbacks. + - The run() method starts the Tkinter main event loop. + + Attributes: + main (tk.Tk): The main application window. + menu (tk.Menu): The main menu bar. + + Methods: + __init__(): Initializes the window and menu bar. + run(): Starts the Tkinter main event loop. + """ def __init__(self): - - ############# A Janela Mae ############## + # Main application window setup self.main = tk.Tk() self.main.title('ARC_TF') self.main.state('zoomed') - self.main.configure(background = 'dark grey') + self.main.configure(background='dark grey') - ############## A barra de Ferramentas e opcoes ################# + # Main menu bar self.menu = tk.Menu(self.main) - self.main.config(menu = self.menu) + self.main.config(menu=self.menu) - # O tipico File Menu. Hao de haver mais opcoes no futuro - __file_menu = tk.Menu(self.menu, tearoff = False) - self.menu.add_cascade(label = 'File', menu = __file_menu) - __file_menu.add_command(label = 'Plot Data', command = DataUploader) - __file_menu.add_command(label = "Save Results", command = Save_Results) + # File menu: plot, save, clear, exit + __file_menu = tk.Menu(self.menu, tearoff=False) + self.menu.add_cascade(label='File', menu=__file_menu) + __file_menu.add_command(label='Plot Data', command=DataUploader) + __file_menu.add_command(label="Save Results", command=Save_Results) __file_menu.add_separator() - __file_menu.add_command(label = 'Remove Current Plot', - command = lambda: ClearWidget('Graphic', 0)) - __file_menu.add_command(label = 'Remove Algorithm Results', - command = lambda: ClearWidget('Results', 0)) - __file_menu.add_command(label = "Reset All Data from Current Tab", - command = lambda: ClearWidget('Everything', 1) ) + __file_menu.add_command(label='Remove Current Plot', command=lambda: ClearWidget('Graphic', 0)) + __file_menu.add_command(label='Remove Algorithm Results', command=lambda: ClearWidget('Results', 0)) + __file_menu.add_command(label="Reset All Data from Current Tab", command=lambda: ClearWidget('Everything', 1)) __file_menu.add_separator() - __file_menu.add_command(label = 'Exit', command = self.main.quit) + __file_menu.add_command(label='Exit', command=self.main.quit) - # O bloco de definicoes do programa - self.menu.add_command(label = 'Settings', command = lambda: wng.Settings()) + # Settings menu + self.menu.add_command(label='Settings', command=lambda: warnings_manager.Settings()) - # Gere as tabs do programa - __tabs_menu = tk.Menu(self.menu, tearoff = False) - self.menu.add_cascade(label = 'Manage Tabs', menu = __tabs_menu) - __tabs_menu.add_command(label = 'Add Calibration Tab', command = lambda: Tabs.tab_change(1)) - __tabs_menu.add_command(label = 'Add Material Tab', command = lambda: Tabs.tab_change(2)) + # Tab management menu + __tabs_menu = tk.Menu(self.menu, tearoff=False) + self.menu.add_cascade(label='Manage Tabs', menu=__tabs_menu) + __tabs_menu.add_command(label='Add Calibration Tab', command=lambda: Tabs.tab_change(1)) + __tabs_menu.add_command(label='Add Material Tab', command=lambda: Tabs.tab_change(2)) __tabs_menu.add_separator() - __tabs_menu.add_command(label = 'Remove Current Tab', command = lambda: Tabs.tab_change(4)) - - # Gere os documentos da base de dados do programa - __files_data = tk.Menu(self.menu, tearoff = False) - self.menu.add_cascade(label = 'Manage Data Files', menu = __files_data) - __files_data.add_command(label = 'Add Alpha Source File', - command = lambda: File_Manager('Source', 1, 1)) - __files_data.add_command(label = 'Remove Alpha Source File', - command = lambda: File_Manager('Source', 1, 0)) + __tabs_menu.add_command(label='Remove Current Tab', command=lambda: Tabs.tab_change(4)) + + # Data file management menu + __files_data = tk.Menu(self.menu, tearoff=False) + self.menu.add_cascade(label='Manage Data Files', menu=__files_data) + __files_data.add_command(label='Add Alpha Source File', command=lambda: File_Manager('Source', 1, 1)) + __files_data.add_command(label='Remove Alpha Source File', command=lambda: File_Manager('Source', 1, 0)) __files_data.add_separator() - __files_data.add_command(label = 'Add Alpha Source Image', - command = lambda: File_Manager('Source', 0, 1)) - __files_data.add_command(label = 'Remove Alpha Source Image', - command = lambda: File_Manager('Source', 0, 0)) + __files_data.add_command(label='Add Alpha Source Image', command=lambda: File_Manager('Source', 0, 1)) + __files_data.add_command(label='Remove Alpha Source Image', command=lambda: File_Manager('Source', 0, 0)) __files_data.add_separator() - __files_data.add_command(label = 'Add Material File', - command = lambda: File_Manager('Material', 0, 1)) - __files_data.add_command(label = 'Remove Material File', - command = lambda: File_Manager('Material', 0, 0)) - - # Abre o html de Help - self.menu.add_command(label = 'Help', command = lambda: wng.Help()) + __files_data.add_command(label='Add Material File', command=lambda: File_Manager('Material', 0, 1)) + __files_data.add_command(label='Remove Material File', command=lambda: File_Manager('Material', 0, 0)) + + # Help menu + self.menu.add_command(label='Help', command=lambda: warnings_manager.Help()) + + # About menu (opens README in browser) + self.menu.add_command( + label="About", + command=lambda: webbrowser.open( + 'https://github.com/AlexVnGit/GUI_thin_films/blob/master/README.md', new=1 + ) + ) - # Abre o link para o Readme - self.menu.add_command(label = "About", command = lambda: webbrowser.open( - 'https://github.com/AlexVnGit/GUI_thin_films/blob/master/README.md', new = 1)) - - def run(self): - #### O metodo que permite o programa manter-se aberto + """ + Starts the Tkinter main event loop to keep the application running. + """ self.main.mainloop() -############################################################################# -# A class dos avisos e popups. E facilmente reciclavel e versatil -############################################################################# +############################################################################## +# Warnings: Versatile class for creating popups and dialogs in the ARC-TF # +# GUI. Handles warning messages, image displays, settings dialogs, and help # +############################################################################## class Warnings: - def popup(self, name): + """ + Provides popup dialogs and utility windows for the ARC-TF GUI. + + Responsibilities: + - Display warning and information popups that must be closed before returning to the main window. + - Show decay chain images with optional source links. + - Present a settings dialog for adjusting general and algorithm-specific parameters. + - Display the help window with scrollable content. + + Methods: + popup(name): Opens a modal popup window with the given title. + Images(name, picture, site): Shows a decay chain image and optional source link. + Settings(): Opens the settings dialog for energy units, thickness units, and algorithm parameters. + Help(): Opens a scrollable help window with content from the help file. + + Notes: + - Uses self.warning, self.decay, self.configuration, and self.helping as Toplevel windows. + - Uses global window.main as the parent for all popups. + - Variable and method names are in English for clarity. + - Settings dialog supports applying changes to the current tab or all tabs. + + Attributes: + warning (tk.Toplevel): Popup window for warnings and selection menus. + decay (tk.Toplevel): Popup window for displaying decay chain images. + configuration (tk.Toplevel): Popup window for settings dialog. + helping (tk.Toplevel): Popup window for help content. - # A class cria poopups que tem que ser fechados antes de voltarem para o skeleton - # funciona bem para avisos, mas tambem para menus com opcoes obrigatorias de submeter - self.warning = tk.Toplevel(window.main) + Returns: + None + """ + def popup(self, name): + # Create a modal popup window with the given title + self.warning = tk.Toplevel(main_window.main) self.warning.title(name) self.warning.geometry('700x300') self.warning.grab_set() - def Images(self, name, picture, site): # Para as imagens dos decaimentos - - self.decay = tk.Toplevel(window.main) + def Images(self, name, picture, site): + # Display a decay chain image in a popup window, with optional source link + self.decay = tk.Toplevel(main_window.main) self.decay.title(name) self.decay.geometry('1000x600') - load = Image.open(picture) - load_resize = load.resize((700,500)) + load = Image.open(picture) + load_resize = load.resize((700, 500)) img = ImageTk.PhotoImage(load_resize) - label = tk.Label(self.decay, image = img) + label = tk.Label(self.decay, image=img) label.image = img label.pack() - site_label = tk.Label(self.decay, text = 'From: ' + site) + site_label = tk.Label(self.decay, text='From: ' + site) site_label.pack() def Settings(self): - + # Open the settings dialog for energy units, thickness units, and algorithm parameters num = Current_Tab() - self.configuration = tk.Toplevel(window.main) + self.configuration = tk.Toplevel(main_window.main) self.configuration.title('Settings') self.configuration.geometry('700x400') self.configuration.grab_set() - + self.parameter = ttk.Notebook(self.configuration) - self.parameter.pack(expand = True, fill = 'both') + self.parameter.pack(expand=True, fill='both') self.parameter.enable_traversal() self.general_tab = tk.Frame(self.parameter) self.algorithm_tab = tk.Frame(self.parameter) - self.parameter.add(self.general_tab, text = 'General Settings') - self.parameter.add(self.algorithm_tab, text = 'Algorithm Settings') + self.parameter.add(self.general_tab, text='General Settings') + self.parameter.add(self.algorithm_tab, text='Algorithm Settings') - self.general_tab.columnconfigure(0, weight = 1) - self.general_tab.columnconfigure(1, weight = 1) - self.general_tab.columnconfigure(2, weight = 1) + self.general_tab.columnconfigure(0, weight=1) + self.general_tab.columnconfigure(1, weight=1) + self.general_tab.columnconfigure(2, weight=1) - self.algorithm_tab.columnconfigure(0, weight = 1) - self.algorithm_tab.columnconfigure(1, weight = 1) - self.algorithm_tab.columnconfigure(2, weight = 1) - self.algorithm_tab.columnconfigure(3, weight = 1) + self.algorithm_tab.columnconfigure(0, weight=1) + self.algorithm_tab.columnconfigure(1, weight=1) + self.algorithm_tab.columnconfigure(2, weight=1) + self.algorithm_tab.columnconfigure(3, weight=1) + # Store current settings for cancel/restore self.energy_value = TabList[num][1].energy.get() self.unit_value = TabList[num][1].units.get() self.peak_interval = TabList[num][1].peaks_widths.get() @@ -1971,142 +2023,145 @@ def Settings(self): self.buttons_frame.pack() def close(choice): - + # Handle closing the settings dialog and applying/cancelling changes num = Current_Tab() - if choice == 0: - TabList[num][1].units.set(wng.unit_value) - TabList[num][1].energy.set(wng.energy_value) - TabList[num][1].peaks_widths.set(wng.peak_interval) - TabList[num][1].channels_cut.set(wng.cut_low_energy) - wng.configuration.destroy() - + # Cancel and restore previous values + TabList[num][1].units.set(warnings_manager.unit_value) + TabList[num][1].energy.set(warnings_manager.energy_value) + TabList[num][1].peaks_widths.set(warnings_manager.peak_interval) + TabList[num][1].channels_cut.set(warnings_manager.cut_low_energy) + warnings_manager.configuration.destroy() elif choice == 1: + # Apply to current tab only try: - TabList[num][1].peaks_widths.set(wng.entry2.get()) - TabList[num][1].channels_cut.set(wng.entry1.get()) - + TabList[num][1].peaks_widths.set(warnings_manager.entry2.get()) + TabList[num][1].channels_cut.set(warnings_manager.entry1.get()) except ValueError: - TabList[num][1].peaks_widths.set(wng.peak_interval) - TabList[num][1].channels_cut.set(wng.cut_low_energy) - - wng.configuration.destroy() - - elif choice == 2: + TabList[num][1].peaks_widths.set(warnings_manager.peak_interval) + TabList[num][1].channels_cut.set(warnings_manager.cut_low_energy) + warnings_manager.configuration.destroy() + elif choice == 2: + # Apply to all tabs and update global settings try: - TabList[num][1].peaks_widths.set(wng.entry2.get()) - TabList[num][1].channels_cut.set(wng.entry1.get()) - + TabList[num][1].peaks_widths.set(warnings_manager.entry2.get()) + TabList[num][1].channels_cut.set(warnings_manager.entry1.get()) except ValueError: - TabList[num][1].peaks_widths.set(wng.peak_interval) - TabList[num][1].channels_cut.set(wng.cut_low_energy) - + TabList[num][1].peaks_widths.set(warnings_manager.peak_interval) + TabList[num][1].channels_cut.set(warnings_manager.cut_low_energy) Energy_settings.set(TabList[num][1].energy.get()) Unit_settings.set(TabList[num][1].units.get()) - Channel_cut.set(TabList[num][1].channels_cut.get()) - Peak_Width.set(TabList[num][1].peaks_widths.get()) - - wng.configuration.destroy() - - ################################################ - - tk.Label(self.general_tab, text = ' ').grid(row = 0, - column = 0, pady = 10, padx = 10) - tk.Label(self.general_tab, text = 'Specify Energy Units').grid(row = 1, - column = 0, pady = 10, padx = 10) - tk.Label(self.general_tab, - text = 'Specify Thickness Units').grid(row = 1, column = 2, pady = 10, padx = 10) - - tk.Radiobutton(self.general_tab, text = 'kev', - variable = TabList[num][1].energy, value = 1).grid(row = 2, column = 0) - tk.Radiobutton(self.general_tab, text = 'Mev', - variable = TabList[num][1].energy, value = 1000).grid(row = 3, column = 0) - - tk.Radiobutton(self.general_tab, text = 'nm', - variable= TabList[num][1].units, value = 10.0**9).grid(row = 2, column = 2) - tk.Radiobutton(self.general_tab, text = '\u03bcm', - variable= TabList[num][1].units, value = 10.0**6).grid(row = 3, column = 2) - tk.Radiobutton(self.general_tab, text = '\u03bcg' + ' cm' + '{}'.format('\u207B' + '\u00b2'), - variable= TabList[num][1].units, value = 0.0).grid(row = 4, column = 2) - tk.Radiobutton(self.general_tab, text = '10' + '{}'.format('\u00b9' + '\u2075') + ' Atoms' + - ' cm' + '{}'.format('\u207B' + '\u00b3'), - variable= TabList[num][1].units, value = -1.0).grid(row = 5, column = 2) - - ######################################################################################## - - tk.Label(self.algorithm_tab, text = 'Threshold Input Algorithm Settings').grid( - row = 0, columnspan = 3, pady = 10) - tk.Label(self.algorithm_tab, text = 'Low Energy Cut: ').grid( - row = 1, column = 1, pady = 10) + Peak_Width.set(TabList[num][1].peaks_widths.get()) + warnings_manager.configuration.destroy() + + # General settings UI + tk.Label(self.general_tab, text=' ').grid(row=0, column=0, pady=10, padx=10) + tk.Label(self.general_tab, text='Specify Energy Units').grid(row=1, column=0, pady=10, padx=10) + tk.Label(self.general_tab, text='Specify Thickness Units').grid(row=1, column=2, pady=10, padx=10) + tk.Radiobutton(self.general_tab, text='kev', variable=TabList[num][1].energy, value=1).grid(row=2, column=0) + tk.Radiobutton(self.general_tab, text='Mev', variable=TabList[num][1].energy, value=1000).grid(row=3, column=0) + tk.Radiobutton(self.general_tab, text='nm', variable=TabList[num][1].units, value=10.0**9).grid(row=2, column=2) + tk.Radiobutton(self.general_tab, text='\u03bcm', variable=TabList[num][1].units, value=10.0**6).grid(row=3, column=2) + tk.Radiobutton(self.general_tab, text='\u03bcg cm\u207B\u00B2', variable=TabList[num][1].units, value=0.0).grid(row=4, column=2) + tk.Radiobutton(self.general_tab, text='10\u00b9\u2075 Atoms cm\u207B\u00b3', variable=TabList[num][1].units, value=-1.0).grid(row=5, column=2) + + # Algorithm settings UI + tk.Label(self.algorithm_tab, text='Threshold Input Algorithm Settings').grid(row=0, columnspan=3, pady=10) + tk.Label(self.algorithm_tab, text='Low Energy Cut: ').grid(row=1, column=1, pady=10) self.entry1 = tk.Entry(self.algorithm_tab) - self.entry1.grid(row = 1, column = 2, pady = 10) + self.entry1.grid(row=1, column=2, pady=10) self.entry1.insert(0, TabList[num][1].channels_cut.get()) - tk.Label(self.algorithm_tab, text = 'Approximate width of peaks: ').grid( - row = 2, column = 1, pady = 10) + tk.Label(self.algorithm_tab, text='Approximate width of peaks: ').grid(row=2, column=1, pady=10) self.entry2 = tk.Entry(self.algorithm_tab) - self.entry2.grid(row = 2, column = 2, pady = 10) + self.entry2.grid(row=2, column=2, pady=10) self.entry2.insert(0, TabList[num][1].peaks_widths.get()) - ######################################################################################## - - tk.Button(self.buttons_frame, text = 'Cancel and Return', command = lambda: - close(0)).grid(row = 1, column = 2, padx = 5, pady = 5) - tk.Button(self.buttons_frame, text = 'Apply to current Tab', command = lambda: - close(1)).grid(row = 1, column = 0, padx = 5, pady = 5) - tk.Button(self.buttons_frame, text = 'Apply to all Tabs', command = lambda: - close(2)).grid(row = 1, column = 1, padx = 5, pady = 5) + # Buttons for applying/cancelling settings + tk.Button(self.buttons_frame, text='Cancel and Return', command=lambda: close(0)).grid(row=1, column=2, padx=5, pady=5) + tk.Button(self.buttons_frame, text='Apply to current Tab', command=lambda: close(1)).grid(row=1, column=0, padx=5, pady=5) + tk.Button(self.buttons_frame, text='Apply to all Tabs', command=lambda: close(2)).grid(row=1, column=1, padx=5, pady=5) def Help(self): - + # Open the help window with scrollable content from the help file try: - wng.helping.destroy() - + warnings_manager.helping.destroy() except: pass - with open('Files\Help.txt', 'r') as OpenFile: # Abre (e fecha) o documento - lines = OpenFile.read() # Le os dados como string + with open('Files\\Help.txt', 'r') as OpenFile: + lines = OpenFile.read() - self.helping = tk.Toplevel(window.main) + self.helping = tk.Toplevel(main_window.main) self.helping.title('Help') - self.helping.resizable(0,0) + self.helping.resizable(0, 0) self.frame = tk.Frame(self.helping) - self.frame.pack(expand= True, fill= 'both') + self.frame.pack(expand=True, fill='both') self.canvas = tk.Canvas(self.frame) self.frame2 = tk.Frame(self.canvas) self.scrollbar = tk.Scrollbar(self.frame) - self.canvas.config(yscrollcommand = self.scrollbar.set, highlightthickness = 0 ) - self.scrollbar.config(orient = tk.VERTICAL, command = self.canvas.yview) - self.canvas.grid(row = 1, column = 0) - self.scrollbar.grid(row = 1, column = 2, sticky = 'ns') - self.scrollbar.place - self.canvas.create_window(0, 0, window = self.frame2, anchor = tk.NW) - self.frame2.bind('', - lambda e: self.canvas.configure( - scrollregion = self.canvas.bbox('all'), width = e.width)) - - menu = tk.Label(self.frame2, text = lines).grid() - -############################################################################ -# A class das Tabs. Inclui a estrutura propria do Notebook - widget de -# separadores; as tabs dos resultados e de adicionar tabs; e a estrutura que -# muda a forma de tabs de calibracao e materiais -############################################################################ + self.canvas.config(yscrollcommand=self.scrollbar.set, highlightthickness=0) + self.scrollbar.config(orient=tk.VERTICAL, command=self.canvas.yview) + self.canvas.grid(row=1, column=0) + self.scrollbar.grid(row=1, column=2, sticky='ns') + self.canvas.create_window(0, 0, window=self.frame2, anchor=tk.NW) + self.frame2.bind('', lambda e: self.canvas.configure( + scrollregion=self.canvas.bbox('all'), width=e.width)) + + tk.Label(self.frame2, text=lines).grid() + +############################################################################# +# Manages the tabbed interface (Notebook) for ARC-TF, including # +# creation, configuration, and management of calibration and material tabs. # +# Handles the layout and variable setup for each tab, as well as tab events.# +############################################################################# class Tabs: + """ + Manages the tabbed interface (Notebook) for the ARC-TF GUI. + + Responsibilities: + - Creates and configures the main Notebook widget for tabbed navigation. + - Sets up the initial "Final Results" and "+" (add tab) tabs. + - Handles creation and layout of calibration and material analysis tabs. + - Manages tab-specific frames (graphics, data, source, algorithm, results, etc.). + - Initializes and tracks all variables needed for each tab (e.g., algorithm settings, ROI, regression, etc.). + - Handles tab events (adding, removing, renaming, switching). + - Provides static methods for tab management and renaming. - Counter_Mat = 0 - Counter_Calib = 0 + Notes: + - Uses both English and Portuguese variable names for legacy and clarity. + - Some variable names (e.g., value, index) could be more descriptive. + - Some code repetition exists in tab creation (could be refactored for DRY). + - All tab-specific variables are initialized per tab instance for isolation. + - Comments clarify the structure and intent of each section. + + Attributes: + material_tab_counter (int): Counter for material tabs. + calibration_tab_counter (int): Counter for calibration tabs. + notebook (ttk.Notebook): The main tabbed widget. + value (int): Tracks the number of tabs. + [Many per-tab attributes for frames, variables, and controls.] + + Methods: + First_Tabs(): Initializes the main Notebook and result frames. + AnalysisTab(choice): Sets up a calibration or material analysis tab. + tab_change(num): Static method to add/remove/switch tabs. + RenameTab(name): Static method to rename a tab. + + Returns: + None + """ + material_tab_counter = 0 + calibration_tab_counter = 0 def First_Tabs(self): - ####### A variavel do Notebook ########## - self.notebook = ttk.Notebook(window.main) - self.notebook.pack(expand = True, fill = 'both') # Expande a frame da tab ate ao final - # da janela - self.notebook.enable_traversal() # Permite o uso de Ctrl+Tab para circular entre tabs + # Create the main Notebook widget for tab navigation + self.notebook = ttk.Notebook(main_window.main) + self.notebook.pack(expand = True, fill = 'both') # Expand the notebook to fill the window + self.notebook.enable_traversal() # Enable Ctrl+Tab navigation - ########### As frames principais - Os resultados e a frame de adicionar + # Main frames: results and add-tab frame self.CRFrame = tk.Frame(self.notebook, bg = 'dark grey') self.PlusFrame = tk.Frame(self.notebook, bg = 'dark grey') self.CRFrame.columnconfigure(0, weight = 3) @@ -2114,11 +2169,11 @@ def First_Tabs(self): self.CRFrame.rowconfigure(0, weight = 3) self.CRFrame.rowconfigure(1, weight = 3) - ############# Aqui adicionam-se as frames iniciadas acima + # Add the main frames to the notebook self.notebook.add(self.CRFrame, text = 'Final Results') self.notebook.add(self.PlusFrame, text = '+') - ############# Frames onde irao ser inseridos os resultados finais e scrollbars + # Frames for displaying final results and scrollbars self.Calib_Result = tk.Frame(self.CRFrame, borderwidth = 5, relief = 'ridge') self.Calib_Result.grid(row = 0, column = 0, pady = 10, padx = 30, sticky = 'nw', rowspan = 2) self.Calib_Result.columnconfigure(0, weight = 3) @@ -2166,30 +2221,30 @@ def First_Tabs(self): lambda e: self.mat_canvas.configure( scrollregion = self.mat_canvas.bbox('all'), width = e.width)) - ########### Variavel para contar o numero de separadores + # Variable to count the number of analysis tabs self.value = 0 - ############ Este comando adiciona o evento a funcao, para adicionar frames + # Bind the tab change event to handle adding new tabs self.notebook.bind("<>", handleTabChange) - def AnalysisTab(self, choice): + def AnalysisTab(self, tab_kind): ### Configuracao de geometria e Frames comuns a Calib e Material Tabs #### - TabList[Notebook.value][0].columnconfigure(0, weight = 4) - TabList[Notebook.value][0].columnconfigure(1, weight = 1) - TabList[Notebook.value][0].rowconfigure(0, weight = 1) - TabList[Notebook.value][0].rowconfigure(1, weight = 1) + TabList[tab_manager.value][0].columnconfigure(0, weight = 4) + TabList[tab_manager.value][0].columnconfigure(1, weight = 1) + TabList[tab_manager.value][0].rowconfigure(0, weight = 1) + TabList[tab_manager.value][0].rowconfigure(1, weight = 1) - self.GraphicFrame = tk.Frame(TabList[Notebook.value][0], borderwidth = 5, relief = 'ridge') + self.GraphicFrame = tk.Frame(TabList[tab_manager.value][0], borderwidth = 5, relief = 'ridge') self.GraphicFrame.grid(column = 0, row = 0, sticky = "nw", pady = 5, columnspan = 2) - self.DataFrame = tk.Frame(TabList[Notebook.value][0], borderwidth = 5, relief = 'ridge') + self.DataFrame = tk.Frame(TabList[tab_manager.value][0], borderwidth = 5, relief = 'ridge') self.DataFrame.grid(column = 2, row = 0, sticky = "ne", pady = 5) - self.SourceFrame = tk.Frame(TabList[Notebook.value][0], borderwidth = 5, relief = 'ridge') + self.SourceFrame = tk.Frame(TabList[tab_manager.value][0], borderwidth = 5, relief = 'ridge') self.SourceFrame.grid(column = 1, row = 0, sticky = "ne", pady = 5) - self.Extra_Frame = tk.Frame(TabList[Notebook.value][0], borderwidth = 5, relief = 'ridge') + self.Extra_Frame = tk.Frame(TabList[tab_manager.value][0], borderwidth = 5, relief = 'ridge') self.AlgFrame = tk.Frame(self.DataFrame, borderwidth = 0) self.AlgFrame.grid(row = 2, columnspan = 2, pady = 5) @@ -2282,8 +2337,7 @@ def AnalysisTab(self, choice): self.Var_Data = [ self.variable1, self.variable2, self.variable3, self.variable4, self.variable5, self.variable6, self.variable7, self.variable8, self.variable9, self.variable10, - self.variable11, self.variable12, self.variable13, self.variable14, self.variable15 - ] + self.variable11, self.variable12, self.variable13, self.variable14, self.variable15] tk.Label(self.DataFrame, text = 'Analysis Method Selected: ').grid(row = 0, columnspan = 2) Algs = ["Manual Selection", "Threshold Input", "ROI Select"] @@ -2371,72 +2425,75 @@ def CalibTab(self): self.SourceOptionsFrame.grid(row = 2, columnspan = 2) self.LinearRegressionFrame = tk.Frame(self.SourceFrame, borderwidth = 1) - if choice == 1: + if tab_kind == 1: CalibTab(self) - elif choice == 2: + elif tab_kind == 2: MatTab(self) @staticmethod def tab_change(num): - + """ + Handles adding, removing, and switching tabs in the Notebook. + tab_type: 1 = add calibration, 2 = add material, 3 = cancel, 4 = remove current + """ value = Current_Tab() - index = len(Notebook.notebook.tabs()) - 1 + index = len(tab_manager.notebook.tabs()) - 1 if num == 1: - Tabs.Counter_Calib -= 1 - Data = "Temp\Data" + str(Tabs.Counter_Calib) + ".txt" - Analysis = "Temp\Analysis" + str(Tabs.Counter_Calib) + ".txt" - Result = "Temp\Result" + str(Tabs.Counter_Calib) + ".txt" - ROIs = "Temp\ROIs" + str(Tabs.Counter_Calib) + ".txt" - TabList.append([tk.Frame(Notebook.notebook, bg = 'dark grey'), Tabs(), Data, + Tabs.calibration_tab_counter -= 1 + Data = "Temp\Data" + str(Tabs.calibration_tab_counter) + ".txt" + Analysis = "Temp\Analysis" + str(Tabs.calibration_tab_counter) + ".txt" + Result = "Temp\Result" + str(Tabs.calibration_tab_counter) + ".txt" + ROIs = "Temp\ROIs" + str(Tabs.calibration_tab_counter) + ".txt" + TabList.append([tk.Frame(tab_manager.notebook, bg = 'dark grey'), Tabs(), Data, Analysis, Result, Plot(), ROIs]) - TabTracker.append(Tabs.Counter_Calib) - TabList[Notebook.value][1].AnalysisTab(1) - Notebook.notebook.insert(index, TabList[Notebook.value][0], - text = "Calibration Trial " + str(-Tabs.Counter_Calib)) - Notebook.notebook.select(index) - Notebook.value += 1 + TabTracker.append(Tabs.calibration_tab_counter) + TabList[tab_manager.value][1].AnalysisTab(1) + tab_manager.notebook.insert(index, TabList[tab_manager.value][0], + text = "Calibration Trial " + str(-Tabs.calibration_tab_counter)) + tab_manager.notebook.select(index) + tab_manager.value += 1 try: - wng.warning.destroy() + warnings_manager.warning.destroy() except: () elif num == 2: - Tabs.Counter_Mat += 1 - Data = "Temp\Data" + str(Tabs.Counter_Mat) + ".txt" - Analysis = "Temp\Analysis" + str(Tabs.Counter_Mat) + ".txt" - Result = "Temp\Result" + str(Tabs.Counter_Mat) + ".txt" - ROIs = "Temp\ROIs" + str(Tabs.Counter_Mat) + ".txt" - TabList.append([tk.Frame(Notebook.notebook, bg = 'dark grey'), Tabs(), Data, + Tabs.material_tab_counter += 1 + Data = "Temp\Data" + str(Tabs.material_tab_counter) + ".txt" + Analysis = "Temp\Analysis" + str(Tabs.material_tab_counter) + ".txt" + Result = "Temp\Result" + str(Tabs.material_tab_counter) + ".txt" + ROIs = "Temp\ROIs" + str(Tabs.material_tab_counter) + ".txt" + TabList.append([tk.Frame(tab_manager.notebook, bg = 'dark grey'), Tabs(), Data, Analysis, Result, Plot(), ROIs]) - TabTracker.append(Tabs.Counter_Mat) - TabList[Notebook.value][1].AnalysisTab(2) - Notebook.notebook.insert(index, TabList[Notebook.value][0], - text = "Material Trial " + str(Tabs.Counter_Mat)) - Notebook.notebook.select(index) - Notebook.value += 1 + TabTracker.append(Tabs.material_tab_counter) + TabList[tab_manager.value][1].AnalysisTab(2) + tab_manager.notebook.insert(index, TabList[tab_manager.value][0], + text = "Material Trial " + str(Tabs.material_tab_counter)) + tab_manager.notebook.select(index) + tab_manager.value += 1 try: - wng.warning.destroy() + warnings_manager.warning.destroy() except: () elif num == 3: - Notebook.notebook.select(index - 1) - wng.warning.destroy() + tab_manager.notebook.select(index - 1) + warnings_manager.warning.destroy() elif num == 4: - if Notebook.notebook.select() == '.!notebook.!frame' or Notebook.notebook.select() == '.!notebook.!frame2': - wng.popup('Bad Tab Deletion') - tk.Label(wng.warning, text = '\n This Tab cannot be deleted.\nPlease delete Analysis Tabs').pack() - tk.Label(wng.warning, text = '\n\n').pack() - tk.Button(wng.warning, text = 'Return', command = lambda: wng.warning.destroy()).pack() + if tab_manager.notebook.select() == '.!notebook.!frame' or tab_manager.notebook.select() == '.!notebook.!frame2': + warnings_manager.popup('Bad Tab Deletion') + tk.Label(warnings_manager.warning, text = '\n This Tab cannot be deleted.\nPlease delete Analysis Tabs').pack() + tk.Label(warnings_manager.warning, text = '\n\n').pack() + tk.Button(warnings_manager.warning, text = 'Return', command = lambda: warnings_manager.warning.destroy()).pack() else: - Notebook.notebook.forget("current") - Notebook.notebook.select(index - 2) + tab_manager.notebook.forget("current") + tab_manager.notebook.select(index - 2) if os.path.isfile(TabList[value][2]) == True: os.remove(TabList[value][2]) @@ -2447,7 +2504,7 @@ def tab_change(num): TabList.pop(value) - Notebook.value -= 1 + tab_manager.value -= 1 TabTracker.pop(value) ClearWidget('Final', 0) Final_Results(0) @@ -2455,148 +2512,184 @@ def tab_change(num): def RenameTab(name): tab_num = Current_Tab() - Notebook.notebook.tab(tab_num+1, text = str(name)) + tab_manager.notebook.tab(tab_num+1, text = str(name)) return - - - + +########################################################################### +# Handles data loading, plotting, and graphical updates for ARC-TF. # +# This class reads external data files, inserts plots into the main GUI # +# frame, and manages plot overlays (e.g., threshold lines). # ########################################################################### -# Esta classe recebe os dados dos ficheiros externos -# e insere os graficos na frame grande do GUI. -# Ao mesmo tempo cria um txt para outras funções -# acederem aos dados -# Se estiver selecionado o threshold input, mostra uma linha do valor -############################################################################ class Plot: + """ + Handles data loading, plotting, and graphical updates for the ARC-TF GUI. - def Structure(self, File, Name): + Responsibilities: + - Reads data from external files and prepares it for plotting. + - Inserts the plot into the main graphic frame of the GUI. + - Creates a temporary text file for other functions to access the data. + - Displays a threshold line if the threshold input algorithm is selected. + - Provides methods to update, clear, or overlay lines on the plot. + + Methods: + Structure(File, Name): Loads data from file, processes channels and counts, updates GUI. + subplots(): Plots the data (channels vs. counts) and sets up axes and event handlers. + destroyer(): Removes the last overlay line from the plot (e.g., threshold line). + threshold(height): Draws a horizontal threshold line at the specified height. - self.Channel = [] #Lista vazia para guardar o Channel - self.Counts = [] #Lista vazia para guardar os Counts + Notes: + - Uses matplotlib for plotting and FigureCanvasTkAgg for embedding in Tkinter. + - Variable names are now in English for clarity. + - Comments explain each step of the plotting and data handling process. + - No unnecessary code detected; logic is clear and concise. + + Attributes: + Channel (list): List of channel indices (x-axis). + Counts (list): List of count values (y-axis). + line (list): List of overlay lines (e.g., threshold lines). + Title (str): Title for the plot, set based on tab type. + figure (Figure): Matplotlib Figure object for the plot. + figure_canvas (FigureCanvasTkAgg): Canvas for embedding the plot in Tkinter. + axes (Axes): Matplotlib Axes object for plotting. + """ + def Structure(self, File, Name): + # Initialize lists for channel and counts + self.Channel = [] + self.Counts = [] self.line = [] num = Current_Tab() total_sum = 0 j = 0 + # Clear previous plot and set up the graphic frame ClearWidget('Graphic', 0) - TabList[num][1].GraphicFrame.grid(column = 0, row = 0, sticky = "nw", pady = 5, columnspan = 2) + TabList[num][1].GraphicFrame.grid(column=0, row=0, sticky="nw", pady=5, columnspan=2) + # Open the data file for writing processed counts Data = open(TabList[num][2], "w") - if Name[-4:] == ".mca": #Por enquanto esta configurado para os ficheiros - # da maquina para AEL. Se for configurado RBS - #ha-de-se incluir outro if. - for i in range(12, len(File) - 1): #### FOI ALTERADO POR CAUSA DA ROI NOS FICHEIROS !!!!!! + # If the file is an .mca file, process accordingly (specific to AEL machine format) + if Name[-4:] == ".mca": + for i in range(12, len(File) - 1): self.Counts.append(int(File[i])) - total_sum = total_sum + self.Counts[j] - self.Channel.append(i-11) #### FOI ALTERADO POR CAUSA DA ROI NOS FICHEIROS !!!!!! - Data.write(str(self.Counts[i-12])+"\n") #### FOI ALTERADO POR CAUSA DA ROI NOS FICHEIROS !!!!!! + total_sum += self.Counts[j] + self.Channel.append(i - 11) + Data.write(str(self.Counts[i - 12]) + "\n") j += 1 - # Ciclo for para adquirir os valores dos dados - Data.close() + # Update total counts and display in the extra frame TabList[num][1].Total_Counts.set(total_sum) - TabList[num][1].Extra_Frame.grid(column = 0, row = 1, sticky = "nw") - tk.Label(TabList[num][1].Extra_Frame, text = TabList[num][1].Real_Time.get()).grid(row = 0) - tk.Label(TabList[num][1].Extra_Frame, text = 'Total Sum of Counts is: ' + - str(TabList[num][1].Total_Counts.get())).grid(row = 1) + TabList[num][1].Extra_Frame.grid(column=0, row=1, sticky="nw") + tk.Label(TabList[num][1].Extra_Frame, text=TabList[num][1].Real_Time.get()).grid(row=0) + tk.Label(TabList[num][1].Extra_Frame, text='Total Sum of Counts is: ' + + str(TabList[num][1].Total_Counts.get())).grid(row=1) + # Set plot title based on tab type if TabTracker[num] < 0: self.Title = 'Calibration Trial ' + str(-TabTracker[num]) - - elif TabTracker[num] > 0: + elif TabTracker[num] > 0: self.Title = 'Material Trial ' + str(TabTracker[num]) - - self.figure = Figure(figsize = (6,4), dpi = 100) #A figura contem o grafico - self.figure_canvas = FigureCanvasTkAgg(self.figure, TabList[num][1].GraphicFrame) #A class FigureCanvasTkAgg - #liga o matplotlib ao tkinter - - NavigationToolbar2Tk(self.figure_canvas, TabList[num][1].GraphicFrame) # Esta linha permite que as ferramentas - #do matplotlip aparecam na interface do tkinter + # Create the matplotlib figure and embed it in the Tkinter frame + self.figure = Figure(figsize=(6, 4), dpi=100) + self.figure_canvas = FigureCanvasTkAgg(self.figure, TabList[num][1].GraphicFrame) + NavigationToolbar2Tk(self.figure_canvas, TabList[num][1].GraphicFrame) def subplots(self): - #Aqui inicia-se o grafico com os dados e os eixos - - self.axes = self.figure.add_subplot() - self.axes.plot(self.Channel, self.Counts, '.', markersize = 7, label = 'Run') + # Create the plot with channels on x-axis and counts on y-axis + self.axes = self.figure.add_subplot() + self.axes.plot(self.Channel, self.Counts, '.', markersize=7, label='Run') self.axes.set_title(self.Title) self.axes.set_xlabel('Channel') self.axes.set_ylabel('Counts') + # Connect mouse click event for manual selection self.figure.canvas.mpl_connect('button_press_event', onclick) - #Por fim, acrescenta-se a geometria do tkinter + # Pack the plot widget into the Tkinter frame self.figure_canvas.get_tk_widget().pack() def destroyer(self): - + # Remove the last overlay line (e.g., threshold line) from the plot if self.line: self.line.pop().remove() self.figure_canvas.draw() def threshold(self, height): - + # Draw a horizontal threshold line at the specified height if self.line: self.line.pop().remove() - - self.line.append(self.axes.axhline(y = height, color = 'r', linestyle = '-')) + self.line.append(self.axes.axhline(y=height, color='r', linestyle='-')) self.figure_canvas.draw() ############################################################################ -Dir = os.scandir('Files\Sources\Values') +# Initialize source and material lists by scanning the relevant directories # +############################################################################ + +# Scan the directory for alpha source value files and populate source_list +source_values_dir = os.scandir(os.path.join('Files', 'Sources', 'Values')) source_list = [] -for entry in Dir: +for entry in source_values_dir: if entry.is_file(): - temp = (os.path.splitext(entry.name)) - source_list.append(temp[0]) + name, _ = os.path.splitext(entry.name) + source_list.append(name) -Dir = os.scandir('Files\Materials') +# Scan the directory for material files and populate materials_list +materials_dir = os.scandir(os.path.join('Files', 'Materials')) materials_list = [] -for entry in Dir: +for entry in materials_dir: if entry.is_file(): - temp = (os.path.splitext(entry.name)) - materials_list.append(temp[0]) + name, _ = os.path.splitext(entry.name) + materials_list.append(name) + +############################################################################ +# Initialize main application components and global variables # +############################################################################ -############ Variaveis Estruturais ############################# -wng = Warnings() -window = Skeleton() -Notebook = Tabs() -Notebook.First_Tabs() +# Instantiate main utility classes +warnings_manager = Warnings() +main_window = Skeleton() +tab_manager = Tabs() +tab_manager.First_Tabs() -############## Tabs variaveis para serem criadas ############### +# Lists to keep track of tab objects and their types (calibration/material) TabList = [] TabTracker = [] -Energy_settings = tk.IntVar() -Energy_settings.set(1000) -Unit_settings = tk.DoubleVar() -Unit_settings.set((10**9)) +# Global settings for energy, units, channel cut, and peak width +Energy_settings = tk.IntVar(value=1000) +Unit_settings = tk.DoubleVar(value=1e9) +Channel_cut = tk.IntVar(value=100) +Peak_Width = tk.IntVar(value=35) + +############################################################################ +# Start the application: create the first calibration tab and run the GUI # +############################################################################ -Channel_cut = tk.IntVar() -Channel_cut.set(100) +Tabs.tab_change(1) # Add initial calibration tab +tab_manager.notebook.select(1) # Select the first analysis tab -Peak_Width = tk.IntVar() -Peak_Width.set(35) +# Create a temporary directory for storing intermediate files +if not os.path.exists('Temp'): + os.mkdir('Temp') -############################################################################################# -Tabs.tab_change(1) -Notebook.notebook.select(1) +main_window.run() # Start the Tkinter main event loop -os.mkdir('Temp') # Pasta onde serao guardados os ficheiros temporarios -window.run() -############################################################################################## +############################################################################ +# Cleanup: Remove temporary files and directory after the application exits # +############################################################################ -for i in range(Notebook.value): - if os.path.isfile(TabList[i][2]) == True: - os.remove(TabList[i][2]) # Apaga os dados adquiridos quando se faz plot - if os.path.isfile(TabList[i][3]) == True: - os.remove(TabList[i][3]) # Apaga os dados dos resultados dos algoritmos - if os.path.isfile(TabList[i][4]) == True: - os.remove(TabList[i][4]) # Apaga os resultados das regressoes lineares +# Remove all temporary files created for each tab +for i in range(tab_manager.value): + for file_index in [2, 3, 4]: # Data, Algorithm Results, Regression Results + temp_file = TabList[i][file_index] + if os.path.isfile(temp_file): + os.remove(temp_file) -os.rmdir('Temp') # Apaga a pasta Temp \ No newline at end of file +# Remove the temporary directory if it exists +if os.path.isdir('Temp'): + os.rmdir('Temp') \ No newline at end of file From fc7d023f5ebfd77b843074447e61c23f4759b8ab Mon Sep 17 00:00:00 2001 From: RiPires Date: Mon, 7 Jul 2025 18:31:48 +0100 Subject: [PATCH 14/44] Code review: * hard-fixing conflicts from previous merge with the "review" branch; * tested - it works as before; --- ARC-TF.py | 29 ++++++++--------------------- 1 file changed, 8 insertions(+), 21 deletions(-) diff --git a/ARC-TF.py b/ARC-TF.py index 1d29bec..9c9f13a 100644 --- a/ARC-TF.py +++ b/ARC-TF.py @@ -30,17 +30,20 @@ from shutil import copy2 import numpy as np import ctypes +import sys from Include.Analyze import* from Include.Calibration import* from Include.FitData import* from Include.Eloss import* from Include.Thick import* +from Include.remove_file import* +from Include.clear_frame import* - -########## Ajusta-se ao ecra e foca os widgets - Windows ###### -import sys -import ctypes +############################################### +# Handles display scaling # +# works on Windows 10/11 and Linux/Kubuntu # +############################################### # Adjust DPI awareness on Windows only if sys.platform == "win32": @@ -48,6 +51,7 @@ ctypes.windll.shcore.SetProcessDpiAwareness(1) except Exception as e: print(f"Warning: DPI awareness setting failed: {e}") + ########################################################### # Returns the index of the Tab the user is on ########################################################### @@ -1646,23 +1650,6 @@ def File_Manager(Choice, Nature, Action): tk.Button(warnings_manager.warning, command=lambda: warnings_manager.warning.destroy(), text='Return').pack() # Update source_list after changes - Dir = os.scandir(os.path.join('Files', 'Sources', 'Values')) - temp = (os.path.splitext(entry.name)) - name_list.append(temp[0]) - delete_list.append(tk.IntVar()) - - tk.Label(wng.warning, text = 'Files available for deletion\n').pack() - - for i in range(0, len(name_list)): - tk.Checkbutton(wng.warning, text = name_list[i], variable = delete_list[i], - onvalue = 1, offvalue = 0).pack() - - tk.Button(wng.warning, command = lambda: Delete(delete_list, name_list, domain, '.txt'), - text = 'Delete Files').pack() - - tk.Button(wng.warning, command = lambda: wng.warning.destroy(), - text = 'Return').pack() - Dir = os.scandir(os.path.join('Files', 'Sources', 'Values')) source_list.clear() for entry in Dir: From 1a3ebd0578c0e86ac1a43519a1a85bff18a693c0 Mon Sep 17 00:00:00 2001 From: RiPires Date: Fri, 11 Jul 2025 18:04:43 +0100 Subject: [PATCH 15/44] Updated headers --- ARC-TF.py | 81 ++++++++++++++++++++++++------------------ Include/clear_frame.py | 42 ++++++++++++++-------- Include/remove_file.py | 43 ++++++++++++++-------- 3 files changed, 102 insertions(+), 64 deletions(-) diff --git a/ARC-TF.py b/ARC-TF.py index 9c9f13a..4f43baf 100644 --- a/ARC-TF.py +++ b/ARC-TF.py @@ -1,18 +1,30 @@ -#################################################################################################### -## ## -## ARC-TF stands for Alpha particles' energy loss and Rutherford backscattering ## -## spectrometry methods for Characterization of Thin Films. ## -## ## -## ARC-TF is a GUI (Guided User Interface) intended to expedite the process of ## -## characterizing thin films, via an interface with ease of use, and backend ## -## algorithms that accelerate the data analysis. ## -## ## -## This project is the result of a LIP Summer Internship, within the NUC-RIA group. ## -## A publication resulting from the internship, resuming the work taken to develop ## -## the first version of ARC-TF, can be searched for by the reference LIP-STUDENTS-23-15. ## -## Directly available at https://www.lip.pt/files/training/papers/2023/pdf/2023-PAPER-179-15.pdf ## -## ## -#################################################################################################### +########################################################################################################## +## ## +## ARC-TF stands for Alpha particles' energy loss and Rutherford backscattering ## +## spectrometry methods for Characterization of Thin Films. ## +## ## +## ARC-TF is a Python based GUI (Guided User Interface) intended to expedite the process of ## +## characterizing thin films, via an interface with ease of use, and backend algorithms that ## +## accelerate the data analysis. ## +## ## +## This project is the result of a LIP Summer Internship, within the NUC-RIA group. ## +## A publication resulting from the internship, resuming the work taken to develop ## +## the first version of ARC-TF, can be searched for by the reference LIP-STUDENTS-23-15. ## +## Directly available at https://www.lip.pt/files/training/papers/2023/pdf/2023-PAPER-179-15.pdf. ## +## ## +## Authors: Alexandre Gusmão (1), alex_vng@hotmail.com, https://github.com/AlexVnGit ## +## Ricardo Matoza Pires (1,2), rpires@lip.pt, https://github.com/RiPires ## +## Tomás Campante Tavares (1,2), tmctavares@lip.pt, https://github.com/TomasCampante ## +## ## +## (1) Faculty of Sciences of the Universty of Lisbon (FCUL), ## +## Rua Ernesto de Vasconcelos, 1749-016 Lisboa, Portugal, ## +## Building C8, 5th floor, room 8.5.15 ## +## ## +## (2) Laboratory of Instrumentation and Experimental Particle Physics (LIP) ## +## NUC-RIA group (Nuclear Reactions, Instrumentation and Astrophysics) ## +## Av. Prof. Gama Pinto, 2, 1649-003 Lisboa, Portugal ## +## ## +########################################################################################################## ## ------------------------------- Import necessary librarires ---------------------------------- ## import tkinter as tk @@ -39,11 +51,12 @@ from Include.Thick import* from Include.remove_file import* from Include.clear_frame import* +## ---------------------------------------------------------------------------------------------- ## -############################################### -# Handles display scaling # -# works on Windows 10/11 and Linux/Kubuntu # -############################################### +##################################################### +# Handles display scaling # +# works on Windows 10/11 and Linux/Kubuntu 20.04 # +##################################################### # Adjust DPI awareness on Windows only if sys.platform == "win32": @@ -52,9 +65,9 @@ except Exception as e: print(f"Warning: DPI awareness setting failed: {e}") -########################################################### -# Returns the index of the Tab the user is on -########################################################### +################################################ +# Returns the index of the Tab the user is on # +################################################ def Current_Tab(): """ Returns the ID of the tab where the user is on, @@ -69,10 +82,10 @@ def Current_Tab(): else: return tabID -######################################################################################### -# Clears and resets specific UI frames and associated data files depending on the -# type of frame specified. -######################################################################################### +##################################################################### +# Clears and resets specific UI frames and associated data files # +# depending on the type of frame specified # +##################################################################### def ClearWidget(Frame, parameter): """ Function: ClearWidget @@ -2636,9 +2649,9 @@ def threshold(self, height): self.line.append(self.axes.axhline(y=height, color='r', linestyle='-')) self.figure_canvas.draw() -############################################################################ +############################################################################# # Initialize source and material lists by scanning the relevant directories # -############################################################################ +############################################################################# # Scan the directory for alpha source value files and populate source_list source_values_dir = os.scandir(os.path.join('Files', 'Sources', 'Values')) @@ -2658,9 +2671,9 @@ def threshold(self, height): name, _ = os.path.splitext(entry.name) materials_list.append(name) -############################################################################ +############################################################################# # Initialize main application components and global variables # -############################################################################ +############################################################################# # Instantiate main utility classes warnings_manager = Warnings() @@ -2678,9 +2691,9 @@ def threshold(self, height): Channel_cut = tk.IntVar(value=100) Peak_Width = tk.IntVar(value=35) -############################################################################ +############################################################################# # Start the application: create the first calibration tab and run the GUI # -############################################################################ +############################################################################# Tabs.tab_change(1) # Add initial calibration tab tab_manager.notebook.select(1) # Select the first analysis tab @@ -2691,9 +2704,9 @@ def threshold(self, height): main_window.run() # Start the Tkinter main event loop -############################################################################ +############################################################################# # Cleanup: Remove temporary files and directory after the application exits # -############################################################################ +############################################################################# # Remove all temporary files created for each tab for i in range(tab_manager.value): diff --git a/Include/clear_frame.py b/Include/clear_frame.py index b1a5b47..26f789a 100644 --- a/Include/clear_frame.py +++ b/Include/clear_frame.py @@ -1,18 +1,30 @@ -#################################################################################################### -## ## -## ARC-TF stands for Alpha particles' energy loss and Rutherford backscattering ## -## spectrometry methods for Characterization of Thin Films. ## -## ## -## ARC-TF is a GUI (Guided User Interface) intended to expedite the process of ## -## characterizing thin films, via an interface with ease of use, and backend ## -## algorithms that accelerate the data analysis. ## -## ## -## This project is the result of a LIP Summer Internship, within the NUC-RIA group. ## -## A publication resulting from the internship, resuming the work taken to develop ## -## the first version of ARC-TF, can be searched for by the reference LIP-STUDENTS-23-15. ## -## Directly available at https://www.lip.pt/files/training/papers/2023/pdf/2023-PAPER-179-15.pdf ## -## ## -#################################################################################################### +########################################################################################################## +## ## +## ARC-TF stands for Alpha particles' energy loss and Rutherford backscattering ## +## spectrometry methods for Characterization of Thin Films. ## +## ## +## ARC-TF is a Python based GUI (Guided User Interface) intended to expedite the process of ## +## characterizing thin films, via an interface with ease of use, and backend algorithms that ## +## accelerate the data analysis. ## +## ## +## This project is the result of a LIP Summer Internship, within the NUC-RIA group. ## +## A publication resulting from the internship, resuming the work taken to develop ## +## the first version of ARC-TF, can be searched for by the reference LIP-STUDENTS-23-15. ## +## Directly available at https://www.lip.pt/files/training/papers/2023/pdf/2023-PAPER-179-15.pdf. ## +## ## +## Authors: Alexandre Gusmão (1), alex_vng@hotmail.com, https://github.com/AlexVnGit ## +## Ricardo Matoza Pires (1,2), rpires@lip.pt, https://github.com/RiPires ## +## Tomás Campante Tavares (1,2), tmctavares@lip.pt, https://github.com/TomasCampante ## +## ## +## (1) Faculty of Sciences of the Universty of Lisbon (FCUL), ## +## Rua Ernesto de Vasconcelos, 1749-016 Lisboa, Portugal, ## +## Building C8, 5th floor, room 8.5.15 ## +## ## +## (2) Laboratory of Instrumentation and Experimental Particle Physics (LIP) ## +## NUC-RIA group (Nuclear Reactions, Instrumentation and Astrophysics) ## +## Av. Prof. Gama Pinto, 2, 1649-003 Lisboa, Portugal ## +## ## +########################################################################################################## def clear_frame(frame, remove_grid=True): """Destroy all widgets in the given frame and optionally remove it from the grid.""" diff --git a/Include/remove_file.py b/Include/remove_file.py index a1aed50..ea18076 100644 --- a/Include/remove_file.py +++ b/Include/remove_file.py @@ -1,18 +1,31 @@ -#################################################################################################### -## ## -## ARC-TF stands for Alpha particles' energy loss and Rutherford backscattering ## -## spectrometry methods for Characterization of Thin Films. ## -## ## -## ARC-TF is a GUI (Guided User Interface) intended to expedite the process of ## -## characterizing thin films, via an interface with ease of use, and backend ## -## algorithms that accelerate the data analysis. ## -## ## -## This project is the result of a LIP Summer Internship, within the NUC-RIA group. ## -## A publication resulting from the internship, resuming the work taken to develop ## -## the first version of ARC-TF, can be searched for by the reference LIP-STUDENTS-23-15. ## -## Directly available at https://www.lip.pt/files/training/papers/2023/pdf/2023-PAPER-179-15.pdf ## -## ## -#################################################################################################### +########################################################################################################## +## ## +## ARC-TF stands for Alpha particles' energy loss and Rutherford backscattering ## +## spectrometry methods for Characterization of Thin Films. ## +## ## +## ARC-TF is a Python based GUI (Guided User Interface) intended to expedite the process of ## +## characterizing thin films, via an interface with ease of use, and backend algorithms that ## +## accelerate the data analysis. ## +## ## +## This project is the result of a LIP Summer Internship, within the NUC-RIA group. ## +## A publication resulting from the internship, resuming the work taken to develop ## +## the first version of ARC-TF, can be searched for by the reference LIP-STUDENTS-23-15. ## +## Directly available at https://www.lip.pt/files/training/papers/2023/pdf/2023-PAPER-179-15.pdf. ## +## ## +## Authors: Alexandre Gusmão (1), alex_vng@hotmail.com, https://github.com/AlexVnGit ## +## Ricardo Matoza Pires (1,2), rpires@lip.pt, https://github.com/RiPires ## +## Tomás Campante Tavares (1,2), tmctavares@lip.pt, https://github.com/TomasCampante ## +## ## +## (1) Faculty of Sciences of the Universty of Lisbon (FCUL), ## +## Rua Ernesto de Vasconcelos, 1749-016 Lisboa, Portugal, ## +## Building C8, 5th floor, room 8.5.15 ## +## ## +## (2) Laboratory of Instrumentation and Experimental Particle Physics (LIP) ## +## NUC-RIA group (Nuclear Reactions, Instrumentation and Astrophysics) ## +## Av. Prof. Gama Pinto, 2, 1649-003 Lisboa, Portugal ## +## ## +########################################################################################################## + import os def remove_file(filepath): From 138b6615d4a3134a5742e56f67dceabc49e32cec Mon Sep 17 00:00:00 2001 From: aysuismailova Date: Wed, 16 Jul 2025 16:03:06 +0100 Subject: [PATCH 16/44] new file --- new.py | 68 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 68 insertions(+) create mode 100644 new.py diff --git a/new.py b/new.py new file mode 100644 index 0000000..32e1b20 --- /dev/null +++ b/new.py @@ -0,0 +1,68 @@ +import numpy as np + +#################################### +def peakSum(x1, x2, list): + peaksum = 0.0 + + if x1 < 0 or x2 < 0 or x2 < x1: + peaksum = float('nan') + else: + for i in range(int(x1), int(x2)): + peaksum += list[i] + + return peaksum +#################################### + + +def background_file(x1, x2, background_data): + """Return background values from file for ROI [x1, x2] (inclusive).""" + return background_data[int(x1)-1:int(x2)] + +#################################### + +def calc_bckg(x1, x2, values_list): + """Calculate linear background for ROI [x1, x2] (inclusive).""" + yL = values_list[int(x1) - 1] + yU = values_list[int(x2) - 1] + m = (yU - yL) / (x2 - x1) if x2 - x1 != 0 else 0 + return [m * (i - x1) + yL for i in range(int(x1), int(x2) + 1)] + +################################### + +def peakNet(x1, x2, values_list, background_data=None): + if x1 <= 0 or x2 <= 0 or x2 < x1: + return "N/A" + if x1 > len(values_list) or x2 > len(values_list): + return "N/A" + if background_data is not None and (x1 > len(background_data) or x2 > len(background_data)): + return "N/A" + + soma = 0 + for i in range(int(x1), int(x2) + 1): + myCellValue = values_list[i - 1] + if background_data is not None: + bgd = background[i - 1] + else: + yL = values_list[int(x1) - 1] + yU = values_list[int(x2) - 1] + m = (yU - yL) / (x2 - x1) if x2 - x1 != 0 else 0 + bgd = m * (i - x1) + yL + soma += myCellValue - bgd + + return soma + +def film_thickness(I, I0, mu): + """ + Calculate film thickness using t = -1/mu * ln(I/I0) + I: net peak area with film (source+film - background_data) + I0: net peak area without film (source - background) + mu: attenuation coefficient + """ + if I <= 0 or I0 <= 0 or mu == 0 or I < I0: + return float('nan') + return -1.0 / mu * np.log(I / I0) + + +print("text") +## More code +print("AGAIN") \ No newline at end of file From f6c41e6f23c0f543832ab8393c7304f52a541912 Mon Sep 17 00:00:00 2001 From: aysuismailova Date: Fri, 18 Jul 2025 15:04:35 +0100 Subject: [PATCH 17/44] x-ray analysis update --- Data/Film_Sn_2h_17Jul_CuSource.mca | 2132 +++++++++++++++++ Data/Fundo_acqTest_1hour_01.mca | 2132 +++++++++++++++++ Data/NoFilm_2h_17Jul_CuSource.mca | 2132 +++++++++++++++++ Data/NoFilm_for_C12_4h_2.mca | 2132 +++++++++++++++++ Data/SampleC12_4h.mca | 2132 +++++++++++++++++ Include/__pycache__/Analyze.cpython-38.pyc | Bin 0 -> 657 bytes .../__pycache__/Calibration.cpython-38.pyc | Bin 0 -> 768 bytes Include/__pycache__/Eloss.cpython-38.pyc | Bin 0 -> 686 bytes Include/__pycache__/FitData.cpython-38.pyc | Bin 0 -> 2744 bytes Include/__pycache__/Thick.cpython-38.pyc | Bin 0 -> 1227 bytes .../__pycache__/clear_frame.cpython-38.pyc | Bin 0 -> 436 bytes .../__pycache__/remove_file.cpython-38.pyc | Bin 0 -> 409 bytes NewMain.py | 34 + PlotDataExercise.py | 58 + __pycache__/new.cpython-38.pyc | Bin 0 -> 1999 bytes new.py | 26 +- 16 files changed, 10764 insertions(+), 14 deletions(-) create mode 100644 Data/Film_Sn_2h_17Jul_CuSource.mca create mode 100644 Data/Fundo_acqTest_1hour_01.mca create mode 100644 Data/NoFilm_2h_17Jul_CuSource.mca create mode 100644 Data/NoFilm_for_C12_4h_2.mca create mode 100644 Data/SampleC12_4h.mca create mode 100644 Include/__pycache__/Analyze.cpython-38.pyc create mode 100644 Include/__pycache__/Calibration.cpython-38.pyc create mode 100644 Include/__pycache__/Eloss.cpython-38.pyc create mode 100644 Include/__pycache__/FitData.cpython-38.pyc create mode 100644 Include/__pycache__/Thick.cpython-38.pyc create mode 100644 Include/__pycache__/clear_frame.cpython-38.pyc create mode 100644 Include/__pycache__/remove_file.cpython-38.pyc create mode 100644 NewMain.py create mode 100644 PlotDataExercise.py create mode 100644 __pycache__/new.cpython-38.pyc diff --git a/Data/Film_Sn_2h_17Jul_CuSource.mca b/Data/Film_Sn_2h_17Jul_CuSource.mca new file mode 100644 index 0000000..9eb8b79 --- /dev/null +++ b/Data/Film_Sn_2h_17Jul_CuSource.mca @@ -0,0 +1,2132 @@ +<> +TAG - live_data +DESCRIPTION - +GAIN - 3 +THRESHOLD - 0 +LIVE_MODE - 0 +PRESET_TIME - 0 +LIVE_TIME - 7195.004000 +REAL_TIME - 7200.000000 +START_TIME - 01/23/2000 00:50:56 +SERIAL_NUMBER - 0 +<> +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +93 +100 +134 +114 +117 +104 +109 +101 +108 +128 +98 +110 +119 +109 +130 +102 +101 +101 +103 +98 +91 +103 +92 +85 +100 +120 +87 +90 +91 +83 +107 +99 +89 +98 +105 +117 +95 +85 +74 +89 +73 +81 +74 +92 +92 +87 +91 +87 +89 +82 +95 +88 +93 +82 +85 +103 +92 +109 +87 +78 +86 +97 +104 +82 +81 +83 +84 +77 +65 +87 +71 +101 +85 +74 +80 +71 +76 +69 +79 +96 +75 +64 +85 +76 +98 +94 +64 +61 +81 +89 +77 +88 +75 +68 +82 +61 +64 +78 +95 +79 +80 +77 +79 +83 +76 +79 +92 +80 +74 +87 +85 +58 +93 +81 +69 +85 +82 +72 +79 +76 +72 +77 +75 +63 +80 +78 +70 +73 +87 +79 +76 +71 +70 +68 +86 +83 +79 +76 +80 +59 +101 +88 +79 +94 +66 +72 +65 +60 +74 +79 +63 +69 +79 +69 +80 +72 +76 +83 +82 +80 +123 +154 +165 +129 +106 +121 +95 +73 +74 +66 +82 +92 +87 +82 +88 +95 +69 +87 +88 +108 +95 +79 +82 +72 +78 +91 +103 +104 +107 +154 +179 +229 +332 +346 +400 +346 +244 +185 +122 +93 +95 +81 +86 +91 +106 +88 +90 +83 +69 +105 +99 +87 +115 +102 +122 +130 +133 +126 +95 +105 +75 +71 +91 +79 +83 +97 +93 +108 +141 +156 +151 +121 +118 +135 +124 +143 +141 +154 +185 +209 +353 +883 +2321 +6001 +13052 +23191 +32315 +36532 +32248 +22796 +13016 +5766 +2180 +765 +304 +169 +151 +143 +111 +120 +125 +100 +116 +115 +112 +139 +153 +200 +251 +427 +789 +1662 +3019 +4634 +5987 +6247 +5445 +3768 +2119 +946 +386 +140 +66 +38 +40 +25 +33 +43 +35 +42 +27 +28 +25 +30 +22 +22 +35 +32 +25 +28 +21 +36 +24 +25 +27 +24 +32 +25 +28 +19 +20 +22 +31 +28 +21 +25 +16 +21 +19 +17 +27 +28 +25 +31 +17 +21 +33 +39 +42 +45 +31 +26 +18 +20 +26 +23 +17 +15 +19 +19 +18 +18 +18 +22 +13 +26 +16 +19 +11 +9 +14 +15 +14 +20 +20 +18 +20 +14 +24 +16 +7 +8 +13 +12 +9 +8 +9 +8 +13 +14 +7 +10 +10 +11 +11 +13 +9 +11 +11 +7 +9 +11 +12 +6 +14 +7 +9 +7 +12 +19 +17 +11 +22 +18 +15 +17 +17 +14 +17 +7 +14 +13 +11 +9 +8 +12 +11 +4 +6 +9 +4 +6 +8 +10 +9 +5 +3 +7 +12 +16 +5 +9 +9 +7 +7 +7 +7 +5 +7 +8 +5 +2 +6 +9 +4 +12 +3 +7 +4 +8 +5 +4 +5 +6 +7 +7 +3 +5 +13 +6 +6 +4 +7 +7 +7 +5 +4 +7 +4 +3 +4 +4 +4 +6 +6 +5 +5 +8 +6 +7 +4 +11 +4 +5 +6 +6 +6 +7 +8 +9 +5 +8 +5 +6 +5 +6 +3 +2 +2 +7 +5 +4 +2 +10 +6 +10 +11 +7 +8 +3 +5 +3 +5 +7 +4 +9 +4 +5 +4 +2 +3 +7 +5 +6 +5 +6 +5 +4 +6 +4 +4 +5 +11 +9 +8 +3 +3 +6 +8 +3 +2 +1 +3 +2 +5 +4 +8 +3 +6 +8 +1 +4 +4 +3 +7 +3 +10 +7 +8 +7 +8 +9 +5 +6 +8 +2 +6 +7 +8 +8 +3 +5 +5 +3 +4 +7 +2 +6 +3 +1 +2 +3 +6 +1 +6 +4 +5 +4 +7 +1 +3 +0 +2 +5 +1 +7 +2 +5 +5 +2 +4 +4 +4 +4 +1 +2 +2 +3 +4 +6 +2 +3 +3 +2 +1 +4 +3 +3 +6 +6 +1 +4 +4 +4 +3 +6 +4 +5 +3 +1 +6 +3 +3 +3 +5 +2 +3 +4 +4 +2 +3 +7 +4 +7 +6 +3 +0 +2 +7 +4 +5 +3 +6 +4 +3 +7 +4 +3 +6 +3 +2 +9 +4 +5 +5 +3 +3 +7 +7 +5 +7 +6 +3 +2 +4 +4 +4 +4 +3 +0 +0 +6 +3 +3 +3 +4 +2 +6 +3 +4 +3 +0 +2 +4 +8 +4 +3 +1 +6 +3 +3 +2 +3 +6 +5 +3 +6 +3 +8 +5 +7 +3 +7 +7 +3 +6 +6 +5 +5 +6 +5 +3 +4 +6 +3 +2 +4 +4 +3 +4 +4 +0 +2 +2 +5 +1 +3 +3 +6 +2 +4 +2 +1 +10 +2 +1 +3 +5 +2 +2 +3 +2 +2 +5 +4 +5 +4 +3 +3 +7 +5 +6 +4 +3 +4 +3 +3 +2 +4 +2 +2 +1 +3 +3 +3 +8 +7 +5 +4 +6 +4 +2 +8 +5 +5 +1 +1 +5 +3 +5 +4 +3 +2 +4 +2 +6 +2 +8 +2 +8 +9 +9 +11 +13 +14 +17 +10 +18 +12 +19 +14 +20 +12 +15 +13 +15 +13 +7 +8 +8 +3 +2 +5 +0 +1 +2 +5 +4 +5 +4 +5 +1 +3 +5 +6 +4 +5 +6 +9 +9 +8 +12 +3 +10 +10 +16 +11 +17 +13 +4 +4 +10 +4 +7 +3 +0 +2 +4 +4 +3 +2 +0 +2 +4 +3 +2 +4 +4 +0 +4 +5 +2 +4 +5 +1 +2 +3 +3 +4 +3 +1 +5 +7 +3 +5 +2 +4 +2 +0 +2 +6 +5 +1 +2 +6 +1 +3 +3 +4 +1 +4 +7 +3 +5 +3 +1 +4 +2 +2 +5 +2 +6 +4 +3 +4 +10 +9 +8 +4 +3 +5 +9 +3 +2 +6 +2 +2 +3 +3 +2 +4 +5 +2 +2 +5 +3 +0 +5 +4 +4 +5 +3 +4 +2 +5 +0 +2 +2 +4 +3 +2 +5 +0 +2 +4 +1 +3 +1 +4 +4 +2 +5 +0 +1 +5 +4 +3 +7 +3 +1 +1 +0 +1 +2 +7 +0 +2 +1 +4 +1 +3 +4 +3 +4 +5 +4 +6 +3 +4 +4 +5 +2 +6 +2 +3 +4 +0 +2 +1 +2 +3 +3 +2 +2 +3 +2 +6 +3 +3 +1 +4 +2 +3 +1 +3 +4 +6 +1 +4 +2 +4 +4 +4 +3 +0 +2 +0 +3 +4 +3 +1 +4 +6 +4 +5 +7 +5 +3 +3 +3 +5 +5 +5 +4 +5 +7 +4 +5 +2 +6 +1 +3 +5 +0 +2 +3 +3 +2 +6 +4 +5 +1 +6 +4 +1 +9 +1 +7 +1 +3 +7 +2 +6 +2 +2 +1 +3 +2 +0 +3 +2 +1 +3 +1 +1 +1 +1 +2 +3 +5 +3 +4 +2 +6 +2 +2 +1 +1 +5 +3 +1 +3 +4 +2 +3 +1 +4 +1 +2 +2 +3 +8 +2 +2 +2 +2 +3 +1 +4 +4 +2 +3 +3 +2 +2 +2 +3 +6 +5 +3 +6 +1 +4 +5 +8 +5 +4 +3 +2 +3 +4 +4 +3 +3 +2 +4 +4 +1 +2 +7 +7 +1 +1 +4 +2 +4 +6 +2 +1 +6 +4 +0 +6 +2 +6 +4 +2 +4 +2 +0 +1 +3 +5 +2 +1 +7 +5 +3 +3 +5 +4 +6 +3 +6 +6 +3 +5 +9 +1 +3 +2 +3 +3 +5 +2 +3 +3 +2 +7 +4 +6 +2 +2 +3 +6 +1 +3 +2 +3 +3 +4 +4 +1 +6 +6 +4 +3 +3 +8 +8 +5 +7 +4 +2 +6 +4 +3 +4 +3 +5 +2 +5 +7 +11 +5 +6 +4 +8 +7 +6 +6 +8 +8 +7 +6 +5 +5 +5 +4 +2 +9 +6 +5 +9 +3 +6 +12 +6 +6 +9 +7 +8 +6 +9 +4 +7 +10 +13 +6 +8 +5 +9 +7 +5 +6 +5 +11 +3 +5 +4 +16 +9 +5 +6 +11 +4 +7 +7 +5 +6 +7 +6 +8 +13 +16 +7 +7 +6 +10 +8 +7 +7 +9 +7 +8 +11 +10 +3 +11 +11 +13 +10 +12 +13 +10 +13 +12 +10 +15 +7 +10 +11 +9 +8 +10 +11 +11 +11 +8 +17 +15 +16 +6 +14 +6 +10 +8 +11 +11 +14 +17 +13 +17 +17 +11 +11 +19 +12 +12 +19 +18 +9 +26 +12 +15 +16 +18 +15 +14 +14 +15 +17 +22 +18 +14 +17 +17 +15 +14 +14 +12 +11 +16 +18 +12 +15 +13 +23 +11 +22 +13 +27 +21 +8 +15 +17 +23 +21 +22 +12 +17 +24 +24 +17 +18 +16 +16 +19 +19 +19 +20 +26 +13 +22 +22 +18 +18 +15 +21 +20 +21 +20 +17 +22 +20 +19 +18 +21 +24 +20 +23 +23 +15 +15 +30 +24 +20 +31 +24 +22 +21 +34 +23 +24 +25 +38 +25 +28 +27 +36 +31 +25 +30 +25 +28 +23 +28 +30 +24 +30 +32 +19 +37 +39 +34 +32 +25 +41 +20 +28 +31 +27 +34 +30 +25 +33 +35 +37 +43 +41 +28 +32 +36 +34 +28 +36 +34 +35 +46 +43 +32 +45 +45 +41 +42 +48 +41 +35 +34 +48 +57 +43 +50 +50 +39 +46 +55 +55 +54 +52 +37 +45 +47 +56 +43 +62 +51 +63 +70 +43 +68 +46 +75 +59 +54 +77 +72 +75 +52 +76 +88 +54 +74 +102 +79 +91 +89 +91 +75 +85 +102 +102 +96 +97 +104 +106 +108 +117 +109 +112 +111 +116 +122 +120 +131 +138 +149 +134 +123 +156 +152 +175 +130 +158 +155 +142 +167 +172 +168 +187 +176 +198 +173 +206 +188 +208 +246 +206 +227 +187 +188 +229 +228 +203 +223 +229 +203 +220 +237 +240 +214 +222 +216 +223 +248 +197 +238 +186 +236 +218 +210 +235 +223 +213 +194 +201 +212 +175 +193 +173 +168 +164 +169 +179 +164 +172 +190 +162 +164 +166 +178 +171 +155 +150 +147 +141 +139 +130 +142 +134 +119 +137 +123 +115 +123 +117 +107 +102 +104 +94 +79 +100 +99 +85 +77 +86 +72 +100 +76 +73 +75 +73 +72 +81 +62 +68 +52 +61 +60 +65 +58 +69 +62 +52 +48 +61 +46 +53 +51 +49 +40 +44 +52 +52 +67 +38 +42 +51 +44 +50 +46 +52 +34 +37 +41 +38 +44 +34 +32 +37 +32 +36 +35 +22 +32 +41 +29 +29 +31 +25 +23 +29 +29 +20 +27 +25 +26 +32 +27 +31 +17 +29 +23 +20 +15 +26 +17 +21 +21 +23 +16 +22 +22 +28 +14 +21 +26 +21 +22 +22 +22 +19 +19 +16 +21 +22 +21 +24 +21 +19 +25 +13 +20 +12 +13 +18 +22 +15 +15 +14 +16 +19 +9 +15 +11 +16 +17 +13 +16 +12 +15 +14 +17 +16 +8 +12 +17 +13 +14 +9 +18 +16 +14 +10 +10 +16 +13 +16 +12 +10 +12 +9 +10 +17 +16 +12 +11 +11 +15 +13 +10 +14 +13 +8 +14 +14 +12 +7 +11 +12 +9 +13 +6 +14 +12 +7 +14 +12 +15 +12 +12 +10 +8 +10 +9 +8 +8 +11 +14 +5 +9 +9 +14 +7 +7 +12 +6 +6 +10 +15 +2 +6 +12 +11 +6 +12 +9 +10 +8 +5 +6 +8 +5 +15 +10 +10 +10 +7 +10 +6 +11 +13 +11 +13 +9 +4 +10 +5 +11 +12 +6 +4 +8 +6 +10 +14 +5 +11 +6 +4 +7 +5 +9 +5 +6 +3 +5 +8 +12 +8 +7 +12 +7 +5 +10 +5 +5 +6 +4 +4 +6 +6 +3 +4 +2 +2 +3 +7 +2 +3 +3 +5 +2 +4 +12 +10 +15 +16 +19 +22 +31 +44 +61 +88 +100 +122 +151 +206 +197 +223 +259 +258 +234 +239 +189 +189 +154 +128 +128 +78 +66 +46 +27 +33 +13 +11 +8 +4 +4 +3 +3 +2 +1 +1 +1 +1 +0 +1 +0 +1 +0 +0 +0 +1 +0 +0 +1 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +1 +0 +1 +0 +1 +0 +0 +1 +0 +0 +0 +0 +0 +0 +0 +1 +0 +1 +1 +0 +0 +0 +0 +1 +0 +0 +1 +0 +1 +0 +0 +0 +1 +0 +1 +1 +1 +2 +0 +1 +0 +3 +2 +0 +1 +0 +0 +0 +0 +0 +1 +0 +3 +2 +0 +0 +2 +1 +2 +0 +0 +1 +0 +0 +2 +0 +1 +3 +0 +0 +0 +0 +0 +0 +2 +0 +2 +0 +1 +0 +0 +<> +<> +RESC=?; Reset Configuration +CLCK=80; 20MHz/80MHz +TPEA=9.600; Peaking Time +GAIF=0.9312; Fine Gain +GAIN=21.162; Total Gain (Analog * Fine) +RESL=204; Detector Reset Lockout +TFLA=0.200; Flat Top +TPFA=50; Fast Channel Peaking Time +PURE=OFF; PUR Interval On/Off +RTDE=OFF; RTD On/Off +MCAS=NORM; MCA Source +MCAC=2048; MCA/MCS Channels +SOFF=OFF; Set Spectrum Offset +AINP=POS; Analog Input Pos/Neg +INOF=DEF; Input Offset +GAIA=15; Analog Gain Index +CUSP=0; Non-Trapezoidal Shaping +PDMD=NORM; Peak Detect Mode (Min/Max) +THSL=0.585; Slow Threshold +TLLD=OFF; LLD Threshold +THFA=230.00; Fast Threshold +DACO=SHAPED; DAC Output +DACF=50; DAC Offset +RTDS=0; RTD Sensitivity +RTDT=0.00; RTD Threshold +BLRM=1; BLR Mode +BLRD=3; BLR Down Correction +BLRU=0; BLR Up Correction +AUO1=SCA8; AUX_OUT Selection +PRET=OFF; Preset Time +PRER=7200.000; Preset Real Time +PREC=OFF; Preset Counts +PRCL=1; Preset Counts Low Threshold +PRCH=8191; Preset Counts High Threshold +HVSE=-110; HV Set +TECS=220; TEC Set +PAPZ=OFF; Pole-Zero +PAPS=8.5; Preamp 8.5/5 (N/A) +SCOE=FA; Scope Trigger Edge +SCOT=12; Scope Trigger Position +SCOG=1; Digital Scope Gain +MCSL=1; MCS Low Threshold +MCSH=8191; MCS High Threshold +MCST=0.00; MCS Timebase +AUO2=ICR; AUX_OUT2 Selection +TPMO=OFF; Test Pulser On/Off +GPED=RI; G.P. Counter Edge +GPIN=AUX1; G.P. Counter Input +GPME=ON; G.P. Counter Uses MCA_EN? +GPGA=ON; G.P. Counter Uses GATE? +GPMC=ON; G.P. Counter Cleared With MCA Counters? +MCAE=OFF; MCA/MCS Enable +VOLU=OFF; Speaker On/Off +CON1=DAC; Connector 1 +CON2=AUXOUT2; Connector 2 +<> +<> +Device Type: PX5 +Serial Number: 2264 +Firmware: 6.07 Build: 3 +FPGA: 6.02 +Fast Count: 21953 +Slow Count: 291809 +Accumulation Time: 7195.004000 +Real Time: 7200.000000 +Dead Time: +HV Volt: -110V +TEC Temp: 221K +Board Temp: 38C +<> diff --git a/Data/Fundo_acqTest_1hour_01.mca b/Data/Fundo_acqTest_1hour_01.mca new file mode 100644 index 0000000..f421c2d --- /dev/null +++ b/Data/Fundo_acqTest_1hour_01.mca @@ -0,0 +1,2132 @@ +<> +TAG - live_data +DESCRIPTION - +GAIN - 3 +THRESHOLD - 0 +LIVE_MODE - 0 +PRESET_TIME - 0 +LIVE_TIME - 2030.824878 +REAL_TIME - 3600.000000 +START_TIME - 10/11/2024 13:52:38 +SERIAL_NUMBER - 0 +<> +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +1 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +1 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +1 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +1 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +1 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +1 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +1 +1 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +1 +0 +0 +0 +0 +0 +0 +1 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +1 +0 +0 +0 +0 +0 +0 +0 +1 +0 +0 +0 +0 +0 +0 +0 +1 +0 +1 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +1 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +1 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +1 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +1 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +1 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +1 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +1 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +1 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +1 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +1 +0 +0 +0 +0 +0 +0 +0 +1 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +1 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +1 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +1 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +1 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +1 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +1 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +1 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +1 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +1 +0 +0 +0 +0 +0 +0 +0 +0 +0 +1 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +<> +<> +RESC=?; Reset Configuration +CLCK=80; 20MHz/80MHz +TPEA=9.600; Peaking Time +GAIF=0.9312; Fine Gain +GAIN=21.162; Total Gain (Analog * Fine) +RESL=204; Detector Reset Lockout +TFLA=0.200; Flat Top +TPFA=50; Fast Channel Peaking Time +PURE=OFF; PUR Interval On/Off +RTDE=OFF; RTD On/Off +MCAS=NORM; MCA Source +MCAC=2048; MCA/MCS Channels +SOFF=OFF; Set Spectrum Offset +AINP=POS; Analog Input Pos/Neg +INOF=DEF; Input Offset +GAIA=15; Analog Gain Index +CUSP=0; Non-Trapezoidal Shaping +PDMD=NORM; Peak Detect Mode (Min/Max) +THSL=0.585; Slow Threshold +TLLD=OFF; LLD Threshold +THFA=230.00; Fast Threshold +DACO=SHAPED; DAC Output +DACF=50; DAC Offset +RTDS=0; RTD Sensitivity +RTDT=0.00; RTD Threshold +BLRM=1; BLR Mode +BLRD=3; BLR Down Correction +BLRU=0; BLR Up Correction +AUO1=SCA8; AUX_OUT Selection +PRET=OFF; Preset Time +PRER=3600.000; Preset Real Time +PREC=OFF; Preset Counts +PRCL=1; Preset Counts Low Threshold +PRCH=8191; Preset Counts High Threshold +HVSE=-110; HV Set +TECS=220; TEC Set +PAPZ=OFF; Pole-Zero +PAPS=8.5; Preamp 8.5/5 (N/A) +SCOE=FA; Scope Trigger Edge +SCOT=12; Scope Trigger Position +SCOG=1; Digital Scope Gain +MCSL=1; MCS Low Threshold +MCSH=8191; MCS High Threshold +MCST=0.00; MCS Timebase +AUO2=ICR; AUX_OUT2 Selection +TPMO=OFF; Test Pulser On/Off +GPED=RI; G.P. Counter Edge +GPIN=AUX1; G.P. Counter Input +GPME=ON; G.P. Counter Uses MCA_EN? +GPGA=ON; G.P. Counter Uses GATE? +GPMC=ON; G.P. Counter Cleared With MCA Counters? +MCAE=OFF; MCA/MCS Enable +VOLU=OFF; Speaker On/Off +CON1=DAC; Connector 1 +CON2=AUXOUT2; Connector 2 +<> +<> +Device Type: PX5 +Serial Number: 2264 +Firmware: 6.07 Build: 3 +FPGA: 6.02 +Fast Count: 62 +Slow Count: 35 +Accumulation Time: 3597.564000 +Real Time: 3600.000000 +Dead Time: 43.55% +HV Volt: -110V +TEC Temp: 220K +Board Temp: 34C +<> diff --git a/Data/NoFilm_2h_17Jul_CuSource.mca b/Data/NoFilm_2h_17Jul_CuSource.mca new file mode 100644 index 0000000..7a2640c --- /dev/null +++ b/Data/NoFilm_2h_17Jul_CuSource.mca @@ -0,0 +1,2132 @@ +<> +TAG - live_data +DESCRIPTION - +GAIN - 3 +THRESHOLD - 0 +LIVE_MODE - 0 +PRESET_TIME - 0 +LIVE_TIME - 7194.999000 +REAL_TIME - 7200.000000 +START_TIME - 01/23/2000 03:09:31 +SERIAL_NUMBER - 0 +<> +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +93 +128 +111 +123 +133 +104 +110 +125 +131 +99 +115 +93 +114 +98 +103 +99 +110 +100 +109 +101 +105 +96 +105 +102 +98 +110 +104 +76 +91 +75 +80 +95 +96 +101 +96 +97 +119 +89 +86 +79 +93 +88 +97 +85 +103 +86 +106 +90 +94 +88 +91 +115 +107 +89 +99 +86 +96 +94 +100 +90 +111 +86 +81 +92 +90 +88 +80 +76 +97 +90 +95 +79 +95 +65 +77 +88 +80 +84 +97 +60 +80 +86 +91 +79 +84 +72 +80 +70 +79 +76 +87 +100 +85 +84 +76 +85 +84 +73 +89 +83 +86 +67 +80 +83 +89 +64 +90 +80 +68 +98 +64 +78 +67 +80 +74 +74 +74 +65 +80 +81 +66 +75 +69 +85 +70 +70 +72 +68 +78 +69 +74 +82 +71 +65 +81 +95 +64 +82 +75 +60 +89 +74 +72 +78 +86 +79 +72 +58 +74 +82 +82 +85 +78 +69 +79 +80 +80 +80 +73 +95 +107 +139 +167 +160 +126 +88 +88 +72 +77 +89 +65 +88 +87 +80 +87 +74 +85 +92 +101 +100 +108 +89 +100 +72 +70 +77 +87 +95 +110 +152 +209 +267 +312 +354 +394 +374 +259 +171 +118 +95 +88 +89 +97 +78 +82 +94 +91 +95 +79 +100 +99 +90 +105 +113 +143 +127 +129 +140 +111 +102 +89 +97 +79 +76 +100 +108 +106 +124 +152 +156 +154 +141 +123 +122 +127 +128 +147 +171 +182 +246 +370 +900 +2642 +6657 +14758 +25521 +36544 +40811 +36079 +25202 +14599 +6408 +2438 +771 +316 +199 +165 +136 +125 +156 +140 +123 +119 +143 +129 +164 +186 +231 +285 +443 +925 +1725 +3173 +5141 +6635 +6804 +5764 +4067 +2309 +1128 +455 +168 +59 +39 +36 +24 +33 +27 +26 +34 +28 +29 +36 +28 +35 +34 +36 +22 +31 +24 +33 +21 +20 +26 +20 +30 +32 +26 +35 +35 +24 +20 +33 +34 +17 +21 +14 +29 +18 +20 +23 +27 +26 +20 +43 +36 +36 +54 +40 +28 +40 +28 +18 +27 +18 +22 +27 +27 +22 +20 +20 +19 +16 +14 +14 +17 +20 +21 +17 +13 +24 +12 +14 +20 +18 +14 +15 +18 +11 +20 +7 +10 +19 +10 +12 +15 +10 +15 +8 +10 +10 +11 +19 +9 +5 +12 +15 +12 +5 +11 +14 +19 +8 +15 +8 +18 +8 +12 +14 +10 +15 +11 +21 +21 +23 +24 +14 +16 +10 +20 +16 +22 +15 +12 +9 +11 +7 +7 +8 +9 +12 +7 +6 +10 +12 +10 +14 +10 +11 +10 +15 +13 +8 +12 +10 +2 +8 +3 +6 +11 +4 +7 +9 +4 +5 +7 +1 +6 +8 +9 +7 +7 +4 +9 +4 +6 +6 +6 +8 +13 +5 +1 +8 +6 +8 +3 +6 +9 +7 +3 +4 +4 +4 +11 +11 +8 +5 +7 +6 +10 +8 +4 +3 +5 +4 +11 +4 +7 +5 +1 +8 +4 +11 +6 +6 +5 +8 +1 +6 +7 +5 +5 +4 +8 +7 +5 +5 +1 +5 +8 +8 +10 +4 +4 +0 +5 +5 +8 +4 +4 +4 +7 +2 +4 +4 +3 +6 +4 +8 +3 +5 +5 +6 +4 +6 +4 +2 +6 +3 +2 +6 +4 +6 +2 +6 +2 +6 +4 +4 +7 +1 +6 +3 +3 +4 +4 +3 +6 +8 +10 +6 +9 +6 +13 +9 +7 +3 +6 +6 +5 +4 +5 +4 +7 +3 +4 +2 +4 +10 +4 +4 +4 +2 +7 +6 +6 +3 +5 +6 +1 +1 +4 +5 +2 +3 +3 +2 +3 +7 +7 +4 +6 +6 +3 +5 +4 +3 +1 +8 +3 +8 +5 +9 +2 +2 +7 +3 +7 +3 +3 +2 +3 +6 +7 +8 +6 +2 +4 +5 +5 +6 +5 +7 +5 +6 +4 +8 +5 +4 +1 +2 +2 +3 +4 +2 +2 +1 +3 +8 +3 +3 +3 +1 +1 +4 +0 +6 +3 +3 +2 +4 +3 +2 +6 +3 +5 +3 +9 +4 +3 +1 +3 +6 +3 +1 +3 +3 +4 +3 +2 +6 +5 +3 +6 +4 +6 +2 +4 +4 +5 +6 +2 +2 +3 +1 +4 +2 +4 +3 +2 +3 +6 +4 +5 +7 +1 +8 +3 +5 +10 +7 +8 +6 +6 +1 +4 +5 +11 +7 +4 +4 +4 +6 +4 +7 +1 +4 +1 +2 +3 +2 +2 +5 +6 +6 +3 +2 +1 +1 +3 +6 +5 +1 +4 +5 +5 +3 +7 +3 +2 +5 +5 +2 +4 +1 +7 +4 +8 +11 +5 +5 +3 +4 +4 +3 +2 +8 +3 +2 +10 +0 +5 +4 +4 +4 +5 +4 +3 +2 +7 +3 +6 +2 +1 +2 +7 +2 +6 +5 +5 +6 +5 +1 +4 +4 +3 +8 +5 +7 +7 +8 +11 +7 +10 +15 +12 +10 +3 +11 +7 +17 +16 +17 +11 +8 +7 +7 +4 +7 +4 +2 +1 +3 +2 +2 +4 +3 +4 +1 +2 +2 +0 +4 +5 +1 +9 +5 +8 +2 +4 +2 +2 +10 +7 +13 +9 +8 +12 +11 +12 +9 +5 +7 +7 +5 +3 +3 +1 +3 +2 +3 +7 +3 +1 +2 +1 +3 +3 +1 +4 +3 +4 +3 +2 +2 +1 +6 +2 +4 +5 +8 +3 +6 +3 +5 +2 +6 +4 +4 +3 +5 +5 +2 +1 +2 +2 +3 +3 +3 +3 +3 +3 +6 +1 +4 +2 +1 +3 +3 +1 +5 +2 +1 +6 +5 +3 +5 +6 +7 +2 +1 +1 +6 +1 +4 +3 +3 +4 +4 +4 +5 +3 +1 +3 +3 +3 +6 +3 +3 +1 +2 +8 +3 +2 +1 +0 +2 +4 +1 +4 +1 +5 +5 +5 +4 +1 +2 +1 +5 +2 +3 +6 +4 +2 +5 +1 +3 +2 +4 +2 +3 +2 +2 +1 +1 +5 +3 +2 +3 +4 +3 +3 +2 +2 +3 +4 +4 +1 +6 +2 +4 +4 +2 +1 +3 +1 +3 +1 +3 +2 +2 +0 +4 +0 +3 +6 +4 +4 +4 +5 +2 +3 +5 +7 +2 +1 +3 +2 +3 +2 +1 +4 +3 +3 +2 +1 +3 +2 +3 +0 +5 +3 +5 +4 +4 +3 +4 +7 +4 +5 +3 +1 +4 +5 +4 +6 +3 +0 +0 +3 +3 +4 +3 +3 +0 +4 +4 +3 +1 +2 +7 +4 +1 +6 +2 +4 +5 +4 +2 +6 +1 +3 +7 +1 +2 +1 +3 +1 +5 +4 +2 +3 +1 +2 +4 +4 +3 +4 +0 +3 +3 +3 +4 +3 +2 +2 +1 +2 +3 +5 +2 +2 +1 +1 +0 +3 +3 +7 +4 +2 +3 +1 +1 +0 +4 +5 +6 +8 +2 +5 +1 +3 +2 +3 +3 +0 +3 +1 +4 +2 +4 +5 +3 +4 +3 +3 +5 +1 +1 +2 +7 +1 +3 +1 +2 +2 +4 +1 +3 +1 +4 +0 +0 +1 +4 +3 +5 +1 +2 +3 +4 +4 +4 +4 +7 +5 +9 +3 +5 +6 +5 +4 +8 +6 +6 +3 +5 +3 +2 +4 +4 +3 +3 +4 +3 +4 +7 +7 +6 +4 +4 +5 +3 +2 +0 +3 +3 +6 +3 +4 +3 +5 +8 +3 +9 +4 +8 +5 +3 +7 +5 +7 +3 +6 +1 +3 +4 +2 +6 +2 +2 +2 +3 +6 +6 +3 +5 +7 +4 +7 +8 +4 +6 +6 +3 +9 +8 +3 +4 +7 +4 +3 +3 +8 +7 +4 +4 +8 +8 +6 +1 +6 +6 +8 +4 +7 +7 +5 +7 +4 +6 +7 +7 +4 +6 +4 +10 +3 +5 +8 +7 +7 +9 +8 +9 +4 +5 +6 +4 +9 +5 +8 +8 +7 +9 +10 +8 +8 +13 +9 +9 +9 +10 +9 +9 +12 +6 +4 +6 +11 +12 +8 +12 +9 +6 +4 +13 +13 +11 +15 +13 +11 +9 +12 +11 +4 +11 +15 +12 +12 +19 +15 +13 +16 +8 +19 +8 +17 +9 +15 +12 +15 +18 +12 +13 +11 +14 +11 +7 +12 +12 +10 +12 +20 +15 +21 +11 +16 +13 +14 +17 +12 +12 +11 +8 +12 +24 +17 +20 +19 +9 +22 +15 +18 +20 +17 +16 +16 +9 +16 +14 +11 +16 +13 +11 +19 +23 +18 +24 +19 +20 +21 +14 +20 +23 +17 +14 +19 +14 +15 +20 +20 +13 +26 +25 +14 +18 +32 +21 +25 +18 +25 +21 +15 +16 +21 +19 +20 +23 +22 +16 +25 +24 +23 +17 +17 +15 +21 +21 +27 +21 +19 +18 +19 +29 +28 +32 +23 +29 +18 +25 +22 +27 +22 +27 +30 +30 +23 +23 +34 +27 +33 +31 +26 +33 +28 +28 +30 +35 +30 +28 +32 +21 +20 +23 +35 +30 +35 +33 +36 +23 +44 +35 +40 +40 +33 +33 +32 +28 +32 +35 +40 +30 +30 +34 +35 +29 +50 +31 +37 +36 +30 +41 +51 +30 +57 +35 +36 +43 +52 +55 +41 +51 +33 +35 +48 +50 +44 +57 +52 +57 +53 +48 +48 +55 +46 +58 +52 +54 +64 +76 +65 +43 +57 +58 +68 +62 +76 +81 +81 +76 +74 +66 +78 +85 +67 +82 +88 +86 +81 +91 +108 +101 +94 +123 +97 +114 +100 +123 +107 +117 +101 +114 +103 +140 +119 +139 +153 +136 +118 +145 +170 +150 +157 +159 +161 +150 +166 +168 +175 +187 +199 +186 +158 +208 +209 +223 +218 +223 +205 +180 +220 +232 +206 +226 +237 +227 +255 +236 +194 +239 +223 +203 +227 +213 +229 +242 +207 +229 +210 +196 +222 +216 +204 +202 +192 +178 +211 +179 +190 +214 +163 +182 +169 +178 +174 +146 +177 +161 +168 +138 +148 +163 +153 +138 +147 +143 +140 +151 +111 +117 +115 +115 +137 +100 +113 +95 +120 +122 +80 +108 +94 +93 +87 +88 +95 +67 +91 +71 +71 +75 +85 +62 +82 +75 +59 +70 +51 +64 +60 +57 +63 +63 +53 +59 +60 +52 +41 +66 +39 +47 +37 +53 +56 +48 +50 +38 +38 +36 +48 +47 +44 +33 +45 +42 +37 +40 +29 +24 +32 +30 +45 +33 +39 +39 +32 +21 +28 +31 +34 +23 +28 +24 +20 +19 +21 +24 +28 +26 +29 +24 +20 +24 +19 +18 +28 +23 +26 +25 +18 +18 +18 +19 +21 +21 +19 +21 +26 +31 +15 +24 +22 +17 +16 +15 +14 +16 +15 +22 +18 +12 +12 +16 +8 +15 +19 +19 +22 +15 +13 +19 +20 +18 +11 +12 +11 +11 +17 +20 +17 +15 +11 +18 +20 +14 +11 +19 +11 +14 +22 +12 +15 +14 +16 +14 +7 +10 +7 +9 +10 +11 +13 +9 +9 +12 +10 +15 +9 +15 +14 +10 +12 +6 +13 +12 +12 +13 +12 +9 +12 +8 +4 +15 +13 +8 +5 +10 +8 +14 +8 +12 +10 +12 +3 +15 +8 +12 +7 +11 +10 +8 +8 +7 +8 +4 +5 +10 +10 +11 +8 +6 +10 +9 +10 +8 +7 +5 +10 +9 +12 +6 +5 +8 +4 +9 +7 +9 +13 +7 +10 +3 +4 +7 +9 +5 +8 +5 +11 +6 +10 +9 +5 +7 +5 +10 +7 +9 +8 +11 +3 +12 +6 +9 +3 +8 +5 +5 +8 +4 +5 +9 +7 +6 +9 +5 +5 +3 +6 +4 +3 +4 +1 +6 +6 +3 +6 +8 +6 +4 +5 +5 +2 +4 +4 +9 +11 +14 +17 +15 +19 +29 +56 +71 +76 +114 +115 +146 +166 +180 +207 +229 +241 +231 +236 +193 +219 +168 +131 +97 +81 +65 +47 +40 +30 +17 +8 +10 +5 +2 +0 +0 +1 +0 +0 +0 +1 +1 +0 +3 +0 +0 +1 +2 +0 +0 +0 +0 +0 +0 +0 +1 +0 +1 +0 +0 +1 +0 +0 +0 +1 +0 +0 +1 +0 +1 +2 +0 +1 +0 +0 +0 +0 +0 +1 +0 +0 +0 +1 +0 +0 +1 +0 +0 +0 +1 +0 +1 +0 +0 +1 +1 +1 +0 +1 +0 +1 +0 +0 +1 +2 +0 +0 +0 +0 +0 +0 +1 +0 +0 +1 +1 +0 +0 +0 +0 +1 +0 +2 +0 +1 +2 +0 +0 +1 +0 +0 +0 +0 +2 +1 +0 +0 +0 +1 +1 +0 +0 +2 +1 +1 +1 +0 +0 +1 +0 +0 +<> +<> +RESC=?; Reset Configuration +CLCK=80; 20MHz/80MHz +TPEA=9.600; Peaking Time +GAIF=0.9312; Fine Gain +GAIN=21.162; Total Gain (Analog * Fine) +RESL=204; Detector Reset Lockout +TFLA=0.200; Flat Top +TPFA=50; Fast Channel Peaking Time +PURE=OFF; PUR Interval On/Off +RTDE=OFF; RTD On/Off +MCAS=NORM; MCA Source +MCAC=2048; MCA/MCS Channels +SOFF=OFF; Set Spectrum Offset +AINP=POS; Analog Input Pos/Neg +INOF=DEF; Input Offset +GAIA=15; Analog Gain Index +CUSP=0; Non-Trapezoidal Shaping +PDMD=NORM; Peak Detect Mode (Min/Max) +THSL=0.585; Slow Threshold +TLLD=OFF; LLD Threshold +THFA=230.00; Fast Threshold +DACO=SHAPED; DAC Output +DACF=50; DAC Offset +RTDS=0; RTD Sensitivity +RTDT=0.00; RTD Threshold +BLRM=1; BLR Mode +BLRD=3; BLR Down Correction +BLRU=0; BLR Up Correction +AUO1=SCA8; AUX_OUT Selection +PRET=OFF; Preset Time +PRER=7200.000; Preset Real Time +PREC=OFF; Preset Counts +PRCL=1; Preset Counts Low Threshold +PRCH=8191; Preset Counts High Threshold +HVSE=-110; HV Set +TECS=220; TEC Set +PAPZ=OFF; Pole-Zero +PAPS=8.5; Preamp 8.5/5 (N/A) +SCOE=FA; Scope Trigger Edge +SCOT=12; Scope Trigger Position +SCOG=1; Digital Scope Gain +MCSL=1; MCS Low Threshold +MCSH=8191; MCS High Threshold +MCST=0.00; MCS Timebase +AUO2=ICR; AUX_OUT2 Selection +TPMO=OFF; Test Pulser On/Off +GPED=RI; G.P. Counter Edge +GPIN=AUX1; G.P. Counter Input +GPME=ON; G.P. Counter Uses MCA_EN? +GPGA=ON; G.P. Counter Uses GATE? +GPMC=ON; G.P. Counter Cleared With MCA Counters? +MCAE=OFF; MCA/MCS Enable +VOLU=OFF; Speaker On/Off +CON1=DAC; Connector 1 +CON2=AUXOUT2; Connector 2 +<> +<> +Device Type: PX5 +Serial Number: 2264 +Firmware: 6.07 Build: 3 +FPGA: 6.02 +Fast Count: 21768 +Slow Count: 317933 +Accumulation Time: 7194.999000 +Real Time: 7200.000000 +Dead Time: +HV Volt: -110V +TEC Temp: 221K +Board Temp: 38C +<> diff --git a/Data/NoFilm_for_C12_4h_2.mca b/Data/NoFilm_for_C12_4h_2.mca new file mode 100644 index 0000000..1a3439b --- /dev/null +++ b/Data/NoFilm_for_C12_4h_2.mca @@ -0,0 +1,2132 @@ +<> +TAG - live_data +DESCRIPTION - +GAIN - 3 +THRESHOLD - 0 +LIVE_MODE - 0 +PRESET_TIME - 0 +LIVE_TIME - 14390.081000 +REAL_TIME - 14400.000000 +START_TIME - 10/14/2024 18:14:36 +SERIAL_NUMBER - 0 +<> +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +199 +256 +221 +250 +247 +250 +255 +206 +218 +232 +202 +198 +208 +213 +200 +201 +229 +195 +201 +175 +209 +188 +224 +206 +196 +195 +203 +199 +219 +180 +212 +191 +185 +160 +184 +212 +207 +180 +181 +185 +173 +166 +183 +194 +179 +183 +206 +174 +191 +215 +194 +195 +199 +172 +169 +188 +184 +190 +181 +173 +181 +172 +192 +184 +191 +180 +160 +165 +179 +169 +170 +160 +193 +165 +175 +198 +179 +162 +150 +183 +164 +173 +161 +171 +178 +199 +166 +175 +146 +163 +157 +163 +168 +167 +159 +175 +155 +157 +174 +169 +166 +131 +141 +152 +154 +161 +152 +152 +144 +157 +145 +157 +160 +162 +149 +131 +141 +139 +148 +123 +142 +147 +125 +166 +109 +133 +141 +144 +150 +152 +148 +143 +148 +174 +153 +163 +161 +179 +132 +158 +151 +151 +154 +150 +141 +162 +171 +151 +142 +143 +168 +149 +148 +158 +147 +147 +147 +159 +155 +214 +249 +296 +326 +351 +272 +208 +185 +157 +168 +156 +129 +170 +157 +156 +181 +182 +209 +231 +197 +256 +253 +177 +182 +151 +184 +181 +187 +202 +226 +308 +422 +524 +643 +793 +811 +728 +550 +355 +266 +199 +170 +173 +197 +174 +152 +201 +177 +173 +193 +179 +213 +191 +211 +239 +269 +270 +318 +250 +213 +205 +167 +183 +175 +193 +191 +218 +234 +244 +313 +297 +293 +263 +277 +258 +291 +277 +335 +326 +374 +462 +841 +1955 +5460 +14104 +30367 +53216 +74601 +82386 +72377 +51063 +28776 +12866 +4846 +1592 +609 +362 +322 +285 +316 +290 +254 +239 +233 +274 +313 +342 +354 +407 +572 +874 +1878 +3571 +6789 +10476 +13294 +14082 +12113 +8210 +4612 +2120 +862 +308 +109 +80 +67 +75 +79 +62 +54 +57 +54 +62 +52 +61 +55 +51 +75 +67 +38 +56 +66 +57 +56 +62 +62 +62 +69 +54 +71 +33 +48 +66 +43 +42 +39 +38 +51 +52 +31 +56 +46 +47 +50 +48 +60 +66 +85 +68 +85 +62 +50 +61 +52 +37 +55 +41 +34 +33 +38 +44 +27 +37 +30 +27 +27 +26 +39 +33 +27 +38 +34 +32 +31 +31 +34 +23 +32 +30 +16 +26 +34 +26 +25 +27 +26 +21 +29 +15 +29 +25 +26 +22 +24 +16 +22 +11 +19 +12 +19 +15 +18 +25 +27 +22 +18 +10 +21 +17 +23 +23 +18 +35 +38 +40 +35 +32 +33 +40 +22 +30 +24 +20 +23 +24 +23 +8 +19 +22 +23 +17 +17 +21 +13 +25 +15 +25 +28 +20 +28 +20 +16 +23 +13 +16 +12 +16 +15 +16 +17 +15 +17 +8 +17 +16 +13 +9 +11 +9 +15 +8 +20 +13 +9 +9 +11 +11 +10 +15 +18 +13 +14 +10 +17 +10 +11 +10 +11 +13 +13 +8 +12 +16 +11 +16 +22 +19 +22 +12 +16 +13 +12 +9 +12 +8 +18 +15 +12 +12 +12 +20 +17 +10 +9 +11 +12 +21 +10 +21 +15 +10 +15 +12 +10 +17 +13 +13 +14 +17 +9 +10 +15 +9 +9 +10 +7 +6 +10 +11 +17 +15 +14 +5 +12 +9 +10 +12 +8 +15 +10 +7 +9 +10 +11 +9 +9 +12 +13 +14 +8 +7 +18 +10 +10 +9 +9 +7 +8 +9 +12 +6 +3 +8 +10 +7 +9 +8 +15 +20 +14 +20 +14 +15 +16 +11 +9 +5 +11 +11 +6 +11 +9 +8 +13 +11 +7 +10 +8 +7 +12 +4 +8 +12 +8 +12 +11 +4 +12 +10 +3 +4 +10 +4 +13 +7 +5 +8 +9 +5 +6 +7 +10 +5 +5 +7 +9 +5 +5 +13 +11 +4 +12 +3 +12 +8 +11 +4 +6 +3 +7 +7 +9 +5 +8 +12 +15 +10 +6 +13 +8 +8 +14 +4 +6 +8 +4 +9 +9 +7 +4 +2 +12 +6 +5 +10 +8 +11 +10 +2 +4 +9 +5 +8 +12 +8 +9 +10 +11 +7 +6 +6 +8 +7 +7 +5 +9 +9 +6 +7 +8 +7 +7 +12 +7 +8 +8 +8 +6 +6 +7 +9 +11 +8 +8 +10 +8 +5 +9 +15 +9 +8 +7 +3 +6 +5 +6 +10 +8 +3 +7 +5 +9 +8 +10 +10 +8 +9 +1 +14 +14 +16 +6 +14 +16 +13 +13 +8 +9 +11 +7 +6 +7 +9 +11 +5 +11 +6 +5 +4 +3 +5 +8 +5 +5 +7 +8 +5 +7 +2 +11 +10 +8 +9 +6 +7 +9 +9 +6 +5 +6 +3 +13 +10 +7 +9 +6 +8 +12 +5 +5 +11 +8 +14 +5 +10 +10 +9 +13 +10 +9 +10 +10 +10 +11 +7 +11 +14 +13 +13 +8 +11 +12 +9 +8 +4 +7 +6 +9 +10 +13 +4 +8 +4 +6 +10 +5 +11 +6 +7 +15 +15 +14 +19 +27 +15 +24 +18 +24 +17 +26 +33 +31 +38 +35 +28 +26 +30 +15 +12 +6 +10 +6 +4 +10 +3 +6 +5 +3 +7 +5 +7 +9 +6 +5 +2 +9 +5 +8 +7 +12 +4 +6 +14 +15 +17 +19 +29 +27 +22 +30 +16 +18 +8 +11 +10 +6 +13 +8 +5 +6 +4 +5 +4 +9 +8 +8 +1 +8 +8 +3 +8 +4 +6 +8 +8 +7 +10 +8 +6 +9 +10 +7 +3 +9 +9 +12 +7 +3 +7 +1 +9 +7 +4 +6 +2 +5 +5 +3 +6 +5 +7 +3 +10 +5 +7 +8 +6 +6 +6 +13 +2 +6 +12 +7 +6 +13 +10 +13 +8 +10 +2 +3 +4 +5 +6 +1 +5 +4 +2 +9 +6 +7 +6 +4 +9 +8 +6 +5 +7 +9 +10 +4 +6 +8 +14 +5 +9 +6 +6 +7 +6 +9 +8 +9 +6 +4 +9 +8 +2 +7 +5 +3 +6 +4 +4 +7 +7 +10 +6 +2 +3 +3 +9 +7 +5 +6 +6 +6 +7 +6 +5 +3 +4 +6 +2 +8 +4 +6 +10 +7 +4 +1 +6 +1 +4 +5 +4 +5 +6 +8 +4 +8 +6 +4 +7 +6 +4 +5 +5 +8 +4 +5 +5 +4 +5 +5 +5 +9 +3 +6 +4 +5 +2 +4 +12 +7 +9 +8 +7 +4 +7 +7 +7 +6 +9 +10 +7 +8 +6 +11 +7 +4 +7 +1 +5 +7 +12 +10 +5 +7 +3 +4 +6 +8 +6 +5 +9 +7 +7 +5 +9 +5 +7 +5 +8 +12 +6 +4 +5 +6 +1 +8 +5 +7 +8 +8 +9 +11 +5 +8 +4 +8 +3 +6 +4 +13 +6 +10 +5 +1 +6 +7 +2 +4 +5 +5 +9 +11 +9 +7 +5 +6 +6 +6 +7 +4 +9 +9 +7 +8 +9 +5 +4 +9 +11 +7 +4 +9 +7 +5 +7 +8 +10 +6 +1 +12 +7 +3 +7 +10 +10 +8 +13 +8 +2 +9 +5 +4 +7 +7 +7 +4 +8 +8 +9 +10 +7 +13 +3 +17 +9 +10 +6 +9 +11 +8 +5 +7 +6 +10 +7 +11 +7 +8 +7 +6 +6 +10 +3 +3 +7 +7 +17 +7 +10 +8 +11 +6 +5 +9 +10 +10 +7 +6 +7 +7 +8 +3 +11 +10 +10 +9 +13 +11 +6 +7 +9 +9 +11 +7 +10 +13 +4 +9 +11 +6 +10 +7 +15 +9 +11 +14 +12 +10 +8 +10 +10 +4 +11 +13 +6 +13 +13 +11 +17 +11 +10 +16 +15 +19 +9 +10 +13 +10 +10 +7 +11 +4 +5 +12 +9 +9 +13 +11 +13 +14 +8 +10 +13 +16 +11 +12 +12 +14 +13 +18 +12 +7 +17 +13 +10 +13 +14 +20 +8 +9 +15 +13 +17 +18 +15 +10 +16 +14 +12 +13 +12 +10 +14 +16 +14 +25 +17 +16 +14 +14 +26 +15 +27 +14 +19 +13 +18 +18 +18 +25 +13 +17 +16 +22 +16 +11 +22 +22 +17 +25 +13 +16 +35 +20 +11 +18 +22 +17 +17 +20 +19 +18 +20 +25 +24 +23 +27 +24 +23 +31 +39 +31 +32 +26 +28 +23 +27 +23 +36 +27 +26 +21 +31 +20 +26 +44 +34 +26 +38 +29 +34 +32 +21 +39 +31 +27 +35 +29 +35 +37 +26 +38 +30 +28 +37 +30 +42 +31 +28 +26 +30 +34 +33 +30 +24 +37 +42 +44 +26 +51 +30 +40 +34 +37 +38 +30 +33 +31 +36 +30 +40 +34 +40 +34 +32 +42 +30 +46 +39 +40 +34 +43 +33 +40 +46 +40 +40 +48 +38 +38 +44 +45 +33 +40 +51 +35 +48 +39 +42 +44 +37 +54 +35 +31 +38 +45 +36 +54 +49 +48 +43 +42 +49 +58 +51 +50 +47 +49 +49 +59 +34 +57 +42 +53 +48 +47 +59 +58 +45 +65 +62 +48 +42 +47 +53 +64 +49 +57 +59 +57 +49 +68 +71 +55 +64 +42 +53 +60 +60 +80 +79 +59 +66 +71 +65 +85 +66 +85 +83 +84 +79 +64 +93 +76 +78 +81 +85 +61 +95 +78 +94 +80 +66 +72 +83 +104 +88 +87 +78 +91 +104 +108 +85 +101 +100 +89 +95 +112 +98 +118 +110 +122 +124 +119 +110 +134 +128 +131 +138 +138 +127 +188 +127 +141 +146 +158 +141 +174 +161 +171 +184 +181 +175 +176 +206 +170 +191 +182 +198 +192 +195 +233 +224 +219 +219 +254 +236 +267 +264 +258 +267 +275 +282 +289 +292 +274 +279 +344 +312 +350 +367 +330 +338 +341 +354 +362 +372 +368 +409 +396 +437 +429 +407 +428 +409 +478 +426 +463 +469 +473 +440 +473 +429 +438 +451 +432 +419 +428 +461 +494 +469 +466 +480 +405 +463 +414 +431 +437 +391 +403 +385 +378 +363 +385 +377 +355 +357 +378 +382 +363 +363 +352 +354 +332 +338 +338 +329 +287 +333 +289 +278 +282 +281 +277 +271 +251 +237 +249 +256 +222 +264 +219 +203 +223 +188 +199 +200 +223 +160 +190 +165 +190 +183 +175 +148 +151 +140 +140 +153 +134 +142 +140 +147 +142 +124 +117 +133 +113 +137 +115 +122 +113 +112 +112 +97 +95 +98 +113 +105 +88 +84 +88 +89 +83 +77 +94 +90 +86 +81 +83 +73 +74 +68 +77 +67 +55 +77 +63 +50 +76 +55 +63 +56 +58 +57 +52 +64 +69 +57 +56 +58 +46 +61 +49 +47 +62 +53 +53 +54 +49 +46 +44 +45 +49 +53 +45 +42 +39 +38 +45 +36 +47 +43 +38 +43 +37 +42 +39 +35 +30 +45 +42 +34 +25 +33 +35 +32 +41 +34 +30 +31 +34 +25 +36 +26 +39 +31 +40 +22 +31 +25 +33 +29 +32 +39 +33 +22 +30 +23 +32 +27 +22 +24 +30 +28 +34 +26 +24 +22 +31 +34 +28 +34 +34 +24 +32 +24 +22 +25 +23 +34 +25 +24 +18 +27 +20 +14 +19 +18 +28 +22 +28 +24 +24 +18 +20 +22 +23 +23 +28 +19 +18 +23 +28 +16 +22 +21 +21 +20 +24 +21 +19 +23 +18 +30 +20 +19 +13 +19 +16 +20 +25 +17 +12 +20 +11 +15 +14 +20 +17 +22 +19 +20 +17 +14 +20 +13 +17 +15 +10 +11 +16 +10 +16 +12 +8 +15 +6 +22 +20 +19 +23 +12 +17 +12 +12 +15 +17 +11 +21 +10 +13 +13 +17 +7 +18 +10 +15 +17 +10 +16 +14 +15 +11 +16 +11 +8 +8 +12 +12 +12 +8 +10 +17 +11 +11 +14 +9 +8 +8 +11 +11 +5 +6 +14 +9 +9 +13 +5 +8 +13 +17 +22 +22 +44 +58 +81 +98 +155 +174 +238 +248 +310 +347 +430 +463 +482 +477 +484 +443 +388 +387 +333 +293 +241 +161 +140 +99 +77 +54 +27 +17 +9 +11 +3 +7 +4 +2 +1 +1 +2 +0 +0 +1 +0 +1 +0 +2 +1 +2 +0 +0 +1 +1 +1 +4 +0 +0 +2 +0 +0 +0 +1 +2 +0 +1 +1 +3 +0 +2 +2 +0 +1 +0 +0 +1 +2 +0 +1 +2 +1 +2 +2 +0 +0 +2 +1 +0 +3 +1 +0 +1 +2 +1 +0 +2 +1 +0 +0 +3 +2 +2 +2 +1 +1 +0 +1 +2 +3 +0 +0 +2 +1 +0 +1 +1 +0 +0 +3 +1 +1 +1 +2 +0 +1 +3 +1 +0 +1 +2 +1 +1 +0 +1 +0 +0 +1 +2 +1 +2 +1 +1 +1 +0 +1 +1 +1 +0 +2 +3 +1 +<> +<> +RESC=?; Reset Configuration +CLCK=80; 20MHz/80MHz +TPEA=9.600; Peaking Time +GAIF=0.9312; Fine Gain +GAIN=21.162; Total Gain (Analog * Fine) +RESL=204; Detector Reset Lockout +TFLA=0.200; Flat Top +TPFA=50; Fast Channel Peaking Time +PURE=OFF; PUR Interval On/Off +RTDE=OFF; RTD On/Off +MCAS=NORM; MCA Source +MCAC=2048; MCA/MCS Channels +SOFF=OFF; Set Spectrum Offset +AINP=POS; Analog Input Pos/Neg +INOF=DEF; Input Offset +GAIA=15; Analog Gain Index +CUSP=0; Non-Trapezoidal Shaping +PDMD=NORM; Peak Detect Mode (Min/Max) +THSL=0.585; Slow Threshold +TLLD=OFF; LLD Threshold +THFA=230.00; Fast Threshold +DACO=SHAPED; DAC Output +DACF=50; DAC Offset +RTDS=0; RTD Sensitivity +RTDT=0.00; RTD Threshold +BLRM=1; BLR Mode +BLRD=3; BLR Down Correction +BLRU=0; BLR Up Correction +AUO1=SCA8; AUX_OUT Selection +PRET=OFF; Preset Time +PRER=14400.000; Preset Real Time +PREC=OFF; Preset Counts +PRCL=1; Preset Counts Low Threshold +PRCH=8191; Preset Counts High Threshold +HVSE=-110; HV Set +TECS=220; TEC Set +PAPZ=OFF; Pole-Zero +PAPS=8.5; Preamp 8.5/5 (N/A) +SCOE=FA; Scope Trigger Edge +SCOT=12; Scope Trigger Position +SCOG=1; Digital Scope Gain +MCSL=1; MCS Low Threshold +MCSH=8191; MCS High Threshold +MCST=0.00; MCS Timebase +AUO2=ICR; AUX_OUT2 Selection +TPMO=OFF; Test Pulser On/Off +GPED=RI; G.P. Counter Edge +GPIN=AUX1; G.P. Counter Input +GPME=ON; G.P. Counter Uses MCA_EN? +GPGA=ON; G.P. Counter Uses GATE? +GPMC=ON; G.P. Counter Cleared With MCA Counters? +MCAE=OFF; MCA/MCS Enable +VOLU=OFF; Speaker On/Off +CON1=DAC; Connector 1 +CON2=AUXOUT2; Connector 2 +<> +<> +Device Type: PX5 +Serial Number: 2264 +Firmware: 6.07 Build: 3 +FPGA: 6.02 +Fast Count: 45950 +Slow Count: 647129 +Accumulation Time: 14390.081000 +Real Time: 14400.000000 +Dead Time: +HV Volt: -110V +TEC Temp: 220K +Board Temp: 34C +<> diff --git a/Data/SampleC12_4h.mca b/Data/SampleC12_4h.mca new file mode 100644 index 0000000..4128605 --- /dev/null +++ b/Data/SampleC12_4h.mca @@ -0,0 +1,2132 @@ +<> +TAG - live_data +DESCRIPTION - +GAIN - 3 +THRESHOLD - 0 +LIVE_MODE - 0 +PRESET_TIME - 0 +LIVE_TIME - 14390.086000 +REAL_TIME - 14400.000000 +START_TIME - 10/14/2024 13:38:26 +SERIAL_NUMBER - 0 +<> +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +203 +236 +268 +232 +263 +243 +251 +257 +236 +220 +239 +242 +226 +245 +211 +211 +212 +209 +203 +227 +202 +227 +187 +183 +183 +203 +210 +192 +197 +180 +214 +211 +190 +203 +185 +184 +200 +186 +182 +148 +174 +173 +158 +186 +179 +181 +184 +201 +210 +170 +194 +201 +180 +183 +200 +180 +169 +217 +158 +189 +183 +170 +172 +168 +193 +193 +159 +176 +179 +169 +183 +157 +157 +182 +184 +163 +164 +179 +195 +162 +163 +183 +194 +195 +177 +145 +180 +161 +160 +183 +174 +171 +160 +161 +155 +181 +173 +160 +165 +169 +169 +140 +153 +162 +170 +151 +128 +142 +165 +169 +158 +131 +161 +126 +150 +153 +140 +127 +153 +150 +161 +132 +151 +121 +160 +152 +144 +143 +153 +129 +136 +141 +156 +154 +154 +145 +146 +155 +150 +157 +169 +166 +136 +149 +149 +152 +140 +151 +154 +141 +142 +158 +150 +150 +153 +181 +150 +174 +156 +233 +261 +335 +384 +333 +299 +209 +172 +118 +160 +138 +158 +176 +143 +185 +164 +161 +182 +205 +221 +214 +219 +212 +193 +182 +179 +168 +187 +228 +242 +289 +389 +546 +659 +863 +935 +782 +547 +323 +231 +183 +174 +163 +175 +172 +165 +189 +174 +170 +205 +186 +170 +185 +223 +262 +291 +276 +316 +278 +213 +225 +221 +172 +183 +178 +190 +201 +235 +236 +285 +321 +266 +267 +287 +274 +265 +275 +328 +315 +411 +513 +835 +1980 +5466 +13799 +30093 +52385 +72997 +81888 +71647 +50491 +27910 +12647 +4637 +1521 +603 +355 +310 +280 +281 +261 +262 +242 +238 +273 +287 +324 +410 +448 +543 +896 +1826 +3550 +6709 +10273 +13277 +13932 +11836 +8087 +4431 +2040 +819 +300 +125 +84 +70 +72 +69 +73 +59 +57 +72 +50 +54 +74 +61 +57 +57 +60 +61 +64 +73 +56 +61 +80 +45 +60 +45 +47 +40 +43 +51 +45 +43 +46 +40 +47 +47 +44 +44 +38 +39 +36 +59 +59 +55 +71 +77 +75 +81 +80 +69 +52 +38 +42 +58 +47 +39 +39 +44 +48 +38 +34 +36 +45 +38 +47 +30 +37 +38 +39 +32 +39 +36 +37 +26 +32 +36 +34 +24 +26 +26 +29 +28 +18 +33 +29 +18 +29 +24 +22 +23 +17 +24 +30 +19 +30 +35 +20 +26 +19 +25 +26 +8 +28 +26 +19 +22 +20 +17 +19 +22 +35 +31 +42 +43 +36 +32 +34 +25 +26 +19 +18 +14 +21 +12 +19 +19 +15 +18 +18 +20 +16 +11 +12 +19 +19 +18 +17 +23 +22 +15 +19 +14 +11 +12 +17 +17 +5 +17 +17 +15 +9 +14 +19 +15 +11 +18 +16 +10 +14 +14 +16 +13 +13 +11 +14 +22 +17 +15 +14 +11 +9 +11 +15 +13 +15 +13 +12 +8 +10 +11 +15 +13 +11 +16 +11 +15 +10 +15 +16 +13 +10 +12 +13 +18 +15 +14 +12 +12 +14 +14 +9 +11 +13 +8 +5 +20 +8 +12 +11 +12 +15 +8 +12 +14 +12 +15 +12 +13 +8 +10 +9 +17 +12 +12 +13 +9 +14 +9 +7 +5 +8 +10 +5 +9 +11 +5 +8 +8 +11 +9 +5 +3 +12 +8 +12 +7 +9 +11 +7 +11 +5 +7 +7 +9 +11 +12 +8 +13 +10 +9 +12 +7 +8 +14 +16 +9 +12 +10 +17 +18 +16 +14 +10 +11 +7 +9 +17 +9 +9 +9 +9 +6 +7 +10 +10 +6 +5 +9 +9 +7 +11 +13 +7 +10 +1 +6 +7 +7 +8 +7 +7 +7 +8 +9 +11 +8 +6 +4 +8 +8 +11 +6 +2 +12 +4 +7 +7 +9 +9 +6 +6 +10 +6 +7 +12 +8 +8 +7 +11 +13 +7 +6 +4 +11 +8 +8 +8 +10 +9 +13 +9 +5 +7 +7 +10 +11 +4 +12 +3 +7 +5 +6 +4 +11 +5 +10 +10 +10 +7 +5 +5 +8 +10 +8 +7 +10 +7 +4 +11 +6 +9 +10 +4 +9 +7 +7 +8 +20 +5 +8 +6 +5 +3 +12 +4 +10 +8 +7 +11 +7 +3 +8 +11 +10 +7 +4 +8 +6 +7 +10 +8 +8 +9 +4 +5 +5 +7 +7 +2 +8 +7 +5 +14 +10 +8 +14 +8 +16 +20 +22 +16 +11 +19 +11 +13 +12 +11 +8 +6 +7 +7 +4 +1 +12 +8 +8 +7 +13 +10 +4 +6 +4 +7 +4 +5 +9 +9 +9 +8 +8 +5 +13 +11 +9 +8 +6 +6 +7 +4 +4 +5 +10 +5 +9 +8 +10 +9 +7 +9 +11 +4 +7 +9 +6 +10 +7 +7 +13 +7 +11 +11 +6 +9 +11 +6 +7 +13 +9 +9 +7 +10 +10 +15 +10 +9 +6 +15 +11 +6 +16 +14 +7 +8 +9 +7 +8 +12 +9 +10 +12 +17 +22 +17 +9 +28 +24 +14 +23 +32 +27 +29 +27 +26 +24 +32 +17 +9 +17 +14 +8 +3 +6 +5 +5 +10 +3 +6 +9 +11 +4 +6 +8 +6 +5 +8 +5 +10 +14 +15 +12 +11 +13 +19 +21 +32 +24 +22 +30 +19 +20 +16 +13 +17 +8 +10 +2 +11 +3 +6 +6 +4 +9 +1 +9 +3 +9 +5 +6 +11 +7 +3 +6 +7 +9 +6 +8 +5 +10 +9 +5 +6 +7 +9 +5 +6 +4 +4 +8 +6 +5 +9 +4 +7 +5 +4 +6 +7 +4 +4 +6 +6 +5 +4 +6 +2 +8 +7 +6 +10 +12 +3 +4 +12 +12 +10 +13 +14 +10 +13 +15 +9 +9 +8 +8 +5 +4 +7 +6 +5 +7 +6 +3 +5 +7 +4 +10 +4 +6 +7 +7 +2 +7 +4 +6 +6 +8 +5 +6 +3 +6 +4 +6 +9 +7 +5 +5 +7 +5 +15 +5 +5 +5 +6 +5 +6 +4 +5 +6 +13 +3 +5 +9 +6 +4 +6 +6 +6 +3 +5 +5 +2 +8 +5 +4 +9 +7 +2 +5 +9 +2 +4 +7 +5 +3 +5 +4 +4 +10 +4 +7 +4 +3 +4 +2 +4 +7 +8 +3 +2 +6 +8 +7 +1 +9 +10 +9 +6 +10 +7 +6 +5 +6 +8 +8 +10 +5 +5 +4 +4 +6 +9 +3 +12 +5 +15 +9 +7 +4 +7 +4 +5 +2 +7 +6 +5 +9 +7 +9 +9 +5 +6 +6 +4 +9 +6 +14 +5 +12 +6 +6 +5 +12 +11 +11 +5 +10 +5 +3 +6 +3 +5 +11 +5 +2 +6 +3 +4 +9 +6 +9 +5 +5 +2 +6 +3 +5 +5 +8 +7 +9 +13 +5 +3 +6 +6 +8 +4 +4 +4 +5 +2 +7 +5 +7 +6 +7 +12 +8 +4 +5 +5 +8 +8 +8 +3 +4 +3 +2 +4 +6 +7 +6 +7 +5 +11 +8 +3 +2 +11 +7 +9 +2 +9 +9 +7 +7 +6 +16 +4 +9 +4 +7 +4 +6 +5 +7 +10 +4 +8 +9 +11 +6 +9 +3 +8 +7 +8 +6 +4 +14 +9 +5 +9 +11 +8 +5 +13 +6 +7 +7 +7 +2 +8 +10 +14 +11 +15 +6 +5 +8 +9 +5 +8 +9 +7 +8 +14 +9 +7 +10 +9 +10 +20 +10 +8 +7 +11 +7 +13 +9 +15 +5 +9 +13 +11 +7 +9 +8 +10 +16 +15 +11 +10 +11 +9 +10 +7 +11 +11 +15 +6 +14 +7 +8 +9 +6 +10 +9 +14 +8 +17 +9 +19 +7 +12 +10 +12 +13 +10 +13 +16 +19 +10 +12 +14 +12 +9 +14 +17 +11 +10 +12 +20 +11 +14 +8 +15 +13 +7 +16 +10 +12 +12 +15 +9 +18 +13 +11 +9 +9 +16 +14 +17 +20 +10 +12 +23 +10 +11 +14 +16 +11 +17 +11 +25 +16 +17 +14 +18 +10 +18 +15 +22 +11 +20 +28 +17 +28 +16 +15 +22 +20 +23 +16 +20 +24 +27 +21 +23 +22 +13 +20 +19 +23 +23 +24 +28 +20 +23 +25 +25 +17 +18 +34 +28 +22 +21 +24 +23 +36 +23 +21 +18 +36 +20 +24 +23 +28 +31 +34 +31 +22 +23 +37 +30 +26 +34 +40 +33 +28 +35 +31 +28 +25 +28 +33 +29 +22 +42 +42 +24 +41 +35 +38 +25 +29 +42 +36 +32 +39 +40 +19 +40 +44 +28 +37 +32 +38 +38 +44 +36 +36 +34 +29 +32 +49 +37 +35 +33 +33 +32 +37 +33 +33 +35 +32 +32 +31 +41 +39 +43 +50 +30 +62 +36 +42 +41 +33 +43 +46 +39 +49 +34 +39 +38 +50 +66 +42 +41 +54 +37 +49 +41 +47 +55 +37 +53 +60 +49 +48 +49 +43 +42 +53 +63 +51 +39 +60 +61 +52 +58 +54 +59 +49 +40 +34 +70 +68 +49 +48 +54 +57 +62 +74 +45 +49 +53 +66 +56 +64 +63 +62 +59 +76 +70 +65 +74 +79 +67 +77 +58 +70 +64 +77 +83 +75 +73 +59 +83 +88 +68 +68 +77 +78 +70 +92 +86 +87 +90 +91 +89 +77 +96 +70 +122 +99 +101 +113 +90 +95 +120 +95 +113 +112 +118 +128 +103 +123 +136 +120 +129 +131 +129 +136 +137 +142 +132 +136 +145 +138 +160 +144 +157 +146 +186 +161 +166 +187 +185 +186 +176 +158 +192 +215 +180 +246 +232 +219 +232 +219 +255 +241 +249 +252 +253 +268 +306 +293 +277 +281 +304 +324 +319 +331 +344 +371 +315 +325 +394 +397 +396 +369 +384 +389 +385 +407 +387 +454 +408 +433 +437 +439 +453 +430 +424 +437 +476 +508 +459 +482 +423 +436 +476 +428 +441 +417 +436 +458 +427 +442 +410 +425 +421 +408 +396 +415 +385 +402 +409 +366 +376 +390 +379 +367 +339 +364 +317 +357 +309 +312 +314 +287 +305 +298 +286 +307 +265 +278 +282 +262 +259 +274 +247 +258 +203 +221 +229 +210 +207 +197 +201 +221 +166 +204 +189 +179 +179 +169 +170 +154 +157 +152 +126 +148 +169 +144 +138 +115 +115 +131 +113 +106 +116 +118 +113 +99 +126 +95 +98 +116 +100 +102 +91 +98 +92 +80 +103 +91 +93 +82 +71 +80 +81 +70 +77 +71 +80 +64 +61 +61 +65 +78 +53 +68 +82 +75 +69 +62 +70 +58 +49 +49 +54 +50 +58 +58 +53 +48 +38 +58 +63 +58 +57 +59 +57 +53 +52 +32 +49 +47 +36 +48 +50 +50 +21 +51 +39 +41 +33 +32 +36 +27 +39 +38 +31 +28 +37 +43 +26 +39 +39 +35 +27 +35 +38 +34 +45 +34 +26 +34 +29 +26 +30 +39 +27 +36 +44 +45 +24 +26 +27 +29 +28 +33 +24 +28 +22 +23 +26 +35 +24 +33 +36 +31 +23 +21 +28 +31 +19 +19 +23 +23 +27 +15 +34 +27 +33 +22 +19 +16 +26 +28 +27 +30 +18 +24 +16 +19 +19 +24 +24 +21 +24 +20 +19 +22 +19 +23 +23 +17 +26 +28 +29 +25 +17 +23 +16 +21 +15 +18 +17 +17 +25 +14 +19 +20 +21 +15 +20 +14 +19 +18 +18 +17 +18 +25 +16 +16 +16 +17 +12 +13 +15 +15 +16 +14 +14 +8 +23 +14 +14 +11 +12 +14 +16 +15 +20 +17 +17 +17 +13 +12 +15 +11 +9 +13 +17 +9 +16 +15 +13 +21 +10 +11 +15 +8 +6 +16 +18 +18 +11 +13 +4 +13 +12 +3 +13 +13 +11 +16 +10 +15 +12 +9 +8 +8 +14 +9 +8 +13 +10 +7 +9 +8 +17 +16 +23 +25 +44 +54 +97 +101 +118 +176 +228 +247 +332 +365 +405 +446 +476 +499 +456 +447 +364 +347 +306 +281 +227 +151 +149 +105 +82 +46 +33 +19 +12 +12 +6 +3 +3 +2 +0 +1 +1 +1 +1 +1 +1 +0 +0 +1 +1 +1 +1 +0 +0 +2 +0 +1 +0 +1 +2 +0 +1 +0 +1 +2 +3 +1 +2 +2 +2 +1 +1 +0 +0 +1 +2 +0 +0 +3 +4 +1 +1 +0 +2 +0 +1 +1 +1 +2 +1 +2 +2 +0 +1 +1 +0 +1 +0 +1 +0 +0 +1 +1 +1 +1 +1 +2 +1 +2 +0 +1 +0 +3 +1 +0 +1 +0 +0 +0 +0 +1 +0 +0 +2 +1 +2 +0 +0 +2 +1 +1 +0 +1 +0 +0 +2 +0 +2 +1 +0 +0 +2 +1 +0 +1 +0 +1 +0 +2 +0 +1 +2 +<> +<> +RESC=?; Reset Configuration +CLCK=80; 20MHz/80MHz +TPEA=9.600; Peaking Time +GAIF=0.9312; Fine Gain +GAIN=21.162; Total Gain (Analog * Fine) +RESL=204; Detector Reset Lockout +TFLA=0.200; Flat Top +TPFA=50; Fast Channel Peaking Time +PURE=OFF; PUR Interval On/Off +RTDE=OFF; RTD On/Off +MCAS=NORM; MCA Source +MCAC=2048; MCA/MCS Channels +SOFF=OFF; Set Spectrum Offset +AINP=POS; Analog Input Pos/Neg +INOF=DEF; Input Offset +GAIA=15; Analog Gain Index +CUSP=0; Non-Trapezoidal Shaping +PDMD=NORM; Peak Detect Mode (Min/Max) +THSL=0.585; Slow Threshold +TLLD=OFF; LLD Threshold +THFA=230.00; Fast Threshold +DACO=SHAPED; DAC Output +DACF=50; DAC Offset +RTDS=0; RTD Sensitivity +RTDT=0.00; RTD Threshold +BLRM=1; BLR Mode +BLRD=3; BLR Down Correction +BLRU=0; BLR Up Correction +AUO1=SCA8; AUX_OUT Selection +PRET=OFF; Preset Time +PRER=14400.000; Preset Real Time +PREC=OFF; Preset Counts +PRCL=1; Preset Counts Low Threshold +PRCH=8191; Preset Counts High Threshold +HVSE=-110; HV Set +TECS=220; TEC Set +PAPZ=OFF; Pole-Zero +PAPS=8.5; Preamp 8.5/5 (N/A) +SCOE=FA; Scope Trigger Edge +SCOT=12; Scope Trigger Position +SCOG=1; Digital Scope Gain +MCSL=1; MCS Low Threshold +MCSH=8191; MCS High Threshold +MCST=0.00; MCS Timebase +AUO2=ICR; AUX_OUT2 Selection +TPMO=OFF; Test Pulser On/Off +GPED=RI; G.P. Counter Edge +GPIN=AUX1; G.P. Counter Input +GPME=ON; G.P. Counter Uses MCA_EN? +GPGA=ON; G.P. Counter Uses GATE? +GPMC=ON; G.P. Counter Cleared With MCA Counters? +MCAE=OFF; MCA/MCS Enable +VOLU=OFF; Speaker On/Off +CON1=DAC; Connector 1 +CON2=AUXOUT2; Connector 2 +<> +<> +Device Type: PX5 +Serial Number: 2264 +Firmware: 6.07 Build: 3 +FPGA: 6.02 +Fast Count: 45911 +Slow Count: 640112 +Accumulation Time: 14390.086000 +Real Time: 14400.000000 +Dead Time: +HV Volt: -109V +TEC Temp: 220K +Board Temp: 34C +<> diff --git a/Include/__pycache__/Analyze.cpython-38.pyc b/Include/__pycache__/Analyze.cpython-38.pyc new file mode 100644 index 0000000000000000000000000000000000000000..7da708dabe24c220edda3ad5950c4c0cb9c105e5 GIT binary patch literal 657 zcmYk3J8#rL5XblBXB>e5p&$^wL5hKb3L#KVMAsY=A&n&zS?9ewD}LSXTEb|rI!ZnP zRZ`OO0rEk%rQ$14G3&FUo7I2zw=?6}htCfWLj?BY`FfQRg#OsYzCjGV1IZ`ga+Ko| zeYP_xaY}NUv+pRSIXOeI^A{>mj17J^n^Vi9MKF7y6Og%GBDYT?-=4@wmwp1SGUC*4|vD{`-*B$`xik z4z4jqngN9aIhK@nM1xx7=}Uak{6he2uD`nLmc9VL_C0sn3+3c rtK$!anq(?7PTf^)FMLQ3HN&a)+^G~Cu6n&T(E9%BcJa#s_+x^Hi&5~AAU!ey z1SW6^f(iZ&0urhVC6Y^`7jK41LFU_uY4QI&qgl-~+weH=Fe@3*d)Io^n-u_+LDwirS;YOFhZmvKBcy0z=sXZBMzfzZ_d^R<2NV2g%@FoApQ0tIGPjZ`oJ z&R)S3y2B@J`cFGj?wzAX_lTf8VnNS_#14Dr6FV|&bE1aISMJiH+gKNm=78x>I_+$r zojNI2LR*{!GMrY-s&1s#CK3$$)HS4svGTUTyUM#Yfi>Tl6wz{bU8XXYi2{~Xk_GXRQYm70( pkojnA#QM&erJbV9Y0k{_QosC}JEns6-sdH6Gw}f_lje$^^A{fspN;?k literal 0 HcmV?d00001 diff --git a/Include/__pycache__/FitData.cpython-38.pyc b/Include/__pycache__/FitData.cpython-38.pyc new file mode 100644 index 0000000000000000000000000000000000000000..3c696c77e99e85e2e1d2367a83d6f31e0a5be7f4 GIT binary patch literal 2744 zcmd^BO>Y}T7@nD(UGMrM4NYhr5}4dL zQG#Yq;mCml2gHeM#7{u#kuxV$?EzKdfch7D;(2E`?m9{e;>t?%&Wzug@%s6A$G01e zD#P>bh3(A?(~SK|lky`lxr!EFLQqWcZ`c}BLOJNUlFCIdl&31_9p$S4y;N0IL+`5k zDr+^?9c(>(Tnr@I5?b6rP&{=EPTXSgg5ig~VOva}PndG{k&oU?cp?njr^xsDzF1~o zPN&j1Mi@EAK47V{ec3qpHre?LhuY@}#mtGqsO4nt{r)gaGFOMuMmKYMQPOfVvHLFC zdztL_;$*Gzpc`(*qd~@d2Ta$n`RV)Z&EcTi4)@|wdwIA%8g!#1Zhw6H#@%GI7u~(z z>ks1gjcC0;Qr-6TUa}k};X4oZGJDkOXh7)2b$SmjMUz*>89pU+1M>+`h=MUFzhVMF z_!f_w0Ho+GAPY*YB9|~D_W72KFByI~)|YKgB%EMUPLs_66hm_WR?MYAwn=9@ddC31 zCd)sWXQ>-WP~oC^NpZ^I-m}aCele{8?n-f%Z(LKM(`K1*&ayNxp7Bl4Br?41?~S+0 z4rE6Y0#BVz``QzZ5r}a5-AH>FYm!2%sw*`15whA&*dKM{yTnE&_C7(oo$)~?@9Ws{X4WUbH3V8mZv-r&N=d(ZgL8f_!R`kn-+U1runp}^V32K$zS4iK22QA zVZ{U=v273gCOp38**{*!nE(PQymI~i|aUV*^vNr-lTf%(nU2j+f(d0@cLme4<9 zM>U!T1Ad8tDi{b%HD>_afDM|>5+jvuV?6AY`VlhTJX?hd(9r8C{K%FlaZ)RB;^my^ z87$JX6keoo1|f5I$HeHf^l6g<0azlWPOe&lZ}hOI-bOAykC3xcX2fzLeC~;yC7=63 zFJR>aJ4EZ)DW5@7mK|0&#r9>V*k61JE-0}S383d#XG#63&5aqexw1?2^I5}5{t3(_ za719g|Dg#`w#czuKLndW!DiJuu3B*V8_ud(PJl1nNKRZ{`tzSqau0(*#zxBifAeq5uGw2BD%=Nwdre2o_BLl4N^`j6PDlD#a%0l zy1$sZwk}A0&$#32aSzqQRnp$=p7kx9Z5&kfMdP8SxvAVE^XYZaMbS%}s3m zTRGz2HE$5^qU2|C7lRVElRnI^*<07X_z6eHRQ7W(PWn%xnCrKY>$E)kr^nv5wy0YR lYJ$)%C^2Ne$X@0Chl8OS^}8S0e^ErU-|*-BbN)sD;@?M){0#sA literal 0 HcmV?d00001 diff --git a/Include/__pycache__/Thick.cpython-38.pyc b/Include/__pycache__/Thick.cpython-38.pyc new file mode 100644 index 0000000000000000000000000000000000000000..712bf9ce216fed20e5a451c9c9239989082c689c GIT binary patch literal 1227 zcmZ`2J#W)M^u3GiIF3`IQi(#+H?sBtVDf;xd)>ddL`ebJDH zY_vc!S!=WK6ewT} zQV$PWG@^HGUk@J3SB_DcJ7MC9W2V^34TS-%f*pCn&jK$zh95V(yGi7Cy~F&VyPot9 zB0m;+_u=!6EwLNKTRTA*<=u_AA0BYO`)oJp@2#YV%2^GAT=bJDU90JA^k!MWV0fuC ziTylZSq+oE7v^ikoZ9}soc3usi)A_ZyPPpBz^o*_t(gv%S%j#jD)-|&5QmvgBhx=i zR@cZSq@`JAgP+IWKR?=ja`!~HaXKiEILhPKZyNo5cs(=9z;Q`vG=M>M%n&U)vM+rNuMMyd$lsy z7MaZ0AnrMn+tl~=6sEnJ&|RJwO<8R;Whr`QQ}W6zFM1X)>7?`qDa!iQB$A$kZd87Y z5HJ^)@G>)yzDiSL`kL6rCev^Y=b3{JaW>kli7uN*i)DJz9(R~(($b`1BEn#sHX!u2 bOU)#1+4ouVmAx7z{2=t#^!Dbu-?sS++I18p literal 0 HcmV?d00001 diff --git a/Include/__pycache__/clear_frame.cpython-38.pyc b/Include/__pycache__/clear_frame.cpython-38.pyc new file mode 100644 index 0000000000000000000000000000000000000000..7b47c50acc192b14f7ace7b4cc1ec9ff1bc3c1eb GIT binary patch literal 436 zcmYjNJ8A+{&5WeQaM(i-+pm58JV59>kjrQQc>uT(B-Uh@kq^8?tnq@P);uFn z{f}S`cm%i`NC$L8Cp1B?gLiTuM|?sUZMz3-uR$S!F$`nK+ib#}x2B}2lyooHntMlu zratF%Ep}Yfl}#0=sbA9P zReueZq;3UY>pXecuM0^Kt9E^bPh{Khir?EfH;Tt;>56z_vO;m~UHr6|CO#KBSqZ6J zJk^;j7>_f_Q=6QJjyGl1zu;HlU%HSG8Q>mnVjIXT!t_I7NFJ)=cZg4lLNmgy~=!fXhzwkTu z>d9a5|QDrzqrueBoh*jKMQq)af;y%FfH32Udc1O5dznsJ9Y5%u4(rP1iuAMZ%`Z6=(2Yy3-ch^ zROOPnbSm=&Q&XlqlTXTdcgWOC8>{q;^^uYo-#4We=hhnAP2yTbjjI}VB~tDDqr{|& zg7iG~**n+>' in line][0] + # Reading data lines + data = [] + for line in lines[start:end]: + parts = line.strip().split() + if parts: + data.append(float(parts[0])) + return data + +source_data = load_mca_data('Data/NoFilm_for_C12_4h_2.mca') +source_film_data = load_mca_data('Data/SampleC12_4h.mca') +background_data = load_mca_data('Data/Fundo_acqTest_1hour_01.mca') + +# Setting ROI and attenuation coefficient +x1 = int(input("Enter the start channel: ")) # start channel +x2 = int(input("Enter the end channel: ")) # end channel +mu = float(sympify(input("Enter the attenuation coefficient in nm^-1: "))) # attenuation coefficient (nm^-1) + + +# Net peak areas +I0 = peakSum(x1, x2, source_data) +I = peakSum(x1, x2, source_film_data) +# Calculate film thickness +thickness = film_thickness(I, I0, mu) +print(f"Film thickness: {round(thickness)} nm") \ No newline at end of file diff --git a/PlotDataExercise.py b/PlotDataExercise.py new file mode 100644 index 0000000..0ff5054 --- /dev/null +++ b/PlotDataExercise.py @@ -0,0 +1,58 @@ +#RiP +from matplotlib.pylab import * +import matplotlib.pyplot as plt +import csv + +def PlotData(File): + """ + Plots yield vs channel data from our .mca file + + INPUTS: "FileName.mca" + OUTPUTS: yield vs channel plot + """ + + with open(File, 'r', encoding='latin1') as file: + reader = csv.reader(file, delimiter="\n", skipinitialspace=True) + data = list(reader) + #print(data) + x = [] + y = [] + aux = [] + time=float(data[7][0][data[7][0].find('- ')+len('- '):]) + end=[i for i in range(len(data)) if data[i]== ['<>']][-1] + #print(end) + for i in range(12,end): # len(data)-1 + aux.append(data[i][0].split()) + for i in range(len(aux)): + #x.append(float(0.004482*i-0.105144)) ## energy calibraion needs to be corrected + x.append(float(i)) ## axes in channel + y.append(float(aux[i][0])/time) + + fig, ax = plt.subplots() + ax.plot(x,y,'*-', color ='xkcd:black', label=(str(File))) + #ax.semilogy(x,y,'^', color ='xkcd:purple', label=(str(File))) + legend = ax.legend(loc="upper right",ncol=2, shadow=False,fancybox=True,framealpha = 0.0,fontsize=20) + legend.get_frame().set_facecolor('#DAEBF2') + tick_params(axis='both', which='major', labelsize=22) + ##xlabel('Energy (MeV)',fontsize=22) + xlabel('Channel',fontsize=22) + ylabel('Count rate ($\\rm{s}^{\\rm{-1}}$)', fontsize=22) + #yscale('log') + #grid() + show() + + return +################################################## + +#PlotData('Au+Pb_Films/u232_vacuum.mca') +#PlotData('Au+Pb_Films/u232+Au.mca') +#PlotData('Au+Pb_Films/u232+Pb.mca') +PlotData('Data/NoFilm_2h_17Jul_CuSource.mca') +PlotData('Data/Film_Sn_2h_17Jul_CuSource.mca') + + + + + + + diff --git a/__pycache__/new.cpython-38.pyc b/__pycache__/new.cpython-38.pyc new file mode 100644 index 0000000000000000000000000000000000000000..6bceef3147230bb514420d751c13e3023748c7f3 GIT binary patch literal 1999 zcmaJ?&2Jk;6rYc^y>^l|h(K)`#DEaW78<7&g0>1(Q6eErD3uxoA=4__?5v%Y_rsl; zZR2Qta!}GE{{Vtx{|ZiAxpCPm7kcB&iTB3&a0+6idGls=-psuBd+)b93kwYb?e_bl z{aqoR(kqtQqD^*Fi ziMQ|yY{^!DXPvbQC=T=u=z0r;q+?zX$p%C(7jVOLEXaVUj|`D~0^idQ4K=JF6O?p9 zCv1~ESsXhBFIeHU$me9tpWZ1r-05uf;ZWNYg`woBpL)Ek^y17nWkvaEKP-8a8n05a zgImyVmrfjM)2$6df1vZEq|r;FFg$aX@k8@uP}uRmjZ!7IS)h=CIvGDU6iy*Km#|wXDtFQ zvBL+CLX)dh?D@fw-NCI-#KG++VkJt0IM>m$ z&|7_lq421}=zCmMVNifNDX(4}xhs9+TeqiT?)C3@%^R?&83@AERgjllLU-^6bWQJr zK$lLy5p=0VUNGz8`5bVkC-4O@=W4y+C#(r>$R%>Zu8|+uQ)hdcEjDZ(E7|Irs)NBxUed(Iy30mi&jhuxj`>BsjlwW zZ(Nc=T|KsYpp0S9w|0-!)#I5xLqiLQYQZNQfG1-Iiyh`{!p9XLh^pbnF%?Sy6|4-& z5&Q`S8rXcy#Lxo=CwFq*~#t z&==1mvyTjxh!vgXDhNNelbbX3YnkcPeC@yNv)o)dLd;rE4U_zy@Qnfdd=q7<2(qx( zi-HIU-M-60udwJ({~v$-0z`>XD_J^(JjnX+7onY!b=FFjf}uv5 zCAB7?qTU0|qg#+s7096BNWB9K_NQ=>T^2OEbLQ}iByiW0Oy+TTA6ZJ{y35@Kx9Zj# Gt$zUehqZ_R literal 0 HcmV?d00001 diff --git a/new.py b/new.py index 32e1b20..8599996 100644 --- a/new.py +++ b/new.py @@ -36,21 +36,24 @@ def peakNet(x1, x2, values_list, background_data=None): return "N/A" if background_data is not None and (x1 > len(background_data) or x2 > len(background_data)): return "N/A" + + #both backgrounds + + bckg_file = background_file(x1, x2, background_data) if background_data is not None else None + bckg_calc = calc_bckg(x1, x2, values_list) soma = 0 - for i in range(int(x1), int(x2) + 1): + for idx, i in enumerate(range(int(x1), int(x2) + 1)): myCellValue = values_list[i - 1] - if background_data is not None: - bgd = background[i - 1] + if bckg_file is not None: + bgd = max(bckg_file[idx], bckg_calc[idx]) else: - yL = values_list[int(x1) - 1] - yU = values_list[int(x2) - 1] - m = (yU - yL) / (x2 - x1) if x2 - x1 != 0 else 0 - bgd = m * (i - x1) + yL + bgd = bckg_calc[idx] soma += myCellValue - bgd return soma + def film_thickness(I, I0, mu): """ Calculate film thickness using t = -1/mu * ln(I/I0) @@ -58,11 +61,6 @@ def film_thickness(I, I0, mu): I0: net peak area without film (source - background) mu: attenuation coefficient """ - if I <= 0 or I0 <= 0 or mu == 0 or I < I0: + if I <= 0 or I0 <= 0 or mu == 0: return float('nan') - return -1.0 / mu * np.log(I / I0) - - -print("text") -## More code -print("AGAIN") \ No newline at end of file + return -1.0 / mu * np.log(I / I0) \ No newline at end of file From 9e26738bd6ee6bbc39d25704214da5ffd9d46a16 Mon Sep 17 00:00:00 2001 From: aysuismailova Date: Mon, 21 Jul 2025 17:32:58 +0100 Subject: [PATCH 18/44] Gaussian fit --- NewMain.py | 54 +++++++++++++++++++++++++++++++++++++++++++++++------- 1 file changed, 47 insertions(+), 7 deletions(-) diff --git a/NewMain.py b/NewMain.py index bb5000b..bbd0939 100644 --- a/NewMain.py +++ b/NewMain.py @@ -1,6 +1,8 @@ -from new import peakSum, film_thickness +from new import film_thickness import numpy as np from sympy import sympify +from scipy.optimize import curve_fit +from matplotlib import pyplot as plt def load_mca_data(filename): with open(filename, 'r', encoding='latin1') as file: @@ -18,17 +20,55 @@ def load_mca_data(filename): source_data = load_mca_data('Data/NoFilm_for_C12_4h_2.mca') source_film_data = load_mca_data('Data/SampleC12_4h.mca') -background_data = load_mca_data('Data/Fundo_acqTest_1hour_01.mca') # Setting ROI and attenuation coefficient x1 = int(input("Enter the start channel: ")) # start channel x2 = int(input("Enter the end channel: ")) # end channel mu = float(sympify(input("Enter the attenuation coefficient in nm^-1: "))) # attenuation coefficient (nm^-1) +x_range = list(range(x1, x2 + 1)) +y_source = source_data[x1:x2 + 1] +y_film = source_film_data[x1:x2 + 1] -# Net peak areas -I0 = peakSum(x1, x2, source_data) -I = peakSum(x1, x2, source_film_data) -# Calculate film thickness +# Define the Gaussian function +def gaussian(x, A, x0, sigma): + return A * np.exp(-(x - x0)**2 / (2 * sigma**2)) + +# Fit source data +popt_source, _ = curve_fit(gaussian, x_range, y_source, p0=[max(y_source), x_range[np.argmax(y_source)], 1]) +A0, x0_0, sigma0 = popt_source + +# Fit film data +popt_film, _ = curve_fit(gaussian, x_range, y_film, p0=[max(y_film), x_range[np.argmax(y_film)], 1]) +A1, x0_1, sigma1 = popt_film + +# Calculate Gaussian integrals +I0 = A0 * sigma0 * np.sqrt(2 * np.pi) +I = A1 * sigma1 * np.sqrt(2 * np.pi) + +# Film thickness calculation thickness = film_thickness(I, I0, mu) -print(f"Film thickness: {round(thickness)} nm") \ No newline at end of file +print(f"Film thickness: {round(thickness)} nm") + +# Plot fits +# Plot 1: Source (no film) +plt.figure() +plt.plot(x_range, y_source, label='Source', color='blue') +plt.plot(x_range, gaussian(x_range, *popt_source), '--', label='Gaussian Fit (Source)', color='cyan') +plt.xlabel('Channel') +plt.ylabel('Counts') +plt.title('Gaussian Fit - Source (No Film)') +plt.legend() +plt.grid(True) + +# Plot 2: Film +plt.figure() +plt.plot(x_range, y_film, label='Source + Film', color = 'green') +plt.plot(x_range, gaussian(x_range, *popt_film), '--', label='Gaussian Fit (Source + Film)', color='lime') +plt.xlabel('Channel') +plt.ylabel('Counts') +plt.title('Gaussian Fit - Source + Film') +plt.legend() +plt.grid(True) + +plt.show() \ No newline at end of file From 2321e9f654cf87979065f9caa249a64e14923f72 Mon Sep 17 00:00:00 2001 From: aysuismailova Date: Tue, 22 Jul 2025 17:25:12 +0100 Subject: [PATCH 19/44] Gaussian fit --- Data/Ag_Calibration.mca | 2132 ++++++++++++++++++++++ Data/Ba_Calibration.mca | 2132 ++++++++++++++++++++++ Data/Be_Calibration.mca | 2132 ++++++++++++++++++++++ Data/Mo_Calibration.mca | 2132 ++++++++++++++++++++++ Data/NoFilm_overNight_2h_17Jul_1(Mo).mca | 2132 ++++++++++++++++++++++ Data/Rb_Calibration (20 mins).mca | 2132 ++++++++++++++++++++++ Data/Tb_Calibration.mca | 2132 ++++++++++++++++++++++ NewMain.py | 34 +- PlotDataExercise.py | 10 +- 9 files changed, 14953 insertions(+), 15 deletions(-) create mode 100644 Data/Ag_Calibration.mca create mode 100644 Data/Ba_Calibration.mca create mode 100644 Data/Be_Calibration.mca create mode 100644 Data/Mo_Calibration.mca create mode 100644 Data/NoFilm_overNight_2h_17Jul_1(Mo).mca create mode 100644 Data/Rb_Calibration (20 mins).mca create mode 100644 Data/Tb_Calibration.mca diff --git a/Data/Ag_Calibration.mca b/Data/Ag_Calibration.mca new file mode 100644 index 0000000..d1fe2d6 --- /dev/null +++ b/Data/Ag_Calibration.mca @@ -0,0 +1,2132 @@ +<> +TAG - live_data +DESCRIPTION - +GAIN - 3 +THRESHOLD - 0 +LIVE_MODE - 0 +PRESET_TIME - 0 +LIVE_TIME - 820.624000 +REAL_TIME - 821.280000 +START_TIME - 01/27/2000 00:40:55 +SERIAL_NUMBER - 0 +<> +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +78 +124 +95 +68 +70 +85 +104 +80 +75 +93 +61 +73 +81 +69 +79 +69 +63 +49 +65 +56 +72 +53 +58 +63 +64 +75 +73 +90 +81 +52 +71 +78 +87 +82 +57 +78 +82 +86 +92 +101 +72 +67 +66 +76 +70 +73 +73 +56 +59 +42 +57 +60 +35 +41 +41 +52 +34 +35 +31 +39 +30 +30 +27 +31 +24 +28 +29 +24 +24 +15 +18 +9 +16 +22 +17 +20 +17 +15 +21 +19 +19 +27 +43 +104 +108 +119 +64 +49 +56 +83 +57 +67 +45 +44 +24 +21 +23 +24 +19 +13 +16 +13 +23 +9 +6 +10 +11 +9 +10 +6 +15 +11 +7 +9 +10 +5 +3 +12 +7 +11 +3 +10 +2 +10 +10 +5 +4 +5 +9 +7 +7 +8 +9 +7 +7 +6 +5 +9 +3 +5 +7 +4 +10 +4 +6 +7 +4 +5 +8 +6 +5 +6 +7 +5 +8 +12 +7 +7 +6 +7 +14 +15 +32 +20 +24 +11 +6 +6 +5 +8 +3 +2 +3 +5 +6 +11 +4 +14 +8 +13 +16 +9 +8 +8 +1 +8 +4 +6 +8 +5 +19 +18 +34 +54 +45 +38 +43 +21 +12 +8 +7 +3 +3 +9 +7 +5 +7 +7 +4 +8 +8 +7 +9 +5 +18 +19 +17 +12 +7 +9 +5 +6 +4 +6 +11 +10 +26 +27 +38 +35 +34 +23 +11 +13 +4 +4 +5 +6 +9 +6 +7 +4 +4 +4 +4 +6 +3 +8 +3 +12 +8 +6 +12 +15 +9 +9 +13 +7 +4 +7 +4 +3 +6 +6 +3 +4 +9 +5 +1 +6 +4 +2 +5 +9 +4 +1 +5 +5 +6 +5 +2 +4 +3 +4 +3 +8 +12 +7 +12 +9 +5 +3 +10 +3 +6 +6 +3 +5 +12 +9 +5 +11 +4 +4 +6 +5 +6 +6 +9 +4 +11 +7 +5 +9 +6 +3 +3 +2 +6 +6 +3 +11 +5 +9 +18 +10 +9 +15 +10 +8 +10 +9 +6 +7 +5 +6 +5 +2 +7 +9 +2 +9 +6 +4 +5 +5 +5 +3 +4 +4 +5 +3 +5 +9 +6 +7 +4 +11 +10 +6 +4 +5 +10 +4 +6 +6 +5 +4 +12 +4 +1 +3 +1 +4 +7 +2 +6 +6 +9 +9 +3 +7 +3 +8 +2 +11 +3 +4 +8 +7 +9 +9 +7 +10 +15 +10 +15 +8 +4 +6 +4 +1 +4 +8 +5 +4 +1 +1 +4 +2 +5 +1 +6 +10 +3 +2 +6 +3 +4 +4 +5 +3 +5 +6 +4 +9 +6 +5 +5 +7 +3 +6 +9 +4 +4 +4 +5 +2 +4 +1 +6 +7 +4 +7 +3 +9 +9 +2 +3 +6 +6 +0 +5 +7 +5 +5 +8 +10 +2 +1 +6 +6 +6 +9 +10 +4 +4 +5 +3 +10 +3 +7 +5 +2 +5 +1 +5 +4 +5 +7 +3 +5 +2 +6 +7 +8 +2 +6 +7 +6 +4 +3 +8 +9 +6 +6 +4 +8 +4 +5 +6 +4 +5 +7 +8 +3 +3 +5 +9 +1 +5 +1 +3 +4 +7 +6 +6 +5 +6 +2 +6 +6 +4 +5 +3 +5 +7 +5 +7 +7 +5 +9 +4 +4 +6 +4 +6 +3 +9 +7 +5 +6 +10 +3 +7 +5 +11 +6 +7 +8 +6 +10 +9 +6 +5 +6 +4 +6 +5 +2 +12 +4 +4 +7 +4 +3 +6 +7 +9 +11 +3 +7 +9 +4 +7 +6 +8 +5 +5 +9 +10 +6 +5 +5 +13 +6 +9 +6 +5 +7 +7 +11 +5 +8 +8 +3 +5 +4 +3 +11 +7 +7 +6 +5 +6 +8 +7 +9 +5 +10 +12 +6 +10 +6 +15 +11 +12 +13 +11 +7 +17 +16 +9 +9 +8 +10 +9 +25 +19 +16 +15 +23 +30 +21 +23 +29 +20 +26 +33 +34 +39 +44 +41 +39 +43 +51 +63 +39 +48 +58 +54 +60 +57 +66 +48 +51 +49 +53 +64 +56 +58 +56 +51 +48 +45 +49 +54 +51 +50 +60 +36 +46 +46 +45 +36 +56 +54 +62 +54 +50 +66 +48 +57 +69 +76 +93 +110 +171 +293 +512 +893 +1464 +2267 +3330 +4465 +5685 +6901 +8050 +9100 +9927 +10583 +10744 +10450 +9406 +8146 +6582 +4759 +3160 +2034 +1216 +675 +384 +223 +135 +72 +63 +49 +51 +36 +27 +33 +32 +25 +24 +23 +23 +25 +29 +17 +19 +16 +25 +28 +14 +17 +17 +26 +21 +19 +24 +15 +12 +10 +16 +18 +15 +19 +22 +20 +14 +20 +15 +18 +14 +18 +13 +16 +18 +11 +22 +18 +14 +20 +22 +21 +14 +16 +25 +25 +25 +19 +23 +26 +26 +15 +30 +15 +24 +37 +41 +42 +67 +108 +208 +313 +551 +764 +1052 +1413 +1701 +1945 +2072 +2019 +1901 +1553 +1220 +872 +619 +455 +264 +170 +150 +147 +170 +220 +285 +303 +337 +349 +329 +279 +234 +179 +142 +83 +70 +28 +20 +10 +6 +5 +3 +3 +0 +1 +1 +0 +0 +0 +0 +1 +0 +1 +3 +0 +2 +0 +2 +1 +0 +0 +0 +0 +0 +1 +0 +1 +2 +1 +1 +0 +0 +3 +1 +1 +0 +0 +0 +1 +0 +0 +0 +0 +0 +0 +1 +0 +0 +1 +0 +2 +0 +0 +1 +3 +0 +1 +1 +0 +1 +0 +1 +3 +0 +2 +3 +1 +1 +3 +1 +0 +0 +2 +1 +0 +0 +1 +0 +1 +0 +0 +0 +3 +0 +1 +1 +1 +0 +1 +0 +0 +0 +2 +0 +1 +0 +0 +1 +1 +1 +1 +0 +2 +2 +2 +0 +0 +0 +1 +0 +0 +0 +0 +2 +0 +3 +0 +0 +1 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +1 +0 +1 +0 +1 +0 +1 +2 +0 +1 +0 +1 +2 +0 +1 +0 +0 +1 +0 +0 +1 +0 +0 +1 +1 +0 +0 +1 +1 +1 +0 +1 +0 +0 +0 +0 +0 +0 +0 +1 +1 +3 +1 +0 +0 +2 +0 +0 +0 +0 +2 +1 +1 +0 +0 +0 +0 +0 +2 +1 +0 +1 +0 +1 +1 +1 +0 +1 +0 +1 +2 +1 +0 +0 +1 +0 +0 +2 +1 +3 +0 +0 +0 +1 +3 +0 +0 +0 +0 +2 +0 +1 +0 +1 +0 +1 +1 +1 +0 +0 +1 +0 +1 +0 +2 +0 +1 +0 +1 +1 +0 +0 +0 +0 +0 +1 +0 +1 +0 +5 +0 +0 +0 +0 +1 +0 +0 +1 +1 +0 +0 +1 +0 +1 +0 +2 +0 +1 +0 +1 +1 +1 +0 +0 +1 +1 +0 +1 +1 +0 +0 +1 +1 +1 +0 +0 +0 +0 +1 +2 +1 +1 +0 +1 +0 +0 +0 +0 +0 +1 +0 +0 +1 +0 +0 +1 +0 +1 +0 +0 +1 +0 +0 +1 +2 +0 +0 +0 +1 +0 +2 +0 +1 +1 +0 +0 +1 +0 +1 +0 +1 +1 +1 +0 +1 +0 +0 +0 +0 +1 +0 +0 +0 +0 +0 +0 +0 +0 +1 +0 +0 +1 +1 +0 +0 +0 +0 +0 +1 +1 +0 +1 +0 +1 +0 +0 +1 +1 +0 +0 +0 +1 +2 +1 +1 +2 +2 +1 +2 +0 +0 +1 +1 +0 +0 +0 +0 +1 +1 +0 +1 +0 +0 +0 +0 +1 +0 +1 +0 +0 +0 +0 +1 +1 +0 +1 +0 +1 +1 +1 +2 +0 +1 +0 +1 +0 +2 +1 +0 +1 +0 +0 +1 +0 +0 +0 +1 +0 +0 +3 +1 +1 +1 +0 +1 +2 +4 +0 +0 +0 +0 +0 +0 +1 +1 +1 +1 +4 +2 +1 +0 +0 +1 +0 +0 +0 +0 +0 +2 +2 +0 +1 +0 +0 +0 +2 +0 +1 +0 +1 +0 +1 +1 +0 +0 +3 +1 +1 +0 +0 +0 +0 +0 +2 +0 +0 +2 +1 +1 +0 +0 +1 +0 +0 +0 +0 +0 +1 +0 +0 +0 +2 +1 +0 +0 +2 +0 +0 +2 +4 +1 +0 +1 +2 +0 +0 +0 +0 +2 +0 +0 +0 +1 +1 +1 +1 +1 +1 +1 +1 +2 +0 +1 +1 +1 +0 +0 +0 +1 +1 +2 +3 +1 +0 +1 +1 +0 +0 +0 +1 +1 +0 +1 +2 +1 +1 +0 +1 +2 +1 +2 +0 +0 +1 +1 +3 +1 +1 +1 +1 +0 +2 +0 +0 +1 +2 +1 +2 +0 +4 +1 +1 +0 +1 +0 +0 +3 +2 +2 +1 +1 +2 +2 +1 +2 +2 +1 +3 +1 +2 +3 +3 +2 +0 +3 +1 +1 +1 +3 +2 +3 +0 +1 +0 +1 +1 +1 +3 +0 +2 +2 +0 +0 +0 +0 +1 +4 +3 +1 +2 +1 +1 +0 +3 +2 +1 +2 +1 +2 +0 +2 +0 +2 +2 +1 +1 +2 +1 +2 +3 +0 +2 +3 +2 +2 +0 +0 +1 +4 +1 +0 +1 +3 +2 +2 +6 +3 +1 +0 +2 +2 +1 +0 +2 +1 +0 +4 +2 +2 +1 +3 +1 +3 +5 +3 +3 +0 +3 +2 +0 +2 +5 +2 +1 +1 +4 +2 +3 +1 +0 +0 +1 +1 +5 +3 +3 +1 +1 +1 +1 +1 +6 +5 +6 +1 +4 +4 +2 +5 +3 +3 +2 +2 +4 +3 +2 +5 +3 +7 +4 +2 +4 +9 +8 +3 +5 +7 +10 +4 +3 +6 +3 +6 +8 +7 +3 +3 +6 +10 +7 +3 +5 +5 +7 +5 +7 +2 +9 +10 +6 +10 +9 +7 +2 +5 +8 +6 +6 +7 +5 +5 +7 +3 +4 +3 +10 +4 +4 +7 +5 +7 +4 +6 +3 +4 +3 +6 +1 +4 +2 +3 +5 +3 +3 +5 +0 +5 +2 +2 +2 +7 +4 +2 +3 +1 +3 +2 +0 +1 +2 +1 +0 +0 +0 +3 +2 +1 +2 +2 +1 +1 +3 +0 +1 +2 +0 +1 +3 +5 +0 +1 +3 +1 +0 +1 +1 +3 +1 +2 +0 +0 +2 +1 +0 +0 +2 +1 +1 +0 +0 +1 +3 +0 +1 +2 +2 +0 +3 +1 +0 +0 +1 +0 +0 +1 +1 +0 +1 +1 +0 +1 +0 +3 +0 +0 +1 +1 +2 +1 +3 +0 +0 +2 +1 +0 +0 +0 +1 +1 +1 +1 +1 +0 +2 +0 +3 +0 +0 +2 +3 +2 +0 +1 +1 +0 +3 +0 +1 +1 +0 +3 +0 +1 +1 +2 +0 +1 +1 +1 +0 +2 +1 +1 +0 +0 +1 +2 +2 +1 +3 +1 +1 +0 +1 +1 +2 +1 +1 +1 +0 +0 +0 +1 +0 +2 +1 +0 +1 +2 +1 +0 +1 +0 +0 +0 +0 +0 +0 +1 +1 +0 +1 +1 +1 +0 +0 +0 +0 +0 +1 +1 +0 +2 +0 +1 +1 +2 +0 +2 +3 +2 +1 +0 +2 +1 +1 +1 +0 +1 +0 +1 +0 +0 +0 +0 +1 +0 +3 +0 +0 +0 +0 +0 +1 +0 +0 +0 +0 +0 +1 +0 +4 +0 +0 +0 +0 +0 +1 +1 +0 +2 +0 +0 +0 +1 +0 +1 +0 +1 +0 +1 +0 +1 +2 +1 +0 +0 +0 +0 +1 +0 +1 +0 +0 +0 +2 +0 +0 +0 +0 +1 +1 +1 +0 +0 +0 +0 +0 +0 +0 +1 +0 +1 +0 +0 +1 +1 +0 +1 +2 +2 +6 +3 +3 +2 +10 +9 +9 +12 +21 +18 +17 +18 +20 +19 +29 +17 +28 +20 +22 +11 +13 +5 +6 +8 +2 +5 +0 +1 +4 +1 +2 +2 +0 +0 +0 +0 +0 +0 +1 +0 +0 +0 +0 +0 +1 +0 +0 +0 +0 +0 +0 +0 +1 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +1 +0 +0 +1 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +1 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +1 +0 +0 +0 +1 +0 +0 +0 +0 +0 +0 +0 +0 +0 +<> +<> +RESC=?; Reset Configuration +CLCK=80; 20MHz/80MHz +TPEA=9.600; Peaking Time +GAIF=0.9312; Fine Gain +GAIN=21.162; Total Gain (Analog * Fine) +RESL=204; Detector Reset Lockout +TFLA=0.200; Flat Top +TPFA=50; Fast Channel Peaking Time +PURE=OFF; PUR Interval On/Off +RTDE=OFF; RTD On/Off +MCAS=NORM; MCA Source +MCAC=2048; MCA/MCS Channels +SOFF=OFF; Set Spectrum Offset +AINP=POS; Analog Input Pos/Neg +INOF=DEF; Input Offset +GAIA=15; Analog Gain Index +CUSP=0; Non-Trapezoidal Shaping +PDMD=NORM; Peak Detect Mode (Min/Max) +THSL=0.585; Slow Threshold +TLLD=OFF; LLD Threshold +THFA=230.00; Fast Threshold +DACO=SHAPED; DAC Output +DACF=50; DAC Offset +RTDS=0; RTD Sensitivity +RTDT=0.00; RTD Threshold +BLRM=1; BLR Mode +BLRD=3; BLR Down Correction +BLRU=0; BLR Up Correction +AUO1=SCA8; AUX_OUT Selection +PRET=OFF; Preset Time +PRER=1800.000; Preset Real Time +PREC=OFF; Preset Counts +PRCL=1; Preset Counts Low Threshold +PRCH=8191; Preset Counts High Threshold +HVSE=-110; HV Set +TECS=220; TEC Set +PAPZ=OFF; Pole-Zero +PAPS=8.5; Preamp 8.5/5 (N/A) +SCOE=FA; Scope Trigger Edge +SCOT=12; Scope Trigger Position +SCOG=1; Digital Scope Gain +MCSL=1; MCS Low Threshold +MCSH=8191; MCS High Threshold +MCST=0.00; MCS Timebase +AUO2=ICR; AUX_OUT2 Selection +TPMO=OFF; Test Pulser On/Off +GPED=RI; G.P. Counter Edge +GPIN=AUX1; G.P. Counter Input +GPME=ON; G.P. Counter Uses MCA_EN? +GPGA=ON; G.P. Counter Uses GATE? +GPMC=ON; G.P. Counter Cleared With MCA Counters? +MCAE=OFF; MCA/MCS Enable +VOLU=OFF; Speaker On/Off +CON1=DAC; Connector 1 +CON2=AUXOUT2; Connector 2 +<> +<> +Device Type: PX5 +Serial Number: 2264 +Firmware: 6.07 Build: 3 +FPGA: 6.02 +Fast Count: 1052 +Slow Count: 159631 +Accumulation Time: 820.624000 +Real Time: 821.280000 +Dead Time: +HV Volt: -110V +TEC Temp: 220K +Board Temp: 32C +<> diff --git a/Data/Ba_Calibration.mca b/Data/Ba_Calibration.mca new file mode 100644 index 0000000..705b9fb --- /dev/null +++ b/Data/Ba_Calibration.mca @@ -0,0 +1,2132 @@ +<> +TAG - live_data +DESCRIPTION - +GAIN - 3 +THRESHOLD - 0 +LIVE_MODE - 0 +PRESET_TIME - 0 +LIVE_TIME - 1786.862000 +REAL_TIME - 1788.197000 +START_TIME - 01/27/2000 00:57:45 +SERIAL_NUMBER - 0 +<> +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +200 +276 +270 +281 +288 +271 +261 +281 +291 +238 +282 +229 +250 +239 +228 +287 +226 +235 +234 +245 +223 +225 +194 +210 +205 +199 +209 +224 +217 +184 +201 +170 +178 +179 +168 +160 +193 +187 +155 +156 +170 +171 +170 +170 +178 +169 +159 +152 +168 +196 +177 +194 +189 +189 +154 +203 +181 +195 +203 +174 +171 +217 +174 +198 +197 +196 +208 +206 +185 +219 +171 +194 +210 +201 +185 +202 +204 +214 +211 +197 +203 +206 +207 +220 +205 +226 +225 +208 +204 +197 +181 +193 +227 +197 +209 +189 +211 +186 +194 +168 +178 +156 +155 +163 +148 +127 +157 +169 +136 +133 +122 +123 +112 +122 +121 +122 +110 +106 +121 +97 +111 +98 +95 +89 +76 +94 +112 +101 +141 +290 +494 +784 +853 +666 +408 +228 +136 +93 +81 +70 +116 +252 +478 +621 +635 +553 +375 +305 +202 +131 +104 +101 +148 +209 +231 +213 +152 +114 +63 +44 +45 +52 +61 +70 +91 +88 +100 +77 +61 +52 +42 +38 +42 +37 +43 +52 +45 +36 +30 +35 +35 +34 +24 +27 +29 +24 +23 +19 +17 +24 +38 +49 +72 +79 +98 +95 +60 +40 +35 +20 +20 +11 +23 +21 +19 +21 +15 +24 +16 +18 +16 +15 +22 +31 +36 +35 +25 +27 +24 +22 +16 +14 +16 +22 +22 +40 +64 +68 +102 +97 +90 +58 +30 +22 +16 +19 +23 +15 +12 +12 +16 +19 +17 +19 +14 +23 +15 +11 +15 +20 +15 +22 +24 +27 +40 +23 +19 +19 +16 +19 +9 +15 +10 +16 +17 +17 +13 +15 +8 +11 +18 +16 +12 +12 +12 +10 +13 +8 +11 +7 +11 +10 +8 +14 +15 +14 +15 +16 +14 +11 +13 +8 +7 +9 +11 +9 +14 +11 +21 +12 +17 +13 +12 +14 +11 +16 +9 +11 +11 +12 +13 +11 +9 +12 +9 +11 +8 +9 +10 +5 +11 +6 +17 +21 +19 +28 +31 +29 +33 +35 +21 +20 +13 +14 +6 +8 +14 +17 +11 +9 +12 +8 +8 +13 +11 +7 +7 +15 +9 +5 +13 +7 +10 +11 +13 +14 +19 +15 +12 +11 +3 +11 +7 +4 +7 +14 +9 +6 +8 +8 +4 +5 +6 +5 +7 +5 +5 +5 +6 +9 +9 +8 +10 +8 +9 +5 +7 +9 +8 +8 +9 +16 +22 +22 +38 +17 +30 +15 +12 +6 +14 +11 +7 +6 +12 +8 +9 +6 +7 +6 +10 +11 +2 +8 +5 +11 +3 +3 +6 +11 +5 +11 +10 +7 +4 +6 +5 +5 +8 +3 +3 +7 +6 +3 +5 +15 +26 +24 +67 +116 +195 +269 +328 +367 +356 +341 +275 +202 +114 +67 +34 +17 +13 +4 +1 +8 +3 +8 +6 +7 +8 +9 +7 +13 +14 +11 +4 +8 +4 +7 +8 +3 +9 +6 +11 +9 +11 +8 +10 +6 +9 +3 +5 +10 +2 +4 +10 +4 +10 +5 +8 +24 +18 +22 +41 +40 +63 +76 +76 +81 +67 +22 +32 +32 +18 +14 +15 +11 +15 +8 +7 +12 +8 +6 +6 +5 +7 +5 +5 +8 +0 +7 +6 +8 +7 +3 +3 +5 +6 +13 +4 +2 +3 +8 +5 +4 +4 +9 +8 +9 +10 +8 +9 +5 +9 +2 +6 +6 +6 +7 +6 +2 +6 +8 +5 +9 +5 +4 +7 +3 +5 +7 +8 +3 +7 +7 +9 +4 +9 +6 +2 +6 +3 +8 +8 +2 +3 +7 +10 +6 +8 +11 +4 +3 +8 +6 +2 +3 +5 +4 +5 +2 +4 +2 +2 +7 +4 +3 +5 +7 +4 +8 +1 +9 +2 +7 +3 +2 +5 +4 +4 +10 +10 +2 +3 +7 +5 +2 +2 +6 +10 +4 +4 +7 +4 +7 +3 +13 +5 +7 +6 +5 +4 +3 +3 +9 +12 +2 +2 +5 +5 +5 +3 +6 +3 +5 +4 +5 +5 +8 +4 +5 +6 +7 +2 +4 +6 +8 +4 +7 +5 +3 +4 +6 +9 +1 +6 +2 +4 +6 +7 +3 +5 +4 +8 +4 +6 +7 +4 +4 +6 +4 +2 +2 +2 +8 +3 +7 +2 +1 +4 +7 +10 +7 +3 +8 +6 +7 +2 +6 +4 +7 +6 +7 +2 +8 +3 +8 +3 +7 +5 +5 +7 +2 +6 +10 +6 +3 +6 +5 +0 +5 +8 +3 +10 +7 +7 +4 +7 +7 +9 +4 +6 +6 +4 +7 +8 +9 +2 +2 +3 +6 +9 +9 +5 +5 +6 +5 +4 +13 +6 +12 +9 +7 +4 +4 +5 +9 +6 +2 +4 +4 +11 +10 +4 +8 +3 +6 +4 +7 +8 +9 +8 +5 +3 +13 +3 +5 +4 +5 +6 +8 +8 +6 +7 +6 +12 +13 +3 +11 +12 +8 +11 +9 +14 +17 +13 +11 +16 +16 +13 +12 +21 +13 +10 +19 +10 +10 +10 +10 +2 +8 +9 +6 +5 +10 +13 +7 +6 +12 +6 +10 +13 +11 +6 +13 +6 +16 +14 +5 +7 +16 +19 +14 +11 +15 +20 +10 +20 +13 +20 +18 +12 +15 +7 +13 +9 +11 +11 +10 +10 +9 +16 +11 +9 +10 +8 +10 +12 +10 +15 +16 +12 +9 +22 +12 +21 +21 +17 +20 +22 +15 +8 +15 +19 +22 +15 +30 +33 +11 +23 +24 +21 +20 +23 +18 +20 +33 +25 +29 +38 +31 +28 +29 +31 +50 +39 +50 +37 +47 +49 +47 +58 +54 +64 +56 +61 +75 +61 +63 +83 +69 +86 +76 +77 +69 +84 +87 +86 +95 +67 +67 +92 +88 +78 +93 +83 +84 +120 +91 +81 +86 +78 +89 +90 +81 +81 +74 +72 +71 +81 +93 +57 +80 +95 +63 +99 +72 +67 +68 +66 +66 +76 +71 +63 +70 +64 +62 +61 +57 +67 +54 +66 +69 +66 +68 +59 +55 +51 +65 +46 +62 +62 +61 +56 +55 +49 +55 +62 +57 +53 +35 +66 +53 +57 +56 +50 +61 +75 +55 +57 +49 +65 +70 +71 +63 +78 +96 +78 +91 +141 +185 +272 +406 +643 +934 +1447 +1971 +2667 +3349 +4160 +4520 +4887 +4942 +4997 +4574 +4227 +4219 +4291 +4730 +5441 +6300 +7466 +8010 +8596 +8720 +7904 +7093 +6110 +4816 +3545 +2544 +1743 +1128 +701 +448 +284 +165 +134 +77 +76 +68 +72 +47 +51 +44 +42 +39 +32 +33 +25 +37 +27 +23 +26 +26 +27 +30 +24 +28 +25 +24 +24 +21 +27 +20 +26 +24 +17 +22 +25 +14 +22 +18 +20 +22 +20 +19 +18 +16 +16 +13 +12 +15 +29 +13 +26 +17 +14 +15 +16 +8 +15 +12 +19 +8 +11 +15 +17 +20 +14 +18 +15 +20 +22 +16 +15 +12 +14 +14 +9 +13 +21 +22 +21 +8 +8 +16 +13 +16 +20 +8 +23 +19 +13 +19 +20 +9 +8 +15 +11 +14 +19 +15 +15 +12 +13 +18 +19 +19 +21 +28 +33 +25 +31 +53 +77 +76 +126 +216 +321 +505 +636 +854 +1115 +1285 +1549 +1730 +1784 +1713 +1672 +1449 +1287 +1102 +866 +649 +479 +276 +217 +169 +96 +61 +46 +41 +37 +39 +42 +44 +66 +79 +127 +156 +205 +261 +300 +356 +391 +409 +375 +394 +354 +330 +238 +244 +167 +119 +92 +74 +46 +30 +29 +14 +8 +7 +4 +3 +4 +4 +2 +3 +0 +1 +0 +0 +4 +0 +2 +1 +0 +1 +2 +1 +2 +0 +1 +1 +2 +1 +3 +1 +0 +2 +0 +0 +2 +2 +2 +2 +1 +1 +0 +1 +0 +1 +2 +0 +2 +0 +0 +1 +0 +1 +2 +0 +1 +1 +3 +2 +1 +0 +3 +0 +1 +0 +1 +5 +1 +2 +5 +1 +2 +0 +0 +0 +3 +1 +1 +2 +2 +1 +2 +0 +1 +3 +1 +1 +0 +0 +3 +2 +0 +0 +2 +1 +1 +0 +0 +0 +0 +1 +1 +1 +1 +3 +1 +1 +1 +2 +1 +1 +2 +3 +0 +0 +2 +1 +4 +1 +4 +2 +3 +1 +1 +2 +2 +1 +3 +3 +0 +7 +1 +3 +1 +0 +1 +4 +3 +1 +3 +1 +2 +3 +0 +4 +2 +1 +3 +1 +2 +3 +0 +1 +2 +1 +4 +0 +1 +1 +1 +5 +2 +4 +3 +3 +2 +1 +1 +3 +7 +0 +1 +2 +4 +5 +1 +1 +3 +3 +5 +2 +5 +4 +3 +3 +1 +0 +3 +0 +6 +4 +0 +2 +0 +2 +4 +4 +3 +4 +3 +2 +2 +3 +1 +3 +2 +3 +1 +3 +3 +2 +3 +2 +5 +2 +1 +3 +2 +4 +3 +5 +1 +2 +5 +2 +3 +0 +1 +4 +1 +2 +4 +4 +4 +2 +1 +5 +6 +2 +3 +4 +2 +6 +4 +2 +2 +4 +4 +2 +4 +2 +2 +4 +2 +2 +2 +5 +5 +2 +3 +5 +1 +3 +4 +1 +3 +3 +6 +2 +2 +6 +3 +5 +4 +3 +4 +4 +5 +4 +3 +3 +3 +2 +5 +10 +3 +4 +5 +4 +5 +5 +2 +7 +5 +5 +10 +7 +5 +10 +5 +5 +5 +6 +5 +8 +7 +8 +11 +2 +4 +5 +9 +5 +7 +8 +7 +5 +7 +8 +5 +14 +9 +9 +9 +12 +11 +7 +5 +8 +13 +6 +10 +9 +14 +15 +11 +14 +12 +19 +10 +13 +12 +12 +12 +18 +14 +27 +18 +20 +22 +19 +15 +16 +23 +19 +17 +33 +25 +16 +19 +24 +31 +26 +28 +21 +29 +30 +19 +33 +16 +24 +35 +16 +24 +27 +37 +32 +22 +30 +23 +33 +30 +32 +28 +28 +25 +22 +25 +22 +19 +33 +22 +23 +24 +18 +23 +24 +19 +25 +19 +17 +16 +21 +21 +8 +15 +18 +18 +13 +17 +18 +21 +13 +16 +19 +19 +6 +8 +11 +4 +14 +8 +14 +11 +11 +7 +8 +8 +9 +9 +10 +8 +14 +8 +8 +9 +8 +10 +5 +10 +5 +9 +5 +5 +2 +6 +5 +5 +8 +3 +5 +6 +3 +4 +4 +5 +5 +7 +4 +5 +3 +7 +5 +4 +1 +2 +1 +3 +7 +6 +5 +5 +5 +2 +7 +3 +0 +2 +1 +4 +4 +3 +3 +5 +3 +0 +4 +6 +1 +3 +2 +1 +3 +4 +0 +3 +5 +3 +3 +2 +2 +3 +2 +1 +3 +2 +4 +5 +3 +1 +2 +2 +3 +1 +2 +6 +2 +1 +4 +5 +0 +1 +2 +2 +3 +4 +5 +1 +2 +0 +2 +1 +0 +1 +1 +8 +2 +5 +2 +2 +0 +2 +2 +1 +2 +2 +4 +4 +3 +3 +2 +0 +2 +2 +0 +0 +5 +4 +2 +3 +2 +1 +2 +2 +3 +1 +0 +1 +0 +1 +2 +3 +0 +0 +1 +1 +2 +0 +0 +0 +2 +3 +2 +2 +3 +0 +1 +4 +2 +2 +1 +0 +2 +1 +1 +2 +0 +5 +1 +2 +0 +2 +0 +2 +2 +0 +3 +1 +1 +1 +1 +1 +4 +1 +0 +3 +0 +0 +4 +1 +2 +1 +4 +1 +2 +3 +2 +3 +4 +0 +0 +1 +1 +1 +0 +2 +0 +1 +0 +5 +1 +0 +2 +1 +1 +1 +0 +1 +2 +1 +1 +2 +2 +2 +0 +2 +1 +1 +1 +1 +4 +1 +0 +1 +1 +1 +2 +1 +1 +0 +2 +1 +2 +2 +1 +1 +0 +3 +2 +2 +0 +1 +1 +2 +1 +3 +4 +0 +2 +6 +7 +7 +6 +16 +19 +22 +18 +29 +43 +44 +37 +44 +54 +60 +59 +48 +53 +48 +35 +22 +27 +16 +14 +13 +9 +6 +3 +3 +2 +1 +0 +0 +0 +0 +0 +0 +1 +0 +0 +0 +0 +0 +1 +0 +0 +0 +0 +0 +0 +0 +0 +1 +0 +1 +0 +1 +1 +0 +0 +0 +0 +0 +1 +0 +0 +1 +0 +0 +1 +0 +0 +0 +0 +1 +0 +0 +1 +0 +0 +0 +0 +0 +1 +0 +0 +0 +0 +1 +0 +1 +0 +0 +0 +1 +0 +2 +0 +0 +0 +1 +0 +0 +0 +2 +0 +0 +1 +0 +1 +0 +0 +0 +0 +0 +0 +1 +0 +1 +1 +0 +1 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +1 +0 +1 +1 +0 +2 +0 +0 +1 +0 +0 +0 +0 +1 +0 +<> +<> +RESC=?; Reset Configuration +CLCK=80; 20MHz/80MHz +TPEA=9.600; Peaking Time +GAIF=0.9312; Fine Gain +GAIN=21.162; Total Gain (Analog * Fine) +RESL=204; Detector Reset Lockout +TFLA=0.200; Flat Top +TPFA=50; Fast Channel Peaking Time +PURE=OFF; PUR Interval On/Off +RTDE=OFF; RTD On/Off +MCAS=NORM; MCA Source +MCAC=2048; MCA/MCS Channels +SOFF=OFF; Set Spectrum Offset +AINP=POS; Analog Input Pos/Neg +INOF=DEF; Input Offset +GAIA=15; Analog Gain Index +CUSP=0; Non-Trapezoidal Shaping +PDMD=NORM; Peak Detect Mode (Min/Max) +THSL=0.585; Slow Threshold +TLLD=OFF; LLD Threshold +THFA=230.00; Fast Threshold +DACO=SHAPED; DAC Output +DACF=50; DAC Offset +RTDS=0; RTD Sensitivity +RTDT=0.00; RTD Threshold +BLRM=1; BLR Mode +BLRD=3; BLR Down Correction +BLRU=0; BLR Up Correction +AUO1=SCA8; AUX_OUT Selection +PRET=OFF; Preset Time +PRER=1800.000; Preset Real Time +PREC=OFF; Preset Counts +PRCL=1; Preset Counts Low Threshold +PRCH=8191; Preset Counts High Threshold +HVSE=-110; HV Set +TECS=220; TEC Set +PAPZ=OFF; Pole-Zero +PAPS=8.5; Preamp 8.5/5 (N/A) +SCOE=FA; Scope Trigger Edge +SCOT=12; Scope Trigger Position +SCOG=1; Digital Scope Gain +MCSL=1; MCS Low Threshold +MCSH=8191; MCS High Threshold +MCST=0.00; MCS Timebase +AUO2=ICR; AUX_OUT2 Selection +TPMO=OFF; Test Pulser On/Off +GPED=RI; G.P. Counter Edge +GPIN=AUX1; G.P. Counter Input +GPME=ON; G.P. Counter Uses MCA_EN? +GPGA=ON; G.P. Counter Uses GATE? +GPMC=ON; G.P. Counter Cleared With MCA Counters? +MCAE=OFF; MCA/MCS Enable +VOLU=OFF; Speaker On/Off +CON1=DAC; Connector 1 +CON2=AUXOUT2; Connector 2 +<> +<> +Device Type: PX5 +Serial Number: 2264 +Firmware: 6.07 Build: 3 +FPGA: 6.02 +Fast Count: 3685 +Slow Count: 223651 +Accumulation Time: 1786.862000 +Real Time: 1788.197000 +Dead Time: +HV Volt: -110V +TEC Temp: 220K +Board Temp: 36C +<> diff --git a/Data/Be_Calibration.mca b/Data/Be_Calibration.mca new file mode 100644 index 0000000..6ed6f46 --- /dev/null +++ b/Data/Be_Calibration.mca @@ -0,0 +1,2132 @@ +<> +TAG - live_data +DESCRIPTION - +GAIN - 3 +THRESHOLD - 0 +LIVE_MODE - 0 +PRESET_TIME - 0 +LIVE_TIME - 760.681000 +REAL_TIME - 761.253000 +START_TIME - 01/27/2000 02:56:46 +SERIAL_NUMBER - 0 +<> +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +93 +113 +143 +112 +119 +121 +112 +123 +124 +127 +108 +110 +102 +102 +98 +97 +93 +83 +87 +108 +93 +109 +102 +84 +93 +78 +81 +90 +70 +104 +86 +73 +75 +95 +82 +85 +69 +75 +91 +87 +77 +70 +89 +68 +76 +70 +90 +79 +82 +89 +102 +95 +85 +66 +87 +73 +66 +82 +81 +87 +82 +84 +86 +97 +95 +93 +80 +91 +83 +87 +88 +86 +92 +93 +83 +95 +77 +80 +120 +76 +88 +84 +86 +80 +99 +92 +79 +104 +101 +101 +102 +84 +93 +85 +73 +90 +68 +69 +82 +77 +63 +73 +64 +65 +69 +51 +58 +62 +61 +46 +47 +45 +42 +44 +40 +57 +50 +39 +46 +42 +42 +45 +38 +36 +32 +40 +46 +52 +60 +125 +208 +323 +366 +272 +182 +97 +50 +33 +26 +32 +56 +101 +173 +269 +295 +264 +171 +123 +80 +50 +40 +56 +65 +92 +107 +107 +69 +48 +29 +23 +17 +20 +22 +28 +35 +32 +42 +32 +32 +25 +15 +18 +25 +17 +20 +22 +15 +10 +12 +23 +10 +10 +9 +8 +17 +6 +5 +12 +9 +9 +19 +24 +23 +37 +32 +50 +26 +22 +14 +8 +10 +8 +6 +9 +7 +7 +3 +10 +9 +13 +12 +9 +6 +15 +13 +21 +17 +12 +13 +11 +10 +10 +6 +8 +12 +14 +15 +38 +41 +41 +26 +21 +22 +8 +8 +9 +9 +6 +9 +9 +4 +7 +4 +9 +5 +7 +10 +6 +5 +6 +7 +7 +12 +12 +9 +8 +13 +13 +9 +4 +4 +10 +5 +5 +4 +7 +1 +2 +4 +7 +4 +2 +4 +1 +2 +2 +6 +4 +2 +4 +5 +5 +2 +3 +4 +7 +5 +6 +4 +7 +6 +6 +3 +5 +4 +4 +4 +3 +6 +7 +10 +6 +7 +7 +2 +3 +5 +2 +4 +3 +4 +5 +4 +4 +4 +5 +2 +3 +4 +6 +3 +2 +3 +8 +6 +7 +14 +11 +16 +16 +13 +13 +9 +7 +3 +5 +5 +2 +5 +4 +6 +7 +1 +2 +1 +3 +2 +1 +4 +7 +2 +4 +8 +4 +3 +5 +5 +5 +3 +4 +4 +2 +3 +4 +4 +5 +1 +4 +3 +5 +2 +1 +2 +6 +5 +2 +3 +4 +4 +4 +10 +1 +3 +4 +1 +1 +6 +7 +3 +4 +4 +2 +7 +11 +9 +12 +9 +7 +9 +3 +4 +2 +4 +3 +4 +2 +1 +1 +4 +3 +0 +3 +2 +5 +2 +3 +3 +3 +4 +3 +1 +6 +5 +2 +3 +5 +5 +4 +6 +0 +6 +3 +4 +2 +7 +4 +8 +15 +26 +52 +85 +121 +165 +180 +172 +166 +114 +84 +46 +33 +21 +6 +3 +6 +2 +7 +4 +2 +4 +1 +2 +5 +6 +4 +3 +4 +3 +4 +0 +2 +1 +2 +1 +1 +3 +3 +2 +2 +3 +3 +3 +3 +0 +2 +5 +8 +3 +3 +3 +4 +4 +12 +7 +14 +17 +20 +24 +22 +25 +21 +29 +15 +10 +6 +9 +7 +6 +4 +3 +5 +6 +4 +0 +3 +0 +0 +1 +4 +4 +3 +1 +2 +5 +0 +2 +4 +0 +2 +5 +0 +1 +3 +2 +3 +3 +1 +2 +2 +3 +2 +1 +2 +1 +3 +3 +2 +4 +2 +6 +2 +1 +2 +3 +2 +2 +2 +4 +3 +0 +1 +4 +5 +0 +3 +2 +5 +4 +4 +3 +4 +0 +1 +3 +4 +0 +2 +0 +0 +2 +1 +5 +1 +0 +1 +2 +1 +4 +1 +5 +3 +2 +2 +0 +0 +2 +5 +2 +3 +0 +4 +2 +3 +1 +5 +2 +2 +1 +0 +2 +0 +3 +2 +0 +2 +2 +3 +4 +2 +1 +4 +4 +3 +1 +1 +2 +1 +2 +3 +1 +5 +3 +1 +1 +1 +2 +3 +2 +2 +2 +1 +0 +3 +2 +2 +2 +1 +1 +2 +1 +3 +3 +0 +3 +3 +3 +3 +0 +1 +1 +4 +5 +3 +1 +1 +4 +1 +3 +2 +4 +5 +3 +0 +0 +1 +2 +2 +2 +2 +0 +2 +4 +4 +3 +1 +3 +1 +5 +3 +4 +3 +1 +4 +2 +2 +3 +4 +1 +0 +1 +2 +1 +2 +1 +5 +3 +4 +1 +1 +1 +2 +2 +1 +2 +2 +7 +3 +1 +1 +4 +1 +2 +3 +3 +1 +4 +2 +3 +3 +0 +2 +1 +6 +3 +2 +2 +1 +2 +1 +2 +1 +2 +2 +2 +0 +1 +7 +4 +4 +1 +2 +5 +4 +2 +2 +5 +6 +3 +6 +3 +4 +6 +4 +3 +3 +3 +3 +6 +1 +3 +2 +3 +1 +3 +4 +1 +5 +3 +8 +1 +4 +3 +3 +3 +1 +3 +2 +3 +2 +5 +4 +4 +5 +5 +5 +6 +4 +4 +7 +10 +8 +7 +7 +3 +5 +5 +5 +7 +2 +3 +1 +2 +1 +3 +5 +5 +0 +2 +3 +3 +0 +7 +4 +3 +2 +1 +5 +0 +4 +8 +3 +5 +5 +4 +8 +7 +7 +4 +4 +5 +7 +5 +8 +4 +7 +6 +7 +9 +8 +3 +8 +4 +4 +5 +6 +8 +6 +8 +3 +4 +8 +8 +10 +5 +2 +6 +8 +2 +5 +5 +6 +6 +9 +6 +4 +7 +3 +11 +10 +9 +12 +11 +14 +17 +17 +9 +9 +9 +13 +16 +16 +14 +2 +14 +10 +17 +15 +20 +14 +13 +27 +27 +27 +23 +23 +27 +36 +19 +28 +32 +24 +22 +34 +38 +32 +34 +39 +32 +27 +35 +26 +24 +36 +32 +37 +43 +34 +45 +34 +32 +38 +33 +31 +44 +27 +31 +33 +33 +33 +27 +28 +34 +40 +29 +32 +31 +40 +39 +45 +24 +30 +29 +26 +30 +33 +40 +27 +14 +24 +22 +21 +28 +25 +30 +20 +32 +26 +23 +27 +25 +29 +21 +25 +20 +17 +23 +30 +32 +19 +14 +30 +34 +33 +27 +25 +27 +30 +28 +17 +27 +40 +20 +25 +28 +35 +24 +30 +25 +29 +46 +47 +62 +95 +113 +163 +248 +430 +543 +802 +1123 +1367 +1739 +1956 +2007 +2131 +2080 +1894 +1877 +1777 +1803 +1995 +2298 +2641 +3218 +3373 +3685 +3606 +3444 +3105 +2697 +2137 +1545 +1148 +827 +502 +340 +192 +134 +55 +42 +34 +34 +23 +16 +29 +21 +22 +18 +12 +15 +13 +14 +11 +10 +11 +11 +18 +8 +9 +17 +10 +11 +8 +4 +9 +16 +12 +12 +9 +5 +10 +5 +5 +8 +6 +7 +4 +10 +8 +7 +8 +7 +6 +15 +6 +8 +4 +5 +2 +7 +6 +4 +6 +5 +9 +8 +3 +8 +8 +5 +5 +17 +10 +8 +6 +6 +5 +10 +4 +3 +6 +7 +7 +8 +6 +6 +2 +6 +5 +5 +8 +6 +6 +6 +1 +6 +9 +5 +9 +8 +6 +9 +8 +6 +6 +10 +10 +4 +8 +10 +10 +7 +7 +17 +18 +18 +20 +29 +51 +64 +87 +140 +207 +267 +330 +451 +556 +621 +723 +692 +706 +697 +647 +542 +388 +357 +292 +207 +142 +87 +69 +42 +25 +23 +18 +14 +21 +20 +22 +29 +35 +50 +68 +78 +121 +130 +158 +143 +167 +179 +160 +141 +124 +102 +87 +61 +62 +40 +40 +22 +12 +10 +4 +2 +2 +3 +2 +2 +0 +1 +0 +1 +1 +2 +0 +0 +0 +0 +0 +0 +0 +0 +1 +1 +0 +3 +0 +0 +0 +2 +0 +0 +0 +0 +0 +1 +0 +0 +3 +0 +1 +1 +1 +0 +2 +0 +0 +1 +1 +1 +0 +0 +0 +0 +0 +0 +0 +0 +1 +2 +2 +0 +0 +1 +0 +0 +0 +0 +0 +1 +1 +3 +2 +1 +0 +0 +0 +0 +0 +0 +0 +0 +0 +2 +2 +0 +0 +0 +0 +1 +0 +0 +0 +0 +0 +0 +0 +2 +0 +1 +0 +0 +0 +1 +0 +0 +0 +1 +1 +1 +0 +0 +1 +1 +0 +0 +1 +1 +0 +0 +0 +1 +1 +0 +3 +0 +1 +1 +1 +1 +1 +0 +1 +0 +0 +1 +0 +1 +0 +0 +0 +0 +0 +1 +2 +0 +4 +0 +0 +0 +1 +0 +1 +2 +1 +2 +0 +0 +0 +0 +1 +0 +0 +1 +0 +1 +0 +0 +0 +0 +0 +0 +1 +1 +1 +0 +3 +2 +1 +0 +1 +1 +2 +4 +1 +0 +0 +0 +2 +0 +1 +1 +1 +1 +2 +1 +1 +1 +1 +2 +1 +1 +1 +0 +0 +0 +2 +1 +0 +0 +0 +1 +2 +0 +1 +2 +0 +2 +0 +1 +1 +0 +0 +3 +0 +0 +0 +3 +2 +1 +1 +3 +3 +1 +2 +1 +2 +3 +1 +1 +1 +0 +1 +0 +2 +1 +3 +2 +1 +0 +0 +2 +0 +0 +1 +2 +2 +4 +2 +1 +2 +3 +1 +2 +4 +1 +0 +1 +0 +2 +3 +4 +2 +0 +2 +2 +4 +1 +3 +2 +2 +1 +0 +2 +0 +2 +0 +2 +3 +2 +2 +1 +0 +3 +2 +3 +0 +2 +2 +2 +1 +3 +7 +2 +2 +2 +2 +5 +2 +6 +2 +0 +2 +1 +3 +5 +4 +1 +4 +2 +4 +4 +3 +3 +6 +7 +3 +3 +6 +7 +4 +6 +6 +11 +5 +5 +7 +3 +7 +10 +9 +10 +6 +7 +9 +6 +6 +13 +6 +7 +9 +12 +8 +8 +11 +9 +10 +15 +9 +19 +19 +14 +8 +12 +18 +9 +14 +11 +14 +9 +12 +15 +20 +13 +11 +15 +12 +11 +11 +11 +12 +12 +12 +14 +9 +15 +12 +18 +13 +11 +6 +13 +7 +4 +8 +9 +17 +10 +8 +2 +9 +15 +15 +7 +7 +3 +3 +2 +6 +9 +5 +2 +7 +9 +4 +7 +6 +11 +4 +3 +6 +3 +5 +4 +2 +7 +10 +4 +4 +3 +2 +2 +2 +4 +4 +1 +3 +2 +2 +4 +4 +2 +3 +3 +4 +1 +2 +3 +2 +1 +2 +1 +3 +5 +2 +4 +3 +0 +0 +3 +1 +1 +0 +0 +1 +2 +4 +0 +2 +2 +1 +3 +0 +3 +2 +2 +0 +3 +2 +1 +0 +0 +0 +2 +0 +0 +0 +1 +3 +2 +2 +1 +3 +4 +2 +0 +2 +0 +2 +0 +1 +0 +3 +0 +2 +1 +3 +0 +0 +1 +1 +1 +4 +3 +0 +0 +1 +4 +0 +2 +0 +1 +2 +1 +2 +3 +3 +0 +1 +3 +1 +1 +1 +1 +0 +0 +0 +1 +0 +1 +0 +0 +2 +1 +1 +0 +1 +0 +0 +0 +2 +1 +1 +0 +1 +1 +1 +2 +2 +1 +0 +0 +2 +1 +0 +1 +0 +0 +0 +2 +1 +0 +1 +1 +1 +1 +1 +0 +1 +0 +0 +0 +3 +2 +1 +0 +0 +0 +1 +3 +0 +0 +1 +1 +2 +1 +2 +1 +1 +0 +0 +2 +0 +1 +1 +1 +0 +0 +0 +0 +0 +1 +2 +1 +1 +0 +0 +0 +0 +1 +0 +0 +1 +1 +0 +1 +0 +1 +0 +1 +0 +1 +1 +1 +0 +0 +1 +0 +0 +0 +0 +1 +0 +0 +0 +0 +1 +1 +0 +1 +0 +0 +2 +0 +0 +0 +1 +1 +0 +1 +2 +1 +1 +0 +0 +0 +0 +1 +1 +1 +0 +1 +2 +1 +0 +1 +0 +2 +1 +1 +0 +1 +2 +0 +0 +2 +0 +1 +2 +0 +2 +3 +6 +3 +7 +10 +17 +12 +12 +28 +18 +25 +14 +25 +26 +12 +13 +18 +17 +10 +13 +7 +3 +6 +2 +1 +1 +3 +1 +0 +1 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +1 +0 +0 +0 +0 +0 +0 +0 +0 +1 +0 +1 +1 +0 +0 +0 +0 +0 +0 +2 +0 +0 +0 +2 +0 +0 +0 +0 +0 +0 +0 +0 +0 +1 +0 +0 +0 +0 +0 +0 +0 +0 +0 +1 +0 +1 +0 +0 +0 +0 +1 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +1 +0 +1 +0 +0 +0 +0 +0 +2 +0 +0 +0 +1 +0 +0 +0 +0 +0 +0 +1 +0 +0 +0 +1 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +<> +<> +RESC=?; Reset Configuration +CLCK=80; 20MHz/80MHz +TPEA=9.600; Peaking Time +GAIF=0.9312; Fine Gain +GAIN=21.162; Total Gain (Analog * Fine) +RESL=204; Detector Reset Lockout +TFLA=0.200; Flat Top +TPFA=50; Fast Channel Peaking Time +PURE=OFF; PUR Interval On/Off +RTDE=OFF; RTD On/Off +MCAS=NORM; MCA Source +MCAC=2048; MCA/MCS Channels +SOFF=OFF; Set Spectrum Offset +AINP=POS; Analog Input Pos/Neg +INOF=DEF; Input Offset +GAIA=15; Analog Gain Index +CUSP=0; Non-Trapezoidal Shaping +PDMD=NORM; Peak Detect Mode (Min/Max) +THSL=0.585; Slow Threshold +TLLD=OFF; LLD Threshold +THFA=230.00; Fast Threshold +DACO=SHAPED; DAC Output +DACF=50; DAC Offset +RTDS=0; RTD Sensitivity +RTDT=0.00; RTD Threshold +BLRM=1; BLR Mode +BLRD=3; BLR Down Correction +BLRU=0; BLR Up Correction +AUO1=SCA8; AUX_OUT Selection +PRET=OFF; Preset Time +PRER=1800.000; Preset Real Time +PREC=OFF; Preset Counts +PRCL=1; Preset Counts Low Threshold +PRCH=8191; Preset Counts High Threshold +HVSE=-110; HV Set +TECS=220; TEC Set +PAPZ=OFF; Pole-Zero +PAPS=8.5; Preamp 8.5/5 (N/A) +SCOE=FA; Scope Trigger Edge +SCOT=12; Scope Trigger Position +SCOG=1; Digital Scope Gain +MCSL=1; MCS Low Threshold +MCSH=8191; MCS High Threshold +MCST=0.00; MCS Timebase +AUO2=ICR; AUX_OUT2 Selection +TPMO=OFF; Test Pulser On/Off +GPED=RI; G.P. Counter Edge +GPIN=AUX1; G.P. Counter Input +GPME=ON; G.P. Counter Uses MCA_EN? +GPGA=ON; G.P. Counter Uses GATE? +GPMC=ON; G.P. Counter Cleared With MCA Counters? +MCAE=OFF; MCA/MCS Enable +VOLU=OFF; Speaker On/Off +CON1=DAC; Connector 1 +CON2=AUXOUT2; Connector 2 +<> +<> +Device Type: PX5 +Serial Number: 2264 +Firmware: 6.07 Build: 3 +FPGA: 6.02 +Fast Count: 1559 +Slow Count: 95407 +Accumulation Time: 760.681000 +Real Time: 761.253000 +Dead Time: +HV Volt: -110V +TEC Temp: 221K +Board Temp: 37C +<> diff --git a/Data/Mo_Calibration.mca b/Data/Mo_Calibration.mca new file mode 100644 index 0000000..cccb68f --- /dev/null +++ b/Data/Mo_Calibration.mca @@ -0,0 +1,2132 @@ +<> +TAG - live_data +DESCRIPTION - +GAIN - 3 +THRESHOLD - 0 +LIVE_MODE - 0 +PRESET_TIME - 0 +LIVE_TIME - 521.659000 +REAL_TIME - 522.052000 +START_TIME - 01/27/2000 02:01:42 +SERIAL_NUMBER - 0 +<> +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +27 +29 +28 +33 +31 +21 +32 +21 +28 +28 +25 +22 +34 +28 +29 +27 +39 +44 +38 +42 +30 +36 +27 +26 +26 +27 +16 +19 +22 +17 +17 +17 +10 +12 +10 +10 +14 +8 +19 +11 +12 +10 +10 +8 +15 +10 +8 +6 +4 +6 +4 +7 +4 +4 +7 +8 +5 +7 +7 +10 +10 +10 +16 +10 +15 +14 +17 +9 +10 +8 +2 +9 +3 +7 +3 +5 +5 +5 +10 +6 +6 +3 +1 +6 +6 +5 +6 +8 +6 +6 +10 +4 +5 +7 +5 +4 +9 +4 +4 +10 +9 +4 +0 +8 +0 +2 +4 +5 +4 +5 +3 +5 +3 +0 +4 +3 +3 +4 +3 +3 +5 +5 +3 +1 +1 +4 +6 +3 +3 +4 +2 +3 +3 +3 +7 +2 +7 +3 +1 +4 +5 +3 +2 +2 +2 +5 +4 +4 +0 +3 +4 +5 +3 +5 +4 +5 +5 +3 +2 +5 +6 +14 +14 +18 +9 +10 +13 +4 +5 +6 +1 +6 +3 +2 +11 +4 +6 +4 +8 +10 +3 +5 +6 +3 +6 +4 +5 +6 +9 +9 +4 +11 +23 +24 +46 +28 +24 +13 +8 +2 +2 +9 +5 +7 +3 +4 +7 +3 +4 +1 +6 +3 +9 +6 +9 +13 +9 +8 +9 +2 +6 +2 +5 +7 +5 +8 +11 +15 +18 +19 +19 +12 +7 +6 +3 +4 +6 +5 +3 +3 +4 +5 +1 +2 +4 +4 +5 +4 +8 +5 +3 +3 +3 +5 +6 +8 +7 +8 +4 +3 +2 +3 +4 +3 +1 +1 +4 +1 +7 +3 +3 +4 +7 +3 +3 +2 +6 +0 +4 +4 +2 +4 +5 +6 +2 +4 +2 +4 +2 +2 +2 +8 +3 +2 +2 +6 +2 +4 +4 +2 +8 +1 +4 +2 +5 +3 +3 +4 +3 +5 +5 +1 +2 +3 +4 +3 +3 +3 +2 +4 +3 +5 +3 +3 +4 +5 +3 +7 +5 +12 +6 +6 +4 +3 +3 +4 +2 +6 +3 +6 +3 +2 +2 +2 +4 +2 +4 +2 +4 +2 +1 +3 +2 +5 +3 +8 +6 +1 +5 +3 +5 +1 +5 +6 +4 +3 +4 +2 +4 +3 +1 +1 +4 +4 +2 +3 +4 +6 +2 +4 +2 +4 +3 +2 +2 +0 +3 +3 +1 +4 +2 +10 +7 +3 +4 +8 +8 +6 +2 +4 +1 +5 +2 +1 +2 +4 +5 +4 +0 +4 +4 +1 +7 +8 +4 +3 +6 +3 +3 +2 +4 +4 +0 +5 +3 +4 +5 +7 +4 +0 +2 +6 +1 +2 +4 +2 +2 +3 +3 +1 +2 +3 +0 +3 +1 +7 +8 +2 +10 +8 +3 +2 +5 +4 +5 +6 +6 +5 +1 +4 +5 +3 +5 +6 +7 +8 +1 +7 +2 +3 +4 +1 +2 +5 +6 +11 +9 +4 +7 +7 +13 +4 +4 +10 +0 +6 +3 +7 +9 +12 +10 +10 +16 +16 +10 +16 +15 +9 +15 +12 +4 +9 +20 +11 +9 +11 +7 +14 +15 +16 +16 +19 +21 +16 +32 +31 +28 +35 +30 +30 +21 +26 +28 +32 +43 +26 +35 +30 +48 +40 +41 +42 +31 +27 +38 +50 +36 +60 +69 +110 +216 +386 +807 +1370 +2315 +3541 +5053 +6548 +7834 +8916 +9588 +9101 +7814 +6296 +4488 +2965 +1809 +993 +471 +239 +137 +54 +40 +30 +28 +21 +21 +23 +16 +13 +11 +16 +12 +10 +15 +10 +14 +11 +15 +17 +17 +15 +13 +10 +10 +14 +9 +17 +12 +18 +15 +14 +19 +30 +9 +18 +13 +18 +24 +19 +12 +26 +12 +16 +21 +24 +25 +22 +30 +39 +48 +73 +145 +253 +415 +677 +1027 +1255 +1531 +1609 +1639 +1484 +1176 +872 +563 +373 +263 +230 +202 +207 +232 +249 +235 +221 +144 +112 +53 +40 +25 +12 +5 +2 +1 +0 +1 +1 +1 +1 +2 +1 +0 +1 +0 +1 +2 +1 +1 +1 +1 +0 +0 +0 +0 +0 +0 +1 +1 +1 +1 +1 +0 +0 +1 +4 +0 +1 +1 +0 +1 +0 +0 +0 +0 +1 +0 +1 +0 +0 +1 +0 +0 +2 +1 +0 +1 +0 +0 +1 +0 +0 +0 +0 +1 +1 +0 +1 +1 +2 +0 +0 +0 +0 +0 +2 +1 +2 +0 +1 +1 +0 +0 +0 +1 +0 +0 +0 +1 +1 +0 +2 +0 +1 +1 +0 +3 +1 +0 +0 +0 +0 +0 +0 +0 +0 +0 +1 +0 +0 +0 +0 +0 +0 +1 +0 +0 +0 +1 +2 +1 +0 +1 +1 +0 +3 +1 +1 +1 +0 +2 +0 +0 +0 +0 +0 +0 +0 +0 +1 +0 +1 +2 +1 +1 +1 +1 +1 +1 +1 +1 +1 +0 +0 +1 +0 +0 +0 +1 +1 +0 +1 +0 +0 +1 +1 +1 +0 +0 +3 +0 +2 +1 +2 +1 +2 +0 +0 +1 +0 +0 +0 +0 +0 +0 +0 +0 +1 +1 +0 +1 +3 +2 +1 +1 +0 +0 +2 +0 +1 +1 +1 +1 +0 +1 +1 +0 +0 +0 +2 +1 +1 +4 +0 +0 +0 +1 +0 +0 +1 +1 +3 +1 +1 +0 +1 +0 +0 +2 +1 +1 +1 +0 +2 +0 +0 +0 +0 +0 +1 +2 +0 +0 +2 +0 +0 +0 +1 +1 +0 +0 +1 +1 +1 +2 +0 +0 +0 +0 +0 +3 +1 +0 +1 +1 +0 +1 +1 +0 +1 +2 +2 +2 +1 +2 +0 +0 +0 +1 +0 +0 +0 +0 +0 +0 +0 +1 +0 +2 +1 +1 +0 +0 +1 +0 +0 +1 +1 +1 +1 +0 +0 +0 +1 +0 +0 +0 +0 +0 +1 +1 +1 +0 +0 +0 +0 +1 +0 +2 +0 +0 +1 +1 +1 +1 +1 +0 +1 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +1 +0 +0 +1 +0 +0 +0 +1 +0 +1 +0 +1 +0 +1 +3 +0 +1 +0 +2 +0 +1 +2 +0 +0 +1 +0 +2 +1 +2 +0 +2 +0 +0 +1 +0 +1 +2 +3 +1 +0 +1 +0 +3 +0 +0 +0 +0 +0 +0 +2 +2 +0 +0 +1 +1 +1 +1 +0 +1 +1 +1 +0 +0 +0 +0 +0 +0 +0 +3 +0 +1 +1 +0 +1 +2 +0 +1 +2 +1 +2 +0 +0 +0 +1 +0 +2 +0 +1 +1 +2 +0 +0 +0 +2 +1 +3 +0 +0 +0 +0 +1 +0 +1 +0 +0 +1 +0 +0 +0 +1 +0 +1 +1 +1 +2 +0 +0 +0 +0 +0 +1 +0 +0 +1 +0 +0 +1 +1 +2 +0 +1 +1 +0 +0 +1 +1 +0 +0 +1 +0 +0 +0 +1 +2 +1 +0 +0 +1 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +1 +0 +1 +0 +0 +0 +1 +0 +0 +0 +0 +1 +1 +0 +0 +0 +0 +0 +0 +0 +0 +2 +0 +0 +0 +0 +1 +0 +0 +0 +0 +1 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +1 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +1 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +1 +0 +1 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +1 +0 +0 +1 +0 +0 +0 +1 +1 +0 +0 +0 +0 +0 +0 +0 +1 +1 +0 +1 +0 +0 +1 +1 +0 +0 +1 +1 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +1 +1 +0 +0 +1 +0 +0 +0 +0 +0 +1 +0 +0 +0 +0 +0 +1 +2 +0 +0 +1 +0 +0 +1 +1 +0 +0 +0 +0 +1 +0 +0 +0 +0 +0 +0 +0 +1 +0 +1 +1 +0 +1 +0 +1 +1 +0 +0 +0 +0 +0 +1 +0 +0 +0 +0 +0 +1 +0 +2 +0 +0 +0 +2 +0 +0 +0 +0 +2 +1 +1 +0 +1 +1 +0 +0 +2 +2 +0 +1 +0 +0 +1 +0 +1 +0 +2 +0 +0 +0 +0 +0 +0 +1 +1 +0 +0 +1 +0 +2 +0 +0 +0 +1 +0 +1 +1 +0 +2 +1 +1 +1 +0 +0 +0 +1 +2 +0 +0 +1 +0 +0 +0 +1 +0 +2 +0 +0 +0 +1 +1 +1 +1 +1 +1 +0 +0 +0 +1 +2 +0 +2 +1 +0 +1 +0 +0 +0 +0 +1 +0 +0 +1 +2 +1 +1 +2 +2 +2 +2 +0 +0 +0 +2 +0 +1 +2 +1 +0 +1 +2 +1 +1 +0 +2 +2 +3 +2 +1 +0 +2 +1 +1 +2 +1 +0 +1 +3 +1 +0 +1 +1 +0 +2 +2 +0 +1 +1 +1 +3 +0 +3 +1 +1 +1 +0 +2 +1 +0 +2 +4 +0 +1 +1 +3 +0 +4 +2 +1 +1 +2 +1 +2 +1 +2 +1 +2 +0 +0 +1 +1 +1 +0 +6 +1 +3 +3 +1 +5 +1 +4 +2 +4 +1 +4 +1 +5 +3 +0 +4 +5 +3 +1 +4 +4 +3 +2 +3 +4 +2 +4 +5 +1 +3 +3 +9 +5 +7 +11 +8 +6 +4 +4 +8 +2 +8 +10 +6 +3 +6 +6 +6 +5 +3 +5 +7 +9 +4 +3 +4 +4 +4 +5 +6 +6 +3 +5 +3 +7 +4 +7 +5 +9 +3 +7 +6 +4 +2 +2 +1 +7 +2 +3 +2 +2 +5 +4 +5 +5 +2 +3 +3 +3 +5 +2 +3 +2 +1 +3 +2 +0 +3 +2 +1 +4 +2 +1 +1 +0 +6 +2 +1 +2 +3 +1 +1 +1 +1 +2 +1 +0 +0 +1 +0 +0 +1 +3 +1 +3 +1 +2 +2 +3 +0 +5 +2 +0 +0 +0 +0 +0 +2 +1 +2 +0 +2 +1 +3 +0 +0 +0 +1 +0 +0 +1 +0 +1 +0 +1 +1 +0 +3 +3 +1 +1 +0 +1 +1 +1 +2 +1 +1 +1 +0 +2 +1 +1 +0 +2 +1 +0 +1 +2 +1 +0 +0 +0 +0 +1 +2 +0 +1 +2 +0 +0 +0 +0 +2 +0 +0 +0 +1 +0 +0 +1 +0 +0 +0 +1 +0 +1 +0 +1 +1 +0 +0 +0 +0 +0 +1 +0 +2 +0 +0 +2 +0 +0 +1 +2 +0 +2 +1 +0 +2 +1 +0 +0 +0 +0 +0 +1 +0 +2 +0 +0 +0 +1 +0 +0 +1 +1 +0 +1 +2 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +1 +2 +1 +1 +0 +0 +2 +1 +0 +0 +1 +1 +1 +0 +2 +0 +0 +0 +0 +1 +0 +0 +0 +1 +0 +0 +2 +0 +0 +0 +0 +0 +0 +1 +0 +0 +1 +1 +0 +0 +1 +1 +0 +1 +0 +0 +0 +0 +1 +0 +0 +0 +0 +1 +1 +0 +0 +2 +1 +0 +0 +0 +0 +0 +1 +2 +0 +0 +0 +0 +0 +0 +0 +2 +0 +0 +0 +0 +1 +0 +0 +0 +1 +2 +0 +0 +0 +0 +0 +1 +0 +0 +2 +0 +0 +1 +0 +2 +0 +0 +2 +2 +2 +4 +4 +4 +5 +4 +10 +10 +12 +13 +13 +12 +16 +18 +14 +16 +9 +14 +10 +5 +8 +7 +4 +0 +2 +0 +0 +0 +1 +0 +0 +0 +0 +0 +0 +0 +1 +1 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +1 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +1 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +<> +<> +RESC=?; Reset Configuration +CLCK=80; 20MHz/80MHz +TPEA=9.600; Peaking Time +GAIF=0.9312; Fine Gain +GAIN=21.162; Total Gain (Analog * Fine) +RESL=204; Detector Reset Lockout +TFLA=0.200; Flat Top +TPFA=50; Fast Channel Peaking Time +PURE=OFF; PUR Interval On/Off +RTDE=OFF; RTD On/Off +MCAS=NORM; MCA Source +MCAC=2048; MCA/MCS Channels +SOFF=OFF; Set Spectrum Offset +AINP=POS; Analog Input Pos/Neg +INOF=DEF; Input Offset +GAIA=15; Analog Gain Index +CUSP=0; Non-Trapezoidal Shaping +PDMD=NORM; Peak Detect Mode (Min/Max) +THSL=0.585; Slow Threshold +TLLD=OFF; LLD Threshold +THFA=230.00; Fast Threshold +DACO=SHAPED; DAC Output +DACF=50; DAC Offset +RTDS=0; RTD Sensitivity +RTDT=0.00; RTD Threshold +BLRM=1; BLR Mode +BLRD=3; BLR Down Correction +BLRU=0; BLR Up Correction +AUO1=SCA8; AUX_OUT Selection +PRET=OFF; Preset Time +PRER=1800.000; Preset Real Time +PREC=OFF; Preset Counts +PRCL=1; Preset Counts Low Threshold +PRCH=8191; Preset Counts High Threshold +HVSE=-110; HV Set +TECS=220; TEC Set +PAPZ=OFF; Pole-Zero +PAPS=8.5; Preamp 8.5/5 (N/A) +SCOE=FA; Scope Trigger Edge +SCOT=12; Scope Trigger Position +SCOG=1; Digital Scope Gain +MCSL=1; MCS Low Threshold +MCSH=8191; MCS High Threshold +MCST=0.00; MCS Timebase +AUO2=ICR; AUX_OUT2 Selection +TPMO=OFF; Test Pulser On/Off +GPED=RI; G.P. Counter Edge +GPIN=AUX1; G.P. Counter Input +GPME=ON; G.P. Counter Uses MCA_EN? +GPGA=ON; G.P. Counter Uses GATE? +GPMC=ON; G.P. Counter Cleared With MCA Counters? +MCAE=OFF; MCA/MCS Enable +VOLU=OFF; Speaker On/Off +CON1=DAC; Connector 1 +CON2=AUXOUT2; Connector 2 +<> +<> +Device Type: PX5 +Serial Number: 2264 +Firmware: 6.07 Build: 3 +FPGA: 6.02 +Fast Count: 787 +Slow Count: 103114 +Accumulation Time: 521.659000 +Real Time: 522.052000 +Dead Time: +HV Volt: -110V +TEC Temp: 221K +Board Temp: 36C +<> diff --git a/Data/NoFilm_overNight_2h_17Jul_1(Mo).mca b/Data/NoFilm_overNight_2h_17Jul_1(Mo).mca new file mode 100644 index 0000000..7202c9e --- /dev/null +++ b/Data/NoFilm_overNight_2h_17Jul_1(Mo).mca @@ -0,0 +1,2132 @@ +<> +TAG - live_data +DESCRIPTION - +GAIN - 3 +THRESHOLD - 0 +LIVE_MODE - 0 +PRESET_TIME - 0 +LIVE_TIME - 1798.650000 +REAL_TIME - 1800.000000 +START_TIME - 01/27/2000 01:31:40 +SERIAL_NUMBER - 0 +<> +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +77 +93 +109 +121 +90 +83 +81 +86 +83 +103 +91 +96 +93 +92 +96 +116 +96 +84 +107 +96 +131 +104 +115 +107 +92 +84 +76 +99 +64 +69 +62 +60 +48 +50 +50 +40 +53 +38 +32 +35 +30 +26 +32 +24 +30 +23 +27 +26 +29 +30 +27 +31 +28 +22 +23 +25 +24 +21 +28 +20 +38 +52 +62 +56 +33 +57 +37 +36 +33 +23 +25 +16 +16 +18 +30 +10 +19 +18 +18 +18 +18 +9 +21 +19 +15 +13 +14 +24 +13 +22 +25 +20 +14 +17 +14 +15 +21 +19 +19 +10 +17 +16 +6 +18 +13 +25 +15 +13 +16 +15 +18 +14 +17 +17 +17 +15 +12 +14 +16 +8 +15 +19 +14 +9 +14 +12 +13 +15 +21 +9 +10 +18 +16 +11 +13 +18 +11 +8 +11 +11 +25 +15 +10 +17 +15 +16 +16 +17 +10 +12 +11 +11 +20 +16 +16 +17 +17 +18 +19 +25 +25 +43 +43 +53 +44 +26 +16 +10 +19 +15 +18 +10 +14 +15 +14 +10 +16 +20 +30 +19 +25 +26 +9 +15 +16 +13 +15 +9 +15 +16 +30 +48 +79 +122 +123 +115 +80 +56 +33 +17 +17 +11 +14 +13 +9 +9 +9 +15 +16 +23 +16 +21 +23 +27 +34 +23 +30 +38 +18 +13 +16 +21 +17 +18 +21 +21 +35 +40 +65 +61 +51 +36 +23 +14 +11 +10 +10 +10 +9 +12 +18 +10 +8 +15 +16 +18 +10 +20 +8 +13 +16 +12 +19 +14 +21 +21 +24 +19 +21 +17 +21 +17 +15 +11 +12 +16 +10 +13 +15 +14 +11 +10 +8 +17 +16 +9 +15 +8 +11 +11 +13 +14 +14 +3 +7 +15 +12 +11 +15 +14 +7 +6 +11 +11 +11 +14 +10 +16 +13 +22 +9 +15 +16 +12 +14 +8 +12 +13 +8 +8 +15 +10 +10 +9 +12 +17 +11 +18 +14 +9 +15 +11 +10 +18 +22 +28 +17 +35 +30 +29 +19 +16 +15 +11 +12 +12 +10 +10 +11 +17 +16 +16 +11 +11 +9 +21 +12 +10 +12 +15 +12 +12 +5 +12 +12 +14 +9 +6 +11 +14 +8 +8 +13 +13 +6 +11 +7 +12 +13 +10 +8 +8 +7 +5 +14 +8 +8 +15 +11 +10 +11 +17 +16 +12 +8 +9 +10 +9 +9 +9 +15 +19 +15 +18 +22 +12 +18 +15 +18 +21 +13 +8 +11 +18 +7 +12 +11 +15 +7 +7 +4 +10 +11 +14 +9 +13 +9 +14 +7 +9 +10 +12 +6 +11 +12 +10 +14 +7 +10 +11 +12 +9 +13 +14 +12 +10 +10 +25 +13 +19 +11 +11 +13 +12 +19 +19 +6 +16 +13 +11 +16 +18 +15 +14 +7 +14 +16 +16 +13 +11 +10 +15 +16 +10 +18 +19 +9 +15 +17 +19 +16 +15 +14 +11 +15 +15 +17 +16 +18 +17 +22 +15 +20 +12 +23 +17 +19 +18 +28 +30 +33 +33 +42 +51 +40 +49 +47 +42 +47 +37 +37 +31 +36 +46 +33 +40 +41 +44 +49 +69 +44 +55 +56 +57 +64 +96 +85 +91 +81 +110 +95 +112 +108 +108 +100 +110 +110 +122 +128 +123 +124 +122 +113 +113 +120 +164 +159 +212 +262 +403 +689 +1406 +2704 +4742 +7921 +12326 +17299 +22602 +27613 +30998 +32119 +30885 +27045 +21268 +15691 +10148 +6125 +3316 +1618 +819 +385 +224 +128 +102 +76 +73 +73 +62 +43 +56 +55 +36 +55 +61 +47 +38 +46 +34 +58 +48 +51 +53 +55 +44 +37 +38 +39 +48 +57 +40 +54 +59 +66 +50 +53 +60 +56 +59 +63 +68 +67 +71 +65 +81 +64 +75 +79 +83 +98 +119 +166 +256 +498 +919 +1583 +2396 +3416 +4610 +5293 +5755 +5568 +4954 +3958 +2977 +1987 +1397 +941 +773 +767 +782 +841 +878 +772 +717 +467 +396 +241 +137 +61 +47 +18 +9 +7 +4 +6 +2 +2 +0 +3 +1 +3 +0 +2 +1 +0 +4 +1 +1 +1 +5 +1 +3 +1 +3 +4 +0 +2 +4 +4 +1 +2 +1 +1 +2 +1 +2 +2 +3 +2 +1 +3 +3 +3 +4 +3 +4 +1 +1 +0 +6 +1 +2 +3 +1 +4 +1 +1 +3 +2 +1 +4 +2 +1 +1 +2 +2 +2 +0 +1 +2 +1 +2 +2 +0 +0 +5 +0 +2 +2 +2 +6 +4 +1 +3 +2 +4 +1 +2 +4 +4 +3 +4 +2 +0 +0 +2 +2 +5 +2 +3 +0 +4 +1 +1 +0 +0 +2 +3 +2 +1 +1 +4 +1 +0 +2 +2 +0 +1 +0 +3 +1 +2 +6 +5 +1 +2 +4 +4 +4 +6 +3 +3 +3 +3 +2 +1 +0 +4 +0 +1 +3 +4 +2 +1 +2 +1 +3 +1 +0 +3 +1 +0 +3 +2 +3 +7 +3 +5 +2 +2 +2 +0 +3 +5 +2 +3 +1 +0 +0 +0 +1 +1 +0 +0 +1 +2 +0 +1 +3 +4 +2 +1 +4 +1 +0 +4 +3 +2 +2 +0 +1 +3 +7 +0 +2 +1 +2 +1 +1 +3 +1 +3 +2 +1 +1 +4 +1 +1 +3 +3 +3 +4 +1 +2 +1 +3 +3 +0 +5 +3 +3 +4 +4 +2 +5 +3 +2 +0 +0 +4 +1 +1 +2 +0 +1 +2 +5 +1 +5 +1 +1 +0 +2 +1 +2 +1 +1 +1 +1 +0 +4 +2 +0 +2 +3 +0 +3 +1 +0 +2 +4 +0 +1 +2 +2 +2 +1 +1 +1 +2 +2 +2 +0 +0 +2 +3 +1 +2 +0 +1 +3 +0 +0 +4 +2 +0 +0 +0 +3 +0 +4 +1 +0 +0 +1 +1 +2 +2 +1 +2 +2 +2 +2 +3 +2 +1 +3 +1 +2 +2 +0 +1 +4 +2 +1 +1 +2 +2 +1 +2 +1 +3 +1 +0 +3 +1 +5 +3 +0 +1 +1 +2 +3 +4 +4 +0 +1 +1 +1 +2 +0 +2 +1 +2 +3 +1 +2 +2 +3 +4 +2 +1 +0 +2 +1 +3 +2 +2 +2 +2 +0 +1 +1 +1 +2 +4 +1 +3 +3 +3 +3 +0 +1 +0 +2 +1 +3 +1 +2 +3 +3 +4 +1 +3 +0 +2 +2 +2 +3 +3 +2 +0 +2 +6 +1 +2 +3 +2 +1 +1 +1 +1 +1 +1 +3 +1 +1 +1 +3 +0 +2 +3 +0 +5 +3 +2 +2 +2 +2 +1 +1 +2 +0 +0 +3 +0 +3 +0 +1 +2 +0 +2 +2 +1 +1 +3 +3 +0 +1 +3 +1 +6 +3 +2 +0 +0 +0 +3 +3 +1 +0 +1 +3 +2 +3 +1 +0 +1 +2 +3 +3 +4 +2 +0 +0 +2 +1 +2 +3 +0 +2 +3 +1 +3 +1 +2 +2 +1 +2 +0 +1 +1 +3 +0 +1 +0 +0 +1 +0 +3 +1 +0 +2 +1 +0 +0 +1 +0 +0 +0 +0 +4 +0 +1 +2 +1 +1 +1 +0 +1 +1 +1 +0 +1 +0 +2 +1 +2 +1 +3 +0 +1 +0 +2 +2 +1 +1 +2 +0 +2 +2 +3 +1 +0 +1 +1 +3 +1 +0 +1 +0 +1 +2 +0 +0 +1 +0 +1 +2 +1 +2 +1 +0 +0 +0 +1 +0 +0 +0 +0 +0 +0 +0 +1 +1 +3 +0 +1 +1 +0 +1 +2 +0 +0 +0 +2 +0 +1 +3 +2 +1 +0 +0 +0 +0 +0 +0 +1 +0 +0 +0 +0 +0 +0 +0 +0 +1 +2 +0 +0 +1 +1 +0 +1 +1 +0 +0 +5 +2 +0 +0 +1 +1 +1 +1 +1 +1 +1 +2 +1 +0 +0 +1 +1 +0 +1 +1 +1 +0 +0 +0 +2 +1 +0 +0 +2 +0 +0 +0 +1 +1 +2 +1 +1 +2 +1 +2 +1 +1 +1 +1 +1 +1 +0 +0 +2 +1 +0 +1 +2 +2 +0 +1 +0 +1 +1 +2 +4 +0 +2 +0 +0 +0 +2 +2 +2 +3 +3 +2 +1 +3 +0 +1 +0 +1 +1 +1 +1 +4 +3 +4 +2 +1 +5 +0 +0 +4 +0 +3 +2 +1 +2 +1 +1 +0 +1 +2 +2 +1 +1 +1 +3 +2 +1 +2 +1 +0 +3 +3 +0 +0 +2 +2 +1 +1 +2 +0 +1 +3 +1 +0 +2 +1 +1 +1 +3 +2 +4 +5 +2 +1 +1 +3 +2 +6 +1 +0 +1 +2 +3 +1 +1 +2 +3 +2 +2 +0 +0 +2 +1 +2 +4 +1 +3 +2 +0 +1 +0 +0 +2 +1 +1 +4 +2 +2 +1 +4 +3 +1 +2 +1 +4 +4 +0 +2 +2 +3 +1 +1 +2 +2 +2 +0 +2 +2 +2 +3 +3 +5 +4 +4 +3 +3 +6 +2 +1 +3 +2 +1 +2 +4 +5 +1 +0 +6 +3 +2 +1 +1 +1 +2 +7 +1 +1 +5 +5 +4 +4 +4 +4 +3 +3 +2 +2 +2 +2 +3 +3 +6 +2 +4 +8 +3 +3 +3 +5 +4 +1 +2 +3 +8 +9 +2 +6 +1 +4 +7 +6 +3 +2 +1 +4 +4 +4 +5 +6 +4 +6 +9 +3 +3 +4 +7 +9 +3 +1 +6 +5 +7 +8 +7 +8 +2 +9 +3 +14 +6 +6 +5 +6 +9 +10 +8 +2 +10 +11 +9 +12 +10 +13 +9 +13 +8 +13 +6 +18 +11 +6 +11 +9 +15 +16 +15 +20 +8 +14 +14 +15 +18 +11 +12 +14 +15 +14 +12 +25 +15 +15 +24 +11 +19 +16 +13 +15 +17 +17 +17 +13 +19 +11 +19 +13 +23 +13 +14 +19 +12 +17 +15 +20 +20 +11 +16 +12 +14 +13 +10 +12 +12 +9 +10 +14 +14 +11 +10 +13 +6 +16 +8 +5 +9 +10 +8 +6 +5 +9 +4 +9 +5 +16 +8 +9 +9 +7 +6 +11 +5 +4 +4 +4 +7 +8 +2 +1 +3 +4 +6 +6 +7 +4 +3 +8 +1 +2 +3 +5 +3 +4 +4 +5 +4 +4 +5 +5 +3 +5 +4 +4 +3 +3 +4 +2 +2 +3 +2 +8 +4 +7 +2 +5 +3 +3 +3 +1 +4 +2 +3 +2 +6 +2 +4 +3 +3 +2 +2 +3 +3 +0 +3 +4 +4 +5 +3 +3 +6 +2 +2 +2 +0 +6 +2 +2 +3 +2 +3 +2 +5 +0 +3 +3 +2 +2 +3 +1 +3 +2 +0 +4 +2 +4 +3 +0 +1 +3 +2 +4 +2 +1 +2 +3 +2 +4 +2 +2 +2 +3 +1 +4 +2 +3 +1 +2 +3 +3 +2 +1 +3 +4 +1 +1 +3 +3 +0 +4 +4 +4 +1 +3 +2 +1 +1 +0 +2 +1 +3 +5 +1 +1 +4 +2 +1 +3 +2 +4 +1 +0 +0 +2 +0 +1 +1 +1 +3 +0 +1 +2 +6 +1 +3 +2 +1 +2 +0 +1 +0 +1 +3 +3 +3 +1 +2 +1 +0 +1 +1 +0 +2 +1 +0 +2 +2 +0 +0 +3 +1 +2 +3 +0 +1 +0 +1 +1 +1 +3 +1 +2 +2 +3 +1 +2 +2 +1 +1 +2 +0 +0 +1 +1 +1 +3 +2 +1 +1 +0 +0 +2 +2 +2 +6 +0 +1 +0 +1 +0 +0 +2 +1 +1 +0 +0 +1 +2 +3 +1 +0 +2 +0 +3 +0 +0 +1 +1 +0 +0 +0 +0 +1 +3 +1 +0 +0 +1 +2 +1 +1 +1 +2 +1 +8 +7 +9 +7 +13 +18 +17 +25 +48 +40 +55 +58 +68 +55 +70 +50 +47 +47 +33 +28 +26 +21 +14 +11 +10 +2 +2 +4 +0 +1 +0 +2 +1 +0 +0 +0 +0 +0 +0 +2 +0 +0 +0 +0 +1 +0 +0 +0 +0 +0 +0 +2 +1 +0 +0 +0 +0 +0 +0 +1 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +1 +0 +0 +0 +0 +0 +0 +0 +1 +0 +0 +0 +0 +0 +0 +1 +0 +1 +0 +0 +1 +0 +0 +0 +0 +0 +0 +0 +1 +0 +0 +2 +0 +0 +0 +1 +0 +1 +0 +1 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +1 +1 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +<> +<> +RESC=?; Reset Configuration +CLCK=80; 20MHz/80MHz +TPEA=9.600; Peaking Time +GAIF=0.9312; Fine Gain +GAIN=21.162; Total Gain (Analog * Fine) +RESL=204; Detector Reset Lockout +TFLA=0.200; Flat Top +TPFA=50; Fast Channel Peaking Time +PURE=OFF; PUR Interval On/Off +RTDE=OFF; RTD On/Off +MCAS=NORM; MCA Source +MCAC=2048; MCA/MCS Channels +SOFF=OFF; Set Spectrum Offset +AINP=POS; Analog Input Pos/Neg +INOF=DEF; Input Offset +GAIA=15; Analog Gain Index +CUSP=0; Non-Trapezoidal Shaping +PDMD=NORM; Peak Detect Mode (Min/Max) +THSL=0.585; Slow Threshold +TLLD=OFF; LLD Threshold +THFA=230.00; Fast Threshold +DACO=SHAPED; DAC Output +DACF=50; DAC Offset +RTDS=0; RTD Sensitivity +RTDT=0.00; RTD Threshold +BLRM=1; BLR Mode +BLRD=3; BLR Down Correction +BLRU=0; BLR Up Correction +AUO1=SCA8; AUX_OUT Selection +PRET=OFF; Preset Time +PRER=1800.000; Preset Real Time +PREC=OFF; Preset Counts +PRCL=1; Preset Counts Low Threshold +PRCH=8191; Preset Counts High Threshold +HVSE=-110; HV Set +TECS=220; TEC Set +PAPZ=OFF; Pole-Zero +PAPS=8.5; Preamp 8.5/5 (N/A) +SCOE=FA; Scope Trigger Edge +SCOT=12; Scope Trigger Position +SCOG=1; Digital Scope Gain +MCSL=1; MCS Low Threshold +MCSH=8191; MCS High Threshold +MCST=0.00; MCS Timebase +AUO2=ICR; AUX_OUT2 Selection +TPMO=OFF; Test Pulser On/Off +GPED=RI; G.P. Counter Edge +GPIN=AUX1; G.P. Counter Input +GPME=ON; G.P. Counter Uses MCA_EN? +GPGA=ON; G.P. Counter Uses GATE? +GPMC=ON; G.P. Counter Cleared With MCA Counters? +MCAE=OFF; MCA/MCS Enable +VOLU=OFF; Speaker On/Off +CON1=DAC; Connector 1 +CON2=AUXOUT2; Connector 2 +<> +<> +Device Type: PX5 +Serial Number: 2264 +Firmware: 6.07 Build: 3 +FPGA: 6.02 +Fast Count: 2571 +Slow Count: 354446 +Accumulation Time: 1798.650000 +Real Time: 1800.000000 +Dead Time: +HV Volt: -110V +TEC Temp: 221K +Board Temp: 37C +<> diff --git a/Data/Rb_Calibration (20 mins).mca b/Data/Rb_Calibration (20 mins).mca new file mode 100644 index 0000000..226f6f5 --- /dev/null +++ b/Data/Rb_Calibration (20 mins).mca @@ -0,0 +1,2132 @@ +<> +TAG - live_data +DESCRIPTION - +GAIN - 3 +THRESHOLD - 0 +LIVE_MODE - 0 +PRESET_TIME - 0 +LIVE_TIME - 1199.327000 +REAL_TIME - 1200.194000 +START_TIME - 01/27/2000 02:12:21 +SERIAL_NUMBER - 0 +<> +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +28 +46 +39 +36 +39 +53 +48 +30 +49 +35 +43 +28 +39 +33 +31 +30 +21 +27 +33 +35 +27 +17 +20 +18 +24 +23 +20 +23 +19 +16 +32 +19 +23 +17 +14 +22 +24 +20 +20 +15 +18 +26 +8 +20 +19 +23 +24 +20 +16 +22 +8 +13 +17 +13 +13 +21 +27 +14 +25 +18 +24 +23 +20 +21 +18 +18 +27 +13 +15 +25 +21 +14 +18 +19 +12 +21 +24 +26 +19 +17 +18 +22 +22 +22 +11 +11 +15 +22 +21 +14 +18 +17 +24 +5 +19 +16 +15 +17 +18 +21 +15 +24 +16 +14 +15 +13 +16 +19 +23 +16 +21 +15 +16 +13 +16 +12 +16 +14 +13 +21 +10 +14 +13 +20 +16 +17 +21 +16 +18 +15 +14 +10 +12 +16 +15 +19 +20 +18 +21 +20 +16 +11 +12 +15 +15 +15 +14 +25 +17 +22 +12 +14 +16 +17 +16 +18 +19 +19 +10 +15 +26 +31 +30 +40 +30 +23 +21 +19 +13 +15 +23 +12 +15 +15 +19 +18 +16 +21 +23 +15 +26 +25 +22 +22 +17 +19 +19 +19 +22 +16 +22 +35 +51 +76 +74 +61 +58 +32 +32 +23 +22 +10 +14 +12 +13 +23 +12 +17 +12 +15 +19 +25 +20 +26 +29 +32 +31 +26 +27 +18 +17 +18 +20 +22 +18 +15 +27 +37 +37 +36 +36 +17 +16 +16 +15 +13 +12 +13 +9 +11 +7 +14 +13 +12 +10 +11 +18 +12 +14 +12 +5 +12 +12 +13 +10 +12 +19 +16 +11 +18 +9 +4 +6 +9 +5 +11 +6 +6 +4 +8 +6 +6 +4 +6 +8 +8 +6 +2 +8 +6 +4 +9 +10 +10 +5 +9 +9 +12 +11 +11 +8 +9 +9 +11 +8 +10 +8 +13 +9 +9 +11 +9 +12 +11 +7 +5 +7 +3 +8 +10 +10 +14 +7 +9 +4 +7 +9 +14 +8 +8 +8 +7 +8 +3 +9 +12 +8 +20 +11 +7 +7 +6 +4 +11 +5 +13 +5 +8 +11 +11 +11 +7 +7 +11 +8 +10 +10 +7 +7 +10 +4 +4 +13 +9 +10 +12 +9 +8 +12 +10 +18 +21 +21 +19 +28 +16 +11 +14 +9 +9 +7 +15 +12 +8 +9 +9 +6 +12 +10 +15 +9 +18 +10 +15 +9 +18 +17 +19 +16 +19 +20 +26 +26 +31 +24 +27 +38 +48 +37 +43 +51 +42 +58 +55 +70 +74 +80 +84 +104 +141 +206 +476 +970 +2190 +4132 +7126 +10629 +14307 +16764 +17689 +15953 +12838 +8986 +5673 +2973 +1385 +595 +250 +115 +81 +54 +44 +36 +35 +28 +33 +29 +17 +18 +22 +19 +24 +20 +20 +31 +23 +28 +31 +36 +28 +33 +36 +24 +37 +40 +52 +40 +41 +55 +53 +79 +77 +110 +220 +398 +731 +1249 +1803 +2420 +3014 +2961 +2785 +2264 +1666 +1073 +805 +535 +446 +304 +264 +171 +109 +56 +31 +16 +10 +1 +3 +1 +2 +3 +5 +1 +4 +2 +3 +2 +1 +1 +2 +3 +2 +0 +2 +1 +5 +1 +2 +1 +0 +3 +0 +0 +3 +3 +1 +4 +0 +2 +1 +1 +4 +2 +0 +0 +3 +2 +2 +0 +2 +1 +2 +0 +2 +1 +0 +0 +0 +2 +2 +4 +1 +2 +1 +4 +1 +0 +1 +4 +1 +4 +0 +1 +2 +1 +1 +0 +1 +0 +0 +3 +0 +2 +1 +2 +2 +0 +0 +1 +2 +0 +0 +1 +3 +2 +2 +1 +3 +2 +0 +2 +1 +1 +4 +0 +1 +0 +0 +1 +0 +0 +0 +0 +0 +0 +1 +2 +2 +1 +1 +0 +0 +0 +2 +1 +2 +1 +0 +3 +2 +1 +1 +2 +1 +2 +0 +2 +1 +0 +0 +4 +2 +3 +2 +2 +0 +1 +1 +0 +3 +1 +2 +2 +2 +5 +1 +0 +0 +2 +0 +1 +0 +2 +1 +2 +2 +2 +1 +0 +1 +1 +1 +1 +1 +0 +3 +0 +0 +0 +1 +1 +1 +0 +0 +1 +2 +1 +2 +2 +0 +0 +1 +0 +1 +0 +3 +1 +3 +3 +0 +2 +0 +0 +1 +1 +1 +1 +0 +1 +0 +2 +1 +0 +1 +1 +0 +1 +1 +0 +1 +2 +0 +2 +2 +1 +1 +1 +0 +1 +0 +0 +0 +2 +1 +1 +2 +0 +0 +1 +0 +0 +0 +1 +1 +1 +0 +1 +0 +3 +2 +4 +1 +0 +2 +0 +2 +3 +1 +0 +1 +0 +0 +0 +1 +0 +1 +1 +0 +1 +0 +0 +0 +1 +0 +1 +0 +1 +1 +1 +0 +2 +0 +2 +2 +2 +0 +1 +4 +0 +3 +0 +3 +0 +1 +1 +2 +0 +0 +1 +3 +0 +2 +0 +1 +2 +1 +0 +0 +1 +1 +2 +1 +1 +2 +2 +2 +0 +1 +1 +2 +5 +1 +3 +2 +2 +7 +1 +1 +2 +2 +0 +0 +1 +1 +1 +2 +1 +3 +2 +1 +0 +0 +0 +2 +1 +0 +1 +0 +0 +2 +3 +3 +4 +2 +2 +3 +2 +2 +1 +2 +1 +0 +1 +0 +0 +1 +0 +1 +1 +1 +1 +2 +1 +3 +1 +0 +1 +2 +1 +1 +0 +1 +1 +2 +0 +0 +2 +0 +2 +0 +0 +2 +0 +1 +1 +2 +0 +1 +2 +1 +0 +0 +0 +1 +1 +1 +0 +1 +0 +2 +1 +0 +1 +1 +0 +0 +1 +1 +0 +0 +1 +1 +0 +1 +4 +0 +0 +3 +0 +0 +0 +0 +1 +0 +0 +0 +2 +0 +1 +1 +0 +1 +0 +0 +0 +2 +0 +2 +0 +0 +1 +0 +0 +0 +0 +0 +1 +0 +1 +0 +0 +0 +0 +1 +0 +1 +0 +0 +0 +0 +0 +2 +0 +0 +0 +0 +0 +1 +0 +1 +0 +1 +0 +1 +1 +1 +3 +5 +1 +3 +2 +3 +4 +1 +1 +4 +2 +4 +1 +6 +5 +10 +1 +12 +5 +7 +6 +5 +4 +5 +8 +1 +1 +1 +1 +0 +2 +1 +0 +2 +0 +1 +0 +1 +0 +0 +0 +0 +1 +0 +3 +0 +1 +2 +1 +0 +0 +2 +0 +3 +1 +0 +0 +1 +0 +1 +2 +0 +1 +2 +2 +1 +1 +1 +1 +1 +0 +1 +1 +0 +0 +0 +0 +0 +0 +0 +1 +1 +0 +0 +0 +1 +3 +0 +0 +0 +1 +2 +0 +0 +0 +0 +0 +0 +0 +0 +0 +2 +0 +0 +0 +0 +2 +0 +1 +0 +1 +1 +3 +1 +0 +0 +0 +1 +0 +1 +0 +0 +0 +1 +1 +0 +0 +2 +1 +0 +2 +0 +0 +1 +0 +0 +0 +1 +1 +1 +3 +1 +1 +1 +2 +1 +1 +1 +5 +2 +1 +0 +0 +0 +3 +0 +0 +0 +0 +1 +2 +2 +0 +2 +1 +0 +0 +0 +1 +2 +0 +1 +0 +2 +1 +0 +2 +4 +0 +1 +0 +3 +3 +1 +0 +1 +0 +2 +1 +0 +0 +0 +1 +0 +1 +0 +0 +2 +1 +2 +0 +0 +0 +0 +0 +2 +1 +1 +2 +4 +1 +2 +0 +0 +2 +0 +0 +0 +1 +1 +1 +3 +0 +0 +0 +1 +1 +0 +1 +0 +2 +2 +2 +0 +0 +1 +0 +1 +0 +0 +1 +2 +0 +1 +1 +0 +1 +1 +0 +0 +0 +0 +0 +2 +2 +1 +2 +1 +1 +0 +3 +0 +4 +1 +0 +1 +0 +1 +1 +1 +0 +2 +0 +2 +0 +2 +2 +2 +1 +2 +2 +1 +0 +1 +1 +1 +1 +2 +2 +1 +3 +3 +0 +3 +0 +1 +1 +0 +2 +1 +0 +2 +1 +5 +1 +0 +3 +1 +1 +1 +1 +0 +1 +1 +1 +2 +1 +1 +1 +2 +2 +1 +1 +1 +1 +1 +2 +2 +2 +0 +0 +1 +1 +1 +3 +1 +0 +3 +0 +3 +2 +1 +3 +2 +3 +0 +3 +0 +3 +4 +0 +0 +1 +2 +2 +5 +3 +1 +2 +4 +3 +5 +4 +3 +4 +4 +1 +3 +3 +2 +6 +3 +4 +2 +7 +2 +6 +4 +2 +2 +1 +4 +5 +0 +0 +3 +6 +3 +2 +3 +5 +4 +4 +2 +2 +2 +3 +3 +3 +7 +0 +4 +4 +6 +7 +3 +5 +3 +1 +10 +6 +3 +3 +5 +3 +3 +3 +3 +3 +3 +2 +2 +2 +3 +5 +2 +4 +2 +0 +4 +3 +5 +9 +5 +6 +7 +6 +1 +7 +7 +3 +3 +6 +3 +2 +5 +3 +4 +7 +3 +5 +3 +5 +4 +2 +10 +2 +6 +5 +3 +6 +6 +4 +3 +1 +6 +4 +8 +3 +5 +5 +10 +6 +2 +3 +8 +7 +2 +4 +6 +6 +2 +7 +10 +5 +4 +3 +3 +5 +5 +5 +9 +8 +4 +5 +11 +8 +7 +5 +10 +1 +4 +6 +8 +9 +12 +7 +9 +7 +13 +12 +9 +8 +11 +8 +5 +8 +9 +14 +5 +7 +10 +11 +15 +12 +8 +10 +13 +11 +7 +5 +11 +7 +5 +9 +8 +11 +16 +14 +19 +13 +10 +9 +13 +11 +18 +21 +13 +14 +21 +14 +18 +26 +17 +11 +13 +18 +22 +19 +14 +26 +23 +18 +18 +26 +21 +28 +16 +32 +30 +30 +22 +33 +20 +44 +38 +43 +34 +34 +41 +42 +31 +29 +43 +43 +45 +36 +55 +41 +52 +58 +52 +55 +63 +54 +41 +44 +62 +73 +57 +49 +59 +53 +50 +58 +54 +32 +61 +55 +50 +41 +43 +35 +49 +36 +51 +35 +51 +34 +33 +41 +43 +39 +39 +28 +35 +36 +44 +31 +24 +27 +29 +37 +30 +31 +33 +30 +26 +26 +31 +18 +25 +25 +22 +13 +23 +15 +16 +17 +23 +18 +15 +20 +9 +17 +18 +15 +8 +15 +19 +9 +16 +7 +6 +14 +11 +12 +12 +14 +6 +11 +9 +8 +8 +11 +9 +13 +11 +6 +9 +4 +5 +8 +6 +8 +7 +6 +5 +8 +4 +5 +4 +11 +8 +7 +8 +5 +10 +6 +11 +2 +7 +6 +8 +12 +8 +6 +2 +2 +3 +3 +6 +7 +6 +4 +4 +4 +6 +5 +2 +8 +3 +6 +1 +10 +6 +2 +4 +7 +7 +4 +7 +1 +2 +4 +3 +3 +2 +5 +4 +2 +7 +2 +3 +1 +5 +3 +4 +4 +3 +3 +4 +1 +1 +0 +5 +2 +2 +2 +3 +4 +3 +4 +1 +1 +7 +2 +3 +1 +1 +3 +2 +2 +3 +6 +0 +0 +3 +1 +4 +4 +1 +3 +1 +2 +2 +0 +3 +0 +3 +3 +0 +2 +0 +2 +2 +4 +4 +3 +0 +2 +5 +4 +3 +3 +0 +2 +0 +3 +4 +3 +1 +1 +2 +2 +1 +1 +2 +0 +3 +0 +0 +3 +3 +0 +2 +0 +4 +3 +1 +4 +0 +2 +0 +1 +2 +1 +1 +1 +0 +2 +2 +1 +3 +0 +0 +0 +2 +3 +3 +0 +1 +1 +2 +3 +0 +2 +1 +1 +3 +3 +1 +0 +2 +0 +0 +0 +0 +1 +1 +1 +1 +2 +4 +0 +1 +3 +1 +1 +4 +0 +0 +0 +0 +1 +1 +2 +0 +2 +0 +2 +2 +1 +0 +0 +1 +0 +0 +0 +0 +1 +0 +0 +3 +2 +3 +0 +0 +1 +1 +1 +0 +0 +0 +1 +2 +1 +2 +3 +2 +2 +2 +2 +9 +4 +10 +10 +11 +17 +24 +25 +24 +38 +34 +34 +26 +39 +25 +33 +32 +19 +15 +17 +16 +13 +11 +4 +4 +1 +1 +2 +0 +0 +0 +0 +1 +0 +0 +0 +0 +0 +0 +1 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +1 +0 +0 +0 +0 +1 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +1 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +1 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +1 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +<> +<> +RESC=?; Reset Configuration +CLCK=80; 20MHz/80MHz +TPEA=9.600; Peaking Time +GAIF=0.9312; Fine Gain +GAIN=21.162; Total Gain (Analog * Fine) +RESL=204; Detector Reset Lockout +TFLA=0.200; Flat Top +TPFA=50; Fast Channel Peaking Time +PURE=OFF; PUR Interval On/Off +RTDE=OFF; RTD On/Off +MCAS=NORM; MCA Source +MCAC=2048; MCA/MCS Channels +SOFF=OFF; Set Spectrum Offset +AINP=POS; Analog Input Pos/Neg +INOF=DEF; Input Offset +GAIA=15; Analog Gain Index +CUSP=0; Non-Trapezoidal Shaping +PDMD=NORM; Peak Detect Mode (Min/Max) +THSL=0.585; Slow Threshold +TLLD=OFF; LLD Threshold +THFA=230.00; Fast Threshold +DACO=SHAPED; DAC Output +DACF=50; DAC Offset +RTDS=0; RTD Sensitivity +RTDT=0.00; RTD Threshold +BLRM=1; BLR Mode +BLRD=3; BLR Down Correction +BLRU=0; BLR Up Correction +AUO1=SCA8; AUX_OUT Selection +PRET=OFF; Preset Time +PRER=1800.000; Preset Real Time +PREC=OFF; Preset Counts +PRCL=1; Preset Counts Low Threshold +PRCH=8191; Preset Counts High Threshold +HVSE=-110; HV Set +TECS=220; TEC Set +PAPZ=OFF; Pole-Zero +PAPS=8.5; Preamp 8.5/5 (N/A) +SCOE=FA; Scope Trigger Edge +SCOT=12; Scope Trigger Position +SCOG=1; Digital Scope Gain +MCSL=1; MCS Low Threshold +MCSH=8191; MCS High Threshold +MCST=0.00; MCS Timebase +AUO2=ICR; AUX_OUT2 Selection +TPMO=OFF; Test Pulser On/Off +GPED=RI; G.P. Counter Edge +GPIN=AUX1; G.P. Counter Input +GPME=ON; G.P. Counter Uses MCA_EN? +GPGA=ON; G.P. Counter Uses GATE? +GPMC=ON; G.P. Counter Cleared With MCA Counters? +MCAE=OFF; MCA/MCS Enable +VOLU=OFF; Speaker On/Off +CON1=DAC; Connector 1 +CON2=AUXOUT2; Connector 2 +<> +<> +Device Type: PX5 +Serial Number: 2264 +Firmware: 6.07 Build: 3 +FPGA: 6.02 +Fast Count: 4123 +Slow Count: 162714 +Accumulation Time: 1199.327000 +Real Time: 1200.194000 +Dead Time: +HV Volt: -110V +TEC Temp: 221K +Board Temp: 37C +<> diff --git a/Data/Tb_Calibration.mca b/Data/Tb_Calibration.mca new file mode 100644 index 0000000..d1f34f2 --- /dev/null +++ b/Data/Tb_Calibration.mca @@ -0,0 +1,2132 @@ +<> +TAG - live_data +DESCRIPTION - +GAIN - 3 +THRESHOLD - 0 +LIVE_MODE - 0 +PRESET_TIME - 0 +LIVE_TIME - 741.600000 +REAL_TIME - 742.151000 +START_TIME - +SERIAL_NUMBER - 0 +<> +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +80 +127 +128 +126 +115 +119 +114 +128 +117 +102 +111 +104 +108 +122 +98 +121 +90 +88 +95 +95 +76 +110 +113 +119 +100 +78 +107 +88 +97 +112 +97 +110 +94 +108 +98 +93 +97 +97 +96 +100 +78 +98 +98 +69 +90 +87 +88 +89 +100 +97 +81 +79 +86 +87 +89 +85 +103 +87 +80 +101 +79 +109 +95 +77 +88 +76 +98 +85 +86 +74 +80 +81 +90 +92 +74 +74 +87 +80 +76 +75 +64 +74 +84 +90 +77 +80 +71 +90 +81 +69 +74 +78 +66 +64 +76 +85 +62 +78 +72 +73 +78 +74 +70 +77 +76 +74 +67 +72 +83 +66 +82 +80 +84 +63 +71 +70 +60 +76 +71 +79 +85 +70 +86 +92 +80 +73 +78 +56 +62 +71 +69 +81 +79 +84 +95 +86 +75 +83 +83 +72 +88 +84 +72 +67 +50 +78 +80 +68 +95 +75 +93 +80 +89 +88 +98 +79 +86 +86 +87 +86 +92 +76 +101 +119 +116 +104 +119 +140 +130 +136 +101 +97 +88 +96 +89 +95 +84 +73 +103 +94 +98 +91 +67 +79 +107 +172 +319 +634 +1120 +1704 +1874 +1672 +1158 +667 +351 +191 +130 +116 +65 +88 +79 +72 +67 +71 +60 +65 +66 +79 +167 +342 +711 +1106 +1436 +1537 +1317 +993 +698 +498 +331 +238 +157 +155 +210 +332 +412 +484 +499 +367 +269 +174 +121 +84 +47 +46 +33 +36 +29 +31 +25 +26 +28 +35 +31 +34 +47 +42 +76 +108 +150 +156 +127 +119 +84 +60 +45 +39 +43 +52 +56 +53 +61 +41 +45 +25 +27 +24 +31 +22 +20 +16 +18 +14 +11 +15 +7 +11 +12 +11 +12 +12 +14 +9 +14 +14 +6 +15 +5 +10 +9 +8 +6 +8 +11 +4 +5 +13 +9 +11 +11 +7 +10 +12 +6 +9 +3 +5 +3 +5 +9 +8 +14 +12 +5 +10 +8 +8 +4 +8 +9 +7 +5 +4 +10 +2 +4 +6 +5 +9 +5 +11 +8 +9 +9 +2 +5 +8 +7 +9 +7 +8 +8 +3 +3 +14 +3 +4 +6 +2 +4 +2 +2 +2 +9 +7 +4 +4 +8 +8 +4 +4 +7 +6 +3 +4 +5 +2 +5 +3 +7 +3 +3 +5 +6 +5 +3 +3 +2 +2 +3 +4 +4 +6 +1 +6 +3 +3 +3 +6 +3 +3 +7 +3 +8 +7 +3 +4 +3 +3 +3 +4 +5 +5 +3 +6 +1 +2 +0 +2 +10 +6 +1 +1 +1 +4 +5 +6 +2 +3 +1 +6 +5 +9 +3 +2 +1 +1 +3 +2 +4 +4 +5 +1 +2 +4 +3 +8 +3 +1 +5 +2 +2 +4 +1 +5 +3 +2 +2 +4 +1 +4 +3 +1 +2 +3 +5 +2 +4 +1 +1 +1 +3 +2 +5 +4 +0 +2 +3 +3 +2 +1 +2 +2 +1 +5 +6 +3 +5 +1 +4 +3 +0 +0 +0 +3 +1 +1 +1 +1 +3 +3 +2 +3 +1 +6 +3 +2 +2 +3 +2 +4 +2 +3 +1 +1 +1 +1 +2 +2 +4 +6 +1 +4 +0 +4 +1 +2 +3 +4 +3 +0 +4 +2 +2 +0 +1 +5 +1 +3 +2 +2 +3 +3 +4 +3 +4 +3 +2 +3 +1 +5 +3 +2 +4 +5 +3 +2 +1 +2 +2 +2 +3 +3 +3 +5 +3 +1 +6 +2 +3 +0 +1 +5 +1 +0 +1 +1 +3 +0 +1 +3 +2 +0 +3 +3 +1 +1 +1 +4 +1 +1 +5 +3 +3 +3 +2 +4 +1 +0 +2 +3 +2 +6 +4 +5 +3 +1 +5 +3 +1 +2 +2 +1 +3 +1 +0 +0 +2 +4 +0 +5 +2 +3 +1 +3 +1 +3 +2 +3 +5 +2 +2 +2 +3 +2 +0 +0 +1 +2 +0 +1 +1 +2 +2 +2 +3 +2 +0 +4 +1 +3 +1 +0 +0 +3 +3 +4 +1 +1 +3 +5 +1 +2 +0 +1 +1 +2 +1 +2 +3 +3 +3 +0 +2 +3 +2 +1 +0 +1 +1 +3 +0 +3 +0 +2 +2 +3 +0 +1 +4 +1 +2 +1 +1 +6 +1 +0 +3 +0 +5 +2 +1 +4 +3 +0 +2 +3 +2 +2 +2 +2 +3 +4 +5 +4 +1 +2 +2 +3 +3 +0 +0 +1 +0 +2 +1 +2 +1 +3 +0 +0 +0 +2 +1 +0 +3 +2 +3 +1 +0 +2 +2 +1 +0 +1 +4 +1 +5 +0 +2 +0 +3 +0 +0 +1 +2 +0 +2 +0 +2 +1 +3 +4 +3 +0 +0 +3 +3 +2 +2 +2 +2 +1 +4 +2 +4 +1 +0 +3 +1 +2 +0 +0 +0 +5 +1 +7 +1 +1 +1 +1 +4 +1 +1 +0 +0 +2 +2 +0 +4 +5 +4 +5 +5 +4 +5 +5 +6 +11 +5 +4 +4 +4 +8 +4 +6 +7 +6 +4 +3 +3 +4 +1 +2 +3 +1 +3 +4 +1 +3 +4 +1 +2 +2 +0 +2 +3 +3 +2 +4 +0 +3 +4 +3 +6 +2 +6 +5 +2 +1 +2 +1 +1 +3 +4 +3 +2 +2 +4 +1 +2 +0 +2 +2 +0 +1 +1 +1 +3 +0 +4 +1 +3 +1 +2 +0 +0 +0 +3 +2 +2 +4 +2 +3 +5 +3 +2 +4 +2 +3 +4 +2 +1 +2 +3 +4 +1 +2 +0 +2 +0 +4 +1 +1 +0 +2 +2 +2 +2 +3 +1 +2 +1 +4 +1 +3 +4 +2 +7 +2 +1 +3 +1 +1 +2 +1 +3 +0 +3 +1 +1 +1 +2 +3 +1 +0 +1 +1 +1 +3 +1 +2 +1 +1 +3 +1 +0 +0 +0 +1 +1 +1 +2 +1 +0 +2 +1 +2 +1 +1 +2 +2 +3 +2 +1 +1 +1 +1 +1 +3 +5 +4 +1 +1 +3 +1 +1 +2 +0 +4 +4 +0 +3 +2 +2 +1 +2 +2 +3 +1 +0 +0 +2 +3 +1 +1 +3 +1 +1 +4 +1 +3 +2 +2 +4 +5 +0 +3 +1 +0 +1 +5 +4 +1 +3 +3 +0 +4 +2 +4 +3 +0 +6 +2 +3 +6 +4 +2 +1 +5 +3 +3 +4 +1 +5 +2 +2 +3 +4 +3 +1 +4 +3 +3 +3 +3 +1 +1 +2 +1 +1 +1 +2 +2 +0 +3 +2 +5 +0 +3 +4 +4 +2 +1 +0 +3 +2 +2 +2 +4 +4 +5 +1 +4 +2 +1 +3 +2 +0 +0 +2 +3 +3 +0 +1 +3 +3 +1 +3 +1 +3 +3 +3 +0 +2 +6 +3 +3 +1 +2 +7 +1 +6 +4 +1 +5 +1 +3 +4 +1 +1 +0 +4 +1 +5 +2 +2 +2 +2 +0 +0 +3 +2 +1 +4 +2 +2 +2 +3 +2 +2 +1 +2 +2 +0 +6 +1 +4 +3 +5 +5 +4 +4 +2 +1 +4 +1 +3 +4 +4 +2 +6 +6 +8 +2 +4 +3 +1 +5 +3 +4 +8 +3 +4 +7 +7 +8 +7 +6 +4 +2 +5 +1 +5 +10 +5 +2 +5 +6 +5 +3 +4 +5 +6 +8 +8 +9 +6 +7 +4 +6 +6 +5 +8 +6 +8 +6 +6 +12 +13 +10 +9 +12 +7 +6 +13 +14 +8 +16 +16 +10 +12 +17 +13 +14 +11 +17 +13 +19 +17 +21 +15 +15 +14 +23 +18 +14 +12 +12 +17 +15 +14 +21 +14 +23 +9 +17 +14 +17 +27 +16 +12 +17 +12 +20 +11 +18 +18 +15 +10 +13 +25 +15 +22 +21 +14 +22 +19 +20 +17 +18 +16 +20 +21 +17 +17 +13 +23 +23 +12 +16 +17 +13 +18 +20 +26 +14 +20 +18 +11 +27 +17 +12 +16 +19 +7 +13 +12 +13 +14 +12 +13 +11 +17 +14 +11 +15 +9 +14 +11 +15 +11 +13 +16 +18 +9 +11 +7 +9 +11 +11 +11 +8 +19 +10 +7 +12 +9 +19 +6 +8 +11 +12 +9 +7 +8 +14 +9 +11 +10 +13 +8 +8 +12 +10 +7 +10 +8 +10 +10 +7 +9 +10 +7 +10 +10 +12 +15 +9 +12 +16 +13 +14 +9 +8 +14 +8 +8 +9 +12 +20 +16 +14 +13 +15 +10 +10 +7 +14 +8 +11 +7 +8 +14 +13 +13 +16 +14 +16 +19 +15 +9 +14 +13 +15 +22 +26 +22 +21 +23 +22 +25 +27 +59 +49 +75 +81 +133 +222 +233 +358 +441 +586 +743 +755 +835 +933 +961 +949 +879 +831 +639 +535 +477 +329 +276 +212 +197 +141 +176 +204 +297 +387 +503 +677 +778 +1008 +1199 +1369 +1523 +1618 +1619 +1525 +1526 +1304 +1073 +979 +700 +582 +398 +292 +174 +158 +80 +73 +39 +19 +23 +20 +19 +18 +13 +7 +10 +18 +14 +8 +9 +12 +8 +11 +7 +7 +6 +7 +6 +8 +6 +2 +7 +9 +10 +7 +8 +7 +7 +6 +3 +5 +8 +8 +0 +5 +11 +2 +6 +7 +7 +1 +1 +7 +2 +6 +3 +3 +6 +2 +7 +3 +6 +6 +4 +4 +5 +4 +3 +4 +6 +5 +5 +4 +5 +8 +6 +4 +2 +3 +1 +0 +4 +7 +5 +8 +1 +5 +3 +8 +9 +6 +10 +4 +2 +6 +5 +2 +7 +4 +4 +7 +10 +6 +6 +4 +4 +4 +10 +7 +6 +4 +7 +4 +7 +8 +9 +5 +11 +9 +9 +3 +10 +4 +9 +16 +4 +13 +9 +10 +8 +11 +9 +4 +12 +7 +12 +6 +17 +9 +13 +10 +7 +10 +15 +12 +12 +7 +6 +6 +11 +10 +14 +12 +14 +10 +11 +12 +12 +15 +14 +9 +14 +12 +14 +11 +22 +24 +36 +42 +66 +77 +101 +123 +133 +169 +223 +250 +255 +300 +291 +309 +328 +290 +265 +281 +250 +215 +157 +147 +113 +90 +80 +53 +39 +32 +30 +12 +16 +12 +8 +9 +5 +5 +4 +6 +3 +5 +5 +8 +6 +15 +11 +12 +16 +12 +19 +26 +33 +42 +46 +59 +60 +63 +84 +63 +70 +92 +66 +60 +50 +46 +38 +32 +40 +33 +22 +21 +12 +12 +9 +15 +10 +7 +2 +2 +1 +3 +0 +1 +1 +1 +0 +1 +3 +0 +0 +0 +1 +0 +1 +1 +0 +0 +0 +1 +0 +1 +1 +0 +2 +1 +2 +1 +4 +0 +1 +2 +0 +1 +1 +0 +1 +0 +0 +1 +0 +0 +1 +0 +0 +3 +2 +0 +1 +1 +0 +0 +1 +0 +2 +0 +0 +0 +1 +0 +1 +0 +0 +1 +2 +1 +1 +0 +1 +0 +0 +2 +1 +0 +0 +1 +0 +2 +0 +1 +0 +0 +1 +1 +1 +1 +1 +1 +1 +1 +0 +2 +1 +0 +1 +0 +1 +0 +0 +1 +0 +1 +0 +0 +0 +1 +1 +0 +1 +0 +0 +1 +1 +0 +2 +0 +1 +1 +0 +1 +0 +0 +0 +0 +1 +1 +1 +0 +2 +0 +1 +1 +0 +0 +0 +0 +0 +1 +0 +0 +1 +0 +1 +0 +0 +1 +0 +0 +0 +0 +1 +0 +0 +0 +0 +1 +1 +0 +0 +1 +2 +0 +1 +2 +0 +0 +0 +1 +2 +1 +0 +0 +0 +1 +0 +0 +0 +0 +0 +0 +0 +0 +0 +1 +0 +0 +0 +1 +1 +1 +0 +0 +1 +0 +1 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +1 +1 +0 +0 +1 +0 +0 +1 +1 +0 +0 +2 +4 +4 +3 +3 +10 +7 +8 +13 +19 +18 +18 +26 +23 +21 +16 +18 +12 +11 +9 +15 +9 +9 +5 +2 +2 +2 +3 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +1 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +1 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +1 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +1 +0 +1 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +<> +<> +RESC=?; Reset Configuration +CLCK=80; 20MHz/80MHz +TPEA=9.600; Peaking Time +GAIF=0.9312; Fine Gain +GAIN=21.162; Total Gain (Analog * Fine) +RESL=204; Detector Reset Lockout +TFLA=0.200; Flat Top +TPFA=50; Fast Channel Peaking Time +PURE=OFF; PUR Interval On/Off +RTDE=OFF; RTD On/Off +MCAS=NORM; MCA Source +MCAC=2048; MCA/MCS Channels +SOFF=OFF; Set Spectrum Offset +AINP=POS; Analog Input Pos/Neg +INOF=DEF; Input Offset +GAIA=15; Analog Gain Index +CUSP=0; Non-Trapezoidal Shaping +PDMD=NORM; Peak Detect Mode (Min/Max) +THSL=0.585; Slow Threshold +TLLD=OFF; LLD Threshold +THFA=230.00; Fast Threshold +DACO=SHAPED; DAC Output +DACF=50; DAC Offset +RTDS=0; RTD Sensitivity +RTDT=0.00; RTD Threshold +BLRM=1; BLR Mode +BLRD=3; BLR Down Correction +BLRU=0; BLR Up Correction +AUO1=SCA8; AUX_OUT Selection +PRET=OFF; Preset Time +PRER=1800.000; Preset Real Time +PREC=OFF; Preset Counts +PRCL=1; Preset Counts Low Threshold +PRCH=8191; Preset Counts High Threshold +HVSE=-110; HV Set +TECS=220; TEC Set +PAPZ=OFF; Pole-Zero +PAPS=8.5; Preamp 8.5/5 (N/A) +SCOE=FA; Scope Trigger Edge +SCOT=12; Scope Trigger Position +SCOG=1; Digital Scope Gain +MCSL=1; MCS Low Threshold +MCSH=8191; MCS High Threshold +MCST=0.00; MCS Timebase +AUO2=ICR; AUX_OUT2 Selection +TPMO=OFF; Test Pulser On/Off +GPED=RI; G.P. Counter Edge +GPIN=AUX1; G.P. Counter Input +GPME=ON; G.P. Counter Uses MCA_EN? +GPGA=ON; G.P. Counter Uses GATE? +GPMC=ON; G.P. Counter Cleared With MCA Counters? +MCAE=OFF; MCA/MCS Enable +VOLU=OFF; Speaker On/Off +CON1=DAC; Connector 1 +CON2=AUXOUT2; Connector 2 +<> +<> +Device Type: PX5 +Serial Number: 2264 +Firmware: 6.07 Build: 3 +FPGA: 6.02 +Fast Count: 17811 +Slow Count: 87182 +Accumulation Time: 741.600000 +Real Time: 742.151000 +Dead Time: +HV Volt: -110V +TEC Temp: 221K +Board Temp: 37C +<> diff --git a/NewMain.py b/NewMain.py index bbd0939..a38bc6c 100644 --- a/NewMain.py +++ b/NewMain.py @@ -3,6 +3,7 @@ from sympy import sympify from scipy.optimize import curve_fit from matplotlib import pyplot as plt +from math import erf, sqrt, pi def load_mca_data(filename): with open(filename, 'r', encoding='latin1') as file: @@ -31,29 +32,42 @@ def load_mca_data(filename): y_film = source_film_data[x1:x2 + 1] # Define the Gaussian function -def gaussian(x, A, x0, sigma): - return A * np.exp(-(x - x0)**2 / (2 * sigma**2)) +def gaussian(x, A, x0, sigma, B): + return A * np.exp(-(x - x0)**2 / (2 * sigma**2)) + B # Fit source data -popt_source, _ = curve_fit(gaussian, x_range, y_source, p0=[max(y_source), x_range[np.argmax(y_source)], 1]) -A0, x0_0, sigma0 = popt_source +popt_source, _ = curve_fit(gaussian, x_range, y_source, p0=[max(y_source), x_range[np.argmax(y_source)], 1, 0]) +A0, x0_0, sigma0, B0 = popt_source # Fit film data -popt_film, _ = curve_fit(gaussian, x_range, y_film, p0=[max(y_film), x_range[np.argmax(y_film)], 1]) -A1, x0_1, sigma1 = popt_film +popt_film, _ = curve_fit(gaussian, x_range, y_film, p0=[max(y_film), x_range[np.argmax(y_film)], 1, 0]) +A1, x0_1, sigma1, B1 = popt_film + +def gaussian_integral_erf(A, x0, sigma, B, x1, x2): + erf_part = 0.5 * (erf((x2 - x0) / (sqrt(2) * sigma)) - erf((x1 - x0) / (sqrt(2) * sigma))) + area_gaussian = A * sigma * sqrt(2 * pi) * erf_part + area_below= B * (x2 - x1) + return area_gaussian + area_below # Calculate Gaussian integrals -I0 = A0 * sigma0 * np.sqrt(2 * np.pi) -I = A1 * sigma1 * np.sqrt(2 * np.pi) +I0 = gaussian_integral_erf(*popt_source, x1, x2) +I = gaussian_integral_erf(*popt_film, x1, x2) + +## Using the previous method +I0_ = A0 * sigma0 +I_ = A1 * sigma1 # Film thickness calculation thickness = film_thickness(I, I0, mu) +thickness_ = film_thickness(I_, I0_, mu) ## previous method print(f"Film thickness: {round(thickness)} nm") +print(f"Film thickness (prev method): {round(thickness_)} nm") + # Plot fits # Plot 1: Source (no film) plt.figure() -plt.plot(x_range, y_source, label='Source', color='blue') +plt.plot(x_range, y_source, '*', label='Source', color='blue') plt.plot(x_range, gaussian(x_range, *popt_source), '--', label='Gaussian Fit (Source)', color='cyan') plt.xlabel('Channel') plt.ylabel('Counts') @@ -63,7 +77,7 @@ def gaussian(x, A, x0, sigma): # Plot 2: Film plt.figure() -plt.plot(x_range, y_film, label='Source + Film', color = 'green') +plt.plot(x_range, y_film,'x', label='Source + Film', color = 'green') plt.plot(x_range, gaussian(x_range, *popt_film), '--', label='Gaussian Fit (Source + Film)', color='lime') plt.xlabel('Channel') plt.ylabel('Counts') diff --git a/PlotDataExercise.py b/PlotDataExercise.py index 0ff5054..5bcef0d 100644 --- a/PlotDataExercise.py +++ b/PlotDataExercise.py @@ -44,11 +44,11 @@ def PlotData(File): return ################################################## -#PlotData('Au+Pb_Films/u232_vacuum.mca') -#PlotData('Au+Pb_Films/u232+Au.mca') -#PlotData('Au+Pb_Films/u232+Pb.mca') -PlotData('Data/NoFilm_2h_17Jul_CuSource.mca') -PlotData('Data/Film_Sn_2h_17Jul_CuSource.mca') + +PlotData('Data/Tb_Calibration.mca') + +#PlotData('Data/Film_Sn_2h_17Jul_CuSource.mca') +#PlotData('Data/NoFilm_for_C12_4h_2.mca') From 03dece5267edd62f5cfb5595dbb22f8b2fd260a7 Mon Sep 17 00:00:00 2001 From: aysuismailova Date: Wed, 23 Jul 2025 17:22:47 +0100 Subject: [PATCH 20/44] Code Debugging for Linux: 1. Fixed the blank tab issue on the interface. 2.Addressed and solved Temp file issues cross operating systems. --- ARC-TF.py | 17 +- Temp/Analysis-1.txt | 5 + Temp/Analysis1.txt | 5 + Temp/Analysis3.txt | 5 + Temp/Data-1.txt | 2048 ++++++++++++++++++++++++ Temp/Data1.txt | 2048 ++++++++++++++++++++++++ Temp/Data2.txt | 2048 ++++++++++++++++++++++++ Temp/Data3.txt | 2048 ++++++++++++++++++++++++ Temp/Result-1.txt | 7 + Temp/Result1.txt | 8 + Temp/Result3.txt | 8 + NewMain.py => XRA/GaussianFit.py | 30 +- PlotDataExercise.py => XRA/PlotData.py | 0 new.py => XRA/new.py | 0 aysuMods.txt | 1 - 15 files changed, 8267 insertions(+), 11 deletions(-) create mode 100644 Temp/Analysis-1.txt create mode 100644 Temp/Analysis1.txt create mode 100644 Temp/Analysis3.txt create mode 100644 Temp/Data-1.txt create mode 100644 Temp/Data1.txt create mode 100644 Temp/Data2.txt create mode 100644 Temp/Data3.txt create mode 100644 Temp/Result-1.txt create mode 100644 Temp/Result1.txt create mode 100644 Temp/Result3.txt rename NewMain.py => XRA/GaussianFit.py (70%) rename PlotDataExercise.py => XRA/PlotData.py (100%) rename new.py => XRA/new.py (100%) delete mode 100644 aysuMods.txt diff --git a/ARC-TF.py b/ARC-TF.py index 4f43baf..ad2c1ef 100644 --- a/ARC-TF.py +++ b/ARC-TF.py @@ -1993,6 +1993,7 @@ def popup(self, name): self.warning = tk.Toplevel(main_window.main) self.warning.title(name) self.warning.geometry('700x300') + self.warning.wait_visibility() self.warning.grab_set() def Images(self, name, picture, site): @@ -2465,10 +2466,10 @@ def tab_change(num): if num == 1: Tabs.calibration_tab_counter -= 1 - Data = "Temp\Data" + str(Tabs.calibration_tab_counter) + ".txt" - Analysis = "Temp\Analysis" + str(Tabs.calibration_tab_counter) + ".txt" - Result = "Temp\Result" + str(Tabs.calibration_tab_counter) + ".txt" - ROIs = "Temp\ROIs" + str(Tabs.calibration_tab_counter) + ".txt" + Data = os.path.join("Temp", f"Data{Tabs.calibration_tab_counter}.txt") + Analysis = os.path.join("Temp", f"Analysis{Tabs.calibration_tab_counter}.txt") + Result = os.path.join("Temp", f"Result{Tabs.calibration_tab_counter}.txt") + ROIs = os.path.join("Temp", f"ROIs{Tabs.calibration_tab_counter}.txt") TabList.append([tk.Frame(tab_manager.notebook, bg = 'dark grey'), Tabs(), Data, Analysis, Result, Plot(), ROIs]) @@ -2485,10 +2486,10 @@ def tab_change(num): elif num == 2: Tabs.material_tab_counter += 1 - Data = "Temp\Data" + str(Tabs.material_tab_counter) + ".txt" - Analysis = "Temp\Analysis" + str(Tabs.material_tab_counter) + ".txt" - Result = "Temp\Result" + str(Tabs.material_tab_counter) + ".txt" - ROIs = "Temp\ROIs" + str(Tabs.material_tab_counter) + ".txt" + Data = os.path.join("Temp", f"Data{Tabs.material_tab_counter}.txt") + Analysis = os.path.join("Temp", f"Analysis{Tabs.material_tab_counter}.txt") + Result = os.path.join("Temp", f"Result{Tabs.material_tab_counter}.txt") + ROIs = os.path.join("Temp", f"ROIs{Tabs.material_tab_counter}.txt") TabList.append([tk.Frame(tab_manager.notebook, bg = 'dark grey'), Tabs(), Data, Analysis, Result, Plot(), ROIs]) diff --git a/Temp/Analysis-1.txt b/Temp/Analysis-1.txt new file mode 100644 index 0000000..438538b --- /dev/null +++ b/Temp/Analysis-1.txt @@ -0,0 +1,5 @@ +1070,1114 +1188,312 +1229,454 +1342,439 +1720,398 diff --git a/Temp/Analysis1.txt b/Temp/Analysis1.txt new file mode 100644 index 0000000..777c71e --- /dev/null +++ b/Temp/Analysis1.txt @@ -0,0 +1,5 @@ +1030,228 +1145,81 +1188,122 +1303,108 +1685,106 diff --git a/Temp/Analysis3.txt b/Temp/Analysis3.txt new file mode 100644 index 0000000..197452c --- /dev/null +++ b/Temp/Analysis3.txt @@ -0,0 +1,5 @@ +1022,401 +1138,122 +1179,198 +1298,170 +1680,175 diff --git a/Temp/Data-1.txt b/Temp/Data-1.txt new file mode 100644 index 0000000..35776ca --- /dev/null +++ b/Temp/Data-1.txt @@ -0,0 +1,2048 @@ +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +28 +251 +330 +295 +273 +301 +280 +259 +291 +242 +223 +190 +219 +216 +188 +202 +162 +150 +137 +122 +124 +107 +114 +97 +89 +105 +75 +90 +73 +65 +78 +58 +49 +53 +64 +42 +45 +37 +32 +31 +35 +36 +16 +11 +23 +25 +22 +18 +18 +14 +15 +22 +13 +10 +12 +10 +10 +11 +7 +7 +6 +4 +11 +6 +7 +2 +7 +2 +7 +5 +1 +4 +0 +4 +4 +5 +2 +1 +4 +3 +1 +2 +2 +2 +0 +2 +2 +2 +1 +1 +2 +0 +1 +1 +2 +2 +2 +0 +2 +2 +1 +0 +2 +0 +1 +1 +1 +0 +2 +0 +0 +0 +1 +0 +0 +1 +0 +4 +0 +1 +0 +0 +0 +0 +1 +0 +1 +1 +1 +0 +1 +0 +0 +0 +1 +0 +0 +1 +0 +0 +1 +0 +0 +1 +2 +0 +1 +0 +0 +0 +1 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +2 +0 +0 +1 +0 +0 +0 +0 +0 +2 +0 +0 +0 +3 +0 +0 +0 +1 +1 +1 +1 +1 +0 +0 +2 +2 +0 +1 +1 +0 +1 +0 +0 +1 +0 +2 +0 +2 +2 +0 +2 +0 +1 +1 +1 +0 +0 +0 +1 +0 +0 +0 +0 +2 +1 +2 +0 +0 +4 +0 +0 +0 +3 +0 +2 +0 +1 +1 +1 +0 +0 +0 +0 +0 +0 +1 +0 +0 +0 +1 +1 +0 +0 +1 +1 +0 +0 +0 +0 +1 +1 +0 +0 +1 +3 +2 +0 +2 +0 +1 +1 +0 +1 +0 +0 +1 +1 +0 +1 +0 +0 +0 +0 +3 +2 +2 +1 +0 +1 +0 +1 +1 +1 +0 +0 +0 +0 +2 +0 +0 +0 +0 +1 +0 +0 +2 +1 +1 +1 +0 +0 +0 +1 +0 +2 +0 +1 +2 +0 +0 +0 +0 +0 +0 +1 +1 +0 +0 +0 +2 +1 +3 +0 +0 +0 +1 +0 +2 +1 +0 +0 +1 +0 +0 +0 +0 +0 +1 +2 +0 +0 +0 +0 +0 +0 +2 +3 +0 +1 +1 +0 +0 +1 +0 +1 +0 +0 +1 +0 +0 +0 +1 +0 +0 +1 +2 +3 +3 +0 +2 +1 +0 +1 +1 +0 +0 +0 +2 +0 +1 +0 +1 +1 +0 +1 +0 +0 +1 +1 +0 +2 +2 +3 +1 +0 +0 +2 +1 +2 +0 +2 +3 +0 +1 +2 +3 +1 +1 +1 +1 +3 +2 +0 +1 +0 +1 +1 +1 +0 +2 +2 +2 +1 +2 +0 +2 +3 +0 +0 +1 +1 +1 +2 +0 +0 +1 +2 +1 +2 +0 +1 +2 +0 +2 +2 +2 +1 +2 +1 +0 +1 +1 +1 +3 +1 +0 +0 +1 +1 +1 +2 +1 +1 +0 +0 +1 +0 +3 +1 +0 +0 +2 +1 +2 +0 +2 +0 +2 +1 +1 +0 +0 +1 +2 +1 +0 +2 +0 +3 +2 +1 +1 +2 +2 +1 +0 +1 +3 +3 +2 +0 +1 +0 +0 +0 +0 +1 +0 +2 +0 +1 +1 +1 +3 +1 +1 +6 +0 +1 +3 +1 +2 +1 +1 +0 +3 +0 +2 +1 +1 +2 +1 +1 +0 +2 +3 +2 +2 +1 +1 +1 +2 +2 +4 +3 +2 +0 +0 +1 +1 +0 +1 +1 +1 +1 +1 +2 +3 +2 +4 +0 +1 +3 +1 +1 +3 +1 +2 +2 +0 +1 +1 +0 +2 +3 +2 +1 +0 +2 +0 +1 +0 +1 +0 +2 +0 +3 +1 +2 +2 +0 +1 +1 +1 +1 +0 +2 +2 +1 +0 +0 +2 +2 +4 +0 +0 +0 +1 +1 +0 +0 +2 +1 +4 +4 +0 +1 +2 +2 +1 +0 +1 +0 +2 +0 +2 +1 +1 +0 +1 +2 +1 +0 +0 +2 +1 +0 +0 +1 +0 +1 +0 +4 +1 +1 +2 +0 +4 +1 +2 +1 +1 +1 +1 +2 +3 +1 +0 +2 +1 +0 +4 +2 +2 +2 +0 +3 +3 +1 +1 +1 +0 +0 +1 +1 +2 +1 +0 +4 +3 +1 +0 +0 +5 +0 +4 +2 +2 +4 +0 +2 +0 +2 +2 +0 +1 +4 +1 +2 +1 +1 +1 +0 +0 +0 +1 +5 +0 +1 +1 +3 +3 +4 +0 +1 +1 +0 +0 +1 +2 +2 +2 +0 +2 +1 +1 +4 +2 +0 +1 +2 +4 +2 +2 +1 +0 +3 +2 +1 +2 +5 +1 +3 +3 +1 +2 +2 +0 +2 +2 +1 +2 +3 +1 +2 +1 +0 +2 +2 +2 +0 +1 +0 +0 +1 +1 +2 +1 +1 +1 +6 +0 +2 +1 +3 +5 +3 +0 +2 +3 +3 +2 +2 +1 +1 +0 +1 +3 +1 +1 +2 +1 +0 +1 +1 +1 +2 +2 +2 +2 +5 +1 +1 +0 +1 +2 +3 +2 +1 +2 +1 +2 +2 +0 +1 +0 +1 +0 +1 +2 +3 +2 +2 +1 +2 +4 +1 +2 +0 +2 +5 +3 +2 +3 +0 +0 +1 +0 +1 +1 +2 +0 +6 +2 +5 +0 +1 +2 +0 +1 +1 +1 +4 +2 +4 +3 +3 +1 +1 +4 +3 +1 +2 +3 +3 +6 +1 +3 +2 +1 +5 +4 +0 +1 +3 +2 +0 +2 +1 +0 +2 +0 +1 +1 +2 +1 +3 +2 +0 +1 +4 +2 +0 +3 +1 +3 +2 +5 +1 +1 +4 +2 +1 +4 +4 +7 +2 +3 +2 +2 +1 +3 +1 +5 +2 +0 +2 +1 +0 +3 +2 +4 +2 +2 +1 +2 +1 +3 +1 +4 +3 +1 +3 +2 +3 +2 +1 +4 +2 +1 +1 +3 +2 +0 +2 +6 +3 +2 +3 +2 +5 +5 +2 +1 +1 +6 +5 +3 +3 +4 +1 +6 +3 +2 +1 +1 +4 +5 +1 +5 +4 +3 +4 +2 +3 +7 +3 +3 +6 +2 +1 +4 +8 +4 +2 +5 +3 +3 +4 +6 +6 +8 +16 +17 +21 +44 +46 +71 +90 +64 +64 +34 +19 +12 +9 +3 +4 +3 +4 +0 +4 +3 +3 +6 +4 +3 +7 +10 +6 +12 +13 +7 +12 +9 +12 +11 +19 +17 +17 +29 +24 +33 +78 +120 +215 +415 +623 +845 +1114 +1111 +1058 +891 +564 +344 +188 +95 +40 +18 +5 +1 +4 +2 +1 +0 +2 +0 +3 +0 +1 +0 +4 +4 +1 +1 +2 +4 +1 +7 +1 +1 +1 +1 +0 +2 +2 +4 +6 +0 +3 +3 +2 +0 +4 +3 +1 +4 +1 +1 +2 +4 +2 +1 +2 +2 +3 +3 +1 +2 +6 +1 +3 +4 +1 +2 +4 +3 +1 +3 +3 +3 +1 +2 +4 +2 +5 +3 +2 +3 +6 +4 +3 +1 +3 +6 +7 +2 +8 +4 +7 +6 +3 +5 +6 +10 +6 +4 +7 +13 +13 +10 +15 +13 +22 +16 +23 +34 +36 +48 +58 +89 +111 +138 +194 +240 +283 +268 +312 +225 +156 +108 +77 +32 +22 +8 +4 +4 +0 +2 +7 +3 +2 +3 +4 +3 +2 +4 +3 +3 +3 +8 +6 +2 +11 +6 +5 +12 +15 +20 +13 +29 +52 +86 +153 +247 +306 +392 +445 +454 +374 +316 +197 +124 +90 +43 +13 +3 +2 +3 +3 +1 +0 +2 +2 +1 +3 +2 +1 +0 +0 +1 +2 +1 +1 +2 +2 +1 +0 +3 +1 +0 +1 +1 +4 +0 +0 +0 +1 +4 +2 +0 +1 +1 +2 +1 +2 +1 +3 +4 +5 +3 +1 +3 +1 +4 +3 +1 +5 +1 +2 +3 +4 +3 +0 +3 +4 +4 +3 +5 +4 +3 +4 +3 +5 +5 +6 +2 +4 +2 +6 +3 +7 +3 +4 +4 +5 +7 +7 +4 +13 +7 +6 +9 +9 +11 +13 +11 +9 +14 +28 +24 +30 +34 +38 +56 +94 +103 +165 +212 +310 +351 +439 +428 +429 +346 +297 +223 +154 +89 +61 +37 +7 +6 +2 +0 +0 +0 +0 +0 +1 +2 +0 +0 +1 +0 +1 +0 +1 +1 +2 +0 +0 +0 +0 +0 +0 +1 +0 +0 +0 +1 +1 +0 +1 +0 +0 +1 +0 +0 +0 +0 +2 +1 +1 +1 +1 +1 +1 +1 +0 +0 +2 +0 +0 +0 +1 +1 +0 +1 +2 +0 +0 +0 +0 +0 +0 +1 +0 +1 +0 +2 +0 +0 +0 +0 +0 +0 +0 +1 +0 +0 +0 +0 +1 +0 +0 +0 +1 +0 +0 +2 +0 +0 +1 +0 +0 +1 +1 +0 +0 +0 +0 +1 +0 +0 +1 +0 +1 +0 +0 +1 +0 +0 +0 +3 +0 +0 +0 +0 +0 +0 +0 +2 +0 +0 +0 +1 +0 +0 +0 +2 +2 +1 +1 +0 +1 +1 +1 +0 +0 +1 +0 +0 +0 +0 +0 +0 +0 +1 +1 +0 +0 +0 +0 +0 +0 +0 +1 +0 +1 +1 +1 +1 +0 +0 +1 +1 +0 +1 +0 +1 +0 +0 +0 +0 +0 +1 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +3 +0 +1 +0 +0 +0 +0 +1 +0 +0 +0 +1 +0 +1 +0 +2 +1 +0 +4 +0 +0 +1 +1 +1 +0 +1 +0 +2 +0 +1 +1 +3 +1 +3 +0 +3 +0 +0 +1 +1 +1 +2 +0 +0 +2 +3 +1 +1 +0 +0 +0 +1 +4 +0 +0 +0 +2 +2 +2 +2 +1 +2 +0 +1 +0 +2 +0 +1 +1 +1 +1 +0 +0 +1 +1 +1 +0 +1 +0 +0 +0 +0 +1 +2 +2 +2 +0 +0 +0 +0 +0 +0 +0 +0 +1 +0 +1 +0 +0 +0 +0 +0 +0 +0 +0 +2 +2 +0 +1 +0 +1 +2 +0 +0 +0 +1 +1 +1 +0 +0 +0 +1 +0 +1 +0 +2 +0 +1 +1 +0 +0 +0 +1 +2 +1 +4 +1 +1 +0 +1 +2 +0 +2 +2 +2 +4 +3 +3 +2 +4 +2 +2 +0 +5 +2 +2 +4 +4 +5 +2 +6 +5 +4 +13 +13 +11 +19 +15 +23 +23 +36 +43 +78 +89 +156 +194 +201 +329 +354 +398 +354 +307 +253 +204 +152 +119 +89 +58 +24 +9 +3 +2 +3 +0 +3 +1 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 diff --git a/Temp/Data1.txt b/Temp/Data1.txt new file mode 100644 index 0000000..aa4c353 --- /dev/null +++ b/Temp/Data1.txt @@ -0,0 +1,2048 @@ +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +22 +109 +173 +162 +165 +151 +153 +151 +107 +114 +98 +108 +119 +101 +111 +100 +120 +64 +74 +83 +71 +60 +66 +65 +40 +53 +40 +57 +34 +47 +31 +35 +25 +23 +20 +21 +16 +19 +11 +21 +17 +17 +18 +21 +11 +22 +11 +9 +9 +12 +10 +11 +6 +5 +10 +6 +7 +4 +4 +2 +4 +4 +5 +4 +3 +2 +2 +2 +5 +3 +2 +2 +3 +4 +4 +2 +3 +4 +0 +2 +1 +0 +2 +3 +4 +1 +0 +1 +1 +0 +0 +0 +0 +0 +2 +0 +1 +0 +0 +0 +0 +1 +2 +0 +2 +0 +0 +1 +0 +0 +0 +0 +0 +1 +0 +1 +0 +1 +0 +0 +0 +0 +1 +1 +0 +0 +0 +1 +1 +0 +0 +0 +0 +0 +0 +2 +1 +0 +0 +1 +0 +1 +0 +1 +0 +0 +1 +0 +2 +0 +1 +0 +0 +0 +0 +0 +0 +2 +1 +0 +0 +0 +0 +1 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +1 +0 +2 +0 +0 +1 +0 +0 +0 +1 +1 +0 +1 +0 +0 +0 +0 +0 +0 +0 +0 +1 +0 +1 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +1 +1 +0 +0 +0 +1 +0 +0 +0 +0 +0 +0 +0 +1 +1 +0 +1 +0 +0 +0 +0 +0 +0 +0 +1 +0 +0 +0 +0 +0 +0 +0 +0 +1 +0 +0 +1 +0 +0 +2 +1 +0 +0 +1 +0 +1 +2 +0 +0 +1 +1 +0 +0 +0 +0 +0 +1 +0 +0 +0 +0 +0 +0 +1 +0 +0 +0 +0 +0 +1 +1 +0 +0 +0 +0 +0 +0 +0 +0 +1 +1 +0 +0 +0 +1 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +1 +0 +1 +0 +0 +0 +0 +0 +1 +1 +1 +1 +0 +0 +0 +0 +1 +1 +1 +0 +0 +1 +0 +0 +1 +0 +0 +0 +0 +0 +0 +0 +1 +1 +0 +0 +2 +1 +0 +0 +0 +1 +0 +1 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +1 +0 +0 +1 +0 +0 +0 +1 +0 +1 +0 +1 +0 +1 +0 +0 +0 +2 +1 +0 +0 +0 +2 +1 +0 +1 +0 +1 +0 +1 +0 +1 +1 +0 +0 +1 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +1 +0 +0 +2 +1 +1 +0 +2 +0 +0 +3 +0 +0 +0 +0 +0 +0 +1 +0 +0 +0 +0 +0 +1 +1 +0 +0 +0 +1 +0 +0 +0 +0 +0 +0 +0 +2 +1 +1 +1 +1 +1 +1 +3 +1 +0 +1 +1 +0 +1 +0 +1 +1 +0 +0 +0 +1 +0 +0 +2 +0 +0 +0 +1 +0 +1 +0 +1 +0 +1 +0 +0 +0 +1 +1 +1 +0 +0 +1 +0 +1 +1 +1 +0 +0 +1 +0 +0 +0 +1 +1 +0 +2 +0 +0 +1 +2 +0 +1 +0 +0 +1 +2 +0 +1 +0 +1 +1 +0 +3 +0 +1 +0 +1 +1 +1 +2 +4 +1 +0 +0 +1 +1 +0 +1 +0 +2 +0 +1 +0 +1 +0 +0 +1 +1 +0 +0 +0 +1 +1 +1 +2 +2 +0 +1 +0 +0 +1 +0 +1 +0 +0 +0 +2 +0 +1 +1 +0 +2 +0 +0 +3 +2 +0 +0 +1 +1 +1 +0 +0 +1 +0 +0 +1 +1 +0 +1 +1 +0 +0 +1 +0 +2 +1 +0 +0 +1 +0 +1 +1 +0 +1 +0 +0 +1 +0 +1 +1 +0 +0 +0 +0 +0 +0 +0 +0 +0 +1 +0 +0 +1 +0 +0 +0 +0 +1 +0 +1 +1 +0 +0 +0 +0 +0 +0 +1 +1 +0 +1 +0 +0 +1 +1 +2 +1 +1 +2 +1 +1 +1 +1 +0 +1 +1 +1 +0 +2 +0 +1 +0 +1 +1 +0 +0 +1 +1 +0 +0 +1 +0 +1 +2 +0 +1 +0 +0 +1 +2 +0 +0 +0 +2 +0 +0 +1 +0 +1 +1 +3 +2 +1 +1 +0 +0 +2 +1 +0 +3 +0 +0 +2 +2 +2 +0 +0 +0 +1 +0 +1 +2 +1 +0 +1 +2 +0 +2 +0 +2 +1 +0 +0 +0 +1 +0 +0 +2 +1 +1 +0 +1 +0 +1 +2 +1 +0 +0 +0 +0 +0 +0 +0 +0 +0 +1 +2 +2 +0 +1 +0 +1 +1 +0 +1 +0 +3 +0 +0 +1 +3 +2 +0 +0 +0 +1 +2 +0 +2 +0 +2 +3 +2 +0 +2 +0 +0 +1 +0 +0 +1 +4 +2 +0 +0 +0 +0 +1 +1 +4 +1 +2 +0 +0 +2 +2 +1 +1 +3 +2 +0 +0 +2 +0 +1 +0 +2 +2 +1 +1 +0 +1 +0 +1 +1 +0 +1 +2 +1 +0 +0 +0 +1 +3 +0 +0 +0 +0 +1 +0 +1 +0 +0 +1 +0 +0 +1 +2 +1 +0 +1 +1 +0 +2 +1 +3 +0 +0 +1 +0 +3 +0 +0 +0 +2 +1 +1 +1 +3 +0 +2 +1 +1 +4 +2 +1 +1 +0 +3 +2 +4 +2 +1 +0 +0 +1 +2 +2 +2 +0 +2 +0 +0 +1 +0 +0 +0 +0 +1 +1 +0 +0 +1 +2 +1 +1 +0 +0 +1 +2 +1 +1 +0 +2 +1 +1 +0 +2 +1 +1 +0 +1 +0 +3 +0 +1 +1 +1 +1 +3 +0 +1 +2 +0 +3 +2 +2 +1 +2 +2 +1 +4 +2 +1 +4 +0 +1 +3 +3 +4 +1 +1 +3 +2 +2 +5 +9 +2 +5 +11 +15 +9 +8 +12 +8 +15 +13 +20 +15 +17 +15 +12 +12 +8 +11 +8 +9 +14 +6 +4 +11 +4 +7 +6 +5 +8 +8 +5 +7 +5 +11 +14 +14 +13 +33 +37 +38 +54 +51 +72 +88 +82 +123 +124 +154 +156 +180 +219 +223 +222 +194 +204 +217 +228 +190 +150 +165 +129 +107 +95 +75 +70 +57 +43 +24 +27 +21 +12 +18 +8 +12 +5 +9 +4 +5 +5 +0 +2 +0 +2 +0 +3 +0 +2 +1 +2 +0 +2 +0 +1 +0 +4 +2 +1 +1 +0 +1 +1 +1 +1 +0 +2 +0 +0 +0 +1 +0 +2 +1 +1 +2 +3 +0 +0 +0 +1 +3 +1 +1 +0 +2 +0 +1 +2 +0 +2 +2 +3 +3 +1 +1 +0 +2 +1 +4 +3 +2 +5 +0 +3 +2 +3 +4 +2 +1 +3 +4 +6 +6 +5 +11 +10 +7 +17 +16 +13 +20 +30 +33 +30 +30 +50 +55 +57 +52 +57 +63 +66 +81 +71 +66 +70 +61 +51 +64 +47 +39 +28 +24 +20 +12 +12 +11 +6 +3 +8 +7 +4 +5 +3 +2 +9 +7 +6 +11 +13 +12 +17 +20 +34 +44 +53 +51 +42 +72 +74 +77 +89 +104 +103 +114 +122 +93 +93 +89 +81 +61 +63 +54 +42 +39 +36 +25 +16 +5 +13 +12 +8 +6 +6 +5 +3 +2 +3 +1 +4 +3 +0 +1 +2 +0 +3 +0 +3 +2 +4 +6 +4 +8 +5 +4 +2 +6 +1 +0 +2 +0 +1 +1 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +1 +0 +1 +1 +0 +1 +0 +2 +1 +2 +0 +2 +1 +2 +1 +2 +0 +2 +2 +0 +0 +1 +0 +1 +3 +2 +2 +1 +4 +5 +4 +4 +5 +1 +2 +6 +7 +13 +6 +11 +13 +27 +20 +34 +37 +54 +63 +67 +70 +85 +80 +91 +108 +104 +105 +93 +83 +86 +67 +62 +40 +50 +45 +22 +22 +12 +11 +11 +7 +8 +3 +4 +1 +1 +5 +2 +2 +4 +2 +2 +2 +2 +5 +3 +5 +7 +4 +4 +5 +8 +13 +12 +9 +13 +3 +3 +1 +1 +2 +3 +1 +0 +0 +0 +1 +0 +0 +1 +1 +1 +0 +0 +0 +0 +0 +1 +1 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +1 +0 +0 +0 +0 +0 +2 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +1 +0 +0 +0 +1 +1 +0 +0 +0 +0 +0 +0 +0 +0 +0 +1 +0 +0 +0 +0 +0 +0 +1 +0 +0 +1 +0 +0 +0 +0 +1 +0 +0 +0 +2 +0 +0 +0 +1 +0 +0 +0 +0 +0 +0 +0 +0 +1 +0 +1 +0 +0 +0 +0 +0 +0 +0 +1 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +1 +0 +0 +0 +0 +0 +0 +0 +0 +0 +1 +0 +1 +0 +0 +0 +0 +0 +0 +2 +0 +0 +0 +1 +0 +0 +0 +0 +0 +0 +0 +1 +1 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +1 +0 +2 +0 +0 +0 +0 +0 +1 +0 +0 +1 +0 +0 +2 +4 +0 +0 +1 +1 +0 +1 +1 +0 +0 +1 +1 +1 +0 +0 +1 +0 +0 +1 +0 +2 +1 +0 +0 +0 +0 +0 +1 +1 +0 +0 +1 +1 +0 +0 +2 +2 +0 +0 +0 +0 +1 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +1 +0 +0 +0 +0 +0 +1 +0 +1 +0 +0 +1 +1 +1 +0 +0 +0 +0 +1 +0 +0 +0 +0 +1 +2 +0 +1 +0 +0 +2 +0 +0 +0 +0 +1 +2 +0 +0 +1 +0 +0 +0 +3 +0 +1 +0 +0 +0 +0 +1 +0 +1 +0 +0 +0 +0 +2 +1 +1 +2 +0 +1 +1 +0 +4 +1 +4 +4 +3 +3 +6 +4 +10 +9 +12 +17 +18 +21 +26 +43 +41 +51 +54 +61 +79 +61 +79 +92 +106 +94 +83 +82 +62 +55 +61 +33 +40 +27 +22 +27 +13 +15 +8 +9 +9 +10 +14 +12 +4 +9 +14 +18 +14 +22 +23 +37 +22 +35 +44 +45 +44 +52 +36 +31 +25 +15 +6 +4 +3 +2 +3 +3 +1 +2 +2 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 diff --git a/Temp/Data2.txt b/Temp/Data2.txt new file mode 100644 index 0000000..aa4c353 --- /dev/null +++ b/Temp/Data2.txt @@ -0,0 +1,2048 @@ +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +22 +109 +173 +162 +165 +151 +153 +151 +107 +114 +98 +108 +119 +101 +111 +100 +120 +64 +74 +83 +71 +60 +66 +65 +40 +53 +40 +57 +34 +47 +31 +35 +25 +23 +20 +21 +16 +19 +11 +21 +17 +17 +18 +21 +11 +22 +11 +9 +9 +12 +10 +11 +6 +5 +10 +6 +7 +4 +4 +2 +4 +4 +5 +4 +3 +2 +2 +2 +5 +3 +2 +2 +3 +4 +4 +2 +3 +4 +0 +2 +1 +0 +2 +3 +4 +1 +0 +1 +1 +0 +0 +0 +0 +0 +2 +0 +1 +0 +0 +0 +0 +1 +2 +0 +2 +0 +0 +1 +0 +0 +0 +0 +0 +1 +0 +1 +0 +1 +0 +0 +0 +0 +1 +1 +0 +0 +0 +1 +1 +0 +0 +0 +0 +0 +0 +2 +1 +0 +0 +1 +0 +1 +0 +1 +0 +0 +1 +0 +2 +0 +1 +0 +0 +0 +0 +0 +0 +2 +1 +0 +0 +0 +0 +1 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +1 +0 +2 +0 +0 +1 +0 +0 +0 +1 +1 +0 +1 +0 +0 +0 +0 +0 +0 +0 +0 +1 +0 +1 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +1 +1 +0 +0 +0 +1 +0 +0 +0 +0 +0 +0 +0 +1 +1 +0 +1 +0 +0 +0 +0 +0 +0 +0 +1 +0 +0 +0 +0 +0 +0 +0 +0 +1 +0 +0 +1 +0 +0 +2 +1 +0 +0 +1 +0 +1 +2 +0 +0 +1 +1 +0 +0 +0 +0 +0 +1 +0 +0 +0 +0 +0 +0 +1 +0 +0 +0 +0 +0 +1 +1 +0 +0 +0 +0 +0 +0 +0 +0 +1 +1 +0 +0 +0 +1 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +1 +0 +1 +0 +0 +0 +0 +0 +1 +1 +1 +1 +0 +0 +0 +0 +1 +1 +1 +0 +0 +1 +0 +0 +1 +0 +0 +0 +0 +0 +0 +0 +1 +1 +0 +0 +2 +1 +0 +0 +0 +1 +0 +1 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +1 +0 +0 +1 +0 +0 +0 +1 +0 +1 +0 +1 +0 +1 +0 +0 +0 +2 +1 +0 +0 +0 +2 +1 +0 +1 +0 +1 +0 +1 +0 +1 +1 +0 +0 +1 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +1 +0 +0 +2 +1 +1 +0 +2 +0 +0 +3 +0 +0 +0 +0 +0 +0 +1 +0 +0 +0 +0 +0 +1 +1 +0 +0 +0 +1 +0 +0 +0 +0 +0 +0 +0 +2 +1 +1 +1 +1 +1 +1 +3 +1 +0 +1 +1 +0 +1 +0 +1 +1 +0 +0 +0 +1 +0 +0 +2 +0 +0 +0 +1 +0 +1 +0 +1 +0 +1 +0 +0 +0 +1 +1 +1 +0 +0 +1 +0 +1 +1 +1 +0 +0 +1 +0 +0 +0 +1 +1 +0 +2 +0 +0 +1 +2 +0 +1 +0 +0 +1 +2 +0 +1 +0 +1 +1 +0 +3 +0 +1 +0 +1 +1 +1 +2 +4 +1 +0 +0 +1 +1 +0 +1 +0 +2 +0 +1 +0 +1 +0 +0 +1 +1 +0 +0 +0 +1 +1 +1 +2 +2 +0 +1 +0 +0 +1 +0 +1 +0 +0 +0 +2 +0 +1 +1 +0 +2 +0 +0 +3 +2 +0 +0 +1 +1 +1 +0 +0 +1 +0 +0 +1 +1 +0 +1 +1 +0 +0 +1 +0 +2 +1 +0 +0 +1 +0 +1 +1 +0 +1 +0 +0 +1 +0 +1 +1 +0 +0 +0 +0 +0 +0 +0 +0 +0 +1 +0 +0 +1 +0 +0 +0 +0 +1 +0 +1 +1 +0 +0 +0 +0 +0 +0 +1 +1 +0 +1 +0 +0 +1 +1 +2 +1 +1 +2 +1 +1 +1 +1 +0 +1 +1 +1 +0 +2 +0 +1 +0 +1 +1 +0 +0 +1 +1 +0 +0 +1 +0 +1 +2 +0 +1 +0 +0 +1 +2 +0 +0 +0 +2 +0 +0 +1 +0 +1 +1 +3 +2 +1 +1 +0 +0 +2 +1 +0 +3 +0 +0 +2 +2 +2 +0 +0 +0 +1 +0 +1 +2 +1 +0 +1 +2 +0 +2 +0 +2 +1 +0 +0 +0 +1 +0 +0 +2 +1 +1 +0 +1 +0 +1 +2 +1 +0 +0 +0 +0 +0 +0 +0 +0 +0 +1 +2 +2 +0 +1 +0 +1 +1 +0 +1 +0 +3 +0 +0 +1 +3 +2 +0 +0 +0 +1 +2 +0 +2 +0 +2 +3 +2 +0 +2 +0 +0 +1 +0 +0 +1 +4 +2 +0 +0 +0 +0 +1 +1 +4 +1 +2 +0 +0 +2 +2 +1 +1 +3 +2 +0 +0 +2 +0 +1 +0 +2 +2 +1 +1 +0 +1 +0 +1 +1 +0 +1 +2 +1 +0 +0 +0 +1 +3 +0 +0 +0 +0 +1 +0 +1 +0 +0 +1 +0 +0 +1 +2 +1 +0 +1 +1 +0 +2 +1 +3 +0 +0 +1 +0 +3 +0 +0 +0 +2 +1 +1 +1 +3 +0 +2 +1 +1 +4 +2 +1 +1 +0 +3 +2 +4 +2 +1 +0 +0 +1 +2 +2 +2 +0 +2 +0 +0 +1 +0 +0 +0 +0 +1 +1 +0 +0 +1 +2 +1 +1 +0 +0 +1 +2 +1 +1 +0 +2 +1 +1 +0 +2 +1 +1 +0 +1 +0 +3 +0 +1 +1 +1 +1 +3 +0 +1 +2 +0 +3 +2 +2 +1 +2 +2 +1 +4 +2 +1 +4 +0 +1 +3 +3 +4 +1 +1 +3 +2 +2 +5 +9 +2 +5 +11 +15 +9 +8 +12 +8 +15 +13 +20 +15 +17 +15 +12 +12 +8 +11 +8 +9 +14 +6 +4 +11 +4 +7 +6 +5 +8 +8 +5 +7 +5 +11 +14 +14 +13 +33 +37 +38 +54 +51 +72 +88 +82 +123 +124 +154 +156 +180 +219 +223 +222 +194 +204 +217 +228 +190 +150 +165 +129 +107 +95 +75 +70 +57 +43 +24 +27 +21 +12 +18 +8 +12 +5 +9 +4 +5 +5 +0 +2 +0 +2 +0 +3 +0 +2 +1 +2 +0 +2 +0 +1 +0 +4 +2 +1 +1 +0 +1 +1 +1 +1 +0 +2 +0 +0 +0 +1 +0 +2 +1 +1 +2 +3 +0 +0 +0 +1 +3 +1 +1 +0 +2 +0 +1 +2 +0 +2 +2 +3 +3 +1 +1 +0 +2 +1 +4 +3 +2 +5 +0 +3 +2 +3 +4 +2 +1 +3 +4 +6 +6 +5 +11 +10 +7 +17 +16 +13 +20 +30 +33 +30 +30 +50 +55 +57 +52 +57 +63 +66 +81 +71 +66 +70 +61 +51 +64 +47 +39 +28 +24 +20 +12 +12 +11 +6 +3 +8 +7 +4 +5 +3 +2 +9 +7 +6 +11 +13 +12 +17 +20 +34 +44 +53 +51 +42 +72 +74 +77 +89 +104 +103 +114 +122 +93 +93 +89 +81 +61 +63 +54 +42 +39 +36 +25 +16 +5 +13 +12 +8 +6 +6 +5 +3 +2 +3 +1 +4 +3 +0 +1 +2 +0 +3 +0 +3 +2 +4 +6 +4 +8 +5 +4 +2 +6 +1 +0 +2 +0 +1 +1 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +1 +0 +1 +1 +0 +1 +0 +2 +1 +2 +0 +2 +1 +2 +1 +2 +0 +2 +2 +0 +0 +1 +0 +1 +3 +2 +2 +1 +4 +5 +4 +4 +5 +1 +2 +6 +7 +13 +6 +11 +13 +27 +20 +34 +37 +54 +63 +67 +70 +85 +80 +91 +108 +104 +105 +93 +83 +86 +67 +62 +40 +50 +45 +22 +22 +12 +11 +11 +7 +8 +3 +4 +1 +1 +5 +2 +2 +4 +2 +2 +2 +2 +5 +3 +5 +7 +4 +4 +5 +8 +13 +12 +9 +13 +3 +3 +1 +1 +2 +3 +1 +0 +0 +0 +1 +0 +0 +1 +1 +1 +0 +0 +0 +0 +0 +1 +1 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +1 +0 +0 +0 +0 +0 +2 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +1 +0 +0 +0 +1 +1 +0 +0 +0 +0 +0 +0 +0 +0 +0 +1 +0 +0 +0 +0 +0 +0 +1 +0 +0 +1 +0 +0 +0 +0 +1 +0 +0 +0 +2 +0 +0 +0 +1 +0 +0 +0 +0 +0 +0 +0 +0 +1 +0 +1 +0 +0 +0 +0 +0 +0 +0 +1 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +1 +0 +0 +0 +0 +0 +0 +0 +0 +0 +1 +0 +1 +0 +0 +0 +0 +0 +0 +2 +0 +0 +0 +1 +0 +0 +0 +0 +0 +0 +0 +1 +1 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +1 +0 +2 +0 +0 +0 +0 +0 +1 +0 +0 +1 +0 +0 +2 +4 +0 +0 +1 +1 +0 +1 +1 +0 +0 +1 +1 +1 +0 +0 +1 +0 +0 +1 +0 +2 +1 +0 +0 +0 +0 +0 +1 +1 +0 +0 +1 +1 +0 +0 +2 +2 +0 +0 +0 +0 +1 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +1 +0 +0 +0 +0 +0 +1 +0 +1 +0 +0 +1 +1 +1 +0 +0 +0 +0 +1 +0 +0 +0 +0 +1 +2 +0 +1 +0 +0 +2 +0 +0 +0 +0 +1 +2 +0 +0 +1 +0 +0 +0 +3 +0 +1 +0 +0 +0 +0 +1 +0 +1 +0 +0 +0 +0 +2 +1 +1 +2 +0 +1 +1 +0 +4 +1 +4 +4 +3 +3 +6 +4 +10 +9 +12 +17 +18 +21 +26 +43 +41 +51 +54 +61 +79 +61 +79 +92 +106 +94 +83 +82 +62 +55 +61 +33 +40 +27 +22 +27 +13 +15 +8 +9 +9 +10 +14 +12 +4 +9 +14 +18 +14 +22 +23 +37 +22 +35 +44 +45 +44 +52 +36 +31 +25 +15 +6 +4 +3 +2 +3 +3 +1 +2 +2 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 diff --git a/Temp/Data3.txt b/Temp/Data3.txt new file mode 100644 index 0000000..03b9700 --- /dev/null +++ b/Temp/Data3.txt @@ -0,0 +1,2048 @@ +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +15 +261 +311 +292 +308 +289 +287 +297 +231 +206 +206 +223 +196 +167 +164 +156 +131 +134 +113 +131 +86 +122 +94 +94 +75 +81 +70 +72 +76 +51 +43 +41 +36 +47 +34 +31 +34 +31 +30 +25 +18 +28 +19 +34 +14 +12 +17 +16 +20 +14 +7 +5 +14 +11 +5 +7 +4 +10 +10 +11 +3 +8 +6 +4 +2 +6 +6 +2 +3 +4 +4 +7 +2 +3 +1 +4 +3 +2 +5 +1 +0 +2 +0 +2 +1 +1 +1 +0 +2 +1 +0 +2 +2 +2 +0 +1 +1 +1 +3 +2 +0 +2 +1 +2 +0 +2 +0 +1 +2 +0 +0 +1 +1 +1 +1 +0 +1 +1 +0 +1 +2 +0 +2 +0 +2 +0 +1 +0 +0 +0 +2 +1 +1 +2 +0 +0 +0 +0 +1 +0 +0 +1 +0 +0 +1 +1 +0 +0 +0 +0 +0 +0 +1 +0 +2 +0 +0 +0 +1 +0 +0 +2 +0 +0 +2 +1 +0 +1 +1 +0 +1 +1 +1 +1 +0 +0 +0 +0 +0 +0 +1 +0 +0 +0 +1 +1 +1 +0 +1 +0 +1 +1 +2 +1 +0 +0 +0 +0 +0 +0 +1 +2 +0 +1 +2 +0 +0 +1 +0 +2 +0 +1 +1 +1 +0 +1 +0 +1 +0 +0 +0 +1 +0 +0 +1 +1 +0 +1 +1 +0 +1 +0 +0 +0 +1 +0 +0 +0 +0 +1 +2 +1 +0 +0 +0 +1 +0 +0 +1 +0 +0 +0 +0 +0 +0 +1 +1 +0 +0 +1 +0 +0 +0 +0 +0 +1 +0 +0 +0 +0 +0 +0 +2 +0 +0 +1 +2 +1 +0 +2 +1 +1 +1 +1 +1 +0 +1 +0 +0 +0 +0 +1 +0 +3 +2 +2 +0 +1 +1 +2 +2 +2 +1 +1 +1 +0 +1 +0 +1 +0 +0 +0 +1 +2 +1 +0 +1 +0 +0 +2 +0 +0 +1 +2 +0 +0 +0 +1 +2 +1 +1 +0 +0 +0 +1 +4 +0 +0 +2 +0 +2 +2 +1 +0 +1 +0 +0 +0 +0 +0 +2 +2 +0 +2 +2 +0 +0 +1 +1 +1 +0 +1 +1 +1 +1 +1 +2 +1 +2 +2 +0 +1 +1 +1 +0 +3 +0 +0 +1 +0 +2 +1 +0 +0 +0 +0 +0 +1 +0 +0 +0 +2 +0 +3 +1 +0 +0 +1 +0 +3 +2 +1 +2 +0 +0 +0 +0 +0 +0 +3 +0 +2 +0 +1 +0 +2 +1 +0 +1 +1 +1 +1 +0 +0 +0 +0 +2 +0 +2 +0 +1 +1 +1 +1 +1 +1 +1 +0 +0 +2 +1 +0 +1 +1 +3 +2 +0 +1 +1 +0 +1 +1 +0 +3 +2 +3 +1 +0 +1 +0 +2 +1 +2 +0 +0 +0 +2 +1 +1 +1 +0 +0 +1 +1 +3 +3 +0 +0 +1 +2 +0 +0 +0 +1 +0 +1 +1 +1 +1 +0 +1 +2 +0 +0 +0 +0 +2 +1 +2 +1 +1 +0 +2 +0 +1 +1 +3 +1 +0 +0 +1 +1 +2 +0 +1 +3 +0 +1 +2 +2 +0 +2 +0 +2 +1 +2 +3 +1 +0 +2 +2 +1 +0 +1 +1 +0 +0 +2 +1 +1 +0 +1 +0 +1 +0 +2 +1 +1 +1 +2 +3 +0 +0 +2 +2 +1 +0 +2 +3 +0 +0 +0 +0 +3 +1 +1 +0 +1 +0 +1 +3 +1 +1 +0 +3 +1 +2 +0 +2 +0 +0 +1 +1 +2 +3 +0 +2 +0 +3 +0 +1 +1 +1 +1 +2 +0 +0 +1 +1 +2 +0 +1 +2 +1 +0 +0 +1 +3 +0 +1 +0 +1 +0 +2 +1 +3 +3 +1 +0 +3 +1 +3 +1 +3 +4 +2 +0 +1 +0 +2 +3 +1 +0 +0 +2 +1 +2 +1 +0 +1 +2 +2 +1 +0 +0 +3 +1 +1 +0 +3 +3 +1 +2 +1 +3 +1 +2 +2 +0 +2 +3 +2 +0 +3 +2 +1 +0 +0 +1 +2 +3 +2 +1 +3 +5 +2 +0 +0 +0 +1 +2 +0 +1 +2 +2 +0 +2 +0 +1 +1 +1 +3 +3 +1 +4 +0 +2 +2 +1 +2 +3 +1 +0 +1 +0 +1 +1 +2 +1 +2 +2 +1 +1 +2 +1 +0 +0 +2 +2 +1 +2 +1 +2 +3 +1 +0 +2 +0 +4 +1 +0 +3 +1 +3 +1 +2 +0 +1 +2 +4 +1 +4 +2 +0 +1 +2 +1 +1 +3 +3 +2 +0 +2 +0 +3 +3 +1 +2 +1 +2 +1 +3 +1 +1 +2 +4 +3 +3 +1 +0 +0 +0 +1 +3 +2 +1 +1 +1 +3 +3 +3 +2 +1 +3 +2 +3 +0 +3 +0 +3 +0 +2 +2 +1 +0 +3 +3 +1 +1 +2 +1 +0 +2 +2 +2 +0 +3 +0 +0 +3 +1 +1 +2 +0 +2 +3 +2 +2 +0 +0 +1 +1 +1 +1 +0 +2 +1 +2 +4 +1 +2 +4 +0 +1 +2 +2 +0 +1 +3 +1 +2 +1 +1 +1 +0 +1 +1 +1 +2 +2 +0 +1 +2 +1 +1 +2 +2 +1 +1 +5 +3 +2 +2 +2 +1 +4 +1 +1 +1 +0 +6 +3 +1 +2 +2 +5 +0 +3 +1 +2 +1 +4 +0 +2 +4 +3 +3 +0 +2 +3 +0 +2 +3 +4 +5 +2 +2 +2 +4 +0 +1 +4 +1 +3 +1 +0 +1 +1 +3 +5 +2 +6 +5 +4 +3 +5 +3 +6 +2 +3 +4 +6 +8 +3 +5 +4 +5 +3 +7 +7 +6 +2 +9 +6 +11 +5 +12 +13 +13 +16 +17 +12 +19 +16 +18 +27 +17 +28 +30 +25 +20 +22 +24 +20 +16 +21 +19 +21 +21 +11 +17 +10 +10 +12 +12 +9 +8 +13 +15 +20 +27 +20 +31 +28 +40 +57 +62 +91 +95 +137 +163 +175 +181 +242 +284 +305 +316 +367 +385 +370 +382 +380 +401 +349 +349 +344 +262 +245 +239 +209 +187 +155 +116 +121 +71 +75 +49 +37 +36 +28 +16 +18 +12 +9 +8 +6 +5 +6 +4 +7 +2 +3 +0 +1 +2 +5 +0 +1 +3 +2 +2 +0 +2 +0 +4 +1 +5 +7 +3 +2 +6 +2 +2 +2 +2 +2 +1 +2 +2 +1 +1 +2 +1 +4 +4 +2 +3 +2 +3 +3 +1 +0 +2 +4 +5 +2 +8 +3 +4 +3 +1 +0 +5 +5 +2 +5 +2 +5 +3 +6 +5 +8 +4 +6 +13 +9 +7 +8 +12 +17 +22 +19 +19 +32 +33 +28 +26 +46 +67 +73 +74 +67 +99 +79 +89 +117 +107 +114 +122 +116 +115 +102 +102 +111 +103 +83 +67 +67 +55 +44 +41 +23 +23 +16 +18 +15 +14 +13 +8 +11 +11 +16 +8 +16 +16 +24 +22 +30 +41 +56 +52 +64 +84 +99 +98 +140 +138 +166 +157 +198 +170 +173 +173 +184 +163 +138 +137 +140 +112 +98 +71 +73 +49 +37 +41 +33 +23 +11 +8 +18 +8 +4 +3 +1 +2 +1 +4 +3 +0 +2 +2 +3 +4 +1 +5 +1 +2 +1 +7 +1 +6 +13 +8 +11 +6 +9 +16 +17 +8 +2 +3 +4 +1 +0 +0 +4 +2 +1 +2 +1 +1 +0 +0 +1 +0 +3 +1 +4 +0 +0 +1 +0 +1 +4 +2 +0 +1 +0 +2 +2 +2 +0 +1 +2 +2 +2 +1 +2 +5 +4 +1 +3 +3 +5 +5 +2 +11 +3 +9 +11 +10 +9 +31 +18 +26 +36 +37 +51 +82 +93 +103 +101 +118 +151 +150 +159 +163 +161 +170 +152 +165 +139 +144 +124 +140 +94 +76 +62 +55 +38 +28 +29 +21 +17 +13 +14 +7 +4 +7 +9 +1 +4 +1 +5 +1 +3 +2 +0 +2 +0 +2 +4 +4 +3 +6 +1 +5 +9 +10 +8 +14 +18 +6 +6 +4 +2 +3 +2 +3 +1 +1 +1 +0 +0 +0 +0 +1 +1 +1 +1 +0 +0 +0 +0 +0 +0 +0 +0 +0 +2 +0 +0 +0 +0 +0 +0 +0 +0 +2 +0 +1 +0 +0 +0 +0 +0 +0 +0 +0 +0 +1 +0 +0 +0 +1 +0 +1 +0 +1 +0 +1 +0 +0 +1 +1 +0 +0 +0 +0 +1 +0 +0 +0 +0 +1 +0 +0 +0 +1 +0 +0 +0 +0 +0 +1 +0 +1 +0 +0 +0 +0 +0 +0 +0 +0 +1 +0 +1 +2 +0 +1 +0 +0 +0 +1 +0 +0 +0 +1 +0 +0 +1 +1 +0 +1 +0 +0 +0 +0 +0 +1 +3 +1 +0 +1 +1 +0 +0 +0 +0 +1 +2 +0 +0 +0 +0 +1 +0 +1 +0 +1 +0 +0 +1 +1 +1 +0 +1 +0 +0 +2 +0 +0 +0 +0 +0 +0 +0 +1 +0 +1 +0 +0 +1 +1 +0 +1 +0 +1 +1 +1 +0 +0 +0 +0 +0 +0 +1 +1 +1 +0 +0 +1 +2 +1 +0 +0 +1 +0 +1 +0 +0 +0 +0 +0 +2 +0 +1 +0 +1 +2 +2 +1 +1 +1 +0 +0 +0 +0 +0 +1 +0 +0 +1 +0 +1 +2 +2 +0 +0 +0 +0 +0 +3 +1 +1 +1 +1 +1 +1 +0 +0 +0 +2 +0 +1 +0 +0 +0 +0 +0 +1 +1 +0 +0 +0 +1 +0 +1 +1 +0 +0 +0 +1 +0 +2 +1 +0 +1 +1 +1 +1 +0 +0 +0 +3 +2 +1 +0 +0 +1 +1 +2 +0 +0 +2 +2 +0 +2 +0 +0 +2 +1 +1 +1 +0 +0 +4 +1 +1 +2 +2 +2 +1 +1 +0 +1 +0 +1 +2 +0 +5 +0 +1 +3 +0 +3 +1 +3 +1 +5 +2 +1 +4 +2 +3 +4 +5 +3 +9 +9 +9 +12 +12 +20 +19 +29 +34 +46 +49 +73 +67 +96 +109 +115 +131 +142 +134 +165 +169 +175 +127 +118 +126 +115 +97 +78 +76 +62 +55 +37 +26 +21 +16 +11 +9 +7 +2 +10 +4 +9 +9 +9 +11 +10 +15 +11 +17 +30 +37 +36 +35 +52 +50 +51 +75 +70 +69 +51 +30 +11 +11 +7 +5 +7 +9 +4 +6 +4 +3 +0 +1 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 diff --git a/Temp/Result-1.txt b/Temp/Result-1.txt new file mode 100644 index 0000000..d6231b2 --- /dev/null +++ b/Temp/Result-1.txt @@ -0,0 +1,7 @@ +MeV +0.004470834125804696 +9.249101394161946e-06 +-0.002398537978989701 +0.012288466939492823 +6 +2 \ No newline at end of file diff --git a/Temp/Result1.txt b/Temp/Result1.txt new file mode 100644 index 0000000..e745712 --- /dev/null +++ b/Temp/Result1.txt @@ -0,0 +1,8 @@ +733.608 +801.616 +786.631 +816.990 +824.995 +792.7679915976365 +36.19766899670928 +0 \ No newline at end of file diff --git a/Temp/Result3.txt b/Temp/Result3.txt new file mode 100644 index 0000000..044f57f --- /dev/null +++ b/Temp/Result3.txt @@ -0,0 +1,8 @@ +876.895 +932.298 +958.557 +920.987 +940.489 +925.8453619449938 +30.60157911400397 +0 \ No newline at end of file diff --git a/NewMain.py b/XRA/GaussianFit.py similarity index 70% rename from NewMain.py rename to XRA/GaussianFit.py index a38bc6c..48cb100 100644 --- a/NewMain.py +++ b/XRA/GaussianFit.py @@ -31,6 +31,12 @@ def load_mca_data(filename): y_source = source_data[x1:x2 + 1] y_film = source_film_data[x1:x2 + 1] +m = 0.030826941169 +b = 0.092673711109335 +energy_range = [m * ch + b for ch in x_range] #converting channels to energy +x_smooth = np.linspace(x1, x2, 500) +energy_smooth = [m * ch + b for ch in x_smooth] + # Define the Gaussian function def gaussian(x, A, x0, sigma, B): return A * np.exp(-(x - x0)**2 / (2 * sigma**2)) + B @@ -68,7 +74,7 @@ def gaussian_integral_erf(A, x0, sigma, B, x1, x2): # Plot 1: Source (no film) plt.figure() plt.plot(x_range, y_source, '*', label='Source', color='blue') -plt.plot(x_range, gaussian(x_range, *popt_source), '--', label='Gaussian Fit (Source)', color='cyan') +plt.plot(x_smooth, gaussian(x_smooth, *popt_source), '--', label='Gaussian Fit (Source)', color='cyan') plt.xlabel('Channel') plt.ylabel('Counts') plt.title('Gaussian Fit - Source (No Film)') @@ -78,11 +84,31 @@ def gaussian_integral_erf(A, x0, sigma, B, x1, x2): # Plot 2: Film plt.figure() plt.plot(x_range, y_film,'x', label='Source + Film', color = 'green') -plt.plot(x_range, gaussian(x_range, *popt_film), '--', label='Gaussian Fit (Source + Film)', color='lime') +plt.plot(x_smooth, gaussian(x_smooth, *popt_film), '--', label='Gaussian Fit (Source + Film)', color='lime') plt.xlabel('Channel') plt.ylabel('Counts') plt.title('Gaussian Fit - Source + Film') plt.legend() plt.grid(True) +#Plot 3: Source - counts vs energy +plt.figure() +plt.plot(energy_range, y_source, '*', label='Source (Energy)', color='navy') +plt.plot(energy_smooth, gaussian(x_smooth, *popt_source), '--', label='Gaussian Fit', color='dodgerblue') +plt.xlabel('Energy (keV)') +plt.ylabel('Counts') +plt.title('Gaussian Fit - Source (No Film) [vs Energy]') +plt.legend() +plt.grid(True) + +# Plot 4: Film - counts vs energy +plt.figure() +plt.plot(energy_range, y_film, 'x', label='Source + Film (Energy)', color='darkgreen') +plt.plot(energy_smooth, gaussian(x_smooth, *popt_film), '--', label='Gaussian Fit', color='limegreen') +plt.xlabel('Energy (keV)') +plt.ylabel('Counts') +plt.title('Gaussian Fit - Source + Film [vs Energy]') +plt.legend() +plt.grid(True) + plt.show() \ No newline at end of file diff --git a/PlotDataExercise.py b/XRA/PlotData.py similarity index 100% rename from PlotDataExercise.py rename to XRA/PlotData.py diff --git a/new.py b/XRA/new.py similarity index 100% rename from new.py rename to XRA/new.py diff --git a/aysuMods.txt b/aysuMods.txt deleted file mode 100644 index 6933440..0000000 --- a/aysuMods.txt +++ /dev/null @@ -1 +0,0 @@ -I'm modifying the project \ No newline at end of file From cae8e142b4e41a00ec6747ee3d6e637735192d34 Mon Sep 17 00:00:00 2001 From: aysuismailova Date: Fri, 25 Jul 2025 15:22:48 +0100 Subject: [PATCH 21/44] Code update: Began implementing XRA in the interface (button, tab) --- ARC-TF.py | 60 +- Temp/Analysis-1.txt | 5 - Temp/Analysis1.txt | 5 - Temp/Data-1.txt | 2048 ---------------- Temp/Data1.txt | 2048 ---------------- Temp/Data2.txt | 2048 ---------------- Temp/Result-1.txt | 7 - Temp/Result1.txt | 8 - {Data => XRA/Data}/Ag_Calibration.mca | 0 {Data => XRA/Data}/Ba_Calibration.mca | 0 {Data => XRA/Data}/Be_Calibration.mca | 0 XRA/Data/Combined_bkg_Internship.txt | 2057 +++++++++++++++++ .../Data}/Film_Sn_2h_17Jul_CuSource.mca | 0 {Data => XRA/Data}/Fundo_acqTest_1hour_01.mca | 0 {Data => XRA/Data}/Mo_Calibration.mca | 0 .../Data}/NoFilm_2h_17Jul_CuSource.mca | 0 {Data => XRA/Data}/NoFilm_for_C12_4h_2.mca | 0 .../Data}/NoFilm_overNight_2h_17Jul_1(Mo).mca | 0 .../Data}/Rb_Calibration (20 mins).mca | 0 {Data => XRA/Data}/SampleC12_4h.mca | 0 {Data => XRA/Data}/Tb_Calibration.mca | 0 XRA/GaussianFit.py | 38 +- XRA/PlotData.py | 4 +- XRA/__pycache__/new.cpython-38.pyc | Bin 0 -> 2222 bytes XRA/new.py | 35 +- 25 files changed, 2171 insertions(+), 6192 deletions(-) delete mode 100644 Temp/Analysis-1.txt delete mode 100644 Temp/Analysis1.txt delete mode 100644 Temp/Data-1.txt delete mode 100644 Temp/Data1.txt delete mode 100644 Temp/Data2.txt delete mode 100644 Temp/Result-1.txt delete mode 100644 Temp/Result1.txt rename {Data => XRA/Data}/Ag_Calibration.mca (100%) rename {Data => XRA/Data}/Ba_Calibration.mca (100%) rename {Data => XRA/Data}/Be_Calibration.mca (100%) create mode 100644 XRA/Data/Combined_bkg_Internship.txt rename {Data => XRA/Data}/Film_Sn_2h_17Jul_CuSource.mca (100%) rename {Data => XRA/Data}/Fundo_acqTest_1hour_01.mca (100%) rename {Data => XRA/Data}/Mo_Calibration.mca (100%) rename {Data => XRA/Data}/NoFilm_2h_17Jul_CuSource.mca (100%) rename {Data => XRA/Data}/NoFilm_for_C12_4h_2.mca (100%) rename {Data => XRA/Data}/NoFilm_overNight_2h_17Jul_1(Mo).mca (100%) rename {Data => XRA/Data}/Rb_Calibration (20 mins).mca (100%) rename {Data => XRA/Data}/SampleC12_4h.mca (100%) rename {Data => XRA/Data}/Tb_Calibration.mca (100%) create mode 100644 XRA/__pycache__/new.cpython-38.pyc diff --git a/ARC-TF.py b/ARC-TF.py index ad2c1ef..aec8685 100644 --- a/ARC-TF.py +++ b/ARC-TF.py @@ -1229,18 +1229,24 @@ def ROI_Select_Alg(): counts = File_Reader(TabList[num][2], '0', 'Yes', 'No') # Retrieve ROI lower and upper bounds from the GUI (up to 6 ROIs) - roi_down = [TabList[num][1].ROIdown1.get(), + # Check if the current tab is XRA (TabTracker value == 5) + if TabTracker[num] == 5: + # Use only 1 ROI for XRA + roi_down = [TabList[num][1].ROIdown1.get()] + roi_up = [TabList[num][1].ROIup1.get()] + else: + roi_down = [TabList[num][1].ROIdown1.get(), TabList[num][1].ROIdown2.get(), TabList[num][1].ROIdown3.get(), TabList[num][1].ROIdown4.get(), TabList[num][1].ROIdown5.get(), TabList[num][1].ROIdown6.get()] - roi_up = [TabList[num][1].ROIup1.get(), - TabList[num][1].ROIup2.get(), - TabList[num][1].ROIup3.get(), - TabList[num][1].ROIup4.get(), - TabList[num][1].ROIup5.get(), - TabList[num][1].ROIup6.get()] + roi_up = [TabList[num][1].ROIup1.get(), + TabList[num][1].ROIup2.get(), + TabList[num][1].ROIup3.get(), + TabList[num][1].ROIup4.get(), + TabList[num][1].ROIup5.get(), + TabList[num][1].ROIup6.get()] # Analyze the counts within each ROI to get centroids, uncertainties, and sigma/sqrt(N) cents, errs, sigmas = Analyze(counts, roi_down, roi_up) @@ -1403,6 +1409,8 @@ def handleTabChange(event): text='Calibration Trial').pack() tk.Button(warnings_manager.warning, command=lambda: Tabs.tab_change(2), text='Material Trial').pack() + tk.Button(warnings_manager.warning, command=lambda: Tabs.tab_change(5), + text='XRA').pack() tk.Label(warnings_manager.warning, text='\n').pack() tk.Button(warnings_manager.warning, text='Return', command=lambda: Tabs.tab_change(3)).pack() @@ -1921,6 +1929,7 @@ def __init__(self): self.menu.add_cascade(label='Manage Tabs', menu=__tabs_menu) __tabs_menu.add_command(label='Add Calibration Tab', command=lambda: Tabs.tab_change(1)) __tabs_menu.add_command(label='Add Material Tab', command=lambda: Tabs.tab_change(2)) + __tabs_menu.add_command(label='Add XRA Tab', command=lambda: Tabs.tab_change(5)) __tabs_menu.add_separator() __tabs_menu.add_command(label='Remove Current Tab', command=lambda: Tabs.tab_change(4)) @@ -2177,6 +2186,7 @@ class Tabs: """ material_tab_counter = 0 calibration_tab_counter = 0 + xra_tab_counter = 0 def First_Tabs(self): @@ -2362,10 +2372,16 @@ def AnalysisTab(self, tab_kind): self.variable1, self.variable2, self.variable3, self.variable4, self.variable5, self.variable6, self.variable7, self.variable8, self.variable9, self.variable10, self.variable11, self.variable12, self.variable13, self.variable14, self.variable15] - - tk.Label(self.DataFrame, text = 'Analysis Method Selected: ').grid(row = 0, columnspan = 2) - Algs = ["Manual Selection", "Threshold Input", "ROI Select"] - tk.OptionMenu(self.DataFrame, self.Algorithm_Method, *Algs, command = Method).grid(row = 1, columnspan = 2) + + if tab_kind == 5: + self.Algorithm_Method.set("ROI Select") + Method() # Trigger layout + tk.Label(self.DataFrame, text='Analysis Method: ROI Select').grid(row=0, columnspan=2) + else: + tk.Label(self.DataFrame, text='Analysis Method Selected:').grid(row=0, columnspan=2) + Algs = ["Manual Selection", "Threshold Input", "ROI Select"] + tk.OptionMenu(self.DataFrame, self.Algorithm_Method, *Algs, command=Method).grid(row=1, columnspan=2) + def MatTab(self): @@ -2504,6 +2520,28 @@ def tab_change(num): except: () + elif num == 5: + Tabs.xra_tab_counter += 1 + Data = os.path.join("Temp", f"Data{Tabs.xra_tab_counter}.txt") + Analysis = os.path.join("Temp", f"Analysis{Tabs.xra_tab_counter}.txt") + Result = os.path.join("Temp", f"Result{Tabs.xra_tab_counter}.txt") + ROIs = os.path.join("Temp", f"ROIs{Tabs.xra_tab_counter}.txt") + TabList.append([tk.Frame(tab_manager.notebook, bg = 'dark grey'), Tabs(), Data, + Analysis, Result, Plot(), ROIs]) + + TabTracker.append(Tabs.xra_tab_counter) + TabList[tab_manager.value][1].AnalysisTab(5) + tab_manager.notebook.insert(index, TabList[tab_manager.value][0], + text = " XRA " + str(Tabs.xra_tab_counter)) + tab_manager.notebook.select(index) + tab_manager.value += 1 + try: + warnings_manager.warning.destroy() + except: + () + + + elif num == 3: tab_manager.notebook.select(index - 1) warnings_manager.warning.destroy() diff --git a/Temp/Analysis-1.txt b/Temp/Analysis-1.txt deleted file mode 100644 index 438538b..0000000 --- a/Temp/Analysis-1.txt +++ /dev/null @@ -1,5 +0,0 @@ -1070,1114 -1188,312 -1229,454 -1342,439 -1720,398 diff --git a/Temp/Analysis1.txt b/Temp/Analysis1.txt deleted file mode 100644 index 777c71e..0000000 --- a/Temp/Analysis1.txt +++ /dev/null @@ -1,5 +0,0 @@ -1030,228 -1145,81 -1188,122 -1303,108 -1685,106 diff --git a/Temp/Data-1.txt b/Temp/Data-1.txt deleted file mode 100644 index 35776ca..0000000 --- a/Temp/Data-1.txt +++ /dev/null @@ -1,2048 +0,0 @@ -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -28 -251 -330 -295 -273 -301 -280 -259 -291 -242 -223 -190 -219 -216 -188 -202 -162 -150 -137 -122 -124 -107 -114 -97 -89 -105 -75 -90 -73 -65 -78 -58 -49 -53 -64 -42 -45 -37 -32 -31 -35 -36 -16 -11 -23 -25 -22 -18 -18 -14 -15 -22 -13 -10 -12 -10 -10 -11 -7 -7 -6 -4 -11 -6 -7 -2 -7 -2 -7 -5 -1 -4 -0 -4 -4 -5 -2 -1 -4 -3 -1 -2 -2 -2 -0 -2 -2 -2 -1 -1 -2 -0 -1 -1 -2 -2 -2 -0 -2 -2 -1 -0 -2 -0 -1 -1 -1 -0 -2 -0 -0 -0 -1 -0 -0 -1 -0 -4 -0 -1 -0 -0 -0 -0 -1 -0 -1 -1 -1 -0 -1 -0 -0 -0 -1 -0 -0 -1 -0 -0 -1 -0 -0 -1 -2 -0 -1 -0 -0 -0 -1 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -2 -0 -0 -1 -0 -0 -0 -0 -0 -2 -0 -0 -0 -3 -0 -0 -0 -1 -1 -1 -1 -1 -0 -0 -2 -2 -0 -1 -1 -0 -1 -0 -0 -1 -0 -2 -0 -2 -2 -0 -2 -0 -1 -1 -1 -0 -0 -0 -1 -0 -0 -0 -0 -2 -1 -2 -0 -0 -4 -0 -0 -0 -3 -0 -2 -0 -1 -1 -1 -0 -0 -0 -0 -0 -0 -1 -0 -0 -0 -1 -1 -0 -0 -1 -1 -0 -0 -0 -0 -1 -1 -0 -0 -1 -3 -2 -0 -2 -0 -1 -1 -0 -1 -0 -0 -1 -1 -0 -1 -0 -0 -0 -0 -3 -2 -2 -1 -0 -1 -0 -1 -1 -1 -0 -0 -0 -0 -2 -0 -0 -0 -0 -1 -0 -0 -2 -1 -1 -1 -0 -0 -0 -1 -0 -2 -0 -1 -2 -0 -0 -0 -0 -0 -0 -1 -1 -0 -0 -0 -2 -1 -3 -0 -0 -0 -1 -0 -2 -1 -0 -0 -1 -0 -0 -0 -0 -0 -1 -2 -0 -0 -0 -0 -0 -0 -2 -3 -0 -1 -1 -0 -0 -1 -0 -1 -0 -0 -1 -0 -0 -0 -1 -0 -0 -1 -2 -3 -3 -0 -2 -1 -0 -1 -1 -0 -0 -0 -2 -0 -1 -0 -1 -1 -0 -1 -0 -0 -1 -1 -0 -2 -2 -3 -1 -0 -0 -2 -1 -2 -0 -2 -3 -0 -1 -2 -3 -1 -1 -1 -1 -3 -2 -0 -1 -0 -1 -1 -1 -0 -2 -2 -2 -1 -2 -0 -2 -3 -0 -0 -1 -1 -1 -2 -0 -0 -1 -2 -1 -2 -0 -1 -2 -0 -2 -2 -2 -1 -2 -1 -0 -1 -1 -1 -3 -1 -0 -0 -1 -1 -1 -2 -1 -1 -0 -0 -1 -0 -3 -1 -0 -0 -2 -1 -2 -0 -2 -0 -2 -1 -1 -0 -0 -1 -2 -1 -0 -2 -0 -3 -2 -1 -1 -2 -2 -1 -0 -1 -3 -3 -2 -0 -1 -0 -0 -0 -0 -1 -0 -2 -0 -1 -1 -1 -3 -1 -1 -6 -0 -1 -3 -1 -2 -1 -1 -0 -3 -0 -2 -1 -1 -2 -1 -1 -0 -2 -3 -2 -2 -1 -1 -1 -2 -2 -4 -3 -2 -0 -0 -1 -1 -0 -1 -1 -1 -1 -1 -2 -3 -2 -4 -0 -1 -3 -1 -1 -3 -1 -2 -2 -0 -1 -1 -0 -2 -3 -2 -1 -0 -2 -0 -1 -0 -1 -0 -2 -0 -3 -1 -2 -2 -0 -1 -1 -1 -1 -0 -2 -2 -1 -0 -0 -2 -2 -4 -0 -0 -0 -1 -1 -0 -0 -2 -1 -4 -4 -0 -1 -2 -2 -1 -0 -1 -0 -2 -0 -2 -1 -1 -0 -1 -2 -1 -0 -0 -2 -1 -0 -0 -1 -0 -1 -0 -4 -1 -1 -2 -0 -4 -1 -2 -1 -1 -1 -1 -2 -3 -1 -0 -2 -1 -0 -4 -2 -2 -2 -0 -3 -3 -1 -1 -1 -0 -0 -1 -1 -2 -1 -0 -4 -3 -1 -0 -0 -5 -0 -4 -2 -2 -4 -0 -2 -0 -2 -2 -0 -1 -4 -1 -2 -1 -1 -1 -0 -0 -0 -1 -5 -0 -1 -1 -3 -3 -4 -0 -1 -1 -0 -0 -1 -2 -2 -2 -0 -2 -1 -1 -4 -2 -0 -1 -2 -4 -2 -2 -1 -0 -3 -2 -1 -2 -5 -1 -3 -3 -1 -2 -2 -0 -2 -2 -1 -2 -3 -1 -2 -1 -0 -2 -2 -2 -0 -1 -0 -0 -1 -1 -2 -1 -1 -1 -6 -0 -2 -1 -3 -5 -3 -0 -2 -3 -3 -2 -2 -1 -1 -0 -1 -3 -1 -1 -2 -1 -0 -1 -1 -1 -2 -2 -2 -2 -5 -1 -1 -0 -1 -2 -3 -2 -1 -2 -1 -2 -2 -0 -1 -0 -1 -0 -1 -2 -3 -2 -2 -1 -2 -4 -1 -2 -0 -2 -5 -3 -2 -3 -0 -0 -1 -0 -1 -1 -2 -0 -6 -2 -5 -0 -1 -2 -0 -1 -1 -1 -4 -2 -4 -3 -3 -1 -1 -4 -3 -1 -2 -3 -3 -6 -1 -3 -2 -1 -5 -4 -0 -1 -3 -2 -0 -2 -1 -0 -2 -0 -1 -1 -2 -1 -3 -2 -0 -1 -4 -2 -0 -3 -1 -3 -2 -5 -1 -1 -4 -2 -1 -4 -4 -7 -2 -3 -2 -2 -1 -3 -1 -5 -2 -0 -2 -1 -0 -3 -2 -4 -2 -2 -1 -2 -1 -3 -1 -4 -3 -1 -3 -2 -3 -2 -1 -4 -2 -1 -1 -3 -2 -0 -2 -6 -3 -2 -3 -2 -5 -5 -2 -1 -1 -6 -5 -3 -3 -4 -1 -6 -3 -2 -1 -1 -4 -5 -1 -5 -4 -3 -4 -2 -3 -7 -3 -3 -6 -2 -1 -4 -8 -4 -2 -5 -3 -3 -4 -6 -6 -8 -16 -17 -21 -44 -46 -71 -90 -64 -64 -34 -19 -12 -9 -3 -4 -3 -4 -0 -4 -3 -3 -6 -4 -3 -7 -10 -6 -12 -13 -7 -12 -9 -12 -11 -19 -17 -17 -29 -24 -33 -78 -120 -215 -415 -623 -845 -1114 -1111 -1058 -891 -564 -344 -188 -95 -40 -18 -5 -1 -4 -2 -1 -0 -2 -0 -3 -0 -1 -0 -4 -4 -1 -1 -2 -4 -1 -7 -1 -1 -1 -1 -0 -2 -2 -4 -6 -0 -3 -3 -2 -0 -4 -3 -1 -4 -1 -1 -2 -4 -2 -1 -2 -2 -3 -3 -1 -2 -6 -1 -3 -4 -1 -2 -4 -3 -1 -3 -3 -3 -1 -2 -4 -2 -5 -3 -2 -3 -6 -4 -3 -1 -3 -6 -7 -2 -8 -4 -7 -6 -3 -5 -6 -10 -6 -4 -7 -13 -13 -10 -15 -13 -22 -16 -23 -34 -36 -48 -58 -89 -111 -138 -194 -240 -283 -268 -312 -225 -156 -108 -77 -32 -22 -8 -4 -4 -0 -2 -7 -3 -2 -3 -4 -3 -2 -4 -3 -3 -3 -8 -6 -2 -11 -6 -5 -12 -15 -20 -13 -29 -52 -86 -153 -247 -306 -392 -445 -454 -374 -316 -197 -124 -90 -43 -13 -3 -2 -3 -3 -1 -0 -2 -2 -1 -3 -2 -1 -0 -0 -1 -2 -1 -1 -2 -2 -1 -0 -3 -1 -0 -1 -1 -4 -0 -0 -0 -1 -4 -2 -0 -1 -1 -2 -1 -2 -1 -3 -4 -5 -3 -1 -3 -1 -4 -3 -1 -5 -1 -2 -3 -4 -3 -0 -3 -4 -4 -3 -5 -4 -3 -4 -3 -5 -5 -6 -2 -4 -2 -6 -3 -7 -3 -4 -4 -5 -7 -7 -4 -13 -7 -6 -9 -9 -11 -13 -11 -9 -14 -28 -24 -30 -34 -38 -56 -94 -103 -165 -212 -310 -351 -439 -428 -429 -346 -297 -223 -154 -89 -61 -37 -7 -6 -2 -0 -0 -0 -0 -0 -1 -2 -0 -0 -1 -0 -1 -0 -1 -1 -2 -0 -0 -0 -0 -0 -0 -1 -0 -0 -0 -1 -1 -0 -1 -0 -0 -1 -0 -0 -0 -0 -2 -1 -1 -1 -1 -1 -1 -1 -0 -0 -2 -0 -0 -0 -1 -1 -0 -1 -2 -0 -0 -0 -0 -0 -0 -1 -0 -1 -0 -2 -0 -0 -0 -0 -0 -0 -0 -1 -0 -0 -0 -0 -1 -0 -0 -0 -1 -0 -0 -2 -0 -0 -1 -0 -0 -1 -1 -0 -0 -0 -0 -1 -0 -0 -1 -0 -1 -0 -0 -1 -0 -0 -0 -3 -0 -0 -0 -0 -0 -0 -0 -2 -0 -0 -0 -1 -0 -0 -0 -2 -2 -1 -1 -0 -1 -1 -1 -0 -0 -1 -0 -0 -0 -0 -0 -0 -0 -1 -1 -0 -0 -0 -0 -0 -0 -0 -1 -0 -1 -1 -1 -1 -0 -0 -1 -1 -0 -1 -0 -1 -0 -0 -0 -0 -0 -1 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -3 -0 -1 -0 -0 -0 -0 -1 -0 -0 -0 -1 -0 -1 -0 -2 -1 -0 -4 -0 -0 -1 -1 -1 -0 -1 -0 -2 -0 -1 -1 -3 -1 -3 -0 -3 -0 -0 -1 -1 -1 -2 -0 -0 -2 -3 -1 -1 -0 -0 -0 -1 -4 -0 -0 -0 -2 -2 -2 -2 -1 -2 -0 -1 -0 -2 -0 -1 -1 -1 -1 -0 -0 -1 -1 -1 -0 -1 -0 -0 -0 -0 -1 -2 -2 -2 -0 -0 -0 -0 -0 -0 -0 -0 -1 -0 -1 -0 -0 -0 -0 -0 -0 -0 -0 -2 -2 -0 -1 -0 -1 -2 -0 -0 -0 -1 -1 -1 -0 -0 -0 -1 -0 -1 -0 -2 -0 -1 -1 -0 -0 -0 -1 -2 -1 -4 -1 -1 -0 -1 -2 -0 -2 -2 -2 -4 -3 -3 -2 -4 -2 -2 -0 -5 -2 -2 -4 -4 -5 -2 -6 -5 -4 -13 -13 -11 -19 -15 -23 -23 -36 -43 -78 -89 -156 -194 -201 -329 -354 -398 -354 -307 -253 -204 -152 -119 -89 -58 -24 -9 -3 -2 -3 -0 -3 -1 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 diff --git a/Temp/Data1.txt b/Temp/Data1.txt deleted file mode 100644 index aa4c353..0000000 --- a/Temp/Data1.txt +++ /dev/null @@ -1,2048 +0,0 @@ -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -22 -109 -173 -162 -165 -151 -153 -151 -107 -114 -98 -108 -119 -101 -111 -100 -120 -64 -74 -83 -71 -60 -66 -65 -40 -53 -40 -57 -34 -47 -31 -35 -25 -23 -20 -21 -16 -19 -11 -21 -17 -17 -18 -21 -11 -22 -11 -9 -9 -12 -10 -11 -6 -5 -10 -6 -7 -4 -4 -2 -4 -4 -5 -4 -3 -2 -2 -2 -5 -3 -2 -2 -3 -4 -4 -2 -3 -4 -0 -2 -1 -0 -2 -3 -4 -1 -0 -1 -1 -0 -0 -0 -0 -0 -2 -0 -1 -0 -0 -0 -0 -1 -2 -0 -2 -0 -0 -1 -0 -0 -0 -0 -0 -1 -0 -1 -0 -1 -0 -0 -0 -0 -1 -1 -0 -0 -0 -1 -1 -0 -0 -0 -0 -0 -0 -2 -1 -0 -0 -1 -0 -1 -0 -1 -0 -0 -1 -0 -2 -0 -1 -0 -0 -0 -0 -0 -0 -2 -1 -0 -0 -0 -0 -1 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -1 -0 -2 -0 -0 -1 -0 -0 -0 -1 -1 -0 -1 -0 -0 -0 -0 -0 -0 -0 -0 -1 -0 -1 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -1 -1 -0 -0 -0 -1 -0 -0 -0 -0 -0 -0 -0 -1 -1 -0 -1 -0 -0 -0 -0 -0 -0 -0 -1 -0 -0 -0 -0 -0 -0 -0 -0 -1 -0 -0 -1 -0 -0 -2 -1 -0 -0 -1 -0 -1 -2 -0 -0 -1 -1 -0 -0 -0 -0 -0 -1 -0 -0 -0 -0 -0 -0 -1 -0 -0 -0 -0 -0 -1 -1 -0 -0 -0 -0 -0 -0 -0 -0 -1 -1 -0 -0 -0 -1 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -1 -0 -1 -0 -0 -0 -0 -0 -1 -1 -1 -1 -0 -0 -0 -0 -1 -1 -1 -0 -0 -1 -0 -0 -1 -0 -0 -0 -0 -0 -0 -0 -1 -1 -0 -0 -2 -1 -0 -0 -0 -1 -0 -1 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -1 -0 -0 -1 -0 -0 -0 -1 -0 -1 -0 -1 -0 -1 -0 -0 -0 -2 -1 -0 -0 -0 -2 -1 -0 -1 -0 -1 -0 -1 -0 -1 -1 -0 -0 -1 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -1 -0 -0 -2 -1 -1 -0 -2 -0 -0 -3 -0 -0 -0 -0 -0 -0 -1 -0 -0 -0 -0 -0 -1 -1 -0 -0 -0 -1 -0 -0 -0 -0 -0 -0 -0 -2 -1 -1 -1 -1 -1 -1 -3 -1 -0 -1 -1 -0 -1 -0 -1 -1 -0 -0 -0 -1 -0 -0 -2 -0 -0 -0 -1 -0 -1 -0 -1 -0 -1 -0 -0 -0 -1 -1 -1 -0 -0 -1 -0 -1 -1 -1 -0 -0 -1 -0 -0 -0 -1 -1 -0 -2 -0 -0 -1 -2 -0 -1 -0 -0 -1 -2 -0 -1 -0 -1 -1 -0 -3 -0 -1 -0 -1 -1 -1 -2 -4 -1 -0 -0 -1 -1 -0 -1 -0 -2 -0 -1 -0 -1 -0 -0 -1 -1 -0 -0 -0 -1 -1 -1 -2 -2 -0 -1 -0 -0 -1 -0 -1 -0 -0 -0 -2 -0 -1 -1 -0 -2 -0 -0 -3 -2 -0 -0 -1 -1 -1 -0 -0 -1 -0 -0 -1 -1 -0 -1 -1 -0 -0 -1 -0 -2 -1 -0 -0 -1 -0 -1 -1 -0 -1 -0 -0 -1 -0 -1 -1 -0 -0 -0 -0 -0 -0 -0 -0 -0 -1 -0 -0 -1 -0 -0 -0 -0 -1 -0 -1 -1 -0 -0 -0 -0 -0 -0 -1 -1 -0 -1 -0 -0 -1 -1 -2 -1 -1 -2 -1 -1 -1 -1 -0 -1 -1 -1 -0 -2 -0 -1 -0 -1 -1 -0 -0 -1 -1 -0 -0 -1 -0 -1 -2 -0 -1 -0 -0 -1 -2 -0 -0 -0 -2 -0 -0 -1 -0 -1 -1 -3 -2 -1 -1 -0 -0 -2 -1 -0 -3 -0 -0 -2 -2 -2 -0 -0 -0 -1 -0 -1 -2 -1 -0 -1 -2 -0 -2 -0 -2 -1 -0 -0 -0 -1 -0 -0 -2 -1 -1 -0 -1 -0 -1 -2 -1 -0 -0 -0 -0 -0 -0 -0 -0 -0 -1 -2 -2 -0 -1 -0 -1 -1 -0 -1 -0 -3 -0 -0 -1 -3 -2 -0 -0 -0 -1 -2 -0 -2 -0 -2 -3 -2 -0 -2 -0 -0 -1 -0 -0 -1 -4 -2 -0 -0 -0 -0 -1 -1 -4 -1 -2 -0 -0 -2 -2 -1 -1 -3 -2 -0 -0 -2 -0 -1 -0 -2 -2 -1 -1 -0 -1 -0 -1 -1 -0 -1 -2 -1 -0 -0 -0 -1 -3 -0 -0 -0 -0 -1 -0 -1 -0 -0 -1 -0 -0 -1 -2 -1 -0 -1 -1 -0 -2 -1 -3 -0 -0 -1 -0 -3 -0 -0 -0 -2 -1 -1 -1 -3 -0 -2 -1 -1 -4 -2 -1 -1 -0 -3 -2 -4 -2 -1 -0 -0 -1 -2 -2 -2 -0 -2 -0 -0 -1 -0 -0 -0 -0 -1 -1 -0 -0 -1 -2 -1 -1 -0 -0 -1 -2 -1 -1 -0 -2 -1 -1 -0 -2 -1 -1 -0 -1 -0 -3 -0 -1 -1 -1 -1 -3 -0 -1 -2 -0 -3 -2 -2 -1 -2 -2 -1 -4 -2 -1 -4 -0 -1 -3 -3 -4 -1 -1 -3 -2 -2 -5 -9 -2 -5 -11 -15 -9 -8 -12 -8 -15 -13 -20 -15 -17 -15 -12 -12 -8 -11 -8 -9 -14 -6 -4 -11 -4 -7 -6 -5 -8 -8 -5 -7 -5 -11 -14 -14 -13 -33 -37 -38 -54 -51 -72 -88 -82 -123 -124 -154 -156 -180 -219 -223 -222 -194 -204 -217 -228 -190 -150 -165 -129 -107 -95 -75 -70 -57 -43 -24 -27 -21 -12 -18 -8 -12 -5 -9 -4 -5 -5 -0 -2 -0 -2 -0 -3 -0 -2 -1 -2 -0 -2 -0 -1 -0 -4 -2 -1 -1 -0 -1 -1 -1 -1 -0 -2 -0 -0 -0 -1 -0 -2 -1 -1 -2 -3 -0 -0 -0 -1 -3 -1 -1 -0 -2 -0 -1 -2 -0 -2 -2 -3 -3 -1 -1 -0 -2 -1 -4 -3 -2 -5 -0 -3 -2 -3 -4 -2 -1 -3 -4 -6 -6 -5 -11 -10 -7 -17 -16 -13 -20 -30 -33 -30 -30 -50 -55 -57 -52 -57 -63 -66 -81 -71 -66 -70 -61 -51 -64 -47 -39 -28 -24 -20 -12 -12 -11 -6 -3 -8 -7 -4 -5 -3 -2 -9 -7 -6 -11 -13 -12 -17 -20 -34 -44 -53 -51 -42 -72 -74 -77 -89 -104 -103 -114 -122 -93 -93 -89 -81 -61 -63 -54 -42 -39 -36 -25 -16 -5 -13 -12 -8 -6 -6 -5 -3 -2 -3 -1 -4 -3 -0 -1 -2 -0 -3 -0 -3 -2 -4 -6 -4 -8 -5 -4 -2 -6 -1 -0 -2 -0 -1 -1 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -1 -0 -1 -1 -0 -1 -0 -2 -1 -2 -0 -2 -1 -2 -1 -2 -0 -2 -2 -0 -0 -1 -0 -1 -3 -2 -2 -1 -4 -5 -4 -4 -5 -1 -2 -6 -7 -13 -6 -11 -13 -27 -20 -34 -37 -54 -63 -67 -70 -85 -80 -91 -108 -104 -105 -93 -83 -86 -67 -62 -40 -50 -45 -22 -22 -12 -11 -11 -7 -8 -3 -4 -1 -1 -5 -2 -2 -4 -2 -2 -2 -2 -5 -3 -5 -7 -4 -4 -5 -8 -13 -12 -9 -13 -3 -3 -1 -1 -2 -3 -1 -0 -0 -0 -1 -0 -0 -1 -1 -1 -0 -0 -0 -0 -0 -1 -1 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -1 -0 -0 -0 -0 -0 -2 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -1 -0 -0 -0 -1 -1 -0 -0 -0 -0 -0 -0 -0 -0 -0 -1 -0 -0 -0 -0 -0 -0 -1 -0 -0 -1 -0 -0 -0 -0 -1 -0 -0 -0 -2 -0 -0 -0 -1 -0 -0 -0 -0 -0 -0 -0 -0 -1 -0 -1 -0 -0 -0 -0 -0 -0 -0 -1 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -1 -0 -0 -0 -0 -0 -0 -0 -0 -0 -1 -0 -1 -0 -0 -0 -0 -0 -0 -2 -0 -0 -0 -1 -0 -0 -0 -0 -0 -0 -0 -1 -1 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -1 -0 -2 -0 -0 -0 -0 -0 -1 -0 -0 -1 -0 -0 -2 -4 -0 -0 -1 -1 -0 -1 -1 -0 -0 -1 -1 -1 -0 -0 -1 -0 -0 -1 -0 -2 -1 -0 -0 -0 -0 -0 -1 -1 -0 -0 -1 -1 -0 -0 -2 -2 -0 -0 -0 -0 -1 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -1 -0 -0 -0 -0 -0 -1 -0 -1 -0 -0 -1 -1 -1 -0 -0 -0 -0 -1 -0 -0 -0 -0 -1 -2 -0 -1 -0 -0 -2 -0 -0 -0 -0 -1 -2 -0 -0 -1 -0 -0 -0 -3 -0 -1 -0 -0 -0 -0 -1 -0 -1 -0 -0 -0 -0 -2 -1 -1 -2 -0 -1 -1 -0 -4 -1 -4 -4 -3 -3 -6 -4 -10 -9 -12 -17 -18 -21 -26 -43 -41 -51 -54 -61 -79 -61 -79 -92 -106 -94 -83 -82 -62 -55 -61 -33 -40 -27 -22 -27 -13 -15 -8 -9 -9 -10 -14 -12 -4 -9 -14 -18 -14 -22 -23 -37 -22 -35 -44 -45 -44 -52 -36 -31 -25 -15 -6 -4 -3 -2 -3 -3 -1 -2 -2 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 diff --git a/Temp/Data2.txt b/Temp/Data2.txt deleted file mode 100644 index aa4c353..0000000 --- a/Temp/Data2.txt +++ /dev/null @@ -1,2048 +0,0 @@ -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -22 -109 -173 -162 -165 -151 -153 -151 -107 -114 -98 -108 -119 -101 -111 -100 -120 -64 -74 -83 -71 -60 -66 -65 -40 -53 -40 -57 -34 -47 -31 -35 -25 -23 -20 -21 -16 -19 -11 -21 -17 -17 -18 -21 -11 -22 -11 -9 -9 -12 -10 -11 -6 -5 -10 -6 -7 -4 -4 -2 -4 -4 -5 -4 -3 -2 -2 -2 -5 -3 -2 -2 -3 -4 -4 -2 -3 -4 -0 -2 -1 -0 -2 -3 -4 -1 -0 -1 -1 -0 -0 -0 -0 -0 -2 -0 -1 -0 -0 -0 -0 -1 -2 -0 -2 -0 -0 -1 -0 -0 -0 -0 -0 -1 -0 -1 -0 -1 -0 -0 -0 -0 -1 -1 -0 -0 -0 -1 -1 -0 -0 -0 -0 -0 -0 -2 -1 -0 -0 -1 -0 -1 -0 -1 -0 -0 -1 -0 -2 -0 -1 -0 -0 -0 -0 -0 -0 -2 -1 -0 -0 -0 -0 -1 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -1 -0 -2 -0 -0 -1 -0 -0 -0 -1 -1 -0 -1 -0 -0 -0 -0 -0 -0 -0 -0 -1 -0 -1 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -1 -1 -0 -0 -0 -1 -0 -0 -0 -0 -0 -0 -0 -1 -1 -0 -1 -0 -0 -0 -0 -0 -0 -0 -1 -0 -0 -0 -0 -0 -0 -0 -0 -1 -0 -0 -1 -0 -0 -2 -1 -0 -0 -1 -0 -1 -2 -0 -0 -1 -1 -0 -0 -0 -0 -0 -1 -0 -0 -0 -0 -0 -0 -1 -0 -0 -0 -0 -0 -1 -1 -0 -0 -0 -0 -0 -0 -0 -0 -1 -1 -0 -0 -0 -1 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -1 -0 -1 -0 -0 -0 -0 -0 -1 -1 -1 -1 -0 -0 -0 -0 -1 -1 -1 -0 -0 -1 -0 -0 -1 -0 -0 -0 -0 -0 -0 -0 -1 -1 -0 -0 -2 -1 -0 -0 -0 -1 -0 -1 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -1 -0 -0 -1 -0 -0 -0 -1 -0 -1 -0 -1 -0 -1 -0 -0 -0 -2 -1 -0 -0 -0 -2 -1 -0 -1 -0 -1 -0 -1 -0 -1 -1 -0 -0 -1 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -1 -0 -0 -2 -1 -1 -0 -2 -0 -0 -3 -0 -0 -0 -0 -0 -0 -1 -0 -0 -0 -0 -0 -1 -1 -0 -0 -0 -1 -0 -0 -0 -0 -0 -0 -0 -2 -1 -1 -1 -1 -1 -1 -3 -1 -0 -1 -1 -0 -1 -0 -1 -1 -0 -0 -0 -1 -0 -0 -2 -0 -0 -0 -1 -0 -1 -0 -1 -0 -1 -0 -0 -0 -1 -1 -1 -0 -0 -1 -0 -1 -1 -1 -0 -0 -1 -0 -0 -0 -1 -1 -0 -2 -0 -0 -1 -2 -0 -1 -0 -0 -1 -2 -0 -1 -0 -1 -1 -0 -3 -0 -1 -0 -1 -1 -1 -2 -4 -1 -0 -0 -1 -1 -0 -1 -0 -2 -0 -1 -0 -1 -0 -0 -1 -1 -0 -0 -0 -1 -1 -1 -2 -2 -0 -1 -0 -0 -1 -0 -1 -0 -0 -0 -2 -0 -1 -1 -0 -2 -0 -0 -3 -2 -0 -0 -1 -1 -1 -0 -0 -1 -0 -0 -1 -1 -0 -1 -1 -0 -0 -1 -0 -2 -1 -0 -0 -1 -0 -1 -1 -0 -1 -0 -0 -1 -0 -1 -1 -0 -0 -0 -0 -0 -0 -0 -0 -0 -1 -0 -0 -1 -0 -0 -0 -0 -1 -0 -1 -1 -0 -0 -0 -0 -0 -0 -1 -1 -0 -1 -0 -0 -1 -1 -2 -1 -1 -2 -1 -1 -1 -1 -0 -1 -1 -1 -0 -2 -0 -1 -0 -1 -1 -0 -0 -1 -1 -0 -0 -1 -0 -1 -2 -0 -1 -0 -0 -1 -2 -0 -0 -0 -2 -0 -0 -1 -0 -1 -1 -3 -2 -1 -1 -0 -0 -2 -1 -0 -3 -0 -0 -2 -2 -2 -0 -0 -0 -1 -0 -1 -2 -1 -0 -1 -2 -0 -2 -0 -2 -1 -0 -0 -0 -1 -0 -0 -2 -1 -1 -0 -1 -0 -1 -2 -1 -0 -0 -0 -0 -0 -0 -0 -0 -0 -1 -2 -2 -0 -1 -0 -1 -1 -0 -1 -0 -3 -0 -0 -1 -3 -2 -0 -0 -0 -1 -2 -0 -2 -0 -2 -3 -2 -0 -2 -0 -0 -1 -0 -0 -1 -4 -2 -0 -0 -0 -0 -1 -1 -4 -1 -2 -0 -0 -2 -2 -1 -1 -3 -2 -0 -0 -2 -0 -1 -0 -2 -2 -1 -1 -0 -1 -0 -1 -1 -0 -1 -2 -1 -0 -0 -0 -1 -3 -0 -0 -0 -0 -1 -0 -1 -0 -0 -1 -0 -0 -1 -2 -1 -0 -1 -1 -0 -2 -1 -3 -0 -0 -1 -0 -3 -0 -0 -0 -2 -1 -1 -1 -3 -0 -2 -1 -1 -4 -2 -1 -1 -0 -3 -2 -4 -2 -1 -0 -0 -1 -2 -2 -2 -0 -2 -0 -0 -1 -0 -0 -0 -0 -1 -1 -0 -0 -1 -2 -1 -1 -0 -0 -1 -2 -1 -1 -0 -2 -1 -1 -0 -2 -1 -1 -0 -1 -0 -3 -0 -1 -1 -1 -1 -3 -0 -1 -2 -0 -3 -2 -2 -1 -2 -2 -1 -4 -2 -1 -4 -0 -1 -3 -3 -4 -1 -1 -3 -2 -2 -5 -9 -2 -5 -11 -15 -9 -8 -12 -8 -15 -13 -20 -15 -17 -15 -12 -12 -8 -11 -8 -9 -14 -6 -4 -11 -4 -7 -6 -5 -8 -8 -5 -7 -5 -11 -14 -14 -13 -33 -37 -38 -54 -51 -72 -88 -82 -123 -124 -154 -156 -180 -219 -223 -222 -194 -204 -217 -228 -190 -150 -165 -129 -107 -95 -75 -70 -57 -43 -24 -27 -21 -12 -18 -8 -12 -5 -9 -4 -5 -5 -0 -2 -0 -2 -0 -3 -0 -2 -1 -2 -0 -2 -0 -1 -0 -4 -2 -1 -1 -0 -1 -1 -1 -1 -0 -2 -0 -0 -0 -1 -0 -2 -1 -1 -2 -3 -0 -0 -0 -1 -3 -1 -1 -0 -2 -0 -1 -2 -0 -2 -2 -3 -3 -1 -1 -0 -2 -1 -4 -3 -2 -5 -0 -3 -2 -3 -4 -2 -1 -3 -4 -6 -6 -5 -11 -10 -7 -17 -16 -13 -20 -30 -33 -30 -30 -50 -55 -57 -52 -57 -63 -66 -81 -71 -66 -70 -61 -51 -64 -47 -39 -28 -24 -20 -12 -12 -11 -6 -3 -8 -7 -4 -5 -3 -2 -9 -7 -6 -11 -13 -12 -17 -20 -34 -44 -53 -51 -42 -72 -74 -77 -89 -104 -103 -114 -122 -93 -93 -89 -81 -61 -63 -54 -42 -39 -36 -25 -16 -5 -13 -12 -8 -6 -6 -5 -3 -2 -3 -1 -4 -3 -0 -1 -2 -0 -3 -0 -3 -2 -4 -6 -4 -8 -5 -4 -2 -6 -1 -0 -2 -0 -1 -1 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -1 -0 -1 -1 -0 -1 -0 -2 -1 -2 -0 -2 -1 -2 -1 -2 -0 -2 -2 -0 -0 -1 -0 -1 -3 -2 -2 -1 -4 -5 -4 -4 -5 -1 -2 -6 -7 -13 -6 -11 -13 -27 -20 -34 -37 -54 -63 -67 -70 -85 -80 -91 -108 -104 -105 -93 -83 -86 -67 -62 -40 -50 -45 -22 -22 -12 -11 -11 -7 -8 -3 -4 -1 -1 -5 -2 -2 -4 -2 -2 -2 -2 -5 -3 -5 -7 -4 -4 -5 -8 -13 -12 -9 -13 -3 -3 -1 -1 -2 -3 -1 -0 -0 -0 -1 -0 -0 -1 -1 -1 -0 -0 -0 -0 -0 -1 -1 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -1 -0 -0 -0 -0 -0 -2 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -1 -0 -0 -0 -1 -1 -0 -0 -0 -0 -0 -0 -0 -0 -0 -1 -0 -0 -0 -0 -0 -0 -1 -0 -0 -1 -0 -0 -0 -0 -1 -0 -0 -0 -2 -0 -0 -0 -1 -0 -0 -0 -0 -0 -0 -0 -0 -1 -0 -1 -0 -0 -0 -0 -0 -0 -0 -1 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -1 -0 -0 -0 -0 -0 -0 -0 -0 -0 -1 -0 -1 -0 -0 -0 -0 -0 -0 -2 -0 -0 -0 -1 -0 -0 -0 -0 -0 -0 -0 -1 -1 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -1 -0 -2 -0 -0 -0 -0 -0 -1 -0 -0 -1 -0 -0 -2 -4 -0 -0 -1 -1 -0 -1 -1 -0 -0 -1 -1 -1 -0 -0 -1 -0 -0 -1 -0 -2 -1 -0 -0 -0 -0 -0 -1 -1 -0 -0 -1 -1 -0 -0 -2 -2 -0 -0 -0 -0 -1 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -1 -0 -0 -0 -0 -0 -1 -0 -1 -0 -0 -1 -1 -1 -0 -0 -0 -0 -1 -0 -0 -0 -0 -1 -2 -0 -1 -0 -0 -2 -0 -0 -0 -0 -1 -2 -0 -0 -1 -0 -0 -0 -3 -0 -1 -0 -0 -0 -0 -1 -0 -1 -0 -0 -0 -0 -2 -1 -1 -2 -0 -1 -1 -0 -4 -1 -4 -4 -3 -3 -6 -4 -10 -9 -12 -17 -18 -21 -26 -43 -41 -51 -54 -61 -79 -61 -79 -92 -106 -94 -83 -82 -62 -55 -61 -33 -40 -27 -22 -27 -13 -15 -8 -9 -9 -10 -14 -12 -4 -9 -14 -18 -14 -22 -23 -37 -22 -35 -44 -45 -44 -52 -36 -31 -25 -15 -6 -4 -3 -2 -3 -3 -1 -2 -2 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 diff --git a/Temp/Result-1.txt b/Temp/Result-1.txt deleted file mode 100644 index d6231b2..0000000 --- a/Temp/Result-1.txt +++ /dev/null @@ -1,7 +0,0 @@ -MeV -0.004470834125804696 -9.249101394161946e-06 --0.002398537978989701 -0.012288466939492823 -6 -2 \ No newline at end of file diff --git a/Temp/Result1.txt b/Temp/Result1.txt deleted file mode 100644 index e745712..0000000 --- a/Temp/Result1.txt +++ /dev/null @@ -1,8 +0,0 @@ -733.608 -801.616 -786.631 -816.990 -824.995 -792.7679915976365 -36.19766899670928 -0 \ No newline at end of file diff --git a/Data/Ag_Calibration.mca b/XRA/Data/Ag_Calibration.mca similarity index 100% rename from Data/Ag_Calibration.mca rename to XRA/Data/Ag_Calibration.mca diff --git a/Data/Ba_Calibration.mca b/XRA/Data/Ba_Calibration.mca similarity index 100% rename from Data/Ba_Calibration.mca rename to XRA/Data/Ba_Calibration.mca diff --git a/Data/Be_Calibration.mca b/XRA/Data/Be_Calibration.mca similarity index 100% rename from Data/Be_Calibration.mca rename to XRA/Data/Be_Calibration.mca diff --git a/XRA/Data/Combined_bkg_Internship.txt b/XRA/Data/Combined_bkg_Internship.txt new file mode 100644 index 0000000..9fb117b --- /dev/null +++ b/XRA/Data/Combined_bkg_Internship.txt @@ -0,0 +1,2057 @@ +#Edited by Afonso Vicente + + + + + + +LIVE_TIME - 397390.21308899997 +0.0 +0.0 +0.0 +0.0 +0.0 +0.0 +0.0 +0.0 +0.0 +0.0 +0.0 +0.0 +261.0 +164.0 +87.0 +42.0 +18.0 +15.0 +10.0 +16.0 +11.0 +12.0 +14.0 +7.0 +8.0 +11.0 +11.0 +9.0 +11.0 +10.0 +12.0 +12.0 +8.0 +7.0 +12.0 +8.0 +5.0 +12.0 +7.0 +9.0 +13.0 +5.0 +6.0 +8.0 +10.0 +8.0 +4.0 +8.0 +10.0 +10.0 +5.0 +9.0 +6.0 +8.0 +8.0 +8.0 +9.0 +8.0 +12.0 +9.0 +8.0 +11.0 +10.0 +5.0 +10.0 +8.0 +7.0 +12.0 +11.0 +13.0 +5.0 +5.0 +5.0 +5.0 +9.0 +11.0 +8.0 +5.0 +7.0 +7.0 +2.0 +6.0 +3.0 +10.0 +4.0 +9.0 +5.0 +6.0 +6.0 +4.0 +8.0 +6.0 +10.0 +8.0 +3.0 +8.0 +8.0 +11.0 +13.0 +7.0 +6.0 +8.0 +10.0 +11.0 +8.0 +9.0 +8.0 +11.0 +5.0 +2.0 +6.0 +6.0 +8.0 +8.0 +4.0 +10.0 +4.0 +3.0 +10.0 +4.0 +5.0 +10.0 +7.0 +8.0 +10.0 +7.0 +3.0 +5.0 +5.0 +3.0 +8.0 +4.0 +10.0 +5.0 +7.0 +3.0 +3.0 +4.0 +6.0 +5.0 +4.0 +11.0 +1.0 +9.0 +7.0 +5.0 +4.0 +6.0 +8.0 +10.0 +4.0 +6.0 +8.0 +2.0 +5.0 +4.0 +7.0 +6.0 +7.0 +6.0 +7.0 +10.0 +5.0 +3.0 +4.0 +4.0 +2.0 +9.0 +4.0 +6.0 +12.0 +7.0 +6.0 +8.0 +8.0 +2.0 +4.0 +9.0 +5.0 +4.0 +6.0 +11.0 +5.0 +3.0 +5.0 +6.0 +5.0 +6.0 +3.0 +7.0 +10.0 +2.0 +6.0 +5.0 +8.0 +6.0 +7.0 +4.0 +4.0 +8.0 +5.0 +7.0 +10.0 +5.0 +4.0 +1.0 +6.0 +4.0 +6.0 +6.0 +7.0 +7.0 +3.0 +3.0 +2.0 +9.0 +3.0 +7.0 +4.0 +6.0 +6.0 +2.0 +5.0 +4.0 +6.0 +4.0 +4.0 +9.0 +4.0 +5.0 +3.0 +9.0 +6.0 +7.0 +5.0 +7.0 +7.0 +6.0 +6.0 +14.0 +5.0 +11.0 +2.0 +3.0 +6.0 +7.0 +5.0 +10.0 +4.0 +10.0 +6.0 +5.0 +7.0 +7.0 +6.0 +6.0 +3.0 +6.0 +2.0 +1.0 +9.0 +7.0 +5.0 +4.0 +7.0 +8.0 +4.0 +6.0 +8.0 +8.0 +5.0 +5.0 +3.0 +10.0 +2.0 +4.0 +5.0 +7.0 +1.0 +4.0 +9.0 +8.0 +6.0 +5.0 +6.0 +5.0 +7.0 +4.0 +7.0 +7.0 +10.0 +1.0 +4.0 +4.0 +5.0 +5.0 +9.0 +2.0 +3.0 +4.0 +8.0 +3.0 +6.0 +6.0 +5.0 +6.0 +1.0 +4.0 +6.0 +4.0 +5.0 +3.0 +6.0 +6.0 +9.0 +4.0 +6.0 +6.0 +9.0 +2.0 +4.0 +6.0 +3.0 +2.0 +4.0 +1.0 +2.0 +10.0 +8.0 +6.0 +8.0 +2.0 +6.0 +8.0 +1.0 +3.0 +9.0 +1.0 +9.0 +14.0 +7.0 +5.0 +8.0 +7.0 +8.0 +10.0 +7.0 +9.0 +6.0 +15.0 +9.0 +8.0 +2.0 +7.0 +5.0 +6.0 +5.0 +4.0 +11.0 +4.0 +11.0 +5.0 +2.0 +3.0 +4.0 +5.0 +7.0 +5.0 +6.0 +4.0 +3.0 +7.0 +2.0 +5.0 +5.0 +7.0 +4.0 +3.0 +7.0 +8.0 +4.0 +7.0 +3.0 +5.0 +4.0 +5.0 +5.0 +3.0 +2.0 +4.0 +5.0 +6.0 +6.0 +5.0 +4.0 +4.0 +4.0 +5.0 +6.0 +8.0 +2.0 +6.0 +12.0 +8.0 +5.0 +8.0 +12.0 +6.0 +4.0 +10.0 +13.0 +6.0 +3.0 +7.0 +3.0 +4.0 +7.0 +13.0 +9.0 +9.0 +9.0 +7.0 +6.0 +4.0 +4.0 +3.0 +10.0 +12.0 +5.0 +3.0 +7.0 +6.0 +4.0 +3.0 +7.0 +2.0 +5.0 +6.0 +6.0 +6.0 +6.0 +6.0 +3.0 +5.0 +4.0 +8.0 +5.0 +8.0 +1.0 +5.0 +3.0 +5.0 +7.0 +2.0 +1.0 +2.0 +4.0 +4.0 +4.0 +4.0 +2.0 +5.0 +2.0 +1.0 +5.0 +4.0 +6.0 +4.0 +4.0 +6.0 +7.0 +5.0 +4.0 +8.0 +3.0 +4.0 +4.0 +6.0 +6.0 +2.0 +2.0 +2.0 +5.0 +5.0 +5.0 +2.0 +5.0 +6.0 +6.0 +3.0 +4.0 +6.0 +7.0 +4.0 +7.0 +0.0 +5.0 +2.0 +3.0 +5.0 +4.0 +4.0 +5.0 +6.0 +4.0 +8.0 +13.0 +9.0 +9.0 +7.0 +12.0 +8.0 +5.0 +5.0 +8.0 +5.0 +5.0 +4.0 +5.0 +4.0 +5.0 +4.0 +7.0 +12.0 +5.0 +9.0 +3.0 +4.0 +2.0 +5.0 +3.0 +3.0 +5.0 +4.0 +5.0 +7.0 +3.0 +2.0 +4.0 +4.0 +5.0 +8.0 +7.0 +7.0 +6.0 +8.0 +3.0 +4.0 +1.0 +3.0 +7.0 +3.0 +2.0 +6.0 +5.0 +5.0 +1.0 +1.0 +6.0 +2.0 +3.0 +7.0 +5.0 +1.0 +5.0 +5.0 +2.0 +2.0 +4.0 +2.0 +7.0 +4.0 +3.0 +2.0 +3.0 +4.0 +3.0 +4.0 +0.0 +5.0 +4.0 +2.0 +3.0 +9.0 +3.0 +3.0 +3.0 +3.0 +3.0 +1.0 +3.0 +3.0 +2.0 +7.0 +4.0 +3.0 +1.0 +1.0 +4.0 +5.0 +4.0 +5.0 +4.0 +0.0 +3.0 +4.0 +4.0 +1.0 +5.0 +4.0 +6.0 +1.0 +4.0 +4.0 +2.0 +0.0 +3.0 +8.0 +3.0 +2.0 +3.0 +6.0 +2.0 +2.0 +1.0 +5.0 +3.0 +4.0 +1.0 +3.0 +3.0 +3.0 +3.0 +2.0 +4.0 +4.0 +1.0 +5.0 +2.0 +2.0 +5.0 +3.0 +2.0 +3.0 +3.0 +6.0 +2.0 +3.0 +3.0 +2.0 +4.0 +1.0 +6.0 +2.0 +3.0 +1.0 +8.0 +2.0 +4.0 +3.0 +6.0 +5.0 +6.0 +3.0 +3.0 +3.0 +1.0 +2.0 +3.0 +3.0 +2.0 +3.0 +3.0 +5.0 +4.0 +5.0 +5.0 +3.0 +1.0 +7.0 +2.0 +1.0 +2.0 +3.0 +3.0 +3.0 +1.0 +2.0 +1.0 +3.0 +4.0 +2.0 +2.0 +3.0 +3.0 +1.0 +2.0 +1.0 +3.0 +4.0 +4.0 +1.0 +1.0 +4.0 +4.0 +3.0 +1.0 +3.0 +3.0 +2.0 +4.0 +2.0 +4.0 +3.0 +4.0 +1.0 +3.0 +3.0 +5.0 +4.0 +3.0 +5.0 +2.0 +1.0 +3.0 +1.0 +2.0 +2.0 +2.0 +5.0 +2.0 +4.0 +0.0 +2.0 +2.0 +3.0 +1.0 +7.0 +3.0 +4.0 +2.0 +1.0 +5.0 +3.0 +5.0 +1.0 +2.0 +3.0 +4.0 +3.0 +1.0 +0.0 +4.0 +1.0 +2.0 +3.0 +2.0 +3.0 +2.0 +4.0 +0.0 +4.0 +8.0 +2.0 +2.0 +3.0 +2.0 +3.0 +2.0 +2.0 +1.0 +6.0 +1.0 +4.0 +5.0 +1.0 +2.0 +3.0 +0.0 +4.0 +5.0 +4.0 +0.0 +1.0 +6.0 +3.0 +6.0 +4.0 +0.0 +3.0 +3.0 +2.0 +5.0 +1.0 +4.0 +1.0 +3.0 +3.0 +2.0 +1.0 +3.0 +2.0 +0.0 +1.0 +7.0 +2.0 +2.0 +6.0 +3.0 +4.0 +4.0 +2.0 +5.0 +2.0 +4.0 +3.0 +5.0 +4.0 +0.0 +3.0 +2.0 +0.0 +1.0 +5.0 +4.0 +3.0 +2.0 +1.0 +1.0 +0.0 +2.0 +2.0 +1.0 +5.0 +2.0 +1.0 +0.0 +1.0 +5.0 +1.0 +4.0 +4.0 +0.0 +0.0 +1.0 +1.0 +1.0 +2.0 +3.0 +1.0 +2.0 +1.0 +3.0 +1.0 +0.0 +6.0 +2.0 +3.0 +2.0 +1.0 +2.0 +3.0 +4.0 +2.0 +4.0 +3.0 +2.0 +5.0 +4.0 +6.0 +4.0 +3.0 +3.0 +2.0 +1.0 +2.0 +3.0 +2.0 +2.0 +5.0 +3.0 +1.0 +5.0 +4.0 +1.0 +3.0 +2.0 +4.0 +4.0 +7.0 +2.0 +5.0 +4.0 +4.0 +4.0 +2.0 +1.0 +2.0 +4.0 +1.0 +2.0 +2.0 +3.0 +1.0 +2.0 +2.0 +2.0 +4.0 +3.0 +1.0 +4.0 +3.0 +1.0 +3.0 +1.0 +2.0 +4.0 +1.0 +5.0 +3.0 +5.0 +3.0 +2.0 +1.0 +4.0 +4.0 +1.0 +3.0 +3.0 +1.0 +5.0 +1.0 +4.0 +0.0 +4.0 +1.0 +1.0 +1.0 +3.0 +3.0 +2.0 +0.0 +5.0 +2.0 +0.0 +5.0 +1.0 +3.0 +1.0 +5.0 +1.0 +2.0 +4.0 +2.0 +0.0 +4.0 +4.0 +5.0 +5.0 +1.0 +2.0 +2.0 +3.0 +1.0 +3.0 +2.0 +2.0 +4.0 +3.0 +3.0 +5.0 +3.0 +3.0 +3.0 +6.0 +4.0 +3.0 +3.0 +6.0 +3.0 +2.0 +1.0 +1.0 +1.0 +3.0 +4.0 +2.0 +4.0 +1.0 +3.0 +2.0 +3.0 +1.0 +2.0 +2.0 +1.0 +4.0 +1.0 +2.0 +3.0 +1.0 +3.0 +2.0 +0.0 +2.0 +1.0 +2.0 +6.0 +1.0 +4.0 +3.0 +3.0 +6.0 +4.0 +1.0 +3.0 +4.0 +0.0 +1.0 +2.0 +2.0 +1.0 +3.0 +1.0 +3.0 +5.0 +4.0 +1.0 +2.0 +3.0 +3.0 +5.0 +2.0 +3.0 +4.0 +2.0 +5.0 +2.0 +2.0 +2.0 +1.0 +2.0 +2.0 +1.0 +2.0 +4.0 +3.0 +1.0 +0.0 +2.0 +3.0 +1.0 +3.0 +2.0 +1.0 +0.0 +1.0 +3.0 +1.0 +1.0 +1.0 +3.0 +2.0 +1.0 +2.0 +1.0 +3.0 +2.0 +4.0 +2.0 +2.0 +0.0 +3.0 +0.0 +1.0 +3.0 +4.0 +4.0 +5.0 +4.0 +0.0 +2.0 +2.0 +3.0 +1.0 +3.0 +3.0 +0.0 +6.0 +1.0 +3.0 +2.0 +3.0 +2.0 +2.0 +3.0 +1.0 +3.0 +5.0 +0.0 +0.0 +2.0 +2.0 +2.0 +3.0 +2.0 +3.0 +3.0 +1.0 +4.0 +4.0 +4.0 +1.0 +4.0 +0.0 +1.0 +1.0 +3.0 +0.0 +3.0 +2.0 +5.0 +3.0 +2.0 +2.0 +2.0 +3.0 +0.0 +3.0 +4.0 +2.0 +3.0 +3.0 +0.0 +0.0 +2.0 +3.0 +2.0 +0.0 +5.0 +2.0 +1.0 +2.0 +2.0 +2.0 +2.0 +0.0 +3.0 +2.0 +1.0 +1.0 +1.0 +3.0 +4.0 +0.0 +1.0 +3.0 +3.0 +2.0 +2.0 +1.0 +1.0 +1.0 +3.0 +2.0 +2.0 +3.0 +2.0 +0.0 +1.0 +1.0 +5.0 +2.0 +2.0 +3.0 +1.0 +2.0 +1.0 +1.0 +3.0 +4.0 +2.0 +2.0 +3.0 +1.0 +1.0 +1.0 +4.0 +2.0 +1.0 +0.0 +1.0 +2.0 +2.0 +6.0 +3.0 +2.0 +2.0 +2.0 +4.0 +3.0 +4.0 +1.0 +1.0 +3.0 +2.0 +5.0 +2.0 +1.0 +4.0 +6.0 +2.0 +1.0 +3.0 +3.0 +1.0 +2.0 +5.0 +1.0 +3.0 +2.0 +0.0 +1.0 +4.0 +1.0 +0.0 +5.0 +1.0 +2.0 +0.0 +0.0 +2.0 +3.0 +0.0 +3.0 +3.0 +3.0 +2.0 +3.0 +3.0 +0.0 +2.0 +2.0 +4.0 +2.0 +3.0 +1.0 +2.0 +4.0 +1.0 +2.0 +1.0 +4.0 +1.0 +2.0 +4.0 +1.0 +0.0 +2.0 +1.0 +0.0 +0.0 +0.0 +2.0 +2.0 +0.0 +2.0 +1.0 +0.0 +1.0 +0.0 +2.0 +6.0 +2.0 +1.0 +3.0 +4.0 +1.0 +0.0 +3.0 +1.0 +1.0 +0.0 +4.0 +6.0 +1.0 +3.0 +2.0 +1.0 +3.0 +0.0 +2.0 +3.0 +1.0 +5.0 +7.0 +2.0 +0.0 +0.0 +3.0 +0.0 +4.0 +0.0 +3.0 +2.0 +3.0 +2.0 +1.0 +4.0 +1.0 +4.0 +3.0 +1.0 +4.0 +1.0 +2.0 +1.0 +4.0 +2.0 +1.0 +0.0 +2.0 +0.0 +3.0 +3.0 +3.0 +0.0 +0.0 +1.0 +3.0 +1.0 +0.0 +2.0 +4.0 +2.0 +1.0 +5.0 +0.0 +0.0 +2.0 +3.0 +2.0 +1.0 +3.0 +2.0 +1.0 +1.0 +2.0 +1.0 +1.0 +5.0 +1.0 +1.0 +5.0 +5.0 +2.0 +0.0 +4.0 +2.0 +0.0 +1.0 +4.0 +2.0 +5.0 +0.0 +2.0 +3.0 +4.0 +1.0 +2.0 +1.0 +2.0 +0.0 +0.0 +5.0 +2.0 +0.0 +2.0 +4.0 +3.0 +2.0 +2.0 +2.0 +4.0 +0.0 +2.0 +1.0 +0.0 +2.0 +2.0 +1.0 +2.0 +0.0 +3.0 +1.0 +0.0 +1.0 +3.0 +0.0 +1.0 +2.0 +2.0 +0.0 +2.0 +0.0 +2.0 +3.0 +2.0 +0.0 +5.0 +0.0 +0.0 +1.0 +4.0 +3.0 +1.0 +1.0 +2.0 +2.0 +1.0 +0.0 +0.0 +4.0 +4.0 +2.0 +2.0 +3.0 +4.0 +2.0 +1.0 +2.0 +1.0 +0.0 +2.0 +4.0 +1.0 +2.0 +2.0 +0.0 +4.0 +0.0 +1.0 +2.0 +1.0 +3.0 +1.0 +2.0 +2.0 +1.0 +3.0 +0.0 +1.0 +2.0 +0.0 +0.0 +2.0 +3.0 +1.0 +1.0 +0.0 +1.0 +2.0 +0.0 +5.0 +3.0 +2.0 +4.0 +2.0 +3.0 +3.0 +3.0 +3.0 +2.0 +2.0 +1.0 +1.0 +2.0 +0.0 +2.0 +3.0 +2.0 +4.0 +4.0 +4.0 +1.0 +2.0 +1.0 +1.0 +3.0 +4.0 +3.0 +1.0 +6.0 +2.0 +1.0 +1.0 +3.0 +3.0 +4.0 +1.0 +3.0 +2.0 +1.0 +2.0 +0.0 +3.0 +0.0 +1.0 +1.0 +0.0 +4.0 +2.0 +1.0 +2.0 +3.0 +2.0 +3.0 +0.0 +1.0 +3.0 +4.0 +1.0 +3.0 +2.0 +4.0 +0.0 +3.0 +0.0 +0.0 +2.0 +1.0 +2.0 +1.0 +4.0 +1.0 +1.0 +2.0 +2.0 +1.0 +2.0 +0.0 +3.0 +1.0 +3.0 +2.0 +2.0 +2.0 +0.0 +2.0 +4.0 +1.0 +2.0 +2.0 +1.0 +2.0 +3.0 +0.0 +1.0 +1.0 +3.0 +1.0 +0.0 +0.0 +2.0 +3.0 +2.0 +1.0 +3.0 +5.0 +1.0 +1.0 +2.0 +0.0 +1.0 +0.0 +3.0 +0.0 +1.0 +1.0 +1.0 +1.0 +0.0 +2.0 +2.0 +4.0 +2.0 +3.0 +0.0 +1.0 +3.0 +1.0 +1.0 +1.0 +2.0 +0.0 +0.0 +4.0 +3.0 +4.0 +3.0 +4.0 +4.0 +2.0 +1.0 +2.0 +4.0 +2.0 +2.0 +3.0 +4.0 +4.0 +2.0 +0.0 +1.0 +1.0 +1.0 +2.0 +3.0 +3.0 +0.0 +5.0 +2.0 +1.0 +1.0 +4.0 +2.0 +1.0 +1.0 +0.0 +3.0 +3.0 +2.0 +0.0 +0.0 +3.0 +1.0 +3.0 +1.0 +3.0 +3.0 +3.0 +1.0 +2.0 +4.0 +5.0 +1.0 +2.0 +0.0 +1.0 +1.0 +0.0 +1.0 +0.0 +2.0 +1.0 +0.0 +3.0 +1.0 +2.0 +3.0 +1.0 +3.0 +0.0 +5.0 +0.0 +1.0 +2.0 +0.0 +4.0 +1.0 +1.0 +2.0 +4.0 +4.0 +3.0 +1.0 +2.0 +1.0 +1.0 +2.0 +2.0 +0.0 +0.0 +0.0 +0.0 +0.0 +2.0 +3.0 +3.0 +0.0 +2.0 +2.0 +1.0 +1.0 +2.0 +2.0 +3.0 +2.0 +1.0 +2.0 +0.0 +1.0 +1.0 +1.0 +1.0 +3.0 +2.0 +1.0 +4.0 +2.0 +1.0 +1.0 +1.0 +2.0 +3.0 +4.0 +1.0 +2.0 +0.0 +1.0 +2.0 +3.0 +2.0 +1.0 +0.0 +1.0 +2.0 +2.0 +4.0 +1.0 +1.0 +2.0 +2.0 +4.0 +1.0 +1.0 +1.0 +3.0 +0.0 +2.0 +1.0 +0.0 +2.0 +1.0 +3.0 +0.0 +3.0 +0.0 +2.0 +0.0 +4.0 +1.0 +1.0 +0.0 +2.0 +0.0 +3.0 +2.0 +2.0 +2.0 +2.0 +0.0 +2.0 +2.0 +0.0 +1.0 +0.0 +1.0 +2.0 +2.0 +1.0 +6.0 +3.0 +1.0 +1.0 +3.0 +0.0 +4.0 +1.0 +3.0 +3.0 +0.0 +1.0 +2.0 +2.0 +2.0 +2.0 +2.0 +0.0 +4.0 +4.0 +3.0 +1.0 +2.0 +2.0 +2.0 +1.0 +1.0 +2.0 +1.0 +2.0 +4.0 +0.0 +3.0 +3.0 +4.0 +4.0 +5.0 +4.0 +3.0 +3.0 +3.0 +4.0 +2.0 +2.0 +3.0 +2.0 +2.0 +4.0 +3.0 +1.0 +0.0 +5.0 +3.0 +2.0 +1.0 +1.0 +2.0 +2.0 +2.0 +1.0 +4.0 +1.0 +2.0 +1.0 +2.0 +1.0 +2.0 +3.0 +3.0 +2.0 +1.0 +4.0 +2.0 +8.0 +5.0 +8.0 +9.0 +4.0 +6.0 +4.0 +4.0 +5.0 +4.0 +9.0 +3.0 +4.0 +6.0 +6.0 +6.0 +4.0 +7.0 +3.0 +4.0 +2.0 +5.0 +5.0 +1.0 +7.0 +1.0 +0.0 +7.0 +2.0 +3.0 +3.0 +1.0 +4.0 +0.0 +3.0 +0.0 +1.0 +1.0 +2.0 +3.0 +1.0 +2.0 +1.0 +3.0 +2.0 +1.0 +2.0 +3.0 +1.0 +0.0 +2.0 +3.0 +3.0 +1.0 +1.0 +4.0 +3.0 +2.0 +3.0 +2.0 +6.0 +3.0 +6.0 +5.0 +5.0 +5.0 +4.0 +4.0 +4.0 +5.0 +3.0 +6.0 +5.0 +1.0 +0.0 +2.0 +3.0 +2.0 +3.0 +4.0 +0.0 +3.0 +1.0 +2.0 +1.0 +1.0 +2.0 +3.0 +1.0 +3.0 +1.0 +1.0 +2.0 +3.0 +0.0 +3.0 +1.0 +1.0 +1.0 +1.0 +2.0 +1.0 +3.0 +3.0 +2.0 +1.0 +1.0 +4.0 +2.0 +0.0 +1.0 +2.0 +2.0 +1.0 +4.0 +2.0 +1.0 +3.0 +1.0 +1.0 +4.0 +0.0 +4.0 +5.0 +2.0 +0.0 +2.0 +1.0 +2.0 +2.0 +2.0 +2.0 +2.0 +3.0 +1.0 +3.0 +3.0 +2.0 +2.0 +1.0 +3.0 +4.0 +1.0 +0.0 +3.0 +4.0 +4.0 +3.0 +3.0 +3.0 +2.0 +0.0 +2.0 +1.0 +1.0 +3.0 +1.0 +0.0 +0.0 +0.0 +4.0 +2.0 +2.0 +2.0 +3.0 +2.0 +3.0 +0.0 +4.0 +1.0 +3.0 +4.0 +1.0 +2.0 +3.0 +1.0 +5.0 +1.0 +1.0 +5.0 +3.0 +3.0 +0.0 +0.0 +1.0 +1.0 +0.0 +0.0 +1.0 +2.0 +1.0 +0.0 +0.0 +1.0 +2.0 +1.0 +1.0 +2.0 +1.0 +4.0 +4.0 +1.0 +0.0 +0.0 +<> diff --git a/Data/Film_Sn_2h_17Jul_CuSource.mca b/XRA/Data/Film_Sn_2h_17Jul_CuSource.mca similarity index 100% rename from Data/Film_Sn_2h_17Jul_CuSource.mca rename to XRA/Data/Film_Sn_2h_17Jul_CuSource.mca diff --git a/Data/Fundo_acqTest_1hour_01.mca b/XRA/Data/Fundo_acqTest_1hour_01.mca similarity index 100% rename from Data/Fundo_acqTest_1hour_01.mca rename to XRA/Data/Fundo_acqTest_1hour_01.mca diff --git a/Data/Mo_Calibration.mca b/XRA/Data/Mo_Calibration.mca similarity index 100% rename from Data/Mo_Calibration.mca rename to XRA/Data/Mo_Calibration.mca diff --git a/Data/NoFilm_2h_17Jul_CuSource.mca b/XRA/Data/NoFilm_2h_17Jul_CuSource.mca similarity index 100% rename from Data/NoFilm_2h_17Jul_CuSource.mca rename to XRA/Data/NoFilm_2h_17Jul_CuSource.mca diff --git a/Data/NoFilm_for_C12_4h_2.mca b/XRA/Data/NoFilm_for_C12_4h_2.mca similarity index 100% rename from Data/NoFilm_for_C12_4h_2.mca rename to XRA/Data/NoFilm_for_C12_4h_2.mca diff --git a/Data/NoFilm_overNight_2h_17Jul_1(Mo).mca b/XRA/Data/NoFilm_overNight_2h_17Jul_1(Mo).mca similarity index 100% rename from Data/NoFilm_overNight_2h_17Jul_1(Mo).mca rename to XRA/Data/NoFilm_overNight_2h_17Jul_1(Mo).mca diff --git a/Data/Rb_Calibration (20 mins).mca b/XRA/Data/Rb_Calibration (20 mins).mca similarity index 100% rename from Data/Rb_Calibration (20 mins).mca rename to XRA/Data/Rb_Calibration (20 mins).mca diff --git a/Data/SampleC12_4h.mca b/XRA/Data/SampleC12_4h.mca similarity index 100% rename from Data/SampleC12_4h.mca rename to XRA/Data/SampleC12_4h.mca diff --git a/Data/Tb_Calibration.mca b/XRA/Data/Tb_Calibration.mca similarity index 100% rename from Data/Tb_Calibration.mca rename to XRA/Data/Tb_Calibration.mca diff --git a/XRA/GaussianFit.py b/XRA/GaussianFit.py index 48cb100..e2bfe6d 100644 --- a/XRA/GaussianFit.py +++ b/XRA/GaussianFit.py @@ -1,9 +1,10 @@ -from new import film_thickness +from new import film_thickness, uncertainty import numpy as np from sympy import sympify from scipy.optimize import curve_fit from matplotlib import pyplot as plt from math import erf, sqrt, pi +import csv def load_mca_data(filename): with open(filename, 'r', encoding='latin1') as file: @@ -19,8 +20,28 @@ def load_mca_data(filename): data.append(float(parts[0])) return data + +def get_measurement_time(filename): + + with open(filename, 'r', encoding='latin1') as file: + reader = csv.reader(file, delimiter="\n", skipinitialspace=True) + data = list(reader) + time_str = data[7][0] #8th line + time = float(time_str[time_str.find('- ') + 2:]) + return time + +time_source = get_measurement_time('Data/NoFilm_for_C12_4h_2.mca') +time_film = get_measurement_time('Data/SampleC12_4h.mca') +time_bkg = get_measurement_time('Data/Combined_bkg_Internship.txt') + +print(f"Measurement time (source): {time_source} s") +print(f"Measurement time (film): {time_film} s") +print(f"Measurement time (background): {time_bkg} s") + + source_data = load_mca_data('Data/NoFilm_for_C12_4h_2.mca') source_film_data = load_mca_data('Data/SampleC12_4h.mca') +bkg_data = load_mca_data('Data/Combined_bkg_Internship.txt') # Setting ROI and attenuation coefficient x1 = int(input("Enter the start channel: ")) # start channel @@ -30,6 +51,7 @@ def load_mca_data(filename): x_range = list(range(x1, x2 + 1)) y_source = source_data[x1:x2 + 1] y_film = source_film_data[x1:x2 + 1] +y_bkg = bkg_data[x1:x2 + 1] m = 0.030826941169 b = 0.092673711109335 @@ -49,6 +71,10 @@ def gaussian(x, A, x0, sigma, B): popt_film, _ = curve_fit(gaussian, x_range, y_film, p0=[max(y_film), x_range[np.argmax(y_film)], 1, 0]) A1, x0_1, sigma1, B1 = popt_film +# Fit background data +popt_bkg, _ = curve_fit(gaussian, x_range, y_bkg, p0=[max(y_bkg), x_range[np.argmax(y_bkg)], 1, 0]) +A2, x0_2, sigma2, B2 = popt_bkg + def gaussian_integral_erf(A, x0, sigma, B, x1, x2): erf_part = 0.5 * (erf((x2 - x0) / (sqrt(2) * sigma)) - erf((x1 - x0) / (sqrt(2) * sigma))) area_gaussian = A * sigma * sqrt(2 * pi) * erf_part @@ -58,17 +84,21 @@ def gaussian_integral_erf(A, x0, sigma, B, x1, x2): # Calculate Gaussian integrals I0 = gaussian_integral_erf(*popt_source, x1, x2) I = gaussian_integral_erf(*popt_film, x1, x2) +Ib = gaussian_integral_erf(*popt_bkg, x1, x2) ## Using the previous method I0_ = A0 * sigma0 I_ = A1 * sigma1 +Ib_ = A2 * sigma2 # Film thickness calculation -thickness = film_thickness(I, I0, mu) -thickness_ = film_thickness(I_, I0_, mu) ## previous method +thickness = film_thickness(I, I0, Ib, mu) +thickness_ = film_thickness(I_, I0_, Ib_, mu) ## previous method print(f"Film thickness: {round(thickness)} nm") print(f"Film thickness (prev method): {round(thickness_)} nm") - +uncertainty_value = uncertainty(I, I0, Ib, mu, time_source, time_film, time_bkg) +print(f"Uncertainty: {uncertainty_value:.2f}") +print(f"Full answer: {thickness:.2f} \u00B1 {uncertainty_value:.2f} nm") # Plot fits # Plot 1: Source (no film) diff --git a/XRA/PlotData.py b/XRA/PlotData.py index 5bcef0d..e95dd7d 100644 --- a/XRA/PlotData.py +++ b/XRA/PlotData.py @@ -45,9 +45,7 @@ def PlotData(File): ################################################## -PlotData('Data/Tb_Calibration.mca') - -#PlotData('Data/Film_Sn_2h_17Jul_CuSource.mca') +PlotData('Data/Combined_bkg_Internship.txt') #PlotData('Data/NoFilm_for_C12_4h_2.mca') diff --git a/XRA/__pycache__/new.cpython-38.pyc b/XRA/__pycache__/new.cpython-38.pyc new file mode 100644 index 0000000000000000000000000000000000000000..31d03c6b496c3cfee88a0340f5d9682bb88e61ea GIT binary patch literal 2222 zcmaJ?%Wm676rBetk&^ACh+4~V(y~F(hCpE@X@Rr*S2xyY>*_6?iLqxD?kPOE)@Lrv2hu8>KP__DC~qhXL0whoemu#o*E z^X)<$-$TD&SW!RCI@M7a4AOC2@cvt-38sJ7T8G0pYz32a+i&>y}^MVjuYj*2%>SAdi#19d-#;l+aGFg`}-~L$K!in zddK&7y*vG+7md^Yi_l+tM{xLD69c}~6*ygmDXv`{*;PRnn9xg8zxtf6`2dTlfMG&k zgMBX~3Wsi>(9%N~3h5MqP)IB6wJ;%`&%r%E#S`!@^+qmFMH6Au$|_5Q60g}S_KLp} z`%+0|y>yTV=Cl$V#g`f7!i=)bKKb@h5cS4UkcD28w$Z z6wD3u^d`&!*x7AN`RV*48|+jpvtPxLwNqw{fz20%Si7rTyzo{QJT_Q&#N@k6pw>1h z=X%3bFX?Yb< zr45Ph`LWA%odd(fb$*?DTz`mhk4`*m^ajOkiu7*`P@sIk(v2TuiG|2V&qTNoh89bIaWPXI9Cryt=}2o9s+XYl%~ir?tG2 zyLqii@=-bZEw32)Fj;US+pUKtDg0_7qcAavZh$J>Fo6zeWSL>X@KMM(IQHuoeCP&H z(@QWNm$)RU23Rw1_TqVE+V9vAjjHwm*&W$P~at4J)7?2-WY21%HvPjJ>;YaQ;$ zCIE1RzKzu$$=g|@oTj0dCI2VX_jFa+<+L2%(|UYqCq`aI|Hdof@-(tyC< z;FpwJs|>kk-Czwm7m(y`Ia>zAc?I*@`P@9otL6MEcm^?(dG8222sL4)S78b(J<=Jn z>=vzjOy(0Z9!ycs`f=DzhhyCf3)f5trou79J^V60#kP)3igT}Y_e=NHRebB?q!;Qe z08x`|yp&QJGlJDX3xI{bgB72*eW$Qd4Wo(qK=XsUs1%cch6uC$(lr-Z?QFzDHIBkf Sl3l~1Bb`O3;<&Xhoce!mPRZN= literal 0 HcmV?d00001 diff --git a/XRA/new.py b/XRA/new.py index 8599996..c73952d 100644 --- a/XRA/new.py +++ b/XRA/new.py @@ -53,14 +53,39 @@ def peakNet(x1, x2, values_list, background_data=None): return soma - -def film_thickness(I, I0, mu): - """ +""" +def film_thickness(I, I0, mu): + + Calculate film thickness using t = -1/mu * ln(I/I0) I: net peak area with film (source+film - background_data) I0: net peak area without film (source - background) mu: attenuation coefficient - """ + + if I <= 0 or I0 <= 0 or mu == 0: return float('nan') - return -1.0 / mu * np.log(I / I0) \ No newline at end of file + return -1.0 / mu * np.log(I / I0) + +""" +def film_thickness(I, I0, Ib, mu): + I_net = I - Ib + I0_net = I0 - Ib + + + if I_net <= 0 or I0_net <= 0 or mu == 0: + print("i am here") + return float('nan') + + return -1.0 / mu * np.log(I_net / I0_net) + +def uncertainty(I, I0, Ib, mu, time_source, time_film, time_bkg): + I_net = I - Ib + comp1 = Ib - I + comp2 = I0 - Ib + comp3 = I0 - I + + if I <= 0 or I0 <= 0 or mu == 0: + return float('nan') + + return 1 / mu *np.sqrt(((I0 / time_source)*comp1**2 + (I / time_film)*comp2**2 + (Ib / time_bkg)*comp3**2) / ((comp2**2)*(I_net**2))) \ No newline at end of file From 5bd89482449381ac63b842df5dde902d110a0318 Mon Sep 17 00:00:00 2001 From: aysuismailova Date: Mon, 28 Jul 2025 17:08:27 +0100 Subject: [PATCH 22/44] Uncertainty update --- ARC-TF.py | 39 +- Temp/Analysis3.txt | 5 - Temp/{Data3.txt => Data-1.txt} | 1547 ++++++++++++++-------------- Temp/Result3.txt | 8 - XRA/GaussianFit.py | 21 +- XRA/__pycache__/new.cpython-38.pyc | Bin 2222 -> 2280 bytes XRA/new.py | 28 +- 7 files changed, 831 insertions(+), 817 deletions(-) delete mode 100644 Temp/Analysis3.txt rename Temp/{Data3.txt => Data-1.txt} (83%) delete mode 100644 Temp/Result3.txt diff --git a/ARC-TF.py b/ARC-TF.py index aec8685..dcbdf42 100644 --- a/ARC-TF.py +++ b/ARC-TF.py @@ -229,16 +229,25 @@ def File_Reader(Document, Separator, Decimal, Upload): num = Current_Tab() # Open file and read its entire content - with open(Document, 'r') as OpenFile: - lines = OpenFile.read() + with open(Document, 'r', encoding='latin1') as OpenFile: + lines = OpenFile.read().splitlines() # Split the content by lines - lines = lines.splitlines() + #lines = lines.splitlines() # If needed, update GUI with the "measurement live-time" value from line 9 if Upload == 'Yes': TabList[num][1].Real_Time.set(lines[8] + ' s') + start = 12 + try: + end = next(i for i, line in enumerate(lines) if '<>' in line) + except StopIteration: + end = len(lines) # fallback if <> not found + + # Slice the lines to desired range + lines = lines[start:end] + # If it's a 2D file (e.g. table with multiple columns) if Separator != '0': Results = [[0] for _ in range(len(lines))] # Create a placeholder matrix @@ -404,6 +413,7 @@ def Final_Results(tracker): tab_manager.Mat_Result2.bind('', lambda e: tab_manager.mat_canvas.configure( scrollregion=tab_manager.mat_canvas.bbox('all'), width=e.width)) + return ############################################################################### @@ -1855,6 +1865,29 @@ def Save_Results(): '%.*f' % (int(thickness[-1]), float(thickness[j + 2])) + ') ' + units_list[index] + '\n\n') file.write('_______________________________________________________________\n\n') + + + # Loop through all tabs for XRA trials + for i in range(len(TabTracker)): + if TabList[i][1].TabType == 5: + file.write(f'XRA Trial {TabTracker[i]}\n\n') + + file.write('Detected Peaks and Regions of Interest (ROIs):\n\n') + + peaks = File_Reader(TabList[i][3], ',', 'Yes', 'No') # Analysis file + rois = File_Reader(TabList[i][6], ',', 'Yes', 'No') # ROIs file + + for j, peak in enumerate(peaks): + roi_info = rois[j] if j < len(rois) else ["N/A", "N/A"] + file.write( + f'Peak Energy: {peak[0]:.2f} keV\tCounts: {peak[1]:.1f}\t' + f'ROI: {roi_info[0]} - {roi_info[1]} keV\n' + ) + + file.write('\nThe sample analyzed was: ' + + TabList[i][1].SampleName.get() + '\n\n') + file.write('_______________________________________________________________\n\n') + return ############################################################################# diff --git a/Temp/Analysis3.txt b/Temp/Analysis3.txt deleted file mode 100644 index 197452c..0000000 --- a/Temp/Analysis3.txt +++ /dev/null @@ -1,5 +0,0 @@ -1022,401 -1138,122 -1179,198 -1298,170 -1680,175 diff --git a/Temp/Data3.txt b/Temp/Data-1.txt similarity index 83% rename from Temp/Data3.txt rename to Temp/Data-1.txt index 03b9700..a65ead7 100644 --- a/Temp/Data3.txt +++ b/Temp/Data-1.txt @@ -15,191 +15,156 @@ 0 0 0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -15 -261 -311 -292 -308 -289 -287 -297 -231 -206 -206 +28 +251 +330 +295 +273 +301 +280 +259 +291 +242 223 -196 -167 -164 -156 -131 -134 -113 -131 -86 +190 +219 +216 +188 +202 +162 +150 +137 122 -94 -94 +124 +107 +114 +97 +89 +105 75 -81 -70 -72 -76 -51 -43 -41 -36 -47 -34 -31 -34 +90 +73 +65 +78 +58 +49 +53 +64 +42 +45 +37 +32 31 -30 +35 +36 +16 +11 +23 25 +22 +18 18 -28 -19 -34 14 +15 +22 +13 +10 12 -17 -16 -20 -14 -7 -5 -14 -11 -5 -7 -4 10 10 11 -3 -8 +7 +7 6 4 -2 -6 +11 6 +7 2 -3 +7 +2 +7 +5 +1 4 +0 4 -7 +4 +5 2 -3 1 4 3 -2 -5 1 -0 2 -0 2 -1 -1 -1 -0 2 -1 0 2 2 2 -0 -1 1 1 -3 2 0 -2 +1 1 2 -0 +2 2 0 -1 2 +2 +1 0 +2 0 1 1 1 -1 0 -1 -1 -0 -1 2 0 -2 0 -2 0 1 0 0 -0 -2 1 -1 -2 0 +4 0 +1 0 0 -1 0 0 1 0 -0 +1 1 1 0 -0 -0 +1 0 0 0 1 0 -2 0 +1 0 0 1 0 0 +1 2 0 -0 -2 1 0 -1 -1 0 -1 -1 -1 +0 1 0 0 @@ -207,52 +172,37 @@ 0 0 0 -1 0 0 0 -1 -1 -1 0 -1 0 -1 -1 2 -1 0 0 +1 0 0 0 0 -1 -2 0 -1 2 0 0 -1 0 -2 +3 +0 +0 0 1 1 1 -0 -1 -0 1 -0 -0 -0 1 0 0 -1 -1 +2 +2 0 1 1 @@ -260,14 +210,17 @@ 1 0 0 -0 1 0 +2 0 +2 +2 0 +2 0 1 -2 +1 1 0 0 @@ -275,41 +228,60 @@ 1 0 0 +0 +0 +2 1 +2 +0 0 +4 0 0 0 +3 0 +2 0 1 1 +1 +0 0 0 -1 0 0 0 +1 +0 0 0 1 +1 0 0 +1 +1 0 0 0 0 -2 +1 +1 0 0 1 +3 2 -1 0 2 +0 1 1 +0 1 +0 +0 1 1 0 @@ -318,1068 +290,1123 @@ 0 0 0 -1 -0 3 2 2 -0 -1 1 -2 -2 -2 +0 1 +0 1 1 -0 1 0 -1 0 0 0 -1 2 -1 -0 -1 0 0 -2 0 0 1 -2 -0 0 0 -1 2 1 1 +1 0 0 0 1 -4 -0 -0 -2 0 2 -2 -1 0 1 +2 0 0 0 0 0 -2 -2 -0 -2 -2 -0 0 1 1 -1 0 -1 -1 -1 -1 -1 -2 -1 -2 -2 0 -1 -1 -1 0 +2 +1 3 0 0 +0 1 0 2 1 0 0 +1 +0 +0 0 0 0 1 +2 +0 +0 0 0 0 -2 0 +2 3 +0 +1 1 0 0 1 0 -3 -2 1 -2 0 0 +1 0 0 0 +1 0 -3 -0 -2 0 1 +2 +3 +3 0 2 1 0 1 1 -1 -1 0 0 0 -0 -2 -0 2 0 1 -1 -1 -1 -1 -1 -1 -0 -0 -2 -1 0 1 1 -3 -2 0 1 -1 +0 0 1 1 0 -3 +2 2 3 1 0 -1 0 2 1 2 0 -0 -0 2 +3 +0 1 +2 +3 1 1 -0 -0 1 1 3 -3 -0 -0 -1 2 0 -0 -0 1 0 1 1 1 -1 0 -1 2 -0 -0 -0 -0 2 -1 2 1 -1 -0 2 0 -1 -1 +2 3 -1 0 0 1 1 +1 2 0 -1 -3 0 1 2 +1 2 0 +1 2 0 2 -1 2 -3 -1 -0 2 +1 2 1 0 1 1 +1 +3 +1 0 0 +1 +1 +1 2 1 1 0 +0 1 0 +3 1 0 +0 2 1 -1 -1 2 -3 -0 0 2 -2 -1 0 2 -3 +1 +1 0 0 +1 +2 +1 0 +2 0 3 +2 1 1 -0 +2 +2 1 0 1 3 -1 -1 -0 3 -1 2 0 -2 +1 +0 +0 0 0 1 -1 -2 -3 0 2 0 -3 -0 1 1 1 +3 1 -2 -0 +1 +6 0 1 +3 1 2 -0 1 -2 1 0 -0 -1 3 0 +2 1 -0 1 -0 2 1 -3 -3 1 0 +2 3 +2 +2 1 -3 1 -3 -4 -2 -0 1 -0 2 +2 +4 3 -1 +2 0 0 -2 1 -2 1 0 1 -2 -2 1 -0 -0 -3 1 1 -0 +1 +2 3 +2 +4 +0 +1 3 1 -2 1 3 1 2 2 0 -2 -3 -2 -0 -3 -2 1 -0 -0 1 +0 2 3 2 1 -3 -5 -2 0 +2 0 +1 0 1 +0 2 0 +3 1 2 2 0 -2 -0 1 1 1 -3 -3 1 -4 0 2 2 1 +0 +0 2 -3 -1 +2 +4 +0 0 -1 0 1 1 +0 +0 2 1 -2 -2 -1 +4 +4 +0 1 2 +2 1 0 +1 0 2 +0 2 1 -2 +1 +0 1 2 -3 1 0 -2 0 -4 +2 1 0 -3 -1 -3 +0 1 -2 0 1 -2 +0 4 1 -4 +1 2 0 +4 1 2 1 1 +1 +1 +2 3 -3 +1 +0 2 +1 0 +4 +2 +2 2 0 3 3 1 -2 1 -2 1 -3 +0 +0 1 1 2 +1 +0 4 3 -3 1 0 0 +5 0 -1 -3 -2 -1 -1 -1 -3 -3 -3 +4 2 -1 -3 2 -3 -0 -3 +4 0 -3 +2 0 2 2 -1 0 -3 -3 1 +4 1 2 1 +1 +1 0 -2 -2 -2 0 -3 0 +1 +5 0 -3 1 1 -2 -0 -2 3 -2 -2 -0 +3 +4 0 1 1 +0 +0 1 -1 +2 +2 +2 0 2 1 -2 -4 1 -2 4 +2 0 1 2 +4 +2 2 -0 1 +0 3 -1 2 1 +2 +5 1 +3 +3 1 +2 +2 0 +2 +2 1 +2 +3 1 +2 1 +0 +2 2 2 0 1 -2 +0 +0 1 1 2 -2 1 1 +1 +6 +0 +2 +1 +3 5 3 +0 2 +3 +3 2 2 1 -4 +1 +0 +1 +3 1 1 +2 1 0 -6 -3 1 +1 +1 +2 +2 2 2 5 +1 +1 0 +1 +2 3 +2 1 2 1 -4 -0 2 -4 -3 -3 -0 2 -3 0 +1 +0 +1 +0 +1 2 3 -4 -5 2 2 -2 -4 -0 1 +2 4 1 +2 +0 +2 +5 +3 +2 3 +0 +0 1 0 1 1 -3 -5 2 +0 6 +2 5 +0 +1 +2 +0 +1 +1 +1 4 -3 -5 -3 -6 2 -3 4 -6 -8 3 -5 +3 +1 +1 4 -5 3 -7 -7 -6 +1 2 -9 -6 -11 -5 -12 -13 -13 -16 -17 -12 -19 -16 -18 -27 -17 -28 -30 -25 -20 -22 -24 -20 -16 -21 -19 -21 -21 -11 -17 -10 -10 -12 -12 -9 -8 -13 -15 -20 -27 -20 -31 -28 -40 -57 -62 -91 -95 -137 -163 -175 -181 -242 -284 -305 -316 -367 -385 -370 -382 -380 -401 -349 -349 -344 -262 -245 -239 -209 -187 -155 -116 -121 -71 -75 -49 -37 -36 -28 -16 -18 -12 -9 -8 +3 +3 6 +1 +3 +2 +1 5 -6 4 -7 -2 +0 +1 3 +2 0 +2 1 +0 2 -5 0 1 -3 +1 2 +1 +3 2 0 +1 +4 2 0 -4 +3 1 +3 +2 5 +1 +1 +4 +2 +1 +4 +4 7 +2 3 2 -6 2 +1 +3 +1 +5 2 +0 +2 +1 +0 +3 2 +4 2 2 1 2 -2 1 +3 +1 +4 +3 1 +3 +2 +3 2 1 4 -4 2 +1 +1 3 2 +0 +2 +6 3 +2 3 -1 -0 2 -4 +5 5 2 -8 +1 +1 +6 +5 +3 3 4 +1 +6 3 +2 1 -0 -5 +1 +4 5 -2 +1 5 +4 +3 +4 2 -5 +3 +7 +3 3 6 -5 +2 +1 +4 8 4 +2 +5 +3 +3 +4 +6 6 -13 -9 -7 8 -12 +16 17 -22 -19 -19 -32 -33 -28 -26 -46 -67 -73 -74 -67 -99 -79 -89 -117 -107 -114 -122 -116 -115 -102 -102 -111 -103 -83 -67 -67 -55 +21 44 -41 -23 -23 -16 -18 -15 -14 +46 +71 +90 +64 +64 +34 +19 +12 +9 +3 +4 +3 +4 +0 +4 +3 +3 +6 +4 +3 +7 +10 +6 +12 13 -8 -11 +7 +12 +9 +12 11 -16 -8 -16 -16 +19 +17 +17 +29 24 -22 -30 -41 -56 -52 -64 -84 -99 -98 -140 -138 -166 -157 -198 -170 -173 -173 -184 -163 -138 -137 -140 -112 -98 -71 -73 -49 -37 -41 33 -23 -11 -8 +78 +120 +215 +415 +623 +845 +1114 +1111 +1058 +891 +564 +344 +188 +95 +40 18 -8 +5 +1 4 +2 +1 +0 +2 +0 3 +0 +1 +0 +4 +4 +1 1 2 +4 +1 +7 +1 +1 1 +1 +0 +2 +2 4 +6 +0 +3 3 +2 0 +4 +3 +1 +4 +1 +1 +2 +4 +2 +1 2 2 3 -4 +3 1 -5 +2 +6 +1 +3 +4 1 2 +4 +3 1 -7 +3 +3 +3 1 +2 +4 +2 +5 +3 +2 +3 6 -13 +4 +3 +1 +3 +6 +7 +2 8 -11 +4 +7 6 -9 +3 +5 +6 +10 +6 +4 +7 +13 +13 +10 +15 +13 +22 16 -17 +23 +34 +36 +48 +58 +89 +111 +138 +194 +240 +283 +268 +312 +225 +156 +108 +77 +32 +22 8 +4 +4 +0 +2 +7 +3 2 3 4 -1 -0 -0 +3 +2 4 +3 +3 +3 +8 +6 2 +11 +6 +5 +12 +15 +20 +13 +29 +52 +86 +153 +247 +306 +392 +445 +454 +374 +316 +197 +124 +90 +43 +13 +3 +2 +3 +3 1 +0 +2 2 1 +3 +2 1 0 0 1 +2 +1 +1 +2 +2 +1 0 3 1 +0 +1 +1 4 0 0 -1 0 1 4 2 0 1 -0 -2 -2 -2 -0 1 2 -2 -2 1 2 -5 -4 1 3 -3 -5 +4 5 -2 -11 3 -9 -11 -10 -9 -31 -18 -26 -36 -37 -51 -82 -93 -103 -101 -118 -151 -150 -159 -163 -161 -170 -152 -165 -139 -144 -124 -140 -94 -76 -62 -55 -38 -28 -29 -21 -17 -13 -14 -7 -4 -7 -9 +1 +3 1 4 +3 1 5 1 -3 -2 -0 2 +3 +4 +3 0 -2 +3 +4 +4 +3 +5 4 +3 4 3 +5 +5 6 -1 +2 +4 +2 +6 +3 +7 +3 +4 +4 5 +7 +7 +4 +13 +7 +6 +9 +9 +11 +13 +11 9 -10 -8 14 -18 -6 +28 +24 +30 +34 +38 +56 +94 +103 +165 +212 +310 +351 +439 +428 +429 +346 +297 +223 +154 +89 +61 +37 +7 6 -4 2 -3 +0 +0 +0 +0 +0 +1 2 -3 +0 +0 +1 +0 1 +0 1 1 +2 +0 +0 0 0 0 0 1 -1 +0 +0 +0 1 1 0 +1 0 0 +1 0 0 0 0 +2 +1 +1 +1 +1 +1 +1 +1 0 0 2 0 0 0 +1 +1 +0 +1 +2 0 0 0 0 0 -2 0 1 0 +1 0 +2 0 0 0 @@ -1391,22 +1418,22 @@ 0 0 0 -1 0 1 0 -1 +0 0 1 0 0 -1 -1 +2 0 0 +1 0 0 1 +1 0 0 0 @@ -1414,80 +1441,84 @@ 1 0 0 +1 0 1 0 0 +1 0 0 0 -1 +3 0 -1 0 0 0 0 0 0 +2 0 0 -1 0 1 -2 0 +0 +0 +2 +2 +1 1 0 +1 +1 +1 0 0 1 0 0 0 -1 +0 +0 0 0 1 1 0 -1 0 0 0 0 0 -1 -3 +0 1 0 1 1 +1 +1 0 0 +1 +1 0 +1 0 1 -2 0 0 0 0 -1 0 1 0 -1 0 0 -1 -1 -1 0 -1 0 0 -2 0 0 0 @@ -1495,82 +1526,101 @@ 0 0 0 +3 +0 1 0 +0 +0 +0 1 0 0 +0 1 +0 1 0 +2 1 0 +4 +0 +0 1 1 1 0 +1 0 +2 0 +1 +1 +3 +1 +3 0 +3 0 0 1 1 1 +2 0 0 -1 2 +3 1 -0 -0 1 0 -1 0 0 +1 +4 0 0 0 2 -0 +2 +2 +2 1 +2 0 1 +0 2 -2 +0 +1 1 1 1 0 0 -0 -0 +1 +1 +1 0 1 0 0 -1 +0 0 1 2 2 +2 0 0 0 0 0 -3 -1 -1 -1 -1 -1 -1 0 0 0 -2 +1 0 1 0 @@ -1578,156 +1628,99 @@ 0 0 0 -1 -1 0 0 0 -1 +2 +2 0 1 -1 -0 -0 0 1 -0 2 -1 0 -1 +0 +0 1 1 1 0 0 0 -3 -2 1 0 -0 1 -1 -2 -0 -0 -2 -2 0 2 0 -0 -2 -1 1 1 0 0 -4 -1 +0 1 2 -2 -2 1 +4 1 -0 1 0 1 2 0 -5 -0 -1 -3 -0 +2 +2 +2 +4 3 -1 3 -1 -5 2 -1 4 2 -3 +2 +0 +5 +2 +2 +4 4 5 -3 -9 -9 -9 -12 -12 -20 -19 -29 -34 -46 -49 -73 -67 -96 -109 -115 -131 -142 -134 -165 -169 -175 -127 -118 -126 -115 -97 -78 -76 -62 -55 -37 -26 -21 -16 -11 -9 -7 2 -10 +6 +5 4 -9 -9 -9 +13 +13 11 -10 +19 15 -11 -17 -30 -37 +23 +23 36 -35 -52 -50 -51 -75 -70 -69 -51 -30 -11 -11 -7 -5 -7 +43 +78 +89 +156 +194 +201 +329 +354 +398 +354 +307 +253 +204 +152 +119 +89 +58 +24 9 -4 -6 -4 +3 +2 3 0 +3 1 0 0 @@ -2040,9 +2033,3 @@ 0 0 0 -0 -0 -0 -0 -0 -0 diff --git a/Temp/Result3.txt b/Temp/Result3.txt deleted file mode 100644 index 044f57f..0000000 --- a/Temp/Result3.txt +++ /dev/null @@ -1,8 +0,0 @@ -876.895 -932.298 -958.557 -920.987 -940.489 -925.8453619449938 -30.60157911400397 -0 \ No newline at end of file diff --git a/XRA/GaussianFit.py b/XRA/GaussianFit.py index e2bfe6d..35b62c8 100644 --- a/XRA/GaussianFit.py +++ b/XRA/GaussianFit.py @@ -6,6 +6,7 @@ from math import erf, sqrt, pi import csv + def load_mca_data(filename): with open(filename, 'r', encoding='latin1') as file: lines = file.readlines() @@ -30,6 +31,8 @@ def get_measurement_time(filename): time = float(time_str[time_str.find('- ') + 2:]) return time + + time_source = get_measurement_time('Data/NoFilm_for_C12_4h_2.mca') time_film = get_measurement_time('Data/SampleC12_4h.mca') time_bkg = get_measurement_time('Data/Combined_bkg_Internship.txt') @@ -82,21 +85,21 @@ def gaussian_integral_erf(A, x0, sigma, B, x1, x2): return area_gaussian + area_below # Calculate Gaussian integrals -I0 = gaussian_integral_erf(*popt_source, x1, x2) -I = gaussian_integral_erf(*popt_film, x1, x2) -Ib = gaussian_integral_erf(*popt_bkg, x1, x2) +N0 = gaussian_integral_erf(*popt_source, x1, x2) +N = gaussian_integral_erf(*popt_film, x1, x2) +Nb = gaussian_integral_erf(*popt_bkg, x1, x2) ## Using the previous method -I0_ = A0 * sigma0 -I_ = A1 * sigma1 -Ib_ = A2 * sigma2 +N0_ = A0 * sigma0 +N_ = A1 * sigma1 +Nb_ = A2 * sigma2 # Film thickness calculation -thickness = film_thickness(I, I0, Ib, mu) -thickness_ = film_thickness(I_, I0_, Ib_, mu) ## previous method +thickness = film_thickness(N, N0, Nb, mu) +thickness_ = film_thickness(N_, N0_, Nb_, mu) ## previous method print(f"Film thickness: {round(thickness)} nm") print(f"Film thickness (prev method): {round(thickness_)} nm") -uncertainty_value = uncertainty(I, I0, Ib, mu, time_source, time_film, time_bkg) +uncertainty_value = uncertainty(N, N0, Nb, mu, time_source, time_film, time_bkg) print(f"Uncertainty: {uncertainty_value:.2f}") print(f"Full answer: {thickness:.2f} \u00B1 {uncertainty_value:.2f} nm") diff --git a/XRA/__pycache__/new.cpython-38.pyc b/XRA/__pycache__/new.cpython-38.pyc index 31d03c6b496c3cfee88a0340f5d9682bb88e61ea..f9a108cd6be8a603abd1cb3cf29dd2a78bbbebc1 100644 GIT binary patch delta 386 zcmYjNy-LJD5T4ylb~nl8@FbEzsx(46t1HCL>Y6knNE$_RAjk#WLv)|0@&+KO3v+23-yFm8y@^qVcAJb4<|9a(G97{45P0YPA(Njba70sRaSLx>eO$()LiBEq8m-~s}9^;l6ZgEu8Uy#CHbb;yxfz!%)K{!BERy!&Jinq&aFB!F*024dQdvFr+YMGZtIa zFhXf&Ak9?dP{NSH)XW&nkiuNUEX`2DxPS?$gGHL5h9iYVm_Y<&E~|75Lk%Z{D-N`# zh7Bmq1?PihYS_t2n@JTZ0!5-&lk;;63?Y;egfgD&#i1y|2b5)C Date: Tue, 29 Jul 2025 17:11:22 +0100 Subject: [PATCH 23/44] Code update: 1.Managed to remove the extra ROI entries for the XRA (still not fully done(labels)) --- ARC-TF.py | 141 +- Temp/Data-1.txt | 2035 ---------------------------- XRA/GaussianFit.py | 6 - XRA/__pycache__/new.cpython-38.pyc | Bin 2280 -> 2280 bytes 4 files changed, 81 insertions(+), 2101 deletions(-) delete mode 100644 Temp/Data-1.txt diff --git a/ARC-TF.py b/ARC-TF.py index dcbdf42..6144782 100644 --- a/ARC-TF.py +++ b/ARC-TF.py @@ -228,7 +228,6 @@ def File_Reader(Document, Separator, Decimal, Upload): """ num = Current_Tab() - # Open file and read its entire content with open(Document, 'r', encoding='latin1') as OpenFile: lines = OpenFile.read().splitlines() @@ -245,8 +244,10 @@ def File_Reader(Document, Separator, Decimal, Upload): except StopIteration: end = len(lines) # fallback if <> not found + # Slice the lines to desired range - lines = lines[start:end] + lines = lines[:end] + # If it's a 2D file (e.g. table with multiple columns) if Separator != '0': @@ -254,6 +255,7 @@ def File_Reader(Document, Separator, Decimal, Upload): for i, line in enumerate(lines): Results[i] = line.split(Separator) # Split each line by separator + # Convert each value to float or int for j in range(len(Results)): for i in range(len(Results[0])): # Assumes all lines have equal number of columns @@ -413,7 +415,6 @@ def Final_Results(tracker): tab_manager.Mat_Result2.bind('', lambda e: tab_manager.mat_canvas.configure( scrollregion=tab_manager.mat_canvas.bbox('all'), width=e.width)) - return ############################################################################### @@ -1239,18 +1240,28 @@ def ROI_Select_Alg(): counts = File_Reader(TabList[num][2], '0', 'Yes', 'No') # Retrieve ROI lower and upper bounds from the GUI (up to 6 ROIs) + # Check if the current tab is XRA (TabTracker value == 5) + if TabTracker[num] == 5: - # Use only 1 ROI for XRA + # Only use ROI 1 for XRA roi_down = [TabList[num][1].ROIdown1.get()] roi_up = [TabList[num][1].ROIup1.get()] + + # Hide ROI 2–6 Entry widgets + for i in range(1, 6): # Indexes 1 to 5 + TabList[num][1].ROIdown_entries[i].grid_remove() + TabList[num][1].ROIup_entries[i].grid_remove() + if hasattr(TabList[num][1], 'ROIlabels'): + TabList[num][1].ROIlabels[i].grid_remove() else: + # Use all 6 if not XRA roi_down = [TabList[num][1].ROIdown1.get(), - TabList[num][1].ROIdown2.get(), - TabList[num][1].ROIdown3.get(), - TabList[num][1].ROIdown4.get(), - TabList[num][1].ROIdown5.get(), - TabList[num][1].ROIdown6.get()] + TabList[num][1].ROIdown2.get(), + TabList[num][1].ROIdown3.get(), + TabList[num][1].ROIdown4.get(), + TabList[num][1].ROIdown5.get(), + TabList[num][1].ROIdown6.get()] roi_up = [TabList[num][1].ROIup1.get(), TabList[num][1].ROIup2.get(), TabList[num][1].ROIup3.get(), @@ -1258,6 +1269,7 @@ def ROI_Select_Alg(): TabList[num][1].ROIup5.get(), TabList[num][1].ROIup6.get()] + # Analyze the counts within each ROI to get centroids, uncertainties, and sigma/sqrt(N) cents, errs, sigmas = Analyze(counts, roi_down, roi_up) @@ -1419,8 +1431,7 @@ def handleTabChange(event): text='Calibration Trial').pack() tk.Button(warnings_manager.warning, command=lambda: Tabs.tab_change(2), text='Material Trial').pack() - tk.Button(warnings_manager.warning, command=lambda: Tabs.tab_change(5), - text='XRA').pack() + tk.Button(warnings_manager.warning, command=lambda: Tabs.tab_change(5), text='XRA').pack() tk.Label(warnings_manager.warning, text='\n').pack() tk.Button(warnings_manager.warning, text='Return', command=lambda: Tabs.tab_change(3)).pack() @@ -1571,25 +1582,52 @@ def Method(*args): tk.Label(TabList[num][1].AlgFrame, text='ROI Down: ').grid(row=2, column=0) tk.Label(TabList[num][1].AlgFrame, text='ROI Up: ').grid(row=2, column=1) - # Create labels for each peak (1-6) + # Create labels for each peak + + ## Check if we are in a XRA tab + ## if in a XRA analysis tab -> only create one label + ## else if we are in an AEL analysis -> allow the creation of the 6 labels for idx in range(6): tk.Label(TabList[num][1].AlgFrame, text=f'Peak {idx+1}').grid(row=3+idx, column=2) # Create entry fields for each ROI lower and upper bound - for idx in range(6): + #for idx in range(6): + """ tk.Entry(TabList[num][1].AlgFrame, textvariable=getattr(TabList[num][1], f'ROIdown{idx+1}'), relief='sunken', borderwidth=2).grid(row=3+idx, column=0) tk.Entry(TabList[num][1].AlgFrame, textvariable=getattr(TabList[num][1], f'ROIup{idx+1}'), relief='sunken', borderwidth=2).grid(row=3+idx, column=1) + """ + + #NEW + TabList[num][1].ROIdown_entries = [] + TabList[num][1].ROIup_entries = [] + TabList[num][1].ROIlabels = [] + for idx in range(6): + down_entry = tk.Entry(TabList[num][1].AlgFrame, textvariable=getattr(TabList[num][1], f'ROIdown{idx+1}')) + down_entry.grid(row=3+idx, column=0) + TabList[num][1].ROIdown_entries.append(down_entry) + + up_entry = tk.Entry(TabList[num][1].AlgFrame, textvariable=getattr(TabList[num][1], f'ROIup{idx+1}')) + up_entry.grid(row=3+idx, column=1) + TabList[num][1].ROIup_entries.append(up_entry) + + label = tk.Label(TabList[num][1].AlgFrame, text=f'Peak {idx+1}') + label.grid(row=3+idx, column=2) + TabList[num][1].ROIlabels.append(label) + tk.Button(TabList[num][1].AlgFrame, text='Search', command=ROI_Select_Alg).grid(row=9, column=0) tk.Button(TabList[num][1].AlgFrame, text='Remove Unchecked', command=Unchecked_Results).grid(row=9, column=1) tk.Button(TabList[num][1].AlgFrame, text='Remove All', command=lambda: ClearWidget('Results', 1)).grid(row=9, column=2) + return + + ############################################################################# # Esta funcao muda uma linha de threshold, caso o utilizador escreva um numero ############################################################################# @@ -1865,29 +1903,6 @@ def Save_Results(): '%.*f' % (int(thickness[-1]), float(thickness[j + 2])) + ') ' + units_list[index] + '\n\n') file.write('_______________________________________________________________\n\n') - - - # Loop through all tabs for XRA trials - for i in range(len(TabTracker)): - if TabList[i][1].TabType == 5: - file.write(f'XRA Trial {TabTracker[i]}\n\n') - - file.write('Detected Peaks and Regions of Interest (ROIs):\n\n') - - peaks = File_Reader(TabList[i][3], ',', 'Yes', 'No') # Analysis file - rois = File_Reader(TabList[i][6], ',', 'Yes', 'No') # ROIs file - - for j, peak in enumerate(peaks): - roi_info = rois[j] if j < len(rois) else ["N/A", "N/A"] - file.write( - f'Peak Energy: {peak[0]:.2f} keV\tCounts: {peak[1]:.1f}\t' - f'ROI: {roi_info[0]} - {roi_info[1]} keV\n' - ) - - file.write('\nThe sample analyzed was: ' + - TabList[i][1].SampleName.get() + '\n\n') - file.write('_______________________________________________________________\n\n') - return ############################################################################# @@ -1962,7 +1977,7 @@ def __init__(self): self.menu.add_cascade(label='Manage Tabs', menu=__tabs_menu) __tabs_menu.add_command(label='Add Calibration Tab', command=lambda: Tabs.tab_change(1)) __tabs_menu.add_command(label='Add Material Tab', command=lambda: Tabs.tab_change(2)) - __tabs_menu.add_command(label='Add XRA Tab', command=lambda: Tabs.tab_change(5)) + __tabs_menu.add_command(label='Add XRA Tab', command=lambda: Tabs.tab_change(5)) __tabs_menu.add_separator() __tabs_menu.add_command(label='Remove Current Tab', command=lambda: Tabs.tab_change(4)) @@ -2034,8 +2049,8 @@ def popup(self, name): # Create a modal popup window with the given title self.warning = tk.Toplevel(main_window.main) self.warning.title(name) - self.warning.geometry('700x300') self.warning.wait_visibility() + self.warning.geometry('700x300') self.warning.grab_set() def Images(self, name, picture, site): @@ -2405,17 +2420,23 @@ def AnalysisTab(self, tab_kind): self.variable1, self.variable2, self.variable3, self.variable4, self.variable5, self.variable6, self.variable7, self.variable8, self.variable9, self.variable10, self.variable11, self.variable12, self.variable13, self.variable14, self.variable15] - + + ## Check if we are in an XRA analysis tab if tab_kind == 5: self.Algorithm_Method.set("ROI Select") - Method() # Trigger layout - tk.Label(self.DataFrame, text='Analysis Method: ROI Select').grid(row=0, columnspan=2) + Method() + + for i in range(1, 6): # index 1 to 5 = ROI 2 to 6 + self.ROIdown_entries[i].grid_remove() + self.ROIup_entries[i].grid_remove() + self.ROIlabels[i].grid_remove() + + else: tk.Label(self.DataFrame, text='Analysis Method Selected:').grid(row=0, columnspan=2) Algs = ["Manual Selection", "Threshold Input", "ROI Select"] tk.OptionMenu(self.DataFrame, self.Algorithm_Method, *Algs, command=Method).grid(row=1, columnspan=2) - def MatTab(self): self.Mat = tk.StringVar() @@ -2497,6 +2518,9 @@ def CalibTab(self): self.SourceOptionsFrame = tk.Frame(self.SourceFrame, borderwidth = 0) self.SourceOptionsFrame.grid(row = 2, columnspan = 2) self.LinearRegressionFrame = tk.Frame(self.SourceFrame, borderwidth = 1) + + #def XraTab(self): + if tab_kind == 1: CalibTab(self) @@ -2515,10 +2539,10 @@ def tab_change(num): if num == 1: Tabs.calibration_tab_counter -= 1 - Data = os.path.join("Temp", f"Data{Tabs.calibration_tab_counter}.txt") - Analysis = os.path.join("Temp", f"Analysis{Tabs.calibration_tab_counter}.txt") - Result = os.path.join("Temp", f"Result{Tabs.calibration_tab_counter}.txt") - ROIs = os.path.join("Temp", f"ROIs{Tabs.calibration_tab_counter}.txt") + Data = os.path.join('Temp', 'Data' + str(Tabs.calibration_tab_counter) + '.txt') + Analysis = os.path.join('Temp', 'Analysis' + str(Tabs.calibration_tab_counter) + '.txt') + Result = os.path.join('Temp', 'Result' + str(Tabs.calibration_tab_counter) + '.txt') + ROIs = os.path.join('Temp', 'ROIs' + str(Tabs.calibration_tab_counter) + '.txt') TabList.append([tk.Frame(tab_manager.notebook, bg = 'dark grey'), Tabs(), Data, Analysis, Result, Plot(), ROIs]) @@ -2535,10 +2559,10 @@ def tab_change(num): elif num == 2: Tabs.material_tab_counter += 1 - Data = os.path.join("Temp", f"Data{Tabs.material_tab_counter}.txt") - Analysis = os.path.join("Temp", f"Analysis{Tabs.material_tab_counter}.txt") - Result = os.path.join("Temp", f"Result{Tabs.material_tab_counter}.txt") - ROIs = os.path.join("Temp", f"ROIs{Tabs.material_tab_counter}.txt") + Data = os.path.join('Temp', 'Data' + str(Tabs.material_tab_counter) + '.txt') + Analysis = os.path.join('Temp', 'Analysis' + str(Tabs.material_tab_counter) + '.txt') + Result = os.path.join('Temp', 'Result' + str(Tabs.material_tab_counter) + '.txt') + ROIs = os.path.join('Temp', 'ROIs' + str(Tabs.material_tab_counter) + '.txt') TabList.append([tk.Frame(tab_manager.notebook, bg = 'dark grey'), Tabs(), Data, Analysis, Result, Plot(), ROIs]) @@ -2552,20 +2576,17 @@ def tab_change(num): warnings_manager.warning.destroy() except: () - elif num == 5: Tabs.xra_tab_counter += 1 - Data = os.path.join("Temp", f"Data{Tabs.xra_tab_counter}.txt") - Analysis = os.path.join("Temp", f"Analysis{Tabs.xra_tab_counter}.txt") - Result = os.path.join("Temp", f"Result{Tabs.xra_tab_counter}.txt") - ROIs = os.path.join("Temp", f"ROIs{Tabs.xra_tab_counter}.txt") + Data = os.path.join('Temp', 'Data' + str(Tabs.xra_tab_counter) + '.txt') + Analysis = os.path.join('Temp', 'Analysis' + str(Tabs.xra_tab_counter) + '.txt') + Result = os.path.join('Temp', 'Results' + str(Tabs.xra_tab_counter) + '.txt') + ROIs = os.path.join('Temp', 'ROIs' + str(Tabs.xra_tab_counter) + '.txt') TabList.append([tk.Frame(tab_manager.notebook, bg = 'dark grey'), Tabs(), Data, Analysis, Result, Plot(), ROIs]) - TabTracker.append(Tabs.xra_tab_counter) TabList[tab_manager.value][1].AnalysisTab(5) - tab_manager.notebook.insert(index, TabList[tab_manager.value][0], - text = " XRA " + str(Tabs.xra_tab_counter)) + tab_manager.notebook.insert(index, TabList[tab_manager.value][0],text = " XRA " + str(Tabs.xra_tab_counter)) tab_manager.notebook.select(index) tab_manager.value += 1 try: @@ -2573,8 +2594,8 @@ def tab_change(num): except: () - - + + elif num == 3: tab_manager.notebook.select(index - 1) warnings_manager.warning.destroy() diff --git a/Temp/Data-1.txt b/Temp/Data-1.txt deleted file mode 100644 index a65ead7..0000000 --- a/Temp/Data-1.txt +++ /dev/null @@ -1,2035 +0,0 @@ -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -28 -251 -330 -295 -273 -301 -280 -259 -291 -242 -223 -190 -219 -216 -188 -202 -162 -150 -137 -122 -124 -107 -114 -97 -89 -105 -75 -90 -73 -65 -78 -58 -49 -53 -64 -42 -45 -37 -32 -31 -35 -36 -16 -11 -23 -25 -22 -18 -18 -14 -15 -22 -13 -10 -12 -10 -10 -11 -7 -7 -6 -4 -11 -6 -7 -2 -7 -2 -7 -5 -1 -4 -0 -4 -4 -5 -2 -1 -4 -3 -1 -2 -2 -2 -0 -2 -2 -2 -1 -1 -2 -0 -1 -1 -2 -2 -2 -0 -2 -2 -1 -0 -2 -0 -1 -1 -1 -0 -2 -0 -0 -0 -1 -0 -0 -1 -0 -4 -0 -1 -0 -0 -0 -0 -1 -0 -1 -1 -1 -0 -1 -0 -0 -0 -1 -0 -0 -1 -0 -0 -1 -0 -0 -1 -2 -0 -1 -0 -0 -0 -1 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -2 -0 -0 -1 -0 -0 -0 -0 -0 -2 -0 -0 -0 -3 -0 -0 -0 -1 -1 -1 -1 -1 -0 -0 -2 -2 -0 -1 -1 -0 -1 -0 -0 -1 -0 -2 -0 -2 -2 -0 -2 -0 -1 -1 -1 -0 -0 -0 -1 -0 -0 -0 -0 -2 -1 -2 -0 -0 -4 -0 -0 -0 -3 -0 -2 -0 -1 -1 -1 -0 -0 -0 -0 -0 -0 -1 -0 -0 -0 -1 -1 -0 -0 -1 -1 -0 -0 -0 -0 -1 -1 -0 -0 -1 -3 -2 -0 -2 -0 -1 -1 -0 -1 -0 -0 -1 -1 -0 -1 -0 -0 -0 -0 -3 -2 -2 -1 -0 -1 -0 -1 -1 -1 -0 -0 -0 -0 -2 -0 -0 -0 -0 -1 -0 -0 -2 -1 -1 -1 -0 -0 -0 -1 -0 -2 -0 -1 -2 -0 -0 -0 -0 -0 -0 -1 -1 -0 -0 -0 -2 -1 -3 -0 -0 -0 -1 -0 -2 -1 -0 -0 -1 -0 -0 -0 -0 -0 -1 -2 -0 -0 -0 -0 -0 -0 -2 -3 -0 -1 -1 -0 -0 -1 -0 -1 -0 -0 -1 -0 -0 -0 -1 -0 -0 -1 -2 -3 -3 -0 -2 -1 -0 -1 -1 -0 -0 -0 -2 -0 -1 -0 -1 -1 -0 -1 -0 -0 -1 -1 -0 -2 -2 -3 -1 -0 -0 -2 -1 -2 -0 -2 -3 -0 -1 -2 -3 -1 -1 -1 -1 -3 -2 -0 -1 -0 -1 -1 -1 -0 -2 -2 -2 -1 -2 -0 -2 -3 -0 -0 -1 -1 -1 -2 -0 -0 -1 -2 -1 -2 -0 -1 -2 -0 -2 -2 -2 -1 -2 -1 -0 -1 -1 -1 -3 -1 -0 -0 -1 -1 -1 -2 -1 -1 -0 -0 -1 -0 -3 -1 -0 -0 -2 -1 -2 -0 -2 -0 -2 -1 -1 -0 -0 -1 -2 -1 -0 -2 -0 -3 -2 -1 -1 -2 -2 -1 -0 -1 -3 -3 -2 -0 -1 -0 -0 -0 -0 -1 -0 -2 -0 -1 -1 -1 -3 -1 -1 -6 -0 -1 -3 -1 -2 -1 -1 -0 -3 -0 -2 -1 -1 -2 -1 -1 -0 -2 -3 -2 -2 -1 -1 -1 -2 -2 -4 -3 -2 -0 -0 -1 -1 -0 -1 -1 -1 -1 -1 -2 -3 -2 -4 -0 -1 -3 -1 -1 -3 -1 -2 -2 -0 -1 -1 -0 -2 -3 -2 -1 -0 -2 -0 -1 -0 -1 -0 -2 -0 -3 -1 -2 -2 -0 -1 -1 -1 -1 -0 -2 -2 -1 -0 -0 -2 -2 -4 -0 -0 -0 -1 -1 -0 -0 -2 -1 -4 -4 -0 -1 -2 -2 -1 -0 -1 -0 -2 -0 -2 -1 -1 -0 -1 -2 -1 -0 -0 -2 -1 -0 -0 -1 -0 -1 -0 -4 -1 -1 -2 -0 -4 -1 -2 -1 -1 -1 -1 -2 -3 -1 -0 -2 -1 -0 -4 -2 -2 -2 -0 -3 -3 -1 -1 -1 -0 -0 -1 -1 -2 -1 -0 -4 -3 -1 -0 -0 -5 -0 -4 -2 -2 -4 -0 -2 -0 -2 -2 -0 -1 -4 -1 -2 -1 -1 -1 -0 -0 -0 -1 -5 -0 -1 -1 -3 -3 -4 -0 -1 -1 -0 -0 -1 -2 -2 -2 -0 -2 -1 -1 -4 -2 -0 -1 -2 -4 -2 -2 -1 -0 -3 -2 -1 -2 -5 -1 -3 -3 -1 -2 -2 -0 -2 -2 -1 -2 -3 -1 -2 -1 -0 -2 -2 -2 -0 -1 -0 -0 -1 -1 -2 -1 -1 -1 -6 -0 -2 -1 -3 -5 -3 -0 -2 -3 -3 -2 -2 -1 -1 -0 -1 -3 -1 -1 -2 -1 -0 -1 -1 -1 -2 -2 -2 -2 -5 -1 -1 -0 -1 -2 -3 -2 -1 -2 -1 -2 -2 -0 -1 -0 -1 -0 -1 -2 -3 -2 -2 -1 -2 -4 -1 -2 -0 -2 -5 -3 -2 -3 -0 -0 -1 -0 -1 -1 -2 -0 -6 -2 -5 -0 -1 -2 -0 -1 -1 -1 -4 -2 -4 -3 -3 -1 -1 -4 -3 -1 -2 -3 -3 -6 -1 -3 -2 -1 -5 -4 -0 -1 -3 -2 -0 -2 -1 -0 -2 -0 -1 -1 -2 -1 -3 -2 -0 -1 -4 -2 -0 -3 -1 -3 -2 -5 -1 -1 -4 -2 -1 -4 -4 -7 -2 -3 -2 -2 -1 -3 -1 -5 -2 -0 -2 -1 -0 -3 -2 -4 -2 -2 -1 -2 -1 -3 -1 -4 -3 -1 -3 -2 -3 -2 -1 -4 -2 -1 -1 -3 -2 -0 -2 -6 -3 -2 -3 -2 -5 -5 -2 -1 -1 -6 -5 -3 -3 -4 -1 -6 -3 -2 -1 -1 -4 -5 -1 -5 -4 -3 -4 -2 -3 -7 -3 -3 -6 -2 -1 -4 -8 -4 -2 -5 -3 -3 -4 -6 -6 -8 -16 -17 -21 -44 -46 -71 -90 -64 -64 -34 -19 -12 -9 -3 -4 -3 -4 -0 -4 -3 -3 -6 -4 -3 -7 -10 -6 -12 -13 -7 -12 -9 -12 -11 -19 -17 -17 -29 -24 -33 -78 -120 -215 -415 -623 -845 -1114 -1111 -1058 -891 -564 -344 -188 -95 -40 -18 -5 -1 -4 -2 -1 -0 -2 -0 -3 -0 -1 -0 -4 -4 -1 -1 -2 -4 -1 -7 -1 -1 -1 -1 -0 -2 -2 -4 -6 -0 -3 -3 -2 -0 -4 -3 -1 -4 -1 -1 -2 -4 -2 -1 -2 -2 -3 -3 -1 -2 -6 -1 -3 -4 -1 -2 -4 -3 -1 -3 -3 -3 -1 -2 -4 -2 -5 -3 -2 -3 -6 -4 -3 -1 -3 -6 -7 -2 -8 -4 -7 -6 -3 -5 -6 -10 -6 -4 -7 -13 -13 -10 -15 -13 -22 -16 -23 -34 -36 -48 -58 -89 -111 -138 -194 -240 -283 -268 -312 -225 -156 -108 -77 -32 -22 -8 -4 -4 -0 -2 -7 -3 -2 -3 -4 -3 -2 -4 -3 -3 -3 -8 -6 -2 -11 -6 -5 -12 -15 -20 -13 -29 -52 -86 -153 -247 -306 -392 -445 -454 -374 -316 -197 -124 -90 -43 -13 -3 -2 -3 -3 -1 -0 -2 -2 -1 -3 -2 -1 -0 -0 -1 -2 -1 -1 -2 -2 -1 -0 -3 -1 -0 -1 -1 -4 -0 -0 -0 -1 -4 -2 -0 -1 -1 -2 -1 -2 -1 -3 -4 -5 -3 -1 -3 -1 -4 -3 -1 -5 -1 -2 -3 -4 -3 -0 -3 -4 -4 -3 -5 -4 -3 -4 -3 -5 -5 -6 -2 -4 -2 -6 -3 -7 -3 -4 -4 -5 -7 -7 -4 -13 -7 -6 -9 -9 -11 -13 -11 -9 -14 -28 -24 -30 -34 -38 -56 -94 -103 -165 -212 -310 -351 -439 -428 -429 -346 -297 -223 -154 -89 -61 -37 -7 -6 -2 -0 -0 -0 -0 -0 -1 -2 -0 -0 -1 -0 -1 -0 -1 -1 -2 -0 -0 -0 -0 -0 -0 -1 -0 -0 -0 -1 -1 -0 -1 -0 -0 -1 -0 -0 -0 -0 -2 -1 -1 -1 -1 -1 -1 -1 -0 -0 -2 -0 -0 -0 -1 -1 -0 -1 -2 -0 -0 -0 -0 -0 -0 -1 -0 -1 -0 -2 -0 -0 -0 -0 -0 -0 -0 -1 -0 -0 -0 -0 -1 -0 -0 -0 -1 -0 -0 -2 -0 -0 -1 -0 -0 -1 -1 -0 -0 -0 -0 -1 -0 -0 -1 -0 -1 -0 -0 -1 -0 -0 -0 -3 -0 -0 -0 -0 -0 -0 -0 -2 -0 -0 -0 -1 -0 -0 -0 -2 -2 -1 -1 -0 -1 -1 -1 -0 -0 -1 -0 -0 -0 -0 -0 -0 -0 -1 -1 -0 -0 -0 -0 -0 -0 -0 -1 -0 -1 -1 -1 -1 -0 -0 -1 -1 -0 -1 -0 -1 -0 -0 -0 -0 -0 -1 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -3 -0 -1 -0 -0 -0 -0 -1 -0 -0 -0 -1 -0 -1 -0 -2 -1 -0 -4 -0 -0 -1 -1 -1 -0 -1 -0 -2 -0 -1 -1 -3 -1 -3 -0 -3 -0 -0 -1 -1 -1 -2 -0 -0 -2 -3 -1 -1 -0 -0 -0 -1 -4 -0 -0 -0 -2 -2 -2 -2 -1 -2 -0 -1 -0 -2 -0 -1 -1 -1 -1 -0 -0 -1 -1 -1 -0 -1 -0 -0 -0 -0 -1 -2 -2 -2 -0 -0 -0 -0 -0 -0 -0 -0 -1 -0 -1 -0 -0 -0 -0 -0 -0 -0 -0 -2 -2 -0 -1 -0 -1 -2 -0 -0 -0 -1 -1 -1 -0 -0 -0 -1 -0 -1 -0 -2 -0 -1 -1 -0 -0 -0 -1 -2 -1 -4 -1 -1 -0 -1 -2 -0 -2 -2 -2 -4 -3 -3 -2 -4 -2 -2 -0 -5 -2 -2 -4 -4 -5 -2 -6 -5 -4 -13 -13 -11 -19 -15 -23 -23 -36 -43 -78 -89 -156 -194 -201 -329 -354 -398 -354 -307 -253 -204 -152 -119 -89 -58 -24 -9 -3 -2 -3 -0 -3 -1 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 diff --git a/XRA/GaussianFit.py b/XRA/GaussianFit.py index 35b62c8..b608ed1 100644 --- a/XRA/GaussianFit.py +++ b/XRA/GaussianFit.py @@ -89,16 +89,10 @@ def gaussian_integral_erf(A, x0, sigma, B, x1, x2): N = gaussian_integral_erf(*popt_film, x1, x2) Nb = gaussian_integral_erf(*popt_bkg, x1, x2) -## Using the previous method -N0_ = A0 * sigma0 -N_ = A1 * sigma1 -Nb_ = A2 * sigma2 # Film thickness calculation thickness = film_thickness(N, N0, Nb, mu) -thickness_ = film_thickness(N_, N0_, Nb_, mu) ## previous method print(f"Film thickness: {round(thickness)} nm") -print(f"Film thickness (prev method): {round(thickness_)} nm") uncertainty_value = uncertainty(N, N0, Nb, mu, time_source, time_film, time_bkg) print(f"Uncertainty: {uncertainty_value:.2f}") print(f"Full answer: {thickness:.2f} \u00B1 {uncertainty_value:.2f} nm") diff --git a/XRA/__pycache__/new.cpython-38.pyc b/XRA/__pycache__/new.cpython-38.pyc index f9a108cd6be8a603abd1cb3cf29dd2a78bbbebc1..8077fad777103a3c5d963ec7d29b444f1593eb71 100644 GIT binary patch delta 20 acmaDM_(G67l$V!_0SLG*b!_Cm%K-p5>jiuO delta 20 acmaDM_(G67l$V!_0SNwdw{PUW%K-pA+6E>7 From 97a5d26f755c2790199db0d80bf8f7d6a1416e87 Mon Sep 17 00:00:00 2001 From: aysuismailova Date: Wed, 30 Jul 2025 01:40:44 +0300 Subject: [PATCH 24/44] Change: removed peak labels for XRA --- ARC-TF.py | 34 +++++++++--------- Include/__pycache__/Analyze.cpython-313.pyc | Bin 0 -> 1069 bytes .../__pycache__/Calibration.cpython-313.pyc | Bin 0 -> 1203 bytes Include/__pycache__/Eloss.cpython-313.pyc | Bin 0 -> 1341 bytes Include/__pycache__/FitData.cpython-313.pyc | Bin 0 -> 4644 bytes Include/__pycache__/Thick.cpython-313.pyc | Bin 0 -> 1829 bytes .../__pycache__/clear_frame.cpython-313.pyc | Bin 0 -> 582 bytes .../__pycache__/remove_file.cpython-313.pyc | Bin 0 -> 502 bytes 8 files changed, 16 insertions(+), 18 deletions(-) create mode 100644 Include/__pycache__/Analyze.cpython-313.pyc create mode 100644 Include/__pycache__/Calibration.cpython-313.pyc create mode 100644 Include/__pycache__/Eloss.cpython-313.pyc create mode 100644 Include/__pycache__/FitData.cpython-313.pyc create mode 100644 Include/__pycache__/Thick.cpython-313.pyc create mode 100644 Include/__pycache__/clear_frame.cpython-313.pyc create mode 100644 Include/__pycache__/remove_file.cpython-313.pyc diff --git a/ARC-TF.py b/ARC-TF.py index 6144782..b95ded6 100644 --- a/ARC-TF.py +++ b/ARC-TF.py @@ -1583,28 +1583,17 @@ def Method(*args): tk.Label(TabList[num][1].AlgFrame, text='ROI Up: ').grid(row=2, column=1) # Create labels for each peak - ## Check if we are in a XRA tab - ## if in a XRA analysis tab -> only create one label - ## else if we are in an AEL analysis -> allow the creation of the 6 labels - for idx in range(6): - tk.Label(TabList[num][1].AlgFrame, text=f'Peak {idx+1}').grid(row=3+idx, column=2) - - # Create entry fields for each ROI lower and upper bound - #for idx in range(6): - """ - tk.Entry(TabList[num][1].AlgFrame, textvariable=getattr(TabList[num][1], f'ROIdown{idx+1}'), - relief='sunken', borderwidth=2).grid(row=3+idx, column=0) - tk.Entry(TabList[num][1].AlgFrame, textvariable=getattr(TabList[num][1], f'ROIup{idx+1}'), - relief='sunken', borderwidth=2).grid(row=3+idx, column=1) - """ - - #NEW + if num == 5: + range_limit = 1 ## if in a XRA analysis tab -> only create one label + else: + range_limit = 6 ## else if we are in an AEL analysis -> allow the creation of the 6 labels + + # Initialize storage TabList[num][1].ROIdown_entries = [] TabList[num][1].ROIup_entries = [] TabList[num][1].ROIlabels = [] - - for idx in range(6): + for idx in range(range_limit): down_entry = tk.Entry(TabList[num][1].AlgFrame, textvariable=getattr(TabList[num][1], f'ROIdown{idx+1}')) down_entry.grid(row=3+idx, column=0) TabList[num][1].ROIdown_entries.append(down_entry) @@ -1616,6 +1605,15 @@ def Method(*args): label = tk.Label(TabList[num][1].AlgFrame, text=f'Peak {idx+1}') label.grid(row=3+idx, column=2) TabList[num][1].ROIlabels.append(label) + + # Create entry fields for each ROI lower and upper bound + #for idx in range(6): + """ + tk.Entry(TabList[num][1].AlgFrame, textvariable=getattr(TabList[num][1], f'ROIdown{idx+1}'), + relief='sunken', borderwidth=2).grid(row=3+idx, column=0) + tk.Entry(TabList[num][1].AlgFrame, textvariable=getattr(TabList[num][1], f'ROIup{idx+1}'), + relief='sunken', borderwidth=2).grid(row=3+idx, column=1) + """ tk.Button(TabList[num][1].AlgFrame, text='Search', command=ROI_Select_Alg).grid(row=9, column=0) diff --git a/Include/__pycache__/Analyze.cpython-313.pyc b/Include/__pycache__/Analyze.cpython-313.pyc new file mode 100644 index 0000000000000000000000000000000000000000..b8520a0bc5b5a7f7d056d3cadfe95aeefd42e620 GIT binary patch literal 1069 zcmZuwOHUI~6h8APrF06VJR;g+Est0q7!}e;&;%)91I2_ohNMl%KnG}Sr{&HxP~xJ? z5*J|5q>71MN{rE^#*Oh8KpxSHPv^F1u`~b?Yb3d} z#sd7Npdtk8QnVBI5&{rlCcwiwX~a%2hz)S(0db40oBu-_-3(@~OwDupP{|mHqqvx3 zD8&s>IHEjJLy%-j5R$8M8XJ65Lx=uRq0l zT_TJ4djNv8MVHcaITL1|`Hgn{x+6;seuGv5$2*UXzmZrW0*oO#hy zImrnkU$dj3s>4vbBiLABoF>1-|KbACT;aG*ZdZw&;Qt6<1}Dr6hfwVId()Pex=#L-9x$nT1+e&`G9Hi=F1Wdaq~sdQS!1{t9^!VJRf>P@1zFi%gxh7vnRm{oz?%ULDZ zGcp(wRT-(F;gC(G9OKb<6O)D`t1a!zTbj~id7&{qdTg=1xV@=u-8r;4GR%>=Y2C9aJsZmQzw+efw(q|4 z?u>t0en0uy`(^wa`s)8FSdW|AH?`+0Tb-Hvg|qOu}rCZIsX7@dFJW}DmIo<>(GJ95Y(^-UgG=QXs?kU0q2jLY| zpY*_GhT2TRM{cL`Qp)8cfAM~4gTzIa%s~~T<=?!3$Rv2;OK)BLv^y>7yPM}uPkKjs zCivZG%Odl2`wlTjQOFa|0O5*8-sGDLSWQ+lX@}0G)lksEV-6L|I&=zv z($_&t4y~`duntzKdQx-J2sH~``R!a`s^bbH^ z^6m8NaFsHudwu20+b(c?IkvqE9scs@SE1WH^H{XHAI*LcdMmij`6{w8YKE)BR__YLMp5C!^nI+4(2T(PJc3#TfN z)xG@vb(5;H_wQP)?ddB=VMD`H(Tv-M0F0L~!5-s|CE9_*<%#WJw^6cUc3_}9vExU6 zp)zBHOQw=BwPzeY{8zKs2O|gwlrAu3BhqBumiJEYP z6ZHoX)Pn~PkoX6f=m8V2Cf&3l&FFzd4|0Q)gYo3dmW2)UC2!t)-}mi%JCoTh@_Z#A z=7^=EMk4^fXrUQ%kQA#)vI4xo3rBziy-XvJm`=kzl=(nMLj`dI@nSD|dIekr z$V{9gUO~Ll52=WnpQ=<7VD|y4#Tsz)F968mXElw_NmGs2;pg?Zi|ply6Ie~}A|hn< zo3w7@oR%HM*0N7}p^Ipbdit*D=bd0jPO>gCg3j0VaOzb${KQ_4_ZLjsj!F#eOZ#gm z;(Zp{+xMNKUdCl1JUJ6&JH$z)!|j53oM?`lVAVRd0D&v3;B|_MvI?6{QCU`DKT_QK z2Y>~%0N)$IeA&G3Ukx3c%qc4pj(o#nPN173Cx5On03czWf_~orD${~ zVhEEp^cce=X2k=x6pfQfB^T z-xlAx2!B_d&dfi5nyYI2kY4v~_;cral&YRD!e-}ZpW<*YvOlY8Ue~>-dsn+U_qP6h z=bG~)yB^(`$+h=>8c^D=ePcHxUmxcB$FklDrGG+cpHLcv{N(*?FscM+a+C4=Y$}_6 zwg;g(t3<}zZ1bykA_u4<8oY8>bib230hQ9e@55pdYol8n0t3<8~ z413uK@aXd1bI-lx{r!IDUL6Ml9SE*aX8r!3LkRtqJTxwfBcl{OSuaCBdIa5R#=ZkR>`O!qA6FgKsGIcIUJ*0{Z>liTgvgMt<1mgw&j|?m z(GViB6U_YI>LJm$q+rsDtR!fYy_a2+^CpXBWi@Tm86}@!P0!X(;hr#=Y(~wSzK3b~ zfx4bEsf3SxAP0q`2JlwX!rPgz}6Jn7UP;Y}NAS2jSxKZ=*+VrE1Qn)1V_EaXGUj8QBTVZ!E zYQBRGBt#1HfA^tq@19zj*xme$u3r7r_p&RlO&da_GF{%(g>ySM4rvrl9C$77V~C7i zzh)AA`;QQ;7d182Tra!qtQYvKdPLWniJr!{pW1_7@CqX3tmt=JWxKb>SyyK@Q}j5j z82Os8_HK{n+PXX#DMY+srkj8vC`n23Y}bwh(iC>V1L$Mn_BuFu-MFqg_ed}g7nTMf zqE8xg&47~@MMTCNhbfEnIGHyu-4}VQj-bsuceai;?+ALq%wq<8{z=bYn*J6(0|KPc z*|dT=C}SU~=)gQFLri4)H{|SkTD@z*&9nWk>Dd-dDrYk4T296g9$a$U$#gb*n>d>E zuUA)8(vu+3zHpFuSx}u%=P^tM5qzm%f&pv+tZqHpEd8iL?T%I6d%9?JMgeNSOP2im z!r;Ddu&cJ*_VO1Mj1V^s{CwJ?}=-EBiLEO zxo#-X@0|umJw+C^8CO_H&MioE&iW{hPhEBloKO7u88I)?t zpx{FkxxQXqphj-QHgV-(Wq|^G(2$Gm6>ja}MqM4_R*xTya~OsD4`6+sD67cVXA9sG zc}LM*`2}*83}PxJoHqp)kSx&A!VN!g!qTu=llYjMFVZHod?cbgef5wx9X zy;H}{{j!BELooht30tI1;w#;=`opsoIUok=ZvlD_Wo8`as|3a12w`mS9BP!vZ-TWm z295ymaTH8_yHb1S1??~pcSB2})1e{mA^xx7ARdAS)4TOLCYt<8dLtv}Gi!>;ZOAwy zE6Zt0I zx`3>0TTVw>BM>ZHZ_8Z2pndRovUKZ{;mU*k{tNrv7mWVV=dovLz5ilyw$?wO&7Mf< z=y^Rls_~G8bgs{4_50yzRd;5!P zf0)&Wujr908fW+;CHe7N#+jjN@=2$5^FTmC_g75xfJc4(#hV9Q{gFl8JsMy0N1^Qm zf%umr5Z}9HYeV<{3&ej@AcjvV5FkV;1|)(d5Ae%$3{iz>VF5(pOkZ(^hyr^Pll z?VQV8b~gaH2=lY!284dY9~$YJ%9#t42Z%*1@g5q|c@eAYKm{VL_mL+U;v*EIf0}Hf z@j?OXfzNJ%e1JGTOF(e&!%`#@1S~4Cx&+3l#OZ@gd$5_=i9R$)x&V@NPITJ|o`wVt zpi(@jMpWZ!e&f2B8=)5DMWPX~|0j#*$}DQ#S{9D|Vr~uSD1`AS_oRXx4z|c8-hv+{l?QYw0*j+ZAmWtmeP1*7z^yXKln2 z?a*H}GH3Tgw?!raeP|GCaX?r5A3w7g#jRT+n=$y9N9h zPVik$|G9O#ADbF~`vjZP*ma|B$QOiU zRxzb`Q4)&x6+%!bUc;KC;#_`wZb31tMNDEJO@$zqhBeP8GYXMc%tc&j1JqP8sHv*u zsJdcIsjK9GGkTvVCHT(p1SjzYX<}qzRD}9OX;#QjM7hyPa1$qIgltZNo$2g+il4ZL za}MV3H|xTEDtI9-9*DFHjV+;L+Ee~?IaBFg7E953;MMK-e~@-w`~J(rK={BO*$;#_ zyVnfm*_BMSdqq5A`s6^kbbHSpsfXU!8F@Ipd*i3vVQB1tj_rrWwjJNhm*Xpms$=Do z1AA}vqeJ`4a%ij+-J@g2OlxVhrV59%bmyrN(ayD3%Ei^!k8GVwM9t-1GBrKQoRwH70l^|FvhrPSG96kning7i1KfBBJs?{+NF;PDc={Uff6oXL8q-Tia4i42rGzZ6s zL!ekgN3B6yQfj$+R|RUr0g~mvu~Nz!?A8F7Vk-yI_b&z%hW#l39WdBvsbsuK05QAr z&m!cHD?kCVl#AvzNi&{wu@^=7jQRn|QcM}nLV^Q&N*Hc)FDBSyK2ACrO_%_?n3Fg; zC75QSoy2{bQ@_!))Z93utev>6kVZZyEFbavN91}S5Vvm?T&0+t>-~Z&oB42g1^Hl% zalW>->ewmask7#baVZe=JNj* z#Y&gOb_uWM^s`xiFzZj|()I9*X51P##*;SlsY1a#Zcpv^vN^B*c`wVtp+ r(?UlUDrVgS*F}YoiY?dHTiXK%kjA0k*nCDhm@|F$E`%r_E#XJRv>_J@;X0{4V zBvHs<--a_a12!?0yF!Ka{98tCx67z#+N?XGu1(#5vY{&iaYS9m^SSFew1|?j9~Aw8 z*S_N1=ee?}hKeu36+VN6YyTuB2{noCH-nClo6+#}GH=xc|u}X3fd6$#VTsnEZ3*3FKwa#Q}zUn8wt&G12s=#AD+5@Lk*fo+Ni7 zAaUbEOHEbGKLS4m9yT`NMbE0QB&(VVmoGF!y+MQ}a1BGK6?%Sq&}HXbj>yeL8Utbo PiSj`7C>AFMPh#&Er`vJG literal 0 HcmV?d00001 From 3f37772333b4323da2982d7429988f0033490d46 Mon Sep 17 00:00:00 2001 From: aysuismailova Date: Thu, 31 Jul 2025 17:15:40 +0100 Subject: [PATCH 25/44] Code Update: 1. Fixed centroids calculation issue for XRA (only 1) 2. Made two file options(Source or Source+Film) for XRA tab 3. Plotted two files combined for XRA tab. --- ARC-TF.py | 176 +++++++++++++++------ Include/Analyze.py | 28 ++-- Include/__pycache__/Analyze.cpython-38.pyc | Bin 657 -> 707 bytes 3 files changed, 146 insertions(+), 58 deletions(-) diff --git a/ARC-TF.py b/ARC-TF.py index b95ded6..cebfbb6 100644 --- a/ARC-TF.py +++ b/ARC-TF.py @@ -1236,6 +1236,7 @@ def ROI_Select_Alg(): None """ num = Current_Tab() + # Read counts data for the current tab counts = File_Reader(TabList[num][2], '0', 'Yes', 'No') @@ -1243,17 +1244,27 @@ def ROI_Select_Alg(): # Check if the current tab is XRA (TabTracker value == 5) - if TabTracker[num] == 5: + if TabList[num][1].tab_kind == 5: + # Only use ROI 1 for XRA roi_down = [TabList[num][1].ROIdown1.get()] roi_up = [TabList[num][1].ROIup1.get()] + print("I am here") # Hide ROI 2–6 Entry widgets - for i in range(1, 6): # Indexes 1 to 5 - TabList[num][1].ROIdown_entries[i].grid_remove() - TabList[num][1].ROIup_entries[i].grid_remove() - if hasattr(TabList[num][1], 'ROIlabels'): - TabList[num][1].ROIlabels[i].grid_remove() + for i in range(1, min(6, len(TabList[num][1].ROIdown_entries))): + try: + TabList[num][1].ROIdown_entries[i].grid_remove() + TabList[num][1].ROIup_entries[i].grid_remove() + if hasattr(TabList[num][1], 'ROIlabels'): + TabList[num][1].ROIlabels[i].grid_remove() + TabList[num][1].ROIdown_entries[i].delete(0, tk.END) + TabList[num][1].ROIup_entries[i].delete(0, tk.END) + getattr(TabList[num][1], f'ROIdown{i+1}').set(0) + getattr(TabList[num][1], f'ROIup{i+1}').set(0) + except IndexError: + print(f"Skipping ROI entry {i} — not defined for this tab.") + else: # Use all 6 if not XRA roi_down = [TabList[num][1].ROIdown1.get(), @@ -1269,7 +1280,10 @@ def ROI_Select_Alg(): TabList[num][1].ROIup5.get(), TabList[num][1].ROIup6.get()] - + print("TabTracker:", TabTracker[num]) + print("roi_down:", roi_down) + print("roi_up:", roi_up) + print("Number of ROIs passed to Analyze:", len(roi_down)) # Analyze the counts within each ROI to get centroids, uncertainties, and sigma/sqrt(N) cents, errs, sigmas = Analyze(counts, roi_down, roi_up) @@ -1379,35 +1393,84 @@ def DataUploader(): num = Current_Tab() # Define the allowed file types for upload - domain = (('Text Files', '*.mca'), ('All Files', '*.*')) + domain = (('Text Files', '*.mca'), ('All Files', '*.*')) - # Open a file dialog window for user to select the data file - filename = fd.askopenfilename(title='Open a file', initialdir=',', filetypes=domain) + tab_type = getattr(TabList[num][1], 'tab_kind', None) - # If no file was selected, do nothing and exit - if not filename: - pass + # XRA tab + if tab_type == 5: + # Ask XRA user: Source only or Source + Film? + mode_window = tk.Toplevel() + mode_window.title("XRA Plot Mode") - else: - # Read the uploaded file's contents using File_Reader function - file = File_Reader(filename, '0', 'string', 'Yes') + tk.Label(mode_window, text="XRA tab detected.\nDo you want to plot:").pack(padx=10, pady=10) - # Process the file structure and generate the initial plot - TabList[num][5].Structure(file, filename) - TabList[num][5].subplots() + def upload_source_only(): + mode_window.destroy() + filename = fd.askopenfilename(title='Open Source File', filetypes=[('Text Files', '*.mca'), ('All Files', '*.*')]) + if not filename: + return - # Retrieve the current algorithm selection and apply it if needed - value = TabList[num][1].Algorithm.get() - if value != 0: - TabList[num][5].threshold(value) + file = File_Reader(filename, '0', 'string', 'Yes') + TabList[num][5].source_data = file + TabList[num][5].source_file = filename + TabList[num][5].Structure(file, filename) + TabList[num][5].subplots() + Tabs.RenameTab(filename.split('/')[-1]) - # Rename the tab to the filename (only the file's name, not the full path) - try: - Tabs.RenameTab(filename.split('/')[-1]) - except: - pass # Ignore errors in renaming tab + def upload_film(): + mode_window.destroy() - return + try: + source_data = TabList[num][5].source_data + source_file = TabList[num][5].source_file + except AttributeError: + tk.messagebox.showerror("Missing Source File", "Please upload a Source file first using 'Source Only'.") + return + + film_file = fd.askopenfilename(title='Open Film File', filetypes=[('Text Files', '*.mca'), ('All Files', '*.*')]) + if not film_file: + return + + film_data = File_Reader(film_file, '0', 'string', 'No') + + TabList[num][5].Structure(source_data, source_file, film_data) + TabList[num][5].subplots() + Tabs.RenameTab(film_file.split('/')[-1]) + + tk.Button(mode_window, text="Source Only", command=upload_source_only).pack(padx=10, pady=5) + tk.Button(mode_window, text="Source + Film", command=upload_film).pack(padx=10, pady=5) + + # All other tabs + else: + + # Open a file dialog window for user to select the data file + filename = fd.askopenfilename(title='Open a file', initialdir=',', filetypes=domain) + + # If no file was selected, do nothing and exit + if not filename: + pass + + else: + # Read the uploaded file's contents using File_Reader function + file = File_Reader(filename, '0', 'string', 'Yes') + + # Process the file structure and generate the initial plot + TabList[num][5].Structure(file, filename) + TabList[num][5].subplots() + + # Retrieve the current algorithm selection and apply it if needed + value = TabList[num][1].Algorithm.get() + if value != 0: + TabList[num][5].threshold(value) + + # Rename the tab to the filename (only the file's name, not the full path) + try: + Tabs.RenameTab(filename.split('/')[-1]) + except: + pass # Ignore errors in renaming tab + + return ###################################################### # Handles the event of changing tabs in the notebook # @@ -1584,10 +1647,12 @@ def Method(*args): # Create labels for each peak ## Check if we are in a XRA tab - if num == 5: - range_limit = 1 ## if in a XRA analysis tab -> only create one label + + if TabList[num][1].tab_kind == 5: + range_limit = 1 else: - range_limit = 6 ## else if we are in an AEL analysis -> allow the creation of the 6 labels + range_limit = 6 + # Initialize storage TabList[num][1].ROIdown_entries = [] @@ -2308,6 +2373,7 @@ def First_Tabs(self): self.notebook.bind("<>", handleTabChange) def AnalysisTab(self, tab_kind): + self.tab_kind = tab_kind ### Configuracao de geometria e Frames comuns a Calib e Material Tabs #### TabList[tab_manager.value][0].columnconfigure(0, weight = 4) @@ -2424,10 +2490,10 @@ def AnalysisTab(self, tab_kind): self.Algorithm_Method.set("ROI Select") Method() - for i in range(1, 6): # index 1 to 5 = ROI 2 to 6 + """ for i in range(1, 6): # index 1 to 5 = ROI 2 to 6 self.ROIdown_entries[i].grid_remove() self.ROIup_entries[i].grid_remove() - self.ROIlabels[i].grid_remove() + self.ROIlabels[i].grid_remove() """ else: @@ -2527,7 +2593,7 @@ def CalibTab(self): MatTab(self) @staticmethod - def tab_change(num): + def tab_change(tab_type): """ Handles adding, removing, and switching tabs in the Notebook. tab_type: 1 = add calibration, 2 = add material, 3 = cancel, 4 = remove current @@ -2535,7 +2601,7 @@ def tab_change(num): value = Current_Tab() index = len(tab_manager.notebook.tabs()) - 1 - if num == 1: + if tab_type == 1: Tabs.calibration_tab_counter -= 1 Data = os.path.join('Temp', 'Data' + str(Tabs.calibration_tab_counter) + '.txt') Analysis = os.path.join('Temp', 'Analysis' + str(Tabs.calibration_tab_counter) + '.txt') @@ -2555,7 +2621,7 @@ def tab_change(num): except: () - elif num == 2: + elif tab_type == 2: Tabs.material_tab_counter += 1 Data = os.path.join('Temp', 'Data' + str(Tabs.material_tab_counter) + '.txt') Analysis = os.path.join('Temp', 'Analysis' + str(Tabs.material_tab_counter) + '.txt') @@ -2574,7 +2640,7 @@ def tab_change(num): warnings_manager.warning.destroy() except: () - elif num == 5: + elif tab_type == 5: Tabs.xra_tab_counter += 1 Data = os.path.join('Temp', 'Data' + str(Tabs.xra_tab_counter) + '.txt') Analysis = os.path.join('Temp', 'Analysis' + str(Tabs.xra_tab_counter) + '.txt') @@ -2582,6 +2648,7 @@ def tab_change(num): ROIs = os.path.join('Temp', 'ROIs' + str(Tabs.xra_tab_counter) + '.txt') TabList.append([tk.Frame(tab_manager.notebook, bg = 'dark grey'), Tabs(), Data, Analysis, Result, Plot(), ROIs]) + TabTracker.append(Tabs.xra_tab_counter) TabList[tab_manager.value][1].AnalysisTab(5) tab_manager.notebook.insert(index, TabList[tab_manager.value][0],text = " XRA " + str(Tabs.xra_tab_counter)) @@ -2594,11 +2661,11 @@ def tab_change(num): - elif num == 3: + elif tab_type == 3: tab_manager.notebook.select(index - 1) warnings_manager.warning.destroy() - elif num == 4: + elif tab_type == 4: if tab_manager.notebook.select() == '.!notebook.!frame' or tab_manager.notebook.select() == '.!notebook.!frame2': warnings_manager.popup('Bad Tab Deletion') tk.Label(warnings_manager.warning, text = '\n This Tab cannot be deleted.\nPlease delete Analysis Tabs').pack() @@ -2667,14 +2734,17 @@ class Plot: figure_canvas (FigureCanvasTkAgg): Canvas for embedding the plot in Tkinter. axes (Axes): Matplotlib Axes object for plotting. """ - def Structure(self, File, Name): + def Structure(self, File, Name, File2 = None): # Initialize lists for channel and counts self.Channel = [] self.Counts = [] + self.Channel2 = [] + self.Counts2 = [] self.line = [] num = Current_Tab() total_sum = 0 + total_sum2 = 0 j = 0 # Clear previous plot and set up the graphic frame @@ -2692,21 +2762,31 @@ def Structure(self, File, Name): self.Channel.append(i - 11) Data.write(str(self.Counts[i - 12]) + "\n") j += 1 + Data.close() # Update total counts and display in the extra frame TabList[num][1].Total_Counts.set(total_sum) TabList[num][1].Extra_Frame.grid(column=0, row=1, sticky="nw") - tk.Label(TabList[num][1].Extra_Frame, text=TabList[num][1].Real_Time.get()).grid(row=0) - tk.Label(TabList[num][1].Extra_Frame, text='Total Sum of Counts is: ' + - str(TabList[num][1].Total_Counts.get())).grid(row=1) + + tk.Label(TabList[num][1].Extra_Frame, text="File 1:").grid(row=0, column=0, sticky="w") + tk.Label(TabList[num][1].Extra_Frame, text=TabList[num][1].Real_Time.get()).grid(row=0, column=1, sticky="w") + tk.Label(TabList[num][1].Extra_Frame, text='Total: ' + str(TabList[num][1].Total_Counts.get())).grid(row=0, column=2, sticky="w") # Set plot title based on tab type if TabTracker[num] < 0: self.Title = 'Calibration Trial ' + str(-TabTracker[num]) elif TabTracker[num] > 0: self.Title = 'Material Trial ' + str(TabTracker[num]) + else: + self.Title = 'XRA Analysis' + + # If this is an XRA tab and File2 is provided, parse second dataset + if getattr(TabList[num][1], 'tab_kind', None) == 5 and File2: + for i in range(12, len(File2) - 1): + self.Counts2.append(int(File2[i])) + self.Channel2.append(i - 11) # Create the matplotlib figure and embed it in the Tkinter frame self.figure = Figure(figsize=(6, 4), dpi=100) @@ -2716,10 +2796,16 @@ def Structure(self, File, Name): def subplots(self): # Create the plot with channels on x-axis and counts on y-axis self.axes = self.figure.add_subplot() - self.axes.plot(self.Channel, self.Counts, '.', markersize=7, label='Run') + self.axes.plot(self.Channel, self.Counts, '*', label='Source') + + # If second dataset exists, plot it + if self.Counts2: + self.axes.plot(self.Channel2, self.Counts2, '+', label='Source + Film', color='red') + self.axes.set_title(self.Title) self.axes.set_xlabel('Channel') self.axes.set_ylabel('Counts') + self.axes.legend() # Connect mouse click event for manual selection self.figure.canvas.mpl_connect('button_press_event', onclick) diff --git a/Include/Analyze.py b/Include/Analyze.py index bafe994..0899a96 100644 --- a/Include/Analyze.py +++ b/Include/Analyze.py @@ -2,25 +2,27 @@ import numpy as np def Analyze(y, ROId, ROIu): - centroids = [] sigmas = [] error = [] for r in range(len(ROId)): - - if ROId[r] == 0 or ROId[r] == '' or ROIu[r] == 0 or ROIu[r] == '': - pass - else: + try: x1 = float(ROId[r]) x2 = float(ROIu[r]) + except (ValueError, TypeError): + continue # Skip invalid input + + # Skip if ROI is zero-width, negative, or too narrow to be useful + if x2 <= x1 or (x2 - x1) < 2: + continue + + Cent = peakCentroid(x1, x2, y) + Sigma = peakSigma(x1, x2, y) + Net = peakNet(x1, x2, y) - Cent = peakCentroid(x1,x2,y) - Sigma = peakSigma(x1,x2,y) - Net = peakNet(x1,x2,y) + centroids.append(Cent) + sigmas.append(Sigma) + error.append(Sigma / np.sqrt(Net) if Net > 0 else 0) - centroids.append(Cent) - sigmas.append(Sigma) - error.append(Sigma/np.sqrt(Net)) - - return centroids, error, sigmas \ No newline at end of file + return centroids, error, sigmas diff --git a/Include/__pycache__/Analyze.cpython-38.pyc b/Include/__pycache__/Analyze.cpython-38.pyc index 7da708dabe24c220edda3ad5950c4c0cb9c105e5..fc7f074b1e2a3c92deac555bc8590a4ffac6633e 100644 GIT binary patch delta 412 zcmY+Ay-ve06ov1#ohES_387L2Q86Hvc4kB{00RpHl%EPQR7zT;hLpPQ0J>3!GO<;C zfp+H^Sa<={F>kAghkIwOTWLf^1Iv-AW8HN(fcxk-eFQ?({*tR3%;iri%?kz7p*EA!f(k4tWcMY>&_O2nT3D8`N4(mzPM6hbXAZkIzZh$;;dpL~j z96^jdQ0XAj4!Puw2_`)Eb;*_$OYQz~Kz#0zzd!^MhUAJILqW`XLcNpJ{#;V9z%6rB z%O%?g}49E Qk4I^8U~e=OCOq`mHzP?{!2kdN delta 361 zcmY+9u};G<5QcqcJ8{xRLZw1QNS#<^Jm5r%= z1s;HfxA4OtE-9+Or~lXYpMS~nmtO1WK8ixY=j|+eir3M@%I9#+Dn8j}qLeJf(pFd? zsCaI~<9q25kasL5FvsHKm$7C1v)?iA^Kmw?xa(C=`poSev$2wVG9)Tl26L1n!* zZT$)>=+)nFdphKnKm|N_faieNg>EDE5JEV@ykBQHyfEC$`;GPf+aX71E}xf^mo&L* KUM&=x0fRqHl1xPa From 01248f9003630dc3407d27e0d94176d0f317139c Mon Sep 17 00:00:00 2001 From: aysuismailova Date: Fri, 1 Aug 2025 16:57:18 +0100 Subject: [PATCH 26/44] Code Update: Made an error message when entered roi is not correct --- ARC-TF.py | 39 +- Include/Analyze.py | 8 +- Include/__pycache__/Analyze.cpython-38.pyc | Bin 707 -> 1067 bytes XRA/Data/Al_foil_CuSource_01Aug.mca | 2132 ++++++++++++++++++++ XRA/Data/CuSource_01Aug.mca | 2132 ++++++++++++++++++++ XRA/GaussianFit.py | 8 +- XRA/PlotData.py | 4 +- 7 files changed, 4314 insertions(+), 9 deletions(-) create mode 100644 XRA/Data/Al_foil_CuSource_01Aug.mca create mode 100644 XRA/Data/CuSource_01Aug.mca diff --git a/ARC-TF.py b/ARC-TF.py index cebfbb6..8406886 100644 --- a/ARC-TF.py +++ b/ARC-TF.py @@ -238,6 +238,12 @@ def File_Reader(Document, Separator, Decimal, Upload): if Upload == 'Yes': TabList[num][1].Real_Time.set(lines[8] + ' s') + if TabList[num][1].tab_kind == 5: + try: + TabList[num][1].Real_Time_2.set(lines[8] + ' s') + except AttributeError: + TabList[num][1].Real_Time_2 = tk.StringVar(value=lines[8] + ' s') + start = 12 try: end = next(i for i, line in enumerate(lines) if '<>' in line) @@ -417,6 +423,10 @@ def Final_Results(tracker): scrollregion=tab_manager.mat_canvas.bbox('all'), width=e.width)) return + +############################################################################### + + ############################################################################### # Allows the user to choose which linear regression(s) to use for calibration # ############################################################################### @@ -1284,6 +1294,20 @@ def ROI_Select_Alg(): print("roi_down:", roi_down) print("roi_up:", roi_up) print("Number of ROIs passed to Analyze:", len(roi_down)) + + for idx, (d, u) in enumerate(zip(roi_down, roi_up)): + try: + x1 = float(d) + x2 = float(u) + except (ValueError, TypeError): + tk.messagebox.showerror("Error", f"Invalid ROI input at peak {idx+1}: \nROId = {d}, ROIu = {u}") + return + + if x2 <= x1 or (x2 - x1) < 2: + tk.messagebox.showerror("Error", f"Invalid ROI range at peak {idx+1}: \nx1 = {x1}, x2 = {x2} " + f"\nUpper bound must be greater than lower bound and difference must be at least 2.") + return + # Analyze the counts within each ROI to get centroids, uncertainties, and sigma/sqrt(N) cents, errs, sigmas = Analyze(counts, roi_down, roi_up) @@ -2115,6 +2139,9 @@ def popup(self, name): self.warning.wait_visibility() self.warning.geometry('700x300') self.warning.grab_set() + + def show(message): + tk.messagebox.showwarning("Warning", message) def Images(self, name, picture, site): # Display a decay chain image in a popup window, with optional source link @@ -2446,7 +2473,10 @@ def AnalysisTab(self, tab_kind): self.peaks_widths.set(Peak_Width.get()) self.Real_Time = tk.StringVar() - + self.Real_Time_2 = tk.StringVar() + self.Real_Time_2.set('5') + + self.Total_Counts = tk.StringVar() self.variable1 = tk.IntVar() @@ -2770,9 +2800,14 @@ def Structure(self, File, Name, File2 = None): TabList[num][1].Total_Counts.set(total_sum) TabList[num][1].Extra_Frame.grid(column=0, row=1, sticky="nw") - tk.Label(TabList[num][1].Extra_Frame, text="File 1:").grid(row=0, column=0, sticky="w") + tk.Label(TabList[num][1].Extra_Frame, text="Source:").grid(row=0, column=0, sticky="w") tk.Label(TabList[num][1].Extra_Frame, text=TabList[num][1].Real_Time.get()).grid(row=0, column=1, sticky="w") tk.Label(TabList[num][1].Extra_Frame, text='Total: ' + str(TabList[num][1].Total_Counts.get())).grid(row=0, column=2, sticky="w") + + #For XRA tab, also show File 2 time + if TabList[num][1].tab_kind == 5: + tk.Label(TabList[num][1].Extra_Frame, text="Source+Film:").grid(row=1, column=0, sticky="w") + tk.Label(TabList[num][1].Extra_Frame, text=TabList[num][1].Real_Time_2.get()).grid(row=1, column=1, sticky="w") # Set plot title based on tab type if TabTracker[num] < 0: diff --git a/Include/Analyze.py b/Include/Analyze.py index 0899a96..df22a6c 100644 --- a/Include/Analyze.py +++ b/Include/Analyze.py @@ -1,5 +1,6 @@ from Include.FitData import* import numpy as np +import warnings def Analyze(y, ROId, ROIu): centroids = [] @@ -11,10 +12,15 @@ def Analyze(y, ROId, ROIu): x1 = float(ROId[r]) x2 = float(ROIu[r]) except (ValueError, TypeError): + warnings.warn(f"Invalid ROI input at index {r}: ROId = {ROId[r]}, ROIu = {ROIu[r]}", UserWarning) continue # Skip invalid input # Skip if ROI is zero-width, negative, or too narrow to be useful - if x2 <= x1 or (x2 - x1) < 2: + if x2 <= x1: + warnings.warn(f"ROI upper bound must be greater than lower bound at index {r}: x1 = {x1}, x2 = {x2}", UserWarning) + continue + elif (x2 - x1) < 2: + warnings.warn(f"ROI too narrow at index {r} (width = {x2 - x1}). Minimum width of 2 required.", UserWarning) continue Cent = peakCentroid(x1, x2, y) diff --git a/Include/__pycache__/Analyze.cpython-38.pyc b/Include/__pycache__/Analyze.cpython-38.pyc index fc7f074b1e2a3c92deac555bc8590a4ffac6633e..fd0dab49a11eeb798691e80e09b1364104fbf8b2 100644 GIT binary patch literal 1067 zcmYjQO>fgc5ZztdaqPH&DkM^YU=Ij2s7gc+94bJ36i^QoiMA9Xp~`eOi4}XDtk>j2 z?x`F(^j<2pH~1&~08V@5)W5)qStlyp)y%vdz4tO%+dB&jK7#e@`?p@tM(B?@TwVkY zPa(3qkQib(M%$*67`I7Tt+vH1W`9L(n~^QlaL$2=8d&4|oBNi*^A$i{fOr9stzm?^ z=)i)oAsmGiF7P4jb##P3T|cNyZz)pXqOybz@qr7N%yD%WiRU&_ma;pf@5=%svz2pN zVZc9z;buBO)=YJbPAbYhBN%-|!}>=g$OlwZ3%8Huk5XrsI;U_!Qz@$d`NO(cG0Zw* zZXe0tCA(U(y;&a={)sblAJ!Fcp^px&15bGu*jN4qt`*j4t?CFxCC5$6R-@VZ zz`1!frgdYf(v*r&%5-#T1fMRCBBpvqbEnayZz2&Tc|vE+v_n^^ z1d4{EugKnQ{)g>YkV`mjTn@9FE_IO3q0=3R<~sw22)!XRuypDw`oCKKZ@bUC!0 zV^GN;)Sk)M3OupLtX^Ajp))HU7&h}wc8&;!TPBvwvn-GlbM;|_&d!7h4(7OPM@e#q zL1>uq4DYgYD6`rx*<}@4CtW8VTGcR>Xt%wYjHQLrKs<*dq) zK!GJv+pYy)Y@GG4l9B8jp5EwcTelZpf7H9XSMFby9#wSgAGWMq_(#24IZ8UmZjqrI I>?8T~2d!~U?*IS* diff --git a/XRA/Data/Al_foil_CuSource_01Aug.mca b/XRA/Data/Al_foil_CuSource_01Aug.mca new file mode 100644 index 0000000..1b3df77 --- /dev/null +++ b/XRA/Data/Al_foil_CuSource_01Aug.mca @@ -0,0 +1,2132 @@ +<> +TAG - live_data +DESCRIPTION - +GAIN - 3 +THRESHOLD - 0 +LIVE_MODE - 0 +PRESET_TIME - 0 +LIVE_TIME - 1798.697000 +REAL_TIME - 1800.000000 +START_TIME - 08/01/2025 14:03:24 +SERIAL_NUMBER - 0 +<> +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +46 +39 +28 +26 +26 +33 +23 +36 +34 +32 +20 +37 +22 +25 +19 +28 +25 +33 +28 +25 +20 +20 +16 +30 +30 +25 +28 +36 +24 +21 +26 +23 +28 +18 +17 +23 +15 +30 +22 +14 +31 +20 +20 +22 +27 +20 +22 +27 +21 +32 +23 +20 +26 +22 +27 +18 +31 +20 +32 +23 +29 +23 +19 +20 +12 +20 +12 +24 +17 +25 +14 +13 +25 +24 +13 +16 +19 +15 +19 +21 +26 +21 +20 +27 +23 +18 +20 +16 +20 +28 +26 +19 +19 +18 +16 +22 +13 +19 +23 +14 +18 +22 +17 +17 +21 +16 +20 +22 +16 +16 +25 +16 +22 +24 +18 +15 +18 +26 +14 +21 +17 +22 +16 +19 +13 +17 +21 +14 +19 +14 +23 +21 +21 +22 +15 +16 +18 +16 +18 +22 +13 +16 +20 +13 +14 +18 +17 +19 +21 +11 +19 +23 +21 +14 +20 +14 +20 +19 +22 +18 +33 +28 +31 +21 +22 +23 +28 +20 +26 +19 +17 +22 +23 +16 +19 +15 +27 +22 +23 +31 +26 +24 +20 +19 +18 +20 +29 +28 +29 +30 +30 +71 +63 +80 +96 +71 +68 +54 +28 +30 +16 +23 +33 +21 +22 +15 +34 +19 +27 +24 +20 +18 +29 +32 +26 +28 +31 +23 +34 +22 +19 +27 +16 +16 +34 +18 +20 +23 +42 +33 +44 +34 +37 +35 +30 +37 +33 +36 +49 +55 +104 +189 +553 +1411 +3117 +5472 +7644 +8598 +7534 +5317 +3043 +1405 +558 +208 +77 +49 +34 +37 +33 +33 +29 +29 +35 +23 +36 +35 +35 +51 +77 +95 +184 +387 +714 +1109 +1401 +1491 +1248 +908 +466 +262 +116 +29 +25 +12 +10 +10 +10 +8 +6 +5 +9 +7 +10 +8 +6 +6 +7 +6 +5 +10 +7 +6 +7 +11 +7 +5 +3 +9 +2 +5 +10 +7 +4 +10 +3 +7 +3 +9 +3 +9 +5 +9 +4 +8 +4 +10 +10 +6 +10 +14 +10 +7 +8 +2 +6 +5 +6 +8 +3 +2 +3 +4 +4 +5 +5 +3 +5 +2 +4 +2 +2 +1 +5 +3 +6 +2 +6 +2 +2 +4 +4 +1 +3 +3 +5 +2 +3 +5 +2 +4 +2 +5 +3 +1 +1 +2 +2 +3 +2 +1 +3 +2 +2 +3 +5 +4 +1 +3 +3 +4 +1 +3 +2 +5 +2 +6 +4 +10 +3 +1 +2 +6 +2 +3 +0 +1 +1 +0 +0 +4 +1 +2 +3 +1 +1 +5 +3 +5 +4 +2 +1 +1 +4 +0 +0 +2 +4 +7 +2 +0 +1 +2 +1 +2 +0 +1 +2 +2 +3 +2 +0 +2 +3 +1 +6 +2 +1 +1 +2 +1 +1 +1 +0 +5 +1 +2 +0 +0 +2 +4 +1 +5 +2 +2 +0 +3 +2 +3 +2 +2 +0 +4 +0 +0 +3 +1 +1 +1 +1 +3 +3 +1 +1 +3 +1 +2 +2 +0 +4 +1 +2 +2 +1 +2 +0 +2 +2 +2 +2 +3 +0 +1 +2 +1 +1 +1 +1 +1 +1 +1 +2 +1 +2 +1 +0 +0 +0 +0 +2 +1 +1 +0 +1 +1 +0 +0 +0 +2 +3 +0 +3 +1 +1 +3 +2 +0 +0 +2 +2 +0 +0 +1 +0 +1 +1 +0 +4 +1 +0 +4 +2 +3 +3 +1 +0 +1 +0 +1 +1 +0 +1 +1 +0 +0 +3 +0 +0 +1 +0 +2 +1 +2 +2 +1 +0 +1 +1 +1 +0 +0 +0 +0 +1 +0 +0 +1 +1 +0 +1 +0 +0 +1 +2 +2 +1 +0 +1 +0 +0 +2 +5 +2 +0 +2 +1 +0 +3 +1 +0 +0 +2 +1 +1 +3 +1 +0 +4 +1 +1 +0 +1 +2 +0 +3 +1 +2 +1 +0 +2 +0 +2 +0 +2 +1 +1 +1 +3 +1 +0 +1 +1 +4 +2 +2 +0 +2 +1 +1 +0 +3 +0 +3 +1 +0 +3 +1 +1 +0 +1 +2 +0 +0 +4 +0 +1 +2 +2 +0 +1 +3 +1 +0 +0 +0 +0 +0 +0 +1 +0 +3 +1 +0 +0 +0 +0 +0 +0 +0 +2 +2 +2 +1 +0 +2 +1 +1 +0 +1 +0 +2 +1 +3 +3 +1 +3 +1 +2 +1 +0 +0 +2 +0 +2 +2 +0 +0 +1 +0 +0 +0 +2 +1 +2 +1 +1 +2 +0 +1 +0 +1 +0 +2 +2 +1 +1 +1 +1 +0 +0 +0 +2 +0 +0 +0 +0 +1 +0 +0 +0 +0 +0 +2 +1 +1 +1 +1 +0 +1 +1 +1 +3 +1 +2 +1 +2 +1 +2 +2 +1 +2 +3 +2 +1 +2 +1 +2 +1 +1 +2 +2 +1 +1 +0 +1 +1 +0 +3 +3 +2 +0 +1 +3 +1 +3 +2 +2 +5 +2 +1 +4 +2 +5 +3 +7 +3 +3 +3 +4 +1 +1 +0 +1 +0 +1 +0 +0 +1 +0 +0 +0 +0 +0 +1 +0 +0 +1 +1 +0 +0 +1 +4 +0 +1 +3 +3 +2 +4 +6 +2 +1 +4 +0 +0 +1 +2 +1 +0 +0 +0 +0 +0 +0 +0 +0 +3 +2 +1 +0 +1 +0 +3 +0 +0 +1 +2 +5 +2 +3 +3 +2 +1 +1 +0 +2 +0 +1 +0 +0 +1 +1 +0 +0 +0 +0 +1 +0 +1 +0 +0 +0 +2 +1 +1 +0 +1 +0 +1 +0 +0 +1 +1 +0 +1 +1 +3 +3 +2 +1 +2 +0 +0 +1 +1 +2 +1 +0 +0 +1 +2 +0 +1 +1 +1 +3 +3 +0 +0 +1 +0 +1 +0 +0 +0 +0 +0 +0 +0 +2 +1 +2 +2 +1 +1 +1 +1 +4 +1 +1 +0 +1 +0 +2 +2 +0 +2 +1 +1 +0 +4 +1 +0 +0 +0 +1 +0 +0 +0 +0 +1 +2 +1 +1 +0 +2 +1 +1 +1 +0 +0 +3 +1 +0 +0 +2 +1 +2 +2 +1 +2 +0 +0 +0 +0 +2 +2 +2 +1 +3 +0 +1 +1 +0 +0 +1 +1 +0 +0 +0 +0 +0 +0 +0 +2 +2 +3 +0 +0 +0 +2 +0 +3 +1 +0 +1 +2 +0 +1 +4 +1 +2 +1 +0 +2 +2 +0 +0 +0 +1 +2 +0 +0 +1 +2 +0 +2 +1 +0 +0 +0 +0 +3 +0 +0 +0 +1 +1 +2 +1 +2 +0 +2 +1 +1 +2 +1 +2 +0 +2 +1 +0 +0 +1 +0 +1 +1 +0 +2 +0 +0 +0 +1 +0 +0 +0 +0 +0 +1 +1 +0 +1 +0 +0 +0 +0 +1 +0 +0 +1 +0 +0 +2 +0 +1 +1 +1 +0 +2 +0 +1 +1 +0 +0 +1 +0 +0 +1 +1 +0 +0 +0 +1 +4 +1 +0 +2 +2 +2 +1 +1 +2 +1 +1 +1 +1 +1 +0 +1 +0 +1 +1 +0 +1 +2 +1 +1 +2 +1 +0 +0 +1 +2 +1 +2 +3 +5 +1 +0 +1 +1 +0 +0 +0 +0 +1 +1 +0 +0 +1 +0 +3 +3 +0 +0 +3 +1 +1 +0 +2 +0 +1 +0 +0 +1 +2 +1 +0 +0 +1 +1 +1 +1 +1 +0 +2 +2 +1 +1 +1 +4 +0 +0 +1 +2 +0 +0 +2 +0 +1 +2 +0 +0 +1 +3 +2 +1 +0 +3 +2 +1 +2 +0 +3 +0 +2 +0 +3 +0 +5 +0 +0 +1 +2 +5 +0 +2 +0 +1 +1 +1 +2 +0 +3 +1 +0 +1 +2 +0 +1 +1 +0 +0 +1 +1 +2 +1 +1 +0 +0 +0 +1 +2 +3 +2 +4 +2 +1 +4 +5 +1 +5 +1 +0 +3 +3 +0 +1 +3 +5 +2 +3 +3 +4 +2 +3 +0 +2 +1 +4 +3 +1 +5 +1 +4 +3 +3 +1 +1 +6 +4 +5 +1 +3 +2 +0 +0 +4 +3 +3 +3 +1 +3 +1 +2 +2 +2 +4 +3 +5 +2 +2 +3 +5 +3 +4 +1 +1 +5 +2 +0 +3 +2 +2 +4 +5 +1 +3 +5 +7 +2 +2 +2 +3 +3 +1 +1 +5 +1 +2 +4 +3 +2 +3 +4 +3 +5 +3 +5 +5 +3 +3 +6 +4 +2 +4 +3 +7 +2 +2 +3 +8 +4 +8 +5 +10 +2 +7 +4 +4 +6 +3 +9 +3 +7 +6 +8 +3 +3 +5 +3 +4 +3 +5 +3 +7 +5 +6 +2 +5 +5 +7 +7 +3 +5 +5 +9 +4 +4 +9 +4 +3 +2 +9 +5 +6 +1 +7 +7 +9 +6 +6 +5 +6 +5 +5 +4 +7 +5 +9 +6 +6 +7 +8 +7 +9 +8 +9 +5 +9 +7 +4 +6 +6 +3 +7 +12 +11 +7 +9 +4 +11 +9 +9 +9 +9 +7 +8 +13 +10 +17 +14 +15 +1 +10 +11 +11 +7 +11 +11 +6 +13 +7 +10 +13 +14 +15 +9 +10 +13 +12 +11 +8 +10 +10 +10 +9 +13 +18 +22 +12 +21 +15 +8 +12 +12 +10 +10 +16 +19 +19 +18 +15 +13 +20 +13 +14 +20 +14 +15 +15 +16 +16 +12 +21 +16 +19 +20 +20 +21 +20 +28 +27 +17 +29 +26 +23 +32 +29 +28 +19 +31 +27 +31 +33 +37 +42 +33 +44 +40 +37 +35 +40 +29 +41 +32 +37 +36 +47 +43 +53 +41 +31 +47 +60 +54 +68 +54 +50 +49 +53 +51 +51 +54 +42 +60 +67 +49 +50 +50 +56 +60 +58 +45 +49 +73 +49 +59 +50 +40 +42 +47 +68 +61 +47 +43 +55 +50 +46 +45 +50 +49 +52 +46 +49 +44 +45 +49 +42 +37 +41 +37 +46 +39 +38 +41 +40 +31 +44 +33 +41 +22 +32 +39 +28 +39 +25 +27 +30 +34 +22 +25 +26 +22 +21 +17 +21 +27 +20 +16 +27 +18 +17 +23 +12 +21 +21 +15 +15 +16 +18 +14 +14 +16 +15 +21 +7 +23 +13 +10 +7 +10 +9 +12 +10 +10 +14 +6 +13 +16 +15 +13 +11 +7 +6 +14 +11 +11 +10 +8 +10 +13 +7 +5 +11 +10 +10 +8 +6 +6 +6 +8 +8 +5 +8 +6 +8 +6 +5 +5 +6 +8 +7 +5 +8 +7 +6 +7 +2 +2 +4 +6 +4 +5 +6 +4 +6 +10 +3 +10 +5 +5 +1 +6 +5 +4 +3 +5 +3 +0 +4 +3 +6 +5 +5 +2 +9 +4 +2 +2 +4 +2 +2 +3 +2 +3 +2 +0 +3 +7 +2 +2 +6 +5 +5 +2 +2 +6 +4 +2 +8 +5 +6 +3 +3 +4 +5 +6 +1 +2 +1 +2 +4 +2 +5 +3 +7 +3 +1 +0 +2 +2 +1 +3 +5 +0 +1 +5 +4 +2 +3 +1 +1 +7 +2 +5 +4 +5 +4 +5 +2 +2 +3 +6 +4 +2 +4 +1 +6 +1 +1 +2 +0 +1 +3 +2 +2 +4 +5 +2 +2 +4 +4 +2 +2 +0 +5 +2 +4 +4 +1 +1 +1 +1 +1 +2 +2 +2 +2 +4 +0 +1 +0 +2 +1 +3 +5 +4 +2 +3 +1 +2 +3 +2 +0 +2 +0 +2 +1 +4 +0 +3 +3 +0 +1 +3 +1 +1 +0 +1 +2 +2 +1 +3 +3 +2 +2 +0 +1 +0 +0 +2 +0 +1 +3 +2 +2 +1 +2 +3 +2 +2 +1 +0 +2 +0 +0 +1 +8 +7 +4 +5 +4 +12 +14 +18 +25 +32 +43 +32 +41 +58 +48 +50 +61 +47 +48 +30 +55 +43 +28 +24 +24 +12 +7 +10 +6 +3 +1 +1 +0 +1 +1 +1 +2 +0 +1 +0 +0 +1 +2 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +1 +0 +0 +0 +1 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +1 +0 +0 +0 +1 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +1 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +1 +0 +0 +1 +0 +0 +0 +0 +1 +1 +0 +0 +<> +<> +RESC=?; Reset Configuration +CLCK=80; 20MHz/80MHz +TPEA=9.600; Peaking Time +GAIF=0.9312; Fine Gain +GAIN=21.162; Total Gain (Analog * Fine) +RESL=204; Detector Reset Lockout +TFLA=0.200; Flat Top +TPFA=50; Fast Channel Peaking Time +PURE=OFF; PUR Interval On/Off +RTDE=OFF; RTD On/Off +MCAS=NORM; MCA Source +MCAC=2048; MCA/MCS Channels +SOFF=OFF; Set Spectrum Offset +AINP=POS; Analog Input Pos/Neg +INOF=DEF; Input Offset +GAIA=15; Analog Gain Index +CUSP=0; Non-Trapezoidal Shaping +PDMD=NORM; Peak Detect Mode (Min/Max) +THSL=0.585; Slow Threshold +TLLD=OFF; LLD Threshold +THFA=230.00; Fast Threshold +DACO=SHAPED; DAC Output +DACF=50; DAC Offset +RTDS=0; RTD Sensitivity +RTDT=0.00; RTD Threshold +BLRM=1; BLR Mode +BLRD=3; BLR Down Correction +BLRU=0; BLR Up Correction +AUO1=SCA8; AUX_OUT Selection +PRET=OFF; Preset Time +PRER=1800.000; Preset Real Time +PREC=OFF; Preset Counts +PRCL=1; Preset Counts Low Threshold +PRCH=8191; Preset Counts High Threshold +HVSE=-110; HV Set +TECS=220; TEC Set +PAPZ=OFF; Pole-Zero +PAPS=8.5; Preamp 8.5/5 (N/A) +SCOE=FA; Scope Trigger Edge +SCOT=12; Scope Trigger Position +SCOG=1; Digital Scope Gain +MCSL=1; MCS Low Threshold +MCSH=8191; MCS High Threshold +MCST=0.00; MCS Timebase +AUO2=ICR; AUX_OUT2 Selection +TPMO=OFF; Test Pulser On/Off +GPED=RI; G.P. Counter Edge +GPIN=AUX1; G.P. Counter Input +GPME=ON; G.P. Counter Uses MCA_EN? +GPGA=ON; G.P. Counter Uses GATE? +GPMC=ON; G.P. Counter Cleared With MCA Counters? +MCAE=OFF; MCA/MCS Enable +VOLU=OFF; Speaker On/Off +CON1=DAC; Connector 1 +CON2=AUXOUT2; Connector 2 +<> +<> +Device Type: PX5 +Serial Number: 2264 +Firmware: 6.07 Build: 3 +FPGA: 6.02 +Fast Count: 5322 +Slow Count: 69835 +Accumulation Time: 1798.697000 +Real Time: 1800.000000 +Dead Time: +HV Volt: -110V +TEC Temp: 223K +Board Temp: 41C +<> diff --git a/XRA/Data/CuSource_01Aug.mca b/XRA/Data/CuSource_01Aug.mca new file mode 100644 index 0000000..4b9e167 --- /dev/null +++ b/XRA/Data/CuSource_01Aug.mca @@ -0,0 +1,2132 @@ +<> +TAG - live_data +DESCRIPTION - +GAIN - 3 +THRESHOLD - 0 +LIVE_MODE - 0 +PRESET_TIME - 0 +LIVE_TIME - 1798.733000 +REAL_TIME - 1800.000000 +START_TIME - 08/01/2025 15:55:42 +SERIAL_NUMBER - 0 +<> +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +23 +31 +28 +28 +20 +39 +32 +31 +26 +27 +26 +25 +27 +28 +31 +26 +23 +25 +23 +24 +37 +30 +27 +25 +22 +26 +31 +19 +22 +34 +26 +19 +25 +24 +23 +14 +20 +14 +25 +26 +20 +26 +20 +27 +22 +20 +18 +29 +25 +19 +22 +17 +18 +31 +21 +28 +18 +22 +23 +22 +15 +23 +32 +23 +23 +22 +13 +20 +25 +20 +22 +23 +21 +17 +20 +18 +31 +17 +24 +16 +28 +20 +22 +24 +24 +25 +22 +16 +17 +15 +16 +22 +17 +19 +22 +23 +24 +27 +17 +18 +21 +17 +21 +30 +22 +22 +14 +16 +15 +21 +14 +22 +12 +23 +16 +22 +14 +16 +18 +22 +13 +20 +18 +17 +23 +18 +21 +18 +20 +33 +22 +15 +20 +17 +17 +24 +17 +15 +31 +11 +22 +24 +18 +11 +20 +18 +17 +14 +22 +22 +16 +27 +14 +21 +23 +10 +22 +20 +9 +34 +30 +44 +44 +44 +34 +24 +24 +20 +18 +30 +24 +25 +26 +24 +15 +18 +27 +29 +27 +26 +25 +23 +11 +16 +15 +22 +16 +26 +25 +33 +61 +61 +81 +79 +91 +77 +63 +41 +39 +22 +36 +25 +21 +22 +17 +21 +18 +23 +25 +34 +28 +20 +21 +29 +25 +30 +32 +26 +33 +33 +22 +29 +26 +16 +25 +24 +28 +40 +37 +48 +30 +26 +32 +30 +42 +31 +32 +53 +58 +63 +102 +238 +587 +1626 +3563 +6360 +9082 +10107 +9098 +6518 +3781 +1753 +627 +263 +77 +48 +37 +47 +28 +27 +36 +29 +27 +31 +40 +38 +54 +51 +69 +111 +209 +402 +800 +1227 +1604 +1730 +1570 +1081 +596 +264 +119 +40 +16 +13 +8 +6 +7 +8 +10 +8 +10 +9 +8 +13 +7 +9 +12 +9 +8 +4 +6 +3 +6 +10 +7 +11 +8 +5 +5 +6 +3 +6 +5 +5 +7 +6 +4 +3 +5 +10 +5 +8 +5 +4 +8 +11 +5 +9 +10 +10 +7 +8 +4 +3 +6 +5 +4 +9 +5 +4 +5 +2 +4 +6 +1 +6 +2 +8 +2 +2 +7 +6 +2 +5 +4 +3 +4 +5 +10 +2 +2 +4 +4 +1 +1 +3 +1 +4 +2 +4 +5 +4 +2 +2 +2 +3 +1 +4 +2 +3 +2 +1 +1 +2 +6 +3 +2 +0 +3 +0 +3 +3 +4 +5 +3 +3 +7 +7 +5 +1 +3 +7 +3 +4 +1 +2 +2 +1 +2 +1 +1 +6 +2 +1 +1 +2 +3 +7 +0 +5 +3 +1 +0 +1 +2 +2 +3 +4 +1 +2 +1 +0 +2 +3 +2 +1 +1 +1 +2 +2 +2 +5 +0 +2 +1 +3 +1 +2 +2 +0 +0 +4 +1 +1 +1 +0 +2 +4 +0 +1 +1 +2 +3 +3 +5 +3 +4 +3 +3 +1 +3 +3 +2 +2 +1 +0 +3 +2 +1 +1 +1 +1 +1 +0 +0 +4 +1 +1 +1 +2 +1 +0 +2 +2 +1 +2 +1 +5 +4 +0 +1 +0 +3 +0 +0 +0 +1 +3 +2 +0 +0 +1 +1 +1 +1 +1 +0 +0 +5 +3 +0 +2 +0 +2 +0 +1 +2 +2 +2 +1 +3 +1 +1 +1 +0 +1 +0 +2 +0 +0 +0 +0 +1 +1 +0 +0 +2 +4 +2 +4 +3 +0 +1 +2 +1 +1 +0 +3 +1 +2 +1 +3 +1 +2 +1 +1 +1 +0 +0 +1 +0 +2 +3 +1 +1 +0 +0 +0 +0 +1 +2 +2 +3 +1 +4 +0 +0 +0 +2 +1 +0 +2 +1 +0 +2 +2 +2 +1 +1 +1 +1 +1 +1 +0 +0 +2 +1 +2 +2 +1 +1 +1 +0 +0 +1 +2 +1 +1 +1 +0 +1 +1 +2 +1 +0 +2 +1 +1 +0 +2 +1 +1 +0 +1 +1 +0 +1 +1 +0 +1 +1 +1 +1 +1 +1 +0 +2 +1 +0 +1 +0 +0 +1 +1 +1 +1 +1 +0 +1 +3 +1 +0 +0 +1 +1 +1 +2 +1 +1 +1 +1 +1 +1 +0 +1 +0 +0 +3 +1 +1 +0 +1 +1 +1 +0 +0 +1 +1 +1 +0 +0 +0 +3 +0 +0 +2 +0 +0 +1 +4 +1 +2 +2 +0 +2 +2 +1 +0 +3 +1 +2 +1 +0 +0 +0 +0 +1 +0 +0 +1 +0 +1 +1 +0 +1 +0 +1 +2 +0 +2 +1 +2 +2 +1 +0 +0 +1 +1 +3 +0 +4 +1 +1 +1 +0 +1 +0 +3 +3 +1 +2 +1 +0 +0 +1 +1 +0 +1 +1 +0 +1 +1 +0 +2 +1 +0 +0 +0 +4 +0 +3 +3 +1 +1 +1 +2 +1 +0 +1 +0 +2 +2 +2 +2 +0 +1 +2 +1 +2 +2 +2 +0 +2 +1 +4 +2 +3 +0 +1 +3 +4 +2 +4 +1 +3 +2 +2 +2 +0 +4 +2 +1 +2 +1 +0 +0 +3 +0 +1 +1 +1 +1 +0 +0 +2 +0 +0 +1 +1 +0 +3 +2 +3 +2 +2 +2 +4 +1 +3 +1 +2 +0 +4 +2 +1 +1 +0 +0 +0 +0 +1 +1 +0 +0 +1 +1 +0 +0 +0 +2 +0 +0 +0 +0 +1 +1 +1 +0 +2 +0 +1 +0 +0 +1 +1 +0 +0 +0 +0 +1 +0 +1 +0 +3 +0 +0 +0 +1 +2 +0 +0 +2 +0 +0 +1 +3 +2 +2 +2 +1 +1 +4 +1 +2 +0 +2 +0 +2 +1 +2 +1 +1 +0 +1 +1 +0 +0 +3 +0 +1 +1 +0 +0 +1 +1 +1 +1 +0 +0 +0 +0 +1 +0 +2 +0 +0 +1 +2 +0 +0 +1 +1 +2 +1 +1 +0 +2 +1 +3 +2 +0 +0 +0 +0 +2 +0 +0 +1 +1 +1 +0 +1 +0 +1 +0 +0 +2 +1 +0 +0 +1 +0 +0 +0 +0 +0 +1 +0 +0 +0 +1 +1 +1 +0 +1 +1 +2 +2 +3 +0 +2 +0 +1 +0 +0 +0 +0 +0 +1 +0 +1 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +1 +0 +0 +1 +1 +0 +0 +1 +0 +2 +0 +0 +2 +1 +0 +2 +1 +0 +1 +1 +0 +0 +1 +0 +2 +1 +0 +1 +0 +0 +1 +1 +1 +1 +0 +2 +0 +0 +0 +1 +1 +2 +1 +1 +0 +1 +2 +0 +0 +1 +1 +2 +0 +1 +1 +1 +0 +0 +0 +0 +1 +0 +1 +0 +0 +1 +1 +1 +0 +0 +1 +0 +1 +2 +0 +1 +1 +0 +1 +2 +2 +1 +0 +0 +0 +2 +0 +1 +0 +0 +0 +0 +0 +0 +1 +0 +3 +0 +2 +0 +2 +2 +2 +0 +1 +2 +0 +0 +0 +2 +0 +0 +1 +0 +3 +2 +1 +1 +1 +1 +2 +0 +2 +1 +0 +3 +1 +1 +0 +2 +0 +2 +0 +0 +0 +0 +0 +1 +1 +2 +0 +0 +4 +3 +1 +0 +0 +0 +0 +1 +2 +0 +1 +2 +0 +2 +0 +0 +2 +2 +2 +4 +1 +0 +1 +2 +1 +1 +1 +3 +1 +1 +1 +5 +1 +2 +0 +1 +1 +0 +1 +1 +1 +0 +0 +1 +1 +1 +2 +1 +1 +1 +1 +1 +2 +1 +0 +2 +0 +2 +4 +2 +0 +0 +1 +1 +2 +1 +0 +0 +0 +2 +4 +3 +3 +2 +4 +1 +1 +1 +3 +3 +3 +1 +1 +1 +0 +2 +2 +1 +2 +1 +2 +4 +2 +1 +1 +0 +2 +5 +5 +1 +2 +7 +4 +2 +5 +1 +1 +1 +2 +3 +2 +0 +0 +3 +1 +4 +2 +3 +2 +1 +3 +1 +3 +2 +1 +2 +6 +1 +4 +1 +1 +3 +3 +3 +1 +2 +5 +1 +4 +1 +3 +0 +2 +4 +7 +1 +4 +1 +4 +3 +4 +2 +4 +4 +2 +4 +4 +1 +5 +5 +3 +1 +4 +2 +6 +2 +4 +6 +1 +3 +2 +1 +3 +1 +5 +6 +0 +1 +5 +2 +8 +5 +7 +3 +3 +5 +4 +5 +3 +4 +3 +3 +4 +4 +6 +3 +5 +8 +2 +3 +3 +3 +6 +7 +5 +6 +3 +2 +5 +4 +1 +2 +5 +5 +4 +3 +4 +5 +1 +6 +4 +2 +4 +3 +4 +7 +3 +4 +7 +5 +2 +10 +5 +3 +10 +7 +4 +3 +11 +3 +3 +6 +7 +6 +6 +5 +5 +3 +5 +6 +8 +7 +3 +2 +8 +2 +3 +4 +7 +6 +8 +10 +9 +3 +7 +7 +9 +9 +1 +7 +6 +6 +4 +3 +5 +6 +4 +8 +10 +5 +5 +8 +5 +3 +4 +7 +10 +3 +6 +4 +4 +4 +7 +8 +8 +9 +9 +6 +6 +6 +10 +8 +9 +6 +10 +4 +8 +6 +6 +8 +10 +9 +9 +6 +9 +15 +4 +9 +6 +9 +7 +14 +13 +11 +11 +9 +13 +12 +12 +16 +9 +14 +9 +4 +14 +12 +19 +12 +9 +12 +15 +17 +20 +11 +15 +11 +18 +14 +17 +27 +16 +20 +19 +22 +26 +16 +15 +17 +17 +25 +16 +20 +28 +16 +26 +24 +21 +29 +16 +24 +32 +31 +28 +31 +23 +27 +31 +27 +28 +28 +31 +30 +34 +41 +36 +42 +35 +34 +38 +44 +41 +48 +47 +55 +37 +48 +43 +37 +59 +42 +45 +54 +45 +67 +62 +45 +58 +60 +55 +56 +48 +53 +61 +56 +54 +49 +52 +46 +50 +55 +53 +57 +56 +52 +66 +49 +58 +54 +52 +52 +47 +45 +43 +35 +46 +48 +50 +40 +36 +48 +40 +34 +46 +46 +38 +34 +37 +32 +38 +35 +39 +27 +45 +28 +33 +31 +27 +29 +24 +30 +26 +26 +26 +24 +28 +24 +29 +25 +24 +26 +28 +25 +18 +15 +25 +25 +20 +19 +20 +23 +17 +13 +22 +29 +16 +15 +18 +17 +18 +17 +12 +9 +17 +11 +9 +13 +16 +7 +11 +19 +11 +10 +9 +10 +8 +8 +9 +10 +13 +14 +3 +11 +6 +9 +12 +8 +9 +5 +9 +5 +6 +9 +10 +6 +7 +7 +6 +4 +5 +6 +4 +5 +7 +10 +3 +13 +10 +6 +3 +6 +5 +2 +7 +3 +7 +8 +5 +4 +11 +8 +6 +11 +4 +3 +4 +5 +5 +2 +6 +6 +3 +2 +3 +4 +5 +8 +4 +9 +3 +3 +3 +6 +5 +7 +2 +5 +6 +2 +5 +2 +4 +4 +6 +5 +6 +2 +5 +2 +2 +2 +6 +8 +5 +4 +6 +1 +5 +4 +3 +4 +5 +3 +2 +2 +3 +5 +0 +2 +5 +5 +1 +4 +6 +1 +4 +3 +2 +3 +2 +3 +4 +2 +3 +4 +3 +5 +2 +5 +4 +3 +2 +4 +2 +4 +3 +1 +2 +3 +0 +2 +1 +1 +1 +3 +3 +0 +0 +3 +3 +0 +1 +1 +3 +1 +6 +0 +3 +0 +3 +3 +1 +0 +1 +1 +2 +2 +2 +1 +2 +2 +4 +3 +4 +3 +1 +2 +0 +2 +2 +2 +0 +5 +3 +0 +0 +1 +1 +5 +2 +1 +1 +3 +3 +2 +0 +0 +4 +2 +1 +1 +4 +4 +1 +1 +1 +2 +0 +3 +0 +1 +3 +3 +1 +0 +0 +0 +1 +0 +3 +0 +1 +0 +2 +1 +0 +2 +0 +2 +2 +1 +5 +7 +10 +5 +9 +12 +16 +26 +30 +39 +32 +35 +41 +71 +57 +60 +48 +43 +59 +47 +39 +27 +26 +21 +15 +11 +8 +6 +7 +1 +2 +0 +3 +1 +2 +0 +1 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +1 +0 +0 +0 +0 +0 +0 +1 +1 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +1 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +1 +0 +0 +0 +0 +0 +0 +0 +0 +0 +1 +0 +0 +0 +0 +0 +0 +1 +0 +0 +0 +0 +1 +0 +0 +1 +0 +0 +0 +0 +0 +0 +0 +0 +1 +0 +0 +0 +0 +0 +0 +0 +0 +1 +0 +0 +0 +0 +<> +<> +RESC=?; Reset Configuration +CLCK=80; 20MHz/80MHz +TPEA=9.600; Peaking Time +GAIF=0.9312; Fine Gain +GAIN=21.162; Total Gain (Analog * Fine) +RESL=204; Detector Reset Lockout +TFLA=0.200; Flat Top +TPFA=50; Fast Channel Peaking Time +PURE=OFF; PUR Interval On/Off +RTDE=OFF; RTD On/Off +MCAS=NORM; MCA Source +MCAC=2048; MCA/MCS Channels +SOFF=OFF; Set Spectrum Offset +AINP=POS; Analog Input Pos/Neg +INOF=DEF; Input Offset +GAIA=15; Analog Gain Index +CUSP=0; Non-Trapezoidal Shaping +PDMD=NORM; Peak Detect Mode (Min/Max) +THSL=0.585; Slow Threshold +TLLD=OFF; LLD Threshold +THFA=230.00; Fast Threshold +DACO=SHAPED; DAC Output +DACF=50; DAC Offset +RTDS=0; RTD Sensitivity +RTDT=0.00; RTD Threshold +BLRM=1; BLR Mode +BLRD=3; BLR Down Correction +BLRU=0; BLR Up Correction +AUO1=SCA8; AUX_OUT Selection +PRET=OFF; Preset Time +PRER=1800.000; Preset Real Time +PREC=OFF; Preset Counts +PRCL=1; Preset Counts Low Threshold +PRCH=8191; Preset Counts High Threshold +HVSE=-110; HV Set +TECS=220; TEC Set +PAPZ=OFF; Pole-Zero +PAPS=8.5; Preamp 8.5/5 (N/A) +SCOE=FA; Scope Trigger Edge +SCOT=12; Scope Trigger Position +SCOG=1; Digital Scope Gain +MCSL=1; MCS Low Threshold +MCSH=8191; MCS High Threshold +MCST=0.00; MCS Timebase +AUO2=ICR; AUX_OUT2 Selection +TPMO=OFF; Test Pulser On/Off +GPED=RI; G.P. Counter Edge +GPIN=AUX1; G.P. Counter Input +GPME=ON; G.P. Counter Uses MCA_EN? +GPGA=ON; G.P. Counter Uses GATE? +GPMC=ON; G.P. Counter Cleared With MCA Counters? +MCAE=OFF; MCA/MCS Enable +VOLU=OFF; Speaker On/Off +CON1=DAC; Connector 1 +CON2=AUXOUT2; Connector 2 +<> +<> +Device Type: PX5 +Serial Number: 2264 +Firmware: 6.07 Build: 3 +FPGA: 6.02 +Fast Count: 5060 +Slow Count: 79877 +Accumulation Time: 1798.733000 +Real Time: 1800.000000 +Dead Time: +HV Volt: -110V +TEC Temp: 223K +Board Temp: 40C +<> diff --git a/XRA/GaussianFit.py b/XRA/GaussianFit.py index b608ed1..bb1556a 100644 --- a/XRA/GaussianFit.py +++ b/XRA/GaussianFit.py @@ -33,8 +33,8 @@ def get_measurement_time(filename): -time_source = get_measurement_time('Data/NoFilm_for_C12_4h_2.mca') -time_film = get_measurement_time('Data/SampleC12_4h.mca') +time_source = get_measurement_time('Data/CuSource_01Aug.mca') +time_film = get_measurement_time('Data/Al_foil_CuSource_01Aug.mca') time_bkg = get_measurement_time('Data/Combined_bkg_Internship.txt') print(f"Measurement time (source): {time_source} s") @@ -42,8 +42,8 @@ def get_measurement_time(filename): print(f"Measurement time (background): {time_bkg} s") -source_data = load_mca_data('Data/NoFilm_for_C12_4h_2.mca') -source_film_data = load_mca_data('Data/SampleC12_4h.mca') +source_data = load_mca_data('Data/CuSource_01Aug.mca') +source_film_data = load_mca_data('Data/Al_foil_CuSource_01Aug.mca') bkg_data = load_mca_data('Data/Combined_bkg_Internship.txt') # Setting ROI and attenuation coefficient diff --git a/XRA/PlotData.py b/XRA/PlotData.py index e95dd7d..afb0841 100644 --- a/XRA/PlotData.py +++ b/XRA/PlotData.py @@ -44,8 +44,8 @@ def PlotData(File): return ################################################## - -PlotData('Data/Combined_bkg_Internship.txt') +PlotData('Data/CuSource_01Aug.mca') +PlotData('Data/Al_foil_CuSource_01Aug.mca') #PlotData('Data/NoFilm_for_C12_4h_2.mca') From 453825a51b0b201464e5cda76bc2bc1f7e68a8e9 Mon Sep 17 00:00:00 2001 From: aysuismailova Date: Thu, 7 Aug 2025 00:51:29 +0300 Subject: [PATCH 27/44] Code update: Two separate real-time for the files uploaded on the XRA tab --- ARC-TF.py | 17 +++++++---------- Include/__pycache__/Analyze.cpython-313.pyc | Bin 1069 -> 1756 bytes 2 files changed, 7 insertions(+), 10 deletions(-) diff --git a/ARC-TF.py b/ARC-TF.py index 8406886..40f68b5 100644 --- a/ARC-TF.py +++ b/ARC-TF.py @@ -215,6 +215,7 @@ def File_Reader(Document, Separator, Decimal, Upload): 'No' -> Convert values to int 'String' -> Return raw strings (1D only) Upload (str) : If set to 'Yes', updates the GUI with a real-time value from the file. + If set to 'second_file', adds real-time value from the second file to the GUI. Returns: List of values: @@ -238,11 +239,8 @@ def File_Reader(Document, Separator, Decimal, Upload): if Upload == 'Yes': TabList[num][1].Real_Time.set(lines[8] + ' s') - if TabList[num][1].tab_kind == 5: - try: - TabList[num][1].Real_Time_2.set(lines[8] + ' s') - except AttributeError: - TabList[num][1].Real_Time_2 = tk.StringVar(value=lines[8] + ' s') + if Upload == 'second_file': # for adding the real-time from the source+film file + TabList[num][1].Real_Time_2.set(lines[8] + ' s') start = 12 try: @@ -1456,7 +1454,7 @@ def upload_film(): if not film_file: return - film_data = File_Reader(film_file, '0', 'string', 'No') + film_data = File_Reader(film_file, '0', 'string', 'second_file') TabList[num][5].Structure(source_data, source_file, film_data) TabList[num][5].subplots() @@ -2474,10 +2472,9 @@ def AnalysisTab(self, tab_kind): self.Real_Time = tk.StringVar() self.Real_Time_2 = tk.StringVar() - self.Real_Time_2.set('5') - self.Total_Counts = tk.StringVar() + #self.Total_Counts = tk.StringVar() self.variable1 = tk.IntVar() self.variable1.set(0) @@ -2797,12 +2794,12 @@ def Structure(self, File, Name, File2 = None): Data.close() # Update total counts and display in the extra frame - TabList[num][1].Total_Counts.set(total_sum) + #TabList[num][1].Total_Counts.set(total_sum) TabList[num][1].Extra_Frame.grid(column=0, row=1, sticky="nw") tk.Label(TabList[num][1].Extra_Frame, text="Source:").grid(row=0, column=0, sticky="w") tk.Label(TabList[num][1].Extra_Frame, text=TabList[num][1].Real_Time.get()).grid(row=0, column=1, sticky="w") - tk.Label(TabList[num][1].Extra_Frame, text='Total: ' + str(TabList[num][1].Total_Counts.get())).grid(row=0, column=2, sticky="w") + #tk.Label(TabList[num][1].Extra_Frame, text='Total: ' + str(TabList[num][1].Total_Counts.get())).grid(row=0, column=2, sticky="w") #For XRA tab, also show File 2 time if TabList[num][1].tab_kind == 5: diff --git a/Include/__pycache__/Analyze.cpython-313.pyc b/Include/__pycache__/Analyze.cpython-313.pyc index b8520a0bc5b5a7f7d056d3cadfe95aeefd42e620..1cf0ba7079d57c613cf61f3e40864f090982d6e6 100644 GIT binary patch literal 1756 zcma)7O-vg{6n^X7wb%CA`~*_|0t2D6t^zH8BC(Q61PFB_h=RL@)K1BQ7uaI2o!xZ} zNUgX9k^@vElGR2E$5y>?Ty%7lnxv!HJ3=ON<|M zyf^#yz~}P-X}>&Mo4L;c{7ffya}>crGXakv3}NOv^f(Yjj_Zu>C`eXk!)y)c+_WRW zy`nAw1~YFBPqIaKD!ioA`N29NeFSfV#*)sF&PN$)KwI?4Lt?s%T3eoh_kIP?ob?dp z53K>l&QfSwXs#10E&o^%#_k1!0CEf2qi|iyFe2JK$Fd2+oaFRFn3r5+bV`CBI-OC! zZP8r}34);z+5cWEVGFy0<^PjgC~&(E{RqFOlRuR^OU_wl?>ROnL3c4Snmc;tRJ|u! zd8*zku_Le9E5}lD+fhRxai>~%PFV1#T6n|W;6rlrY5>U-t+LriYHV~Yn?Ul~e68dy z++e~-a}vwn=mSA8)-7>eY%?@M)M@)h1sioaTp+gsvHQ;)GKDxh4&MifGdosz5C4|S z1{h?9+5x8E3fllvOh6o7s10eK$O$!$Ms9?Vs--g~l1&2Q${bp72dO%at`K;E!VHB$ zYMM!>6&+2aGFluZGlq#K6f~_XvPrb&jI5zVDtlyb%;*ZDxpqq8x`5_72zW(b+Cmkj zG*c<0$-17(o;ZRBy_r?x<_z^|2(+OgRa29hBsx^4rcejcmAe^LSK@6t#gN`|739_p}|R^-_}MKkr3 z8pm!r3#-#f8M`PPR!r=aNffj=c4%qL8FzIvAYx`7b2Mm$F@xQcMFImm4eD)RUMU=d z(XnH$o%9aO(Oocq$j%aGgMPEl$uBy zWMwjui7T;QO-{@&C~fI^>?&ftkx! zWb@)2v3^-no4dN+yIs<<#O;+<=bF|Vw@aIs_&tB+>O@Z7_M;{CC!y>Iq3XF%m8-}L z^*e%p#kcHRRq{gJj^JAnm&LEb8|~kWu1b$bo{WAmx*q;A_I+hwv+;#+`S(`v*YCdr zVr4F3dCyzi`9J>%Kw0hMkX6!h01k3<`*J;-%!aWU*y?{exOM5fkQMpxdE~YwePq>) z=jB9ROzw&m`#kaZ%b<1aNlkyLqP%I DRtS@E delta 626 zcmcb^yOx9RGcPX}0}u#gmS$8jP2`i1lL7LkG6XXOGkP1$Zkrh16z%rC z$s_PYP;5fU#PZ2<9Zq);%qPO~3z!xpUKZBqaJeHQJ0od<<7E-G4%a*NLXtC-7BF5G zQtEJiz$1E{N9H1r%#4sLJW4lsg!+9ueP^g%;ZeB3BiQfL=`%xgPSO1GS>+3gXV+Ym z)V{`}^HG+8Pws;P1CQv8unXME7g&@(1HHkZ$#RR|GcP%(G$mEfEwjWWu_W;pYhGz? zL1hsrT#G=SUdd1-%fMjFP$UiH+~Tmw%}*)KNwq6d1ad(kS`3VCh7Zh)jEr{}WNtGE NeP$73Q~_yW003!em Date: Fri, 8 Aug 2025 03:58:47 +0300 Subject: [PATCH 28/44] Code update: Now generates two centroids, one for each dataset (still need to work on it) --- ARC-TF.py | 30 +- Temp/Data2.txt | 2035 ++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 2058 insertions(+), 7 deletions(-) create mode 100644 Temp/Data2.txt diff --git a/ARC-TF.py b/ARC-TF.py index 40f68b5..71d0c90 100644 --- a/ARC-TF.py +++ b/ARC-TF.py @@ -250,7 +250,10 @@ def File_Reader(Document, Separator, Decimal, Upload): # Slice the lines to desired range - lines = lines[:end] + if lines and lines[0].strip() == "<>": + lines = lines[start:end] # MCA file → skip header + else: + lines = lines[:end] # Other file → no header skip # If it's a 2D file (e.g. table with multiple columns) @@ -1246,18 +1249,18 @@ def ROI_Select_Alg(): num = Current_Tab() # Read counts data for the current tab - counts = File_Reader(TabList[num][2], '0', 'Yes', 'No') - - # Retrieve ROI lower and upper bounds from the GUI (up to 6 ROIs) + #counts = File_Reader(TabList[num][2], '0', 'Yes', 'No') # Check if the current tab is XRA (TabTracker value == 5) - if TabList[num][1].tab_kind == 5: - # Only use ROI 1 for XRA + # Only use ROI 1 for XRA roi_down = [TabList[num][1].ROIdown1.get()] roi_up = [TabList[num][1].ROIup1.get()] - print("I am here") + + # Load counts from both files (source and film) using stored file paths + counts = File_Reader(TabList[num][5].source_file, '0', 'Yes', 'No') + counts2 = File_Reader(TabList[num][5].film_file, '0', 'Yes', 'No') # Hide ROI 2–6 Entry widgets for i in range(1, min(6, len(TabList[num][1].ROIdown_entries))): @@ -1275,6 +1278,8 @@ def ROI_Select_Alg(): else: # Use all 6 if not XRA + counts = File_Reader(TabList[num][2], '0', 'Yes', 'No') + counts2 = None roi_down = [TabList[num][1].ROIdown1.get(), TabList[num][1].ROIdown2.get(), TabList[num][1].ROIdown3.get(), @@ -1308,16 +1313,24 @@ def ROI_Select_Alg(): # Analyze the counts within each ROI to get centroids, uncertainties, and sigma/sqrt(N) cents, errs, sigmas = Analyze(counts, roi_down, roi_up) + if counts2 is not None: + cents2, errs2, sigmas2 = Analyze(counts2, roi_down, roi_up) + else: + cents2, errs2, sigmas2 = [], [], [] #when non-XRA tab # Write results to file: append if file exists, otherwise create new if os.path.isfile(TabList[num][3]): with open(TabList[num][3], 'a') as results: for i in range(len(cents)): results.write(f"{cents[i]},{errs[i]},{sigmas[i]}\n") + for i in range(len(cents2)): + results.write(f"{cents2[i]},{errs2[i]},{sigmas2[i]}\n") else: with open(TabList[num][3], 'w') as results: for i in range(len(cents)): results.write(f"{cents[i]},{errs[i]},{sigmas[i]}\n") + for i in range(len(cents2)): + results.write(f"{cents2[i]},{errs2[i]},{sigmas2[i]}\n") # Update the results display in the GUI ResultManager() @@ -1455,6 +1468,9 @@ def upload_film(): return film_data = File_Reader(film_file, '0', 'string', 'second_file') + # Store film file path (film_file) for later reading (used in roi_select), and keep the already loaded data (film_data) for immediate use + TabList[num][5].film_file = film_file + TabList[num][5].film_data = film_data TabList[num][5].Structure(source_data, source_file, film_data) TabList[num][5].subplots() diff --git a/Temp/Data2.txt b/Temp/Data2.txt new file mode 100644 index 0000000..62c7b7c --- /dev/null +++ b/Temp/Data2.txt @@ -0,0 +1,2035 @@ +46 +39 +28 +26 +26 +33 +23 +36 +34 +32 +20 +37 +22 +25 +19 +28 +25 +33 +28 +25 +20 +20 +16 +30 +30 +25 +28 +36 +24 +21 +26 +23 +28 +18 +17 +23 +15 +30 +22 +14 +31 +20 +20 +22 +27 +20 +22 +27 +21 +32 +23 +20 +26 +22 +27 +18 +31 +20 +32 +23 +29 +23 +19 +20 +12 +20 +12 +24 +17 +25 +14 +13 +25 +24 +13 +16 +19 +15 +19 +21 +26 +21 +20 +27 +23 +18 +20 +16 +20 +28 +26 +19 +19 +18 +16 +22 +13 +19 +23 +14 +18 +22 +17 +17 +21 +16 +20 +22 +16 +16 +25 +16 +22 +24 +18 +15 +18 +26 +14 +21 +17 +22 +16 +19 +13 +17 +21 +14 +19 +14 +23 +21 +21 +22 +15 +16 +18 +16 +18 +22 +13 +16 +20 +13 +14 +18 +17 +19 +21 +11 +19 +23 +21 +14 +20 +14 +20 +19 +22 +18 +33 +28 +31 +21 +22 +23 +28 +20 +26 +19 +17 +22 +23 +16 +19 +15 +27 +22 +23 +31 +26 +24 +20 +19 +18 +20 +29 +28 +29 +30 +30 +71 +63 +80 +96 +71 +68 +54 +28 +30 +16 +23 +33 +21 +22 +15 +34 +19 +27 +24 +20 +18 +29 +32 +26 +28 +31 +23 +34 +22 +19 +27 +16 +16 +34 +18 +20 +23 +42 +33 +44 +34 +37 +35 +30 +37 +33 +36 +49 +55 +104 +189 +553 +1411 +3117 +5472 +7644 +8598 +7534 +5317 +3043 +1405 +558 +208 +77 +49 +34 +37 +33 +33 +29 +29 +35 +23 +36 +35 +35 +51 +77 +95 +184 +387 +714 +1109 +1401 +1491 +1248 +908 +466 +262 +116 +29 +25 +12 +10 +10 +10 +8 +6 +5 +9 +7 +10 +8 +6 +6 +7 +6 +5 +10 +7 +6 +7 +11 +7 +5 +3 +9 +2 +5 +10 +7 +4 +10 +3 +7 +3 +9 +3 +9 +5 +9 +4 +8 +4 +10 +10 +6 +10 +14 +10 +7 +8 +2 +6 +5 +6 +8 +3 +2 +3 +4 +4 +5 +5 +3 +5 +2 +4 +2 +2 +1 +5 +3 +6 +2 +6 +2 +2 +4 +4 +1 +3 +3 +5 +2 +3 +5 +2 +4 +2 +5 +3 +1 +1 +2 +2 +3 +2 +1 +3 +2 +2 +3 +5 +4 +1 +3 +3 +4 +1 +3 +2 +5 +2 +6 +4 +10 +3 +1 +2 +6 +2 +3 +0 +1 +1 +0 +0 +4 +1 +2 +3 +1 +1 +5 +3 +5 +4 +2 +1 +1 +4 +0 +0 +2 +4 +7 +2 +0 +1 +2 +1 +2 +0 +1 +2 +2 +3 +2 +0 +2 +3 +1 +6 +2 +1 +1 +2 +1 +1 +1 +0 +5 +1 +2 +0 +0 +2 +4 +1 +5 +2 +2 +0 +3 +2 +3 +2 +2 +0 +4 +0 +0 +3 +1 +1 +1 +1 +3 +3 +1 +1 +3 +1 +2 +2 +0 +4 +1 +2 +2 +1 +2 +0 +2 +2 +2 +2 +3 +0 +1 +2 +1 +1 +1 +1 +1 +1 +1 +2 +1 +2 +1 +0 +0 +0 +0 +2 +1 +1 +0 +1 +1 +0 +0 +0 +2 +3 +0 +3 +1 +1 +3 +2 +0 +0 +2 +2 +0 +0 +1 +0 +1 +1 +0 +4 +1 +0 +4 +2 +3 +3 +1 +0 +1 +0 +1 +1 +0 +1 +1 +0 +0 +3 +0 +0 +1 +0 +2 +1 +2 +2 +1 +0 +1 +1 +1 +0 +0 +0 +0 +1 +0 +0 +1 +1 +0 +1 +0 +0 +1 +2 +2 +1 +0 +1 +0 +0 +2 +5 +2 +0 +2 +1 +0 +3 +1 +0 +0 +2 +1 +1 +3 +1 +0 +4 +1 +1 +0 +1 +2 +0 +3 +1 +2 +1 +0 +2 +0 +2 +0 +2 +1 +1 +1 +3 +1 +0 +1 +1 +4 +2 +2 +0 +2 +1 +1 +0 +3 +0 +3 +1 +0 +3 +1 +1 +0 +1 +2 +0 +0 +4 +0 +1 +2 +2 +0 +1 +3 +1 +0 +0 +0 +0 +0 +0 +1 +0 +3 +1 +0 +0 +0 +0 +0 +0 +0 +2 +2 +2 +1 +0 +2 +1 +1 +0 +1 +0 +2 +1 +3 +3 +1 +3 +1 +2 +1 +0 +0 +2 +0 +2 +2 +0 +0 +1 +0 +0 +0 +2 +1 +2 +1 +1 +2 +0 +1 +0 +1 +0 +2 +2 +1 +1 +1 +1 +0 +0 +0 +2 +0 +0 +0 +0 +1 +0 +0 +0 +0 +0 +2 +1 +1 +1 +1 +0 +1 +1 +1 +3 +1 +2 +1 +2 +1 +2 +2 +1 +2 +3 +2 +1 +2 +1 +2 +1 +1 +2 +2 +1 +1 +0 +1 +1 +0 +3 +3 +2 +0 +1 +3 +1 +3 +2 +2 +5 +2 +1 +4 +2 +5 +3 +7 +3 +3 +3 +4 +1 +1 +0 +1 +0 +1 +0 +0 +1 +0 +0 +0 +0 +0 +1 +0 +0 +1 +1 +0 +0 +1 +4 +0 +1 +3 +3 +2 +4 +6 +2 +1 +4 +0 +0 +1 +2 +1 +0 +0 +0 +0 +0 +0 +0 +0 +3 +2 +1 +0 +1 +0 +3 +0 +0 +1 +2 +5 +2 +3 +3 +2 +1 +1 +0 +2 +0 +1 +0 +0 +1 +1 +0 +0 +0 +0 +1 +0 +1 +0 +0 +0 +2 +1 +1 +0 +1 +0 +1 +0 +0 +1 +1 +0 +1 +1 +3 +3 +2 +1 +2 +0 +0 +1 +1 +2 +1 +0 +0 +1 +2 +0 +1 +1 +1 +3 +3 +0 +0 +1 +0 +1 +0 +0 +0 +0 +0 +0 +0 +2 +1 +2 +2 +1 +1 +1 +1 +4 +1 +1 +0 +1 +0 +2 +2 +0 +2 +1 +1 +0 +4 +1 +0 +0 +0 +1 +0 +0 +0 +0 +1 +2 +1 +1 +0 +2 +1 +1 +1 +0 +0 +3 +1 +0 +0 +2 +1 +2 +2 +1 +2 +0 +0 +0 +0 +2 +2 +2 +1 +3 +0 +1 +1 +0 +0 +1 +1 +0 +0 +0 +0 +0 +0 +0 +2 +2 +3 +0 +0 +0 +2 +0 +3 +1 +0 +1 +2 +0 +1 +4 +1 +2 +1 +0 +2 +2 +0 +0 +0 +1 +2 +0 +0 +1 +2 +0 +2 +1 +0 +0 +0 +0 +3 +0 +0 +0 +1 +1 +2 +1 +2 +0 +2 +1 +1 +2 +1 +2 +0 +2 +1 +0 +0 +1 +0 +1 +1 +0 +2 +0 +0 +0 +1 +0 +0 +0 +0 +0 +1 +1 +0 +1 +0 +0 +0 +0 +1 +0 +0 +1 +0 +0 +2 +0 +1 +1 +1 +0 +2 +0 +1 +1 +0 +0 +1 +0 +0 +1 +1 +0 +0 +0 +1 +4 +1 +0 +2 +2 +2 +1 +1 +2 +1 +1 +1 +1 +1 +0 +1 +0 +1 +1 +0 +1 +2 +1 +1 +2 +1 +0 +0 +1 +2 +1 +2 +3 +5 +1 +0 +1 +1 +0 +0 +0 +0 +1 +1 +0 +0 +1 +0 +3 +3 +0 +0 +3 +1 +1 +0 +2 +0 +1 +0 +0 +1 +2 +1 +0 +0 +1 +1 +1 +1 +1 +0 +2 +2 +1 +1 +1 +4 +0 +0 +1 +2 +0 +0 +2 +0 +1 +2 +0 +0 +1 +3 +2 +1 +0 +3 +2 +1 +2 +0 +3 +0 +2 +0 +3 +0 +5 +0 +0 +1 +2 +5 +0 +2 +0 +1 +1 +1 +2 +0 +3 +1 +0 +1 +2 +0 +1 +1 +0 +0 +1 +1 +2 +1 +1 +0 +0 +0 +1 +2 +3 +2 +4 +2 +1 +4 +5 +1 +5 +1 +0 +3 +3 +0 +1 +3 +5 +2 +3 +3 +4 +2 +3 +0 +2 +1 +4 +3 +1 +5 +1 +4 +3 +3 +1 +1 +6 +4 +5 +1 +3 +2 +0 +0 +4 +3 +3 +3 +1 +3 +1 +2 +2 +2 +4 +3 +5 +2 +2 +3 +5 +3 +4 +1 +1 +5 +2 +0 +3 +2 +2 +4 +5 +1 +3 +5 +7 +2 +2 +2 +3 +3 +1 +1 +5 +1 +2 +4 +3 +2 +3 +4 +3 +5 +3 +5 +5 +3 +3 +6 +4 +2 +4 +3 +7 +2 +2 +3 +8 +4 +8 +5 +10 +2 +7 +4 +4 +6 +3 +9 +3 +7 +6 +8 +3 +3 +5 +3 +4 +3 +5 +3 +7 +5 +6 +2 +5 +5 +7 +7 +3 +5 +5 +9 +4 +4 +9 +4 +3 +2 +9 +5 +6 +1 +7 +7 +9 +6 +6 +5 +6 +5 +5 +4 +7 +5 +9 +6 +6 +7 +8 +7 +9 +8 +9 +5 +9 +7 +4 +6 +6 +3 +7 +12 +11 +7 +9 +4 +11 +9 +9 +9 +9 +7 +8 +13 +10 +17 +14 +15 +1 +10 +11 +11 +7 +11 +11 +6 +13 +7 +10 +13 +14 +15 +9 +10 +13 +12 +11 +8 +10 +10 +10 +9 +13 +18 +22 +12 +21 +15 +8 +12 +12 +10 +10 +16 +19 +19 +18 +15 +13 +20 +13 +14 +20 +14 +15 +15 +16 +16 +12 +21 +16 +19 +20 +20 +21 +20 +28 +27 +17 +29 +26 +23 +32 +29 +28 +19 +31 +27 +31 +33 +37 +42 +33 +44 +40 +37 +35 +40 +29 +41 +32 +37 +36 +47 +43 +53 +41 +31 +47 +60 +54 +68 +54 +50 +49 +53 +51 +51 +54 +42 +60 +67 +49 +50 +50 +56 +60 +58 +45 +49 +73 +49 +59 +50 +40 +42 +47 +68 +61 +47 +43 +55 +50 +46 +45 +50 +49 +52 +46 +49 +44 +45 +49 +42 +37 +41 +37 +46 +39 +38 +41 +40 +31 +44 +33 +41 +22 +32 +39 +28 +39 +25 +27 +30 +34 +22 +25 +26 +22 +21 +17 +21 +27 +20 +16 +27 +18 +17 +23 +12 +21 +21 +15 +15 +16 +18 +14 +14 +16 +15 +21 +7 +23 +13 +10 +7 +10 +9 +12 +10 +10 +14 +6 +13 +16 +15 +13 +11 +7 +6 +14 +11 +11 +10 +8 +10 +13 +7 +5 +11 +10 +10 +8 +6 +6 +6 +8 +8 +5 +8 +6 +8 +6 +5 +5 +6 +8 +7 +5 +8 +7 +6 +7 +2 +2 +4 +6 +4 +5 +6 +4 +6 +10 +3 +10 +5 +5 +1 +6 +5 +4 +3 +5 +3 +0 +4 +3 +6 +5 +5 +2 +9 +4 +2 +2 +4 +2 +2 +3 +2 +3 +2 +0 +3 +7 +2 +2 +6 +5 +5 +2 +2 +6 +4 +2 +8 +5 +6 +3 +3 +4 +5 +6 +1 +2 +1 +2 +4 +2 +5 +3 +7 +3 +1 +0 +2 +2 +1 +3 +5 +0 +1 +5 +4 +2 +3 +1 +1 +7 +2 +5 +4 +5 +4 +5 +2 +2 +3 +6 +4 +2 +4 +1 +6 +1 +1 +2 +0 +1 +3 +2 +2 +4 +5 +2 +2 +4 +4 +2 +2 +0 +5 +2 +4 +4 +1 +1 +1 +1 +1 +2 +2 +2 +2 +4 +0 +1 +0 +2 +1 +3 +5 +4 +2 +3 +1 +2 +3 +2 +0 +2 +0 +2 +1 +4 +0 +3 +3 +0 +1 +3 +1 +1 +0 +1 +2 +2 +1 +3 +3 +2 +2 +0 +1 +0 +0 +2 +0 +1 +3 +2 +2 +1 +2 +3 +2 +2 +1 +0 +2 +0 +0 +1 +8 +7 +4 +5 +4 +12 +14 +18 +25 +32 +43 +32 +41 +58 +48 +50 +61 +47 +48 +30 +55 +43 +28 +24 +24 +12 +7 +10 +6 +3 +1 +1 +0 +1 +1 +1 +2 +0 +1 +0 +0 +1 +2 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +1 +0 +0 +0 +1 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +1 +0 +0 +0 +1 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +1 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +1 +0 +0 +1 +0 +0 +0 +0 +1 +1 +0 From 7dea5a0697e6e3e8bef41fae05acad4422b973f6 Mon Sep 17 00:00:00 2001 From: aysuismailova Date: Sat, 9 Aug 2025 03:13:43 +0300 Subject: [PATCH 29/44] Code update: Removed third column result for xra tab, added 'Source' and 'Source + Film' labels before centroid values --- ARC-TF.py | 64 +- Temp/Data2.txt | 2035 ------------------------------------------------ 2 files changed, 47 insertions(+), 2052 deletions(-) delete mode 100644 Temp/Data2.txt diff --git a/ARC-TF.py b/ARC-TF.py index 71d0c90..bf44241 100644 --- a/ARC-TF.py +++ b/ARC-TF.py @@ -799,22 +799,47 @@ def ResultManager(): if method == 'ROI Select': values = File_Reader(TabList[num][3], ',', 'Yes', 'No') for j in range(len(values)): - Result_Button = tk.Checkbutton( - TabList[num][1].ResultFrame, - variable=TabList[num][1].Var_Data[j], - onvalue=1, offvalue=-1, - text='Centroid: ' + str("{:.1f}".format(values[j][0])) - ) - Result_Button.grid(row=j, column=0) - Result_Button.select() - tk.Label( - TabList[num][1].ResultFrame, - text='\t \u03C3 = ' + str("{:.1f}".format(values[j][2])) - ).grid(row=j, column=1) - tk.Label( - TabList[num][1].ResultFrame, - text='\t \u03C3/\u221aN = ' + str("{:.3f}".format(values[j][1])) - ).grid(row=j, column=2) + if TabList[num][1].tab_kind == 5: + tk.Label( + TabList[num][1].ResultFrame, + text='Source: ' + ).grid(row=0, column=0) + # Only show "Source + Film" label if a film file has been uploaded for this tab + if hasattr(TabList[num][5], 'film_file') and os.path.isfile(TabList[num][5].film_file): + tk.Label( + TabList[num][1].ResultFrame, + text='Source + Film: ' + ).grid(row=1, column=0) + Result_Button = tk.Checkbutton( + TabList[num][1].ResultFrame, + variable=TabList[num][1].Var_Data[j], + onvalue=1, offvalue=-1, + text='Centroid: ' + str("{:.1f}".format(values[j][0])) + ) + Result_Button.grid(row=j, column=1) + Result_Button.select() + tk.Label( + TabList[num][1].ResultFrame, + text='\t \u03C3 = ' + str("{:.1f}".format(values[j][2])) + ).grid(row=j, column=2) + else: + Result_Button = tk.Checkbutton( + TabList[num][1].ResultFrame, + variable=TabList[num][1].Var_Data[j], + onvalue=1, offvalue=-1, + text='Centroid: ' + str("{:.1f}".format(values[j][0])) + ) + Result_Button.grid(row=j, column=0) + Result_Button.select() + tk.Label( + TabList[num][1].ResultFrame, + text='\t \u03C3 = ' + str("{:.1f}".format(values[j][2])) + ).grid(row=j, column=1) + tk.Label( + TabList[num][1].ResultFrame, + text='\t \u03C3/\u221aN = ' + str("{:.3f}".format(values[j][1])) + ).grid(row=j, column=2) + # Standard: expects channel and counts else: values = File_Reader(TabList[num][3], ',', 'No', 'No') @@ -1260,7 +1285,12 @@ def ROI_Select_Alg(): # Load counts from both files (source and film) using stored file paths counts = File_Reader(TabList[num][5].source_file, '0', 'Yes', 'No') - counts2 = File_Reader(TabList[num][5].film_file, '0', 'Yes', 'No') + # Only load film counts if a film file has been uploaded for this tab + if hasattr(TabList[num][5], 'film_file') and os.path.isfile(TabList[num][5].film_file): + counts2 = File_Reader(TabList[num][5].film_file, '0', 'Yes', 'No') + else: + counts2 = None + # Hide ROI 2–6 Entry widgets for i in range(1, min(6, len(TabList[num][1].ROIdown_entries))): diff --git a/Temp/Data2.txt b/Temp/Data2.txt deleted file mode 100644 index 62c7b7c..0000000 --- a/Temp/Data2.txt +++ /dev/null @@ -1,2035 +0,0 @@ -46 -39 -28 -26 -26 -33 -23 -36 -34 -32 -20 -37 -22 -25 -19 -28 -25 -33 -28 -25 -20 -20 -16 -30 -30 -25 -28 -36 -24 -21 -26 -23 -28 -18 -17 -23 -15 -30 -22 -14 -31 -20 -20 -22 -27 -20 -22 -27 -21 -32 -23 -20 -26 -22 -27 -18 -31 -20 -32 -23 -29 -23 -19 -20 -12 -20 -12 -24 -17 -25 -14 -13 -25 -24 -13 -16 -19 -15 -19 -21 -26 -21 -20 -27 -23 -18 -20 -16 -20 -28 -26 -19 -19 -18 -16 -22 -13 -19 -23 -14 -18 -22 -17 -17 -21 -16 -20 -22 -16 -16 -25 -16 -22 -24 -18 -15 -18 -26 -14 -21 -17 -22 -16 -19 -13 -17 -21 -14 -19 -14 -23 -21 -21 -22 -15 -16 -18 -16 -18 -22 -13 -16 -20 -13 -14 -18 -17 -19 -21 -11 -19 -23 -21 -14 -20 -14 -20 -19 -22 -18 -33 -28 -31 -21 -22 -23 -28 -20 -26 -19 -17 -22 -23 -16 -19 -15 -27 -22 -23 -31 -26 -24 -20 -19 -18 -20 -29 -28 -29 -30 -30 -71 -63 -80 -96 -71 -68 -54 -28 -30 -16 -23 -33 -21 -22 -15 -34 -19 -27 -24 -20 -18 -29 -32 -26 -28 -31 -23 -34 -22 -19 -27 -16 -16 -34 -18 -20 -23 -42 -33 -44 -34 -37 -35 -30 -37 -33 -36 -49 -55 -104 -189 -553 -1411 -3117 -5472 -7644 -8598 -7534 -5317 -3043 -1405 -558 -208 -77 -49 -34 -37 -33 -33 -29 -29 -35 -23 -36 -35 -35 -51 -77 -95 -184 -387 -714 -1109 -1401 -1491 -1248 -908 -466 -262 -116 -29 -25 -12 -10 -10 -10 -8 -6 -5 -9 -7 -10 -8 -6 -6 -7 -6 -5 -10 -7 -6 -7 -11 -7 -5 -3 -9 -2 -5 -10 -7 -4 -10 -3 -7 -3 -9 -3 -9 -5 -9 -4 -8 -4 -10 -10 -6 -10 -14 -10 -7 -8 -2 -6 -5 -6 -8 -3 -2 -3 -4 -4 -5 -5 -3 -5 -2 -4 -2 -2 -1 -5 -3 -6 -2 -6 -2 -2 -4 -4 -1 -3 -3 -5 -2 -3 -5 -2 -4 -2 -5 -3 -1 -1 -2 -2 -3 -2 -1 -3 -2 -2 -3 -5 -4 -1 -3 -3 -4 -1 -3 -2 -5 -2 -6 -4 -10 -3 -1 -2 -6 -2 -3 -0 -1 -1 -0 -0 -4 -1 -2 -3 -1 -1 -5 -3 -5 -4 -2 -1 -1 -4 -0 -0 -2 -4 -7 -2 -0 -1 -2 -1 -2 -0 -1 -2 -2 -3 -2 -0 -2 -3 -1 -6 -2 -1 -1 -2 -1 -1 -1 -0 -5 -1 -2 -0 -0 -2 -4 -1 -5 -2 -2 -0 -3 -2 -3 -2 -2 -0 -4 -0 -0 -3 -1 -1 -1 -1 -3 -3 -1 -1 -3 -1 -2 -2 -0 -4 -1 -2 -2 -1 -2 -0 -2 -2 -2 -2 -3 -0 -1 -2 -1 -1 -1 -1 -1 -1 -1 -2 -1 -2 -1 -0 -0 -0 -0 -2 -1 -1 -0 -1 -1 -0 -0 -0 -2 -3 -0 -3 -1 -1 -3 -2 -0 -0 -2 -2 -0 -0 -1 -0 -1 -1 -0 -4 -1 -0 -4 -2 -3 -3 -1 -0 -1 -0 -1 -1 -0 -1 -1 -0 -0 -3 -0 -0 -1 -0 -2 -1 -2 -2 -1 -0 -1 -1 -1 -0 -0 -0 -0 -1 -0 -0 -1 -1 -0 -1 -0 -0 -1 -2 -2 -1 -0 -1 -0 -0 -2 -5 -2 -0 -2 -1 -0 -3 -1 -0 -0 -2 -1 -1 -3 -1 -0 -4 -1 -1 -0 -1 -2 -0 -3 -1 -2 -1 -0 -2 -0 -2 -0 -2 -1 -1 -1 -3 -1 -0 -1 -1 -4 -2 -2 -0 -2 -1 -1 -0 -3 -0 -3 -1 -0 -3 -1 -1 -0 -1 -2 -0 -0 -4 -0 -1 -2 -2 -0 -1 -3 -1 -0 -0 -0 -0 -0 -0 -1 -0 -3 -1 -0 -0 -0 -0 -0 -0 -0 -2 -2 -2 -1 -0 -2 -1 -1 -0 -1 -0 -2 -1 -3 -3 -1 -3 -1 -2 -1 -0 -0 -2 -0 -2 -2 -0 -0 -1 -0 -0 -0 -2 -1 -2 -1 -1 -2 -0 -1 -0 -1 -0 -2 -2 -1 -1 -1 -1 -0 -0 -0 -2 -0 -0 -0 -0 -1 -0 -0 -0 -0 -0 -2 -1 -1 -1 -1 -0 -1 -1 -1 -3 -1 -2 -1 -2 -1 -2 -2 -1 -2 -3 -2 -1 -2 -1 -2 -1 -1 -2 -2 -1 -1 -0 -1 -1 -0 -3 -3 -2 -0 -1 -3 -1 -3 -2 -2 -5 -2 -1 -4 -2 -5 -3 -7 -3 -3 -3 -4 -1 -1 -0 -1 -0 -1 -0 -0 -1 -0 -0 -0 -0 -0 -1 -0 -0 -1 -1 -0 -0 -1 -4 -0 -1 -3 -3 -2 -4 -6 -2 -1 -4 -0 -0 -1 -2 -1 -0 -0 -0 -0 -0 -0 -0 -0 -3 -2 -1 -0 -1 -0 -3 -0 -0 -1 -2 -5 -2 -3 -3 -2 -1 -1 -0 -2 -0 -1 -0 -0 -1 -1 -0 -0 -0 -0 -1 -0 -1 -0 -0 -0 -2 -1 -1 -0 -1 -0 -1 -0 -0 -1 -1 -0 -1 -1 -3 -3 -2 -1 -2 -0 -0 -1 -1 -2 -1 -0 -0 -1 -2 -0 -1 -1 -1 -3 -3 -0 -0 -1 -0 -1 -0 -0 -0 -0 -0 -0 -0 -2 -1 -2 -2 -1 -1 -1 -1 -4 -1 -1 -0 -1 -0 -2 -2 -0 -2 -1 -1 -0 -4 -1 -0 -0 -0 -1 -0 -0 -0 -0 -1 -2 -1 -1 -0 -2 -1 -1 -1 -0 -0 -3 -1 -0 -0 -2 -1 -2 -2 -1 -2 -0 -0 -0 -0 -2 -2 -2 -1 -3 -0 -1 -1 -0 -0 -1 -1 -0 -0 -0 -0 -0 -0 -0 -2 -2 -3 -0 -0 -0 -2 -0 -3 -1 -0 -1 -2 -0 -1 -4 -1 -2 -1 -0 -2 -2 -0 -0 -0 -1 -2 -0 -0 -1 -2 -0 -2 -1 -0 -0 -0 -0 -3 -0 -0 -0 -1 -1 -2 -1 -2 -0 -2 -1 -1 -2 -1 -2 -0 -2 -1 -0 -0 -1 -0 -1 -1 -0 -2 -0 -0 -0 -1 -0 -0 -0 -0 -0 -1 -1 -0 -1 -0 -0 -0 -0 -1 -0 -0 -1 -0 -0 -2 -0 -1 -1 -1 -0 -2 -0 -1 -1 -0 -0 -1 -0 -0 -1 -1 -0 -0 -0 -1 -4 -1 -0 -2 -2 -2 -1 -1 -2 -1 -1 -1 -1 -1 -0 -1 -0 -1 -1 -0 -1 -2 -1 -1 -2 -1 -0 -0 -1 -2 -1 -2 -3 -5 -1 -0 -1 -1 -0 -0 -0 -0 -1 -1 -0 -0 -1 -0 -3 -3 -0 -0 -3 -1 -1 -0 -2 -0 -1 -0 -0 -1 -2 -1 -0 -0 -1 -1 -1 -1 -1 -0 -2 -2 -1 -1 -1 -4 -0 -0 -1 -2 -0 -0 -2 -0 -1 -2 -0 -0 -1 -3 -2 -1 -0 -3 -2 -1 -2 -0 -3 -0 -2 -0 -3 -0 -5 -0 -0 -1 -2 -5 -0 -2 -0 -1 -1 -1 -2 -0 -3 -1 -0 -1 -2 -0 -1 -1 -0 -0 -1 -1 -2 -1 -1 -0 -0 -0 -1 -2 -3 -2 -4 -2 -1 -4 -5 -1 -5 -1 -0 -3 -3 -0 -1 -3 -5 -2 -3 -3 -4 -2 -3 -0 -2 -1 -4 -3 -1 -5 -1 -4 -3 -3 -1 -1 -6 -4 -5 -1 -3 -2 -0 -0 -4 -3 -3 -3 -1 -3 -1 -2 -2 -2 -4 -3 -5 -2 -2 -3 -5 -3 -4 -1 -1 -5 -2 -0 -3 -2 -2 -4 -5 -1 -3 -5 -7 -2 -2 -2 -3 -3 -1 -1 -5 -1 -2 -4 -3 -2 -3 -4 -3 -5 -3 -5 -5 -3 -3 -6 -4 -2 -4 -3 -7 -2 -2 -3 -8 -4 -8 -5 -10 -2 -7 -4 -4 -6 -3 -9 -3 -7 -6 -8 -3 -3 -5 -3 -4 -3 -5 -3 -7 -5 -6 -2 -5 -5 -7 -7 -3 -5 -5 -9 -4 -4 -9 -4 -3 -2 -9 -5 -6 -1 -7 -7 -9 -6 -6 -5 -6 -5 -5 -4 -7 -5 -9 -6 -6 -7 -8 -7 -9 -8 -9 -5 -9 -7 -4 -6 -6 -3 -7 -12 -11 -7 -9 -4 -11 -9 -9 -9 -9 -7 -8 -13 -10 -17 -14 -15 -1 -10 -11 -11 -7 -11 -11 -6 -13 -7 -10 -13 -14 -15 -9 -10 -13 -12 -11 -8 -10 -10 -10 -9 -13 -18 -22 -12 -21 -15 -8 -12 -12 -10 -10 -16 -19 -19 -18 -15 -13 -20 -13 -14 -20 -14 -15 -15 -16 -16 -12 -21 -16 -19 -20 -20 -21 -20 -28 -27 -17 -29 -26 -23 -32 -29 -28 -19 -31 -27 -31 -33 -37 -42 -33 -44 -40 -37 -35 -40 -29 -41 -32 -37 -36 -47 -43 -53 -41 -31 -47 -60 -54 -68 -54 -50 -49 -53 -51 -51 -54 -42 -60 -67 -49 -50 -50 -56 -60 -58 -45 -49 -73 -49 -59 -50 -40 -42 -47 -68 -61 -47 -43 -55 -50 -46 -45 -50 -49 -52 -46 -49 -44 -45 -49 -42 -37 -41 -37 -46 -39 -38 -41 -40 -31 -44 -33 -41 -22 -32 -39 -28 -39 -25 -27 -30 -34 -22 -25 -26 -22 -21 -17 -21 -27 -20 -16 -27 -18 -17 -23 -12 -21 -21 -15 -15 -16 -18 -14 -14 -16 -15 -21 -7 -23 -13 -10 -7 -10 -9 -12 -10 -10 -14 -6 -13 -16 -15 -13 -11 -7 -6 -14 -11 -11 -10 -8 -10 -13 -7 -5 -11 -10 -10 -8 -6 -6 -6 -8 -8 -5 -8 -6 -8 -6 -5 -5 -6 -8 -7 -5 -8 -7 -6 -7 -2 -2 -4 -6 -4 -5 -6 -4 -6 -10 -3 -10 -5 -5 -1 -6 -5 -4 -3 -5 -3 -0 -4 -3 -6 -5 -5 -2 -9 -4 -2 -2 -4 -2 -2 -3 -2 -3 -2 -0 -3 -7 -2 -2 -6 -5 -5 -2 -2 -6 -4 -2 -8 -5 -6 -3 -3 -4 -5 -6 -1 -2 -1 -2 -4 -2 -5 -3 -7 -3 -1 -0 -2 -2 -1 -3 -5 -0 -1 -5 -4 -2 -3 -1 -1 -7 -2 -5 -4 -5 -4 -5 -2 -2 -3 -6 -4 -2 -4 -1 -6 -1 -1 -2 -0 -1 -3 -2 -2 -4 -5 -2 -2 -4 -4 -2 -2 -0 -5 -2 -4 -4 -1 -1 -1 -1 -1 -2 -2 -2 -2 -4 -0 -1 -0 -2 -1 -3 -5 -4 -2 -3 -1 -2 -3 -2 -0 -2 -0 -2 -1 -4 -0 -3 -3 -0 -1 -3 -1 -1 -0 -1 -2 -2 -1 -3 -3 -2 -2 -0 -1 -0 -0 -2 -0 -1 -3 -2 -2 -1 -2 -3 -2 -2 -1 -0 -2 -0 -0 -1 -8 -7 -4 -5 -4 -12 -14 -18 -25 -32 -43 -32 -41 -58 -48 -50 -61 -47 -48 -30 -55 -43 -28 -24 -24 -12 -7 -10 -6 -3 -1 -1 -0 -1 -1 -1 -2 -0 -1 -0 -0 -1 -2 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -1 -0 -0 -0 -1 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -1 -0 -0 -0 -1 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -1 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -1 -0 -0 -1 -0 -0 -0 -0 -1 -1 -0 From 3d0817d0955f4dbd838200131980c6f674f8426e Mon Sep 17 00:00:00 2001 From: aysuismailova Date: Wed, 13 Aug 2025 03:37:57 +0300 Subject: [PATCH 30/44] Code update: Area calculation added for each (Source and Source+Film), added buttons for film, source selection and run. --- ARC-TF.py | 87 +++++++++- Files/xra.txt | 6 + XRA/GaussianFit.py | 179 ++++++++++---------- XRA/__pycache__/GaussianFit.cpython-313.pyc | Bin 0 -> 2621 bytes XRA/__pycache__/new.cpython-313.pyc | Bin 0 -> 3457 bytes XRA/__pycache__/thickness.cpython-313.pyc | Bin 0 -> 3463 bytes XRA/{new.py => thickness.py} | 0 7 files changed, 177 insertions(+), 95 deletions(-) create mode 100644 Files/xra.txt create mode 100644 XRA/__pycache__/GaussianFit.cpython-313.pyc create mode 100644 XRA/__pycache__/new.cpython-313.pyc create mode 100644 XRA/__pycache__/thickness.cpython-313.pyc rename XRA/{new.py => thickness.py} (100%) diff --git a/ARC-TF.py b/ARC-TF.py index bf44241..cef0189 100644 --- a/ARC-TF.py +++ b/ARC-TF.py @@ -28,6 +28,7 @@ ## ------------------------------- Import necessary librarires ---------------------------------- ## import tkinter as tk +import pandas as pd from tkinter import ttk from tkinter import filedialog as fd from PIL import ImageTk, Image @@ -51,6 +52,10 @@ from Include.Thick import* from Include.remove_file import* from Include.clear_frame import* +from XRA.GaussianFit import gaussian, gaussian_integral_erf +from scipy.optimize import curve_fit + + ## ---------------------------------------------------------------------------------------------- ## ##################################################### @@ -766,6 +771,45 @@ def Calculate_Thickness(): return +######################################### + +# Load table (can be xls/xlsx or csv/txt) +df_xra = pd.read_csv("Files/xra.txt", sep="\t") +films_list = df_xra["Element"].dropna().tolist() +sources = list(df_xra.columns[4:]) #columns after 5th +sources = [col.replace("mu ", "").replace(" K_alpha", "") for col in sources] + +def get_selected_film(num): + """Return the film material currently selected in the ROI frame OptionMenu.""" + return TabList[num][5].film_data.get() + + +# This replaces select_source() +def get_selected_source(num): + """Return the source material currently selected in the ROI frame OptionMenu.""" + return TabList[num][5].source_data.get() + + +def get_mu_from_table(film_name, source_name): + """Get linear attenuation coefficient μ from table: density × mass coefficient.""" + row = df_xra.loc[df_xra["Element"] == film_name] + if row.empty: + raise ValueError(f"Film {film_name} not found in table.") + + density = float(row["p (g/cm^3)"]) + col_name = f"mu {source_name} K_alpha" + if col_name not in df_xra.columns: + raise ValueError(f"Source {source_name} not found in table.") + + mass_coeff = float(row[col_name]) + return density * mass_coeff # μ in cm^-1 + +def run_thickness_calc(): + mu = get_mu_from_table(TabList[Current_Tab()][5].film_material, + TabList[Current_Tab()][5].source_material) + + + ######################################### # Displays algorithm results in the GUI # ######################################### @@ -822,6 +866,15 @@ def ResultManager(): TabList[num][1].ResultFrame, text='\t \u03C3 = ' + str("{:.1f}".format(values[j][2])) ).grid(row=j, column=2) + tk.Label( + TabList[num][1].ResultFrame, + text='\t Area = ' + str("{:.1f}".format(values[j][3])) + ).grid(row=j, column=3) + TabList[num][5].film_data = tk.StringVar(value="Films") + tk.OptionMenu(TabList[num][1].ResultFrame, TabList[num][5].film_data, *films_list).grid(row=2, column=1) + TabList[num][5].source_data = tk.StringVar(value="Sources") + tk.OptionMenu(TabList[num][1].ResultFrame, TabList[num][5].source_data, *sources).grid(row=2, column=2) + tk.Button(TabList[num][1].ResultFrame, text="Run", command=run_thickness_calc).grid(row=2, column=4) else: Result_Button = tk.Checkbutton( TabList[num][1].ResultFrame, @@ -1330,8 +1383,8 @@ def ROI_Select_Alg(): for idx, (d, u) in enumerate(zip(roi_down, roi_up)): try: - x1 = float(d) - x2 = float(u) + x1 = int(d) + x2 = int(u) except (ValueError, TypeError): tk.messagebox.showerror("Error", f"Invalid ROI input at peak {idx+1}: \nROId = {d}, ROIu = {u}") return @@ -1340,11 +1393,33 @@ def ROI_Select_Alg(): tk.messagebox.showerror("Error", f"Invalid ROI range at peak {idx+1}: \nx1 = {x1}, x2 = {x2} " f"\nUpper bound must be greater than lower bound and difference must be at least 2.") return + roi_channels = list(range(x1, x2+1)) + roi_counts = counts[x1:x2+1] + + popt_source, _ = curve_fit( + gaussian, + roi_channels, + roi_counts, + p0=[max(roi_counts), roi_channels[np.argmax(roi_counts)], 1, min(roi_counts)] + ) + area_source = gaussian_integral_erf(*popt_source, x1, x2) # Analyze the counts within each ROI to get centroids, uncertainties, and sigma/sqrt(N) cents, errs, sigmas = Analyze(counts, roi_down, roi_up) if counts2 is not None: cents2, errs2, sigmas2 = Analyze(counts2, roi_down, roi_up) + for (d, u) in zip(roi_down, roi_up): + x1, x2 = int(d), int(u) + roi_channels = list(range(x1, x2 + 1)) + roi_counts2 = counts2[x1:x2 + 1] + + popt_film, _ = curve_fit( + gaussian, + roi_channels, + roi_counts2, + p0=[max(roi_counts2), roi_channels[np.argmax(roi_counts2)], 1, min(roi_counts2)] + ) + areas_film = gaussian_integral_erf(*popt_film, x1, x2) else: cents2, errs2, sigmas2 = [], [], [] #when non-XRA tab @@ -1352,15 +1427,15 @@ def ROI_Select_Alg(): if os.path.isfile(TabList[num][3]): with open(TabList[num][3], 'a') as results: for i in range(len(cents)): - results.write(f"{cents[i]},{errs[i]},{sigmas[i]}\n") + results.write(f"{cents[i]},{errs[i]},{sigmas[i]},{area_source}\n") for i in range(len(cents2)): - results.write(f"{cents2[i]},{errs2[i]},{sigmas2[i]}\n") + results.write(f"{cents2[i]},{errs2[i]},{sigmas2[i]},{areas_film}\n") else: with open(TabList[num][3], 'w') as results: for i in range(len(cents)): - results.write(f"{cents[i]},{errs[i]},{sigmas[i]}\n") + results.write(f"{cents[i]},{errs[i]},{sigmas[i]},{area_source}\n") for i in range(len(cents2)): - results.write(f"{cents2[i]},{errs2[i]},{sigmas2[i]}\n") + results.write(f"{cents2[i]},{errs2[i]},{sigmas2[i]},{areas_film}\n") # Update the results display in the GUI ResultManager() diff --git a/Files/xra.txt b/Files/xra.txt new file mode 100644 index 0000000..8a48857 --- /dev/null +++ b/Files/xra.txt @@ -0,0 +1,6 @@ +Element Z A p (g/cm^3) mu Cu K_alpha mu Ag K_alpha mu Ba K_alpha mu Mo K_alpha mu Rb K_alpha mu Tb K_alpha +Sn 50 118.71 7.31 2.47E+02 1.64E+01 3.54E+01 3.10E+01 6.34E+01 1.48E+01 +Ag 47 107.8682 10.5 2.14E+02 3.09E+01 2.65E+01 5.44E+01 1.32E+01 +Al 13 26.981539 2.7 4.96E+01 2.59E+00 9.53E-01 5.11E+00 1.11E+01 4.62E-01 +Au 79 196.96657 19.282 2.05E+02 6.07E+01 2.31E+01 1.12E+02 1.38E+02 9.99E+00 +Pb 82 207.2 1.532 2.26E+02 6.67E+01 2.55E+01 1.22E+02 1.51E+02 1.11E+01 diff --git a/XRA/GaussianFit.py b/XRA/GaussianFit.py index bb1556a..09a574a 100644 --- a/XRA/GaussianFit.py +++ b/XRA/GaussianFit.py @@ -1,4 +1,4 @@ -from new import film_thickness, uncertainty +from XRA.thickness import film_thickness, uncertainty import numpy as np from sympy import sympify from scipy.optimize import curve_fit @@ -22,61 +22,62 @@ def load_mca_data(filename): return data -def get_measurement_time(filename): +import csv - with open(filename, 'r', encoding='latin1') as file: - reader = csv.reader(file, delimiter="\n", skipinitialspace=True) +def get_measurement_time(filename): + with open(filename, 'r', encoding='latin1', newline='') as file: # newline='' for csv + reader = csv.reader(file) # no delimiter="\n" data = list(reader) - time_str = data[7][0] #8th line + time_str = data[7][0] # 8th line, first column time = float(time_str[time_str.find('- ') + 2:]) return time +# time_source = get_measurement_time('Data/CuSource_01Aug.mca') +# time_film = get_measurement_time('Data/Al_foil_CuSource_01Aug.mca') +# time_bkg = get_measurement_time('Data/Combined_bkg_Internship.txt') -time_source = get_measurement_time('Data/CuSource_01Aug.mca') -time_film = get_measurement_time('Data/Al_foil_CuSource_01Aug.mca') -time_bkg = get_measurement_time('Data/Combined_bkg_Internship.txt') -print(f"Measurement time (source): {time_source} s") -print(f"Measurement time (film): {time_film} s") -print(f"Measurement time (background): {time_bkg} s") +# print(f"Measurement time (source): {time_source} s") +# print(f"Measurement time (film): {time_film} s") +# print(f"Measurement time (background): {time_bkg} s") -source_data = load_mca_data('Data/CuSource_01Aug.mca') -source_film_data = load_mca_data('Data/Al_foil_CuSource_01Aug.mca') -bkg_data = load_mca_data('Data/Combined_bkg_Internship.txt') +# source_data = load_mca_data('Data/CuSource_01Aug.mca') +# source_film_data = load_mca_data('Data/Al_foil_CuSource_01Aug.mca') +# bkg_data = load_mca_data('Data/Combined_bkg_Internship.txt') # Setting ROI and attenuation coefficient -x1 = int(input("Enter the start channel: ")) # start channel -x2 = int(input("Enter the end channel: ")) # end channel -mu = float(sympify(input("Enter the attenuation coefficient in nm^-1: "))) # attenuation coefficient (nm^-1) +# x1 = int(input("Enter the start channel: ")) # start channel +# x2 = int(input("Enter the end channel: ")) # end channel +# mu = float(sympify(input("Enter the attenuation coefficient in nm^-1: "))) # attenuation coefficient (nm^-1) -x_range = list(range(x1, x2 + 1)) -y_source = source_data[x1:x2 + 1] -y_film = source_film_data[x1:x2 + 1] -y_bkg = bkg_data[x1:x2 + 1] +# x_range = list(range(x1, x2 + 1)) +# y_source = source_data[x1:x2 + 1] +# y_film = source_film_data[x1:x2 + 1] +# y_bkg = bkg_data[x1:x2 + 1] -m = 0.030826941169 -b = 0.092673711109335 -energy_range = [m * ch + b for ch in x_range] #converting channels to energy -x_smooth = np.linspace(x1, x2, 500) -energy_smooth = [m * ch + b for ch in x_smooth] +# m = 0.030826941169 +# b = 0.092673711109335 +# energy_range = [m * ch + b for ch in x_range] #converting channels to energy +# x_smooth = np.linspace(x1, x2, 500) +# energy_smooth = [m * ch + b for ch in x_smooth] # Define the Gaussian function def gaussian(x, A, x0, sigma, B): return A * np.exp(-(x - x0)**2 / (2 * sigma**2)) + B -# Fit source data -popt_source, _ = curve_fit(gaussian, x_range, y_source, p0=[max(y_source), x_range[np.argmax(y_source)], 1, 0]) -A0, x0_0, sigma0, B0 = popt_source +# # Fit source data +# popt_source, _ = curve_fit(gaussian, x_range, y_source, p0=[max(y_source), x_range[np.argmax(y_source)], 1, 0]) +# A0, x0_0, sigma0, B0 = popt_source -# Fit film data -popt_film, _ = curve_fit(gaussian, x_range, y_film, p0=[max(y_film), x_range[np.argmax(y_film)], 1, 0]) -A1, x0_1, sigma1, B1 = popt_film +# # Fit film data +# popt_film, _ = curve_fit(gaussian, x_range, y_film, p0=[max(y_film), x_range[np.argmax(y_film)], 1, 0]) +# A1, x0_1, sigma1, B1 = popt_film # Fit background data -popt_bkg, _ = curve_fit(gaussian, x_range, y_bkg, p0=[max(y_bkg), x_range[np.argmax(y_bkg)], 1, 0]) -A2, x0_2, sigma2, B2 = popt_bkg +# popt_bkg, _ = curve_fit(gaussian, x_range, y_bkg, p0=[max(y_bkg), x_range[np.argmax(y_bkg)], 1, 0]) +# A2, x0_2, sigma2, B2 = popt_bkg def gaussian_integral_erf(A, x0, sigma, B, x1, x2): erf_part = 0.5 * (erf((x2 - x0) / (sqrt(2) * sigma)) - erf((x1 - x0) / (sqrt(2) * sigma))) @@ -84,58 +85,58 @@ def gaussian_integral_erf(A, x0, sigma, B, x1, x2): area_below= B * (x2 - x1) return area_gaussian + area_below -# Calculate Gaussian integrals -N0 = gaussian_integral_erf(*popt_source, x1, x2) -N = gaussian_integral_erf(*popt_film, x1, x2) -Nb = gaussian_integral_erf(*popt_bkg, x1, x2) - - -# Film thickness calculation -thickness = film_thickness(N, N0, Nb, mu) -print(f"Film thickness: {round(thickness)} nm") -uncertainty_value = uncertainty(N, N0, Nb, mu, time_source, time_film, time_bkg) -print(f"Uncertainty: {uncertainty_value:.2f}") -print(f"Full answer: {thickness:.2f} \u00B1 {uncertainty_value:.2f} nm") - -# Plot fits -# Plot 1: Source (no film) -plt.figure() -plt.plot(x_range, y_source, '*', label='Source', color='blue') -plt.plot(x_smooth, gaussian(x_smooth, *popt_source), '--', label='Gaussian Fit (Source)', color='cyan') -plt.xlabel('Channel') -plt.ylabel('Counts') -plt.title('Gaussian Fit - Source (No Film)') -plt.legend() -plt.grid(True) - -# Plot 2: Film -plt.figure() -plt.plot(x_range, y_film,'x', label='Source + Film', color = 'green') -plt.plot(x_smooth, gaussian(x_smooth, *popt_film), '--', label='Gaussian Fit (Source + Film)', color='lime') -plt.xlabel('Channel') -plt.ylabel('Counts') -plt.title('Gaussian Fit - Source + Film') -plt.legend() -plt.grid(True) - -#Plot 3: Source - counts vs energy -plt.figure() -plt.plot(energy_range, y_source, '*', label='Source (Energy)', color='navy') -plt.plot(energy_smooth, gaussian(x_smooth, *popt_source), '--', label='Gaussian Fit', color='dodgerblue') -plt.xlabel('Energy (keV)') -plt.ylabel('Counts') -plt.title('Gaussian Fit - Source (No Film) [vs Energy]') -plt.legend() -plt.grid(True) - -# Plot 4: Film - counts vs energy -plt.figure() -plt.plot(energy_range, y_film, 'x', label='Source + Film (Energy)', color='darkgreen') -plt.plot(energy_smooth, gaussian(x_smooth, *popt_film), '--', label='Gaussian Fit', color='limegreen') -plt.xlabel('Energy (keV)') -plt.ylabel('Counts') -plt.title('Gaussian Fit - Source + Film [vs Energy]') -plt.legend() -plt.grid(True) - -plt.show() \ No newline at end of file +# # Calculate Gaussian integrals +# N0 = gaussian_integral_erf(*popt_source, x1, x2) +# N = gaussian_integral_erf(*popt_film, x1, x2) +# Nb = gaussian_integral_erf(*popt_bkg, x1, x2) + + +# # Film thickness calculation +# thickness = film_thickness(N, N0, Nb, mu) +# print(f"Film thickness: {round(thickness)} nm") +# uncertainty_value = uncertainty(N, N0, Nb, mu, time_source, time_film, time_bkg) +# print(f"Uncertainty: {uncertainty_value:.2f}") +# print(f"Full answer: {thickness:.2f} \u00B1 {uncertainty_value:.2f} nm") + +# # Plot fits +# # Plot 1: Source (no film) +# plt.figure() +# plt.plot(x_range, y_source, '*', label='Source', color='blue') +# plt.plot(x_smooth, gaussian(x_smooth, *popt_source), '--', label='Gaussian Fit (Source)', color='cyan') +# plt.xlabel('Channel') +# plt.ylabel('Counts') +# plt.title('Gaussian Fit - Source (No Film)') +# plt.legend() +# plt.grid(True) + +# # Plot 2: Film +# plt.figure() +# plt.plot(x_range, y_film,'x', label='Source + Film', color = 'green') +# plt.plot(x_smooth, gaussian(x_smooth, *popt_film), '--', label='Gaussian Fit (Source + Film)', color='lime') +# plt.xlabel('Channel') +# plt.ylabel('Counts') +# plt.title('Gaussian Fit - Source + Film') +# plt.legend() +# plt.grid(True) + +# #Plot 3: Source - counts vs energy +# plt.figure() +# plt.plot(energy_range, y_source, '*', label='Source (Energy)', color='navy') +# plt.plot(energy_smooth, gaussian(x_smooth, *popt_source), '--', label='Gaussian Fit', color='dodgerblue') +# plt.xlabel('Energy (keV)') +# plt.ylabel('Counts') +# plt.title('Gaussian Fit - Source (No Film) [vs Energy]') +# plt.legend() +# plt.grid(True) + +# # Plot 4: Film - counts vs energy +# plt.figure() +# plt.plot(energy_range, y_film, 'x', label='Source + Film (Energy)', color='darkgreen') +# plt.plot(energy_smooth, gaussian(x_smooth, *popt_film), '--', label='Gaussian Fit', color='limegreen') +# plt.xlabel('Energy (keV)') +# plt.ylabel('Counts') +# plt.title('Gaussian Fit - Source + Film [vs Energy]') +# plt.legend() +# plt.grid(True) + +# plt.show() \ No newline at end of file diff --git a/XRA/__pycache__/GaussianFit.cpython-313.pyc b/XRA/__pycache__/GaussianFit.cpython-313.pyc new file mode 100644 index 0000000000000000000000000000000000000000..5314d81b0adc1b0fff15e19ce000d4b6075c1f07 GIT binary patch literal 2621 zcma)8O>7fK6rTO}Z)_8XzoL+&q{S#91PBQ~1vv?Swn)LQ!IDF*#aSn-+M8u|0|}+7 zk7-Lw+!kR(r3Qgikb20a5{Dk3>ZNKAF`*?If^Xi3}&v_9?v z8XRUr?uXQr5KHQ^YA&BPN7T%FnqnBlJ*H(8Y|5%;P7H(?A{i5TUCmBF*O?i^CzNzn zHDMs?6MAmcyv7ku!CAr^$FWIRUCl66A88{&<)AK(!|XYfs;wo!^EeylwsI`em;@7} zTrZTa>R4mJ6ZmyiqX&NS8kZ7m_9JXpRc}2y%pVpEt^*ltJ=*6(XbfcZ-EkoyYzOus z7#;8;l;97t2LcGWQ4=yaP0;wbNY!a#2hybE>j{xZAio!8Kr%+Xc%j&~#hfoJz|daP z90|wT>aw--I@no?xnGt@flZZ?a8xX@J+j*-bYOqQ-h{LUHKR6E(+s|60XwU~mnJmu z*<0Ldlw}Nrpj>(Xr;+$d;_F_7M$M6krFpO za?9B+h5| zgwJ-CSGC=8_1@?#yLK1)9=N@Q{&{~xsgJ7QsXABD^@Zn-zoqPNne(ri6z;qIlU?&3 z|JmqA(XWJ(G9A7!a?$sjXYF4S3N$}*AdkNgeX&!Pjl`xs*>*m@?=+sb|C z>D?mU6hxpuw7PmXNv}?=KY;&LsTJq9@-(?p^jNJDR?KR1NgW{#U^{F4-F6j&>@Ccx2Degfd=A=>LNBFseX0PjDR&0#_G? z{6<95l#>)x52@)Egio>UO%E+Bix`p|5iVn#AR@)Hf++$4!^`MAU{o6liFi4cTtP{Q zlGSw0VXAp04V;9hJwt@a3O;c&T@MZ`W;(CP#u!%eie{!M7hVrbuR%33K%N2Ib@rBX z`*m|65In!~^OdFkxj^%zxZtaw+Vjb2fKL6g5>xChbr!cxIu?AvspQxB3;C=4bB&!d z;c{cwY~z;MhVD6E53u^`pSY20#~tT(`2TIt1pYMa3O92%n_b}!DO0-@VSz@3-m8mA zAm`wqQ_xmQtOg2u2B8*|WZNNK;!L{(p>@#0!CU=y(Ap07mVJnHoZ#uvu7PtHz;8ki zo)T8mA+^W#kU*Gm!h{Jsz5%WZbvQ2*rq`gRSs|=M&@o)iUEB=|eNc@JKniHy?Ky+b zp7{7giMb$72a4}c<)-DUtuujZYcJ)>OE=B=HkaL-XO5TMJ+pkzBFLZ&Js!J&@fEj! zgbqBi%+qHld5AigqCv4ryoT}w`=XQ2NQM8u6y>CvG!cRc?X!EOYWYW3o(raE$wU?b*!y6Y6>Cgg3_0;8Xz*rA=$nJL0D+iyLfr_LJkF-+6{U;1Yc#eUv9dpPye+vQz@bK8%WmmV$q-Yx8#4>lC{U*V?@ zeY@n+;me+KuAboO%q?)F7OmGYJo~ zBbeT37y^$leV*}JO6cohWwZrQD+1S$Wl|NuJMyDLV>x9f-UpoU3?qXg`4Pu3%ze~# u7cIGmR@_5t;C~-AmQmwf7&-6`uX!?~)cp$r5bK4kgQ$7+I1nLs4X>Mk!iR_SU~7|@=+;lx%28R=zNMID8gJtn2E4Q5oRMC zP%gp)MuY*FQafGim(^F z2u;HtL|B3LEeJ^-(u=tfiZU>mmIyak?!!E;6Gf}KqcFoPBC3q3<1rQ9VEJTC=vQ!h zg_j0Io=ok9brkNp3n2md5Yg@DL$ei~n9MRbC8qc}!!nb~#IlA3$CO#w;F3z#Z!y@# zb5I8iK9y9nhHXKP&8xYz!6a3p-A9ViAG|Orsxnq51C!%QR>q1tmt2?}6UV2rb4g`t zCYegBlTtV^smOQx7M4skkz5)d0v$Y5^%jsk+BwviAKSAzmIL?i6ugDlT8lRDaA?=t zs#(^~EZg>-$kmh&{b)np)^$}ISiAd#D~@d1zH97W4(zy^w7}|J-F4!@*b5GM{rgrr z`W0wK2Yf{~PJLx!KxAuvsM$Ee^nxAhBvniE2yDpS`(;?p=CI<6#}f0iIFnPReRpE1 zoUHn0a3<}8Gt0i24EBX@jQgUC=g#;R2j2H}CzV7hrzY>n{=OfG$Ndbpk%q%|Xs`o_ z(NI%4H66>wRI*vHGX_^4l#)eo6L1@$s>guj(VlSh(RmF&94emM7=9Aj@@`IS3%%QX zFKz(&0Yg+l`yY^eihj-z#AX1^dQ(*mVw#GM;3W?+8-V>TKpajZ1fl`sftu-GXLMKtc2EQPEvw4*Bb5cX1GF=;^gFUnFKj~O$jD!_*8y7u@+zxXJAsWOl;`4)p<`aQ7}d0g_FbNRq-*O@OOPraW{{5A1)$5*r8Fkj9;?;0ry!Dn3~#r8tu zYRk$sZQ!}lnK~CAkjBi}T>K3fRj;F(A788EfV8RuEM5be#E9G= zIRz8|A!Nu}76lnwktr6)-PR~^6fIE_l4cL!YnD2w)_ApWpa85uwQ_ae zoA>V)Iy7djOA9}o*lB16-XDSmq2y{S+1iRMWU^zWQ-dYnAeFV~wvH_pK>kLlH&E&h zd=viX$!{~ID<70bKY#)IcJzyDjQ-BVdP9-jYIyE>d;9%Zetg$+MC&N_lstX;@jbzn zzr5=`_Gt9U$zpu7>x=VS`17HsH$S^rY8(2_`}T@;ncHb;FUB69(p$Qhg&m<;7ks&(RihxBLX%Ltq2Ym^WYD@jC6sbm!uMX?A*F-0Z@Q@I}8PVz< z!X(UpQaX?{N=8-CN)jpH$x_CXBk7B!eRDFFF;P=~KJ5S9&l{En3=aiNPGzvl0>CXZ z>$e(A$Y4Wfp~ek1oii+S@oMa)kkWLdyy<#)_CZBTbQu9y7 zILaJ4myU5(GbQmQ^BP|gzrc!Ssrj-KNzEcpd_dL^?etosRI-ScD&Il*l#(k?IxSkO zGAET$N@R*4ZBUM_j&ih5sp5*3-;W4|t4Jwt3>v`4-^gAn_yBBhCN?M_;Q2xTfV+S| zZn%xJemC|L&YOhv5ORjdglsY`PpO$4PC!1PAH?;Bop$5%vxa4yBE^!(q!-Q^v>7m) z^YBiEmnSzZD=MTuR7owgHE|^5l!T14F+k)Jz6fK&P}T2&m>{~Ub!_zLu2X;|*P)fG zT6^7BNDFU7byv433u!mYUwbxt`8j%ftyP2T^Wj(xWPnA%tCUO``1H2=p+5Ja9{*?`eo>gq>=pBiHo_G)AKVcvw!vw!@oS?VESIQxS8Wr+y4Njtj^~E literal 0 HcmV?d00001 diff --git a/XRA/__pycache__/thickness.cpython-313.pyc b/XRA/__pycache__/thickness.cpython-313.pyc new file mode 100644 index 0000000000000000000000000000000000000000..86b249d9a47e420a57aa839f03cca0fcdaafb8cf GIT binary patch literal 3463 zcmaJ^O>7&-6`uX!?~)Ql$r5bK4kgQ$7+JCMk!iRd2i;;%zNK^GyBr*b|NSrpI^K2v4GI`q*EmmIyaeX~R6O2SsbTqcFoPBC3vQ;4xL+NabX$=vQ!h zg_nj!o=hEpbrkN33n2md5Yg@DL-SRgn9MRbC9e26!!no7#&d=R$CY{6;8IG?Z!y^A zA^3(3KAlo?hHX)fFR1y9!K758-A9Ts5cd`3#{MLT}SUuKIf3v zzi*|ZUxH@zipR+IsmDwth-}>(bxTK>0kCF+q-Jj(fhF17zYNQ{JXU;(cyeJLXYUu6|* z4^Xo;2d2I~7L2Ep`E)!d`_d^zj^jor{;bb1F*FSwKT92li4Fa>2JZRsz7hS#T`+K)ULDg<_WPks@3;{AO3ugR~wzncGs`Eub|?|4}VKJ6VZ zbroCI+t)5@!_Qnt^xkn@2yXMi|2`FhDmlwP4z>nP@ktVt)k2U-x_)2zzG4rh07&&Y;Q=Q#}S%5;3X>jo?(zrRBOS}Q28geYjkK~ zAW-fLd=viXv2U~GiyxFHK7axHcJzzOjQ-B_W^;+%YJTQ6bUjx?bZ;Boi;UOV{ zGorOUgh`nHq;w-`f{d!7l_XNYlcj{M#S}SbSVN~tO%siY3=JMQMS>B75kuiM>4=FaWnb?xRxv^2ie^=NX}?p|GZWogYqdQSDti2 zwAN%!Dx;Lh6hXR2IkpDM(Ke-uD_VI)A{4G6rLr-o03UxNd#U0Bu)&$wpn!nq3jqM` z1p>L@CeHcY*iSfb64Fn|Ng@++sf-*`vw56^d_p_K^@g1`6ASZ(Wr`xjlFVinhYVT` zo7EY3t-|}0o0Sz6QXi_O7FwG)67ot?#<@5kas{7*F=6=B?}3;gx}(^b!0ZXo? zwM$x8LocL-??rW2pD7Dz*DAd|o4xWJy}8k$!S#86vJNu9qTtpRbdO(mzPUA`J5N73 zpgZ6Cy5-x0`uVUv7TNyId-~XW+rN$JV=>(s+fK}Gs~_q&KGYK*?Zb}>bAf#hk20vB zH^E*sd$bZRvW4J|;8{DT9ngiNT3#1=N(tTBx8>EH{e|Ga1@|9E?~WFO>yu@nbDQs^ zsm9NQ{C2|vhFV;q?x0WXdj6-Gm&O;h&u56vGOcHSCzGAcr{(kbJXnn2QYB8?=NN|h r7xKQaI+)fMhgfFth0DTRV1D$rGoJm^O$`6ysDl}N+3seJP;LJMb)C^~ literal 0 HcmV?d00001 diff --git a/XRA/new.py b/XRA/thickness.py similarity index 100% rename from XRA/new.py rename to XRA/thickness.py From 795a648a1d5a04b629f57824647fd8256862594e Mon Sep 17 00:00:00 2001 From: aysuismailova Date: Fri, 15 Aug 2025 02:34:21 +0300 Subject: [PATCH 31/44] Code update: removed decimals for the real time --- ARC-TF.py | 31 ++++++++++---------- XRA/GaussianFit.py | 3 -- XRA/__pycache__/GaussianFit.cpython-313.pyc | Bin 2621 -> 2608 bytes 3 files changed, 16 insertions(+), 18 deletions(-) diff --git a/ARC-TF.py b/ARC-TF.py index cef0189..7c80214 100644 --- a/ARC-TF.py +++ b/ARC-TF.py @@ -242,10 +242,12 @@ def File_Reader(Document, Separator, Decimal, Upload): # If needed, update GUI with the "measurement live-time" value from line 9 if Upload == 'Yes': - TabList[num][1].Real_Time.set(lines[8] + ' s') + time = int(float(lines[8][lines[8].find('- ') + 2:])) + TabList[num][1].Real_Time.set('Real time: ' + str(time) + ' s') if Upload == 'second_file': # for adding the real-time from the source+film file - TabList[num][1].Real_Time_2.set(lines[8] + ' s') + time2 = int(float(lines[8][lines[8].find('- ') + 2:])) + TabList[num][1].Real_Time_2.set('Real time: ' + str(time2) + ' s') start = 12 try: @@ -773,25 +775,23 @@ def Calculate_Thickness(): ######################################### -# Load table (can be xls/xlsx or csv/txt) -df_xra = pd.read_csv("Files/xra.txt", sep="\t") -films_list = df_xra["Element"].dropna().tolist() +# Load table (xra.txt file) +df_xra = pd.read_csv("Files/xra.txt", sep="\t") +films_list = df_xra["Element"].dropna().tolist() #takes the film materials sources = list(df_xra.columns[4:]) #columns after 5th sources = [col.replace("mu ", "").replace(" K_alpha", "") for col in sources] def get_selected_film(num): - """Return the film material currently selected in the ROI frame OptionMenu.""" + # Return the film material currently selected in the ROI frame OptionMenu. return TabList[num][5].film_data.get() - -# This replaces select_source() def get_selected_source(num): - """Return the source material currently selected in the ROI frame OptionMenu.""" + #Return the source material currently selected in the ROI frame OptionMenu. return TabList[num][5].source_data.get() def get_mu_from_table(film_name, source_name): - """Get linear attenuation coefficient μ from table: density × mass coefficient.""" + #Get linear attenuation coefficient mu from table: density x mass coefficient. row = df_xra.loc[df_xra["Element"] == film_name] if row.empty: raise ValueError(f"Film {film_name} not found in table.") @@ -802,9 +802,9 @@ def get_mu_from_table(film_name, source_name): raise ValueError(f"Source {source_name} not found in table.") mass_coeff = float(row[col_name]) - return density * mass_coeff # μ in cm^-1 + return density * mass_coeff # mu in cm^-1 -def run_thickness_calc(): +def run_thickness_calc(): #NOT READY yet mu = get_mu_from_table(TabList[Current_Tab()][5].film_material, TabList[Current_Tab()][5].source_material) @@ -874,7 +874,7 @@ def ResultManager(): tk.OptionMenu(TabList[num][1].ResultFrame, TabList[num][5].film_data, *films_list).grid(row=2, column=1) TabList[num][5].source_data = tk.StringVar(value="Sources") tk.OptionMenu(TabList[num][1].ResultFrame, TabList[num][5].source_data, *sources).grid(row=2, column=2) - tk.Button(TabList[num][1].ResultFrame, text="Run", command=run_thickness_calc).grid(row=2, column=4) + tk.Button(TabList[num][1].ResultFrame, text="Run", command=run_thickness_calc).grid(row=2, column=4) #command not ready YET else: Result_Button = tk.Checkbutton( TabList[num][1].ResultFrame, @@ -1400,7 +1400,7 @@ def ROI_Select_Alg(): gaussian, roi_channels, roi_counts, - p0=[max(roi_counts), roi_channels[np.argmax(roi_counts)], 1, min(roi_counts)] + p0=[max(roi_counts), roi_channels[np.argmax(roi_counts)], 1, min(roi_counts)], maxfev = 500000 ) area_source = gaussian_integral_erf(*popt_source, x1, x2) @@ -1417,7 +1417,8 @@ def ROI_Select_Alg(): gaussian, roi_channels, roi_counts2, - p0=[max(roi_counts2), roi_channels[np.argmax(roi_counts2)], 1, min(roi_counts2)] + p0=[max(roi_counts2), roi_channels[np.argmax(roi_counts2)], 1, min(roi_counts2)], + maxfev = 50000 ) areas_film = gaussian_integral_erf(*popt_film, x1, x2) else: diff --git a/XRA/GaussianFit.py b/XRA/GaussianFit.py index 09a574a..863dbf3 100644 --- a/XRA/GaussianFit.py +++ b/XRA/GaussianFit.py @@ -6,7 +6,6 @@ from math import erf, sqrt, pi import csv - def load_mca_data(filename): with open(filename, 'r', encoding='latin1') as file: lines = file.readlines() @@ -22,8 +21,6 @@ def load_mca_data(filename): return data -import csv - def get_measurement_time(filename): with open(filename, 'r', encoding='latin1', newline='') as file: # newline='' for csv reader = csv.reader(file) # no delimiter="\n" diff --git a/XRA/__pycache__/GaussianFit.cpython-313.pyc b/XRA/__pycache__/GaussianFit.cpython-313.pyc index 5314d81b0adc1b0fff15e19ce000d4b6075c1f07..bbac723a695ff96c41f06738cb1fb555d692f512 100644 GIT binary patch delta 90 zcmdlhvO$FRGcPX}0}!msotF_gkynzjWTJY?#>sz~7&$jjWG-N0l-SI~X3EIuu-Srr tF(ae@<~tmUjEqK;|8XixvhXkpe3D~h6!{du$jE5 Date: Mon, 18 Aug 2025 17:05:41 +0100 Subject: [PATCH 32/44] Code update: 1. Resolve issue with sources/materials menu button 2. Fix file reading issue affecting centroid visualization --- ARC-TF.py | 153 ++++++++++++--------- XRA/PlotData.py | 1 + XRA/__pycache__/GaussianFit.cpython-38.pyc | Bin 0 -> 1782 bytes XRA/__pycache__/thickness.cpython-38.pyc | Bin 0 -> 2286 bytes XRA/testGaussianFit.py | 142 +++++++++++++++++++ XRA/thickness.py | 2 +- 6 files changed, 233 insertions(+), 65 deletions(-) create mode 100644 XRA/__pycache__/GaussianFit.cpython-38.pyc create mode 100644 XRA/__pycache__/thickness.cpython-38.pyc create mode 100644 XRA/testGaussianFit.py diff --git a/ARC-TF.py b/ARC-TF.py index 7c80214..38a6201 100644 --- a/ARC-TF.py +++ b/ARC-TF.py @@ -255,14 +255,12 @@ def File_Reader(Document, Separator, Decimal, Upload): except StopIteration: end = len(lines) # fallback if <> not found - # Slice the lines to desired range if lines and lines[0].strip() == "<>": lines = lines[start:end] # MCA file → skip header else: lines = lines[:end] # Other file → no header skip - # If it's a 2D file (e.g. table with multiple columns) if Separator != '0': Results = [[0] for _ in range(len(lines))] # Create a placeholder matrix @@ -805,8 +803,10 @@ def get_mu_from_table(film_name, source_name): return density * mass_coeff # mu in cm^-1 def run_thickness_calc(): #NOT READY yet - mu = get_mu_from_table(TabList[Current_Tab()][5].film_material, - TabList[Current_Tab()][5].source_material) + mu = get_mu_from_table(TabList[Current_Tab()][5].film_data.get(), + TabList[Current_Tab()][5].source_data.get()) + + TabList[Current_Tab()][1].mu_label.config(text=f"μ = {mu:.3f} cm⁻¹") @@ -871,10 +871,16 @@ def ResultManager(): text='\t Area = ' + str("{:.1f}".format(values[j][3])) ).grid(row=j, column=3) TabList[num][5].film_data = tk.StringVar(value="Films") - tk.OptionMenu(TabList[num][1].ResultFrame, TabList[num][5].film_data, *films_list).grid(row=2, column=1) + film_menu = tk.OptionMenu(TabList[num][1].ResultFrame, TabList[num][5].film_data, *films_list) + film_menu.config(width=6) + film_menu.grid(row=2, column=1) TabList[num][5].source_data = tk.StringVar(value="Sources") - tk.OptionMenu(TabList[num][1].ResultFrame, TabList[num][5].source_data, *sources).grid(row=2, column=2) + source_menu = tk.OptionMenu(TabList[num][1].ResultFrame, TabList[num][5].source_data, *sources) + source_menu.config(width=6) + source_menu.grid(row=2, column=2) tk.Button(TabList[num][1].ResultFrame, text="Run", command=run_thickness_calc).grid(row=2, column=4) #command not ready YET + TabList[num][1].mu_label = tk.Label(TabList[num][1].ResultFrame, text="μ ") + TabList[num][1].mu_label.grid(row=3, column=4, pady=5) else: Result_Button = tk.Checkbutton( TabList[num][1].ResultFrame, @@ -1301,6 +1307,48 @@ def Threshold_Alg(): # ROI_Select_Alg: Detects peaks within user-defined ROIs and records their # # centroids, uncertainties, and sigma/sqrt(N) for the ROI Select algorithm. # ################################################################################ + +def analyze_gaussian(counts, roi_down, roi_up): + """ + Analyze the counts within each ROI to fit a Gaussian and extract centroids, uncertainties, and sigma/sqrt(N). + Returns centroids, uncertainties, sigma, and areas for each ROI. + """ + cents = [] + errs = [] + sigmas = [] + areas = [] # To store areas for each (Source and Source + Film) ROI + + for (d, u) in zip(roi_down, roi_up): + x1 = int(d) + x2 = int(u) + roi_channels = list(range(x1, x2 + 1)) + roi_counts = counts[x1:x2 + 1] + + # Perform Gaussian fitting + popt_source, _ = curve_fit( + gaussian, + roi_channels, + roi_counts, + p0=[max(roi_counts), roi_channels[np.argmax(roi_counts)], 1, min(roi_counts)], + maxfev=500000 + ) + + # Extract mean (centroid), sigma, and calculate error + mean = popt_source[1] # Mean (centroid) from Gaussian fit + sigma = popt_source[2] # Sigma from Gaussian fit + error = sigma / np.sqrt(len(roi_counts)) # Uncertainty (sigma/√N) + + cents.append(mean) + errs.append(error) + sigmas.append(sigma) + + # Calculate the area under the Gaussian curve + area = gaussian_integral_erf(*popt_source, x1, x2) + areas.append(area) + + return cents, errs, sigmas, areas + +################################################################################ def ROI_Select_Alg(): """ Detects and analyzes peaks within user-defined Regions of Interest (ROIs) @@ -1381,62 +1429,39 @@ def ROI_Select_Alg(): print("roi_up:", roi_up) print("Number of ROIs passed to Analyze:", len(roi_down)) - for idx, (d, u) in enumerate(zip(roi_down, roi_up)): - try: - x1 = int(d) - x2 = int(u) - except (ValueError, TypeError): - tk.messagebox.showerror("Error", f"Invalid ROI input at peak {idx+1}: \nROId = {d}, ROIu = {u}") - return - - if x2 <= x1 or (x2 - x1) < 2: - tk.messagebox.showerror("Error", f"Invalid ROI range at peak {idx+1}: \nx1 = {x1}, x2 = {x2} " - f"\nUpper bound must be greater than lower bound and difference must be at least 2.") - return - roi_channels = list(range(x1, x2+1)) - roi_counts = counts[x1:x2+1] + if TabList[num][1].tab_kind == 5: # If it's XRA, use Gaussian fitting + cents, errs, sigmas, areas_source = analyze_gaussian(counts, roi_down, roi_up) + print("cents:", cents) + + if counts2 is not None: + cents2, errs2, sigmas2, areas_film = analyze_gaussian(counts2, roi_down, roi_up) + else: + cents2, errs2, sigmas2, areas_film = [], [], [], [] # If no film data, leave it empty - popt_source, _ = curve_fit( - gaussian, - roi_channels, - roi_counts, - p0=[max(roi_counts), roi_channels[np.argmax(roi_counts)], 1, min(roi_counts)], maxfev = 500000 - ) - area_source = gaussian_integral_erf(*popt_source, x1, x2) - - # Analyze the counts within each ROI to get centroids, uncertainties, and sigma/sqrt(N) - cents, errs, sigmas = Analyze(counts, roi_down, roi_up) - if counts2 is not None: - cents2, errs2, sigmas2 = Analyze(counts2, roi_down, roi_up) - for (d, u) in zip(roi_down, roi_up): - x1, x2 = int(d), int(u) - roi_channels = list(range(x1, x2 + 1)) - roi_counts2 = counts2[x1:x2 + 1] - - popt_film, _ = curve_fit( - gaussian, - roi_channels, - roi_counts2, - p0=[max(roi_counts2), roi_channels[np.argmax(roi_counts2)], 1, min(roi_counts2)], - maxfev = 50000 - ) - areas_film = gaussian_integral_erf(*popt_film, x1, x2) else: - cents2, errs2, sigmas2 = [], [], [] #when non-XRA tab + cents, errs, sigmas = Analyze(counts, roi_down, roi_up) # Write results to file: append if file exists, otherwise create new if os.path.isfile(TabList[num][3]): with open(TabList[num][3], 'a') as results: for i in range(len(cents)): - results.write(f"{cents[i]},{errs[i]},{sigmas[i]},{area_source}\n") - for i in range(len(cents2)): - results.write(f"{cents2[i]},{errs2[i]},{sigmas2[i]},{areas_film}\n") + if TabList[num][1].tab_kind == 5: + results.write(f"{cents[i]},{errs[i]},{sigmas[i]},{areas_source[i]}\n") + else: + results.write(f"{cents[i]},{errs[i]},{sigmas[i]}\n") + if counts2 is not None: + for i in range(len(cents2)): + results.write(f"{cents2[i]},{errs2[i]},{sigmas2[i]},{areas_film[i]}\n") else: with open(TabList[num][3], 'w') as results: for i in range(len(cents)): - results.write(f"{cents[i]},{errs[i]},{sigmas[i]},{area_source}\n") - for i in range(len(cents2)): - results.write(f"{cents2[i]},{errs2[i]},{sigmas2[i]},{areas_film}\n") + if TabList[num][1].tab_kind == 5: + results.write(f"{cents[i]},{errs[i]},{sigmas[i]},{areas_source[i]}\n") + else: + results.write(f"{cents[i]},{errs[i]},{sigmas[i]}\n") + if counts2 is not None: + for i in range(len(cents2)): + results.write(f"{cents2[i]},{errs2[i]},{sigmas2[i]},{areas_film[i]}\n") # Update the results display in the GUI ResultManager() @@ -1552,10 +1577,10 @@ def upload_source_only(): if not filename: return - file = File_Reader(filename, '0', 'string', 'Yes') - TabList[num][5].source_data = file + CountsNumberList = File_Reader(filename, '0', 'string', 'Yes') + TabList[num][5].source_data = CountsNumberList TabList[num][5].source_file = filename - TabList[num][5].Structure(file, filename) + TabList[num][5].Structure(CountsNumberList, filename) TabList[num][5].subplots() Tabs.RenameTab(filename.split('/')[-1]) @@ -1597,10 +1622,10 @@ def upload_film(): else: # Read the uploaded file's contents using File_Reader function - file = File_Reader(filename, '0', 'string', 'Yes') + CountsNumberList = File_Reader(filename, '0', 'string', 'Yes') # Process the file structure and generate the initial plot - TabList[num][5].Structure(file, filename) + TabList[num][5].Structure(CountsNumberList, filename) TabList[num][5].subplots() # Retrieve the current algorithm selection and apply it if needed @@ -2883,7 +2908,7 @@ class Plot: figure_canvas (FigureCanvasTkAgg): Canvas for embedding the plot in Tkinter. axes (Axes): Matplotlib Axes object for plotting. """ - def Structure(self, File, Name, File2 = None): + def Structure(self, CountsNumberList, Name, File2 = None): # Initialize lists for channel and counts self.Channel = [] self.Counts = [] @@ -2905,11 +2930,11 @@ def Structure(self, File, Name, File2 = None): # If the file is an .mca file, process accordingly (specific to AEL machine format) if Name[-4:] == ".mca": - for i in range(12, len(File) - 1): - self.Counts.append(int(File[i])) + for i in range(len(CountsNumberList) - 1): + self.Counts.append(int(CountsNumberList[i])) total_sum += self.Counts[j] - self.Channel.append(i - 11) - Data.write(str(self.Counts[i - 12]) + "\n") + self.Channel.append(i + 1) + Data.write(str(self.Counts[i]) + "\n") j += 1 @@ -2938,9 +2963,9 @@ def Structure(self, File, Name, File2 = None): # If this is an XRA tab and File2 is provided, parse second dataset if getattr(TabList[num][1], 'tab_kind', None) == 5 and File2: - for i in range(12, len(File2) - 1): + for i in range(len(File2) - 1): self.Counts2.append(int(File2[i])) - self.Channel2.append(i - 11) + self.Channel2.append(i + 1) # Create the matplotlib figure and embed it in the Tkinter frame self.figure = Figure(figsize=(6, 4), dpi=100) diff --git a/XRA/PlotData.py b/XRA/PlotData.py index afb0841..4c002aa 100644 --- a/XRA/PlotData.py +++ b/XRA/PlotData.py @@ -44,6 +44,7 @@ def PlotData(File): return ################################################## +PlotData('Data/NoFilm_2h_17Jul_CuSource.mca') PlotData('Data/CuSource_01Aug.mca') PlotData('Data/Al_foil_CuSource_01Aug.mca') #PlotData('Data/NoFilm_for_C12_4h_2.mca') diff --git a/XRA/__pycache__/GaussianFit.cpython-38.pyc b/XRA/__pycache__/GaussianFit.cpython-38.pyc new file mode 100644 index 0000000000000000000000000000000000000000..eb585f2e19ebdbe3d41b97344f058acbcbbbc2fa GIT binary patch literal 1782 zcmZ8h&2Ah;5bo~z-L-dZ>J6dRXKVK|5 zQK#re-C`+PIyt`_Ez3ZL&sp@IY{@p(6}cc6v98LF>|*UnahLU%j$r}o3)|hx@?xO( zv*dA^*0o(2mr1I0oRxaA+vhf@CqnBQE zQDq6Ii%&*~wT1Z&W_#a`BNj=`!871Q)Ep@$d z``-5y`4S<`i+bb1om(5X<8fVQars@Q*Q<$bZ{=C7lTlG^cgY+d#K#x1!%O)nmV+XR z2Qt?2`c^(l;=JAlb9zEiD*AzSM^#$dmP%tuX4STpmass@I<;P{RaRlC@=RMluAnNd zw};DhKeQn%OUt-OtxKHs{<{FDVx-$4U6-C$D|pI!6{PhWw-suD+0HwL5*+Ft2;<9q zMY#NZ%w@jFUEbsB6Ug65202VM)gVZMd4nM7zHnduFy)%hg+Z>TLOX<*sbhek3rzZi z8tocxVq~av?Q|nWtQ$-*^bT5(|(JLjC2u|uFB7Gv4K%!7*MLK|{b%{G0 zzTPm^gCdRVu}TRx15#SU!J4dNe1*4pi1>ZL)fMa$kEADqcrvz$-eoX`Yc}TwAYMZq zuCfJCLx^voArH_YJmWSxp$QCf4u728A)dkb>#N2wMPcc;)Fu{njmYOju7kkAP0VXih{iS` zNJpI*DIJ`;7PXu0qck5qJL~_sQ>6hKXgXAJKEN$M;o6#-A>-Hi8j_{H1m8awbx`x` z|2JPn@lpm;it>!S)N$PQCQ8Mf^r*3^vi?2)3dTBpjj zbs^nX^s1tGD=H&JAZV(r0ZWsa#+JAIXu4KYx#3nZlH)wxCagC_yWBu+5gzn-D8i-i Ha=7#_ul$ty literal 0 HcmV?d00001 diff --git a/XRA/__pycache__/thickness.cpython-38.pyc b/XRA/__pycache__/thickness.cpython-38.pyc new file mode 100644 index 0000000000000000000000000000000000000000..2a927f96253f9f63fa85c088c8f0e9bbb382d1bb GIT binary patch literal 2286 zcmaJ?U27Xh6rGP)`+&2<;I?XN)wU6d-xlF<&kh!}z7=~Hy>M-d>x$Grb z;O64+4%*$^8T8UDFOQTD(#Df#Putmk zFKO@f265VWzWuO)VW*!&X}U3*6bJ2$V~R6fpm*VpsPn40%$I~-#P|Xv1kWiXbqtKi z7zL|%ouP+-e->*D!HJ^>+fg>wiN70m`dvL7C(3^n4#rXH@9AOeat4@1FWU z9NxL*AKrcG-|Quw!8q-`ih_*~1WLd)l z1q>5<8TLX*6b{`$p{4sU6w)yQp^(y9fJY<7%RxW)SE^gi#o!lnRS*3CEl_( z>_Ot>V#a9_IVn&>EkG_5s4m#sOm_`1emqejH57z%;qnGfemNgwh z>ExjxDVWdD(kn1sWas6|lpoJua)lj>RrZTGaCQpbSl9xQi;dfw%I&?(d2F%H#pK&_ zpjJ1Dd7WWA+MYVw<)}tehUZO4oTXOf2(d?sHAd>(GfO4^;rgZAV&R*YkB{xd5X$CTHYammiaw3>KD ze_AyqQ!&*#iAd?-S5vYgVp(t`n~jH-6hS$cgD9~?w?O5UD1jPiu*_z`<|CJJco@{q z@}VySHGK)DRiRvxU_|pSWg>UdVH`q@)S=}`UW+G>qQT&MD(PJAc2$u;%0!Vst5MA; z^D&c>VZ6>A+kEagb-o}Rew8n9kFN-iVlRD%g83Eg2Hz?)2nTzIawB209OkkUy|WMcc0*_xz>8z zlXU>#34If@9g??`hs2jSZaMu2Itbof2LPtD&JcXL=oPaVdjJKYovv5rWBV_xSLZbW zK3lM!n*yvK3$RcZ_`h*hAY{f{DH^fRwKEmWpsm{TP07wxF^9IwrZw=Ac9iE$!lO+W zGX74Onpq&o0k|vxw2~~X+2JAY}S+JJU};LX6xT^u!<*cY~+#>' in line][0] + # Reading data lines + data = [] + for line in lines[start:end]: + parts = line.strip().split() + if parts: + data.append(float(parts[0])) + return data + + +def get_measurement_time(filename): + + with open(filename, 'r', encoding='latin1') as file: + reader = csv.reader(file, delimiter="\n", skipinitialspace=True) + data = list(reader) + time_str = data[7][0] #8th line + time = float(time_str[time_str.find('- ') + 2:]) + return time + + +time_source = get_measurement_time('Data/NoFilm_2h_17Jul_CuSource.mca') +time_film = get_measurement_time('Data/Al_foil_CuSource_01Aug.mca') +time_bkg = get_measurement_time('Data/Combined_bkg_Internship.txt') + +print(f"Measurement time (source): {time_source} s") +print(f"Measurement time (film): {time_film} s") +print(f"Measurement time (background): {time_bkg} s") + + +source_data = load_mca_data('Data/NoFilm_2h_17Jul_CuSource.mca') +source_film_data = load_mca_data('Data/Al_foil_CuSource_01Aug.mca') +bkg_data = load_mca_data('Data/Combined_bkg_Internship.txt') + +# Setting ROI and attenuation coefficient +x1 = int(input("Enter the start channel: ")) # start channel +x2 = int(input("Enter the end channel: ")) # end channel +mu = float(sympify(input("Enter the attenuation coefficient in nm^-1: "))) # attenuation coefficient (nm^-1) + +x_range = list(range(x1, x2 + 1)) +y_source = source_data[x1:x2 + 1] +y_film = source_film_data[x1:x2 + 1] +y_bkg = bkg_data[x1:x2 + 1] + +m = 0.030826941169 +b = 0.092673711109335 +energy_range = [m * ch + b for ch in x_range] #converting channels to energy +x_smooth = np.linspace(x1, x2, 500) +energy_smooth = [m * ch + b for ch in x_smooth] + +# Define the Gaussian function +def gaussian(x, A, x0, sigma, B): + return A * np.exp(-(x - x0)**2 / (2 * sigma**2)) + B + +# Fit source data +popt_source, _ = curve_fit(gaussian, x_range, y_source, p0=[max(y_source), x_range[np.argmax(y_source)], 1, 0]) +A0, x0_0, sigma0, B0 = popt_source + +print(f"Source centroid: {x0_0:.1f}") + +# Fit film data +popt_film, _ = curve_fit(gaussian, x_range, y_film, p0=[max(y_film), x_range[np.argmax(y_film)], 1, 0]) +A1, x0_1, sigma1, B1 = popt_film + +# Fit background data +popt_bkg, _ = curve_fit(gaussian, x_range, y_bkg, p0=[max(y_bkg), x_range[np.argmax(y_bkg)], 1, 0]) +A2, x0_2, sigma2, B2 = popt_bkg + +def gaussian_integral_erf(A, x0, sigma, B, x1, x2): + erf_part = 0.5 * (erf((x2 - x0) / (sqrt(2) * sigma)) - erf((x1 - x0) / (sqrt(2) * sigma))) + area_gaussian = A * sigma * sqrt(2 * pi) * erf_part + area_below= B * (x2 - x1) + return area_gaussian + area_below + +# Calculate Gaussian integrals +N0 = gaussian_integral_erf(*popt_source, x1, x2) +N = gaussian_integral_erf(*popt_film, x1, x2) +Nb = gaussian_integral_erf(*popt_bkg, x1, x2) + + +# Film thickness calculation +thickness = film_thickness(N, N0, Nb, mu) +print(f"Film thickness: {round(thickness)} nm") +uncertainty_value = uncertainty(N, N0, Nb, mu, time_source, time_film, time_bkg) +print(f"Uncertainty: {uncertainty_value:.2f}") +print(f"Full answer: {thickness:.2f} \u00B1 {uncertainty_value:.2f} nm") + +# Plot fits +# Plot 1: Source (no film) +plt.figure() +plt.plot(x_range, y_source, '*', label='Source', color='blue') +plt.plot(x_smooth, gaussian(x_smooth, *popt_source), '--', label='Gaussian Fit (Source)', color='cyan') +plt.xlabel('Channel') +plt.ylabel('Counts') +plt.title('Gaussian Fit - Source (No Film)') +plt.legend() +plt.grid(True) + +# Plot 2: Film +plt.figure() +plt.plot(x_range, y_film,'x', label='Source + Film', color = 'green') +plt.plot(x_smooth, gaussian(x_smooth, *popt_film), '--', label='Gaussian Fit (Source + Film)', color='lime') +plt.xlabel('Channel') +plt.ylabel('Counts') +plt.title('Gaussian Fit - Source + Film') +plt.legend() +plt.grid(True) + +#Plot 3: Source - counts vs energy +plt.figure() +plt.plot(energy_range, y_source, '*', label='Source (Energy)', color='navy') +plt.plot(energy_smooth, gaussian(x_smooth, *popt_source), '--', label='Gaussian Fit', color='dodgerblue') +plt.xlabel('Energy (keV)') +plt.ylabel('Counts') +plt.title('Gaussian Fit - Source (No Film) [vs Energy]') +plt.legend() +plt.grid(True) + +# Plot 4: Film - counts vs energy +plt.figure() +plt.plot(energy_range, y_film, 'x', label='Source + Film (Energy)', color='darkgreen') +plt.plot(energy_smooth, gaussian(x_smooth, *popt_film), '--', label='Gaussian Fit', color='limegreen') +plt.xlabel('Energy (keV)') +plt.ylabel('Counts') +plt.title('Gaussian Fit - Source + Film [vs Energy]') +plt.legend() +plt.grid(True) + +plt.show() \ No newline at end of file diff --git a/XRA/thickness.py b/XRA/thickness.py index 0c50c0e..09fd208 100644 --- a/XRA/thickness.py +++ b/XRA/thickness.py @@ -77,7 +77,7 @@ def film_thickness(N, N0, Nb, mu): print("i am here") return float('nan') - return -1.0 / mu * np.log(N_net / N0_net) + return 1.0 / mu * np.log(N0_net / N_net) def uncertainty(N, N0, Nb, mu, time_source, time_film, time_bkg): I_net = N/time_film - Nb/time_bkg From 838af3a02837564e4d472ce8f8e8e3105c77d356 Mon Sep 17 00:00:00 2001 From: aysuismailova Date: Tue, 19 Aug 2025 17:28:31 +0100 Subject: [PATCH 33/44] Code update: 1. Added background file data to the interface 2. Thickness Calculation 3. Uncertainty Calculation 4. Count rate instead of counts --- ARC-TF.py | 164 +++++++++++++++++++---- XRA/__pycache__/thickness.cpython-38.pyc | Bin 2286 -> 2269 bytes XRA/thickness.py | 16 +-- 3 files changed, 144 insertions(+), 36 deletions(-) diff --git a/ARC-TF.py b/ARC-TF.py index 38a6201..d94994e 100644 --- a/ARC-TF.py +++ b/ARC-TF.py @@ -54,6 +54,7 @@ from Include.clear_frame import* from XRA.GaussianFit import gaussian, gaussian_integral_erf from scipy.optimize import curve_fit +from XRA.thickness import film_thickness, uncertainty ## ---------------------------------------------------------------------------------------------- ## @@ -249,6 +250,10 @@ def File_Reader(Document, Separator, Decimal, Upload): time2 = int(float(lines[8][lines[8].find('- ') + 2:])) TabList[num][1].Real_Time_2.set('Real time: ' + str(time2) + ' s') + if Upload == 'third_file': # for adding the real-time from the background file + time3 = int(float(lines[8][lines[8].find('- ') + 2:])) + TabList[num][1].Real_Time_3.set('Real time: ' + str(time3) + ' s') + start = 12 try: end = next(i for i, line in enumerate(lines) if '<>' in line) @@ -792,22 +797,41 @@ def get_mu_from_table(film_name, source_name): #Get linear attenuation coefficient mu from table: density x mass coefficient. row = df_xra.loc[df_xra["Element"] == film_name] if row.empty: - raise ValueError(f"Film {film_name} not found in table.") + raise ValueError("Film not found in table.") density = float(row["p (g/cm^3)"]) col_name = f"mu {source_name} K_alpha" if col_name not in df_xra.columns: - raise ValueError(f"Source {source_name} not found in table.") + raise ValueError("Source not found in table.") mass_coeff = float(row[col_name]) return density * mass_coeff # mu in cm^-1 def run_thickness_calc(): #NOT READY yet - mu = get_mu_from_table(TabList[Current_Tab()][5].film_data.get(), - TabList[Current_Tab()][5].source_data.get()) + num = Current_Tab() + + mu = get_mu_from_table(TabList[num][5].film_data.get(), + TabList[num][5].source_data.get()) TabList[Current_Tab()][1].mu_label.config(text=f"μ = {mu:.3f} cm⁻¹") + N = float(TabList[num][1].areas_film[0]) # area of source+film ROI + N0 = float(TabList[num][1].areas_source[0]) # area of source ROI + Nb = float(TabList[num][1].areas_bkg[0]) if getattr(TabList[num][1], 'areas_bkg', None) else 0 + # area of background ROI + rt_str = TabList[num][1].Real_Time.get() + time1 = float(rt_str.split(':')[1].strip().split()[0]) + rt_str2 = TabList[num][1].Real_Time_2.get() + time2 = float(rt_str.split(':')[1].strip().split()[0]) + rt_str3 = TabList[num][1].Real_Time_3.get() + time3 = float(rt_str.split(':')[1].strip().split()[0]) + + thickness = film_thickness(N, N0, Nb, mu) + uncertainty_value = uncertainty(N, N0, Nb, mu, time1, time2, time3) + + TabList[num][1].thickness_label.config(text=f"Thickness = {thickness:.1f} nm") + TabList[num][1].uncertainty_value_label.config(text=f"Uncertainty = {uncertainty_value:.1f} nm") + ######################################### @@ -854,6 +878,13 @@ def ResultManager(): TabList[num][1].ResultFrame, text='Source + Film: ' ).grid(row=1, column=0) + + if hasattr(TabList[num][5], 'bkg_file') and os.path.isfile(TabList[num][5].bkg_file): + tk.Label( + TabList[num][1].ResultFrame, + text='Background: ' + ).grid(row=2, column=0) + Result_Button = tk.Checkbutton( TabList[num][1].ResultFrame, variable=TabList[num][1].Var_Data[j], @@ -864,23 +895,27 @@ def ResultManager(): Result_Button.select() tk.Label( TabList[num][1].ResultFrame, - text='\t \u03C3 = ' + str("{:.1f}".format(values[j][2])) + text='\t \u03C3 = ' + str("{:.2f}".format(values[j][2])) ).grid(row=j, column=2) tk.Label( TabList[num][1].ResultFrame, - text='\t Area = ' + str("{:.1f}".format(values[j][3])) + text='\t Area = ' + str("{:.6f}".format(values[j][3])) ).grid(row=j, column=3) TabList[num][5].film_data = tk.StringVar(value="Films") film_menu = tk.OptionMenu(TabList[num][1].ResultFrame, TabList[num][5].film_data, *films_list) film_menu.config(width=6) - film_menu.grid(row=2, column=1) + film_menu.grid(row=3, column=1) TabList[num][5].source_data = tk.StringVar(value="Sources") source_menu = tk.OptionMenu(TabList[num][1].ResultFrame, TabList[num][5].source_data, *sources) source_menu.config(width=6) - source_menu.grid(row=2, column=2) - tk.Button(TabList[num][1].ResultFrame, text="Run", command=run_thickness_calc).grid(row=2, column=4) #command not ready YET - TabList[num][1].mu_label = tk.Label(TabList[num][1].ResultFrame, text="μ ") - TabList[num][1].mu_label.grid(row=3, column=4, pady=5) + source_menu.grid(row=3, column=2) + tk.Button(TabList[num][1].ResultFrame, text="Run", command=run_thickness_calc).grid(row=3, column=4) #command not ready YET + TabList[num][1].mu_label = tk.Label(TabList[num][1].ResultFrame) + TabList[num][1].mu_label.grid(row=4, column=4, pady=5) + TabList[num][1].thickness_label = tk.Label(TabList[num][1].ResultFrame) + TabList[num][1].thickness_label.grid(row=5, column=4, padx=5, pady=5) + TabList[num][1].uncertainty_value_label = tk.Label(TabList[num][1].ResultFrame) + TabList[num][1].uncertainty_value_label.grid(row=6, column=4, padx=5, pady=5) else: Result_Button = tk.Checkbutton( TabList[num][1].ResultFrame, @@ -1386,12 +1421,30 @@ def ROI_Select_Alg(): # Load counts from both files (source and film) using stored file paths counts = File_Reader(TabList[num][5].source_file, '0', 'Yes', 'No') + rt_str = TabList[num][1].Real_Time.get() + real_time1 = float(rt_str.split(':')[1].strip().split()[0]) # in seconds + + # Convert counts to count rate + count_rate = [c / real_time1 for c in counts] + # Only load film counts if a film file has been uploaded for this tab if hasattr(TabList[num][5], 'film_file') and os.path.isfile(TabList[num][5].film_file): counts2 = File_Reader(TabList[num][5].film_file, '0', 'Yes', 'No') + rt_str2 = TabList[num][1].Real_Time_2.get() + real_time2 = float(rt_str2.split(':')[1].strip().split()[0]) # in seconds + count_rate2 = [c / real_time2 for c in counts2] else: counts2 = None + # Load background counts if a background file has been uploaded for this tab + if hasattr(TabList[num][5], 'bkg_file') and os.path.isfile(TabList[num][5].bkg_file): + counts3 = File_Reader(TabList[num][5].bkg_file, '0', 'Yes', 'No') + rt_str3 = TabList[num][1].Real_Time_3.get() + real_time3 = float(rt_str3.split(':')[1].strip().split()[0]) # in seconds + count_rate3 = [c / real_time3 for c in counts3] + else: + counts3 = None + # Hide ROI 2–6 Entry widgets for i in range(1, min(6, len(TabList[num][1].ROIdown_entries))): @@ -1411,6 +1464,7 @@ def ROI_Select_Alg(): # Use all 6 if not XRA counts = File_Reader(TabList[num][2], '0', 'Yes', 'No') counts2 = None + counts3 = None roi_down = [TabList[num][1].ROIdown1.get(), TabList[num][1].ROIdown2.get(), TabList[num][1].ROIdown3.get(), @@ -1430,13 +1484,19 @@ def ROI_Select_Alg(): print("Number of ROIs passed to Analyze:", len(roi_down)) if TabList[num][1].tab_kind == 5: # If it's XRA, use Gaussian fitting - cents, errs, sigmas, areas_source = analyze_gaussian(counts, roi_down, roi_up) - print("cents:", cents) + cents, errs, sigmas, areas_source = analyze_gaussian(count_rate, roi_down, roi_up) + TabList[num][1].areas_source = areas_source if counts2 is not None: - cents2, errs2, sigmas2, areas_film = analyze_gaussian(counts2, roi_down, roi_up) + cents2, errs2, sigmas2, areas_film = analyze_gaussian(count_rate2, roi_down, roi_up) + TabList[num][1].areas_film = areas_film else: cents2, errs2, sigmas2, areas_film = [], [], [], [] # If no film data, leave it empty + if counts3 is not None: + cents3, errs3, sigmas3, areas_bkg = analyze_gaussian(count_rate3, roi_down, roi_up) + TabList[num][1].areas_bkg = areas_bkg + else: + cents3, errs3, sigmas3, areas_bkg = [], [], [], [] else: cents, errs, sigmas = Analyze(counts, roi_down, roi_up) @@ -1452,6 +1512,9 @@ def ROI_Select_Alg(): if counts2 is not None: for i in range(len(cents2)): results.write(f"{cents2[i]},{errs2[i]},{sigmas2[i]},{areas_film[i]}\n") + if counts3 is not None: + for i in range(len(cents3)): + results.write(f"{cents3[i]},{errs3[i]},{sigmas3[i]},{areas_bkg[i]}\n") else: with open(TabList[num][3], 'w') as results: for i in range(len(cents)): @@ -1462,6 +1525,9 @@ def ROI_Select_Alg(): if counts2 is not None: for i in range(len(cents2)): results.write(f"{cents2[i]},{errs2[i]},{sigmas2[i]},{areas_film[i]}\n") + if counts3 is not None: + for i in range(len(cents3)): + results.write(f"{cents3[i]},{errs3[i]},{sigmas3[i]},{areas_bkg[i]}\n") # Update the results display in the GUI ResultManager() @@ -1607,8 +1673,31 @@ def upload_film(): TabList[num][5].subplots() Tabs.RenameTab(film_file.split('/')[-1]) + def upload_bkg(): + mode_window.destroy() + bkg_file = fd.askopenfilename(title='Open Background File', filetypes=[('Text Files', '*.mca'), ('All Files', '*.*')]) + if not bkg_file: + return + + try: + source_data = TabList[num][5].source_data + source_file = TabList[num][5].source_file + except AttributeError: + tk.messagebox.showerror("Missing Source File", "Please upload a Source file first using 'Source Only'.") + return + + film_data = getattr(TabList[num][5], 'film_data', None) + + bkg_data = File_Reader(bkg_file, '0', 'string', 'third_file') + TabList[num][5].bkg_data = bkg_data + TabList[num][5].bkg_file = bkg_file + TabList[num][5].Structure(source_data, source_file, film_data, bkg_data) + TabList[num][5].subplots() + Tabs.RenameTab(bkg_file.split('/')[-1]) + tk.Button(mode_window, text="Source Only", command=upload_source_only).pack(padx=10, pady=5) tk.Button(mode_window, text="Source + Film", command=upload_film).pack(padx=10, pady=5) + tk.Button(mode_window, text="Background", command=upload_bkg).pack(padx=10, pady=5) # All other tabs else: @@ -2619,6 +2708,7 @@ def AnalysisTab(self, tab_kind): self.Real_Time = tk.StringVar() self.Real_Time_2 = tk.StringVar() + self.Real_Time_3 = tk.StringVar() #self.Total_Counts = tk.StringVar() @@ -2908,17 +2998,18 @@ class Plot: figure_canvas (FigureCanvasTkAgg): Canvas for embedding the plot in Tkinter. axes (Axes): Matplotlib Axes object for plotting. """ - def Structure(self, CountsNumberList, Name, File2 = None): + def Structure(self, CountsNumberList, Name, File2 = None, File3 = None): # Initialize lists for channel and counts self.Channel = [] - self.Counts = [] + self.CountsRate = [] self.Channel2 = [] - self.Counts2 = [] + self.CountsRate2 = [] + self.Channel3 = [] + self.CountsRate3 = [] self.line = [] num = Current_Tab() total_sum = 0 - total_sum2 = 0 j = 0 # Clear previous plot and set up the graphic frame @@ -2928,30 +3019,39 @@ def Structure(self, CountsNumberList, Name, File2 = None): # Open the data file for writing processed counts Data = open(TabList[num][2], "w") + rt1_str = TabList[num][1].Real_Time.get() # Get real time 1 + rt2_str = TabList[num][1].Real_Time_2.get() # Get real time 2 + rt3_str = TabList[num][1].Real_Time_3.get() # Get real time 3 + + real_time1 = float(rt1_str.split(':')[1].strip().split()[0]) # Extract time from string + real_time2 = float(rt2_str.split(':')[1].strip().split()[0]) if rt2_str else None # Extract time from string if available + real_time3 = float(rt3_str.split(':')[1].strip().split()[0]) if rt3_str else None + # If the file is an .mca file, process accordingly (specific to AEL machine format) if Name[-4:] == ".mca": for i in range(len(CountsNumberList) - 1): - self.Counts.append(int(CountsNumberList[i])) - total_sum += self.Counts[j] + self.CountsRate.append(int(CountsNumberList[i])/ real_time1) + #total_sum += self.Counts[j] self.Channel.append(i + 1) - Data.write(str(self.Counts[i]) + "\n") + Data.write(str(self.CountsRate[i]) + "\n") j += 1 Data.close() # Update total counts and display in the extra frame - #TabList[num][1].Total_Counts.set(total_sum) TabList[num][1].Extra_Frame.grid(column=0, row=1, sticky="nw") tk.Label(TabList[num][1].Extra_Frame, text="Source:").grid(row=0, column=0, sticky="w") tk.Label(TabList[num][1].Extra_Frame, text=TabList[num][1].Real_Time.get()).grid(row=0, column=1, sticky="w") - #tk.Label(TabList[num][1].Extra_Frame, text='Total: ' + str(TabList[num][1].Total_Counts.get())).grid(row=0, column=2, sticky="w") #For XRA tab, also show File 2 time if TabList[num][1].tab_kind == 5: tk.Label(TabList[num][1].Extra_Frame, text="Source+Film:").grid(row=1, column=0, sticky="w") tk.Label(TabList[num][1].Extra_Frame, text=TabList[num][1].Real_Time_2.get()).grid(row=1, column=1, sticky="w") + if File3 is not None: + tk.Label(TabList[num][1].Extra_Frame, text="Background:").grid(row=2, column=0, sticky="w") + tk.Label(TabList[num][1].Extra_Frame, text=TabList[num][1].Real_Time_3.get()).grid(row=2, column=1, sticky="w") # Set plot title based on tab type if TabTracker[num] < 0: @@ -2964,8 +3064,13 @@ def Structure(self, CountsNumberList, Name, File2 = None): # If this is an XRA tab and File2 is provided, parse second dataset if getattr(TabList[num][1], 'tab_kind', None) == 5 and File2: for i in range(len(File2) - 1): - self.Counts2.append(int(File2[i])) + self.CountsRate2.append(int(File2[i])/ real_time2) self.Channel2.append(i + 1) + + if getattr(TabList[num][1], 'tab_kind', None) == 5 and File3: + for i in range(len(File3) - 1): + self.CountsRate3.append(int(File3[i])/ real_time3) + self.Channel3.append(i + 1) # Create the matplotlib figure and embed it in the Tkinter frame self.figure = Figure(figsize=(6, 4), dpi=100) @@ -2975,15 +3080,18 @@ def Structure(self, CountsNumberList, Name, File2 = None): def subplots(self): # Create the plot with channels on x-axis and counts on y-axis self.axes = self.figure.add_subplot() - self.axes.plot(self.Channel, self.Counts, '*', label='Source') + self.axes.plot(self.Channel, self.CountsRate, '*', label='Source') # If second dataset exists, plot it - if self.Counts2: - self.axes.plot(self.Channel2, self.Counts2, '+', label='Source + Film', color='red') + if self.CountsRate2: + self.axes.plot(self.Channel2, self.CountsRate2, '+', label='Source + Film', color='red') + + if self.CountsRate3: + self.axes.plot(self.Channel3, self.CountsRate3, '-', label='Background', color='green') self.axes.set_title(self.Title) self.axes.set_xlabel('Channel') - self.axes.set_ylabel('Counts') + self.axes.set_ylabel('Counts Rate (counts/sec)') self.axes.legend() # Connect mouse click event for manual selection diff --git a/XRA/__pycache__/thickness.cpython-38.pyc b/XRA/__pycache__/thickness.cpython-38.pyc index 2a927f96253f9f63fa85c088c8f0e9bbb382d1bb..34a8f12f6669619fbb1d815234135724bfed63f0 100644 GIT binary patch delta 382 zcmXYsy-EW?5XWcsKC*Yo1*3r+1mQ&d*e0YBJIxD3Fj!fM7mR2`H?c6xVUb6;&MJa0 zU?<{3SO=`dM)C;GT-;@T|NYPG49sust5!XUq7e9e%w7iX;cHd-c%0Y#qju`mp$EqA zTIBL1xJ=H5$)IohRa7z7*aLG9`HZ638d@G0P@%c>^K@cn|$^mdyWQVWeQSf4XDIC1x`C+ z>yTB(I8#)nN)w(jb&H+6L_b^4?_3-O-&Lo5*fSW?Qf$*v&m{I~t3t mV$@C>V`W=hGuSnH?%muEZy$;oHj<7NK`clFM$pRN^xhvXcSwu? delta 378 zcmYk1OG*Pl5QeL|XL??lkbyu31~CL5X~^1@8!s>}f*`J3WDzimcE*KJA&3_c`T~jz z*IvP61iXR=5Cp4xvap-~tM0$5`tenK7u~ZwPl3nd=xsjCKDt6-Z3}f8OhJcsu6FIS zTHx6Js-5*G*AY-y0SQtSl(350RqOITCZynBKH2Vl7w1!g8D8P?oNyZ@M`11-n29Hx zf~%*X4}3=4Z^gY7va<$C*kTR*14#L@ls(n}Rv9I}B4Wo$wpw)>d=ZpUr-E0$Ld)79 zf5ixfmPWeuh_MNlcc#&~*>ldm!-2yg<05P9PqaAcp`W6}SRP|3%!HE~YaMUGoBQkA W2Y-^uU0=_kbQn5}9VYfYKKcVpPDW|~ diff --git a/XRA/thickness.py b/XRA/thickness.py index 09fd208..a02c38a 100644 --- a/XRA/thickness.py +++ b/XRA/thickness.py @@ -77,19 +77,19 @@ def film_thickness(N, N0, Nb, mu): print("i am here") return float('nan') - return 1.0 / mu * np.log(N0_net / N_net) + return 1.0 / mu * np.log(N0_net / N_net) * 1e7 # nm def uncertainty(N, N0, Nb, mu, time_source, time_film, time_bkg): - I_net = N/time_film - Nb/time_bkg - comp1 = Nb/time_bkg - N/time_film - comp2 = N0/time_source - Nb/time_bkg - comp3 = N0/time_source - N/time_film + I_net = N - Nb + comp1 = Nb - N + comp2 = N0 - Nb + comp3 = N0 - N if N <= 0 or N0 <= 0 or mu == 0: return float('nan') - num = N0 / (time_source * time_source)*comp1*comp1 + N / (time_film *time_film)*comp2*comp2 + Nb / (time_bkg * time_bkg) *comp3*comp3 - den = (comp2*comp2 * I_net*I_net)*mu*mu + num = N0 / (time_source)*comp1*comp1 + N / (time_film)*comp2*comp2 + Nb / (time_bkg) *comp3*comp3 + den = comp2**2 * I_net**2 * mu**2 - return np.sqrt( num/den) #((I0 / time_source)*comp1**2 + (I / time_film)*comp2**2 + (Ib / time_bkg)*comp3**2) / ((comp2**2)*(I_net**2))) \ No newline at end of file + return np.sqrt(num/den) * 1e7 # nm, ((I0 / time_source)*comp1**2 + (I / time_film)*comp2**2 + (Ib / time_bkg)*comp3**2) / ((comp2**2)*(I_net**2))) \ No newline at end of file From 45f1a2d4c7838776866d14712067c036021b3c05 Mon Sep 17 00:00:00 2001 From: aysuismailova Date: Wed, 20 Aug 2025 17:00:07 +0100 Subject: [PATCH 34/44] Code update: Added new method for mu selection (user input) --- ARC-TF.py | 124 ++++++++++++++++++++++++++++++++++++------------------ 1 file changed, 83 insertions(+), 41 deletions(-) diff --git a/ARC-TF.py b/ARC-TF.py index d94994e..0ab613e 100644 --- a/ARC-TF.py +++ b/ARC-TF.py @@ -810,10 +810,17 @@ def get_mu_from_table(film_name, source_name): def run_thickness_calc(): #NOT READY yet num = Current_Tab() - mu = get_mu_from_table(TabList[num][5].film_data.get(), - TabList[num][5].source_data.get()) - - TabList[Current_Tab()][1].mu_label.config(text=f"μ = {mu:.3f} cm⁻¹") + choice = TabList[num][5].options.get() + if choice == "Default": + mu = get_mu_from_table(TabList[num][5].film_data.get(), + TabList[num][5].source_data.get()) + + TabList[Current_Tab()][1].mu_label.config(text=f"μ = {mu:.3f} cm⁻¹") + elif choice == "User": + mu_str = TabList[num][1].mu_entry.get() + mu = float(mu_str) + TabList[Current_Tab()][1].mu_label.config(text=f"μ = {mu:.3f} cm⁻¹") + N = float(TabList[num][1].areas_film[0]) # area of source+film ROI N0 = float(TabList[num][1].areas_source[0]) # area of source ROI @@ -829,8 +836,8 @@ def run_thickness_calc(): #NOT READY yet thickness = film_thickness(N, N0, Nb, mu) uncertainty_value = uncertainty(N, N0, Nb, mu, time1, time2, time3) - TabList[num][1].thickness_label.config(text=f"Thickness = {thickness:.1f} nm") - TabList[num][1].uncertainty_value_label.config(text=f"Uncertainty = {uncertainty_value:.1f} nm") + result_text = f"Thickness = {thickness:.2f} ± {uncertainty_value:.2f} nm" + TabList[num][1].result_label.config(text=result_text) @@ -857,6 +864,7 @@ def ResultManager(): None """ num = Current_Tab() + TabList[num][5].options_list = ["Default", "User"] ClearWidget('Results', 0) # Reset previous results TabList[num][1].ResultFrame.grid(row=3, columnspan=2, pady=5) @@ -868,54 +876,88 @@ def ResultManager(): values = File_Reader(TabList[num][3], ',', 'Yes', 'No') for j in range(len(values)): if TabList[num][1].tab_kind == 5: - tk.Label( - TabList[num][1].ResultFrame, - text='Source: ' - ).grid(row=0, column=0) - # Only show "Source + Film" label if a film file has been uploaded for this tab - if hasattr(TabList[num][5], 'film_file') and os.path.isfile(TabList[num][5].film_file): - tk.Label( - TabList[num][1].ResultFrame, - text='Source + Film: ' - ).grid(row=1, column=0) + if j == 0: + tk.Label(TabList[num][1].ResultFrame, text='Source: ').grid(row=0, column=0) + if hasattr(TabList[num][5], 'film_file') and os.path.isfile(TabList[num][5].film_file) and j == 1: + tk.Label(TabList[num][1].ResultFrame, text=' Source + Film: ').grid(row=1, column=0) + if hasattr(TabList[num][5], 'bkg_file') and os.path.isfile(TabList[num][5].bkg_file) and j == 2: + tk.Label(TabList[num][1].ResultFrame, text='Background: ').grid(row=2, column=0) + + #Check if background is selected + is_background = (hasattr(TabList[num][5], 'bkg_file') + and os.path.isfile(TabList[num][5].bkg_file) + and j == 2) + + if not is_background: + # For source and film: centroid + sigma + area + tk.Label(TabList[num][1].ResultFrame, text='Centroid: ' + str("{:.1f}".format(values[j][0])) + ).grid(row=j, column=1) - if hasattr(TabList[num][5], 'bkg_file') and os.path.isfile(TabList[num][5].bkg_file): tk.Label( TabList[num][1].ResultFrame, - text='Background: ' - ).grid(row=2, column=0) + text='\t \u03C3 = ' + str("{:.2f}".format(values[j][2])) + ).grid(row=j, column=2) - Result_Button = tk.Checkbutton( - TabList[num][1].ResultFrame, - variable=TabList[num][1].Var_Data[j], - onvalue=1, offvalue=-1, - text='Centroid: ' + str("{:.1f}".format(values[j][0])) - ) - Result_Button.grid(row=j, column=1) - Result_Button.select() - tk.Label( + tk.Label( TabList[num][1].ResultFrame, - text='\t \u03C3 = ' + str("{:.2f}".format(values[j][2])) - ).grid(row=j, column=2) - tk.Label( + text='\t Area = ' + str("{:.1f}".format(values[j][3])) + ).grid(row=j, column=3) + + else: + tk.Label( TabList[num][1].ResultFrame, text='\t Area = ' + str("{:.6f}".format(values[j][3])) - ).grid(row=j, column=3) + ).grid(row=j, column=3) + + tk.Label(TabList[num][1].ResultFrame, text='Attenuation: ').grid(row=4, column=0) + TabList[num][5].options = tk.StringVar(value="??") + options_menu = tk.OptionMenu(TabList[num][1].ResultFrame, TabList[num][5].options, *TabList[num][5].options_list) + options_menu.config(width=6) + options_menu.grid(row=4, column=1) + TabList[num][5].film_data = tk.StringVar(value="Films") film_menu = tk.OptionMenu(TabList[num][1].ResultFrame, TabList[num][5].film_data, *films_list) - film_menu.config(width=6) - film_menu.grid(row=3, column=1) + film_menu.config(width=6) + TabList[num][5].source_data = tk.StringVar(value="Sources") source_menu = tk.OptionMenu(TabList[num][1].ResultFrame, TabList[num][5].source_data, *sources) source_menu.config(width=6) - source_menu.grid(row=3, column=2) - tk.Button(TabList[num][1].ResultFrame, text="Run", command=run_thickness_calc).grid(row=3, column=4) #command not ready YET + + run_button = tk.Button(TabList[num][1].ResultFrame, text="Run", command=run_thickness_calc) TabList[num][1].mu_label = tk.Label(TabList[num][1].ResultFrame) - TabList[num][1].mu_label.grid(row=4, column=4, pady=5) - TabList[num][1].thickness_label = tk.Label(TabList[num][1].ResultFrame) - TabList[num][1].thickness_label.grid(row=5, column=4, padx=5, pady=5) - TabList[num][1].uncertainty_value_label = tk.Label(TabList[num][1].ResultFrame) - TabList[num][1].uncertainty_value_label.grid(row=6, column=4, padx=5, pady=5) + TabList[num][1].result_label = tk.Label(TabList[num][1].ResultFrame) + mu_text = tk.Label(TabList[num][1].ResultFrame, text='Enter the linear attenuation coefficient in cm⁻¹: ') + TabList[num][1].mu_entry = tk.Entry(TabList[num][1].ResultFrame) + + + def update_visibility(*args): + + TabList[num][1].mu_label.grid_remove() + TabList[num][1].result_label.grid_remove() + mu_text.grid_remove() + TabList[num][1].mu_entry.grid_remove() + + choice = TabList[num][5].options.get() + if choice == "User": + film_menu.grid_remove() + source_menu.grid_remove() + mu_text.grid(row=5, column=0, padx=5, pady=5) + TabList[num][1].mu_entry.grid(row=5, column=1, padx=5, pady=5) + run_button.grid(row=5, column=4) + TabList[num][1].mu_label.grid(row=6, column=4, pady=5) + TabList[num][1].result_label.grid(row=7, column=4, padx=5, pady=5) + + + elif choice == "Default": + film_menu.grid(row=5, column=1) + source_menu.grid(row=5, column=2) + run_button.grid(row=5, column=4) + TabList[num][1].mu_label.grid(row=6, column=4, pady=5) + TabList[num][1].result_label.grid(row=7, column=4, padx=5, pady=5) + + TabList[num][5].options.trace_add("write", update_visibility) + + update_visibility() else: Result_Button = tk.Checkbutton( TabList[num][1].ResultFrame, From 83ec655ba77e5c948ebb5ef3ea04c95a80aa1a44 Mon Sep 17 00:00:00 2001 From: aysuismailova Date: Thu, 21 Aug 2025 16:56:45 +0100 Subject: [PATCH 35/44] Not much update, added gaussian fit function --- ARC-TF.py | 23 +++- XRA/GaussianFit.py | 137 +++------------------ XRA/__pycache__/GaussianFit.cpython-38.pyc | Bin 1782 -> 1422 bytes 3 files changed, 36 insertions(+), 124 deletions(-) diff --git a/ARC-TF.py b/ARC-TF.py index 0ab613e..1e9c2dc 100644 --- a/ARC-TF.py +++ b/ARC-TF.py @@ -52,7 +52,7 @@ from Include.Thick import* from Include.remove_file import* from Include.clear_frame import* -from XRA.GaussianFit import gaussian, gaussian_integral_erf +from XRA.GaussianFit import * from scipy.optimize import curve_fit from XRA.thickness import film_thickness, uncertainty @@ -1385,6 +1385,7 @@ def Threshold_Alg(): # centroids, uncertainties, and sigma/sqrt(N) for the ROI Select algorithm. # ################################################################################ + def analyze_gaussian(counts, roi_down, roi_up): """ Analyze the counts within each ROI to fit a Gaussian and extract centroids, uncertainties, and sigma/sqrt(N). @@ -1487,8 +1488,7 @@ def ROI_Select_Alg(): else: counts3 = None - - # Hide ROI 2–6 Entry widgets + # Hide ROI 2–6 Entry widgets for i in range(1, min(6, len(TabList[num][1].ROIdown_entries))): try: TabList[num][1].ROIdown_entries[i].grid_remove() @@ -1528,7 +1528,13 @@ def ROI_Select_Alg(): if TabList[num][1].tab_kind == 5: # If it's XRA, use Gaussian fitting cents, errs, sigmas, areas_source = analyze_gaussian(count_rate, roi_down, roi_up) TabList[num][1].areas_source = areas_source - + + ## Perform gaussian fit to the Source data + #sourceFitParams = gaussian_fit(gaussian, range(roi_down, roi_up), count_rate[roi_down:roi_up]) + #channel_smooth = np.linspace(roi_down, roi_up, 500) + #source_fit = gaussian(channel_smooth, sourceFitParams) + #plot_gaussian(channel_smooth, source_fit) + if counts2 is not None: cents2, errs2, sigmas2, areas_film = analyze_gaussian(count_rate2, roi_down, roi_up) TabList[num][1].areas_film = areas_film @@ -3044,6 +3050,8 @@ def Structure(self, CountsNumberList, Name, File2 = None, File3 = None): # Initialize lists for channel and counts self.Channel = [] self.CountsRate = [] + self.smooth1 = [] + self.Fit1 = [] self.Channel2 = [] self.CountsRate2 = [] self.Channel3 = [] @@ -3078,7 +3086,6 @@ def Structure(self, CountsNumberList, Name, File2 = None, File3 = None): Data.write(str(self.CountsRate[i]) + "\n") j += 1 - Data.close() # Update total counts and display in the extra frame @@ -3142,6 +3149,12 @@ def subplots(self): # Pack the plot widget into the Tkinter frame self.figure_canvas.get_tk_widget().pack() + #def plot_gaussian(self, channel, countRate): + #self.smooth1 = channel + #self.Fit1 = countRate + + + def destroyer(self): # Remove the last overlay line (e.g., threshold line) from the plot if self.line: diff --git a/XRA/GaussianFit.py b/XRA/GaussianFit.py index 863dbf3..c81de60 100644 --- a/XRA/GaussianFit.py +++ b/XRA/GaussianFit.py @@ -6,75 +6,29 @@ from math import erf, sqrt, pi import csv -def load_mca_data(filename): - with open(filename, 'r', encoding='latin1') as file: - lines = file.readlines() - # Finding where the data starts and ends - start = 12 - end = [i for i, line in enumerate(lines) if '<>' in line][0] - # Reading data lines - data = [] - for line in lines[start:end]: - parts = line.strip().split() - if parts: - data.append(float(parts[0])) - return data - - -def get_measurement_time(filename): - with open(filename, 'r', encoding='latin1', newline='') as file: # newline='' for csv - reader = csv.reader(file) # no delimiter="\n" - data = list(reader) - time_str = data[7][0] # 8th line, first column - time = float(time_str[time_str.find('- ') + 2:]) - return time - - -# time_source = get_measurement_time('Data/CuSource_01Aug.mca') -# time_film = get_measurement_time('Data/Al_foil_CuSource_01Aug.mca') -# time_bkg = get_measurement_time('Data/Combined_bkg_Internship.txt') - - -# print(f"Measurement time (source): {time_source} s") -# print(f"Measurement time (film): {time_film} s") -# print(f"Measurement time (background): {time_bkg} s") - - -# source_data = load_mca_data('Data/CuSource_01Aug.mca') -# source_film_data = load_mca_data('Data/Al_foil_CuSource_01Aug.mca') -# bkg_data = load_mca_data('Data/Combined_bkg_Internship.txt') - -# Setting ROI and attenuation coefficient -# x1 = int(input("Enter the start channel: ")) # start channel -# x2 = int(input("Enter the end channel: ")) # end channel -# mu = float(sympify(input("Enter the attenuation coefficient in nm^-1: "))) # attenuation coefficient (nm^-1) - -# x_range = list(range(x1, x2 + 1)) -# y_source = source_data[x1:x2 + 1] -# y_film = source_film_data[x1:x2 + 1] -# y_bkg = bkg_data[x1:x2 + 1] - -# m = 0.030826941169 -# b = 0.092673711109335 -# energy_range = [m * ch + b for ch in x_range] #converting channels to energy -# x_smooth = np.linspace(x1, x2, 500) -# energy_smooth = [m * ch + b for ch in x_smooth] # Define the Gaussian function def gaussian(x, A, x0, sigma, B): return A * np.exp(-(x - x0)**2 / (2 * sigma**2)) + B -# # Fit source data -# popt_source, _ = curve_fit(gaussian, x_range, y_source, p0=[max(y_source), x_range[np.argmax(y_source)], 1, 0]) -# A0, x0_0, sigma0, B0 = popt_source - -# # Fit film data -# popt_film, _ = curve_fit(gaussian, x_range, y_film, p0=[max(y_film), x_range[np.argmax(y_film)], 1, 0]) -# A1, x0_1, sigma1, B1 = popt_film - -# Fit background data -# popt_bkg, _ = curve_fit(gaussian, x_range, y_bkg, p0=[max(y_bkg), x_range[np.argmax(y_bkg)], 1, 0]) -# A2, x0_2, sigma2, B2 = popt_bkg +def gaussian_fit(func, x_range, y_data): + """ + Fit a Gaussian function to the data. + + Parameters: + - func: The Gaussian function to fit. + - x_range: The range of x values. + - y_data: The y data to fit. + - p0: Initial guess for the parameters. + + Returns: + - popt: Optimal parameters for the fit. + """ + # Initial guess + init = [max(y_data), x_range[np.argmax(y_data)], 1, 0] + ## Fit data to gaussian profile + popt, _ = curve_fit(func, x_range, y_data, p0=init) + return popt def gaussian_integral_erf(A, x0, sigma, B, x1, x2): erf_part = 0.5 * (erf((x2 - x0) / (sqrt(2) * sigma)) - erf((x1 - x0) / (sqrt(2) * sigma))) @@ -82,58 +36,3 @@ def gaussian_integral_erf(A, x0, sigma, B, x1, x2): area_below= B * (x2 - x1) return area_gaussian + area_below -# # Calculate Gaussian integrals -# N0 = gaussian_integral_erf(*popt_source, x1, x2) -# N = gaussian_integral_erf(*popt_film, x1, x2) -# Nb = gaussian_integral_erf(*popt_bkg, x1, x2) - - -# # Film thickness calculation -# thickness = film_thickness(N, N0, Nb, mu) -# print(f"Film thickness: {round(thickness)} nm") -# uncertainty_value = uncertainty(N, N0, Nb, mu, time_source, time_film, time_bkg) -# print(f"Uncertainty: {uncertainty_value:.2f}") -# print(f"Full answer: {thickness:.2f} \u00B1 {uncertainty_value:.2f} nm") - -# # Plot fits -# # Plot 1: Source (no film) -# plt.figure() -# plt.plot(x_range, y_source, '*', label='Source', color='blue') -# plt.plot(x_smooth, gaussian(x_smooth, *popt_source), '--', label='Gaussian Fit (Source)', color='cyan') -# plt.xlabel('Channel') -# plt.ylabel('Counts') -# plt.title('Gaussian Fit - Source (No Film)') -# plt.legend() -# plt.grid(True) - -# # Plot 2: Film -# plt.figure() -# plt.plot(x_range, y_film,'x', label='Source + Film', color = 'green') -# plt.plot(x_smooth, gaussian(x_smooth, *popt_film), '--', label='Gaussian Fit (Source + Film)', color='lime') -# plt.xlabel('Channel') -# plt.ylabel('Counts') -# plt.title('Gaussian Fit - Source + Film') -# plt.legend() -# plt.grid(True) - -# #Plot 3: Source - counts vs energy -# plt.figure() -# plt.plot(energy_range, y_source, '*', label='Source (Energy)', color='navy') -# plt.plot(energy_smooth, gaussian(x_smooth, *popt_source), '--', label='Gaussian Fit', color='dodgerblue') -# plt.xlabel('Energy (keV)') -# plt.ylabel('Counts') -# plt.title('Gaussian Fit - Source (No Film) [vs Energy]') -# plt.legend() -# plt.grid(True) - -# # Plot 4: Film - counts vs energy -# plt.figure() -# plt.plot(energy_range, y_film, 'x', label='Source + Film (Energy)', color='darkgreen') -# plt.plot(energy_smooth, gaussian(x_smooth, *popt_film), '--', label='Gaussian Fit', color='limegreen') -# plt.xlabel('Energy (keV)') -# plt.ylabel('Counts') -# plt.title('Gaussian Fit - Source + Film [vs Energy]') -# plt.legend() -# plt.grid(True) - -# plt.show() \ No newline at end of file diff --git a/XRA/__pycache__/GaussianFit.cpython-38.pyc b/XRA/__pycache__/GaussianFit.cpython-38.pyc index eb585f2e19ebdbe3d41b97344f058acbcbbbc2fa..ac6df72deb124832f77c2e230306aa5f48c0a707 100644 GIT binary patch delta 780 zcmZWn-D(p-6yBMgP1okfwuxd(D@G92C4mjO z5HGESeF41^!ME@Myx%wI3wW#NOwu&qEc5M|nRCwf&6)G3d|s@)DVNtR7+)TK?`t-z z>=He@s~vi3)yuP=@3K$qIlZ9SZ??~VShAYkq(@V?ClaLs5f&j(Q4A;Y24KfVdoc>| z$N2=Nx(}eOlzt>B(c~*l={K@%dBmeVHnFvxS}93sYJ2u)_MT4I#7P-QVB$8htaT3K zX`s2_&wzP~)V!O79UVj=*Adr!pL;@!hVeA;N=PyEwJ%lEtPe~;lfMR6O!8ljZlLGk z2Yl3)BJBBdXJhiH%SZf73=&^8ri+B*Hge9r#)coYtmKIgoBTx>=s*m34{6*=gQ^Bjo~E)wN$SZ6_T+Ix_k+%d z5Q-+T!6bH8?u5xO9?Md8S~z~0+Z}ag+D`7F2S>Q#FqRST9t|Te8TgN|KxzwMgSbG4 LUyZoTwcYAJXluN0 delta 1114 zcmY*YPj3@f5TAMb_K%a;juKM{4HAe7SXD$#OArUks?=0f5ejN)MH>}aTfc|9>UwS7 zz5t4L7?MXIC@(o6*d?c{9I#w){`M@ol}n z1oZsbdGXWB^+{tB%gKkfURRALu-{VR4#dsLZ{LrRgBDLj-x|qhB*kM=7D`a4gz}zx z&l?q%IKyM8#9i2dui$I=4wS4s<*VQcSW${2+=U}l;RaN)50zhv(ktaJVgq*J-lZxi zgPC^>Gf6eVGBmeJe?0STP==gxgvW^RfSlA@wCB*cAWLkTZ^!5&o%e<+&HE=S)K~BA zu03){k~<{DCaFGkeXsR{sIU?WO7U}GWQh~;KvH2m4BPF`_jWs--y!zgy4d>2Vd`X- z=GrtV+cc*`Y>$`PSz6fMa4_mLxNtx!pf`fU3)wJH-9azus>CK+?QGafvZ6!a{|v+Z z#i5hKk4-j~EVV93Mii=?f1irmI2ya?ewyh#8E7XN zIsa7!N=uA&9tTT4->lJD&L5GtSX_V{W}UtDcRJ8$Lp`WlIXAjDqsp&S<*Z6Rd|dlIt>b# z3KZp+{#_6Y61||!EyzSDuI-s+fH4?ew1ZffI)gCRk9YznAzAbJ9*V2yPXt+UU`}y} z*DD^nfQPLOFO&xSKKp5YxuPKEhB?P7W_5woeq_^u?oy Date: Fri, 22 Aug 2025 18:13:19 +0100 Subject: [PATCH 36/44] Code Update: 1. Fixed Search button issue 2. Changed counts rate to counts for calib and material trials --- ARC-TF.py | 53 ++- Files/Materials/Au.txt | 802 ++++++++++++++++++++++++++++++++++++++++- git | 0 3 files changed, 843 insertions(+), 12 deletions(-) create mode 100644 git diff --git a/ARC-TF.py b/ARC-TF.py index 1e9c2dc..b508163 100644 --- a/ARC-TF.py +++ b/ARC-TF.py @@ -1883,6 +1883,14 @@ def SourceReader(*args): # Updates the algorithm input interface for the selected analysis # # method in the current tab # ################################################################### +def ROI_Select_Alg_Once(btn): + ROI_Select_Alg() # run your original function + btn.config(state="disabled") # disable button after first click + +def Threshold_Alg_Once(btn): + Threshold_Alg() # run your original function + btn.config(state="disabled") # disable button after first click + def Method(*args): """ Updates the algorithm input interface for the selected analysis method in the current tab. @@ -1939,8 +1947,12 @@ def Method(*args): text='Please input Threshold: ').grid(row=2, columnspan=3) tk.Entry(TabList[num][1].AlgFrame, textvariable=TabList[num][1].Algorithm, relief='sunken', borderwidth=2).grid(row=3, columnspan=3) - tk.Button(TabList[num][1].AlgFrame, text='Search', - command=Threshold_Alg).grid(row=4, column=0) + search_btn = tk.Button( + TabList[num][1].AlgFrame, + text="Search", + command=lambda b=None: Threshold_Alg_Once(search_btn) # disable button after first click + ) + search_btn.grid(row=4, column=0) tk.Button(TabList[num][1].AlgFrame, text='Remove Unchecked', command=Unchecked_Results).grid(row=4, column=1) tk.Button(TabList[num][1].AlgFrame, text='Remove All', @@ -1986,8 +1998,12 @@ def Method(*args): relief='sunken', borderwidth=2).grid(row=3+idx, column=1) """ - tk.Button(TabList[num][1].AlgFrame, text='Search', - command=ROI_Select_Alg).grid(row=9, column=0) + search_btn = tk.Button( + TabList[num][1].AlgFrame, + text="Search", + command=lambda b=None: ROI_Select_Alg_Once(search_btn) + ) + search_btn.grid(row=9, column=0) tk.Button(TabList[num][1].AlgFrame, text='Remove Unchecked', command=Unchecked_Results).grid(row=9, column=1) tk.Button(TabList[num][1].AlgFrame, text='Remove All', @@ -3050,6 +3066,7 @@ def Structure(self, CountsNumberList, Name, File2 = None, File3 = None): # Initialize lists for channel and counts self.Channel = [] self.CountsRate = [] + self.Counts = [] self.smooth1 = [] self.Fit1 = [] self.Channel2 = [] @@ -3080,11 +3097,18 @@ def Structure(self, CountsNumberList, Name, File2 = None, File3 = None): # If the file is an .mca file, process accordingly (specific to AEL machine format) if Name[-4:] == ".mca": for i in range(len(CountsNumberList) - 1): - self.CountsRate.append(int(CountsNumberList[i])/ real_time1) - #total_sum += self.Counts[j] - self.Channel.append(i + 1) - Data.write(str(self.CountsRate[i]) + "\n") - j += 1 + if TabList[num][1].tab_kind == 5: + self.CountsRate.append(int(CountsNumberList[i])/ real_time1) + #total_sum += self.Counts[j] + self.Channel.append(i + 1) + Data.write(str(self.CountsRate[i]) + "\n") + j += 1 + + else: + self.Counts.append(int(CountsNumberList[i])) + self.Channel.append(i + 1) + Data.write(str(self.Counts[i]) + "\n") + j += 1 Data.close() @@ -3129,7 +3153,11 @@ def Structure(self, CountsNumberList, Name, File2 = None, File3 = None): def subplots(self): # Create the plot with channels on x-axis and counts on y-axis self.axes = self.figure.add_subplot() - self.axes.plot(self.Channel, self.CountsRate, '*', label='Source') + if TabList[Current_Tab()][1].tab_kind == 5: + self.axes.plot(self.Channel, self.CountsRate, '*', label='Source') + + else: + self.axes.plot(self.Channel, self.Counts, '*', label='Source') # If second dataset exists, plot it if self.CountsRate2: @@ -3140,7 +3168,10 @@ def subplots(self): self.axes.set_title(self.Title) self.axes.set_xlabel('Channel') - self.axes.set_ylabel('Counts Rate (counts/sec)') + if TabList[Current_Tab()][1].tab_kind == 5: + self.axes.set_ylabel('Counts Rate (counts/sec)') + else: + self.axes.set_ylabel('Counts') self.axes.legend() # Connect mouse click event for manual selection diff --git a/Files/Materials/Au.txt b/Files/Materials/Au.txt index 9f342b4..c527354 100644 --- a/Files/Materials/Au.txt +++ b/Files/Materials/Au.txt @@ -3999,4 +3999,804 @@ 7.997E+00|1.856E+02| 7.998E+00|1.856E+02| 7.999E+00|1.856E+02| -8.000E+00|1.856E+02| \ No newline at end of file +8.000E+00|1.856E+02| +8.001E+00|1.856E+02| +8.002E+00|1.856E+02| +8.003E+00|1.856E+02| +8.004E+00|1.856E+02| +8.005E+00|1.856E+02| +8.006E+00|1.855E+02| +8.007E+00|1.855E+02| +8.008E+00|1.855E+02| +8.009E+00|1.855E+02| +8.010E+00|1.855E+02| +8.011E+00|1.855E+02| +8.012E+00|1.855E+02| +8.013E+00|1.855E+02| +8.014E+00|1.854E+02| +8.015E+00|1.854E+02| +8.016E+00|1.854E+02| +8.017E+00|1.854E+02| +8.018E+00|1.854E+02| +8.019E+00|1.854E+02| +8.020E+00|1.854E+02| +8.021E+00|1.854E+02| +8.022E+00|1.853E+02| +8.023E+00|1.853E+02| +8.024E+00|1.853E+02| +8.025E+00|1.853E+02| +8.026E+00|1.853E+02| +8.027E+00|1.853E+02| +8.028E+00|1.853E+02| +8.029E+00|1.853E+02| +8.030E+00|1.853E+02| +8.031E+00|1.852E+02| +8.032E+00|1.852E+02| +8.033E+00|1.852E+02| +8.034E+00|1.852E+02| +8.035E+00|1.852E+02| +8.036E+00|1.852E+02| +8.037E+00|1.852E+02| +8.038E+00|1.852E+02| +8.039E+00|1.851E+02| +8.040E+00|1.851E+02| +8.041E+00|1.851E+02| +8.042E+00|1.851E+02| +8.043E+00|1.851E+02| +8.044E+00|1.851E+02| +8.045E+00|1.851E+02| +8.046E+00|1.851E+02| +8.047E+00|1.851E+02| +8.048E+00|1.850E+02| +8.049E+00|1.850E+02| +8.050E+00|1.850E+02| +8.051E+00|1.850E+02| +8.052E+00|1.850E+02| +8.053E+00|1.850E+02| +8.054E+00|1.850E+02| +8.055E+00|1.850E+02| +8.056E+00|1.849E+02| +8.057E+00|1.849E+02| +8.058E+00|1.849E+02| +8.059E+00|1.849E+02| +8.060E+00|1.849E+02| +8.061E+00|1.849E+02| +8.062E+00|1.849E+02| +8.063E+00|1.849E+02| +8.064E+00|1.849E+02| +8.065E+00|1.848E+02| +8.066E+00|1.848E+02| +8.067E+00|1.848E+02| +8.068E+00|1.848E+02| +8.069E+00|1.848E+02| +8.070E+00|1.848E+02| +8.071E+00|1.848E+02| +8.072E+00|1.848E+02| +8.073E+00|1.847E+02| +8.074E+00|1.847E+02| +8.075E+00|1.847E+02| +8.076E+00|1.847E+02| +8.077E+00|1.847E+02| +8.078E+00|1.847E+02| +8.079E+00|1.847E+02| +8.080E+00|1.847E+02| +8.081E+00|1.847E+02| +8.082E+00|1.846E+02| +8.083E+00|1.846E+02| +8.084E+00|1.846E+02| +8.085E+00|1.846E+02| +8.086E+00|1.846E+02| +8.087E+00|1.846E+02| +8.088E+00|1.846E+02| +8.089E+00|1.846E+02| +8.090E+00|1.845E+02| +8.091E+00|1.845E+02| +8.092E+00|1.845E+02| +8.093E+00|1.845E+02| +8.094E+00|1.845E+02| +8.095E+00|1.845E+02| +8.096E+00|1.845E+02| +8.097E+00|1.845E+02| +8.098E+00|1.845E+02| +8.099E+00|1.844E+02| +8.100E+00|1.844E+02| +8.101E+00|1.844E+02| +8.102E+00|1.844E+02| +8.103E+00|1.844E+02| +8.104E+00|1.844E+02| +8.105E+00|1.844E+02| +8.106E+00|1.844E+02| +8.107E+00|1.843E+02| +8.108E+00|1.843E+02| +8.109E+00|1.843E+02| +8.110E+00|1.843E+02| +8.111E+00|1.843E+02| +8.112E+00|1.843E+02| +8.113E+00|1.843E+02| +8.114E+00|1.843E+02| +8.115E+00|1.843E+02| +8.116E+00|1.842E+02| +8.117E+00|1.842E+02| +8.118E+00|1.842E+02| +8.119E+00|1.842E+02| +8.120E+00|1.842E+02| +8.121E+00|1.842E+02| +8.122E+00|1.842E+02| +8.123E+00|1.842E+02| +8.124E+00|1.841E+02| +8.125E+00|1.841E+02| +8.126E+00|1.841E+02| +8.127E+00|1.841E+02| +8.128E+00|1.841E+02| +8.129E+00|1.841E+02| +8.130E+00|1.841E+02| +8.131E+00|1.841E+02| +8.132E+00|1.841E+02| +8.133E+00|1.840E+02| +8.134E+00|1.840E+02| +8.135E+00|1.840E+02| +8.136E+00|1.840E+02| +8.137E+00|1.840E+02| +8.138E+00|1.840E+02| +8.139E+00|1.840E+02| +8.140E+00|1.840E+02| +8.141E+00|1.840E+02| +8.142E+00|1.839E+02| +8.143E+00|1.839E+02| +8.144E+00|1.839E+02| +8.145E+00|1.839E+02| +8.146E+00|1.839E+02| +8.147E+00|1.839E+02| +8.148E+00|1.839E+02| +8.149E+00|1.839E+02| +8.150E+00|1.838E+02| +8.151E+00|1.838E+02| +8.152E+00|1.838E+02| +8.153E+00|1.838E+02| +8.154E+00|1.838E+02| +8.155E+00|1.838E+02| +8.156E+00|1.838E+02| +8.157E+00|1.838E+02| +8.158E+00|1.838E+02| +8.159E+00|1.837E+02| +8.160E+00|1.837E+02| +8.161E+00|1.837E+02| +8.162E+00|1.837E+02| +8.163E+00|1.837E+02| +8.164E+00|1.837E+02| +8.165E+00|1.837E+02| +8.166E+00|1.837E+02| +8.167E+00|1.836E+02| +8.168E+00|1.836E+02| +8.169E+00|1.836E+02| +8.170E+00|1.836E+02| +8.171E+00|1.836E+02| +8.172E+00|1.836E+02| +8.173E+00|1.836E+02| +8.174E+00|1.836E+02| +8.175E+00|1.836E+02| +8.176E+00|1.835E+02| +8.177E+00|1.835E+02| +8.178E+00|1.835E+02| +8.179E+00|1.835E+02| +8.180E+00|1.835E+02| +8.181E+00|1.835E+02| +8.182E+00|1.835E+02| +8.183E+00|1.835E+02| +8.184E+00|1.835E+02| +8.185E+00|1.834E+02| +8.186E+00|1.834E+02| +8.187E+00|1.834E+02| +8.188E+00|1.834E+02| +8.189E+00|1.834E+02| +8.190E+00|1.834E+02| +8.191E+00|1.834E+02| +8.192E+00|1.834E+02| +8.193E+00|1.833E+02| +8.194E+00|1.833E+02| +8.195E+00|1.833E+02| +8.196E+00|1.833E+02| +8.197E+00|1.833E+02| +8.198E+00|1.833E+02| +8.199E+00|1.833E+02| +8.200E+00|1.833E+02| +8.201E+00|1.833E+02| +8.202E+00|1.832E+02| +8.203E+00|1.832E+02| +8.204E+00|1.832E+02| +8.205E+00|1.832E+02| +8.206E+00|1.832E+02| +8.207E+00|1.832E+02| +8.208E+00|1.832E+02| +8.209E+00|1.832E+02| +8.210E+00|1.832E+02| +8.211E+00|1.831E+02| +8.212E+00|1.831E+02| +8.213E+00|1.831E+02| +8.214E+00|1.831E+02| +8.215E+00|1.831E+02| +8.216E+00|1.831E+02| +8.217E+00|1.831E+02| +8.218E+00|1.831E+02| +8.219E+00|1.830E+02| +8.220E+00|1.830E+02| +8.221E+00|1.830E+02| +8.222E+00|1.830E+02| +8.223E+00|1.830E+02| +8.224E+00|1.830E+02| +8.225E+00|1.830E+02| +8.226E+00|1.830E+02| +8.227E+00|1.830E+02| +8.228E+00|1.829E+02| +8.229E+00|1.829E+02| +8.230E+00|1.829E+02| +8.231E+00|1.829E+02| +8.232E+00|1.829E+02| +8.233E+00|1.829E+02| +8.234E+00|1.829E+02| +8.235E+00|1.829E+02| +8.236E+00|1.829E+02| +8.237E+00|1.828E+02| +8.238E+00|1.828E+02| +8.239E+00|1.828E+02| +8.240E+00|1.828E+02| +8.241E+00|1.828E+02| +8.242E+00|1.828E+02| +8.243E+00|1.828E+02| +8.244E+00|1.828E+02| +8.245E+00|1.828E+02| +8.246E+00|1.827E+02| +8.247E+00|1.827E+02| +8.248E+00|1.827E+02| +8.249E+00|1.827E+02| +8.250E+00|1.827E+02| +8.251E+00|1.827E+02| +8.252E+00|1.827E+02| +8.253E+00|1.827E+02| +8.254E+00|1.826E+02| +8.255E+00|1.826E+02| +8.256E+00|1.826E+02| +8.257E+00|1.826E+02| +8.258E+00|1.826E+02| +8.259E+00|1.826E+02| +8.260E+00|1.826E+02| +8.261E+00|1.826E+02| +8.262E+00|1.826E+02| +8.263E+00|1.825E+02| +8.264E+00|1.825E+02| +8.265E+00|1.825E+02| +8.266E+00|1.825E+02| +8.267E+00|1.825E+02| +8.268E+00|1.825E+02| +8.269E+00|1.825E+02| +8.270E+00|1.825E+02| +8.271E+00|1.825E+02| +8.272E+00|1.824E+02| +8.273E+00|1.824E+02| +8.274E+00|1.824E+02| +8.275E+00|1.824E+02| +8.276E+00|1.824E+02| +8.277E+00|1.824E+02| +8.278E+00|1.824E+02| +8.279E+00|1.824E+02| +8.280E+00|1.824E+02| +8.281E+00|1.823E+02| +8.282E+00|1.823E+02| +8.283E+00|1.823E+02| +8.284E+00|1.823E+02| +8.285E+00|1.823E+02| +8.286E+00|1.823E+02| +8.287E+00|1.823E+02| +8.288E+00|1.823E+02| +8.289E+00|1.822E+02| +8.290E+00|1.822E+02| +8.291E+00|1.822E+02| +8.292E+00|1.822E+02| +8.293E+00|1.822E+02| +8.294E+00|1.822E+02| +8.295E+00|1.822E+02| +8.296E+00|1.822E+02| +8.297E+00|1.822E+02| +8.298E+00|1.821E+02| +8.299E+00|1.821E+02| +8.300E+00|1.821E+02| +8.301E+00|1.821E+02| +8.302E+00|1.821E+02| +8.303E+00|1.821E+02| +8.304E+00|1.821E+02| +8.305E+00|1.821E+02| +8.306E+00|1.821E+02| +8.307E+00|1.820E+02| +8.308E+00|1.820E+02| +8.309E+00|1.820E+02| +8.310E+00|1.820E+02| +8.311E+00|1.820E+02| +8.312E+00|1.820E+02| +8.313E+00|1.820E+02| +8.314E+00|1.820E+02| +8.315E+00|1.820E+02| +8.316E+00|1.819E+02| +8.317E+00|1.819E+02| +8.318E+00|1.819E+02| +8.319E+00|1.819E+02| +8.320E+00|1.819E+02| +8.321E+00|1.819E+02| +8.322E+00|1.819E+02| +8.323E+00|1.819E+02| +8.324E+00|1.819E+02| +8.325E+00|1.818E+02| +8.326E+00|1.818E+02| +8.327E+00|1.818E+02| +8.328E+00|1.818E+02| +8.329E+00|1.818E+02| +8.330E+00|1.818E+02| +8.331E+00|1.818E+02| +8.332E+00|1.818E+02| +8.333E+00|1.817E+02| +8.334E+00|1.817E+02| +8.335E+00|1.817E+02| +8.336E+00|1.817E+02| +8.337E+00|1.817E+02| +8.338E+00|1.817E+02| +8.339E+00|1.817E+02| +8.340E+00|1.817E+02| +8.341E+00|1.817E+02| +8.342E+00|1.816E+02| +8.343E+00|1.816E+02| +8.344E+00|1.816E+02| +8.345E+00|1.816E+02| +8.346E+00|1.816E+02| +8.347E+00|1.816E+02| +8.348E+00|1.816E+02| +8.349E+00|1.816E+02| +8.350E+00|1.816E+02| +8.351E+00|1.815E+02| +8.352E+00|1.815E+02| +8.353E+00|1.815E+02| +8.354E+00|1.815E+02| +8.355E+00|1.815E+02| +8.356E+00|1.815E+02| +8.357E+00|1.815E+02| +8.358E+00|1.815E+02| +8.359E+00|1.815E+02| +8.360E+00|1.814E+02| +8.361E+00|1.814E+02| +8.362E+00|1.814E+02| +8.363E+00|1.814E+02| +8.364E+00|1.814E+02| +8.365E+00|1.814E+02| +8.366E+00|1.814E+02| +8.367E+00|1.814E+02| +8.368E+00|1.814E+02| +8.369E+00|1.813E+02| +8.370E+00|1.813E+02| +8.371E+00|1.813E+02| +8.372E+00|1.813E+02| +8.373E+00|1.813E+02| +8.374E+00|1.813E+02| +8.375E+00|1.813E+02| +8.376E+00|1.813E+02| +8.377E+00|1.813E+02| +8.378E+00|1.812E+02| +8.379E+00|1.812E+02| +8.380E+00|1.812E+02| +8.381E+00|1.812E+02| +8.382E+00|1.812E+02| +8.383E+00|1.812E+02| +8.384E+00|1.812E+02| +8.385E+00|1.812E+02| +8.386E+00|1.812E+02| +8.387E+00|1.811E+02| +8.388E+00|1.811E+02| +8.389E+00|1.811E+02| +8.390E+00|1.811E+02| +8.391E+00|1.811E+02| +8.392E+00|1.811E+02| +8.393E+00|1.811E+02| +8.394E+00|1.811E+02| +8.395E+00|1.811E+02| +8.396E+00|1.810E+02| +8.397E+00|1.810E+02| +8.398E+00|1.810E+02| +8.399E+00|1.810E+02| +8.400E+00|1.810E+02| +8.401E+00|1.810E+02| +8.402E+00|1.810E+02| +8.403E+00|1.810E+02| +8.404E+00|1.810E+02| +8.405E+00|1.809E+02| +8.406E+00|1.809E+02| +8.407E+00|1.809E+02| +8.408E+00|1.809E+02| +8.409E+00|1.809E+02| +8.410E+00|1.809E+02| +8.411E+00|1.809E+02| +8.412E+00|1.809E+02| +8.413E+00|1.809E+02| +8.414E+00|1.808E+02| +8.415E+00|1.808E+02| +8.416E+00|1.808E+02| +8.417E+00|1.808E+02| +8.418E+00|1.808E+02| +8.419E+00|1.808E+02| +8.420E+00|1.808E+02| +8.421E+00|1.808E+02| +8.422E+00|1.808E+02| +8.423E+00|1.807E+02| +8.424E+00|1.807E+02| +8.425E+00|1.807E+02| +8.426E+00|1.807E+02| +8.427E+00|1.807E+02| +8.428E+00|1.807E+02| +8.429E+00|1.807E+02| +8.430E+00|1.807E+02| +8.431E+00|1.807E+02| +8.432E+00|1.806E+02| +8.433E+00|1.806E+02| +8.434E+00|1.806E+02| +8.435E+00|1.806E+02| +8.436E+00|1.806E+02| +8.437E+00|1.806E+02| +8.438E+00|1.806E+02| +8.439E+00|1.806E+02| +8.440E+00|1.806E+02| +8.441E+00|1.805E+02| +8.442E+00|1.805E+02| +8.443E+00|1.805E+02| +8.444E+00|1.805E+02| +8.445E+00|1.805E+02| +8.446E+00|1.805E+02| +8.447E+00|1.805E+02| +8.448E+00|1.805E+02| +8.449E+00|1.805E+02| +8.450E+00|1.804E+02| +8.451E+00|1.804E+02| +8.452E+00|1.804E+02| +8.453E+00|1.804E+02| +8.454E+00|1.804E+02| +8.455E+00|1.804E+02| +8.456E+00|1.804E+02| +8.457E+00|1.804E+02| +8.458E+00|1.804E+02| +8.459E+00|1.803E+02| +8.460E+00|1.803E+02| +8.461E+00|1.803E+02| +8.462E+00|1.803E+02| +8.463E+00|1.803E+02| +8.464E+00|1.803E+02| +8.465E+00|1.803E+02| +8.466E+00|1.803E+02| +8.467E+00|1.803E+02| +8.468E+00|1.802E+02| +8.469E+00|1.802E+02| +8.470E+00|1.802E+02| +8.471E+00|1.802E+02| +8.472E+00|1.802E+02| +8.473E+00|1.802E+02| +8.474E+00|1.802E+02| +8.475E+00|1.802E+02| +8.476E+00|1.802E+02| +8.477E+00|1.801E+02| +8.478E+00|1.801E+02| +8.479E+00|1.801E+02| +8.480E+00|1.801E+02| +8.481E+00|1.801E+02| +8.482E+00|1.801E+02| +8.483E+00|1.801E+02| +8.484E+00|1.801E+02| +8.485E+00|1.801E+02| +8.486E+00|1.800E+02| +8.487E+00|1.800E+02| +8.488E+00|1.800E+02| +8.489E+00|1.800E+02| +8.490E+00|1.800E+02| +8.491E+00|1.800E+02| +8.492E+00|1.800E+02| +8.493E+00|1.800E+02| +8.494E+00|1.800E+02| +8.495E+00|1.799E+02| +8.496E+00|1.799E+02| +8.497E+00|1.799E+02| +8.498E+00|1.799E+02| +8.499E+00|1.799E+02| +8.500E+00|1.799E+02| +8.501E+00|1.799E+02| +8.502E+00|1.799E+02| +8.503E+00|1.799E+02| +8.504E+00|1.798E+02| +8.505E+00|1.798E+02| +8.506E+00|1.798E+02| +8.507E+00|1.798E+02| +8.508E+00|1.798E+02| +8.509E+00|1.798E+02| +8.510E+00|1.798E+02| +8.511E+00|1.798E+02| +8.512E+00|1.798E+02| +8.513E+00|1.797E+02| +8.514E+00|1.797E+02| +8.515E+00|1.797E+02| +8.516E+00|1.797E+02| +8.517E+00|1.797E+02| +8.518E+00|1.797E+02| +8.519E+00|1.797E+02| +8.520E+00|1.797E+02| +8.521E+00|1.797E+02| +8.522E+00|1.796E+02| +8.523E+00|1.796E+02| +8.524E+00|1.796E+02| +8.525E+00|1.796E+02| +8.526E+00|1.796E+02| +8.527E+00|1.796E+02| +8.528E+00|1.796E+02| +8.529E+00|1.796E+02| +8.530E+00|1.796E+02| +8.531E+00|1.796E+02| +8.532E+00|1.795E+02| +8.533E+00|1.795E+02| +8.534E+00|1.795E+02| +8.535E+00|1.795E+02| +8.536E+00|1.795E+02| +8.537E+00|1.795E+02| +8.538E+00|1.795E+02| +8.539E+00|1.795E+02| +8.540E+00|1.795E+02| +8.541E+00|1.794E+02| +8.542E+00|1.794E+02| +8.543E+00|1.794E+02| +8.544E+00|1.794E+02| +8.545E+00|1.794E+02| +8.546E+00|1.794E+02| +8.547E+00|1.794E+02| +8.548E+00|1.794E+02| +8.549E+00|1.794E+02| +8.550E+00|1.793E+02| +8.551E+00|1.793E+02| +8.552E+00|1.793E+02| +8.553E+00|1.793E+02| +8.554E+00|1.793E+02| +8.555E+00|1.793E+02| +8.556E+00|1.793E+02| +8.557E+00|1.793E+02| +8.558E+00|1.793E+02| +8.559E+00|1.792E+02| +8.560E+00|1.792E+02| +8.561E+00|1.792E+02| +8.562E+00|1.792E+02| +8.563E+00|1.792E+02| +8.564E+00|1.792E+02| +8.565E+00|1.792E+02| +8.566E+00|1.792E+02| +8.567E+00|1.792E+02| +8.568E+00|1.791E+02| +8.569E+00|1.791E+02| +8.570E+00|1.791E+02| +8.571E+00|1.791E+02| +8.572E+00|1.791E+02| +8.573E+00|1.791E+02| +8.574E+00|1.791E+02| +8.575E+00|1.791E+02| +8.576E+00|1.791E+02| +8.577E+00|1.791E+02| +8.578E+00|1.790E+02| +8.579E+00|1.790E+02| +8.580E+00|1.790E+02| +8.581E+00|1.790E+02| +8.582E+00|1.790E+02| +8.583E+00|1.790E+02| +8.584E+00|1.790E+02| +8.585E+00|1.790E+02| +8.586E+00|1.790E+02| +8.587E+00|1.789E+02| +8.588E+00|1.789E+02| +8.589E+00|1.789E+02| +8.590E+00|1.789E+02| +8.591E+00|1.789E+02| +8.592E+00|1.789E+02| +8.593E+00|1.789E+02| +8.594E+00|1.789E+02| +8.595E+00|1.789E+02| +8.596E+00|1.788E+02| +8.597E+00|1.788E+02| +8.598E+00|1.788E+02| +8.599E+00|1.788E+02| +8.600E+00|1.788E+02| +8.601E+00|1.788E+02| +8.602E+00|1.788E+02| +8.603E+00|1.788E+02| +8.604E+00|1.788E+02| +8.605E+00|1.787E+02| +8.606E+00|1.787E+02| +8.607E+00|1.787E+02| +8.608E+00|1.787E+02| +8.609E+00|1.787E+02| +8.610E+00|1.787E+02| +8.611E+00|1.787E+02| +8.612E+00|1.787E+02| +8.613E+00|1.787E+02| +8.614E+00|1.787E+02| +8.615E+00|1.786E+02| +8.616E+00|1.786E+02| +8.617E+00|1.786E+02| +8.618E+00|1.786E+02| +8.619E+00|1.786E+02| +8.620E+00|1.786E+02| +8.621E+00|1.786E+02| +8.622E+00|1.786E+02| +8.623E+00|1.786E+02| +8.624E+00|1.785E+02| +8.625E+00|1.785E+02| +8.626E+00|1.785E+02| +8.627E+00|1.785E+02| +8.628E+00|1.785E+02| +8.629E+00|1.785E+02| +8.630E+00|1.785E+02| +8.631E+00|1.785E+02| +8.632E+00|1.785E+02| +8.633E+00|1.784E+02| +8.634E+00|1.784E+02| +8.635E+00|1.784E+02| +8.636E+00|1.784E+02| +8.637E+00|1.784E+02| +8.638E+00|1.784E+02| +8.639E+00|1.784E+02| +8.640E+00|1.784E+02| +8.641E+00|1.784E+02| +8.642E+00|1.783E+02| +8.643E+00|1.783E+02| +8.644E+00|1.783E+02| +8.645E+00|1.783E+02| +8.646E+00|1.783E+02| +8.647E+00|1.783E+02| +8.648E+00|1.783E+02| +8.649E+00|1.783E+02| +8.650E+00|1.783E+02| +8.651E+00|1.783E+02| +8.652E+00|1.782E+02| +8.653E+00|1.782E+02| +8.654E+00|1.782E+02| +8.655E+00|1.782E+02| +8.656E+00|1.782E+02| +8.657E+00|1.782E+02| +8.658E+00|1.782E+02| +8.659E+00|1.782E+02| +8.660E+00|1.782E+02| +8.661E+00|1.781E+02| +8.662E+00|1.781E+02| +8.663E+00|1.781E+02| +8.664E+00|1.781E+02| +8.665E+00|1.781E+02| +8.666E+00|1.781E+02| +8.667E+00|1.781E+02| +8.668E+00|1.781E+02| +8.669E+00|1.781E+02| +8.670E+00|1.780E+02| +8.671E+00|1.780E+02| +8.672E+00|1.780E+02| +8.673E+00|1.780E+02| +8.674E+00|1.780E+02| +8.675E+00|1.780E+02| +8.676E+00|1.780E+02| +8.677E+00|1.780E+02| +8.678E+00|1.780E+02| +8.679E+00|1.780E+02| +8.680E+00|1.779E+02| +8.681E+00|1.779E+02| +8.682E+00|1.779E+02| +8.683E+00|1.779E+02| +8.684E+00|1.779E+02| +8.685E+00|1.779E+02| +8.686E+00|1.779E+02| +8.687E+00|1.779E+02| +8.688E+00|1.779E+02| +8.689E+00|1.778E+02| +8.690E+00|1.778E+02| +8.691E+00|1.778E+02| +8.692E+00|1.778E+02| +8.693E+00|1.778E+02| +8.694E+00|1.778E+02| +8.695E+00|1.778E+02| +8.696E+00|1.778E+02| +8.697E+00|1.778E+02| +8.698E+00|1.778E+02| +8.699E+00|1.777E+02| +8.700E+00|1.777E+02| +8.701E+00|1.777E+02| +8.702E+00|1.777E+02| +8.703E+00|1.777E+02| +8.704E+00|1.777E+02| +8.705E+00|1.777E+02| +8.706E+00|1.777E+02| +8.707E+00|1.777E+02| +8.708E+00|1.776E+02| +8.709E+00|1.776E+02| +8.710E+00|1.776E+02| +8.711E+00|1.776E+02| +8.712E+00|1.776E+02| +8.713E+00|1.776E+02| +8.714E+00|1.776E+02| +8.715E+00|1.776E+02| +8.716E+00|1.776E+02| +8.717E+00|1.775E+02| +8.718E+00|1.775E+02| +8.719E+00|1.775E+02| +8.720E+00|1.775E+02| +8.721E+00|1.775E+02| +8.722E+00|1.775E+02| +8.723E+00|1.775E+02| +8.724E+00|1.775E+02| +8.725E+00|1.775E+02| +8.726E+00|1.775E+02| +8.727E+00|1.774E+02| +8.728E+00|1.774E+02| +8.729E+00|1.774E+02| +8.730E+00|1.774E+02| +8.731E+00|1.774E+02| +8.732E+00|1.774E+02| +8.733E+00|1.774E+02| +8.734E+00|1.774E+02| +8.735E+00|1.774E+02| +8.736E+00|1.773E+02| +8.737E+00|1.773E+02| +8.738E+00|1.773E+02| +8.739E+00|1.773E+02| +8.740E+00|1.773E+02| +8.741E+00|1.773E+02| +8.742E+00|1.773E+02| +8.743E+00|1.773E+02| +8.744E+00|1.773E+02| +8.745E+00|1.773E+02| +8.746E+00|1.772E+02| +8.747E+00|1.772E+02| +8.748E+00|1.772E+02| +8.749E+00|1.772E+02| +8.750E+00|1.772E+02| +8.751E+00|1.772E+02| +8.752E+00|1.772E+02| +8.753E+00|1.772E+02| +8.754E+00|1.772E+02| +8.755E+00|1.771E+02| +8.756E+00|1.771E+02| +8.757E+00|1.771E+02| +8.758E+00|1.771E+02| +8.759E+00|1.771E+02| +8.760E+00|1.771E+02| +8.761E+00|1.771E+02| +8.762E+00|1.771E+02| +8.763E+00|1.771E+02| +8.764E+00|1.771E+02| +8.765E+00|1.770E+02| +8.766E+00|1.770E+02| +8.767E+00|1.770E+02| +8.768E+00|1.770E+02| +8.769E+00|1.770E+02| +8.770E+00|1.770E+02| +8.771E+00|1.770E+02| +8.772E+00|1.770E+02| +8.773E+00|1.770E+02| +8.774E+00|1.769E+02| +8.775E+00|1.769E+02| +8.776E+00|1.769E+02| +8.777E+00|1.769E+02| +8.778E+00|1.769E+02| +8.779E+00|1.769E+02| +8.780E+00|1.769E+02| +8.781E+00|1.769E+02| +8.782E+00|1.769E+02| +8.783E+00|1.769E+02| +8.784E+00|1.768E+02| +8.785E+00|1.768E+02| +8.786E+00|1.768E+02| +8.787E+00|1.768E+02| +8.788E+00|1.768E+02| +8.789E+00|1.768E+02| +8.790E+00|1.768E+02| +8.791E+00|1.768E+02| +8.792E+00|1.768E+02| +8.793E+00|1.767E+02| +8.794E+00|1.767E+02| +8.795E+00|1.767E+02| +8.796E+00|1.767E+02| +8.797E+00|1.767E+02| +8.798E+00|1.767E+02| +8.799E+00|1.767E+02| +8.800E+00|1.767E+02| diff --git a/git b/git new file mode 100644 index 0000000..e69de29 From d910373ae23cea6b1cf2e3f3b17e65adbce9d2eb Mon Sep 17 00:00:00 2001 From: aysuismailova Date: Mon, 25 Aug 2025 17:14:52 +0100 Subject: [PATCH 37/44] Code update: 1. Fixed Search button issue 2. Some minor things (Calibration, Material Tabs) --- ARC-TF.py | 48 ++++++++++++++++++++++++++++++++---------------- 1 file changed, 32 insertions(+), 16 deletions(-) diff --git a/ARC-TF.py b/ARC-TF.py index b508163..e1bfed3 100644 --- a/ARC-TF.py +++ b/ARC-TF.py @@ -1723,9 +1723,6 @@ def upload_film(): def upload_bkg(): mode_window.destroy() - bkg_file = fd.askopenfilename(title='Open Background File', filetypes=[('Text Files', '*.mca'), ('All Files', '*.*')]) - if not bkg_file: - return try: source_data = TabList[num][5].source_data @@ -1734,6 +1731,10 @@ def upload_bkg(): tk.messagebox.showerror("Missing Source File", "Please upload a Source file first using 'Source Only'.") return + bkg_file = fd.askopenfilename(title='Open Background File', filetypes=[('Text Files', '*.mca'), ('All Files', '*.*')]) + if not bkg_file: + return + film_data = getattr(TabList[num][5], 'film_data', None) bkg_data = File_Reader(bkg_file, '0', 'string', 'third_file') @@ -1955,8 +1956,9 @@ def Method(*args): search_btn.grid(row=4, column=0) tk.Button(TabList[num][1].AlgFrame, text='Remove Unchecked', command=Unchecked_Results).grid(row=4, column=1) + # Make sure the search button can be re-enabled after clearing results tk.Button(TabList[num][1].AlgFrame, text='Remove All', - command=lambda: ClearWidget('Results', 1)).grid(row=4, column=2) + command=lambda: (ClearWidget('Results', 1), search_btn.config(state="normal"))).grid(row=4, column=2) elif decider == 'ROI Select': # ROI Select: Entry fields for up to 6 ROIs and buttons for peak detection @@ -2004,10 +2006,15 @@ def Method(*args): command=lambda b=None: ROI_Select_Alg_Once(search_btn) ) search_btn.grid(row=9, column=0) - tk.Button(TabList[num][1].AlgFrame, text='Remove Unchecked', + + # Only show "Remove Unchecked" if not XRA tab + if TabList[num][1].tab_kind != 5: + tk.Button(TabList[num][1].AlgFrame, text='Remove Unchecked', command=Unchecked_Results).grid(row=9, column=1) - tk.Button(TabList[num][1].AlgFrame, text='Remove All', - command=lambda: ClearWidget('Results', 1)).grid(row=9, column=2) + + # Make sure the search button can be re-enabled after clearing results + tk.Button(TabList[num][1].AlgFrame, text='Remove All', command=lambda: (ClearWidget('Results', 1), search_btn.config(state="normal"))).grid(row=9, column=2) + return @@ -3114,12 +3121,18 @@ def Structure(self, CountsNumberList, Name, File2 = None, File3 = None): # Update total counts and display in the extra frame TabList[num][1].Extra_Frame.grid(column=0, row=1, sticky="nw") - - tk.Label(TabList[num][1].Extra_Frame, text="Source:").grid(row=0, column=0, sticky="w") - tk.Label(TabList[num][1].Extra_Frame, text=TabList[num][1].Real_Time.get()).grid(row=0, column=1, sticky="w") - + if TabList[num][1].tab_kind == 1: + tk.Label(TabList[num][1].Extra_Frame).grid(row=0, column=0, sticky="w") + tk.Label(TabList[num][1].Extra_Frame, text=TabList[num][1].Real_Time.get()).grid(row=0, column=1, sticky="w") + + if TabList[num][1].tab_kind == 2: + tk.Label(TabList[num][1].Extra_Frame).grid(row=0, column=0, sticky="w") + tk.Label(TabList[num][1].Extra_Frame, text=TabList[num][1].Real_Time.get()).grid(row=0, column=1, sticky="w") + #For XRA tab, also show File 2 time if TabList[num][1].tab_kind == 5: + tk.Label(TabList[num][1].Extra_Frame, text="Source:").grid(row=0, column=0, sticky="w") + tk.Label(TabList[num][1].Extra_Frame, text=TabList[num][1].Real_Time.get()).grid(row=0, column=1, sticky="w") tk.Label(TabList[num][1].Extra_Frame, text="Source+Film:").grid(row=1, column=0, sticky="w") tk.Label(TabList[num][1].Extra_Frame, text=TabList[num][1].Real_Time_2.get()).grid(row=1, column=1, sticky="w") if File3 is not None: @@ -3127,11 +3140,11 @@ def Structure(self, CountsNumberList, Name, File2 = None, File3 = None): tk.Label(TabList[num][1].Extra_Frame, text=TabList[num][1].Real_Time_3.get()).grid(row=2, column=1, sticky="w") # Set plot title based on tab type - if TabTracker[num] < 0: + if TabList[num][1].tab_kind == 1: self.Title = 'Calibration Trial ' + str(-TabTracker[num]) - elif TabTracker[num] > 0: + elif TabList[num][1].tab_kind == 2: self.Title = 'Material Trial ' + str(TabTracker[num]) - else: + elif TabList[num][1].tab_kind == 5: self.Title = 'XRA Analysis' # If this is an XRA tab and File2 is provided, parse second dataset @@ -3156,8 +3169,11 @@ def subplots(self): if TabList[Current_Tab()][1].tab_kind == 5: self.axes.plot(self.Channel, self.CountsRate, '*', label='Source') - else: - self.axes.plot(self.Channel, self.Counts, '*', label='Source') + elif TabList[Current_Tab()][1].tab_kind == 1: + self.axes.plot(self.Channel, self.Counts, '*', label='Calibration') + + elif TabList[Current_Tab()][1].tab_kind == 2: + self.axes.plot(self.Channel, self.Counts, '*', label='Material') # If second dataset exists, plot it if self.CountsRate2: From 01d8c5bde51c5632e234c84ce831019582858297 Mon Sep 17 00:00:00 2001 From: aysuismailova Date: Wed, 27 Aug 2025 06:01:46 +0300 Subject: [PATCH 38/44] Minor changes for thickness unit --- ARC-TF.py | 5 ++++- Include/FitData.py | 5 +++-- Include/__pycache__/FitData.cpython-313.pyc | Bin 4644 -> 4719 bytes XRA/__pycache__/GaussianFit.cpython-313.pyc | Bin 2608 -> 1800 bytes XRA/__pycache__/thickness.cpython-313.pyc | Bin 3463 -> 3380 bytes 5 files changed, 7 insertions(+), 3 deletions(-) diff --git a/ARC-TF.py b/ARC-TF.py index e1bfed3..c546af9 100644 --- a/ARC-TF.py +++ b/ARC-TF.py @@ -836,7 +836,10 @@ def run_thickness_calc(): #NOT READY yet thickness = film_thickness(N, N0, Nb, mu) uncertainty_value = uncertainty(N, N0, Nb, mu, time1, time2, time3) - result_text = f"Thickness = {thickness:.2f} ± {uncertainty_value:.2f} nm" + if thickness < 1000: + result_text = f"Thickness = {thickness:.2f} ± {uncertainty_value:.2f} nm" + else: + result_text = f"Thickness = {thickness/1000:.2f} ± {uncertainty_value/1000:.2f} µm" TabList[num][1].result_label.config(text=result_text) diff --git a/Include/FitData.py b/Include/FitData.py index eff21b4..63682c9 100644 --- a/Include/FitData.py +++ b/Include/FitData.py @@ -59,9 +59,10 @@ def peakCentroid(x1, x2, values): else: bgd = m * (i - x1) + yL # background - soma += myCellValue - bgd - xsoma += i * (myCellValue - bgd) + soma += myCellValue + xsoma += i * myCellValue + print("here" + str(bgd)) if soma > 0: return xsoma / soma else: diff --git a/Include/__pycache__/FitData.cpython-313.pyc b/Include/__pycache__/FitData.cpython-313.pyc index 9ca4d3ca9f4876ba46a10e6d0cd908297a1b0fcb..4141e53bf6f5d86f067ec72f7d24337eacda9675 100644 GIT binary patch delta 633 zcmZ3Y@?M4aGcPX}0}$*B27T~-DLFpu3=i-CcgL4hF}C;|b&EYa*Rb~u+QBZRFBq+o0XhETR( zMyn|d42diZ3=w6z+zbpV4C#!TtbRp60fr(W5FrdCZn0#f7Nu&k6mbAKf<+*6Z?P5> zW#*OKVlFNznjFX`swM_fEDj!F7Gw^AC5o2KG>QI|vJfV29#YHaZD=acM*ts{i zvFkIjK^!)DH>aeK2+$l&{vuA0>7Xzy5}o{zQ$j)s$h^f?foZ=Omn|1CtQd+wgy-g1 zu6kxIxIfcx?6$wR`Wll%kt#@u8j!#=TOMR~kvfP#@)(E<@>7xKWLrLUE*%gPM3ipM zxz delta 564 zcmZWlIZFdk5Z<@z9zNZ;8%@mNiXp4ni1Fw|kfapUO2xE6M8yl=POQY&sD)T4 zC{~if!hc{RTPPud*jZS3)q*ptc;JKic4qct=KJQ!KD6~WU8e#(V`h2!_Dr9b$O&JS z)``X6rAKj;@E*hALHV3y_@&&J9HSYaXLLbWQ1Zq6o?ppd9d)=%5Ni0K5*=ben3)!t z1|OzkUc;&}$7K~|r7*WV>9R)bL=d6~G5jYN-NpF=gAD?UBQ)_VB}EgEIuP#lwt8gm zOn64Z(-Iq1Wli6j^};F7bUe-3lwazFK>9f>XtgCz?GiicaYO^a0|dPL?1}WFiiMz+ zuKSY4duYT$5v&EEq7?s2DbRk3G8n=@>6orbt=}uA$`{$Y(;G3zl1Q-u{>-+&XR}r$ z{PKup8$yb21X6sTR;x=;x+8=WHCieM`oxUCM?w<%NlX4+KfU-i)SnBpFwdHeB+kdp zX4(nt0|>Xct;YDSxfrsbVt7&C25ZNxlUuE^vbE7nBJ*Bo(3=rs@6@RlbAF_;0g E54KBfxc~qF diff --git a/XRA/__pycache__/GaussianFit.cpython-313.pyc b/XRA/__pycache__/GaussianFit.cpython-313.pyc index bbac723a695ff96c41f06738cb1fb555d692f512..457535f31d8e3fb0b62c58fd47386c1ea5b0a388 100644 GIT binary patch delta 774 zcmYjPzi-n(6!zJN<2c0ql@cO#xKLDN1R(-SRfEb>s8EIiAyQF?a7rE5Rbrd-IixHJ zTO}4E3#nqN5E8JUj{F%^Fd)w?9bjk?Gk1g5<@phxWZKVI*I*tBVh!Mb&V z9m^ad;}E$`)I}ZK3QV6Pw(GqA5U?H3;&T(aS2oZ+$EG%JA&U`w)O1NK${VR+(jJ;L zAdYYJSU=D8sDV~JYPT8b1U6#Etq=Ly2wQ`ogGltsI*ge@=$REZ6+*&d|m|VJ_kQRv5{%s<@CRwT4xilmkX(KyBLq39*wshYFY%h>LzKDiwsr_zbQ}UJd5;PSV zJMjyQ)yB||0^zvfjg(t$cOz(-OXNDM@eTTy!awQalmfuwkvsv$kLMtmiy40bOB2rF delta 1586 zcmaJ>OK%%h6u$F*_^sHajiSU34XII@2W^t32?@>vilRKo;5Jnj)+io3BiR#kXAG!9 za+XFs8h3>1QUuun8Ir`w>XpOM<(5Z zZu$_)Lr`v3;o{sF;FGYM_aGE!m+1KbLM{|WCS!00tMDYB!S^FWSa~tdvk2nf01HGe zlQzytqqt@1oTC8yhSLz^;^n%(di2Y1w6N?t7XsT=D5@rLu~tf>r^Yjk=HILp92YL3 z2(JCX5OTpT5d;q7-FW!~`Z+92FdPBc~aTgf%sp(GAUXB+bZYHLO~i!9* zNA2C)+Ch8ofjqU>-dk$j3hYR`Z&wCl_XaENy?gT1kAoF?c60if%d?_E`#0y# zTH)}YrT)K8MdX^M%om{8j{{TP%=hl8Vg514gZ`;op1LZm!GG42=9K&frrMN*YR<-( zDC{T;gJLhxT?MMa2!md25;NYM0fUJ%3P;FXr!>3Tr0B}be{oL{8W|Pw3W-B3YFG&U z&40}w@H>qDkAP`Z<6l%-z=YM<3(7%J8pAjuM=-Sa2my{s?Nz?rrLTmKtHk3m%p`J{ zHS=AEC*;#GVG9thmDqt#MzRp)@dXlkk*Fw9ox~|xdR9vS)M3fWZw)yw+It(y{hr-Mlzq#Ch$$L5%!v|*av*%BI~C7CmlQ$JXxYBYV@>& JrCzGW{SD_6PNx6> diff --git a/XRA/__pycache__/thickness.cpython-313.pyc b/XRA/__pycache__/thickness.cpython-313.pyc index 86b249d9a47e420a57aa839f03cca0fcdaafb8cf..599087e51c943c44b504c838f98d92868e9d0d92 100644 GIT binary patch delta 583 zcmZpd-Xg{OnU|M~0SNvWF3XVE$h(k(amnQM9DU9qy4(y5ri>sd1_oVL28Li(5UIkT z$>vwY1Qe^{%v4CsRmey!N-bgm^3y>I85lm;KL=44gpwU67ji~$82~x%KwKO)`7)SawrGLnGiC96)eID76FsGKw~1*z@l7WQ7{P- z&EpQ`3})8l0P1Cj&|rCH2z#;_w~0$I3rGkU0<4e_0DJo-C@hN9fP^M<5m1_;NCQaR zVks^xD$(RE(gKNSg9sfEp*wjVcY&rYkQoHT#Y=!h1H%m--cGj$*Bd;1Fv=aun;gue zQh$+4W=7~mE~N#g7r8W67_PM6VR}*9;ehBxZMTbDZYP9J%3p|zzvvl%AtCjmXX-_+ z)CT7pT>KLRJ2fVR&TyO%DI-XVfkBs*fkA~qlXY?g zryS${$qk$lT>3y^cOWhfocxH>MuLBWQm5sVqUmLm%4Vd_%)2bEdy!lB0*mfsYc6RI zHJ~w586sFgMnw%_5g~%6h7&3R);qb3%gHK~1>_o#vQQ2X3qnS) zhO)xNIl>7L{o77HNV+v_OP5h|rnb#a-ZP4P*uZaq(jy(ZFznhqu#vhSE&! zi#)0gt~Yr2fILMcp5Kh1nb8+{G$3+*GXlZ9$;vz`^)s?B3TR&B(pq79k;`C%=tVBG z9fBt$FWLoNv<$uw5_!=w@A55OdlB-l7SSE z=gQ;-;ejb`FQx|P8{7h&)-yyea?8yqy~wSyAn78P#tNZ}T-puJPq=ye&AZGeI7?4- zzsxOjfkmc>ALtWJMn6rCTdaAdxdoL)>XY~JNU(uozQ}s=9Udu0yUE{qjJWkai}5nb Hf|UaRW0{ag From acd91dec174132fbbf07b4a7fe17c32fe5bbcc70 Mon Sep 17 00:00:00 2001 From: aysuismailova Date: Wed, 27 Aug 2025 18:49:09 +0100 Subject: [PATCH 39/44] some changes --- ARC-TF.py | 4 ++-- Files/xra.txt | 2 +- Include/__pycache__/FitData.cpython-38.pyc | Bin 2744 -> 2785 bytes 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/ARC-TF.py b/ARC-TF.py index c546af9..be6724b 100644 --- a/ARC-TF.py +++ b/ARC-TF.py @@ -807,7 +807,7 @@ def get_mu_from_table(film_name, source_name): mass_coeff = float(row[col_name]) return density * mass_coeff # mu in cm^-1 -def run_thickness_calc(): #NOT READY yet +def run_thickness_calc(): num = Current_Tab() choice = TabList[num][5].options.get() @@ -913,7 +913,7 @@ def ResultManager(): ).grid(row=j, column=3) tk.Label(TabList[num][1].ResultFrame, text='Attenuation: ').grid(row=4, column=0) - TabList[num][5].options = tk.StringVar(value="??") + TabList[num][5].options = tk.StringVar(value="Options") options_menu = tk.OptionMenu(TabList[num][1].ResultFrame, TabList[num][5].options, *TabList[num][5].options_list) options_menu.config(width=6) options_menu.grid(row=4, column=1) diff --git a/Files/xra.txt b/Files/xra.txt index 8a48857..aa5773b 100644 --- a/Files/xra.txt +++ b/Files/xra.txt @@ -3,4 +3,4 @@ Sn 50 118.71 7.31 2.47E+02 1.64E+01 3.54E+01 3.10E+01 6.34E+01 1.48E+01 Ag 47 107.8682 10.5 2.14E+02 3.09E+01 2.65E+01 5.44E+01 1.32E+01 Al 13 26.981539 2.7 4.96E+01 2.59E+00 9.53E-01 5.11E+00 1.11E+01 4.62E-01 Au 79 196.96657 19.282 2.05E+02 6.07E+01 2.31E+01 1.12E+02 1.38E+02 9.99E+00 -Pb 82 207.2 1.532 2.26E+02 6.67E+01 2.55E+01 1.22E+02 1.51E+02 1.11E+01 +Pb 82 207.2 11.34 2.26E+02 6.67E+01 2.55E+01 1.22E+02 1.51E+02 1.11E+01 diff --git a/Include/__pycache__/FitData.cpython-38.pyc b/Include/__pycache__/FitData.cpython-38.pyc index 3c696c77e99e85e2e1d2367a83d6f31e0a5be7f4..d33762ff1fb482eb414fd1d6ee05d8b176408084 100644 GIT binary patch delta 584 zcmZWn%_~Gv6o2=<`|i6Q&*yxV#>~Sso(Nf}NsVD;K}yO>VJ77J%#19aDE@=HwIDW9 zO0!W`{s&335G!`}Hk>o$Bd5;qo_^=t`@6r}y$U`Bohiq$HH_Q$i^bHXGodq2&FCkw z2y*iVb-tn+SB^P?nSW7nV~-81W21L>K-&?%69+-H5?^3OPr z@t8g{er^EuNO^TX($Js|Wh4?sx-7PTD8RLk40<)VcRdOx*BcHI3wy zc;R`LuG-oubDI)a-Kaf{z1%&^*G3+wmaXnmbUGXpgQ Date: Thu, 28 Aug 2025 04:48:13 +0300 Subject: [PATCH 40/44] Minor changes as units/decimals --- ARC-TF.py | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/ARC-TF.py b/ARC-TF.py index be6724b..acae795 100644 --- a/ARC-TF.py +++ b/ARC-TF.py @@ -837,9 +837,9 @@ def run_thickness_calc(): uncertainty_value = uncertainty(N, N0, Nb, mu, time1, time2, time3) if thickness < 1000: - result_text = f"Thickness = {thickness:.2f} ± {uncertainty_value:.2f} nm" + result_text = f"Thickness = ({thickness:.0f} ± {uncertainty_value:.0f}) nm" else: - result_text = f"Thickness = {thickness/1000:.2f} ± {uncertainty_value/1000:.2f} µm" + result_text = f"Thickness = ({thickness/1000:.0f} ± {uncertainty_value/1000:.0f}) µm" TabList[num][1].result_label.config(text=result_text) @@ -903,13 +903,13 @@ def ResultManager(): tk.Label( TabList[num][1].ResultFrame, - text='\t Area = ' + str("{:.1f}".format(values[j][3])) + text='\t Area = ' + str("{:.1f}".format(values[j][3])) + ' s⁻¹' ).grid(row=j, column=3) else: tk.Label( TabList[num][1].ResultFrame, - text='\t Area = ' + str("{:.6f}".format(values[j][3])) + text='\t Area = ' + str("{:.3e}".format(values[j][3])) + ' s⁻¹' ).grid(row=j, column=3) tk.Label(TabList[num][1].ResultFrame, text='Attenuation: ').grid(row=4, column=0) From db8665b158f02cabbb9347e169d2d6ad46646dcd Mon Sep 17 00:00:00 2001 From: aysuismailova Date: Fri, 29 Aug 2025 16:11:15 +0300 Subject: [PATCH 41/44] some changes about decimals --- ARC-TF.py | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/ARC-TF.py b/ARC-TF.py index acae795..a2f2858 100644 --- a/ARC-TF.py +++ b/ARC-TF.py @@ -837,9 +837,14 @@ def run_thickness_calc(): uncertainty_value = uncertainty(N, N0, Nb, mu, time1, time2, time3) if thickness < 1000: - result_text = f"Thickness = ({thickness:.0f} ± {uncertainty_value:.0f}) nm" + result_text = f"Thickness = ({thickness:.0f} ± {round(uncertainty_value, -int(floor(log10(abs(uncertainty_value))))) if uncertainty_value < 1 else int(round(uncertainty_value, 0))}) nm" + print(uncertainty_value) else: - result_text = f"Thickness = ({thickness/1000:.0f} ± {uncertainty_value/1000:.0f}) µm" + result_text = f"Thickness = ({round(thickness/1000, -int(floor(log10(abs(uncertainty_value/1000))))):.{-int(floor(log10(abs(uncertainty_value/1000))))}f} ± {round(uncertainty_value/1000, -int(floor(log10(abs(uncertainty_value/1000))))):.{-int(floor(log10(abs(uncertainty_value/1000))))}f}) µm" + print(thickness) + print(uncertainty_value) + print(uncertainty_value/1000) + TabList[num][1].result_label.config(text=result_text) From 95812018ed2edbf4afe775fd297170741781a618 Mon Sep 17 00:00:00 2001 From: aysuismailova Date: Fri, 29 Aug 2025 17:22:04 +0100 Subject: [PATCH 42/44] Help file and Source list name update --- ARC-TF.py | 14 +++++++++----- Files/Help.txt | 50 +++++++++++++++++++++++++++++++++++++++++++++----- Files/xra.txt | 2 +- 3 files changed, 55 insertions(+), 11 deletions(-) diff --git a/ARC-TF.py b/ARC-TF.py index a2f2858..73bb073 100644 --- a/ARC-TF.py +++ b/ARC-TF.py @@ -12,9 +12,10 @@ ## the first version of ARC-TF, can be searched for by the reference LIP-STUDENTS-23-15. ## ## Directly available at https://www.lip.pt/files/training/papers/2023/pdf/2023-PAPER-179-15.pdf. ## ## ## -## Authors: Alexandre Gusmão (1), alex_vng@hotmail.com, https://github.com/AlexVnGit ## -## Ricardo Matoza Pires (1,2), rpires@lip.pt, https://github.com/RiPires ## -## Tomás Campante Tavares (1,2), tmctavares@lip.pt, https://github.com/TomasCampante ## +## Authors: Alexandre Gusmão (1,2), alex_vng@hotmail.com, https://github.com/AlexVnGit ## +## Ricardo Matoza Pires (1,2), rpires@lip.pt, https://github.com/RiPires ## +## Tomás Campante Tavares (1,2), tmctavares@lip.pt, https://github.com/TomasCampante ## +## Aysu Ismayilova (2,3), aysuismaillova@gmail.com https://github.com/aysuismailova ## ## ## ## (1) Faculty of Sciences of the Universty of Lisbon (FCUL), ## ## Rua Ernesto de Vasconcelos, 1749-016 Lisboa, Portugal, ## @@ -24,6 +25,10 @@ ## NUC-RIA group (Nuclear Reactions, Instrumentation and Astrophysics) ## ## Av. Prof. Gama Pinto, 2, 1649-003 Lisboa, Portugal ## ## ## +## (3) Kaunas University of Technology (KTU) ## +## Mathematics and Natural Sciences Faculty, ## +## Studentų St. 50, XI Chamber, Kaunas ## +## ## ########################################################################################################## ## ------------------------------- Import necessary librarires ---------------------------------- ## @@ -782,7 +787,7 @@ def Calculate_Thickness(): df_xra = pd.read_csv("Files/xra.txt", sep="\t") films_list = df_xra["Element"].dropna().tolist() #takes the film materials sources = list(df_xra.columns[4:]) #columns after 5th -sources = [col.replace("mu ", "").replace(" K_alpha", "") for col in sources] +sources = [col.replace("mu ", "") for col in sources] def get_selected_film(num): # Return the film material currently selected in the ROI frame OptionMenu. @@ -929,7 +934,6 @@ def ResultManager(): TabList[num][5].source_data = tk.StringVar(value="Sources") source_menu = tk.OptionMenu(TabList[num][1].ResultFrame, TabList[num][5].source_data, *sources) - source_menu.config(width=6) run_button = tk.Button(TabList[num][1].ResultFrame, text="Run", command=run_thickness_calc) TabList[num][1].mu_label = tk.Label(TabList[num][1].ResultFrame) diff --git a/Files/Help.txt b/Files/Help.txt index 28f3a59..e040b99 100644 --- a/Files/Help.txt +++ b/Files/Help.txt @@ -5,10 +5,11 @@ Welcome to ARC-TF! Workflow -The program has 3 types of tabs. The first one, the Final Results Tab is a special tab, and exhibits all -the results calculated by the remainder two types of tabs. These are the Calibration Analysis Tabs, and the -Material Analysis Tabs. The user can create and delete these last two types of tabs freely. The options -available are different depending on which type of Tab the user opens. +The program supports four different types of tabs, each with a distinct purpose. The Final Results Tab is a special tab that consolidates and displays all results generated within the Calibration Analysis and Material Analysis tabs. This tab cannot be created or deleted manually by the user, as it is automatically maintained by the program. Its primary function is to provide an overview of the outcomes produced in the other analysis tabs. +The Calibration Analysis Tabs are dedicated to performing calibration-related computations. Users are free to create and delete these tabs depending on their needs. Each calibration tab offers a set of options and tools specific to calibration workflows. +Similarly, the Material Analysis Tabs are designed for performing analyses on different film materials. As with the calibration tabs, users can freely create or delete these tabs as required. The options available within a material analysis tab differ from those found in calibration tabs. +The final type, the XRA Analysis Tab, is a recently added feature. Unlike the other three tab types, the XRA Analysis Tab is fully independent and does not interact with the Final Results Tab, Calibration Analysis Tabs, or Material Analysis Tabs. It provides its own dedicated functionality for XRA-specific analysis. + Calibration Tab: @@ -33,6 +34,16 @@ calibration trials. The program will only use the energy from the radiation sour trial. This is why the the choice of peaks is of great importance. Finally, the user can calculate the thickness by clicking the button. The results will appear below the button, and in the final results tab. +XRA Tab: + +The XRA Analysis Tab is independent of all other tab types and is specifically designed for film thickness +determination. When using this tab, the first required step is to plot the Source Data, as the program will +not allow the user to upload or plot any other data beforehand. Once the Source Data has been provided, the +ser can then upload and plot the Source + Film Data, as well as optionally include Background Data. From +the resulting plots, emission lines can be identified and subsequently used during the film thickness +determination process. Unlike other analysis techniques within the program, the XRA Tab supports only a +single method for peak analysis: the ROI (Region of Interest) Select Algorithm. + Other Features: Besides the various analysis tools, ARC-TF also has a few other features that facilitate the process. @@ -132,4 +143,33 @@ after the linear regression is applied to them, become the initial energy. With is computed, and with the internal database of a few materials, an approximate thickness is calculated. This is done for every channel corresponding to a peak. After this step, an average of the thickness is obtained, while its uncertainty is computed using standard deviation over the square root of the number -of peaks minus one. The results are then presented in the selected units. \ No newline at end of file +of peaks minus one. The results are then presented in the selected units. + +ROI Select Algorithm: + +The ROI Select Algorithm is applied across three different tabs of the application: Calibration, Material, +and XRA. Each of these tabs makes use of the algorithm in slightly different ways, depending on the type +of analysis being performed. +In the Calibration and Material tabs, users can select up to six regions of interest. For each selected +ROI, the algorithm calculates three key parameters: the centroid, the sigma, and the error associated with +the peak. These values are determined using traditional methods, which directly analyze the data within the +chosen regions. As a result, the user can extract up to six sets of centroid, sigma, and error values +corresponding to the selected peaks. +The XRA tab, by contrast, allows for the selection of only one ROI, reflecting the different requirements +of its functionality. In this tab, a Gaussian fit is applied to the selected emission line. From this fit, +the algorithm derives the centroid, sigma, and the area under the curve. The fitting process is carried +out for Source, Source + Film, and if available for Background data. The calculated area represents the +integrated area under the Gaussian curve, within the ROI, and corresponds to the intensity of the selected emission line. + + + +The Thickness Calculation Algorithm for XRA: +After peak analysis for the XRA tab, the user has two options for choosing the linear attenuation coefficient: +Default and User. +When the Default option is selected, the user must specify the film material and the source that were used during +the experiment. These values are then retrieved from the database, and the program automatically applies the +corresponding parameter for the thickness calculation. +When the User option is selected, the user directly needs to enter the linear attenuation coefficient of the material. +This option is particularly useful when the film material used in the experiment is not included in the default database. +In both cases, once the Run button is clicked, the interface calculates and displays the film thickness together with +the associated uncertainty. \ No newline at end of file diff --git a/Files/xra.txt b/Files/xra.txt index aa5773b..2644b4c 100644 --- a/Files/xra.txt +++ b/Files/xra.txt @@ -1,4 +1,4 @@ -Element Z A p (g/cm^3) mu Cu K_alpha mu Ag K_alpha mu Ba K_alpha mu Mo K_alpha mu Rb K_alpha mu Tb K_alpha +Element Z A p (g/cm^3) mu Cu Kα — 8.041 keV mu Ag Kα — 22.103 keV mu Ba Kα — 32.061 keV mu Mo Kα — 17.443 keV mu Rb Kα — 13.376 keV mu Tb Kα — 44.218 keV Sn 50 118.71 7.31 2.47E+02 1.64E+01 3.54E+01 3.10E+01 6.34E+01 1.48E+01 Ag 47 107.8682 10.5 2.14E+02 3.09E+01 2.65E+01 5.44E+01 1.32E+01 Al 13 26.981539 2.7 4.96E+01 2.59E+00 9.53E-01 5.11E+00 1.11E+01 4.62E-01 From 280bc78f4311ffe948eae7acf5e4cf66a5e3af29 Mon Sep 17 00:00:00 2001 From: aysuismailova Date: Mon, 1 Sep 2025 15:54:22 +0100 Subject: [PATCH 43/44] Commit for the files --- XRA/Data/AuFilm_CuSource_22Aug.mca | 2132 ++++++++++++++++++++++++++++ XRA/Data/AuFilm_U232_22Aug.mca | 1037 ++++++++++++++ XRA/Data/Calib_Ra_27Aug.mca | 1037 ++++++++++++++ XRA/Data/Calib_U232_22Aug.mca | 1037 ++++++++++++++ XRA/Data/Calib_U232_26Aug.mca | 1037 ++++++++++++++ XRA/Data/CuSource_22Aug.mca | 2132 ++++++++++++++++++++++++++++ XRA/Data/CuSource_27Aug.mca | 2132 ++++++++++++++++++++++++++++ XRA/Data/PbFilm_CuSource_27Aug.mca | 2132 ++++++++++++++++++++++++++++ XRA/Data/PbFilm_Ra_27Aug.mca | 1037 ++++++++++++++ XRA/Data/Pbfilm_U232_26Aug.mca | 1037 ++++++++++++++ XRA/additional_draft | 32 + git | 0 12 files changed, 14782 insertions(+) create mode 100755 XRA/Data/AuFilm_CuSource_22Aug.mca create mode 100644 XRA/Data/AuFilm_U232_22Aug.mca create mode 100755 XRA/Data/Calib_Ra_27Aug.mca create mode 100644 XRA/Data/Calib_U232_22Aug.mca create mode 100755 XRA/Data/Calib_U232_26Aug.mca create mode 100755 XRA/Data/CuSource_22Aug.mca create mode 100755 XRA/Data/CuSource_27Aug.mca create mode 100755 XRA/Data/PbFilm_CuSource_27Aug.mca create mode 100755 XRA/Data/PbFilm_Ra_27Aug.mca create mode 100755 XRA/Data/Pbfilm_U232_26Aug.mca create mode 100644 XRA/additional_draft delete mode 100644 git diff --git a/XRA/Data/AuFilm_CuSource_22Aug.mca b/XRA/Data/AuFilm_CuSource_22Aug.mca new file mode 100755 index 0000000..0f198c6 --- /dev/null +++ b/XRA/Data/AuFilm_CuSource_22Aug.mca @@ -0,0 +1,2132 @@ +<> +TAG - live_data +DESCRIPTION - +GAIN - 3 +THRESHOLD - 0 +LIVE_MODE - 0 +PRESET_TIME - 0 +LIVE_TIME - 3597.483000 +REAL_TIME - 3600.000000 +START_TIME - 08/22/2025 17:53:50 +SERIAL_NUMBER - 0 +<> +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +51 +49 +62 +79 +60 +61 +46 +66 +52 +48 +59 +56 +56 +48 +48 +53 +45 +59 +59 +39 +53 +53 +46 +54 +44 +56 +56 +47 +35 +47 +46 +51 +37 +43 +44 +55 +56 +51 +46 +42 +39 +58 +42 +43 +40 +33 +46 +36 +36 +42 +59 +48 +32 +37 +48 +59 +53 +35 +46 +34 +45 +45 +42 +41 +46 +41 +44 +42 +45 +40 +43 +41 +38 +45 +36 +42 +50 +47 +47 +38 +39 +35 +40 +47 +49 +46 +39 +33 +36 +34 +30 +30 +56 +43 +35 +35 +47 +39 +42 +36 +43 +34 +29 +43 +47 +34 +49 +41 +41 +31 +40 +24 +30 +36 +51 +27 +32 +41 +30 +32 +39 +33 +32 +36 +46 +45 +45 +30 +38 +37 +33 +28 +24 +41 +38 +35 +44 +38 +29 +37 +38 +35 +40 +31 +33 +37 +40 +40 +41 +46 +28 +39 +38 +39 +34 +36 +33 +41 +48 +47 +67 +79 +83 +78 +63 +57 +35 +41 +33 +33 +37 +46 +49 +24 +40 +41 +34 +57 +60 +49 +55 +53 +32 +28 +45 +50 +39 +46 +69 +74 +98 +125 +151 +152 +189 +180 +123 +82 +56 +45 +47 +38 +50 +44 +53 +38 +44 +33 +42 +37 +53 +43 +57 +59 +64 +60 +59 +61 +55 +62 +54 +45 +43 +41 +51 +50 +65 +70 +69 +72 +60 +74 +45 +69 +59 +62 +65 +74 +85 +111 +186 +433 +1217 +3070 +6631 +12077 +16605 +18816 +16374 +12021 +6643 +3039 +1139 +407 +129 +87 +66 +73 +70 +62 +57 +56 +47 +55 +88 +82 +96 +87 +125 +218 +419 +788 +1463 +2374 +2989 +3191 +2695 +1900 +1074 +488 +195 +74 +35 +23 +15 +17 +16 +22 +21 +11 +12 +14 +14 +13 +16 +11 +11 +13 +15 +8 +17 +11 +21 +12 +11 +8 +12 +13 +9 +12 +7 +12 +11 +10 +10 +6 +12 +11 +12 +10 +12 +4 +15 +12 +12 +14 +18 +14 +25 +12 +17 +17 +11 +13 +4 +6 +6 +14 +10 +11 +18 +10 +10 +10 +14 +10 +7 +8 +5 +7 +8 +6 +7 +12 +7 +12 +11 +5 +9 +7 +10 +4 +9 +10 +7 +8 +8 +7 +5 +11 +4 +7 +4 +7 +2 +5 +2 +9 +3 +3 +6 +6 +9 +9 +3 +3 +5 +8 +6 +3 +8 +12 +6 +11 +9 +10 +13 +7 +9 +10 +6 +4 +4 +9 +3 +5 +3 +6 +2 +4 +7 +3 +1 +2 +3 +7 +2 +2 +3 +4 +7 +7 +3 +1 +5 +1 +2 +4 +6 +3 +4 +3 +3 +1 +2 +1 +4 +1 +2 +1 +3 +2 +1 +2 +3 +2 +4 +2 +4 +6 +3 +1 +4 +2 +3 +3 +4 +2 +7 +1 +2 +6 +4 +2 +5 +1 +4 +5 +4 +0 +5 +1 +1 +2 +2 +7 +1 +4 +1 +4 +1 +3 +2 +2 +1 +2 +3 +2 +2 +2 +2 +3 +3 +4 +3 +4 +3 +6 +1 +5 +3 +3 +3 +2 +4 +3 +2 +3 +3 +2 +1 +7 +1 +0 +2 +1 +2 +1 +1 +1 +3 +4 +7 +0 +3 +5 +1 +1 +2 +0 +2 +6 +3 +2 +2 +5 +3 +1 +3 +3 +6 +3 +1 +0 +3 +4 +2 +4 +3 +1 +6 +5 +3 +4 +4 +1 +0 +2 +3 +2 +4 +4 +2 +0 +3 +1 +4 +2 +2 +3 +2 +1 +3 +0 +1 +6 +1 +3 +3 +2 +6 +4 +3 +3 +1 +3 +2 +3 +2 +2 +0 +1 +3 +5 +3 +4 +1 +1 +4 +0 +1 +3 +3 +0 +2 +3 +2 +0 +2 +1 +1 +4 +4 +3 +1 +2 +4 +3 +1 +0 +4 +4 +3 +1 +1 +1 +1 +1 +3 +3 +3 +0 +1 +3 +2 +0 +1 +2 +3 +0 +3 +4 +4 +1 +2 +1 +2 +1 +0 +4 +3 +3 +3 +3 +1 +2 +0 +1 +1 +1 +0 +1 +2 +2 +2 +0 +4 +0 +3 +0 +3 +2 +4 +2 +1 +1 +2 +4 +7 +0 +3 +2 +0 +2 +4 +1 +3 +1 +3 +1 +1 +1 +5 +3 +1 +1 +1 +2 +2 +5 +5 +7 +5 +2 +3 +2 +4 +2 +1 +0 +0 +5 +1 +1 +1 +3 +0 +2 +3 +3 +3 +1 +0 +3 +3 +3 +0 +0 +1 +1 +3 +2 +2 +1 +3 +3 +2 +2 +1 +0 +1 +7 +1 +2 +2 +1 +3 +5 +2 +2 +2 +1 +4 +4 +2 +1 +2 +1 +1 +5 +5 +2 +3 +2 +1 +2 +4 +3 +3 +3 +4 +7 +2 +3 +1 +2 +3 +0 +1 +1 +2 +1 +2 +4 +1 +0 +3 +5 +2 +5 +6 +3 +8 +5 +3 +2 +3 +4 +10 +8 +9 +4 +4 +8 +3 +3 +2 +3 +1 +1 +1 +4 +2 +1 +0 +2 +2 +1 +1 +2 +2 +1 +1 +1 +2 +0 +3 +1 +2 +4 +2 +3 +1 +3 +6 +5 +6 +3 +4 +9 +6 +5 +3 +4 +4 +4 +2 +1 +2 +4 +2 +0 +1 +4 +1 +1 +2 +2 +0 +3 +1 +1 +0 +0 +2 +1 +1 +1 +1 +0 +2 +3 +0 +1 +1 +3 +2 +0 +3 +1 +0 +5 +2 +3 +2 +2 +4 +1 +1 +2 +0 +0 +0 +1 +1 +2 +2 +2 +3 +2 +1 +2 +2 +4 +2 +0 +1 +6 +2 +1 +2 +1 +2 +2 +3 +3 +0 +2 +0 +3 +1 +2 +2 +1 +1 +0 +2 +1 +1 +1 +0 +2 +0 +3 +2 +0 +1 +1 +2 +3 +2 +1 +0 +0 +0 +2 +1 +2 +4 +2 +1 +2 +3 +1 +0 +2 +1 +3 +1 +1 +1 +0 +4 +1 +2 +0 +2 +1 +3 +3 +1 +4 +0 +2 +0 +1 +0 +0 +0 +1 +1 +1 +3 +0 +3 +3 +1 +1 +2 +2 +3 +0 +1 +2 +2 +0 +1 +1 +1 +2 +2 +0 +1 +2 +0 +0 +0 +1 +2 +1 +1 +3 +3 +2 +1 +1 +2 +4 +2 +4 +1 +2 +0 +1 +1 +0 +0 +1 +3 +2 +1 +0 +0 +1 +1 +1 +3 +4 +2 +5 +0 +0 +1 +3 +1 +1 +1 +2 +1 +3 +2 +1 +1 +1 +0 +0 +2 +1 +3 +2 +4 +1 +4 +1 +1 +1 +1 +3 +0 +0 +0 +0 +0 +0 +1 +1 +1 +0 +1 +1 +0 +3 +4 +0 +0 +2 +1 +2 +0 +1 +2 +2 +0 +1 +1 +0 +1 +0 +2 +0 +2 +3 +1 +0 +1 +0 +1 +0 +1 +1 +0 +2 +2 +2 +0 +2 +1 +0 +2 +3 +2 +1 +2 +1 +3 +7 +2 +2 +1 +2 +2 +1 +2 +1 +2 +3 +1 +1 +2 +3 +2 +1 +0 +1 +4 +1 +2 +1 +3 +0 +3 +0 +2 +2 +2 +2 +1 +4 +1 +0 +1 +0 +2 +2 +1 +3 +4 +1 +1 +1 +0 +1 +1 +3 +0 +1 +1 +3 +3 +3 +1 +1 +2 +4 +4 +6 +1 +2 +4 +2 +4 +2 +1 +1 +2 +1 +4 +2 +5 +3 +1 +3 +5 +0 +3 +3 +2 +2 +1 +2 +0 +3 +2 +3 +2 +3 +3 +6 +3 +0 +2 +2 +1 +3 +2 +2 +2 +3 +3 +3 +4 +3 +2 +1 +4 +2 +1 +1 +6 +1 +3 +7 +3 +4 +3 +2 +1 +6 +2 +4 +0 +1 +1 +1 +2 +0 +2 +5 +1 +5 +4 +5 +5 +2 +1 +4 +0 +4 +6 +5 +4 +3 +0 +5 +4 +6 +5 +5 +2 +4 +4 +3 +6 +4 +5 +0 +2 +6 +3 +6 +8 +6 +7 +2 +3 +8 +3 +4 +4 +6 +3 +3 +2 +4 +2 +5 +7 +8 +4 +6 +2 +6 +4 +10 +6 +12 +4 +5 +11 +9 +5 +5 +7 +4 +6 +1 +4 +8 +2 +5 +5 +4 +5 +10 +6 +6 +3 +11 +11 +4 +8 +8 +7 +5 +6 +7 +8 +10 +6 +15 +9 +6 +10 +12 +7 +10 +8 +9 +9 +4 +8 +5 +9 +6 +7 +3 +15 +11 +7 +17 +9 +12 +12 +12 +10 +8 +11 +8 +5 +9 +11 +15 +8 +12 +15 +8 +4 +7 +14 +11 +12 +9 +8 +7 +5 +12 +6 +13 +8 +9 +7 +10 +14 +8 +13 +8 +10 +10 +14 +11 +12 +5 +13 +11 +16 +10 +7 +16 +14 +16 +16 +7 +12 +15 +15 +14 +14 +11 +14 +12 +19 +16 +14 +17 +20 +9 +16 +13 +11 +12 +17 +15 +16 +16 +11 +14 +19 +7 +12 +23 +18 +16 +17 +11 +13 +16 +18 +14 +24 +13 +15 +21 +23 +12 +28 +19 +15 +24 +12 +17 +21 +22 +20 +15 +26 +21 +20 +33 +18 +25 +13 +20 +22 +19 +27 +27 +26 +33 +20 +21 +24 +25 +23 +31 +28 +33 +25 +28 +28 +34 +28 +27 +41 +35 +32 +36 +41 +36 +42 +39 +48 +38 +41 +44 +36 +38 +54 +55 +29 +42 +59 +58 +58 +50 +53 +48 +46 +43 +60 +49 +57 +61 +42 +63 +67 +62 +72 +84 +68 +58 +66 +82 +79 +81 +88 +86 +79 +88 +84 +80 +80 +87 +99 +98 +103 +92 +88 +82 +109 +98 +127 +105 +110 +100 +118 +110 +117 +117 +124 +103 +108 +126 +116 +98 +102 +108 +112 +106 +111 +108 +90 +113 +110 +102 +97 +99 +85 +113 +94 +96 +79 +108 +92 +82 +102 +81 +79 +85 +96 +72 +75 +77 +68 +96 +84 +81 +67 +62 +50 +59 +42 +55 +61 +54 +57 +54 +35 +44 +56 +53 +44 +54 +32 +52 +50 +38 +42 +52 +45 +42 +35 +46 +35 +42 +41 +33 +33 +26 +25 +24 +29 +26 +29 +26 +20 +26 +22 +24 +17 +24 +19 +17 +15 +18 +17 +31 +27 +23 +22 +25 +28 +17 +19 +14 +23 +19 +20 +17 +20 +20 +20 +14 +23 +14 +20 +19 +16 +16 +16 +8 +11 +19 +17 +9 +14 +14 +7 +11 +20 +14 +7 +12 +17 +13 +10 +14 +8 +11 +15 +14 +15 +9 +4 +14 +9 +7 +6 +8 +8 +10 +15 +9 +7 +11 +7 +10 +9 +12 +9 +9 +7 +15 +10 +9 +6 +1 +4 +6 +12 +6 +12 +7 +11 +7 +9 +10 +9 +7 +5 +7 +8 +7 +8 +3 +6 +7 +8 +10 +7 +3 +7 +6 +10 +7 +14 +8 +7 +6 +6 +5 +8 +10 +5 +9 +2 +2 +10 +4 +4 +7 +7 +4 +1 +8 +4 +6 +9 +11 +4 +4 +3 +5 +6 +5 +6 +6 +6 +2 +7 +6 +5 +5 +5 +4 +4 +2 +13 +10 +5 +3 +1 +2 +5 +3 +0 +4 +4 +5 +3 +3 +3 +7 +2 +3 +6 +2 +3 +2 +7 +2 +2 +1 +2 +2 +3 +2 +6 +4 +7 +1 +7 +1 +3 +5 +3 +8 +4 +6 +3 +4 +4 +3 +3 +4 +5 +6 +5 +2 +2 +4 +5 +6 +5 +3 +4 +4 +6 +6 +2 +2 +4 +4 +0 +3 +6 +2 +5 +3 +3 +2 +4 +4 +8 +3 +0 +0 +4 +0 +6 +3 +1 +2 +0 +3 +2 +3 +4 +7 +10 +9 +21 +18 +36 +51 +63 +78 +70 +84 +96 +101 +107 +112 +107 +111 +109 +89 +75 +66 +51 +45 +37 +22 +6 +10 +7 +6 +1 +2 +2 +0 +2 +0 +1 +0 +0 +0 +1 +0 +1 +2 +1 +0 +0 +1 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +1 +0 +0 +0 +0 +0 +0 +0 +0 +0 +1 +1 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +1 +0 +0 +0 +1 +0 +0 +0 +0 +0 +0 +1 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +1 +1 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +1 +0 +0 +0 +0 +0 +0 +0 +0 +1 +0 +0 +0 +<> +<> +RESC=?; Reset Configuration +CLCK=80; 20MHz/80MHz +TPEA=9.600; Peaking Time +GAIF=0.9312; Fine Gain +GAIN=21.162; Total Gain (Analog * Fine) +RESL=204; Detector Reset Lockout +TFLA=0.200; Flat Top +TPFA=50; Fast Channel Peaking Time +PURE=OFF; PUR Interval On/Off +RTDE=OFF; RTD On/Off +MCAS=NORM; MCA Source +MCAC=2048; MCA/MCS Channels +SOFF=OFF; Set Spectrum Offset +AINP=POS; Analog Input Pos/Neg +INOF=DEF; Input Offset +GAIA=15; Analog Gain Index +CUSP=0; Non-Trapezoidal Shaping +PDMD=NORM; Peak Detect Mode (Min/Max) +THSL=0.585; Slow Threshold +TLLD=OFF; LLD Threshold +THFA=230.00; Fast Threshold +DACO=SHAPED; DAC Output +DACF=50; DAC Offset +RTDS=0; RTD Sensitivity +RTDT=0.00; RTD Threshold +BLRM=1; BLR Mode +BLRD=3; BLR Down Correction +BLRU=0; BLR Up Correction +AUO1=SCA8; AUX_OUT Selection +PRET=OFF; Preset Time +PRER=3600.000; Preset Real Time +PREC=OFF; Preset Counts +PRCL=1; Preset Counts Low Threshold +PRCH=8191; Preset Counts High Threshold +HVSE=-110; HV Set +TECS=220; TEC Set +PAPZ=OFF; Pole-Zero +PAPS=8.5; Preamp 8.5/5 (N/A) +SCOE=FA; Scope Trigger Edge +SCOT=12; Scope Trigger Position +SCOG=1; Digital Scope Gain +MCSL=1; MCS Low Threshold +MCSH=8191; MCS High Threshold +MCST=0.00; MCS Timebase +AUO2=ICR; AUX_OUT2 Selection +TPMO=OFF; Test Pulser On/Off +GPED=RI; G.P. Counter Edge +GPIN=AUX1; G.P. Counter Input +GPME=ON; G.P. Counter Uses MCA_EN? +GPGA=ON; G.P. Counter Uses GATE? +GPMC=ON; G.P. Counter Cleared With MCA Counters? +MCAE=OFF; MCA/MCS Enable +VOLU=OFF; Speaker On/Off +CON1=DAC; Connector 1 +CON2=AUXOUT2; Connector 2 +<> +<> +Device Type: PX5 +Serial Number: 2264 +Firmware: 6.07 Build: 3 +FPGA: 6.02 +Fast Count: 10600 +Slow Count: 148745 +Accumulation Time: 3597.483000 +Real Time: 3600.000000 +Dead Time: +HV Volt: -110V +TEC Temp: 222K +Board Temp: 39C +<> diff --git a/XRA/Data/AuFilm_U232_22Aug.mca b/XRA/Data/AuFilm_U232_22Aug.mca new file mode 100644 index 0000000..89ca4bc --- /dev/null +++ b/XRA/Data/AuFilm_U232_22Aug.mca @@ -0,0 +1,1037 @@ +<> +TAG - live_data +DESCRIPTION - +GAIN - 2 +THRESHOLD - 50 +LIVE_MODE - 0 +PRESET_TIME - 0 +LIVE_TIME - 3606.000000 +REAL_TIME - 3612.920000 +START_TIME - 08/22/2025 15:36:42 +SERIAL_NUMBER - 4114 +<> +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +30 +274 +247 +239 +217 +197 +168 +140 +138 +134 +119 +113 +111 +119 +98 +84 +88 +76 +56 +79 +74 +91 +80 +89 +62 +58 +64 +86 +68 +57 +83 +51 +58 +53 +58 +76 +55 +55 +47 +60 +59 +54 +40 +63 +67 +65 +57 +71 +65 +61 +58 +65 +67 +57 +59 +55 +62 +49 +73 +67 +67 +64 +71 +61 +59 +59 +65 +73 +64 +66 +51 +61 +64 +76 +73 +69 +72 +50 +76 +64 +65 +86 +66 +63 +72 +85 +69 +49 +63 +59 +66 +69 +55 +62 +77 +73 +83 +71 +79 +57 +67 +68 +95 +74 +77 +75 +76 +76 +73 +65 +73 +70 +89 +61 +83 +80 +75 +93 +83 +69 +69 +81 +72 +77 +76 +80 +75 +92 +91 +83 +76 +68 +67 +72 +77 +87 +66 +77 +90 +80 +70 +88 +88 +90 +90 +93 +76 +96 +90 +75 +80 +98 +102 +77 +71 +84 +78 +100 +81 +83 +93 +90 +81 +82 +74 +96 +80 +77 +72 +84 +84 +93 +105 +103 +108 +79 +80 +93 +102 +111 +84 +95 +88 +109 +90 +88 +96 +101 +88 +101 +105 +98 +100 +87 +97 +98 +87 +87 +92 +93 +84 +95 +91 +82 +85 +87 +109 +103 +91 +111 +95 +103 +102 +107 +101 +106 +93 +97 +104 +102 +103 +106 +94 +102 +117 +105 +125 +110 +112 +131 +125 +129 +118 +109 +140 +128 +147 +139 +142 +130 +138 +148 +143 +149 +150 +156 +140 +156 +131 +147 +135 +132 +129 +124 +130 +147 +121 +141 +123 +126 +145 +129 +140 +129 +143 +153 +153 +133 +149 +134 +131 +155 +137 +131 +147 +151 +162 +141 +140 +123 +153 +127 +158 +160 +164 +164 +157 +161 +145 +146 +147 +155 +127 +153 +156 +152 +150 +138 +159 +151 +153 +153 +185 +164 +143 +156 +156 +146 +137 +144 +125 +140 +159 +151 +163 +142 +161 +170 +149 +155 +152 +172 +151 +153 +186 +169 +156 +171 +172 +159 +172 +173 +180 +165 +170 +157 +168 +160 +162 +156 +167 +155 +154 +142 +163 +154 +164 +172 +167 +184 +187 +169 +169 +156 +154 +141 +146 +160 +184 +152 +194 +146 +154 +184 +170 +168 +163 +166 +160 +170 +160 +169 +164 +164 +159 +207 +187 +159 +154 +178 +165 +163 +181 +170 +178 +158 +162 +168 +180 +172 +165 +148 +190 +158 +172 +160 +177 +176 +172 +186 +180 +191 +168 +172 +181 +177 +194 +171 +181 +197 +182 +189 +186 +209 +178 +186 +185 +214 +208 +169 +172 +221 +181 +192 +205 +213 +189 +201 +207 +223 +179 +226 +231 +201 +216 +242 +213 +200 +213 +231 +223 +204 +218 +228 +218 +270 +236 +222 +223 +231 +223 +235 +233 +244 +260 +248 +247 +232 +263 +233 +239 +254 +223 +223 +237 +252 +245 +282 +278 +277 +246 +281 +285 +284 +289 +289 +296 +321 +287 +297 +333 +318 +314 +299 +314 +332 +335 +344 +392 +373 +401 +402 +460 +435 +435 +483 +482 +545 +526 +524 +655 +632 +779 +779 +828 +935 +995 +1176 +1312 +1528 +1939 +2219 +2556 +3382 +4221 +5272 +6292 +7619 +8989 +10564 +12105 +13754 +15108 +16479 +17356 +18504 +19156 +18977 +18780 +17976 +16380 +15080 +13765 +13268 +13294 +14185 +14683 +15112 +15420 +14807 +13372 +11466 +9278 +6918 +4925 +3561 +2661 +2073 +1687 +1333 +1230 +1171 +1092 +1180 +1246 +1493 +1776 +2203 +2786 +3759 +4883 +6437 +8211 +10417 +12687 +14702 +16350 +17570 +17820 +16823 +15277 +12437 +9557 +6831 +4665 +3246 +2424 +1805 +1421 +1141 +897 +707 +544 +444 +392 +310 +288 +259 +296 +257 +285 +314 +294 +357 +325 +425 +461 +554 +688 +789 +1081 +1317 +1781 +2294 +2849 +3705 +4384 +4945 +5549 +5931 +6013 +5846 +5411 +4832 +4111 +3368 +2670 +2205 +1755 +1530 +1273 +1155 +1223 +1281 +1560 +1857 +2354 +3187 +4292 +5795 +7672 +9949 +12500 +15032 +16959 +18779 +19106 +18626 +16850 +13854 +10360 +7454 +4892 +3273 +2289 +1782 +1380 +1046 +834 +576 +438 +340 +277 +241 +201 +182 +177 +181 +178 +159 +187 +193 +212 +189 +212 +238 +233 +257 +256 +289 +295 +342 +360 +436 +474 +534 +638 +737 +873 +1057 +1342 +1898 +2553 +3438 +4723 +6596 +8706 +11429 +14012 +16483 +18445 +19287 +19644 +18062 +15342 +11796 +8434 +5798 +3732 +2444 +1848 +1490 +1132 +774 +587 +415 +276 +203 +169 +121 +73 +56 +40 +39 +27 +29 +25 +33 +27 +20 +37 +26 +20 +31 +29 +21 +17 +15 +24 +30 +23 +23 +28 +20 +26 +25 +22 +22 +38 +24 +22 +29 +22 +25 +27 +26 +31 +26 +22 +30 +30 +25 +36 +22 +32 +30 +17 +26 +26 +22 +24 +34 +21 +34 +25 +23 +24 +24 +27 +28 +30 +31 +31 +30 +28 +27 +25 +29 +24 +22 +34 +44 +33 +36 +24 +26 +21 +35 +26 +34 +38 +44 +28 +26 +27 +35 +29 +32 +32 +33 +30 +34 +35 +32 +23 +26 +29 +31 +42 +31 +33 +34 +33 +33 +27 +27 +27 +22 +28 +22 +34 +30 +42 +31 +29 +23 +29 +27 +29 +26 +34 +42 +36 +34 +39 +42 +29 +27 +22 +31 +44 +37 +34 +51 +40 +37 +42 +47 +45 +38 +55 +52 +48 +43 +49 +49 +43 +53 +49 +62 +52 +44 +52 +57 +52 +75 +50 +56 +54 +57 +45 +62 +58 +68 +52 +58 +75 +70 +73 +66 +69 +72 +73 +100 +82 +84 +92 +102 +105 +119 +94 +91 +123 +113 +150 +127 +171 +156 +154 +202 +228 +269 +299 +381 +366 +493 +623 +792 +1126 +1514 +2260 +3260 +4555 +6209 +8261 +10431 +12120 +13684 +13777 +12789 +10632 +8090 +5536 +3646 +2429 +1748 +1365 +1065 +830 +621 +466 +347 +285 +180 +160 +126 +108 +77 +62 +47 +49 +41 +48 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +<> diff --git a/XRA/Data/Calib_Ra_27Aug.mca b/XRA/Data/Calib_Ra_27Aug.mca new file mode 100755 index 0000000..c542c39 --- /dev/null +++ b/XRA/Data/Calib_Ra_27Aug.mca @@ -0,0 +1,1037 @@ +<> +TAG - live_data +DESCRIPTION - +GAIN - 2 +THRESHOLD - 50 +LIVE_MODE - 0 +PRESET_TIME - 0 +LIVE_TIME - 3645.053333 +REAL_TIME - 3645.200000 +START_TIME - 08/27/2025 14:48:13 +SERIAL_NUMBER - 4114 +<> +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +1 +6 +14 +9 +7 +6 +7 +3 +4 +2 +6 +3 +1 +5 +2 +6 +3 +2 +0 +0 +0 +2 +1 +1 +0 +2 +2 +1 +1 +0 +2 +3 +1 +1 +2 +2 +3 +3 +1 +0 +1 +0 +5 +2 +0 +0 +0 +0 +3 +1 +2 +4 +1 +2 +2 +1 +1 +1 +2 +4 +0 +2 +2 +2 +2 +4 +1 +2 +1 +0 +1 +2 +0 +2 +1 +0 +1 +0 +1 +1 +1 +0 +2 +0 +1 +3 +0 +1 +1 +0 +5 +1 +2 +1 +5 +2 +0 +5 +1 +3 +3 +3 +3 +1 +3 +0 +3 +1 +3 +1 +2 +2 +1 +4 +1 +3 +2 +0 +0 +0 +1 +0 +3 +1 +2 +2 +3 +1 +2 +1 +6 +1 +3 +0 +2 +1 +3 +2 +0 +3 +2 +2 +1 +4 +0 +0 +0 +3 +4 +4 +8 +1 +2 +1 +3 +5 +1 +1 +0 +4 +4 +4 +2 +3 +1 +2 +3 +7 +1 +6 +0 +3 +2 +5 +3 +2 +5 +3 +1 +3 +2 +2 +2 +3 +3 +5 +3 +3 +2 +0 +2 +5 +4 +6 +1 +2 +4 +5 +3 +4 +6 +4 +4 +3 +4 +5 +5 +3 +1 +2 +1 +2 +3 +7 +1 +2 +3 +4 +2 +3 +7 +2 +3 +2 +4 +2 +4 +5 +5 +4 +6 +3 +0 +2 +2 +2 +2 +5 +3 +3 +2 +6 +4 +6 +3 +1 +1 +5 +3 +2 +4 +3 +2 +3 +3 +5 +2 +1 +0 +1 +2 +3 +0 +1 +2 +2 +2 +2 +0 +5 +4 +6 +2 +2 +3 +3 +0 +2 +3 +2 +1 +1 +4 +5 +3 +2 +7 +7 +2 +5 +4 +0 +2 +1 +5 +3 +4 +2 +2 +3 +6 +1 +2 +3 +3 +4 +2 +4 +1 +5 +4 +3 +0 +2 +2 +4 +1 +4 +5 +2 +5 +5 +4 +3 +3 +0 +1 +3 +2 +3 +3 +2 +4 +2 +4 +3 +5 +1 +7 +4 +1 +4 +7 +2 +2 +3 +6 +4 +3 +4 +7 +3 +1 +3 +1 +2 +1 +2 +5 +7 +2 +6 +3 +2 +6 +3 +5 +1 +7 +8 +2 +3 +5 +3 +4 +0 +3 +1 +5 +3 +3 +4 +6 +4 +7 +10 +8 +2 +7 +5 +4 +5 +8 +6 +4 +8 +3 +1 +8 +1 +6 +5 +3 +6 +8 +6 +4 +6 +4 +1 +8 +4 +3 +3 +2 +5 +6 +6 +3 +5 +4 +7 +10 +6 +6 +8 +6 +3 +4 +3 +8 +7 +4 +8 +4 +4 +6 +9 +8 +5 +11 +5 +7 +4 +7 +6 +9 +8 +9 +8 +8 +9 +8 +10 +7 +8 +10 +11 +3 +12 +18 +35 +81 +166 +215 +114 +36 +13 +15 +18 +13 +16 +21 +13 +28 +22 +24 +37 +40 +71 +101 +202 +670 +2069 +3138 +2537 +840 +154 +22 +11 +5 +4 +10 +2 +6 +4 +8 +4 +6 +5 +4 +1 +8 +2 +4 +4 +8 +8 +8 +5 +8 +9 +6 +9 +3 +6 +7 +7 +8 +5 +7 +6 +13 +14 +15 +6 +11 +15 +15 +16 +19 +23 +15 +34 +34 +39 +53 +94 +119 +198 +332 +609 +857 +625 +256 +53 +15 +9 +8 +10 +2 +12 +7 +4 +12 +11 +16 +20 +35 +65 +203 +570 +1084 +1216 +697 +184 +23 +6 +3 +4 +3 +1 +4 +3 +4 +4 +2 +2 +5 +4 +3 +3 +3 +1 +4 +1 +5 +4 +8 +2 +4 +5 +2 +3 +6 +5 +5 +4 +3 +6 +12 +13 +5 +9 +9 +7 +11 +15 +25 +22 +21 +37 +42 +46 +49 +94 +157 +307 +640 +1089 +1315 +876 +318 +52 +16 +8 +3 +2 +2 +0 +2 +0 +1 +0 +0 +1 +1 +0 +2 +0 +1 +1 +1 +1 +2 +0 +2 +0 +0 +2 +1 +0 +1 +2 +2 +0 +0 +0 +0 +0 +1 +0 +1 +1 +0 +2 +1 +2 +0 +2 +0 +0 +2 +2 +2 +1 +1 +1 +2 +0 +0 +0 +1 +0 +2 +1 +0 +0 +0 +3 +0 +1 +1 +0 +1 +2 +3 +0 +2 +2 +0 +2 +1 +0 +2 +2 +2 +1 +0 +2 +0 +2 +0 +2 +4 +0 +2 +1 +3 +0 +3 +1 +1 +1 +3 +2 +4 +3 +2 +4 +3 +1 +3 +3 +1 +4 +2 +3 +2 +1 +1 +3 +1 +1 +4 +5 +1 +2 +5 +4 +0 +3 +1 +2 +0 +3 +2 +2 +3 +1 +2 +0 +1 +2 +2 +1 +0 +2 +1 +1 +1 +1 +4 +1 +1 +3 +2 +0 +1 +4 +0 +3 +2 +2 +5 +5 +2 +6 +9 +3 +6 +4 +6 +8 +7 +9 +6 +6 +11 +15 +15 +27 +43 +60 +88 +198 +457 +867 +1195 +912 +381 +82 +10 +10 +3 +5 +2 +1 +1 +0 +0 +1 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +1 +0 +1 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +<> diff --git a/XRA/Data/Calib_U232_22Aug.mca b/XRA/Data/Calib_U232_22Aug.mca new file mode 100644 index 0000000..4cb7eba --- /dev/null +++ b/XRA/Data/Calib_U232_22Aug.mca @@ -0,0 +1,1037 @@ +<> +TAG - live_data +DESCRIPTION - +GAIN - 2 +THRESHOLD - 50 +LIVE_MODE - 0 +PRESET_TIME - 0 +LIVE_TIME - 1007.386667 +REAL_TIME - 1009.320000 +START_TIME - 08/22/2025 15:12:43 +SERIAL_NUMBER - 4114 +<> +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +20 +77 +80 +76 +64 +51 +56 +54 +50 +42 +36 +41 +41 +36 +29 +30 +31 +27 +23 +26 +24 +27 +15 +16 +14 +16 +24 +24 +24 +18 +21 +17 +14 +11 +23 +18 +19 +18 +19 +14 +22 +24 +10 +21 +18 +17 +18 +22 +18 +16 +20 +17 +11 +19 +19 +22 +12 +19 +13 +20 +20 +22 +11 +19 +17 +20 +22 +23 +11 +15 +24 +13 +18 +22 +16 +13 +19 +18 +20 +25 +21 +19 +17 +21 +25 +20 +15 +22 +23 +24 +23 +24 +20 +16 +17 +19 +24 +14 +19 +25 +19 +21 +22 +31 +16 +18 +20 +19 +17 +31 +20 +24 +30 +28 +26 +22 +23 +16 +20 +21 +25 +29 +22 +22 +19 +21 +19 +16 +14 +19 +19 +21 +24 +20 +20 +23 +17 +23 +24 +25 +30 +26 +31 +28 +25 +31 +21 +26 +25 +24 +29 +30 +27 +22 +26 +23 +27 +14 +29 +24 +15 +19 +29 +34 +29 +26 +19 +29 +23 +19 +30 +29 +28 +23 +21 +24 +16 +29 +26 +31 +33 +24 +33 +19 +28 +18 +21 +23 +29 +28 +32 +36 +29 +33 +34 +33 +34 +29 +30 +26 +30 +40 +43 +35 +38 +49 +42 +49 +34 +42 +35 +34 +42 +44 +33 +40 +38 +24 +31 +45 +36 +40 +38 +40 +43 +39 +35 +35 +38 +28 +35 +33 +31 +42 +29 +24 +40 +40 +45 +41 +36 +34 +34 +29 +32 +38 +34 +33 +42 +47 +49 +55 +45 +46 +39 +45 +49 +37 +39 +27 +49 +45 +46 +43 +41 +41 +33 +38 +33 +41 +38 +33 +46 +39 +39 +44 +53 +39 +34 +48 +53 +42 +49 +38 +37 +38 +47 +36 +40 +39 +43 +26 +32 +37 +41 +47 +39 +26 +33 +33 +33 +43 +47 +40 +31 +49 +36 +38 +50 +34 +46 +36 +53 +40 +42 +40 +44 +32 +32 +35 +36 +48 +39 +38 +44 +43 +45 +38 +36 +36 +33 +39 +37 +43 +43 +45 +36 +55 +28 +48 +48 +46 +45 +36 +47 +37 +40 +42 +44 +48 +41 +44 +47 +40 +42 +51 +46 +46 +46 +39 +48 +38 +46 +36 +47 +38 +43 +50 +31 +43 +33 +49 +55 +50 +50 +45 +53 +39 +61 +40 +47 +32 +54 +52 +55 +44 +33 +45 +38 +43 +63 +51 +55 +40 +49 +51 +41 +43 +39 +49 +37 +38 +62 +51 +45 +50 +47 +48 +37 +43 +56 +56 +47 +49 +35 +53 +34 +53 +45 +56 +52 +59 +52 +44 +43 +65 +55 +63 +50 +52 +58 +54 +55 +57 +53 +55 +68 +55 +69 +49 +59 +43 +52 +52 +51 +63 +54 +66 +68 +52 +60 +56 +57 +62 +64 +67 +75 +67 +59 +62 +86 +78 +60 +58 +56 +51 +74 +86 +76 +65 +65 +71 +63 +74 +70 +69 +82 +78 +73 +68 +76 +79 +92 +67 +80 +83 +75 +65 +75 +85 +88 +106 +110 +98 +100 +92 +95 +94 +95 +93 +89 +120 +127 +112 +128 +154 +143 +152 +152 +140 +189 +192 +232 +214 +221 +273 +330 +333 +426 +479 +580 +694 +914 +1103 +1382 +1619 +2032 +2380 +2921 +3289 +3882 +4184 +4534 +4865 +5107 +5360 +5539 +5295 +5052 +4613 +4298 +3817 +3590 +3602 +3997 +4114 +4323 +4454 +4267 +3829 +3397 +2625 +1854 +1273 +866 +658 +565 +459 +405 +333 +323 +312 +294 +332 +356 +500 +605 +843 +998 +1402 +1746 +2401 +3050 +3699 +4231 +4716 +4965 +5185 +4848 +4223 +3366 +2466 +1639 +1148 +804 +608 +514 +404 +277 +244 +196 +151 +126 +106 +87 +98 +62 +70 +90 +80 +80 +89 +90 +107 +102 +143 +136 +218 +227 +310 +426 +551 +689 +818 +1066 +1333 +1514 +1679 +1748 +1808 +1677 +1436 +1234 +1075 +809 +702 +579 +465 +365 +341 +321 +333 +371 +404 +523 +700 +1043 +1315 +1770 +2373 +3162 +3775 +4600 +5272 +5373 +5584 +4954 +4419 +3402 +2313 +1454 +956 +714 +519 +416 +316 +261 +204 +147 +109 +83 +79 +69 +43 +38 +34 +68 +48 +36 +51 +39 +47 +47 +50 +70 +92 +78 +69 +84 +99 +82 +93 +129 +145 +144 +196 +237 +266 +344 +476 +647 +853 +1193 +1634 +2234 +2878 +3709 +4531 +5196 +5738 +5714 +5356 +4566 +3470 +2404 +1592 +947 +724 +524 +430 +309 +245 +187 +112 +73 +59 +46 +27 +34 +24 +9 +12 +14 +9 +11 +10 +11 +4 +9 +7 +8 +9 +6 +5 +7 +8 +9 +4 +11 +3 +8 +10 +6 +3 +10 +15 +7 +9 +7 +8 +10 +11 +2 +5 +11 +3 +13 +5 +10 +10 +7 +10 +4 +11 +11 +8 +6 +5 +9 +2 +6 +5 +11 +4 +6 +7 +11 +10 +8 +7 +12 +6 +7 +9 +10 +4 +4 +6 +9 +5 +11 +10 +8 +4 +7 +10 +10 +6 +10 +5 +8 +10 +15 +8 +9 +6 +4 +9 +7 +7 +7 +4 +6 +9 +5 +7 +11 +9 +11 +6 +8 +13 +10 +7 +7 +10 +4 +10 +10 +8 +4 +4 +8 +10 +4 +10 +7 +8 +8 +11 +10 +10 +12 +11 +14 +19 +8 +13 +8 +12 +15 +12 +9 +13 +10 +11 +7 +11 +17 +15 +10 +20 +12 +10 +13 +9 +18 +20 +11 +16 +6 +19 +14 +8 +17 +19 +21 +17 +20 +13 +15 +16 +12 +20 +15 +16 +21 +21 +16 +22 +29 +20 +18 +24 +24 +23 +37 +24 +34 +26 +31 +47 +37 +38 +39 +60 +59 +51 +91 +77 +98 +120 +129 +173 +196 +211 +387 +513 +777 +1126 +1671 +2182 +2827 +3476 +3915 +4102 +3891 +3252 +2506 +1554 +934 +600 +481 +336 +298 +217 +169 +133 +83 +82 +65 +30 +36 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +<> diff --git a/XRA/Data/Calib_U232_26Aug.mca b/XRA/Data/Calib_U232_26Aug.mca new file mode 100755 index 0000000..7b7bc0f --- /dev/null +++ b/XRA/Data/Calib_U232_26Aug.mca @@ -0,0 +1,1037 @@ +<> +TAG - live_data +DESCRIPTION - +GAIN - 2 +THRESHOLD - 50 +LIVE_MODE - 0 +PRESET_TIME - 0 +LIVE_TIME - 636.013333 +REAL_TIME - 637.280000 +START_TIME - 08/26/2025 16:25:42 +SERIAL_NUMBER - 4114 +<> +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +10 +37 +46 +36 +34 +37 +30 +30 +29 +19 +22 +15 +16 +17 +15 +15 +21 +19 +7 +21 +21 +13 +17 +12 +18 +14 +17 +12 +7 +13 +11 +17 +16 +15 +9 +7 +14 +5 +8 +18 +14 +11 +10 +13 +14 +13 +6 +18 +10 +7 +15 +14 +12 +12 +9 +8 +9 +9 +11 +12 +4 +16 +6 +9 +12 +10 +16 +13 +11 +11 +15 +12 +11 +10 +15 +13 +11 +10 +13 +15 +12 +11 +14 +11 +14 +16 +16 +15 +12 +19 +14 +7 +12 +16 +12 +18 +9 +22 +10 +16 +15 +5 +21 +14 +14 +13 +14 +13 +20 +12 +15 +10 +12 +13 +18 +17 +13 +15 +16 +17 +12 +7 +13 +20 +19 +15 +18 +7 +21 +11 +13 +11 +19 +16 +13 +12 +18 +16 +19 +17 +20 +21 +16 +19 +18 +17 +20 +13 +14 +16 +18 +11 +23 +18 +11 +11 +12 +13 +11 +17 +16 +26 +19 +18 +21 +11 +15 +14 +17 +15 +16 +12 +21 +19 +8 +11 +10 +11 +16 +19 +12 +16 +17 +15 +20 +21 +12 +19 +20 +16 +21 +14 +20 +20 +18 +21 +23 +12 +16 +17 +14 +18 +19 +21 +15 +19 +12 +17 +24 +31 +22 +33 +25 +23 +24 +32 +29 +24 +27 +26 +26 +23 +16 +25 +26 +26 +14 +22 +32 +35 +27 +25 +31 +24 +23 +20 +28 +25 +15 +25 +22 +28 +22 +21 +28 +29 +23 +24 +20 +27 +24 +23 +16 +22 +26 +18 +22 +30 +29 +30 +38 +17 +32 +21 +25 +22 +30 +29 +26 +23 +29 +17 +31 +22 +20 +32 +29 +35 +23 +22 +27 +28 +30 +26 +37 +35 +25 +27 +25 +27 +25 +25 +33 +29 +30 +29 +26 +16 +32 +24 +25 +21 +24 +31 +29 +24 +27 +20 +26 +27 +29 +28 +28 +35 +28 +28 +25 +30 +21 +34 +31 +24 +36 +24 +28 +32 +28 +27 +18 +20 +30 +34 +29 +24 +25 +24 +29 +28 +27 +27 +25 +21 +26 +26 +26 +31 +28 +31 +27 +18 +18 +20 +29 +36 +30 +28 +33 +29 +25 +21 +25 +29 +21 +31 +30 +27 +32 +26 +25 +31 +21 +32 +30 +29 +23 +23 +34 +27 +23 +36 +36 +40 +28 +44 +38 +35 +22 +24 +34 +31 +31 +26 +26 +22 +30 +26 +28 +35 +37 +24 +25 +21 +24 +30 +33 +27 +35 +35 +43 +29 +29 +37 +32 +37 +35 +35 +30 +37 +35 +29 +31 +30 +29 +33 +23 +25 +37 +37 +25 +32 +29 +29 +26 +31 +44 +31 +28 +44 +28 +48 +53 +41 +45 +37 +41 +34 +28 +41 +42 +32 +45 +29 +49 +33 +38 +61 +39 +45 +43 +38 +33 +59 +50 +37 +43 +42 +54 +57 +43 +32 +55 +52 +38 +44 +44 +42 +44 +46 +49 +51 +54 +61 +49 +61 +56 +57 +58 +50 +64 +59 +58 +64 +67 +65 +55 +66 +78 +52 +62 +83 +89 +69 +85 +93 +88 +93 +88 +101 +106 +119 +111 +135 +127 +163 +146 +173 +184 +231 +277 +337 +390 +491 +593 +758 +922 +1100 +1311 +1575 +1887 +2201 +2544 +2760 +3023 +3208 +3393 +3559 +3636 +3499 +3251 +2969 +2733 +2379 +2283 +2417 +2580 +2731 +2834 +2931 +2743 +2546 +2168 +1561 +1121 +800 +539 +402 +318 +319 +262 +224 +210 +197 +211 +239 +269 +320 +379 +491 +718 +884 +1216 +1604 +2008 +2397 +2787 +3210 +3305 +3388 +3194 +2625 +2158 +1524 +1027 +660 +506 +423 +336 +251 +199 +171 +126 +102 +77 +60 +64 +37 +50 +54 +50 +52 +56 +56 +63 +70 +64 +108 +109 +135 +157 +207 +263 +343 +467 +616 +759 +896 +1005 +1099 +1183 +1208 +1110 +960 +788 +659 +543 +419 +324 +274 +256 +227 +201 +201 +237 +295 +367 +429 +638 +848 +1194 +1631 +2108 +2646 +3056 +3536 +3600 +3675 +3248 +2702 +2135 +1345 +864 +594 +453 +341 +250 +228 +178 +127 +87 +65 +56 +54 +35 +39 +31 +35 +32 +45 +37 +36 +28 +42 +39 +43 +29 +59 +49 +54 +57 +66 +73 +63 +96 +108 +108 +127 +140 +176 +256 +318 +407 +565 +794 +1068 +1513 +1986 +2549 +3093 +3554 +3859 +3756 +3461 +2751 +2149 +1445 +962 +570 +447 +356 +256 +186 +156 +104 +91 +57 +36 +24 +21 +13 +5 +10 +8 +4 +8 +6 +5 +3 +5 +5 +5 +5 +3 +2 +5 +5 +2 +4 +5 +3 +6 +4 +4 +6 +6 +6 +6 +8 +5 +3 +2 +5 +5 +6 +5 +4 +5 +6 +6 +4 +1 +1 +3 +5 +6 +2 +5 +3 +5 +6 +2 +3 +6 +3 +4 +5 +5 +2 +1 +8 +3 +6 +4 +4 +3 +8 +5 +3 +8 +4 +3 +10 +9 +3 +8 +13 +5 +5 +4 +7 +5 +3 +9 +3 +5 +5 +3 +4 +4 +6 +6 +2 +5 +6 +5 +7 +5 +3 +5 +2 +10 +6 +6 +11 +3 +9 +4 +1 +5 +8 +7 +5 +4 +3 +5 +5 +9 +6 +9 +4 +8 +3 +10 +4 +4 +5 +4 +5 +3 +5 +8 +7 +6 +6 +8 +6 +8 +10 +6 +5 +7 +12 +5 +5 +6 +13 +9 +6 +14 +6 +8 +7 +10 +11 +3 +7 +5 +9 +15 +10 +7 +8 +15 +13 +10 +15 +13 +16 +15 +11 +12 +16 +16 +22 +16 +14 +20 +17 +21 +23 +21 +27 +24 +32 +33 +34 +36 +43 +47 +70 +47 +57 +68 +72 +102 +118 +165 +232 +364 +527 +775 +1037 +1497 +1915 +2365 +2597 +2695 +2488 +1972 +1466 +914 +523 +409 +302 +249 +185 +148 +106 +84 +66 +54 +45 +15 +23 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +<> diff --git a/XRA/Data/CuSource_22Aug.mca b/XRA/Data/CuSource_22Aug.mca new file mode 100755 index 0000000..4e6908c --- /dev/null +++ b/XRA/Data/CuSource_22Aug.mca @@ -0,0 +1,2132 @@ +<> +TAG - live_data +DESCRIPTION - +GAIN - 3 +THRESHOLD - 0 +LIVE_MODE - 0 +PRESET_TIME - 0 +LIVE_TIME - 3597.502000 +REAL_TIME - 3600.000000 +START_TIME - 08/22/2025 15:29:09 +SERIAL_NUMBER - 0 +<> +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +43 +65 +68 +51 +73 +57 +69 +67 +60 +54 +59 +63 +47 +56 +46 +56 +50 +55 +48 +56 +49 +56 +53 +52 +54 +34 +45 +44 +36 +63 +46 +35 +38 +55 +51 +54 +46 +44 +41 +43 +36 +43 +37 +61 +55 +35 +42 +48 +56 +48 +38 +53 +32 +44 +39 +42 +41 +43 +39 +52 +42 +53 +44 +48 +32 +40 +52 +42 +49 +47 +51 +39 +42 +43 +44 +39 +31 +30 +39 +42 +38 +35 +49 +38 +37 +39 +49 +37 +50 +35 +39 +40 +40 +42 +37 +36 +36 +41 +40 +38 +31 +41 +34 +40 +34 +35 +35 +49 +42 +28 +37 +42 +30 +47 +33 +35 +43 +43 +41 +35 +34 +33 +38 +37 +40 +36 +28 +31 +36 +28 +41 +37 +39 +38 +41 +34 +32 +41 +45 +34 +37 +36 +38 +37 +38 +44 +42 +47 +47 +43 +40 +43 +29 +32 +42 +26 +29 +34 +42 +39 +65 +75 +82 +73 +64 +56 +33 +35 +42 +42 +40 +28 +48 +38 +38 +38 +49 +44 +50 +61 +49 +43 +31 +40 +40 +44 +53 +58 +59 +71 +105 +118 +136 +201 +158 +155 +129 +82 +76 +59 +52 +40 +49 +48 +51 +48 +47 +44 +41 +56 +53 +58 +52 +59 +61 +74 +53 +60 +66 +61 +48 +58 +45 +46 +49 +40 +56 +86 +65 +82 +65 +63 +63 +70 +61 +81 +80 +92 +85 +119 +202 +496 +1268 +3399 +7576 +12876 +17909 +20047 +17449 +12359 +7004 +3111 +1157 +381 +155 +86 +68 +78 +67 +61 +67 +52 +62 +64 +69 +77 +94 +101 +139 +243 +451 +983 +1669 +2422 +3285 +3389 +2976 +1951 +1176 +527 +199 +77 +33 +15 +23 +14 +13 +17 +15 +16 +9 +12 +15 +14 +16 +17 +10 +16 +12 +20 +15 +11 +15 +9 +13 +19 +12 +7 +20 +8 +19 +14 +8 +9 +12 +9 +9 +14 +7 +14 +6 +15 +10 +17 +17 +18 +18 +23 +15 +16 +17 +13 +16 +8 +16 +4 +5 +11 +10 +7 +11 +8 +7 +8 +9 +11 +12 +9 +10 +7 +8 +11 +6 +10 +7 +7 +10 +7 +8 +5 +3 +6 +7 +5 +11 +5 +5 +8 +6 +6 +6 +7 +6 +3 +2 +6 +3 +4 +4 +3 +4 +8 +5 +5 +4 +4 +8 +7 +8 +3 +5 +8 +8 +6 +8 +12 +10 +9 +4 +9 +3 +3 +9 +5 +1 +5 +1 +3 +2 +3 +2 +5 +6 +9 +2 +3 +8 +5 +7 +4 +3 +1 +4 +3 +7 +9 +2 +2 +1 +0 +2 +4 +4 +2 +1 +3 +5 +7 +0 +2 +2 +3 +4 +1 +3 +1 +2 +3 +2 +4 +1 +0 +1 +1 +0 +2 +6 +1 +4 +0 +4 +2 +3 +1 +4 +2 +7 +1 +0 +2 +4 +1 +6 +2 +5 +1 +3 +5 +6 +2 +4 +1 +6 +4 +2 +5 +4 +1 +1 +2 +3 +2 +2 +2 +4 +6 +4 +2 +4 +0 +3 +6 +0 +3 +2 +5 +4 +6 +2 +3 +1 +3 +2 +1 +2 +3 +3 +2 +1 +1 +4 +2 +4 +3 +4 +3 +0 +3 +3 +4 +2 +0 +1 +0 +2 +4 +3 +4 +3 +0 +1 +1 +2 +1 +3 +3 +5 +2 +4 +1 +3 +3 +4 +3 +4 +4 +3 +2 +3 +4 +6 +1 +3 +3 +1 +4 +0 +1 +2 +1 +0 +2 +1 +4 +7 +1 +1 +1 +2 +2 +2 +3 +1 +2 +1 +2 +3 +2 +1 +2 +2 +2 +1 +0 +1 +1 +2 +3 +1 +3 +3 +2 +0 +1 +3 +3 +3 +1 +2 +4 +3 +3 +2 +1 +2 +4 +3 +1 +6 +2 +2 +3 +2 +2 +0 +3 +3 +0 +4 +4 +2 +2 +1 +3 +0 +0 +2 +2 +2 +4 +2 +2 +0 +1 +2 +4 +0 +2 +0 +2 +1 +3 +1 +2 +3 +1 +2 +1 +4 +2 +0 +2 +1 +3 +0 +2 +2 +2 +1 +3 +2 +1 +3 +0 +1 +0 +4 +4 +5 +4 +1 +1 +2 +3 +1 +2 +1 +2 +1 +1 +0 +0 +4 +3 +4 +2 +4 +4 +3 +3 +3 +2 +4 +4 +7 +5 +5 +3 +1 +0 +4 +1 +1 +3 +2 +1 +5 +1 +2 +1 +1 +4 +2 +0 +2 +2 +2 +1 +3 +0 +0 +4 +3 +1 +2 +1 +3 +1 +1 +3 +0 +3 +1 +1 +2 +3 +4 +1 +1 +5 +3 +1 +0 +1 +5 +5 +3 +6 +1 +1 +1 +2 +2 +0 +3 +2 +3 +1 +0 +0 +2 +2 +4 +4 +3 +0 +4 +3 +3 +3 +1 +3 +1 +2 +3 +2 +1 +0 +2 +4 +2 +2 +10 +3 +5 +6 +6 +9 +7 +3 +10 +8 +10 +7 +2 +6 +3 +2 +3 +4 +3 +2 +1 +1 +5 +0 +3 +1 +1 +0 +0 +4 +1 +3 +1 +2 +0 +3 +3 +3 +2 +2 +5 +5 +8 +5 +3 +9 +6 +4 +5 +4 +4 +5 +2 +0 +0 +2 +0 +3 +1 +1 +3 +1 +0 +2 +1 +1 +3 +5 +4 +0 +0 +0 +0 +0 +0 +2 +1 +3 +1 +3 +3 +4 +1 +1 +0 +0 +0 +4 +0 +0 +0 +1 +1 +1 +3 +1 +1 +1 +2 +2 +1 +1 +1 +0 +2 +0 +2 +1 +2 +2 +3 +3 +2 +2 +1 +4 +2 +1 +1 +1 +2 +1 +0 +4 +1 +2 +1 +2 +1 +1 +5 +0 +4 +1 +1 +1 +1 +4 +0 +1 +0 +3 +1 +3 +3 +3 +2 +3 +0 +2 +2 +0 +1 +1 +1 +2 +0 +0 +0 +2 +3 +0 +2 +0 +1 +2 +1 +1 +1 +1 +1 +2 +2 +1 +1 +4 +1 +3 +3 +0 +3 +2 +3 +0 +3 +7 +0 +1 +0 +0 +1 +1 +2 +2 +1 +1 +0 +2 +1 +0 +0 +1 +2 +1 +1 +2 +0 +0 +1 +1 +1 +3 +0 +0 +1 +3 +0 +1 +0 +2 +3 +0 +1 +3 +1 +1 +0 +2 +1 +3 +4 +7 +2 +2 +1 +6 +1 +1 +2 +1 +2 +2 +0 +0 +0 +1 +0 +0 +1 +2 +0 +2 +1 +1 +1 +3 +1 +5 +1 +1 +1 +0 +3 +2 +1 +2 +1 +2 +1 +0 +1 +0 +1 +2 +1 +2 +2 +0 +3 +2 +3 +0 +4 +1 +2 +3 +0 +3 +0 +1 +2 +2 +2 +2 +1 +1 +2 +0 +1 +1 +1 +2 +1 +3 +1 +0 +5 +0 +0 +0 +0 +1 +4 +1 +1 +2 +0 +0 +1 +1 +0 +0 +1 +1 +3 +0 +1 +2 +3 +1 +2 +1 +1 +3 +0 +1 +1 +0 +0 +0 +1 +2 +1 +2 +2 +5 +2 +2 +4 +0 +2 +2 +3 +1 +1 +1 +2 +2 +3 +2 +1 +3 +1 +3 +0 +2 +3 +0 +0 +6 +0 +3 +2 +2 +0 +1 +1 +2 +0 +1 +1 +0 +2 +2 +2 +2 +1 +3 +3 +1 +1 +3 +2 +2 +0 +3 +1 +4 +2 +2 +2 +2 +2 +3 +3 +2 +1 +1 +0 +2 +1 +3 +0 +2 +4 +2 +3 +5 +2 +3 +4 +1 +3 +0 +2 +1 +1 +2 +1 +3 +3 +3 +3 +3 +4 +5 +3 +3 +1 +3 +2 +3 +1 +5 +3 +2 +5 +3 +4 +4 +2 +3 +3 +2 +4 +4 +2 +4 +5 +5 +4 +2 +3 +1 +2 +2 +1 +4 +3 +5 +4 +5 +4 +0 +5 +6 +1 +10 +3 +2 +3 +5 +2 +4 +2 +9 +4 +2 +5 +7 +3 +4 +8 +5 +5 +1 +2 +7 +3 +3 +2 +6 +6 +5 +2 +6 +10 +5 +8 +4 +5 +4 +8 +6 +4 +4 +2 +8 +6 +2 +7 +4 +4 +8 +8 +3 +5 +7 +9 +5 +11 +8 +5 +4 +6 +7 +8 +13 +4 +4 +8 +5 +5 +8 +10 +9 +9 +6 +5 +6 +17 +9 +5 +6 +6 +10 +7 +11 +5 +9 +12 +6 +10 +4 +5 +10 +8 +6 +7 +9 +9 +10 +11 +9 +8 +9 +14 +13 +10 +12 +10 +7 +4 +5 +7 +6 +7 +12 +7 +11 +6 +13 +5 +8 +8 +11 +8 +10 +10 +5 +10 +9 +14 +17 +12 +7 +4 +9 +13 +4 +9 +8 +8 +15 +15 +12 +9 +8 +6 +5 +10 +13 +16 +14 +10 +12 +15 +7 +19 +20 +14 +11 +11 +13 +8 +3 +10 +10 +7 +15 +17 +12 +19 +7 +22 +14 +12 +8 +17 +11 +11 +17 +16 +12 +15 +17 +12 +14 +11 +15 +16 +13 +15 +14 +13 +15 +23 +18 +18 +11 +27 +11 +15 +18 +20 +19 +34 +21 +20 +19 +24 +16 +18 +16 +25 +23 +19 +17 +13 +18 +30 +28 +32 +26 +26 +33 +24 +30 +25 +25 +27 +21 +22 +30 +26 +25 +26 +28 +34 +28 +24 +32 +25 +37 +30 +44 +40 +34 +43 +36 +35 +42 +33 +35 +41 +51 +39 +51 +55 +53 +65 +56 +60 +47 +47 +57 +59 +66 +59 +60 +54 +54 +54 +61 +56 +64 +64 +59 +71 +79 +80 +79 +67 +67 +90 +89 +72 +77 +85 +77 +91 +94 +71 +107 +85 +99 +96 +98 +101 +97 +94 +97 +107 +107 +108 +115 +121 +120 +111 +113 +112 +104 +104 +110 +105 +91 +88 +111 +99 +112 +105 +115 +103 +106 +94 +94 +95 +96 +81 +82 +80 +92 +81 +89 +77 +84 +84 +71 +86 +82 +76 +82 +74 +55 +75 +70 +69 +56 +60 +51 +61 +67 +52 +40 +60 +54 +49 +55 +36 +50 +41 +50 +37 +46 +39 +49 +44 +34 +37 +30 +35 +43 +40 +46 +20 +22 +31 +28 +39 +39 +29 +29 +23 +29 +36 +26 +30 +27 +22 +25 +21 +32 +25 +26 +20 +30 +24 +28 +17 +25 +17 +18 +14 +19 +21 +15 +20 +16 +20 +17 +14 +12 +19 +14 +10 +14 +16 +6 +9 +10 +7 +12 +20 +8 +11 +21 +11 +13 +13 +13 +14 +9 +12 +11 +7 +4 +10 +15 +9 +8 +18 +15 +12 +14 +6 +11 +8 +11 +6 +10 +8 +19 +7 +7 +6 +9 +12 +9 +7 +5 +9 +12 +6 +10 +3 +7 +6 +7 +8 +7 +6 +15 +7 +9 +9 +5 +9 +7 +8 +11 +7 +12 +10 +9 +7 +3 +5 +8 +3 +4 +7 +9 +9 +11 +6 +7 +7 +8 +5 +6 +8 +6 +3 +6 +11 +4 +8 +6 +7 +8 +5 +5 +7 +4 +7 +6 +3 +7 +3 +1 +1 +3 +1 +1 +9 +2 +6 +4 +8 +9 +6 +2 +3 +8 +6 +4 +4 +4 +3 +6 +7 +8 +8 +5 +4 +3 +6 +7 +3 +4 +4 +8 +4 +3 +6 +2 +2 +3 +6 +1 +5 +6 +4 +3 +3 +2 +5 +2 +3 +3 +3 +3 +2 +2 +4 +5 +4 +7 +8 +2 +2 +3 +4 +4 +3 +5 +3 +5 +0 +2 +3 +5 +4 +1 +2 +4 +4 +5 +2 +4 +1 +5 +1 +3 +2 +5 +4 +0 +2 +2 +3 +1 +0 +2 +0 +3 +2 +2 +3 +1 +0 +1 +3 +2 +4 +11 +7 +8 +11 +19 +46 +38 +51 +70 +89 +98 +102 +119 +116 +112 +122 +119 +107 +104 +88 +78 +56 +41 +38 +24 +21 +5 +5 +6 +5 +0 +3 +2 +0 +1 +1 +0 +0 +0 +0 +0 +0 +0 +1 +1 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +1 +0 +0 +0 +0 +0 +0 +0 +0 +0 +1 +0 +0 +0 +0 +1 +0 +2 +0 +0 +0 +0 +0 +0 +1 +0 +0 +0 +0 +0 +0 +1 +0 +0 +0 +0 +0 +1 +1 +0 +0 +0 +0 +1 +0 +0 +0 +1 +0 +1 +0 +0 +0 +1 +0 +0 +0 +0 +1 +0 +0 +0 +0 +1 +2 +1 +0 +0 +0 +1 +0 +1 +0 +1 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +1 +0 +0 +0 +0 +0 +0 +0 +0 +<> +<> +RESC=?; Reset Configuration +CLCK=80; 20MHz/80MHz +TPEA=9.600; Peaking Time +GAIF=0.9312; Fine Gain +GAIN=21.162; Total Gain (Analog * Fine) +RESL=204; Detector Reset Lockout +TFLA=0.200; Flat Top +TPFA=50; Fast Channel Peaking Time +PURE=OFF; PUR Interval On/Off +RTDE=OFF; RTD On/Off +MCAS=NORM; MCA Source +MCAC=2048; MCA/MCS Channels +SOFF=OFF; Set Spectrum Offset +AINP=POS; Analog Input Pos/Neg +INOF=DEF; Input Offset +GAIA=15; Analog Gain Index +CUSP=0; Non-Trapezoidal Shaping +PDMD=NORM; Peak Detect Mode (Min/Max) +THSL=0.585; Slow Threshold +TLLD=OFF; LLD Threshold +THFA=230.00; Fast Threshold +DACO=SHAPED; DAC Output +DACF=50; DAC Offset +RTDS=0; RTD Sensitivity +RTDT=0.00; RTD Threshold +BLRM=1; BLR Mode +BLRD=3; BLR Down Correction +BLRU=0; BLR Up Correction +AUO1=SCA8; AUX_OUT Selection +PRET=OFF; Preset Time +PRER=3600.000; Preset Real Time +PREC=OFF; Preset Counts +PRCL=1; Preset Counts Low Threshold +PRCH=8191; Preset Counts High Threshold +HVSE=-110; HV Set +TECS=220; TEC Set +PAPZ=OFF; Pole-Zero +PAPS=8.5; Preamp 8.5/5 (N/A) +SCOE=FA; Scope Trigger Edge +SCOT=12; Scope Trigger Position +SCOG=1; Digital Scope Gain +MCSL=1; MCS Low Threshold +MCSH=8191; MCS High Threshold +MCST=0.00; MCS Timebase +AUO2=ICR; AUX_OUT2 Selection +TPMO=OFF; Test Pulser On/Off +GPED=RI; G.P. Counter Edge +GPIN=AUX1; G.P. Counter Input +GPME=ON; G.P. Counter Uses MCA_EN? +GPGA=ON; G.P. Counter Uses GATE? +GPMC=ON; G.P. Counter Cleared With MCA Counters? +MCAE=OFF; MCA/MCS Enable +VOLU=OFF; Speaker On/Off +CON1=DAC; Connector 1 +CON2=AUXOUT2; Connector 2 +<> +<> +Device Type: PX5 +Serial Number: 2264 +Firmware: 6.07 Build: 3 +FPGA: 6.02 +Fast Count: 10861 +Slow Count: 156899 +Accumulation Time: 3597.502000 +Real Time: 3600.000000 +Dead Time: +HV Volt: -110V +TEC Temp: 222K +Board Temp: 38C +<> diff --git a/XRA/Data/CuSource_27Aug.mca b/XRA/Data/CuSource_27Aug.mca new file mode 100755 index 0000000..8247476 --- /dev/null +++ b/XRA/Data/CuSource_27Aug.mca @@ -0,0 +1,2132 @@ +<> +TAG - live_data +DESCRIPTION - +GAIN - 3 +THRESHOLD - 0 +LIVE_MODE - 0 +PRESET_TIME - 0 +LIVE_TIME - 3597.495000 +REAL_TIME - 3600.000000 +START_TIME - 08/27/2025 17:51:31 +SERIAL_NUMBER - 0 +<> +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +55 +79 +90 +88 +81 +82 +71 +88 +94 +83 +73 +71 +71 +74 +67 +74 +69 +68 +70 +74 +84 +69 +83 +61 +60 +79 +75 +66 +60 +68 +83 +77 +55 +67 +68 +62 +72 +64 +54 +64 +58 +61 +56 +56 +67 +59 +70 +60 +49 +76 +73 +77 +70 +69 +55 +60 +58 +43 +64 +65 +50 +62 +59 +66 +71 +61 +56 +53 +67 +50 +57 +54 +49 +62 +52 +67 +53 +50 +66 +62 +60 +55 +44 +56 +43 +57 +50 +57 +61 +66 +43 +45 +49 +61 +63 +58 +69 +63 +58 +48 +50 +46 +54 +53 +47 +58 +48 +49 +61 +54 +48 +44 +55 +44 +38 +59 +51 +57 +46 +55 +42 +50 +47 +59 +52 +51 +40 +44 +61 +47 +66 +46 +49 +50 +50 +64 +57 +44 +57 +58 +54 +55 +55 +54 +57 +55 +52 +53 +51 +51 +49 +54 +52 +49 +50 +48 +52 +55 +44 +59 +73 +94 +91 +84 +77 +64 +56 +52 +57 +51 +52 +53 +41 +54 +62 +53 +72 +58 +66 +59 +87 +66 +56 +60 +53 +57 +57 +62 +80 +84 +107 +135 +146 +172 +198 +164 +134 +74 +67 +64 +67 +61 +54 +74 +44 +69 +60 +64 +68 +42 +64 +60 +73 +68 +75 +82 +91 +76 +61 +69 +62 +47 +57 +55 +62 +50 +59 +81 +82 +110 +77 +100 +63 +61 +56 +78 +81 +83 +89 +88 +172 +347 +959 +2391 +5253 +9096 +12927 +14516 +12783 +8932 +5149 +2346 +826 +297 +119 +68 +77 +58 +62 +57 +70 +53 +43 +61 +61 +58 +66 +82 +119 +150 +336 +637 +1166 +1783 +2315 +2416 +2087 +1460 +811 +371 +166 +74 +27 +29 +20 +18 +33 +29 +21 +19 +10 +15 +16 +16 +20 +18 +16 +21 +12 +16 +20 +25 +15 +15 +23 +16 +18 +14 +12 +14 +11 +15 +13 +15 +11 +7 +14 +15 +13 +4 +8 +17 +20 +13 +14 +13 +24 +24 +28 +17 +26 +11 +19 +9 +15 +9 +10 +11 +16 +12 +13 +15 +7 +9 +9 +9 +10 +12 +16 +11 +6 +13 +14 +6 +13 +8 +11 +6 +4 +11 +4 +6 +10 +5 +5 +7 +10 +3 +5 +7 +3 +10 +1 +4 +9 +5 +5 +6 +5 +12 +6 +3 +7 +9 +5 +6 +6 +4 +5 +5 +8 +9 +21 +13 +30 +18 +20 +9 +11 +13 +7 +5 +3 +7 +8 +7 +6 +6 +2 +9 +8 +10 +2 +4 +7 +5 +4 +2 +13 +6 +10 +8 +7 +2 +11 +4 +6 +5 +7 +4 +4 +1 +4 +1 +2 +3 +7 +5 +1 +2 +4 +2 +3 +2 +3 +6 +2 +6 +3 +2 +2 +3 +2 +4 +7 +3 +4 +1 +3 +2 +3 +3 +7 +5 +4 +5 +3 +7 +4 +4 +3 +7 +0 +1 +4 +5 +1 +4 +4 +6 +1 +3 +8 +1 +3 +3 +3 +4 +4 +2 +14 +12 +16 +14 +23 +33 +25 +26 +14 +17 +12 +8 +9 +3 +0 +3 +3 +7 +4 +1 +6 +7 +1 +2 +7 +3 +5 +4 +2 +3 +2 +2 +4 +4 +7 +4 +4 +4 +4 +2 +3 +4 +0 +2 +4 +2 +1 +4 +1 +3 +2 +3 +3 +6 +7 +6 +4 +4 +6 +2 +7 +6 +8 +6 +5 +8 +3 +5 +3 +9 +7 +7 +5 +5 +3 +3 +4 +2 +3 +6 +3 +4 +1 +2 +3 +4 +1 +5 +2 +0 +2 +2 +1 +0 +3 +2 +1 +1 +0 +3 +4 +3 +3 +3 +5 +0 +3 +3 +1 +2 +2 +1 +4 +1 +2 +1 +5 +3 +4 +1 +0 +4 +4 +1 +3 +3 +3 +3 +2 +3 +1 +1 +1 +4 +2 +0 +1 +4 +3 +5 +2 +3 +3 +1 +3 +3 +0 +5 +0 +2 +1 +3 +5 +1 +2 +2 +1 +2 +0 +1 +1 +2 +3 +5 +1 +2 +4 +4 +2 +2 +4 +4 +3 +3 +2 +1 +2 +2 +1 +1 +5 +1 +2 +2 +1 +2 +1 +0 +3 +2 +0 +3 +0 +2 +3 +1 +3 +1 +2 +5 +3 +2 +1 +4 +3 +1 +2 +4 +0 +2 +3 +7 +2 +0 +5 +5 +2 +3 +2 +5 +1 +5 +1 +3 +3 +2 +5 +1 +0 +0 +2 +2 +0 +0 +0 +2 +5 +2 +5 +4 +3 +3 +4 +3 +3 +0 +1 +4 +3 +4 +2 +5 +8 +3 +4 +2 +1 +2 +3 +3 +5 +4 +2 +4 +5 +5 +6 +4 +6 +5 +6 +4 +2 +3 +5 +4 +2 +5 +7 +4 +7 +4 +2 +6 +7 +1 +1 +3 +4 +3 +1 +1 +1 +2 +3 +0 +3 +3 +2 +4 +2 +5 +3 +10 +6 +9 +7 +7 +5 +5 +8 +8 +9 +8 +5 +8 +8 +10 +4 +5 +4 +0 +3 +1 +3 +2 +2 +1 +2 +1 +1 +1 +1 +3 +2 +1 +2 +1 +4 +5 +5 +5 +9 +4 +3 +8 +7 +7 +6 +6 +7 +4 +0 +1 +1 +1 +1 +1 +2 +1 +3 +1 +0 +3 +1 +3 +3 +2 +1 +2 +3 +5 +1 +4 +3 +2 +4 +3 +1 +2 +3 +0 +0 +3 +4 +1 +3 +0 +0 +2 +0 +3 +4 +4 +1 +3 +2 +1 +0 +2 +1 +2 +3 +0 +0 +2 +2 +1 +2 +2 +2 +2 +2 +2 +4 +2 +2 +5 +2 +4 +4 +1 +0 +3 +2 +1 +6 +2 +1 +0 +2 +2 +1 +2 +1 +0 +1 +3 +3 +1 +0 +3 +0 +2 +1 +1 +0 +2 +2 +0 +1 +1 +2 +2 +2 +2 +3 +2 +0 +5 +3 +3 +2 +1 +1 +0 +1 +0 +0 +4 +2 +4 +3 +0 +1 +1 +0 +3 +2 +4 +3 +1 +0 +4 +0 +0 +1 +2 +3 +0 +2 +1 +3 +5 +1 +2 +1 +2 +0 +1 +3 +0 +1 +0 +1 +1 +1 +4 +0 +0 +1 +1 +1 +0 +2 +0 +2 +2 +3 +4 +2 +2 +1 +0 +2 +1 +1 +0 +3 +3 +0 +1 +2 +2 +1 +3 +4 +3 +2 +1 +4 +1 +0 +2 +1 +1 +1 +3 +2 +2 +2 +1 +1 +2 +3 +1 +0 +1 +4 +0 +2 +0 +1 +0 +1 +3 +1 +2 +1 +2 +0 +1 +1 +3 +1 +2 +1 +2 +1 +1 +3 +2 +1 +0 +4 +3 +2 +2 +3 +2 +2 +2 +1 +1 +1 +0 +0 +3 +2 +2 +0 +1 +2 +1 +3 +1 +0 +4 +0 +4 +1 +3 +2 +1 +2 +3 +8 +4 +2 +2 +0 +3 +1 +0 +2 +4 +5 +2 +1 +5 +1 +2 +2 +3 +0 +2 +1 +4 +1 +2 +4 +4 +1 +0 +2 +0 +1 +1 +1 +0 +0 +1 +2 +2 +2 +0 +1 +4 +4 +3 +3 +3 +2 +3 +3 +0 +3 +3 +3 +2 +3 +4 +2 +2 +3 +4 +3 +1 +1 +5 +1 +2 +5 +2 +2 +1 +2 +3 +3 +5 +6 +4 +2 +3 +2 +5 +4 +4 +3 +4 +6 +5 +4 +5 +3 +3 +1 +8 +1 +7 +4 +2 +2 +6 +2 +3 +2 +1 +4 +6 +7 +4 +2 +5 +4 +6 +7 +4 +1 +5 +4 +3 +3 +6 +2 +4 +2 +4 +3 +2 +6 +5 +2 +10 +4 +6 +5 +5 +5 +2 +7 +3 +4 +7 +6 +3 +5 +3 +4 +6 +4 +6 +8 +4 +3 +4 +7 +2 +7 +7 +2 +8 +2 +5 +5 +6 +5 +5 +3 +3 +6 +4 +6 +4 +5 +3 +15 +8 +5 +4 +3 +3 +4 +2 +4 +4 +5 +7 +5 +9 +7 +6 +4 +4 +16 +3 +6 +10 +10 +5 +10 +4 +10 +7 +14 +5 +8 +4 +3 +8 +10 +6 +5 +12 +3 +13 +9 +7 +18 +20 +12 +5 +6 +10 +12 +12 +13 +9 +5 +8 +13 +9 +8 +21 +6 +10 +10 +12 +7 +14 +15 +15 +11 +13 +14 +13 +13 +13 +9 +13 +16 +19 +11 +11 +10 +16 +9 +11 +16 +14 +12 +10 +18 +12 +11 +17 +21 +16 +12 +11 +16 +16 +9 +20 +17 +9 +12 +14 +16 +9 +15 +9 +11 +25 +18 +23 +25 +26 +15 +15 +14 +18 +10 +31 +12 +17 +17 +19 +13 +14 +21 +17 +14 +21 +18 +17 +13 +20 +14 +17 +17 +16 +18 +14 +12 +26 +22 +22 +13 +18 +20 +19 +15 +17 +19 +20 +20 +26 +17 +25 +13 +19 +12 +20 +26 +23 +14 +23 +22 +23 +16 +20 +20 +13 +23 +24 +15 +23 +16 +22 +25 +28 +20 +34 +19 +36 +27 +20 +34 +28 +20 +24 +32 +27 +25 +22 +24 +23 +24 +29 +27 +40 +31 +30 +34 +33 +29 +34 +32 +30 +24 +34 +31 +37 +33 +30 +34 +28 +39 +36 +30 +35 +26 +37 +54 +37 +45 +45 +41 +52 +49 +46 +48 +57 +46 +52 +50 +55 +68 +48 +62 +44 +49 +71 +74 +78 +78 +65 +69 +76 +78 +54 +89 +72 +80 +80 +78 +87 +65 +85 +97 +102 +93 +122 +106 +100 +99 +79 +112 +90 +116 +107 +116 +138 +146 +119 +148 +134 +137 +161 +153 +139 +170 +138 +196 +178 +174 +156 +175 +173 +175 +172 +177 +180 +210 +191 +173 +187 +188 +176 +176 +173 +185 +151 +165 +179 +160 +143 +189 +170 +169 +180 +158 +144 +149 +144 +142 +149 +140 +143 +136 +133 +115 +136 +129 +141 +122 +115 +102 +113 +84 +111 +103 +93 +101 +94 +109 +81 +91 +95 +86 +79 +69 +80 +73 +63 +65 +67 +65 +85 +53 +51 +62 +53 +57 +52 +60 +51 +50 +46 +49 +35 +39 +43 +55 +51 +49 +45 +46 +32 +41 +36 +39 +33 +28 +41 +28 +34 +17 +29 +38 +31 +32 +36 +27 +24 +21 +16 +16 +34 +36 +26 +25 +28 +25 +25 +16 +14 +23 +23 +10 +26 +24 +24 +16 +16 +18 +15 +17 +26 +20 +24 +17 +21 +17 +21 +16 +16 +15 +20 +12 +17 +6 +12 +15 +11 +18 +8 +16 +12 +7 +11 +19 +15 +12 +8 +6 +11 +11 +12 +11 +18 +12 +8 +8 +16 +13 +8 +13 +4 +13 +12 +13 +5 +15 +8 +11 +7 +10 +10 +10 +10 +7 +2 +6 +4 +12 +8 +11 +11 +3 +12 +4 +8 +7 +7 +4 +15 +6 +10 +5 +6 +5 +10 +9 +6 +7 +6 +7 +8 +8 +3 +10 +6 +6 +6 +6 +4 +8 +10 +7 +7 +4 +5 +10 +5 +6 +8 +5 +6 +9 +5 +8 +4 +3 +4 +5 +7 +2 +5 +6 +5 +4 +7 +3 +7 +6 +1 +6 +7 +2 +1 +7 +5 +2 +5 +6 +5 +5 +7 +2 +6 +6 +6 +2 +10 +3 +4 +4 +9 +9 +6 +4 +3 +3 +4 +2 +4 +3 +0 +5 +6 +2 +2 +2 +2 +2 +4 +6 +7 +2 +5 +7 +8 +2 +8 +3 +4 +5 +5 +6 +3 +2 +3 +4 +1 +0 +3 +4 +2 +3 +3 +4 +4 +6 +1 +3 +2 +2 +3 +1 +2 +2 +4 +1 +1 +4 +1 +0 +1 +2 +3 +0 +3 +6 +5 +6 +4 +8 +11 +24 +23 +34 +45 +56 +61 +80 +105 +102 +113 +128 +129 +129 +101 +99 +82 +76 +74 +67 +42 +29 +13 +19 +12 +4 +9 +3 +2 +3 +0 +1 +1 +0 +0 +0 +0 +0 +2 +0 +1 +1 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +1 +1 +0 +0 +0 +0 +1 +0 +1 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +1 +1 +0 +1 +1 +0 +1 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +1 +1 +0 +1 +1 +0 +1 +0 +1 +0 +0 +0 +0 +0 +0 +0 +0 +0 +1 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +2 +0 +0 +0 +0 +0 +0 +1 +0 +0 +1 +0 +0 +0 +0 +0 +0 +0 +<> +<> +RESC=?; Reset Configuration +CLCK=80; 20MHz/80MHz +TPEA=9.600; Peaking Time +GAIF=0.9312; Fine Gain +GAIN=21.162; Total Gain (Analog * Fine) +RESL=204; Detector Reset Lockout +TFLA=0.200; Flat Top +TPFA=50; Fast Channel Peaking Time +PURE=OFF; PUR Interval On/Off +RTDE=OFF; RTD On/Off +MCAS=NORM; MCA Source +MCAC=2048; MCA/MCS Channels +SOFF=OFF; Set Spectrum Offset +AINP=POS; Analog Input Pos/Neg +INOF=DEF; Input Offset +GAIA=15; Analog Gain Index +CUSP=0; Non-Trapezoidal Shaping +PDMD=NORM; Peak Detect Mode (Min/Max) +THSL=0.585; Slow Threshold +TLLD=OFF; LLD Threshold +THFA=230.00; Fast Threshold +DACO=SHAPED; DAC Output +DACF=50; DAC Offset +RTDS=0; RTD Sensitivity +RTDT=0.00; RTD Threshold +BLRM=1; BLR Mode +BLRD=3; BLR Down Correction +BLRU=0; BLR Up Correction +AUO1=SCA8; AUX_OUT Selection +PRET=OFF; Preset Time +PRER=3600.000; Preset Real Time +PREC=OFF; Preset Counts +PRCL=1; Preset Counts Low Threshold +PRCH=8191; Preset Counts High Threshold +HVSE=-110; HV Set +TECS=220; TEC Set +PAPZ=OFF; Pole-Zero +PAPS=8.5; Preamp 8.5/5 (N/A) +SCOE=FA; Scope Trigger Edge +SCOT=12; Scope Trigger Position +SCOG=1; Digital Scope Gain +MCSL=1; MCS Low Threshold +MCSH=8191; MCS High Threshold +MCST=0.00; MCS Timebase +AUO2=ICR; AUX_OUT2 Selection +TPMO=OFF; Test Pulser On/Off +GPED=RI; G.P. Counter Edge +GPIN=AUX1; G.P. Counter Input +GPME=ON; G.P. Counter Uses MCA_EN? +GPGA=ON; G.P. Counter Uses GATE? +GPMC=ON; G.P. Counter Cleared With MCA Counters? +MCAE=OFF; MCA/MCS Enable +VOLU=OFF; Speaker On/Off +CON1=DAC; Connector 1 +CON2=AUXOUT2; Connector 2 +<> +<> +Device Type: PX5 +Serial Number: 2264 +Firmware: 6.07 Build: 3 +FPGA: 6.02 +Fast Count: 14530 +Slow Count: 133482 +Accumulation Time: 3597.495000 +Real Time: 3600.000000 +Dead Time: +HV Volt: -110V +TEC Temp: 221K +Board Temp: 37C +<> diff --git a/XRA/Data/PbFilm_CuSource_27Aug.mca b/XRA/Data/PbFilm_CuSource_27Aug.mca new file mode 100755 index 0000000..f3fefc6 --- /dev/null +++ b/XRA/Data/PbFilm_CuSource_27Aug.mca @@ -0,0 +1,2132 @@ +<> +TAG - live_data +DESCRIPTION - +GAIN - 3 +THRESHOLD - 0 +LIVE_MODE - 0 +PRESET_TIME - 0 +LIVE_TIME - 3597.487000 +REAL_TIME - 3600.000000 +START_TIME - 08/27/2025 15:49:43 +SERIAL_NUMBER - 0 +<> +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +71 +73 +89 +72 +79 +77 +83 +81 +74 +71 +68 +80 +69 +71 +62 +72 +64 +76 +61 +64 +69 +69 +66 +53 +70 +75 +75 +70 +61 +57 +64 +86 +59 +76 +66 +68 +69 +69 +59 +70 +59 +60 +47 +66 +66 +54 +59 +55 +70 +56 +63 +64 +62 +60 +75 +65 +60 +56 +68 +60 +67 +57 +54 +67 +62 +60 +74 +67 +43 +52 +60 +67 +64 +62 +70 +49 +47 +52 +61 +58 +83 +54 +58 +59 +46 +47 +40 +58 +50 +51 +54 +46 +55 +52 +47 +37 +55 +63 +44 +49 +52 +51 +50 +58 +53 +42 +53 +48 +53 +45 +44 +64 +41 +51 +52 +42 +34 +39 +50 +50 +54 +47 +41 +55 +45 +58 +40 +59 +48 +51 +46 +39 +48 +43 +47 +45 +55 +64 +55 +37 +51 +49 +44 +56 +59 +55 +49 +48 +34 +57 +58 +50 +47 +53 +48 +53 +40 +41 +47 +49 +61 +72 +56 +67 +61 +56 +45 +54 +46 +59 +56 +55 +68 +51 +48 +35 +48 +70 +54 +52 +50 +54 +58 +41 +49 +51 +56 +44 +52 +51 +71 +78 +98 +103 +99 +110 +91 +78 +48 +55 +55 +56 +48 +46 +45 +52 +47 +55 +66 +47 +65 +50 +49 +59 +69 +57 +51 +68 +55 +61 +53 +58 +56 +47 +64 +52 +66 +68 +88 +82 +75 +71 +59 +64 +64 +55 +55 +67 +64 +99 +110 +237 +631 +1497 +3219 +5525 +7774 +8717 +7597 +5375 +2967 +1443 +531 +214 +74 +60 +56 +62 +48 +36 +51 +34 +53 +47 +56 +51 +55 +64 +74 +146 +224 +412 +806 +1224 +1628 +1626 +1417 +895 +542 +265 +139 +43 +38 +24 +21 +23 +21 +21 +15 +16 +13 +13 +14 +18 +29 +24 +21 +11 +18 +25 +16 +17 +16 +18 +18 +15 +11 +18 +13 +13 +14 +9 +10 +9 +19 +11 +11 +13 +9 +18 +16 +15 +20 +24 +26 +42 +54 +47 +53 +52 +51 +35 +19 +17 +12 +13 +15 +21 +16 +13 +11 +5 +16 +5 +6 +15 +8 +9 +5 +11 +8 +7 +10 +7 +11 +3 +9 +5 +9 +5 +8 +11 +9 +5 +6 +5 +6 +6 +7 +3 +6 +6 +3 +3 +2 +9 +2 +3 +10 +9 +4 +4 +3 +8 +14 +9 +8 +7 +7 +15 +19 +20 +33 +43 +37 +41 +34 +30 +26 +13 +15 +10 +5 +9 +4 +7 +3 +7 +7 +5 +3 +4 +3 +5 +5 +6 +9 +6 +7 +5 +5 +9 +3 +4 +8 +3 +1 +2 +3 +8 +2 +1 +2 +7 +4 +4 +2 +2 +2 +2 +4 +5 +2 +2 +2 +2 +3 +2 +1 +4 +3 +4 +7 +5 +5 +6 +3 +3 +2 +3 +4 +6 +12 +8 +8 +10 +6 +6 +1 +10 +6 +0 +4 +4 +1 +5 +3 +11 +11 +2 +3 +6 +2 +6 +4 +1 +4 +7 +1 +5 +8 +13 +12 +13 +25 +28 +18 +26 +14 +16 +9 +4 +5 +3 +3 +4 +3 +2 +2 +3 +3 +3 +5 +0 +3 +3 +4 +2 +4 +2 +2 +2 +3 +1 +2 +3 +1 +1 +2 +1 +3 +5 +1 +2 +4 +0 +2 +1 +3 +3 +4 +3 +0 +3 +3 +2 +1 +6 +6 +4 +4 +3 +3 +5 +5 +4 +4 +8 +2 +2 +8 +2 +5 +1 +5 +3 +2 +3 +4 +2 +3 +4 +1 +3 +3 +1 +4 +3 +3 +3 +0 +2 +3 +3 +2 +2 +4 +5 +1 +1 +2 +1 +3 +3 +2 +1 +1 +1 +4 +1 +2 +2 +3 +2 +2 +5 +4 +1 +2 +0 +4 +0 +6 +3 +3 +1 +1 +3 +1 +4 +2 +4 +5 +5 +1 +0 +6 +1 +3 +0 +2 +3 +4 +1 +4 +1 +5 +2 +4 +1 +3 +2 +2 +1 +2 +2 +2 +2 +1 +3 +6 +0 +1 +3 +2 +4 +4 +1 +3 +1 +1 +2 +1 +2 +5 +3 +2 +1 +1 +0 +0 +2 +2 +4 +2 +2 +3 +4 +2 +5 +3 +2 +4 +2 +2 +1 +1 +3 +0 +3 +1 +4 +0 +1 +3 +3 +5 +2 +3 +1 +6 +2 +5 +2 +6 +5 +1 +1 +2 +1 +1 +1 +3 +5 +3 +3 +4 +4 +2 +2 +4 +0 +1 +3 +4 +1 +3 +3 +4 +2 +2 +3 +3 +5 +2 +1 +3 +2 +2 +3 +5 +0 +2 +3 +2 +2 +3 +4 +1 +3 +1 +3 +4 +2 +2 +2 +4 +3 +2 +8 +5 +5 +3 +7 +3 +6 +6 +1 +4 +4 +5 +2 +4 +1 +3 +5 +3 +2 +6 +0 +2 +1 +3 +4 +5 +3 +3 +5 +2 +5 +4 +3 +2 +7 +7 +6 +4 +4 +4 +9 +16 +11 +15 +14 +4 +4 +6 +4 +5 +3 +3 +2 +4 +1 +5 +0 +3 +1 +1 +3 +1 +0 +2 +3 +1 +1 +2 +1 +0 +2 +3 +5 +8 +5 +3 +5 +4 +6 +4 +11 +6 +4 +2 +4 +4 +4 +3 +1 +0 +1 +2 +1 +0 +1 +3 +2 +2 +2 +2 +3 +4 +2 +3 +0 +2 +1 +3 +4 +3 +1 +1 +1 +3 +3 +3 +3 +4 +1 +3 +2 +1 +1 +2 +1 +1 +1 +1 +0 +2 +1 +2 +2 +4 +0 +1 +1 +0 +5 +5 +2 +3 +2 +0 +3 +3 +2 +8 +0 +4 +1 +3 +3 +1 +5 +5 +3 +1 +2 +7 +2 +1 +0 +0 +0 +1 +0 +2 +4 +1 +2 +1 +1 +3 +2 +3 +2 +4 +1 +4 +4 +2 +6 +1 +4 +3 +1 +1 +1 +1 +2 +5 +0 +1 +1 +2 +1 +4 +2 +4 +2 +2 +8 +5 +3 +4 +2 +2 +2 +1 +1 +0 +2 +2 +2 +0 +3 +3 +0 +1 +2 +0 +2 +3 +0 +2 +1 +1 +1 +2 +2 +2 +0 +2 +3 +3 +3 +1 +2 +5 +0 +2 +3 +0 +1 +2 +0 +3 +1 +1 +1 +1 +2 +2 +3 +1 +2 +5 +3 +3 +3 +2 +1 +2 +1 +1 +2 +1 +1 +2 +2 +2 +0 +3 +2 +2 +2 +3 +4 +2 +3 +2 +2 +2 +3 +1 +1 +1 +1 +0 +0 +2 +2 +3 +2 +2 +4 +2 +3 +3 +1 +3 +1 +6 +3 +2 +1 +1 +2 +0 +1 +1 +2 +2 +3 +0 +2 +0 +0 +1 +1 +1 +0 +1 +2 +2 +3 +1 +2 +3 +4 +3 +3 +2 +0 +2 +1 +2 +2 +1 +2 +2 +0 +3 +3 +4 +2 +2 +3 +3 +5 +2 +6 +5 +7 +1 +0 +5 +0 +4 +1 +2 +4 +2 +0 +0 +2 +1 +4 +1 +4 +3 +3 +2 +2 +0 +0 +1 +4 +3 +6 +2 +1 +5 +1 +1 +3 +1 +5 +4 +2 +1 +3 +1 +3 +3 +2 +4 +4 +4 +2 +2 +3 +3 +1 +2 +5 +3 +2 +3 +0 +5 +3 +4 +4 +4 +5 +5 +2 +3 +1 +0 +3 +5 +4 +3 +2 +2 +5 +2 +7 +0 +4 +1 +1 +3 +4 +5 +4 +1 +2 +3 +5 +5 +3 +0 +5 +3 +3 +6 +10 +4 +2 +5 +4 +6 +3 +2 +4 +5 +0 +5 +6 +5 +4 +3 +7 +4 +4 +5 +5 +4 +4 +2 +3 +4 +1 +3 +4 +1 +5 +2 +2 +5 +5 +3 +5 +6 +6 +7 +7 +9 +3 +6 +4 +3 +7 +4 +8 +4 +3 +4 +6 +2 +5 +6 +6 +3 +3 +1 +8 +4 +3 +3 +4 +8 +3 +8 +6 +3 +5 +7 +8 +9 +4 +6 +7 +7 +5 +7 +7 +6 +6 +5 +4 +12 +8 +4 +5 +10 +8 +7 +7 +3 +11 +8 +12 +5 +11 +7 +8 +6 +10 +10 +7 +8 +10 +11 +11 +12 +7 +8 +8 +9 +9 +12 +11 +12 +10 +11 +5 +12 +11 +11 +14 +9 +9 +12 +13 +8 +11 +15 +12 +10 +7 +11 +11 +8 +9 +16 +9 +8 +12 +14 +7 +8 +17 +17 +12 +10 +15 +12 +13 +10 +18 +14 +9 +11 +19 +19 +10 +12 +11 +15 +14 +19 +8 +16 +18 +14 +18 +19 +11 +9 +14 +12 +15 +13 +11 +17 +17 +11 +11 +17 +13 +10 +14 +14 +18 +20 +19 +14 +24 +12 +14 +18 +15 +19 +16 +21 +13 +16 +21 +11 +14 +15 +23 +15 +19 +24 +17 +18 +19 +18 +20 +20 +31 +11 +25 +25 +21 +19 +27 +17 +15 +27 +16 +25 +22 +29 +24 +25 +26 +19 +23 +23 +22 +24 +18 +20 +24 +20 +26 +25 +17 +22 +22 +23 +24 +20 +33 +28 +20 +24 +30 +23 +31 +21 +18 +26 +26 +31 +39 +26 +36 +30 +25 +39 +44 +30 +31 +29 +45 +44 +40 +45 +40 +29 +39 +40 +34 +42 +36 +45 +35 +34 +41 +43 +44 +44 +49 +52 +50 +41 +42 +45 +43 +60 +54 +60 +58 +62 +44 +58 +57 +52 +56 +59 +60 +65 +72 +83 +65 +67 +69 +68 +71 +88 +91 +82 +79 +105 +91 +111 +98 +86 +117 +100 +118 +104 +114 +87 +120 +114 +145 +130 +150 +169 +130 +126 +153 +143 +158 +166 +173 +161 +189 +183 +182 +179 +153 +161 +167 +178 +208 +203 +165 +195 +174 +172 +186 +212 +182 +186 +174 +193 +160 +181 +152 +165 +156 +191 +151 +162 +145 +151 +131 +124 +160 +152 +146 +117 +144 +140 +134 +130 +126 +109 +122 +108 +121 +112 +98 +105 +86 +122 +95 +75 +90 +82 +72 +69 +89 +77 +84 +82 +62 +54 +73 +53 +49 +64 +63 +47 +43 +63 +65 +59 +51 +72 +46 +55 +49 +39 +44 +49 +41 +35 +38 +34 +36 +27 +41 +38 +26 +41 +35 +35 +38 +44 +29 +33 +33 +24 +33 +28 +23 +27 +27 +23 +27 +24 +21 +22 +21 +23 +16 +23 +9 +16 +16 +18 +22 +20 +13 +21 +18 +22 +20 +19 +15 +17 +17 +18 +16 +16 +12 +11 +9 +19 +13 +13 +16 +16 +20 +17 +15 +11 +13 +11 +13 +16 +8 +12 +15 +8 +10 +12 +14 +8 +13 +12 +14 +11 +11 +9 +15 +11 +7 +13 +5 +6 +10 +9 +11 +13 +16 +3 +11 +14 +6 +7 +10 +8 +5 +13 +3 +7 +4 +4 +15 +2 +7 +10 +5 +5 +9 +11 +8 +6 +4 +5 +5 +9 +9 +9 +10 +7 +5 +10 +8 +7 +4 +9 +5 +6 +9 +9 +9 +7 +4 +9 +9 +6 +8 +7 +8 +8 +7 +6 +8 +4 +6 +5 +8 +8 +3 +9 +8 +5 +12 +7 +5 +5 +7 +6 +3 +8 +2 +5 +7 +11 +10 +12 +5 +4 +8 +6 +3 +6 +2 +5 +5 +7 +1 +5 +1 +4 +3 +6 +1 +0 +8 +8 +4 +8 +5 +7 +2 +0 +6 +4 +6 +5 +7 +4 +3 +4 +3 +3 +5 +1 +5 +3 +4 +4 +4 +7 +3 +5 +3 +4 +3 +5 +3 +4 +1 +2 +3 +1 +4 +4 +1 +4 +5 +1 +4 +6 +3 +1 +5 +1 +4 +2 +3 +7 +5 +1 +2 +4 +3 +0 +6 +3 +4 +6 +0 +6 +9 +14 +6 +22 +15 +21 +45 +53 +55 +79 +75 +87 +130 +94 +107 +107 +112 +107 +88 +82 +56 +62 +42 +38 +31 +14 +16 +7 +5 +4 +2 +4 +1 +1 +0 +0 +3 +2 +0 +0 +1 +0 +0 +0 +1 +1 +0 +0 +0 +1 +1 +0 +0 +1 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +1 +0 +0 +1 +1 +0 +0 +1 +1 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +1 +0 +0 +1 +0 +0 +0 +0 +2 +0 +0 +0 +1 +0 +0 +1 +0 +0 +1 +0 +1 +0 +1 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +2 +0 +0 +0 +1 +0 +1 +0 +0 +1 +0 +0 +0 +1 +0 +0 +0 +0 +1 +0 +1 +0 +0 +0 +0 +<> +<> +RESC=?; Reset Configuration +CLCK=80; 20MHz/80MHz +TPEA=9.600; Peaking Time +GAIF=0.9312; Fine Gain +GAIN=21.162; Total Gain (Analog * Fine) +RESL=204; Detector Reset Lockout +TFLA=0.200; Flat Top +TPFA=50; Fast Channel Peaking Time +PURE=OFF; PUR Interval On/Off +RTDE=OFF; RTD On/Off +MCAS=NORM; MCA Source +MCAC=2048; MCA/MCS Channels +SOFF=OFF; Set Spectrum Offset +AINP=POS; Analog Input Pos/Neg +INOF=DEF; Input Offset +GAIA=15; Analog Gain Index +CUSP=0; Non-Trapezoidal Shaping +PDMD=NORM; Peak Detect Mode (Min/Max) +THSL=0.585; Slow Threshold +TLLD=OFF; LLD Threshold +THFA=230.00; Fast Threshold +DACO=SHAPED; DAC Output +DACF=50; DAC Offset +RTDS=0; RTD Sensitivity +RTDT=0.00; RTD Threshold +BLRM=1; BLR Mode +BLRD=3; BLR Down Correction +BLRU=0; BLR Up Correction +AUO1=SCA8; AUX_OUT Selection +PRET=OFF; Preset Time +PRER=3600.000; Preset Real Time +PREC=OFF; Preset Counts +PRCL=1; Preset Counts Low Threshold +PRCH=8191; Preset Counts High Threshold +HVSE=-110; HV Set +TECS=220; TEC Set +PAPZ=OFF; Pole-Zero +PAPS=8.5; Preamp 8.5/5 (N/A) +SCOE=FA; Scope Trigger Edge +SCOT=12; Scope Trigger Position +SCOG=1; Digital Scope Gain +MCSL=1; MCS Low Threshold +MCSH=8191; MCS High Threshold +MCST=0.00; MCS Timebase +AUO2=ICR; AUX_OUT2 Selection +TPMO=OFF; Test Pulser On/Off +GPED=RI; G.P. Counter Edge +GPIN=AUX1; G.P. Counter Input +GPME=ON; G.P. Counter Uses MCA_EN? +GPGA=ON; G.P. Counter Uses GATE? +GPMC=ON; G.P. Counter Cleared With MCA Counters? +MCAE=OFF; MCA/MCS Enable +VOLU=OFF; Speaker On/Off +CON1=DAC; Connector 1 +CON2=AUXOUT2; Connector 2 +<> +<> +Device Type: PX5 +Serial Number: 2264 +Firmware: 6.07 Build: 3 +FPGA: 6.02 +Fast Count: 14875 +Slow Count: 97586 +Accumulation Time: 3597.487000 +Real Time: 3600.000000 +Dead Time: +HV Volt: -110V +TEC Temp: 221K +Board Temp: 37C +<> diff --git a/XRA/Data/PbFilm_Ra_27Aug.mca b/XRA/Data/PbFilm_Ra_27Aug.mca new file mode 100755 index 0000000..896fa74 --- /dev/null +++ b/XRA/Data/PbFilm_Ra_27Aug.mca @@ -0,0 +1,1037 @@ +<> +TAG - live_data +DESCRIPTION - +GAIN - 2 +THRESHOLD - 50 +LIVE_MODE - 0 +PRESET_TIME - 0 +LIVE_TIME - 6879.280000 +REAL_TIME - 6879.560000 +START_TIME - 08/27/2025 15:54:30 +SERIAL_NUMBER - 4114 +<> +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +3 +13 +18 +13 +11 +17 +12 +13 +13 +7 +5 +5 +5 +8 +5 +3 +1 +4 +2 +6 +5 +6 +5 +3 +6 +1 +5 +5 +3 +7 +4 +5 +0 +4 +3 +5 +7 +6 +3 +1 +3 +2 +1 +2 +2 +4 +5 +4 +3 +2 +3 +5 +4 +5 +3 +3 +6 +2 +1 +2 +1 +1 +2 +4 +5 +5 +3 +2 +1 +4 +1 +3 +2 +3 +1 +3 +1 +5 +1 +2 +3 +4 +6 +3 +2 +4 +4 +4 +2 +4 +2 +3 +3 +3 +6 +4 +3 +4 +1 +2 +6 +5 +3 +3 +1 +5 +10 +4 +2 +2 +5 +3 +2 +3 +4 +6 +3 +4 +4 +6 +3 +4 +2 +8 +2 +8 +5 +2 +5 +2 +2 +4 +3 +1 +1 +0 +2 +1 +2 +2 +6 +4 +9 +5 +4 +4 +2 +3 +5 +5 +6 +3 +4 +4 +4 +3 +7 +7 +3 +5 +9 +7 +2 +4 +7 +3 +7 +8 +6 +5 +4 +3 +4 +6 +10 +10 +9 +5 +6 +2 +3 +3 +10 +2 +6 +7 +6 +3 +3 +4 +5 +10 +5 +6 +3 +8 +3 +4 +9 +11 +4 +8 +9 +3 +5 +6 +5 +6 +11 +4 +6 +10 +9 +10 +7 +9 +4 +7 +7 +7 +10 +6 +7 +7 +9 +4 +5 +7 +4 +8 +4 +9 +6 +7 +10 +5 +6 +6 +9 +5 +4 +6 +3 +7 +12 +7 +9 +4 +4 +7 +7 +2 +8 +9 +8 +7 +11 +4 +6 +13 +9 +5 +6 +7 +3 +9 +4 +5 +8 +7 +9 +4 +6 +10 +7 +3 +13 +7 +5 +9 +9 +6 +5 +9 +11 +7 +4 +4 +7 +9 +11 +12 +8 +10 +8 +4 +10 +6 +8 +7 +7 +7 +7 +5 +7 +12 +10 +7 +7 +8 +6 +7 +10 +10 +6 +19 +10 +16 +12 +9 +3 +9 +13 +12 +7 +13 +9 +12 +10 +11 +11 +5 +11 +12 +13 +6 +9 +14 +6 +6 +11 +12 +11 +5 +11 +10 +5 +7 +14 +16 +9 +10 +14 +17 +18 +12 +10 +21 +12 +14 +23 +20 +13 +18 +25 +22 +15 +26 +25 +28 +29 +36 +27 +33 +36 +33 +40 +36 +52 +50 +63 +45 +58 +71 +68 +69 +72 +85 +80 +117 +119 +109 +125 +143 +146 +179 +184 +167 +208 +210 +243 +251 +255 +307 +274 +297 +289 +309 +343 +351 +374 +370 +430 +464 +506 +560 +585 +667 +710 +753 +839 +862 +938 +985 +987 +897 +778 +752 +623 +508 +377 +295 +231 +171 +112 +89 +79 +54 +54 +43 +40 +37 +23 +30 +31 +21 +29 +25 +35 +42 +51 +40 +39 +41 +31 +49 +46 +46 +67 +69 +77 +84 +78 +83 +95 +100 +97 +96 +110 +142 +142 +142 +174 +181 +201 +237 +265 +265 +272 +291 +318 +348 +363 +357 +382 +380 +365 +368 +320 +294 +264 +224 +235 +238 +221 +207 +225 +243 +250 +285 +303 +322 +380 +368 +401 +428 +402 +442 +369 +337 +294 +256 +201 +153 +117 +87 +53 +54 +37 +21 +19 +14 +13 +16 +19 +15 +26 +12 +18 +21 +22 +29 +35 +30 +26 +41 +30 +47 +48 +60 +55 +62 +71 +73 +87 +80 +89 +92 +101 +113 +118 +127 +165 +171 +198 +192 +214 +277 +275 +272 +354 +412 +365 +430 +447 +469 +398 +407 +373 +349 +285 +199 +168 +111 +87 +49 +43 +23 +15 +15 +15 +9 +10 +6 +7 +7 +4 +5 +6 +5 +3 +1 +3 +2 +2 +5 +2 +4 +3 +3 +1 +3 +2 +0 +3 +0 +1 +5 +4 +0 +4 +7 +2 +2 +4 +8 +7 +9 +10 +17 +17 +21 +14 +6 +4 +1 +1 +5 +4 +4 +2 +1 +0 +0 +2 +3 +2 +3 +6 +1 +1 +1 +2 +3 +3 +1 +2 +2 +3 +3 +4 +0 +3 +2 +6 +4 +2 +2 +3 +5 +4 +4 +3 +4 +6 +2 +2 +2 +4 +3 +5 +7 +5 +3 +4 +5 +4 +6 +5 +2 +7 +5 +5 +5 +4 +7 +2 +5 +6 +2 +5 +6 +3 +6 +8 +5 +8 +2 +6 +1 +6 +5 +6 +10 +1 +3 +1 +7 +4 +3 +4 +3 +2 +3 +5 +7 +11 +4 +11 +3 +3 +9 +13 +12 +13 +16 +29 +11 +23 +22 +21 +21 +35 +34 +45 +45 +38 +53 +51 +71 +62 +73 +83 +80 +107 +122 +106 +139 +145 +169 +196 +195 +214 +244 +265 +306 +346 +400 +401 +431 +433 +428 +359 +374 +276 +225 +158 +115 +89 +49 +33 +39 +21 +21 +6 +6 +3 +3 +6 +2 +3 +2 +6 +2 +6 +4 +3 +6 +8 +5 +8 +8 +5 +7 +10 +12 +5 +14 +15 +11 +17 +31 +39 +55 +84 +126 +182 +250 +275 +272 +165 +61 +28 +21 +15 +5 +1 +1 +0 +1 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +1 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +1 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +1 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +1 +0 +0 +0 +0 +0 +0 +0 +1 +0 +1 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +<> diff --git a/XRA/Data/Pbfilm_U232_26Aug.mca b/XRA/Data/Pbfilm_U232_26Aug.mca new file mode 100755 index 0000000..d1c049f --- /dev/null +++ b/XRA/Data/Pbfilm_U232_26Aug.mca @@ -0,0 +1,1037 @@ +<> +TAG - live_data +DESCRIPTION - +GAIN - 2 +THRESHOLD - 50 +LIVE_MODE - 0 +PRESET_TIME - 0 +LIVE_TIME - 3283.320000 +REAL_TIME - 3289.546667 +START_TIME - 08/26/2025 15:27:48 +SERIAL_NUMBER - 4114 +<> +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +47 +288 +259 +224 +246 +214 +189 +155 +162 +131 +120 +127 +108 +121 +97 +106 +86 +88 +78 +84 +68 +63 +69 +78 +77 +65 +72 +62 +58 +68 +67 +62 +71 +48 +72 +67 +55 +45 +48 +62 +56 +50 +49 +57 +62 +70 +65 +47 +59 +44 +46 +53 +57 +59 +50 +60 +63 +63 +58 +64 +59 +62 +69 +56 +58 +62 +58 +65 +68 +65 +67 +63 +60 +57 +62 +50 +69 +56 +51 +62 +60 +56 +68 +61 +59 +60 +59 +69 +62 +66 +69 +74 +64 +67 +54 +68 +71 +74 +63 +52 +65 +72 +60 +64 +69 +74 +70 +66 +58 +78 +63 +62 +74 +64 +68 +82 +73 +80 +66 +76 +74 +77 +81 +82 +74 +71 +71 +80 +77 +71 +74 +72 +75 +68 +89 +74 +76 +83 +70 +84 +61 +79 +90 +79 +78 +86 +69 +89 +78 +74 +81 +87 +98 +81 +90 +83 +125 +100 +107 +123 +118 +117 +117 +109 +131 +146 +110 +144 +134 +109 +115 +134 +107 +130 +108 +108 +110 +119 +117 +125 +117 +122 +118 +120 +116 +111 +104 +125 +116 +100 +91 +115 +108 +90 +127 +104 +101 +122 +121 +125 +103 +116 +118 +111 +118 +107 +126 +126 +140 +125 +139 +119 +129 +124 +113 +137 +133 +98 +112 +122 +135 +118 +120 +110 +136 +139 +115 +122 +130 +116 +139 +160 +133 +134 +131 +122 +135 +107 +135 +111 +144 +123 +120 +129 +123 +132 +123 +123 +121 +120 +113 +138 +127 +111 +119 +147 +115 +118 +129 +143 +105 +114 +129 +139 +123 +138 +145 +114 +146 +128 +139 +130 +120 +146 +131 +146 +123 +121 +126 +135 +122 +136 +124 +140 +141 +127 +104 +120 +131 +109 +108 +129 +137 +112 +127 +125 +130 +156 +138 +124 +149 +127 +130 +161 +126 +122 +149 +141 +138 +117 +131 +135 +142 +101 +132 +143 +138 +128 +129 +171 +142 +157 +147 +166 +147 +162 +141 +153 +172 +163 +148 +142 +138 +149 +152 +135 +146 +149 +146 +162 +159 +135 +146 +139 +147 +156 +127 +154 +154 +143 +153 +149 +149 +159 +162 +168 +146 +149 +153 +169 +166 +171 +177 +155 +152 +175 +170 +185 +156 +168 +162 +184 +166 +177 +176 +173 +177 +171 +197 +186 +175 +181 +175 +178 +200 +189 +202 +190 +196 +169 +180 +198 +194 +202 +199 +206 +204 +227 +212 +219 +201 +217 +226 +227 +240 +225 +209 +237 +248 +237 +248 +261 +256 +277 +256 +273 +283 +273 +294 +315 +302 +294 +341 +342 +322 +333 +376 +366 +414 +409 +419 +444 +482 +507 +577 +593 +644 +661 +750 +787 +797 +876 +916 +954 +1110 +1163 +1301 +1334 +1449 +1487 +1704 +1845 +1966 +2107 +2251 +2416 +2637 +2838 +2965 +3302 +3618 +4020 +4161 +4666 +5199 +5679 +6418 +6802 +7572 +8270 +9018 +9559 +10328 +10969 +11543 +12334 +12565 +12792 +13149 +12953 +13073 +13135 +12596 +12339 +11841 +11685 +11131 +10728 +10617 +10422 +10036 +9511 +8903 +8386 +7713 +7026 +6269 +5487 +4811 +4267 +3889 +3411 +3138 +2973 +2803 +2724 +2815 +2986 +3178 +3443 +3792 +4144 +4779 +5302 +5841 +6679 +7270 +8016 +8738 +9237 +9458 +9603 +9323 +9121 +8565 +7797 +6837 +5956 +5067 +4182 +3465 +2687 +2206 +1714 +1497 +1237 +1073 +888 +831 +742 +724 +692 +740 +714 +786 +832 +807 +851 +923 +1021 +1107 +1198 +1316 +1509 +1633 +1840 +1986 +2363 +2508 +2907 +3165 +3388 +3677 +3906 +4257 +4116 +4129 +4157 +4055 +3921 +3712 +3609 +3341 +3212 +3041 +3004 +2890 +2956 +3036 +3229 +3525 +3949 +4337 +4918 +5642 +6249 +7116 +7777 +8701 +9309 +9808 +10284 +10162 +10114 +9420 +8774 +7906 +6828 +5619 +4741 +3702 +3066 +2225 +1857 +1398 +1092 +863 +681 +593 +520 +477 +454 +448 +436 +439 +450 +518 +520 +535 +615 +690 +791 +810 +936 +970 +1012 +1166 +1231 +1429 +1526 +1585 +1777 +1930 +2143 +2367 +2524 +2813 +3199 +3528 +4087 +4708 +5419 +6139 +6827 +7846 +8698 +9352 +9852 +10442 +10409 +10288 +9789 +9080 +7886 +6899 +5768 +4626 +3764 +2926 +2181 +1617 +1278 +908 +711 +518 +428 +302 +256 +182 +136 +105 +113 +82 +73 +62 +46 +33 +32 +29 +40 +30 +31 +31 +21 +37 +30 +24 +34 +27 +30 +26 +25 +21 +30 +24 +31 +19 +25 +19 +26 +23 +30 +18 +21 +20 +27 +21 +26 +30 +21 +19 +25 +25 +27 +18 +15 +23 +20 +20 +21 +29 +29 +25 +37 +24 +32 +21 +32 +26 +26 +30 +26 +21 +34 +20 +29 +29 +27 +26 +29 +18 +27 +28 +25 +30 +28 +27 +29 +28 +35 +30 +29 +25 +30 +32 +28 +23 +25 +25 +33 +22 +22 +27 +41 +24 +28 +22 +36 +26 +25 +25 +17 +29 +26 +27 +21 +26 +25 +22 +21 +37 +27 +21 +30 +29 +24 +22 +37 +32 +31 +36 +29 +29 +29 +32 +32 +42 +30 +31 +25 +39 +33 +20 +27 +38 +33 +25 +22 +31 +38 +40 +50 +42 +41 +42 +35 +47 +36 +43 +51 +49 +52 +53 +58 +48 +54 +44 +54 +52 +40 +66 +59 +60 +52 +58 +55 +59 +93 +76 +87 +93 +104 +121 +113 +131 +153 +160 +177 +191 +209 +246 +289 +298 +321 +354 +417 +488 +509 +636 +708 +769 +838 +859 +967 +1128 +1247 +1372 +1584 +1721 +1982 +2126 +2396 +2904 +3369 +3911 +4636 +5104 +5881 +6464 +6976 +7168 +7323 +7202 +6597 +5831 +5113 +4310 +3511 +2788 +2077 +1608 +1181 +989 +709 +557 +423 +295 +256 +189 +163 +132 +108 +88 +75 +61 +48 +44 +50 +33 +33 +23 +20 +27 +18 +10 +15 +11 +11 +8 +11 +10 +4 +11 +7 +6 +3 +4 +3 +2 +3 +4 +2 +3 +4 +2 +2 +0 +1 +1 +1 +0 +0 +3 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +<> diff --git a/XRA/additional_draft b/XRA/additional_draft new file mode 100644 index 0000000..332a580 --- /dev/null +++ b/XRA/additional_draft @@ -0,0 +1,32 @@ +Welcome to ARC-TF! + +Workflow #Aysu made changes + +The program supports four different types of tabs, each with a distinct purpose. The Final Results Tab is a special tab that consolidates and displays all results generated within the Calibration Analysis and Material Analysis tabs. This tab cannot be created or deleted manually by the user, as it is automatically maintained by the program. Its primary function is to provide an overview of the outcomes produced in the other analysis tabs. +The Calibration Analysis Tabs are dedicated to performing calibration-related computations. Users are free to create and delete these tabs depending on their needs. Each calibration tab offers a set of options and tools specific to calibration workflows. +Similarly, the Material Analysis Tabs are designed for performing analyses on different film materials. As with the calibration tabs, users can freely create or delete these tabs as required. The options available within a material analysis tab differ from those found in calibration tabs. +The final type, the XRA Analysis Tab, is a recently added feature. Unlike the other three tab types, the XRA Analysis Tab is fully independent and does not interact with the Final Results Tab, Calibration Analysis Tabs, or Material Analysis Tabs. It provides its own dedicated functionality for XRA-specific analysis. + + + + +XRA Tab: #Aysu added + +The XRA Analysis Tab is independent of all other tab types and is specifically designed for film thickness determination. When using this tab, the first required step is to plot the Source Data, as the program will not allow the user to upload or plot any other data beforehand. Once the Source Data has been provided, the user can then upload and plot the Source + Film Data, as well as optionally include Background Data. From the resulting plots, emission lines can be identified and subsequently used during the film thickness determination process. Unlike other analysis techniques within the program, the XRA Analysis Tab supports only a single method for thickness determination: the ROI Select Algorithm. + + + + +ROI Select Algorithm: #Aysu added + +The ROI (Region of Interest) Selection Algorithm is applied across three different tabs of the application: Calibration, Material, and XRA. Each of these tabs makes use of the algorithm in slightly different ways, depending on the type of analysis being performed. +In the Calibration and Material tabs, users can select up to six regions of interest. For each selected ROI, the algorithm calculates three key parameters: the centroid, the sigma, and the error associated with the peak. These values are determined using traditional methods, which directly analyze the data within the chosen regions. As a result, the user can extract up to six sets of centroid, sigma, and error values corresponding to the selected peaks. +The XRA tab, by contrast, allows for the selection of only one ROI, reflecting the different requirements of its functionality. In this tab, a Gaussian fit is applied to the selected emission line. From this fit, the algorithm derives the centroid, sigma, and the area under the curve. The fitting process is carried out for Source, Source + Film, and if available for Background data. The calculated area represents the integrated area under the Gaussian curve and corresponds to the intensity of the selected emission line. + + + +The Thickness Calculation Algorithm for XRA: #Aysu added +After the necessary parameters are defined for the XRA tab, the user has two options for determining the film thickness: Default and User. +When the Default option is selected, the user must specify the film material and the source that were used during the experiment. These values are then retrieved from the database, and the program automatically applies the corresponding parameters for the thickness calculation. +When the User option is selected, the user directly needs to enter the linear attenuation coefficient of the material. This option is particularly useful when the film material used in the experiment is not included in the default database. +In both cases, once the Run button is clicked, the interface calculates and displays the film thickness together with the associated uncertainty. diff --git a/git b/git deleted file mode 100644 index e69de29..0000000 From b7c682e70da21fe33bb50260bbabd386b73e2089 Mon Sep 17 00:00:00 2001 From: aysuismailova Date: Mon, 1 Sep 2025 16:01:12 +0100 Subject: [PATCH 44/44] Deleted unnecessary files --- XRA/Data/Ag_Calibration.mca | 2132 ------------------ XRA/Data/Al_foil_CuSource_01Aug.mca | 2132 ------------------ XRA/Data/AuFilm_CuSource_22Aug.mca | 2132 ------------------ XRA/Data/AuFilm_U232_22Aug.mca | 1037 --------- XRA/Data/Ba_Calibration.mca | 2132 ------------------ XRA/Data/Be_Calibration.mca | 2132 ------------------ XRA/Data/Calib_Ra_27Aug.mca | 1037 --------- XRA/Data/Calib_U232_22Aug.mca | 1037 --------- XRA/Data/Calib_U232_26Aug.mca | 1037 --------- XRA/Data/Combined_bkg_Internship.txt | 2057 ----------------- XRA/Data/CuSource_01Aug.mca | 2132 ------------------ XRA/Data/CuSource_22Aug.mca | 2132 ------------------ XRA/Data/CuSource_27Aug.mca | 2132 ------------------ XRA/Data/Film_Sn_2h_17Jul_CuSource.mca | 2132 ------------------ XRA/Data/Fundo_acqTest_1hour_01.mca | 2132 ------------------ XRA/Data/Mo_Calibration.mca | 2132 ------------------ XRA/Data/NoFilm_2h_17Jul_CuSource.mca | 2132 ------------------ XRA/Data/NoFilm_for_C12_4h_2.mca | 2132 ------------------ XRA/Data/NoFilm_overNight_2h_17Jul_1(Mo).mca | 2132 ------------------ XRA/Data/PbFilm_CuSource_27Aug.mca | 2132 ------------------ XRA/Data/PbFilm_Ra_27Aug.mca | 1037 --------- XRA/Data/Pbfilm_U232_26Aug.mca | 1037 --------- XRA/Data/Rb_Calibration (20 mins).mca | 2132 ------------------ XRA/Data/SampleC12_4h.mca | 2132 ------------------ XRA/Data/Tb_Calibration.mca | 2132 ------------------ XRA/PlotData.py | 57 - XRA/additional_draft | 32 - XRA/testGaussianFit.py | 142 -- 28 files changed, 46886 deletions(-) delete mode 100644 XRA/Data/Ag_Calibration.mca delete mode 100644 XRA/Data/Al_foil_CuSource_01Aug.mca delete mode 100755 XRA/Data/AuFilm_CuSource_22Aug.mca delete mode 100644 XRA/Data/AuFilm_U232_22Aug.mca delete mode 100644 XRA/Data/Ba_Calibration.mca delete mode 100644 XRA/Data/Be_Calibration.mca delete mode 100755 XRA/Data/Calib_Ra_27Aug.mca delete mode 100644 XRA/Data/Calib_U232_22Aug.mca delete mode 100755 XRA/Data/Calib_U232_26Aug.mca delete mode 100644 XRA/Data/Combined_bkg_Internship.txt delete mode 100644 XRA/Data/CuSource_01Aug.mca delete mode 100755 XRA/Data/CuSource_22Aug.mca delete mode 100755 XRA/Data/CuSource_27Aug.mca delete mode 100644 XRA/Data/Film_Sn_2h_17Jul_CuSource.mca delete mode 100644 XRA/Data/Fundo_acqTest_1hour_01.mca delete mode 100644 XRA/Data/Mo_Calibration.mca delete mode 100644 XRA/Data/NoFilm_2h_17Jul_CuSource.mca delete mode 100644 XRA/Data/NoFilm_for_C12_4h_2.mca delete mode 100644 XRA/Data/NoFilm_overNight_2h_17Jul_1(Mo).mca delete mode 100755 XRA/Data/PbFilm_CuSource_27Aug.mca delete mode 100755 XRA/Data/PbFilm_Ra_27Aug.mca delete mode 100755 XRA/Data/Pbfilm_U232_26Aug.mca delete mode 100644 XRA/Data/Rb_Calibration (20 mins).mca delete mode 100644 XRA/Data/SampleC12_4h.mca delete mode 100644 XRA/Data/Tb_Calibration.mca delete mode 100644 XRA/PlotData.py delete mode 100644 XRA/additional_draft delete mode 100644 XRA/testGaussianFit.py diff --git a/XRA/Data/Ag_Calibration.mca b/XRA/Data/Ag_Calibration.mca deleted file mode 100644 index d1fe2d6..0000000 --- a/XRA/Data/Ag_Calibration.mca +++ /dev/null @@ -1,2132 +0,0 @@ -<> -TAG - live_data -DESCRIPTION - -GAIN - 3 -THRESHOLD - 0 -LIVE_MODE - 0 -PRESET_TIME - 0 -LIVE_TIME - 820.624000 -REAL_TIME - 821.280000 -START_TIME - 01/27/2000 00:40:55 -SERIAL_NUMBER - 0 -<> -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -78 -124 -95 -68 -70 -85 -104 -80 -75 -93 -61 -73 -81 -69 -79 -69 -63 -49 -65 -56 -72 -53 -58 -63 -64 -75 -73 -90 -81 -52 -71 -78 -87 -82 -57 -78 -82 -86 -92 -101 -72 -67 -66 -76 -70 -73 -73 -56 -59 -42 -57 -60 -35 -41 -41 -52 -34 -35 -31 -39 -30 -30 -27 -31 -24 -28 -29 -24 -24 -15 -18 -9 -16 -22 -17 -20 -17 -15 -21 -19 -19 -27 -43 -104 -108 -119 -64 -49 -56 -83 -57 -67 -45 -44 -24 -21 -23 -24 -19 -13 -16 -13 -23 -9 -6 -10 -11 -9 -10 -6 -15 -11 -7 -9 -10 -5 -3 -12 -7 -11 -3 -10 -2 -10 -10 -5 -4 -5 -9 -7 -7 -8 -9 -7 -7 -6 -5 -9 -3 -5 -7 -4 -10 -4 -6 -7 -4 -5 -8 -6 -5 -6 -7 -5 -8 -12 -7 -7 -6 -7 -14 -15 -32 -20 -24 -11 -6 -6 -5 -8 -3 -2 -3 -5 -6 -11 -4 -14 -8 -13 -16 -9 -8 -8 -1 -8 -4 -6 -8 -5 -19 -18 -34 -54 -45 -38 -43 -21 -12 -8 -7 -3 -3 -9 -7 -5 -7 -7 -4 -8 -8 -7 -9 -5 -18 -19 -17 -12 -7 -9 -5 -6 -4 -6 -11 -10 -26 -27 -38 -35 -34 -23 -11 -13 -4 -4 -5 -6 -9 -6 -7 -4 -4 -4 -4 -6 -3 -8 -3 -12 -8 -6 -12 -15 -9 -9 -13 -7 -4 -7 -4 -3 -6 -6 -3 -4 -9 -5 -1 -6 -4 -2 -5 -9 -4 -1 -5 -5 -6 -5 -2 -4 -3 -4 -3 -8 -12 -7 -12 -9 -5 -3 -10 -3 -6 -6 -3 -5 -12 -9 -5 -11 -4 -4 -6 -5 -6 -6 -9 -4 -11 -7 -5 -9 -6 -3 -3 -2 -6 -6 -3 -11 -5 -9 -18 -10 -9 -15 -10 -8 -10 -9 -6 -7 -5 -6 -5 -2 -7 -9 -2 -9 -6 -4 -5 -5 -5 -3 -4 -4 -5 -3 -5 -9 -6 -7 -4 -11 -10 -6 -4 -5 -10 -4 -6 -6 -5 -4 -12 -4 -1 -3 -1 -4 -7 -2 -6 -6 -9 -9 -3 -7 -3 -8 -2 -11 -3 -4 -8 -7 -9 -9 -7 -10 -15 -10 -15 -8 -4 -6 -4 -1 -4 -8 -5 -4 -1 -1 -4 -2 -5 -1 -6 -10 -3 -2 -6 -3 -4 -4 -5 -3 -5 -6 -4 -9 -6 -5 -5 -7 -3 -6 -9 -4 -4 -4 -5 -2 -4 -1 -6 -7 -4 -7 -3 -9 -9 -2 -3 -6 -6 -0 -5 -7 -5 -5 -8 -10 -2 -1 -6 -6 -6 -9 -10 -4 -4 -5 -3 -10 -3 -7 -5 -2 -5 -1 -5 -4 -5 -7 -3 -5 -2 -6 -7 -8 -2 -6 -7 -6 -4 -3 -8 -9 -6 -6 -4 -8 -4 -5 -6 -4 -5 -7 -8 -3 -3 -5 -9 -1 -5 -1 -3 -4 -7 -6 -6 -5 -6 -2 -6 -6 -4 -5 -3 -5 -7 -5 -7 -7 -5 -9 -4 -4 -6 -4 -6 -3 -9 -7 -5 -6 -10 -3 -7 -5 -11 -6 -7 -8 -6 -10 -9 -6 -5 -6 -4 -6 -5 -2 -12 -4 -4 -7 -4 -3 -6 -7 -9 -11 -3 -7 -9 -4 -7 -6 -8 -5 -5 -9 -10 -6 -5 -5 -13 -6 -9 -6 -5 -7 -7 -11 -5 -8 -8 -3 -5 -4 -3 -11 -7 -7 -6 -5 -6 -8 -7 -9 -5 -10 -12 -6 -10 -6 -15 -11 -12 -13 -11 -7 -17 -16 -9 -9 -8 -10 -9 -25 -19 -16 -15 -23 -30 -21 -23 -29 -20 -26 -33 -34 -39 -44 -41 -39 -43 -51 -63 -39 -48 -58 -54 -60 -57 -66 -48 -51 -49 -53 -64 -56 -58 -56 -51 -48 -45 -49 -54 -51 -50 -60 -36 -46 -46 -45 -36 -56 -54 -62 -54 -50 -66 -48 -57 -69 -76 -93 -110 -171 -293 -512 -893 -1464 -2267 -3330 -4465 -5685 -6901 -8050 -9100 -9927 -10583 -10744 -10450 -9406 -8146 -6582 -4759 -3160 -2034 -1216 -675 -384 -223 -135 -72 -63 -49 -51 -36 -27 -33 -32 -25 -24 -23 -23 -25 -29 -17 -19 -16 -25 -28 -14 -17 -17 -26 -21 -19 -24 -15 -12 -10 -16 -18 -15 -19 -22 -20 -14 -20 -15 -18 -14 -18 -13 -16 -18 -11 -22 -18 -14 -20 -22 -21 -14 -16 -25 -25 -25 -19 -23 -26 -26 -15 -30 -15 -24 -37 -41 -42 -67 -108 -208 -313 -551 -764 -1052 -1413 -1701 -1945 -2072 -2019 -1901 -1553 -1220 -872 -619 -455 -264 -170 -150 -147 -170 -220 -285 -303 -337 -349 -329 -279 -234 -179 -142 -83 -70 -28 -20 -10 -6 -5 -3 -3 -0 -1 -1 -0 -0 -0 -0 -1 -0 -1 -3 -0 -2 -0 -2 -1 -0 -0 -0 -0 -0 -1 -0 -1 -2 -1 -1 -0 -0 -3 -1 -1 -0 -0 -0 -1 -0 -0 -0 -0 -0 -0 -1 -0 -0 -1 -0 -2 -0 -0 -1 -3 -0 -1 -1 -0 -1 -0 -1 -3 -0 -2 -3 -1 -1 -3 -1 -0 -0 -2 -1 -0 -0 -1 -0 -1 -0 -0 -0 -3 -0 -1 -1 -1 -0 -1 -0 -0 -0 -2 -0 -1 -0 -0 -1 -1 -1 -1 -0 -2 -2 -2 -0 -0 -0 -1 -0 -0 -0 -0 -2 -0 -3 -0 -0 -1 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -1 -0 -1 -0 -1 -0 -1 -2 -0 -1 -0 -1 -2 -0 -1 -0 -0 -1 -0 -0 -1 -0 -0 -1 -1 -0 -0 -1 -1 -1 -0 -1 -0 -0 -0 -0 -0 -0 -0 -1 -1 -3 -1 -0 -0 -2 -0 -0 -0 -0 -2 -1 -1 -0 -0 -0 -0 -0 -2 -1 -0 -1 -0 -1 -1 -1 -0 -1 -0 -1 -2 -1 -0 -0 -1 -0 -0 -2 -1 -3 -0 -0 -0 -1 -3 -0 -0 -0 -0 -2 -0 -1 -0 -1 -0 -1 -1 -1 -0 -0 -1 -0 -1 -0 -2 -0 -1 -0 -1 -1 -0 -0 -0 -0 -0 -1 -0 -1 -0 -5 -0 -0 -0 -0 -1 -0 -0 -1 -1 -0 -0 -1 -0 -1 -0 -2 -0 -1 -0 -1 -1 -1 -0 -0 -1 -1 -0 -1 -1 -0 -0 -1 -1 -1 -0 -0 -0 -0 -1 -2 -1 -1 -0 -1 -0 -0 -0 -0 -0 -1 -0 -0 -1 -0 -0 -1 -0 -1 -0 -0 -1 -0 -0 -1 -2 -0 -0 -0 -1 -0 -2 -0 -1 -1 -0 -0 -1 -0 -1 -0 -1 -1 -1 -0 -1 -0 -0 -0 -0 -1 -0 -0 -0 -0 -0 -0 -0 -0 -1 -0 -0 -1 -1 -0 -0 -0 -0 -0 -1 -1 -0 -1 -0 -1 -0 -0 -1 -1 -0 -0 -0 -1 -2 -1 -1 -2 -2 -1 -2 -0 -0 -1 -1 -0 -0 -0 -0 -1 -1 -0 -1 -0 -0 -0 -0 -1 -0 -1 -0 -0 -0 -0 -1 -1 -0 -1 -0 -1 -1 -1 -2 -0 -1 -0 -1 -0 -2 -1 -0 -1 -0 -0 -1 -0 -0 -0 -1 -0 -0 -3 -1 -1 -1 -0 -1 -2 -4 -0 -0 -0 -0 -0 -0 -1 -1 -1 -1 -4 -2 -1 -0 -0 -1 -0 -0 -0 -0 -0 -2 -2 -0 -1 -0 -0 -0 -2 -0 -1 -0 -1 -0 -1 -1 -0 -0 -3 -1 -1 -0 -0 -0 -0 -0 -2 -0 -0 -2 -1 -1 -0 -0 -1 -0 -0 -0 -0 -0 -1 -0 -0 -0 -2 -1 -0 -0 -2 -0 -0 -2 -4 -1 -0 -1 -2 -0 -0 -0 -0 -2 -0 -0 -0 -1 -1 -1 -1 -1 -1 -1 -1 -2 -0 -1 -1 -1 -0 -0 -0 -1 -1 -2 -3 -1 -0 -1 -1 -0 -0 -0 -1 -1 -0 -1 -2 -1 -1 -0 -1 -2 -1 -2 -0 -0 -1 -1 -3 -1 -1 -1 -1 -0 -2 -0 -0 -1 -2 -1 -2 -0 -4 -1 -1 -0 -1 -0 -0 -3 -2 -2 -1 -1 -2 -2 -1 -2 -2 -1 -3 -1 -2 -3 -3 -2 -0 -3 -1 -1 -1 -3 -2 -3 -0 -1 -0 -1 -1 -1 -3 -0 -2 -2 -0 -0 -0 -0 -1 -4 -3 -1 -2 -1 -1 -0 -3 -2 -1 -2 -1 -2 -0 -2 -0 -2 -2 -1 -1 -2 -1 -2 -3 -0 -2 -3 -2 -2 -0 -0 -1 -4 -1 -0 -1 -3 -2 -2 -6 -3 -1 -0 -2 -2 -1 -0 -2 -1 -0 -4 -2 -2 -1 -3 -1 -3 -5 -3 -3 -0 -3 -2 -0 -2 -5 -2 -1 -1 -4 -2 -3 -1 -0 -0 -1 -1 -5 -3 -3 -1 -1 -1 -1 -1 -6 -5 -6 -1 -4 -4 -2 -5 -3 -3 -2 -2 -4 -3 -2 -5 -3 -7 -4 -2 -4 -9 -8 -3 -5 -7 -10 -4 -3 -6 -3 -6 -8 -7 -3 -3 -6 -10 -7 -3 -5 -5 -7 -5 -7 -2 -9 -10 -6 -10 -9 -7 -2 -5 -8 -6 -6 -7 -5 -5 -7 -3 -4 -3 -10 -4 -4 -7 -5 -7 -4 -6 -3 -4 -3 -6 -1 -4 -2 -3 -5 -3 -3 -5 -0 -5 -2 -2 -2 -7 -4 -2 -3 -1 -3 -2 -0 -1 -2 -1 -0 -0 -0 -3 -2 -1 -2 -2 -1 -1 -3 -0 -1 -2 -0 -1 -3 -5 -0 -1 -3 -1 -0 -1 -1 -3 -1 -2 -0 -0 -2 -1 -0 -0 -2 -1 -1 -0 -0 -1 -3 -0 -1 -2 -2 -0 -3 -1 -0 -0 -1 -0 -0 -1 -1 -0 -1 -1 -0 -1 -0 -3 -0 -0 -1 -1 -2 -1 -3 -0 -0 -2 -1 -0 -0 -0 -1 -1 -1 -1 -1 -0 -2 -0 -3 -0 -0 -2 -3 -2 -0 -1 -1 -0 -3 -0 -1 -1 -0 -3 -0 -1 -1 -2 -0 -1 -1 -1 -0 -2 -1 -1 -0 -0 -1 -2 -2 -1 -3 -1 -1 -0 -1 -1 -2 -1 -1 -1 -0 -0 -0 -1 -0 -2 -1 -0 -1 -2 -1 -0 -1 -0 -0 -0 -0 -0 -0 -1 -1 -0 -1 -1 -1 -0 -0 -0 -0 -0 -1 -1 -0 -2 -0 -1 -1 -2 -0 -2 -3 -2 -1 -0 -2 -1 -1 -1 -0 -1 -0 -1 -0 -0 -0 -0 -1 -0 -3 -0 -0 -0 -0 -0 -1 -0 -0 -0 -0 -0 -1 -0 -4 -0 -0 -0 -0 -0 -1 -1 -0 -2 -0 -0 -0 -1 -0 -1 -0 -1 -0 -1 -0 -1 -2 -1 -0 -0 -0 -0 -1 -0 -1 -0 -0 -0 -2 -0 -0 -0 -0 -1 -1 -1 -0 -0 -0 -0 -0 -0 -0 -1 -0 -1 -0 -0 -1 -1 -0 -1 -2 -2 -6 -3 -3 -2 -10 -9 -9 -12 -21 -18 -17 -18 -20 -19 -29 -17 -28 -20 -22 -11 -13 -5 -6 -8 -2 -5 -0 -1 -4 -1 -2 -2 -0 -0 -0 -0 -0 -0 -1 -0 -0 -0 -0 -0 -1 -0 -0 -0 -0 -0 -0 -0 -1 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -1 -0 -0 -1 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -1 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -1 -0 -0 -0 -1 -0 -0 -0 -0 -0 -0 -0 -0 -0 -<> -<> -RESC=?; Reset Configuration -CLCK=80; 20MHz/80MHz -TPEA=9.600; Peaking Time -GAIF=0.9312; Fine Gain -GAIN=21.162; Total Gain (Analog * Fine) -RESL=204; Detector Reset Lockout -TFLA=0.200; Flat Top -TPFA=50; Fast Channel Peaking Time -PURE=OFF; PUR Interval On/Off -RTDE=OFF; RTD On/Off -MCAS=NORM; MCA Source -MCAC=2048; MCA/MCS Channels -SOFF=OFF; Set Spectrum Offset -AINP=POS; Analog Input Pos/Neg -INOF=DEF; Input Offset -GAIA=15; Analog Gain Index -CUSP=0; Non-Trapezoidal Shaping -PDMD=NORM; Peak Detect Mode (Min/Max) -THSL=0.585; Slow Threshold -TLLD=OFF; LLD Threshold -THFA=230.00; Fast Threshold -DACO=SHAPED; DAC Output -DACF=50; DAC Offset -RTDS=0; RTD Sensitivity -RTDT=0.00; RTD Threshold -BLRM=1; BLR Mode -BLRD=3; BLR Down Correction -BLRU=0; BLR Up Correction -AUO1=SCA8; AUX_OUT Selection -PRET=OFF; Preset Time -PRER=1800.000; Preset Real Time -PREC=OFF; Preset Counts -PRCL=1; Preset Counts Low Threshold -PRCH=8191; Preset Counts High Threshold -HVSE=-110; HV Set -TECS=220; TEC Set -PAPZ=OFF; Pole-Zero -PAPS=8.5; Preamp 8.5/5 (N/A) -SCOE=FA; Scope Trigger Edge -SCOT=12; Scope Trigger Position -SCOG=1; Digital Scope Gain -MCSL=1; MCS Low Threshold -MCSH=8191; MCS High Threshold -MCST=0.00; MCS Timebase -AUO2=ICR; AUX_OUT2 Selection -TPMO=OFF; Test Pulser On/Off -GPED=RI; G.P. Counter Edge -GPIN=AUX1; G.P. Counter Input -GPME=ON; G.P. Counter Uses MCA_EN? -GPGA=ON; G.P. Counter Uses GATE? -GPMC=ON; G.P. Counter Cleared With MCA Counters? -MCAE=OFF; MCA/MCS Enable -VOLU=OFF; Speaker On/Off -CON1=DAC; Connector 1 -CON2=AUXOUT2; Connector 2 -<> -<> -Device Type: PX5 -Serial Number: 2264 -Firmware: 6.07 Build: 3 -FPGA: 6.02 -Fast Count: 1052 -Slow Count: 159631 -Accumulation Time: 820.624000 -Real Time: 821.280000 -Dead Time: -HV Volt: -110V -TEC Temp: 220K -Board Temp: 32C -<> diff --git a/XRA/Data/Al_foil_CuSource_01Aug.mca b/XRA/Data/Al_foil_CuSource_01Aug.mca deleted file mode 100644 index 1b3df77..0000000 --- a/XRA/Data/Al_foil_CuSource_01Aug.mca +++ /dev/null @@ -1,2132 +0,0 @@ -<> -TAG - live_data -DESCRIPTION - -GAIN - 3 -THRESHOLD - 0 -LIVE_MODE - 0 -PRESET_TIME - 0 -LIVE_TIME - 1798.697000 -REAL_TIME - 1800.000000 -START_TIME - 08/01/2025 14:03:24 -SERIAL_NUMBER - 0 -<> -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -46 -39 -28 -26 -26 -33 -23 -36 -34 -32 -20 -37 -22 -25 -19 -28 -25 -33 -28 -25 -20 -20 -16 -30 -30 -25 -28 -36 -24 -21 -26 -23 -28 -18 -17 -23 -15 -30 -22 -14 -31 -20 -20 -22 -27 -20 -22 -27 -21 -32 -23 -20 -26 -22 -27 -18 -31 -20 -32 -23 -29 -23 -19 -20 -12 -20 -12 -24 -17 -25 -14 -13 -25 -24 -13 -16 -19 -15 -19 -21 -26 -21 -20 -27 -23 -18 -20 -16 -20 -28 -26 -19 -19 -18 -16 -22 -13 -19 -23 -14 -18 -22 -17 -17 -21 -16 -20 -22 -16 -16 -25 -16 -22 -24 -18 -15 -18 -26 -14 -21 -17 -22 -16 -19 -13 -17 -21 -14 -19 -14 -23 -21 -21 -22 -15 -16 -18 -16 -18 -22 -13 -16 -20 -13 -14 -18 -17 -19 -21 -11 -19 -23 -21 -14 -20 -14 -20 -19 -22 -18 -33 -28 -31 -21 -22 -23 -28 -20 -26 -19 -17 -22 -23 -16 -19 -15 -27 -22 -23 -31 -26 -24 -20 -19 -18 -20 -29 -28 -29 -30 -30 -71 -63 -80 -96 -71 -68 -54 -28 -30 -16 -23 -33 -21 -22 -15 -34 -19 -27 -24 -20 -18 -29 -32 -26 -28 -31 -23 -34 -22 -19 -27 -16 -16 -34 -18 -20 -23 -42 -33 -44 -34 -37 -35 -30 -37 -33 -36 -49 -55 -104 -189 -553 -1411 -3117 -5472 -7644 -8598 -7534 -5317 -3043 -1405 -558 -208 -77 -49 -34 -37 -33 -33 -29 -29 -35 -23 -36 -35 -35 -51 -77 -95 -184 -387 -714 -1109 -1401 -1491 -1248 -908 -466 -262 -116 -29 -25 -12 -10 -10 -10 -8 -6 -5 -9 -7 -10 -8 -6 -6 -7 -6 -5 -10 -7 -6 -7 -11 -7 -5 -3 -9 -2 -5 -10 -7 -4 -10 -3 -7 -3 -9 -3 -9 -5 -9 -4 -8 -4 -10 -10 -6 -10 -14 -10 -7 -8 -2 -6 -5 -6 -8 -3 -2 -3 -4 -4 -5 -5 -3 -5 -2 -4 -2 -2 -1 -5 -3 -6 -2 -6 -2 -2 -4 -4 -1 -3 -3 -5 -2 -3 -5 -2 -4 -2 -5 -3 -1 -1 -2 -2 -3 -2 -1 -3 -2 -2 -3 -5 -4 -1 -3 -3 -4 -1 -3 -2 -5 -2 -6 -4 -10 -3 -1 -2 -6 -2 -3 -0 -1 -1 -0 -0 -4 -1 -2 -3 -1 -1 -5 -3 -5 -4 -2 -1 -1 -4 -0 -0 -2 -4 -7 -2 -0 -1 -2 -1 -2 -0 -1 -2 -2 -3 -2 -0 -2 -3 -1 -6 -2 -1 -1 -2 -1 -1 -1 -0 -5 -1 -2 -0 -0 -2 -4 -1 -5 -2 -2 -0 -3 -2 -3 -2 -2 -0 -4 -0 -0 -3 -1 -1 -1 -1 -3 -3 -1 -1 -3 -1 -2 -2 -0 -4 -1 -2 -2 -1 -2 -0 -2 -2 -2 -2 -3 -0 -1 -2 -1 -1 -1 -1 -1 -1 -1 -2 -1 -2 -1 -0 -0 -0 -0 -2 -1 -1 -0 -1 -1 -0 -0 -0 -2 -3 -0 -3 -1 -1 -3 -2 -0 -0 -2 -2 -0 -0 -1 -0 -1 -1 -0 -4 -1 -0 -4 -2 -3 -3 -1 -0 -1 -0 -1 -1 -0 -1 -1 -0 -0 -3 -0 -0 -1 -0 -2 -1 -2 -2 -1 -0 -1 -1 -1 -0 -0 -0 -0 -1 -0 -0 -1 -1 -0 -1 -0 -0 -1 -2 -2 -1 -0 -1 -0 -0 -2 -5 -2 -0 -2 -1 -0 -3 -1 -0 -0 -2 -1 -1 -3 -1 -0 -4 -1 -1 -0 -1 -2 -0 -3 -1 -2 -1 -0 -2 -0 -2 -0 -2 -1 -1 -1 -3 -1 -0 -1 -1 -4 -2 -2 -0 -2 -1 -1 -0 -3 -0 -3 -1 -0 -3 -1 -1 -0 -1 -2 -0 -0 -4 -0 -1 -2 -2 -0 -1 -3 -1 -0 -0 -0 -0 -0 -0 -1 -0 -3 -1 -0 -0 -0 -0 -0 -0 -0 -2 -2 -2 -1 -0 -2 -1 -1 -0 -1 -0 -2 -1 -3 -3 -1 -3 -1 -2 -1 -0 -0 -2 -0 -2 -2 -0 -0 -1 -0 -0 -0 -2 -1 -2 -1 -1 -2 -0 -1 -0 -1 -0 -2 -2 -1 -1 -1 -1 -0 -0 -0 -2 -0 -0 -0 -0 -1 -0 -0 -0 -0 -0 -2 -1 -1 -1 -1 -0 -1 -1 -1 -3 -1 -2 -1 -2 -1 -2 -2 -1 -2 -3 -2 -1 -2 -1 -2 -1 -1 -2 -2 -1 -1 -0 -1 -1 -0 -3 -3 -2 -0 -1 -3 -1 -3 -2 -2 -5 -2 -1 -4 -2 -5 -3 -7 -3 -3 -3 -4 -1 -1 -0 -1 -0 -1 -0 -0 -1 -0 -0 -0 -0 -0 -1 -0 -0 -1 -1 -0 -0 -1 -4 -0 -1 -3 -3 -2 -4 -6 -2 -1 -4 -0 -0 -1 -2 -1 -0 -0 -0 -0 -0 -0 -0 -0 -3 -2 -1 -0 -1 -0 -3 -0 -0 -1 -2 -5 -2 -3 -3 -2 -1 -1 -0 -2 -0 -1 -0 -0 -1 -1 -0 -0 -0 -0 -1 -0 -1 -0 -0 -0 -2 -1 -1 -0 -1 -0 -1 -0 -0 -1 -1 -0 -1 -1 -3 -3 -2 -1 -2 -0 -0 -1 -1 -2 -1 -0 -0 -1 -2 -0 -1 -1 -1 -3 -3 -0 -0 -1 -0 -1 -0 -0 -0 -0 -0 -0 -0 -2 -1 -2 -2 -1 -1 -1 -1 -4 -1 -1 -0 -1 -0 -2 -2 -0 -2 -1 -1 -0 -4 -1 -0 -0 -0 -1 -0 -0 -0 -0 -1 -2 -1 -1 -0 -2 -1 -1 -1 -0 -0 -3 -1 -0 -0 -2 -1 -2 -2 -1 -2 -0 -0 -0 -0 -2 -2 -2 -1 -3 -0 -1 -1 -0 -0 -1 -1 -0 -0 -0 -0 -0 -0 -0 -2 -2 -3 -0 -0 -0 -2 -0 -3 -1 -0 -1 -2 -0 -1 -4 -1 -2 -1 -0 -2 -2 -0 -0 -0 -1 -2 -0 -0 -1 -2 -0 -2 -1 -0 -0 -0 -0 -3 -0 -0 -0 -1 -1 -2 -1 -2 -0 -2 -1 -1 -2 -1 -2 -0 -2 -1 -0 -0 -1 -0 -1 -1 -0 -2 -0 -0 -0 -1 -0 -0 -0 -0 -0 -1 -1 -0 -1 -0 -0 -0 -0 -1 -0 -0 -1 -0 -0 -2 -0 -1 -1 -1 -0 -2 -0 -1 -1 -0 -0 -1 -0 -0 -1 -1 -0 -0 -0 -1 -4 -1 -0 -2 -2 -2 -1 -1 -2 -1 -1 -1 -1 -1 -0 -1 -0 -1 -1 -0 -1 -2 -1 -1 -2 -1 -0 -0 -1 -2 -1 -2 -3 -5 -1 -0 -1 -1 -0 -0 -0 -0 -1 -1 -0 -0 -1 -0 -3 -3 -0 -0 -3 -1 -1 -0 -2 -0 -1 -0 -0 -1 -2 -1 -0 -0 -1 -1 -1 -1 -1 -0 -2 -2 -1 -1 -1 -4 -0 -0 -1 -2 -0 -0 -2 -0 -1 -2 -0 -0 -1 -3 -2 -1 -0 -3 -2 -1 -2 -0 -3 -0 -2 -0 -3 -0 -5 -0 -0 -1 -2 -5 -0 -2 -0 -1 -1 -1 -2 -0 -3 -1 -0 -1 -2 -0 -1 -1 -0 -0 -1 -1 -2 -1 -1 -0 -0 -0 -1 -2 -3 -2 -4 -2 -1 -4 -5 -1 -5 -1 -0 -3 -3 -0 -1 -3 -5 -2 -3 -3 -4 -2 -3 -0 -2 -1 -4 -3 -1 -5 -1 -4 -3 -3 -1 -1 -6 -4 -5 -1 -3 -2 -0 -0 -4 -3 -3 -3 -1 -3 -1 -2 -2 -2 -4 -3 -5 -2 -2 -3 -5 -3 -4 -1 -1 -5 -2 -0 -3 -2 -2 -4 -5 -1 -3 -5 -7 -2 -2 -2 -3 -3 -1 -1 -5 -1 -2 -4 -3 -2 -3 -4 -3 -5 -3 -5 -5 -3 -3 -6 -4 -2 -4 -3 -7 -2 -2 -3 -8 -4 -8 -5 -10 -2 -7 -4 -4 -6 -3 -9 -3 -7 -6 -8 -3 -3 -5 -3 -4 -3 -5 -3 -7 -5 -6 -2 -5 -5 -7 -7 -3 -5 -5 -9 -4 -4 -9 -4 -3 -2 -9 -5 -6 -1 -7 -7 -9 -6 -6 -5 -6 -5 -5 -4 -7 -5 -9 -6 -6 -7 -8 -7 -9 -8 -9 -5 -9 -7 -4 -6 -6 -3 -7 -12 -11 -7 -9 -4 -11 -9 -9 -9 -9 -7 -8 -13 -10 -17 -14 -15 -1 -10 -11 -11 -7 -11 -11 -6 -13 -7 -10 -13 -14 -15 -9 -10 -13 -12 -11 -8 -10 -10 -10 -9 -13 -18 -22 -12 -21 -15 -8 -12 -12 -10 -10 -16 -19 -19 -18 -15 -13 -20 -13 -14 -20 -14 -15 -15 -16 -16 -12 -21 -16 -19 -20 -20 -21 -20 -28 -27 -17 -29 -26 -23 -32 -29 -28 -19 -31 -27 -31 -33 -37 -42 -33 -44 -40 -37 -35 -40 -29 -41 -32 -37 -36 -47 -43 -53 -41 -31 -47 -60 -54 -68 -54 -50 -49 -53 -51 -51 -54 -42 -60 -67 -49 -50 -50 -56 -60 -58 -45 -49 -73 -49 -59 -50 -40 -42 -47 -68 -61 -47 -43 -55 -50 -46 -45 -50 -49 -52 -46 -49 -44 -45 -49 -42 -37 -41 -37 -46 -39 -38 -41 -40 -31 -44 -33 -41 -22 -32 -39 -28 -39 -25 -27 -30 -34 -22 -25 -26 -22 -21 -17 -21 -27 -20 -16 -27 -18 -17 -23 -12 -21 -21 -15 -15 -16 -18 -14 -14 -16 -15 -21 -7 -23 -13 -10 -7 -10 -9 -12 -10 -10 -14 -6 -13 -16 -15 -13 -11 -7 -6 -14 -11 -11 -10 -8 -10 -13 -7 -5 -11 -10 -10 -8 -6 -6 -6 -8 -8 -5 -8 -6 -8 -6 -5 -5 -6 -8 -7 -5 -8 -7 -6 -7 -2 -2 -4 -6 -4 -5 -6 -4 -6 -10 -3 -10 -5 -5 -1 -6 -5 -4 -3 -5 -3 -0 -4 -3 -6 -5 -5 -2 -9 -4 -2 -2 -4 -2 -2 -3 -2 -3 -2 -0 -3 -7 -2 -2 -6 -5 -5 -2 -2 -6 -4 -2 -8 -5 -6 -3 -3 -4 -5 -6 -1 -2 -1 -2 -4 -2 -5 -3 -7 -3 -1 -0 -2 -2 -1 -3 -5 -0 -1 -5 -4 -2 -3 -1 -1 -7 -2 -5 -4 -5 -4 -5 -2 -2 -3 -6 -4 -2 -4 -1 -6 -1 -1 -2 -0 -1 -3 -2 -2 -4 -5 -2 -2 -4 -4 -2 -2 -0 -5 -2 -4 -4 -1 -1 -1 -1 -1 -2 -2 -2 -2 -4 -0 -1 -0 -2 -1 -3 -5 -4 -2 -3 -1 -2 -3 -2 -0 -2 -0 -2 -1 -4 -0 -3 -3 -0 -1 -3 -1 -1 -0 -1 -2 -2 -1 -3 -3 -2 -2 -0 -1 -0 -0 -2 -0 -1 -3 -2 -2 -1 -2 -3 -2 -2 -1 -0 -2 -0 -0 -1 -8 -7 -4 -5 -4 -12 -14 -18 -25 -32 -43 -32 -41 -58 -48 -50 -61 -47 -48 -30 -55 -43 -28 -24 -24 -12 -7 -10 -6 -3 -1 -1 -0 -1 -1 -1 -2 -0 -1 -0 -0 -1 -2 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -1 -0 -0 -0 -1 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -1 -0 -0 -0 -1 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -1 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -1 -0 -0 -1 -0 -0 -0 -0 -1 -1 -0 -0 -<> -<> -RESC=?; Reset Configuration -CLCK=80; 20MHz/80MHz -TPEA=9.600; Peaking Time -GAIF=0.9312; Fine Gain -GAIN=21.162; Total Gain (Analog * Fine) -RESL=204; Detector Reset Lockout -TFLA=0.200; Flat Top -TPFA=50; Fast Channel Peaking Time -PURE=OFF; PUR Interval On/Off -RTDE=OFF; RTD On/Off -MCAS=NORM; MCA Source -MCAC=2048; MCA/MCS Channels -SOFF=OFF; Set Spectrum Offset -AINP=POS; Analog Input Pos/Neg -INOF=DEF; Input Offset -GAIA=15; Analog Gain Index -CUSP=0; Non-Trapezoidal Shaping -PDMD=NORM; Peak Detect Mode (Min/Max) -THSL=0.585; Slow Threshold -TLLD=OFF; LLD Threshold -THFA=230.00; Fast Threshold -DACO=SHAPED; DAC Output -DACF=50; DAC Offset -RTDS=0; RTD Sensitivity -RTDT=0.00; RTD Threshold -BLRM=1; BLR Mode -BLRD=3; BLR Down Correction -BLRU=0; BLR Up Correction -AUO1=SCA8; AUX_OUT Selection -PRET=OFF; Preset Time -PRER=1800.000; Preset Real Time -PREC=OFF; Preset Counts -PRCL=1; Preset Counts Low Threshold -PRCH=8191; Preset Counts High Threshold -HVSE=-110; HV Set -TECS=220; TEC Set -PAPZ=OFF; Pole-Zero -PAPS=8.5; Preamp 8.5/5 (N/A) -SCOE=FA; Scope Trigger Edge -SCOT=12; Scope Trigger Position -SCOG=1; Digital Scope Gain -MCSL=1; MCS Low Threshold -MCSH=8191; MCS High Threshold -MCST=0.00; MCS Timebase -AUO2=ICR; AUX_OUT2 Selection -TPMO=OFF; Test Pulser On/Off -GPED=RI; G.P. Counter Edge -GPIN=AUX1; G.P. Counter Input -GPME=ON; G.P. Counter Uses MCA_EN? -GPGA=ON; G.P. Counter Uses GATE? -GPMC=ON; G.P. Counter Cleared With MCA Counters? -MCAE=OFF; MCA/MCS Enable -VOLU=OFF; Speaker On/Off -CON1=DAC; Connector 1 -CON2=AUXOUT2; Connector 2 -<> -<> -Device Type: PX5 -Serial Number: 2264 -Firmware: 6.07 Build: 3 -FPGA: 6.02 -Fast Count: 5322 -Slow Count: 69835 -Accumulation Time: 1798.697000 -Real Time: 1800.000000 -Dead Time: -HV Volt: -110V -TEC Temp: 223K -Board Temp: 41C -<> diff --git a/XRA/Data/AuFilm_CuSource_22Aug.mca b/XRA/Data/AuFilm_CuSource_22Aug.mca deleted file mode 100755 index 0f198c6..0000000 --- a/XRA/Data/AuFilm_CuSource_22Aug.mca +++ /dev/null @@ -1,2132 +0,0 @@ -<> -TAG - live_data -DESCRIPTION - -GAIN - 3 -THRESHOLD - 0 -LIVE_MODE - 0 -PRESET_TIME - 0 -LIVE_TIME - 3597.483000 -REAL_TIME - 3600.000000 -START_TIME - 08/22/2025 17:53:50 -SERIAL_NUMBER - 0 -<> -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -51 -49 -62 -79 -60 -61 -46 -66 -52 -48 -59 -56 -56 -48 -48 -53 -45 -59 -59 -39 -53 -53 -46 -54 -44 -56 -56 -47 -35 -47 -46 -51 -37 -43 -44 -55 -56 -51 -46 -42 -39 -58 -42 -43 -40 -33 -46 -36 -36 -42 -59 -48 -32 -37 -48 -59 -53 -35 -46 -34 -45 -45 -42 -41 -46 -41 -44 -42 -45 -40 -43 -41 -38 -45 -36 -42 -50 -47 -47 -38 -39 -35 -40 -47 -49 -46 -39 -33 -36 -34 -30 -30 -56 -43 -35 -35 -47 -39 -42 -36 -43 -34 -29 -43 -47 -34 -49 -41 -41 -31 -40 -24 -30 -36 -51 -27 -32 -41 -30 -32 -39 -33 -32 -36 -46 -45 -45 -30 -38 -37 -33 -28 -24 -41 -38 -35 -44 -38 -29 -37 -38 -35 -40 -31 -33 -37 -40 -40 -41 -46 -28 -39 -38 -39 -34 -36 -33 -41 -48 -47 -67 -79 -83 -78 -63 -57 -35 -41 -33 -33 -37 -46 -49 -24 -40 -41 -34 -57 -60 -49 -55 -53 -32 -28 -45 -50 -39 -46 -69 -74 -98 -125 -151 -152 -189 -180 -123 -82 -56 -45 -47 -38 -50 -44 -53 -38 -44 -33 -42 -37 -53 -43 -57 -59 -64 -60 -59 -61 -55 -62 -54 -45 -43 -41 -51 -50 -65 -70 -69 -72 -60 -74 -45 -69 -59 -62 -65 -74 -85 -111 -186 -433 -1217 -3070 -6631 -12077 -16605 -18816 -16374 -12021 -6643 -3039 -1139 -407 -129 -87 -66 -73 -70 -62 -57 -56 -47 -55 -88 -82 -96 -87 -125 -218 -419 -788 -1463 -2374 -2989 -3191 -2695 -1900 -1074 -488 -195 -74 -35 -23 -15 -17 -16 -22 -21 -11 -12 -14 -14 -13 -16 -11 -11 -13 -15 -8 -17 -11 -21 -12 -11 -8 -12 -13 -9 -12 -7 -12 -11 -10 -10 -6 -12 -11 -12 -10 -12 -4 -15 -12 -12 -14 -18 -14 -25 -12 -17 -17 -11 -13 -4 -6 -6 -14 -10 -11 -18 -10 -10 -10 -14 -10 -7 -8 -5 -7 -8 -6 -7 -12 -7 -12 -11 -5 -9 -7 -10 -4 -9 -10 -7 -8 -8 -7 -5 -11 -4 -7 -4 -7 -2 -5 -2 -9 -3 -3 -6 -6 -9 -9 -3 -3 -5 -8 -6 -3 -8 -12 -6 -11 -9 -10 -13 -7 -9 -10 -6 -4 -4 -9 -3 -5 -3 -6 -2 -4 -7 -3 -1 -2 -3 -7 -2 -2 -3 -4 -7 -7 -3 -1 -5 -1 -2 -4 -6 -3 -4 -3 -3 -1 -2 -1 -4 -1 -2 -1 -3 -2 -1 -2 -3 -2 -4 -2 -4 -6 -3 -1 -4 -2 -3 -3 -4 -2 -7 -1 -2 -6 -4 -2 -5 -1 -4 -5 -4 -0 -5 -1 -1 -2 -2 -7 -1 -4 -1 -4 -1 -3 -2 -2 -1 -2 -3 -2 -2 -2 -2 -3 -3 -4 -3 -4 -3 -6 -1 -5 -3 -3 -3 -2 -4 -3 -2 -3 -3 -2 -1 -7 -1 -0 -2 -1 -2 -1 -1 -1 -3 -4 -7 -0 -3 -5 -1 -1 -2 -0 -2 -6 -3 -2 -2 -5 -3 -1 -3 -3 -6 -3 -1 -0 -3 -4 -2 -4 -3 -1 -6 -5 -3 -4 -4 -1 -0 -2 -3 -2 -4 -4 -2 -0 -3 -1 -4 -2 -2 -3 -2 -1 -3 -0 -1 -6 -1 -3 -3 -2 -6 -4 -3 -3 -1 -3 -2 -3 -2 -2 -0 -1 -3 -5 -3 -4 -1 -1 -4 -0 -1 -3 -3 -0 -2 -3 -2 -0 -2 -1 -1 -4 -4 -3 -1 -2 -4 -3 -1 -0 -4 -4 -3 -1 -1 -1 -1 -1 -3 -3 -3 -0 -1 -3 -2 -0 -1 -2 -3 -0 -3 -4 -4 -1 -2 -1 -2 -1 -0 -4 -3 -3 -3 -3 -1 -2 -0 -1 -1 -1 -0 -1 -2 -2 -2 -0 -4 -0 -3 -0 -3 -2 -4 -2 -1 -1 -2 -4 -7 -0 -3 -2 -0 -2 -4 -1 -3 -1 -3 -1 -1 -1 -5 -3 -1 -1 -1 -2 -2 -5 -5 -7 -5 -2 -3 -2 -4 -2 -1 -0 -0 -5 -1 -1 -1 -3 -0 -2 -3 -3 -3 -1 -0 -3 -3 -3 -0 -0 -1 -1 -3 -2 -2 -1 -3 -3 -2 -2 -1 -0 -1 -7 -1 -2 -2 -1 -3 -5 -2 -2 -2 -1 -4 -4 -2 -1 -2 -1 -1 -5 -5 -2 -3 -2 -1 -2 -4 -3 -3 -3 -4 -7 -2 -3 -1 -2 -3 -0 -1 -1 -2 -1 -2 -4 -1 -0 -3 -5 -2 -5 -6 -3 -8 -5 -3 -2 -3 -4 -10 -8 -9 -4 -4 -8 -3 -3 -2 -3 -1 -1 -1 -4 -2 -1 -0 -2 -2 -1 -1 -2 -2 -1 -1 -1 -2 -0 -3 -1 -2 -4 -2 -3 -1 -3 -6 -5 -6 -3 -4 -9 -6 -5 -3 -4 -4 -4 -2 -1 -2 -4 -2 -0 -1 -4 -1 -1 -2 -2 -0 -3 -1 -1 -0 -0 -2 -1 -1 -1 -1 -0 -2 -3 -0 -1 -1 -3 -2 -0 -3 -1 -0 -5 -2 -3 -2 -2 -4 -1 -1 -2 -0 -0 -0 -1 -1 -2 -2 -2 -3 -2 -1 -2 -2 -4 -2 -0 -1 -6 -2 -1 -2 -1 -2 -2 -3 -3 -0 -2 -0 -3 -1 -2 -2 -1 -1 -0 -2 -1 -1 -1 -0 -2 -0 -3 -2 -0 -1 -1 -2 -3 -2 -1 -0 -0 -0 -2 -1 -2 -4 -2 -1 -2 -3 -1 -0 -2 -1 -3 -1 -1 -1 -0 -4 -1 -2 -0 -2 -1 -3 -3 -1 -4 -0 -2 -0 -1 -0 -0 -0 -1 -1 -1 -3 -0 -3 -3 -1 -1 -2 -2 -3 -0 -1 -2 -2 -0 -1 -1 -1 -2 -2 -0 -1 -2 -0 -0 -0 -1 -2 -1 -1 -3 -3 -2 -1 -1 -2 -4 -2 -4 -1 -2 -0 -1 -1 -0 -0 -1 -3 -2 -1 -0 -0 -1 -1 -1 -3 -4 -2 -5 -0 -0 -1 -3 -1 -1 -1 -2 -1 -3 -2 -1 -1 -1 -0 -0 -2 -1 -3 -2 -4 -1 -4 -1 -1 -1 -1 -3 -0 -0 -0 -0 -0 -0 -1 -1 -1 -0 -1 -1 -0 -3 -4 -0 -0 -2 -1 -2 -0 -1 -2 -2 -0 -1 -1 -0 -1 -0 -2 -0 -2 -3 -1 -0 -1 -0 -1 -0 -1 -1 -0 -2 -2 -2 -0 -2 -1 -0 -2 -3 -2 -1 -2 -1 -3 -7 -2 -2 -1 -2 -2 -1 -2 -1 -2 -3 -1 -1 -2 -3 -2 -1 -0 -1 -4 -1 -2 -1 -3 -0 -3 -0 -2 -2 -2 -2 -1 -4 -1 -0 -1 -0 -2 -2 -1 -3 -4 -1 -1 -1 -0 -1 -1 -3 -0 -1 -1 -3 -3 -3 -1 -1 -2 -4 -4 -6 -1 -2 -4 -2 -4 -2 -1 -1 -2 -1 -4 -2 -5 -3 -1 -3 -5 -0 -3 -3 -2 -2 -1 -2 -0 -3 -2 -3 -2 -3 -3 -6 -3 -0 -2 -2 -1 -3 -2 -2 -2 -3 -3 -3 -4 -3 -2 -1 -4 -2 -1 -1 -6 -1 -3 -7 -3 -4 -3 -2 -1 -6 -2 -4 -0 -1 -1 -1 -2 -0 -2 -5 -1 -5 -4 -5 -5 -2 -1 -4 -0 -4 -6 -5 -4 -3 -0 -5 -4 -6 -5 -5 -2 -4 -4 -3 -6 -4 -5 -0 -2 -6 -3 -6 -8 -6 -7 -2 -3 -8 -3 -4 -4 -6 -3 -3 -2 -4 -2 -5 -7 -8 -4 -6 -2 -6 -4 -10 -6 -12 -4 -5 -11 -9 -5 -5 -7 -4 -6 -1 -4 -8 -2 -5 -5 -4 -5 -10 -6 -6 -3 -11 -11 -4 -8 -8 -7 -5 -6 -7 -8 -10 -6 -15 -9 -6 -10 -12 -7 -10 -8 -9 -9 -4 -8 -5 -9 -6 -7 -3 -15 -11 -7 -17 -9 -12 -12 -12 -10 -8 -11 -8 -5 -9 -11 -15 -8 -12 -15 -8 -4 -7 -14 -11 -12 -9 -8 -7 -5 -12 -6 -13 -8 -9 -7 -10 -14 -8 -13 -8 -10 -10 -14 -11 -12 -5 -13 -11 -16 -10 -7 -16 -14 -16 -16 -7 -12 -15 -15 -14 -14 -11 -14 -12 -19 -16 -14 -17 -20 -9 -16 -13 -11 -12 -17 -15 -16 -16 -11 -14 -19 -7 -12 -23 -18 -16 -17 -11 -13 -16 -18 -14 -24 -13 -15 -21 -23 -12 -28 -19 -15 -24 -12 -17 -21 -22 -20 -15 -26 -21 -20 -33 -18 -25 -13 -20 -22 -19 -27 -27 -26 -33 -20 -21 -24 -25 -23 -31 -28 -33 -25 -28 -28 -34 -28 -27 -41 -35 -32 -36 -41 -36 -42 -39 -48 -38 -41 -44 -36 -38 -54 -55 -29 -42 -59 -58 -58 -50 -53 -48 -46 -43 -60 -49 -57 -61 -42 -63 -67 -62 -72 -84 -68 -58 -66 -82 -79 -81 -88 -86 -79 -88 -84 -80 -80 -87 -99 -98 -103 -92 -88 -82 -109 -98 -127 -105 -110 -100 -118 -110 -117 -117 -124 -103 -108 -126 -116 -98 -102 -108 -112 -106 -111 -108 -90 -113 -110 -102 -97 -99 -85 -113 -94 -96 -79 -108 -92 -82 -102 -81 -79 -85 -96 -72 -75 -77 -68 -96 -84 -81 -67 -62 -50 -59 -42 -55 -61 -54 -57 -54 -35 -44 -56 -53 -44 -54 -32 -52 -50 -38 -42 -52 -45 -42 -35 -46 -35 -42 -41 -33 -33 -26 -25 -24 -29 -26 -29 -26 -20 -26 -22 -24 -17 -24 -19 -17 -15 -18 -17 -31 -27 -23 -22 -25 -28 -17 -19 -14 -23 -19 -20 -17 -20 -20 -20 -14 -23 -14 -20 -19 -16 -16 -16 -8 -11 -19 -17 -9 -14 -14 -7 -11 -20 -14 -7 -12 -17 -13 -10 -14 -8 -11 -15 -14 -15 -9 -4 -14 -9 -7 -6 -8 -8 -10 -15 -9 -7 -11 -7 -10 -9 -12 -9 -9 -7 -15 -10 -9 -6 -1 -4 -6 -12 -6 -12 -7 -11 -7 -9 -10 -9 -7 -5 -7 -8 -7 -8 -3 -6 -7 -8 -10 -7 -3 -7 -6 -10 -7 -14 -8 -7 -6 -6 -5 -8 -10 -5 -9 -2 -2 -10 -4 -4 -7 -7 -4 -1 -8 -4 -6 -9 -11 -4 -4 -3 -5 -6 -5 -6 -6 -6 -2 -7 -6 -5 -5 -5 -4 -4 -2 -13 -10 -5 -3 -1 -2 -5 -3 -0 -4 -4 -5 -3 -3 -3 -7 -2 -3 -6 -2 -3 -2 -7 -2 -2 -1 -2 -2 -3 -2 -6 -4 -7 -1 -7 -1 -3 -5 -3 -8 -4 -6 -3 -4 -4 -3 -3 -4 -5 -6 -5 -2 -2 -4 -5 -6 -5 -3 -4 -4 -6 -6 -2 -2 -4 -4 -0 -3 -6 -2 -5 -3 -3 -2 -4 -4 -8 -3 -0 -0 -4 -0 -6 -3 -1 -2 -0 -3 -2 -3 -4 -7 -10 -9 -21 -18 -36 -51 -63 -78 -70 -84 -96 -101 -107 -112 -107 -111 -109 -89 -75 -66 -51 -45 -37 -22 -6 -10 -7 -6 -1 -2 -2 -0 -2 -0 -1 -0 -0 -0 -1 -0 -1 -2 -1 -0 -0 -1 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -1 -0 -0 -0 -0 -0 -0 -0 -0 -0 -1 -1 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -1 -0 -0 -0 -1 -0 -0 -0 -0 -0 -0 -1 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -1 -1 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -1 -0 -0 -0 -0 -0 -0 -0 -0 -1 -0 -0 -0 -<> -<> -RESC=?; Reset Configuration -CLCK=80; 20MHz/80MHz -TPEA=9.600; Peaking Time -GAIF=0.9312; Fine Gain -GAIN=21.162; Total Gain (Analog * Fine) -RESL=204; Detector Reset Lockout -TFLA=0.200; Flat Top -TPFA=50; Fast Channel Peaking Time -PURE=OFF; PUR Interval On/Off -RTDE=OFF; RTD On/Off -MCAS=NORM; MCA Source -MCAC=2048; MCA/MCS Channels -SOFF=OFF; Set Spectrum Offset -AINP=POS; Analog Input Pos/Neg -INOF=DEF; Input Offset -GAIA=15; Analog Gain Index -CUSP=0; Non-Trapezoidal Shaping -PDMD=NORM; Peak Detect Mode (Min/Max) -THSL=0.585; Slow Threshold -TLLD=OFF; LLD Threshold -THFA=230.00; Fast Threshold -DACO=SHAPED; DAC Output -DACF=50; DAC Offset -RTDS=0; RTD Sensitivity -RTDT=0.00; RTD Threshold -BLRM=1; BLR Mode -BLRD=3; BLR Down Correction -BLRU=0; BLR Up Correction -AUO1=SCA8; AUX_OUT Selection -PRET=OFF; Preset Time -PRER=3600.000; Preset Real Time -PREC=OFF; Preset Counts -PRCL=1; Preset Counts Low Threshold -PRCH=8191; Preset Counts High Threshold -HVSE=-110; HV Set -TECS=220; TEC Set -PAPZ=OFF; Pole-Zero -PAPS=8.5; Preamp 8.5/5 (N/A) -SCOE=FA; Scope Trigger Edge -SCOT=12; Scope Trigger Position -SCOG=1; Digital Scope Gain -MCSL=1; MCS Low Threshold -MCSH=8191; MCS High Threshold -MCST=0.00; MCS Timebase -AUO2=ICR; AUX_OUT2 Selection -TPMO=OFF; Test Pulser On/Off -GPED=RI; G.P. Counter Edge -GPIN=AUX1; G.P. Counter Input -GPME=ON; G.P. Counter Uses MCA_EN? -GPGA=ON; G.P. Counter Uses GATE? -GPMC=ON; G.P. Counter Cleared With MCA Counters? -MCAE=OFF; MCA/MCS Enable -VOLU=OFF; Speaker On/Off -CON1=DAC; Connector 1 -CON2=AUXOUT2; Connector 2 -<> -<> -Device Type: PX5 -Serial Number: 2264 -Firmware: 6.07 Build: 3 -FPGA: 6.02 -Fast Count: 10600 -Slow Count: 148745 -Accumulation Time: 3597.483000 -Real Time: 3600.000000 -Dead Time: -HV Volt: -110V -TEC Temp: 222K -Board Temp: 39C -<> diff --git a/XRA/Data/AuFilm_U232_22Aug.mca b/XRA/Data/AuFilm_U232_22Aug.mca deleted file mode 100644 index 89ca4bc..0000000 --- a/XRA/Data/AuFilm_U232_22Aug.mca +++ /dev/null @@ -1,1037 +0,0 @@ -<> -TAG - live_data -DESCRIPTION - -GAIN - 2 -THRESHOLD - 50 -LIVE_MODE - 0 -PRESET_TIME - 0 -LIVE_TIME - 3606.000000 -REAL_TIME - 3612.920000 -START_TIME - 08/22/2025 15:36:42 -SERIAL_NUMBER - 4114 -<> -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -30 -274 -247 -239 -217 -197 -168 -140 -138 -134 -119 -113 -111 -119 -98 -84 -88 -76 -56 -79 -74 -91 -80 -89 -62 -58 -64 -86 -68 -57 -83 -51 -58 -53 -58 -76 -55 -55 -47 -60 -59 -54 -40 -63 -67 -65 -57 -71 -65 -61 -58 -65 -67 -57 -59 -55 -62 -49 -73 -67 -67 -64 -71 -61 -59 -59 -65 -73 -64 -66 -51 -61 -64 -76 -73 -69 -72 -50 -76 -64 -65 -86 -66 -63 -72 -85 -69 -49 -63 -59 -66 -69 -55 -62 -77 -73 -83 -71 -79 -57 -67 -68 -95 -74 -77 -75 -76 -76 -73 -65 -73 -70 -89 -61 -83 -80 -75 -93 -83 -69 -69 -81 -72 -77 -76 -80 -75 -92 -91 -83 -76 -68 -67 -72 -77 -87 -66 -77 -90 -80 -70 -88 -88 -90 -90 -93 -76 -96 -90 -75 -80 -98 -102 -77 -71 -84 -78 -100 -81 -83 -93 -90 -81 -82 -74 -96 -80 -77 -72 -84 -84 -93 -105 -103 -108 -79 -80 -93 -102 -111 -84 -95 -88 -109 -90 -88 -96 -101 -88 -101 -105 -98 -100 -87 -97 -98 -87 -87 -92 -93 -84 -95 -91 -82 -85 -87 -109 -103 -91 -111 -95 -103 -102 -107 -101 -106 -93 -97 -104 -102 -103 -106 -94 -102 -117 -105 -125 -110 -112 -131 -125 -129 -118 -109 -140 -128 -147 -139 -142 -130 -138 -148 -143 -149 -150 -156 -140 -156 -131 -147 -135 -132 -129 -124 -130 -147 -121 -141 -123 -126 -145 -129 -140 -129 -143 -153 -153 -133 -149 -134 -131 -155 -137 -131 -147 -151 -162 -141 -140 -123 -153 -127 -158 -160 -164 -164 -157 -161 -145 -146 -147 -155 -127 -153 -156 -152 -150 -138 -159 -151 -153 -153 -185 -164 -143 -156 -156 -146 -137 -144 -125 -140 -159 -151 -163 -142 -161 -170 -149 -155 -152 -172 -151 -153 -186 -169 -156 -171 -172 -159 -172 -173 -180 -165 -170 -157 -168 -160 -162 -156 -167 -155 -154 -142 -163 -154 -164 -172 -167 -184 -187 -169 -169 -156 -154 -141 -146 -160 -184 -152 -194 -146 -154 -184 -170 -168 -163 -166 -160 -170 -160 -169 -164 -164 -159 -207 -187 -159 -154 -178 -165 -163 -181 -170 -178 -158 -162 -168 -180 -172 -165 -148 -190 -158 -172 -160 -177 -176 -172 -186 -180 -191 -168 -172 -181 -177 -194 -171 -181 -197 -182 -189 -186 -209 -178 -186 -185 -214 -208 -169 -172 -221 -181 -192 -205 -213 -189 -201 -207 -223 -179 -226 -231 -201 -216 -242 -213 -200 -213 -231 -223 -204 -218 -228 -218 -270 -236 -222 -223 -231 -223 -235 -233 -244 -260 -248 -247 -232 -263 -233 -239 -254 -223 -223 -237 -252 -245 -282 -278 -277 -246 -281 -285 -284 -289 -289 -296 -321 -287 -297 -333 -318 -314 -299 -314 -332 -335 -344 -392 -373 -401 -402 -460 -435 -435 -483 -482 -545 -526 -524 -655 -632 -779 -779 -828 -935 -995 -1176 -1312 -1528 -1939 -2219 -2556 -3382 -4221 -5272 -6292 -7619 -8989 -10564 -12105 -13754 -15108 -16479 -17356 -18504 -19156 -18977 -18780 -17976 -16380 -15080 -13765 -13268 -13294 -14185 -14683 -15112 -15420 -14807 -13372 -11466 -9278 -6918 -4925 -3561 -2661 -2073 -1687 -1333 -1230 -1171 -1092 -1180 -1246 -1493 -1776 -2203 -2786 -3759 -4883 -6437 -8211 -10417 -12687 -14702 -16350 -17570 -17820 -16823 -15277 -12437 -9557 -6831 -4665 -3246 -2424 -1805 -1421 -1141 -897 -707 -544 -444 -392 -310 -288 -259 -296 -257 -285 -314 -294 -357 -325 -425 -461 -554 -688 -789 -1081 -1317 -1781 -2294 -2849 -3705 -4384 -4945 -5549 -5931 -6013 -5846 -5411 -4832 -4111 -3368 -2670 -2205 -1755 -1530 -1273 -1155 -1223 -1281 -1560 -1857 -2354 -3187 -4292 -5795 -7672 -9949 -12500 -15032 -16959 -18779 -19106 -18626 -16850 -13854 -10360 -7454 -4892 -3273 -2289 -1782 -1380 -1046 -834 -576 -438 -340 -277 -241 -201 -182 -177 -181 -178 -159 -187 -193 -212 -189 -212 -238 -233 -257 -256 -289 -295 -342 -360 -436 -474 -534 -638 -737 -873 -1057 -1342 -1898 -2553 -3438 -4723 -6596 -8706 -11429 -14012 -16483 -18445 -19287 -19644 -18062 -15342 -11796 -8434 -5798 -3732 -2444 -1848 -1490 -1132 -774 -587 -415 -276 -203 -169 -121 -73 -56 -40 -39 -27 -29 -25 -33 -27 -20 -37 -26 -20 -31 -29 -21 -17 -15 -24 -30 -23 -23 -28 -20 -26 -25 -22 -22 -38 -24 -22 -29 -22 -25 -27 -26 -31 -26 -22 -30 -30 -25 -36 -22 -32 -30 -17 -26 -26 -22 -24 -34 -21 -34 -25 -23 -24 -24 -27 -28 -30 -31 -31 -30 -28 -27 -25 -29 -24 -22 -34 -44 -33 -36 -24 -26 -21 -35 -26 -34 -38 -44 -28 -26 -27 -35 -29 -32 -32 -33 -30 -34 -35 -32 -23 -26 -29 -31 -42 -31 -33 -34 -33 -33 -27 -27 -27 -22 -28 -22 -34 -30 -42 -31 -29 -23 -29 -27 -29 -26 -34 -42 -36 -34 -39 -42 -29 -27 -22 -31 -44 -37 -34 -51 -40 -37 -42 -47 -45 -38 -55 -52 -48 -43 -49 -49 -43 -53 -49 -62 -52 -44 -52 -57 -52 -75 -50 -56 -54 -57 -45 -62 -58 -68 -52 -58 -75 -70 -73 -66 -69 -72 -73 -100 -82 -84 -92 -102 -105 -119 -94 -91 -123 -113 -150 -127 -171 -156 -154 -202 -228 -269 -299 -381 -366 -493 -623 -792 -1126 -1514 -2260 -3260 -4555 -6209 -8261 -10431 -12120 -13684 -13777 -12789 -10632 -8090 -5536 -3646 -2429 -1748 -1365 -1065 -830 -621 -466 -347 -285 -180 -160 -126 -108 -77 -62 -47 -49 -41 -48 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -<> diff --git a/XRA/Data/Ba_Calibration.mca b/XRA/Data/Ba_Calibration.mca deleted file mode 100644 index 705b9fb..0000000 --- a/XRA/Data/Ba_Calibration.mca +++ /dev/null @@ -1,2132 +0,0 @@ -<> -TAG - live_data -DESCRIPTION - -GAIN - 3 -THRESHOLD - 0 -LIVE_MODE - 0 -PRESET_TIME - 0 -LIVE_TIME - 1786.862000 -REAL_TIME - 1788.197000 -START_TIME - 01/27/2000 00:57:45 -SERIAL_NUMBER - 0 -<> -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -200 -276 -270 -281 -288 -271 -261 -281 -291 -238 -282 -229 -250 -239 -228 -287 -226 -235 -234 -245 -223 -225 -194 -210 -205 -199 -209 -224 -217 -184 -201 -170 -178 -179 -168 -160 -193 -187 -155 -156 -170 -171 -170 -170 -178 -169 -159 -152 -168 -196 -177 -194 -189 -189 -154 -203 -181 -195 -203 -174 -171 -217 -174 -198 -197 -196 -208 -206 -185 -219 -171 -194 -210 -201 -185 -202 -204 -214 -211 -197 -203 -206 -207 -220 -205 -226 -225 -208 -204 -197 -181 -193 -227 -197 -209 -189 -211 -186 -194 -168 -178 -156 -155 -163 -148 -127 -157 -169 -136 -133 -122 -123 -112 -122 -121 -122 -110 -106 -121 -97 -111 -98 -95 -89 -76 -94 -112 -101 -141 -290 -494 -784 -853 -666 -408 -228 -136 -93 -81 -70 -116 -252 -478 -621 -635 -553 -375 -305 -202 -131 -104 -101 -148 -209 -231 -213 -152 -114 -63 -44 -45 -52 -61 -70 -91 -88 -100 -77 -61 -52 -42 -38 -42 -37 -43 -52 -45 -36 -30 -35 -35 -34 -24 -27 -29 -24 -23 -19 -17 -24 -38 -49 -72 -79 -98 -95 -60 -40 -35 -20 -20 -11 -23 -21 -19 -21 -15 -24 -16 -18 -16 -15 -22 -31 -36 -35 -25 -27 -24 -22 -16 -14 -16 -22 -22 -40 -64 -68 -102 -97 -90 -58 -30 -22 -16 -19 -23 -15 -12 -12 -16 -19 -17 -19 -14 -23 -15 -11 -15 -20 -15 -22 -24 -27 -40 -23 -19 -19 -16 -19 -9 -15 -10 -16 -17 -17 -13 -15 -8 -11 -18 -16 -12 -12 -12 -10 -13 -8 -11 -7 -11 -10 -8 -14 -15 -14 -15 -16 -14 -11 -13 -8 -7 -9 -11 -9 -14 -11 -21 -12 -17 -13 -12 -14 -11 -16 -9 -11 -11 -12 -13 -11 -9 -12 -9 -11 -8 -9 -10 -5 -11 -6 -17 -21 -19 -28 -31 -29 -33 -35 -21 -20 -13 -14 -6 -8 -14 -17 -11 -9 -12 -8 -8 -13 -11 -7 -7 -15 -9 -5 -13 -7 -10 -11 -13 -14 -19 -15 -12 -11 -3 -11 -7 -4 -7 -14 -9 -6 -8 -8 -4 -5 -6 -5 -7 -5 -5 -5 -6 -9 -9 -8 -10 -8 -9 -5 -7 -9 -8 -8 -9 -16 -22 -22 -38 -17 -30 -15 -12 -6 -14 -11 -7 -6 -12 -8 -9 -6 -7 -6 -10 -11 -2 -8 -5 -11 -3 -3 -6 -11 -5 -11 -10 -7 -4 -6 -5 -5 -8 -3 -3 -7 -6 -3 -5 -15 -26 -24 -67 -116 -195 -269 -328 -367 -356 -341 -275 -202 -114 -67 -34 -17 -13 -4 -1 -8 -3 -8 -6 -7 -8 -9 -7 -13 -14 -11 -4 -8 -4 -7 -8 -3 -9 -6 -11 -9 -11 -8 -10 -6 -9 -3 -5 -10 -2 -4 -10 -4 -10 -5 -8 -24 -18 -22 -41 -40 -63 -76 -76 -81 -67 -22 -32 -32 -18 -14 -15 -11 -15 -8 -7 -12 -8 -6 -6 -5 -7 -5 -5 -8 -0 -7 -6 -8 -7 -3 -3 -5 -6 -13 -4 -2 -3 -8 -5 -4 -4 -9 -8 -9 -10 -8 -9 -5 -9 -2 -6 -6 -6 -7 -6 -2 -6 -8 -5 -9 -5 -4 -7 -3 -5 -7 -8 -3 -7 -7 -9 -4 -9 -6 -2 -6 -3 -8 -8 -2 -3 -7 -10 -6 -8 -11 -4 -3 -8 -6 -2 -3 -5 -4 -5 -2 -4 -2 -2 -7 -4 -3 -5 -7 -4 -8 -1 -9 -2 -7 -3 -2 -5 -4 -4 -10 -10 -2 -3 -7 -5 -2 -2 -6 -10 -4 -4 -7 -4 -7 -3 -13 -5 -7 -6 -5 -4 -3 -3 -9 -12 -2 -2 -5 -5 -5 -3 -6 -3 -5 -4 -5 -5 -8 -4 -5 -6 -7 -2 -4 -6 -8 -4 -7 -5 -3 -4 -6 -9 -1 -6 -2 -4 -6 -7 -3 -5 -4 -8 -4 -6 -7 -4 -4 -6 -4 -2 -2 -2 -8 -3 -7 -2 -1 -4 -7 -10 -7 -3 -8 -6 -7 -2 -6 -4 -7 -6 -7 -2 -8 -3 -8 -3 -7 -5 -5 -7 -2 -6 -10 -6 -3 -6 -5 -0 -5 -8 -3 -10 -7 -7 -4 -7 -7 -9 -4 -6 -6 -4 -7 -8 -9 -2 -2 -3 -6 -9 -9 -5 -5 -6 -5 -4 -13 -6 -12 -9 -7 -4 -4 -5 -9 -6 -2 -4 -4 -11 -10 -4 -8 -3 -6 -4 -7 -8 -9 -8 -5 -3 -13 -3 -5 -4 -5 -6 -8 -8 -6 -7 -6 -12 -13 -3 -11 -12 -8 -11 -9 -14 -17 -13 -11 -16 -16 -13 -12 -21 -13 -10 -19 -10 -10 -10 -10 -2 -8 -9 -6 -5 -10 -13 -7 -6 -12 -6 -10 -13 -11 -6 -13 -6 -16 -14 -5 -7 -16 -19 -14 -11 -15 -20 -10 -20 -13 -20 -18 -12 -15 -7 -13 -9 -11 -11 -10 -10 -9 -16 -11 -9 -10 -8 -10 -12 -10 -15 -16 -12 -9 -22 -12 -21 -21 -17 -20 -22 -15 -8 -15 -19 -22 -15 -30 -33 -11 -23 -24 -21 -20 -23 -18 -20 -33 -25 -29 -38 -31 -28 -29 -31 -50 -39 -50 -37 -47 -49 -47 -58 -54 -64 -56 -61 -75 -61 -63 -83 -69 -86 -76 -77 -69 -84 -87 -86 -95 -67 -67 -92 -88 -78 -93 -83 -84 -120 -91 -81 -86 -78 -89 -90 -81 -81 -74 -72 -71 -81 -93 -57 -80 -95 -63 -99 -72 -67 -68 -66 -66 -76 -71 -63 -70 -64 -62 -61 -57 -67 -54 -66 -69 -66 -68 -59 -55 -51 -65 -46 -62 -62 -61 -56 -55 -49 -55 -62 -57 -53 -35 -66 -53 -57 -56 -50 -61 -75 -55 -57 -49 -65 -70 -71 -63 -78 -96 -78 -91 -141 -185 -272 -406 -643 -934 -1447 -1971 -2667 -3349 -4160 -4520 -4887 -4942 -4997 -4574 -4227 -4219 -4291 -4730 -5441 -6300 -7466 -8010 -8596 -8720 -7904 -7093 -6110 -4816 -3545 -2544 -1743 -1128 -701 -448 -284 -165 -134 -77 -76 -68 -72 -47 -51 -44 -42 -39 -32 -33 -25 -37 -27 -23 -26 -26 -27 -30 -24 -28 -25 -24 -24 -21 -27 -20 -26 -24 -17 -22 -25 -14 -22 -18 -20 -22 -20 -19 -18 -16 -16 -13 -12 -15 -29 -13 -26 -17 -14 -15 -16 -8 -15 -12 -19 -8 -11 -15 -17 -20 -14 -18 -15 -20 -22 -16 -15 -12 -14 -14 -9 -13 -21 -22 -21 -8 -8 -16 -13 -16 -20 -8 -23 -19 -13 -19 -20 -9 -8 -15 -11 -14 -19 -15 -15 -12 -13 -18 -19 -19 -21 -28 -33 -25 -31 -53 -77 -76 -126 -216 -321 -505 -636 -854 -1115 -1285 -1549 -1730 -1784 -1713 -1672 -1449 -1287 -1102 -866 -649 -479 -276 -217 -169 -96 -61 -46 -41 -37 -39 -42 -44 -66 -79 -127 -156 -205 -261 -300 -356 -391 -409 -375 -394 -354 -330 -238 -244 -167 -119 -92 -74 -46 -30 -29 -14 -8 -7 -4 -3 -4 -4 -2 -3 -0 -1 -0 -0 -4 -0 -2 -1 -0 -1 -2 -1 -2 -0 -1 -1 -2 -1 -3 -1 -0 -2 -0 -0 -2 -2 -2 -2 -1 -1 -0 -1 -0 -1 -2 -0 -2 -0 -0 -1 -0 -1 -2 -0 -1 -1 -3 -2 -1 -0 -3 -0 -1 -0 -1 -5 -1 -2 -5 -1 -2 -0 -0 -0 -3 -1 -1 -2 -2 -1 -2 -0 -1 -3 -1 -1 -0 -0 -3 -2 -0 -0 -2 -1 -1 -0 -0 -0 -0 -1 -1 -1 -1 -3 -1 -1 -1 -2 -1 -1 -2 -3 -0 -0 -2 -1 -4 -1 -4 -2 -3 -1 -1 -2 -2 -1 -3 -3 -0 -7 -1 -3 -1 -0 -1 -4 -3 -1 -3 -1 -2 -3 -0 -4 -2 -1 -3 -1 -2 -3 -0 -1 -2 -1 -4 -0 -1 -1 -1 -5 -2 -4 -3 -3 -2 -1 -1 -3 -7 -0 -1 -2 -4 -5 -1 -1 -3 -3 -5 -2 -5 -4 -3 -3 -1 -0 -3 -0 -6 -4 -0 -2 -0 -2 -4 -4 -3 -4 -3 -2 -2 -3 -1 -3 -2 -3 -1 -3 -3 -2 -3 -2 -5 -2 -1 -3 -2 -4 -3 -5 -1 -2 -5 -2 -3 -0 -1 -4 -1 -2 -4 -4 -4 -2 -1 -5 -6 -2 -3 -4 -2 -6 -4 -2 -2 -4 -4 -2 -4 -2 -2 -4 -2 -2 -2 -5 -5 -2 -3 -5 -1 -3 -4 -1 -3 -3 -6 -2 -2 -6 -3 -5 -4 -3 -4 -4 -5 -4 -3 -3 -3 -2 -5 -10 -3 -4 -5 -4 -5 -5 -2 -7 -5 -5 -10 -7 -5 -10 -5 -5 -5 -6 -5 -8 -7 -8 -11 -2 -4 -5 -9 -5 -7 -8 -7 -5 -7 -8 -5 -14 -9 -9 -9 -12 -11 -7 -5 -8 -13 -6 -10 -9 -14 -15 -11 -14 -12 -19 -10 -13 -12 -12 -12 -18 -14 -27 -18 -20 -22 -19 -15 -16 -23 -19 -17 -33 -25 -16 -19 -24 -31 -26 -28 -21 -29 -30 -19 -33 -16 -24 -35 -16 -24 -27 -37 -32 -22 -30 -23 -33 -30 -32 -28 -28 -25 -22 -25 -22 -19 -33 -22 -23 -24 -18 -23 -24 -19 -25 -19 -17 -16 -21 -21 -8 -15 -18 -18 -13 -17 -18 -21 -13 -16 -19 -19 -6 -8 -11 -4 -14 -8 -14 -11 -11 -7 -8 -8 -9 -9 -10 -8 -14 -8 -8 -9 -8 -10 -5 -10 -5 -9 -5 -5 -2 -6 -5 -5 -8 -3 -5 -6 -3 -4 -4 -5 -5 -7 -4 -5 -3 -7 -5 -4 -1 -2 -1 -3 -7 -6 -5 -5 -5 -2 -7 -3 -0 -2 -1 -4 -4 -3 -3 -5 -3 -0 -4 -6 -1 -3 -2 -1 -3 -4 -0 -3 -5 -3 -3 -2 -2 -3 -2 -1 -3 -2 -4 -5 -3 -1 -2 -2 -3 -1 -2 -6 -2 -1 -4 -5 -0 -1 -2 -2 -3 -4 -5 -1 -2 -0 -2 -1 -0 -1 -1 -8 -2 -5 -2 -2 -0 -2 -2 -1 -2 -2 -4 -4 -3 -3 -2 -0 -2 -2 -0 -0 -5 -4 -2 -3 -2 -1 -2 -2 -3 -1 -0 -1 -0 -1 -2 -3 -0 -0 -1 -1 -2 -0 -0 -0 -2 -3 -2 -2 -3 -0 -1 -4 -2 -2 -1 -0 -2 -1 -1 -2 -0 -5 -1 -2 -0 -2 -0 -2 -2 -0 -3 -1 -1 -1 -1 -1 -4 -1 -0 -3 -0 -0 -4 -1 -2 -1 -4 -1 -2 -3 -2 -3 -4 -0 -0 -1 -1 -1 -0 -2 -0 -1 -0 -5 -1 -0 -2 -1 -1 -1 -0 -1 -2 -1 -1 -2 -2 -2 -0 -2 -1 -1 -1 -1 -4 -1 -0 -1 -1 -1 -2 -1 -1 -0 -2 -1 -2 -2 -1 -1 -0 -3 -2 -2 -0 -1 -1 -2 -1 -3 -4 -0 -2 -6 -7 -7 -6 -16 -19 -22 -18 -29 -43 -44 -37 -44 -54 -60 -59 -48 -53 -48 -35 -22 -27 -16 -14 -13 -9 -6 -3 -3 -2 -1 -0 -0 -0 -0 -0 -0 -1 -0 -0 -0 -0 -0 -1 -0 -0 -0 -0 -0 -0 -0 -0 -1 -0 -1 -0 -1 -1 -0 -0 -0 -0 -0 -1 -0 -0 -1 -0 -0 -1 -0 -0 -0 -0 -1 -0 -0 -1 -0 -0 -0 -0 -0 -1 -0 -0 -0 -0 -1 -0 -1 -0 -0 -0 -1 -0 -2 -0 -0 -0 -1 -0 -0 -0 -2 -0 -0 -1 -0 -1 -0 -0 -0 -0 -0 -0 -1 -0 -1 -1 -0 -1 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -1 -0 -1 -1 -0 -2 -0 -0 -1 -0 -0 -0 -0 -1 -0 -<> -<> -RESC=?; Reset Configuration -CLCK=80; 20MHz/80MHz -TPEA=9.600; Peaking Time -GAIF=0.9312; Fine Gain -GAIN=21.162; Total Gain (Analog * Fine) -RESL=204; Detector Reset Lockout -TFLA=0.200; Flat Top -TPFA=50; Fast Channel Peaking Time -PURE=OFF; PUR Interval On/Off -RTDE=OFF; RTD On/Off -MCAS=NORM; MCA Source -MCAC=2048; MCA/MCS Channels -SOFF=OFF; Set Spectrum Offset -AINP=POS; Analog Input Pos/Neg -INOF=DEF; Input Offset -GAIA=15; Analog Gain Index -CUSP=0; Non-Trapezoidal Shaping -PDMD=NORM; Peak Detect Mode (Min/Max) -THSL=0.585; Slow Threshold -TLLD=OFF; LLD Threshold -THFA=230.00; Fast Threshold -DACO=SHAPED; DAC Output -DACF=50; DAC Offset -RTDS=0; RTD Sensitivity -RTDT=0.00; RTD Threshold -BLRM=1; BLR Mode -BLRD=3; BLR Down Correction -BLRU=0; BLR Up Correction -AUO1=SCA8; AUX_OUT Selection -PRET=OFF; Preset Time -PRER=1800.000; Preset Real Time -PREC=OFF; Preset Counts -PRCL=1; Preset Counts Low Threshold -PRCH=8191; Preset Counts High Threshold -HVSE=-110; HV Set -TECS=220; TEC Set -PAPZ=OFF; Pole-Zero -PAPS=8.5; Preamp 8.5/5 (N/A) -SCOE=FA; Scope Trigger Edge -SCOT=12; Scope Trigger Position -SCOG=1; Digital Scope Gain -MCSL=1; MCS Low Threshold -MCSH=8191; MCS High Threshold -MCST=0.00; MCS Timebase -AUO2=ICR; AUX_OUT2 Selection -TPMO=OFF; Test Pulser On/Off -GPED=RI; G.P. Counter Edge -GPIN=AUX1; G.P. Counter Input -GPME=ON; G.P. Counter Uses MCA_EN? -GPGA=ON; G.P. Counter Uses GATE? -GPMC=ON; G.P. Counter Cleared With MCA Counters? -MCAE=OFF; MCA/MCS Enable -VOLU=OFF; Speaker On/Off -CON1=DAC; Connector 1 -CON2=AUXOUT2; Connector 2 -<> -<> -Device Type: PX5 -Serial Number: 2264 -Firmware: 6.07 Build: 3 -FPGA: 6.02 -Fast Count: 3685 -Slow Count: 223651 -Accumulation Time: 1786.862000 -Real Time: 1788.197000 -Dead Time: -HV Volt: -110V -TEC Temp: 220K -Board Temp: 36C -<> diff --git a/XRA/Data/Be_Calibration.mca b/XRA/Data/Be_Calibration.mca deleted file mode 100644 index 6ed6f46..0000000 --- a/XRA/Data/Be_Calibration.mca +++ /dev/null @@ -1,2132 +0,0 @@ -<> -TAG - live_data -DESCRIPTION - -GAIN - 3 -THRESHOLD - 0 -LIVE_MODE - 0 -PRESET_TIME - 0 -LIVE_TIME - 760.681000 -REAL_TIME - 761.253000 -START_TIME - 01/27/2000 02:56:46 -SERIAL_NUMBER - 0 -<> -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -93 -113 -143 -112 -119 -121 -112 -123 -124 -127 -108 -110 -102 -102 -98 -97 -93 -83 -87 -108 -93 -109 -102 -84 -93 -78 -81 -90 -70 -104 -86 -73 -75 -95 -82 -85 -69 -75 -91 -87 -77 -70 -89 -68 -76 -70 -90 -79 -82 -89 -102 -95 -85 -66 -87 -73 -66 -82 -81 -87 -82 -84 -86 -97 -95 -93 -80 -91 -83 -87 -88 -86 -92 -93 -83 -95 -77 -80 -120 -76 -88 -84 -86 -80 -99 -92 -79 -104 -101 -101 -102 -84 -93 -85 -73 -90 -68 -69 -82 -77 -63 -73 -64 -65 -69 -51 -58 -62 -61 -46 -47 -45 -42 -44 -40 -57 -50 -39 -46 -42 -42 -45 -38 -36 -32 -40 -46 -52 -60 -125 -208 -323 -366 -272 -182 -97 -50 -33 -26 -32 -56 -101 -173 -269 -295 -264 -171 -123 -80 -50 -40 -56 -65 -92 -107 -107 -69 -48 -29 -23 -17 -20 -22 -28 -35 -32 -42 -32 -32 -25 -15 -18 -25 -17 -20 -22 -15 -10 -12 -23 -10 -10 -9 -8 -17 -6 -5 -12 -9 -9 -19 -24 -23 -37 -32 -50 -26 -22 -14 -8 -10 -8 -6 -9 -7 -7 -3 -10 -9 -13 -12 -9 -6 -15 -13 -21 -17 -12 -13 -11 -10 -10 -6 -8 -12 -14 -15 -38 -41 -41 -26 -21 -22 -8 -8 -9 -9 -6 -9 -9 -4 -7 -4 -9 -5 -7 -10 -6 -5 -6 -7 -7 -12 -12 -9 -8 -13 -13 -9 -4 -4 -10 -5 -5 -4 -7 -1 -2 -4 -7 -4 -2 -4 -1 -2 -2 -6 -4 -2 -4 -5 -5 -2 -3 -4 -7 -5 -6 -4 -7 -6 -6 -3 -5 -4 -4 -4 -3 -6 -7 -10 -6 -7 -7 -2 -3 -5 -2 -4 -3 -4 -5 -4 -4 -4 -5 -2 -3 -4 -6 -3 -2 -3 -8 -6 -7 -14 -11 -16 -16 -13 -13 -9 -7 -3 -5 -5 -2 -5 -4 -6 -7 -1 -2 -1 -3 -2 -1 -4 -7 -2 -4 -8 -4 -3 -5 -5 -5 -3 -4 -4 -2 -3 -4 -4 -5 -1 -4 -3 -5 -2 -1 -2 -6 -5 -2 -3 -4 -4 -4 -10 -1 -3 -4 -1 -1 -6 -7 -3 -4 -4 -2 -7 -11 -9 -12 -9 -7 -9 -3 -4 -2 -4 -3 -4 -2 -1 -1 -4 -3 -0 -3 -2 -5 -2 -3 -3 -3 -4 -3 -1 -6 -5 -2 -3 -5 -5 -4 -6 -0 -6 -3 -4 -2 -7 -4 -8 -15 -26 -52 -85 -121 -165 -180 -172 -166 -114 -84 -46 -33 -21 -6 -3 -6 -2 -7 -4 -2 -4 -1 -2 -5 -6 -4 -3 -4 -3 -4 -0 -2 -1 -2 -1 -1 -3 -3 -2 -2 -3 -3 -3 -3 -0 -2 -5 -8 -3 -3 -3 -4 -4 -12 -7 -14 -17 -20 -24 -22 -25 -21 -29 -15 -10 -6 -9 -7 -6 -4 -3 -5 -6 -4 -0 -3 -0 -0 -1 -4 -4 -3 -1 -2 -5 -0 -2 -4 -0 -2 -5 -0 -1 -3 -2 -3 -3 -1 -2 -2 -3 -2 -1 -2 -1 -3 -3 -2 -4 -2 -6 -2 -1 -2 -3 -2 -2 -2 -4 -3 -0 -1 -4 -5 -0 -3 -2 -5 -4 -4 -3 -4 -0 -1 -3 -4 -0 -2 -0 -0 -2 -1 -5 -1 -0 -1 -2 -1 -4 -1 -5 -3 -2 -2 -0 -0 -2 -5 -2 -3 -0 -4 -2 -3 -1 -5 -2 -2 -1 -0 -2 -0 -3 -2 -0 -2 -2 -3 -4 -2 -1 -4 -4 -3 -1 -1 -2 -1 -2 -3 -1 -5 -3 -1 -1 -1 -2 -3 -2 -2 -2 -1 -0 -3 -2 -2 -2 -1 -1 -2 -1 -3 -3 -0 -3 -3 -3 -3 -0 -1 -1 -4 -5 -3 -1 -1 -4 -1 -3 -2 -4 -5 -3 -0 -0 -1 -2 -2 -2 -2 -0 -2 -4 -4 -3 -1 -3 -1 -5 -3 -4 -3 -1 -4 -2 -2 -3 -4 -1 -0 -1 -2 -1 -2 -1 -5 -3 -4 -1 -1 -1 -2 -2 -1 -2 -2 -7 -3 -1 -1 -4 -1 -2 -3 -3 -1 -4 -2 -3 -3 -0 -2 -1 -6 -3 -2 -2 -1 -2 -1 -2 -1 -2 -2 -2 -0 -1 -7 -4 -4 -1 -2 -5 -4 -2 -2 -5 -6 -3 -6 -3 -4 -6 -4 -3 -3 -3 -3 -6 -1 -3 -2 -3 -1 -3 -4 -1 -5 -3 -8 -1 -4 -3 -3 -3 -1 -3 -2 -3 -2 -5 -4 -4 -5 -5 -5 -6 -4 -4 -7 -10 -8 -7 -7 -3 -5 -5 -5 -7 -2 -3 -1 -2 -1 -3 -5 -5 -0 -2 -3 -3 -0 -7 -4 -3 -2 -1 -5 -0 -4 -8 -3 -5 -5 -4 -8 -7 -7 -4 -4 -5 -7 -5 -8 -4 -7 -6 -7 -9 -8 -3 -8 -4 -4 -5 -6 -8 -6 -8 -3 -4 -8 -8 -10 -5 -2 -6 -8 -2 -5 -5 -6 -6 -9 -6 -4 -7 -3 -11 -10 -9 -12 -11 -14 -17 -17 -9 -9 -9 -13 -16 -16 -14 -2 -14 -10 -17 -15 -20 -14 -13 -27 -27 -27 -23 -23 -27 -36 -19 -28 -32 -24 -22 -34 -38 -32 -34 -39 -32 -27 -35 -26 -24 -36 -32 -37 -43 -34 -45 -34 -32 -38 -33 -31 -44 -27 -31 -33 -33 -33 -27 -28 -34 -40 -29 -32 -31 -40 -39 -45 -24 -30 -29 -26 -30 -33 -40 -27 -14 -24 -22 -21 -28 -25 -30 -20 -32 -26 -23 -27 -25 -29 -21 -25 -20 -17 -23 -30 -32 -19 -14 -30 -34 -33 -27 -25 -27 -30 -28 -17 -27 -40 -20 -25 -28 -35 -24 -30 -25 -29 -46 -47 -62 -95 -113 -163 -248 -430 -543 -802 -1123 -1367 -1739 -1956 -2007 -2131 -2080 -1894 -1877 -1777 -1803 -1995 -2298 -2641 -3218 -3373 -3685 -3606 -3444 -3105 -2697 -2137 -1545 -1148 -827 -502 -340 -192 -134 -55 -42 -34 -34 -23 -16 -29 -21 -22 -18 -12 -15 -13 -14 -11 -10 -11 -11 -18 -8 -9 -17 -10 -11 -8 -4 -9 -16 -12 -12 -9 -5 -10 -5 -5 -8 -6 -7 -4 -10 -8 -7 -8 -7 -6 -15 -6 -8 -4 -5 -2 -7 -6 -4 -6 -5 -9 -8 -3 -8 -8 -5 -5 -17 -10 -8 -6 -6 -5 -10 -4 -3 -6 -7 -7 -8 -6 -6 -2 -6 -5 -5 -8 -6 -6 -6 -1 -6 -9 -5 -9 -8 -6 -9 -8 -6 -6 -10 -10 -4 -8 -10 -10 -7 -7 -17 -18 -18 -20 -29 -51 -64 -87 -140 -207 -267 -330 -451 -556 -621 -723 -692 -706 -697 -647 -542 -388 -357 -292 -207 -142 -87 -69 -42 -25 -23 -18 -14 -21 -20 -22 -29 -35 -50 -68 -78 -121 -130 -158 -143 -167 -179 -160 -141 -124 -102 -87 -61 -62 -40 -40 -22 -12 -10 -4 -2 -2 -3 -2 -2 -0 -1 -0 -1 -1 -2 -0 -0 -0 -0 -0 -0 -0 -0 -1 -1 -0 -3 -0 -0 -0 -2 -0 -0 -0 -0 -0 -1 -0 -0 -3 -0 -1 -1 -1 -0 -2 -0 -0 -1 -1 -1 -0 -0 -0 -0 -0 -0 -0 -0 -1 -2 -2 -0 -0 -1 -0 -0 -0 -0 -0 -1 -1 -3 -2 -1 -0 -0 -0 -0 -0 -0 -0 -0 -0 -2 -2 -0 -0 -0 -0 -1 -0 -0 -0 -0 -0 -0 -0 -2 -0 -1 -0 -0 -0 -1 -0 -0 -0 -1 -1 -1 -0 -0 -1 -1 -0 -0 -1 -1 -0 -0 -0 -1 -1 -0 -3 -0 -1 -1 -1 -1 -1 -0 -1 -0 -0 -1 -0 -1 -0 -0 -0 -0 -0 -1 -2 -0 -4 -0 -0 -0 -1 -0 -1 -2 -1 -2 -0 -0 -0 -0 -1 -0 -0 -1 -0 -1 -0 -0 -0 -0 -0 -0 -1 -1 -1 -0 -3 -2 -1 -0 -1 -1 -2 -4 -1 -0 -0 -0 -2 -0 -1 -1 -1 -1 -2 -1 -1 -1 -1 -2 -1 -1 -1 -0 -0 -0 -2 -1 -0 -0 -0 -1 -2 -0 -1 -2 -0 -2 -0 -1 -1 -0 -0 -3 -0 -0 -0 -3 -2 -1 -1 -3 -3 -1 -2 -1 -2 -3 -1 -1 -1 -0 -1 -0 -2 -1 -3 -2 -1 -0 -0 -2 -0 -0 -1 -2 -2 -4 -2 -1 -2 -3 -1 -2 -4 -1 -0 -1 -0 -2 -3 -4 -2 -0 -2 -2 -4 -1 -3 -2 -2 -1 -0 -2 -0 -2 -0 -2 -3 -2 -2 -1 -0 -3 -2 -3 -0 -2 -2 -2 -1 -3 -7 -2 -2 -2 -2 -5 -2 -6 -2 -0 -2 -1 -3 -5 -4 -1 -4 -2 -4 -4 -3 -3 -6 -7 -3 -3 -6 -7 -4 -6 -6 -11 -5 -5 -7 -3 -7 -10 -9 -10 -6 -7 -9 -6 -6 -13 -6 -7 -9 -12 -8 -8 -11 -9 -10 -15 -9 -19 -19 -14 -8 -12 -18 -9 -14 -11 -14 -9 -12 -15 -20 -13 -11 -15 -12 -11 -11 -11 -12 -12 -12 -14 -9 -15 -12 -18 -13 -11 -6 -13 -7 -4 -8 -9 -17 -10 -8 -2 -9 -15 -15 -7 -7 -3 -3 -2 -6 -9 -5 -2 -7 -9 -4 -7 -6 -11 -4 -3 -6 -3 -5 -4 -2 -7 -10 -4 -4 -3 -2 -2 -2 -4 -4 -1 -3 -2 -2 -4 -4 -2 -3 -3 -4 -1 -2 -3 -2 -1 -2 -1 -3 -5 -2 -4 -3 -0 -0 -3 -1 -1 -0 -0 -1 -2 -4 -0 -2 -2 -1 -3 -0 -3 -2 -2 -0 -3 -2 -1 -0 -0 -0 -2 -0 -0 -0 -1 -3 -2 -2 -1 -3 -4 -2 -0 -2 -0 -2 -0 -1 -0 -3 -0 -2 -1 -3 -0 -0 -1 -1 -1 -4 -3 -0 -0 -1 -4 -0 -2 -0 -1 -2 -1 -2 -3 -3 -0 -1 -3 -1 -1 -1 -1 -0 -0 -0 -1 -0 -1 -0 -0 -2 -1 -1 -0 -1 -0 -0 -0 -2 -1 -1 -0 -1 -1 -1 -2 -2 -1 -0 -0 -2 -1 -0 -1 -0 -0 -0 -2 -1 -0 -1 -1 -1 -1 -1 -0 -1 -0 -0 -0 -3 -2 -1 -0 -0 -0 -1 -3 -0 -0 -1 -1 -2 -1 -2 -1 -1 -0 -0 -2 -0 -1 -1 -1 -0 -0 -0 -0 -0 -1 -2 -1 -1 -0 -0 -0 -0 -1 -0 -0 -1 -1 -0 -1 -0 -1 -0 -1 -0 -1 -1 -1 -0 -0 -1 -0 -0 -0 -0 -1 -0 -0 -0 -0 -1 -1 -0 -1 -0 -0 -2 -0 -0 -0 -1 -1 -0 -1 -2 -1 -1 -0 -0 -0 -0 -1 -1 -1 -0 -1 -2 -1 -0 -1 -0 -2 -1 -1 -0 -1 -2 -0 -0 -2 -0 -1 -2 -0 -2 -3 -6 -3 -7 -10 -17 -12 -12 -28 -18 -25 -14 -25 -26 -12 -13 -18 -17 -10 -13 -7 -3 -6 -2 -1 -1 -3 -1 -0 -1 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -1 -0 -0 -0 -0 -0 -0 -0 -0 -1 -0 -1 -1 -0 -0 -0 -0 -0 -0 -2 -0 -0 -0 -2 -0 -0 -0 -0 -0 -0 -0 -0 -0 -1 -0 -0 -0 -0 -0 -0 -0 -0 -0 -1 -0 -1 -0 -0 -0 -0 -1 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -1 -0 -1 -0 -0 -0 -0 -0 -2 -0 -0 -0 -1 -0 -0 -0 -0 -0 -0 -1 -0 -0 -0 -1 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -<> -<> -RESC=?; Reset Configuration -CLCK=80; 20MHz/80MHz -TPEA=9.600; Peaking Time -GAIF=0.9312; Fine Gain -GAIN=21.162; Total Gain (Analog * Fine) -RESL=204; Detector Reset Lockout -TFLA=0.200; Flat Top -TPFA=50; Fast Channel Peaking Time -PURE=OFF; PUR Interval On/Off -RTDE=OFF; RTD On/Off -MCAS=NORM; MCA Source -MCAC=2048; MCA/MCS Channels -SOFF=OFF; Set Spectrum Offset -AINP=POS; Analog Input Pos/Neg -INOF=DEF; Input Offset -GAIA=15; Analog Gain Index -CUSP=0; Non-Trapezoidal Shaping -PDMD=NORM; Peak Detect Mode (Min/Max) -THSL=0.585; Slow Threshold -TLLD=OFF; LLD Threshold -THFA=230.00; Fast Threshold -DACO=SHAPED; DAC Output -DACF=50; DAC Offset -RTDS=0; RTD Sensitivity -RTDT=0.00; RTD Threshold -BLRM=1; BLR Mode -BLRD=3; BLR Down Correction -BLRU=0; BLR Up Correction -AUO1=SCA8; AUX_OUT Selection -PRET=OFF; Preset Time -PRER=1800.000; Preset Real Time -PREC=OFF; Preset Counts -PRCL=1; Preset Counts Low Threshold -PRCH=8191; Preset Counts High Threshold -HVSE=-110; HV Set -TECS=220; TEC Set -PAPZ=OFF; Pole-Zero -PAPS=8.5; Preamp 8.5/5 (N/A) -SCOE=FA; Scope Trigger Edge -SCOT=12; Scope Trigger Position -SCOG=1; Digital Scope Gain -MCSL=1; MCS Low Threshold -MCSH=8191; MCS High Threshold -MCST=0.00; MCS Timebase -AUO2=ICR; AUX_OUT2 Selection -TPMO=OFF; Test Pulser On/Off -GPED=RI; G.P. Counter Edge -GPIN=AUX1; G.P. Counter Input -GPME=ON; G.P. Counter Uses MCA_EN? -GPGA=ON; G.P. Counter Uses GATE? -GPMC=ON; G.P. Counter Cleared With MCA Counters? -MCAE=OFF; MCA/MCS Enable -VOLU=OFF; Speaker On/Off -CON1=DAC; Connector 1 -CON2=AUXOUT2; Connector 2 -<> -<> -Device Type: PX5 -Serial Number: 2264 -Firmware: 6.07 Build: 3 -FPGA: 6.02 -Fast Count: 1559 -Slow Count: 95407 -Accumulation Time: 760.681000 -Real Time: 761.253000 -Dead Time: -HV Volt: -110V -TEC Temp: 221K -Board Temp: 37C -<> diff --git a/XRA/Data/Calib_Ra_27Aug.mca b/XRA/Data/Calib_Ra_27Aug.mca deleted file mode 100755 index c542c39..0000000 --- a/XRA/Data/Calib_Ra_27Aug.mca +++ /dev/null @@ -1,1037 +0,0 @@ -<> -TAG - live_data -DESCRIPTION - -GAIN - 2 -THRESHOLD - 50 -LIVE_MODE - 0 -PRESET_TIME - 0 -LIVE_TIME - 3645.053333 -REAL_TIME - 3645.200000 -START_TIME - 08/27/2025 14:48:13 -SERIAL_NUMBER - 4114 -<> -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -1 -6 -14 -9 -7 -6 -7 -3 -4 -2 -6 -3 -1 -5 -2 -6 -3 -2 -0 -0 -0 -2 -1 -1 -0 -2 -2 -1 -1 -0 -2 -3 -1 -1 -2 -2 -3 -3 -1 -0 -1 -0 -5 -2 -0 -0 -0 -0 -3 -1 -2 -4 -1 -2 -2 -1 -1 -1 -2 -4 -0 -2 -2 -2 -2 -4 -1 -2 -1 -0 -1 -2 -0 -2 -1 -0 -1 -0 -1 -1 -1 -0 -2 -0 -1 -3 -0 -1 -1 -0 -5 -1 -2 -1 -5 -2 -0 -5 -1 -3 -3 -3 -3 -1 -3 -0 -3 -1 -3 -1 -2 -2 -1 -4 -1 -3 -2 -0 -0 -0 -1 -0 -3 -1 -2 -2 -3 -1 -2 -1 -6 -1 -3 -0 -2 -1 -3 -2 -0 -3 -2 -2 -1 -4 -0 -0 -0 -3 -4 -4 -8 -1 -2 -1 -3 -5 -1 -1 -0 -4 -4 -4 -2 -3 -1 -2 -3 -7 -1 -6 -0 -3 -2 -5 -3 -2 -5 -3 -1 -3 -2 -2 -2 -3 -3 -5 -3 -3 -2 -0 -2 -5 -4 -6 -1 -2 -4 -5 -3 -4 -6 -4 -4 -3 -4 -5 -5 -3 -1 -2 -1 -2 -3 -7 -1 -2 -3 -4 -2 -3 -7 -2 -3 -2 -4 -2 -4 -5 -5 -4 -6 -3 -0 -2 -2 -2 -2 -5 -3 -3 -2 -6 -4 -6 -3 -1 -1 -5 -3 -2 -4 -3 -2 -3 -3 -5 -2 -1 -0 -1 -2 -3 -0 -1 -2 -2 -2 -2 -0 -5 -4 -6 -2 -2 -3 -3 -0 -2 -3 -2 -1 -1 -4 -5 -3 -2 -7 -7 -2 -5 -4 -0 -2 -1 -5 -3 -4 -2 -2 -3 -6 -1 -2 -3 -3 -4 -2 -4 -1 -5 -4 -3 -0 -2 -2 -4 -1 -4 -5 -2 -5 -5 -4 -3 -3 -0 -1 -3 -2 -3 -3 -2 -4 -2 -4 -3 -5 -1 -7 -4 -1 -4 -7 -2 -2 -3 -6 -4 -3 -4 -7 -3 -1 -3 -1 -2 -1 -2 -5 -7 -2 -6 -3 -2 -6 -3 -5 -1 -7 -8 -2 -3 -5 -3 -4 -0 -3 -1 -5 -3 -3 -4 -6 -4 -7 -10 -8 -2 -7 -5 -4 -5 -8 -6 -4 -8 -3 -1 -8 -1 -6 -5 -3 -6 -8 -6 -4 -6 -4 -1 -8 -4 -3 -3 -2 -5 -6 -6 -3 -5 -4 -7 -10 -6 -6 -8 -6 -3 -4 -3 -8 -7 -4 -8 -4 -4 -6 -9 -8 -5 -11 -5 -7 -4 -7 -6 -9 -8 -9 -8 -8 -9 -8 -10 -7 -8 -10 -11 -3 -12 -18 -35 -81 -166 -215 -114 -36 -13 -15 -18 -13 -16 -21 -13 -28 -22 -24 -37 -40 -71 -101 -202 -670 -2069 -3138 -2537 -840 -154 -22 -11 -5 -4 -10 -2 -6 -4 -8 -4 -6 -5 -4 -1 -8 -2 -4 -4 -8 -8 -8 -5 -8 -9 -6 -9 -3 -6 -7 -7 -8 -5 -7 -6 -13 -14 -15 -6 -11 -15 -15 -16 -19 -23 -15 -34 -34 -39 -53 -94 -119 -198 -332 -609 -857 -625 -256 -53 -15 -9 -8 -10 -2 -12 -7 -4 -12 -11 -16 -20 -35 -65 -203 -570 -1084 -1216 -697 -184 -23 -6 -3 -4 -3 -1 -4 -3 -4 -4 -2 -2 -5 -4 -3 -3 -3 -1 -4 -1 -5 -4 -8 -2 -4 -5 -2 -3 -6 -5 -5 -4 -3 -6 -12 -13 -5 -9 -9 -7 -11 -15 -25 -22 -21 -37 -42 -46 -49 -94 -157 -307 -640 -1089 -1315 -876 -318 -52 -16 -8 -3 -2 -2 -0 -2 -0 -1 -0 -0 -1 -1 -0 -2 -0 -1 -1 -1 -1 -2 -0 -2 -0 -0 -2 -1 -0 -1 -2 -2 -0 -0 -0 -0 -0 -1 -0 -1 -1 -0 -2 -1 -2 -0 -2 -0 -0 -2 -2 -2 -1 -1 -1 -2 -0 -0 -0 -1 -0 -2 -1 -0 -0 -0 -3 -0 -1 -1 -0 -1 -2 -3 -0 -2 -2 -0 -2 -1 -0 -2 -2 -2 -1 -0 -2 -0 -2 -0 -2 -4 -0 -2 -1 -3 -0 -3 -1 -1 -1 -3 -2 -4 -3 -2 -4 -3 -1 -3 -3 -1 -4 -2 -3 -2 -1 -1 -3 -1 -1 -4 -5 -1 -2 -5 -4 -0 -3 -1 -2 -0 -3 -2 -2 -3 -1 -2 -0 -1 -2 -2 -1 -0 -2 -1 -1 -1 -1 -4 -1 -1 -3 -2 -0 -1 -4 -0 -3 -2 -2 -5 -5 -2 -6 -9 -3 -6 -4 -6 -8 -7 -9 -6 -6 -11 -15 -15 -27 -43 -60 -88 -198 -457 -867 -1195 -912 -381 -82 -10 -10 -3 -5 -2 -1 -1 -0 -0 -1 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -1 -0 -1 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -<> diff --git a/XRA/Data/Calib_U232_22Aug.mca b/XRA/Data/Calib_U232_22Aug.mca deleted file mode 100644 index 4cb7eba..0000000 --- a/XRA/Data/Calib_U232_22Aug.mca +++ /dev/null @@ -1,1037 +0,0 @@ -<> -TAG - live_data -DESCRIPTION - -GAIN - 2 -THRESHOLD - 50 -LIVE_MODE - 0 -PRESET_TIME - 0 -LIVE_TIME - 1007.386667 -REAL_TIME - 1009.320000 -START_TIME - 08/22/2025 15:12:43 -SERIAL_NUMBER - 4114 -<> -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -20 -77 -80 -76 -64 -51 -56 -54 -50 -42 -36 -41 -41 -36 -29 -30 -31 -27 -23 -26 -24 -27 -15 -16 -14 -16 -24 -24 -24 -18 -21 -17 -14 -11 -23 -18 -19 -18 -19 -14 -22 -24 -10 -21 -18 -17 -18 -22 -18 -16 -20 -17 -11 -19 -19 -22 -12 -19 -13 -20 -20 -22 -11 -19 -17 -20 -22 -23 -11 -15 -24 -13 -18 -22 -16 -13 -19 -18 -20 -25 -21 -19 -17 -21 -25 -20 -15 -22 -23 -24 -23 -24 -20 -16 -17 -19 -24 -14 -19 -25 -19 -21 -22 -31 -16 -18 -20 -19 -17 -31 -20 -24 -30 -28 -26 -22 -23 -16 -20 -21 -25 -29 -22 -22 -19 -21 -19 -16 -14 -19 -19 -21 -24 -20 -20 -23 -17 -23 -24 -25 -30 -26 -31 -28 -25 -31 -21 -26 -25 -24 -29 -30 -27 -22 -26 -23 -27 -14 -29 -24 -15 -19 -29 -34 -29 -26 -19 -29 -23 -19 -30 -29 -28 -23 -21 -24 -16 -29 -26 -31 -33 -24 -33 -19 -28 -18 -21 -23 -29 -28 -32 -36 -29 -33 -34 -33 -34 -29 -30 -26 -30 -40 -43 -35 -38 -49 -42 -49 -34 -42 -35 -34 -42 -44 -33 -40 -38 -24 -31 -45 -36 -40 -38 -40 -43 -39 -35 -35 -38 -28 -35 -33 -31 -42 -29 -24 -40 -40 -45 -41 -36 -34 -34 -29 -32 -38 -34 -33 -42 -47 -49 -55 -45 -46 -39 -45 -49 -37 -39 -27 -49 -45 -46 -43 -41 -41 -33 -38 -33 -41 -38 -33 -46 -39 -39 -44 -53 -39 -34 -48 -53 -42 -49 -38 -37 -38 -47 -36 -40 -39 -43 -26 -32 -37 -41 -47 -39 -26 -33 -33 -33 -43 -47 -40 -31 -49 -36 -38 -50 -34 -46 -36 -53 -40 -42 -40 -44 -32 -32 -35 -36 -48 -39 -38 -44 -43 -45 -38 -36 -36 -33 -39 -37 -43 -43 -45 -36 -55 -28 -48 -48 -46 -45 -36 -47 -37 -40 -42 -44 -48 -41 -44 -47 -40 -42 -51 -46 -46 -46 -39 -48 -38 -46 -36 -47 -38 -43 -50 -31 -43 -33 -49 -55 -50 -50 -45 -53 -39 -61 -40 -47 -32 -54 -52 -55 -44 -33 -45 -38 -43 -63 -51 -55 -40 -49 -51 -41 -43 -39 -49 -37 -38 -62 -51 -45 -50 -47 -48 -37 -43 -56 -56 -47 -49 -35 -53 -34 -53 -45 -56 -52 -59 -52 -44 -43 -65 -55 -63 -50 -52 -58 -54 -55 -57 -53 -55 -68 -55 -69 -49 -59 -43 -52 -52 -51 -63 -54 -66 -68 -52 -60 -56 -57 -62 -64 -67 -75 -67 -59 -62 -86 -78 -60 -58 -56 -51 -74 -86 -76 -65 -65 -71 -63 -74 -70 -69 -82 -78 -73 -68 -76 -79 -92 -67 -80 -83 -75 -65 -75 -85 -88 -106 -110 -98 -100 -92 -95 -94 -95 -93 -89 -120 -127 -112 -128 -154 -143 -152 -152 -140 -189 -192 -232 -214 -221 -273 -330 -333 -426 -479 -580 -694 -914 -1103 -1382 -1619 -2032 -2380 -2921 -3289 -3882 -4184 -4534 -4865 -5107 -5360 -5539 -5295 -5052 -4613 -4298 -3817 -3590 -3602 -3997 -4114 -4323 -4454 -4267 -3829 -3397 -2625 -1854 -1273 -866 -658 -565 -459 -405 -333 -323 -312 -294 -332 -356 -500 -605 -843 -998 -1402 -1746 -2401 -3050 -3699 -4231 -4716 -4965 -5185 -4848 -4223 -3366 -2466 -1639 -1148 -804 -608 -514 -404 -277 -244 -196 -151 -126 -106 -87 -98 -62 -70 -90 -80 -80 -89 -90 -107 -102 -143 -136 -218 -227 -310 -426 -551 -689 -818 -1066 -1333 -1514 -1679 -1748 -1808 -1677 -1436 -1234 -1075 -809 -702 -579 -465 -365 -341 -321 -333 -371 -404 -523 -700 -1043 -1315 -1770 -2373 -3162 -3775 -4600 -5272 -5373 -5584 -4954 -4419 -3402 -2313 -1454 -956 -714 -519 -416 -316 -261 -204 -147 -109 -83 -79 -69 -43 -38 -34 -68 -48 -36 -51 -39 -47 -47 -50 -70 -92 -78 -69 -84 -99 -82 -93 -129 -145 -144 -196 -237 -266 -344 -476 -647 -853 -1193 -1634 -2234 -2878 -3709 -4531 -5196 -5738 -5714 -5356 -4566 -3470 -2404 -1592 -947 -724 -524 -430 -309 -245 -187 -112 -73 -59 -46 -27 -34 -24 -9 -12 -14 -9 -11 -10 -11 -4 -9 -7 -8 -9 -6 -5 -7 -8 -9 -4 -11 -3 -8 -10 -6 -3 -10 -15 -7 -9 -7 -8 -10 -11 -2 -5 -11 -3 -13 -5 -10 -10 -7 -10 -4 -11 -11 -8 -6 -5 -9 -2 -6 -5 -11 -4 -6 -7 -11 -10 -8 -7 -12 -6 -7 -9 -10 -4 -4 -6 -9 -5 -11 -10 -8 -4 -7 -10 -10 -6 -10 -5 -8 -10 -15 -8 -9 -6 -4 -9 -7 -7 -7 -4 -6 -9 -5 -7 -11 -9 -11 -6 -8 -13 -10 -7 -7 -10 -4 -10 -10 -8 -4 -4 -8 -10 -4 -10 -7 -8 -8 -11 -10 -10 -12 -11 -14 -19 -8 -13 -8 -12 -15 -12 -9 -13 -10 -11 -7 -11 -17 -15 -10 -20 -12 -10 -13 -9 -18 -20 -11 -16 -6 -19 -14 -8 -17 -19 -21 -17 -20 -13 -15 -16 -12 -20 -15 -16 -21 -21 -16 -22 -29 -20 -18 -24 -24 -23 -37 -24 -34 -26 -31 -47 -37 -38 -39 -60 -59 -51 -91 -77 -98 -120 -129 -173 -196 -211 -387 -513 -777 -1126 -1671 -2182 -2827 -3476 -3915 -4102 -3891 -3252 -2506 -1554 -934 -600 -481 -336 -298 -217 -169 -133 -83 -82 -65 -30 -36 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -<> diff --git a/XRA/Data/Calib_U232_26Aug.mca b/XRA/Data/Calib_U232_26Aug.mca deleted file mode 100755 index 7b7bc0f..0000000 --- a/XRA/Data/Calib_U232_26Aug.mca +++ /dev/null @@ -1,1037 +0,0 @@ -<> -TAG - live_data -DESCRIPTION - -GAIN - 2 -THRESHOLD - 50 -LIVE_MODE - 0 -PRESET_TIME - 0 -LIVE_TIME - 636.013333 -REAL_TIME - 637.280000 -START_TIME - 08/26/2025 16:25:42 -SERIAL_NUMBER - 4114 -<> -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -10 -37 -46 -36 -34 -37 -30 -30 -29 -19 -22 -15 -16 -17 -15 -15 -21 -19 -7 -21 -21 -13 -17 -12 -18 -14 -17 -12 -7 -13 -11 -17 -16 -15 -9 -7 -14 -5 -8 -18 -14 -11 -10 -13 -14 -13 -6 -18 -10 -7 -15 -14 -12 -12 -9 -8 -9 -9 -11 -12 -4 -16 -6 -9 -12 -10 -16 -13 -11 -11 -15 -12 -11 -10 -15 -13 -11 -10 -13 -15 -12 -11 -14 -11 -14 -16 -16 -15 -12 -19 -14 -7 -12 -16 -12 -18 -9 -22 -10 -16 -15 -5 -21 -14 -14 -13 -14 -13 -20 -12 -15 -10 -12 -13 -18 -17 -13 -15 -16 -17 -12 -7 -13 -20 -19 -15 -18 -7 -21 -11 -13 -11 -19 -16 -13 -12 -18 -16 -19 -17 -20 -21 -16 -19 -18 -17 -20 -13 -14 -16 -18 -11 -23 -18 -11 -11 -12 -13 -11 -17 -16 -26 -19 -18 -21 -11 -15 -14 -17 -15 -16 -12 -21 -19 -8 -11 -10 -11 -16 -19 -12 -16 -17 -15 -20 -21 -12 -19 -20 -16 -21 -14 -20 -20 -18 -21 -23 -12 -16 -17 -14 -18 -19 -21 -15 -19 -12 -17 -24 -31 -22 -33 -25 -23 -24 -32 -29 -24 -27 -26 -26 -23 -16 -25 -26 -26 -14 -22 -32 -35 -27 -25 -31 -24 -23 -20 -28 -25 -15 -25 -22 -28 -22 -21 -28 -29 -23 -24 -20 -27 -24 -23 -16 -22 -26 -18 -22 -30 -29 -30 -38 -17 -32 -21 -25 -22 -30 -29 -26 -23 -29 -17 -31 -22 -20 -32 -29 -35 -23 -22 -27 -28 -30 -26 -37 -35 -25 -27 -25 -27 -25 -25 -33 -29 -30 -29 -26 -16 -32 -24 -25 -21 -24 -31 -29 -24 -27 -20 -26 -27 -29 -28 -28 -35 -28 -28 -25 -30 -21 -34 -31 -24 -36 -24 -28 -32 -28 -27 -18 -20 -30 -34 -29 -24 -25 -24 -29 -28 -27 -27 -25 -21 -26 -26 -26 -31 -28 -31 -27 -18 -18 -20 -29 -36 -30 -28 -33 -29 -25 -21 -25 -29 -21 -31 -30 -27 -32 -26 -25 -31 -21 -32 -30 -29 -23 -23 -34 -27 -23 -36 -36 -40 -28 -44 -38 -35 -22 -24 -34 -31 -31 -26 -26 -22 -30 -26 -28 -35 -37 -24 -25 -21 -24 -30 -33 -27 -35 -35 -43 -29 -29 -37 -32 -37 -35 -35 -30 -37 -35 -29 -31 -30 -29 -33 -23 -25 -37 -37 -25 -32 -29 -29 -26 -31 -44 -31 -28 -44 -28 -48 -53 -41 -45 -37 -41 -34 -28 -41 -42 -32 -45 -29 -49 -33 -38 -61 -39 -45 -43 -38 -33 -59 -50 -37 -43 -42 -54 -57 -43 -32 -55 -52 -38 -44 -44 -42 -44 -46 -49 -51 -54 -61 -49 -61 -56 -57 -58 -50 -64 -59 -58 -64 -67 -65 -55 -66 -78 -52 -62 -83 -89 -69 -85 -93 -88 -93 -88 -101 -106 -119 -111 -135 -127 -163 -146 -173 -184 -231 -277 -337 -390 -491 -593 -758 -922 -1100 -1311 -1575 -1887 -2201 -2544 -2760 -3023 -3208 -3393 -3559 -3636 -3499 -3251 -2969 -2733 -2379 -2283 -2417 -2580 -2731 -2834 -2931 -2743 -2546 -2168 -1561 -1121 -800 -539 -402 -318 -319 -262 -224 -210 -197 -211 -239 -269 -320 -379 -491 -718 -884 -1216 -1604 -2008 -2397 -2787 -3210 -3305 -3388 -3194 -2625 -2158 -1524 -1027 -660 -506 -423 -336 -251 -199 -171 -126 -102 -77 -60 -64 -37 -50 -54 -50 -52 -56 -56 -63 -70 -64 -108 -109 -135 -157 -207 -263 -343 -467 -616 -759 -896 -1005 -1099 -1183 -1208 -1110 -960 -788 -659 -543 -419 -324 -274 -256 -227 -201 -201 -237 -295 -367 -429 -638 -848 -1194 -1631 -2108 -2646 -3056 -3536 -3600 -3675 -3248 -2702 -2135 -1345 -864 -594 -453 -341 -250 -228 -178 -127 -87 -65 -56 -54 -35 -39 -31 -35 -32 -45 -37 -36 -28 -42 -39 -43 -29 -59 -49 -54 -57 -66 -73 -63 -96 -108 -108 -127 -140 -176 -256 -318 -407 -565 -794 -1068 -1513 -1986 -2549 -3093 -3554 -3859 -3756 -3461 -2751 -2149 -1445 -962 -570 -447 -356 -256 -186 -156 -104 -91 -57 -36 -24 -21 -13 -5 -10 -8 -4 -8 -6 -5 -3 -5 -5 -5 -5 -3 -2 -5 -5 -2 -4 -5 -3 -6 -4 -4 -6 -6 -6 -6 -8 -5 -3 -2 -5 -5 -6 -5 -4 -5 -6 -6 -4 -1 -1 -3 -5 -6 -2 -5 -3 -5 -6 -2 -3 -6 -3 -4 -5 -5 -2 -1 -8 -3 -6 -4 -4 -3 -8 -5 -3 -8 -4 -3 -10 -9 -3 -8 -13 -5 -5 -4 -7 -5 -3 -9 -3 -5 -5 -3 -4 -4 -6 -6 -2 -5 -6 -5 -7 -5 -3 -5 -2 -10 -6 -6 -11 -3 -9 -4 -1 -5 -8 -7 -5 -4 -3 -5 -5 -9 -6 -9 -4 -8 -3 -10 -4 -4 -5 -4 -5 -3 -5 -8 -7 -6 -6 -8 -6 -8 -10 -6 -5 -7 -12 -5 -5 -6 -13 -9 -6 -14 -6 -8 -7 -10 -11 -3 -7 -5 -9 -15 -10 -7 -8 -15 -13 -10 -15 -13 -16 -15 -11 -12 -16 -16 -22 -16 -14 -20 -17 -21 -23 -21 -27 -24 -32 -33 -34 -36 -43 -47 -70 -47 -57 -68 -72 -102 -118 -165 -232 -364 -527 -775 -1037 -1497 -1915 -2365 -2597 -2695 -2488 -1972 -1466 -914 -523 -409 -302 -249 -185 -148 -106 -84 -66 -54 -45 -15 -23 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -<> diff --git a/XRA/Data/Combined_bkg_Internship.txt b/XRA/Data/Combined_bkg_Internship.txt deleted file mode 100644 index 9fb117b..0000000 --- a/XRA/Data/Combined_bkg_Internship.txt +++ /dev/null @@ -1,2057 +0,0 @@ -#Edited by Afonso Vicente - - - - - - -LIVE_TIME - 397390.21308899997 -0.0 -0.0 -0.0 -0.0 -0.0 -0.0 -0.0 -0.0 -0.0 -0.0 -0.0 -0.0 -261.0 -164.0 -87.0 -42.0 -18.0 -15.0 -10.0 -16.0 -11.0 -12.0 -14.0 -7.0 -8.0 -11.0 -11.0 -9.0 -11.0 -10.0 -12.0 -12.0 -8.0 -7.0 -12.0 -8.0 -5.0 -12.0 -7.0 -9.0 -13.0 -5.0 -6.0 -8.0 -10.0 -8.0 -4.0 -8.0 -10.0 -10.0 -5.0 -9.0 -6.0 -8.0 -8.0 -8.0 -9.0 -8.0 -12.0 -9.0 -8.0 -11.0 -10.0 -5.0 -10.0 -8.0 -7.0 -12.0 -11.0 -13.0 -5.0 -5.0 -5.0 -5.0 -9.0 -11.0 -8.0 -5.0 -7.0 -7.0 -2.0 -6.0 -3.0 -10.0 -4.0 -9.0 -5.0 -6.0 -6.0 -4.0 -8.0 -6.0 -10.0 -8.0 -3.0 -8.0 -8.0 -11.0 -13.0 -7.0 -6.0 -8.0 -10.0 -11.0 -8.0 -9.0 -8.0 -11.0 -5.0 -2.0 -6.0 -6.0 -8.0 -8.0 -4.0 -10.0 -4.0 -3.0 -10.0 -4.0 -5.0 -10.0 -7.0 -8.0 -10.0 -7.0 -3.0 -5.0 -5.0 -3.0 -8.0 -4.0 -10.0 -5.0 -7.0 -3.0 -3.0 -4.0 -6.0 -5.0 -4.0 -11.0 -1.0 -9.0 -7.0 -5.0 -4.0 -6.0 -8.0 -10.0 -4.0 -6.0 -8.0 -2.0 -5.0 -4.0 -7.0 -6.0 -7.0 -6.0 -7.0 -10.0 -5.0 -3.0 -4.0 -4.0 -2.0 -9.0 -4.0 -6.0 -12.0 -7.0 -6.0 -8.0 -8.0 -2.0 -4.0 -9.0 -5.0 -4.0 -6.0 -11.0 -5.0 -3.0 -5.0 -6.0 -5.0 -6.0 -3.0 -7.0 -10.0 -2.0 -6.0 -5.0 -8.0 -6.0 -7.0 -4.0 -4.0 -8.0 -5.0 -7.0 -10.0 -5.0 -4.0 -1.0 -6.0 -4.0 -6.0 -6.0 -7.0 -7.0 -3.0 -3.0 -2.0 -9.0 -3.0 -7.0 -4.0 -6.0 -6.0 -2.0 -5.0 -4.0 -6.0 -4.0 -4.0 -9.0 -4.0 -5.0 -3.0 -9.0 -6.0 -7.0 -5.0 -7.0 -7.0 -6.0 -6.0 -14.0 -5.0 -11.0 -2.0 -3.0 -6.0 -7.0 -5.0 -10.0 -4.0 -10.0 -6.0 -5.0 -7.0 -7.0 -6.0 -6.0 -3.0 -6.0 -2.0 -1.0 -9.0 -7.0 -5.0 -4.0 -7.0 -8.0 -4.0 -6.0 -8.0 -8.0 -5.0 -5.0 -3.0 -10.0 -2.0 -4.0 -5.0 -7.0 -1.0 -4.0 -9.0 -8.0 -6.0 -5.0 -6.0 -5.0 -7.0 -4.0 -7.0 -7.0 -10.0 -1.0 -4.0 -4.0 -5.0 -5.0 -9.0 -2.0 -3.0 -4.0 -8.0 -3.0 -6.0 -6.0 -5.0 -6.0 -1.0 -4.0 -6.0 -4.0 -5.0 -3.0 -6.0 -6.0 -9.0 -4.0 -6.0 -6.0 -9.0 -2.0 -4.0 -6.0 -3.0 -2.0 -4.0 -1.0 -2.0 -10.0 -8.0 -6.0 -8.0 -2.0 -6.0 -8.0 -1.0 -3.0 -9.0 -1.0 -9.0 -14.0 -7.0 -5.0 -8.0 -7.0 -8.0 -10.0 -7.0 -9.0 -6.0 -15.0 -9.0 -8.0 -2.0 -7.0 -5.0 -6.0 -5.0 -4.0 -11.0 -4.0 -11.0 -5.0 -2.0 -3.0 -4.0 -5.0 -7.0 -5.0 -6.0 -4.0 -3.0 -7.0 -2.0 -5.0 -5.0 -7.0 -4.0 -3.0 -7.0 -8.0 -4.0 -7.0 -3.0 -5.0 -4.0 -5.0 -5.0 -3.0 -2.0 -4.0 -5.0 -6.0 -6.0 -5.0 -4.0 -4.0 -4.0 -5.0 -6.0 -8.0 -2.0 -6.0 -12.0 -8.0 -5.0 -8.0 -12.0 -6.0 -4.0 -10.0 -13.0 -6.0 -3.0 -7.0 -3.0 -4.0 -7.0 -13.0 -9.0 -9.0 -9.0 -7.0 -6.0 -4.0 -4.0 -3.0 -10.0 -12.0 -5.0 -3.0 -7.0 -6.0 -4.0 -3.0 -7.0 -2.0 -5.0 -6.0 -6.0 -6.0 -6.0 -6.0 -3.0 -5.0 -4.0 -8.0 -5.0 -8.0 -1.0 -5.0 -3.0 -5.0 -7.0 -2.0 -1.0 -2.0 -4.0 -4.0 -4.0 -4.0 -2.0 -5.0 -2.0 -1.0 -5.0 -4.0 -6.0 -4.0 -4.0 -6.0 -7.0 -5.0 -4.0 -8.0 -3.0 -4.0 -4.0 -6.0 -6.0 -2.0 -2.0 -2.0 -5.0 -5.0 -5.0 -2.0 -5.0 -6.0 -6.0 -3.0 -4.0 -6.0 -7.0 -4.0 -7.0 -0.0 -5.0 -2.0 -3.0 -5.0 -4.0 -4.0 -5.0 -6.0 -4.0 -8.0 -13.0 -9.0 -9.0 -7.0 -12.0 -8.0 -5.0 -5.0 -8.0 -5.0 -5.0 -4.0 -5.0 -4.0 -5.0 -4.0 -7.0 -12.0 -5.0 -9.0 -3.0 -4.0 -2.0 -5.0 -3.0 -3.0 -5.0 -4.0 -5.0 -7.0 -3.0 -2.0 -4.0 -4.0 -5.0 -8.0 -7.0 -7.0 -6.0 -8.0 -3.0 -4.0 -1.0 -3.0 -7.0 -3.0 -2.0 -6.0 -5.0 -5.0 -1.0 -1.0 -6.0 -2.0 -3.0 -7.0 -5.0 -1.0 -5.0 -5.0 -2.0 -2.0 -4.0 -2.0 -7.0 -4.0 -3.0 -2.0 -3.0 -4.0 -3.0 -4.0 -0.0 -5.0 -4.0 -2.0 -3.0 -9.0 -3.0 -3.0 -3.0 -3.0 -3.0 -1.0 -3.0 -3.0 -2.0 -7.0 -4.0 -3.0 -1.0 -1.0 -4.0 -5.0 -4.0 -5.0 -4.0 -0.0 -3.0 -4.0 -4.0 -1.0 -5.0 -4.0 -6.0 -1.0 -4.0 -4.0 -2.0 -0.0 -3.0 -8.0 -3.0 -2.0 -3.0 -6.0 -2.0 -2.0 -1.0 -5.0 -3.0 -4.0 -1.0 -3.0 -3.0 -3.0 -3.0 -2.0 -4.0 -4.0 -1.0 -5.0 -2.0 -2.0 -5.0 -3.0 -2.0 -3.0 -3.0 -6.0 -2.0 -3.0 -3.0 -2.0 -4.0 -1.0 -6.0 -2.0 -3.0 -1.0 -8.0 -2.0 -4.0 -3.0 -6.0 -5.0 -6.0 -3.0 -3.0 -3.0 -1.0 -2.0 -3.0 -3.0 -2.0 -3.0 -3.0 -5.0 -4.0 -5.0 -5.0 -3.0 -1.0 -7.0 -2.0 -1.0 -2.0 -3.0 -3.0 -3.0 -1.0 -2.0 -1.0 -3.0 -4.0 -2.0 -2.0 -3.0 -3.0 -1.0 -2.0 -1.0 -3.0 -4.0 -4.0 -1.0 -1.0 -4.0 -4.0 -3.0 -1.0 -3.0 -3.0 -2.0 -4.0 -2.0 -4.0 -3.0 -4.0 -1.0 -3.0 -3.0 -5.0 -4.0 -3.0 -5.0 -2.0 -1.0 -3.0 -1.0 -2.0 -2.0 -2.0 -5.0 -2.0 -4.0 -0.0 -2.0 -2.0 -3.0 -1.0 -7.0 -3.0 -4.0 -2.0 -1.0 -5.0 -3.0 -5.0 -1.0 -2.0 -3.0 -4.0 -3.0 -1.0 -0.0 -4.0 -1.0 -2.0 -3.0 -2.0 -3.0 -2.0 -4.0 -0.0 -4.0 -8.0 -2.0 -2.0 -3.0 -2.0 -3.0 -2.0 -2.0 -1.0 -6.0 -1.0 -4.0 -5.0 -1.0 -2.0 -3.0 -0.0 -4.0 -5.0 -4.0 -0.0 -1.0 -6.0 -3.0 -6.0 -4.0 -0.0 -3.0 -3.0 -2.0 -5.0 -1.0 -4.0 -1.0 -3.0 -3.0 -2.0 -1.0 -3.0 -2.0 -0.0 -1.0 -7.0 -2.0 -2.0 -6.0 -3.0 -4.0 -4.0 -2.0 -5.0 -2.0 -4.0 -3.0 -5.0 -4.0 -0.0 -3.0 -2.0 -0.0 -1.0 -5.0 -4.0 -3.0 -2.0 -1.0 -1.0 -0.0 -2.0 -2.0 -1.0 -5.0 -2.0 -1.0 -0.0 -1.0 -5.0 -1.0 -4.0 -4.0 -0.0 -0.0 -1.0 -1.0 -1.0 -2.0 -3.0 -1.0 -2.0 -1.0 -3.0 -1.0 -0.0 -6.0 -2.0 -3.0 -2.0 -1.0 -2.0 -3.0 -4.0 -2.0 -4.0 -3.0 -2.0 -5.0 -4.0 -6.0 -4.0 -3.0 -3.0 -2.0 -1.0 -2.0 -3.0 -2.0 -2.0 -5.0 -3.0 -1.0 -5.0 -4.0 -1.0 -3.0 -2.0 -4.0 -4.0 -7.0 -2.0 -5.0 -4.0 -4.0 -4.0 -2.0 -1.0 -2.0 -4.0 -1.0 -2.0 -2.0 -3.0 -1.0 -2.0 -2.0 -2.0 -4.0 -3.0 -1.0 -4.0 -3.0 -1.0 -3.0 -1.0 -2.0 -4.0 -1.0 -5.0 -3.0 -5.0 -3.0 -2.0 -1.0 -4.0 -4.0 -1.0 -3.0 -3.0 -1.0 -5.0 -1.0 -4.0 -0.0 -4.0 -1.0 -1.0 -1.0 -3.0 -3.0 -2.0 -0.0 -5.0 -2.0 -0.0 -5.0 -1.0 -3.0 -1.0 -5.0 -1.0 -2.0 -4.0 -2.0 -0.0 -4.0 -4.0 -5.0 -5.0 -1.0 -2.0 -2.0 -3.0 -1.0 -3.0 -2.0 -2.0 -4.0 -3.0 -3.0 -5.0 -3.0 -3.0 -3.0 -6.0 -4.0 -3.0 -3.0 -6.0 -3.0 -2.0 -1.0 -1.0 -1.0 -3.0 -4.0 -2.0 -4.0 -1.0 -3.0 -2.0 -3.0 -1.0 -2.0 -2.0 -1.0 -4.0 -1.0 -2.0 -3.0 -1.0 -3.0 -2.0 -0.0 -2.0 -1.0 -2.0 -6.0 -1.0 -4.0 -3.0 -3.0 -6.0 -4.0 -1.0 -3.0 -4.0 -0.0 -1.0 -2.0 -2.0 -1.0 -3.0 -1.0 -3.0 -5.0 -4.0 -1.0 -2.0 -3.0 -3.0 -5.0 -2.0 -3.0 -4.0 -2.0 -5.0 -2.0 -2.0 -2.0 -1.0 -2.0 -2.0 -1.0 -2.0 -4.0 -3.0 -1.0 -0.0 -2.0 -3.0 -1.0 -3.0 -2.0 -1.0 -0.0 -1.0 -3.0 -1.0 -1.0 -1.0 -3.0 -2.0 -1.0 -2.0 -1.0 -3.0 -2.0 -4.0 -2.0 -2.0 -0.0 -3.0 -0.0 -1.0 -3.0 -4.0 -4.0 -5.0 -4.0 -0.0 -2.0 -2.0 -3.0 -1.0 -3.0 -3.0 -0.0 -6.0 -1.0 -3.0 -2.0 -3.0 -2.0 -2.0 -3.0 -1.0 -3.0 -5.0 -0.0 -0.0 -2.0 -2.0 -2.0 -3.0 -2.0 -3.0 -3.0 -1.0 -4.0 -4.0 -4.0 -1.0 -4.0 -0.0 -1.0 -1.0 -3.0 -0.0 -3.0 -2.0 -5.0 -3.0 -2.0 -2.0 -2.0 -3.0 -0.0 -3.0 -4.0 -2.0 -3.0 -3.0 -0.0 -0.0 -2.0 -3.0 -2.0 -0.0 -5.0 -2.0 -1.0 -2.0 -2.0 -2.0 -2.0 -0.0 -3.0 -2.0 -1.0 -1.0 -1.0 -3.0 -4.0 -0.0 -1.0 -3.0 -3.0 -2.0 -2.0 -1.0 -1.0 -1.0 -3.0 -2.0 -2.0 -3.0 -2.0 -0.0 -1.0 -1.0 -5.0 -2.0 -2.0 -3.0 -1.0 -2.0 -1.0 -1.0 -3.0 -4.0 -2.0 -2.0 -3.0 -1.0 -1.0 -1.0 -4.0 -2.0 -1.0 -0.0 -1.0 -2.0 -2.0 -6.0 -3.0 -2.0 -2.0 -2.0 -4.0 -3.0 -4.0 -1.0 -1.0 -3.0 -2.0 -5.0 -2.0 -1.0 -4.0 -6.0 -2.0 -1.0 -3.0 -3.0 -1.0 -2.0 -5.0 -1.0 -3.0 -2.0 -0.0 -1.0 -4.0 -1.0 -0.0 -5.0 -1.0 -2.0 -0.0 -0.0 -2.0 -3.0 -0.0 -3.0 -3.0 -3.0 -2.0 -3.0 -3.0 -0.0 -2.0 -2.0 -4.0 -2.0 -3.0 -1.0 -2.0 -4.0 -1.0 -2.0 -1.0 -4.0 -1.0 -2.0 -4.0 -1.0 -0.0 -2.0 -1.0 -0.0 -0.0 -0.0 -2.0 -2.0 -0.0 -2.0 -1.0 -0.0 -1.0 -0.0 -2.0 -6.0 -2.0 -1.0 -3.0 -4.0 -1.0 -0.0 -3.0 -1.0 -1.0 -0.0 -4.0 -6.0 -1.0 -3.0 -2.0 -1.0 -3.0 -0.0 -2.0 -3.0 -1.0 -5.0 -7.0 -2.0 -0.0 -0.0 -3.0 -0.0 -4.0 -0.0 -3.0 -2.0 -3.0 -2.0 -1.0 -4.0 -1.0 -4.0 -3.0 -1.0 -4.0 -1.0 -2.0 -1.0 -4.0 -2.0 -1.0 -0.0 -2.0 -0.0 -3.0 -3.0 -3.0 -0.0 -0.0 -1.0 -3.0 -1.0 -0.0 -2.0 -4.0 -2.0 -1.0 -5.0 -0.0 -0.0 -2.0 -3.0 -2.0 -1.0 -3.0 -2.0 -1.0 -1.0 -2.0 -1.0 -1.0 -5.0 -1.0 -1.0 -5.0 -5.0 -2.0 -0.0 -4.0 -2.0 -0.0 -1.0 -4.0 -2.0 -5.0 -0.0 -2.0 -3.0 -4.0 -1.0 -2.0 -1.0 -2.0 -0.0 -0.0 -5.0 -2.0 -0.0 -2.0 -4.0 -3.0 -2.0 -2.0 -2.0 -4.0 -0.0 -2.0 -1.0 -0.0 -2.0 -2.0 -1.0 -2.0 -0.0 -3.0 -1.0 -0.0 -1.0 -3.0 -0.0 -1.0 -2.0 -2.0 -0.0 -2.0 -0.0 -2.0 -3.0 -2.0 -0.0 -5.0 -0.0 -0.0 -1.0 -4.0 -3.0 -1.0 -1.0 -2.0 -2.0 -1.0 -0.0 -0.0 -4.0 -4.0 -2.0 -2.0 -3.0 -4.0 -2.0 -1.0 -2.0 -1.0 -0.0 -2.0 -4.0 -1.0 -2.0 -2.0 -0.0 -4.0 -0.0 -1.0 -2.0 -1.0 -3.0 -1.0 -2.0 -2.0 -1.0 -3.0 -0.0 -1.0 -2.0 -0.0 -0.0 -2.0 -3.0 -1.0 -1.0 -0.0 -1.0 -2.0 -0.0 -5.0 -3.0 -2.0 -4.0 -2.0 -3.0 -3.0 -3.0 -3.0 -2.0 -2.0 -1.0 -1.0 -2.0 -0.0 -2.0 -3.0 -2.0 -4.0 -4.0 -4.0 -1.0 -2.0 -1.0 -1.0 -3.0 -4.0 -3.0 -1.0 -6.0 -2.0 -1.0 -1.0 -3.0 -3.0 -4.0 -1.0 -3.0 -2.0 -1.0 -2.0 -0.0 -3.0 -0.0 -1.0 -1.0 -0.0 -4.0 -2.0 -1.0 -2.0 -3.0 -2.0 -3.0 -0.0 -1.0 -3.0 -4.0 -1.0 -3.0 -2.0 -4.0 -0.0 -3.0 -0.0 -0.0 -2.0 -1.0 -2.0 -1.0 -4.0 -1.0 -1.0 -2.0 -2.0 -1.0 -2.0 -0.0 -3.0 -1.0 -3.0 -2.0 -2.0 -2.0 -0.0 -2.0 -4.0 -1.0 -2.0 -2.0 -1.0 -2.0 -3.0 -0.0 -1.0 -1.0 -3.0 -1.0 -0.0 -0.0 -2.0 -3.0 -2.0 -1.0 -3.0 -5.0 -1.0 -1.0 -2.0 -0.0 -1.0 -0.0 -3.0 -0.0 -1.0 -1.0 -1.0 -1.0 -0.0 -2.0 -2.0 -4.0 -2.0 -3.0 -0.0 -1.0 -3.0 -1.0 -1.0 -1.0 -2.0 -0.0 -0.0 -4.0 -3.0 -4.0 -3.0 -4.0 -4.0 -2.0 -1.0 -2.0 -4.0 -2.0 -2.0 -3.0 -4.0 -4.0 -2.0 -0.0 -1.0 -1.0 -1.0 -2.0 -3.0 -3.0 -0.0 -5.0 -2.0 -1.0 -1.0 -4.0 -2.0 -1.0 -1.0 -0.0 -3.0 -3.0 -2.0 -0.0 -0.0 -3.0 -1.0 -3.0 -1.0 -3.0 -3.0 -3.0 -1.0 -2.0 -4.0 -5.0 -1.0 -2.0 -0.0 -1.0 -1.0 -0.0 -1.0 -0.0 -2.0 -1.0 -0.0 -3.0 -1.0 -2.0 -3.0 -1.0 -3.0 -0.0 -5.0 -0.0 -1.0 -2.0 -0.0 -4.0 -1.0 -1.0 -2.0 -4.0 -4.0 -3.0 -1.0 -2.0 -1.0 -1.0 -2.0 -2.0 -0.0 -0.0 -0.0 -0.0 -0.0 -2.0 -3.0 -3.0 -0.0 -2.0 -2.0 -1.0 -1.0 -2.0 -2.0 -3.0 -2.0 -1.0 -2.0 -0.0 -1.0 -1.0 -1.0 -1.0 -3.0 -2.0 -1.0 -4.0 -2.0 -1.0 -1.0 -1.0 -2.0 -3.0 -4.0 -1.0 -2.0 -0.0 -1.0 -2.0 -3.0 -2.0 -1.0 -0.0 -1.0 -2.0 -2.0 -4.0 -1.0 -1.0 -2.0 -2.0 -4.0 -1.0 -1.0 -1.0 -3.0 -0.0 -2.0 -1.0 -0.0 -2.0 -1.0 -3.0 -0.0 -3.0 -0.0 -2.0 -0.0 -4.0 -1.0 -1.0 -0.0 -2.0 -0.0 -3.0 -2.0 -2.0 -2.0 -2.0 -0.0 -2.0 -2.0 -0.0 -1.0 -0.0 -1.0 -2.0 -2.0 -1.0 -6.0 -3.0 -1.0 -1.0 -3.0 -0.0 -4.0 -1.0 -3.0 -3.0 -0.0 -1.0 -2.0 -2.0 -2.0 -2.0 -2.0 -0.0 -4.0 -4.0 -3.0 -1.0 -2.0 -2.0 -2.0 -1.0 -1.0 -2.0 -1.0 -2.0 -4.0 -0.0 -3.0 -3.0 -4.0 -4.0 -5.0 -4.0 -3.0 -3.0 -3.0 -4.0 -2.0 -2.0 -3.0 -2.0 -2.0 -4.0 -3.0 -1.0 -0.0 -5.0 -3.0 -2.0 -1.0 -1.0 -2.0 -2.0 -2.0 -1.0 -4.0 -1.0 -2.0 -1.0 -2.0 -1.0 -2.0 -3.0 -3.0 -2.0 -1.0 -4.0 -2.0 -8.0 -5.0 -8.0 -9.0 -4.0 -6.0 -4.0 -4.0 -5.0 -4.0 -9.0 -3.0 -4.0 -6.0 -6.0 -6.0 -4.0 -7.0 -3.0 -4.0 -2.0 -5.0 -5.0 -1.0 -7.0 -1.0 -0.0 -7.0 -2.0 -3.0 -3.0 -1.0 -4.0 -0.0 -3.0 -0.0 -1.0 -1.0 -2.0 -3.0 -1.0 -2.0 -1.0 -3.0 -2.0 -1.0 -2.0 -3.0 -1.0 -0.0 -2.0 -3.0 -3.0 -1.0 -1.0 -4.0 -3.0 -2.0 -3.0 -2.0 -6.0 -3.0 -6.0 -5.0 -5.0 -5.0 -4.0 -4.0 -4.0 -5.0 -3.0 -6.0 -5.0 -1.0 -0.0 -2.0 -3.0 -2.0 -3.0 -4.0 -0.0 -3.0 -1.0 -2.0 -1.0 -1.0 -2.0 -3.0 -1.0 -3.0 -1.0 -1.0 -2.0 -3.0 -0.0 -3.0 -1.0 -1.0 -1.0 -1.0 -2.0 -1.0 -3.0 -3.0 -2.0 -1.0 -1.0 -4.0 -2.0 -0.0 -1.0 -2.0 -2.0 -1.0 -4.0 -2.0 -1.0 -3.0 -1.0 -1.0 -4.0 -0.0 -4.0 -5.0 -2.0 -0.0 -2.0 -1.0 -2.0 -2.0 -2.0 -2.0 -2.0 -3.0 -1.0 -3.0 -3.0 -2.0 -2.0 -1.0 -3.0 -4.0 -1.0 -0.0 -3.0 -4.0 -4.0 -3.0 -3.0 -3.0 -2.0 -0.0 -2.0 -1.0 -1.0 -3.0 -1.0 -0.0 -0.0 -0.0 -4.0 -2.0 -2.0 -2.0 -3.0 -2.0 -3.0 -0.0 -4.0 -1.0 -3.0 -4.0 -1.0 -2.0 -3.0 -1.0 -5.0 -1.0 -1.0 -5.0 -3.0 -3.0 -0.0 -0.0 -1.0 -1.0 -0.0 -0.0 -1.0 -2.0 -1.0 -0.0 -0.0 -1.0 -2.0 -1.0 -1.0 -2.0 -1.0 -4.0 -4.0 -1.0 -0.0 -0.0 -<> diff --git a/XRA/Data/CuSource_01Aug.mca b/XRA/Data/CuSource_01Aug.mca deleted file mode 100644 index 4b9e167..0000000 --- a/XRA/Data/CuSource_01Aug.mca +++ /dev/null @@ -1,2132 +0,0 @@ -<> -TAG - live_data -DESCRIPTION - -GAIN - 3 -THRESHOLD - 0 -LIVE_MODE - 0 -PRESET_TIME - 0 -LIVE_TIME - 1798.733000 -REAL_TIME - 1800.000000 -START_TIME - 08/01/2025 15:55:42 -SERIAL_NUMBER - 0 -<> -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -23 -31 -28 -28 -20 -39 -32 -31 -26 -27 -26 -25 -27 -28 -31 -26 -23 -25 -23 -24 -37 -30 -27 -25 -22 -26 -31 -19 -22 -34 -26 -19 -25 -24 -23 -14 -20 -14 -25 -26 -20 -26 -20 -27 -22 -20 -18 -29 -25 -19 -22 -17 -18 -31 -21 -28 -18 -22 -23 -22 -15 -23 -32 -23 -23 -22 -13 -20 -25 -20 -22 -23 -21 -17 -20 -18 -31 -17 -24 -16 -28 -20 -22 -24 -24 -25 -22 -16 -17 -15 -16 -22 -17 -19 -22 -23 -24 -27 -17 -18 -21 -17 -21 -30 -22 -22 -14 -16 -15 -21 -14 -22 -12 -23 -16 -22 -14 -16 -18 -22 -13 -20 -18 -17 -23 -18 -21 -18 -20 -33 -22 -15 -20 -17 -17 -24 -17 -15 -31 -11 -22 -24 -18 -11 -20 -18 -17 -14 -22 -22 -16 -27 -14 -21 -23 -10 -22 -20 -9 -34 -30 -44 -44 -44 -34 -24 -24 -20 -18 -30 -24 -25 -26 -24 -15 -18 -27 -29 -27 -26 -25 -23 -11 -16 -15 -22 -16 -26 -25 -33 -61 -61 -81 -79 -91 -77 -63 -41 -39 -22 -36 -25 -21 -22 -17 -21 -18 -23 -25 -34 -28 -20 -21 -29 -25 -30 -32 -26 -33 -33 -22 -29 -26 -16 -25 -24 -28 -40 -37 -48 -30 -26 -32 -30 -42 -31 -32 -53 -58 -63 -102 -238 -587 -1626 -3563 -6360 -9082 -10107 -9098 -6518 -3781 -1753 -627 -263 -77 -48 -37 -47 -28 -27 -36 -29 -27 -31 -40 -38 -54 -51 -69 -111 -209 -402 -800 -1227 -1604 -1730 -1570 -1081 -596 -264 -119 -40 -16 -13 -8 -6 -7 -8 -10 -8 -10 -9 -8 -13 -7 -9 -12 -9 -8 -4 -6 -3 -6 -10 -7 -11 -8 -5 -5 -6 -3 -6 -5 -5 -7 -6 -4 -3 -5 -10 -5 -8 -5 -4 -8 -11 -5 -9 -10 -10 -7 -8 -4 -3 -6 -5 -4 -9 -5 -4 -5 -2 -4 -6 -1 -6 -2 -8 -2 -2 -7 -6 -2 -5 -4 -3 -4 -5 -10 -2 -2 -4 -4 -1 -1 -3 -1 -4 -2 -4 -5 -4 -2 -2 -2 -3 -1 -4 -2 -3 -2 -1 -1 -2 -6 -3 -2 -0 -3 -0 -3 -3 -4 -5 -3 -3 -7 -7 -5 -1 -3 -7 -3 -4 -1 -2 -2 -1 -2 -1 -1 -6 -2 -1 -1 -2 -3 -7 -0 -5 -3 -1 -0 -1 -2 -2 -3 -4 -1 -2 -1 -0 -2 -3 -2 -1 -1 -1 -2 -2 -2 -5 -0 -2 -1 -3 -1 -2 -2 -0 -0 -4 -1 -1 -1 -0 -2 -4 -0 -1 -1 -2 -3 -3 -5 -3 -4 -3 -3 -1 -3 -3 -2 -2 -1 -0 -3 -2 -1 -1 -1 -1 -1 -0 -0 -4 -1 -1 -1 -2 -1 -0 -2 -2 -1 -2 -1 -5 -4 -0 -1 -0 -3 -0 -0 -0 -1 -3 -2 -0 -0 -1 -1 -1 -1 -1 -0 -0 -5 -3 -0 -2 -0 -2 -0 -1 -2 -2 -2 -1 -3 -1 -1 -1 -0 -1 -0 -2 -0 -0 -0 -0 -1 -1 -0 -0 -2 -4 -2 -4 -3 -0 -1 -2 -1 -1 -0 -3 -1 -2 -1 -3 -1 -2 -1 -1 -1 -0 -0 -1 -0 -2 -3 -1 -1 -0 -0 -0 -0 -1 -2 -2 -3 -1 -4 -0 -0 -0 -2 -1 -0 -2 -1 -0 -2 -2 -2 -1 -1 -1 -1 -1 -1 -0 -0 -2 -1 -2 -2 -1 -1 -1 -0 -0 -1 -2 -1 -1 -1 -0 -1 -1 -2 -1 -0 -2 -1 -1 -0 -2 -1 -1 -0 -1 -1 -0 -1 -1 -0 -1 -1 -1 -1 -1 -1 -0 -2 -1 -0 -1 -0 -0 -1 -1 -1 -1 -1 -0 -1 -3 -1 -0 -0 -1 -1 -1 -2 -1 -1 -1 -1 -1 -1 -0 -1 -0 -0 -3 -1 -1 -0 -1 -1 -1 -0 -0 -1 -1 -1 -0 -0 -0 -3 -0 -0 -2 -0 -0 -1 -4 -1 -2 -2 -0 -2 -2 -1 -0 -3 -1 -2 -1 -0 -0 -0 -0 -1 -0 -0 -1 -0 -1 -1 -0 -1 -0 -1 -2 -0 -2 -1 -2 -2 -1 -0 -0 -1 -1 -3 -0 -4 -1 -1 -1 -0 -1 -0 -3 -3 -1 -2 -1 -0 -0 -1 -1 -0 -1 -1 -0 -1 -1 -0 -2 -1 -0 -0 -0 -4 -0 -3 -3 -1 -1 -1 -2 -1 -0 -1 -0 -2 -2 -2 -2 -0 -1 -2 -1 -2 -2 -2 -0 -2 -1 -4 -2 -3 -0 -1 -3 -4 -2 -4 -1 -3 -2 -2 -2 -0 -4 -2 -1 -2 -1 -0 -0 -3 -0 -1 -1 -1 -1 -0 -0 -2 -0 -0 -1 -1 -0 -3 -2 -3 -2 -2 -2 -4 -1 -3 -1 -2 -0 -4 -2 -1 -1 -0 -0 -0 -0 -1 -1 -0 -0 -1 -1 -0 -0 -0 -2 -0 -0 -0 -0 -1 -1 -1 -0 -2 -0 -1 -0 -0 -1 -1 -0 -0 -0 -0 -1 -0 -1 -0 -3 -0 -0 -0 -1 -2 -0 -0 -2 -0 -0 -1 -3 -2 -2 -2 -1 -1 -4 -1 -2 -0 -2 -0 -2 -1 -2 -1 -1 -0 -1 -1 -0 -0 -3 -0 -1 -1 -0 -0 -1 -1 -1 -1 -0 -0 -0 -0 -1 -0 -2 -0 -0 -1 -2 -0 -0 -1 -1 -2 -1 -1 -0 -2 -1 -3 -2 -0 -0 -0 -0 -2 -0 -0 -1 -1 -1 -0 -1 -0 -1 -0 -0 -2 -1 -0 -0 -1 -0 -0 -0 -0 -0 -1 -0 -0 -0 -1 -1 -1 -0 -1 -1 -2 -2 -3 -0 -2 -0 -1 -0 -0 -0 -0 -0 -1 -0 -1 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -1 -0 -0 -1 -1 -0 -0 -1 -0 -2 -0 -0 -2 -1 -0 -2 -1 -0 -1 -1 -0 -0 -1 -0 -2 -1 -0 -1 -0 -0 -1 -1 -1 -1 -0 -2 -0 -0 -0 -1 -1 -2 -1 -1 -0 -1 -2 -0 -0 -1 -1 -2 -0 -1 -1 -1 -0 -0 -0 -0 -1 -0 -1 -0 -0 -1 -1 -1 -0 -0 -1 -0 -1 -2 -0 -1 -1 -0 -1 -2 -2 -1 -0 -0 -0 -2 -0 -1 -0 -0 -0 -0 -0 -0 -1 -0 -3 -0 -2 -0 -2 -2 -2 -0 -1 -2 -0 -0 -0 -2 -0 -0 -1 -0 -3 -2 -1 -1 -1 -1 -2 -0 -2 -1 -0 -3 -1 -1 -0 -2 -0 -2 -0 -0 -0 -0 -0 -1 -1 -2 -0 -0 -4 -3 -1 -0 -0 -0 -0 -1 -2 -0 -1 -2 -0 -2 -0 -0 -2 -2 -2 -4 -1 -0 -1 -2 -1 -1 -1 -3 -1 -1 -1 -5 -1 -2 -0 -1 -1 -0 -1 -1 -1 -0 -0 -1 -1 -1 -2 -1 -1 -1 -1 -1 -2 -1 -0 -2 -0 -2 -4 -2 -0 -0 -1 -1 -2 -1 -0 -0 -0 -2 -4 -3 -3 -2 -4 -1 -1 -1 -3 -3 -3 -1 -1 -1 -0 -2 -2 -1 -2 -1 -2 -4 -2 -1 -1 -0 -2 -5 -5 -1 -2 -7 -4 -2 -5 -1 -1 -1 -2 -3 -2 -0 -0 -3 -1 -4 -2 -3 -2 -1 -3 -1 -3 -2 -1 -2 -6 -1 -4 -1 -1 -3 -3 -3 -1 -2 -5 -1 -4 -1 -3 -0 -2 -4 -7 -1 -4 -1 -4 -3 -4 -2 -4 -4 -2 -4 -4 -1 -5 -5 -3 -1 -4 -2 -6 -2 -4 -6 -1 -3 -2 -1 -3 -1 -5 -6 -0 -1 -5 -2 -8 -5 -7 -3 -3 -5 -4 -5 -3 -4 -3 -3 -4 -4 -6 -3 -5 -8 -2 -3 -3 -3 -6 -7 -5 -6 -3 -2 -5 -4 -1 -2 -5 -5 -4 -3 -4 -5 -1 -6 -4 -2 -4 -3 -4 -7 -3 -4 -7 -5 -2 -10 -5 -3 -10 -7 -4 -3 -11 -3 -3 -6 -7 -6 -6 -5 -5 -3 -5 -6 -8 -7 -3 -2 -8 -2 -3 -4 -7 -6 -8 -10 -9 -3 -7 -7 -9 -9 -1 -7 -6 -6 -4 -3 -5 -6 -4 -8 -10 -5 -5 -8 -5 -3 -4 -7 -10 -3 -6 -4 -4 -4 -7 -8 -8 -9 -9 -6 -6 -6 -10 -8 -9 -6 -10 -4 -8 -6 -6 -8 -10 -9 -9 -6 -9 -15 -4 -9 -6 -9 -7 -14 -13 -11 -11 -9 -13 -12 -12 -16 -9 -14 -9 -4 -14 -12 -19 -12 -9 -12 -15 -17 -20 -11 -15 -11 -18 -14 -17 -27 -16 -20 -19 -22 -26 -16 -15 -17 -17 -25 -16 -20 -28 -16 -26 -24 -21 -29 -16 -24 -32 -31 -28 -31 -23 -27 -31 -27 -28 -28 -31 -30 -34 -41 -36 -42 -35 -34 -38 -44 -41 -48 -47 -55 -37 -48 -43 -37 -59 -42 -45 -54 -45 -67 -62 -45 -58 -60 -55 -56 -48 -53 -61 -56 -54 -49 -52 -46 -50 -55 -53 -57 -56 -52 -66 -49 -58 -54 -52 -52 -47 -45 -43 -35 -46 -48 -50 -40 -36 -48 -40 -34 -46 -46 -38 -34 -37 -32 -38 -35 -39 -27 -45 -28 -33 -31 -27 -29 -24 -30 -26 -26 -26 -24 -28 -24 -29 -25 -24 -26 -28 -25 -18 -15 -25 -25 -20 -19 -20 -23 -17 -13 -22 -29 -16 -15 -18 -17 -18 -17 -12 -9 -17 -11 -9 -13 -16 -7 -11 -19 -11 -10 -9 -10 -8 -8 -9 -10 -13 -14 -3 -11 -6 -9 -12 -8 -9 -5 -9 -5 -6 -9 -10 -6 -7 -7 -6 -4 -5 -6 -4 -5 -7 -10 -3 -13 -10 -6 -3 -6 -5 -2 -7 -3 -7 -8 -5 -4 -11 -8 -6 -11 -4 -3 -4 -5 -5 -2 -6 -6 -3 -2 -3 -4 -5 -8 -4 -9 -3 -3 -3 -6 -5 -7 -2 -5 -6 -2 -5 -2 -4 -4 -6 -5 -6 -2 -5 -2 -2 -2 -6 -8 -5 -4 -6 -1 -5 -4 -3 -4 -5 -3 -2 -2 -3 -5 -0 -2 -5 -5 -1 -4 -6 -1 -4 -3 -2 -3 -2 -3 -4 -2 -3 -4 -3 -5 -2 -5 -4 -3 -2 -4 -2 -4 -3 -1 -2 -3 -0 -2 -1 -1 -1 -3 -3 -0 -0 -3 -3 -0 -1 -1 -3 -1 -6 -0 -3 -0 -3 -3 -1 -0 -1 -1 -2 -2 -2 -1 -2 -2 -4 -3 -4 -3 -1 -2 -0 -2 -2 -2 -0 -5 -3 -0 -0 -1 -1 -5 -2 -1 -1 -3 -3 -2 -0 -0 -4 -2 -1 -1 -4 -4 -1 -1 -1 -2 -0 -3 -0 -1 -3 -3 -1 -0 -0 -0 -1 -0 -3 -0 -1 -0 -2 -1 -0 -2 -0 -2 -2 -1 -5 -7 -10 -5 -9 -12 -16 -26 -30 -39 -32 -35 -41 -71 -57 -60 -48 -43 -59 -47 -39 -27 -26 -21 -15 -11 -8 -6 -7 -1 -2 -0 -3 -1 -2 -0 -1 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -1 -0 -0 -0 -0 -0 -0 -1 -1 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -1 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -1 -0 -0 -0 -0 -0 -0 -0 -0 -0 -1 -0 -0 -0 -0 -0 -0 -1 -0 -0 -0 -0 -1 -0 -0 -1 -0 -0 -0 -0 -0 -0 -0 -0 -1 -0 -0 -0 -0 -0 -0 -0 -0 -1 -0 -0 -0 -0 -<> -<> -RESC=?; Reset Configuration -CLCK=80; 20MHz/80MHz -TPEA=9.600; Peaking Time -GAIF=0.9312; Fine Gain -GAIN=21.162; Total Gain (Analog * Fine) -RESL=204; Detector Reset Lockout -TFLA=0.200; Flat Top -TPFA=50; Fast Channel Peaking Time -PURE=OFF; PUR Interval On/Off -RTDE=OFF; RTD On/Off -MCAS=NORM; MCA Source -MCAC=2048; MCA/MCS Channels -SOFF=OFF; Set Spectrum Offset -AINP=POS; Analog Input Pos/Neg -INOF=DEF; Input Offset -GAIA=15; Analog Gain Index -CUSP=0; Non-Trapezoidal Shaping -PDMD=NORM; Peak Detect Mode (Min/Max) -THSL=0.585; Slow Threshold -TLLD=OFF; LLD Threshold -THFA=230.00; Fast Threshold -DACO=SHAPED; DAC Output -DACF=50; DAC Offset -RTDS=0; RTD Sensitivity -RTDT=0.00; RTD Threshold -BLRM=1; BLR Mode -BLRD=3; BLR Down Correction -BLRU=0; BLR Up Correction -AUO1=SCA8; AUX_OUT Selection -PRET=OFF; Preset Time -PRER=1800.000; Preset Real Time -PREC=OFF; Preset Counts -PRCL=1; Preset Counts Low Threshold -PRCH=8191; Preset Counts High Threshold -HVSE=-110; HV Set -TECS=220; TEC Set -PAPZ=OFF; Pole-Zero -PAPS=8.5; Preamp 8.5/5 (N/A) -SCOE=FA; Scope Trigger Edge -SCOT=12; Scope Trigger Position -SCOG=1; Digital Scope Gain -MCSL=1; MCS Low Threshold -MCSH=8191; MCS High Threshold -MCST=0.00; MCS Timebase -AUO2=ICR; AUX_OUT2 Selection -TPMO=OFF; Test Pulser On/Off -GPED=RI; G.P. Counter Edge -GPIN=AUX1; G.P. Counter Input -GPME=ON; G.P. Counter Uses MCA_EN? -GPGA=ON; G.P. Counter Uses GATE? -GPMC=ON; G.P. Counter Cleared With MCA Counters? -MCAE=OFF; MCA/MCS Enable -VOLU=OFF; Speaker On/Off -CON1=DAC; Connector 1 -CON2=AUXOUT2; Connector 2 -<> -<> -Device Type: PX5 -Serial Number: 2264 -Firmware: 6.07 Build: 3 -FPGA: 6.02 -Fast Count: 5060 -Slow Count: 79877 -Accumulation Time: 1798.733000 -Real Time: 1800.000000 -Dead Time: -HV Volt: -110V -TEC Temp: 223K -Board Temp: 40C -<> diff --git a/XRA/Data/CuSource_22Aug.mca b/XRA/Data/CuSource_22Aug.mca deleted file mode 100755 index 4e6908c..0000000 --- a/XRA/Data/CuSource_22Aug.mca +++ /dev/null @@ -1,2132 +0,0 @@ -<> -TAG - live_data -DESCRIPTION - -GAIN - 3 -THRESHOLD - 0 -LIVE_MODE - 0 -PRESET_TIME - 0 -LIVE_TIME - 3597.502000 -REAL_TIME - 3600.000000 -START_TIME - 08/22/2025 15:29:09 -SERIAL_NUMBER - 0 -<> -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -43 -65 -68 -51 -73 -57 -69 -67 -60 -54 -59 -63 -47 -56 -46 -56 -50 -55 -48 -56 -49 -56 -53 -52 -54 -34 -45 -44 -36 -63 -46 -35 -38 -55 -51 -54 -46 -44 -41 -43 -36 -43 -37 -61 -55 -35 -42 -48 -56 -48 -38 -53 -32 -44 -39 -42 -41 -43 -39 -52 -42 -53 -44 -48 -32 -40 -52 -42 -49 -47 -51 -39 -42 -43 -44 -39 -31 -30 -39 -42 -38 -35 -49 -38 -37 -39 -49 -37 -50 -35 -39 -40 -40 -42 -37 -36 -36 -41 -40 -38 -31 -41 -34 -40 -34 -35 -35 -49 -42 -28 -37 -42 -30 -47 -33 -35 -43 -43 -41 -35 -34 -33 -38 -37 -40 -36 -28 -31 -36 -28 -41 -37 -39 -38 -41 -34 -32 -41 -45 -34 -37 -36 -38 -37 -38 -44 -42 -47 -47 -43 -40 -43 -29 -32 -42 -26 -29 -34 -42 -39 -65 -75 -82 -73 -64 -56 -33 -35 -42 -42 -40 -28 -48 -38 -38 -38 -49 -44 -50 -61 -49 -43 -31 -40 -40 -44 -53 -58 -59 -71 -105 -118 -136 -201 -158 -155 -129 -82 -76 -59 -52 -40 -49 -48 -51 -48 -47 -44 -41 -56 -53 -58 -52 -59 -61 -74 -53 -60 -66 -61 -48 -58 -45 -46 -49 -40 -56 -86 -65 -82 -65 -63 -63 -70 -61 -81 -80 -92 -85 -119 -202 -496 -1268 -3399 -7576 -12876 -17909 -20047 -17449 -12359 -7004 -3111 -1157 -381 -155 -86 -68 -78 -67 -61 -67 -52 -62 -64 -69 -77 -94 -101 -139 -243 -451 -983 -1669 -2422 -3285 -3389 -2976 -1951 -1176 -527 -199 -77 -33 -15 -23 -14 -13 -17 -15 -16 -9 -12 -15 -14 -16 -17 -10 -16 -12 -20 -15 -11 -15 -9 -13 -19 -12 -7 -20 -8 -19 -14 -8 -9 -12 -9 -9 -14 -7 -14 -6 -15 -10 -17 -17 -18 -18 -23 -15 -16 -17 -13 -16 -8 -16 -4 -5 -11 -10 -7 -11 -8 -7 -8 -9 -11 -12 -9 -10 -7 -8 -11 -6 -10 -7 -7 -10 -7 -8 -5 -3 -6 -7 -5 -11 -5 -5 -8 -6 -6 -6 -7 -6 -3 -2 -6 -3 -4 -4 -3 -4 -8 -5 -5 -4 -4 -8 -7 -8 -3 -5 -8 -8 -6 -8 -12 -10 -9 -4 -9 -3 -3 -9 -5 -1 -5 -1 -3 -2 -3 -2 -5 -6 -9 -2 -3 -8 -5 -7 -4 -3 -1 -4 -3 -7 -9 -2 -2 -1 -0 -2 -4 -4 -2 -1 -3 -5 -7 -0 -2 -2 -3 -4 -1 -3 -1 -2 -3 -2 -4 -1 -0 -1 -1 -0 -2 -6 -1 -4 -0 -4 -2 -3 -1 -4 -2 -7 -1 -0 -2 -4 -1 -6 -2 -5 -1 -3 -5 -6 -2 -4 -1 -6 -4 -2 -5 -4 -1 -1 -2 -3 -2 -2 -2 -4 -6 -4 -2 -4 -0 -3 -6 -0 -3 -2 -5 -4 -6 -2 -3 -1 -3 -2 -1 -2 -3 -3 -2 -1 -1 -4 -2 -4 -3 -4 -3 -0 -3 -3 -4 -2 -0 -1 -0 -2 -4 -3 -4 -3 -0 -1 -1 -2 -1 -3 -3 -5 -2 -4 -1 -3 -3 -4 -3 -4 -4 -3 -2 -3 -4 -6 -1 -3 -3 -1 -4 -0 -1 -2 -1 -0 -2 -1 -4 -7 -1 -1 -1 -2 -2 -2 -3 -1 -2 -1 -2 -3 -2 -1 -2 -2 -2 -1 -0 -1 -1 -2 -3 -1 -3 -3 -2 -0 -1 -3 -3 -3 -1 -2 -4 -3 -3 -2 -1 -2 -4 -3 -1 -6 -2 -2 -3 -2 -2 -0 -3 -3 -0 -4 -4 -2 -2 -1 -3 -0 -0 -2 -2 -2 -4 -2 -2 -0 -1 -2 -4 -0 -2 -0 -2 -1 -3 -1 -2 -3 -1 -2 -1 -4 -2 -0 -2 -1 -3 -0 -2 -2 -2 -1 -3 -2 -1 -3 -0 -1 -0 -4 -4 -5 -4 -1 -1 -2 -3 -1 -2 -1 -2 -1 -1 -0 -0 -4 -3 -4 -2 -4 -4 -3 -3 -3 -2 -4 -4 -7 -5 -5 -3 -1 -0 -4 -1 -1 -3 -2 -1 -5 -1 -2 -1 -1 -4 -2 -0 -2 -2 -2 -1 -3 -0 -0 -4 -3 -1 -2 -1 -3 -1 -1 -3 -0 -3 -1 -1 -2 -3 -4 -1 -1 -5 -3 -1 -0 -1 -5 -5 -3 -6 -1 -1 -1 -2 -2 -0 -3 -2 -3 -1 -0 -0 -2 -2 -4 -4 -3 -0 -4 -3 -3 -3 -1 -3 -1 -2 -3 -2 -1 -0 -2 -4 -2 -2 -10 -3 -5 -6 -6 -9 -7 -3 -10 -8 -10 -7 -2 -6 -3 -2 -3 -4 -3 -2 -1 -1 -5 -0 -3 -1 -1 -0 -0 -4 -1 -3 -1 -2 -0 -3 -3 -3 -2 -2 -5 -5 -8 -5 -3 -9 -6 -4 -5 -4 -4 -5 -2 -0 -0 -2 -0 -3 -1 -1 -3 -1 -0 -2 -1 -1 -3 -5 -4 -0 -0 -0 -0 -0 -0 -2 -1 -3 -1 -3 -3 -4 -1 -1 -0 -0 -0 -4 -0 -0 -0 -1 -1 -1 -3 -1 -1 -1 -2 -2 -1 -1 -1 -0 -2 -0 -2 -1 -2 -2 -3 -3 -2 -2 -1 -4 -2 -1 -1 -1 -2 -1 -0 -4 -1 -2 -1 -2 -1 -1 -5 -0 -4 -1 -1 -1 -1 -4 -0 -1 -0 -3 -1 -3 -3 -3 -2 -3 -0 -2 -2 -0 -1 -1 -1 -2 -0 -0 -0 -2 -3 -0 -2 -0 -1 -2 -1 -1 -1 -1 -1 -2 -2 -1 -1 -4 -1 -3 -3 -0 -3 -2 -3 -0 -3 -7 -0 -1 -0 -0 -1 -1 -2 -2 -1 -1 -0 -2 -1 -0 -0 -1 -2 -1 -1 -2 -0 -0 -1 -1 -1 -3 -0 -0 -1 -3 -0 -1 -0 -2 -3 -0 -1 -3 -1 -1 -0 -2 -1 -3 -4 -7 -2 -2 -1 -6 -1 -1 -2 -1 -2 -2 -0 -0 -0 -1 -0 -0 -1 -2 -0 -2 -1 -1 -1 -3 -1 -5 -1 -1 -1 -0 -3 -2 -1 -2 -1 -2 -1 -0 -1 -0 -1 -2 -1 -2 -2 -0 -3 -2 -3 -0 -4 -1 -2 -3 -0 -3 -0 -1 -2 -2 -2 -2 -1 -1 -2 -0 -1 -1 -1 -2 -1 -3 -1 -0 -5 -0 -0 -0 -0 -1 -4 -1 -1 -2 -0 -0 -1 -1 -0 -0 -1 -1 -3 -0 -1 -2 -3 -1 -2 -1 -1 -3 -0 -1 -1 -0 -0 -0 -1 -2 -1 -2 -2 -5 -2 -2 -4 -0 -2 -2 -3 -1 -1 -1 -2 -2 -3 -2 -1 -3 -1 -3 -0 -2 -3 -0 -0 -6 -0 -3 -2 -2 -0 -1 -1 -2 -0 -1 -1 -0 -2 -2 -2 -2 -1 -3 -3 -1 -1 -3 -2 -2 -0 -3 -1 -4 -2 -2 -2 -2 -2 -3 -3 -2 -1 -1 -0 -2 -1 -3 -0 -2 -4 -2 -3 -5 -2 -3 -4 -1 -3 -0 -2 -1 -1 -2 -1 -3 -3 -3 -3 -3 -4 -5 -3 -3 -1 -3 -2 -3 -1 -5 -3 -2 -5 -3 -4 -4 -2 -3 -3 -2 -4 -4 -2 -4 -5 -5 -4 -2 -3 -1 -2 -2 -1 -4 -3 -5 -4 -5 -4 -0 -5 -6 -1 -10 -3 -2 -3 -5 -2 -4 -2 -9 -4 -2 -5 -7 -3 -4 -8 -5 -5 -1 -2 -7 -3 -3 -2 -6 -6 -5 -2 -6 -10 -5 -8 -4 -5 -4 -8 -6 -4 -4 -2 -8 -6 -2 -7 -4 -4 -8 -8 -3 -5 -7 -9 -5 -11 -8 -5 -4 -6 -7 -8 -13 -4 -4 -8 -5 -5 -8 -10 -9 -9 -6 -5 -6 -17 -9 -5 -6 -6 -10 -7 -11 -5 -9 -12 -6 -10 -4 -5 -10 -8 -6 -7 -9 -9 -10 -11 -9 -8 -9 -14 -13 -10 -12 -10 -7 -4 -5 -7 -6 -7 -12 -7 -11 -6 -13 -5 -8 -8 -11 -8 -10 -10 -5 -10 -9 -14 -17 -12 -7 -4 -9 -13 -4 -9 -8 -8 -15 -15 -12 -9 -8 -6 -5 -10 -13 -16 -14 -10 -12 -15 -7 -19 -20 -14 -11 -11 -13 -8 -3 -10 -10 -7 -15 -17 -12 -19 -7 -22 -14 -12 -8 -17 -11 -11 -17 -16 -12 -15 -17 -12 -14 -11 -15 -16 -13 -15 -14 -13 -15 -23 -18 -18 -11 -27 -11 -15 -18 -20 -19 -34 -21 -20 -19 -24 -16 -18 -16 -25 -23 -19 -17 -13 -18 -30 -28 -32 -26 -26 -33 -24 -30 -25 -25 -27 -21 -22 -30 -26 -25 -26 -28 -34 -28 -24 -32 -25 -37 -30 -44 -40 -34 -43 -36 -35 -42 -33 -35 -41 -51 -39 -51 -55 -53 -65 -56 -60 -47 -47 -57 -59 -66 -59 -60 -54 -54 -54 -61 -56 -64 -64 -59 -71 -79 -80 -79 -67 -67 -90 -89 -72 -77 -85 -77 -91 -94 -71 -107 -85 -99 -96 -98 -101 -97 -94 -97 -107 -107 -108 -115 -121 -120 -111 -113 -112 -104 -104 -110 -105 -91 -88 -111 -99 -112 -105 -115 -103 -106 -94 -94 -95 -96 -81 -82 -80 -92 -81 -89 -77 -84 -84 -71 -86 -82 -76 -82 -74 -55 -75 -70 -69 -56 -60 -51 -61 -67 -52 -40 -60 -54 -49 -55 -36 -50 -41 -50 -37 -46 -39 -49 -44 -34 -37 -30 -35 -43 -40 -46 -20 -22 -31 -28 -39 -39 -29 -29 -23 -29 -36 -26 -30 -27 -22 -25 -21 -32 -25 -26 -20 -30 -24 -28 -17 -25 -17 -18 -14 -19 -21 -15 -20 -16 -20 -17 -14 -12 -19 -14 -10 -14 -16 -6 -9 -10 -7 -12 -20 -8 -11 -21 -11 -13 -13 -13 -14 -9 -12 -11 -7 -4 -10 -15 -9 -8 -18 -15 -12 -14 -6 -11 -8 -11 -6 -10 -8 -19 -7 -7 -6 -9 -12 -9 -7 -5 -9 -12 -6 -10 -3 -7 -6 -7 -8 -7 -6 -15 -7 -9 -9 -5 -9 -7 -8 -11 -7 -12 -10 -9 -7 -3 -5 -8 -3 -4 -7 -9 -9 -11 -6 -7 -7 -8 -5 -6 -8 -6 -3 -6 -11 -4 -8 -6 -7 -8 -5 -5 -7 -4 -7 -6 -3 -7 -3 -1 -1 -3 -1 -1 -9 -2 -6 -4 -8 -9 -6 -2 -3 -8 -6 -4 -4 -4 -3 -6 -7 -8 -8 -5 -4 -3 -6 -7 -3 -4 -4 -8 -4 -3 -6 -2 -2 -3 -6 -1 -5 -6 -4 -3 -3 -2 -5 -2 -3 -3 -3 -3 -2 -2 -4 -5 -4 -7 -8 -2 -2 -3 -4 -4 -3 -5 -3 -5 -0 -2 -3 -5 -4 -1 -2 -4 -4 -5 -2 -4 -1 -5 -1 -3 -2 -5 -4 -0 -2 -2 -3 -1 -0 -2 -0 -3 -2 -2 -3 -1 -0 -1 -3 -2 -4 -11 -7 -8 -11 -19 -46 -38 -51 -70 -89 -98 -102 -119 -116 -112 -122 -119 -107 -104 -88 -78 -56 -41 -38 -24 -21 -5 -5 -6 -5 -0 -3 -2 -0 -1 -1 -0 -0 -0 -0 -0 -0 -0 -1 -1 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -1 -0 -0 -0 -0 -0 -0 -0 -0 -0 -1 -0 -0 -0 -0 -1 -0 -2 -0 -0 -0 -0 -0 -0 -1 -0 -0 -0 -0 -0 -0 -1 -0 -0 -0 -0 -0 -1 -1 -0 -0 -0 -0 -1 -0 -0 -0 -1 -0 -1 -0 -0 -0 -1 -0 -0 -0 -0 -1 -0 -0 -0 -0 -1 -2 -1 -0 -0 -0 -1 -0 -1 -0 -1 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -1 -0 -0 -0 -0 -0 -0 -0 -0 -<> -<> -RESC=?; Reset Configuration -CLCK=80; 20MHz/80MHz -TPEA=9.600; Peaking Time -GAIF=0.9312; Fine Gain -GAIN=21.162; Total Gain (Analog * Fine) -RESL=204; Detector Reset Lockout -TFLA=0.200; Flat Top -TPFA=50; Fast Channel Peaking Time -PURE=OFF; PUR Interval On/Off -RTDE=OFF; RTD On/Off -MCAS=NORM; MCA Source -MCAC=2048; MCA/MCS Channels -SOFF=OFF; Set Spectrum Offset -AINP=POS; Analog Input Pos/Neg -INOF=DEF; Input Offset -GAIA=15; Analog Gain Index -CUSP=0; Non-Trapezoidal Shaping -PDMD=NORM; Peak Detect Mode (Min/Max) -THSL=0.585; Slow Threshold -TLLD=OFF; LLD Threshold -THFA=230.00; Fast Threshold -DACO=SHAPED; DAC Output -DACF=50; DAC Offset -RTDS=0; RTD Sensitivity -RTDT=0.00; RTD Threshold -BLRM=1; BLR Mode -BLRD=3; BLR Down Correction -BLRU=0; BLR Up Correction -AUO1=SCA8; AUX_OUT Selection -PRET=OFF; Preset Time -PRER=3600.000; Preset Real Time -PREC=OFF; Preset Counts -PRCL=1; Preset Counts Low Threshold -PRCH=8191; Preset Counts High Threshold -HVSE=-110; HV Set -TECS=220; TEC Set -PAPZ=OFF; Pole-Zero -PAPS=8.5; Preamp 8.5/5 (N/A) -SCOE=FA; Scope Trigger Edge -SCOT=12; Scope Trigger Position -SCOG=1; Digital Scope Gain -MCSL=1; MCS Low Threshold -MCSH=8191; MCS High Threshold -MCST=0.00; MCS Timebase -AUO2=ICR; AUX_OUT2 Selection -TPMO=OFF; Test Pulser On/Off -GPED=RI; G.P. Counter Edge -GPIN=AUX1; G.P. Counter Input -GPME=ON; G.P. Counter Uses MCA_EN? -GPGA=ON; G.P. Counter Uses GATE? -GPMC=ON; G.P. Counter Cleared With MCA Counters? -MCAE=OFF; MCA/MCS Enable -VOLU=OFF; Speaker On/Off -CON1=DAC; Connector 1 -CON2=AUXOUT2; Connector 2 -<> -<> -Device Type: PX5 -Serial Number: 2264 -Firmware: 6.07 Build: 3 -FPGA: 6.02 -Fast Count: 10861 -Slow Count: 156899 -Accumulation Time: 3597.502000 -Real Time: 3600.000000 -Dead Time: -HV Volt: -110V -TEC Temp: 222K -Board Temp: 38C -<> diff --git a/XRA/Data/CuSource_27Aug.mca b/XRA/Data/CuSource_27Aug.mca deleted file mode 100755 index 8247476..0000000 --- a/XRA/Data/CuSource_27Aug.mca +++ /dev/null @@ -1,2132 +0,0 @@ -<> -TAG - live_data -DESCRIPTION - -GAIN - 3 -THRESHOLD - 0 -LIVE_MODE - 0 -PRESET_TIME - 0 -LIVE_TIME - 3597.495000 -REAL_TIME - 3600.000000 -START_TIME - 08/27/2025 17:51:31 -SERIAL_NUMBER - 0 -<> -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -55 -79 -90 -88 -81 -82 -71 -88 -94 -83 -73 -71 -71 -74 -67 -74 -69 -68 -70 -74 -84 -69 -83 -61 -60 -79 -75 -66 -60 -68 -83 -77 -55 -67 -68 -62 -72 -64 -54 -64 -58 -61 -56 -56 -67 -59 -70 -60 -49 -76 -73 -77 -70 -69 -55 -60 -58 -43 -64 -65 -50 -62 -59 -66 -71 -61 -56 -53 -67 -50 -57 -54 -49 -62 -52 -67 -53 -50 -66 -62 -60 -55 -44 -56 -43 -57 -50 -57 -61 -66 -43 -45 -49 -61 -63 -58 -69 -63 -58 -48 -50 -46 -54 -53 -47 -58 -48 -49 -61 -54 -48 -44 -55 -44 -38 -59 -51 -57 -46 -55 -42 -50 -47 -59 -52 -51 -40 -44 -61 -47 -66 -46 -49 -50 -50 -64 -57 -44 -57 -58 -54 -55 -55 -54 -57 -55 -52 -53 -51 -51 -49 -54 -52 -49 -50 -48 -52 -55 -44 -59 -73 -94 -91 -84 -77 -64 -56 -52 -57 -51 -52 -53 -41 -54 -62 -53 -72 -58 -66 -59 -87 -66 -56 -60 -53 -57 -57 -62 -80 -84 -107 -135 -146 -172 -198 -164 -134 -74 -67 -64 -67 -61 -54 -74 -44 -69 -60 -64 -68 -42 -64 -60 -73 -68 -75 -82 -91 -76 -61 -69 -62 -47 -57 -55 -62 -50 -59 -81 -82 -110 -77 -100 -63 -61 -56 -78 -81 -83 -89 -88 -172 -347 -959 -2391 -5253 -9096 -12927 -14516 -12783 -8932 -5149 -2346 -826 -297 -119 -68 -77 -58 -62 -57 -70 -53 -43 -61 -61 -58 -66 -82 -119 -150 -336 -637 -1166 -1783 -2315 -2416 -2087 -1460 -811 -371 -166 -74 -27 -29 -20 -18 -33 -29 -21 -19 -10 -15 -16 -16 -20 -18 -16 -21 -12 -16 -20 -25 -15 -15 -23 -16 -18 -14 -12 -14 -11 -15 -13 -15 -11 -7 -14 -15 -13 -4 -8 -17 -20 -13 -14 -13 -24 -24 -28 -17 -26 -11 -19 -9 -15 -9 -10 -11 -16 -12 -13 -15 -7 -9 -9 -9 -10 -12 -16 -11 -6 -13 -14 -6 -13 -8 -11 -6 -4 -11 -4 -6 -10 -5 -5 -7 -10 -3 -5 -7 -3 -10 -1 -4 -9 -5 -5 -6 -5 -12 -6 -3 -7 -9 -5 -6 -6 -4 -5 -5 -8 -9 -21 -13 -30 -18 -20 -9 -11 -13 -7 -5 -3 -7 -8 -7 -6 -6 -2 -9 -8 -10 -2 -4 -7 -5 -4 -2 -13 -6 -10 -8 -7 -2 -11 -4 -6 -5 -7 -4 -4 -1 -4 -1 -2 -3 -7 -5 -1 -2 -4 -2 -3 -2 -3 -6 -2 -6 -3 -2 -2 -3 -2 -4 -7 -3 -4 -1 -3 -2 -3 -3 -7 -5 -4 -5 -3 -7 -4 -4 -3 -7 -0 -1 -4 -5 -1 -4 -4 -6 -1 -3 -8 -1 -3 -3 -3 -4 -4 -2 -14 -12 -16 -14 -23 -33 -25 -26 -14 -17 -12 -8 -9 -3 -0 -3 -3 -7 -4 -1 -6 -7 -1 -2 -7 -3 -5 -4 -2 -3 -2 -2 -4 -4 -7 -4 -4 -4 -4 -2 -3 -4 -0 -2 -4 -2 -1 -4 -1 -3 -2 -3 -3 -6 -7 -6 -4 -4 -6 -2 -7 -6 -8 -6 -5 -8 -3 -5 -3 -9 -7 -7 -5 -5 -3 -3 -4 -2 -3 -6 -3 -4 -1 -2 -3 -4 -1 -5 -2 -0 -2 -2 -1 -0 -3 -2 -1 -1 -0 -3 -4 -3 -3 -3 -5 -0 -3 -3 -1 -2 -2 -1 -4 -1 -2 -1 -5 -3 -4 -1 -0 -4 -4 -1 -3 -3 -3 -3 -2 -3 -1 -1 -1 -4 -2 -0 -1 -4 -3 -5 -2 -3 -3 -1 -3 -3 -0 -5 -0 -2 -1 -3 -5 -1 -2 -2 -1 -2 -0 -1 -1 -2 -3 -5 -1 -2 -4 -4 -2 -2 -4 -4 -3 -3 -2 -1 -2 -2 -1 -1 -5 -1 -2 -2 -1 -2 -1 -0 -3 -2 -0 -3 -0 -2 -3 -1 -3 -1 -2 -5 -3 -2 -1 -4 -3 -1 -2 -4 -0 -2 -3 -7 -2 -0 -5 -5 -2 -3 -2 -5 -1 -5 -1 -3 -3 -2 -5 -1 -0 -0 -2 -2 -0 -0 -0 -2 -5 -2 -5 -4 -3 -3 -4 -3 -3 -0 -1 -4 -3 -4 -2 -5 -8 -3 -4 -2 -1 -2 -3 -3 -5 -4 -2 -4 -5 -5 -6 -4 -6 -5 -6 -4 -2 -3 -5 -4 -2 -5 -7 -4 -7 -4 -2 -6 -7 -1 -1 -3 -4 -3 -1 -1 -1 -2 -3 -0 -3 -3 -2 -4 -2 -5 -3 -10 -6 -9 -7 -7 -5 -5 -8 -8 -9 -8 -5 -8 -8 -10 -4 -5 -4 -0 -3 -1 -3 -2 -2 -1 -2 -1 -1 -1 -1 -3 -2 -1 -2 -1 -4 -5 -5 -5 -9 -4 -3 -8 -7 -7 -6 -6 -7 -4 -0 -1 -1 -1 -1 -1 -2 -1 -3 -1 -0 -3 -1 -3 -3 -2 -1 -2 -3 -5 -1 -4 -3 -2 -4 -3 -1 -2 -3 -0 -0 -3 -4 -1 -3 -0 -0 -2 -0 -3 -4 -4 -1 -3 -2 -1 -0 -2 -1 -2 -3 -0 -0 -2 -2 -1 -2 -2 -2 -2 -2 -2 -4 -2 -2 -5 -2 -4 -4 -1 -0 -3 -2 -1 -6 -2 -1 -0 -2 -2 -1 -2 -1 -0 -1 -3 -3 -1 -0 -3 -0 -2 -1 -1 -0 -2 -2 -0 -1 -1 -2 -2 -2 -2 -3 -2 -0 -5 -3 -3 -2 -1 -1 -0 -1 -0 -0 -4 -2 -4 -3 -0 -1 -1 -0 -3 -2 -4 -3 -1 -0 -4 -0 -0 -1 -2 -3 -0 -2 -1 -3 -5 -1 -2 -1 -2 -0 -1 -3 -0 -1 -0 -1 -1 -1 -4 -0 -0 -1 -1 -1 -0 -2 -0 -2 -2 -3 -4 -2 -2 -1 -0 -2 -1 -1 -0 -3 -3 -0 -1 -2 -2 -1 -3 -4 -3 -2 -1 -4 -1 -0 -2 -1 -1 -1 -3 -2 -2 -2 -1 -1 -2 -3 -1 -0 -1 -4 -0 -2 -0 -1 -0 -1 -3 -1 -2 -1 -2 -0 -1 -1 -3 -1 -2 -1 -2 -1 -1 -3 -2 -1 -0 -4 -3 -2 -2 -3 -2 -2 -2 -1 -1 -1 -0 -0 -3 -2 -2 -0 -1 -2 -1 -3 -1 -0 -4 -0 -4 -1 -3 -2 -1 -2 -3 -8 -4 -2 -2 -0 -3 -1 -0 -2 -4 -5 -2 -1 -5 -1 -2 -2 -3 -0 -2 -1 -4 -1 -2 -4 -4 -1 -0 -2 -0 -1 -1 -1 -0 -0 -1 -2 -2 -2 -0 -1 -4 -4 -3 -3 -3 -2 -3 -3 -0 -3 -3 -3 -2 -3 -4 -2 -2 -3 -4 -3 -1 -1 -5 -1 -2 -5 -2 -2 -1 -2 -3 -3 -5 -6 -4 -2 -3 -2 -5 -4 -4 -3 -4 -6 -5 -4 -5 -3 -3 -1 -8 -1 -7 -4 -2 -2 -6 -2 -3 -2 -1 -4 -6 -7 -4 -2 -5 -4 -6 -7 -4 -1 -5 -4 -3 -3 -6 -2 -4 -2 -4 -3 -2 -6 -5 -2 -10 -4 -6 -5 -5 -5 -2 -7 -3 -4 -7 -6 -3 -5 -3 -4 -6 -4 -6 -8 -4 -3 -4 -7 -2 -7 -7 -2 -8 -2 -5 -5 -6 -5 -5 -3 -3 -6 -4 -6 -4 -5 -3 -15 -8 -5 -4 -3 -3 -4 -2 -4 -4 -5 -7 -5 -9 -7 -6 -4 -4 -16 -3 -6 -10 -10 -5 -10 -4 -10 -7 -14 -5 -8 -4 -3 -8 -10 -6 -5 -12 -3 -13 -9 -7 -18 -20 -12 -5 -6 -10 -12 -12 -13 -9 -5 -8 -13 -9 -8 -21 -6 -10 -10 -12 -7 -14 -15 -15 -11 -13 -14 -13 -13 -13 -9 -13 -16 -19 -11 -11 -10 -16 -9 -11 -16 -14 -12 -10 -18 -12 -11 -17 -21 -16 -12 -11 -16 -16 -9 -20 -17 -9 -12 -14 -16 -9 -15 -9 -11 -25 -18 -23 -25 -26 -15 -15 -14 -18 -10 -31 -12 -17 -17 -19 -13 -14 -21 -17 -14 -21 -18 -17 -13 -20 -14 -17 -17 -16 -18 -14 -12 -26 -22 -22 -13 -18 -20 -19 -15 -17 -19 -20 -20 -26 -17 -25 -13 -19 -12 -20 -26 -23 -14 -23 -22 -23 -16 -20 -20 -13 -23 -24 -15 -23 -16 -22 -25 -28 -20 -34 -19 -36 -27 -20 -34 -28 -20 -24 -32 -27 -25 -22 -24 -23 -24 -29 -27 -40 -31 -30 -34 -33 -29 -34 -32 -30 -24 -34 -31 -37 -33 -30 -34 -28 -39 -36 -30 -35 -26 -37 -54 -37 -45 -45 -41 -52 -49 -46 -48 -57 -46 -52 -50 -55 -68 -48 -62 -44 -49 -71 -74 -78 -78 -65 -69 -76 -78 -54 -89 -72 -80 -80 -78 -87 -65 -85 -97 -102 -93 -122 -106 -100 -99 -79 -112 -90 -116 -107 -116 -138 -146 -119 -148 -134 -137 -161 -153 -139 -170 -138 -196 -178 -174 -156 -175 -173 -175 -172 -177 -180 -210 -191 -173 -187 -188 -176 -176 -173 -185 -151 -165 -179 -160 -143 -189 -170 -169 -180 -158 -144 -149 -144 -142 -149 -140 -143 -136 -133 -115 -136 -129 -141 -122 -115 -102 -113 -84 -111 -103 -93 -101 -94 -109 -81 -91 -95 -86 -79 -69 -80 -73 -63 -65 -67 -65 -85 -53 -51 -62 -53 -57 -52 -60 -51 -50 -46 -49 -35 -39 -43 -55 -51 -49 -45 -46 -32 -41 -36 -39 -33 -28 -41 -28 -34 -17 -29 -38 -31 -32 -36 -27 -24 -21 -16 -16 -34 -36 -26 -25 -28 -25 -25 -16 -14 -23 -23 -10 -26 -24 -24 -16 -16 -18 -15 -17 -26 -20 -24 -17 -21 -17 -21 -16 -16 -15 -20 -12 -17 -6 -12 -15 -11 -18 -8 -16 -12 -7 -11 -19 -15 -12 -8 -6 -11 -11 -12 -11 -18 -12 -8 -8 -16 -13 -8 -13 -4 -13 -12 -13 -5 -15 -8 -11 -7 -10 -10 -10 -10 -7 -2 -6 -4 -12 -8 -11 -11 -3 -12 -4 -8 -7 -7 -4 -15 -6 -10 -5 -6 -5 -10 -9 -6 -7 -6 -7 -8 -8 -3 -10 -6 -6 -6 -6 -4 -8 -10 -7 -7 -4 -5 -10 -5 -6 -8 -5 -6 -9 -5 -8 -4 -3 -4 -5 -7 -2 -5 -6 -5 -4 -7 -3 -7 -6 -1 -6 -7 -2 -1 -7 -5 -2 -5 -6 -5 -5 -7 -2 -6 -6 -6 -2 -10 -3 -4 -4 -9 -9 -6 -4 -3 -3 -4 -2 -4 -3 -0 -5 -6 -2 -2 -2 -2 -2 -4 -6 -7 -2 -5 -7 -8 -2 -8 -3 -4 -5 -5 -6 -3 -2 -3 -4 -1 -0 -3 -4 -2 -3 -3 -4 -4 -6 -1 -3 -2 -2 -3 -1 -2 -2 -4 -1 -1 -4 -1 -0 -1 -2 -3 -0 -3 -6 -5 -6 -4 -8 -11 -24 -23 -34 -45 -56 -61 -80 -105 -102 -113 -128 -129 -129 -101 -99 -82 -76 -74 -67 -42 -29 -13 -19 -12 -4 -9 -3 -2 -3 -0 -1 -1 -0 -0 -0 -0 -0 -2 -0 -1 -1 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -1 -1 -0 -0 -0 -0 -1 -0 -1 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -1 -1 -0 -1 -1 -0 -1 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -1 -1 -0 -1 -1 -0 -1 -0 -1 -0 -0 -0 -0 -0 -0 -0 -0 -0 -1 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -2 -0 -0 -0 -0 -0 -0 -1 -0 -0 -1 -0 -0 -0 -0 -0 -0 -0 -<> -<> -RESC=?; Reset Configuration -CLCK=80; 20MHz/80MHz -TPEA=9.600; Peaking Time -GAIF=0.9312; Fine Gain -GAIN=21.162; Total Gain (Analog * Fine) -RESL=204; Detector Reset Lockout -TFLA=0.200; Flat Top -TPFA=50; Fast Channel Peaking Time -PURE=OFF; PUR Interval On/Off -RTDE=OFF; RTD On/Off -MCAS=NORM; MCA Source -MCAC=2048; MCA/MCS Channels -SOFF=OFF; Set Spectrum Offset -AINP=POS; Analog Input Pos/Neg -INOF=DEF; Input Offset -GAIA=15; Analog Gain Index -CUSP=0; Non-Trapezoidal Shaping -PDMD=NORM; Peak Detect Mode (Min/Max) -THSL=0.585; Slow Threshold -TLLD=OFF; LLD Threshold -THFA=230.00; Fast Threshold -DACO=SHAPED; DAC Output -DACF=50; DAC Offset -RTDS=0; RTD Sensitivity -RTDT=0.00; RTD Threshold -BLRM=1; BLR Mode -BLRD=3; BLR Down Correction -BLRU=0; BLR Up Correction -AUO1=SCA8; AUX_OUT Selection -PRET=OFF; Preset Time -PRER=3600.000; Preset Real Time -PREC=OFF; Preset Counts -PRCL=1; Preset Counts Low Threshold -PRCH=8191; Preset Counts High Threshold -HVSE=-110; HV Set -TECS=220; TEC Set -PAPZ=OFF; Pole-Zero -PAPS=8.5; Preamp 8.5/5 (N/A) -SCOE=FA; Scope Trigger Edge -SCOT=12; Scope Trigger Position -SCOG=1; Digital Scope Gain -MCSL=1; MCS Low Threshold -MCSH=8191; MCS High Threshold -MCST=0.00; MCS Timebase -AUO2=ICR; AUX_OUT2 Selection -TPMO=OFF; Test Pulser On/Off -GPED=RI; G.P. Counter Edge -GPIN=AUX1; G.P. Counter Input -GPME=ON; G.P. Counter Uses MCA_EN? -GPGA=ON; G.P. Counter Uses GATE? -GPMC=ON; G.P. Counter Cleared With MCA Counters? -MCAE=OFF; MCA/MCS Enable -VOLU=OFF; Speaker On/Off -CON1=DAC; Connector 1 -CON2=AUXOUT2; Connector 2 -<> -<> -Device Type: PX5 -Serial Number: 2264 -Firmware: 6.07 Build: 3 -FPGA: 6.02 -Fast Count: 14530 -Slow Count: 133482 -Accumulation Time: 3597.495000 -Real Time: 3600.000000 -Dead Time: -HV Volt: -110V -TEC Temp: 221K -Board Temp: 37C -<> diff --git a/XRA/Data/Film_Sn_2h_17Jul_CuSource.mca b/XRA/Data/Film_Sn_2h_17Jul_CuSource.mca deleted file mode 100644 index 9eb8b79..0000000 --- a/XRA/Data/Film_Sn_2h_17Jul_CuSource.mca +++ /dev/null @@ -1,2132 +0,0 @@ -<> -TAG - live_data -DESCRIPTION - -GAIN - 3 -THRESHOLD - 0 -LIVE_MODE - 0 -PRESET_TIME - 0 -LIVE_TIME - 7195.004000 -REAL_TIME - 7200.000000 -START_TIME - 01/23/2000 00:50:56 -SERIAL_NUMBER - 0 -<> -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -93 -100 -134 -114 -117 -104 -109 -101 -108 -128 -98 -110 -119 -109 -130 -102 -101 -101 -103 -98 -91 -103 -92 -85 -100 -120 -87 -90 -91 -83 -107 -99 -89 -98 -105 -117 -95 -85 -74 -89 -73 -81 -74 -92 -92 -87 -91 -87 -89 -82 -95 -88 -93 -82 -85 -103 -92 -109 -87 -78 -86 -97 -104 -82 -81 -83 -84 -77 -65 -87 -71 -101 -85 -74 -80 -71 -76 -69 -79 -96 -75 -64 -85 -76 -98 -94 -64 -61 -81 -89 -77 -88 -75 -68 -82 -61 -64 -78 -95 -79 -80 -77 -79 -83 -76 -79 -92 -80 -74 -87 -85 -58 -93 -81 -69 -85 -82 -72 -79 -76 -72 -77 -75 -63 -80 -78 -70 -73 -87 -79 -76 -71 -70 -68 -86 -83 -79 -76 -80 -59 -101 -88 -79 -94 -66 -72 -65 -60 -74 -79 -63 -69 -79 -69 -80 -72 -76 -83 -82 -80 -123 -154 -165 -129 -106 -121 -95 -73 -74 -66 -82 -92 -87 -82 -88 -95 -69 -87 -88 -108 -95 -79 -82 -72 -78 -91 -103 -104 -107 -154 -179 -229 -332 -346 -400 -346 -244 -185 -122 -93 -95 -81 -86 -91 -106 -88 -90 -83 -69 -105 -99 -87 -115 -102 -122 -130 -133 -126 -95 -105 -75 -71 -91 -79 -83 -97 -93 -108 -141 -156 -151 -121 -118 -135 -124 -143 -141 -154 -185 -209 -353 -883 -2321 -6001 -13052 -23191 -32315 -36532 -32248 -22796 -13016 -5766 -2180 -765 -304 -169 -151 -143 -111 -120 -125 -100 -116 -115 -112 -139 -153 -200 -251 -427 -789 -1662 -3019 -4634 -5987 -6247 -5445 -3768 -2119 -946 -386 -140 -66 -38 -40 -25 -33 -43 -35 -42 -27 -28 -25 -30 -22 -22 -35 -32 -25 -28 -21 -36 -24 -25 -27 -24 -32 -25 -28 -19 -20 -22 -31 -28 -21 -25 -16 -21 -19 -17 -27 -28 -25 -31 -17 -21 -33 -39 -42 -45 -31 -26 -18 -20 -26 -23 -17 -15 -19 -19 -18 -18 -18 -22 -13 -26 -16 -19 -11 -9 -14 -15 -14 -20 -20 -18 -20 -14 -24 -16 -7 -8 -13 -12 -9 -8 -9 -8 -13 -14 -7 -10 -10 -11 -11 -13 -9 -11 -11 -7 -9 -11 -12 -6 -14 -7 -9 -7 -12 -19 -17 -11 -22 -18 -15 -17 -17 -14 -17 -7 -14 -13 -11 -9 -8 -12 -11 -4 -6 -9 -4 -6 -8 -10 -9 -5 -3 -7 -12 -16 -5 -9 -9 -7 -7 -7 -7 -5 -7 -8 -5 -2 -6 -9 -4 -12 -3 -7 -4 -8 -5 -4 -5 -6 -7 -7 -3 -5 -13 -6 -6 -4 -7 -7 -7 -5 -4 -7 -4 -3 -4 -4 -4 -6 -6 -5 -5 -8 -6 -7 -4 -11 -4 -5 -6 -6 -6 -7 -8 -9 -5 -8 -5 -6 -5 -6 -3 -2 -2 -7 -5 -4 -2 -10 -6 -10 -11 -7 -8 -3 -5 -3 -5 -7 -4 -9 -4 -5 -4 -2 -3 -7 -5 -6 -5 -6 -5 -4 -6 -4 -4 -5 -11 -9 -8 -3 -3 -6 -8 -3 -2 -1 -3 -2 -5 -4 -8 -3 -6 -8 -1 -4 -4 -3 -7 -3 -10 -7 -8 -7 -8 -9 -5 -6 -8 -2 -6 -7 -8 -8 -3 -5 -5 -3 -4 -7 -2 -6 -3 -1 -2 -3 -6 -1 -6 -4 -5 -4 -7 -1 -3 -0 -2 -5 -1 -7 -2 -5 -5 -2 -4 -4 -4 -4 -1 -2 -2 -3 -4 -6 -2 -3 -3 -2 -1 -4 -3 -3 -6 -6 -1 -4 -4 -4 -3 -6 -4 -5 -3 -1 -6 -3 -3 -3 -5 -2 -3 -4 -4 -2 -3 -7 -4 -7 -6 -3 -0 -2 -7 -4 -5 -3 -6 -4 -3 -7 -4 -3 -6 -3 -2 -9 -4 -5 -5 -3 -3 -7 -7 -5 -7 -6 -3 -2 -4 -4 -4 -4 -3 -0 -0 -6 -3 -3 -3 -4 -2 -6 -3 -4 -3 -0 -2 -4 -8 -4 -3 -1 -6 -3 -3 -2 -3 -6 -5 -3 -6 -3 -8 -5 -7 -3 -7 -7 -3 -6 -6 -5 -5 -6 -5 -3 -4 -6 -3 -2 -4 -4 -3 -4 -4 -0 -2 -2 -5 -1 -3 -3 -6 -2 -4 -2 -1 -10 -2 -1 -3 -5 -2 -2 -3 -2 -2 -5 -4 -5 -4 -3 -3 -7 -5 -6 -4 -3 -4 -3 -3 -2 -4 -2 -2 -1 -3 -3 -3 -8 -7 -5 -4 -6 -4 -2 -8 -5 -5 -1 -1 -5 -3 -5 -4 -3 -2 -4 -2 -6 -2 -8 -2 -8 -9 -9 -11 -13 -14 -17 -10 -18 -12 -19 -14 -20 -12 -15 -13 -15 -13 -7 -8 -8 -3 -2 -5 -0 -1 -2 -5 -4 -5 -4 -5 -1 -3 -5 -6 -4 -5 -6 -9 -9 -8 -12 -3 -10 -10 -16 -11 -17 -13 -4 -4 -10 -4 -7 -3 -0 -2 -4 -4 -3 -2 -0 -2 -4 -3 -2 -4 -4 -0 -4 -5 -2 -4 -5 -1 -2 -3 -3 -4 -3 -1 -5 -7 -3 -5 -2 -4 -2 -0 -2 -6 -5 -1 -2 -6 -1 -3 -3 -4 -1 -4 -7 -3 -5 -3 -1 -4 -2 -2 -5 -2 -6 -4 -3 -4 -10 -9 -8 -4 -3 -5 -9 -3 -2 -6 -2 -2 -3 -3 -2 -4 -5 -2 -2 -5 -3 -0 -5 -4 -4 -5 -3 -4 -2 -5 -0 -2 -2 -4 -3 -2 -5 -0 -2 -4 -1 -3 -1 -4 -4 -2 -5 -0 -1 -5 -4 -3 -7 -3 -1 -1 -0 -1 -2 -7 -0 -2 -1 -4 -1 -3 -4 -3 -4 -5 -4 -6 -3 -4 -4 -5 -2 -6 -2 -3 -4 -0 -2 -1 -2 -3 -3 -2 -2 -3 -2 -6 -3 -3 -1 -4 -2 -3 -1 -3 -4 -6 -1 -4 -2 -4 -4 -4 -3 -0 -2 -0 -3 -4 -3 -1 -4 -6 -4 -5 -7 -5 -3 -3 -3 -5 -5 -5 -4 -5 -7 -4 -5 -2 -6 -1 -3 -5 -0 -2 -3 -3 -2 -6 -4 -5 -1 -6 -4 -1 -9 -1 -7 -1 -3 -7 -2 -6 -2 -2 -1 -3 -2 -0 -3 -2 -1 -3 -1 -1 -1 -1 -2 -3 -5 -3 -4 -2 -6 -2 -2 -1 -1 -5 -3 -1 -3 -4 -2 -3 -1 -4 -1 -2 -2 -3 -8 -2 -2 -2 -2 -3 -1 -4 -4 -2 -3 -3 -2 -2 -2 -3 -6 -5 -3 -6 -1 -4 -5 -8 -5 -4 -3 -2 -3 -4 -4 -3 -3 -2 -4 -4 -1 -2 -7 -7 -1 -1 -4 -2 -4 -6 -2 -1 -6 -4 -0 -6 -2 -6 -4 -2 -4 -2 -0 -1 -3 -5 -2 -1 -7 -5 -3 -3 -5 -4 -6 -3 -6 -6 -3 -5 -9 -1 -3 -2 -3 -3 -5 -2 -3 -3 -2 -7 -4 -6 -2 -2 -3 -6 -1 -3 -2 -3 -3 -4 -4 -1 -6 -6 -4 -3 -3 -8 -8 -5 -7 -4 -2 -6 -4 -3 -4 -3 -5 -2 -5 -7 -11 -5 -6 -4 -8 -7 -6 -6 -8 -8 -7 -6 -5 -5 -5 -4 -2 -9 -6 -5 -9 -3 -6 -12 -6 -6 -9 -7 -8 -6 -9 -4 -7 -10 -13 -6 -8 -5 -9 -7 -5 -6 -5 -11 -3 -5 -4 -16 -9 -5 -6 -11 -4 -7 -7 -5 -6 -7 -6 -8 -13 -16 -7 -7 -6 -10 -8 -7 -7 -9 -7 -8 -11 -10 -3 -11 -11 -13 -10 -12 -13 -10 -13 -12 -10 -15 -7 -10 -11 -9 -8 -10 -11 -11 -11 -8 -17 -15 -16 -6 -14 -6 -10 -8 -11 -11 -14 -17 -13 -17 -17 -11 -11 -19 -12 -12 -19 -18 -9 -26 -12 -15 -16 -18 -15 -14 -14 -15 -17 -22 -18 -14 -17 -17 -15 -14 -14 -12 -11 -16 -18 -12 -15 -13 -23 -11 -22 -13 -27 -21 -8 -15 -17 -23 -21 -22 -12 -17 -24 -24 -17 -18 -16 -16 -19 -19 -19 -20 -26 -13 -22 -22 -18 -18 -15 -21 -20 -21 -20 -17 -22 -20 -19 -18 -21 -24 -20 -23 -23 -15 -15 -30 -24 -20 -31 -24 -22 -21 -34 -23 -24 -25 -38 -25 -28 -27 -36 -31 -25 -30 -25 -28 -23 -28 -30 -24 -30 -32 -19 -37 -39 -34 -32 -25 -41 -20 -28 -31 -27 -34 -30 -25 -33 -35 -37 -43 -41 -28 -32 -36 -34 -28 -36 -34 -35 -46 -43 -32 -45 -45 -41 -42 -48 -41 -35 -34 -48 -57 -43 -50 -50 -39 -46 -55 -55 -54 -52 -37 -45 -47 -56 -43 -62 -51 -63 -70 -43 -68 -46 -75 -59 -54 -77 -72 -75 -52 -76 -88 -54 -74 -102 -79 -91 -89 -91 -75 -85 -102 -102 -96 -97 -104 -106 -108 -117 -109 -112 -111 -116 -122 -120 -131 -138 -149 -134 -123 -156 -152 -175 -130 -158 -155 -142 -167 -172 -168 -187 -176 -198 -173 -206 -188 -208 -246 -206 -227 -187 -188 -229 -228 -203 -223 -229 -203 -220 -237 -240 -214 -222 -216 -223 -248 -197 -238 -186 -236 -218 -210 -235 -223 -213 -194 -201 -212 -175 -193 -173 -168 -164 -169 -179 -164 -172 -190 -162 -164 -166 -178 -171 -155 -150 -147 -141 -139 -130 -142 -134 -119 -137 -123 -115 -123 -117 -107 -102 -104 -94 -79 -100 -99 -85 -77 -86 -72 -100 -76 -73 -75 -73 -72 -81 -62 -68 -52 -61 -60 -65 -58 -69 -62 -52 -48 -61 -46 -53 -51 -49 -40 -44 -52 -52 -67 -38 -42 -51 -44 -50 -46 -52 -34 -37 -41 -38 -44 -34 -32 -37 -32 -36 -35 -22 -32 -41 -29 -29 -31 -25 -23 -29 -29 -20 -27 -25 -26 -32 -27 -31 -17 -29 -23 -20 -15 -26 -17 -21 -21 -23 -16 -22 -22 -28 -14 -21 -26 -21 -22 -22 -22 -19 -19 -16 -21 -22 -21 -24 -21 -19 -25 -13 -20 -12 -13 -18 -22 -15 -15 -14 -16 -19 -9 -15 -11 -16 -17 -13 -16 -12 -15 -14 -17 -16 -8 -12 -17 -13 -14 -9 -18 -16 -14 -10 -10 -16 -13 -16 -12 -10 -12 -9 -10 -17 -16 -12 -11 -11 -15 -13 -10 -14 -13 -8 -14 -14 -12 -7 -11 -12 -9 -13 -6 -14 -12 -7 -14 -12 -15 -12 -12 -10 -8 -10 -9 -8 -8 -11 -14 -5 -9 -9 -14 -7 -7 -12 -6 -6 -10 -15 -2 -6 -12 -11 -6 -12 -9 -10 -8 -5 -6 -8 -5 -15 -10 -10 -10 -7 -10 -6 -11 -13 -11 -13 -9 -4 -10 -5 -11 -12 -6 -4 -8 -6 -10 -14 -5 -11 -6 -4 -7 -5 -9 -5 -6 -3 -5 -8 -12 -8 -7 -12 -7 -5 -10 -5 -5 -6 -4 -4 -6 -6 -3 -4 -2 -2 -3 -7 -2 -3 -3 -5 -2 -4 -12 -10 -15 -16 -19 -22 -31 -44 -61 -88 -100 -122 -151 -206 -197 -223 -259 -258 -234 -239 -189 -189 -154 -128 -128 -78 -66 -46 -27 -33 -13 -11 -8 -4 -4 -3 -3 -2 -1 -1 -1 -1 -0 -1 -0 -1 -0 -0 -0 -1 -0 -0 -1 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -1 -0 -1 -0 -1 -0 -0 -1 -0 -0 -0 -0 -0 -0 -0 -1 -0 -1 -1 -0 -0 -0 -0 -1 -0 -0 -1 -0 -1 -0 -0 -0 -1 -0 -1 -1 -1 -2 -0 -1 -0 -3 -2 -0 -1 -0 -0 -0 -0 -0 -1 -0 -3 -2 -0 -0 -2 -1 -2 -0 -0 -1 -0 -0 -2 -0 -1 -3 -0 -0 -0 -0 -0 -0 -2 -0 -2 -0 -1 -0 -0 -<> -<> -RESC=?; Reset Configuration -CLCK=80; 20MHz/80MHz -TPEA=9.600; Peaking Time -GAIF=0.9312; Fine Gain -GAIN=21.162; Total Gain (Analog * Fine) -RESL=204; Detector Reset Lockout -TFLA=0.200; Flat Top -TPFA=50; Fast Channel Peaking Time -PURE=OFF; PUR Interval On/Off -RTDE=OFF; RTD On/Off -MCAS=NORM; MCA Source -MCAC=2048; MCA/MCS Channels -SOFF=OFF; Set Spectrum Offset -AINP=POS; Analog Input Pos/Neg -INOF=DEF; Input Offset -GAIA=15; Analog Gain Index -CUSP=0; Non-Trapezoidal Shaping -PDMD=NORM; Peak Detect Mode (Min/Max) -THSL=0.585; Slow Threshold -TLLD=OFF; LLD Threshold -THFA=230.00; Fast Threshold -DACO=SHAPED; DAC Output -DACF=50; DAC Offset -RTDS=0; RTD Sensitivity -RTDT=0.00; RTD Threshold -BLRM=1; BLR Mode -BLRD=3; BLR Down Correction -BLRU=0; BLR Up Correction -AUO1=SCA8; AUX_OUT Selection -PRET=OFF; Preset Time -PRER=7200.000; Preset Real Time -PREC=OFF; Preset Counts -PRCL=1; Preset Counts Low Threshold -PRCH=8191; Preset Counts High Threshold -HVSE=-110; HV Set -TECS=220; TEC Set -PAPZ=OFF; Pole-Zero -PAPS=8.5; Preamp 8.5/5 (N/A) -SCOE=FA; Scope Trigger Edge -SCOT=12; Scope Trigger Position -SCOG=1; Digital Scope Gain -MCSL=1; MCS Low Threshold -MCSH=8191; MCS High Threshold -MCST=0.00; MCS Timebase -AUO2=ICR; AUX_OUT2 Selection -TPMO=OFF; Test Pulser On/Off -GPED=RI; G.P. Counter Edge -GPIN=AUX1; G.P. Counter Input -GPME=ON; G.P. Counter Uses MCA_EN? -GPGA=ON; G.P. Counter Uses GATE? -GPMC=ON; G.P. Counter Cleared With MCA Counters? -MCAE=OFF; MCA/MCS Enable -VOLU=OFF; Speaker On/Off -CON1=DAC; Connector 1 -CON2=AUXOUT2; Connector 2 -<> -<> -Device Type: PX5 -Serial Number: 2264 -Firmware: 6.07 Build: 3 -FPGA: 6.02 -Fast Count: 21953 -Slow Count: 291809 -Accumulation Time: 7195.004000 -Real Time: 7200.000000 -Dead Time: -HV Volt: -110V -TEC Temp: 221K -Board Temp: 38C -<> diff --git a/XRA/Data/Fundo_acqTest_1hour_01.mca b/XRA/Data/Fundo_acqTest_1hour_01.mca deleted file mode 100644 index f421c2d..0000000 --- a/XRA/Data/Fundo_acqTest_1hour_01.mca +++ /dev/null @@ -1,2132 +0,0 @@ -<> -TAG - live_data -DESCRIPTION - -GAIN - 3 -THRESHOLD - 0 -LIVE_MODE - 0 -PRESET_TIME - 0 -LIVE_TIME - 2030.824878 -REAL_TIME - 3600.000000 -START_TIME - 10/11/2024 13:52:38 -SERIAL_NUMBER - 0 -<> -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -1 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -1 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -1 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -1 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -1 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -1 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -1 -1 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -1 -0 -0 -0 -0 -0 -0 -1 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -1 -0 -0 -0 -0 -0 -0 -0 -1 -0 -0 -0 -0 -0 -0 -0 -1 -0 -1 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -1 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -1 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -1 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -1 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -1 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -1 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -1 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -1 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -1 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -1 -0 -0 -0 -0 -0 -0 -0 -1 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -1 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -1 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -1 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -1 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -1 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -1 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -1 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -1 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -1 -0 -0 -0 -0 -0 -0 -0 -0 -0 -1 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -<> -<> -RESC=?; Reset Configuration -CLCK=80; 20MHz/80MHz -TPEA=9.600; Peaking Time -GAIF=0.9312; Fine Gain -GAIN=21.162; Total Gain (Analog * Fine) -RESL=204; Detector Reset Lockout -TFLA=0.200; Flat Top -TPFA=50; Fast Channel Peaking Time -PURE=OFF; PUR Interval On/Off -RTDE=OFF; RTD On/Off -MCAS=NORM; MCA Source -MCAC=2048; MCA/MCS Channels -SOFF=OFF; Set Spectrum Offset -AINP=POS; Analog Input Pos/Neg -INOF=DEF; Input Offset -GAIA=15; Analog Gain Index -CUSP=0; Non-Trapezoidal Shaping -PDMD=NORM; Peak Detect Mode (Min/Max) -THSL=0.585; Slow Threshold -TLLD=OFF; LLD Threshold -THFA=230.00; Fast Threshold -DACO=SHAPED; DAC Output -DACF=50; DAC Offset -RTDS=0; RTD Sensitivity -RTDT=0.00; RTD Threshold -BLRM=1; BLR Mode -BLRD=3; BLR Down Correction -BLRU=0; BLR Up Correction -AUO1=SCA8; AUX_OUT Selection -PRET=OFF; Preset Time -PRER=3600.000; Preset Real Time -PREC=OFF; Preset Counts -PRCL=1; Preset Counts Low Threshold -PRCH=8191; Preset Counts High Threshold -HVSE=-110; HV Set -TECS=220; TEC Set -PAPZ=OFF; Pole-Zero -PAPS=8.5; Preamp 8.5/5 (N/A) -SCOE=FA; Scope Trigger Edge -SCOT=12; Scope Trigger Position -SCOG=1; Digital Scope Gain -MCSL=1; MCS Low Threshold -MCSH=8191; MCS High Threshold -MCST=0.00; MCS Timebase -AUO2=ICR; AUX_OUT2 Selection -TPMO=OFF; Test Pulser On/Off -GPED=RI; G.P. Counter Edge -GPIN=AUX1; G.P. Counter Input -GPME=ON; G.P. Counter Uses MCA_EN? -GPGA=ON; G.P. Counter Uses GATE? -GPMC=ON; G.P. Counter Cleared With MCA Counters? -MCAE=OFF; MCA/MCS Enable -VOLU=OFF; Speaker On/Off -CON1=DAC; Connector 1 -CON2=AUXOUT2; Connector 2 -<> -<> -Device Type: PX5 -Serial Number: 2264 -Firmware: 6.07 Build: 3 -FPGA: 6.02 -Fast Count: 62 -Slow Count: 35 -Accumulation Time: 3597.564000 -Real Time: 3600.000000 -Dead Time: 43.55% -HV Volt: -110V -TEC Temp: 220K -Board Temp: 34C -<> diff --git a/XRA/Data/Mo_Calibration.mca b/XRA/Data/Mo_Calibration.mca deleted file mode 100644 index cccb68f..0000000 --- a/XRA/Data/Mo_Calibration.mca +++ /dev/null @@ -1,2132 +0,0 @@ -<> -TAG - live_data -DESCRIPTION - -GAIN - 3 -THRESHOLD - 0 -LIVE_MODE - 0 -PRESET_TIME - 0 -LIVE_TIME - 521.659000 -REAL_TIME - 522.052000 -START_TIME - 01/27/2000 02:01:42 -SERIAL_NUMBER - 0 -<> -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -27 -29 -28 -33 -31 -21 -32 -21 -28 -28 -25 -22 -34 -28 -29 -27 -39 -44 -38 -42 -30 -36 -27 -26 -26 -27 -16 -19 -22 -17 -17 -17 -10 -12 -10 -10 -14 -8 -19 -11 -12 -10 -10 -8 -15 -10 -8 -6 -4 -6 -4 -7 -4 -4 -7 -8 -5 -7 -7 -10 -10 -10 -16 -10 -15 -14 -17 -9 -10 -8 -2 -9 -3 -7 -3 -5 -5 -5 -10 -6 -6 -3 -1 -6 -6 -5 -6 -8 -6 -6 -10 -4 -5 -7 -5 -4 -9 -4 -4 -10 -9 -4 -0 -8 -0 -2 -4 -5 -4 -5 -3 -5 -3 -0 -4 -3 -3 -4 -3 -3 -5 -5 -3 -1 -1 -4 -6 -3 -3 -4 -2 -3 -3 -3 -7 -2 -7 -3 -1 -4 -5 -3 -2 -2 -2 -5 -4 -4 -0 -3 -4 -5 -3 -5 -4 -5 -5 -3 -2 -5 -6 -14 -14 -18 -9 -10 -13 -4 -5 -6 -1 -6 -3 -2 -11 -4 -6 -4 -8 -10 -3 -5 -6 -3 -6 -4 -5 -6 -9 -9 -4 -11 -23 -24 -46 -28 -24 -13 -8 -2 -2 -9 -5 -7 -3 -4 -7 -3 -4 -1 -6 -3 -9 -6 -9 -13 -9 -8 -9 -2 -6 -2 -5 -7 -5 -8 -11 -15 -18 -19 -19 -12 -7 -6 -3 -4 -6 -5 -3 -3 -4 -5 -1 -2 -4 -4 -5 -4 -8 -5 -3 -3 -3 -5 -6 -8 -7 -8 -4 -3 -2 -3 -4 -3 -1 -1 -4 -1 -7 -3 -3 -4 -7 -3 -3 -2 -6 -0 -4 -4 -2 -4 -5 -6 -2 -4 -2 -4 -2 -2 -2 -8 -3 -2 -2 -6 -2 -4 -4 -2 -8 -1 -4 -2 -5 -3 -3 -4 -3 -5 -5 -1 -2 -3 -4 -3 -3 -3 -2 -4 -3 -5 -3 -3 -4 -5 -3 -7 -5 -12 -6 -6 -4 -3 -3 -4 -2 -6 -3 -6 -3 -2 -2 -2 -4 -2 -4 -2 -4 -2 -1 -3 -2 -5 -3 -8 -6 -1 -5 -3 -5 -1 -5 -6 -4 -3 -4 -2 -4 -3 -1 -1 -4 -4 -2 -3 -4 -6 -2 -4 -2 -4 -3 -2 -2 -0 -3 -3 -1 -4 -2 -10 -7 -3 -4 -8 -8 -6 -2 -4 -1 -5 -2 -1 -2 -4 -5 -4 -0 -4 -4 -1 -7 -8 -4 -3 -6 -3 -3 -2 -4 -4 -0 -5 -3 -4 -5 -7 -4 -0 -2 -6 -1 -2 -4 -2 -2 -3 -3 -1 -2 -3 -0 -3 -1 -7 -8 -2 -10 -8 -3 -2 -5 -4 -5 -6 -6 -5 -1 -4 -5 -3 -5 -6 -7 -8 -1 -7 -2 -3 -4 -1 -2 -5 -6 -11 -9 -4 -7 -7 -13 -4 -4 -10 -0 -6 -3 -7 -9 -12 -10 -10 -16 -16 -10 -16 -15 -9 -15 -12 -4 -9 -20 -11 -9 -11 -7 -14 -15 -16 -16 -19 -21 -16 -32 -31 -28 -35 -30 -30 -21 -26 -28 -32 -43 -26 -35 -30 -48 -40 -41 -42 -31 -27 -38 -50 -36 -60 -69 -110 -216 -386 -807 -1370 -2315 -3541 -5053 -6548 -7834 -8916 -9588 -9101 -7814 -6296 -4488 -2965 -1809 -993 -471 -239 -137 -54 -40 -30 -28 -21 -21 -23 -16 -13 -11 -16 -12 -10 -15 -10 -14 -11 -15 -17 -17 -15 -13 -10 -10 -14 -9 -17 -12 -18 -15 -14 -19 -30 -9 -18 -13 -18 -24 -19 -12 -26 -12 -16 -21 -24 -25 -22 -30 -39 -48 -73 -145 -253 -415 -677 -1027 -1255 -1531 -1609 -1639 -1484 -1176 -872 -563 -373 -263 -230 -202 -207 -232 -249 -235 -221 -144 -112 -53 -40 -25 -12 -5 -2 -1 -0 -1 -1 -1 -1 -2 -1 -0 -1 -0 -1 -2 -1 -1 -1 -1 -0 -0 -0 -0 -0 -0 -1 -1 -1 -1 -1 -0 -0 -1 -4 -0 -1 -1 -0 -1 -0 -0 -0 -0 -1 -0 -1 -0 -0 -1 -0 -0 -2 -1 -0 -1 -0 -0 -1 -0 -0 -0 -0 -1 -1 -0 -1 -1 -2 -0 -0 -0 -0 -0 -2 -1 -2 -0 -1 -1 -0 -0 -0 -1 -0 -0 -0 -1 -1 -0 -2 -0 -1 -1 -0 -3 -1 -0 -0 -0 -0 -0 -0 -0 -0 -0 -1 -0 -0 -0 -0 -0 -0 -1 -0 -0 -0 -1 -2 -1 -0 -1 -1 -0 -3 -1 -1 -1 -0 -2 -0 -0 -0 -0 -0 -0 -0 -0 -1 -0 -1 -2 -1 -1 -1 -1 -1 -1 -1 -1 -1 -0 -0 -1 -0 -0 -0 -1 -1 -0 -1 -0 -0 -1 -1 -1 -0 -0 -3 -0 -2 -1 -2 -1 -2 -0 -0 -1 -0 -0 -0 -0 -0 -0 -0 -0 -1 -1 -0 -1 -3 -2 -1 -1 -0 -0 -2 -0 -1 -1 -1 -1 -0 -1 -1 -0 -0 -0 -2 -1 -1 -4 -0 -0 -0 -1 -0 -0 -1 -1 -3 -1 -1 -0 -1 -0 -0 -2 -1 -1 -1 -0 -2 -0 -0 -0 -0 -0 -1 -2 -0 -0 -2 -0 -0 -0 -1 -1 -0 -0 -1 -1 -1 -2 -0 -0 -0 -0 -0 -3 -1 -0 -1 -1 -0 -1 -1 -0 -1 -2 -2 -2 -1 -2 -0 -0 -0 -1 -0 -0 -0 -0 -0 -0 -0 -1 -0 -2 -1 -1 -0 -0 -1 -0 -0 -1 -1 -1 -1 -0 -0 -0 -1 -0 -0 -0 -0 -0 -1 -1 -1 -0 -0 -0 -0 -1 -0 -2 -0 -0 -1 -1 -1 -1 -1 -0 -1 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -1 -0 -0 -1 -0 -0 -0 -1 -0 -1 -0 -1 -0 -1 -3 -0 -1 -0 -2 -0 -1 -2 -0 -0 -1 -0 -2 -1 -2 -0 -2 -0 -0 -1 -0 -1 -2 -3 -1 -0 -1 -0 -3 -0 -0 -0 -0 -0 -0 -2 -2 -0 -0 -1 -1 -1 -1 -0 -1 -1 -1 -0 -0 -0 -0 -0 -0 -0 -3 -0 -1 -1 -0 -1 -2 -0 -1 -2 -1 -2 -0 -0 -0 -1 -0 -2 -0 -1 -1 -2 -0 -0 -0 -2 -1 -3 -0 -0 -0 -0 -1 -0 -1 -0 -0 -1 -0 -0 -0 -1 -0 -1 -1 -1 -2 -0 -0 -0 -0 -0 -1 -0 -0 -1 -0 -0 -1 -1 -2 -0 -1 -1 -0 -0 -1 -1 -0 -0 -1 -0 -0 -0 -1 -2 -1 -0 -0 -1 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -1 -0 -1 -0 -0 -0 -1 -0 -0 -0 -0 -1 -1 -0 -0 -0 -0 -0 -0 -0 -0 -2 -0 -0 -0 -0 -1 -0 -0 -0 -0 -1 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -1 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -1 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -1 -0 -1 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -1 -0 -0 -1 -0 -0 -0 -1 -1 -0 -0 -0 -0 -0 -0 -0 -1 -1 -0 -1 -0 -0 -1 -1 -0 -0 -1 -1 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -1 -1 -0 -0 -1 -0 -0 -0 -0 -0 -1 -0 -0 -0 -0 -0 -1 -2 -0 -0 -1 -0 -0 -1 -1 -0 -0 -0 -0 -1 -0 -0 -0 -0 -0 -0 -0 -1 -0 -1 -1 -0 -1 -0 -1 -1 -0 -0 -0 -0 -0 -1 -0 -0 -0 -0 -0 -1 -0 -2 -0 -0 -0 -2 -0 -0 -0 -0 -2 -1 -1 -0 -1 -1 -0 -0 -2 -2 -0 -1 -0 -0 -1 -0 -1 -0 -2 -0 -0 -0 -0 -0 -0 -1 -1 -0 -0 -1 -0 -2 -0 -0 -0 -1 -0 -1 -1 -0 -2 -1 -1 -1 -0 -0 -0 -1 -2 -0 -0 -1 -0 -0 -0 -1 -0 -2 -0 -0 -0 -1 -1 -1 -1 -1 -1 -0 -0 -0 -1 -2 -0 -2 -1 -0 -1 -0 -0 -0 -0 -1 -0 -0 -1 -2 -1 -1 -2 -2 -2 -2 -0 -0 -0 -2 -0 -1 -2 -1 -0 -1 -2 -1 -1 -0 -2 -2 -3 -2 -1 -0 -2 -1 -1 -2 -1 -0 -1 -3 -1 -0 -1 -1 -0 -2 -2 -0 -1 -1 -1 -3 -0 -3 -1 -1 -1 -0 -2 -1 -0 -2 -4 -0 -1 -1 -3 -0 -4 -2 -1 -1 -2 -1 -2 -1 -2 -1 -2 -0 -0 -1 -1 -1 -0 -6 -1 -3 -3 -1 -5 -1 -4 -2 -4 -1 -4 -1 -5 -3 -0 -4 -5 -3 -1 -4 -4 -3 -2 -3 -4 -2 -4 -5 -1 -3 -3 -9 -5 -7 -11 -8 -6 -4 -4 -8 -2 -8 -10 -6 -3 -6 -6 -6 -5 -3 -5 -7 -9 -4 -3 -4 -4 -4 -5 -6 -6 -3 -5 -3 -7 -4 -7 -5 -9 -3 -7 -6 -4 -2 -2 -1 -7 -2 -3 -2 -2 -5 -4 -5 -5 -2 -3 -3 -3 -5 -2 -3 -2 -1 -3 -2 -0 -3 -2 -1 -4 -2 -1 -1 -0 -6 -2 -1 -2 -3 -1 -1 -1 -1 -2 -1 -0 -0 -1 -0 -0 -1 -3 -1 -3 -1 -2 -2 -3 -0 -5 -2 -0 -0 -0 -0 -0 -2 -1 -2 -0 -2 -1 -3 -0 -0 -0 -1 -0 -0 -1 -0 -1 -0 -1 -1 -0 -3 -3 -1 -1 -0 -1 -1 -1 -2 -1 -1 -1 -0 -2 -1 -1 -0 -2 -1 -0 -1 -2 -1 -0 -0 -0 -0 -1 -2 -0 -1 -2 -0 -0 -0 -0 -2 -0 -0 -0 -1 -0 -0 -1 -0 -0 -0 -1 -0 -1 -0 -1 -1 -0 -0 -0 -0 -0 -1 -0 -2 -0 -0 -2 -0 -0 -1 -2 -0 -2 -1 -0 -2 -1 -0 -0 -0 -0 -0 -1 -0 -2 -0 -0 -0 -1 -0 -0 -1 -1 -0 -1 -2 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -1 -2 -1 -1 -0 -0 -2 -1 -0 -0 -1 -1 -1 -0 -2 -0 -0 -0 -0 -1 -0 -0 -0 -1 -0 -0 -2 -0 -0 -0 -0 -0 -0 -1 -0 -0 -1 -1 -0 -0 -1 -1 -0 -1 -0 -0 -0 -0 -1 -0 -0 -0 -0 -1 -1 -0 -0 -2 -1 -0 -0 -0 -0 -0 -1 -2 -0 -0 -0 -0 -0 -0 -0 -2 -0 -0 -0 -0 -1 -0 -0 -0 -1 -2 -0 -0 -0 -0 -0 -1 -0 -0 -2 -0 -0 -1 -0 -2 -0 -0 -2 -2 -2 -4 -4 -4 -5 -4 -10 -10 -12 -13 -13 -12 -16 -18 -14 -16 -9 -14 -10 -5 -8 -7 -4 -0 -2 -0 -0 -0 -1 -0 -0 -0 -0 -0 -0 -0 -1 -1 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -1 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -1 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -<> -<> -RESC=?; Reset Configuration -CLCK=80; 20MHz/80MHz -TPEA=9.600; Peaking Time -GAIF=0.9312; Fine Gain -GAIN=21.162; Total Gain (Analog * Fine) -RESL=204; Detector Reset Lockout -TFLA=0.200; Flat Top -TPFA=50; Fast Channel Peaking Time -PURE=OFF; PUR Interval On/Off -RTDE=OFF; RTD On/Off -MCAS=NORM; MCA Source -MCAC=2048; MCA/MCS Channels -SOFF=OFF; Set Spectrum Offset -AINP=POS; Analog Input Pos/Neg -INOF=DEF; Input Offset -GAIA=15; Analog Gain Index -CUSP=0; Non-Trapezoidal Shaping -PDMD=NORM; Peak Detect Mode (Min/Max) -THSL=0.585; Slow Threshold -TLLD=OFF; LLD Threshold -THFA=230.00; Fast Threshold -DACO=SHAPED; DAC Output -DACF=50; DAC Offset -RTDS=0; RTD Sensitivity -RTDT=0.00; RTD Threshold -BLRM=1; BLR Mode -BLRD=3; BLR Down Correction -BLRU=0; BLR Up Correction -AUO1=SCA8; AUX_OUT Selection -PRET=OFF; Preset Time -PRER=1800.000; Preset Real Time -PREC=OFF; Preset Counts -PRCL=1; Preset Counts Low Threshold -PRCH=8191; Preset Counts High Threshold -HVSE=-110; HV Set -TECS=220; TEC Set -PAPZ=OFF; Pole-Zero -PAPS=8.5; Preamp 8.5/5 (N/A) -SCOE=FA; Scope Trigger Edge -SCOT=12; Scope Trigger Position -SCOG=1; Digital Scope Gain -MCSL=1; MCS Low Threshold -MCSH=8191; MCS High Threshold -MCST=0.00; MCS Timebase -AUO2=ICR; AUX_OUT2 Selection -TPMO=OFF; Test Pulser On/Off -GPED=RI; G.P. Counter Edge -GPIN=AUX1; G.P. Counter Input -GPME=ON; G.P. Counter Uses MCA_EN? -GPGA=ON; G.P. Counter Uses GATE? -GPMC=ON; G.P. Counter Cleared With MCA Counters? -MCAE=OFF; MCA/MCS Enable -VOLU=OFF; Speaker On/Off -CON1=DAC; Connector 1 -CON2=AUXOUT2; Connector 2 -<> -<> -Device Type: PX5 -Serial Number: 2264 -Firmware: 6.07 Build: 3 -FPGA: 6.02 -Fast Count: 787 -Slow Count: 103114 -Accumulation Time: 521.659000 -Real Time: 522.052000 -Dead Time: -HV Volt: -110V -TEC Temp: 221K -Board Temp: 36C -<> diff --git a/XRA/Data/NoFilm_2h_17Jul_CuSource.mca b/XRA/Data/NoFilm_2h_17Jul_CuSource.mca deleted file mode 100644 index 7a2640c..0000000 --- a/XRA/Data/NoFilm_2h_17Jul_CuSource.mca +++ /dev/null @@ -1,2132 +0,0 @@ -<> -TAG - live_data -DESCRIPTION - -GAIN - 3 -THRESHOLD - 0 -LIVE_MODE - 0 -PRESET_TIME - 0 -LIVE_TIME - 7194.999000 -REAL_TIME - 7200.000000 -START_TIME - 01/23/2000 03:09:31 -SERIAL_NUMBER - 0 -<> -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -93 -128 -111 -123 -133 -104 -110 -125 -131 -99 -115 -93 -114 -98 -103 -99 -110 -100 -109 -101 -105 -96 -105 -102 -98 -110 -104 -76 -91 -75 -80 -95 -96 -101 -96 -97 -119 -89 -86 -79 -93 -88 -97 -85 -103 -86 -106 -90 -94 -88 -91 -115 -107 -89 -99 -86 -96 -94 -100 -90 -111 -86 -81 -92 -90 -88 -80 -76 -97 -90 -95 -79 -95 -65 -77 -88 -80 -84 -97 -60 -80 -86 -91 -79 -84 -72 -80 -70 -79 -76 -87 -100 -85 -84 -76 -85 -84 -73 -89 -83 -86 -67 -80 -83 -89 -64 -90 -80 -68 -98 -64 -78 -67 -80 -74 -74 -74 -65 -80 -81 -66 -75 -69 -85 -70 -70 -72 -68 -78 -69 -74 -82 -71 -65 -81 -95 -64 -82 -75 -60 -89 -74 -72 -78 -86 -79 -72 -58 -74 -82 -82 -85 -78 -69 -79 -80 -80 -80 -73 -95 -107 -139 -167 -160 -126 -88 -88 -72 -77 -89 -65 -88 -87 -80 -87 -74 -85 -92 -101 -100 -108 -89 -100 -72 -70 -77 -87 -95 -110 -152 -209 -267 -312 -354 -394 -374 -259 -171 -118 -95 -88 -89 -97 -78 -82 -94 -91 -95 -79 -100 -99 -90 -105 -113 -143 -127 -129 -140 -111 -102 -89 -97 -79 -76 -100 -108 -106 -124 -152 -156 -154 -141 -123 -122 -127 -128 -147 -171 -182 -246 -370 -900 -2642 -6657 -14758 -25521 -36544 -40811 -36079 -25202 -14599 -6408 -2438 -771 -316 -199 -165 -136 -125 -156 -140 -123 -119 -143 -129 -164 -186 -231 -285 -443 -925 -1725 -3173 -5141 -6635 -6804 -5764 -4067 -2309 -1128 -455 -168 -59 -39 -36 -24 -33 -27 -26 -34 -28 -29 -36 -28 -35 -34 -36 -22 -31 -24 -33 -21 -20 -26 -20 -30 -32 -26 -35 -35 -24 -20 -33 -34 -17 -21 -14 -29 -18 -20 -23 -27 -26 -20 -43 -36 -36 -54 -40 -28 -40 -28 -18 -27 -18 -22 -27 -27 -22 -20 -20 -19 -16 -14 -14 -17 -20 -21 -17 -13 -24 -12 -14 -20 -18 -14 -15 -18 -11 -20 -7 -10 -19 -10 -12 -15 -10 -15 -8 -10 -10 -11 -19 -9 -5 -12 -15 -12 -5 -11 -14 -19 -8 -15 -8 -18 -8 -12 -14 -10 -15 -11 -21 -21 -23 -24 -14 -16 -10 -20 -16 -22 -15 -12 -9 -11 -7 -7 -8 -9 -12 -7 -6 -10 -12 -10 -14 -10 -11 -10 -15 -13 -8 -12 -10 -2 -8 -3 -6 -11 -4 -7 -9 -4 -5 -7 -1 -6 -8 -9 -7 -7 -4 -9 -4 -6 -6 -6 -8 -13 -5 -1 -8 -6 -8 -3 -6 -9 -7 -3 -4 -4 -4 -11 -11 -8 -5 -7 -6 -10 -8 -4 -3 -5 -4 -11 -4 -7 -5 -1 -8 -4 -11 -6 -6 -5 -8 -1 -6 -7 -5 -5 -4 -8 -7 -5 -5 -1 -5 -8 -8 -10 -4 -4 -0 -5 -5 -8 -4 -4 -4 -7 -2 -4 -4 -3 -6 -4 -8 -3 -5 -5 -6 -4 -6 -4 -2 -6 -3 -2 -6 -4 -6 -2 -6 -2 -6 -4 -4 -7 -1 -6 -3 -3 -4 -4 -3 -6 -8 -10 -6 -9 -6 -13 -9 -7 -3 -6 -6 -5 -4 -5 -4 -7 -3 -4 -2 -4 -10 -4 -4 -4 -2 -7 -6 -6 -3 -5 -6 -1 -1 -4 -5 -2 -3 -3 -2 -3 -7 -7 -4 -6 -6 -3 -5 -4 -3 -1 -8 -3 -8 -5 -9 -2 -2 -7 -3 -7 -3 -3 -2 -3 -6 -7 -8 -6 -2 -4 -5 -5 -6 -5 -7 -5 -6 -4 -8 -5 -4 -1 -2 -2 -3 -4 -2 -2 -1 -3 -8 -3 -3 -3 -1 -1 -4 -0 -6 -3 -3 -2 -4 -3 -2 -6 -3 -5 -3 -9 -4 -3 -1 -3 -6 -3 -1 -3 -3 -4 -3 -2 -6 -5 -3 -6 -4 -6 -2 -4 -4 -5 -6 -2 -2 -3 -1 -4 -2 -4 -3 -2 -3 -6 -4 -5 -7 -1 -8 -3 -5 -10 -7 -8 -6 -6 -1 -4 -5 -11 -7 -4 -4 -4 -6 -4 -7 -1 -4 -1 -2 -3 -2 -2 -5 -6 -6 -3 -2 -1 -1 -3 -6 -5 -1 -4 -5 -5 -3 -7 -3 -2 -5 -5 -2 -4 -1 -7 -4 -8 -11 -5 -5 -3 -4 -4 -3 -2 -8 -3 -2 -10 -0 -5 -4 -4 -4 -5 -4 -3 -2 -7 -3 -6 -2 -1 -2 -7 -2 -6 -5 -5 -6 -5 -1 -4 -4 -3 -8 -5 -7 -7 -8 -11 -7 -10 -15 -12 -10 -3 -11 -7 -17 -16 -17 -11 -8 -7 -7 -4 -7 -4 -2 -1 -3 -2 -2 -4 -3 -4 -1 -2 -2 -0 -4 -5 -1 -9 -5 -8 -2 -4 -2 -2 -10 -7 -13 -9 -8 -12 -11 -12 -9 -5 -7 -7 -5 -3 -3 -1 -3 -2 -3 -7 -3 -1 -2 -1 -3 -3 -1 -4 -3 -4 -3 -2 -2 -1 -6 -2 -4 -5 -8 -3 -6 -3 -5 -2 -6 -4 -4 -3 -5 -5 -2 -1 -2 -2 -3 -3 -3 -3 -3 -3 -6 -1 -4 -2 -1 -3 -3 -1 -5 -2 -1 -6 -5 -3 -5 -6 -7 -2 -1 -1 -6 -1 -4 -3 -3 -4 -4 -4 -5 -3 -1 -3 -3 -3 -6 -3 -3 -1 -2 -8 -3 -2 -1 -0 -2 -4 -1 -4 -1 -5 -5 -5 -4 -1 -2 -1 -5 -2 -3 -6 -4 -2 -5 -1 -3 -2 -4 -2 -3 -2 -2 -1 -1 -5 -3 -2 -3 -4 -3 -3 -2 -2 -3 -4 -4 -1 -6 -2 -4 -4 -2 -1 -3 -1 -3 -1 -3 -2 -2 -0 -4 -0 -3 -6 -4 -4 -4 -5 -2 -3 -5 -7 -2 -1 -3 -2 -3 -2 -1 -4 -3 -3 -2 -1 -3 -2 -3 -0 -5 -3 -5 -4 -4 -3 -4 -7 -4 -5 -3 -1 -4 -5 -4 -6 -3 -0 -0 -3 -3 -4 -3 -3 -0 -4 -4 -3 -1 -2 -7 -4 -1 -6 -2 -4 -5 -4 -2 -6 -1 -3 -7 -1 -2 -1 -3 -1 -5 -4 -2 -3 -1 -2 -4 -4 -3 -4 -0 -3 -3 -3 -4 -3 -2 -2 -1 -2 -3 -5 -2 -2 -1 -1 -0 -3 -3 -7 -4 -2 -3 -1 -1 -0 -4 -5 -6 -8 -2 -5 -1 -3 -2 -3 -3 -0 -3 -1 -4 -2 -4 -5 -3 -4 -3 -3 -5 -1 -1 -2 -7 -1 -3 -1 -2 -2 -4 -1 -3 -1 -4 -0 -0 -1 -4 -3 -5 -1 -2 -3 -4 -4 -4 -4 -7 -5 -9 -3 -5 -6 -5 -4 -8 -6 -6 -3 -5 -3 -2 -4 -4 -3 -3 -4 -3 -4 -7 -7 -6 -4 -4 -5 -3 -2 -0 -3 -3 -6 -3 -4 -3 -5 -8 -3 -9 -4 -8 -5 -3 -7 -5 -7 -3 -6 -1 -3 -4 -2 -6 -2 -2 -2 -3 -6 -6 -3 -5 -7 -4 -7 -8 -4 -6 -6 -3 -9 -8 -3 -4 -7 -4 -3 -3 -8 -7 -4 -4 -8 -8 -6 -1 -6 -6 -8 -4 -7 -7 -5 -7 -4 -6 -7 -7 -4 -6 -4 -10 -3 -5 -8 -7 -7 -9 -8 -9 -4 -5 -6 -4 -9 -5 -8 -8 -7 -9 -10 -8 -8 -13 -9 -9 -9 -10 -9 -9 -12 -6 -4 -6 -11 -12 -8 -12 -9 -6 -4 -13 -13 -11 -15 -13 -11 -9 -12 -11 -4 -11 -15 -12 -12 -19 -15 -13 -16 -8 -19 -8 -17 -9 -15 -12 -15 -18 -12 -13 -11 -14 -11 -7 -12 -12 -10 -12 -20 -15 -21 -11 -16 -13 -14 -17 -12 -12 -11 -8 -12 -24 -17 -20 -19 -9 -22 -15 -18 -20 -17 -16 -16 -9 -16 -14 -11 -16 -13 -11 -19 -23 -18 -24 -19 -20 -21 -14 -20 -23 -17 -14 -19 -14 -15 -20 -20 -13 -26 -25 -14 -18 -32 -21 -25 -18 -25 -21 -15 -16 -21 -19 -20 -23 -22 -16 -25 -24 -23 -17 -17 -15 -21 -21 -27 -21 -19 -18 -19 -29 -28 -32 -23 -29 -18 -25 -22 -27 -22 -27 -30 -30 -23 -23 -34 -27 -33 -31 -26 -33 -28 -28 -30 -35 -30 -28 -32 -21 -20 -23 -35 -30 -35 -33 -36 -23 -44 -35 -40 -40 -33 -33 -32 -28 -32 -35 -40 -30 -30 -34 -35 -29 -50 -31 -37 -36 -30 -41 -51 -30 -57 -35 -36 -43 -52 -55 -41 -51 -33 -35 -48 -50 -44 -57 -52 -57 -53 -48 -48 -55 -46 -58 -52 -54 -64 -76 -65 -43 -57 -58 -68 -62 -76 -81 -81 -76 -74 -66 -78 -85 -67 -82 -88 -86 -81 -91 -108 -101 -94 -123 -97 -114 -100 -123 -107 -117 -101 -114 -103 -140 -119 -139 -153 -136 -118 -145 -170 -150 -157 -159 -161 -150 -166 -168 -175 -187 -199 -186 -158 -208 -209 -223 -218 -223 -205 -180 -220 -232 -206 -226 -237 -227 -255 -236 -194 -239 -223 -203 -227 -213 -229 -242 -207 -229 -210 -196 -222 -216 -204 -202 -192 -178 -211 -179 -190 -214 -163 -182 -169 -178 -174 -146 -177 -161 -168 -138 -148 -163 -153 -138 -147 -143 -140 -151 -111 -117 -115 -115 -137 -100 -113 -95 -120 -122 -80 -108 -94 -93 -87 -88 -95 -67 -91 -71 -71 -75 -85 -62 -82 -75 -59 -70 -51 -64 -60 -57 -63 -63 -53 -59 -60 -52 -41 -66 -39 -47 -37 -53 -56 -48 -50 -38 -38 -36 -48 -47 -44 -33 -45 -42 -37 -40 -29 -24 -32 -30 -45 -33 -39 -39 -32 -21 -28 -31 -34 -23 -28 -24 -20 -19 -21 -24 -28 -26 -29 -24 -20 -24 -19 -18 -28 -23 -26 -25 -18 -18 -18 -19 -21 -21 -19 -21 -26 -31 -15 -24 -22 -17 -16 -15 -14 -16 -15 -22 -18 -12 -12 -16 -8 -15 -19 -19 -22 -15 -13 -19 -20 -18 -11 -12 -11 -11 -17 -20 -17 -15 -11 -18 -20 -14 -11 -19 -11 -14 -22 -12 -15 -14 -16 -14 -7 -10 -7 -9 -10 -11 -13 -9 -9 -12 -10 -15 -9 -15 -14 -10 -12 -6 -13 -12 -12 -13 -12 -9 -12 -8 -4 -15 -13 -8 -5 -10 -8 -14 -8 -12 -10 -12 -3 -15 -8 -12 -7 -11 -10 -8 -8 -7 -8 -4 -5 -10 -10 -11 -8 -6 -10 -9 -10 -8 -7 -5 -10 -9 -12 -6 -5 -8 -4 -9 -7 -9 -13 -7 -10 -3 -4 -7 -9 -5 -8 -5 -11 -6 -10 -9 -5 -7 -5 -10 -7 -9 -8 -11 -3 -12 -6 -9 -3 -8 -5 -5 -8 -4 -5 -9 -7 -6 -9 -5 -5 -3 -6 -4 -3 -4 -1 -6 -6 -3 -6 -8 -6 -4 -5 -5 -2 -4 -4 -9 -11 -14 -17 -15 -19 -29 -56 -71 -76 -114 -115 -146 -166 -180 -207 -229 -241 -231 -236 -193 -219 -168 -131 -97 -81 -65 -47 -40 -30 -17 -8 -10 -5 -2 -0 -0 -1 -0 -0 -0 -1 -1 -0 -3 -0 -0 -1 -2 -0 -0 -0 -0 -0 -0 -0 -1 -0 -1 -0 -0 -1 -0 -0 -0 -1 -0 -0 -1 -0 -1 -2 -0 -1 -0 -0 -0 -0 -0 -1 -0 -0 -0 -1 -0 -0 -1 -0 -0 -0 -1 -0 -1 -0 -0 -1 -1 -1 -0 -1 -0 -1 -0 -0 -1 -2 -0 -0 -0 -0 -0 -0 -1 -0 -0 -1 -1 -0 -0 -0 -0 -1 -0 -2 -0 -1 -2 -0 -0 -1 -0 -0 -0 -0 -2 -1 -0 -0 -0 -1 -1 -0 -0 -2 -1 -1 -1 -0 -0 -1 -0 -0 -<> -<> -RESC=?; Reset Configuration -CLCK=80; 20MHz/80MHz -TPEA=9.600; Peaking Time -GAIF=0.9312; Fine Gain -GAIN=21.162; Total Gain (Analog * Fine) -RESL=204; Detector Reset Lockout -TFLA=0.200; Flat Top -TPFA=50; Fast Channel Peaking Time -PURE=OFF; PUR Interval On/Off -RTDE=OFF; RTD On/Off -MCAS=NORM; MCA Source -MCAC=2048; MCA/MCS Channels -SOFF=OFF; Set Spectrum Offset -AINP=POS; Analog Input Pos/Neg -INOF=DEF; Input Offset -GAIA=15; Analog Gain Index -CUSP=0; Non-Trapezoidal Shaping -PDMD=NORM; Peak Detect Mode (Min/Max) -THSL=0.585; Slow Threshold -TLLD=OFF; LLD Threshold -THFA=230.00; Fast Threshold -DACO=SHAPED; DAC Output -DACF=50; DAC Offset -RTDS=0; RTD Sensitivity -RTDT=0.00; RTD Threshold -BLRM=1; BLR Mode -BLRD=3; BLR Down Correction -BLRU=0; BLR Up Correction -AUO1=SCA8; AUX_OUT Selection -PRET=OFF; Preset Time -PRER=7200.000; Preset Real Time -PREC=OFF; Preset Counts -PRCL=1; Preset Counts Low Threshold -PRCH=8191; Preset Counts High Threshold -HVSE=-110; HV Set -TECS=220; TEC Set -PAPZ=OFF; Pole-Zero -PAPS=8.5; Preamp 8.5/5 (N/A) -SCOE=FA; Scope Trigger Edge -SCOT=12; Scope Trigger Position -SCOG=1; Digital Scope Gain -MCSL=1; MCS Low Threshold -MCSH=8191; MCS High Threshold -MCST=0.00; MCS Timebase -AUO2=ICR; AUX_OUT2 Selection -TPMO=OFF; Test Pulser On/Off -GPED=RI; G.P. Counter Edge -GPIN=AUX1; G.P. Counter Input -GPME=ON; G.P. Counter Uses MCA_EN? -GPGA=ON; G.P. Counter Uses GATE? -GPMC=ON; G.P. Counter Cleared With MCA Counters? -MCAE=OFF; MCA/MCS Enable -VOLU=OFF; Speaker On/Off -CON1=DAC; Connector 1 -CON2=AUXOUT2; Connector 2 -<> -<> -Device Type: PX5 -Serial Number: 2264 -Firmware: 6.07 Build: 3 -FPGA: 6.02 -Fast Count: 21768 -Slow Count: 317933 -Accumulation Time: 7194.999000 -Real Time: 7200.000000 -Dead Time: -HV Volt: -110V -TEC Temp: 221K -Board Temp: 38C -<> diff --git a/XRA/Data/NoFilm_for_C12_4h_2.mca b/XRA/Data/NoFilm_for_C12_4h_2.mca deleted file mode 100644 index 1a3439b..0000000 --- a/XRA/Data/NoFilm_for_C12_4h_2.mca +++ /dev/null @@ -1,2132 +0,0 @@ -<> -TAG - live_data -DESCRIPTION - -GAIN - 3 -THRESHOLD - 0 -LIVE_MODE - 0 -PRESET_TIME - 0 -LIVE_TIME - 14390.081000 -REAL_TIME - 14400.000000 -START_TIME - 10/14/2024 18:14:36 -SERIAL_NUMBER - 0 -<> -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -199 -256 -221 -250 -247 -250 -255 -206 -218 -232 -202 -198 -208 -213 -200 -201 -229 -195 -201 -175 -209 -188 -224 -206 -196 -195 -203 -199 -219 -180 -212 -191 -185 -160 -184 -212 -207 -180 -181 -185 -173 -166 -183 -194 -179 -183 -206 -174 -191 -215 -194 -195 -199 -172 -169 -188 -184 -190 -181 -173 -181 -172 -192 -184 -191 -180 -160 -165 -179 -169 -170 -160 -193 -165 -175 -198 -179 -162 -150 -183 -164 -173 -161 -171 -178 -199 -166 -175 -146 -163 -157 -163 -168 -167 -159 -175 -155 -157 -174 -169 -166 -131 -141 -152 -154 -161 -152 -152 -144 -157 -145 -157 -160 -162 -149 -131 -141 -139 -148 -123 -142 -147 -125 -166 -109 -133 -141 -144 -150 -152 -148 -143 -148 -174 -153 -163 -161 -179 -132 -158 -151 -151 -154 -150 -141 -162 -171 -151 -142 -143 -168 -149 -148 -158 -147 -147 -147 -159 -155 -214 -249 -296 -326 -351 -272 -208 -185 -157 -168 -156 -129 -170 -157 -156 -181 -182 -209 -231 -197 -256 -253 -177 -182 -151 -184 -181 -187 -202 -226 -308 -422 -524 -643 -793 -811 -728 -550 -355 -266 -199 -170 -173 -197 -174 -152 -201 -177 -173 -193 -179 -213 -191 -211 -239 -269 -270 -318 -250 -213 -205 -167 -183 -175 -193 -191 -218 -234 -244 -313 -297 -293 -263 -277 -258 -291 -277 -335 -326 -374 -462 -841 -1955 -5460 -14104 -30367 -53216 -74601 -82386 -72377 -51063 -28776 -12866 -4846 -1592 -609 -362 -322 -285 -316 -290 -254 -239 -233 -274 -313 -342 -354 -407 -572 -874 -1878 -3571 -6789 -10476 -13294 -14082 -12113 -8210 -4612 -2120 -862 -308 -109 -80 -67 -75 -79 -62 -54 -57 -54 -62 -52 -61 -55 -51 -75 -67 -38 -56 -66 -57 -56 -62 -62 -62 -69 -54 -71 -33 -48 -66 -43 -42 -39 -38 -51 -52 -31 -56 -46 -47 -50 -48 -60 -66 -85 -68 -85 -62 -50 -61 -52 -37 -55 -41 -34 -33 -38 -44 -27 -37 -30 -27 -27 -26 -39 -33 -27 -38 -34 -32 -31 -31 -34 -23 -32 -30 -16 -26 -34 -26 -25 -27 -26 -21 -29 -15 -29 -25 -26 -22 -24 -16 -22 -11 -19 -12 -19 -15 -18 -25 -27 -22 -18 -10 -21 -17 -23 -23 -18 -35 -38 -40 -35 -32 -33 -40 -22 -30 -24 -20 -23 -24 -23 -8 -19 -22 -23 -17 -17 -21 -13 -25 -15 -25 -28 -20 -28 -20 -16 -23 -13 -16 -12 -16 -15 -16 -17 -15 -17 -8 -17 -16 -13 -9 -11 -9 -15 -8 -20 -13 -9 -9 -11 -11 -10 -15 -18 -13 -14 -10 -17 -10 -11 -10 -11 -13 -13 -8 -12 -16 -11 -16 -22 -19 -22 -12 -16 -13 -12 -9 -12 -8 -18 -15 -12 -12 -12 -20 -17 -10 -9 -11 -12 -21 -10 -21 -15 -10 -15 -12 -10 -17 -13 -13 -14 -17 -9 -10 -15 -9 -9 -10 -7 -6 -10 -11 -17 -15 -14 -5 -12 -9 -10 -12 -8 -15 -10 -7 -9 -10 -11 -9 -9 -12 -13 -14 -8 -7 -18 -10 -10 -9 -9 -7 -8 -9 -12 -6 -3 -8 -10 -7 -9 -8 -15 -20 -14 -20 -14 -15 -16 -11 -9 -5 -11 -11 -6 -11 -9 -8 -13 -11 -7 -10 -8 -7 -12 -4 -8 -12 -8 -12 -11 -4 -12 -10 -3 -4 -10 -4 -13 -7 -5 -8 -9 -5 -6 -7 -10 -5 -5 -7 -9 -5 -5 -13 -11 -4 -12 -3 -12 -8 -11 -4 -6 -3 -7 -7 -9 -5 -8 -12 -15 -10 -6 -13 -8 -8 -14 -4 -6 -8 -4 -9 -9 -7 -4 -2 -12 -6 -5 -10 -8 -11 -10 -2 -4 -9 -5 -8 -12 -8 -9 -10 -11 -7 -6 -6 -8 -7 -7 -5 -9 -9 -6 -7 -8 -7 -7 -12 -7 -8 -8 -8 -6 -6 -7 -9 -11 -8 -8 -10 -8 -5 -9 -15 -9 -8 -7 -3 -6 -5 -6 -10 -8 -3 -7 -5 -9 -8 -10 -10 -8 -9 -1 -14 -14 -16 -6 -14 -16 -13 -13 -8 -9 -11 -7 -6 -7 -9 -11 -5 -11 -6 -5 -4 -3 -5 -8 -5 -5 -7 -8 -5 -7 -2 -11 -10 -8 -9 -6 -7 -9 -9 -6 -5 -6 -3 -13 -10 -7 -9 -6 -8 -12 -5 -5 -11 -8 -14 -5 -10 -10 -9 -13 -10 -9 -10 -10 -10 -11 -7 -11 -14 -13 -13 -8 -11 -12 -9 -8 -4 -7 -6 -9 -10 -13 -4 -8 -4 -6 -10 -5 -11 -6 -7 -15 -15 -14 -19 -27 -15 -24 -18 -24 -17 -26 -33 -31 -38 -35 -28 -26 -30 -15 -12 -6 -10 -6 -4 -10 -3 -6 -5 -3 -7 -5 -7 -9 -6 -5 -2 -9 -5 -8 -7 -12 -4 -6 -14 -15 -17 -19 -29 -27 -22 -30 -16 -18 -8 -11 -10 -6 -13 -8 -5 -6 -4 -5 -4 -9 -8 -8 -1 -8 -8 -3 -8 -4 -6 -8 -8 -7 -10 -8 -6 -9 -10 -7 -3 -9 -9 -12 -7 -3 -7 -1 -9 -7 -4 -6 -2 -5 -5 -3 -6 -5 -7 -3 -10 -5 -7 -8 -6 -6 -6 -13 -2 -6 -12 -7 -6 -13 -10 -13 -8 -10 -2 -3 -4 -5 -6 -1 -5 -4 -2 -9 -6 -7 -6 -4 -9 -8 -6 -5 -7 -9 -10 -4 -6 -8 -14 -5 -9 -6 -6 -7 -6 -9 -8 -9 -6 -4 -9 -8 -2 -7 -5 -3 -6 -4 -4 -7 -7 -10 -6 -2 -3 -3 -9 -7 -5 -6 -6 -6 -7 -6 -5 -3 -4 -6 -2 -8 -4 -6 -10 -7 -4 -1 -6 -1 -4 -5 -4 -5 -6 -8 -4 -8 -6 -4 -7 -6 -4 -5 -5 -8 -4 -5 -5 -4 -5 -5 -5 -9 -3 -6 -4 -5 -2 -4 -12 -7 -9 -8 -7 -4 -7 -7 -7 -6 -9 -10 -7 -8 -6 -11 -7 -4 -7 -1 -5 -7 -12 -10 -5 -7 -3 -4 -6 -8 -6 -5 -9 -7 -7 -5 -9 -5 -7 -5 -8 -12 -6 -4 -5 -6 -1 -8 -5 -7 -8 -8 -9 -11 -5 -8 -4 -8 -3 -6 -4 -13 -6 -10 -5 -1 -6 -7 -2 -4 -5 -5 -9 -11 -9 -7 -5 -6 -6 -6 -7 -4 -9 -9 -7 -8 -9 -5 -4 -9 -11 -7 -4 -9 -7 -5 -7 -8 -10 -6 -1 -12 -7 -3 -7 -10 -10 -8 -13 -8 -2 -9 -5 -4 -7 -7 -7 -4 -8 -8 -9 -10 -7 -13 -3 -17 -9 -10 -6 -9 -11 -8 -5 -7 -6 -10 -7 -11 -7 -8 -7 -6 -6 -10 -3 -3 -7 -7 -17 -7 -10 -8 -11 -6 -5 -9 -10 -10 -7 -6 -7 -7 -8 -3 -11 -10 -10 -9 -13 -11 -6 -7 -9 -9 -11 -7 -10 -13 -4 -9 -11 -6 -10 -7 -15 -9 -11 -14 -12 -10 -8 -10 -10 -4 -11 -13 -6 -13 -13 -11 -17 -11 -10 -16 -15 -19 -9 -10 -13 -10 -10 -7 -11 -4 -5 -12 -9 -9 -13 -11 -13 -14 -8 -10 -13 -16 -11 -12 -12 -14 -13 -18 -12 -7 -17 -13 -10 -13 -14 -20 -8 -9 -15 -13 -17 -18 -15 -10 -16 -14 -12 -13 -12 -10 -14 -16 -14 -25 -17 -16 -14 -14 -26 -15 -27 -14 -19 -13 -18 -18 -18 -25 -13 -17 -16 -22 -16 -11 -22 -22 -17 -25 -13 -16 -35 -20 -11 -18 -22 -17 -17 -20 -19 -18 -20 -25 -24 -23 -27 -24 -23 -31 -39 -31 -32 -26 -28 -23 -27 -23 -36 -27 -26 -21 -31 -20 -26 -44 -34 -26 -38 -29 -34 -32 -21 -39 -31 -27 -35 -29 -35 -37 -26 -38 -30 -28 -37 -30 -42 -31 -28 -26 -30 -34 -33 -30 -24 -37 -42 -44 -26 -51 -30 -40 -34 -37 -38 -30 -33 -31 -36 -30 -40 -34 -40 -34 -32 -42 -30 -46 -39 -40 -34 -43 -33 -40 -46 -40 -40 -48 -38 -38 -44 -45 -33 -40 -51 -35 -48 -39 -42 -44 -37 -54 -35 -31 -38 -45 -36 -54 -49 -48 -43 -42 -49 -58 -51 -50 -47 -49 -49 -59 -34 -57 -42 -53 -48 -47 -59 -58 -45 -65 -62 -48 -42 -47 -53 -64 -49 -57 -59 -57 -49 -68 -71 -55 -64 -42 -53 -60 -60 -80 -79 -59 -66 -71 -65 -85 -66 -85 -83 -84 -79 -64 -93 -76 -78 -81 -85 -61 -95 -78 -94 -80 -66 -72 -83 -104 -88 -87 -78 -91 -104 -108 -85 -101 -100 -89 -95 -112 -98 -118 -110 -122 -124 -119 -110 -134 -128 -131 -138 -138 -127 -188 -127 -141 -146 -158 -141 -174 -161 -171 -184 -181 -175 -176 -206 -170 -191 -182 -198 -192 -195 -233 -224 -219 -219 -254 -236 -267 -264 -258 -267 -275 -282 -289 -292 -274 -279 -344 -312 -350 -367 -330 -338 -341 -354 -362 -372 -368 -409 -396 -437 -429 -407 -428 -409 -478 -426 -463 -469 -473 -440 -473 -429 -438 -451 -432 -419 -428 -461 -494 -469 -466 -480 -405 -463 -414 -431 -437 -391 -403 -385 -378 -363 -385 -377 -355 -357 -378 -382 -363 -363 -352 -354 -332 -338 -338 -329 -287 -333 -289 -278 -282 -281 -277 -271 -251 -237 -249 -256 -222 -264 -219 -203 -223 -188 -199 -200 -223 -160 -190 -165 -190 -183 -175 -148 -151 -140 -140 -153 -134 -142 -140 -147 -142 -124 -117 -133 -113 -137 -115 -122 -113 -112 -112 -97 -95 -98 -113 -105 -88 -84 -88 -89 -83 -77 -94 -90 -86 -81 -83 -73 -74 -68 -77 -67 -55 -77 -63 -50 -76 -55 -63 -56 -58 -57 -52 -64 -69 -57 -56 -58 -46 -61 -49 -47 -62 -53 -53 -54 -49 -46 -44 -45 -49 -53 -45 -42 -39 -38 -45 -36 -47 -43 -38 -43 -37 -42 -39 -35 -30 -45 -42 -34 -25 -33 -35 -32 -41 -34 -30 -31 -34 -25 -36 -26 -39 -31 -40 -22 -31 -25 -33 -29 -32 -39 -33 -22 -30 -23 -32 -27 -22 -24 -30 -28 -34 -26 -24 -22 -31 -34 -28 -34 -34 -24 -32 -24 -22 -25 -23 -34 -25 -24 -18 -27 -20 -14 -19 -18 -28 -22 -28 -24 -24 -18 -20 -22 -23 -23 -28 -19 -18 -23 -28 -16 -22 -21 -21 -20 -24 -21 -19 -23 -18 -30 -20 -19 -13 -19 -16 -20 -25 -17 -12 -20 -11 -15 -14 -20 -17 -22 -19 -20 -17 -14 -20 -13 -17 -15 -10 -11 -16 -10 -16 -12 -8 -15 -6 -22 -20 -19 -23 -12 -17 -12 -12 -15 -17 -11 -21 -10 -13 -13 -17 -7 -18 -10 -15 -17 -10 -16 -14 -15 -11 -16 -11 -8 -8 -12 -12 -12 -8 -10 -17 -11 -11 -14 -9 -8 -8 -11 -11 -5 -6 -14 -9 -9 -13 -5 -8 -13 -17 -22 -22 -44 -58 -81 -98 -155 -174 -238 -248 -310 -347 -430 -463 -482 -477 -484 -443 -388 -387 -333 -293 -241 -161 -140 -99 -77 -54 -27 -17 -9 -11 -3 -7 -4 -2 -1 -1 -2 -0 -0 -1 -0 -1 -0 -2 -1 -2 -0 -0 -1 -1 -1 -4 -0 -0 -2 -0 -0 -0 -1 -2 -0 -1 -1 -3 -0 -2 -2 -0 -1 -0 -0 -1 -2 -0 -1 -2 -1 -2 -2 -0 -0 -2 -1 -0 -3 -1 -0 -1 -2 -1 -0 -2 -1 -0 -0 -3 -2 -2 -2 -1 -1 -0 -1 -2 -3 -0 -0 -2 -1 -0 -1 -1 -0 -0 -3 -1 -1 -1 -2 -0 -1 -3 -1 -0 -1 -2 -1 -1 -0 -1 -0 -0 -1 -2 -1 -2 -1 -1 -1 -0 -1 -1 -1 -0 -2 -3 -1 -<> -<> -RESC=?; Reset Configuration -CLCK=80; 20MHz/80MHz -TPEA=9.600; Peaking Time -GAIF=0.9312; Fine Gain -GAIN=21.162; Total Gain (Analog * Fine) -RESL=204; Detector Reset Lockout -TFLA=0.200; Flat Top -TPFA=50; Fast Channel Peaking Time -PURE=OFF; PUR Interval On/Off -RTDE=OFF; RTD On/Off -MCAS=NORM; MCA Source -MCAC=2048; MCA/MCS Channels -SOFF=OFF; Set Spectrum Offset -AINP=POS; Analog Input Pos/Neg -INOF=DEF; Input Offset -GAIA=15; Analog Gain Index -CUSP=0; Non-Trapezoidal Shaping -PDMD=NORM; Peak Detect Mode (Min/Max) -THSL=0.585; Slow Threshold -TLLD=OFF; LLD Threshold -THFA=230.00; Fast Threshold -DACO=SHAPED; DAC Output -DACF=50; DAC Offset -RTDS=0; RTD Sensitivity -RTDT=0.00; RTD Threshold -BLRM=1; BLR Mode -BLRD=3; BLR Down Correction -BLRU=0; BLR Up Correction -AUO1=SCA8; AUX_OUT Selection -PRET=OFF; Preset Time -PRER=14400.000; Preset Real Time -PREC=OFF; Preset Counts -PRCL=1; Preset Counts Low Threshold -PRCH=8191; Preset Counts High Threshold -HVSE=-110; HV Set -TECS=220; TEC Set -PAPZ=OFF; Pole-Zero -PAPS=8.5; Preamp 8.5/5 (N/A) -SCOE=FA; Scope Trigger Edge -SCOT=12; Scope Trigger Position -SCOG=1; Digital Scope Gain -MCSL=1; MCS Low Threshold -MCSH=8191; MCS High Threshold -MCST=0.00; MCS Timebase -AUO2=ICR; AUX_OUT2 Selection -TPMO=OFF; Test Pulser On/Off -GPED=RI; G.P. Counter Edge -GPIN=AUX1; G.P. Counter Input -GPME=ON; G.P. Counter Uses MCA_EN? -GPGA=ON; G.P. Counter Uses GATE? -GPMC=ON; G.P. Counter Cleared With MCA Counters? -MCAE=OFF; MCA/MCS Enable -VOLU=OFF; Speaker On/Off -CON1=DAC; Connector 1 -CON2=AUXOUT2; Connector 2 -<> -<> -Device Type: PX5 -Serial Number: 2264 -Firmware: 6.07 Build: 3 -FPGA: 6.02 -Fast Count: 45950 -Slow Count: 647129 -Accumulation Time: 14390.081000 -Real Time: 14400.000000 -Dead Time: -HV Volt: -110V -TEC Temp: 220K -Board Temp: 34C -<> diff --git a/XRA/Data/NoFilm_overNight_2h_17Jul_1(Mo).mca b/XRA/Data/NoFilm_overNight_2h_17Jul_1(Mo).mca deleted file mode 100644 index 7202c9e..0000000 --- a/XRA/Data/NoFilm_overNight_2h_17Jul_1(Mo).mca +++ /dev/null @@ -1,2132 +0,0 @@ -<> -TAG - live_data -DESCRIPTION - -GAIN - 3 -THRESHOLD - 0 -LIVE_MODE - 0 -PRESET_TIME - 0 -LIVE_TIME - 1798.650000 -REAL_TIME - 1800.000000 -START_TIME - 01/27/2000 01:31:40 -SERIAL_NUMBER - 0 -<> -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -77 -93 -109 -121 -90 -83 -81 -86 -83 -103 -91 -96 -93 -92 -96 -116 -96 -84 -107 -96 -131 -104 -115 -107 -92 -84 -76 -99 -64 -69 -62 -60 -48 -50 -50 -40 -53 -38 -32 -35 -30 -26 -32 -24 -30 -23 -27 -26 -29 -30 -27 -31 -28 -22 -23 -25 -24 -21 -28 -20 -38 -52 -62 -56 -33 -57 -37 -36 -33 -23 -25 -16 -16 -18 -30 -10 -19 -18 -18 -18 -18 -9 -21 -19 -15 -13 -14 -24 -13 -22 -25 -20 -14 -17 -14 -15 -21 -19 -19 -10 -17 -16 -6 -18 -13 -25 -15 -13 -16 -15 -18 -14 -17 -17 -17 -15 -12 -14 -16 -8 -15 -19 -14 -9 -14 -12 -13 -15 -21 -9 -10 -18 -16 -11 -13 -18 -11 -8 -11 -11 -25 -15 -10 -17 -15 -16 -16 -17 -10 -12 -11 -11 -20 -16 -16 -17 -17 -18 -19 -25 -25 -43 -43 -53 -44 -26 -16 -10 -19 -15 -18 -10 -14 -15 -14 -10 -16 -20 -30 -19 -25 -26 -9 -15 -16 -13 -15 -9 -15 -16 -30 -48 -79 -122 -123 -115 -80 -56 -33 -17 -17 -11 -14 -13 -9 -9 -9 -15 -16 -23 -16 -21 -23 -27 -34 -23 -30 -38 -18 -13 -16 -21 -17 -18 -21 -21 -35 -40 -65 -61 -51 -36 -23 -14 -11 -10 -10 -10 -9 -12 -18 -10 -8 -15 -16 -18 -10 -20 -8 -13 -16 -12 -19 -14 -21 -21 -24 -19 -21 -17 -21 -17 -15 -11 -12 -16 -10 -13 -15 -14 -11 -10 -8 -17 -16 -9 -15 -8 -11 -11 -13 -14 -14 -3 -7 -15 -12 -11 -15 -14 -7 -6 -11 -11 -11 -14 -10 -16 -13 -22 -9 -15 -16 -12 -14 -8 -12 -13 -8 -8 -15 -10 -10 -9 -12 -17 -11 -18 -14 -9 -15 -11 -10 -18 -22 -28 -17 -35 -30 -29 -19 -16 -15 -11 -12 -12 -10 -10 -11 -17 -16 -16 -11 -11 -9 -21 -12 -10 -12 -15 -12 -12 -5 -12 -12 -14 -9 -6 -11 -14 -8 -8 -13 -13 -6 -11 -7 -12 -13 -10 -8 -8 -7 -5 -14 -8 -8 -15 -11 -10 -11 -17 -16 -12 -8 -9 -10 -9 -9 -9 -15 -19 -15 -18 -22 -12 -18 -15 -18 -21 -13 -8 -11 -18 -7 -12 -11 -15 -7 -7 -4 -10 -11 -14 -9 -13 -9 -14 -7 -9 -10 -12 -6 -11 -12 -10 -14 -7 -10 -11 -12 -9 -13 -14 -12 -10 -10 -25 -13 -19 -11 -11 -13 -12 -19 -19 -6 -16 -13 -11 -16 -18 -15 -14 -7 -14 -16 -16 -13 -11 -10 -15 -16 -10 -18 -19 -9 -15 -17 -19 -16 -15 -14 -11 -15 -15 -17 -16 -18 -17 -22 -15 -20 -12 -23 -17 -19 -18 -28 -30 -33 -33 -42 -51 -40 -49 -47 -42 -47 -37 -37 -31 -36 -46 -33 -40 -41 -44 -49 -69 -44 -55 -56 -57 -64 -96 -85 -91 -81 -110 -95 -112 -108 -108 -100 -110 -110 -122 -128 -123 -124 -122 -113 -113 -120 -164 -159 -212 -262 -403 -689 -1406 -2704 -4742 -7921 -12326 -17299 -22602 -27613 -30998 -32119 -30885 -27045 -21268 -15691 -10148 -6125 -3316 -1618 -819 -385 -224 -128 -102 -76 -73 -73 -62 -43 -56 -55 -36 -55 -61 -47 -38 -46 -34 -58 -48 -51 -53 -55 -44 -37 -38 -39 -48 -57 -40 -54 -59 -66 -50 -53 -60 -56 -59 -63 -68 -67 -71 -65 -81 -64 -75 -79 -83 -98 -119 -166 -256 -498 -919 -1583 -2396 -3416 -4610 -5293 -5755 -5568 -4954 -3958 -2977 -1987 -1397 -941 -773 -767 -782 -841 -878 -772 -717 -467 -396 -241 -137 -61 -47 -18 -9 -7 -4 -6 -2 -2 -0 -3 -1 -3 -0 -2 -1 -0 -4 -1 -1 -1 -5 -1 -3 -1 -3 -4 -0 -2 -4 -4 -1 -2 -1 -1 -2 -1 -2 -2 -3 -2 -1 -3 -3 -3 -4 -3 -4 -1 -1 -0 -6 -1 -2 -3 -1 -4 -1 -1 -3 -2 -1 -4 -2 -1 -1 -2 -2 -2 -0 -1 -2 -1 -2 -2 -0 -0 -5 -0 -2 -2 -2 -6 -4 -1 -3 -2 -4 -1 -2 -4 -4 -3 -4 -2 -0 -0 -2 -2 -5 -2 -3 -0 -4 -1 -1 -0 -0 -2 -3 -2 -1 -1 -4 -1 -0 -2 -2 -0 -1 -0 -3 -1 -2 -6 -5 -1 -2 -4 -4 -4 -6 -3 -3 -3 -3 -2 -1 -0 -4 -0 -1 -3 -4 -2 -1 -2 -1 -3 -1 -0 -3 -1 -0 -3 -2 -3 -7 -3 -5 -2 -2 -2 -0 -3 -5 -2 -3 -1 -0 -0 -0 -1 -1 -0 -0 -1 -2 -0 -1 -3 -4 -2 -1 -4 -1 -0 -4 -3 -2 -2 -0 -1 -3 -7 -0 -2 -1 -2 -1 -1 -3 -1 -3 -2 -1 -1 -4 -1 -1 -3 -3 -3 -4 -1 -2 -1 -3 -3 -0 -5 -3 -3 -4 -4 -2 -5 -3 -2 -0 -0 -4 -1 -1 -2 -0 -1 -2 -5 -1 -5 -1 -1 -0 -2 -1 -2 -1 -1 -1 -1 -0 -4 -2 -0 -2 -3 -0 -3 -1 -0 -2 -4 -0 -1 -2 -2 -2 -1 -1 -1 -2 -2 -2 -0 -0 -2 -3 -1 -2 -0 -1 -3 -0 -0 -4 -2 -0 -0 -0 -3 -0 -4 -1 -0 -0 -1 -1 -2 -2 -1 -2 -2 -2 -2 -3 -2 -1 -3 -1 -2 -2 -0 -1 -4 -2 -1 -1 -2 -2 -1 -2 -1 -3 -1 -0 -3 -1 -5 -3 -0 -1 -1 -2 -3 -4 -4 -0 -1 -1 -1 -2 -0 -2 -1 -2 -3 -1 -2 -2 -3 -4 -2 -1 -0 -2 -1 -3 -2 -2 -2 -2 -0 -1 -1 -1 -2 -4 -1 -3 -3 -3 -3 -0 -1 -0 -2 -1 -3 -1 -2 -3 -3 -4 -1 -3 -0 -2 -2 -2 -3 -3 -2 -0 -2 -6 -1 -2 -3 -2 -1 -1 -1 -1 -1 -1 -3 -1 -1 -1 -3 -0 -2 -3 -0 -5 -3 -2 -2 -2 -2 -1 -1 -2 -0 -0 -3 -0 -3 -0 -1 -2 -0 -2 -2 -1 -1 -3 -3 -0 -1 -3 -1 -6 -3 -2 -0 -0 -0 -3 -3 -1 -0 -1 -3 -2 -3 -1 -0 -1 -2 -3 -3 -4 -2 -0 -0 -2 -1 -2 -3 -0 -2 -3 -1 -3 -1 -2 -2 -1 -2 -0 -1 -1 -3 -0 -1 -0 -0 -1 -0 -3 -1 -0 -2 -1 -0 -0 -1 -0 -0 -0 -0 -4 -0 -1 -2 -1 -1 -1 -0 -1 -1 -1 -0 -1 -0 -2 -1 -2 -1 -3 -0 -1 -0 -2 -2 -1 -1 -2 -0 -2 -2 -3 -1 -0 -1 -1 -3 -1 -0 -1 -0 -1 -2 -0 -0 -1 -0 -1 -2 -1 -2 -1 -0 -0 -0 -1 -0 -0 -0 -0 -0 -0 -0 -1 -1 -3 -0 -1 -1 -0 -1 -2 -0 -0 -0 -2 -0 -1 -3 -2 -1 -0 -0 -0 -0 -0 -0 -1 -0 -0 -0 -0 -0 -0 -0 -0 -1 -2 -0 -0 -1 -1 -0 -1 -1 -0 -0 -5 -2 -0 -0 -1 -1 -1 -1 -1 -1 -1 -2 -1 -0 -0 -1 -1 -0 -1 -1 -1 -0 -0 -0 -2 -1 -0 -0 -2 -0 -0 -0 -1 -1 -2 -1 -1 -2 -1 -2 -1 -1 -1 -1 -1 -1 -0 -0 -2 -1 -0 -1 -2 -2 -0 -1 -0 -1 -1 -2 -4 -0 -2 -0 -0 -0 -2 -2 -2 -3 -3 -2 -1 -3 -0 -1 -0 -1 -1 -1 -1 -4 -3 -4 -2 -1 -5 -0 -0 -4 -0 -3 -2 -1 -2 -1 -1 -0 -1 -2 -2 -1 -1 -1 -3 -2 -1 -2 -1 -0 -3 -3 -0 -0 -2 -2 -1 -1 -2 -0 -1 -3 -1 -0 -2 -1 -1 -1 -3 -2 -4 -5 -2 -1 -1 -3 -2 -6 -1 -0 -1 -2 -3 -1 -1 -2 -3 -2 -2 -0 -0 -2 -1 -2 -4 -1 -3 -2 -0 -1 -0 -0 -2 -1 -1 -4 -2 -2 -1 -4 -3 -1 -2 -1 -4 -4 -0 -2 -2 -3 -1 -1 -2 -2 -2 -0 -2 -2 -2 -3 -3 -5 -4 -4 -3 -3 -6 -2 -1 -3 -2 -1 -2 -4 -5 -1 -0 -6 -3 -2 -1 -1 -1 -2 -7 -1 -1 -5 -5 -4 -4 -4 -4 -3 -3 -2 -2 -2 -2 -3 -3 -6 -2 -4 -8 -3 -3 -3 -5 -4 -1 -2 -3 -8 -9 -2 -6 -1 -4 -7 -6 -3 -2 -1 -4 -4 -4 -5 -6 -4 -6 -9 -3 -3 -4 -7 -9 -3 -1 -6 -5 -7 -8 -7 -8 -2 -9 -3 -14 -6 -6 -5 -6 -9 -10 -8 -2 -10 -11 -9 -12 -10 -13 -9 -13 -8 -13 -6 -18 -11 -6 -11 -9 -15 -16 -15 -20 -8 -14 -14 -15 -18 -11 -12 -14 -15 -14 -12 -25 -15 -15 -24 -11 -19 -16 -13 -15 -17 -17 -17 -13 -19 -11 -19 -13 -23 -13 -14 -19 -12 -17 -15 -20 -20 -11 -16 -12 -14 -13 -10 -12 -12 -9 -10 -14 -14 -11 -10 -13 -6 -16 -8 -5 -9 -10 -8 -6 -5 -9 -4 -9 -5 -16 -8 -9 -9 -7 -6 -11 -5 -4 -4 -4 -7 -8 -2 -1 -3 -4 -6 -6 -7 -4 -3 -8 -1 -2 -3 -5 -3 -4 -4 -5 -4 -4 -5 -5 -3 -5 -4 -4 -3 -3 -4 -2 -2 -3 -2 -8 -4 -7 -2 -5 -3 -3 -3 -1 -4 -2 -3 -2 -6 -2 -4 -3 -3 -2 -2 -3 -3 -0 -3 -4 -4 -5 -3 -3 -6 -2 -2 -2 -0 -6 -2 -2 -3 -2 -3 -2 -5 -0 -3 -3 -2 -2 -3 -1 -3 -2 -0 -4 -2 -4 -3 -0 -1 -3 -2 -4 -2 -1 -2 -3 -2 -4 -2 -2 -2 -3 -1 -4 -2 -3 -1 -2 -3 -3 -2 -1 -3 -4 -1 -1 -3 -3 -0 -4 -4 -4 -1 -3 -2 -1 -1 -0 -2 -1 -3 -5 -1 -1 -4 -2 -1 -3 -2 -4 -1 -0 -0 -2 -0 -1 -1 -1 -3 -0 -1 -2 -6 -1 -3 -2 -1 -2 -0 -1 -0 -1 -3 -3 -3 -1 -2 -1 -0 -1 -1 -0 -2 -1 -0 -2 -2 -0 -0 -3 -1 -2 -3 -0 -1 -0 -1 -1 -1 -3 -1 -2 -2 -3 -1 -2 -2 -1 -1 -2 -0 -0 -1 -1 -1 -3 -2 -1 -1 -0 -0 -2 -2 -2 -6 -0 -1 -0 -1 -0 -0 -2 -1 -1 -0 -0 -1 -2 -3 -1 -0 -2 -0 -3 -0 -0 -1 -1 -0 -0 -0 -0 -1 -3 -1 -0 -0 -1 -2 -1 -1 -1 -2 -1 -8 -7 -9 -7 -13 -18 -17 -25 -48 -40 -55 -58 -68 -55 -70 -50 -47 -47 -33 -28 -26 -21 -14 -11 -10 -2 -2 -4 -0 -1 -0 -2 -1 -0 -0 -0 -0 -0 -0 -2 -0 -0 -0 -0 -1 -0 -0 -0 -0 -0 -0 -2 -1 -0 -0 -0 -0 -0 -0 -1 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -1 -0 -0 -0 -0 -0 -0 -0 -1 -0 -0 -0 -0 -0 -0 -1 -0 -1 -0 -0 -1 -0 -0 -0 -0 -0 -0 -0 -1 -0 -0 -2 -0 -0 -0 -1 -0 -1 -0 -1 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -1 -1 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -<> -<> -RESC=?; Reset Configuration -CLCK=80; 20MHz/80MHz -TPEA=9.600; Peaking Time -GAIF=0.9312; Fine Gain -GAIN=21.162; Total Gain (Analog * Fine) -RESL=204; Detector Reset Lockout -TFLA=0.200; Flat Top -TPFA=50; Fast Channel Peaking Time -PURE=OFF; PUR Interval On/Off -RTDE=OFF; RTD On/Off -MCAS=NORM; MCA Source -MCAC=2048; MCA/MCS Channels -SOFF=OFF; Set Spectrum Offset -AINP=POS; Analog Input Pos/Neg -INOF=DEF; Input Offset -GAIA=15; Analog Gain Index -CUSP=0; Non-Trapezoidal Shaping -PDMD=NORM; Peak Detect Mode (Min/Max) -THSL=0.585; Slow Threshold -TLLD=OFF; LLD Threshold -THFA=230.00; Fast Threshold -DACO=SHAPED; DAC Output -DACF=50; DAC Offset -RTDS=0; RTD Sensitivity -RTDT=0.00; RTD Threshold -BLRM=1; BLR Mode -BLRD=3; BLR Down Correction -BLRU=0; BLR Up Correction -AUO1=SCA8; AUX_OUT Selection -PRET=OFF; Preset Time -PRER=1800.000; Preset Real Time -PREC=OFF; Preset Counts -PRCL=1; Preset Counts Low Threshold -PRCH=8191; Preset Counts High Threshold -HVSE=-110; HV Set -TECS=220; TEC Set -PAPZ=OFF; Pole-Zero -PAPS=8.5; Preamp 8.5/5 (N/A) -SCOE=FA; Scope Trigger Edge -SCOT=12; Scope Trigger Position -SCOG=1; Digital Scope Gain -MCSL=1; MCS Low Threshold -MCSH=8191; MCS High Threshold -MCST=0.00; MCS Timebase -AUO2=ICR; AUX_OUT2 Selection -TPMO=OFF; Test Pulser On/Off -GPED=RI; G.P. Counter Edge -GPIN=AUX1; G.P. Counter Input -GPME=ON; G.P. Counter Uses MCA_EN? -GPGA=ON; G.P. Counter Uses GATE? -GPMC=ON; G.P. Counter Cleared With MCA Counters? -MCAE=OFF; MCA/MCS Enable -VOLU=OFF; Speaker On/Off -CON1=DAC; Connector 1 -CON2=AUXOUT2; Connector 2 -<> -<> -Device Type: PX5 -Serial Number: 2264 -Firmware: 6.07 Build: 3 -FPGA: 6.02 -Fast Count: 2571 -Slow Count: 354446 -Accumulation Time: 1798.650000 -Real Time: 1800.000000 -Dead Time: -HV Volt: -110V -TEC Temp: 221K -Board Temp: 37C -<> diff --git a/XRA/Data/PbFilm_CuSource_27Aug.mca b/XRA/Data/PbFilm_CuSource_27Aug.mca deleted file mode 100755 index f3fefc6..0000000 --- a/XRA/Data/PbFilm_CuSource_27Aug.mca +++ /dev/null @@ -1,2132 +0,0 @@ -<> -TAG - live_data -DESCRIPTION - -GAIN - 3 -THRESHOLD - 0 -LIVE_MODE - 0 -PRESET_TIME - 0 -LIVE_TIME - 3597.487000 -REAL_TIME - 3600.000000 -START_TIME - 08/27/2025 15:49:43 -SERIAL_NUMBER - 0 -<> -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -71 -73 -89 -72 -79 -77 -83 -81 -74 -71 -68 -80 -69 -71 -62 -72 -64 -76 -61 -64 -69 -69 -66 -53 -70 -75 -75 -70 -61 -57 -64 -86 -59 -76 -66 -68 -69 -69 -59 -70 -59 -60 -47 -66 -66 -54 -59 -55 -70 -56 -63 -64 -62 -60 -75 -65 -60 -56 -68 -60 -67 -57 -54 -67 -62 -60 -74 -67 -43 -52 -60 -67 -64 -62 -70 -49 -47 -52 -61 -58 -83 -54 -58 -59 -46 -47 -40 -58 -50 -51 -54 -46 -55 -52 -47 -37 -55 -63 -44 -49 -52 -51 -50 -58 -53 -42 -53 -48 -53 -45 -44 -64 -41 -51 -52 -42 -34 -39 -50 -50 -54 -47 -41 -55 -45 -58 -40 -59 -48 -51 -46 -39 -48 -43 -47 -45 -55 -64 -55 -37 -51 -49 -44 -56 -59 -55 -49 -48 -34 -57 -58 -50 -47 -53 -48 -53 -40 -41 -47 -49 -61 -72 -56 -67 -61 -56 -45 -54 -46 -59 -56 -55 -68 -51 -48 -35 -48 -70 -54 -52 -50 -54 -58 -41 -49 -51 -56 -44 -52 -51 -71 -78 -98 -103 -99 -110 -91 -78 -48 -55 -55 -56 -48 -46 -45 -52 -47 -55 -66 -47 -65 -50 -49 -59 -69 -57 -51 -68 -55 -61 -53 -58 -56 -47 -64 -52 -66 -68 -88 -82 -75 -71 -59 -64 -64 -55 -55 -67 -64 -99 -110 -237 -631 -1497 -3219 -5525 -7774 -8717 -7597 -5375 -2967 -1443 -531 -214 -74 -60 -56 -62 -48 -36 -51 -34 -53 -47 -56 -51 -55 -64 -74 -146 -224 -412 -806 -1224 -1628 -1626 -1417 -895 -542 -265 -139 -43 -38 -24 -21 -23 -21 -21 -15 -16 -13 -13 -14 -18 -29 -24 -21 -11 -18 -25 -16 -17 -16 -18 -18 -15 -11 -18 -13 -13 -14 -9 -10 -9 -19 -11 -11 -13 -9 -18 -16 -15 -20 -24 -26 -42 -54 -47 -53 -52 -51 -35 -19 -17 -12 -13 -15 -21 -16 -13 -11 -5 -16 -5 -6 -15 -8 -9 -5 -11 -8 -7 -10 -7 -11 -3 -9 -5 -9 -5 -8 -11 -9 -5 -6 -5 -6 -6 -7 -3 -6 -6 -3 -3 -2 -9 -2 -3 -10 -9 -4 -4 -3 -8 -14 -9 -8 -7 -7 -15 -19 -20 -33 -43 -37 -41 -34 -30 -26 -13 -15 -10 -5 -9 -4 -7 -3 -7 -7 -5 -3 -4 -3 -5 -5 -6 -9 -6 -7 -5 -5 -9 -3 -4 -8 -3 -1 -2 -3 -8 -2 -1 -2 -7 -4 -4 -2 -2 -2 -2 -4 -5 -2 -2 -2 -2 -3 -2 -1 -4 -3 -4 -7 -5 -5 -6 -3 -3 -2 -3 -4 -6 -12 -8 -8 -10 -6 -6 -1 -10 -6 -0 -4 -4 -1 -5 -3 -11 -11 -2 -3 -6 -2 -6 -4 -1 -4 -7 -1 -5 -8 -13 -12 -13 -25 -28 -18 -26 -14 -16 -9 -4 -5 -3 -3 -4 -3 -2 -2 -3 -3 -3 -5 -0 -3 -3 -4 -2 -4 -2 -2 -2 -3 -1 -2 -3 -1 -1 -2 -1 -3 -5 -1 -2 -4 -0 -2 -1 -3 -3 -4 -3 -0 -3 -3 -2 -1 -6 -6 -4 -4 -3 -3 -5 -5 -4 -4 -8 -2 -2 -8 -2 -5 -1 -5 -3 -2 -3 -4 -2 -3 -4 -1 -3 -3 -1 -4 -3 -3 -3 -0 -2 -3 -3 -2 -2 -4 -5 -1 -1 -2 -1 -3 -3 -2 -1 -1 -1 -4 -1 -2 -2 -3 -2 -2 -5 -4 -1 -2 -0 -4 -0 -6 -3 -3 -1 -1 -3 -1 -4 -2 -4 -5 -5 -1 -0 -6 -1 -3 -0 -2 -3 -4 -1 -4 -1 -5 -2 -4 -1 -3 -2 -2 -1 -2 -2 -2 -2 -1 -3 -6 -0 -1 -3 -2 -4 -4 -1 -3 -1 -1 -2 -1 -2 -5 -3 -2 -1 -1 -0 -0 -2 -2 -4 -2 -2 -3 -4 -2 -5 -3 -2 -4 -2 -2 -1 -1 -3 -0 -3 -1 -4 -0 -1 -3 -3 -5 -2 -3 -1 -6 -2 -5 -2 -6 -5 -1 -1 -2 -1 -1 -1 -3 -5 -3 -3 -4 -4 -2 -2 -4 -0 -1 -3 -4 -1 -3 -3 -4 -2 -2 -3 -3 -5 -2 -1 -3 -2 -2 -3 -5 -0 -2 -3 -2 -2 -3 -4 -1 -3 -1 -3 -4 -2 -2 -2 -4 -3 -2 -8 -5 -5 -3 -7 -3 -6 -6 -1 -4 -4 -5 -2 -4 -1 -3 -5 -3 -2 -6 -0 -2 -1 -3 -4 -5 -3 -3 -5 -2 -5 -4 -3 -2 -7 -7 -6 -4 -4 -4 -9 -16 -11 -15 -14 -4 -4 -6 -4 -5 -3 -3 -2 -4 -1 -5 -0 -3 -1 -1 -3 -1 -0 -2 -3 -1 -1 -2 -1 -0 -2 -3 -5 -8 -5 -3 -5 -4 -6 -4 -11 -6 -4 -2 -4 -4 -4 -3 -1 -0 -1 -2 -1 -0 -1 -3 -2 -2 -2 -2 -3 -4 -2 -3 -0 -2 -1 -3 -4 -3 -1 -1 -1 -3 -3 -3 -3 -4 -1 -3 -2 -1 -1 -2 -1 -1 -1 -1 -0 -2 -1 -2 -2 -4 -0 -1 -1 -0 -5 -5 -2 -3 -2 -0 -3 -3 -2 -8 -0 -4 -1 -3 -3 -1 -5 -5 -3 -1 -2 -7 -2 -1 -0 -0 -0 -1 -0 -2 -4 -1 -2 -1 -1 -3 -2 -3 -2 -4 -1 -4 -4 -2 -6 -1 -4 -3 -1 -1 -1 -1 -2 -5 -0 -1 -1 -2 -1 -4 -2 -4 -2 -2 -8 -5 -3 -4 -2 -2 -2 -1 -1 -0 -2 -2 -2 -0 -3 -3 -0 -1 -2 -0 -2 -3 -0 -2 -1 -1 -1 -2 -2 -2 -0 -2 -3 -3 -3 -1 -2 -5 -0 -2 -3 -0 -1 -2 -0 -3 -1 -1 -1 -1 -2 -2 -3 -1 -2 -5 -3 -3 -3 -2 -1 -2 -1 -1 -2 -1 -1 -2 -2 -2 -0 -3 -2 -2 -2 -3 -4 -2 -3 -2 -2 -2 -3 -1 -1 -1 -1 -0 -0 -2 -2 -3 -2 -2 -4 -2 -3 -3 -1 -3 -1 -6 -3 -2 -1 -1 -2 -0 -1 -1 -2 -2 -3 -0 -2 -0 -0 -1 -1 -1 -0 -1 -2 -2 -3 -1 -2 -3 -4 -3 -3 -2 -0 -2 -1 -2 -2 -1 -2 -2 -0 -3 -3 -4 -2 -2 -3 -3 -5 -2 -6 -5 -7 -1 -0 -5 -0 -4 -1 -2 -4 -2 -0 -0 -2 -1 -4 -1 -4 -3 -3 -2 -2 -0 -0 -1 -4 -3 -6 -2 -1 -5 -1 -1 -3 -1 -5 -4 -2 -1 -3 -1 -3 -3 -2 -4 -4 -4 -2 -2 -3 -3 -1 -2 -5 -3 -2 -3 -0 -5 -3 -4 -4 -4 -5 -5 -2 -3 -1 -0 -3 -5 -4 -3 -2 -2 -5 -2 -7 -0 -4 -1 -1 -3 -4 -5 -4 -1 -2 -3 -5 -5 -3 -0 -5 -3 -3 -6 -10 -4 -2 -5 -4 -6 -3 -2 -4 -5 -0 -5 -6 -5 -4 -3 -7 -4 -4 -5 -5 -4 -4 -2 -3 -4 -1 -3 -4 -1 -5 -2 -2 -5 -5 -3 -5 -6 -6 -7 -7 -9 -3 -6 -4 -3 -7 -4 -8 -4 -3 -4 -6 -2 -5 -6 -6 -3 -3 -1 -8 -4 -3 -3 -4 -8 -3 -8 -6 -3 -5 -7 -8 -9 -4 -6 -7 -7 -5 -7 -7 -6 -6 -5 -4 -12 -8 -4 -5 -10 -8 -7 -7 -3 -11 -8 -12 -5 -11 -7 -8 -6 -10 -10 -7 -8 -10 -11 -11 -12 -7 -8 -8 -9 -9 -12 -11 -12 -10 -11 -5 -12 -11 -11 -14 -9 -9 -12 -13 -8 -11 -15 -12 -10 -7 -11 -11 -8 -9 -16 -9 -8 -12 -14 -7 -8 -17 -17 -12 -10 -15 -12 -13 -10 -18 -14 -9 -11 -19 -19 -10 -12 -11 -15 -14 -19 -8 -16 -18 -14 -18 -19 -11 -9 -14 -12 -15 -13 -11 -17 -17 -11 -11 -17 -13 -10 -14 -14 -18 -20 -19 -14 -24 -12 -14 -18 -15 -19 -16 -21 -13 -16 -21 -11 -14 -15 -23 -15 -19 -24 -17 -18 -19 -18 -20 -20 -31 -11 -25 -25 -21 -19 -27 -17 -15 -27 -16 -25 -22 -29 -24 -25 -26 -19 -23 -23 -22 -24 -18 -20 -24 -20 -26 -25 -17 -22 -22 -23 -24 -20 -33 -28 -20 -24 -30 -23 -31 -21 -18 -26 -26 -31 -39 -26 -36 -30 -25 -39 -44 -30 -31 -29 -45 -44 -40 -45 -40 -29 -39 -40 -34 -42 -36 -45 -35 -34 -41 -43 -44 -44 -49 -52 -50 -41 -42 -45 -43 -60 -54 -60 -58 -62 -44 -58 -57 -52 -56 -59 -60 -65 -72 -83 -65 -67 -69 -68 -71 -88 -91 -82 -79 -105 -91 -111 -98 -86 -117 -100 -118 -104 -114 -87 -120 -114 -145 -130 -150 -169 -130 -126 -153 -143 -158 -166 -173 -161 -189 -183 -182 -179 -153 -161 -167 -178 -208 -203 -165 -195 -174 -172 -186 -212 -182 -186 -174 -193 -160 -181 -152 -165 -156 -191 -151 -162 -145 -151 -131 -124 -160 -152 -146 -117 -144 -140 -134 -130 -126 -109 -122 -108 -121 -112 -98 -105 -86 -122 -95 -75 -90 -82 -72 -69 -89 -77 -84 -82 -62 -54 -73 -53 -49 -64 -63 -47 -43 -63 -65 -59 -51 -72 -46 -55 -49 -39 -44 -49 -41 -35 -38 -34 -36 -27 -41 -38 -26 -41 -35 -35 -38 -44 -29 -33 -33 -24 -33 -28 -23 -27 -27 -23 -27 -24 -21 -22 -21 -23 -16 -23 -9 -16 -16 -18 -22 -20 -13 -21 -18 -22 -20 -19 -15 -17 -17 -18 -16 -16 -12 -11 -9 -19 -13 -13 -16 -16 -20 -17 -15 -11 -13 -11 -13 -16 -8 -12 -15 -8 -10 -12 -14 -8 -13 -12 -14 -11 -11 -9 -15 -11 -7 -13 -5 -6 -10 -9 -11 -13 -16 -3 -11 -14 -6 -7 -10 -8 -5 -13 -3 -7 -4 -4 -15 -2 -7 -10 -5 -5 -9 -11 -8 -6 -4 -5 -5 -9 -9 -9 -10 -7 -5 -10 -8 -7 -4 -9 -5 -6 -9 -9 -9 -7 -4 -9 -9 -6 -8 -7 -8 -8 -7 -6 -8 -4 -6 -5 -8 -8 -3 -9 -8 -5 -12 -7 -5 -5 -7 -6 -3 -8 -2 -5 -7 -11 -10 -12 -5 -4 -8 -6 -3 -6 -2 -5 -5 -7 -1 -5 -1 -4 -3 -6 -1 -0 -8 -8 -4 -8 -5 -7 -2 -0 -6 -4 -6 -5 -7 -4 -3 -4 -3 -3 -5 -1 -5 -3 -4 -4 -4 -7 -3 -5 -3 -4 -3 -5 -3 -4 -1 -2 -3 -1 -4 -4 -1 -4 -5 -1 -4 -6 -3 -1 -5 -1 -4 -2 -3 -7 -5 -1 -2 -4 -3 -0 -6 -3 -4 -6 -0 -6 -9 -14 -6 -22 -15 -21 -45 -53 -55 -79 -75 -87 -130 -94 -107 -107 -112 -107 -88 -82 -56 -62 -42 -38 -31 -14 -16 -7 -5 -4 -2 -4 -1 -1 -0 -0 -3 -2 -0 -0 -1 -0 -0 -0 -1 -1 -0 -0 -0 -1 -1 -0 -0 -1 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -1 -0 -0 -1 -1 -0 -0 -1 -1 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -1 -0 -0 -1 -0 -0 -0 -0 -2 -0 -0 -0 -1 -0 -0 -1 -0 -0 -1 -0 -1 -0 -1 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -2 -0 -0 -0 -1 -0 -1 -0 -0 -1 -0 -0 -0 -1 -0 -0 -0 -0 -1 -0 -1 -0 -0 -0 -0 -<> -<> -RESC=?; Reset Configuration -CLCK=80; 20MHz/80MHz -TPEA=9.600; Peaking Time -GAIF=0.9312; Fine Gain -GAIN=21.162; Total Gain (Analog * Fine) -RESL=204; Detector Reset Lockout -TFLA=0.200; Flat Top -TPFA=50; Fast Channel Peaking Time -PURE=OFF; PUR Interval On/Off -RTDE=OFF; RTD On/Off -MCAS=NORM; MCA Source -MCAC=2048; MCA/MCS Channels -SOFF=OFF; Set Spectrum Offset -AINP=POS; Analog Input Pos/Neg -INOF=DEF; Input Offset -GAIA=15; Analog Gain Index -CUSP=0; Non-Trapezoidal Shaping -PDMD=NORM; Peak Detect Mode (Min/Max) -THSL=0.585; Slow Threshold -TLLD=OFF; LLD Threshold -THFA=230.00; Fast Threshold -DACO=SHAPED; DAC Output -DACF=50; DAC Offset -RTDS=0; RTD Sensitivity -RTDT=0.00; RTD Threshold -BLRM=1; BLR Mode -BLRD=3; BLR Down Correction -BLRU=0; BLR Up Correction -AUO1=SCA8; AUX_OUT Selection -PRET=OFF; Preset Time -PRER=3600.000; Preset Real Time -PREC=OFF; Preset Counts -PRCL=1; Preset Counts Low Threshold -PRCH=8191; Preset Counts High Threshold -HVSE=-110; HV Set -TECS=220; TEC Set -PAPZ=OFF; Pole-Zero -PAPS=8.5; Preamp 8.5/5 (N/A) -SCOE=FA; Scope Trigger Edge -SCOT=12; Scope Trigger Position -SCOG=1; Digital Scope Gain -MCSL=1; MCS Low Threshold -MCSH=8191; MCS High Threshold -MCST=0.00; MCS Timebase -AUO2=ICR; AUX_OUT2 Selection -TPMO=OFF; Test Pulser On/Off -GPED=RI; G.P. Counter Edge -GPIN=AUX1; G.P. Counter Input -GPME=ON; G.P. Counter Uses MCA_EN? -GPGA=ON; G.P. Counter Uses GATE? -GPMC=ON; G.P. Counter Cleared With MCA Counters? -MCAE=OFF; MCA/MCS Enable -VOLU=OFF; Speaker On/Off -CON1=DAC; Connector 1 -CON2=AUXOUT2; Connector 2 -<> -<> -Device Type: PX5 -Serial Number: 2264 -Firmware: 6.07 Build: 3 -FPGA: 6.02 -Fast Count: 14875 -Slow Count: 97586 -Accumulation Time: 3597.487000 -Real Time: 3600.000000 -Dead Time: -HV Volt: -110V -TEC Temp: 221K -Board Temp: 37C -<> diff --git a/XRA/Data/PbFilm_Ra_27Aug.mca b/XRA/Data/PbFilm_Ra_27Aug.mca deleted file mode 100755 index 896fa74..0000000 --- a/XRA/Data/PbFilm_Ra_27Aug.mca +++ /dev/null @@ -1,1037 +0,0 @@ -<> -TAG - live_data -DESCRIPTION - -GAIN - 2 -THRESHOLD - 50 -LIVE_MODE - 0 -PRESET_TIME - 0 -LIVE_TIME - 6879.280000 -REAL_TIME - 6879.560000 -START_TIME - 08/27/2025 15:54:30 -SERIAL_NUMBER - 4114 -<> -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -3 -13 -18 -13 -11 -17 -12 -13 -13 -7 -5 -5 -5 -8 -5 -3 -1 -4 -2 -6 -5 -6 -5 -3 -6 -1 -5 -5 -3 -7 -4 -5 -0 -4 -3 -5 -7 -6 -3 -1 -3 -2 -1 -2 -2 -4 -5 -4 -3 -2 -3 -5 -4 -5 -3 -3 -6 -2 -1 -2 -1 -1 -2 -4 -5 -5 -3 -2 -1 -4 -1 -3 -2 -3 -1 -3 -1 -5 -1 -2 -3 -4 -6 -3 -2 -4 -4 -4 -2 -4 -2 -3 -3 -3 -6 -4 -3 -4 -1 -2 -6 -5 -3 -3 -1 -5 -10 -4 -2 -2 -5 -3 -2 -3 -4 -6 -3 -4 -4 -6 -3 -4 -2 -8 -2 -8 -5 -2 -5 -2 -2 -4 -3 -1 -1 -0 -2 -1 -2 -2 -6 -4 -9 -5 -4 -4 -2 -3 -5 -5 -6 -3 -4 -4 -4 -3 -7 -7 -3 -5 -9 -7 -2 -4 -7 -3 -7 -8 -6 -5 -4 -3 -4 -6 -10 -10 -9 -5 -6 -2 -3 -3 -10 -2 -6 -7 -6 -3 -3 -4 -5 -10 -5 -6 -3 -8 -3 -4 -9 -11 -4 -8 -9 -3 -5 -6 -5 -6 -11 -4 -6 -10 -9 -10 -7 -9 -4 -7 -7 -7 -10 -6 -7 -7 -9 -4 -5 -7 -4 -8 -4 -9 -6 -7 -10 -5 -6 -6 -9 -5 -4 -6 -3 -7 -12 -7 -9 -4 -4 -7 -7 -2 -8 -9 -8 -7 -11 -4 -6 -13 -9 -5 -6 -7 -3 -9 -4 -5 -8 -7 -9 -4 -6 -10 -7 -3 -13 -7 -5 -9 -9 -6 -5 -9 -11 -7 -4 -4 -7 -9 -11 -12 -8 -10 -8 -4 -10 -6 -8 -7 -7 -7 -7 -5 -7 -12 -10 -7 -7 -8 -6 -7 -10 -10 -6 -19 -10 -16 -12 -9 -3 -9 -13 -12 -7 -13 -9 -12 -10 -11 -11 -5 -11 -12 -13 -6 -9 -14 -6 -6 -11 -12 -11 -5 -11 -10 -5 -7 -14 -16 -9 -10 -14 -17 -18 -12 -10 -21 -12 -14 -23 -20 -13 -18 -25 -22 -15 -26 -25 -28 -29 -36 -27 -33 -36 -33 -40 -36 -52 -50 -63 -45 -58 -71 -68 -69 -72 -85 -80 -117 -119 -109 -125 -143 -146 -179 -184 -167 -208 -210 -243 -251 -255 -307 -274 -297 -289 -309 -343 -351 -374 -370 -430 -464 -506 -560 -585 -667 -710 -753 -839 -862 -938 -985 -987 -897 -778 -752 -623 -508 -377 -295 -231 -171 -112 -89 -79 -54 -54 -43 -40 -37 -23 -30 -31 -21 -29 -25 -35 -42 -51 -40 -39 -41 -31 -49 -46 -46 -67 -69 -77 -84 -78 -83 -95 -100 -97 -96 -110 -142 -142 -142 -174 -181 -201 -237 -265 -265 -272 -291 -318 -348 -363 -357 -382 -380 -365 -368 -320 -294 -264 -224 -235 -238 -221 -207 -225 -243 -250 -285 -303 -322 -380 -368 -401 -428 -402 -442 -369 -337 -294 -256 -201 -153 -117 -87 -53 -54 -37 -21 -19 -14 -13 -16 -19 -15 -26 -12 -18 -21 -22 -29 -35 -30 -26 -41 -30 -47 -48 -60 -55 -62 -71 -73 -87 -80 -89 -92 -101 -113 -118 -127 -165 -171 -198 -192 -214 -277 -275 -272 -354 -412 -365 -430 -447 -469 -398 -407 -373 -349 -285 -199 -168 -111 -87 -49 -43 -23 -15 -15 -15 -9 -10 -6 -7 -7 -4 -5 -6 -5 -3 -1 -3 -2 -2 -5 -2 -4 -3 -3 -1 -3 -2 -0 -3 -0 -1 -5 -4 -0 -4 -7 -2 -2 -4 -8 -7 -9 -10 -17 -17 -21 -14 -6 -4 -1 -1 -5 -4 -4 -2 -1 -0 -0 -2 -3 -2 -3 -6 -1 -1 -1 -2 -3 -3 -1 -2 -2 -3 -3 -4 -0 -3 -2 -6 -4 -2 -2 -3 -5 -4 -4 -3 -4 -6 -2 -2 -2 -4 -3 -5 -7 -5 -3 -4 -5 -4 -6 -5 -2 -7 -5 -5 -5 -4 -7 -2 -5 -6 -2 -5 -6 -3 -6 -8 -5 -8 -2 -6 -1 -6 -5 -6 -10 -1 -3 -1 -7 -4 -3 -4 -3 -2 -3 -5 -7 -11 -4 -11 -3 -3 -9 -13 -12 -13 -16 -29 -11 -23 -22 -21 -21 -35 -34 -45 -45 -38 -53 -51 -71 -62 -73 -83 -80 -107 -122 -106 -139 -145 -169 -196 -195 -214 -244 -265 -306 -346 -400 -401 -431 -433 -428 -359 -374 -276 -225 -158 -115 -89 -49 -33 -39 -21 -21 -6 -6 -3 -3 -6 -2 -3 -2 -6 -2 -6 -4 -3 -6 -8 -5 -8 -8 -5 -7 -10 -12 -5 -14 -15 -11 -17 -31 -39 -55 -84 -126 -182 -250 -275 -272 -165 -61 -28 -21 -15 -5 -1 -1 -0 -1 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -1 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -1 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -1 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -1 -0 -0 -0 -0 -0 -0 -0 -1 -0 -1 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -<> diff --git a/XRA/Data/Pbfilm_U232_26Aug.mca b/XRA/Data/Pbfilm_U232_26Aug.mca deleted file mode 100755 index d1c049f..0000000 --- a/XRA/Data/Pbfilm_U232_26Aug.mca +++ /dev/null @@ -1,1037 +0,0 @@ -<> -TAG - live_data -DESCRIPTION - -GAIN - 2 -THRESHOLD - 50 -LIVE_MODE - 0 -PRESET_TIME - 0 -LIVE_TIME - 3283.320000 -REAL_TIME - 3289.546667 -START_TIME - 08/26/2025 15:27:48 -SERIAL_NUMBER - 4114 -<> -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -47 -288 -259 -224 -246 -214 -189 -155 -162 -131 -120 -127 -108 -121 -97 -106 -86 -88 -78 -84 -68 -63 -69 -78 -77 -65 -72 -62 -58 -68 -67 -62 -71 -48 -72 -67 -55 -45 -48 -62 -56 -50 -49 -57 -62 -70 -65 -47 -59 -44 -46 -53 -57 -59 -50 -60 -63 -63 -58 -64 -59 -62 -69 -56 -58 -62 -58 -65 -68 -65 -67 -63 -60 -57 -62 -50 -69 -56 -51 -62 -60 -56 -68 -61 -59 -60 -59 -69 -62 -66 -69 -74 -64 -67 -54 -68 -71 -74 -63 -52 -65 -72 -60 -64 -69 -74 -70 -66 -58 -78 -63 -62 -74 -64 -68 -82 -73 -80 -66 -76 -74 -77 -81 -82 -74 -71 -71 -80 -77 -71 -74 -72 -75 -68 -89 -74 -76 -83 -70 -84 -61 -79 -90 -79 -78 -86 -69 -89 -78 -74 -81 -87 -98 -81 -90 -83 -125 -100 -107 -123 -118 -117 -117 -109 -131 -146 -110 -144 -134 -109 -115 -134 -107 -130 -108 -108 -110 -119 -117 -125 -117 -122 -118 -120 -116 -111 -104 -125 -116 -100 -91 -115 -108 -90 -127 -104 -101 -122 -121 -125 -103 -116 -118 -111 -118 -107 -126 -126 -140 -125 -139 -119 -129 -124 -113 -137 -133 -98 -112 -122 -135 -118 -120 -110 -136 -139 -115 -122 -130 -116 -139 -160 -133 -134 -131 -122 -135 -107 -135 -111 -144 -123 -120 -129 -123 -132 -123 -123 -121 -120 -113 -138 -127 -111 -119 -147 -115 -118 -129 -143 -105 -114 -129 -139 -123 -138 -145 -114 -146 -128 -139 -130 -120 -146 -131 -146 -123 -121 -126 -135 -122 -136 -124 -140 -141 -127 -104 -120 -131 -109 -108 -129 -137 -112 -127 -125 -130 -156 -138 -124 -149 -127 -130 -161 -126 -122 -149 -141 -138 -117 -131 -135 -142 -101 -132 -143 -138 -128 -129 -171 -142 -157 -147 -166 -147 -162 -141 -153 -172 -163 -148 -142 -138 -149 -152 -135 -146 -149 -146 -162 -159 -135 -146 -139 -147 -156 -127 -154 -154 -143 -153 -149 -149 -159 -162 -168 -146 -149 -153 -169 -166 -171 -177 -155 -152 -175 -170 -185 -156 -168 -162 -184 -166 -177 -176 -173 -177 -171 -197 -186 -175 -181 -175 -178 -200 -189 -202 -190 -196 -169 -180 -198 -194 -202 -199 -206 -204 -227 -212 -219 -201 -217 -226 -227 -240 -225 -209 -237 -248 -237 -248 -261 -256 -277 -256 -273 -283 -273 -294 -315 -302 -294 -341 -342 -322 -333 -376 -366 -414 -409 -419 -444 -482 -507 -577 -593 -644 -661 -750 -787 -797 -876 -916 -954 -1110 -1163 -1301 -1334 -1449 -1487 -1704 -1845 -1966 -2107 -2251 -2416 -2637 -2838 -2965 -3302 -3618 -4020 -4161 -4666 -5199 -5679 -6418 -6802 -7572 -8270 -9018 -9559 -10328 -10969 -11543 -12334 -12565 -12792 -13149 -12953 -13073 -13135 -12596 -12339 -11841 -11685 -11131 -10728 -10617 -10422 -10036 -9511 -8903 -8386 -7713 -7026 -6269 -5487 -4811 -4267 -3889 -3411 -3138 -2973 -2803 -2724 -2815 -2986 -3178 -3443 -3792 -4144 -4779 -5302 -5841 -6679 -7270 -8016 -8738 -9237 -9458 -9603 -9323 -9121 -8565 -7797 -6837 -5956 -5067 -4182 -3465 -2687 -2206 -1714 -1497 -1237 -1073 -888 -831 -742 -724 -692 -740 -714 -786 -832 -807 -851 -923 -1021 -1107 -1198 -1316 -1509 -1633 -1840 -1986 -2363 -2508 -2907 -3165 -3388 -3677 -3906 -4257 -4116 -4129 -4157 -4055 -3921 -3712 -3609 -3341 -3212 -3041 -3004 -2890 -2956 -3036 -3229 -3525 -3949 -4337 -4918 -5642 -6249 -7116 -7777 -8701 -9309 -9808 -10284 -10162 -10114 -9420 -8774 -7906 -6828 -5619 -4741 -3702 -3066 -2225 -1857 -1398 -1092 -863 -681 -593 -520 -477 -454 -448 -436 -439 -450 -518 -520 -535 -615 -690 -791 -810 -936 -970 -1012 -1166 -1231 -1429 -1526 -1585 -1777 -1930 -2143 -2367 -2524 -2813 -3199 -3528 -4087 -4708 -5419 -6139 -6827 -7846 -8698 -9352 -9852 -10442 -10409 -10288 -9789 -9080 -7886 -6899 -5768 -4626 -3764 -2926 -2181 -1617 -1278 -908 -711 -518 -428 -302 -256 -182 -136 -105 -113 -82 -73 -62 -46 -33 -32 -29 -40 -30 -31 -31 -21 -37 -30 -24 -34 -27 -30 -26 -25 -21 -30 -24 -31 -19 -25 -19 -26 -23 -30 -18 -21 -20 -27 -21 -26 -30 -21 -19 -25 -25 -27 -18 -15 -23 -20 -20 -21 -29 -29 -25 -37 -24 -32 -21 -32 -26 -26 -30 -26 -21 -34 -20 -29 -29 -27 -26 -29 -18 -27 -28 -25 -30 -28 -27 -29 -28 -35 -30 -29 -25 -30 -32 -28 -23 -25 -25 -33 -22 -22 -27 -41 -24 -28 -22 -36 -26 -25 -25 -17 -29 -26 -27 -21 -26 -25 -22 -21 -37 -27 -21 -30 -29 -24 -22 -37 -32 -31 -36 -29 -29 -29 -32 -32 -42 -30 -31 -25 -39 -33 -20 -27 -38 -33 -25 -22 -31 -38 -40 -50 -42 -41 -42 -35 -47 -36 -43 -51 -49 -52 -53 -58 -48 -54 -44 -54 -52 -40 -66 -59 -60 -52 -58 -55 -59 -93 -76 -87 -93 -104 -121 -113 -131 -153 -160 -177 -191 -209 -246 -289 -298 -321 -354 -417 -488 -509 -636 -708 -769 -838 -859 -967 -1128 -1247 -1372 -1584 -1721 -1982 -2126 -2396 -2904 -3369 -3911 -4636 -5104 -5881 -6464 -6976 -7168 -7323 -7202 -6597 -5831 -5113 -4310 -3511 -2788 -2077 -1608 -1181 -989 -709 -557 -423 -295 -256 -189 -163 -132 -108 -88 -75 -61 -48 -44 -50 -33 -33 -23 -20 -27 -18 -10 -15 -11 -11 -8 -11 -10 -4 -11 -7 -6 -3 -4 -3 -2 -3 -4 -2 -3 -4 -2 -2 -0 -1 -1 -1 -0 -0 -3 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -<> diff --git a/XRA/Data/Rb_Calibration (20 mins).mca b/XRA/Data/Rb_Calibration (20 mins).mca deleted file mode 100644 index 226f6f5..0000000 --- a/XRA/Data/Rb_Calibration (20 mins).mca +++ /dev/null @@ -1,2132 +0,0 @@ -<> -TAG - live_data -DESCRIPTION - -GAIN - 3 -THRESHOLD - 0 -LIVE_MODE - 0 -PRESET_TIME - 0 -LIVE_TIME - 1199.327000 -REAL_TIME - 1200.194000 -START_TIME - 01/27/2000 02:12:21 -SERIAL_NUMBER - 0 -<> -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -28 -46 -39 -36 -39 -53 -48 -30 -49 -35 -43 -28 -39 -33 -31 -30 -21 -27 -33 -35 -27 -17 -20 -18 -24 -23 -20 -23 -19 -16 -32 -19 -23 -17 -14 -22 -24 -20 -20 -15 -18 -26 -8 -20 -19 -23 -24 -20 -16 -22 -8 -13 -17 -13 -13 -21 -27 -14 -25 -18 -24 -23 -20 -21 -18 -18 -27 -13 -15 -25 -21 -14 -18 -19 -12 -21 -24 -26 -19 -17 -18 -22 -22 -22 -11 -11 -15 -22 -21 -14 -18 -17 -24 -5 -19 -16 -15 -17 -18 -21 -15 -24 -16 -14 -15 -13 -16 -19 -23 -16 -21 -15 -16 -13 -16 -12 -16 -14 -13 -21 -10 -14 -13 -20 -16 -17 -21 -16 -18 -15 -14 -10 -12 -16 -15 -19 -20 -18 -21 -20 -16 -11 -12 -15 -15 -15 -14 -25 -17 -22 -12 -14 -16 -17 -16 -18 -19 -19 -10 -15 -26 -31 -30 -40 -30 -23 -21 -19 -13 -15 -23 -12 -15 -15 -19 -18 -16 -21 -23 -15 -26 -25 -22 -22 -17 -19 -19 -19 -22 -16 -22 -35 -51 -76 -74 -61 -58 -32 -32 -23 -22 -10 -14 -12 -13 -23 -12 -17 -12 -15 -19 -25 -20 -26 -29 -32 -31 -26 -27 -18 -17 -18 -20 -22 -18 -15 -27 -37 -37 -36 -36 -17 -16 -16 -15 -13 -12 -13 -9 -11 -7 -14 -13 -12 -10 -11 -18 -12 -14 -12 -5 -12 -12 -13 -10 -12 -19 -16 -11 -18 -9 -4 -6 -9 -5 -11 -6 -6 -4 -8 -6 -6 -4 -6 -8 -8 -6 -2 -8 -6 -4 -9 -10 -10 -5 -9 -9 -12 -11 -11 -8 -9 -9 -11 -8 -10 -8 -13 -9 -9 -11 -9 -12 -11 -7 -5 -7 -3 -8 -10 -10 -14 -7 -9 -4 -7 -9 -14 -8 -8 -8 -7 -8 -3 -9 -12 -8 -20 -11 -7 -7 -6 -4 -11 -5 -13 -5 -8 -11 -11 -11 -7 -7 -11 -8 -10 -10 -7 -7 -10 -4 -4 -13 -9 -10 -12 -9 -8 -12 -10 -18 -21 -21 -19 -28 -16 -11 -14 -9 -9 -7 -15 -12 -8 -9 -9 -6 -12 -10 -15 -9 -18 -10 -15 -9 -18 -17 -19 -16 -19 -20 -26 -26 -31 -24 -27 -38 -48 -37 -43 -51 -42 -58 -55 -70 -74 -80 -84 -104 -141 -206 -476 -970 -2190 -4132 -7126 -10629 -14307 -16764 -17689 -15953 -12838 -8986 -5673 -2973 -1385 -595 -250 -115 -81 -54 -44 -36 -35 -28 -33 -29 -17 -18 -22 -19 -24 -20 -20 -31 -23 -28 -31 -36 -28 -33 -36 -24 -37 -40 -52 -40 -41 -55 -53 -79 -77 -110 -220 -398 -731 -1249 -1803 -2420 -3014 -2961 -2785 -2264 -1666 -1073 -805 -535 -446 -304 -264 -171 -109 -56 -31 -16 -10 -1 -3 -1 -2 -3 -5 -1 -4 -2 -3 -2 -1 -1 -2 -3 -2 -0 -2 -1 -5 -1 -2 -1 -0 -3 -0 -0 -3 -3 -1 -4 -0 -2 -1 -1 -4 -2 -0 -0 -3 -2 -2 -0 -2 -1 -2 -0 -2 -1 -0 -0 -0 -2 -2 -4 -1 -2 -1 -4 -1 -0 -1 -4 -1 -4 -0 -1 -2 -1 -1 -0 -1 -0 -0 -3 -0 -2 -1 -2 -2 -0 -0 -1 -2 -0 -0 -1 -3 -2 -2 -1 -3 -2 -0 -2 -1 -1 -4 -0 -1 -0 -0 -1 -0 -0 -0 -0 -0 -0 -1 -2 -2 -1 -1 -0 -0 -0 -2 -1 -2 -1 -0 -3 -2 -1 -1 -2 -1 -2 -0 -2 -1 -0 -0 -4 -2 -3 -2 -2 -0 -1 -1 -0 -3 -1 -2 -2 -2 -5 -1 -0 -0 -2 -0 -1 -0 -2 -1 -2 -2 -2 -1 -0 -1 -1 -1 -1 -1 -0 -3 -0 -0 -0 -1 -1 -1 -0 -0 -1 -2 -1 -2 -2 -0 -0 -1 -0 -1 -0 -3 -1 -3 -3 -0 -2 -0 -0 -1 -1 -1 -1 -0 -1 -0 -2 -1 -0 -1 -1 -0 -1 -1 -0 -1 -2 -0 -2 -2 -1 -1 -1 -0 -1 -0 -0 -0 -2 -1 -1 -2 -0 -0 -1 -0 -0 -0 -1 -1 -1 -0 -1 -0 -3 -2 -4 -1 -0 -2 -0 -2 -3 -1 -0 -1 -0 -0 -0 -1 -0 -1 -1 -0 -1 -0 -0 -0 -1 -0 -1 -0 -1 -1 -1 -0 -2 -0 -2 -2 -2 -0 -1 -4 -0 -3 -0 -3 -0 -1 -1 -2 -0 -0 -1 -3 -0 -2 -0 -1 -2 -1 -0 -0 -1 -1 -2 -1 -1 -2 -2 -2 -0 -1 -1 -2 -5 -1 -3 -2 -2 -7 -1 -1 -2 -2 -0 -0 -1 -1 -1 -2 -1 -3 -2 -1 -0 -0 -0 -2 -1 -0 -1 -0 -0 -2 -3 -3 -4 -2 -2 -3 -2 -2 -1 -2 -1 -0 -1 -0 -0 -1 -0 -1 -1 -1 -1 -2 -1 -3 -1 -0 -1 -2 -1 -1 -0 -1 -1 -2 -0 -0 -2 -0 -2 -0 -0 -2 -0 -1 -1 -2 -0 -1 -2 -1 -0 -0 -0 -1 -1 -1 -0 -1 -0 -2 -1 -0 -1 -1 -0 -0 -1 -1 -0 -0 -1 -1 -0 -1 -4 -0 -0 -3 -0 -0 -0 -0 -1 -0 -0 -0 -2 -0 -1 -1 -0 -1 -0 -0 -0 -2 -0 -2 -0 -0 -1 -0 -0 -0 -0 -0 -1 -0 -1 -0 -0 -0 -0 -1 -0 -1 -0 -0 -0 -0 -0 -2 -0 -0 -0 -0 -0 -1 -0 -1 -0 -1 -0 -1 -1 -1 -3 -5 -1 -3 -2 -3 -4 -1 -1 -4 -2 -4 -1 -6 -5 -10 -1 -12 -5 -7 -6 -5 -4 -5 -8 -1 -1 -1 -1 -0 -2 -1 -0 -2 -0 -1 -0 -1 -0 -0 -0 -0 -1 -0 -3 -0 -1 -2 -1 -0 -0 -2 -0 -3 -1 -0 -0 -1 -0 -1 -2 -0 -1 -2 -2 -1 -1 -1 -1 -1 -0 -1 -1 -0 -0 -0 -0 -0 -0 -0 -1 -1 -0 -0 -0 -1 -3 -0 -0 -0 -1 -2 -0 -0 -0 -0 -0 -0 -0 -0 -0 -2 -0 -0 -0 -0 -2 -0 -1 -0 -1 -1 -3 -1 -0 -0 -0 -1 -0 -1 -0 -0 -0 -1 -1 -0 -0 -2 -1 -0 -2 -0 -0 -1 -0 -0 -0 -1 -1 -1 -3 -1 -1 -1 -2 -1 -1 -1 -5 -2 -1 -0 -0 -0 -3 -0 -0 -0 -0 -1 -2 -2 -0 -2 -1 -0 -0 -0 -1 -2 -0 -1 -0 -2 -1 -0 -2 -4 -0 -1 -0 -3 -3 -1 -0 -1 -0 -2 -1 -0 -0 -0 -1 -0 -1 -0 -0 -2 -1 -2 -0 -0 -0 -0 -0 -2 -1 -1 -2 -4 -1 -2 -0 -0 -2 -0 -0 -0 -1 -1 -1 -3 -0 -0 -0 -1 -1 -0 -1 -0 -2 -2 -2 -0 -0 -1 -0 -1 -0 -0 -1 -2 -0 -1 -1 -0 -1 -1 -0 -0 -0 -0 -0 -2 -2 -1 -2 -1 -1 -0 -3 -0 -4 -1 -0 -1 -0 -1 -1 -1 -0 -2 -0 -2 -0 -2 -2 -2 -1 -2 -2 -1 -0 -1 -1 -1 -1 -2 -2 -1 -3 -3 -0 -3 -0 -1 -1 -0 -2 -1 -0 -2 -1 -5 -1 -0 -3 -1 -1 -1 -1 -0 -1 -1 -1 -2 -1 -1 -1 -2 -2 -1 -1 -1 -1 -1 -2 -2 -2 -0 -0 -1 -1 -1 -3 -1 -0 -3 -0 -3 -2 -1 -3 -2 -3 -0 -3 -0 -3 -4 -0 -0 -1 -2 -2 -5 -3 -1 -2 -4 -3 -5 -4 -3 -4 -4 -1 -3 -3 -2 -6 -3 -4 -2 -7 -2 -6 -4 -2 -2 -1 -4 -5 -0 -0 -3 -6 -3 -2 -3 -5 -4 -4 -2 -2 -2 -3 -3 -3 -7 -0 -4 -4 -6 -7 -3 -5 -3 -1 -10 -6 -3 -3 -5 -3 -3 -3 -3 -3 -3 -2 -2 -2 -3 -5 -2 -4 -2 -0 -4 -3 -5 -9 -5 -6 -7 -6 -1 -7 -7 -3 -3 -6 -3 -2 -5 -3 -4 -7 -3 -5 -3 -5 -4 -2 -10 -2 -6 -5 -3 -6 -6 -4 -3 -1 -6 -4 -8 -3 -5 -5 -10 -6 -2 -3 -8 -7 -2 -4 -6 -6 -2 -7 -10 -5 -4 -3 -3 -5 -5 -5 -9 -8 -4 -5 -11 -8 -7 -5 -10 -1 -4 -6 -8 -9 -12 -7 -9 -7 -13 -12 -9 -8 -11 -8 -5 -8 -9 -14 -5 -7 -10 -11 -15 -12 -8 -10 -13 -11 -7 -5 -11 -7 -5 -9 -8 -11 -16 -14 -19 -13 -10 -9 -13 -11 -18 -21 -13 -14 -21 -14 -18 -26 -17 -11 -13 -18 -22 -19 -14 -26 -23 -18 -18 -26 -21 -28 -16 -32 -30 -30 -22 -33 -20 -44 -38 -43 -34 -34 -41 -42 -31 -29 -43 -43 -45 -36 -55 -41 -52 -58 -52 -55 -63 -54 -41 -44 -62 -73 -57 -49 -59 -53 -50 -58 -54 -32 -61 -55 -50 -41 -43 -35 -49 -36 -51 -35 -51 -34 -33 -41 -43 -39 -39 -28 -35 -36 -44 -31 -24 -27 -29 -37 -30 -31 -33 -30 -26 -26 -31 -18 -25 -25 -22 -13 -23 -15 -16 -17 -23 -18 -15 -20 -9 -17 -18 -15 -8 -15 -19 -9 -16 -7 -6 -14 -11 -12 -12 -14 -6 -11 -9 -8 -8 -11 -9 -13 -11 -6 -9 -4 -5 -8 -6 -8 -7 -6 -5 -8 -4 -5 -4 -11 -8 -7 -8 -5 -10 -6 -11 -2 -7 -6 -8 -12 -8 -6 -2 -2 -3 -3 -6 -7 -6 -4 -4 -4 -6 -5 -2 -8 -3 -6 -1 -10 -6 -2 -4 -7 -7 -4 -7 -1 -2 -4 -3 -3 -2 -5 -4 -2 -7 -2 -3 -1 -5 -3 -4 -4 -3 -3 -4 -1 -1 -0 -5 -2 -2 -2 -3 -4 -3 -4 -1 -1 -7 -2 -3 -1 -1 -3 -2 -2 -3 -6 -0 -0 -3 -1 -4 -4 -1 -3 -1 -2 -2 -0 -3 -0 -3 -3 -0 -2 -0 -2 -2 -4 -4 -3 -0 -2 -5 -4 -3 -3 -0 -2 -0 -3 -4 -3 -1 -1 -2 -2 -1 -1 -2 -0 -3 -0 -0 -3 -3 -0 -2 -0 -4 -3 -1 -4 -0 -2 -0 -1 -2 -1 -1 -1 -0 -2 -2 -1 -3 -0 -0 -0 -2 -3 -3 -0 -1 -1 -2 -3 -0 -2 -1 -1 -3 -3 -1 -0 -2 -0 -0 -0 -0 -1 -1 -1 -1 -2 -4 -0 -1 -3 -1 -1 -4 -0 -0 -0 -0 -1 -1 -2 -0 -2 -0 -2 -2 -1 -0 -0 -1 -0 -0 -0 -0 -1 -0 -0 -3 -2 -3 -0 -0 -1 -1 -1 -0 -0 -0 -1 -2 -1 -2 -3 -2 -2 -2 -2 -9 -4 -10 -10 -11 -17 -24 -25 -24 -38 -34 -34 -26 -39 -25 -33 -32 -19 -15 -17 -16 -13 -11 -4 -4 -1 -1 -2 -0 -0 -0 -0 -1 -0 -0 -0 -0 -0 -0 -1 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -1 -0 -0 -0 -0 -1 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -1 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -1 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -1 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -<> -<> -RESC=?; Reset Configuration -CLCK=80; 20MHz/80MHz -TPEA=9.600; Peaking Time -GAIF=0.9312; Fine Gain -GAIN=21.162; Total Gain (Analog * Fine) -RESL=204; Detector Reset Lockout -TFLA=0.200; Flat Top -TPFA=50; Fast Channel Peaking Time -PURE=OFF; PUR Interval On/Off -RTDE=OFF; RTD On/Off -MCAS=NORM; MCA Source -MCAC=2048; MCA/MCS Channels -SOFF=OFF; Set Spectrum Offset -AINP=POS; Analog Input Pos/Neg -INOF=DEF; Input Offset -GAIA=15; Analog Gain Index -CUSP=0; Non-Trapezoidal Shaping -PDMD=NORM; Peak Detect Mode (Min/Max) -THSL=0.585; Slow Threshold -TLLD=OFF; LLD Threshold -THFA=230.00; Fast Threshold -DACO=SHAPED; DAC Output -DACF=50; DAC Offset -RTDS=0; RTD Sensitivity -RTDT=0.00; RTD Threshold -BLRM=1; BLR Mode -BLRD=3; BLR Down Correction -BLRU=0; BLR Up Correction -AUO1=SCA8; AUX_OUT Selection -PRET=OFF; Preset Time -PRER=1800.000; Preset Real Time -PREC=OFF; Preset Counts -PRCL=1; Preset Counts Low Threshold -PRCH=8191; Preset Counts High Threshold -HVSE=-110; HV Set -TECS=220; TEC Set -PAPZ=OFF; Pole-Zero -PAPS=8.5; Preamp 8.5/5 (N/A) -SCOE=FA; Scope Trigger Edge -SCOT=12; Scope Trigger Position -SCOG=1; Digital Scope Gain -MCSL=1; MCS Low Threshold -MCSH=8191; MCS High Threshold -MCST=0.00; MCS Timebase -AUO2=ICR; AUX_OUT2 Selection -TPMO=OFF; Test Pulser On/Off -GPED=RI; G.P. Counter Edge -GPIN=AUX1; G.P. Counter Input -GPME=ON; G.P. Counter Uses MCA_EN? -GPGA=ON; G.P. Counter Uses GATE? -GPMC=ON; G.P. Counter Cleared With MCA Counters? -MCAE=OFF; MCA/MCS Enable -VOLU=OFF; Speaker On/Off -CON1=DAC; Connector 1 -CON2=AUXOUT2; Connector 2 -<> -<> -Device Type: PX5 -Serial Number: 2264 -Firmware: 6.07 Build: 3 -FPGA: 6.02 -Fast Count: 4123 -Slow Count: 162714 -Accumulation Time: 1199.327000 -Real Time: 1200.194000 -Dead Time: -HV Volt: -110V -TEC Temp: 221K -Board Temp: 37C -<> diff --git a/XRA/Data/SampleC12_4h.mca b/XRA/Data/SampleC12_4h.mca deleted file mode 100644 index 4128605..0000000 --- a/XRA/Data/SampleC12_4h.mca +++ /dev/null @@ -1,2132 +0,0 @@ -<> -TAG - live_data -DESCRIPTION - -GAIN - 3 -THRESHOLD - 0 -LIVE_MODE - 0 -PRESET_TIME - 0 -LIVE_TIME - 14390.086000 -REAL_TIME - 14400.000000 -START_TIME - 10/14/2024 13:38:26 -SERIAL_NUMBER - 0 -<> -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -203 -236 -268 -232 -263 -243 -251 -257 -236 -220 -239 -242 -226 -245 -211 -211 -212 -209 -203 -227 -202 -227 -187 -183 -183 -203 -210 -192 -197 -180 -214 -211 -190 -203 -185 -184 -200 -186 -182 -148 -174 -173 -158 -186 -179 -181 -184 -201 -210 -170 -194 -201 -180 -183 -200 -180 -169 -217 -158 -189 -183 -170 -172 -168 -193 -193 -159 -176 -179 -169 -183 -157 -157 -182 -184 -163 -164 -179 -195 -162 -163 -183 -194 -195 -177 -145 -180 -161 -160 -183 -174 -171 -160 -161 -155 -181 -173 -160 -165 -169 -169 -140 -153 -162 -170 -151 -128 -142 -165 -169 -158 -131 -161 -126 -150 -153 -140 -127 -153 -150 -161 -132 -151 -121 -160 -152 -144 -143 -153 -129 -136 -141 -156 -154 -154 -145 -146 -155 -150 -157 -169 -166 -136 -149 -149 -152 -140 -151 -154 -141 -142 -158 -150 -150 -153 -181 -150 -174 -156 -233 -261 -335 -384 -333 -299 -209 -172 -118 -160 -138 -158 -176 -143 -185 -164 -161 -182 -205 -221 -214 -219 -212 -193 -182 -179 -168 -187 -228 -242 -289 -389 -546 -659 -863 -935 -782 -547 -323 -231 -183 -174 -163 -175 -172 -165 -189 -174 -170 -205 -186 -170 -185 -223 -262 -291 -276 -316 -278 -213 -225 -221 -172 -183 -178 -190 -201 -235 -236 -285 -321 -266 -267 -287 -274 -265 -275 -328 -315 -411 -513 -835 -1980 -5466 -13799 -30093 -52385 -72997 -81888 -71647 -50491 -27910 -12647 -4637 -1521 -603 -355 -310 -280 -281 -261 -262 -242 -238 -273 -287 -324 -410 -448 -543 -896 -1826 -3550 -6709 -10273 -13277 -13932 -11836 -8087 -4431 -2040 -819 -300 -125 -84 -70 -72 -69 -73 -59 -57 -72 -50 -54 -74 -61 -57 -57 -60 -61 -64 -73 -56 -61 -80 -45 -60 -45 -47 -40 -43 -51 -45 -43 -46 -40 -47 -47 -44 -44 -38 -39 -36 -59 -59 -55 -71 -77 -75 -81 -80 -69 -52 -38 -42 -58 -47 -39 -39 -44 -48 -38 -34 -36 -45 -38 -47 -30 -37 -38 -39 -32 -39 -36 -37 -26 -32 -36 -34 -24 -26 -26 -29 -28 -18 -33 -29 -18 -29 -24 -22 -23 -17 -24 -30 -19 -30 -35 -20 -26 -19 -25 -26 -8 -28 -26 -19 -22 -20 -17 -19 -22 -35 -31 -42 -43 -36 -32 -34 -25 -26 -19 -18 -14 -21 -12 -19 -19 -15 -18 -18 -20 -16 -11 -12 -19 -19 -18 -17 -23 -22 -15 -19 -14 -11 -12 -17 -17 -5 -17 -17 -15 -9 -14 -19 -15 -11 -18 -16 -10 -14 -14 -16 -13 -13 -11 -14 -22 -17 -15 -14 -11 -9 -11 -15 -13 -15 -13 -12 -8 -10 -11 -15 -13 -11 -16 -11 -15 -10 -15 -16 -13 -10 -12 -13 -18 -15 -14 -12 -12 -14 -14 -9 -11 -13 -8 -5 -20 -8 -12 -11 -12 -15 -8 -12 -14 -12 -15 -12 -13 -8 -10 -9 -17 -12 -12 -13 -9 -14 -9 -7 -5 -8 -10 -5 -9 -11 -5 -8 -8 -11 -9 -5 -3 -12 -8 -12 -7 -9 -11 -7 -11 -5 -7 -7 -9 -11 -12 -8 -13 -10 -9 -12 -7 -8 -14 -16 -9 -12 -10 -17 -18 -16 -14 -10 -11 -7 -9 -17 -9 -9 -9 -9 -6 -7 -10 -10 -6 -5 -9 -9 -7 -11 -13 -7 -10 -1 -6 -7 -7 -8 -7 -7 -7 -8 -9 -11 -8 -6 -4 -8 -8 -11 -6 -2 -12 -4 -7 -7 -9 -9 -6 -6 -10 -6 -7 -12 -8 -8 -7 -11 -13 -7 -6 -4 -11 -8 -8 -8 -10 -9 -13 -9 -5 -7 -7 -10 -11 -4 -12 -3 -7 -5 -6 -4 -11 -5 -10 -10 -10 -7 -5 -5 -8 -10 -8 -7 -10 -7 -4 -11 -6 -9 -10 -4 -9 -7 -7 -8 -20 -5 -8 -6 -5 -3 -12 -4 -10 -8 -7 -11 -7 -3 -8 -11 -10 -7 -4 -8 -6 -7 -10 -8 -8 -9 -4 -5 -5 -7 -7 -2 -8 -7 -5 -14 -10 -8 -14 -8 -16 -20 -22 -16 -11 -19 -11 -13 -12 -11 -8 -6 -7 -7 -4 -1 -12 -8 -8 -7 -13 -10 -4 -6 -4 -7 -4 -5 -9 -9 -9 -8 -8 -5 -13 -11 -9 -8 -6 -6 -7 -4 -4 -5 -10 -5 -9 -8 -10 -9 -7 -9 -11 -4 -7 -9 -6 -10 -7 -7 -13 -7 -11 -11 -6 -9 -11 -6 -7 -13 -9 -9 -7 -10 -10 -15 -10 -9 -6 -15 -11 -6 -16 -14 -7 -8 -9 -7 -8 -12 -9 -10 -12 -17 -22 -17 -9 -28 -24 -14 -23 -32 -27 -29 -27 -26 -24 -32 -17 -9 -17 -14 -8 -3 -6 -5 -5 -10 -3 -6 -9 -11 -4 -6 -8 -6 -5 -8 -5 -10 -14 -15 -12 -11 -13 -19 -21 -32 -24 -22 -30 -19 -20 -16 -13 -17 -8 -10 -2 -11 -3 -6 -6 -4 -9 -1 -9 -3 -9 -5 -6 -11 -7 -3 -6 -7 -9 -6 -8 -5 -10 -9 -5 -6 -7 -9 -5 -6 -4 -4 -8 -6 -5 -9 -4 -7 -5 -4 -6 -7 -4 -4 -6 -6 -5 -4 -6 -2 -8 -7 -6 -10 -12 -3 -4 -12 -12 -10 -13 -14 -10 -13 -15 -9 -9 -8 -8 -5 -4 -7 -6 -5 -7 -6 -3 -5 -7 -4 -10 -4 -6 -7 -7 -2 -7 -4 -6 -6 -8 -5 -6 -3 -6 -4 -6 -9 -7 -5 -5 -7 -5 -15 -5 -5 -5 -6 -5 -6 -4 -5 -6 -13 -3 -5 -9 -6 -4 -6 -6 -6 -3 -5 -5 -2 -8 -5 -4 -9 -7 -2 -5 -9 -2 -4 -7 -5 -3 -5 -4 -4 -10 -4 -7 -4 -3 -4 -2 -4 -7 -8 -3 -2 -6 -8 -7 -1 -9 -10 -9 -6 -10 -7 -6 -5 -6 -8 -8 -10 -5 -5 -4 -4 -6 -9 -3 -12 -5 -15 -9 -7 -4 -7 -4 -5 -2 -7 -6 -5 -9 -7 -9 -9 -5 -6 -6 -4 -9 -6 -14 -5 -12 -6 -6 -5 -12 -11 -11 -5 -10 -5 -3 -6 -3 -5 -11 -5 -2 -6 -3 -4 -9 -6 -9 -5 -5 -2 -6 -3 -5 -5 -8 -7 -9 -13 -5 -3 -6 -6 -8 -4 -4 -4 -5 -2 -7 -5 -7 -6 -7 -12 -8 -4 -5 -5 -8 -8 -8 -3 -4 -3 -2 -4 -6 -7 -6 -7 -5 -11 -8 -3 -2 -11 -7 -9 -2 -9 -9 -7 -7 -6 -16 -4 -9 -4 -7 -4 -6 -5 -7 -10 -4 -8 -9 -11 -6 -9 -3 -8 -7 -8 -6 -4 -14 -9 -5 -9 -11 -8 -5 -13 -6 -7 -7 -7 -2 -8 -10 -14 -11 -15 -6 -5 -8 -9 -5 -8 -9 -7 -8 -14 -9 -7 -10 -9 -10 -20 -10 -8 -7 -11 -7 -13 -9 -15 -5 -9 -13 -11 -7 -9 -8 -10 -16 -15 -11 -10 -11 -9 -10 -7 -11 -11 -15 -6 -14 -7 -8 -9 -6 -10 -9 -14 -8 -17 -9 -19 -7 -12 -10 -12 -13 -10 -13 -16 -19 -10 -12 -14 -12 -9 -14 -17 -11 -10 -12 -20 -11 -14 -8 -15 -13 -7 -16 -10 -12 -12 -15 -9 -18 -13 -11 -9 -9 -16 -14 -17 -20 -10 -12 -23 -10 -11 -14 -16 -11 -17 -11 -25 -16 -17 -14 -18 -10 -18 -15 -22 -11 -20 -28 -17 -28 -16 -15 -22 -20 -23 -16 -20 -24 -27 -21 -23 -22 -13 -20 -19 -23 -23 -24 -28 -20 -23 -25 -25 -17 -18 -34 -28 -22 -21 -24 -23 -36 -23 -21 -18 -36 -20 -24 -23 -28 -31 -34 -31 -22 -23 -37 -30 -26 -34 -40 -33 -28 -35 -31 -28 -25 -28 -33 -29 -22 -42 -42 -24 -41 -35 -38 -25 -29 -42 -36 -32 -39 -40 -19 -40 -44 -28 -37 -32 -38 -38 -44 -36 -36 -34 -29 -32 -49 -37 -35 -33 -33 -32 -37 -33 -33 -35 -32 -32 -31 -41 -39 -43 -50 -30 -62 -36 -42 -41 -33 -43 -46 -39 -49 -34 -39 -38 -50 -66 -42 -41 -54 -37 -49 -41 -47 -55 -37 -53 -60 -49 -48 -49 -43 -42 -53 -63 -51 -39 -60 -61 -52 -58 -54 -59 -49 -40 -34 -70 -68 -49 -48 -54 -57 -62 -74 -45 -49 -53 -66 -56 -64 -63 -62 -59 -76 -70 -65 -74 -79 -67 -77 -58 -70 -64 -77 -83 -75 -73 -59 -83 -88 -68 -68 -77 -78 -70 -92 -86 -87 -90 -91 -89 -77 -96 -70 -122 -99 -101 -113 -90 -95 -120 -95 -113 -112 -118 -128 -103 -123 -136 -120 -129 -131 -129 -136 -137 -142 -132 -136 -145 -138 -160 -144 -157 -146 -186 -161 -166 -187 -185 -186 -176 -158 -192 -215 -180 -246 -232 -219 -232 -219 -255 -241 -249 -252 -253 -268 -306 -293 -277 -281 -304 -324 -319 -331 -344 -371 -315 -325 -394 -397 -396 -369 -384 -389 -385 -407 -387 -454 -408 -433 -437 -439 -453 -430 -424 -437 -476 -508 -459 -482 -423 -436 -476 -428 -441 -417 -436 -458 -427 -442 -410 -425 -421 -408 -396 -415 -385 -402 -409 -366 -376 -390 -379 -367 -339 -364 -317 -357 -309 -312 -314 -287 -305 -298 -286 -307 -265 -278 -282 -262 -259 -274 -247 -258 -203 -221 -229 -210 -207 -197 -201 -221 -166 -204 -189 -179 -179 -169 -170 -154 -157 -152 -126 -148 -169 -144 -138 -115 -115 -131 -113 -106 -116 -118 -113 -99 -126 -95 -98 -116 -100 -102 -91 -98 -92 -80 -103 -91 -93 -82 -71 -80 -81 -70 -77 -71 -80 -64 -61 -61 -65 -78 -53 -68 -82 -75 -69 -62 -70 -58 -49 -49 -54 -50 -58 -58 -53 -48 -38 -58 -63 -58 -57 -59 -57 -53 -52 -32 -49 -47 -36 -48 -50 -50 -21 -51 -39 -41 -33 -32 -36 -27 -39 -38 -31 -28 -37 -43 -26 -39 -39 -35 -27 -35 -38 -34 -45 -34 -26 -34 -29 -26 -30 -39 -27 -36 -44 -45 -24 -26 -27 -29 -28 -33 -24 -28 -22 -23 -26 -35 -24 -33 -36 -31 -23 -21 -28 -31 -19 -19 -23 -23 -27 -15 -34 -27 -33 -22 -19 -16 -26 -28 -27 -30 -18 -24 -16 -19 -19 -24 -24 -21 -24 -20 -19 -22 -19 -23 -23 -17 -26 -28 -29 -25 -17 -23 -16 -21 -15 -18 -17 -17 -25 -14 -19 -20 -21 -15 -20 -14 -19 -18 -18 -17 -18 -25 -16 -16 -16 -17 -12 -13 -15 -15 -16 -14 -14 -8 -23 -14 -14 -11 -12 -14 -16 -15 -20 -17 -17 -17 -13 -12 -15 -11 -9 -13 -17 -9 -16 -15 -13 -21 -10 -11 -15 -8 -6 -16 -18 -18 -11 -13 -4 -13 -12 -3 -13 -13 -11 -16 -10 -15 -12 -9 -8 -8 -14 -9 -8 -13 -10 -7 -9 -8 -17 -16 -23 -25 -44 -54 -97 -101 -118 -176 -228 -247 -332 -365 -405 -446 -476 -499 -456 -447 -364 -347 -306 -281 -227 -151 -149 -105 -82 -46 -33 -19 -12 -12 -6 -3 -3 -2 -0 -1 -1 -1 -1 -1 -1 -0 -0 -1 -1 -1 -1 -0 -0 -2 -0 -1 -0 -1 -2 -0 -1 -0 -1 -2 -3 -1 -2 -2 -2 -1 -1 -0 -0 -1 -2 -0 -0 -3 -4 -1 -1 -0 -2 -0 -1 -1 -1 -2 -1 -2 -2 -0 -1 -1 -0 -1 -0 -1 -0 -0 -1 -1 -1 -1 -1 -2 -1 -2 -0 -1 -0 -3 -1 -0 -1 -0 -0 -0 -0 -1 -0 -0 -2 -1 -2 -0 -0 -2 -1 -1 -0 -1 -0 -0 -2 -0 -2 -1 -0 -0 -2 -1 -0 -1 -0 -1 -0 -2 -0 -1 -2 -<> -<> -RESC=?; Reset Configuration -CLCK=80; 20MHz/80MHz -TPEA=9.600; Peaking Time -GAIF=0.9312; Fine Gain -GAIN=21.162; Total Gain (Analog * Fine) -RESL=204; Detector Reset Lockout -TFLA=0.200; Flat Top -TPFA=50; Fast Channel Peaking Time -PURE=OFF; PUR Interval On/Off -RTDE=OFF; RTD On/Off -MCAS=NORM; MCA Source -MCAC=2048; MCA/MCS Channels -SOFF=OFF; Set Spectrum Offset -AINP=POS; Analog Input Pos/Neg -INOF=DEF; Input Offset -GAIA=15; Analog Gain Index -CUSP=0; Non-Trapezoidal Shaping -PDMD=NORM; Peak Detect Mode (Min/Max) -THSL=0.585; Slow Threshold -TLLD=OFF; LLD Threshold -THFA=230.00; Fast Threshold -DACO=SHAPED; DAC Output -DACF=50; DAC Offset -RTDS=0; RTD Sensitivity -RTDT=0.00; RTD Threshold -BLRM=1; BLR Mode -BLRD=3; BLR Down Correction -BLRU=0; BLR Up Correction -AUO1=SCA8; AUX_OUT Selection -PRET=OFF; Preset Time -PRER=14400.000; Preset Real Time -PREC=OFF; Preset Counts -PRCL=1; Preset Counts Low Threshold -PRCH=8191; Preset Counts High Threshold -HVSE=-110; HV Set -TECS=220; TEC Set -PAPZ=OFF; Pole-Zero -PAPS=8.5; Preamp 8.5/5 (N/A) -SCOE=FA; Scope Trigger Edge -SCOT=12; Scope Trigger Position -SCOG=1; Digital Scope Gain -MCSL=1; MCS Low Threshold -MCSH=8191; MCS High Threshold -MCST=0.00; MCS Timebase -AUO2=ICR; AUX_OUT2 Selection -TPMO=OFF; Test Pulser On/Off -GPED=RI; G.P. Counter Edge -GPIN=AUX1; G.P. Counter Input -GPME=ON; G.P. Counter Uses MCA_EN? -GPGA=ON; G.P. Counter Uses GATE? -GPMC=ON; G.P. Counter Cleared With MCA Counters? -MCAE=OFF; MCA/MCS Enable -VOLU=OFF; Speaker On/Off -CON1=DAC; Connector 1 -CON2=AUXOUT2; Connector 2 -<> -<> -Device Type: PX5 -Serial Number: 2264 -Firmware: 6.07 Build: 3 -FPGA: 6.02 -Fast Count: 45911 -Slow Count: 640112 -Accumulation Time: 14390.086000 -Real Time: 14400.000000 -Dead Time: -HV Volt: -109V -TEC Temp: 220K -Board Temp: 34C -<> diff --git a/XRA/Data/Tb_Calibration.mca b/XRA/Data/Tb_Calibration.mca deleted file mode 100644 index d1f34f2..0000000 --- a/XRA/Data/Tb_Calibration.mca +++ /dev/null @@ -1,2132 +0,0 @@ -<> -TAG - live_data -DESCRIPTION - -GAIN - 3 -THRESHOLD - 0 -LIVE_MODE - 0 -PRESET_TIME - 0 -LIVE_TIME - 741.600000 -REAL_TIME - 742.151000 -START_TIME - -SERIAL_NUMBER - 0 -<> -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -80 -127 -128 -126 -115 -119 -114 -128 -117 -102 -111 -104 -108 -122 -98 -121 -90 -88 -95 -95 -76 -110 -113 -119 -100 -78 -107 -88 -97 -112 -97 -110 -94 -108 -98 -93 -97 -97 -96 -100 -78 -98 -98 -69 -90 -87 -88 -89 -100 -97 -81 -79 -86 -87 -89 -85 -103 -87 -80 -101 -79 -109 -95 -77 -88 -76 -98 -85 -86 -74 -80 -81 -90 -92 -74 -74 -87 -80 -76 -75 -64 -74 -84 -90 -77 -80 -71 -90 -81 -69 -74 -78 -66 -64 -76 -85 -62 -78 -72 -73 -78 -74 -70 -77 -76 -74 -67 -72 -83 -66 -82 -80 -84 -63 -71 -70 -60 -76 -71 -79 -85 -70 -86 -92 -80 -73 -78 -56 -62 -71 -69 -81 -79 -84 -95 -86 -75 -83 -83 -72 -88 -84 -72 -67 -50 -78 -80 -68 -95 -75 -93 -80 -89 -88 -98 -79 -86 -86 -87 -86 -92 -76 -101 -119 -116 -104 -119 -140 -130 -136 -101 -97 -88 -96 -89 -95 -84 -73 -103 -94 -98 -91 -67 -79 -107 -172 -319 -634 -1120 -1704 -1874 -1672 -1158 -667 -351 -191 -130 -116 -65 -88 -79 -72 -67 -71 -60 -65 -66 -79 -167 -342 -711 -1106 -1436 -1537 -1317 -993 -698 -498 -331 -238 -157 -155 -210 -332 -412 -484 -499 -367 -269 -174 -121 -84 -47 -46 -33 -36 -29 -31 -25 -26 -28 -35 -31 -34 -47 -42 -76 -108 -150 -156 -127 -119 -84 -60 -45 -39 -43 -52 -56 -53 -61 -41 -45 -25 -27 -24 -31 -22 -20 -16 -18 -14 -11 -15 -7 -11 -12 -11 -12 -12 -14 -9 -14 -14 -6 -15 -5 -10 -9 -8 -6 -8 -11 -4 -5 -13 -9 -11 -11 -7 -10 -12 -6 -9 -3 -5 -3 -5 -9 -8 -14 -12 -5 -10 -8 -8 -4 -8 -9 -7 -5 -4 -10 -2 -4 -6 -5 -9 -5 -11 -8 -9 -9 -2 -5 -8 -7 -9 -7 -8 -8 -3 -3 -14 -3 -4 -6 -2 -4 -2 -2 -2 -9 -7 -4 -4 -8 -8 -4 -4 -7 -6 -3 -4 -5 -2 -5 -3 -7 -3 -3 -5 -6 -5 -3 -3 -2 -2 -3 -4 -4 -6 -1 -6 -3 -3 -3 -6 -3 -3 -7 -3 -8 -7 -3 -4 -3 -3 -3 -4 -5 -5 -3 -6 -1 -2 -0 -2 -10 -6 -1 -1 -1 -4 -5 -6 -2 -3 -1 -6 -5 -9 -3 -2 -1 -1 -3 -2 -4 -4 -5 -1 -2 -4 -3 -8 -3 -1 -5 -2 -2 -4 -1 -5 -3 -2 -2 -4 -1 -4 -3 -1 -2 -3 -5 -2 -4 -1 -1 -1 -3 -2 -5 -4 -0 -2 -3 -3 -2 -1 -2 -2 -1 -5 -6 -3 -5 -1 -4 -3 -0 -0 -0 -3 -1 -1 -1 -1 -3 -3 -2 -3 -1 -6 -3 -2 -2 -3 -2 -4 -2 -3 -1 -1 -1 -1 -2 -2 -4 -6 -1 -4 -0 -4 -1 -2 -3 -4 -3 -0 -4 -2 -2 -0 -1 -5 -1 -3 -2 -2 -3 -3 -4 -3 -4 -3 -2 -3 -1 -5 -3 -2 -4 -5 -3 -2 -1 -2 -2 -2 -3 -3 -3 -5 -3 -1 -6 -2 -3 -0 -1 -5 -1 -0 -1 -1 -3 -0 -1 -3 -2 -0 -3 -3 -1 -1 -1 -4 -1 -1 -5 -3 -3 -3 -2 -4 -1 -0 -2 -3 -2 -6 -4 -5 -3 -1 -5 -3 -1 -2 -2 -1 -3 -1 -0 -0 -2 -4 -0 -5 -2 -3 -1 -3 -1 -3 -2 -3 -5 -2 -2 -2 -3 -2 -0 -0 -1 -2 -0 -1 -1 -2 -2 -2 -3 -2 -0 -4 -1 -3 -1 -0 -0 -3 -3 -4 -1 -1 -3 -5 -1 -2 -0 -1 -1 -2 -1 -2 -3 -3 -3 -0 -2 -3 -2 -1 -0 -1 -1 -3 -0 -3 -0 -2 -2 -3 -0 -1 -4 -1 -2 -1 -1 -6 -1 -0 -3 -0 -5 -2 -1 -4 -3 -0 -2 -3 -2 -2 -2 -2 -3 -4 -5 -4 -1 -2 -2 -3 -3 -0 -0 -1 -0 -2 -1 -2 -1 -3 -0 -0 -0 -2 -1 -0 -3 -2 -3 -1 -0 -2 -2 -1 -0 -1 -4 -1 -5 -0 -2 -0 -3 -0 -0 -1 -2 -0 -2 -0 -2 -1 -3 -4 -3 -0 -0 -3 -3 -2 -2 -2 -2 -1 -4 -2 -4 -1 -0 -3 -1 -2 -0 -0 -0 -5 -1 -7 -1 -1 -1 -1 -4 -1 -1 -0 -0 -2 -2 -0 -4 -5 -4 -5 -5 -4 -5 -5 -6 -11 -5 -4 -4 -4 -8 -4 -6 -7 -6 -4 -3 -3 -4 -1 -2 -3 -1 -3 -4 -1 -3 -4 -1 -2 -2 -0 -2 -3 -3 -2 -4 -0 -3 -4 -3 -6 -2 -6 -5 -2 -1 -2 -1 -1 -3 -4 -3 -2 -2 -4 -1 -2 -0 -2 -2 -0 -1 -1 -1 -3 -0 -4 -1 -3 -1 -2 -0 -0 -0 -3 -2 -2 -4 -2 -3 -5 -3 -2 -4 -2 -3 -4 -2 -1 -2 -3 -4 -1 -2 -0 -2 -0 -4 -1 -1 -0 -2 -2 -2 -2 -3 -1 -2 -1 -4 -1 -3 -4 -2 -7 -2 -1 -3 -1 -1 -2 -1 -3 -0 -3 -1 -1 -1 -2 -3 -1 -0 -1 -1 -1 -3 -1 -2 -1 -1 -3 -1 -0 -0 -0 -1 -1 -1 -2 -1 -0 -2 -1 -2 -1 -1 -2 -2 -3 -2 -1 -1 -1 -1 -1 -3 -5 -4 -1 -1 -3 -1 -1 -2 -0 -4 -4 -0 -3 -2 -2 -1 -2 -2 -3 -1 -0 -0 -2 -3 -1 -1 -3 -1 -1 -4 -1 -3 -2 -2 -4 -5 -0 -3 -1 -0 -1 -5 -4 -1 -3 -3 -0 -4 -2 -4 -3 -0 -6 -2 -3 -6 -4 -2 -1 -5 -3 -3 -4 -1 -5 -2 -2 -3 -4 -3 -1 -4 -3 -3 -3 -3 -1 -1 -2 -1 -1 -1 -2 -2 -0 -3 -2 -5 -0 -3 -4 -4 -2 -1 -0 -3 -2 -2 -2 -4 -4 -5 -1 -4 -2 -1 -3 -2 -0 -0 -2 -3 -3 -0 -1 -3 -3 -1 -3 -1 -3 -3 -3 -0 -2 -6 -3 -3 -1 -2 -7 -1 -6 -4 -1 -5 -1 -3 -4 -1 -1 -0 -4 -1 -5 -2 -2 -2 -2 -0 -0 -3 -2 -1 -4 -2 -2 -2 -3 -2 -2 -1 -2 -2 -0 -6 -1 -4 -3 -5 -5 -4 -4 -2 -1 -4 -1 -3 -4 -4 -2 -6 -6 -8 -2 -4 -3 -1 -5 -3 -4 -8 -3 -4 -7 -7 -8 -7 -6 -4 -2 -5 -1 -5 -10 -5 -2 -5 -6 -5 -3 -4 -5 -6 -8 -8 -9 -6 -7 -4 -6 -6 -5 -8 -6 -8 -6 -6 -12 -13 -10 -9 -12 -7 -6 -13 -14 -8 -16 -16 -10 -12 -17 -13 -14 -11 -17 -13 -19 -17 -21 -15 -15 -14 -23 -18 -14 -12 -12 -17 -15 -14 -21 -14 -23 -9 -17 -14 -17 -27 -16 -12 -17 -12 -20 -11 -18 -18 -15 -10 -13 -25 -15 -22 -21 -14 -22 -19 -20 -17 -18 -16 -20 -21 -17 -17 -13 -23 -23 -12 -16 -17 -13 -18 -20 -26 -14 -20 -18 -11 -27 -17 -12 -16 -19 -7 -13 -12 -13 -14 -12 -13 -11 -17 -14 -11 -15 -9 -14 -11 -15 -11 -13 -16 -18 -9 -11 -7 -9 -11 -11 -11 -8 -19 -10 -7 -12 -9 -19 -6 -8 -11 -12 -9 -7 -8 -14 -9 -11 -10 -13 -8 -8 -12 -10 -7 -10 -8 -10 -10 -7 -9 -10 -7 -10 -10 -12 -15 -9 -12 -16 -13 -14 -9 -8 -14 -8 -8 -9 -12 -20 -16 -14 -13 -15 -10 -10 -7 -14 -8 -11 -7 -8 -14 -13 -13 -16 -14 -16 -19 -15 -9 -14 -13 -15 -22 -26 -22 -21 -23 -22 -25 -27 -59 -49 -75 -81 -133 -222 -233 -358 -441 -586 -743 -755 -835 -933 -961 -949 -879 -831 -639 -535 -477 -329 -276 -212 -197 -141 -176 -204 -297 -387 -503 -677 -778 -1008 -1199 -1369 -1523 -1618 -1619 -1525 -1526 -1304 -1073 -979 -700 -582 -398 -292 -174 -158 -80 -73 -39 -19 -23 -20 -19 -18 -13 -7 -10 -18 -14 -8 -9 -12 -8 -11 -7 -7 -6 -7 -6 -8 -6 -2 -7 -9 -10 -7 -8 -7 -7 -6 -3 -5 -8 -8 -0 -5 -11 -2 -6 -7 -7 -1 -1 -7 -2 -6 -3 -3 -6 -2 -7 -3 -6 -6 -4 -4 -5 -4 -3 -4 -6 -5 -5 -4 -5 -8 -6 -4 -2 -3 -1 -0 -4 -7 -5 -8 -1 -5 -3 -8 -9 -6 -10 -4 -2 -6 -5 -2 -7 -4 -4 -7 -10 -6 -6 -4 -4 -4 -10 -7 -6 -4 -7 -4 -7 -8 -9 -5 -11 -9 -9 -3 -10 -4 -9 -16 -4 -13 -9 -10 -8 -11 -9 -4 -12 -7 -12 -6 -17 -9 -13 -10 -7 -10 -15 -12 -12 -7 -6 -6 -11 -10 -14 -12 -14 -10 -11 -12 -12 -15 -14 -9 -14 -12 -14 -11 -22 -24 -36 -42 -66 -77 -101 -123 -133 -169 -223 -250 -255 -300 -291 -309 -328 -290 -265 -281 -250 -215 -157 -147 -113 -90 -80 -53 -39 -32 -30 -12 -16 -12 -8 -9 -5 -5 -4 -6 -3 -5 -5 -8 -6 -15 -11 -12 -16 -12 -19 -26 -33 -42 -46 -59 -60 -63 -84 -63 -70 -92 -66 -60 -50 -46 -38 -32 -40 -33 -22 -21 -12 -12 -9 -15 -10 -7 -2 -2 -1 -3 -0 -1 -1 -1 -0 -1 -3 -0 -0 -0 -1 -0 -1 -1 -0 -0 -0 -1 -0 -1 -1 -0 -2 -1 -2 -1 -4 -0 -1 -2 -0 -1 -1 -0 -1 -0 -0 -1 -0 -0 -1 -0 -0 -3 -2 -0 -1 -1 -0 -0 -1 -0 -2 -0 -0 -0 -1 -0 -1 -0 -0 -1 -2 -1 -1 -0 -1 -0 -0 -2 -1 -0 -0 -1 -0 -2 -0 -1 -0 -0 -1 -1 -1 -1 -1 -1 -1 -1 -0 -2 -1 -0 -1 -0 -1 -0 -0 -1 -0 -1 -0 -0 -0 -1 -1 -0 -1 -0 -0 -1 -1 -0 -2 -0 -1 -1 -0 -1 -0 -0 -0 -0 -1 -1 -1 -0 -2 -0 -1 -1 -0 -0 -0 -0 -0 -1 -0 -0 -1 -0 -1 -0 -0 -1 -0 -0 -0 -0 -1 -0 -0 -0 -0 -1 -1 -0 -0 -1 -2 -0 -1 -2 -0 -0 -0 -1 -2 -1 -0 -0 -0 -1 -0 -0 -0 -0 -0 -0 -0 -0 -0 -1 -0 -0 -0 -1 -1 -1 -0 -0 -1 -0 -1 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -1 -1 -0 -0 -1 -0 -0 -1 -1 -0 -0 -2 -4 -4 -3 -3 -10 -7 -8 -13 -19 -18 -18 -26 -23 -21 -16 -18 -12 -11 -9 -15 -9 -9 -5 -2 -2 -2 -3 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -1 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -1 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -1 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -1 -0 -1 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -<> -<> -RESC=?; Reset Configuration -CLCK=80; 20MHz/80MHz -TPEA=9.600; Peaking Time -GAIF=0.9312; Fine Gain -GAIN=21.162; Total Gain (Analog * Fine) -RESL=204; Detector Reset Lockout -TFLA=0.200; Flat Top -TPFA=50; Fast Channel Peaking Time -PURE=OFF; PUR Interval On/Off -RTDE=OFF; RTD On/Off -MCAS=NORM; MCA Source -MCAC=2048; MCA/MCS Channels -SOFF=OFF; Set Spectrum Offset -AINP=POS; Analog Input Pos/Neg -INOF=DEF; Input Offset -GAIA=15; Analog Gain Index -CUSP=0; Non-Trapezoidal Shaping -PDMD=NORM; Peak Detect Mode (Min/Max) -THSL=0.585; Slow Threshold -TLLD=OFF; LLD Threshold -THFA=230.00; Fast Threshold -DACO=SHAPED; DAC Output -DACF=50; DAC Offset -RTDS=0; RTD Sensitivity -RTDT=0.00; RTD Threshold -BLRM=1; BLR Mode -BLRD=3; BLR Down Correction -BLRU=0; BLR Up Correction -AUO1=SCA8; AUX_OUT Selection -PRET=OFF; Preset Time -PRER=1800.000; Preset Real Time -PREC=OFF; Preset Counts -PRCL=1; Preset Counts Low Threshold -PRCH=8191; Preset Counts High Threshold -HVSE=-110; HV Set -TECS=220; TEC Set -PAPZ=OFF; Pole-Zero -PAPS=8.5; Preamp 8.5/5 (N/A) -SCOE=FA; Scope Trigger Edge -SCOT=12; Scope Trigger Position -SCOG=1; Digital Scope Gain -MCSL=1; MCS Low Threshold -MCSH=8191; MCS High Threshold -MCST=0.00; MCS Timebase -AUO2=ICR; AUX_OUT2 Selection -TPMO=OFF; Test Pulser On/Off -GPED=RI; G.P. Counter Edge -GPIN=AUX1; G.P. Counter Input -GPME=ON; G.P. Counter Uses MCA_EN? -GPGA=ON; G.P. Counter Uses GATE? -GPMC=ON; G.P. Counter Cleared With MCA Counters? -MCAE=OFF; MCA/MCS Enable -VOLU=OFF; Speaker On/Off -CON1=DAC; Connector 1 -CON2=AUXOUT2; Connector 2 -<> -<> -Device Type: PX5 -Serial Number: 2264 -Firmware: 6.07 Build: 3 -FPGA: 6.02 -Fast Count: 17811 -Slow Count: 87182 -Accumulation Time: 741.600000 -Real Time: 742.151000 -Dead Time: -HV Volt: -110V -TEC Temp: 221K -Board Temp: 37C -<> diff --git a/XRA/PlotData.py b/XRA/PlotData.py deleted file mode 100644 index 4c002aa..0000000 --- a/XRA/PlotData.py +++ /dev/null @@ -1,57 +0,0 @@ -#RiP -from matplotlib.pylab import * -import matplotlib.pyplot as plt -import csv - -def PlotData(File): - """ - Plots yield vs channel data from our .mca file - - INPUTS: "FileName.mca" - OUTPUTS: yield vs channel plot - """ - - with open(File, 'r', encoding='latin1') as file: - reader = csv.reader(file, delimiter="\n", skipinitialspace=True) - data = list(reader) - #print(data) - x = [] - y = [] - aux = [] - time=float(data[7][0][data[7][0].find('- ')+len('- '):]) - end=[i for i in range(len(data)) if data[i]== ['<>']][-1] - #print(end) - for i in range(12,end): # len(data)-1 - aux.append(data[i][0].split()) - for i in range(len(aux)): - #x.append(float(0.004482*i-0.105144)) ## energy calibraion needs to be corrected - x.append(float(i)) ## axes in channel - y.append(float(aux[i][0])/time) - - fig, ax = plt.subplots() - ax.plot(x,y,'*-', color ='xkcd:black', label=(str(File))) - #ax.semilogy(x,y,'^', color ='xkcd:purple', label=(str(File))) - legend = ax.legend(loc="upper right",ncol=2, shadow=False,fancybox=True,framealpha = 0.0,fontsize=20) - legend.get_frame().set_facecolor('#DAEBF2') - tick_params(axis='both', which='major', labelsize=22) - ##xlabel('Energy (MeV)',fontsize=22) - xlabel('Channel',fontsize=22) - ylabel('Count rate ($\\rm{s}^{\\rm{-1}}$)', fontsize=22) - #yscale('log') - #grid() - show() - - return -################################################## - -PlotData('Data/NoFilm_2h_17Jul_CuSource.mca') -PlotData('Data/CuSource_01Aug.mca') -PlotData('Data/Al_foil_CuSource_01Aug.mca') -#PlotData('Data/NoFilm_for_C12_4h_2.mca') - - - - - - - diff --git a/XRA/additional_draft b/XRA/additional_draft deleted file mode 100644 index 332a580..0000000 --- a/XRA/additional_draft +++ /dev/null @@ -1,32 +0,0 @@ -Welcome to ARC-TF! - -Workflow #Aysu made changes - -The program supports four different types of tabs, each with a distinct purpose. The Final Results Tab is a special tab that consolidates and displays all results generated within the Calibration Analysis and Material Analysis tabs. This tab cannot be created or deleted manually by the user, as it is automatically maintained by the program. Its primary function is to provide an overview of the outcomes produced in the other analysis tabs. -The Calibration Analysis Tabs are dedicated to performing calibration-related computations. Users are free to create and delete these tabs depending on their needs. Each calibration tab offers a set of options and tools specific to calibration workflows. -Similarly, the Material Analysis Tabs are designed for performing analyses on different film materials. As with the calibration tabs, users can freely create or delete these tabs as required. The options available within a material analysis tab differ from those found in calibration tabs. -The final type, the XRA Analysis Tab, is a recently added feature. Unlike the other three tab types, the XRA Analysis Tab is fully independent and does not interact with the Final Results Tab, Calibration Analysis Tabs, or Material Analysis Tabs. It provides its own dedicated functionality for XRA-specific analysis. - - - - -XRA Tab: #Aysu added - -The XRA Analysis Tab is independent of all other tab types and is specifically designed for film thickness determination. When using this tab, the first required step is to plot the Source Data, as the program will not allow the user to upload or plot any other data beforehand. Once the Source Data has been provided, the user can then upload and plot the Source + Film Data, as well as optionally include Background Data. From the resulting plots, emission lines can be identified and subsequently used during the film thickness determination process. Unlike other analysis techniques within the program, the XRA Analysis Tab supports only a single method for thickness determination: the ROI Select Algorithm. - - - - -ROI Select Algorithm: #Aysu added - -The ROI (Region of Interest) Selection Algorithm is applied across three different tabs of the application: Calibration, Material, and XRA. Each of these tabs makes use of the algorithm in slightly different ways, depending on the type of analysis being performed. -In the Calibration and Material tabs, users can select up to six regions of interest. For each selected ROI, the algorithm calculates three key parameters: the centroid, the sigma, and the error associated with the peak. These values are determined using traditional methods, which directly analyze the data within the chosen regions. As a result, the user can extract up to six sets of centroid, sigma, and error values corresponding to the selected peaks. -The XRA tab, by contrast, allows for the selection of only one ROI, reflecting the different requirements of its functionality. In this tab, a Gaussian fit is applied to the selected emission line. From this fit, the algorithm derives the centroid, sigma, and the area under the curve. The fitting process is carried out for Source, Source + Film, and if available for Background data. The calculated area represents the integrated area under the Gaussian curve and corresponds to the intensity of the selected emission line. - - - -The Thickness Calculation Algorithm for XRA: #Aysu added -After the necessary parameters are defined for the XRA tab, the user has two options for determining the film thickness: Default and User. -When the Default option is selected, the user must specify the film material and the source that were used during the experiment. These values are then retrieved from the database, and the program automatically applies the corresponding parameters for the thickness calculation. -When the User option is selected, the user directly needs to enter the linear attenuation coefficient of the material. This option is particularly useful when the film material used in the experiment is not included in the default database. -In both cases, once the Run button is clicked, the interface calculates and displays the film thickness together with the associated uncertainty. diff --git a/XRA/testGaussianFit.py b/XRA/testGaussianFit.py deleted file mode 100644 index 463c074..0000000 --- a/XRA/testGaussianFit.py +++ /dev/null @@ -1,142 +0,0 @@ -from thickness import film_thickness, uncertainty -import numpy as np -from sympy import sympify -from scipy.optimize import curve_fit -from matplotlib import pyplot as plt -from math import erf, sqrt, pi -import csv - - -def load_mca_data(filename): - with open(filename, 'r', encoding='latin1') as file: - lines = file.readlines() - # Finding where the data starts and ends - start = 12 - end = [i for i, line in enumerate(lines) if '<>' in line][0] - # Reading data lines - data = [] - for line in lines[start:end]: - parts = line.strip().split() - if parts: - data.append(float(parts[0])) - return data - - -def get_measurement_time(filename): - - with open(filename, 'r', encoding='latin1') as file: - reader = csv.reader(file, delimiter="\n", skipinitialspace=True) - data = list(reader) - time_str = data[7][0] #8th line - time = float(time_str[time_str.find('- ') + 2:]) - return time - - -time_source = get_measurement_time('Data/NoFilm_2h_17Jul_CuSource.mca') -time_film = get_measurement_time('Data/Al_foil_CuSource_01Aug.mca') -time_bkg = get_measurement_time('Data/Combined_bkg_Internship.txt') - -print(f"Measurement time (source): {time_source} s") -print(f"Measurement time (film): {time_film} s") -print(f"Measurement time (background): {time_bkg} s") - - -source_data = load_mca_data('Data/NoFilm_2h_17Jul_CuSource.mca') -source_film_data = load_mca_data('Data/Al_foil_CuSource_01Aug.mca') -bkg_data = load_mca_data('Data/Combined_bkg_Internship.txt') - -# Setting ROI and attenuation coefficient -x1 = int(input("Enter the start channel: ")) # start channel -x2 = int(input("Enter the end channel: ")) # end channel -mu = float(sympify(input("Enter the attenuation coefficient in nm^-1: "))) # attenuation coefficient (nm^-1) - -x_range = list(range(x1, x2 + 1)) -y_source = source_data[x1:x2 + 1] -y_film = source_film_data[x1:x2 + 1] -y_bkg = bkg_data[x1:x2 + 1] - -m = 0.030826941169 -b = 0.092673711109335 -energy_range = [m * ch + b for ch in x_range] #converting channels to energy -x_smooth = np.linspace(x1, x2, 500) -energy_smooth = [m * ch + b for ch in x_smooth] - -# Define the Gaussian function -def gaussian(x, A, x0, sigma, B): - return A * np.exp(-(x - x0)**2 / (2 * sigma**2)) + B - -# Fit source data -popt_source, _ = curve_fit(gaussian, x_range, y_source, p0=[max(y_source), x_range[np.argmax(y_source)], 1, 0]) -A0, x0_0, sigma0, B0 = popt_source - -print(f"Source centroid: {x0_0:.1f}") - -# Fit film data -popt_film, _ = curve_fit(gaussian, x_range, y_film, p0=[max(y_film), x_range[np.argmax(y_film)], 1, 0]) -A1, x0_1, sigma1, B1 = popt_film - -# Fit background data -popt_bkg, _ = curve_fit(gaussian, x_range, y_bkg, p0=[max(y_bkg), x_range[np.argmax(y_bkg)], 1, 0]) -A2, x0_2, sigma2, B2 = popt_bkg - -def gaussian_integral_erf(A, x0, sigma, B, x1, x2): - erf_part = 0.5 * (erf((x2 - x0) / (sqrt(2) * sigma)) - erf((x1 - x0) / (sqrt(2) * sigma))) - area_gaussian = A * sigma * sqrt(2 * pi) * erf_part - area_below= B * (x2 - x1) - return area_gaussian + area_below - -# Calculate Gaussian integrals -N0 = gaussian_integral_erf(*popt_source, x1, x2) -N = gaussian_integral_erf(*popt_film, x1, x2) -Nb = gaussian_integral_erf(*popt_bkg, x1, x2) - - -# Film thickness calculation -thickness = film_thickness(N, N0, Nb, mu) -print(f"Film thickness: {round(thickness)} nm") -uncertainty_value = uncertainty(N, N0, Nb, mu, time_source, time_film, time_bkg) -print(f"Uncertainty: {uncertainty_value:.2f}") -print(f"Full answer: {thickness:.2f} \u00B1 {uncertainty_value:.2f} nm") - -# Plot fits -# Plot 1: Source (no film) -plt.figure() -plt.plot(x_range, y_source, '*', label='Source', color='blue') -plt.plot(x_smooth, gaussian(x_smooth, *popt_source), '--', label='Gaussian Fit (Source)', color='cyan') -plt.xlabel('Channel') -plt.ylabel('Counts') -plt.title('Gaussian Fit - Source (No Film)') -plt.legend() -plt.grid(True) - -# Plot 2: Film -plt.figure() -plt.plot(x_range, y_film,'x', label='Source + Film', color = 'green') -plt.plot(x_smooth, gaussian(x_smooth, *popt_film), '--', label='Gaussian Fit (Source + Film)', color='lime') -plt.xlabel('Channel') -plt.ylabel('Counts') -plt.title('Gaussian Fit - Source + Film') -plt.legend() -plt.grid(True) - -#Plot 3: Source - counts vs energy -plt.figure() -plt.plot(energy_range, y_source, '*', label='Source (Energy)', color='navy') -plt.plot(energy_smooth, gaussian(x_smooth, *popt_source), '--', label='Gaussian Fit', color='dodgerblue') -plt.xlabel('Energy (keV)') -plt.ylabel('Counts') -plt.title('Gaussian Fit - Source (No Film) [vs Energy]') -plt.legend() -plt.grid(True) - -# Plot 4: Film - counts vs energy -plt.figure() -plt.plot(energy_range, y_film, 'x', label='Source + Film (Energy)', color='darkgreen') -plt.plot(energy_smooth, gaussian(x_smooth, *popt_film), '--', label='Gaussian Fit', color='limegreen') -plt.xlabel('Energy (keV)') -plt.ylabel('Counts') -plt.title('Gaussian Fit - Source + Film [vs Energy]') -plt.legend() -plt.grid(True) - -plt.show() \ No newline at end of file