ATLAS Offline Software
Loading...
Searching...
No Matches
SignatureDicts.py
Go to the documentation of this file.
1# Copyright (C) 2002-2026 CERN for the benefit of the ATLAS collaboration
2from AthenaCommon.Logging import logging
3log = logging.getLogger( __name__ )
4log.debug("Importing %s",__name__)
5
6from copy import deepcopy
7import itertools
8
9#==========================================================
10# This is stored in chainDict['Signature']
11#==========================================================
12
13# this dictionary contains all the informations about the signatures, needed to create the Chaindicitonary. It has the shape of:
14# 'signature': ('substring', 'group')
15# if the substring is '', the signature is not mapped to the chain name
16# if the group is '', the signature is not mapped to any group
17SignatureDict = {
18 'Electron': ('e','AllTag'),
19 'Photon' : ('g','AllTag'),
20 'Muon' : ('mu','AllTag'),
21 'Bphysics': ('', 'AllTag'),
22 'Tau' : ('tau','JetMET'),
23 'Jet' : ('j', 'JetMET'),
24 'Bjet' : ('', 'JetMET'),
25 'MET' : ('xe', 'JetMET'),
26 'XS' : ('xs', 'JetMET'),
27 'TE' : ('te', 'JetMET'),
28 'MinBias' : ('mb', 'MinBias'),
29 'HeavyIon' : ('hi', 'MinBias'),
30 'Cosmic' : ('cosmic', ''),
31 'Calib' : ('calib', ''),
32 'Streaming' : ('streamer', ''),
33 'Monitor' : ('mon', ''),
34 'Beamspot' : ('beamspot','Beamspot'),
35 'MuonnoL1' : ( '', 'MuonnoL1'),
36 'EnhancedBias' : ('eb', ''),
37 'UnconventionalTracking' : (['isotrk', 'fslrt', 'dedxtrk', 'hitdvjet', 'fsvsi', 'distrk', 'dispjet', 'dispvtx'], 'JetMET'),
38 'Test' : ('TestChain', ''),
39 'Electronprobe': ('', 'AllProbe'),
40 'Photonprobe' : ('', 'AllProbe'),
41 'Tauprobe' : ('', 'AllProbe'),
42 'Muonprobe' : ('', 'AllProbe')
43}
44
45
47 # removes the grouping from the dict and creates a new one signature : string
48 new_dict = {key: value[0] for key, value in SignatureDict.items() if value[0] != ''}
49 return new_dict
50
51SliceIDDict = getSignatureDict()
52
54 # removes the substring from the dict and creates a new one signature : group
55 new_dict = {key: value[1] for key, value in SignatureDict.items() if value[1] != ''}
56 return new_dict
57
59 ''' returns the list of substrings representing the signautres in the chain name'''
60
61 list_of_strings = list(SliceIDDict.values()) # this is a list of lists
62 flattened_list = list(itertools.chain.from_iterable((item if isinstance(item, list) else [item]) for item in list_of_strings))
63 return flattened_list
64
66 ''' returns the list of substrings representing the signautres in the chain name'''
67 return SliceIDDict.keys()
68
69
70
71class ChainStore(dict):
72 """Class to hold list of chains for each signature (dictionary with fixed set of keys)"""
73 _allowedSignatures = ['Egamma', 'Muon', 'Jet', 'Bjet', 'Bphysics', 'MET', 'Tau',
74 'HeavyIon', 'Beamspot', 'Cosmic', 'EnhancedBias',
75 'Monitor', 'Calib', 'Streaming', 'Combined', 'MinBias',
76 'UnconventionalTracking', 'Test']
77
78 def __init__(self):
79 # Create dicionary with fixed set of keys in the orignal order
80 super().__init__({s : [] for s in self._allowedSignatures})
81
82 def __setitem__(self, key, value):
83 if key not in self:
84 raise RuntimeError(f"'{key}' is not in the list of allowed signatures: {self._allowedSignatures}")
85 else:
86 dict.__setitem__(self, key, value)
87
88
89#==========================================================
90# ---- Generic Template for all chains ----
91# ---- chainParts specific information given in ----
92# ---- signature specific dictionaries below ----
93#==========================================================
94ChainDictTemplate = {
95 'chainName' : '',
96 'L1item' : '',
97 'topo' : '',
98 'signatures' : [],
99 'alignmentGroups' : [],
100 'stream' : '',
101 'groups' : [],
102 'EBstep' : '',
103 'chainParts' : [],
104 'sigDicts' : {},
105 'sigFolder' : [],
106 'subSigs' : [],
107 'extraComboHypos' : []
108}
109
110#==========================================================
111# Test chains
112#==========================================================
113# ---- Test Dictionary of all allowed Values ----
114TestChainParts = {
115 'L1threshold' : '',
116 'signature' : ['Test'],
117 'alignmentGroup' : ['Test'],
118 'chainPartName' : '',
119 'multiplicity' : '',
120 'extra' : ['mv1', 'mv1step', 'mv2', 'ev1', 'ev2', 'ev3', 'gv1', 'mEmpty1', 'mEmpty2', 'mEmpty3', 'ev1dr', 'mv1dr','merge'],
121 'trigType' : ['TestChain'],
122 'threshold' : '',
123 'addInfo' : [''],
124 'sigFolder' : ['Test'],
125 'subSigs' : ['Test'],
126 'chainPartIndex': list(range(0,10))
127}
128
129# ---- Test Dictionary of default Values ----
130TestChainParts_Default = {
131 'signature' : ['Test'],
132 'alignmentGroup' : ['Test'],
133 'L1threshold' : '',
134 'multiplicity' : '',
135 'trigType' : '',
136 'threshold' : '',
137 'addInfo' : [],
138 'sigFolder' : ['Test'],
139 'subSigs' : ['Test'],
140 'chainPartIndex': 0
141}
142
143#==========================================================
144# Jet
145#==========================================================
146AllowedTopos_jet = []
147# List of keys that pertain to jet reconstruction
148# as opposed to the hypo configuration
149JetRecoKeys = ['recoAlg','constitType','clusterCalib','constitMod','jetCalib','trkopt','ionopt']
150# ---- Jet Dictionary of all allowed Values ----
151JetChainParts = {
152 # Information common to all signatures
153 'signature' : ['Jet'],
154 'alignmentGroup': ['Jet','JetMET'],
155 'L1threshold' : '',
156 'chainPartName' : '',
157 'threshold' : '',
158 'multiplicity' : '',
159 'trigType' : ['j'],
160 'topo' : AllowedTopos_jet,
161 'extra' : [],
162 'addInfo' : ['perf'],
163 'sigFolder' : ['Jet'],
164 'subSigs' : ['Jet'],
165 'chainPartIndex': list(range(0,10)),
166 # Information unique to the jet slice
167 # Reco information
168 'recoAlg' : # Jet clustering algorithm
169 ['a2', 'a4', 'a10', 'a10r', 'a10t', 'a10sd'],
170 'constitType' : # Jet input type
171 ['tc','pf'], # 'ufo' might be added at some point
172 'clusterCalib' : # Topocluster calibration
173 ['em', 'lcw'],
174 'constitMod' : # Constituent modifiers
175 ['sk', 'cssk'],
176 'jetCalib' : # Jet calibration
177 ['jes', 'subjes', 'subjesIS', 'subjesgscIS', 'subresjesgscIS', 'subjesgsc', 'subresjesgsc', 'nojcalib'],
178 'scan' : # No longer used?
179 ['FS',],
180 'ionopt' : # Heavy ion configuration
181 ['noion','ion','ionp'],
182 'trkopt' : # Tracking configuration
183 ['notrk','ftf','roiftf'],
184 'trkpresel' : # Tracking preselection
185 ['nopresel',
186 # Single jet
187 'preselj50emf72',
188 'preselj30emf72',
189 'preselj20emf72',
190 'preselj20emf60',
191 'preselj20emf48',
192 'preselj20emf24',
193 'preselj20emf18',
194 'preselj20emf12',
195 'preselj20emf6',
196 'preselj20',
197 'preselj50',
198 'preselj80',
199 'preselj100',
200 'preselj120',
201 'preselj140',
202 'preselj180',
203 'preselj190',
204 'preselj160',
205 'preselj200',
206 'preselj225',
207 'preselj245',
208 # Multijets
209 'presel2j180',
210 'presel2j225',
211 'presel3c30',
212 'presel3c40',
213 'presel3c45',
214 'presel3j45',
215 'presel3j150',
216 'presel4j20',
217 'presel4c20',
218 'presel4c25',
219 'presel4c30',
220 'presel4c35',
221 'presel4c45',
222 'presel4j25',
223 'presel4c25',
224 'presel4j40',
225 'presel4c40',
226 'presel4j45',
227 'presel4j50',
228 'presel4j65',
229 'presel4j85',
230 'presel5c20',
231 'presel5j25',
232 'presel5j50',
233 'presel5j55',
234 'presel5c50',
235 'presel6j40',
236 'presel6j45',
237 'presel7j30',
238 # Multiple threshold
239 'preselj60XXj40',
240 'preselj140XXj45',
241 'preselj140XX2j45',
242 'preselj100XX2j45',
243 'preselj120XX2j45',
244 'preselj80XX2j45',
245 'presel2j180XXj80',
246 # Nonstandard eta regions
247 'presel5c55',
248 'presel6c20',
249 'presel6c25',
250 'presel6c45',
251 'preselj45XX2f40',
252 'preselc60XXc45XXc25XXc20', # L1J45p0ETA21_3J15p0ETA25
253 'preselc60XXj45XXf40',
254 'preselj60XXj45XXf40',
255 'presela60XXa40XX2a25',
256 'preselcHT200',
257 'preseljHT400',
258 'preselcHT400',
259 'preseljHT450',
260 'preselcHT450',
261 'preseljHT500',
262 'preselcHT500',
263 'preseljHT600',
264 'preselcHT600',
265 'preselcHT650',
266 'preselcHT850',
267 #b-jet preselections
268 'presel1c100XX2c20bgtwo85',
269 'presel1c120XX2c20bgtwo90',
270 'presel1c120CXX1c20XX1c20bgtwo85',
271 'presel1c160XX1c20bgtwo90',
272 'presel1c160XX1c20bgtwo85',
273 'presel2c20XX2c20b85',
274 'presel2c20XX2c20b82',
275 'presel2c20XX2c20b80',
276 'presel2c20XX2c20bgtwo85',
277 'presel2c20XX2c20bg85',
278 'presel2c20XX2c20bg82',
279 'presel2c20XX2c20bg80',
280 'presel2c20XX2c20b90',
281 'presel3c20XX1c20b85',
282 'presel3c20XX1c20bg85',
283 # (b+)tau preselections
284 'presel4c20',
285 'presel3c20XX1c20bgtwo85',
286 'presel2c20XX1c20bgtwo85XX1c20gntau90',
287 'presel2c20XX1c20bgtwo85XX1c20gntau85',
288 'presel2c20XX1c20bgtwo82XX1c20gntau85',
289 'presel2c20XX1c20bgtwo82XX1c20gntau80',
290 'presel2c20XX1c20bgtwo80XX1c20gntau80',
291 'presel2c20XX1c20bgtwo85XX1c20uht1tau90',
292 'presel2c20XX1c20bgtwo85XX1c20uht1tau85',
293 'presel2c20XX1c20bgtwo82XX1c20uht1tau82',
294 'presel2c20XX1c20bgtwo80XX1c20uht1tau80',
295 'presel5c25XXc25bgtwo85',
296 'presel3j45bgtwo95',
297 'presel4j25bgtwo95',
298 'presel2j25XX2j25bgtwo85',
299 'presel3j25XX2j25bgtwo85',
300 'preselj50bgtwo85XX3j50',
301 'preselj80XX2j45bgtwo90',
302 'preselj140bgtwo85XXj45bgtwo85',
303 'presel2a20bgtwo90XX2a20',
304 'presela20bgtwo85XX3a20',
305 'presel3c20XX1c20gntau90',
306 'presel3c20XX1c20gntau85',
307 'preselj20b95',
308 'preselj2b77',
309 'preselj20b77',
310 'presel3j45b95',
311 'presel4j25b95',
312 'presel2j25XX2j25b85',
313 'presel3j25XX2j25b85',
314 'preselj50b85XX3j50',
315 'preselj80XX2j45b90',
316 'preselj140b85XXj45b85',
317 'presel5c25XXc25b85',
318 'presel2a20b90XX2a20',
319 'presela20b85XX3a20',
320 #beamspot preselction option
321 'presel2c20b85',
322 #DIPZ preselection
323 'preselZ128XX4c20',
324 'preselZ120XX4c20',
325 'preselZ116XX4c20',
326 'preselZ167MAXMULT5cXX4c20',
327 'preselZ138MAXMULT5cXX4c20',
328 'preselZ126MAXMULT5cXX4c20',
329 'preselZ120MAXMULT20cXX4c85',
330 'preselZ87XX3c20',
331 'preselZ84XX3c20',
332 'preselZ82XX3c20',
333 'preselZ120XX2c20XX2c20b85',
334 'preselZ138MAXMULT5cXX2c20XX2c20b85',
335 'preselZ84XX1c20XX2c20b85',
336 'preselZ120XX4c85',
337 'preselZ116XX4c20',
338 'preselZ138XX4c20',
339 'preselZ120MAXMULT20cXX4c20',
340 'preselZ84MAXMULT20cXX3c20',
341 'preselZ116MAXMULT5cXX4c20',
342 'preselZ116MAXMULT20cXX4c20',
343 'preselZ84XX1c20XX2c20b85',
344 'preselZ128XX2c20XX2c20b85',
345 'preselZ128MAXMULT20cXX4c85',
346 'preselZ128XX4c20XX1j20',
347 'preselZ128XX3c20XX1c20bg85',
348 'preselZ116XX3c20XX1c20bg85',
349 'preselZ128XX4c85',
350 'preselZ219XX6c20',
351 'preselZ197MAXMULT25cXX6c20',
352 'preselZ197XX6c20',
353 'preselZ182MAXMULT25cXX6c20',
354 'preselZ182XX6c20',
355 'preselZ142MAXMULT25cXX5c20',
356 'preselZ142XX5c20',
357 'preselZ134XX5c20',
358 'preselZ124XX5c20',
359 'preselVETOMULT11a10',
360 'preselVETOMULT11a15'
361 ],
362 # Hypo information
363 # If hypoScenario is 'simple', then hypo configuration is handled based on the
364 # other dict contents. If it is not 'simple', then the configuration is 100%
365 # from the hypoScenario specification, and all other hypo entries are ignored.
366 # Complete scenario names for aliases can be found in Trigger/TrigHypothesis/TrigHLTJetHypo/python/hypoConfigBuilder.py
367 'hypoScenario' : ['simple', # Independent selections on individual jets, multiplicity+threshold cuts
368 # 'fbdj' (forward-backward + dijet) scenario:
369 # default eta selection for dijet mass cut is 0eta490
370 'FBDJSHARED', # Forward backward jets + dijet, default parameters, fb and dj can share
371 'FBDJNOSHARED10etXX20etXX34massXX50fbet', # f/b jets + dijet, expl. parameters, fb and dj do not share
372 # 'dijet' scenario applies always a mass cut (deta and dphi cuts are optional)
373 # 0eta490 is the default eta selections for j1/j2
374 # j12et sets the same et cuts for j1et and j2et
375 # j12eta sets the same eta cuts for j1eta and j2eta
376 # order:
377 # et cuts (mandatory)
378 # eta cuts (optional, if missing will use default)
379 # djmass sel (mandatory)
380 # djdphi sel (optional)
381 # djdeta sel (optional)
382 #
383 # pt threshold cuts
384 'DJMASS300j35', # alias
385 'DJMASS500j35', # alias
386 'DJMASS700j35', # alias
387 'DJMASS1000j35', # alias
388 'DJMASS900j50', # alias
389 'DJMASS1000j50', # alias
390 'DJMASS1000j50dphi240', # alias
391 'DJMASS1000j50dphi250x250deta',
392 'DJMASS1000j50dphi200x400deta', # alias
393 'DJMASS900j50dphi200x400deta', # alias
394 'DJMASS1000j50dphi260x200deta', # alias
395 'DJMASS900j50dphi260x200deta' , # alias
396 'DJMASS1000j50dphi260', # alias
397 'DJMASS900j50dphi260', # alias
398 'DJMASS1000j50x200deta', # alias
399 'DJMASS900j50x200deta', # alias
400 'DJMASS1000j30dphi260x200deta', # alias
401 'DJMASS900j30dphi260x200deta', # alias
402 'DIJET70j12etXX1000djmassXXdjdphi200XX400djdeta', # needed for hypoToolTests.py
403 'DIJET80j12etXX0j12eta240XX700djmass', # needed for hypoToolTests.py
404
405 # 'ht' category applies a cut on HT (HT>value) computed by aggregation over single jets (default filtering: 30et and 0eta320)
406 'HT0',
407 'HT1000',
408 'HT290',
409 'HT300',
410 'HT500',
411 'HT940',
412 'HT50',
413 'HT300XX0eta240',
414 'HT300XX10ptXX0eta490',
415 'HT300XX10ptXX0eta490XXveto',
416 'HT300XX15ptXX0eta490',
417 'HT300XX15ptXX0eta490XXveto',
418 'HT400XX15ptXX0eta490',
419 'HT400XX15ptXX0eta490XXveto',
420 'HT500XX0eta240',
421 'HT650XX0eta240',
422 'HT850XX0eta240',
423 'HT940XX0eta240',
424 'HT940XX020jvt',
425 'HT940XX0eta240XX020jvt',
426 'HT1000XX0eta240',
427 'HT1000XX020jvt',
428 'HT1000XX0eta240XX020jvt',
429 'HT50XX10etXX0eta320', # needed for hypoToolTests.py
430 # DIPZ for testing only
431 'Z120XX4c20',
432 'Z120XX4c120',
433 'Z128XX4c20',
434 'Z120XX5c70',
435 'Z120XX6c55',
436 'Z120XX10c40',
437 'Z219XX6c20',
438 'Z197XX6c20',
439 'Z182XX6c20',
440 'Z142XX5c20',
441 'Z134XX5c20',
442 'Z124XX5c20',
443 # 'MULT' hypoScenario applies a cut on the number of jets
444 # in the input container after filtering on pt, eta.
445 'MULT0mult11XX10ptXX0eta490', # Heavy Ions
446 'MULT0mult11XX15ptXX0eta490', # Heavy Ions
447 ],
448 'exotHypo' : ['emergingPTF0p2dR1p2', 'emergingPTF0p1dR1p2', 'emergingPTF0p09dR1p2', 'emergingPTF0p08dR1p2', 'emergingPTF0p075dR1p2', 'emergingPTF0p07dR1p2', 'emergingPTF0p0dR1p2',
449 'emergingPTF0p2dR0p4', 'emergingPTF0p1dR0p4', 'emergingPTF0p09dR0p4', 'emergingPTF0p08dR0p4', 'emergingPTF0p075dR0p4', 'emergingPTF0p07dR0p4', 'emergingPTF0p0dR0p4',
450 'tracklessdR1p2', 'tracklessdR0p4',
451 'calratio','calratiormbib','calratiovar','calratiovarrmbib', # Exotics CalRatio jets (trackless and low-EMF, with option to clean out BIB)
452 'calratiovar103','calratiovar82','calratiovar59', 'calratiovar186', 'calratiovar150', 'calratiovar165' # Exotics CalRatio Jets ( requested by DPJ Team for alternative cut on ratio )
453 ],
454
455 # Simple hypo configuration. Single property cuts defined as MINvarMAX
456 'etaRange' :
457 # These atypical explicit values are allowed to be in chain names.
458 # Otherwise use ['','a','c','f'] ==> [0eta320, 0eta490, 0eta240, 320eta490]
459 # suffix after threshold e.g. j420 == j420_0eta320, 6j55c == 6j55_0eta240
460 ['0eta290', '0eta200', '0eta180', '0eta160', '0eta140']
461 +['320eta490'], # TODO: Kept temporarily for validation
462 'jvt' : # Jet Vertex Tagger pileup discriminant
463 ['010jvt', '011jvt', '015jvt', '020jvt', '050jvt', '059jvt'],
464 'nnJvt' : # NN Jet Vertex Tagger pileup discriminant
465 ['nnJvtv1'], # No range cuts, boolean pass/fail
466 'momCuts' : # Generic moment cut on single jets
467 ['050momemfrac100','momemfrac006','momemfrac024','momemfrac012', 'momhecfrac010','momemfrac011', '050momemfrac100XXmomhecfrac010', 'momemfrac072', 'momemfrac048' ],
468 'timing' : # delayed jets, with absolute delay requirement [ns]
469 ['2timing','2timing15'],
470 'timeSig' : # delayed jets, based on pT-dependent significance of delay [sigma]
471 ['1timeSig', '1p5timeSig', '2timeSig', '3timeSig','2timeSig15','3timeSig15'],
472 'prefilters' : # Pre-hypo jet selectors (including cleaning)
473 ['CLEANlb', 'CLEANllp', 'MASK300ceta210XX300nphi10',
474 # ptrangeXrY (X, Y matches regex \d+) triggers a prehypo selection of
475 # jets by ordering by pt, and selecting those with indices in [X,Y]
476 'PTRANGE0r1',
477 'PTRANGE2r3',
478 'MAXMULT20c',
479 'MAXMULT6c',],
480 'bsel': [ '95bdips','90bdips','85bdips','80bdips','77bdips'
481 , '95bgnone','90bgnone','85bgnone','80bgnone','77bgnone'
482 , '60bgntwoxt', '65bgntwoxt', '70bgntwoxt', '75bgntwoxt'
483 , '80bgntwoxt', '85bgntwoxt', '90bgntwoxt', '95bgntwoxt'
484 , '79bgntwox', '86bgntwox', '91bgntwox', '96bgntwox'
485 , '95bgntwo','90bgntwo','85bgntwo','80bgntwo','82bgntwo','77bgntwo','75bgntwo','60bgntwo'
486 ],
487 'tausel':
488 [ '75gntau' , '80gntau', '85gntau' , '90gntau'
489 , '75uht1tau' , '80uht1tau', '85uht1tau' , '90uht1tau'
490 ],
491 'smc' : # "Single mass condition" -- rename?
492 ['30smcINF', '35smcINF', '40smcINF', '50smcINF', '60smcINF', 'nosmc'],
493 # Setup for alternative data stream readout
494 # B-tagging information
495 'bTag' : ['boffperf' ,
496 # GN1 series
497 'bgn160', 'bgn165', 'bgn170', 'bgn172',
498 'bgn175', 'bgn177', 'bgn180', 'bgn182',
499 'bgn185',
500 'bgn182bb96', 'bgn177bb96', 'bgn175bb90',
501 # GN2 series
502 'bgn260', 'bgn265', 'bgn270', 'bgn272',
503 'bgn275', 'bgn277', 'bgn280', 'bgn282',
504 'bgn285', ],
505 'ditauTag' : ['ditauOmni0Trk3', 'ditauOmni0Trk4', 'ditauOmni0Trk5', 'ditauOmni0Trk9',
506 'ditauOmni1Trk3', 'ditauOmni1Trk4', 'ditauOmni1Trk5', 'ditauOmni1Trk9',
507 'ditauOmni2Trk3', 'ditauOmni2Trk4', 'ditauOmni2Trk5', 'ditauOmni2Trk9',
508 'ditauOmni3Trk3', 'ditauOmni3Trk4', 'ditauOmni3Trk5', 'ditauOmni3Trk9',
509 'ditauOmni4Trk3', 'ditauOmni4Trk4', 'ditauOmni4Trk5', 'ditauOmni4Trk9',
510 'ditauOmni5Trk3', 'ditauOmni5Trk4', 'ditauOmni5Trk5', 'ditauOmni5Trk9',
511 'ditauOmni6Trk3', 'ditauOmni6Trk4', 'ditauOmni6Trk5', 'ditauOmni6Trk9',
512 'ditauOmni7Trk3', 'ditauOmni7Trk4', 'ditauOmni7Trk5', 'ditauOmni7Trk9',
513 'ditauOmni8Trk3', 'ditauOmni8Trk4', 'ditauOmni8Trk5', 'ditauOmni8Trk9',
514 'ditauOmni9Trk3', 'ditauOmni9Trk4', 'ditauOmni9Trk5', 'ditauOmni9Trk9',
515 'ditauOmni01Trk3', 'ditauOmni01Trk4', 'ditauOmni01Trk5', 'ditauOmni01Trk9',
516 'ditauOmni02Trk3', 'ditauOmni02Trk4', 'ditauOmni02Trk5', 'ditauOmni02Trk9',
517 'ditauOmni03Trk3', 'ditauOmni03Trk4', 'ditauOmni03Trk5', 'ditauOmni03Trk9',
518 'ditauOmni04Trk3', 'ditauOmni04Trk4', 'ditauOmni04Trk5', 'ditauOmni04Trk9',
519 'ditauOmni05Trk3', 'ditauOmni05Trk4', 'ditauOmni05Trk5', 'ditauOmni05Trk9',
520 'ditauOmni06Trk3', 'ditauOmni06Trk4', 'ditauOmni06Trk5', 'ditauOmni06Trk9',
521 'ditauOmni07Trk3', 'ditauOmni07Trk4', 'ditauOmni07Trk5', 'ditauOmni07Trk9',
522 'ditauOmni08Trk3', 'ditauOmni08Trk4', 'ditauOmni08Trk5', 'ditauOmni08Trk9',
523 'ditauOmni09Trk3', 'ditauOmni09Trk4', 'ditauOmni09Trk5', 'ditauOmni09Trk9',
524 ],
525 'bTracking' : [],
526 'bConfig' : ['split',],
527 'bMatching' : ['antimatchdr05mu'],
528 'tboundary' : ['SHARED'], # simple scenario tree boundary marker
529
530 # beamspot
531 'beamspotChain' : ['beamspotVtx'],
532 'pileuprm' : # scedule pileup removal algo for single jet, the m_min LogR value is minimul criteria to for jet LogR to start removal algorithm, the m_max LogR is the desired logR cut to pass for jetschedule pileup removal algo for single jet, the m_min LogR value is minimal criteria for jet LogR to start the removal algorithm, the n_max LogR is the desired logR cut to pass for jet
533 ['n041pileuprmn015' ],# left value is min LogR,right is max LogR, n stands for negative (for example n041 means -0.41 )
534}
535
536# ---- Jet Dictionary of default Values ----
537JetChainParts_Default = {
538 'signature' : ['Jet'],
539 'alignmentGroup': ['Jet'],
540 'L1threshold' : '',
541 'threshold' : '',
542 'multiplicity' : '',
543 'trigType' : '',
544 'topo' : [],
545 'extra' : '',
546 'addInfo' : [],
547 'sigFolder' : ['Jet'],
548 'subSigs' : ['Jet'],
549 'chainPartIndex': 0,
550 #
551 'recoAlg' :'a4',
552 'constitType' :'tc',
553 'clusterCalib' :'em',
554 'constitMod' :'',
555 'jetCalib' :'default',
556 'scan' :'FS',
557 'ionopt' : 'noion',
558 'trkopt' : 'notrk',
559 'trkpresel' : 'nopresel',
560 #
561 'etaRange' : '0eta320',
562 'jvt' : '',
563 'nnJvt' : '',
564 'momCuts' : '',
565 'timing' : '',
566 'timeSig' : '',
567 'prefilters' : [],
568 'bsel' : '',
569 'tausel' : '',
570 'hypoScenario' : 'simple',
571 'exotHypo' : [],
572 'smc' : 'nosmc',
573 #
574 'bTag' : '',
575 'ditauTag' : '',
576 'bTracking' : '',
577 'bConfig' : [],
578 'bMatching' : [],
579 #
580 'tboundary' : '',
581
582 'beamspotChain' : '',
583 'pileuprm' : '',
584 }
585
586# ---- bJet Dictionary of default Values that are different to the ones for normal jet chains ----
587bJetChainParts_Default = {
588 'etaRange' : '0eta290',
589 'sigFolder' : ['Bjet'],
590 'subSigs' : ['Bjet'],
591}
592
593ditauJetChainParts_Default = {
594 'sigFolder' : ['Tau'],
595 'subSigs' : ['Ditau'],
596}
597# ---- Beamspot Dictionary for chains confiugred through jets
598BeamspotJetChainParts_Default = {
599 'signature' : 'Beamspot',
600 'alignmentGroup' : ['Beamspot'],
601 'sigFolder' : ['CalibCosmicMon'],
602 'subSigs' : ['Beamspot'],
603 'beamspotChain' : '',
604 'chainPartIndex': 0
605 }
606
607#==========================================================
608# Muon
609#==========================================================
610AllowedTopos_mu = [
611 'b7invmAB9vtx20', 'b11invmAB60vtx20', 'b11invmAB24vtx20', 'b24invmAB60vtx20',
612 '50invmAB130' # Zmumu
613 ]
614
615# ---- Muon Dictionary of all allowed Values ----
616MuonChainParts = {
617 'signature' : ['Muon'],
618 'alignmentGroup' : ['Muon','MuonnoL1'],
619 'L1threshold' : '',
620 'chainPartName' : [],
621 'multiplicity' : '',
622 'trigType' : ['mu'],
623 'etaRange' : ['0eta105'],
624 'threshold' : '',
625 'tnpInfo' : ['probe'],
626 'extra' : ['noL1', 'lateMu', "muoncalib" ,'noL2Comb','vtx','mucombTag'],
627 'IDinfo' : [],
628 'isoInfo' : ['ivarloose', 'ivarmedium', 'ivarperf','iloosems'],
629 'l2AlgInfo' : ['l2io','l2mt'],
630 'lrtInfo' : ['d0loose','d0medium','d0tight'],
631 'invMassInfo' : ['invmJPsiOS','invmDimu'],
632 'msonlyInfo' : ['msonly'],
633 'addInfo' : ['idperf','LRT','3layersEC','cosmic',"muonqual","nscan","nscan10","nscan20","nscan30","nscan40",'idtp','idReuse','fT','mlbkt'],
634 'topo' : AllowedTopos_mu,
635 'flavour' : [],
636 'sigFolder' : ['Muon'],
637 'subSigs' : ['Muon'],
638 'chainPartIndex': list(range(0,10))
639}
640# ---- MuonDictionary of default Values ----
641MuonChainParts_Default = {
642 'signature' : ['Muon'],
643 'alignmentGroup' : ['Muon'],
644 'L1threshold' : '',
645 'multiplicity' : '',
646 'trigType' : '',
647 'etaRange' : '0eta250',
648 'threshold' : '',
649 'tnpInfo' : '',
650 'extra' : '',
651 'IDinfo' : '',
652 'isoInfo' : '',
653 'l2AlgInfo' : [],
654 'lrtInfo' : [],
655 'addInfo' : [],
656 'invMassInfo' : '',
657 'msonlyInfo' : [],
658 'topo' : [],
659 'flavour' : '',
660 'sigFolder' : ['Muon'],
661 'subSigs' : ['Muon'],
662 'chainPartIndex': 0
663}
664
665#==========================================================
666# Bphysics
667#==========================================================
668AllowedTopos_Bphysics = [
669 'bJpsimumu','bJpsi','bJpsimutrk','bUpsimumu','bUpsi','bBmumu','bDimu','bDimu2700','bDimu6000','bPhi','bTau','b3mu',
670 'bBmumux', 'bBmux', 'bBhh', 'b0dRAB12vtx20', 'b0dRAB127invmAB22vtx20', 'b0dRAB207invmAB22vtx20', 'b7invmAB22vtx20',
671
672
674 'Bidperf','BsmumuPhi','BpmumuKp','BcmumuPi','BdmumuKst','LbPqKm','BcmumuDsloose','BcmumuDploose','BcmumuD0Xloose','BcmumuDstarloose',
675 'BpmuD0X','BdmuDpX','BdmuDstarX','BsmuDsX','LbmuLcX',
676 # topoExtras
677 'Lxy0','sigmaLxy3','noos','nocut','lowpt'
678
679
680]
681AllowedTopos_Bphysics_topoVariant = [
682 'Bidperf','BsmumuPhi','BpmumuKp','BcmumuPi','BdmumuKst','LbPqKm','BcmumuDsloose','BcmumuDploose','BcmumuD0Xloose','BcmumuDstarloose',
683 'BpmuD0X','BdmuDpX','BdmuDstarX','BsmuDsX','LbmuLcX'
684]
685AllowedTopos_Bphysics_topoExtra = ['Lxy0','noos','nocut','lowpt']
686AllAllowedTopos_Bphysics = AllowedTopos_Bphysics_topoVariant+AllowedTopos_Bphysics_topoExtra+AllowedTopos_Bphysics
687
688# ---- Bphysics Dictionary of all allowed Values ----
689BphysicsChainParts = deepcopy(MuonChainParts)
690BphysicsChainParts['signature'] = ['Bphysics']
691BphysicsChainParts['sigFolder'] = ['Bphysics']
692BphysicsChainParts['subSigs'] = ['Bphysics']
693BphysicsChainParts['topo'] = AllowedTopos_Bphysics
694
695# ---- Bphysics Dictionary of default Values ----
696BphysicsChainParts_Default = deepcopy(MuonChainParts_Default)
697BphysicsChainParts_Default['signature'] = ['Bphysics']
698BphysicsChainParts_Default['sigFolder'] = ['Bphysics']
699BphysicsChainParts_Default['subSigs'] = ['Bphysics']
700BphysicsChainParts_Default['topo'] = []
701
702
703#==========================================================
704# Taus
705#==========================================================
706AllowedTopos_tau = []
707
708# ---- Tau Dictionary of all allowed Values ----
709TauChainParts = {
710 'signature' : ['Tau'],
711 'alignmentGroup': ['Tau', 'JetMET'],
712 'extra' : [],
713 'L1threshold' : '',
714 'chainPartName' : '',
715 'threshold' : '',
716 'reconstruction': [
717 # BRT calibration (no-tracking)
718 'ptonly',
719
720 # Standard reconstruction triggers
721 # 2-step FTF (Core + Iso) + PT
722 # Split in different sequences to avoid running unnecesary TauIDs
723 'tracktwoMVA', # GNTau, DeepSet and MesonCuts triggers
724 'tracktwoLLP', # RNNLLP triggers
725
726 # LRT reconstruction triggers
727 # 1-step FTF (LRT) + PT
728 'trackLRT', # RNNLLP triggers
729 ],
730 'jet' : ['lc', 'pf'], # Only use LCTopo jets for now
731 'calohitsPresel': [
732 # CaloHits step preselection
733 'idperfCHP', # No preselection, but still run all inferences
734 ],
735 'selection' : [
736 'idperf', # No selection
737 'perf', # NTrk selection
738
739 # GNTau ID WPs:
740 'verylooseGNTau', 'looseGNTau', 'mediumGNTau', 'tightGNTau',
741
742 # GNTauExt ID WPs:
743 'mediumnoperfGNTauDev1', 'mediumvar1noperfGNTauDev1', 'mediumvar2noperfGNTauDev1',
744
745 # RNN/DeepSet ID WPs (for tracktwoMVA/LLP/LRT reco with DeepSet/RNNLLP TauIDs):
746 'looseRNN', 'mediumRNN', 'tightRNN',
747
748 # Meson b-phys triggers (used with tracktwoMVA reco without cutting on the RNN/DeepSet score):
749 'kaonpi1', 'kaonpi2', 'dipion1', 'dipion2', 'dipion3', 'dipion4', 'dikaonmass', 'singlepion',
750 ],
751 'hitz' : [
752 # Default HitZ option, with 10mm z0 sigma cut and 30mm RoI dz0 size
753 'HitZ',
754
755 # Test HitZ options: '<max_sigma>mmX<roi_dz>mmHitZ'
756 # (require additional output containers and tracking RoI configs)
757 ],
758 'multiplicity' : '',
759 'trigType' : ['tau'],
760 'tnpInfo' : ['probe'],
761 'topo' : AllowedTopos_tau,
762 'sigFolder' : ['Tau'],
763 'subSigs' : ['Tau'],
764 'chainPartIndex': list(range(0,10))
765}
766TauChainParts_Default = {
767 'signature' : ['Tau'],
768 'alignmentGroup': ['Tau'],
769 'extra' : '',
770 'L1threshold' : '',
771 'chainPartName' : '',
772 'threshold' : '',
773 'reconstruction': 'tracktwoMVA',
774 'jet' : 'lc',
775 'calohitsPresel': '',
776 'selection' : '',
777 'hitz' : '',
778 'multiplicity' : '',
779 'trigType' : '',
780 'tnpInfo' : '',
781 'topo' : [],
782 'sigFolder' : ['Tau'],
783 'subSigs' : ['Tau'],
784 'chainPartIndex': 0
785}
786
787
788#==========================================================
789# MET
790#==========================================================
791AllowedTopos_xe = []
792# ---- Met Dictionary of all allowed Values ----
793METChainParts = {
794 'signature' : ['MET'],
795 'alignmentGroup' : ['MET','JetMET'],
796 'L1threshold' : '',
797 'chainPartName' : '',
798 'threshold' : '',
799 'multiplicity' : '',
800 'topo' : AllowedTopos_xe,
801 'trigType' : ['xe'],
802 'extra' : ['noL1'],
803 'calib' : ['lcw','em'],
804 'jetCalib' : JetChainParts['jetCalib'],
805 'L2recoAlg' : [],
806 'EFrecoAlg' : ['cell', 'tc', 'tcpufit', 'mht', 'trkmht', 'pfsum', 'cvfpufit', 'pfopufit', 'mhtpufit', 'nn'],
807 'constitType' : JetChainParts['constitType'],
808 'nSigma' : ["default", "sig30", "sig35", "sig40", "sig45", "sig50", "sig55", "sig60"],
809 'L2muonCorr' : [],
810 'EFmuonCorr' : [],
811 'addInfo' : ['FStracks'],
812 'sigFolder' : ['MET'],
813 'subSigs' : ['MET'],
814 'constitmod' : ['cssk', 'vssk'],
815 'chainPartIndex': list(range(0,10))
816}
817# ---- MetDictionary of default Values ----
818METChainParts_Default = {
819 'signature' : ['MET'],
820 'alignmentGroup' : ['MET'],
821 'L1threshold' : '',
822 'trigType' : '',
823 'threshold' : '',
824 'extra' : '',
825 'calib' : 'lcw',
826 'jetCalib' : JetChainParts_Default['jetCalib'],
827 'nSigma' : "default",
828 'L2recoAlg' : '',
829 'EFrecoAlg' : '',
830 'L2muonCorr' : '',
831 'EFmuonCorr' : '',
832 'addInfo' : '',
833 'constitType' : 'tc',
834 'constitmod' : '',
835 'sigFolder' : ['MET'],
836 'subSigs' : ['MET'],
837 'chainPartIndex': 0
838}
839
840#==========================================================
841# XS
842#==========================================================
843# ---- xs Dictionary of all allowed Values ----
844XSChainParts = METChainParts
845XSChainParts['signature'] = ['XS']
846XSChainParts['trigType'] = ['xs']
847
848# ---- xs Dictionary of default Values ----
849XSChainParts_Default = METChainParts_Default
850XSChainParts_Default['signature'] = ['XS']
851XSChainParts_Default['trigType'] = ''
852
853#==========================================================
854# TE
855#==========================================================
856# ---- te Dictionary of all allowed Values ----
857TEChainParts = METChainParts
858TEChainParts['signature'] = ['TE']
859TEChainParts['trigType'] = ['te']
860
861# ---- te Dictionary of default Values ----
862TEChainParts_Default = METChainParts_Default
863TEChainParts_Default['signature'] = ['TE']
864TEChainParts_Default['trigType'] = ''
865
866#==========================================================
867# Electron Chains
868#==========================================================
869AllowedTopos_e = ['Jpsiee','Zeg','Zee','Heg','bBeeM6000']
870# ---- Electron Dictionary of all allowed Values ----
871ElectronChainParts = {
872 'signature' : ['Electron'],
873 'alignmentGroup' : ['Electron','Egamma'],
874 'chainPartName' : '',
875 'L1threshold' : '',
876 'tnpInfo' : ['probe'],
877 'extra' : ['ion'],
878 'multiplicity' : '',
879 'trigType' : ['e'],
880 'threshold' : '',
881 'etaRange' : [],
882 'IDinfo' : ['dnnloose','dnnmedium','dnntight','lhvloose','lhloose','lhmedium','lhtight','vloose','loose','medium','tight', 'mergedtight'],
883 'isoInfo' : ['ivarloose','ivarmedium','ivartight'],
884 'idperfInfo' : ['idperf'],
885 'gsfInfo' : ['nogsf'],
886 'lrtInfo' : ['lrtloose','lrtmedium','lrttight','lrtxtight','lrtvxtight'],
887 'caloInfo' : [],
888 'lhInfo' : ['nod0', 'nopix'],
889 'L2IDAlg' : ['noringer'],
890 'addInfo' : [ 'etcut', 'etcut1step',"fwd",'nopid'],
891 'calibInfo' : ['calibringer'],
892 'sigFolder' : ['Egamma'],
893 'subSigs' : ['Electron'],
894 'topo' : AllowedTopos_e,
895 'chainPartIndex': list(range(0,10))
896}
897
898# ---- Egamma Dictionary of default Values ----
899ElectronChainParts_Default = {
900 'signature' : ['Electron'],
901 'alignmentGroup' : ['Electron'],
902 'multiplicity' : '',
903 'L1threshold' : '',
904 'trigType' : '',
905 'threshold' : '',
906 'etaRange' : '0eta250',
907 'tnpInfo' : '',
908 'extra' : '',
909 'IDinfoType' : '',
910 'IDinfo' : '',
911 'isoInfo' : '',
912 'reccalibInfo' : '',
913 'idperfInfo' : '',
914 'gsfInfo' : '',
915 'lrtInfo' : '',
916 'caloInfo' : '',
917 'lhInfo' : '',
918 'L2IDAlg' : '',
919 'hypoInfo' : '',
920 'recoAlg' : '',
921 'FSinfo' : '',
922 'addInfo' : [],
923 'calibInfo' : '',
924 'sigFolder' : ['Egamma'],
925 'subSigs' : ['Electron'],
926 'topo' : [],
927 'chainPartIndex': 0
928}
929
930#==========================================================
931# Photon chains
932#==========================================================
933# ---- Photon Dictionary of all allowed Values ----
934AllowedTopos_g = ['dPhi25', 'm80']
935PhotonChainParts = {
936 'L1threshold' : '',
937 'signature' : ['Photon'],
938 'alignmentGroup' : ['Photon','Egamma'],
939 'chainPartName' : '',
940 'multiplicity' : '',
941 'trigType' : ['g'],
942 'threshold' : '',
943 'tnpInfo' : ['probe'],
944 'extra' : ['hiptrt', 'ion'],
945 'IDinfo' : ['etcut','loose','medium','tight'],
946 'isoInfo' : ['noiso', 'icaloloose','icalomedium','icalotight'],
947 'reccalibInfo' : [],
948 'trkInfo' : [],
949 'caloInfo' : [],
950 'L2IDAlg' : ['noringer','ringer'],
951 'hypoInfo' : '',
952 'recoAlg' : [],
953 'FSinfo' : [],
954 'addInfo' : ['etcut','nopid'],
955 'sigFolder' : ['Egamma'],
956 'subSigs' : ['Photon'],
957 'topo' : AllowedTopos_g,
958 'chainPartIndex': list(range(0,10)),
959 }
960
961# ---- Photon Dictionary of default Values ----
962PhotonChainParts_Default = {
963 'signature' : ['Photon'],
964 'alignmentGroup' : ['Photon'],
965 'L1threshold' : '',
966 'multiplicity' : '',
967 'trigType' : '',
968 'threshold' : '',
969 'tnpInfo' : '',
970 'extra' : '',
971 'IDinfo' : '',
972 'isoInfo' : '',
973 'reccalibInfo' : '',
974 'trkInfo' : '',
975 'caloInfo' : '',
976 'L2IDAlg' : '',
977 'hypoInfo' : '',
978 'recoAlg' : '',
979 'FSinfo' : '',
980 'addInfo' : [],
981 'sigFolder' : ['Egamma'],
982 'subSigs' : ['Photon'],
983 'topo' : [],
984 'chainPartIndex': 0
985 }
986
987#==========================================================
988# MinBias chains
989#==========================================================
990# ---- MinBias Dictionary of all allowed Values ----
991MinBiasChainParts = {
992 'signature' : ['MinBias'],
993 'alignmentGroup' : ['MinBias'],
994 'L1threshold' : '',
995 'chainPartName' : '',
996 'multiplicity' : '',
997 'trigType' : ['mb'],
998 'threshold' : '',
999 'extra' : ['noisesup', 'vetombts2in', 'vetombts1side2in', 'vetospmbts2in', "vetosp" ,'ion', 'ncb', 'blayer', 'dijet', 'all', 'q2'], #ncb = non collision background, blayer = only sum innermost pix layer
1000 'IDinfo' : [],
1001 'ZDCinfo' : ['lg', 'hg'],
1002 'trkInfo' : ['hlttr', 'ftk', 'costr'],
1003 'hypoSPInfo' : ['sp2', 'sp3', 'sp5', 'sp10', 'sp15', 'sp50', 'sp100', 'sp300', 'sp400', 'sp500', 'sp600', 'sp700', 'sp800', 'sp900',
1004 'sp1000', 'sp1100', 'sp1200', 'sp1300', 'sp1400', 'sp1500', 'sp1600', 'sp1700', 'sp1800',
1005 'sp2000', 'sp2100', 'sp2200', 'sp2300', 'sp2400', 'sp2500', 'sp2700', 'sp2800', 'sp2900', 'sp3000',
1006 'sp3100', 'sp3500', 'sp4100', 'sp4500', 'sp4800', 'sp5000', 'sp5200',
1007 'vpix15', 'vpix30', 'vpix35', 'vpix40', 'vpix45', 'vpix50', 'vpix55', 'vpix60', 'vpix800',
1008 'pix20','pix50','pix100', 'pix200', 'pix500', 'pix1000',
1009 'nototpix20', 'nototpix30','nototpix50', 'nototpix70', 'nototpix100', 'nototpix200', 'nototpix500'],
1010 'pileupInfo' : ['pusup0', 'pusup7', 'pusup10', 'pusup15', 'pusup20', 'pusup30', 'pusup40','pusup50','pusup60', 'pusup70', 'pusup80', 'pusup90', 'pusup100', 'pusup110', 'pusup120', 'pusup130', 'pusup150', 'pusup180', 'pusup190',
1011 'pusup200', 'pusup220', 'pusup240', 'pusup250', 'pusup260', 'pusup270', 'pusup280', 'pusup290', 'pusup300'],
1012 'hypoTrkInfo' : ['trk2', 'trk3','trk5','trk10','trk15', 'trk20', 'trk25', 'trk30', 'trk35', 'trk40', 'trk45', 'trk50', 'trk55', 'trk60', 'trk65', 'trk70', 'trk75', 'trk80', 'trk90',
1013 'trk100', 'trk110', 'trk120', 'trk130', 'trk140', 'trk150', 'trk160', 'trk180', 'trk200', 'trk220', 'trk240', 'trk260', 'trk280', 'trk290',
1014 '2trk6', '1trk4', '1trk5', '1trk2', '0trk2'], #ranges for exclusive tracks
1015 'hypoPtInfo' : [ 'pt0p2', 'pt0p5', 'pt0p8', 'pt1', 'pt2', 'pt4', 'pt6', 'pt8', 'pt10' ],
1016 'recoAlg' : ['mbts', 'sptrk', 'sp', 'noalg', 'perf', 'hmt', 'hmtperf', 'idperf', 'zdcperf', 'afprec', 'afptof', 'afpdz5', 'afpdz10', 'excl', 'pixsptrk'],
1017 'addInfo' : ['peb', 'pc'],
1018 'sigFolder' : ['MinBias'],
1019 'subSigs' : ['MinBias'],
1020 'chainPartIndex': list(range(0,10))
1021 }
1022# ---- MinBiasDictionary of default Values ----
1023MinBiasChainParts_Default = {
1024 'signature' : ['MinBias'],
1025 'alignmentGroup' : ['MinBias'],
1026 'L1threshold' : '',
1027 'chainPartName' : '',
1028 'multiplicity' : '',
1029 'trigType' : '',
1030 'threshold' : '',
1031 'extra' : '',
1032 'IDinfo' : '',
1033 'ZDCinfo' : '',
1034 'trkInfo' : '',
1035 'hypoSPInfo' : '',
1036 'pileupInfo' : '',
1037 'hypoTrkInfo' : '',
1038 'hypoPtInfo' : '',
1039 'hypoSumEtInfo': '',
1040 'recoAlg' : [],
1041 'addInfo' : [],
1042 'sigFolder' : ['MinBias'],
1043 'subSigs' : ['MinBias'],
1044 'chainPartIndex': 0
1045 }
1046
1047#==========================================================
1048# HeavyIon chains
1049#==========================================================
1050# ---- HeavyIon Dictionary of all allowed Values ----
1051HeavyIonChainParts = {
1052 'signature' : ['HeavyIon'],
1053 'alignmentGroup' : ['HeavyIon'],
1054 'L1threshold' : '',
1055 'chainPartName' : '',
1056 'multiplicity' : '',
1057 'trigType' : ['hi'],
1058 'threshold' : '',
1059 'extra' : [],
1060 'IDinfo' : [],
1061 'trkInfo' : [],
1062 'eventShape' : [],
1063 'eventShapeVeto' : [],
1064 'hypoL2Info' : [],
1065 'pileupInfo' : [],
1066 'hypoEFInfo' : [],
1067 'hypoEFsumEtInfo': [],
1068 'hypoFgapInfo' : ['FgapAC3', 'FgapAC5', 'FgapAC10', 'FgapA3', 'FgapA5', 'FgapA10', 'FgapC3', 'FgapC5', 'FgapC10'],
1069 'hypoUCCInfo' : ['uccTh1','uccTh2','uccTh3'],
1070 'recoAlg' : [],
1071 'addInfo' : [],
1072 'sigFolder' : ['HeavyIon'],
1073 'subSigs' : ['HeavyIon'],
1074 'chainPartIndex': list(range(0,10))
1075 }
1076
1077# ---- HeavyIonDictionary of default Values ----
1078HeavyIonChainParts_Default = {
1079 'signature' : ['HeavyIon'],
1080 'alignmentGroup' : ['HeavyIon'],
1081 'L1threshold' : '',
1082 'chainPartName' : '',
1083 'multiplicity' : '',
1084 'trigType' : '',
1085 'threshold' : '',
1086 'extra' : '',
1087 'IDinfo' : '',
1088 'trkInfo' : '',
1089 'eventShape' : '',
1090 'eventShapeVeto' : '',
1091 'hypoL2Info' : '',
1092 'pileupInfo' : '',
1093 'hypoEFInfo' : '',
1094 'hypoEFsumEtInfo': '',
1095 'hypoFgapInfo' : [],
1096 'hypoUCCInfo' : [],
1097 'recoAlg' : [],
1098 'addInfo' : [],
1099 'sigFolder' : ['HeavyIon'],
1100 'subSigs' : ['HeavyIon'],
1101 'chainPartIndex': 0
1102 }
1103
1104#==========================================================
1105# ---- CosmicDef chains -----
1106#==========================================================
1107AllowedCosmicChainIdentifiers = ['larps','larhec',
1108 'sct', 'id',]
1109
1110# ---- Cosmic Chain Dictionary of all allowed Values ----
1111CosmicChainParts = {
1112 'signature' : ['Cosmic'],
1113 'alignmentGroup' : ['Cosmic'],
1114 'chainPartName' : '',
1115 'L1threshold' : '',
1116 'purpose' : AllowedCosmicChainIdentifiers,
1117 'addInfo' : ['cosmicid','noise', 'beam', 'laser', 'AllTE', 'central', 'ds','CIS'], #'trtd0cut'
1118 'trackingAlg' : ['idscan', 'sitrack', 'trtxk'],
1119 'hits' : ['4hits'],
1120 'threshold' : '',
1121 'multiplicity' : '',
1122 'trigType' : 'cosmic',
1123 'extra' : '',
1124 'sigFolder' : ['CalibCosmicMon'],
1125 'subSigs' : ['Cosmic'],
1126 'chainPartIndex': list(range(0,10))
1127 }
1128
1129# ---- Cosmic Chain Default Dictionary of all allowed Values ----
1130CosmicChainParts_Default = {
1131 'signature' : ['Cosmic'],
1132 'alignmentGroup' : ['Cosmic'],
1133 'chainPartName' : '',
1134 'L1threshold' : '',
1135 'purpose' : [],
1136 'addInfo' : [],
1137 'trackingAlg' : [],
1138 'hits' : [],
1139 'threshold' : '',
1140 'multiplicity' : '',
1141 'trigType' : '',
1142 'extra' : '',
1143 'sigFolder' : ['CalibCosmicMon'],
1144 'subSigs' : ['Cosmic'],
1145 'chainPartIndex': 0
1146 }
1147
1148#==========================================================
1149# ---- StreamingDef chains -----
1150#==========================================================
1151AllowedStreamingChainIdentifiers = ['noalg']
1152
1153# ---- Streaming Chain Dictionary of all allowed Values ----
1154StreamingChainParts = {
1155 'signature' : ['Streaming'],
1156 'alignmentGroup' : ['Streaming'],
1157 'chainPartName' : '',
1158 'L1threshold' : '',
1159 'threshold' : '',
1160 'multiplicity' : '',
1161 # No effect on configuration, used in special cases for
1162 # disambiguation or to allow events from the same L1 seed
1163 # to be written to different streams
1164 # New cases should be discussed with Menu Coordinators
1165 'streamingInfo' : ['laser', 'CIS','idmon','mb','l1calo', 'cosmicmuons', 'bkg','vdm', 'zb', 'eb'],
1166 'trigType' : 'streamer',
1167 'extra' : '',
1168 'streamType' : AllowedStreamingChainIdentifiers,
1169 'algo' : ['NoAlg'],
1170 'sigFolder' : ['CalibCosmicMon'],
1171 'subSigs' : ['Streaming'],
1172 'chainPartIndex': list(range(0,10))
1173 }
1174
1175# ---- Cosmic Chain Default Dictionary of all allowed Values ----
1176StreamingChainParts_Default = {
1177 'signature' : ['Streaming'],
1178 'alignmentGroup' : ['Streaming'],
1179 'chainPartName' : '',
1180 'L1threshold' : '',
1181 'threshold' : '',
1182 'multiplicity' : '',
1183 'streamingInfo' : '',
1184 'trigType' : '',
1185 'extra' : '',
1186 'streamType' : '',
1187 'algo' : [],
1188 'sigFolder' : ['CalibCosmicMon'],
1189 'subSigs' : ['Streaming'],
1190 'chainPartIndex': 0
1191 }
1192
1193#==========================================================
1194# ---- CalibDef chains -----
1195#==========================================================
1196AllowedCalibChainIdentifiers = ['csccalib', 'larcalib',
1197 'idcalib', 'l1calocalib',
1198 'tilelarcalib',
1199 'larnoiseburst','ibllumi',
1200 'l1satmon', 'zdcpeb',
1201 'calibAFP', 'larpsallem', 'larpsall',
1202 'acceptedevts', 'metcalo', 'mettrk',
1203 ]
1204
1205# ---- Calib Chain Dictionary of all allowed Values ----
1206
1207
1208CalibChainParts = {
1209 'signature' : ['Calib'],
1210 'alignmentGroup' : ['Calib'],
1211 'chainPartName' : '',
1212 'L1threshold' : '',
1213 'purpose' : AllowedCalibChainIdentifiers,
1214 'location' : ['central', 'fwd'],
1215 'addInfo' : ['loose','noise','beam'],
1216 'hypo' : ['trk4','trk9', 'trk16', 'trk29', 'conej40', 'conej165', 'conej75_320eta490', 'conej140_320eta490','satu20em'],
1217 'streamingInfo' : ['vdm',],
1218 'threshold' : '',
1219 'multiplicity' : '',
1220 'trigType' : ['trk'],
1221 'extra' : ['bs',''],
1222 'sigFolder' : ['CalibCosmicMon'],
1223 'subSigs' : ['Calib'],
1224 'chainPartIndex': list(range(0,10))
1225 }
1226
1227
1228# ---- Calib Chain Default Dictionary of all allowed Values ----
1229CalibChainParts_Default = {
1230 'signature' : ['Calib'],
1231 'alignmentGroup' : ['Calib'],
1232 'chainPartName' : '',
1233 'L1threshold' : '',
1234 'purpose' : [],
1235 'addInfo' : [],
1236 'hypo' : '',
1237 # 'hits' : [],
1238 'streamingInfo' : [],
1239 'threshold' : '',
1240 'multiplicity' : '',
1241 'location' : '',
1242 'trigType' : '',
1243 'extra' : '',
1244 'sigFolder' : ['CalibCosmicMon'],
1245 'subSigs' : ['Calib'],
1246 'chainPartIndex': 0
1247 }
1248
1249#==========================================================
1250# ---- MonitorDef chains -----
1251#==========================================================
1252AllowedMonitorChainIdentifiers = ['robrequest', 'timeburner',
1253 'idmon','larsupercellmon',
1254 'l1calooverflow', 'l1topoPh1debug',
1255 'mistimemonl1bccorr','mistimemonl1bccorrnomu',
1256 'mistimemoncaltimenomu','mistimemoncaltime',
1257 'mistimemonj400', 'caloclustermon']
1258
1259# ---- Monitor Chain Dictionary of all allowed Values ----
1260MonitorChainParts = {
1261 'signature' : ['Monitor'],
1262 'alignmentGroup' : ['Monitor'],
1263 'chainPartName' : '',
1264 'L1threshold' : '',
1265 'monType' : AllowedMonitorChainIdentifiers,
1266 'hypo' : ['trkFS',],
1267 'threshold' : '',
1268 'multiplicity' : '',
1269 'isLegacyL1' : ['legacy'],
1270 'trigType' : 'mon',
1271 'extra' : '',
1272 'sigFolder' : ['CalibCosmicMon'],
1273 'subSigs' : ['Monitor'],
1274 'chainPartIndex': list(range(0,10))
1275 }
1276
1277# ---- Monitor Chain Default Dictionary of all allowed Values ----
1278MonitorChainParts_Default = {
1279 'signature' : ['Monitor'],
1280 'alignmentGroup' : ['Monitor'],
1281 'chainPartName' : '',
1282 'L1threshold' : '',
1283 'monType' : [],
1284 'hypo' : '',
1285 'threshold' : '',
1286 'multiplicity' : '',
1287 'isLegacyL1' : [],
1288 'trigType' : '',
1289 'extra' : '',
1290 'sigFolder' : ['CalibCosmicMon'],
1291 'subSigs' : ['Monitor'],
1292 'chainPartIndex': 0
1293 }
1294
1295#==========================================================
1296# ---- EB chains -----
1297#==========================================================
1298AllowedEBChainIdentifiers = ['eb']
1299
1300# ---- Enhanced Bias Chain Dictionary of all allowed Values ----
1301EnhancedBiasChainParts = {
1302 'signature' : ['EnhancedBias'],
1303 'alignmentGroup' : ['EnhancedBias'],
1304 'chainPartName' : '',
1305 'L1threshold' : '',
1306 'algType' : ['medium','firstempty','empty','unpairediso','unpairednoniso', 'low'],
1307 'threshold' : '',
1308 'multiplicity' : '',
1309 'trigType' : '',
1310 'extra' : '',
1311 'sigFolder' : ['CalibCosmicMon'],
1312 'subSigs' : ['EnhancedBias'],
1313 'chainPartIndex': list(range(0,10))
1314 }
1315
1316# ---- EnhancedBias Chain Default Dictionary of all allowed Values ----
1317EnhancedBiasChainParts_Default = {
1318 'signature' : ['EnhancedBias'],
1319 'alignmentGroup' : ['EnhancedBias'],
1320 'chainPartName' : '',
1321 'L1threshold' : '',
1322 'algType' : 'physics',
1323 'threshold' : '',
1324 'multiplicity' : '',
1325 'trigType' : '',
1326 'extra' : '',
1327 'sigFolder' : ['CalibCosmicMon'],
1328 'subSigs' : ['EnhancedBias'],
1329 'chainPartIndex': 0
1330 }
1331
1332#==========================================================
1333# ---- BeamspotDef chains -----
1334#==========================================================
1335AllowedBeamspotChainIdentifiers = ['beamspot',]
1336BeamspotChainParts = {
1337 'signature' : ['Beamspot'],
1338 'alignmentGroup' : ['Beamspot'],
1339 'chainPartName' : '',
1340 'L1threshold' : '',
1341 'monType' : AllowedBeamspotChainIdentifiers,
1342 'location' : ['vtx'],
1343 'addInfo' : ['trkFS', 'allTE', 'activeTE','idperf'],
1344 'hypo' : [],
1345 'l2IDAlg' : ['trkfast'],
1346 'threshold' : '',
1347 'multiplicity' : '',
1348 'trigType' : 'beamspot',
1349 'extra' : '',
1350 'sigFolder' : ['CalibCosmicMon'],
1351 'subSigs' : ['Beamspot'],
1352 'chainPartIndex': list(range(0,10)),
1353 'beamspotChain' : [],
1354 }
1355
1356# ---- Beamspot Chain Default Dictionary of all allowed Values ----
1357BeamspotChainParts_Default = {
1358 'signature' : ['Beamspot'],
1359 'alignmentGroup' : ['Beamspot'],
1360 'chainPartName' : '',
1361 'L1threshold' : '',
1362 'monType' : [],
1363 'addInfo' : [],
1364 'hypo' : [],
1365 'l2IDAlg' : [],
1366 'threshold' : '',
1367 'multiplicity' : '',
1368 'location' : 'vtx',
1369 'trigType' : '',
1370 'extra' : '',
1371 'sigFolder' : ['CalibCosmicMon'],
1372 'subSigs' : ['Beamspot'],
1373 'chainPartIndex' : 0,
1374 'beamspotChain' : '',
1375 }
1376
1377#==========================================================
1378# Unconventional Tracking
1379#==========================================================
1380# ---- Unconventional Tracking Dictionary of all allowed Values ----
1381UnconventionalTrackingChainParts = {
1382 'signature' : ['UnconventionalTracking'],
1383 'alignmentGroup' : ['UnconventionalTracking'],
1384 'L1threshold' : '',
1385 'chainPartName' : [],
1386 'multiplicity' : '',
1387 'trigType' : ['isotrk', 'fslrt', 'dedxtrk', 'hitdvjet', 'fsvsi', 'distrk', 'dispjet', 'dispvtx'],
1388 'threshold' : '',
1389 'IDinfo' : ['loose','medium','tight','vloose'],
1390 'isoInfo' : ['iaggrmedium','iaggrloose','imedium','iloose'],
1391 'extra' : '',
1392 'addInfo' : ['perf'],
1393 'dispjetConfig' : ['3d2p', '1p', 'x3d1p', '2p'],
1394 'sigFolder' : ['UnconventionalTracking'],
1395 'subSigs' : ['UnconventionalTracking'],
1396 'chainPartIndex': list(range(0,10))
1397}
1398# ---- Unconventional Tracking Dictionary of default Values ----
1399UnconventionalTrackingChainParts_Default = {
1400 'signature' : ['UnconventionalTracking'],
1401 'alignmentGroup' : ['UnconventionalTracking'],
1402 'L1threshold' : '',
1403 'chainPartName' : [],
1404 'multiplicity' : '',
1405 'IDinfo' : '',
1406 'trigType' : '',
1407 'threshold' : '',
1408 'isoInfo' : '',
1409 'extra' : '',
1410 'addInfo' : '',
1411 'dispjetConfig' : '',
1412 'sigFolder' : ['UnconventionalTracking'],
1413 'subSigs' : ['UnconventionalTracking'],
1414 'chainPartIndex': 0
1415}
1416
1417#==========================================================
1418# Combined Chains
1419#==========================================================
1420AllowedTopos_comb = [
1421 'idZmumu','idJpsimumu',
1422 'dRAA12', 'dRAB15', '03dRAB','02dRAB10','03dRAB10','03dRAB28', '03dRAB30','03dRAB35','dRAD04', 'dRAF04','dRAB03','dRAB04', 'dRAB05', '02dRAB','02dRAC','03dRAC30','03dRAC35','02dRBC','15dRBC45','50invmAB','60invmAB','afpdijet','18dphiAB','18dphiAC','80mTAC','80mTAD',
1423 'anomdet','anomdetL','anomdetM','anomdetT',
1424 '115masswisoABC','115masswisoABC135',
1425 '29dphiAA', '29dphiAB', '30dphiAA', '30dphiAB', # g-2 tau triggers
1426 '03dRCD30', '03dRCD', # bootstrapped di-tau triggers
1427 '90invmAB',# TEST
1428 '1invmAB5','50invmAB130','50invmBC130', # Jpsiee, Zee/Zeg
1429 '25dphiAA','25dphiBB','25dphiCC','invmAA80', # Low-mass diphoton
1430 '10invmAA70', # Low-mass dimuon
1431 'invmAB10', '10invmAB70',
1432 '7invmAB9', '11invmAB60', '11invmAB24', '24invmAB60', '7invmAA9', '11invmAA60', '11invmAA24', '24invmAA60',
1433 '20detaAA' # Low mass Drell-Yan
1434 ]
1435
1436# ---- Combined Dictionary of all allowed Values ----
1437CombinedChainParts = deepcopy(PhotonChainParts)
1438CombinedChainParts['signature'] = ['Photon','Muon']
1439CombinedChainParts['chainParts'] = ['g','mu'],
1440CombinedChainParts['topo'] = AllowedTopos_comb
1441# ---- Combined Dictionary of default Values ----
1442CombinedChainParts_Default = deepcopy(PhotonChainParts_Default)
1443CombinedChainParts_Default['signature'] = ['Photon','Muon']
1444CombinedChainParts_Default['chainParts'] = ['g','mu'],
1445CombinedChainParts_Default['trigType'] = ''
1446CombinedChainParts_Default['topo'] = []
1447
1448#==========================================================
1449# ----- Allowed HLT Topo Keywords (also: generic topos like DR, DETA, DPHI...)
1450#==========================================================
1451#NOTE: removed jets from list, special case for VBF triggers
1452AllowedTopos = AllowedTopos_e + AllowedTopos_g + AllowedTopos_mu + AllowedTopos_Bphysics + AllowedTopos_xe + AllowedTopos_tau + AllowedTopos_comb
1453
1454#==========================================================
1455# Obtain signature type
1456#==========================================================
1458 import re
1459 theMatchingTokens = []
1460 reverseSliceIDDict = { subvalue: key for key, value in SliceIDDict.items() for subvalue in ([value] if not isinstance(value, list) else value) } #reversed SliceIDDict
1461 for sig,token in SliceIDDict.items():
1462 token = token if isinstance(token, list) else [token]
1463 for subtoken in token:
1464 if re.match(r'^\d*'+subtoken+r'\d*\w*$', chainpart):
1465 theMatchingTokens += [subtoken]
1466 if len(theMatchingTokens) > 0:
1467 return reverseSliceIDDict[sorted(theMatchingTokens, key=lambda x: len(x), reverse=True)[0]]
1468 else:
1469 log.error('No signature matching chain part %s was found.', chainpart)
1470
1471 raise Exception('[getSignatureNameFromToken] Cannot find signature from chain name, exiting.')
1472
1473 return False
1474
1475
1476#==========================================================
1477# Signature dictionaries to use
1478#==========================================================
1480 if signature == 'Electron':
1481 return [ElectronChainParts_Default, ElectronChainParts]
1482 if signature == 'Photon':
1483 return [PhotonChainParts_Default, PhotonChainParts]
1484 if signature == "Jet":
1485 return [JetChainParts_Default, JetChainParts]
1486 if signature == "Bjet":
1487 return [bJetChainParts_Default, JetChainParts]
1488 if signature == "Beamspot_Jet":
1489 return [BeamspotJetChainParts_Default, JetChainParts]
1490 if signature == "Tau":
1491 return [TauChainParts_Default, TauChainParts]
1492 if signature == "Ditau":
1493 return [ditauJetChainParts_Default, JetChainParts]
1494 if (signature == "Muon"):
1495 return [MuonChainParts_Default, MuonChainParts]
1496 if (signature == "Bphysics"):
1497 return [BphysicsChainParts_Default, BphysicsChainParts]
1498 if (signature == "Combined"):
1499 return [CombinedChainParts_Default, CombinedChainParts]
1500 if signature == "MET":
1501 return [METChainParts_Default, METChainParts]
1502 if signature == "XS":
1503 return [XSChainParts_Default, XSChainParts]
1504 if signature == "TE":
1505 return [TEChainParts_Default, TEChainParts]
1506 if signature == "MinBias":
1507 return [MinBiasChainParts_Default, MinBiasChainParts]
1508 if signature == "HeavyIon":
1509 return [HeavyIonChainParts_Default, HeavyIonChainParts]
1510 if signature == "Cosmic":
1511 return [CosmicChainParts_Default, CosmicChainParts]
1512 if signature == "Calib":
1513 return [CalibChainParts_Default, CalibChainParts]
1514 if signature == "Streaming":
1515 return [StreamingChainParts_Default, StreamingChainParts]
1516 if signature == "Monitor":
1517 return [MonitorChainParts_Default, MonitorChainParts]
1518 if signature == "Beamspot":
1519 return [BeamspotChainParts_Default, BeamspotChainParts]
1520 if signature == "EnhancedBias":
1521 return [EnhancedBiasChainParts_Default, EnhancedBiasChainParts]
1522 if signature == "UnconventionalTracking":
1523 return [UnconventionalTrackingChainParts_Default, UnconventionalTrackingChainParts]
1524 if signature == "Test":
1525 return [TestChainParts_Default, TestChainParts]
1526 else:
1527 raise RuntimeError("ERROR Cannot find corresponding dictionary for signature", signature)
1528
1529#==========================================================
1530# Analysis the base pattern: <mult><signatureType><threshold><extraInfo>
1531#==========================================================
1533 import re
1534 allTrigTypes = []
1535 for v in SliceIDDict.values():
1536 if isinstance(v, list):
1537 allTrigTypes += v
1538 else:
1539 allTrigTypes.append(v)
1540
1541 possibleTT = '|'.join(allTrigTypes)
1542 pattern = re.compile(r"(?P<multiplicity>\d*)(?P<trigType>(%s))(?P<threshold>\d+)(?P<extra>\w*)" % (possibleTT))
1543 return pattern