11 """ECL calibration to calculate photon energy leakage corrections."""
13 from prompt
import CalibrationSettings, INPUT_DATA_FILTERS
18 settings = CalibrationSettings(name=
"ecl_leakage",
19 expert_username=
"hearty",
21 input_data_formats=[
"mdst"],
22 input_data_names=[
"single_gamma_mc"],
25 INPUT_DATA_FILTERS[
"Data Tag"][
"single_gamma_mc"]
29 expert_config={
"number_energies": 8,
30 "forward_energies": [0.030, 0.050, 0.100, 0.200, 0.483, 1.166, 2.816, 6.800],
31 "barrel_energies": [0.030, 0.050, 0.100, 0.200, 0.458, 1.049, 2.402, 5.500],
32 "backward_energies": [0.030, 0.050, 0.100, 0.200, 0.428, 0.917, 1.962, 4.200],
33 "lowEnergyThreshold": 0.,
34 "noNCrysThreshold": 0.}
42 def get_calibrations(input_data, **kwargs):
44 from ROOT
import Belle2
45 from caf.utils
import IoV
46 from caf.framework
import Calibration
50 file_to_iov_leakage = input_data[
"single_gamma_mc"]
51 input_files_leakage = list(file_to_iov_leakage.keys())
54 ecl_leakage_collector = basf2.register_module(
"eclLeakageCollector")
55 ecl_leakage_collector.param(
"granularity",
"all")
56 ecl_leakage_collector.param(
"position_bins", 29)
59 expert_config = kwargs.get(
"expert_config")
60 number_energies = expert_config[
"number_energies"]
61 ecl_leakage_collector.param(
"number_energies", number_energies)
63 forward_energies = expert_config[
"forward_energies"]
64 ecl_leakage_collector.param(
"energies_forward", forward_energies)
66 barrel_energies = expert_config[
"barrel_energies"]
67 ecl_leakage_collector.param(
"energies_barrel", barrel_energies)
69 backward_energies = expert_config[
"backward_energies"]
70 ecl_leakage_collector.param(
"energies_backward", backward_energies)
74 lowEnergyThreshold = expert_config[
"lowEnergyThreshold"]
75 algo_leakage.setLowEnergyThreshold(lowEnergyThreshold)
76 noNCrysThreshold = expert_config[
"noNCrysThreshold"]
77 algo_leakage.setNoNCrysThreshold(noNCrysThreshold)
82 collector=ecl_leakage_collector,
83 algorithms=algo_leakage,
84 input_files=input_files_leakage)
87 ecl_leakage_pre_path = basf2.create_path()
88 cal_ecl_leakage.pre_collector_path = ecl_leakage_pre_path
92 requested_iov = kwargs.get(
"requested_iov",
None)
93 output_iov = IoV(requested_iov.exp_low, requested_iov.run_low, -1, -1)
94 for algorithm
in cal_ecl_leakage.algorithms:
95 algorithm.params = {
"apply_iov": output_iov}
99 return [cal_ecl_leakage]
Calculate ECL energy leakage corrections.