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 'preselZ197MAXMULT10cXX6c20',
352 'preselZ197XX6c20',
353 'preselZ182MAXMULT10cXX6c20',
354 'preselZ182XX6c20',
355 'preselZ142MAXMULT10cXX5c20',
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', 'newFast'],
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', 'em'], # Only lc and em jets are supported 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 'mediumGNTauDev1',
742
743 # GNTauExt ID WPs:
744 'mediumnoperfGNTauDev1',
745
746 # RNN/DeepSet ID WPs (for tracktwoMVA/LLP/LRT reco with DeepSet/RNNLLP TauIDs):
747 'looseRNN', 'mediumRNN', 'tightRNN',
748
749 # Meson b-phys triggers (used with tracktwoMVA reco without cutting on the RNN/DeepSet score):
750 'kaonpi1', 'kaonpi2', 'dipion1', 'dipion2', 'dipion3', 'dipion4', 'dikaonmass', 'singlepion',
751 ],
752 'hitz' : [
753 # Default HitZ option, with 10mm z0 sigma cut and 30mm RoI dz0 size
754 'HitZ',
755
756 # Test HitZ options: '<max_sigma>mmX<roi_dz>mmHitZ'
757 # (require additional output containers and tracking RoI configs)
758 ],
759 'multiplicity' : '',
760 'trigType' : ['tau'],
761 'tnpInfo' : ['probe'],
762 'topo' : AllowedTopos_tau,
763 'sigFolder' : ['Tau'],
764 'subSigs' : ['Tau'],
765 'chainPartIndex': list(range(0,10))
766}
767TauChainParts_Default = {
768 'signature' : ['Tau'],
769 'alignmentGroup': ['Tau'],
770 'extra' : '',
771 'L1threshold' : '',
772 'chainPartName' : '',
773 'threshold' : '',
774 'reconstruction': 'tracktwoMVA',
775 'jet' : 'lc',
776 'calohitsPresel': '',
777 'selection' : '',
778 'hitz' : '',
779 'multiplicity' : '',
780 'trigType' : '',
781 'tnpInfo' : '',
782 'topo' : [],
783 'sigFolder' : ['Tau'],
784 'subSigs' : ['Tau'],
785 'chainPartIndex': 0
786}
787
788
789#==========================================================
790# MET
791#==========================================================
792AllowedTopos_xe = []
793# ---- Met Dictionary of all allowed Values ----
794METChainParts = {
795 'signature' : ['MET'],
796 'alignmentGroup' : ['MET','JetMET'],
797 'L1threshold' : '',
798 'chainPartName' : '',
799 'threshold' : '',
800 'multiplicity' : '',
801 'topo' : AllowedTopos_xe,
802 'trigType' : ['xe'],
803 'extra' : ['noL1'],
804 'calib' : ['lcw','em'],
805 'jetCalib' : JetChainParts['jetCalib'],
806 'L2recoAlg' : [],
807 'EFrecoAlg' : ['cell', 'tc', 'tcpufit', 'mht', 'trkmht', 'pfsum', 'cvfpufit', 'pfopufit', 'mhtpufit', 'nn'],
808 'constitType' : JetChainParts['constitType'],
809 'nSigma' : ["default", "sig30", "sig35", "sig40", "sig45", "sig50", "sig55", "sig60"],
810 'L2muonCorr' : [],
811 'EFmuonCorr' : [],
812 'addInfo' : ['FStracks'],
813 'sigFolder' : ['MET'],
814 'subSigs' : ['MET'],
815 'constitmod' : ['cssk', 'vssk'],
816 'chainPartIndex': list(range(0,10))
817}
818# ---- MetDictionary of default Values ----
819METChainParts_Default = {
820 'signature' : ['MET'],
821 'alignmentGroup' : ['MET'],
822 'L1threshold' : '',
823 'trigType' : '',
824 'threshold' : '',
825 'extra' : '',
826 'calib' : 'lcw',
827 'jetCalib' : JetChainParts_Default['jetCalib'],
828 'nSigma' : "default",
829 'L2recoAlg' : '',
830 'EFrecoAlg' : '',
831 'L2muonCorr' : '',
832 'EFmuonCorr' : '',
833 'addInfo' : '',
834 'constitType' : 'tc',
835 'constitmod' : '',
836 'sigFolder' : ['MET'],
837 'subSigs' : ['MET'],
838 'chainPartIndex': 0
839}
840
841#==========================================================
842# XS
843#==========================================================
844# ---- xs Dictionary of all allowed Values ----
845XSChainParts = METChainParts
846XSChainParts['signature'] = ['XS']
847XSChainParts['trigType'] = ['xs']
848
849# ---- xs Dictionary of default Values ----
850XSChainParts_Default = METChainParts_Default
851XSChainParts_Default['signature'] = ['XS']
852XSChainParts_Default['trigType'] = ''
853
854#==========================================================
855# TE
856#==========================================================
857# ---- te Dictionary of all allowed Values ----
858TEChainParts = METChainParts
859TEChainParts['signature'] = ['TE']
860TEChainParts['trigType'] = ['te']
861
862# ---- te Dictionary of default Values ----
863TEChainParts_Default = METChainParts_Default
864TEChainParts_Default['signature'] = ['TE']
865TEChainParts_Default['trigType'] = ''
866
867#==========================================================
868# Electron Chains
869#==========================================================
870AllowedTopos_e = ['Jpsiee','Zeg','Zee','Heg','bBeeM6000']
871# ---- Electron Dictionary of all allowed Values ----
872ElectronChainParts = {
873 'signature' : ['Electron'],
874 'alignmentGroup' : ['Electron','Egamma'],
875 'chainPartName' : '',
876 'L1threshold' : '',
877 'tnpInfo' : ['probe'],
878 'extra' : ['ion'],
879 'multiplicity' : '',
880 'trigType' : ['e'],
881 'threshold' : '',
882 'etaRange' : [],
883 'IDinfo' : ['dnnloose','dnnmedium','dnntight','lhvloose','lhloose','lhmedium','lhtight','vloose','loose','medium','tight', 'mergedtight'],
884 'isoInfo' : ['ivarloose','ivarmedium','ivartight'],
885 'idperfInfo' : ['idperf'],
886 'gsfInfo' : ['nogsf'],
887 'lrtInfo' : ['lrtloose','lrtmedium','lrttight','lrtxtight','lrtvxtight'],
888 'caloInfo' : [],
889 'lhInfo' : ['nod0', 'nopix'],
890 'L2IDAlg' : ['noringer'],
891 'addInfo' : [ 'etcut', 'etcut1step',"fwd",'nopid'],
892 'calibInfo' : ['calibringer'],
893 'sigFolder' : ['Egamma'],
894 'subSigs' : ['Electron'],
895 'topo' : AllowedTopos_e,
896 'chainPartIndex': list(range(0,10))
897}
898
899# ---- Egamma Dictionary of default Values ----
900ElectronChainParts_Default = {
901 'signature' : ['Electron'],
902 'alignmentGroup' : ['Electron'],
903 'multiplicity' : '',
904 'L1threshold' : '',
905 'trigType' : '',
906 'threshold' : '',
907 'etaRange' : '0eta250',
908 'tnpInfo' : '',
909 'extra' : '',
910 'IDinfoType' : '',
911 'IDinfo' : '',
912 'isoInfo' : '',
913 'reccalibInfo' : '',
914 'idperfInfo' : '',
915 'gsfInfo' : '',
916 'lrtInfo' : '',
917 'caloInfo' : '',
918 'lhInfo' : '',
919 'L2IDAlg' : '',
920 'hypoInfo' : '',
921 'recoAlg' : '',
922 'FSinfo' : '',
923 'addInfo' : [],
924 'calibInfo' : '',
925 'sigFolder' : ['Egamma'],
926 'subSigs' : ['Electron'],
927 'topo' : [],
928 'chainPartIndex': 0
929}
930
931#==========================================================
932# Photon chains
933#==========================================================
934# ---- Photon Dictionary of all allowed Values ----
935AllowedTopos_g = ['dPhi25', 'm80']
936PhotonChainParts = {
937 'L1threshold' : '',
938 'signature' : ['Photon'],
939 'alignmentGroup' : ['Photon','Egamma'],
940 'chainPartName' : '',
941 'multiplicity' : '',
942 'trigType' : ['g'],
943 'threshold' : '',
944 'tnpInfo' : ['probe'],
945 'extra' : ['hiptrt', 'ion'],
946 'IDinfo' : ['etcut','loose','medium','tight'],
947 'isoInfo' : ['noiso', 'icaloloose','icalomedium','icalotight'],
948 'reccalibInfo' : [],
949 'trkInfo' : [],
950 'caloInfo' : [],
951 'L2IDAlg' : ['noringer','ringer'],
952 'hypoInfo' : '',
953 'recoAlg' : [],
954 'FSinfo' : [],
955 'addInfo' : ['etcut','nopid'],
956 'sigFolder' : ['Egamma'],
957 'subSigs' : ['Photon'],
958 'topo' : AllowedTopos_g,
959 'chainPartIndex': list(range(0,10)),
960 }
961
962# ---- Photon Dictionary of default Values ----
963PhotonChainParts_Default = {
964 'signature' : ['Photon'],
965 'alignmentGroup' : ['Photon'],
966 'L1threshold' : '',
967 'multiplicity' : '',
968 'trigType' : '',
969 'threshold' : '',
970 'tnpInfo' : '',
971 'extra' : '',
972 'IDinfo' : '',
973 'isoInfo' : '',
974 'reccalibInfo' : '',
975 'trkInfo' : '',
976 'caloInfo' : '',
977 'L2IDAlg' : '',
978 'hypoInfo' : '',
979 'recoAlg' : '',
980 'FSinfo' : '',
981 'addInfo' : [],
982 'sigFolder' : ['Egamma'],
983 'subSigs' : ['Photon'],
984 'topo' : [],
985 'chainPartIndex': 0
986 }
987
988#==========================================================
989# MinBias chains
990#==========================================================
991# ---- MinBias Dictionary of all allowed Values ----
992MinBiasChainParts = {
993 'signature' : ['MinBias'],
994 'alignmentGroup' : ['MinBias'],
995 'L1threshold' : '',
996 'chainPartName' : '',
997 'multiplicity' : '',
998 'trigType' : ['mb'],
999 'threshold' : '',
1000 'extra' : ['noisesup', 'vetombts2in', 'vetombts1side2in', 'vetospmbts2in', "vetosp" ,'ion', 'ncb', 'blayer', 'dijet', 'all', 'q2'], #ncb = non collision background, blayer = only sum innermost pix layer
1001 'IDinfo' : [],
1002 'ZDCinfo' : ['lg', 'hg'],
1003 'trkInfo' : ['hlttr', 'ftk', 'costr'],
1004 'hypoSPInfo' : ['sp2', 'sp3', 'sp5', 'sp10', 'sp15', 'sp50', 'sp100', 'sp300', 'sp400', 'sp500', 'sp600', 'sp700', 'sp800', 'sp900',
1005 'sp1000', 'sp1100', 'sp1200', 'sp1300', 'sp1400', 'sp1500', 'sp1600', 'sp1700', 'sp1800',
1006 'sp2000', 'sp2100', 'sp2200', 'sp2300', 'sp2400', 'sp2500', 'sp2700', 'sp2800', 'sp2900', 'sp3000',
1007 'sp3100', 'sp3500', 'sp4100', 'sp4500', 'sp4800', 'sp5000', 'sp5200',
1008 'vpix15', 'vpix30', 'vpix35', 'vpix40', 'vpix45', 'vpix50', 'vpix55', 'vpix60', 'vpix800',
1009 'pix20','pix50','pix100', 'pix200', 'pix500', 'pix1000',
1010 'nototpix20', 'nototpix30','nototpix50', 'nototpix70', 'nototpix100', 'nototpix200', 'nototpix500'],
1011 'pileupInfo' : ['pusup0', 'pusup7', 'pusup10', 'pusup15', 'pusup20', 'pusup30', 'pusup40','pusup50','pusup60', 'pusup70', 'pusup80', 'pusup90', 'pusup100', 'pusup110', 'pusup120', 'pusup130', 'pusup150', 'pusup180', 'pusup190',
1012 'pusup200', 'pusup220', 'pusup240', 'pusup250', 'pusup260', 'pusup270', 'pusup280', 'pusup290', 'pusup300'],
1013 'hypoTrkInfo' : ['trk2', 'trk3','trk5','trk10','trk15', 'trk20', 'trk25', 'trk30', 'trk35', 'trk40', 'trk45', 'trk50', 'trk55', 'trk60', 'trk65', 'trk70', 'trk75', 'trk80', 'trk90',
1014 'trk100', 'trk110', 'trk120', 'trk130', 'trk140', 'trk150', 'trk160', 'trk180', 'trk200', 'trk220', 'trk240', 'trk260', 'trk280', 'trk290',
1015 '2trk6', '1trk4', '1trk5', '1trk2', '0trk2'], #ranges for exclusive tracks
1016 'hypoPtInfo' : [ 'pt0p2', 'pt0p5', 'pt0p8', 'pt1', 'pt2', 'pt4', 'pt6', 'pt8', 'pt10' ],
1017 'recoAlg' : ['mbts', 'sptrk', 'sp', 'noalg', 'perf', 'hmt', 'hmtperf', 'idperf', 'zdcperf', 'afprec', 'afptof', 'afpdz5', 'afpdz10', 'excl', 'pixsptrk'],
1018 'addInfo' : ['peb', 'pc'],
1019 'sigFolder' : ['MinBias'],
1020 'subSigs' : ['MinBias'],
1021 'chainPartIndex': list(range(0,10))
1022 }
1023# ---- MinBiasDictionary of default Values ----
1024MinBiasChainParts_Default = {
1025 'signature' : ['MinBias'],
1026 'alignmentGroup' : ['MinBias'],
1027 'L1threshold' : '',
1028 'chainPartName' : '',
1029 'multiplicity' : '',
1030 'trigType' : '',
1031 'threshold' : '',
1032 'extra' : '',
1033 'IDinfo' : '',
1034 'ZDCinfo' : '',
1035 'trkInfo' : '',
1036 'hypoSPInfo' : '',
1037 'pileupInfo' : '',
1038 'hypoTrkInfo' : '',
1039 'hypoPtInfo' : '',
1040 'hypoSumEtInfo': '',
1041 'recoAlg' : [],
1042 'addInfo' : [],
1043 'sigFolder' : ['MinBias'],
1044 'subSigs' : ['MinBias'],
1045 'chainPartIndex': 0
1046 }
1047
1048#==========================================================
1049# HeavyIon chains
1050#==========================================================
1051# ---- HeavyIon Dictionary of all allowed Values ----
1052HeavyIonChainParts = {
1053 'signature' : ['HeavyIon'],
1054 'alignmentGroup' : ['HeavyIon'],
1055 'L1threshold' : '',
1056 'chainPartName' : '',
1057 'multiplicity' : '',
1058 'trigType' : ['hi'],
1059 'threshold' : '',
1060 'extra' : [],
1061 'IDinfo' : [],
1062 'trkInfo' : [],
1063 'eventShape' : [],
1064 'eventShapeVeto' : [],
1065 'hypoL2Info' : [],
1066 'pileupInfo' : [],
1067 'hypoEFInfo' : [],
1068 'hypoEFsumEtInfo': [],
1069 'hypoFgapInfo' : ['FgapAC3', 'FgapAC5', 'FgapAC10', 'FgapA3', 'FgapA5', 'FgapA10', 'FgapC3', 'FgapC5', 'FgapC10'],
1070 'hypoUCCInfo' : ['uccTh1','uccTh2','uccTh3'],
1071 'recoAlg' : [],
1072 'addInfo' : [],
1073 'sigFolder' : ['HeavyIon'],
1074 'subSigs' : ['HeavyIon'],
1075 'chainPartIndex': list(range(0,10))
1076 }
1077
1078# ---- HeavyIonDictionary of default Values ----
1079HeavyIonChainParts_Default = {
1080 'signature' : ['HeavyIon'],
1081 'alignmentGroup' : ['HeavyIon'],
1082 'L1threshold' : '',
1083 'chainPartName' : '',
1084 'multiplicity' : '',
1085 'trigType' : '',
1086 'threshold' : '',
1087 'extra' : '',
1088 'IDinfo' : '',
1089 'trkInfo' : '',
1090 'eventShape' : '',
1091 'eventShapeVeto' : '',
1092 'hypoL2Info' : '',
1093 'pileupInfo' : '',
1094 'hypoEFInfo' : '',
1095 'hypoEFsumEtInfo': '',
1096 'hypoFgapInfo' : [],
1097 'hypoUCCInfo' : [],
1098 'recoAlg' : [],
1099 'addInfo' : [],
1100 'sigFolder' : ['HeavyIon'],
1101 'subSigs' : ['HeavyIon'],
1102 'chainPartIndex': 0
1103 }
1104
1105#==========================================================
1106# ---- CosmicDef chains -----
1107#==========================================================
1108AllowedCosmicChainIdentifiers = ['larps','larhec',
1109 'sct', 'id',]
1110
1111# ---- Cosmic Chain Dictionary of all allowed Values ----
1112CosmicChainParts = {
1113 'signature' : ['Cosmic'],
1114 'alignmentGroup' : ['Cosmic'],
1115 'chainPartName' : '',
1116 'L1threshold' : '',
1117 'purpose' : AllowedCosmicChainIdentifiers,
1118 'addInfo' : ['cosmicid','noise', 'beam', 'laser', 'AllTE', 'central', 'ds','CIS'], #'trtd0cut'
1119 'trackingAlg' : ['idscan', 'sitrack', 'trtxk'],
1120 'hits' : ['4hits'],
1121 'threshold' : '',
1122 'multiplicity' : '',
1123 'trigType' : 'cosmic',
1124 'extra' : '',
1125 'sigFolder' : ['CalibCosmicMon'],
1126 'subSigs' : ['Cosmic'],
1127 'chainPartIndex': list(range(0,10))
1128 }
1129
1130# ---- Cosmic Chain Default Dictionary of all allowed Values ----
1131CosmicChainParts_Default = {
1132 'signature' : ['Cosmic'],
1133 'alignmentGroup' : ['Cosmic'],
1134 'chainPartName' : '',
1135 'L1threshold' : '',
1136 'purpose' : [],
1137 'addInfo' : [],
1138 'trackingAlg' : [],
1139 'hits' : [],
1140 'threshold' : '',
1141 'multiplicity' : '',
1142 'trigType' : '',
1143 'extra' : '',
1144 'sigFolder' : ['CalibCosmicMon'],
1145 'subSigs' : ['Cosmic'],
1146 'chainPartIndex': 0
1147 }
1148
1149#==========================================================
1150# ---- StreamingDef chains -----
1151#==========================================================
1152AllowedStreamingChainIdentifiers = ['noalg']
1153
1154# ---- Streaming Chain Dictionary of all allowed Values ----
1155StreamingChainParts = {
1156 'signature' : ['Streaming'],
1157 'alignmentGroup' : ['Streaming'],
1158 'chainPartName' : '',
1159 'L1threshold' : '',
1160 'threshold' : '',
1161 'multiplicity' : '',
1162 # No effect on configuration, used in special cases for
1163 # disambiguation or to allow events from the same L1 seed
1164 # to be written to different streams
1165 # New cases should be discussed with Menu Coordinators
1166 'streamingInfo' : ['laser', 'CIS','idmon','mb','l1calo', 'cosmicmuons', 'bkg','vdm', 'zb', 'eb'],
1167 'trigType' : 'streamer',
1168 'extra' : '',
1169 'streamType' : AllowedStreamingChainIdentifiers,
1170 'algo' : ['NoAlg'],
1171 'sigFolder' : ['CalibCosmicMon'],
1172 'subSigs' : ['Streaming'],
1173 'chainPartIndex': list(range(0,10))
1174 }
1175
1176# ---- Cosmic Chain Default Dictionary of all allowed Values ----
1177StreamingChainParts_Default = {
1178 'signature' : ['Streaming'],
1179 'alignmentGroup' : ['Streaming'],
1180 'chainPartName' : '',
1181 'L1threshold' : '',
1182 'threshold' : '',
1183 'multiplicity' : '',
1184 'streamingInfo' : '',
1185 'trigType' : '',
1186 'extra' : '',
1187 'streamType' : '',
1188 'algo' : [],
1189 'sigFolder' : ['CalibCosmicMon'],
1190 'subSigs' : ['Streaming'],
1191 'chainPartIndex': 0
1192 }
1193
1194#==========================================================
1195# ---- CalibDef chains -----
1196#==========================================================
1197AllowedCalibChainIdentifiers = ['csccalib', 'larcalib',
1198 'idcalib', 'l1calocalib',
1199 'tilelarcalib',
1200 'larnoiseburst','ibllumi',
1201 'l1satmon', 'zdcpeb',
1202 'calibAFP', 'larpsallem', 'larpsall',
1203 'acceptedevts', 'metcalo', 'mettrk',
1204 ]
1205
1206# ---- Calib Chain Dictionary of all allowed Values ----
1207
1208
1209CalibChainParts = {
1210 'signature' : ['Calib'],
1211 'alignmentGroup' : ['Calib'],
1212 'chainPartName' : '',
1213 'L1threshold' : '',
1214 'purpose' : AllowedCalibChainIdentifiers,
1215 'location' : ['central', 'fwd'],
1216 'addInfo' : ['loose','noise','beam'],
1217 'hypo' : ['trk4','trk9', 'trk16', 'trk29', 'conej40', 'conej165', 'conej75_320eta490', 'conej140_320eta490','satu20em'],
1218 'streamingInfo' : ['vdm',],
1219 'threshold' : '',
1220 'multiplicity' : '',
1221 'trigType' : ['trk'],
1222 'extra' : ['bs',''],
1223 'sigFolder' : ['CalibCosmicMon'],
1224 'subSigs' : ['Calib'],
1225 'chainPartIndex': list(range(0,10))
1226 }
1227
1228
1229# ---- Calib Chain Default Dictionary of all allowed Values ----
1230CalibChainParts_Default = {
1231 'signature' : ['Calib'],
1232 'alignmentGroup' : ['Calib'],
1233 'chainPartName' : '',
1234 'L1threshold' : '',
1235 'purpose' : [],
1236 'addInfo' : [],
1237 'hypo' : '',
1238 # 'hits' : [],
1239 'streamingInfo' : [],
1240 'threshold' : '',
1241 'multiplicity' : '',
1242 'location' : '',
1243 'trigType' : '',
1244 'extra' : '',
1245 'sigFolder' : ['CalibCosmicMon'],
1246 'subSigs' : ['Calib'],
1247 'chainPartIndex': 0
1248 }
1249
1250#==========================================================
1251# ---- MonitorDef chains -----
1252#==========================================================
1253AllowedMonitorChainIdentifiers = ['robrequest', 'timeburner', 'timeburnerprocessing',
1254 'idmon','larsupercellmon',
1255 'l1calooverflow', 'l1topoPh1debug',
1256 'mistimemonl1bccorr','mistimemonl1bccorrnomu',
1257 'mistimemoncaltimenomu','mistimemoncaltime',
1258 'mistimemonj400', 'caloclustermon']
1259
1260# ---- Monitor Chain Dictionary of all allowed Values ----
1261MonitorChainParts = {
1262 'signature' : ['Monitor'],
1263 'alignmentGroup' : ['Monitor'],
1264 'chainPartName' : '',
1265 'L1threshold' : '',
1266 'monType' : AllowedMonitorChainIdentifiers,
1267 'hypo' : ['trkFS',],
1268 'threshold' : '',
1269 'multiplicity' : '',
1270 'isLegacyL1' : ['legacy'],
1271 'trigType' : 'mon',
1272 'extra' : '',
1273 'sigFolder' : ['CalibCosmicMon'],
1274 'subSigs' : ['Monitor'],
1275 'chainPartIndex': list(range(0,10))
1276 }
1277
1278# ---- Monitor Chain Default Dictionary of all allowed Values ----
1279MonitorChainParts_Default = {
1280 'signature' : ['Monitor'],
1281 'alignmentGroup' : ['Monitor'],
1282 'chainPartName' : '',
1283 'L1threshold' : '',
1284 'monType' : [],
1285 'hypo' : '',
1286 'threshold' : '',
1287 'multiplicity' : '',
1288 'isLegacyL1' : [],
1289 'trigType' : '',
1290 'extra' : '',
1291 'sigFolder' : ['CalibCosmicMon'],
1292 'subSigs' : ['Monitor'],
1293 'chainPartIndex': 0
1294 }
1295
1296#==========================================================
1297# ---- EB chains -----
1298#==========================================================
1299AllowedEBChainIdentifiers = ['eb']
1300
1301# ---- Enhanced Bias Chain Dictionary of all allowed Values ----
1302EnhancedBiasChainParts = {
1303 'signature' : ['EnhancedBias'],
1304 'alignmentGroup' : ['EnhancedBias'],
1305 'chainPartName' : '',
1306 'L1threshold' : '',
1307 'algType' : ['medium','firstempty','empty','unpairediso','unpairednoniso', 'low'],
1308 'threshold' : '',
1309 'multiplicity' : '',
1310 'trigType' : '',
1311 'extra' : '',
1312 'sigFolder' : ['CalibCosmicMon'],
1313 'subSigs' : ['EnhancedBias'],
1314 'chainPartIndex': list(range(0,10))
1315 }
1316
1317# ---- EnhancedBias Chain Default Dictionary of all allowed Values ----
1318EnhancedBiasChainParts_Default = {
1319 'signature' : ['EnhancedBias'],
1320 'alignmentGroup' : ['EnhancedBias'],
1321 'chainPartName' : '',
1322 'L1threshold' : '',
1323 'algType' : 'physics',
1324 'threshold' : '',
1325 'multiplicity' : '',
1326 'trigType' : '',
1327 'extra' : '',
1328 'sigFolder' : ['CalibCosmicMon'],
1329 'subSigs' : ['EnhancedBias'],
1330 'chainPartIndex': 0
1331 }
1332
1333#==========================================================
1334# ---- BeamspotDef chains -----
1335#==========================================================
1336AllowedBeamspotChainIdentifiers = ['beamspot',]
1337BeamspotChainParts = {
1338 'signature' : ['Beamspot'],
1339 'alignmentGroup' : ['Beamspot'],
1340 'chainPartName' : '',
1341 'L1threshold' : '',
1342 'monType' : AllowedBeamspotChainIdentifiers,
1343 'location' : ['vtx'],
1344 'addInfo' : ['trkFS', 'allTE', 'activeTE','idperf'],
1345 'hypo' : [],
1346 'l2IDAlg' : ['trkfast'],
1347 'threshold' : '',
1348 'multiplicity' : '',
1349 'trigType' : 'beamspot',
1350 'extra' : '',
1351 'sigFolder' : ['CalibCosmicMon'],
1352 'subSigs' : ['Beamspot'],
1353 'chainPartIndex': list(range(0,10)),
1354 'beamspotChain' : [],
1355 }
1356
1357# ---- Beamspot Chain Default Dictionary of all allowed Values ----
1358BeamspotChainParts_Default = {
1359 'signature' : ['Beamspot'],
1360 'alignmentGroup' : ['Beamspot'],
1361 'chainPartName' : '',
1362 'L1threshold' : '',
1363 'monType' : [],
1364 'addInfo' : [],
1365 'hypo' : [],
1366 'l2IDAlg' : [],
1367 'threshold' : '',
1368 'multiplicity' : '',
1369 'location' : 'vtx',
1370 'trigType' : '',
1371 'extra' : '',
1372 'sigFolder' : ['CalibCosmicMon'],
1373 'subSigs' : ['Beamspot'],
1374 'chainPartIndex' : 0,
1375 'beamspotChain' : '',
1376 }
1377
1378#==========================================================
1379# Unconventional Tracking
1380#==========================================================
1381# ---- Unconventional Tracking Dictionary of all allowed Values ----
1382UnconventionalTrackingChainParts = {
1383 'signature' : ['UnconventionalTracking'],
1384 'alignmentGroup' : ['UnconventionalTracking'],
1385 'L1threshold' : '',
1386 'chainPartName' : [],
1387 'multiplicity' : '',
1388 'trigType' : ['isotrk', 'fslrt', 'dedxtrk', 'hitdvjet', 'fsvsi', 'distrk', 'dispjet', 'dispvtx'],
1389 'threshold' : '',
1390 'IDinfo' : ['loose','medium','tight','vloose'],
1391 'isoInfo' : ['iaggrmedium','iaggrloose','imedium','iloose'],
1392 'extra' : '',
1393 'addInfo' : ['perf'],
1394 'dispjetConfig' : ['3d2p', '1p', 'x3d1p', '2p'],
1395 'sigFolder' : ['UnconventionalTracking'],
1396 'subSigs' : ['UnconventionalTracking'],
1397 'chainPartIndex': list(range(0,10))
1398}
1399# ---- Unconventional Tracking Dictionary of default Values ----
1400UnconventionalTrackingChainParts_Default = {
1401 'signature' : ['UnconventionalTracking'],
1402 'alignmentGroup' : ['UnconventionalTracking'],
1403 'L1threshold' : '',
1404 'chainPartName' : [],
1405 'multiplicity' : '',
1406 'IDinfo' : '',
1407 'trigType' : '',
1408 'threshold' : '',
1409 'isoInfo' : '',
1410 'extra' : '',
1411 'addInfo' : '',
1412 'dispjetConfig' : '',
1413 'sigFolder' : ['UnconventionalTracking'],
1414 'subSigs' : ['UnconventionalTracking'],
1415 'chainPartIndex': 0
1416}
1417
1418#==========================================================
1419# Combined Chains
1420#==========================================================
1421AllowedTopos_comb = [
1422 'idZmumu','idJpsimumu',
1423 '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',
1424 'anomdet','anomdetL','anomdetM','anomdetT',
1425 '115masswisoABC','115masswisoABC135',
1426 '29dphiAA', '29dphiAB', '30dphiAA', '30dphiAB', # g-2 tau triggers
1427 '03dRCD30', '03dRCD', # bootstrapped di-tau triggers
1428 '90invmAB',# TEST
1429 '1invmAB5','50invmAB130','50invmBC130', # Jpsiee, Zee/Zeg
1430 '25dphiAA','25dphiBB','25dphiCC','invmAA80', # Low-mass diphoton
1431 '10invmAA70', # Low-mass dimuon
1432 'invmAB10', '10invmAB70',
1433 '7invmAB9', '11invmAB60', '11invmAB24', '24invmAB60', '7invmAA9', '11invmAA60', '11invmAA24', '24invmAA60',
1434 '20detaAA' # Low mass Drell-Yan
1435 ]
1436
1437# ---- Combined Dictionary of all allowed Values ----
1438CombinedChainParts = deepcopy(PhotonChainParts)
1439CombinedChainParts['signature'] = ['Photon','Muon']
1440CombinedChainParts['chainParts'] = ['g','mu'],
1441CombinedChainParts['topo'] = AllowedTopos_comb
1442# ---- Combined Dictionary of default Values ----
1443CombinedChainParts_Default = deepcopy(PhotonChainParts_Default)
1444CombinedChainParts_Default['signature'] = ['Photon','Muon']
1445CombinedChainParts_Default['chainParts'] = ['g','mu'],
1446CombinedChainParts_Default['trigType'] = ''
1447CombinedChainParts_Default['topo'] = []
1448
1449#==========================================================
1450# ----- Allowed HLT Topo Keywords (also: generic topos like DR, DETA, DPHI...)
1451#==========================================================
1452#NOTE: removed jets from list, special case for VBF triggers
1453AllowedTopos = AllowedTopos_e + AllowedTopos_g + AllowedTopos_mu + AllowedTopos_Bphysics + AllowedTopos_xe + AllowedTopos_tau + AllowedTopos_comb
1454
1455#==========================================================
1456# Obtain signature type
1457#==========================================================
1459 import re
1460 theMatchingTokens = []
1461 reverseSliceIDDict = { subvalue: key for key, value in SliceIDDict.items() for subvalue in ([value] if not isinstance(value, list) else value) } #reversed SliceIDDict
1462 for sig,token in SliceIDDict.items():
1463 token = token if isinstance(token, list) else [token]
1464 for subtoken in token:
1465 if re.match(r'^\d*'+subtoken+r'\d*\w*$', chainpart):
1466 theMatchingTokens += [subtoken]
1467 if len(theMatchingTokens) > 0:
1468 return reverseSliceIDDict[sorted(theMatchingTokens, key=lambda x: len(x), reverse=True)[0]]
1469 else:
1470 log.error('No signature matching chain part %s was found.', chainpart)
1471
1472 raise Exception('[getSignatureNameFromToken] Cannot find signature from chain name, exiting.')
1473
1474 return False
1475
1476
1477#==========================================================
1478# Signature dictionaries to use
1479#==========================================================
1481 if signature == 'Electron':
1482 return [ElectronChainParts_Default, ElectronChainParts]
1483 if signature == 'Photon':
1484 return [PhotonChainParts_Default, PhotonChainParts]
1485 if signature == "Jet":
1486 return [JetChainParts_Default, JetChainParts]
1487 if signature == "Bjet":
1488 return [bJetChainParts_Default, JetChainParts]
1489 if signature == "Beamspot_Jet":
1490 return [BeamspotJetChainParts_Default, JetChainParts]
1491 if signature == "Tau":
1492 return [TauChainParts_Default, TauChainParts]
1493 if signature == "Ditau":
1494 return [ditauJetChainParts_Default, JetChainParts]
1495 if (signature == "Muon"):
1496 return [MuonChainParts_Default, MuonChainParts]
1497 if (signature == "Bphysics"):
1498 return [BphysicsChainParts_Default, BphysicsChainParts]
1499 if (signature == "Combined"):
1500 return [CombinedChainParts_Default, CombinedChainParts]
1501 if signature == "MET":
1502 return [METChainParts_Default, METChainParts]
1503 if signature == "XS":
1504 return [XSChainParts_Default, XSChainParts]
1505 if signature == "TE":
1506 return [TEChainParts_Default, TEChainParts]
1507 if signature == "MinBias":
1508 return [MinBiasChainParts_Default, MinBiasChainParts]
1509 if signature == "HeavyIon":
1510 return [HeavyIonChainParts_Default, HeavyIonChainParts]
1511 if signature == "Cosmic":
1512 return [CosmicChainParts_Default, CosmicChainParts]
1513 if signature == "Calib":
1514 return [CalibChainParts_Default, CalibChainParts]
1515 if signature == "Streaming":
1516 return [StreamingChainParts_Default, StreamingChainParts]
1517 if signature == "Monitor":
1518 return [MonitorChainParts_Default, MonitorChainParts]
1519 if signature == "Beamspot":
1520 return [BeamspotChainParts_Default, BeamspotChainParts]
1521 if signature == "EnhancedBias":
1522 return [EnhancedBiasChainParts_Default, EnhancedBiasChainParts]
1523 if signature == "UnconventionalTracking":
1524 return [UnconventionalTrackingChainParts_Default, UnconventionalTrackingChainParts]
1525 if signature == "Test":
1526 return [TestChainParts_Default, TestChainParts]
1527 else:
1528 raise RuntimeError("ERROR Cannot find corresponding dictionary for signature", signature)
1529
1530#==========================================================
1531# Analysis the base pattern: <mult><signatureType><threshold><extraInfo>
1532#==========================================================
1534 import re
1535 allTrigTypes = []
1536 for v in SliceIDDict.values():
1537 if isinstance(v, list):
1538 allTrigTypes += v
1539 else:
1540 allTrigTypes.append(v)
1541
1542 possibleTT = '|'.join(allTrigTypes)
1543 pattern = re.compile(r"(?P<multiplicity>\d*)(?P<trigType>(%s))(?P<threshold>\d+)(?P<extra>\w*)" % (possibleTT))
1544 return pattern