38 def __init__(self, flags, chain_part: dict[str, Any]):
39 self._id = getChainIDConfigName(flags, chain_part)
40 self._chain_part = chain_part
41
42 self._id_wp = ''
43 self._highpt_id_wp = ''
44 self._do_perfcore = True
45 self._do_perfiso = True
46
47 self._use_rnn_selection = False
48
49 if self._id in ['idperf', 'noperf', 'perfcore', 'perfiso', 'perf']:
50 self._do_perfcore = self._id in ['perfcore', 'perf']
51 self._do_perfiso = self._id in ['perfiso', 'perf']
52
53 else:
54 if self._id in ['DeepSet', 'RNNLLP'] and self._chain_part['selection'].endswith('RNN'):
55
56 self._use_rnn_selection = True
57 self._id_wp = self._chain_part['selection'][:-3]
58 if self._id_wp in ['medium', 'tight']: self._highpt_id_wp = 'loose'
59
60 else:
61 id_wp = self._chain_part['selection'].removesuffix(self._id).lower()
62
63
64 if id_wp.endswith('noperf'):
65 id_wp = id_wp.removesuffix('noperf')
66 self._do_perfcore = self._do_perfiso = False
67 elif id_wp.endswith('perfcore'):
68 id_wp = id_wp.removesuffix('perfcore')
69 self._do_perfiso = False
70 elif id_wp.endswith('perfiso'):
71 id_wp = id_wp.removesuffix('perfiso')
72 self._do_perfcore = False
73
74
75 def find_wp(wp: str, fail: bool = True) -> str:
76 for twp in getattr(flags.Trigger.Offline.Tau, self._id).TargetWPs.keys():
77 if twp.lower() == wp: return twp
78 else:
79 if fail: ValueError(f'Cannot find the "{self._id}" WP "{wp}"')
80 else: return ''
81
82
83 self._id_wp = find_wp(id_wp)
84
85
86 if id_wp.startswith('medium'): self._highpt_id_wp = find_wp(f'loose{id_wp[6:]}', True)
87 elif id_wp.startswith('tight'): self._highpt_id_wp = find_wp(f'loose{id_wp[5:]}', True)
88