4 Simple script to import RunInfo from the DAQ database into conditions
6 As input you need a file which contains on each line the following
7 fields separated by whitespace::
9 exp run runtype StartTime StopTime receivedNevent AcceptedNevent sentNevent runLength
10 TriggerRate PXDflag SVDflag CDCflag TOPflag ARICHflag ECLflag KLMflag BadRun
16 from ROOT
import PyConfig
18 PyConfig.IgnoreCommandLineOptions =
True
20 PyConfig.StartGuiThread =
False
22 from ROOT
import Belle2
23 from basf2
import B2FATAL, B2ERROR, B2DEBUG, B2INFO
27 """Function returning the argument parser. Done this way for the automatic
28 documentation in sphinx"""
31 parser = argparse.ArgumentParser(description=__doc__, formatter_class=argparse.RawDescriptionHelpFormatter)
32 parser.add_argument(
"filename", help=
"Filename containing the run information, "
33 "one run per line with the values separated by whitespace")
41 if __name__ ==
"__main__":
43 args = parser.parse_args()
44 if not os.path.exists(args.filename):
45 B2FATAL(f
"Input filename {args.filename} does not exist")
53 with open(args.filename)
as f:
54 for i, line
in enumerate(f, 1):
66 exp, run, runtype, starttime, stoptime, receivedNevent, acceptedNevent,
67 sentNevent, runlength, trigger_rate, pxd, svd, cdc, top, arich, ecl,
68 klm, badrun = line.split()
71 info.setRunType(int(runtype))
72 info.setStartTime(int(starttime))
73 info.setStopTime(int(stoptime))
74 info.setReceivedNevent(int(receivedNevent))
75 info.setAcceptedNevent(int(acceptedNevent))
76 info.setSentNevent(int(sentNevent))
77 info.setRunLength(int(runlength))
78 info.setTriggerRate(double(trigger_rate))
79 info.setBelle2Detector(*[int(e)
for e
in (pxd, svd, cdc, top, arich, ecl, klm)])
80 info.setBadRun(int(badrun))
83 B2DEBUG(100, f
"Exp: {exp}\tRun: {run}\t RunType: {runtype} ...")
86 except Exception
as e:
87 B2ERROR(f
"Problem reading line {i}: {e}. Skipping ...")
97 B2INFO(f
"Imported {imported} RunInfo objects")
99 B2FATAL(f
"{errors} errors occured")