diff --git a/PeakOTron.py b/PeakOTron.py index bdc74dbfb243f396c074b9c8d73c321736911f7e..fd7e553f3d71487c3924ea651e24b9e9caa6e697 100644 --- a/PeakOTron.py +++ b/PeakOTron.py @@ -1347,20 +1347,25 @@ class PeakOTron: self.scaler = RobustScaler() data_s = np.squeeze(self.scaler.fit_transform(data.reshape(-1,1))) - if(bw is None): + if(bw is None): ppf = self.EmpiricalPPF(data_s) if(bin_method == "knuth"): - bw_s, bins_s = knuth_bin_width(data_s[data_s<ppf(alpha)], return_bins=True) + bw_s = knuth_bin_width(data_s[data_s<ppf(alpha)]) elif(bin_method=="freedman"): - bw_s, bins_s = freedman_bin_width(data_s[data_s<ppf(alpha)], return_bins=True) + bw_s = freedman_bin_width(data_s[data_s<ppf(alpha)]) elif(bin_method=="scott"): - bw_s, bins_s = scott_bin_width(data_s[data_s<ppf(alpha)], return_bins=True) + bw_s = scott_bin_width(data_s[data_s<ppf(alpha)]) else: raise Exception ("Please specify a bin width by setting 'bw' or choose a method from 'knuth', 'freedman' or 'scott'") - nbins_s = len(bins_s) + + + nbins_s = np.ceil((data_s.max() - data_s.min()) / bw_s) + nbins_s = max(1, nbins_s) + bins_s = data_s.min() + bw_s * np.arange(nbins_s + 1) + bw = bw_s*self.scaler.scale_[0] nbins = np.ceil((data.max() - data.min()) / bw) @@ -1379,6 +1384,19 @@ class PeakOTron: nbins_s = np.ceil((data_s.max() - data_s.min()) / bw_s) nbins_s = max(1, nbins_s) bins_s = data_s.min() + bw_s * np.arange(nbins_s + 1) + + + else: + + bw_s = bw/self.scaler.scale_[0] + + nbins = np.ceil((data.max() - data.min()) / bw) + nbins = max(1, nbins) + bins = data.min() + bw * np.arange(nbins + 1) + + nbins_s = np.ceil((data_s.max() - data_s.min()) / bw_s) + nbins_s = max(1, nbins_s) + bins_s = data_s.min() + bw_s * np.arange(nbins_s + 1) @@ -1471,27 +1489,27 @@ class PeakOTron: pedestal = pedestal_s*self.scaler.scale_[0] + self.scaler.center_[0] est_gain = est_gain_s*self.scaler.scale_[0] - cond_ped_kde_s = (x_kde_s>pedestal_s - est_gain_s/2) - cond_ped_s = (x_s>pedestal_s - est_gain_s/2) - cond_ped = (x>pedestal - est_gain/2) - cond_ped_peaks = (x_peaks_s>pedestal_s - est_gain_s/2) + # cond_ped_kde_s = (x_kde_s>pedestal_s - est_gain_s/2) + # cond_ped_s = (x_s>pedestal_s - est_gain_s/2) + # cond_ped = (x>pedestal - est_gain/2) + # cond_ped_peaks = (x_peaks_s>pedestal_s - est_gain_s/2) - x_kde_s = x_kde_s[cond_ped_kde_s] - y_kde_s = y_kde_s[cond_ped_kde_s] - y_kde_err_s = y_kde_err_s[cond_ped_kde_s] + # x_kde_s = x_kde_s[cond_ped_kde_s] + # y_kde_s = y_kde_s[cond_ped_kde_s] + # y_kde_err_s = y_kde_err_s[cond_ped_kde_s] - x_s = x_s[cond_ped_s] - y_s = y_s[cond_ped_s] - y_err_s = y_err_s[cond_ped_s] + # x_s = x_s[cond_ped_s] + # y_s = y_s[cond_ped_s] + # y_err_s = y_err_s[cond_ped_s] - x_peaks_s = x_peaks_s[cond_ped_peaks] - y_peaks_s = y_peaks_s[cond_ped_peaks] - y_peaks_err_s = y_peaks_err_s[cond_ped_peaks] - x_widths_s = x_widths_s[cond_ped_peaks] + # x_peaks_s = x_peaks_s[cond_ped_peaks] + # y_peaks_s = y_peaks_s[cond_ped_peaks] + # y_peaks_err_s = y_peaks_err_s[cond_ped_peaks] + # x_widths_s = x_widths_s[cond_ped_peaks] - x = x[cond_ped] - y = y[cond_ped] - y_err = y_err[cond_ped] + # x = x[cond_ped] + # y = y[cond_ped] + # y_err = y_err[cond_ped]