11"""ECL waveform template calibration"""
13from prompt
import CalibrationSettings, INPUT_DATA_FILTERS
17settings = CalibrationSettings(
18 name=
"ecl_WaveformTemplateShapeCalibration",
19 expert_username=
"longos",
21 input_data_formats=[
"cdst"],
22 input_data_names=[
"gamma_gamma_calib"],
24 "gamma_gamma_calib": [
25 INPUT_DATA_FILTERS[
"Data Tag"][
"gamma_gamma_calib"],
26 INPUT_DATA_FILTERS[
"Data Quality Tag"][
"Good Or Recoverable"],
27 INPUT_DATA_FILTERS[
"Run Type"][
"physics"],
28 INPUT_DATA_FILTERS[
"Magnet"][
"On"]]},
36def get_calibrations(input_data, **kwargs):
38 from ROOT
import Belle2
39 from caf.utils
import IoV
40 from caf.framework
import Calibration
46 file_to_iov_gamma_gamma = input_data[
"gamma_gamma_calib"]
47 input_files = list(file_to_iov_gamma_gamma.keys())
53 collector_C1 = basf2.register_module(
"eclWaveformTemplateCalibrationC1Collector")
57 collector=collector_C1,
59 input_files=input_files,
60 max_files_per_collector_job=4)
63 gamma_gamma_pre_path = basf2.create_path()
64 gamma_gamma_pre_path.add_module(
"RootInput", inputFileNames=
"", branchNames=[
"EventMetaData",
"RawECLs"])
65 eclunpacker = basf2.register_module(
'ECLUnpacker')
66 gamma_gamma_pre_path.add_module(eclunpacker)
68 cal_ecl_Wave_C1.pre_collector_path = gamma_gamma_pre_path
79 for i
in range(0, nbatches):
81 lowLimit = (batchsize*i)+1
83 highLimit = (batchsize*(i+1))
88 print(
"lowLimit,highLimit", lowLimit, highLimit)
92 algos_C2[-1].setFirstCellID(lowLimit)
93 algos_C2[-1].setLastCellID(highLimit)
96 algos_C3[-1].setFirstCellID(lowLimit)
97 algos_C3[-1].setLastCellID(highLimit)
99 collectors_C2.append(basf2.register_module(
"eclWaveformTemplateCalibrationC2Collector"))
100 collectors_C2[-1].pre_collector_path = gamma_gamma_pre_path
101 collectors_C2[-1].param(
'MinCellID', lowLimit)
102 collectors_C2[-1].param(
'MaxCellID', highLimit)
105 calibrations_C2.append(
Calibration(
"ecl_Wave_C2_"+str(lowLimit)+
"_"+str(highLimit),
106 collector=collectors_C2[-1],
107 algorithms=[algos_C2[-1],
109 input_files=input_files,
110 max_files_per_collector_job=4))
111 calibrations_C2[-1].pre_collector_path = gamma_gamma_pre_path
112 calibrations_C2[-1].depends_on(cal_ecl_Wave_C1)
116 algo_C4.setFirstCellID(1)
117 algo_C4.setLastCellID(8736)
121 collector=
"DummyCollector",
122 algorithms=[algo_C4],
123 input_files=input_files[:1],
126 cal_ecl_Wave_C4.depends_on(cal_ecl_Wave_C1)
127 for cal
in calibrations_C2:
128 cal_ecl_Wave_C4.depends_on(cal)
132 requested_iov = kwargs.get(
"requested_iov",
None)
133 output_iov = IoV(requested_iov.exp_low, requested_iov.run_low, -1, -1)
134 for algorithm
in cal_ecl_Wave_C1.algorithms:
135 algorithm.params = {
"apply_iov": output_iov}
136 for C2
in calibrations_C2:
137 for algorithm
in C2.algorithms:
138 algorithm.params = {
"apply_iov": output_iov}
139 for algorithm
in cal_ecl_Wave_C4.algorithms:
140 algorithm.params = {
"apply_iov": output_iov}
144 calList = [cal_ecl_Wave_C1] + calibrations_C2 + [cal_ecl_Wave_C4]