8 from basf2
import _constwrapper
9 from b2test_utils
import configure_logging_for_tests
11 from ROOT
import Belle2
12 import multiprocessing
18 class DBInterface(unittest.TestCase):
19 def assertDeath(self, function, *args, **kwargs):
20 """Run function in child process and check if it died. Only way to check for B2FATAL"""
21 ctx = multiprocessing.get_context(
"fork")
22 p = ctx.Process(target=function, args=args, kwargs=kwargs)
25 self.assertNotEqual(p.exitcode, 0)
28 configure_logging_for_tests()
34 """Test object interface"""
37 self.assertFalse(bp.isValid())
41 vertex = ROOT.TVector3(1, 2, 3)
44 override_object.setVertex(vertex, ROOT.std.vector(
"double")())
48 self.assertTrue(bp.isValid())
52 self.assertDeath(
lambda:
Belle2.PyDBObj(
"BeamParameters", Belle2.PXDSimHit.Class()))
54 self.assertDeath(
lambda:
Belle2.PyDBArray(
"BeamParameters", Belle2.PXDSimHit.Class()))
57 self.assertEqual(bp.obj().getVertex(), vertex)
59 self.assertEqual(bp.getVertex(), vertex)
61 with self.assertRaises(AttributeError):
71 self.assertEqual(copy, bp.obj())
76 self.assertFalse(bplist.isValid())
78 override_array = ROOT.TClonesArray(
"Belle2::BeamParameters")
79 override_array.ExpandCreate(3)
80 for i
in range(override_array.GetEntriesFast()):
81 override_array[i].setVertex(ROOT.TVector3(i, i, i), ROOT.std.vector(
"double")())
86 self.assertTrue(bplist.isValid())
89 self.assertDeath(
lambda:
Belle2.PyDBArray(
"BeamParameterList", Belle2.PXDSimHit.Class()))
91 self.assertDeath(
lambda:
Belle2.PyDBObj(
"BeamParameterList", Belle2.PXDSimHit.Class()))
93 self.assertEqual(len(bplist), override_array.GetEntriesFast())
96 for i, e
in enumerate(bplist):
98 self.assertEqual(int(e.getVertex()[0]), i)
100 self.assertEqual(e, override_array[i])
102 self.assertEqual(e, bplist[i])
105 self.assertEqual(e, copy)
107 copy.setVertex(ROOT.TVector3(1, 2, 3), ROOT.std.vector(
"double")())
108 self.assertNotEqual(e, copy)
110 with self.assertRaises(AttributeError):
111 e.setVertex(ROOT.TVector3(1, 2, 3), ROOT.std.vector(
"double")())
113 self.assertEqual(i + 1, len(bplist))
116 with self.assertRaises(TypeError):
120 if __name__ ==
"__main__":
This class contains the nominal beam parameters and the parameters used for smearing of the primary v...
Class to access a DB Array from Python.
Class to access a DBObjPtr from Python.
static DBStore & Instance()
Instance of a singleton DBStore.