Belle II Software development
RootImport3.py
1#!/usr/bin/env python3
2
3
10'''
11DQM RootImport test
12Test import for Offline root file
13with histograms in subdirs
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 = "histin3.root"
23fileout = 'histout3.root'
24
25f = TFile(filein, "RECREATE")
26
27f.mkdir("TEST")
28f.cd("TEST")
29h_test = TH1F("test", "", 1, 0, 1)
30
31f.Write()
32f.Close()
33
34main = b2.create_path()
35
36dqminput = b2.register_module('DQMHistAnalysisInputRootFile')
37dqminput.param('FileList', [filein])
38dqminput.param('Experiment', 1)
39dqminput.param('RunType', 'null')
40dqminput.param('RunList', [1])
41dqminput.param('FillNEvent', 11)
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)