Belle II Software development
RootImport1.py
1#!/usr/bin/env python3
2
3
10'''
11DQM RootImport test
12Test import for Offline root file
13with histogram name include subdir prefix
14'''
15import os
16import basf2 as b2
17from ROOT import TFile, TH1F, gROOT
18
19gROOT.SetBatch(True)
20
21filein = "histin1.root"
22fileout = 'histout1.root'
23
24f = TFile(filein, "RECREATE")
25
26h_expno = TH1F("DQMInfo/expno", "1", 1, 0, 1)
27h_runno = TH1F("DQMInfo/runno", "1", 1, 0, 1)
28h_rtype = TH1F("DQMInfo/rtype", "null", 1, 0, 1)
29h_test = TH1F("TEST/test", "", 1, 0, 1)
30h_nevent = TH1F("DAQ/Nevent", "", 1, 0, 1)
31for n in range(0, 10):
32 h_nevent.Fill(n)
33
34f.Write()
35f.Close()
36
37main = b2.create_path()
38
39dqminput = b2.register_module('DQMHistAnalysisInputRootFile')
40dqminput.param('SelectHistograms', []) # leave blank to include all folders
41dqminput.param('FileList', [filein])
42dqminput.param('EventInterval', 0)
43dqminput.param("EnableRunInfo", True)
44main.add_module(dqminput)
45
46main.add_module("DQMHistAutoCanvas")
47
48dqmoutput = b2.register_module('DQMHistAnalysisOutputFile')
49dqmoutput.param('OutputFolder', './')
50dqmoutput.param('Filename', fileout)
51main.add_module(dqmoutput)
52
53# Process all events
54b2.process(main)
55
56expected = ["DQMInfo/c_info", "DAQ/c_Nevent", "DQMInfo/c_expno", "DQMInfo/c_runno", "DQMInfo/c_rtype", "TEST/c_test"]
57print("== resulting file content ==")
58f = TFile(fileout, "READ")
59for k in f.GetListOfKeys():
60 o = k.ReadObj()
61 print(o.ClassName(), k)
62 if o.GetName() == "DQMInfo/c_info":
63 if "Exp 1, Run 1, RunType null" not in o.GetTitle():
64 b2.B2ERROR(f"Run Info not found in {o.GetName()}: {o.GetTitle()}")
65 if o.GetName() in expected:
66 expected.remove(o.GetName())
67print("============================")
68if len(expected) > 0:
69 b2.B2ERROR("missing items in outfile: ", expected)
70
71os.remove(filein)
72os.remove(fileout)