ATLAS Offline Software
Loading...
Searching...
No Matches
TRT_ElectronPidToolsConfig.py
Go to the documentation of this file.
1# Copyright (C) 2002-2024 CERN for the benefit of the ATLAS collaboration
2from AthenaConfiguration.ComponentAccumulator import ComponentAccumulator
3from AthenaConfiguration.ComponentFactory import CompFactory
4
5
6def TRT_LocalOccupancyCfg(flags, name="TRT_LocalOccupancy", **kwargs):
7 acc = ComponentAccumulator()
8 from TRT_ConditionsServices.TRT_ConditionsServicesConfig import TRT_CalDbToolCfg
9 CalDbTool = acc.popToolsAndMerge(TRT_CalDbToolCfg(flags))
10 acc.addPublicTool(CalDbTool) # public as it is has many clients to save some memory
11 kwargs.setdefault("TRTCalDbTool", CalDbTool)
12
13 from TRT_ConditionsAlgs.TRT_ConditionsAlgsConfig import TRTStrawStatusCondAlgCfg, TRTStrawCondAlgCfg
14 acc.merge(TRTStrawStatusCondAlgCfg(flags))
15 acc.merge(TRTStrawCondAlgCfg(flags))
16
17 kwargs.setdefault("isTrigger", False)
18
19 if "TRT_DriftCircleCollection" not in kwargs:
20 # TODO: Drift circles
21 pass
22
23 acc.setPrivateTools(CompFactory.InDet.TRT_LocalOccupancy(name, **kwargs))
24 return acc
25
26def TrigTRT_LocalOccupancyCfg(flags, name="TrigTRT_LocalOccupancy", **kwargs):
27 acc = ComponentAccumulator()
28
29 kwargs.setdefault("isTrigger", True)
30 kwargs.setdefault("TRT_DriftCircleCollection", "TRT_TrigDriftCircles")
31
32 acc.setPrivateTools(acc.popToolsAndMerge(TRT_LocalOccupancyCfg(flags,name,**kwargs)))
33 return acc
34
35
36def TRT_OverlayLocalOccupancyCfg(flags, name="TRT_OverlayLocalOccupancy", **kwargs):
37 """Return a ComponentAccumulator for overlay TRT_LocalOccupancy Tool"""
38 kwargs.setdefault("TRT_DriftCircleCollection", "")
39 from TRT_ConditionsAlgs.TRT_ConditionsAlgsConfig import TRTStrawStatusCondAlgCfg
40 acc = TRTStrawStatusCondAlgCfg(flags, StrawStatusHTSummaryWriteKey="")
41 acc.setPrivateTools(acc.popToolsAndMerge(TRT_LocalOccupancyCfg(flags, name, **kwargs)))
42 return acc
43
44
45def TRTOccupancyIncludeCfg(flags, name="TRTOccupancyInclude", **kwargs):
46 acc = ComponentAccumulator()
47 tool = acc.popToolsAndMerge(TRT_LocalOccupancyCfg(flags))
48 acc.addPublicTool(tool)
49 kwargs.setdefault("TRT_LocalOccupancyTool", tool)
50 acc.addEventAlgo(CompFactory.TRTOccupancyInclude(name, **kwargs))
51 return acc
52
53
54def __TRT_dEdxToolBaseCfg(flags, name, **kwargs):
55 """internal function to avoid code duplication,
56 it does not deal with LumiBlockMuWriterCfg dependancy correctly
57 """
58
59 from TRT_ConditionsAlgs.TRT_ConditionsAlgsConfig import TRTToTCondAlgCfg
60 acc = TRTToTCondAlgCfg(flags)
61
62 kwargs.setdefault("TRT_dEdx_isData", not flags.Input.isMC)
63
64 acc.setPrivateTools(CompFactory.TRT_ToT_dEdx(name,**kwargs))
65 return acc
66
67
68def TRT_dEdxToolCfg(flags, name="TRT_dEdxTool", **kwargs):
69 acc = ComponentAccumulator()
70
71 if not flags.Input.isMC:
72 from LumiBlockComps.LumiBlockMuWriterConfig import LumiBlockMuWriterCfg
73 acc.merge(LumiBlockMuWriterCfg(flags))
74
75 if "TRT_LocalOccupancyTool" not in kwargs:
76 kwargs.setdefault("TRT_LocalOccupancyTool", acc.popToolsAndMerge(
78
79 if "AssociationTool" not in kwargs:
80 from InDetConfig.InDetAssociationToolsConfig import (
81 InDetPrdAssociationToolCfg)
82 kwargs.setdefault("AssociationTool", acc.popToolsAndMerge(
83 InDetPrdAssociationToolCfg(flags)))
84
85 if "TRTStrawSummaryTool" not in kwargs:
86 from TRT_ConditionsServices.TRT_ConditionsServicesConfig import TRT_StrawStatusSummaryToolCfg
87 kwargs.setdefault("TRTStrawSummaryTool", acc.popToolsAndMerge(TRT_StrawStatusSummaryToolCfg(flags)))
88
89 from AthenaConfiguration.Enums import ProductionStep
90 if flags.Common.ProductionStep in [ProductionStep.MinbiasPreprocessing]:
91 kwargs.setdefault("averageInteractionsPerCrossingKey", f"{flags.Overlay.BkgPrefix}EventInfo.averageInteractionsPerCrossing")
92
93 acc.setPrivateTools(acc.popToolsAndMerge(
94 __TRT_dEdxToolBaseCfg(flags, name, **kwargs)))
95 return acc
96
97
98def TrigTRT_dEdxToolCfg(flags, name="TrigTRT_dEdxTool", **kwargs):
99 """trigger version should not add LumiBlockMuWriterCfg to views as it is scheduled globally"""
100
101 acc = ComponentAccumulator()
102
103 if "TRT_LocalOccupancyTool" not in kwargs:
104 kwargs.setdefault("TRT_LocalOccupancyTool", acc.popToolsAndMerge(TrigTRT_LocalOccupancyCfg(flags)))
105
106 if "AssociationTool" not in kwargs:
107 from InDetConfig.InDetAssociationToolsConfig import TrigPrdAssociationToolCfg
108 kwargs.setdefault("AssociationTool", acc.popToolsAndMerge(TrigPrdAssociationToolCfg(flags)))
109
110 acc.setPrivateTools(acc.popToolsAndMerge(__TRT_dEdxToolBaseCfg(flags, name, **kwargs)))
111 return acc
112
113def TRT_ElectronPidToolCfg(flags, name="TRT_ElectronPidTool", **kwargs):
114 from TRT_ConditionsAlgs.TRT_ConditionsAlgsConfig import TRTHTCondAlgCfg, TRTPIDNNCondAlgCfg
115 acc = TRTHTCondAlgCfg(flags)
116
117 kwargs.setdefault("CalculateNNPid", True)
118
119 if kwargs["CalculateNNPid"]:
120 acc.merge(TRTPIDNNCondAlgCfg(flags))
121
122 if "TRTStrawSummaryTool" not in kwargs:
123 from TRT_ConditionsServices.TRT_ConditionsServicesConfig import TRT_StrawStatusSummaryToolCfg
124 kwargs.setdefault("TRTStrawSummaryTool", acc.popToolsAndMerge(TRT_StrawStatusSummaryToolCfg(flags)))
125
126 if "TRT_LocalOccupancyTool" not in kwargs:
127 kwargs.setdefault("TRT_LocalOccupancyTool", acc.popToolsAndMerge(TRT_LocalOccupancyCfg(flags)))
128
129 if "TRT_ToT_dEdx_Tool" not in kwargs:
130 kwargs.setdefault("TRT_ToT_dEdx_Tool", acc.popToolsAndMerge(TRT_dEdxToolCfg(flags)))
131
132 acc.setPrivateTools(CompFactory.InDet.TRT_ElectronPidToolRun2(name, **kwargs))
133 return acc
134
135def TrigTRT_ElectronPidToolCfg(flags, name="InDetTrigTRT_ElectronPidTool", **kwargs):
136
137 acc = ComponentAccumulator()
138
139 from TRT_ConditionsServices.TRT_ConditionsServicesConfig import TRT_StrawStatusSummaryToolCfg
140 kwargs.setdefault("TRTStrawSummaryTool", acc.popToolsAndMerge(TRT_StrawStatusSummaryToolCfg(flags,name="InDetTrigTRTStrawStatusSummaryTool")))
141
142 kwargs.setdefault("TRT_LocalOccupancyTool", acc.popToolsAndMerge(TrigTRT_LocalOccupancyCfg(flags)))
143 kwargs.setdefault("TRT_ToT_dEdx_Tool", acc.popToolsAndMerge(TrigTRT_dEdxToolCfg(flags)))
144
145 kwargs.setdefault("CalculateNNPid", False)
146
147 acc.setPrivateTools(acc.popToolsAndMerge(TRT_ElectronPidToolCfg(flags,name,**kwargs)))
148 return acc
149
150def GSFBuildTRT_ElectronPidToolCfg(flags, name="GSFBuildTRT_ElectronPidTool", isTrigger=False, **kwargs):
151 kwargs.setdefault("CalculateNNPid", False)
152 kwargs.setdefault("MinimumTrackPtForNNPid", 0.)
153 if isTrigger:
154 return TrigTRT_ElectronPidToolCfg(flags, name="TrigGSFBuildTRT_ElectronPidTool", **kwargs)
155 else:
156 return TRT_ElectronPidToolCfg(flags, name, **kwargs)
157
158
GSFBuildTRT_ElectronPidToolCfg(flags, name="GSFBuildTRT_ElectronPidTool", isTrigger=False, **kwargs)
TRTOccupancyIncludeCfg(flags, name="TRTOccupancyInclude", **kwargs)
TRT_ElectronPidToolCfg(flags, name="TRT_ElectronPidTool", **kwargs)
TrigTRT_ElectronPidToolCfg(flags, name="InDetTrigTRT_ElectronPidTool", **kwargs)
TrigTRT_dEdxToolCfg(flags, name="TrigTRT_dEdxTool", **kwargs)
TRT_dEdxToolCfg(flags, name="TRT_dEdxTool", **kwargs)
TRT_OverlayLocalOccupancyCfg(flags, name="TRT_OverlayLocalOccupancy", **kwargs)
TRT_LocalOccupancyCfg(flags, name="TRT_LocalOccupancy", **kwargs)
TrigTRT_LocalOccupancyCfg(flags, name="TrigTRT_LocalOccupancy", **kwargs)