2 set_log_level(LogLevel.INFO)
11 from ROOT
import Belle2, TFile
12 from ROOT.Belle2
import SVDCoGTimeCalibrationAlgorithm
14 from caf.framework
import Calibration, CAF, Collection, LocalDatabase, CentralDatabase
15 from caf
import backends
16 from caf
import strategies
17 from caf.utils
import ExpRun, IoV
19 import reconstruction
as reco
20 import modularAnalysis
as ana
21 from caf.strategies
import SequentialBoundaries
25 'SVDShaperDigitsFromTracks',
32 now = datetime.datetime.now()
35 def remove_module(path, name):
37 new_path = create_path()
38 for m
in path.modules():
40 new_path.add_module(m)
48 B2INFO(
"Pre-collector")
49 pre_path = create_path()
50 pre_path.add_module(
'RootInput', branchNames=input_branches)
52 pre_path.add_module(
"Gearbox")
53 pre_path.add_module(
"Geometry", useDB=
True)
59 reco.add_svd_reconstruction(pre_path)
61 for moda
in pre_path.modules():
62 if moda.name() ==
'SVDCoGTimeEstimator':
63 moda.param(
"ShaperDigits",
'SVDShaperDigitsFromTracks')
64 moda.param(
"RecoDigits",
'SVDRecoDigitsFromTracks')
65 moda.param(
"CalibrationWithEventT0",
False)
66 if moda.name() ==
'SVDSimpleClusterizer':
67 moda.param(
"Clusters",
'SVDClustersFromTracks')
68 moda.param(
"RecoDigits",
'SVDRecoDigitsFromTracks')
69 moda.param(
"timeAlgorithm", 0)
70 if moda.name() ==
'SVDSpacePointCreator':
71 moda.param(
"SVDClusters",
'SVDClustersFromTracks')
73 pre_path = remove_module(pre_path,
'SVDMissingAPVsClusterCreator')
80 def SVDCoGTimeCalibration(files, tags, uniqueID):
85 path.add_module(
'Progress')
88 collector = register_module(
'SVDTimeCalibrationCollector')
89 collector.param(
"SVDClustersFromTracksName",
"SVDClustersFromTracks")
90 collector.param(
"SVDEventInfoName",
"SVDEventInfo")
91 collector.param(
"EventT0Name",
"EventT0")
92 collector.param(
"granularity",
"run")
95 algorithm = SVDCoGTimeCalibrationAlgorithm(uniqueID)
96 algorithm.setMinEntries(100)
97 algorithm.setAllowedTimeShift(2.)
102 algorithms=algorithm,
104 pre_collector_path=pre_collector(),
105 database_chain=[CentralDatabase(tag)
for tag
in tags],
106 output_patterns=
None,
107 max_files_per_collector_job=1,
115 if __name__ ==
"__main__":
125 good_input_files = []
128 for i
in input_files:
129 file_list = glob.glob(i)
132 tree = tf.Get(
"tree")
133 if tree.GetEntries() != 0:
134 good_input_files.append(f)
136 inputStringSplit = f.split(
"/")
137 for string
in inputStringSplit:
138 if string.startswith(
'r0'):
140 runNum = runs.append(int(s_run[1:6]))
141 if string.startswith(
'e0'):
143 expNum = int(s_exp[1:5])
150 if not len(good_input_files):
151 print(
"You have to specify some input file(s)\n"
152 "using the standard basf2 command line option - i")
153 print(
"See: basf2 -h")
158 uniqueID =
"SVDCoGTimeCalibrations_" + str(now.isoformat()) +
"_INFO:_3rdOrderPol_TBindep_Exp" + \
159 str(expNum) +
"_runsFrom" + str(firstRun) +
"to" + str(lastRun)
165 conditions.override_globaltags()
166 svdCoGCAF = SVDCoGTimeCalibration(good_input_files,
168 "data_reprocessing_proc11_baseline",
169 "staging_data_reprocessing_proc11",
170 "svd_NOCoGCorrections"],
174 cal_fw.add_calibration(svdCoGCAF)