Exemplo n.º 1
0
def process(tf_r0_paths, pedestal_path, tf_path):
    pedestal = PedestalTargetCalib.from_tcal(pedestal_path)

    # Parse amplitudes from filepath
    amplitudes = []
    readers = []
    for path in tf_r0_paths:
        regex_ped = re.search(r".+VPED_(\d+).tio", path)
        amplitudes.append(int(regex_ped.group(1)))
        readers.append(TIOReader(path))

    # Instance TF class from first file
    tf = TFDC(readers[0].n_pixels, readers[0].n_samples - 32,
              readers[0].n_cells, amplitudes)

    desc0 = "Generating TF"
    it = zip(amplitudes, readers)
    n_amp = len(amplitudes)
    for amplitude, reader in tqdm(it, total=n_amp, desc=desc0):
        amplitude_index = tf.get_input_amplitude_index(amplitude)
        for iwf, wfs in enumerate(reader):
            if wfs.missing_packets:
                continue

            # Skip to next file when enough hits are reached
            if iwf % 1000 == 0:
                if (tf.hits[..., amplitude_index] > 100).all():
                    break

            tf.add_to_tf(pedestal.subtract_pedestal(wfs, wfs.first_cell_id),
                         wfs.first_cell_id, amplitude_index)

    tf.save(tf_path)
    def __init__(self, paths):
        lookup = []
        for path in paths:
            regex_r0 = re.search(r".+_tc([\d.]+)_tmc([\d.]+)_ped.tcal", path)
            temperature_chamber = float(regex_r0.group(1))
            temperature_primary = float(regex_r0.group(2))
            pedestal = PedestalTargetCalib.from_tcal(path)
            lookup.append(
                dict(
                    temperature_chamber=temperature_chamber,
                    temperature_primary=temperature_primary,
                    pedestal=pedestal,
                ))

        self.lookup = pd.DataFrame(lookup)
        self.lookup = self.lookup.set_index("temperature_primary")
Exemplo n.º 3
0
def process(tf_r0_paths, pedestal_path, tf_path, tf_class):
    pedestal = PedestalTargetCalib.from_tcal(pedestal_path)

    # Parse amplitudes from filepath
    amplitudes = []
    readers = []
    for path in tf_r0_paths:
        regex_ped = re.search(r".+_(-?\d+)_r0.tio", path)
        amplitudes.append(int(regex_ped.group(1)))
        readers.append(TIOReader(path))

    # Instance TF class from first file
    tf = tf_class(readers[0].n_pixels, readers[0].n_samples - 32,
                  readers[0].n_cells, amplitudes)
    if tf_class == TFACCrossCorrelation:
        # # Estimate range of peak positions
        # r = readers[np.abs(np.array(amplitudes) - 500).argmin()]
        # peak = r[0].mean(0).argmax()
        # tf.set_trange(peak - 5 - 32, peak + 5 - 32)
        tf.set_trange(6, 16)

    desc0 = "Generating TF"
    it = zip(amplitudes, readers)
    n_amp = len(amplitudes)
    for amplitude, reader in tqdm(it, total=n_amp, desc=desc0):
        amplitude_index = tf.get_input_amplitude_index(amplitude)
        for iwf, wfs in enumerate(tqdm(reader, total=reader.n_events)):
            if wfs.missing_packets:
                print("Skipping event")
                continue

            # Skip to next file when enough hits are reached
            if iwf % 1000 == 0:
                if (tf.hits[..., amplitude_index] > 100).all():
                    break

            cells = get_cell_ids_for_waveform(wfs.first_cell_id,
                                              reader.n_samples, reader.n_cells)
            wfs = wfs[:, 32:]
            wfs.first_cell_id = cells[32]
            tf.add_to_tf(pedestal.subtract_pedestal(wfs, wfs.first_cell_id),
                         wfs.first_cell_id, amplitude_index)

    tf.save(tf_path)
