20from os
import makedirs
22from caf
import backends
23from caf.framework
import CAF
24from basf2
import B2ERROR
25from top_calibration
import pulseHeight_calibration_laser
29parser = argparse.ArgumentParser()
30parser.add_argument(
'exp')
31parser.add_argument(
'--runs')
32parser.add_argument(
'--main_output_dir', default=
'top_pulse_height_calibration')
33parser.add_argument(
'--look_back', type=int, default=28)
34parser.add_argument(
'--t_min', type=float, default=-60.)
35parser.add_argument(
'--t_max', type=float, default=-10.)
36parser.add_argument(
'--source_dir', default=
'/ghi/fs01/belle2/bdata/group/detector/TOP/current_data_sroot_global')
39 default=
'/group/belle2/group/detector/TOP/calibration/TBC/official/TBC_2025c_Nov25/localDB/localDB.txt',
42args = parser.parse_args()
49globalTags = [
'online']
50localDBs = args.localDBs.split()
52data_dir = args.source_dir
53main_output_dir = args.main_output_dir
54look_back = args.look_back
61experiment = int(args.exp)
62runs = args.runs.split(
' ')
63run_numbers = sorted([int(r)
for r
in runs])
64run_first = run_numbers[0]
65run_last = run_numbers[-1]
69expNo = f
"e{experiment:04d}"
71for run
in run_numbers:
72 expRun = f
"{experiment:04d}.{run:05d}"
73 filename = f
"{data_dir}/top.{expRun}.*.root"
76 inputFiles += glob.glob(filename)
78if len(inputFiles) == 0:
79 runs =
"".join([str(r) +
"," for r
in run_numbers])[:-1]
80 B2ERROR(f
'No root files found in {data_dir} for exp={str(experiment)} runs={runs}')
84run_range = f
"r{run_first:05d}-{run_last:05d}"
85output_dir = f
"{main_output_dir}/pulseHeight-laser-{expNo}-{run_range}"
86makedirs(output_dir, exist_ok=
True)
89cal = pulseHeight_calibration_laser(inputFiles, t_min, t_max, look_back, globalTags, localDBs)
94cal_fw.add_calibration(cal)
95cal_fw.output_dir = output_dir