ATLAS Offline Software
Loading...
Searching...
No Matches
ActsEventCnvConfig.py
Go to the documentation of this file.
1# Copyright (C) 2002-2026 CERN for the benefit of the ATLAS collaboration
2from AthenaConfiguration.ComponentAccumulator import ComponentAccumulator
3from AthenaConfiguration.ComponentFactory import CompFactory
4
5
7 name: str = "ActsToTrkConverterTool",
8 setupMuon = False,
9 setupITk = True,
10 **kwargs) -> ComponentAccumulator:
11 acc = ComponentAccumulator()
12
13 from ActsConfig.ActsGeometryConfig import ActsGeometryRealmConvToolCfg
14 kwargs.setdefault("GeometryRealmConvTool", acc.getPrimaryAndMerge(ActsGeometryRealmConvToolCfg(flags)))
15
16 setupMuon = setupMuon and flags.Muon.usePhaseIIGeoSetup
17 setupITk = setupITk and (flags.Detector.GeometryITk or flags.Detector.GeometryID)
18 if not setupMuon or not flags.Detector.EnableMDT:
19 kwargs.setdefault("MdtKey", "")
20 if not setupMuon or not flags.Detector.EnableRPC:
21 kwargs.setdefault("RpcKey", "")
22 if not setupMuon or not flags.Detector.EnableTGC:
23 kwargs.setdefault("TgcKey", "")
24 if not setupMuon or not flags.Detector.EnableMM:
25 kwargs.setdefault("MmKey", "")
26 if not setupMuon or not flags.Detector.EnablesTGC:
27 kwargs.setdefault("sTgcKey", "")
28 if not setupITk:
29 kwargs.setdefault("PixelKey", "")
30 kwargs.setdefault("SctKey", "")
31 from MuonConfig.MuonGeometryConfig import MuonIdHelperSvcCfg
32 kwargs.setdefault("MuonIdHelperSvc", acc.getPrimaryAndMerge(MuonIdHelperSvcCfg(flags)) if setupMuon else "")
33
34 from TrkConfig.TrkTrackSummaryToolConfig import CombinedSummaryToolCfg, InDetTrackSummaryToolCfg
35 if setupMuon:
36 kwargs.setdefault('SummaryTool', acc.getPrimaryAndMerge(CombinedSummaryToolCfg(flags)))
37 else:
38 kwargs.setdefault('SummaryTool', acc.getPrimaryAndMerge(InDetTrackSummaryToolCfg(flags)))
39 if setupMuon and (flags.Detector.GeometryRPC or flags.Detector.GeometryTGC):
40 from MuonConfig.MuonRIO_OnTrackCreatorToolConfig import TriggerChamberClusterOnTrackCreatorCfg
41 kwargs.setdefault("CompetingRotCreator", acc.getPrimaryAndMerge(TriggerChamberClusterOnTrackCreatorCfg(flags)))
42
43 from TrkConfig.TrkRIO_OnTrackCreatorConfig import CombinedRotCreatorCfg, InDetRotCreatorCfg, MuonRotCreatorCfg
44 if setupMuon and setupITk:
45 rotCreatorTool = acc.getPrimaryAndMerge(CombinedRotCreatorCfg(flags))
46 rotCreatorTool.ToolMuonCluster.RestrictWarnings = True
47 kwargs.setdefault('RotCreatorTool', rotCreatorTool)
48 elif setupMuon:
49 rotCreatorTool = acc.getPrimaryAndMerge(MuonRotCreatorCfg(flags))
50 rotCreatorTool.ToolMuonCluster.RestrictWarnings = True
51 kwargs.setdefault('RotCreatorTool', rotCreatorTool)
52 else:
53 kwargs.setdefault('RotCreatorTool', acc.popToolsAndMerge(InDetRotCreatorCfg(flags)))
54
55 acc.setPrivateTools(CompFactory.ActsTrk.ActsToTrkConverterTool(name, **kwargs))
56 return acc
57
58
60 name: str = "",
61 **kwargs) -> ComponentAccumulator:
62 acc = ComponentAccumulator()
63
64 if 'ATLASConverterTool' not in kwargs:
65 kwargs.setdefault("ATLASConverterTool", acc.popToolsAndMerge(ActsToTrkConverterToolCfg(flags)))
66
67 acc.addEventAlgo(CompFactory.ActsTrk.TrkToActsConvertorAlg(name, **kwargs), primary = True)
68 return acc
69
71 name: str = "ActsToTrkConvertorAlg",
72 **kwargs) -> ComponentAccumulator:
73 acc = ComponentAccumulator()
74
75 # convert proper ACTS track collection
76 # this depends on the ambi resol. activation
77 kwargs.setdefault('ACTSTracksLocation', 'ActsTracks' if not flags.Acts.doAmbiguityResolution else 'ActsResolvedTracks')
78 kwargs.setdefault("TracksLocation", "SiSPSeededActsTracks")
79 ACTSTracksLocation = kwargs.pop('ACTSTracksLocation')
80 TracksLocation = kwargs.pop("TracksLocation")
81 ATLASConverterTool = None
82 if "ATLASConverterTool" in kwargs:
83 ATLASConverterTool = kwargs["ATLASConverterTool"]
84 else:
85 ATLASConverterTool = acc.getPrimaryAndMerge(ActsToTrkConverterToolCfg(flags, **kwargs))
86 acc.addEventAlgo(CompFactory.ActsTrk.ActsToTrkConvertorAlg(name,
87 TracksLocation = TracksLocation,
88 ACTSTracksLocation = ACTSTracksLocation,
89 ATLASConverterTool = ATLASConverterTool))
90 return acc
91
92
93def xAODtoTrkConverterAlgCfg(flags, name ="xAODToTrkConversionAlg",
94 setupMuon = False, setupITk = True, **kwargs):
95 result = ComponentAccumulator()
96 if setupITk:
97 from InDetConfig.InDetPrepRawDataFormationConfig import ITkXAODToInDetClusterConversionCfg
98 result.merge(ITkXAODToInDetClusterConversionCfg(flags))
99 if 'ATLASConverterTool' not in kwargs:
100 kwargs.setdefault("ATLASConverterTool", result.popToolsAndMerge(ActsToTrkConverterToolCfg(flags, setupMuon = setupMuon ,setupITk = setupITk)))
101
102 result.addEventAlgo(CompFactory.ActsTrk.xAODtoTrkConverterAlg(name, **kwargs), primary = True)
103 return result
104
106 name: str = "ActsToXAODTrackConverterAlg",
107 **kwargs) -> ComponentAccumulator:
108 acc = ComponentAccumulator()
109
110 kwargs.setdefault('InputActsTracksLocation', '')
111 kwargs.setdefault('OutputActsTracksLocation', '')
112
113 acc.addEventAlgo(CompFactory.ActsTrk.ActsToXAODTrackConverterAlg(name, **kwargs), primary = True)
114 return acc
115
117 name: str = "ActsTrackToTrackParticleCnvTool",
118 **kwargs) -> ComponentAccumulator:
119 acc = ComponentAccumulator()
120
121 # To produce AtlasFieldCacheCondObj
122 from MagFieldServices.MagFieldServicesConfig import (
123 AtlasFieldCacheCondAlgCfg)
124 acc.merge(AtlasFieldCacheCondAlgCfg(flags))
125
126 kwargs.setdefault('FirstAndLastParameterOnly',True)
127 kwargs.setdefault('ComputeExpectedLayerPattern',True)
128
129
130 from ActsConfig.ActsGeometryConfig import ActsExtrapolationToolCfg
131 kwargs.setdefault('ExtrapolationTool', acc.popToolsAndMerge(ActsExtrapolationToolCfg(flags)) )
132 acc.setPrivateTools(CompFactory.ActsTrk.TrackToTrackParticleCnvTool(name, **kwargs))
133 return acc
134
136 name: str = "ActsTrackToTrackParticleCnvAlg",
137 **kwargs) -> ComponentAccumulator:
138 acc = ComponentAccumulator()
139
140 # Beam Spot Cond is a requirement
141 from BeamSpotConditions.BeamSpotConditionsConfig import BeamSpotCondAlgCfg
142 acc.merge(BeamSpotCondAlgCfg(flags))
143
144 # Configure TrackToTrackParticleConvTool
145 tool_kwargs = {}
146 if "ExtrapolationTool" in kwargs:
147 tool_kwargs["ExtrapolationTool"] = kwargs.pop("ExtrapolationTool")
148 if "FirstAndLastParameterOnly" in kwargs:
149 tool_kwargs["FirstAndLastParameterOnly"] = kwargs.pop("FirstAndLastParameterOnly")
150 if "ComputeExpectedLayerPattern" in kwargs:
151 tool_kwargs["ComputeExpectedLayerPattern"] = kwargs.pop("ComputeExpectedLayerPattern")
152 if "MuonSummaryTool" in kwargs:
153 tool_kwargs["MuonSummaryTool"] = kwargs.pop("MuonSummaryTool")
154 if 'TrackToTrackParticleCnvTool' not in kwargs:
155 kwargs['TrackToTrackParticleCnvTool'] = acc.popToolsAndMerge(
156 ActsTrackToTrackParticleCnvToolCfg(flags, **tool_kwargs))
157
158 kwargs.setdefault('BeamSpotKey', 'BeamSpotData')
159 kwargs.setdefault("PerigeeExpression", flags.Tracking.perigeeExpression)
160 kwargs.setdefault('VertexContainerKey', 'PrimaryVertices')
161
162 acc.addEventAlgo(CompFactory.ActsTrk.TrackToTrackParticleCnvAlg(name, **kwargs), primary = True)
163
164 return acc
165
166def RunTrackConversion(flags, track_collections = [], outputfile='dump.json', setupMuon = False):
167 from TrkConfig.TrackCollectionReadConfig import TrackCollectionReadCfg
168 from AthenaPoolCnvSvc.PoolReadConfig import PoolReadCfg
169 from AthenaConfiguration.MainServicesConfig import MainServicesCfg
170
171 cfg = MainServicesCfg(flags)
172
173 # Set up to read ESD and tracks
174 cfg.merge(PoolReadCfg(flags))
175 for collection in track_collections:
176 cfg.merge(TrackCollectionReadCfg(flags, collection))
177
178 # Needed to read tracks
179 from TrkEventCnvTools.TrkEventCnvToolsConfig import TrkEventCnvSuperToolCfg
180 cfg.merge(TrkEventCnvSuperToolCfg(flags))
181
182 # Muon geometry not yet in ActsTrackingGeometrySvcCfg
183 from MuonConfig.MuonGeometryConfig import MuonGeoModelCfg
184 cfg.merge(MuonGeoModelCfg(flags))
185
186 # Now setup the convertor
188 flags, OutputLevel=1, TrackCollectionKeys=track_collections,
189 ATLASConverterTool= cfg.popToolsAndMerge(ActsToTrkConverterToolCfg(flags, setupMuon=setupMuon)))
190 cfg.merge(acc)
191
192 # Let's dump the input tracks, and also the output ACTS tracks
193 from DumpEventDataToJSON.DumpEventDataToJSONConfig import DumpEventDataToJSONAlgCfg
194 acc = DumpEventDataToJSONAlgCfg(
195 flags, doExtrap=False, OutputLevel=1,
196 TrackCollectionKeys=track_collections,
197 CscPrepRawDataKey="",
198 MMPrepRawDataKey="",
199 sTgcPrepRawDataKey="",
200 MdtPrepRawDataKey="",
201 RpcPrepRawDataKey="",
202 TgcPrepRawDataKey="",
203 PixelPrepRawDataKey="",
204 SctPrepRawDataKey="",
205 TrtPrepRawDataKey="",
206 CaloCellContainerKey=[""],
207 CaloClusterContainerKeys=[""],
208 MuonContainerKeys=[""],
209 JetContainerKeys=[""],
210 TrackParticleContainerKeys=[""],
211 OutputLocation=outputfile,
212 )
213 cfg.merge(acc)
214 cfg.printConfig(withDetails=True, summariseProps=True)
215
216 sc = cfg.run()
217 if not sc.isSuccess():
218 import sys
219 sys.exit("Execution failed")
220
221
222if __name__ == "__main__":
223 # To run this, do e.g.
224 # python -m ActsEventCnv.ActsEventCnvConfig --threads=1
225 from AthenaConfiguration.AllConfigFlags import initConfigFlags
226 flags = initConfigFlags()
227 args = flags.fillFromArgs()
228
229 flags.Input.Files = [
230 '/cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/PhaseIIUpgrade/ESD/ATLAS-P2-RUN4-03-00-00/ESD.ttbar_mu0.pool.root']
231 from AthenaConfiguration.TestDefaults import defaultConditionsTags
232 flags.IOVDb.GlobalTag = defaultConditionsTags.RUN4_MC
233 flags.Scheduler.ShowDataDeps = True
234 flags.Scheduler.ShowDataFlow = True
235 flags.Scheduler.CheckDependencies = True
236
237 # Setup detector flags
238 from AthenaConfiguration.DetectorConfigFlags import setupDetectorFlags
239 setupDetectorFlags(flags, None, use_metadata=True,
240 toggle_geometry=True, keep_beampipe=True)
241
242 flags.lock()
243 flags.dump()
244 RunTrackConversion(flags)
ComponentAccumulator ActsToTrkConverterToolCfg(flags, str name="ActsToTrkConverterTool", setupMuon=False, setupITk=True, **kwargs)
ComponentAccumulator ActsTrackToTrackParticleCnvToolCfg(flags, str name="ActsTrackToTrackParticleCnvTool", **kwargs)
ComponentAccumulator ActsTrackToTrackParticleCnvAlgCfg(flags, str name="ActsTrackToTrackParticleCnvAlg", **kwargs)
ComponentAccumulator ActsToXAODTrackConverterAlgCfg(flags, str name="ActsToXAODTrackConverterAlg", **kwargs)
xAODtoTrkConverterAlgCfg(flags, name="xAODToTrkConversionAlg", setupMuon=False, setupITk=True, **kwargs)
RunTrackConversion(flags, track_collections=[], outputfile='dump.json', setupMuon=False)
ComponentAccumulator ActsToTrkConvertorAlgCfg(flags, str name="ActsToTrkConvertorAlg", **kwargs)
ComponentAccumulator TrkToActsConvertorAlgCfg(flags, str name="", **kwargs)