ATLAS Offline Software
Loading...
Searching...
No Matches
InDetTrackSystematicsToolsConfig.py
Go to the documentation of this file.
1# Copyright (C) 2002-2026 CERN for the benefit of the ATLAS collaboration
2# Configuration of InDetTrackSystematicsTools package
3from AthenaConfiguration.ComponentAccumulator import ComponentAccumulator
4from AthenaConfiguration.ComponentFactory import CompFactory
5from Campaigns.Utils import Campaign
6from AthenaCommon.Logging import logging
7
8def InDetTrackTruthOriginToolCfg(flags, name="InDetTrackTruthOriginTool", **kwargs):
9 acc = ComponentAccumulator()
10
11 log = logging.getLogger("InDetTrackTruthOriginTool")
12 # this might fail if we're in AthAnalysis
13 try:
14 kwargs.setdefault("isFullPileUpTruth", flags.Digitization.PileUp
15 and flags.Digitization.DigiSteeringConf in ['StandardPileUpToolsAlg',
16 'StandardInTimeOnlyTruthPileUpToolsAlg',
17 'StandardInTimeOnlyGeantinoTruthPileUpToolsAlg'])
18 except AttributeError:
19 # assume this should be false if we're unable to load flags (temporary solution)
20 kwargs.setdefault("isFullPileUpTruth", False)
21 log.warning("Unable to load digi flags, assuming isFullPileUpTruth=False. Normal if you're in AthAnalysis.")
22
23 acc.setPrivateTools(
24 CompFactory.InDet.InDetTrackTruthOriginTool(name, **kwargs))
25 return acc
26
27def InDetTrackTruthFilterToolCfg(flags, name="InDetTrackTruthFilterTool", **kwargs):
28 acc = ComponentAccumulator()
29
30 if "trackOriginTool" not in kwargs:
31 kwargs.setdefault("trackOriginTool", acc.popToolsAndMerge(
33
34 from AthenaConfiguration.Enums import LHCPeriod
35 # 2022 recommendations (MC23a)
36 if flags.Input.MCCampaign in [Campaign.MC23a, Campaign.MC23d, Campaign.MC23e]:
37 kwargs.setdefault("calibFileNomEff", "InDetTrackSystematicsTools/CalibData_22.0_2022-v00/TrackingRecommendations_prelim_rel22.root")
38 kwargs.setdefault("fFakeLoose", 0.40)
39 kwargs.setdefault("fFakeTight", 1.00)
40 # Run 2 recommendations (MC20)
41 elif flags.GeoModel.Run is LHCPeriod.Run2:
42 kwargs.setdefault("calibFileNomEff", "InDetTrackSystematicsTools/CalibData_22.0_2022-v00/TrackingRecommendations_prelim_rel22.root")
43 kwargs.setdefault("fFakeLoose", 0.10)
44 kwargs.setdefault("fFakeTight", 1.00)
45 else:
46 raise ValueError(f"InDetTrackTruthFilterTool: Recommendations not yet available for campaign {flags.Input.MCCampaign}! Please check the configuration and contact Tracking CP if you believe this message is in error.")
47
48 acc.setPrivateTools(
49 CompFactory.InDet.InDetTrackTruthFilterTool(name, **kwargs))
50 return acc
51
52def JetTrackFilterToolCfg(flags, name="JetTrackFilterTool", **kwargs):
53 acc = ComponentAccumulator()
54
55 if "trackOriginTool" not in kwargs:
56 kwargs.setdefault("trackOriginTool", acc.popToolsAndMerge(
58
59 from AthenaConfiguration.Enums import LHCPeriod
60
61 # TIDE fake rate recommendations:
62 # Run 3 (MC23): https://indico.cern.ch/event/1587937/#40-fake-tracks-in-the-jet-core
63 if flags.GeoModel.Run >= LHCPeriod.Run3:
64 kwargs.setdefault("FakeUncertainty", 0.25)
65 # Run 2 (MC20): https://cds.cern.ch/record/2859907
66 else:
67 kwargs.setdefault("FakeUncertainty", 0.35)
68
69 # TIDE FLost recommendations:
70 # Run 3 (MC23)
71 if flags.GeoModel.Run >= LHCPeriod.Run3:
72 # 2022/23 (MC23a/d): https://indico.cern.ch/event/1531052/#38-flost-update
73 if flags.Input.MCCampaign in [Campaign.MC23a, Campaign.MC23d]:
74 kwargs.setdefault("FLostUncertainty", 0.24)
75 # *Preliminary* 2024 (MC23e): https://indico.cern.ch/event/1643176/#42-flost
76 elif flags.Input.MCCampaign is Campaign.MC23e:
77 kwargs.setdefault("FLostUncertainty", 0.50)
78 else:
79 raise ValueError(f"JetTrackFilterTool: Recommendations not yet available for campaign {flags.Input.MCCampaign}! Please check the configuration and contact Tracking CP if you believe this message is in error.")
80 # Run 2 (MC20)
81 else:
82 kwargs.setdefault("FLostUncertainty", 0.24)
83
84 acc.setPrivateTools(CompFactory.InDet.JetTrackFilterTool(name, **kwargs))
85 return acc
86
87def InclusiveTrackFilterToolCfg(flags, name="InclusiveTrackFilterTool", **kwargs):
88 acc = ComponentAccumulator()
89
90 from AthenaConfiguration.Enums import LHCPeriod
91 # 2022 recommendations (MC23a)
92 if flags.Input.MCCampaign is Campaign.MC23a:
93 kwargs.setdefault("calibFileLRTEff", "InDetTrackSystematicsTools/CalibData_25.2_2025-v00/LargeD0TrackingRecommendations_mc23a.root")
94 elif flags.Input.MCCampaign is Campaign.MC23d:
95 kwargs.setdefault("calibFileLRTEff", "InDetTrackSystematicsTools/CalibData_25.2_2025-v00/LargeD0TrackingRecommendations_mc23d.root")
96 elif flags.Input.MCCampaign is Campaign.MC23e:
97 kwargs.setdefault("calibFileLRTEff", "InDetTrackSystematicsTools/CalibData_25.2_2025-v00/LargeD0TrackingRecommendations_mc23e.root")
98 # Run 2 recommendations (MC20)
99 elif flags.GeoModel.Run is LHCPeriod.Run2:
100 kwargs.setdefault("calibFileLRTEff", "InDetTrackSystematicsTools/CalibData_24.0_2023-v00/LargeD0TrackingRecommendations_20230824.root")
101 else:
102 raise ValueError(f"InclusiveTrackFilterTool: Recommendations not yet available for campaign {flags.Input.MCCampaign}! Please check the configuration and contact Tracking CP if you believe this message is in error.")
103
104 acc.setPrivateTools(
105 CompFactory.InDet.InclusiveTrackFilterTool(name, **kwargs))
106 return acc
107
108def InDetTrackSmearingToolCfg(flags, name="InDetTrackSmearingTool", **kwargs):
109 acc = ComponentAccumulator()
110
111 from AthenaConfiguration.Enums import LHCPeriod
112 # 2022 recommendations (MC23a)
113 if flags.Input.MCCampaign is Campaign.MC23a:
114 kwargs.setdefault("calibFileIP_CTIDE", "InDetTrackSystematicsTools/CalibData_25.2_2025-v00/2022_d0z0_smearing_factors_v2.root")
115 # 2023 recommendations (MC23d)
116 elif flags.Input.MCCampaign is Campaign.MC23d:
117 kwargs.setdefault("calibFileIP_CTIDE", "InDetTrackSystematicsTools/CalibData_25.2_2025-v00/2023_d0z0_smearing_factors_v2.root")
118 # 2024 recommendations (MC23e)
119 elif flags.Input.MCCampaign is Campaign.MC23e:
120 kwargs.setdefault("calibFileIP_CTIDE", "InDetTrackSystematicsTools/CalibData_25.2_2025-v00/2024_d0z0_smearing_factors.root")
121 # Run 2 recommendations (MC20)
122 elif flags.GeoModel.Run is LHCPeriod.Run2:
123 kwargs.setdefault("calibFileIP_CTIDE", "InDetTrackSystematicsTools/CalibData_22.0_2022-v00/d0z0_smearing_factors_Run2_v2.root")
124 elif "calibFileIP_CTIDE" not in kwargs:
125 raise ValueError(f"InDetTrackSmearingTool: Recommendations not yet available for campaign {flags.Input.MCCampaign}! Please check the configuration and contact Tracking CP if you believe this message is in error.")
126
127 acc.setPrivateTools(
128 CompFactory.InDet.InDetTrackSmearingTool(name, **kwargs))
129 return acc
130
131def InDetTrackBiasingToolCfg(flags, name="InDetTrackBiasingTool", **kwargs):
132 acc = ComponentAccumulator()
133 kwargs.setdefault("isMC", flags.Input.isMC)
134
135 acc.setPrivateTools(
136 CompFactory.InDet.InDetTrackBiasingTool(name, **kwargs))
137 return acc
138
139def TrackSystematicsAlgCfg(flags, name="InDetTrackSystematicsAlg", **kwargs):
140 acc = ComponentAccumulator()
141
142 if "TrackFilterToolLRT" not in kwargs:
143 kwargs.setdefault("TrackFilterToolLRT", acc.popToolsAndMerge(
145
146 if "TrackFilterToolSTD" not in kwargs:
147 kwargs.setdefault("TrackFilterToolSTD", acc.popToolsAndMerge(
149
150 acc.addEventAlgo(CompFactory.InDet.TrackSystematicsAlg(name, **kwargs))
151 return acc
InDetTrackTruthOriginToolCfg(flags, name="InDetTrackTruthOriginTool", **kwargs)
InDetTrackSmearingToolCfg(flags, name="InDetTrackSmearingTool", **kwargs)
InDetTrackBiasingToolCfg(flags, name="InDetTrackBiasingTool", **kwargs)
InDetTrackTruthFilterToolCfg(flags, name="InDetTrackTruthFilterTool", **kwargs)
TrackSystematicsAlgCfg(flags, name="InDetTrackSystematicsAlg", **kwargs)
JetTrackFilterToolCfg(flags, name="JetTrackFilterTool", **kwargs)
InclusiveTrackFilterToolCfg(flags, name="InclusiveTrackFilterTool", **kwargs)