Exemplo n.º 4
0
    def __init__(self, paths):
        self.pedestal_instance = None

        temperature_list = []
        pedestal_list = []
        for path in paths:
            regex_r0 = re.search(r".+_tc([\d.]+)_tmc([\d.]+)_ped.tcal", path)
            temperature_primary = float(regex_r0.group(2))
            pedestal = PedestalTargetCalib.from_tcal(path)

            temperature_list.append(temperature_primary)
            pedestal_list.append(pedestal._pedestal)
            if self.pedestal_instance is None:
                self.pedestal_instance = pedestal

        self.interp_f = PchipInterpolator(np.array(temperature_list),
                                          np.array(pedestal_list),
                                          axis=0,
                                          extrapolate=True)
    def __init__(self, paths):
        self.pedestal_instance = None

        temperature_list = []
        pedestal_list = []
        for path in paths:
            regex_r0 = re.search(r".+_tc([\d.]+)_tmc([\d.]+)_ped.tcal", path)
            temperature_primary = float(regex_r0.group(2))
            pedestal = PedestalTargetCalib.from_tcal(path)

            temperature_list.append(temperature_primary)
            pedestal_list.append(pedestal._pedestal)
            if self.pedestal_instance is None:
                self.pedestal_instance = pedestal

        self.interp_f = interp1d(temperature_list,
                                 pedestal_list,
                                 axis=0,
                                 fill_value="extrapolate")
Exemplo n.º 6
0
def process(pedestal_paths, output_path):
    pedestal_paths = sort_file_list(pedestal_paths)

    data = []
    reference_values = None
    reference_spread = None

    for path in pedestal_paths:
        regex_ped = re.search(r".+_tc([\d.]+)_tmc([\d.]+)_ped.tcal", path)
        temperature_pedestal_primary = float(regex_ped.group(2))

        pedestal = PedestalTargetCalib.from_tcal(path)
        values = pedestal.pedestal
        spread = pedestal.std

        if reference_values is None:
            reference_values = values
            reference_spread = spread

        delta = values - reference_values
        delta_mean = delta.mean()
        delta_std = delta.std()
        delta_channel_mean = delta[0].mean()
        delta_channel_std = delta[0].std()

        # delta_spread = spread - reference_spread
        spread_mean = spread.mean()
        spread_std = spread.std()

        data.append(
            dict(
                temperature=temperature_pedestal_primary,
                delta_mean=delta_mean,
                delta_std=delta_std,
                delta_channel_mean=delta_channel_mean,
                delta_channel_std=delta_channel_std,
                spread_mean=spread_mean,
                spread_std=spread_std,
            ))

    with HDF5Writer(output_path) as writer:
        writer.write(data=pd.DataFrame(data))
Exemplo n.º 7
0
def process(pedestal_path, output_dir):
    pedestal = PedestalTargetCalib.from_tcal(pedestal_path)

    std_mean = np.mean(pedestal.std)
    std_std = np.std(pedestal.std)
    std_hist, std_edges = np.histogram(pedestal.std, bins=100)

    p_hist = HistPlot()
    p_hist.plot(std_hist, std_edges, std_mean, std_std)
    p_hist.save(join(output_dir, "hist.pdf"))

    p_hist2d_pedestal = Hist2D()
    p_hist2d_pedestal.plot(pedestal.pedestal[0], pedestal.hits[0],
                           "Pedestal Mean (ADC)")
    p_hist2d_pedestal.save(join(output_dir, "hist2d_mean.pdf"))

    p_hist2d_std = Hist2D()
    p_hist2d_std.plot(pedestal.std[0], pedestal.hits[0],
                      "Pedestal Stddev (ADC)")
    p_hist2d_std.save(join(output_dir, "hist2d_std.pdf"))
Exemplo n.º 8
0
def get_pedestal(pedestal_path):
    return PedestalTargetCalib.from_tcal(pedestal_path)