ATLAS Offline Software
Loading...
Searching...
No Matches
SUSYToolsConfig.py
Go to the documentation of this file.
1# Copyright (C) 2002-2025 CERN for the benefit of the ATLAS collaboration
2
3#==============================================================================
4# Provides configs for the tools used for SUSY Derivations
5#==============================================================================
6
7from AthenaConfiguration.ComponentAccumulator import ComponentAccumulator
8from AthenaConfiguration.ComponentFactory import CompFactory
9
10# SUSY20 TightBad flags, copied and adjusted from ​JetCommonConfig.py
11def SUSY20EventCleaningToolCfg(flags, cleaningLevel = "TightBad"):
12
13 """Configure the event/jet cleaning tool for SUSY20 derivations"""
14
15 acc = ComponentAccumulator()
16
17 from JetSelectorTools.JetSelectorToolsConfig import EventCleaningToolCfg, JetCleaningToolCfg
18
19 JetCleaningTool = acc.popToolsAndMerge(JetCleaningToolCfg(
20 flags,
21 name = "SUSY20JetCleaningTool_" + cleaningLevel + "_EMTopo",
22 jetdef = "AntiKt4EMTopoJets",
23 cleaningLevel = cleaningLevel,
24 useDecorations = False
25 ))
26 acc.addPublicTool(JetCleaningTool)
27
28 EventCleaningTool = acc.popToolsAndMerge(EventCleaningToolCfg(
29 flags,
30 name = "SUSY20EventCleaningTool_" + cleaningLevel + "_EMTopo",
31 cleaningLevel = cleaningLevel
32 ))
33 EventCleaningTool.JetCleanPrefix = "DFCommonJets_"
34 EventCleaningTool.OrDecorator = "passOR_EMTopo"
35 EventCleaningTool.JetContainer = "AntiKt4EMTopoJets"
36 EventCleaningTool.JetCleaningTool = JetCleaningTool
37 EventCleaningTool.DoDecorations = True
38 acc.addPublicTool(EventCleaningTool)
39
40 EventCleanAlg = CompFactory.EventCleaningTestAlg(
41 name = "SUSY20EventCleaningTestAlg_" + cleaningLevel + "_EMTopo",
42 EventCleaningTool = EventCleaningTool,
43 JetCollectionName = "AntiKt4EMTopoJets",
44 EventCleanPrefix = "DFCommonJets_",
45 CleaningLevel = cleaningLevel,
46 doEvent = True
47 )
48 acc.addEventAlgo(EventCleanAlg)
49
50 return acc
51
52# SUSY20 trigger skimming
53def SUSY20DTTriggerSkimmingToolCfg(flags, name, **kwargs):
54
55 """Configure the DT trigger skimming tool for SUSY20 derivations"""
56
57 # Trigger API for Run-1 and Run-2
58 if flags.Trigger.EDMVersion <= 2:
59
60 from TriggerMenuMT.TriggerAPI.TriggerAPI import TriggerAPI
61 from TriggerMenuMT.TriggerAPI.TriggerEnums import TriggerPeriod, TriggerType
62
63 allperiods = TriggerPeriod.y2015 | TriggerPeriod.y2016 | TriggerPeriod.y2017 | TriggerPeriod.y2018 | TriggerPeriod.future2e34
64
65 TriggerAPI.setConfigFlags(flags)
66 el_trig = TriggerAPI.getLowestUnprescaledAnyPeriod(allperiods, triggerType = TriggerType.el_single, livefraction = 0.8)
67 mu_trig = TriggerAPI.getLowestUnprescaledAnyPeriod(allperiods, triggerType = TriggerType.mu_single, livefraction = 0.8)
68 g_trig = TriggerAPI.getLowestUnprescaledAnyPeriod(allperiods, triggerType = TriggerType.g_single, livefraction = 0.8)
69 xe_trig = TriggerAPI.getLowestUnprescaledAnyPeriod(allperiods, triggerType = TriggerType.xe, livefraction = 0.8)
70
71 # Additional unprescaled met triggers for 2015
72 xe_trig += ['HLT_xe70', 'HLT_xe70_tc_lcw', 'HLT_noalg_L1J400', 'HLT_noalg_L1J420', 'HLT_noalg_L1J450']
73
74 # Merge and remove duplicates
75 triggers = el_trig + mu_trig + g_trig + xe_trig
76 triggers = sorted(list(set(triggers)))
77
78 # Run-3 and beyond
79 else:
80
81 from TriggerMenuMT.TriggerAPI.TriggerEnums import TriggerType
82 from DerivationFrameworkPhys.TriggerListsHelper import getTapisSession
83
84 # TriggerAPI Session based trigger lists
85 session = getTapisSession(flags)
86 triggers = set()
87 triggers = session.getLowestUnprescaled(triggerType = TriggerType.el_single, livefraction = 0.8).union(triggers)
88 triggers = session.getLowestUnprescaled(triggerType = TriggerType.mu_single, livefraction = 0.8).union(triggers)
89 triggers = session.getLowestUnprescaled(triggerType = TriggerType.g_single, livefraction = 0.8).union(triggers)
90 triggers = session.getLowestUnprescaled(triggerType = TriggerType.xe, livefraction = 0.8).union(triggers)
91
92 # Additional unprescaled triggers
93 triggers.update( ['HLT_e26_lhtight_ivarloose_L1EM22VHI', 'HLT_e60_lhmedium_L1EM22VHI', 'HLT_e140_lhloose_L1EM22VHI', 'HLT_e300_etcut_L1EM22VHI'] )
94 triggers.update( ['HLT_g140_loose_L1EM22VHI', 'HLT_g300_etcut_L1EM22VHI'] )
95 triggers.update( ['HLT_mu60_L1MU14FCH'] )
96 triggers.update( ['HLT_xe55_cell_xe70_tcpufit_xe90_pfsum_vssk_L1XE50', 'HLT_xe55_cell_xe70_tcpufit_xe95_pfsum_cssk_L1XE50', 'HLT_xe60_cell_xe95_pfsum_cssk_L1XE50', 'HLT_xe65_cell_xe100_mhtpufit_pf_L1XE50', 'HLT_xe65_cell_xe105_mhtpufit_em_L1XE50', 'HLT_xe75_cell_xe65_tcpufit_xe90_trkmht_L1XE50'] )
97
98 # Merge and remove duplicates
99 triggers = sorted(list(set(list(triggers))))
100
101 acc = ComponentAccumulator()
102 TriggerSkimmingTool = CompFactory.DerivationFramework.TriggerSkimmingTool
103 acc.addPublicTool(TriggerSkimmingTool
104 (
105 name,
106 TriggerListAND = [],
107 TriggerListOR = triggers,
108 **kwargs
109 ),
110 primary = True
111 )
112
113 return acc
STL class.
SUSY20DTTriggerSkimmingToolCfg(flags, name, **kwargs)
SUSY20EventCleaningToolCfg(flags, cleaningLevel="TightBad")