def draw_pulser(self, bin_size=1000, cut=..., show=True): x = arange(self.NEntries)[cut] return self.Run.Draw.efficiency(x, self.get_pulser()[cut], make_bins(0, max(x), bin_size), draw_opt='alx', show=show)
def get_pulser_rate(self): x = self.get_pulser() values = get_hist_vec( self.Run.Draw.profile(arange(x.size), x, make_bins(0, x.size, 100), show=False)) return mean_sigma(values[values < mean(x) + .2])[0]
def draw_hits(self, bin_size=1000, cut=..., show=True): x = arange(self.NEntries)[cut] self.Draw(self.Draw.make_graph_from_profile( self.Draw.profile(x, self.NHits[cut], make_bins(0, max(x), bin_size), show=False)), show=show, draw_opt='alx')
def draw_vs_trigphase(self, **kwargs): x, e = self.get_tree_vec( ['trigger_phase[1]', self.get_var()], self.Cut.exclude('trigger_phase')) return self.Draw.efficiency( x, e, make_bins(-.5, 10), **prep_kw(kwargs, title='Trigger Phase Efficiency', x_tit='Trigger Phase', x_range=[-1, 10], draw_opt='bap', file_name='EffVsTP'))
def get_beam_interruptions(self, bin_size=100): x = self.get_pulser() values = array( get_hist_vec( self.Run.Draw.profile(arange(x.size), x, make_bins(0, x.size, bin_size, last=True), show=False)) < mean(x) + .1) high = where(values == 0)[0] values[high[high > 0] - 1] = False # set bins left and right also to zero values[high[high < high.size - 1] + 1] = False return values.repeat(bin_size)[:self.NEntries]
def draw(self, off=0, bin_size=None, show=True): p = roll(self.get_pulser(), off) & self.get_beam_interruptions() x, y = arange(self.NEntries)[p], self.load_n_hits()[p] x, y = get_hist_vecs( self.Run.Draw.profile( x, y, make_bins( 0, max(x), int( choose(bin_size, self.BinSize / self.get_pulser_rate().n))), show=0)) return self.Draw.graph(x, y, x_tit='Event Number', y_tit='N Hits @ Pulser', w=2, show=show, draw_opt='alx', y_range=ax_range(0, max(max(y).n, 5), .1, .3))
def get_time_bins(self, off=0, bin_size=1000): return make_bins( [self.Run.get_time_at_event(e) for e in self.get_xbins(bin_size)])