def test_default_constructor(self): """ Check that the default constructor returns a non-null object and does not throw an exception. """ try: tags = TQTaggable() except Exception as e: self.fail("Default constructor raise an exception: %s" % e) self.assertTrue(tags)
def setUp(self): """ Create an external file with a single, empty tree and create tags and a sample using the external file. """ # create temporary directory super(TQFilterObservableTest, self).setUp() # create ROOT file and empty tree file = TFile( os.path.join(self.tempdir, "TQFilterObservable.root"), "recreate") tree = TTree("NOMINAL", "") tree.Write() file.Close() # create tags and sample self.tags = TQTaggable("a=2.2,b=3.3") self.tags.setTagBool("c", True) self.sample = TQSample("sample") self.sample.importTags(self.tags) self.sample.setTreeLocation( os.path.join(self.tempdir, "TQFilterObservable.root:NOMINAL"))
def test_constructor_with_tag_string(self): """ Check that when a TQTaggable is created with a comma separated list of tags, the tags retrievable. """ tags = TQTaggable("tagA=1,tagB=2,tagC=hello") # check for existing tags self.assertEqual(tags.getTagIntegerDefault("tagA", 0), 1) self.assertEqual(tags.getTagIntegerDefault("tagB", 0), 2) self.assertEqual(tags.getTagStringDefault("tagC", ""), "hello") # check that no other tags exists self.assertEqual(tags.getTagIntegerDefault("tagD", 42), 42) self.assertEqual(tags.getTagStringDefault("tagC", ""), "hello")
def setUp(self): """ Create an external file with a tree (scalar and vector branch) and create tags and a sample using the external file. """ # create temporary directory super(TQTreeFormulaObservableTest, self).setUp() # create ROOT file and empty tree file = TFile( os.path.join(self.tempdir, "TQTreeFormulaObservable.root"), "recreate") tree = TTree("NOMINAL", "") x = array("d", [3.14]) tree.Branch("n_taus", x, "n_taus/D") vec = std_vector('double')() vec.push_back(1.42) vec.push_back(2.72) tree.Branch("tau_pt", vec) tree.Fill() x[0] = 42 vec.clear() vec.push_back(125.16) tree.Fill() tree.Write() file.Close() # create tags and sample self.tags = TQTaggable("a=n_taus,b=tau_pt") self.sample = TQSample("sample") self.sample.importTags(self.tags) self.sample = TQSample("sample") self.sample.setTreeLocation( os.path.join(self.tempdir, "TQTreeFormulaObservable.root:NOMINAL"))
class TQFilterObservableTest(TQPythonTest): """ Test the TQFilterObservable. """ def setUp(self): """ Create an external file with a single, empty tree and create tags and a sample using the external file. """ # create temporary directory super(TQFilterObservableTest, self).setUp() # create ROOT file and empty tree file = TFile( os.path.join(self.tempdir, "TQFilterObservable.root"), "recreate") tree = TTree("NOMINAL", "") tree.Write() file.Close() # create tags and sample self.tags = TQTaggable("a=2.2,b=3.3") self.tags.setTagBool("c", True) self.sample = TQSample("sample") self.sample.importTags(self.tags) self.sample.setTreeLocation( os.path.join(self.tempdir, "TQFilterObservable.root:NOMINAL")) def tearDown(self): # delete temporary directory super(TQFilterObservableTest, self).tearDown() def test_basic_retrieval(self): """ Test a TQFilterObservable can be created/retrieved via TQObservable. """ obs = TQObservable.getObservable("Filter($(a), $(b) > 3.)", self.tags) self.assertTrue(obs) def test_return_value(self): """ Test that the first argument is returned when the second argument is true. """ obs = TQObservable.getObservable("Filter($(a), $(b) > 3.)", self.tags) self.assertTrue(obs.initialize(self.sample)) self.assertEqual(obs.getNevaluations(), 1) self.assertEqual(obs.getValueAt(0), 2.2) def test_cut(self): """ Test that the observable does not return any value, when the second argument is false. """ obs = TQObservable.getObservable("Filter($(a), $(b) > 4.)", self.tags) self.assertTrue(obs.initialize(self.sample)) self.assertEqual(obs.getNevaluations(), 0) def test_multiple_retrieval(self): """ Test a TQFilterObservable can be created/retrieved via TQObservable and retrieved again with exactly the same expression. """ o1 = TQObservable.getObservable("Filter($(a), $(b) > 3.)", self.tags) self.assertTrue(o1) o2 = TQObservable.getObservable("Filter($(a), $(b) > 3.)", self.tags) self.assertTrue(o2) self.assertEqual(o1, o2) def test_multiple_retrieval_different_spaces(self): """ Test a TQFilterObservable can be created/retrieved via TQObservable and retrieved again with different number of spaces. """ o1 = TQObservable.getObservable("Filter($(a), [$(b)] > 3.)", self.tags) self.assertTrue(o1) o2 = TQObservable.getObservable("Filter($(a),[$(b)]> 3.)", self.tags) self.assertTrue(o2) self.assertEqual(o1, o2) def test_multiple_retrieval_with_bools(self): """ Test a TQFilterObservable can be created/retrieved via TQObservable and retrieved again with exactly the same expression when a boolean tag is used in the cut expression. """ o1 = TQObservable.getObservable("Filter($(a), $(b) > 3. && $(c))", self.tags) self.assertTrue(o1) o2 = TQObservable.getObservable("Filter($(a), $(b) > 3. && $(c))", self.tags) self.assertTrue(o2) self.assertEqual(o1, o2) def test_multiple_retrieval_with_bools_and_different_spaces(self): """ Test a TQFilterObservable can be created/retrieved via TQObservable and retrieved again with different usage of white spaces when a boolean tag is used in the cut expression. """ o1 = TQObservable.getObservable("Filter($(a), $(b) > 3. && $(c))", self.tags) self.assertTrue(o1) o2 = TQObservable.getObservable("Filter($(a),$(b)> 3. && $(c))", self.tags) self.assertTrue(o2) self.assertEqual(o1, o2)