ATLAS Offline Software
Loading...
Searching...
No Matches
EventSelectionConfigSumLeptons_unitTest.py
Go to the documentation of this file.
1#!/usr/bin/env python
2# Copyright (C) 2002-2026 CERN for the benefit of the ATLAS collaboration
3"""Unit tests for SUM_EL_N_MU_N and SUM_EL_N_MU_N_TAU_N (SumNLeptonPtSelectorAlg)."""
4
5import unittest
6from EventSelectionAlgorithms.EventSelectionConfigTestSupport import run, named, prop
7
8ELMU = {"electrons": "AnaElectrons", "muons": "AnaMuons"}
9ELMUTAU = {"electrons": "AnaElectrons", "muons": "AnaMuons", "taus": "AnaTaus"}
10
11
12class TestSumElMu(unittest.TestCase):
14 algs = named(run("SUM_EL_N_MU_N 25000 >= 2", containers=ELMU), "SUMNELNMU")
15 self.assertEqual(len(algs), 1)
16 self.assertEqual(algs[0].getType(), "CP::SumNLeptonPtSelectorAlg")
17 self.assertEqual(prop(algs[0], "minPtEl"), 25000.0)
18 self.assertEqual(prop(algs[0], "minPtMu"), 25000.0)
19 self.assertEqual(prop(algs[0], "count"), 2)
20
22 algs = named(run("SUM_EL_N_MU_N 25000 27000 >= 2", containers=ELMU), "SUMNELNMU")
23 self.assertEqual(prop(algs[0], "minPtEl"), 25000.0)
24 self.assertEqual(prop(algs[0], "minPtMu"), 27000.0)
25
27 algs = named(run("SUM_EL_N_MU_N elsel musel 25000 27000 >= 2", containers=ELMU), "SUMNELNMU")
28 self.assertIn("elsel", prop(algs[0], "electronSelection"))
29 self.assertIn("musel", prop(algs[0], "muonSelection"))
30 self.assertEqual(prop(algs[0], "count"), 2)
31
33 self.assertRaises(ValueError, run, "SUM_EL_N_MU_N 25000 >= 2")
34
36 self.assertRaises(ValueError, run, "SUM_EL_N_MU_N 25000 27000 28000 >= 2", containers=ELMU)
37
38
39class TestSumElMuTau(unittest.TestCase):
41 algs = named(run("SUM_EL_N_MU_N_TAU_N 25000 >= 3", containers=ELMUTAU), "SUMNLEPTONS")
42 self.assertEqual(prop(algs[0], "minPtEl"), 25000.0)
43 self.assertEqual(prop(algs[0], "minPtMu"), 25000.0)
44 self.assertEqual(prop(algs[0], "minPtTau"), 25000.0)
45 self.assertEqual(prop(algs[0], "count"), 3)
46
48 algs = named(run("SUM_EL_N_MU_N_TAU_N 25000 27000 30000 >= 3", containers=ELMUTAU), "SUMNLEPTONS")
49 self.assertEqual(prop(algs[0], "minPtEl"), 25000.0)
50 self.assertEqual(prop(algs[0], "minPtMu"), 27000.0)
51 self.assertEqual(prop(algs[0], "minPtTau"), 30000.0)
52
54 algs = named(run("SUM_EL_N_MU_N_TAU_N esel msel tsel 25000 27000 30000 >= 3",
55 containers=ELMUTAU), "SUMNLEPTONS")
56 self.assertIn("esel", prop(algs[0], "electronSelection"))
57 self.assertIn("msel", prop(algs[0], "muonSelection"))
58 self.assertIn("tsel", prop(algs[0], "tauSelection"))
59
61 self.assertRaises(ValueError, run, "SUM_EL_N_MU_N_TAU_N 25000 27000 >= 3", containers=ELMUTAU)
62
63
64class TestSumDressedProperties(unittest.TestCase):
65 """useDressedProperties must be enabled when ANY input lepton container is a
66 truth container (not just the electron one)."""
67
69 algs = named(run("SUM_EL_N_MU_N 25000 >= 2",
70 containers={"electrons": "AnaElectrons", "muons": "AnaTruthMuons"}), "SUMNELNMU")
71 self.assertTrue(prop(algs[0], "useDressedProperties"))
72
74 # dressed kinematics exist only for truth electrons and muons,
75 # so a truth tau must NOT enable them.
76 algs = named(run("SUM_EL_N_MU_N_TAU_N 25000 >= 3",
77 containers={"electrons": "AnaElectrons", "muons": "AnaMuons",
78 "taus": "AnaTruthTaus"}), "SUMNLEPTONS")
79 self.assertFalse(prop(algs[0], "useDressedProperties", False))
80
82 algs = named(run("SUM_EL_N_MU_N_TAU_N 25000 >= 3",
83 containers={"electrons": "AnaElectrons", "muons": "AnaTruthMuons",
84 "taus": "AnaTaus"}), "SUMNLEPTONS")
85 self.assertTrue(prop(algs[0], "useDressedProperties"))
86
88 algs = named(run("SUM_EL_N_MU_N 25000 >= 2", containers=ELMU), "SUMNELNMU")
89 self.assertFalse(prop(algs[0], "useDressedProperties", False))
90
91
92if __name__ == "__main__":
93 unittest.main()
int run(int argc, char *argv[])