22from caf
import backends
23from caf.framework
import Calibration, CAF
24from caf.strategies
import SingleIOV
25from ROOT.Belle2
import TOP
26from basf2
import B2ERROR
30globalTags = [
'online']
32data_dir =
'/ghi/fs01/belle2/bdata/group/detector/TOP/2019-*/data_sroot_global/'
33main_output_dir =
'top_calibration'
35calpulse_min_time = 50.0
36calpulse_max_time = 120.0
37tts_file =
'/group/belle2/group/detector/TOP/calibration/MCreferences/TTSParametrizations.root'
38laser_mc_fit =
'/group/belle2/group/detector/TOP/calibration/MCreferences/laserMCFit.root'
39fit_mode =
'calibration'
47 print(
"usage: basf2", argvs[0],
"experiment run_1 run_2 ... run_n")
49experiment = int(argvs[1])
50run_numbers = sorted([int(r)
for r
in argvs[2:]])
51run_first = run_numbers[0]
52run_last = run_numbers[-1]
56expNo =
'e' + f
'{experiment:04d}'
57for run
in run_numbers:
58 expRun = f
'{experiment:04d}' +
'.' + f
'{run:05d}'
60 filename = f
"{data_dir}/top.{expRun}.*.sroot"
62 filename = f
"{data_dir}/top.{expRun}.*.root"
63 inputFiles += glob.glob(filename)
64if len(inputFiles) == 0:
65 runs =
"".join([str(r) +
"," for r
in run_numbers])[:-1]
66 B2ERROR(f
'No root files found in {data_dir} for exp={str(experiment)} runs={runs}')
70if not os.path.isfile(tts_file):
71 B2ERROR(f
"File {tts_file} not found")
73if not os.path.isfile(laser_mc_fit):
74 B2ERROR(f
"File {laser_mc_fit} not found")
78run_range =
'r' + f
'{run_first:05d}' +
'-' + f
'{run_last:05d}'
79output_dir = f
"{main_output_dir}/channelT0-local-{expNo}-{run_range}"
85def channelT0_calibration(sroot=False):
87 calibration of channel T0 with laser data
88 :param sroot:
True if input files are
in sroot format,
False if in root format
92 main = basf2.create_path()
96 main.add_module(
'SeqRootInput')
98 main.add_module(
'RootInput')
99 main.add_module(
'TOPGeometryParInitializer')
100 main.add_module(
'TOPUnpacker')
101 main.add_module(
'TOPRawDigitConverter',
102 useSampleTimeCalibration=
True,
103 useAsicShiftCalibration=
True,
104 useChannelT0Calibration=
False,
105 useModuleT0Calibration=
False,
106 useCommonT0Calibration=
False,
107 calpulseHeightMin=200,
108 calpulseHeightMax=680,
109 calpulseWidthMin=1.5,
110 calpulseWidthMax=2.2,
111 calpulseTimeMin=calpulse_min_time,
112 calpulseTimeMax=calpulse_max_time,
113 calibrationChannel=0,
114 lookBackWindows=look_back)
117 collector = basf2.register_module(
'TOPLaserCalibratorCollector')
118 collector.param(
'useReferencePulse',
True)
119 collector.param(
'storeMCTruth',
False)
120 collector.param(
'refChannel', 0)
121 collector.param(
'refSlot', 4)
125 algorithm = TOP.TOPLocalCalFitter()
126 algorithm.setFitMode(fit_mode)
127 algorithm.setTTSFileName(tts_file)
128 algorithm.setFitConstraintsFileName(laser_mc_fit)
131 cal =
Calibration(name=
'TOP_channelT0', collector=collector,
132 algorithms=algorithm, input_files=inputFiles)
133 for globalTag
in reversed(globalTags):
134 cal.use_central_database(globalTag)
135 for localDB
in reversed(localDBs):
136 cal.use_local_database(localDB)
137 cal.pre_collector_path = main
138 cal.max_files_per_collector_job = 1
139 cal.strategies = SingleIOV
144cal = channelT0_calibration(sroot_format)
145cal.backend_args = {
"queue":
"l"}
149cal_fw.add_calibration(cal)
150cal_fw.output_dir = output_dir
151cal_fw.backend = backends.LSF()