Belle II Software development
caf_ecl_autocovariance.py
1
2
3
10
11"""ECL Autocovariance."""
12
13from prompt import CalibrationSettings, INPUT_DATA_FILTERS
14from caf import strategies
15
16# --------------------------------------------------------------
17# ..Tell the automated script some required details
18settings = CalibrationSettings(
19 name="ecl_autocovariance",
20 expert_username="savino.longo",
21 subsystem="ecl",
22 description=__doc__,
23 input_data_formats=["raw"],
24 input_data_names=["delayedbhabha_calib"],
25 input_data_filters={
26 "delayedbhabha_calib": [
27 INPUT_DATA_FILTERS["Data Tag"]["delayedbhabha_calib"],
28 INPUT_DATA_FILTERS["Data Quality Tag"]["Good Or Recoverable"],
29 INPUT_DATA_FILTERS["Run Type"]["physics"],
30 INPUT_DATA_FILTERS["Magnet"]["On"]]},
31 depends_on=[],
32 expert_config={
33 "C1_lowestEnergyFraction": 0.75,
34 "C1_TotalCountsThreshold": 10000
35 },
36 produced_payloads=["ECLAutoCovariance"])
37
38
39# --------------------------------------------------------------
40# ..The calibration functions
41
42
43def get_calibrations(input_data, **kwargs):
44 import basf2
45 from ROOT import Belle2
46 from caf.utils import IoV
47 from caf.framework import Calibration
48
49 # --------------------------------------------------------------
50 # ..delayed Bhabha
51
52 # ..Input data
53 file_to_iov_delayed_Bhabha = input_data["delayedbhabha_calib"]
54 input_files = list(file_to_iov_delayed_Bhabha.keys())
55
56 # ..Algorithm
58 expert_config = kwargs.get("expert_config")
59 algo_C1.setLowestEnergyFraction(expert_config["C1_lowestEnergyFraction"])
60 algo_C1.setTotalCountsThreshold(expert_config["C1_TotalCountsThreshold"])
61
62 # ..The calibration
63 collector_C1 = basf2.register_module("eclAutocovarianceCalibrationC1Collector")
64
65 cal_ecl_Auto_C1 = Calibration("ecl_Auto_C1",
66 collector=collector_C1,
67 algorithms=[algo_C1],
68 input_files=input_files, max_files_per_collector_job=4)
69 cal_ecl_Auto_C1.strategies = strategies.SequentialRunByRun
70
71 # ..Add prepare_cdst_analysis to pre_collector_path
72 delayed_Bhabha_pre_path = basf2.create_path()
73 delayed_Bhabha_pre_path.add_module("RootInput", branchNames=["EventMetaData", "RawECLs"])
74 delayed_Bhabha_pre_path.add_module('ECLUnpacker')
75
76 cal_ecl_Auto_C1.pre_collector_path = delayed_Bhabha_pre_path
77
78 # ..Algorithm
80
81 # ..The calibration
82 collector_C3 = basf2.register_module("eclAutocovarianceCalibrationC3Collector")
83
84 cal_ecl_Auto_C3 = Calibration("ecl_Auto_C3",
85 collector=collector_C3,
86 algorithms=[algo_C3],
87 input_files=input_files, max_files_per_collector_job=4)
88 cal_ecl_Auto_C3.strategies = strategies.SequentialRunByRun
89
90 cal_ecl_Auto_C3.pre_collector_path = delayed_Bhabha_pre_path
91
92 cal_ecl_Auto_C3.depends_on(cal_ecl_Auto_C1)
93
94 # ..Algorithm
96
97 # ..The calibration
98 collector_C4 = basf2.register_module("eclAutocovarianceCalibrationC4Collector")
99
100 cal_ecl_Auto_C4 = Calibration("ecl_Auto_C4",
101 collector=collector_C4,
102 algorithms=[algo_C4],
103 input_files=input_files, max_files_per_collector_job=4)
104
105 cal_ecl_Auto_C4.pre_collector_path = delayed_Bhabha_pre_path
106
107 cal_ecl_Auto_C4.depends_on(cal_ecl_Auto_C3)
108
109 # --------------------------------------------------------------
110 # ..Force the output iovs to be open
111 requested_iov = kwargs.get("requested_iov", None)
112 output_iov = IoV(requested_iov.exp_low, requested_iov.run_low, -1, -1)
113 for algorithm in cal_ecl_Auto_C1.algorithms:
114 algorithm.params = {"apply_iov": output_iov}
115 for algorithm in cal_ecl_Auto_C3.algorithms:
116 algorithm.params = {"apply_iov": output_iov}
117 for algorithm in cal_ecl_Auto_C4.algorithms:
118 algorithm.params = {"apply_iov": output_iov}
119
120 # --------------------------------------------------------------
121 # ..Return the calibrations
122 return [cal_ecl_Auto_C1, cal_ecl_Auto_C3, cal_ecl_Auto_C4]
Calibrate covariance matrix for crystals using delayed Bhabha events.
Calibrate covariance matrix for crystals using delayed Bhabha events.
Calibrate covariance matrix for crystals using delayed Bhabha events.