ATLAS Offline Software
Loading...
Searching...
No Matches
ActsEventCnvConfig.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
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 if flags.Tracking.ITkMainPass.doAthenaToActsCluster:
98 return result
99 from InDetConfig.InDetPrepRawDataFormationConfig import ITkXAODToInDetClusterConversionCfg
100 result.merge(ITkXAODToInDetClusterConversionCfg(flags))
101 if 'ATLASConverterTool' not in kwargs:
102 kwargs.setdefault("ATLASConverterTool", result.popToolsAndMerge(ActsToTrkConverterToolCfg(flags, setupMuon = setupMuon ,setupITk = setupITk)))
103
104 result.addEventAlgo(CompFactory.ActsTrk.xAODtoTrkConverterAlg(name, **kwargs), primary = True)
105 return result
106
108 name: str = "ActsToXAODTrackConverterAlg",
109 **kwargs) -> ComponentAccumulator:
110 acc = ComponentAccumulator()
111
112 kwargs.setdefault('InputActsTracksLocation', '')
113 kwargs.setdefault('OutputActsTracksLocation', '')
114
115 acc.addEventAlgo(CompFactory.ActsTrk.ActsToXAODTrackConverterAlg(name, **kwargs), primary = True)
116 return acc
117
119 name: str = "ActsTrackToTrackParticleCnvTool",
120 **kwargs) -> ComponentAccumulator:
121 acc = ComponentAccumulator()
122
123 # To produce AtlasFieldCacheCondObj
124 from MagFieldServices.MagFieldServicesConfig import (
125 AtlasFieldCacheCondAlgCfg)
126 acc.merge(AtlasFieldCacheCondAlgCfg(flags))
127
128 kwargs.setdefault('FirstAndLastParameterOnly',True)
129 kwargs.setdefault('ComputeExpectedLayerPattern',True)
130
131
132 from ActsConfig.ActsGeometryConfig import ActsExtrapolationToolCfg
133 kwargs.setdefault('ExtrapolationTool', acc.popToolsAndMerge(ActsExtrapolationToolCfg(flags)) )
134 acc.setPrivateTools(CompFactory.ActsTrk.TrackToTrackParticleCnvTool(name, **kwargs))
135 return acc
136
138 name: str = "ActsTrackToTrackParticleCnvAlg",
139 **kwargs) -> ComponentAccumulator:
140 acc = ComponentAccumulator()
141
142 # Beam Spot Cond is a requirement
143 from BeamSpotConditions.BeamSpotConditionsConfig import BeamSpotCondAlgCfg
144 acc.merge(BeamSpotCondAlgCfg(flags))
145
146 # Configure TrackToTrackParticleConvTool
147 tool_kwargs = {}
148 if "ExtrapolationTool" in kwargs:
149 tool_kwargs["ExtrapolationTool"] = kwargs.pop("ExtrapolationTool")
150 if "FirstAndLastParameterOnly" in kwargs:
151 tool_kwargs["FirstAndLastParameterOnly"] = kwargs.pop("FirstAndLastParameterOnly")
152 if "ComputeExpectedLayerPattern" in kwargs:
153 tool_kwargs["ComputeExpectedLayerPattern"] = kwargs.pop("ComputeExpectedLayerPattern")
154 if "MuonSummaryTool" in kwargs:
155 tool_kwargs["MuonSummaryTool"] = kwargs.pop("MuonSummaryTool")
156 if 'TrackToTrackParticleCnvTool' not in kwargs:
157 kwargs['TrackToTrackParticleCnvTool'] = acc.popToolsAndMerge(
158 ActsTrackToTrackParticleCnvToolCfg(flags, **tool_kwargs))
159
160 kwargs.setdefault('BeamSpotKey', 'BeamSpotData')
161 kwargs.setdefault("PerigeeExpression", flags.Tracking.perigeeExpression)
162 kwargs.setdefault('VertexContainerKey', 'PrimaryVertices')
163
164 acc.addEventAlgo(CompFactory.ActsTrk.TrackToTrackParticleCnvAlg(name, **kwargs), primary = True)
165
166 return acc
167
168def RunTrackConversion(flags, track_collections = [], outputfile='dump.json', setupMuon = False):
169 from TrkConfig.TrackCollectionReadConfig import TrackCollectionReadCfg
170 from AthenaPoolCnvSvc.PoolReadConfig import PoolReadCfg
171 from AthenaConfiguration.MainServicesConfig import MainServicesCfg
172
173 cfg = MainServicesCfg(flags)
174
175 # Set up to read ESD and tracks
176 cfg.merge(PoolReadCfg(flags))
177 for collection in track_collections:
178 cfg.merge(TrackCollectionReadCfg(flags, collection))
179
180 # Needed to read tracks
181 from TrkEventCnvTools.TrkEventCnvToolsConfig import TrkEventCnvSuperToolCfg
182 cfg.merge(TrkEventCnvSuperToolCfg(flags))
183
184 # Muon geometry not yet in ActsTrackingGeometrySvcCfg
185 from MuonConfig.MuonGeometryConfig import MuonGeoModelCfg
186 cfg.merge(MuonGeoModelCfg(flags))
187
188 # Now setup the convertor
190 flags, OutputLevel=1, TrackCollectionKeys=track_collections,
191 ATLASConverterTool= cfg.popToolsAndMerge(ActsToTrkConverterToolCfg(flags, setupMuon=setupMuon)))
192 cfg.merge(acc)
193
194 # Let's dump the input tracks, and also the output ACTS tracks
195 from DumpEventDataToJSON.DumpEventDataToJSONConfig import DumpEventDataToJSONAlgCfg
196 acc = DumpEventDataToJSONAlgCfg(
197 flags, doExtrap=False, OutputLevel=1,
198 TrackCollectionKeys=track_collections,
199 CscPrepRawDataKey="",
200 MMPrepRawDataKey="",
201 sTgcPrepRawDataKey="",
202 MdtPrepRawDataKey="",
203 RpcPrepRawDataKey="",
204 TgcPrepRawDataKey="",
205 PixelPrepRawDataKey="",
206 SctPrepRawDataKey="",
207 TrtPrepRawDataKey="",
208 CaloCellContainerKey=[""],
209 CaloClusterContainerKeys=[""],
210 MuonContainerKeys=[""],
211 JetContainerKeys=[""],
212 TrackParticleContainerKeys=[""],
213 OutputLocation=outputfile,
214 )
215 cfg.merge(acc)
216 cfg.printConfig(withDetails=True, summariseProps=True)
217 from AthenaCommon.Constants import FATAL
218
223 cfg.getCondAlgo("AtlasTrackingGeometryCondAlg").OutputLevel = FATAL
224
225 sc = cfg.run()
226 if not sc.isSuccess():
227 import sys
228 sys.exit("Execution failed")
229
230
231if __name__ == "__main__":
232 # To run this, do e.g.
233 # python -m ActsEventCnv.ActsEventCnvConfig --threads=1
234 from AthenaConfiguration.AllConfigFlags import initConfigFlags
235 flags = initConfigFlags()
236 args = flags.fillFromArgs()
237
238 flags.Input.Files = [
239 '/cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/PhaseIIUpgrade/ESD/ATLAS-P2-RUN4-03-00-00/ESD.ttbar_mu0.pool.root']
240 from AthenaConfiguration.TestDefaults import defaultConditionsTags
241 flags.IOVDb.GlobalTag = defaultConditionsTags.RUN4_MC
242 flags.Scheduler.ShowDataDeps = True
243 flags.Scheduler.ShowDataFlow = True
244 flags.Scheduler.CheckDependencies = True
245
246 # Setup detector flags
247 from AthenaConfiguration.DetectorConfigFlags import setupDetectorFlags
248 setupDetectorFlags(flags, None, use_metadata=True,
249 toggle_geometry=True, keep_beampipe=True)
250
251 flags.lock()
252 flags.dump()
253 RunTrackConversion(flags)
xAODtoTrkConverterAlgCfg(flags, name="xAODToTrkConversionAlg", setupMuon=False, setupITk=True, **kwargs)
ComponentAccumulator ActsTrackToTrackParticleCnvToolCfg(flags, str name="ActsTrackToTrackParticleCnvTool", **kwargs)
ComponentAccumulator ActsToXAODTrackConverterAlgCfg(flags, str name="ActsToXAODTrackConverterAlg", **kwargs)
ComponentAccumulator ActsTrackToTrackParticleCnvAlgCfg(flags, str name="ActsTrackToTrackParticleCnvAlg", **kwargs)
ComponentAccumulator ActsToTrkConvertorAlgCfg(flags, str name="ActsToTrkConvertorAlg", **kwargs)
ComponentAccumulator TrkToActsConvertorAlgCfg(flags, str name="", **kwargs)
RunTrackConversion(flags, track_collections=[], outputfile='dump.json', setupMuon=False)
ComponentAccumulator ActsToTrkConverterToolCfg(flags, str name="ActsToTrkConverterTool", setupMuon=False, setupITk=True, **kwargs)