diff --git a/Trigger/TrigHypothesis/TrigHLTJetHypo/python/ChainLabelParser.py b/Trigger/TrigHypothesis/TrigHLTJetHypo/python/ChainLabelParser.py index 94504552e8862f4e05cf6cb60ed5adf572026ceb..1f107aa34c88b77807a563b9727e4205c467808d 100644 --- a/Trigger/TrigHypothesis/TrigHLTJetHypo/python/ChainLabelParser.py +++ b/Trigger/TrigHypothesis/TrigHLTJetHypo/python/ChainLabelParser.py @@ -331,8 +331,11 @@ class ChainLabelParser(object): def _test(s): from TrigHLTJetHypo.ChainLabelParser import ChainLabelParser parser = ChainLabelParser(s, debug=True) - tree = parser.parse() - print(tree.dump()) + trees = parser.parse() + + print ('No of trees produced: ', len(trees)) + for t in trees: + print(t.dump()) def test(): diff --git a/Trigger/TrigHypothesis/TrigHLTJetHypo/python/NodeSplitterVisitor.py b/Trigger/TrigHypothesis/TrigHLTJetHypo/python/NodeSplitterVisitor.py index 21f3ebb23e71077cbbc4dcbfedee76f3353f4d97..cae60ac9bbe46ca070557736c7bfab3ec4483aff 100644 --- a/Trigger/TrigHypothesis/TrigHLTJetHypo/python/NodeSplitterVisitor.py +++ b/Trigger/TrigHypothesis/TrigHLTJetHypo/python/NodeSplitterVisitor.py @@ -74,10 +74,6 @@ if __name__ == '__main__': l1SeedThresholds=['FSNOSEED']*3, groups=MultiJetGroup), - ChainProp(name='HLT_j0_vbenfSEP30etSEP34mass35SEP50fbet_L1J20', - l1SeedThresholds=['FSNOSEED'], - groups=MultiJetGroup), - ChainProp(name='HLT_10j40_L1J15', l1SeedThresholds=['FSNOSEED'], groups=MultiJetGroup), diff --git a/Trigger/TrigHypothesis/TrigHLTJetHypo/python/TrigJetHypoToolConfig.py b/Trigger/TrigHypothesis/TrigHLTJetHypo/python/TrigJetHypoToolConfig.py index 3baf21b31c73367fd37987b7191bd797d9c3596a..d46791a7c4df7d787d370d5cbaab763d730f600a 100644 --- a/Trigger/TrigHypothesis/TrigHLTJetHypo/python/TrigJetHypoToolConfig.py +++ b/Trigger/TrigHypothesis/TrigHLTJetHypo/python/TrigJetHypoToolConfig.py @@ -151,7 +151,10 @@ class TestStringMethods(unittest.TestCase): def testValidConfigs(self): from TriggerMenuMT.HLTMenuConfig.Menu.DictFromChainName import ( dictFromChainName,) - chain_names = ('HLT_j0_vbenfSEP30etSEP34mass35SEP50fbet_L1J20',) + + chain_names = ( + 'HLT_j0_fbdjnosharedSEP10etSEP20etSEP34massSEP50fbet_L1J20',) + wid = max(len(c) for c in chain_names) for chain_name in chain_names: chain_dict = dictFromChainName(chain_name) diff --git a/Trigger/TrigHypothesis/TrigHLTJetHypo/python/chainDict2jetLabel.py b/Trigger/TrigHypothesis/TrigHLTJetHypo/python/chainDict2jetLabel.py index f4e4451bbe9384ed8d24cf39c8658a31606a971c..d06990e10133342deff7bbfb5c37477b4326b2b6 100644 --- a/Trigger/TrigHypothesis/TrigHLTJetHypo/python/chainDict2jetLabel.py +++ b/Trigger/TrigHypothesis/TrigHLTJetHypo/python/chainDict2jetLabel.py @@ -95,45 +95,44 @@ def _cuts_from_momCuts(momCuts): return '' -def _make_vbenf_label(chain_parts, leg_label): +def _make_fbdjnoshared_label(chain_parts, leg_label): """Marshal information from the selected chainParts to create a - vbenf label. Use a Reducer for elimination of unusable jets + fbdjnoshared (forward-backward and dijet, no jet sharing) label. """ - # toy label for development: run simple and dijet independently. - # simple makes Et cuts on two jets. Independently (sharing possible) - # of jets choosean by simple, the dijet - # scenario requires a dijet of mass > 900, and opening angle in phi > 2.6 - assert len(chain_parts) == 1 scenario = chain_parts[0]['hypoScenario'] - assert scenario.startswith('vbenf') + assert scenario.startswith('f') args = _args_from_scenario(scenario) - if not args: - return 'all([]simple([(50et)(70et)])dijet([(900djmass, 26djdphi)] all[], all[])))' + + # arg res tuples constain a regex, and a counter + # to count the number of matches. arg_res = [ - re.compile(r'(?P<lo>\d*)(?P<key>fbet)(?P<hi>\d*)'), - re.compile(r'(?P<lo>\d*)(?P<key>mass)(?P<hi>\d*)'), - re.compile(r'(?P<lo>\d*)(?P<key>et)(?P<hi>\d*)'), + [re.compile(r'(?P<lo>\d*)(?P<key>fbet)(?P<hi>\d*)'), 0], + [re.compile(r'(?P<lo>\d*)(?P<key>mass)(?P<hi>\d*)'), 0], + [re.compile(r'(?P<lo>\d*)(?P<key>et)(?P<hi>\d*)'), 0], ] defaults = { - 'et': ('101', 'inf'), - 'mass': ('800', 'inf'), - 'fbet': ('501', 'inf'), + 'et0': ('101', 'inf'), + 'et1': ('103', 'inf'), + 'mass0': ('800', 'inf'), + 'fbet0': ('501', 'inf'), } argvals = {} + assert len(args) == len(arg_res) + 1 # +1 because et occurs twice. while args: - assert len(args) == len(arg_res) arg = args.pop() - for r in arg_res: - m = r.match(arg) + for ar in arg_res: + regx = ar[0] + occurence=ar[1] # no iof time this argument is used eg et used 2x + m = regx.match(arg) if m is not None: - arg_res.remove(r) gd = m.groupdict() - key = gd['key'] + key = gd['key'] + str(occurence) + ar[1] += 1 # bump the occurrence cout try: lo = float(gd['lo']) except ValueError: @@ -145,24 +144,24 @@ def _make_vbenf_label(chain_parts, leg_label): hi = defaults[key][1] argvals[key+'hi'] = hi - assert len(args) == len(arg_res) assert len(args) == 0 argvals['leg_label'] = leg_label + return """ all ( [] simple ( - [(%(fbetlo).0fet, 500neta, leg000)(%(fbetlo).0fet, peta500, %(leg_label)s)] + [(%(fbet0lo).0fet, 500neta, leg000)(%(fbet0lo).0fet, peta500, %(leg_label)s)] ) dijet ( - [(%(masslo).0fdjmass, 26djdphi)] + [(%(mass0lo).0fdjmass, 26djdphi)] simple ( - [(10et, 0eta320, leg000)(20et, 0eta320, %(leg_label)s)] + [(%(et0lo).0fet, 0eta320, leg000)(%(et1lo).0fet, 0eta320, %(leg_label)s)] ) ) )""" % argvals @@ -340,9 +339,9 @@ def chainDict2jetLabel(chain_dict): router = { 'simple': _make_simple_label, 'agg': _make_agg_label, - 'vbenf': _make_vbenf_label, 'dijet': _make_dijet_label, 'fbdjshared': _make_fbdjshared_label, + 'fbdjnoshared': _make_fbdjnoshared_label, } # chain_part - scenario association diff --git a/Trigger/TrigHypothesis/TrigHLTJetHypo/python/testChainDictMaker.py b/Trigger/TrigHypothesis/TrigHLTJetHypo/python/testChainDictMaker.py index ac2837ade4f77a1f58474c5f5127216df2df723a..9e37cfaa47b5ce3ffc9226f899391b5c4043a94a 100644 --- a/Trigger/TrigHypothesis/TrigHLTJetHypo/python/testChainDictMaker.py +++ b/Trigger/TrigHypothesis/TrigHLTJetHypo/python/testChainDictMaker.py @@ -44,10 +44,6 @@ def testChainDictMaker(): l1SeedThresholds=['FSNOSEED']*3, groups=MultiJetGroup), - ChainProp(name='HLT_j0_vbenfSEP30etSEP34mass35SEP50fbet_L1J20', - l1SeedThresholds=['FSNOSEED'], - groups=MultiJetGroup), - ChainProp(name='HLT_10j40_L1J15', l1SeedThresholds=['FSNOSEED'], groups=MultiJetGroup), @@ -55,8 +51,9 @@ def testChainDictMaker(): groups=SingleJetGroup), ChainProp(name='HLT_j0_fbdjshared_L1J20', groups=SingleJetGroup), - + ChainProp(name='HLT_j40_j0_aggSEP50htSEP10etSEP0eta320_L1J20',l1SeedThresholds=['FSNOSEED']*2, groups=MultiJetGroup), + ChainProp(name='HLT_j0_fbdjnosharedSEP10etSEP20etSEP34massSEP50fbet_L1J20', groups=SingleJetGroup), ] result = [] diff --git a/Trigger/TrigHypothesis/TrigHLTJetHypo/python/test_cases.py b/Trigger/TrigHypothesis/TrigHLTJetHypo/python/test_cases.py index 65ac32fc280af6f27d4170903559dd467554dde6..20946219824c9a31f36d3352998e4cda66e95100 100644 --- a/Trigger/TrigHypothesis/TrigHLTJetHypo/python/test_cases.py +++ b/Trigger/TrigHypothesis/TrigHLTJetHypo/python/test_cases.py @@ -2,133 +2,24 @@ from __future__ import print_function +# condition names are names of leaf node, or combining nodes +# existing condition names 6/1/2021: +# simple +# dijet +# agg +# all + test_strings = [ 'simple([(38et, 0eta320)])', 'simple([(38et, 0eta320)(40et, 0eta320)])', 'simple([(38et, 0eta320, 011jvt)])', - 'or([] simple([(10et)]) simple([(20et)(40et)]))', - 'and([] simple([(10et)]) simple([(20et)]))', - 'not([] simple([(10et)]))', - 'not([] and([] simple([(40et, 0eta320)]) simple([(100et, 0eta320)])))', - 'or([] not([] simple([(40et, 0eta320)])) not([] simple([(100et, 0eta320)])))', - 'or([] and([] simple([(40et, 0eta320)]) simple([(40et, 0eta320)])) not([] simple([(100et, 0eta320)])))', - - 'and([] simple([(50et)(70et)]) dijet([(900djmass, 26djdphi)]))', - 'and([]simple([(50et)(70et)])combgen([]dijet([(900djmass,26djdphi)]) simple([(10et)(20et)])))', - 'and([]simple([(81et)(81et)])combgen([(50et, eta100)]dijet([(26djdphi)])))', 'simple([(70et,0eta240)(70et,0eta240)(70et,0eta240)(70et,0eta240)(70et,0eta240)])', - 'partgen([(20et,0eta320)]simple([(40et,0eta320)(50et,0eta320)])simple([(35et,0eta240)(55et,0eta240)]))', 'simple([(10et, neta0)(20et, peta)])', # missing low value for eta - take default 'simple([(100momwidth200)])', # jet moment condition - # from HLT_j0_vbenfSEP30etSEP34mass35SEP50fbet_L1J20: - 'and([]simple([(30et,500neta)(30et,peta500)])combgen([(10et)]dijet([(34djmass,26djdphi)])simple([(10et)(20et)])))', 'qjet([(34qjmass)])', - """partgen([]simple([(neta)(peta)]) - combgen([] - qjet([(qjmass)]) - partgen([] - combgen([] - dijet([(djmass)]) - simple([(10et)(11et)])) - combgen([] - dijet([(djmass)]) - simple([(12et)(13et)])))))""", - - 'and([]simple([(30et,500neta)(30et,peta500)])combgen([(10et)]dijet([(34djmass,26djdphi)])simple([(10et)(20et)])))', - 'qjet([(34qjmass)])', - """partgen([]simple([(neta)(peta)]) - combgen([] - qjet([(qjmass)]) - partgen([] - combgen([] - dijet([(80djmass90)]) - simple([(84et)(84et)])) - combgen([] - dijet([(81djmass91)]) - simple([(84et)(84et)])))))""", - - """partgen([] - partgen([] - simple([(neta)(peta)]) - ) - combgen([] - qjet([(175qjmass177)]) - partgen([] - combgen([] - dijet([(79djmass90)]) - simple([(82et)(83et)])) - combgen([] - dijet([(79djmass91)]) - simple([(82et)(83et)])))))""", - - """partgen([] - partgen([] - simple([(neta, 84et)(peta, 84et)]) - ) - combgen([] - qjet([(170qjmass190)]) - partgen([] - combgen([] - dijet([(70djmass90)]) - simple([(10et)(11et)])) - combgen([] - dijet([(71djmass91)]) - simple([(12et)(13et)])))))""", - - - """partgen([] - combgen([] - dijet([(djmass90)]) - simple([(10et)(11et)])) - combgen([] - dijet([(79djmass91)]) - simple([(12et)(13et)])))""", - - - """partgen([] - combgen([] - dijet([(djmass50)]) - simple([(10et)(11et)])) - combgen([] - dijet([(79djmass101)]) - simple([(12et)(13et)])))""", - - - """partgen([] - partgen([] - simple([(neta, 50et)(peta, 51et)]) - ) - combgen([] - qjet([(300qjmass400)]) - partgen([] - combgen([] - dijet([(50djmass200)]) - simple([(10et)(11et)])) - - - combgen([] - dijet([(50djmass200)]) - simple([(12et)(13et)])) - ) - ) - )""", - - # use an "And" node for VBENFQ with FB sharing - """partgen([] - partgen([] - simple([(neta, 84et)(peta, 84et)]) - ) - combgen([] - qjet([(170qjmass190)]) - and([] - combgen([] - dijet([(70djmass90)]) - simple([(10et)(11et)])) - combgen([] - dijet([(71djmass91)]) - simple([(12et)(13et)])))))""", - # forest + + # forest: forward backward jets + dijet sharing """simple ( [(50et, 500neta, leg000)(50et, peta500, leg000)] @@ -140,8 +31,24 @@ test_strings = [ ( [(10et, 0eta320, leg000)(20et, 0eta320, leg000)] ) - )""" - + )""", + + # single tree forward backward jets + dijet no sharing + """ all([] + simple + ( + [(50et, 500neta, leg000)(50et, peta500, leg000)] + ) + dijet + ( + [(34mass, 26djdphi, leg000)] + simple + ( + [(10et, 0eta320, leg000)(20et, 0eta320, leg000)] + ) + ) + )""", + ] diff --git a/Trigger/TrigValidation/TrigAnalysisTest/share/ref_RDOtoRDOTrig_v1Dev_build.ref b/Trigger/TrigValidation/TrigAnalysisTest/share/ref_RDOtoRDOTrig_v1Dev_build.ref index 32bad6f32fc2865cf5fdeac9f0338af5dfdead7c..c05cb494aedbeb696ed4a5a63a9de3c76408ad26 100644 --- a/Trigger/TrigValidation/TrigAnalysisTest/share/ref_RDOtoRDOTrig_v1Dev_build.ref +++ b/Trigger/TrigValidation/TrigAnalysisTest/share/ref_RDOtoRDOTrig_v1Dev_build.ref @@ -1614,20 +1614,20 @@ HLT_j0_aggSEP500htSEP30etSEP0eta320_L1J20: 0: 1 stepFeatures: 0: 5 -HLT_j0_fbdjshared_L1J20: +HLT_j0_fbdjnosharedSEP10etSEP20etSEP34massSEP50fbet_L1J20: eventCount: 7 stepCounts: 0: 7 stepFeatures: - 0: 179 -HLT_j0_perf_L1J12_EMPTY: - eventCount: 0 -HLT_j0_vbenfSEP30etSEP34mass35SEP50fbet_L1J20: + 0: 176 +HLT_j0_fbdjshared_L1J20: eventCount: 7 stepCounts: 0: 7 stepFeatures: - 0: 176 + 0: 179 +HLT_j0_perf_L1J12_EMPTY: + eventCount: 0 HLT_j225_subjesgscIS_ftf_bmv2c1040_split_L1J100: eventCount: 0 stepCounts: diff --git a/Trigger/TrigValidation/TriggerTest/share/ref_data_v1Dev_build.ref b/Trigger/TrigValidation/TriggerTest/share/ref_data_v1Dev_build.ref index cb1ca037c665a94377ae1c82c3fe46eedcb92e5a..7ac426fee1f5de2c5881ab2f8da8d99227e3c24f 100644 --- a/Trigger/TrigValidation/TriggerTest/share/ref_data_v1Dev_build.ref +++ b/Trigger/TrigValidation/TriggerTest/share/ref_data_v1Dev_build.ref @@ -754,6 +754,12 @@ HLT_j0_aggSEP1000htSEP30etSEP0eta320_L1J20: eventCount: 0 HLT_j0_aggSEP500htSEP30etSEP0eta320_L1J20: eventCount: 0 +HLT_j0_fbdjnosharedSEP10etSEP20etSEP34massSEP50fbet_L1J20: + eventCount: 1 + stepCounts: + 0: 1 + stepFeatures: + 0: 9 HLT_j0_fbdjshared_L1J20: eventCount: 1 stepCounts: @@ -766,12 +772,6 @@ HLT_j0_perf_L1J12_EMPTY: 0: 8 stepFeatures: 0: 127 -HLT_j0_vbenfSEP30etSEP34mass35SEP50fbet_L1J20: - eventCount: 1 - stepCounts: - 0: 1 - stepFeatures: - 0: 9 HLT_j225_subjesgscIS_ftf_bmv2c1040_split_L1J100: eventCount: 0 HLT_j260_320eta490_L1J20: diff --git a/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Menu/LS2_v1.py b/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Menu/LS2_v1.py index e25904294e75834f762a474b64c896149dd2f95b..9a959c437311cab9169f1879e3ab7a2e5b4fa8ea 100644 --- a/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Menu/LS2_v1.py +++ b/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Menu/LS2_v1.py @@ -272,6 +272,7 @@ def setupMenu(): ChainProp(name='HLT_2j330_a10t_lcw_nojcalib_35smcINF_L1J100', groups=SingleJetGroup), ChainProp(name='HLT_j460_a10sd_lcw_nojcalib_L1J100', groups=SingleJetGroup), ChainProp(name='HLT_j460_a10sd_pf_nojcalib_ftf_L1J100', groups=SingleJetGroup), + ChainProp(name='HLT_j460_a10sd_cssk_pf_nojcalib_ftf_L1J100', groups=SingleJetGroup), ChainProp(name='HLT_j460_a10sd_cssk_pf_nojcalib_ftf_35smcINF_L1J100', groups=SingleJetGroup), ChainProp(name='HLT_2j330_a10sd_cssk_pf_nojcalib_ftf_35smcINF_L1J100', groups=SingleJetGroup), @@ -279,7 +280,7 @@ def setupMenu(): ChainProp(name='HLT_j460_a10sd_cssk_pf_jes_ftf_35smcINF_L1J100', groups=SingleJetGroup), ChainProp(name='HLT_2j330_a10sd_cssk_pf_jes_ftf_35smcINF_L1J100', groups=SingleJetGroup), - ChainProp(name='HLT_j0_vbenfSEP30etSEP34mass35SEP50fbet_L1J20', groups=SingleJetGroup), + ChainProp(name='HLT_j0_fbdjnosharedSEP10etSEP20etSEP34massSEP50fbet_L1J20', groups=SingleJetGroup), ChainProp(name='HLT_j0_fbdjshared_L1J20', groups=SingleJetGroup), ChainProp(name='HLT_j0_aggSEP1000htSEP30etSEP0eta320_L1J20', groups=SingleJetGroup), diff --git a/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Menu/SignatureDicts.py b/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Menu/SignatureDicts.py index dd4c659eb0e953a7c3ce98a03f97ff599dbd906e..7bef34580843048e9cf09fcaca0f1c50ff903417 100644 --- a/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Menu/SignatureDicts.py +++ b/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Menu/SignatureDicts.py @@ -134,9 +134,8 @@ JetChainParts = { # other dict contents. If it is not 'simple', then the configuration is 100% # from the hypoScenario specification, and all other hypo entries are ignored. 'hypoScenario' : ['simple', # Independent selections on individual jets, multiplicity+threshold cuts - 'vbenf', # Test VBF-like chain - 'fbdjshared', # Test VBF-like chain with dijet-fworward/backward sharing - 'vbenfSEP30etSEP34mass35SEP50fbet', # Test VBF-like chain with more info + 'fbdjshared', # Forward backward jets + dijet, default parameters, fb and dj can share + 'fbdjnosharedSEP10etSEP20etSEP34massSEP50fbet', # f/b jets + dijet, expl. parameters, fb and dj do not share 'dijetSEP80j1etSEP0j1eta240SEP80j2etSEP0j2eta240SEP700djmass', # Test dijet mass sel # 'agg' category is for single variable computed by aggregation over single jets 'aggSEP1000htSEP30etSEP0eta320', # HT selection with explicit jet et/eta cuts