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 **kwargs) -> ComponentAccumulator:
9 acc = ComponentAccumulator()
10
11 # Currently this does not work if we are in a muon-only mode
12 if (flags.Detector.GeometryITk or flags.Detector.GeometryID) and 'TrackingGeometryTool' not in kwargs:
13 from ActsConfig.ActsGeometryConfig import ActsTrackingGeometryToolCfg
14 kwargs.setdefault("TrackingGeometryTool", acc.getPrimaryAndMerge(ActsTrackingGeometryToolCfg(flags)))
15 else:
16 # Disable TrackingGeometryTool
17 kwargs.setdefault("TrackingGeometryTool", "")
18
19 kwargs.setdefault("ExtractMuonSurfaces", flags.Muon.usePhaseIIGeoSetup)
20
21 from TrkConfig.TrkTrackSummaryToolConfig import InDetTrackSummaryToolCfg
22 kwargs.setdefault('SummaryTool', acc.getPrimaryAndMerge(InDetTrackSummaryToolCfg(flags)))
23
24
25 if flags.Detector.GeometryITk:
26 from TrkConfig.TrkRIO_OnTrackCreatorConfig import ITkRotCreatorCfg
27 kwargs.setdefault('RotCreatorTool', acc.popToolsAndMerge(ITkRotCreatorCfg(flags)))
28 from InDetConfig.InDetBoundaryCheckToolConfig import ITkBoundaryCheckToolCfg
29 kwargs.setdefault("BoundaryCheckTool", acc.popToolsAndMerge(ITkBoundaryCheckToolCfg(flags)))
30 elif flags.Detector.GeometryID:
31 from TrkConfig.TrkRIO_OnTrackCreatorConfig import InDetRotCreatorCfg
32 kwargs.setdefault('RotCreatorTool', acc.popToolsAndMerge(InDetRotCreatorCfg(flags)))
33 from InDetConfig.InDetBoundaryCheckToolConfig import InDetBoundaryCheckToolCfg
34 kwargs.setdefault("BoundaryCheckTool",acc.popToolsAndMerge(InDetBoundaryCheckToolCfg(flags)))
35 elif flags.Detector.GeometryMuon:
36 from TrkConfig.TrkRIO_OnTrackCreatorConfig import MuonRotCreatorCfg
37 kwargs.setdefault('RotCreatorTool', acc.popToolsAndMerge(MuonRotCreatorCfg(flags)))
38
39 acc.setPrivateTools(CompFactory.ActsTrk.ActsToTrkConverterTool(name, **kwargs))
40 return acc
41
42
44 name: str = "",
45 **kwargs) -> ComponentAccumulator:
46 acc = ComponentAccumulator()
47
48 if 'ConvertorTool' not in kwargs:
49 kwargs.setdefault("ConvertorTool", acc.popToolsAndMerge(ActsToTrkConverterToolCfg(flags)))
50
51 acc.addEventAlgo(CompFactory.ActsTrk.TrkToActsConvertorAlg(name, **kwargs))
52 return acc
53
55 name: str = "ActsToTrkConvertorAlg",
56 **kwargs) -> ComponentAccumulator:
57 acc = ComponentAccumulator()
58
59 # convert proper ACTS track collection
60 # this depends on the ambi resol. activation
61 kwargs.setdefault('ACTSTracksLocation', 'ActsTracks' if not flags.Acts.doAmbiguityResolution else 'ActsResolvedTracks')
62
63 if 'TrackingGeometryTool' not in kwargs:
64 from ActsConfig.ActsGeometryConfig import ActsTrackingGeometryToolCfg
65 kwargs.setdefault("TrackingGeometryTool", acc.getPrimaryAndMerge(ActsTrackingGeometryToolCfg(flags)))
66
67 if 'ATLASConverterTool' not in kwargs:
68 from ActsConfig.ActsEventCnvConfig import ActsToTrkConverterToolCfg
69 kwargs.setdefault("ATLASConverterTool", acc.popToolsAndMerge(ActsToTrkConverterToolCfg(flags)))
70
71 if 'BoundaryCheckTool' not in kwargs:
72 if flags.Detector.GeometryITk:
73 from InDetConfig.InDetBoundaryCheckToolConfig import ITkBoundaryCheckToolCfg
74 kwargs.setdefault("BoundaryCheckTool", acc.popToolsAndMerge(ITkBoundaryCheckToolCfg(flags)))
75 else:
76 from InDetConfig.InDetBoundaryCheckToolConfig import InDetBoundaryCheckToolCfg
77 kwargs.setdefault("BoundaryCheckTool", acc.popToolsAndMerge(InDetBoundaryCheckToolCfg(flags)))
78
79 if 'SummaryTool' not in kwargs:
80 from TrkConfig.TrkTrackSummaryToolConfig import InDetTrackSummaryToolCfg
81 kwargs.setdefault("SummaryTool", acc.popToolsAndMerge(InDetTrackSummaryToolCfg(flags)))
82
83 if flags.Acts.doRotCorrection and 'RotCreatorTool' not in kwargs:
84 if flags.Detector.GeometryITk:
85 from TrkConfig.TrkRIO_OnTrackCreatorConfig import ITkRotCreatorCfg
86 kwargs.setdefault("RotCreatorTool", acc.popToolsAndMerge(ITkRotCreatorCfg(flags, name="ActsRotCreatorTool")))
87 else:
88 from TrkConfig.TrkRIO_OnTrackCreatorConfig import InDetRotCreatorCfg
89 kwargs.setdefault("RotCreatorTool", acc.popToolsAndMerge(InDetRotCreatorCfg(flags, name="ActsRotCreatorTool")))
90
91 acc.addEventAlgo(CompFactory.ActsTrk.ActsToTrkConvertorAlg(name, **kwargs))
92 return acc
93
94def RunTrackConversion(flags, track_collections = [], outputfile='dump.json'):
95 from TrkConfig.TrackCollectionReadConfig import TrackCollectionReadCfg
96 from AthenaPoolCnvSvc.PoolReadConfig import PoolReadCfg
97 from AthenaConfiguration.MainServicesConfig import MainServicesCfg
98
99 cfg = MainServicesCfg(flags)
100
101 # Set up to read ESD and tracks
102 cfg.merge(PoolReadCfg(flags))
103 for collection in track_collections:
104 cfg.merge(TrackCollectionReadCfg(flags, collection))
105
106 # Needed to read tracks
107 from TrkEventCnvTools.TrkEventCnvToolsConfig import TrkEventCnvSuperToolCfg
108 cfg.merge(TrkEventCnvSuperToolCfg(flags))
109
110 # Muon geometry not yet in ActsTrackingGeometrySvcCfg
111 from MuonConfig.MuonGeometryConfig import MuonGeoModelCfg
112 cfg.merge(MuonGeoModelCfg(flags))
113
114 # Now setup the convertor
116 flags, OutputLevel=1, TrackCollectionKeys=track_collections)
117 cfg.merge(acc)
118
119 # Let's dump the input tracks, and also the output ACTS tracks
120 from DumpEventDataToJSON.DumpEventDataToJSONConfig import DumpEventDataToJSONAlgCfg
121 acc = DumpEventDataToJSONAlgCfg(
122 flags, doExtrap=False, OutputLevel=1,
123 TrackCollectionKeys=track_collections,
124 CscPrepRawDataKey="",
125 MMPrepRawDataKey="",
126 sTgcPrepRawDataKey="",
127 MdtPrepRawDataKey="",
128 RpcPrepRawDataKey="",
129 TgcPrepRawDataKey="",
130 PixelPrepRawDataKey="",
131 SctPrepRawDataKey="",
132 TrtPrepRawDataKey="",
133 CaloCellContainerKey=[""],
134 CaloClusterContainerKeys=[""],
135 MuonContainerKeys=[""],
136 JetContainerKeys=[""],
137 TrackParticleContainerKeys=[""],
138 OutputLocation=outputfile,
139 )
140 cfg.merge(acc)
141 cfg.printConfig(withDetails=True, summariseProps=True)
142 from AthenaCommon.Constants import FATAL
143
148 cfg.getCondAlgo("AtlasTrackingGeometryCondAlg").OutputLevel = FATAL
149
150 sc = cfg.run()
151 if not sc.isSuccess():
152 import sys
153 sys.exit("Execution failed")
154
155
156if __name__ == "__main__":
157 # To run this, do e.g.
158 # python -m ActsEventCnv.ActsEventCnvConfig --threads=1
159 from AthenaConfiguration.AllConfigFlags import initConfigFlags
160 flags = initConfigFlags()
161 args = flags.fillFromArgs()
162
163 flags.Input.Files = [
164 '/cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/PhaseIIUpgrade/ESD/ATLAS-P2-RUN4-03-00-00/ESD.ttbar_mu0.pool.root']
165 from AthenaConfiguration.TestDefaults import defaultConditionsTags
166 flags.IOVDb.GlobalTag = defaultConditionsTags.RUN4_MC
167 flags.Scheduler.ShowDataDeps = True
168 flags.Scheduler.ShowDataFlow = True
169 flags.Scheduler.CheckDependencies = True
170
171 # Setup detector flags
172 from AthenaConfiguration.DetectorConfigFlags import setupDetectorFlags
173 setupDetectorFlags(flags, None, use_metadata=True,
174 toggle_geometry=True, keep_beampipe=True)
175
176 flags.lock()
177 flags.dump()
178 RunTrackConversion(flags)
ComponentAccumulator ActsToTrkConverterToolCfg(flags, str name="ActsToTrkConverterTool", **kwargs)
ComponentAccumulator ActsToTrkConvertorAlgCfg(flags, str name="ActsToTrkConvertorAlg", **kwargs)
ComponentAccumulator TrkToActsConvertorAlgCfg(flags, str name="", **kwargs)
RunTrackConversion(flags, track_collections=[], outputfile='dump.json')