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