ATLAS Offline Software
InDetTrackSystematicsToolsConfig.py
Go to the documentation of this file.
1 # Copyright (C) 2002-2025 CERN for the benefit of the ATLAS collaboration
2 # Configuration of InDetTrackSystematicsTools package
3 from AthenaConfiguration.ComponentAccumulator import ComponentAccumulator
4 from AthenaConfiguration.ComponentFactory import CompFactory
5 from Campaigns.Utils import Campaign
6 from AthenaCommon.Logging import logging
7 
8 def InDetTrackTruthOriginToolCfg(flags, name="InDetTrackTruthOriginTool", **kwargs):
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 
27 def 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]:
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 
52 def 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  # Run 3 recommendations (MC23): https://indico.cern.ch/event/1424738/#20-run-3-recommendations-fake
61  if flags.GeoModel.Run >= LHCPeriod.Run3:
62  kwargs.setdefault("FakeUncertainty", 0.30)
63  # Run 2 recommendations (MC20): https://cds.cern.ch/record/2859907
64  else:
65  kwargs.setdefault("FakeUncertainty", 0.35)
66 
67  acc.setPrivateTools(CompFactory.InDet.JetTrackFilterTool(name, **kwargs))
68  return acc
69 
70 def InclusiveTrackFilterToolCfg(flags, name="InclusiveTrackFilterTool", **kwargs):
71  acc = ComponentAccumulator()
72 
73  from AthenaConfiguration.Enums import LHCPeriod
74  # 2022 recommendations (MC23a)
75  if flags.Input.MCCampaign is Campaign.MC23a:
76  kwargs.setdefault("calibFileLRTEff", "InDetTrackSystematicsTools/CalibData_25.2_2025-v00/LargeD0TrackingRecommendations_mc23a.root")
77  elif flags.Input.MCCampaign is Campaign.MC23d:
78  kwargs.setdefault("calibFileLRTEff", "InDetTrackSystematicsTools/CalibData_25.2_2025-v00/LargeD0TrackingRecommendations_mc23d.root")
79  # Run 2 recommendations (MC20)
80  elif flags.GeoModel.Run is LHCPeriod.Run2:
81  kwargs.setdefault("calibFileLRTEff", "InDetTrackSystematicsTools/CalibData_24.0_2023-v00/LargeD0TrackingRecommendations_20230824.root")
82  else:
83  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.")
84 
85  acc.setPrivateTools(
86  CompFactory.InDet.InclusiveTrackFilterTool(name, **kwargs))
87  return acc
88 
89 def InDetTrackSmearingToolCfg(flags, name="InDetTrackSmearingTool", **kwargs):
90  acc = ComponentAccumulator()
91 
92  from AthenaConfiguration.Enums import LHCPeriod
93  # 2022 recommendations (MC23a)
94  if flags.Input.MCCampaign is Campaign.MC23a:
95  kwargs.setdefault("calibFileIP_CTIDE", "InDetTrackSystematicsTools/CalibData_25.2_2025-v00/2022_d0z0_smearing_factors_v2.root")
96  # 2023 recommendations (MC23d)
97  elif flags.Input.MCCampaign is Campaign.MC23d:
98  kwargs.setdefault("calibFileIP_CTIDE", "InDetTrackSystematicsTools/CalibData_25.2_2025-v00/2023_d0z0_smearing_factors_v2.root")
99  # 2024 recommendations (MC23e)
100  elif flags.Input.MCCampaign is Campaign.MC23e:
101  kwargs.setdefault("calibFileIP_CTIDE", "InDetTrackSystematicsTools/CalibData_25.2_2025-v00/2024_d0z0_smearing_factors.root")
102  # Run 2 recommendations (MC20)
103  elif flags.GeoModel.Run is LHCPeriod.Run2:
104  kwargs.setdefault("calibFileIP_CTIDE", "InDetTrackSystematicsTools/CalibData_22.0_2022-v00/d0z0_smearing_factors_Run2_v2.root")
105  elif "calibFileIP_CTIDE" not in kwargs:
106  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.")
107 
108  acc.setPrivateTools(
109  CompFactory.InDet.InDetTrackSmearingTool(name, **kwargs))
110  return acc
111 
112 def TrackSystematicsAlgCfg(flags, name="InDetTrackSystematicsAlg", **kwargs):
113  acc = ComponentAccumulator()
114 
115  if "TrackFilterToolLRT" not in kwargs:
116  kwargs.setdefault("TrackFilterToolLRT", acc.popToolsAndMerge(
118 
119  if "TrackFilterToolSTD" not in kwargs:
120  kwargs.setdefault("TrackFilterToolSTD", acc.popToolsAndMerge(
122 
123  acc.addEventAlgo(CompFactory.InDet.TrackSystematicsAlg(name, **kwargs))
124  return acc
InDetTrackSystematicsToolsConfig.JetTrackFilterToolCfg
def JetTrackFilterToolCfg(flags, name="JetTrackFilterTool", **kwargs)
Definition: InDetTrackSystematicsToolsConfig.py:52
InDetTrackSystematicsToolsConfig.InDetTrackSmearingToolCfg
def InDetTrackSmearingToolCfg(flags, name="InDetTrackSmearingTool", **kwargs)
Definition: InDetTrackSystematicsToolsConfig.py:89
python.JetAnalysisCommon.ComponentAccumulator
ComponentAccumulator
Definition: JetAnalysisCommon.py:302
InDetTrackSystematicsToolsConfig.InDetTrackTruthFilterToolCfg
def InDetTrackTruthFilterToolCfg(flags, name="InDetTrackTruthFilterTool", **kwargs)
Definition: InDetTrackSystematicsToolsConfig.py:27
InDetTrackSystematicsToolsConfig.TrackSystematicsAlgCfg
def TrackSystematicsAlgCfg(flags, name="InDetTrackSystematicsAlg", **kwargs)
Definition: InDetTrackSystematicsToolsConfig.py:112
InDetTrackSystematicsToolsConfig.InclusiveTrackFilterToolCfg
def InclusiveTrackFilterToolCfg(flags, name="InclusiveTrackFilterTool", **kwargs)
Definition: InDetTrackSystematicsToolsConfig.py:70
InDetTrackSystematicsToolsConfig.InDetTrackTruthOriginToolCfg
def InDetTrackTruthOriginToolCfg(flags, name="InDetTrackTruthOriginTool", **kwargs)
Definition: InDetTrackSystematicsToolsConfig.py:8