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::MuonSegmentContainer#xAODNSWSegments"]
24 aod_items += [
"xAOD::MuonSegmentAuxContainer#xAODNSWSegmentsAux."]
26 aod_items += [
"xAOD::MuonSegmentContainer#NCB_MuonSegments"]
27 aod_items += [
"xAOD::MuonSegmentAuxContainer#NCB_MuonSegmentsAux."]
29 if flags.Muon.scheduleActsReco:
30 aod_items += [
"xAOD::MuonSegmentContainer#MuonSegmentsFromR4"]
31 aod_items += [
"xAOD::MuonSegmentAuxContainer#MuonSegmentsFromR4Aux.-localSegPars.-parentSegment"]
34 aod_items += [
"xAOD::TrackParticleContainer#MuonSpectrometerTrackParticles"]
35 aod_items += [
"xAOD::TrackParticleAuxContainer#MuonSpectrometerTrackParticlesAux."]
36 aod_items += [
"xAOD::TrackParticleContainer#MuonSpectrometerOnlyTrackParticles"]
37 aod_items += [
"xAOD::TrackParticleAuxContainer#MuonSpectrometerOnlyTrackParticlesAux."]
39 aod_items += [
"xAOD::TrackParticleContainer#MSonlyTracklets"]
40 aod_items += [
"xAOD::TrackParticleAuxContainer#MSonlyTrackletsAux."]
41 aod_items += [
"xAOD::VertexContainer#MSDisplacedVertex"]
42 aod_items += [
"xAOD::VertexAuxContainer#MSDisplacedVertexAux."]
44 if flags.Input.isMC
or flags.Overlay.DataOverlay:
46 aod_items += [
"xAOD::TruthParticleContainer#MuonTruthParticles"]
47 aod_items += [
"xAOD::TruthParticleAuxContainer#MuonTruthParticlesAux."]
50 aod_items += [
"xAOD::MuonSegmentContainer#MuonTruthSegments"]
51 aod_items += [
"xAOD::MuonSegmentAuxContainer#MuonTruthSegmentsAux.-localSegPars"]
55 esd_items += aod_items
58 if flags.Detector.EnableMM:
59 esd_items += [
"Muon::MMPrepDataContainer#MM_Measurements"]
60 esd_items += [
"xAOD::NSWMMTPRDOContainer#*",
"xAOD::NSWMMTPRDOAuxContainer#*"]
61 if flags.Detector.EnablesTGC:
62 esd_items += [
"Muon::sTgcPrepDataContainer#STGC_Measurements"]
63 esd_items += [
"Muon::NSW_PadTriggerDataContainer#NSW_PadTrigger_RDO"]
64 esd_items += [
"xAOD::NSWTPRDOContainer#*",
"xAOD::NSWTPRDOAuxContainer#*"]
67 if flags.Detector.EnableCSC:
68 esd_items += [
"Muon::CscPrepDataContainer#CSC_Clusters"]
69 esd_items += [
"Muon::CscStripPrepDataContainer#CSC_Measurements"]
70 esd_items += [
"Muon::RpcPrepDataContainer#RPC_Measurements"]
71 esd_items += [
"Muon::TgcPrepDataContainer#TGC_MeasurementsAllBCs"]
72 esd_items += [
"Muon::MdtPrepDataContainer#MDT_DriftCircles"]
74 if flags.Muon.writexAODPRD:
75 esd_items += [
"xAOD::MdtDriftCircleContainer#xMdtDriftCircles",
"xAOD::MdtDriftCircleAuxContainer#xMdtDriftCirclesAux." ]
76 esd_items += [
"xAOD::MdtTwinDriftCircleContainer#xMdtTwinDriftCircles",
"xAOD::MdtTwinDriftCircleAuxContainer#xMdtTwinDriftCirclesAux." ]
77 esd_items += [
"xAOD::sTgcStripContainer#xAODsTgcStrips",
"xAOD::sTgcStripAuxContainer#xAODsTgcStripsAux." ]
78 esd_items += [
"xAOD::sTgcPadContainer#xAODsTgcPads",
"xAOD::sTgcPadAuxContainer#xAODsTgcPadsAux." ]
79 esd_items += [
"xAOD::sTgcWireContainer#xAODsTgcWires",
"xAOD::sTgcWireAuxContainer#xAODsTgcWiresAux." ]
80 esd_items += [
"xAOD::MMClusterContainer#xAODMMClusters",
"xAOD::MMClusterAuxContainer#xAODMMClustersAux." ]
81 esd_items += [
"xAOD::TgcStripContainer#xTgcStrips",
"xAOD::TgcStripAuxContainer#xTgcStripsAux." ]
82 esd_items += [
"xAOD::RpcStripContainer#xRpcStrips",
"xAOD::RpcStripAuxContainer#xRpcStripsAux." ]
83 esd_items += [
"xAOD::RpcStrip2DContainer#xRpcBILStrips",
"xAOD::RpcStrip2DAuxContainer#xRpcBILStripsAux." ]
84 esd_items += [
"xAOD::CombinedMuonStripContainer#CombinedMuonPrds",
"xAOD::CombinedMuonStripAuxContainer#CombinedMuonPrdsAux."]
89 esd_items += [
"Muon::TgcCoinDataContainer#TrigT1CoinDataCollection"]
90 esd_items += [
"Muon::TgcCoinDataContainer#TrigT1CoinDataCollectionPriorBC"]
91 esd_items += [
"Muon::TgcCoinDataContainer#TrigT1CoinDataCollectionNextBC"]
92 esd_items += [
"Muon::TgcCoinDataContainer#TrigT1CoinDataCollectionNextNextBC"]
93 esd_items += [
"Muon::RpcCoinDataContainer#RPC_triggerHits"]
94 esd_items += [
"RpcSectorLogicContainer#RPC_SECTORLOGIC"]
97 if flags.Output.doWriteRDO
or flags.Muon.doWriteRpcRDO:
98 esd_items += [
"RpcPadContainer#RPCPAD"]
101 esd_items += [
"Trk::SegmentCollection#NCB_TrackMuonSegments"]
107 esd_items += [
"TrackCollection#MuonSpectrometerTracks"]
108 if flags.Detector.EnableMM
or flags.Detector.EnablesTGC:
109 esd_items += [
"Trk::SegmentCollection#TrackMuonNSWSegments"]
113 esd_items += [
"TrackRecordCollection#MuonEntryLayerFilter"]
114 esd_items += [
"TrackRecordCollection#MuonExitLayerFilter"]
116 esd_items += [
"PRD_MultiTruthCollection#MDT_TruthMap",
117 "PRD_MultiTruthCollection#RPC_TruthMap",
"PRD_MultiTruthCollection#TGC_TruthMap"]
118 if flags.Detector.EnableCSC:
119 esd_items += [
"PRD_MultiTruthCollection#CSC_TruthMap"]
120 if flags.Detector.EnablesTGC:
121 esd_items += [
"PRD_MultiTruthCollection#STGC_TruthMap"]
122 if flags.Detector.EnableMM:
123 esd_items += [
"PRD_MultiTruthCollection#MM_TruthMap"]
126 esd_items += [
"DetailedTrackTruthCollection#MuonSpectrometerTracksTruth"]
127 esd_items += [
"TrackTruthCollection#MuonSpectrometerTracksTruth"]
129 if flags.Muon.writeSDOs:
130 if flags.Detector.EnableCSC: esd_items+=[
"CscSimDataCollection#CSC_SDO"]
131 esd_items+=[
"MuonSimDataCollection#MDT_SDO"]
132 esd_items+=[
"MuonSimDataCollection#RPC_SDO"]
133 esd_items+=[
"MuonSimDataCollection#TGC_SDO"]
134 if flags.Detector.EnablesTGC: esd_items+=[
"MuonSimDataCollection#sTGC_SDO"]
135 if flags.Detector.EnableMM: esd_items+=[
"MuonSimDataCollection#MM_SDO"]
137 if flags.Muon.writexAODPRD:
138 for item
in [
"MDT_SDO",
"RPC_SDO",
"TGC_SDO",
"MM_SDO",
"sTGC_SDO"]:
139 esd_items += [f
"xAOD::MuonSimHitContainer#{item}", f
"xAOD::MuonSimHitAuxContainer#{item}Aux."]
141 if flags.Output.doWriteESD:
142 result.merge(OutputStreamCfg(flags,
"ESD", esd_items))
143 if flags.Output.doWriteAOD:
144 result.merge(OutputStreamCfg(flags,
"AOD", aod_items))
150 from MuonConfig.MuonPrepDataConvConfig
import MuonPrepDataConvCfg
151 from MuonConfig.MuonRecToolsConfig
import MuonTrackScoringToolCfg
152 from MuonConfig.MuonGeometryConfig
import MuonIdHelperSvcCfg
153 from MuonConfig.MuonRecToolsConfig
import MuonEDMHelperSvcCfg
154 from TrkConfig.TrkTrackSummaryToolConfig
import MuonTrackSummaryToolCfg
155 from TrkConfig.AtlasExtrapolatorConfig
import AtlasExtrapolatorCfg
158 result = MuonIdHelperSvcCfg(flags)
159 result.merge(MuonEDMHelperSvcCfg(flags))
162 result.merge(MuonPrepDataConvCfg(flags))
163 result.merge(MuonSegmentFindingCfg(flags))
164 result.merge(MuonTrackBuildingCfg(flags))
165 result.merge(MuonStandaloneTrackParticleCnvAlgCfg(flags))
169 from AthenaConfiguration.Enums
import Format
170 if (flags.Input.isMC
or flags.Overlay.DataOverlay)
and flags.Input.Format!=Format.BS:
172 if "MuonEntryLayerFilter" not in flags.Input.Collections
and \
173 (
"MuonEntryLayer" in flags.Input.Collections):
174 result.addEventAlgo(CompFactory.TrackRecordFilter())
175 if "MuonExitLayerFilter" not in flags.Input.Collections
and \
176 (
"MuonExitLayer" in flags.Input.Collections):
177 result.addEventAlgo(CompFactory.TrackRecordFilter(
"TrackRecordFilterMuonExitLayer",
178 inputName=
"MuonExitLayer",
179 outputName=
"MuonExitLayerFilter"))
182 track_cols = [
"MuonSpectrometerTracks"]
183 track_colstp = [
"MuonSpectrometerTrackParticles"]
185 from MuonConfig.MuonTruthAlgsConfig
import MuonDetailedTrackTruthMakerCfg
186 result.merge(MuonDetailedTrackTruthMakerCfg(flags, name=
"MuonStandaloneDetailedTrackTruthMaker",
187 TrackCollectionNames=track_cols))
189 if not flags.Muon.scheduleActsReco:
190 for i
in range(len(track_cols)):
191 from TrkConfig.TrkTruthAlgsConfig
import TrackTruthSelectorCfg, TrackParticleTruthAlgCfg
192 result.merge(TrackTruthSelectorCfg(flags, tracks=track_cols[i]))
193 result.merge(TrackParticleTruthAlgCfg(flags, tracks=track_cols[i],
194 TrackParticleName=track_colstp[i]))
198 if flags.Muon.makePRDs:
199 if not flags.Muon.usePhaseIIGeoSetup:
200 from MuonConfig.MuonTruthAlgsConfig
import MuonTruthAlgsCfg
201 result.merge(MuonTruthAlgsCfg(flags))
203 from MuonTruthAlgsR4.MuonTruthAlgsConfig
import MuonTruthAlgsCfg
204 result.merge(MuonTruthAlgsCfg(flags))
206 if flags.Muon.doMSVertex:
207 msvertexrecotool = CompFactory.Muon.MSVertexRecoTool(
208 MyExtrapolator=result.popToolsAndMerge(
209 AtlasExtrapolatorCfg(flags)),
210 TGCKey=
'TGC_MeasurementsAllBCs')
211 the_alg = CompFactory.MSVertexRecoAlg(
212 name=
"MSVertexRecoAlg", MSVertexRecoTool=msvertexrecotool)
214 result.addEventAlgo(the_alg)
219 result.addPublicTool(result.popToolsAndMerge(
220 MuonTrackScoringToolCfg(flags)))
222 result.addPublicTool(result.popToolsAndMerge(
223 MuonTrackSummaryToolCfg(flags)))
226 if flags.Output.doWriteESD
or flags.Output.doWriteAOD:
234 from MuonConfig.MuonConfigUtils
import SetupMuonStandaloneConfigFlags
235 flags = SetupMuonStandaloneConfigFlags()
237 from MuonConfig.MuonConfigUtils
import SetupMuonStandaloneCA
238 cfg = SetupMuonStandaloneCA(flags)
244 from SGComps.AddressRemappingConfig
import InputRenameCfg
245 cfg.merge(InputRenameCfg(
"TrackCollection",
246 "MuonSpectrometerTracks",
"MuonSpectrometerTracks_old"))
248 cfg.printConfig(withDetails=
True)
252 oldRemaps = cfg.getService(
"AddressRemappingSvc").TypeKeyRenameMaps
253 cfg.getService(
"AddressRemappingSvc").TypeKeyRenameMaps = [
254 remap
for remap
in oldRemaps
if "Trk::SegmentCollection" not in remap]
256 f = open(
"MuonReconstruction.pkl",
"wb")
260 from MuonConfig.MuonConfigUtils
import executeTest
268 This config (made for r24.0 in Nov 2024) is used to:
269 1] Switch setup of the segment making in the NSW to loosen constrain on the IP
270 2] Adapt and switch off various criteria in TrackSteering/building to be able to reconstruct track from the non-standards (non-collision background) segments
274 cfg.getEventAlgo(
"MuonSegmentMaker").NSWSegmentMaker.SeedMMStereos=
False
275 cfg.getEventAlgo(
"MuonSegmentMaker").NSWSegmentMaker.IPConstraint=
False
279 cfg.getEventAlgo(
"MuonCreatorAlg").MuonCreatorTool.RequireMSOEforSA=
False
280 cfg.getEventAlgo(
"MuonCreatorAlg").MuonCreatorTool.RequireCaloForSA=
False
282 cfg.getEventAlgo(
"MuonCombinedMuonCandidateAlg").MuonCandidateTool.ExtrapolationStrategy=1
285 cfg.getEventAlgo(
"MuPatTrackBuilder").TrackSteering.SegSeedQCut = -2
286 cfg.getEventAlgo(
"MuPatTrackBuilder").TrackSteering.Seg2ndQCut = -2
287 cfg.getEventAlgo(
"MuPatTrackBuilder").TrackSteering.SegOtherQCut = -2
288 cfg.getEventAlgo(
"MuPatTrackBuilder").TrackSteering.UseTightSegmentMatching =
False
290 cfg.getEventAlgo(
"MuPatTrackBuilder").TrackSteering.TrackBuilderTool.CandidateMatchingTool.DoTrackSegmentMatching =
False
291 cfg.getEventAlgo(
"MuPatTrackBuilder").TrackSteering.MooBuilderTool.CandidateMatchingTool.DoTrackSegmentMatching =
False
292 cfg.getEventAlgo(
"MuPatTrackBuilder").TrackSteering.TrackBuilderTool.CandidateMatchingTool.DoTrackSegmentMatching =
False
294 cfg.getEventAlgo(
"MuPatTrackBuilder").TrackSteering.CandidateMatchingTool.DoTrackSegmentMatching =
False
296 cfg.getEventAlgo(
"MuPatTrackBuilder").TrackSteering.TrackRefinementTool.CandidateMatchingTool.DoTrackSegmentMatching =
False
299 cfg.getEventAlgo(
"MuPatTrackBuilder").TrackSteering.CandidateMatchingTool.SegmentMatchingTool.UseEndcapExtrapolationMatching =
False
300 cfg.getEventAlgo(
"MuPatTrackBuilder").TrackSteering.CandidateMatchingTool.SegmentMatchingTool.doThetaMatching =
False
301 cfg.getEventAlgo(
"MuPatTrackBuilder").TrackSteering.CandidateMatchingTool.SegmentMatchingTool.doPhiMatching =
False
304 cfg.getEventAlgo(
"MuPatTrackBuilder").TrackSteering.TrackBuilderTool.CandidateMatchingTool.SegmentMatchingTool.UseEndcapExtrapolationMatching =
False
305 cfg.getEventAlgo(
"MuPatTrackBuilder").TrackSteering.TrackBuilderTool.CandidateMatchingTool.SegmentMatchingTool.doThetaMatching =
False
306 cfg.getEventAlgo(
"MuPatTrackBuilder").TrackSteering.TrackBuilderTool.CandidateMatchingTool.SegmentMatchingTool.doPhiMatching =
False
308 cfg.getEventAlgo(
"MuPatTrackBuilder").TrackSteering.MooBuilderTool.CandidateMatchingTool.SegmentMatchingTool.UseEndcapExtrapolationMatching =
False
309 cfg.getEventAlgo(
"MuPatTrackBuilder").TrackSteering.MooBuilderTool.CandidateMatchingTool.SegmentMatchingTool.doThetaMatching =
False
310 cfg.getEventAlgo(
"MuPatTrackBuilder").TrackSteering.MooBuilderTool.CandidateMatchingTool.SegmentMatchingTool.doPhiMatching =
False