8"""CDC deadboard calibration."""
10from prompt
import CalibrationSettings, INPUT_DATA_FILTERS
11from ROOT
import Belle2
13settings = CalibrationSettings(name=
"CDC deadboard",
14 expert_username=
"liumh",
17 input_data_formats=[
"raw"],
18 input_data_names=[
"mumu_tight_or_highm_calib"],
19 input_data_filters={
"mumu_tight_or_highm_calib":
20 [INPUT_DATA_FILTERS[
"Data Tag"][
"mumu_tight_or_highm_calib"],
21 INPUT_DATA_FILTERS[
"Data Quality Tag"][
"Good"],
22 INPUT_DATA_FILTERS[
"Magnet"][
"On"]]},
25 "min_events_per_file": 100,
26 "components": [
"CDC"],
27 "payload_boundaries": [],
28 "backend_args": {
"request_memory":
"2 GB"},
29 "dead_board_threshold": 0.0
31 produced_payloads=[
"CDCBadBoards"])
35def get_calibrations(input_data, **kwargs):
36 expert_config = kwargs.get(
"expert_config")
37 min_events_per_file = expert_config[
"min_events_per_file"]
38 components = expert_config[
"components"]
39 dead_board_threshold = expert_config[
"dead_board_threshold"]
43 file_to_iov_mumu = input_data[
"mumu_tight_or_highm_calib"]
45 reduced_file_to_iov_mumu = filter_by_max_files_per_run(file_to_iov_mumu, 1, min_events_per_file)
46 input_files_mumu = list(reduced_file_to_iov_mumu.keys())
47 basf2.B2INFO(
"Complete input data selection.")
48 basf2.B2INFO(f
"Total number of files actually used as input = {len(input_files_mumu)}")
51 from caf.utils
import IoV
52 from caf
import strategies
53 payload_boundaries = []
54 payload_boundaries.extend([ExpRun(*boundary)
for boundary
in expert_config[
"payload_boundaries"]])
55 basf2.B2INFO(f
"Payload boundaries from expert_config: {payload_boundaries}")
58 requested_iov = kwargs.get(
"requested_iov",
None)
59 output_iov = IoV(requested_iov.exp_low, requested_iov.run_low, -1, -1)
62 if payload_boundaries:
63 basf2.B2INFO(
'Found payload_boundaries: set collector granularity to run')
65 col = basf2.register_module(
"CDCDeadBoardDetector")
69 algo.setHistName(
"CDCboardIDs")
70 algo.setThreshold(dead_board_threshold)
72 from caf.framework
import Calibration
73 deadboard_calib = Calibration(
"CDC_DeadBoard",
76 input_files=input_files_mumu,
77 pre_collector_path=pre_collector(components=components))
80 if payload_boundaries:
81 basf2.B2INFO(
"Found payload_boundaries: calibration strategies set to SequentialBoundaries.")
83 for alg
in deadboard_calib.algorithms:
84 alg.params = {
"iov_coverage": output_iov,
"payload_boundaries": payload_boundaries}
87 for alg
in deadboard_calib.algorithms:
88 alg.params = {
"iov_coverage": output_iov}
90 return [deadboard_calib]
93def pre_collector(components=["CDC"]):
95 path = basf2.create_path()
96 branches = [
'EventMetaData',
'RawCDCs',
'RawFTSWs']
99 path.add_module(
"RootInput", branchNames=branches)
101 path.add_module(
"Progress")
103 basf2.print_path(path)
Class for dead board detection.