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