ATLAS Offline Software
Loading...
Searching...
No Matches
TrigDiTauHypoTool.py
Go to the documentation of this file.
1# Copyright (C) 2002-2025 CERN for the benefit of the ATLAS collaboration
2import re
3from AthenaCommon.SystemOfUnits import GeV
4
5from AthenaCommon.Logging import logging
6log = logging.getLogger('TrigHLTDiTauHypoTool')
7
8
9def TrigDiTauHypoToolFromDict(flags, chainDict):
10 name = chainDict['chainName']
11 chainPart = chainDict['chainParts'][0]
12 cut_pt = float(chainPart['threshold']) * GeV
13 ditau_tag_str = chainPart['ditauTag']
14 pattern = r"ditauOmni([0-9]+)Trk([0-9])"
15 match = re.match(pattern, ditau_tag_str)
16 if match is None:
17 log.error(f"Invalid ditau tag: {ditau_tag_str}")
18 raise ValueError(f"Invalid ditau tag: {ditau_tag_str}")
19 id_cut = float(f'0.{match.group(1)}')
20 n_trk = int(match.group(2))
21 if n_trk < 3:
22 log.error(f"Invalid ditau tag: {ditau_tag_str}")
23 log.error("it doesn't make sense to require less than 3 tracks in a ditau subjet")
24 raise ValueError(f"Invalid ditau tag: {ditau_tag_str}")
25
26 from AthenaConfiguration.ComponentFactory import CompFactory
27 currentHypo = CompFactory.TrigDiTauHypoTool(
28 name,
29 ditau_pt_threshold=cut_pt,
30 ditau_id_score=id_cut,
31 ditau_lead_max_trk=n_trk,
32 ditau_subl_max_trk=n_trk,
33 )
34
35 return currentHypo
TrigDiTauHypoToolFromDict(flags, chainDict)