11 from ROOT
import Belle2, TFile
12 from ROOT.Belle2
import SVDCoGTimeCalibrationAlgorithm
14 from caf.framework
import Calibration, CAF, Collection, LocalDatabase, CentralDatabase
15 from prompt
import CalibrationSettings
16 from caf
import backends
17 from caf
import strategies
18 from caf.utils
import ExpRun, IoV
21 import modularAnalysis
as ana
22 from caf.strategies
import SequentialBoundaries
24 set_log_level(LogLevel.INFO)
25 now = datetime.datetime.now()
27 settings = CalibrationSettings(name=
"SVDCoGTimeCalibrationPrompt",
28 expert_username=
"gdujany",
30 input_data_formats=[
"cdst"],
31 input_data_names=[
"hlt_hadron"],
38 def remove_module(path, name):
40 new_path = create_path()
41 for m
in path.modules():
43 new_path.add_module(m)
49 def get_calibrations(input_data, **kwargs):
54 path.add_module(
"Gearbox")
55 path.add_module(
"Geometry", useDB=
True)
63 for moda
in path.modules():
64 if moda.name() ==
'SVDCoGTimeEstimator':
65 moda.param(
"ShaperDigits",
'SVDShaperDigitsFromTracks')
66 moda.param(
"RecoDigits",
'SVDRecoDigitsFromTracks')
67 moda.param(
"CalibrationWithEventT0",
False)
68 if moda.name() ==
'SVDSimpleClusterizer':
69 moda.param(
"Clusters",
'SVDClustersFromTracks')
70 moda.param(
"RecoDigits",
'SVDRecoDigitsFromTracks')
71 if moda.name() ==
'SVDSpacePointCreator':
72 moda.param(
"SVDClusters",
'SVDClustersFromTracks')
74 path = remove_module(path,
'SVDMissingAPVsClusterCreator')
76 file_to_iov_physics = input_data[
"hlt_hadron"]
83 reduced_file_to_iov_physics = filter_by_max_files_per_run(file_to_iov_physics, max_files_per_run, min_events_per_file=1)
85 good_input_files = list(reduced_file_to_iov_physics.keys())
86 basf2.B2INFO(f
"Total number of files actually used as input = {len(good_input_files)}")
88 exps = [i.exp_low
for i
in reduced_file_to_iov_physics.values()]
89 runs = sorted([i.run_low
for i
in reduced_file_to_iov_physics.values()])
95 if not len(good_input_files):
96 print(
"No good input files found! Check that the input files have entries != 0!")
99 uniqueID =
"SVDCoGTimeCalibrations_Prompt_" + str(now.isoformat()) +
"_INFO:_3rdOrderPol_TBindep_Exp" + \
100 str(expNum) +
"_runsFrom" + str(firstRun) +
"to" + str(lastRun)
107 requested_iov = kwargs.get(
"requested_iov",
None)
108 output_iov = IoV(requested_iov.exp_low, requested_iov.run_low, -1, -1)
111 collector = register_module(
'SVDTimeCalibrationCollector')
112 collector.param(
"SVDClustersFromTracksName",
"SVDClustersFromTracks")
113 collector.param(
"SVDEventInfoName",
"SVDEventInfo")
114 collector.param(
"EventT0Name",
"EventT0")
115 collector.param(
"granularity",
"run")
118 algorithm = SVDCoGTimeCalibrationAlgorithm(uniqueID)
119 algorithm.setMinEntries(10000)
124 algorithms=algorithm,
125 input_files=good_input_files,
126 pre_collector_path=path,
134 for algorithm
in calibration.algorithms:
135 algorithm.params = {
"iov_coverage": output_iov}