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