11 """ECL timing calibration that performs the crate calibrations, one for each physics run."""
13 from prompt
import CalibrationSettings, input_data_filters
14 from reconstruction
import prepare_cdst_analysis
26 settings = CalibrationSettings(name=
"ECL crate time calibrations",
27 expert_username=
"ehill",
29 input_data_formats=[
"cdst"],
30 input_data_names=[
"bhabha_all_calib"],
54 def get_calibrations(input_data, **kwargs):
57 input_data (dict): Should contain every name from the 'input_data_names' variable as a key.
58 Each value is a dictionary with {"/path/to/file_e1_r5.root": IoV(1,5,1,5), ...}. Useful for
59 assigning to calibration.files_to_iov
61 **kwargs: Configuration options to be sent in. Since this may change we use kwargs as a way to help prevent
62 backwards compatibility problems. But you could use the correct arguments in b2caf-prompt-run for this
63 release explicitly if you want to.
65 Currently only kwargs["output_iov"] is used. This is the output IoV range that your payloads should
66 correspond to. Generally your highest ExpRun payload should be open ended e.g. IoV(3,4,-1,-1)
69 list(caf.framework.Calibration): All of the calibration objects we want to assign to the CAF process
77 file_to_iov_physics = input_data[
"bhabha_all_calib"]
82 max_files_per_run = 26
89 reduced_file_to_iov_physics = filter_by_max_files_per_run(file_to_iov_physics, max_files_per_run)
90 input_files_physics = list(reduced_file_to_iov_physics.keys())
91 basf2.B2INFO(f
"Total number of files actually used as input = {len(input_files_physics)}")
95 from basf2
import register_module, create_path
97 from ROOT
import Belle2
98 from ROOT.Belle2
import TestCalibrationAlgorithm
99 from caf.framework
import Collection
103 root_input = register_module(
'RootInput')
104 rec_path_bhabha = create_path()
105 rec_path_bhabha.add_module(root_input)
106 if 'Gearbox' not in rec_path_bhabha:
107 rec_path_bhabha.add_module(
'Gearbox')
108 if 'Geometry' not in rec_path_bhabha:
109 rec_path_bhabha.add_module(
'Geometry', useDB=
True)
111 prepare_cdst_analysis(rec_path_bhabha)
114 t0BiasCorrection = -0.9
117 col_bhabha = register_module(
'ECLBhabhaTCollector')
118 col_bhabha.param(
'timeAbsMax', 250)
119 col_bhabha.param(
'minCrystal', 1)
120 col_bhabha.param(
'maxCrystal', 8736)
121 col_bhabha.param(
'saveTree',
False)
122 col_bhabha.param(
'hadronEventT0_TO_bhabhaEventT0_correction', t0BiasCorrection)
125 input_files=input_files_physics,
126 pre_collector_path=rec_path_bhabha,
139 eclTAlg.debugOutput =
True
140 eclTAlg.meanCleanRebinFactor = 3
141 eclTAlg.meanCleanCutMinFactor = 0.3
142 eclTAlg.debugFilenameBase =
"eclBhabhaTAlgorithm"
147 from caf.framework
import Calibration
149 cal_test =
Calibration(
"ECLcrateTimeCalibration_physics")
150 cal_test.add_collection(name=
"bhabha", collection=eclTCol)
151 cal_test.algorithms = [eclTAlg]
154 from caf.strategies
import SimpleRunByRun
162 cal_test.strategies = SimpleRunByRun
Calibrate ecl crystals using bhabha events.