4 Airflow script for TOP pre-tracking calibration:
7 Author: Marko Staric, Shahab Kohani
10 from prompt
import CalibrationSettings, input_data_filters
11 from caf.utils
import IoV
12 from caf.strategies
import SequentialBoundaries
13 from top_calibration
import channel_mask_calibration
17 settings = CalibrationSettings(
18 name=
"TOP pre-tracking calibration",
19 expert_username=
"skohani",
21 input_data_formats=[
"raw"],
22 input_data_names=[
"hadron_calib"],
25 input_data_filters[
"Data Tag"][
"hadron_calib"],
26 input_data_filters[
"Run Type"][
"physics"],
27 input_data_filters[
"Data Quality Tag"][
"Good Or Recoverable"]]},
30 "max_files_per_run": 20,
31 "payload_boundaries":
None,
32 "request_memory":
"8 GB"
37 def get_calibrations(input_data, **kwargs):
39 Returns a list of calibration objects.
40 :input_data (dict): Contains every file name from the 'input_data_names' as a key.
41 :**kwargs: Configuration options to be sent in.
43 file_to_iov = input_data[
"hadron_calib"]
44 expert_config = kwargs.get(
"expert_config")
45 max_files_per_run = expert_config[
"max_files_per_run"]
46 min_events_per_file = 1
48 reduced_file_to_iov = filter_by_max_files_per_run(file_to_iov, max_files_per_run, min_events_per_file, random_select=
True)
49 inputFiles = list(reduced_file_to_iov.keys())
50 basf2.B2INFO(f
"Total number of files actually used as input = {len(inputFiles)}")
51 requested_iov = kwargs.get(
"requested_iov",
None)
52 output_iov = IoV(requested_iov.exp_low, requested_iov.run_low, -1, -1)
54 cal = [channel_mask_calibration(inputFiles)]
58 if c.strategies[0] == SequentialBoundaries:
61 payload_boundaries = [[output_iov.exp_low, output_iov.run_low]]
64 if expert_config[
"payload_boundaries"]
is not None:
65 payload_boundaries = expert_config[
"payload_boundaries"]
68 for alg
in c.algorithms:
69 alg.params = {
"iov_coverage": output_iov,
"payload_boundaries": payload_boundaries}
73 for alg
in c.algorithms:
74 alg.params = {
"iov_coverage": output_iov}