2 set_log_level(LogLevel.INFO)
11 from ROOT
import Belle2, TFile
12 from ROOT.Belle2
import SVD3SampleCoGTimeCalibrationAlgorithm
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 if moda.name() ==
'SVDSimpleClusterizer':
66 moda.param(
"Clusters",
'SVDClustersFromTracks')
67 moda.param(
"RecoDigits",
'SVDRecoDigitsFromTracks')
68 moda.param(
"ShaperDigits",
'SVDShaperDigitsFromTracks')
69 moda.param(
"timeAlgorithm", 1)
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")
93 collector.param(
"RawCoGBinWidth", 0.5)
96 algorithm = SVD3SampleCoGTimeCalibrationAlgorithm(uniqueID)
97 algorithm.setMinEntries(100)
98 algorithm.setAllowedTimeShift(2.)
103 algorithms=algorithm,
105 pre_collector_path=pre_collector(),
106 database_chain=[CentralDatabase(tag)
for tag
in tags],
107 output_patterns=
None,
108 max_files_per_collector_job=1,
116 if __name__ ==
"__main__":
126 good_input_files = []
129 for i
in input_files:
130 file_list = glob.glob(i)
133 tree = tf.Get(
"tree")
134 if tree.GetEntries() != 0:
135 good_input_files.append(f)
137 inputStringSplit = f.split(
"/")
138 for string
in inputStringSplit:
139 if string.startswith(
'r0'):
141 runNum = runs.append(int(s_run[1:6]))
142 if string.startswith(
'e0'):
144 expNum = int(s_exp[1:5])
151 if not len(good_input_files):
152 print(
"You have to specify some input file(s)\n"
153 "using the standard basf2 command line option - i")
154 print(
"See: basf2 -h")
159 uniqueID =
"SVD3SampleCoGTimeCalibrations_" + str(now.isoformat()) +
"_INFO:_3rdOrderPol_TBindep_Exp" + \
160 str(expNum) +
"_runsFrom" + str(firstRun) +
"to" + str(lastRun)
166 conditions.override_globaltags()
167 svdCoGCAF = SVDCoGTimeCalibration(good_input_files,
169 "online",
"Reco_master_patch_rel5"],
177 cal_fw.add_calibration(svdCoGCAF)