13 from OutputStreamAthenaPool.OutputStreamConfig
import OutputStreamCfg
14 result = ComponentAccumulator()
17 from TrkEventCnvTools.TrkEventCnvToolsConfig
import (
18 TrkEventCnvSuperToolCfg)
19 result.merge(TrkEventCnvSuperToolCfg(flags))
22 if flags.Detector.EnableMM
or flags.Detector.EnablesTGC:
23 aod_items += [
"xAOD::TrackParticleContainer#EMEO_MuonSpectrometerTrackParticles"]
24 aod_items += [
"xAOD::TrackParticleAuxContainer#EMEO_MuonSpectrometerTrackParticlesAux."]
25 aod_items += [
"xAOD::MuonSegmentContainer#xAODNSWSegments"]
26 aod_items += [
"xAOD::MuonSegmentAuxContainer#xAODNSWSegmentsAux."]
28 aod_items += [
"xAOD::MuonSegmentContainer#NCB_MuonSegments"]
29 aod_items += [
"xAOD::MuonSegmentAuxContainer#NCB_MuonSegmentsAux."]
31 if flags.Muon.scheduleActsReco:
32 aod_items += [
"xAOD::MuonSegmentContainer#MuonSegmentsFromR4"]
33 aod_items += [
"xAOD::MuonSegmentAuxContainer#MuonSegmentsFromR4Aux.-localSegPars.-parentSegment"]
36 aod_items += [
"xAOD::TrackParticleContainer#MuonSpectrometerTrackParticles"]
37 aod_items += [
"xAOD::TrackParticleAuxContainer#MuonSpectrometerTrackParticlesAux."]
38 aod_items += [
"xAOD::TrackParticleContainer#MuonSpectrometerOnlyTrackParticles"]
39 aod_items += [
"xAOD::TrackParticleAuxContainer#MuonSpectrometerOnlyTrackParticlesAux."]
41 aod_items += [
"xAOD::TrackParticleContainer#MSonlyTracklets"]
42 aod_items += [
"xAOD::TrackParticleAuxContainer#MSonlyTrackletsAux."]
43 aod_items += [
"xAOD::VertexContainer#MSDisplacedVertex"]
44 aod_items += [
"xAOD::VertexAuxContainer#MSDisplacedVertexAux."]
46 if flags.Input.isMC
or flags.Overlay.DataOverlay:
48 aod_items += [
"xAOD::TruthParticleContainer#MuonTruthParticles"]
49 aod_items += [
"xAOD::TruthParticleAuxContainer#MuonTruthParticlesAux."]
52 aod_items += [
"xAOD::MuonSegmentContainer#MuonTruthSegments"]
53 aod_items += [
"xAOD::MuonSegmentAuxContainer#MuonTruthSegmentsAux.-localSegPars"]
57 esd_items += aod_items
60 if flags.Detector.EnableMM:
61 esd_items += [
"Muon::MMPrepDataContainer#MM_Measurements"]
62 esd_items += [
"xAOD::NSWMMTPRDOContainer#*",
"xAOD::NSWMMTPRDOAuxContainer#*"]
63 if flags.Detector.EnablesTGC:
64 esd_items += [
"Muon::sTgcPrepDataContainer#STGC_Measurements"]
65 esd_items += [
"Muon::NSW_PadTriggerDataContainer#NSW_PadTrigger_RDO"]
66 esd_items += [
"xAOD::NSWTPRDOContainer#*",
"xAOD::NSWTPRDOAuxContainer#*"]
69 if flags.Detector.EnableCSC:
70 esd_items += [
"Muon::CscPrepDataContainer#CSC_Clusters"]
71 esd_items += [
"Muon::CscStripPrepDataContainer#CSC_Measurements"]
72 esd_items += [
"Muon::RpcPrepDataContainer#RPC_Measurements"]
73 esd_items += [
"Muon::TgcPrepDataContainer#TGC_MeasurementsAllBCs"]
74 esd_items += [
"Muon::MdtPrepDataContainer#MDT_DriftCircles"]
76 if flags.Muon.writexAODPRD:
77 esd_items += [
"xAOD::MdtDriftCircleContainer#xMdtDriftCircles",
"xAOD::MdtDriftCircleAuxContainer#xMdtDriftCirclesAux." ]
78 esd_items += [
"xAOD::MdtTwinDriftCircleContainer#xMdtTwinDriftCircles",
"xAOD::MdtTwinDriftCircleAuxContainer#xMdtTwinDriftCirclesAux." ]
79 esd_items += [
"xAOD::sTgcStripContainer#xAODsTgcStrips",
"xAOD::sTgcStripAuxContainer#xAODsTgcStripsAux." ]
80 esd_items += [
"xAOD::sTgcPadContainer#xAODsTgcPads",
"xAOD::sTgcPadAuxContainer#xAODsTgcPadsAux." ]
81 esd_items += [
"xAOD::sTgcWireContainer#xAODsTgcWires",
"xAOD::sTgcWireAuxContainer#xAODsTgcWiresAux." ]
82 esd_items += [
"xAOD::MMClusterContainer#xAODMMClusters",
"xAOD::MMClusterAuxContainer#xAODMMClustersAux." ]
83 esd_items += [
"xAOD::TgcStripContainer#xTgcStrips",
"xAOD::TgcStripAuxContainer#xTgcStripsAux." ]
84 esd_items += [
"xAOD::RpcStripContainer#xRpcStrips",
"xAOD::RpcStripAuxContainer#xRpcStripsAux." ]
85 esd_items += [
"xAOD::RpcStrip2DContainer#xRpcBILStrips",
"xAOD::RpcStrip2DAuxContainer#xRpcBILStripsAux." ]
90 esd_items += [
"Muon::TgcCoinDataContainer#TrigT1CoinDataCollection"]
91 esd_items += [
"Muon::TgcCoinDataContainer#TrigT1CoinDataCollectionPriorBC"]
92 esd_items += [
"Muon::TgcCoinDataContainer#TrigT1CoinDataCollectionNextBC"]
93 esd_items += [
"Muon::TgcCoinDataContainer#TrigT1CoinDataCollectionNextNextBC"]
94 esd_items += [
"Muon::RpcCoinDataContainer#RPC_triggerHits"]
95 esd_items += [
"RpcSectorLogicContainer#RPC_SECTORLOGIC"]
98 if flags.Output.doWriteRDO
or flags.Muon.doWriteRpcRDO:
99 esd_items += [
"RpcPadContainer#RPCPAD"]
102 esd_items += [
"Trk::SegmentCollection#NCB_TrackMuonSegments"]
108 esd_items += [
"TrackCollection#MuonSpectrometerTracks"]
109 if flags.Muon.runCommissioningChain:
110 esd_items += [
"TrackCollection#EMEO_MuonSpectrometerTracks"]
111 if flags.Detector.EnableMM
or flags.Detector.EnablesTGC:
112 esd_items += [
"Trk::SegmentCollection#TrackMuonNSWSegments"]
116 esd_items += [
"TrackRecordCollection#MuonEntryLayerFilter"]
117 esd_items += [
"TrackRecordCollection#MuonExitLayerFilter"]
119 esd_items += [
"PRD_MultiTruthCollection#MDT_TruthMap",
120 "PRD_MultiTruthCollection#RPC_TruthMap",
"PRD_MultiTruthCollection#TGC_TruthMap"]
121 if flags.Detector.EnableCSC:
122 esd_items += [
"PRD_MultiTruthCollection#CSC_TruthMap"]
123 if flags.Detector.EnablesTGC:
124 esd_items += [
"PRD_MultiTruthCollection#STGC_TruthMap"]
125 if flags.Detector.EnableMM:
126 esd_items += [
"PRD_MultiTruthCollection#MM_TruthMap"]
129 esd_items += [
"DetailedTrackTruthCollection#MuonSpectrometerTracksTruth"]
130 esd_items += [
"TrackTruthCollection#MuonSpectrometerTracksTruth"]
132 if flags.Muon.writeSDOs:
133 if flags.Detector.EnableCSC: esd_items+=[
"CscSimDataCollection#CSC_SDO"]
134 esd_items+=[
"MuonSimDataCollection#MDT_SDO"]
135 esd_items+=[
"MuonSimDataCollection#RPC_SDO"]
136 esd_items+=[
"MuonSimDataCollection#TGC_SDO"]
137 if flags.Detector.EnablesTGC: esd_items+=[
"MuonSimDataCollection#sTGC_SDO"]
138 if flags.Detector.EnableMM: esd_items+=[
"MuonSimDataCollection#MM_SDO"]
140 if flags.Muon.writexAODPRD:
141 for item
in [
"MDT_SDO",
"RPC_SDO",
"TGC_SDO",
"MM_SDO",
"sTGC_SDO"]:
142 esd_items += [f
"xAOD::MuonSimHitContainer#{item}", f
"xAOD::MuonSimHitAuxContainer#{item}Aux."]
144 if flags.Output.doWriteESD:
145 result.merge(OutputStreamCfg(flags,
"ESD", esd_items))
146 if flags.Output.doWriteAOD:
147 result.merge(OutputStreamCfg(flags,
"AOD", aod_items))
153 from MuonConfig.MuonPrepDataConvConfig
import MuonPrepDataConvCfg
154 from MuonConfig.MuonRecToolsConfig
import MuonTrackScoringToolCfg
155 from MuonConfig.MuonGeometryConfig
import MuonIdHelperSvcCfg
156 from MuonConfig.MuonRecToolsConfig
import MuonEDMHelperSvcCfg
157 from TrkConfig.TrkTrackSummaryToolConfig
import MuonTrackSummaryToolCfg
158 from TrkConfig.AtlasExtrapolatorConfig
import AtlasExtrapolatorCfg
161 result = MuonIdHelperSvcCfg(flags)
162 result.merge(MuonEDMHelperSvcCfg(flags))
165 result.merge(MuonPrepDataConvCfg(flags))
166 result.merge(MuonSegmentFindingCfg(flags))
167 result.merge(MuonTrackBuildingCfg(flags))
168 result.merge(MuonStandaloneTrackParticleCnvAlgCfg(flags))
169 if flags.Muon.runCommissioningChain:
170 result.merge(MuonStandaloneTrackParticleCnvAlgCfg(flags,
171 "MuonStandaloneTrackParticleCnvAlg_EMEO",
172 TrackContainerName=
"EMEO_MuonSpectrometerTracks",
173 xAODTrackParticlesFromTracksContainerName=
"EMEO_MuonSpectrometerTrackParticles"))
177 if flags.Input.isMC
or flags.Overlay.DataOverlay:
179 if "MuonEntryLayerFilter" not in flags.Input.Collections
and \
180 (
"MuonEntryLayer" in flags.Input.Collections):
181 result.addEventAlgo(CompFactory.TrackRecordFilter())
182 if "MuonExitLayerFilter" not in flags.Input.Collections
and \
183 (
"MuonExitLayer" in flags.Input.Collections):
184 result.addEventAlgo(CompFactory.TrackRecordFilter(
"TrackRecordFilterMuonExitLayer",
185 inputName=
"MuonExitLayer",
186 outputName=
"MuonExitLayerFilter"))
189 track_cols = [
"MuonSpectrometerTracks"]
190 track_colstp = [
"MuonSpectrometerTrackParticles"]
191 if flags.Muon.runCommissioningChain:
192 track_cols += [
"EMEO_MuonSpectrometerTracks"]
193 track_colstp += [
"EMEO_MuonSpectrometerTrackParticles"]
195 from MuonConfig.MuonTruthAlgsConfig
import MuonDetailedTrackTruthMakerCfg
196 result.merge(MuonDetailedTrackTruthMakerCfg(flags, name=
"MuonStandaloneDetailedTrackTruthMaker",
197 TrackCollectionNames=track_cols))
199 if not flags.Muon.scheduleActsReco:
200 for i
in range(len(track_cols)):
201 from TrkConfig.TrkTruthAlgsConfig
import TrackTruthSelectorCfg, TrackParticleTruthAlgCfg
202 result.merge(TrackTruthSelectorCfg(flags, tracks=track_cols[i]))
203 result.merge(TrackParticleTruthAlgCfg(flags, tracks=track_cols[i],
204 TrackParticleName=track_colstp[i]))
208 if flags.Muon.makePRDs:
209 if not flags.Muon.usePhaseIIGeoSetup:
210 from MuonConfig.MuonTruthAlgsConfig
import MuonTruthAlgsCfg
211 result.merge(MuonTruthAlgsCfg(flags))
213 from MuonTruthAlgsR4.MuonTruthAlgsConfig
import MuonTruthAlgsCfg
214 result.merge(MuonTruthAlgsCfg(flags))
216 if flags.Muon.doMSVertex:
217 msvertexrecotool = CompFactory.Muon.MSVertexRecoTool(
218 MyExtrapolator=result.popToolsAndMerge(
219 AtlasExtrapolatorCfg(flags)),
220 TGCKey=
'TGC_MeasurementsAllBCs' if not flags.Muon.useTGCPriorNextBC
else 'TGC_Measurements')
221 the_alg = CompFactory.MSVertexRecoAlg(
222 name=
"MSVertexRecoAlg", MSVertexRecoTool=msvertexrecotool)
224 result.addEventAlgo(the_alg)
229 result.addPublicTool(result.popToolsAndMerge(
230 MuonTrackScoringToolCfg(flags)))
232 result.addPublicTool(result.popToolsAndMerge(
233 MuonTrackSummaryToolCfg(flags)))
236 if flags.Output.doWriteESD
or flags.Output.doWriteAOD:
244 from MuonConfig.MuonConfigUtils
import SetupMuonStandaloneConfigFlags
245 flags = SetupMuonStandaloneConfigFlags()
247 from MuonConfig.MuonConfigUtils
import SetupMuonStandaloneCA
248 cfg = SetupMuonStandaloneCA(flags)
254 from SGComps.AddressRemappingConfig
import InputRenameCfg
255 cfg.merge(InputRenameCfg(
"TrackCollection",
256 "MuonSpectrometerTracks",
"MuonSpectrometerTracks_old"))
258 cfg.printConfig(withDetails=
True)
262 oldRemaps = cfg.getService(
"AddressRemappingSvc").TypeKeyRenameMaps
263 cfg.getService(
"AddressRemappingSvc").TypeKeyRenameMaps = [
264 remap
for remap
in oldRemaps
if "Trk::SegmentCollection" not in remap]
266 f = open(
"MuonReconstruction.pkl",
"wb")
270 from MuonConfig.MuonConfigUtils
import executeTest
278 This config (made for r24.0 in Nov 2024) is used to:
279 1] Switch setup of the segment making in the NSW to loosen constrain on the IP
280 2] Adapt and switch off various criteria in TrackSteering/building to be able to reconstruct track from the non-standards (non-collision background) segments
284 cfg.getEventAlgo(
"MuonSegmentMaker").NSWSegmentMaker.SeedMMStereos=
False
285 cfg.getEventAlgo(
"MuonSegmentMaker").NSWSegmentMaker.IPConstraint=
False
289 cfg.getEventAlgo(
"MuonCreatorAlg").MuonCreatorTool.RequireMSOEforSA=
False
290 cfg.getEventAlgo(
"MuonCreatorAlg").MuonCreatorTool.RequireCaloForSA=
False
292 cfg.getEventAlgo(
"MuonCombinedMuonCandidateAlg").MuonCandidateTool.ExtrapolationStrategy=1
295 cfg.getEventAlgo(
"MuPatTrackBuilder").TrackSteering.SegSeedQCut = -2
296 cfg.getEventAlgo(
"MuPatTrackBuilder").TrackSteering.Seg2ndQCut = -2
297 cfg.getEventAlgo(
"MuPatTrackBuilder").TrackSteering.SegOtherQCut = -2
298 cfg.getEventAlgo(
"MuPatTrackBuilder").TrackSteering.UseTightSegmentMatching =
False
300 cfg.getEventAlgo(
"MuPatTrackBuilder").TrackSteering.TrackBuilderTool.CandidateMatchingTool.DoTrackSegmentMatching =
False
301 cfg.getEventAlgo(
"MuPatTrackBuilder").TrackSteering.MooBuilderTool.CandidateMatchingTool.DoTrackSegmentMatching =
False
302 cfg.getEventAlgo(
"MuPatTrackBuilder").TrackSteering.TrackBuilderTool.CandidateMatchingTool.DoTrackSegmentMatching =
False
304 cfg.getEventAlgo(
"MuPatTrackBuilder").TrackSteering.CandidateMatchingTool.DoTrackSegmentMatching =
False
306 cfg.getEventAlgo(
"MuPatTrackBuilder").TrackSteering.TrackRefinementTool.CandidateMatchingTool.DoTrackSegmentMatching =
False
309 cfg.getEventAlgo(
"MuPatTrackBuilder").TrackSteering.CandidateMatchingTool.SegmentMatchingTool.UseEndcapExtrapolationMatching =
False
310 cfg.getEventAlgo(
"MuPatTrackBuilder").TrackSteering.CandidateMatchingTool.SegmentMatchingTool.doThetaMatching =
False
311 cfg.getEventAlgo(
"MuPatTrackBuilder").TrackSteering.CandidateMatchingTool.SegmentMatchingTool.doPhiMatching =
False
314 cfg.getEventAlgo(
"MuPatTrackBuilder").TrackSteering.TrackBuilderTool.CandidateMatchingTool.SegmentMatchingTool.UseEndcapExtrapolationMatching =
False
315 cfg.getEventAlgo(
"MuPatTrackBuilder").TrackSteering.TrackBuilderTool.CandidateMatchingTool.SegmentMatchingTool.doThetaMatching =
False
316 cfg.getEventAlgo(
"MuPatTrackBuilder").TrackSteering.TrackBuilderTool.CandidateMatchingTool.SegmentMatchingTool.doPhiMatching =
False
318 cfg.getEventAlgo(
"MuPatTrackBuilder").TrackSteering.MooBuilderTool.CandidateMatchingTool.SegmentMatchingTool.UseEndcapExtrapolationMatching =
False
319 cfg.getEventAlgo(
"MuPatTrackBuilder").TrackSteering.MooBuilderTool.CandidateMatchingTool.SegmentMatchingTool.doThetaMatching =
False
320 cfg.getEventAlgo(
"MuPatTrackBuilder").TrackSteering.MooBuilderTool.CandidateMatchingTool.SegmentMatchingTool.doPhiMatching =
False