12 Airflow script for TOP post-tracking calibration:
13 BS13d carrier shifts, module T0 and common T0
16 from prompt
import CalibrationSettings, INPUT_DATA_FILTERS
17 from caf.utils
import IoV
18 from caf.strategies
import SequentialBoundaries
19 from top_calibration
import BS13d_calibration_cdst
20 from top_calibration
import moduleT0_calibration_DeltaT, moduleT0_calibration_LL
21 from top_calibration
import commonT0_calibration_BF
22 from prompt.calibrations.caf_top_pre
import settings
as top_pretracking
26 settings = CalibrationSettings(
27 name=
"TOP post-tracking calibration",
28 expert_username=
"skohani",
30 input_data_formats=[
"cdst"],
31 input_data_names=[
"bhabha_all_calib"],
34 INPUT_DATA_FILTERS[
"Data Tag"][
"bhabha_all_calib"],
35 INPUT_DATA_FILTERS[
"Run Type"][
"physics"],
36 INPUT_DATA_FILTERS[
"Data Quality Tag"][
"Good Or Recoverable"]]},
37 depends_on=[top_pretracking],
39 "max_files_per_run": 20,
40 "payload_boundaries":
None,
41 "request_memory":
"8 GB"
46 def get_calibrations(input_data, **kwargs):
48 Returns a list of calibration objects.
49 :input_data (dict): Contains every file name from the 'input_data_names' as a key.
50 :**kwargs: Configuration options to be sent in.
53 file_to_iov = input_data[
"bhabha_all_calib"]
55 requested_iov = kwargs.get(
"requested_iov",
None)
56 expert_config = kwargs.get(
"expert_config")
57 max_files_per_run = expert_config[
"max_files_per_run"]
58 min_events_per_file = 1
60 reduced_file_to_iov = filter_by_max_files_per_run(file_to_iov, max_files_per_run, min_events_per_file, random_select=
True)
61 inputFiles = list(reduced_file_to_iov.keys())
62 basf2.B2INFO(f
"Total number of files actually used as input = {len(inputFiles)}")
63 requested_iov = kwargs.get(
"requested_iov",
None)
64 output_iov = IoV(requested_iov.exp_low, requested_iov.run_low, -1, -1)
66 cal = [BS13d_calibration_cdst(inputFiles),
67 moduleT0_calibration_DeltaT(inputFiles),
68 moduleT0_calibration_LL(inputFiles, sample),
69 commonT0_calibration_BF(inputFiles)]
73 if c.strategies[0] == SequentialBoundaries:
76 payload_boundaries = [[output_iov.exp_low, output_iov.run_low]]
79 if expert_config[
"payload_boundaries"]
is not None:
80 payload_boundaries = expert_config[
"payload_boundaries"]
83 for alg
in c.algorithms:
84 alg.params = {
"iov_coverage": output_iov,
"payload_boundaries": payload_boundaries}
88 for alg
in c.algorithms:
89 alg.params = {
"iov_coverage": output_iov}
92 cal[1].save_payloads =
False
94 cal[1].depends_on(cal[0])
95 cal[2].depends_on(cal[1])
96 cal[3].depends_on(cal[2])