diff --git a/jfcal/Plotter.py b/jfcal/Plotter.py index a4e5273..884b006 100644 --- a/jfcal/Plotter.py +++ b/jfcal/Plotter.py @@ -7,6 +7,8 @@ from jfcal.utils import create_histogram_from_data import matplotlib.pyplot as plt +import numpy as np + from enum import Enum class Parameters(Enum): @@ -81,7 +83,7 @@ class Plotter: The axis with the histogram and fitted function plot. """ - function_parameters = self.calibration.fit_results["par"][pixel[0],pixel[1],:] + function_parameters = self.calibration.fit_result["par"][pixel[0],pixel[1],:] variable_name_width = 8 variable_width = 8 @@ -125,21 +127,21 @@ class Plotter: """ match parameter_name: case Parameters.ELASTIC_SCATTERING_INTERCEPT.value: - plot_parameter(self.calibration.fit_results["par"][:, :, 0], parameter_name="Elastic scattering intercept", suppress_outliers=suppress_outliers) + plot_parameter(self.calibration.fit_result["par"][:, :, 0], parameter_name="Elastic scattering intercept", suppress_outliers=suppress_outliers) case Parameters.ELASTIC_SCATTERING_SLOPE.value: - plot_parameter(self.calibration.fit_results["par"][:, :, 1], parameter_name="Elastic scattering slope", suppress_outliers=suppress_outliers) + plot_parameter(self.calibration.fit_result["par"][:, :, 1], parameter_name="Elastic scattering slope", suppress_outliers=suppress_outliers) case Parameters.K_ALPHA_MEAN.value: - plot_parameter(self.calibration.fit_results["par"][:, :, 2], parameter_name="Cu K_alpha mean", suppress_outliers=suppress_outliers) + plot_parameter(self.calibration.fit_result["par"][:, :, 2], parameter_name="Cu K_alpha mean", suppress_outliers=suppress_outliers) case Parameters.SIGMA.value: - plot_parameter(self.calibration.fit_results["par"][:, :, 3], parameter_name="Charge sharing sigma", suppress_outliers=suppress_outliers) + plot_parameter(self.calibration.fit_result["par"][:, :, 3], parameter_name="Charge sharing sigma", suppress_outliers=suppress_outliers) case Parameters.K_ALPHA_AMPLITUDE.value: - plot_parameter(self.calibration.fit_results["par"][:, :, 4], parameter_name="Cu K_alpha amplitude", suppress_outliers=suppress_outliers) + plot_parameter(self.calibration.fit_result["par"][:, :, 4], parameter_name="Cu K_alpha amplitude", suppress_outliers=suppress_outliers) case Parameters.RATIO_AMPLITUDE_CHARGE_SHARING.value: - plot_parameter(self.calibration.fit_results["par"][:, :, 5], parameter_name="Charge sharing amplitude ratio", suppress_outliers=suppress_outliers) + plot_parameter(self.calibration.fit_result["par"][:, :, 5], parameter_name="Charge sharing amplitude ratio", suppress_outliers=suppress_outliers) case Parameters.RATIO_MEAN_K_BETA.value: - plot_parameter(self.calibration.fit_results["par"][:, :, 6], parameter_name="Cu K_beta mean ratio", suppress_outliers=suppress_outliers) + plot_parameter(self.calibration.fit_result["par"][:, :, 6], parameter_name="Cu K_beta mean ratio", suppress_outliers=suppress_outliers) case Parameters.RATIO_AMPLITUDE_K_BETA.value: - plot_parameter(self.calibration.fit_results["par"][:, :, 7], parameter_name="Cu K_beta amplitude ratio", suppress_outliers=suppress_outliers) + plot_parameter(self.calibration.fit_result["par"][:, :, 7], parameter_name="Cu K_beta amplitude ratio", suppress_outliers=suppress_outliers) case _: raise ValueError(f"Unknown parameter name: {parameter_name}. Valid options are: {[param.value for param in Parameters]}") @@ -169,37 +171,37 @@ class Plotter: match parameter_name: case Parameters.ELASTIC_SCATTERING_INTERCEPT.value: - data = self.calibration.fit_results["par"][:, :, 0].flatten() + data = self.calibration.fit_result["par"][:, :, 0].flatten() histogram = create_histogram_from_data(data, bin_range = bin_range, bin_width = bin_width) - ax = plot_histogram(histogram, histogram.axes[0].edges[:], xlabel=r"Elastic scattering intercept", axis=axis) + ax = plot_histogram(histogram, histogram.axes[0].edges[:], xlabel=r"Elastic scattering intercept", label = f"Mean: {np.mean(data):.3f}\nStd: {np.std(data):.3f}", axis=axis) case Parameters.ELASTIC_SCATTERING_SLOPE.value: - data = self.calibration.fit_results["par"][:, :, 1].flatten() + data = self.calibration.fit_result["par"][:, :, 1].flatten() histogram = create_histogram_from_data(data, bin_range = bin_range, bin_width = bin_width) - ax = plot_histogram(histogram, histogram.axes[0].edges[:], xlabel=r"Elastic scattering slope", axis=axis) + ax = plot_histogram(histogram, histogram.axes[0].edges[:], xlabel=r"Elastic scattering slope", label = f"Mean: {np.mean(data):.3f}\nStd: {np.std(data):.3f}", axis=axis) case Parameters.K_ALPHA_MEAN.value: - data = self.calibration.fit_results["par"][:, :, 2].flatten() + data = self.calibration.fit_result["par"][:, :, 2].flatten() histogram = create_histogram_from_data(data, bin_range = bin_range, bin_width = bin_width) - ax = plot_histogram(histogram, histogram.axes[0].edges[:], xlabel=r"$k_\alpha$ mean", axis=axis) + ax = plot_histogram(histogram, histogram.axes[0].edges[:], xlabel=r"$k_\alpha$ mean", label = f"Mean: {np.mean(data):.3f}\nStd: {np.std(data):.3f}", axis=axis) case Parameters.SIGMA.value: - data = self.calibration.fit_results["par"][:, :, 3].flatten() + data = self.calibration.fit_result["par"][:, :, 3].flatten() histogram = create_histogram_from_data(data, bin_range = bin_range, bin_width = bin_width) - ax = plot_histogram(histogram, histogram.axes[0].edges[:], xlabel=r"$\sigma$", axis=axis) + ax = plot_histogram(histogram, histogram.axes[0].edges[:], xlabel=r"$\sigma$", label = f"Mean: {np.mean(data):.3f}\nStd: {np.std(data):.3f}", axis=axis) case Parameters.K_ALPHA_AMPLITUDE.value: - data = self.calibration.fit_results["par"][:, :, 4].flatten() + data = self.calibration.fit_result["par"][:, :, 4].flatten() histogram = create_histogram_from_data(data, bin_range = bin_range, bin_width = bin_width) - ax = plot_histogram(histogram, histogram.axes[0].edges[:], xlabel=r"$k_\alpha$ amplitude", axis=axis) + ax = plot_histogram(histogram, histogram.axes[0].edges[:], xlabel=r"$k_\alpha$ amplitude", label = f"Mean: {np.mean(data):.3f}\nStd: {np.std(data):.3f}", axis=axis) case Parameters.RATIO_AMPLITUDE_CHARGE_SHARING.value: - data = self.calibration.fit_results["par"][:, :, 5].flatten() + data = self.calibration.fit_result["par"][:, :, 5].flatten() histogram = create_histogram_from_data(data, bin_range = bin_range, bin_width = bin_width) - ax = plot_histogram(histogram, histogram.axes[0].edges[:], xlabel=r"Ratio amplitude charge sharing", axis=axis) + ax = plot_histogram(histogram, histogram.axes[0].edges[:], xlabel=r"Ratio amplitude charge sharing", label = f"Mean: {np.mean(data):.3f}\nStd: {np.std(data):.3f}", axis=axis) case Parameters.RATIO_MEAN_K_BETA.value: - data = self.calibration.fit_results["par"][:, :, 6].flatten() + data = self.calibration.fit_result["par"][:, :, 6].flatten() histogram = create_histogram_from_data(data, bin_range = bin_range, bin_width = bin_width) - ax = plot_histogram(histogram, histogram.axes[0].edges[:], xlabel=r"Ratio $k_\beta$ mean", axis=axis) + ax = plot_histogram(histogram, histogram.axes[0].edges[:], xlabel=r"Ratio $k_\beta$ mean", label = f"Mean: {np.mean(data):.3f}\nStd: {np.std(data):.3f}", axis=axis) case Parameters.RATIO_AMPLITUDE_K_BETA.value: - data = self.calibration.fit_results["par"][:, :, 7].flatten() + data = self.calibration.fit_result["par"][:, :, 7].flatten() histogram = create_histogram_from_data(data, bin_range = bin_range, bin_width = bin_width) - ax = plot_histogram(histogram, histogram.axes[0].edges[:], xlabel=r"Ratio $k_\beta$ amplitude", axis=axis) + ax = plot_histogram(histogram, histogram.axes[0].edges[:], xlabel=r"Ratio $k_\beta$ amplitude", label = f"Mean: {np.mean(data):.3f}\nStd: {np.std(data):.3f}", axis=axis) case _: raise ValueError(f"Unknown parameter name: {parameter_name}. Valid options are: {[param.value for param in Parameters]}")