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