def plot_filter_output_histogram(self, fname=None): fname = self._fname(fname) figname = 'temps1.Simulation.plot_filter_output_histogram.' figname += fname.replace(' ', '_') fig, ax = plt.subplots(num=figname, clear=True) axr = ax.twinx() ax.set_title(fname.capitalize() + ' filter output distribution') ax.set_xlabel('Filter output value') ax.set_ylabel('Rate per bin [s$^{-1}$]') axr.set_ylabel('Fraction of S1 per bin [%]') x = self.values[fname]['dcr'] counts, bins = np.histogram(x, bins='auto') counts = counts / (self.nmc * self.T_sim * 1e-9) linenoise, = plot_histogram(ax, counts, bins, **self.plotkw['dcr']) x = self.values[fname]['s1'][self.signal[fname]['s1']] counts, bins = np.histogram(x, bins='auto') counts = counts * 100 / len(x) linesigpure, = plot_histogram(axr, counts, bins, **self.plotkw['s1']) N = len(x) x = self.values[fname]['all'][self.signal[fname]['all']] counts, bins = np.histogram(x, bins='auto') counts = counts * 100 / N linesig, = plot_histogram(axr, counts, bins, **self.plotkw['all']) textbox.textbox(axr, self.infotext(), loc='upper right') axr.legend([ linenoise, linesigpure, linesig, ], [ 'Fake rate (left scale)', 'Signal % (right scale)', 'Signal within noise (relative)', ], loc='upper left') ax.minorticks_on() axr.minorticks_on() aligntwin.alignYaxes([ax, axr], [0, 0]) ax.set_ylim(0, ax.get_ylim()[1]) axr.set_ylim(0, axr.get_ylim()[1]) ax.grid(True, which='major', linestyle='--') ax.grid(True, which='minor', linestyle=':') fig.tight_layout() return fig
def plot_filter_output_histogram(self, fname=None): """ Plot the histogram of the filter peak value of S1 candidates for noise and signal. Parameters ---------- fname : str, optional The filter. Optional if there's only one filter. Return ------ fig : matplotlib figure The figure where the plot is drawn. """ fname = self._fname(fname) figname = 'temps1.Simulation.plot_filter_output_histogram.' figname += fname.replace(' ', '_') fig, ax = plt.subplots(num=figname, clear=True) axr = ax.twinx() ax.set_title(fname.capitalize() + ' filter output distribution') ax.set_xlabel('Filter output value') ax.set_ylabel('Rate per bin [s$^{-1}$]') axr.set_ylabel('Fraction of S1 per bin [%]') x = self.values[fname]['dcr'] counts, bins = np.histogram(x, bins='auto') counts = counts / (self.nmc * self.T * 1e-9) linenoise, = plot_histogram(ax, counts, bins, **self.plotkw['dcr']) x = self.values[fname]['all'][self.signal[fname]['all']] counts, bins = np.histogram(x, bins='auto') counts = counts * 100 / len(x) linesig, = plot_histogram(axr, counts, bins, **self.plotkw['all']) x = self.values[fname]['s1'][self.signal[fname]['s1']] counts, bins = np.histogram(x, bins='auto') counts = counts * 100 / len(x) linesigpure, = plot_histogram(axr, counts, bins, **self.plotkw['s1']) textbox.textbox(axr, self.infotext(), loc='upper right', fontsize='small') axr.legend([ linenoise, linesig, linesigpure, ], [ 'Fake rate (left scale)', 'Signal % (right scale)', 'Signal without noise', ], loc='upper left') ax.minorticks_on() axr.minorticks_on() aligntwin.alignYaxes([ax, axr], [0, 0]) ax.set_ylim(0, ax.get_ylim()[1]) axr.set_ylim(0, axr.get_ylim()[1]) ax.grid(True, which='major', linestyle='--') ax.grid(True, which='minor', linestyle=':') fig.tight_layout() return fig