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