Loading [MathJax]/extensions/tex2jax.js
ATLAS Offline Software
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Modules Pages
Chains.py
Go to the documentation of this file.
1 #
2 # Copyright (C) 2002-2025 CERN for the benefit of the ATLAS collaboration
3 #
4 
5 # NB: this file is autogenerated, do not edit directly
6 
7 class Chains:
8  def get_menu_dict(self):
9  d = {}
10 
11  d["electron"] = {
12  "chains": [
13  'HLT_e26_idperf_loose_L1eEM26M',
14  'HLT_e26_idperf_tight_L1eEM26M',
15  'HLT_e28_idperf_loose_L1eEM28M',
16 
17  'HLT_e5_idperf_tight_L1eEM5',
18  'HLT_e5_idperf_tight_nogsf_L1eEM5',
19 
20  ],
21  "signature": ['Egamma'],
22  "menu": ''
23  }
24 
25  d["electronTnP"] = {
26  "chains": [
27  'HLT_e26_idperf_loose_L1eEM26M',
28  'HLT_e26_lhtight_e14_idperf_tight_nogsf_probe_50invmAB130_L1eEM26M',
29  'HLT_e26_lhtight_e14_idperf_tight_probe_50invmAB130_L1eEM26M',
30  'HLT_e28_idperf_loose_L1eEM28M',
31 
32  ],
33  "signature": ['Egamma'],
34  "menu": ''
35  }
36 
37  d["electronLRT"] = {
38  "chains": [
39  'HLT_e20_idperf_loose_lrtloose_L1eEM18L',
40  'HLT_e26_lhtight_ivarloose_e30_lhloose_nopix_lrtmedium_probe_L1eEM26M',
41  'HLT_e26_lhtight_ivarloose_e5_idperf_loose_lrtloose_probe_L1eEM26M',
42  'HLT_e30_idperf_loose_lrtloose_L1eEM26M',
43  'HLT_e30_lhloose_nopix_lrtmedium_probe_g25_medium_L1eEM24L',
44  'HLT_e5_idperf_loose_lrtloose_probe_g25_medium_L1eEM24L',
45 
46  ],
47  "signature": ['Egamma'],
48  "menu": ''
49  }
50 
51  d["muon"] = {
52  "chains": [
53  'HLT_mu24_idperf_L1MU14FCH',
54  'HLT_mu26_ivarperf_L1MU14FCH',
55 
56  'HLT_mu4_mu4_idperf_1invmAB5_L12MU3VF',
57  'HLT_mu6_idperf_L1MU5VF',
58 
59  ],
60  "signature": ['Muon'],
61  "menu": ''
62  }
63 
64  d["muonTnP"] = {
65  "chains": [
66  'HLT_mu14_mu14_idtp_idZmumu_L12MU8F',
67  'HLT_mu24_idperf_L1MU14FCH',
68 
69  ],
70  "signature": ['Muon'],
71  "menu": ''
72  }
73 
74  d["muonLRT"] = {
75  "chains": [
76  'HLT_mu20_LRT_idperf_L1MU14FCH',
77  'HLT_mu24_idperf_L1MU14FCH',
78 
79  ],
80  "signature": ['Muon'],
81  "menu": ''
82  }
83 
84  d["tau"] = {
85  "chains": [
86  'HLT_tau25_idperf_tracktwoMVA_L1cTAU20M',
87 
88  ],
89  "signature": ['Tau'],
90  "menu": ''
91  }
92 
93  d["tauLRT"] = {
94  "chains": [
95  'HLT_tau25_idperf_trackLRT_L1cTAU20M',
96  'HLT_tau25_idperf_tracktwoLLP_L1cTAU20M',
97 
98  ],
99  "signature": ['Tau'],
100  "menu": 'Dev_pp_run3_v1'
101  }
102 
103  d["FSLRT"] = {
104  "chains": [
105  'HLT_fslrt0_L1jJ160',
106 
107  ],
108  "signature": ['UnconventionalTracking'],
109  "menu": 'Dev_pp_run3_v1'
110  }
111 
112  d["bjet"] = {
113  "chains": [
114  'HLT_j20_roiftf_preselj20_L1RD0_FILLED',
115  'HLT_j45_0eta290_020jvt_boffperf_pf_ftf_L1jJ50',
116  'HLT_j80_0eta290_020jvt_boffperf_pf_ftf_L1jJ90',
117 
118  ],
119  "signature": ["Bjet"],
120  "menu": ''
121  }
122 
123  d["fsjet"] = {
124  "chains": [
125  'HLT_j45_0eta290_020jvt_boffperf_pf_ftf_L1jJ50',
126  'HLT_j45_pf_ftf_preselj20_L1jJ40',
127  'HLT_j80_0eta290_020jvt_boffperf_pf_ftf_L1jJ90',
128 
129  ],
130  "signature": ["Jet"],
131  "menu": ''
132  }
133 
134  d["minbias"] = {
135  "chains": [
136  'HLT_mb_sptrk_L1RD0_FILLED',
137 
138  ],
139  "signature": ["MinBias"],
140  "menu": 'PhysicsP1_pp_lowMu_run3_v1'
141  }
142 
143  d["minbiaspix"] = {
144  "chains": [
145  'HLT_mb_pixsptrk_nototpix20_q2_L1TRT_ZDC_A_C_VjTE10',
146 
147  ],
148  "signature": ["MinBias"],
149  "menu": 'PhysicsP1_HI_run3_v1'
150  }
151 
152  d["cosmic"] = {
153  "chains": [
154  'HLT_mu4_cosmic_L1MU3V_EMPTY',
155 
156  ],
157  "signature": ['Muon','Cosmic',],
158  "menu": 'Cosmic_run3_v1'
159  }
160 
161  d["bphys"] = {
162  "chains": [
163  'HLT_2mu4_bBmumux_BsmumuPhi_L12MU3V',
164  'HLT_mu11_mu6_bBmumux_Bidperf_L1MU8VF_2MU5VF',
165 
166  ],
167  "signature": ['Muon','Bphysics',],
168  "menu": ''
169  }
170 
171  return d
172 
173  def get_values(self, slice_names: list, prop: str) -> set:
174  values = set()
175  d = self.get_menu_dict()
176 
177  for sn in slice_names:
178  if sn not in d:
179  raise RuntimeError("Undefined slice name {}".format(sn))
180  cfg = d[sn]
181 
182  if prop in cfg:
183  values.update(cfg[prop])
184 
185  return values
186 
187  def get_flag_str(self, slice_names: list, prop: str, flag_name: str) -> str:
188  values = self.get_values(slice_names, prop)
189 
190  cs = ["'{}'".format(v) for v in values]
191  return "flags.Trigger.{0}=[{1}]".format(flag_name, ",".join(cs))
192 
193  def get_selectChains_flag(self, slice_names: list) -> str:
194  return self.get_flag_str(slice_names, "chains", "selectChains")
195 
196  def get_enabledSignatures_flag(self, slice_names: list) -> str:
197  return self.get_flag_str(slice_names, "signature", "enabledSignatures")
198 
199  def get_menu_flag(self, slice_names: list) -> str:
200  d = self.get_menu_dict()
201  values = set()
202 
203  for sn in slice_names:
204  cfg = d[sn]
205 
206  if(cfg["menu"] == ''):
207  continue
208 
209  values.add(cfg["menu"])
210 
211  if(len(values) > 1):
212  raise RuntimeError("Multiple menus specified, configured slices {0} conflict between {1}".format(slice_names, values))
213 
214  if(len(values) == 0):
215  return ""
216 
217  return "flags.Trigger.triggerMenuSetup='{}'".format(list(values)[0])
218 
219  def get_compiled_flag_str(self, slice_names: list) -> str:
220  flags = []
221  flags.append(self.get_flag_str(slice_names, "chains", "selectChains"))
222  flags.append(self.get_flag_str(slice_names, "signature", "enabledSignatures"))
223 
224  mf = self.get_menu_flag(slice_names)
225 
226  if(mf != ''):
227  flags.append(mf)
228 
229  extra = self.get_values(slice_names, "extra")
230  flags += extra
231 
232  return ";".join(flags)
233 
234 if __name__ == "__main__":
235  c = Chains()
236 
237  print(c.get_selectChains_flag(["muon", "cosmic"]))
238  print(c.get_enabledSignatures_flag(["muon", "cosmic"]))
239  print(c.get_menu_flag(["muon", "cosmic"]))
python.Chains.Chains.get_flag_str
str get_flag_str(self, list slice_names, str prop, str flag_name)
Definition: Chains.py:187
vtune_athena.format
format
Definition: vtune_athena.py:14
python.Chains.Chains
Definition: Chains.py:7
python.Chains.Chains.get_menu_dict
def get_menu_dict(self)
Definition: Chains.py:8
histSizes.list
def list(name, path='/')
Definition: histSizes.py:38
python.Chains.Chains.get_enabledSignatures_flag
str get_enabledSignatures_flag(self, list slice_names)
Definition: Chains.py:196
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.Chains.Chains.get_menu_flag
str get_menu_flag(self, list slice_names)
Definition: Chains.py:199
print
void print(char *figname, TCanvas *c1)
Definition: TRTCalib_StrawStatusPlots.cxx:25
python.Chains.Chains.get_compiled_flag_str
str get_compiled_flag_str(self, list slice_names)
Definition: Chains.py:219
TCS::join
std::string join(const std::vector< std::string > &v, const char c=',')
Definition: Trigger/TrigT1/L1Topo/L1TopoCommon/Root/StringUtils.cxx:10
python.Chains.Chains.get_values
set get_values(self, list slice_names, str prop)
Definition: Chains.py:173
if
if(febId1==febId2)
Definition: LArRodBlockPhysicsV0.cxx:567
python.Chains.Chains.get_selectChains_flag
str get_selectChains_flag(self, list slice_names)
Definition: Chains.py:193