ATLAS Offline Software
SUSYToolsConfig.py
Go to the documentation of this file.
1 # Copyright (C) 2002-2024 CERN for the benefit of the ATLAS collaboration
2 
3 #==============================================================================
4 # Provides configs for the tools used for SUSY Derivations
5 #==============================================================================
6 
7 from AthenaConfiguration.ComponentAccumulator import ComponentAccumulator
8 from AthenaConfiguration.ComponentFactory import CompFactory
9 
10 # SUSY20 TightBad flags, copied and adjusted from ​JetCommonConfig.py
11 def 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 = "AntiKt4EMTopo",
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
53 def 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
DerivationFramework::TriggerMatchingUtils::sorted
std::vector< typename R::value_type > sorted(const R &r, PROJ proj={})
Helper function to create a sorted vector from an unsorted range.
python.JetAnalysisCommon.ComponentAccumulator
ComponentAccumulator
Definition: JetAnalysisCommon.py:302
python.JetSelectorToolsConfig.EventCleaningToolCfg
def EventCleaningToolCfg(ConfigFlags, name, cleaningLevel)
Definition: JetSelectorToolsConfig.py:14
python.JetSelectorToolsConfig.JetCleaningToolCfg
def JetCleaningToolCfg(ConfigFlags, name, jetdef, cleaningLevel, useDecorations)
Definition: JetSelectorToolsConfig.py:6
python.SUSYToolsConfig.SUSY20DTTriggerSkimmingToolCfg
def SUSY20DTTriggerSkimmingToolCfg(flags, name, **kwargs)
Definition: SUSYToolsConfig.py:53
histSizes.list
def list(name, path='/')
Definition: histSizes.py:38
python.SUSYToolsConfig.SUSY20EventCleaningToolCfg
def SUSY20EventCleaningToolCfg(flags, cleaningLevel="TightBad")
Definition: SUSYToolsConfig.py:11
CxxUtils::set
constexpr std::enable_if_t< is_bitmask_v< E >, E & > set(E &lhs, E rhs)
Convenience function to set bits in a class enum bitmask.
Definition: bitmask.h:232
python.TriggerListsHelper.getTapisSession
def getTapisSession(flags)
Definition: TriggerListsHelper.py:32