10Test the tool b2file-mix and make sure it works.
16import b2test_utils
as b2tu
20 '''Class for populating the events with some random numbers.'''
26 self.
evt = ROOT.Belle2.PyStoreObj(
'EventMetaData')
33 self.
evt.setGeneratedWeight(ROOT.gRandom.Rndm())
36def path_for_test_file(events, output_name, seed):
37 b2.set_random_seed(seed)
39 main.add_module(
'EventInfoSetter', expList=0, runList=0, evtNumList=events)
41 main.add_module(
'RootOutput', outputFileName=output_name)
45if __name__ ==
'__main__':
47 with b2tu.clean_working_directory():
50 file_name_a =
'test_a.root'
51 file_name_b =
'test_b.root'
52 file_name_ab =
'test_ab.root'
55 b2tu.run_in_subprocess(target=path_for_test_file, events=events, output_name=file_name_a, seed=
'aaa')
56 b2tu.run_in_subprocess(target=path_for_test_file, events=events, output_name=file_name_b, seed=
'bbb')
57 subprocess.check_call([
'b2file-merge', file_name_ab, file_name_a, file_name_b])
60 subprocess.check_call([
'b2file-mix', file_name_a,
'-o',
'test1.root'])
61 metadata = b2.get_file_metadata(
'test1.root')
62 assert (metadata.getNEvents() == events)
65 subprocess.check_call([
'b2file-mix', file_name_a,
'-o',
'test2.root',
'-n',
'100'])
66 metadata = b2.get_file_metadata(
'test2.root')
67 assert (metadata.getNEvents() == 100)
70 subprocess.check_call([
'b2file-mix', file_name_a,
'-o',
'test3.root',
'--exp',
'114'])
71 metadata = b2.get_file_metadata(
'test3.root')
72 assert (metadata.getExperimentLow() == 114)
75 subprocess.check_call([
'b2file-mix', file_name_a, file_name_b,
'-o',
'test4.root',
'--seed',
'abc'])
76 metadata = b2.get_file_metadata(
'test4.root')
77 assert (metadata.getRandomSeed() ==
'abc')
78 subprocess.check_call([
'b2file-mix', file_name_a, file_name_b,
'-o',
'test5.root',
'--seed',
'abc'])
79 subprocess.check_call([
'b2file-mix', file_name_a, file_name_b,
'-o',
'test6.root',
'--seed',
'def'])
88 with ROOT.TFile.Open(file_name_ab)
as fileab:
89 treeab = fileab.Get(
'tree')
90 with ROOT.TFile.Open(
'test4.root')
as file4:
91 tree4 = file4.Get(
'tree')
92 with ROOT.TFile.Open(
'test5.root')
as file5:
93 tree5 = file5.Get(
'tree')
94 with ROOT.TFile.Open(
'test6.root')
as file6:
95 tree6 = file6.Get(
'tree')
96 for i, (eventab, event4, event5, event6)
in enumerate(zip(treeab, tree4, tree5, tree6)):
97 if i < 10
or i > 1990:
99 weightab = eventab.EventMetaData.getGeneratedWeight()
100 weight4 = event4.EventMetaData.getGeneratedWeight()
101 weight5 = event5.EventMetaData.getGeneratedWeight()
102 weight6 = event6.EventMetaData.getGeneratedWeight()
103 assert (weightab != weight4)
104 assert (weightab != weight6)
105 assert (weight4 == weight5)
106 counts += (weight4 != weight6)
108 assert (counts > 1800)