ATLAS Offline Software
Toggle main menu visibility
Loading...
Searching...
No Matches
PhysicsAnalysis
DerivationFramework
DerivationFrameworkJetEtMiss
python
TriggerLists.py
Go to the documentation of this file.
1
# Copyright (C) 2002-2023 CERN for the benefit of the ATLAS collaboration
2
from
TriggerMenuMT.TriggerAPI.TriggerAPI
import
TriggerAPI
3
from
TriggerMenuMT.TriggerAPI.TriggerEnums
import
TriggerPeriod, TriggerType
4
from
DerivationFrameworkPhys.TriggerListsHelper
import
getTapisSession
5
from
AthenaConfiguration.AutoConfigFlags
import
GetFileMD
6
from
AthenaConfiguration.Enums
import
LHCPeriod
7
import
re
8
from
AthenaCommon.Logging
import
logging
9
log = logging.getLogger(
'DAODJetEtMissTriggerList'
)
10
11
# jet triggers (single Jets, prescaled and unprescaled)
12
def
jetTrig
(flags):
13
period2015tofuture = TriggerPeriod.y2015 | TriggerPeriod.y2016 | TriggerPeriod.y2017 | TriggerPeriod.y2018 | TriggerPeriod.future
14
period2017tofuture = TriggerPeriod.y2017 | TriggerPeriod.y2018 | TriggerPeriod.future
15
TriggerAPI.setConfigFlags(flags)
16
API_jetTrig = TriggerAPI.getActive(period2015tofuture, TriggerType.j_single)
17
# Large-radius multijet triggers
18
API_jetTrig += TriggerAPI.getActive(period2017tofuture,TriggerType.j_multi,matchPattern=
".*_a10t_.*"
)
19
# Eta-intercalibration triggers (one central, one forward jet)
20
API_jetTrig += TriggerAPI.getActive(period2015tofuture,TriggerType.j_multi,matchPattern=
"HLT_j.*_320eta490"
)
21
return
API_jetTrig
22
23
# electron triggers (unprescaled)
24
def
single_el_Trig
(flags):
25
if
flags.Trigger.EDMVersion <= 2:
26
TriggerAPI.setConfigFlags(flags)
27
allperiods = TriggerPeriod.y2015 | TriggerPeriod.y2016 | TriggerPeriod.y2017 | TriggerPeriod.y2018 | TriggerPeriod.future2e34
28
trigger_names = TriggerAPI.getLowestUnprescaledAnyPeriod(allperiods, triggerType=TriggerType.el, livefraction=0.8)
29
else
:
30
session = getTapisSession(flags)
31
lf = 0.8
# Prescale weighted life fraction of the GRL's LBs
32
trigger_names =
set
()
33
trigger_names = list(session.getLowestUnprescaled(triggerType=TriggerType.el, livefraction=lf).union(trigger_names))
34
return
trigger_names
35
36
def
multi_el_Trig
(flags):
37
TriggerAPI.setConfigFlags(flags)
38
API_multiElTriggers = TriggerAPI.getLowestUnprescaled(TriggerPeriod.y2015, TriggerType.el_multi) + TriggerAPI.getLowestUnprescaled(TriggerPeriod.y2016, TriggerType.el_multi) + TriggerAPI.getLowestUnprescaled(TriggerPeriod.y2017, TriggerType.el_multi) + TriggerAPI.getLowestUnprescaled(TriggerPeriod.y2018, TriggerType.el_multi) + TriggerAPI.getLowestUnprescaled(TriggerPeriod.future, TriggerType.el_multi)
39
return
API_multiElTriggers
40
41
# single muon triggers (unprescaled)
42
def
single_mu_Trig
(flags):
43
if
flags.Trigger.EDMVersion <= 2:
44
TriggerAPI.setConfigFlags(flags)
45
allperiods = TriggerPeriod.y2015 | TriggerPeriod.y2016 | TriggerPeriod.y2017 | TriggerPeriod.y2018 | TriggerPeriod.future2e34
46
trigger_names = TriggerAPI.getLowestUnprescaledAnyPeriod(allperiods, triggerType=TriggerType.mu, livefraction=0.8)
47
else
:
48
session = getTapisSession(flags)
49
lf = 0.8
# Prescale weighted life fraction of the GRL's LBs
50
trigger_names =
set
()
51
trigger_names = list(session.getLowestUnprescaled(triggerType=TriggerType.mu, livefraction=lf).union(trigger_names))
52
return
trigger_names
53
54
def
multi_mu_Trig
(flags):
55
TriggerAPI.setConfigFlags(flags)
56
API_multiMuTriggers = TriggerAPI.getLowestUnprescaled(TriggerPeriod.y2015, TriggerType.mu_multi) + TriggerAPI.getLowestUnprescaled(TriggerPeriod.y2016, TriggerType.mu_multi) + TriggerAPI.getLowestUnprescaled(TriggerPeriod.y2017, TriggerType.mu_multi) + TriggerAPI.getLowestUnprescaled(TriggerPeriod.y2018, TriggerType.mu_multi) + TriggerAPI.getLowestUnprescaled(TriggerPeriod.future, TriggerType.mu_multi)
57
return
API_multiMuTriggers
58
59
# xe triggers (unprescaled)
60
def
MET_Trig
(flags):
61
if
flags.Trigger.EDMVersion <= 2:
62
TriggerAPI.setConfigFlags(flags)
63
allperiods = TriggerPeriod.y2015 | TriggerPeriod.y2016 | TriggerPeriod.y2017 | TriggerPeriod.y2018 | TriggerPeriod.future2e34
64
trigger_names = TriggerAPI.getLowestUnprescaledAnyPeriod(allperiods, triggerType=TriggerType.xe, livefraction=0.8)
65
else
:
66
session = getTapisSession(flags)
67
lf = 0.8
# Prescale weighted life fraction of the GRL's LBs
68
trigger_names =
set
()
69
trigger_names = list(session.getLowestUnprescaled(triggerType=TriggerType.xe, livefraction=lf).union(trigger_names))
70
return
trigger_names
71
72
# photon triggers (prescaled and unprescaled)
73
def
single_photon_Trig
(flags):
74
if
flags.Trigger.EDMVersion <= 2:
75
TriggerAPI.setConfigFlags(flags)
76
allperiods = TriggerPeriod.y2015 | TriggerPeriod.y2016 | TriggerPeriod.y2017 | TriggerPeriod.y2018 | TriggerPeriod.future2e34
77
trigger_names = TriggerAPI.getActive(allperiods, triggerType=TriggerType.g, livefraction=0.8)
78
else
:
79
session = getTapisSession(flags)
80
lf = 0.8
# Prescale weighted life fraction of the GRL's LBs
81
trigger_names =
set
()
82
trigger_names = list(session.getLowestUnprescaled(triggerType=TriggerType.g, livefraction=lf).union(trigger_names))
83
return
trigger_names
84
85
# get jet triggers
86
# Run 2: returns list returned by trigAPI
87
# Run 3: TrigAPI doesn't return complete list. Adds additional jet triggers from file metadata
88
# and filters out unnecessary chains - ATLJETMET-1717.
89
# Use this function until trigAPI works for Run 3.
90
def
get_jetTrig
(flags):
91
92
trigger_list =
jetTrig
(flags)
93
94
if
flags.GeoModel.Run < LHCPeriod.Run3:
95
return
trigger_list
96
97
pattern = re.compile(
r"HLT_\d*j\d+"
)
98
vetoes = [
'PhysicsTLA'
,
'calratio'
,
'emergingPTF'
,
'dispjet'
,
'trackless'
,
'hitdvjet'
,
'bgn1'
,
'bgn2'
,
'bdl1'
,
'boffperf'
,
'xe'
,
'afprec'
,
'LArPEBHLT'
,
'TAU'
,
'XE'
,
'L1jLJ'
]
99
100
# retrieve trigger list from input file metadata
101
# and add to trigger_list from trigAPI
102
metadata = GetFileMD(flags.Input.Files)
103
menu = metadata[
'TriggerMenu'
]
104
if
not
menu:
105
log.error(
"TriggerMenu could not be retrieved from file metadata."
)
106
else
:
107
HLTChainskey =
'HLTChains'
108
if
HLTChainskey
not
in
menu:
109
log.error(
"HLTChains could not be retrieved from file metadata."
)
110
else
:
111
md_hltchains = menu[HLTChainskey]
112
log.info(f
"{len(md_hltchains)} HLT chains retrieved from file metadata"
)
113
trigger_list += md_hltchains
114
115
filtered_j_chains = []
116
for
chain
in
set
(trigger_list):
117
if
not
pattern.match(chain):
continue
118
if
any(v
in
chain
for
v
in
vetoes):
continue
119
filtered_j_chains.append(chain)
120
121
return
filtered_j_chains
set
STL class.
python.TriggerLists.jetTrig
jetTrig(flags)
Definition
TriggerLists.py:12
python.TriggerLists.single_photon_Trig
single_photon_Trig(flags)
Definition
TriggerLists.py:73
python.TriggerLists.MET_Trig
MET_Trig(flags)
Definition
TriggerLists.py:60
python.TriggerLists.get_jetTrig
get_jetTrig(flags)
Definition
TriggerLists.py:90
python.TriggerLists.single_el_Trig
single_el_Trig(flags)
Definition
TriggerLists.py:24
python.TriggerLists.multi_el_Trig
multi_el_Trig(flags)
Definition
TriggerLists.py:36
python.TriggerLists.single_mu_Trig
single_mu_Trig(flags)
Definition
TriggerLists.py:42
python.TriggerLists.multi_mu_Trig
multi_mu_Trig(flags)
Definition
TriggerLists.py:54
Generated on
for ATLAS Offline Software by
1.17.0