|
11 | 11 | from .....log import build_log
|
12 | 12 |
|
13 | 13 |
|
14 |
| -def par_spms_dsp_trg_thr() -> None: |
15 |
| - # CLI interface |
16 |
| - argparser = argparse.ArgumentParser() |
17 |
| - argparser.add_argument("--raw-file", required=True) |
18 |
| - argparser.add_argument("--raw-table-name", required=True) |
19 |
| - argparser.add_argument("--output-file", required=True) |
20 |
| - argparser.add_argument("--config-path", required=True) |
21 |
| - argparser.add_argument("--datatype", required=True) |
22 |
| - argparser.add_argument("--timestamp", required=True) |
23 |
| - argparser.add_argument("--sipm-name", required=True) |
24 |
| - argparser.add_argument("--dsp-db", nargs="*", default=[]) |
25 |
| - argparser.add_argument("--logfile") |
26 |
| - args = argparser.parse_args() |
27 |
| - |
28 |
| - # dataflow configs |
29 |
| - df_configs = ( |
30 |
| - TextDB(args.config_path, lazy=True) |
31 |
| - .on(args.timestamp, system=args.datatype) |
32 |
| - .snakemake_rules.pars_spms_dsp_trg_thr |
33 |
| - ) |
34 |
| - |
35 |
| - # setup logging |
36 |
| - log = build_log(df_configs, args.logfile) |
37 |
| - |
| 14 | +def get_channel_trg_thr(df_configs, sipm_name, dsp_db, raw_file, raw_table_name, log): |
38 | 15 | log.debug("reading in the configuration files")
|
39 | 16 | config = df_configs.inputs
|
40 | 17 | dsp_config = utils.load_dict(
|
41 |
| - cfgtools.get_channel_config(config.processing_chain, args.sipm_name) |
| 18 | + cfgtools.get_channel_config(config.processing_chain, sipm_name) |
42 | 19 | )
|
43 | 20 | settings = AttrsDict(
|
44 |
| - utils.load_dict(cfgtools.get_channel_config(config.settings, args.sipm_name)) |
| 21 | + utils.load_dict(cfgtools.get_channel_config(config.settings, sipm_name)) |
45 | 22 | )
|
46 | 23 |
|
47 | 24 | # get DSP database from overrides
|
48 |
| - _db_dict = Props.read_from(args.dsp_db).get(args.sipm_name, {}) |
| 25 | + _db_dict = Props.read_from(dsp_db).get(sipm_name, {}) |
49 | 26 |
|
50 | 27 | fwhm = None
|
51 | 28 |
|
52 | 29 | # read raw file list
|
53 | 30 | log.debug("reading in the raw waveforms")
|
54 |
| - if len(lh5.ls(args.raw_file, f"{args.raw_table_name}/waveform_bit_drop")) == 0: |
| 31 | + if len(lh5.ls(raw_file, f"{raw_table_name}/waveform_bit_drop")) == 0: |
55 | 32 | msg = (
|
56 |
| - f"could not find waveform '{args.raw_table_name}/waveform_bit_drop' " |
| 33 | + f"could not find waveform '{raw_table_name}/waveform_bit_drop' " |
57 | 34 | "in {args.raw_file}, returning null pars"
|
58 | 35 | )
|
59 | 36 | log.warning(msg)
|
60 | 37 |
|
61 | 38 | else:
|
62 | 39 | data = lh5.read(
|
63 |
| - args.raw_table_name, |
64 |
| - args.raw_file, |
| 40 | + raw_table_name, |
| 41 | + raw_file, |
65 | 42 | field_mask=["waveform_bit_drop"],
|
66 | 43 | n_rows=settings.n_events,
|
67 | 44 | )
|
68 | 45 |
|
69 | 46 | if len(data) == 0:
|
70 | 47 | msg = (
|
71 |
| - f"could not find any waveforms '{args.raw_table_name}/waveform_bit_drop' " |
| 48 | + f"could not find any waveforms '{raw_table_name}/waveform_bit_drop' " |
72 | 49 | "in {args.raw_file}, returning null pars"
|
73 | 50 | )
|
74 | 51 | log.warning(msg)
|
75 | 52 |
|
76 | 53 | elif len(data) < settings.n_events:
|
77 | 54 | msg = (
|
78 |
| - f"number of waveforms '{args.raw_table_name}/waveform_bit_drop' < {settings.n_events}" |
| 55 | + f"number of waveforms '{raw_table_name}/waveform_bit_drop' < {settings.n_events}" |
79 | 56 | "in {args.raw_file}, can't build histogram"
|
80 | 57 | )
|
81 | 58 | raise RuntimeError(msg)
|
@@ -112,9 +89,92 @@ def par_spms_dsp_trg_thr() -> None:
|
112 | 89 | msg = f"determined FWHM of baseline derivative distribution is so <= 0: {fwhm:.3f}"
|
113 | 90 | raise RuntimeError(msg)
|
114 | 91 |
|
| 92 | + return fwhm |
| 93 | + return None |
| 94 | + |
| 95 | + |
| 96 | +def par_spms_dsp_trg_thr() -> None: |
| 97 | + # CLI interface |
| 98 | + argparser = argparse.ArgumentParser() |
| 99 | + argparser.add_argument("--raw-file", required=True) |
| 100 | + argparser.add_argument("--raw-table-name", required=True) |
| 101 | + argparser.add_argument("--output-file", required=True) |
| 102 | + argparser.add_argument("--config-path", required=True) |
| 103 | + argparser.add_argument("--datatype", required=True) |
| 104 | + argparser.add_argument("--timestamp", required=True) |
| 105 | + argparser.add_argument("--sipm-name", required=True) |
| 106 | + argparser.add_argument("--dsp-db", nargs="*", default=[]) |
| 107 | + argparser.add_argument("--logfile") |
| 108 | + args = argparser.parse_args() |
| 109 | + |
| 110 | + # dataflow configs |
| 111 | + df_configs = ( |
| 112 | + TextDB(args.config_path, lazy=True) |
| 113 | + .on(args.timestamp, system=args.datatype) |
| 114 | + .snakemake_rules.pars_spms_dsp_trg_thr |
| 115 | + ) |
| 116 | + |
| 117 | + # setup logging |
| 118 | + log = build_log(df_configs, args.logfile) |
| 119 | + |
| 120 | + fwhm = get_channel_trg_thr( |
| 121 | + df_configs, |
| 122 | + args.sipm_name, |
| 123 | + args.dsp_db, |
| 124 | + args.raw_file, |
| 125 | + args.raw_table_name, |
| 126 | + log, |
| 127 | + ) |
| 128 | + |
115 | 129 | log.debug(f"writing out baseline_curr_fwhm = {fwhm}")
|
116 | 130 | Path(args.output_file).parent.mkdir(parents=True, exist_ok=True)
|
117 | 131 | Props.write_to(
|
118 | 132 | args.output_file,
|
119 | 133 | {"baseline_curr_fwhm": float(fwhm) if fwhm is not None else fwhm},
|
120 | 134 | )
|
| 135 | + |
| 136 | + |
| 137 | +def par_spms_dsp_trg_thr_multi() -> None: |
| 138 | + # CLI interface |
| 139 | + argparser = argparse.ArgumentParser() |
| 140 | + argparser.add_argument("--raw-file", required=True) |
| 141 | + argparser.add_argument("--raw-table-names", required=True, nargs="*") |
| 142 | + argparser.add_argument("--output-file", required=True) |
| 143 | + argparser.add_argument("--config-path", required=True) |
| 144 | + argparser.add_argument("--datatype", required=True) |
| 145 | + argparser.add_argument("--timestamp", required=True) |
| 146 | + argparser.add_argument("--sipm-names", required=True, nargs="*") |
| 147 | + argparser.add_argument("--dsp-db", nargs="*", default=[]) |
| 148 | + argparser.add_argument("--logfile") |
| 149 | + args = argparser.parse_args() |
| 150 | + |
| 151 | + # dataflow configs |
| 152 | + df_configs = ( |
| 153 | + TextDB(args.config_path, lazy=True) |
| 154 | + .on(args.timestamp, system=args.datatype) |
| 155 | + .snakemake_rules.pars_spms_dsp_trg_thr |
| 156 | + ) |
| 157 | + |
| 158 | + # setup logging |
| 159 | + log = build_log(df_configs, args.logfile) |
| 160 | + |
| 161 | + out_dict = {} |
| 162 | + for sipm_name, raw_table_name in zip(args.sipm_names, args.raw_table_names): |
| 163 | + fwhm = get_channel_trg_thr( |
| 164 | + df_configs, |
| 165 | + sipm_name, |
| 166 | + args.dsp_db, |
| 167 | + args.raw_file, |
| 168 | + raw_table_name, |
| 169 | + log, |
| 170 | + ) |
| 171 | + |
| 172 | + log.debug(f"baseline_curr_fwhm for {sipm_name} = {fwhm}") |
| 173 | + out_dict[sipm_name] = { |
| 174 | + "baseline_curr_fwhm": float(fwhm) if fwhm is not None else fwhm |
| 175 | + } |
| 176 | + Path(args.output_file).parent.mkdir(parents=True, exist_ok=True) |
| 177 | + Props.write_to( |
| 178 | + args.output_file, |
| 179 | + out_dict, |
| 180 | + ) |
0 commit comments