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