3 """ECL timing calibration that performs the crystal and crate calibrations."""
5 from prompt
import CalibrationSettings
6 from reconstruction
import *
20 settings = CalibrationSettings(name=
"ECL crystal and crate time calibrations",
21 expert_username=
"ehill",
23 input_data_formats=[
"cdst"],
24 input_data_names=[
"hlt_bhabha"],
40 def get_calibrations(input_data, **kwargs):
43 input_data (dict): Should contain every name from the 'input_data_names' variable as a key.
44 Each value is a dictionary with {"/path/to/file_e1_r5.root": IoV(1,5,1,5), ...}. Useful for
45 assigning to calibration.files_to_iov
47 **kwargs: Configuration options to be sent in. Since this may change we use kwargs as a way to help prevent
48 backwards compatibility problems. But you could use the correct arguments in b2caf-prompt-run for this
49 release explicitly if you want to.
51 Currently only kwargs["output_iov"] is used. This is the output IoV range that your payloads should
52 correspond to. Generally your highest ExpRun payload should be open ended e.g. IoV(3,4,-1,-1)
55 list(caf.framework.Calibration): All of the calibration objects we want to assign to the CAF process
63 file_to_iov_physics = input_data[
"hlt_bhabha"]
69 max_files_per_run = 1000
76 reduced_file_to_iov_physics = filter_by_max_files_per_run(file_to_iov_physics, max_files_per_run)
77 input_files_physics = list(reduced_file_to_iov_physics.keys())
78 basf2.B2INFO(f
"Total number of files actually used as input = {len(input_files_physics)}")
81 from basf2
import register_module, create_path
83 from ROOT
import Belle2
84 from ROOT.Belle2
import TestCalibrationAlgorithm
85 from caf.framework
import Collection
90 root_input = register_module(
'RootInput')
91 rec_path_bhabha = create_path()
92 rec_path_bhabha.add_module(root_input)
93 if 'Gearbox' not in rec_path_bhabha:
94 rec_path_bhabha.add_module(
'Gearbox')
95 if 'Geometry' not in rec_path_bhabha:
96 rec_path_bhabha.add_module(
'Geometry', useDB=
True)
98 prepare_cdst_analysis(rec_path_bhabha)
100 col_bhabha = register_module(
'ECLBhabhaTCollector')
101 col_bhabha.param(
'timeAbsMax', 250)
102 col_bhabha.param(
'minCrystal', 1)
103 col_bhabha.param(
'maxCrystal', 8736)
104 col_bhabha.param(
'saveTree',
False)
107 input_files=input_files_physics,
108 pre_collector_path=rec_path_bhabha,
119 eclTAlgCrates.cellIDLo = 3
120 eclTAlgCrates.cellIDHi = 2
121 eclTAlgCrates.debugOutput =
True
122 eclTAlgCrates.meanCleanRebinFactor = 3
123 eclTAlgCrates.meanCleanCutMinFactor = 0.3
124 eclTAlgCrates.debugFilenameBase =
"eclBhabhaTAlgorithm"
134 eclTAlgCrystals.crateIDLo = 3
135 eclTAlgCrystals.crateIDHi = 2
136 eclTAlgCrystals.debugOutput =
True
137 eclTAlgCrystals.meanCleanRebinFactor = 3
138 eclTAlgCrystals.meanCleanCutMinFactor = 0.3
139 eclTAlgCrystals.debugFilenameBase =
"eclBhabhaTAlgorithm"
144 from caf.framework
import Calibration
146 cal_crates_1 =
Calibration(
"ECLcrateTimeCalibration_physics_1")
147 cal_crates_1.add_collection(name=
"bhabha", collection=eclTCol)
148 cal_crates_1.algorithms = [eclTAlgCrates]
151 from caf.strategies
import SimpleRunByRun
159 cal_crates_1.strategies = SimpleRunByRun
167 cal_crystals_1 =
Calibration(
"ECLcrystalTimeCalibration_physics_1")
168 cal_crystals_1.add_collection(name=
"bhabha", collection=eclTCol)
169 cal_crystals_1.algorithms = [eclTAlgCrystals]
172 from caf.strategies
import SingleIOV
178 cal_crystals_1.strategies = SingleIOV
182 cal_crates_2 =
Calibration(
"ECLcrateTimeCalibration_physics_2")
183 cal_crates_2.add_collection(name=
"bhabha", collection=eclTCol)
184 cal_crates_2.algorithms = [eclTAlgCrates]
185 cal_crates_2.strategies = SimpleRunByRun
189 cal_crystals_2 =
Calibration(
"ECLcrystalTimeCalibration_physics_2")
190 cal_crystals_2.add_collection(name=
"bhabha", collection=eclTCol)
191 cal_crystals_2.algorithms = [eclTAlgCrystals]
192 cal_crystals_2.strategies = SingleIOV
196 cal_crates_3 =
Calibration(
"ECLcrateTimeCalibration_physics_3")
197 cal_crates_3.add_collection(name=
"bhabha", collection=eclTCol)
198 cal_crates_3.algorithms = [eclTAlgCrates]
199 cal_crates_3.strategies = SimpleRunByRun
203 cal_crystals_3 =
Calibration(
"ECLcrystalTimeCalibration_physics_3")
204 cal_crystals_3.add_collection(name=
"bhabha", collection=eclTCol)
205 cal_crystals_3.algorithms = [eclTAlgCrystals]
206 cal_crystals_3.strategies = SingleIOV
210 cal_crates_4 =
Calibration(
"ECLcrateTimeCalibration_physics_4")
211 cal_crates_4.add_collection(name=
"bhabha", collection=eclTCol)
212 cal_crates_4.algorithms = [eclTAlgCrates]
213 cal_crates_4.strategies = SimpleRunByRun
217 cal_crystals_4 =
Calibration(
"ECLcrystalTimeCalibration_physics_4")
218 cal_crystals_4.add_collection(name=
"bhabha", collection=eclTCol)
219 cal_crystals_4.algorithms = [eclTAlgCrystals]
220 cal_crystals_4.strategies = SingleIOV
229 cal_crystals_1.depends_on(cal_crates_1)
231 cal_crates_2.depends_on(cal_crystals_1)
232 cal_crystals_2.depends_on(cal_crates_2)
234 cal_crates_3.depends_on(cal_crystals_2)
235 cal_crystals_3.depends_on(cal_crates_3)
237 cal_crates_4.depends_on(cal_crystals_3)
238 cal_crystals_4.depends_on(cal_crates_4)
245 return [cal_crates_1, cal_crystals_1, cal_crates_2, cal_crystals_2, cal_crates_3, cal_crystals_3, cal_crates_4, cal_crystals_4]