def get_pixel_mask(self, pixels=None, exclude=True): p = make_list(self.load_mask('pixel') if pixels is None else pixels) string = ' || '.join( 'cluster_col[{n}]=={} && cluster_row[{n}]=={}'.format(n=self.N, *tup) for tup in p.reshape(p.size // 2, 2)) return '' if pixels is None and not exclude else Cut.invert( string) if exclude else string
def __init__(self, filepath: str): with open(filepath) as file: line_1 = file.readline() line_2 = file.readline() line_3 = file.readline() try: self.size = int(line_1) self.cuts = [None] for cut_size, cut_worth in zip(line_2.split(), line_3.split()): i = int(cut_size) p_i = int(cut_worth) self.cuts.append(Cut(i, p_i)) pass except ValueError: raise ValueError("file format error") finally: file.close()
def generate_saturated(self): cut_string = '!is_saturated[{ch}]'.format(ch=self.Channel) description = 'exclude {:.2f}% saturated events'.format(100. * self.find_n_saturated(Cut.invert(cut_string)) / self.Run.NEvents) return CutString('saturated', cut_string, description)
def get_pulser(self, beam_on=True): cut = self.generate_custom(include=['ped sigma', 'event range'], prnt=False) + Cut.invert(self.get('pulser')) cut += self.get('beam stops', warn=False) if beam_on else Cut.invert(self.generate_jump_cut()) return CutString('PulserBeam{}'.format('On' if beam_on else 'Off'), cut)
def get_bucket(self, all_cuts=False): cut = self.generate_custom(exclude=['bucket', 'bucket2'], prnt=False) if all_cuts else self.generate_custom(include=['pulser', 'ped sigma', 'event range'], prnt=False) return Cut.make('!bucket', cut + self.generate_bucket().invert())
def __init__(self, analysis): Cut.__init__(self, analysis) self.Channel = self.Ana.get_channel() self.generate_dut() self.ConsecutiveCuts = self.get_consecutive()
def __init__(self, analysis): Cut.__init__(self, analysis) self.N = self.DUT.Number + self.Run.NTelPlanes - 1 self.generate_dut() self.ConsecutiveCuts = self.get_consecutive()
def get_line_mask(self, var, lines=None, exclude=True): string = ' || '.join(f'cluster_{var}[{self.N}] == {line}' for line in ( self.load_mask('column') if lines is None else make_list(lines))) return '' if lines is None and not exclude else Cut.invert( string) if exclude else string
def get_var(self, sigma=None, plane=None, percent=False): var = f'(n_clusters[{choose(plane, self.N)}] > 0){" * 100" if percent else ""}' return Cut.to_string( self.Cut.generate_rhit(sigma) + Cut.make('', var)) if self.UseRhit else var
def init_cut(self): return Cut(self)