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