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."]
30 aod_items += [
"xAOD::TrackParticleContainer#MuonSpectrometerTrackParticles"]
31 aod_items += [
"xAOD::TrackParticleAuxContainer#MuonSpectrometerTrackParticlesAux."]
32 aod_items += [
"xAOD::TrackParticleContainer#MuonSpectrometerOnlyTrackParticles"]
33 aod_items += [
"xAOD::TrackParticleAuxContainer#MuonSpectrometerOnlyTrackParticlesAux."]
35 aod_items += [
"xAOD::TrackParticleContainer#MSonlyTracklets"]
36 aod_items += [
"xAOD::TrackParticleAuxContainer#MSonlyTrackletsAux."]
37 aod_items += [
"xAOD::VertexContainer#MSDisplacedVertex"]
38 aod_items += [
"xAOD::VertexAuxContainer#MSDisplacedVertexAux."]
40 if flags.Input.isMC
or flags.Overlay.DataOverlay:
42 aod_items += [
"xAOD::TruthParticleContainer#MuonTruthParticles"]
43 aod_items += [
"xAOD::TruthParticleAuxContainer#MuonTruthParticlesAux."]
46 aod_items += [
"xAOD::MuonSegmentContainer#MuonTruthSegments"]
47 aod_items += [
"xAOD::MuonSegmentAuxContainer#MuonTruthSegmentsAux.-localSegPars"]
51 esd_items += aod_items
54 if flags.Detector.EnableMM:
55 esd_items += [
"Muon::MMPrepDataContainer#MM_Measurements"]
56 esd_items += [
"xAOD::NSWMMTPRDOContainer#*",
"xAOD::NSWMMTPRDOAuxContainer#*"]
57 if flags.Detector.EnablesTGC:
58 esd_items += [
"Muon::sTgcPrepDataContainer#STGC_Measurements"]
59 esd_items += [
"Muon::NSW_PadTriggerDataContainer#NSW_PadTrigger_RDO"]
60 esd_items += [
"xAOD::NSWTPRDOContainer#*",
"xAOD::NSWTPRDOAuxContainer#*"]
63 if flags.Detector.EnableCSC:
64 esd_items += [
"Muon::CscPrepDataContainer#CSC_Clusters"]
65 esd_items += [
"Muon::CscStripPrepDataContainer#CSC_Measurements"]
66 esd_items += [
"Muon::RpcPrepDataContainer#RPC_Measurements"]
67 esd_items += [
"Muon::TgcPrepDataContainer#TGC_MeasurementsAllBCs"]
68 esd_items += [
"Muon::MdtPrepDataContainer#MDT_DriftCircles"]
72 esd_items += [
"Muon::TgcCoinDataContainer#TrigT1CoinDataCollection"]
73 esd_items += [
"Muon::TgcCoinDataContainer#TrigT1CoinDataCollectionPriorBC"]
74 esd_items += [
"Muon::TgcCoinDataContainer#TrigT1CoinDataCollectionNextBC"]
75 esd_items += [
"Muon::TgcCoinDataContainer#TrigT1CoinDataCollectionNextNextBC"]
76 esd_items += [
"Muon::RpcCoinDataContainer#RPC_triggerHits"]
77 esd_items += [
"RpcSectorLogicContainer#RPC_SECTORLOGIC"]
80 if flags.Output.doWriteRDO
or flags.Muon.doWriteRpcRDO:
81 esd_items += [
"RpcPadContainer#RPCPAD"]
84 esd_items += [
"Trk::SegmentCollection#NCB_TrackMuonSegments"]
90 esd_items += [
"TrackCollection#MuonSpectrometerTracks"]
91 if flags.Detector.EnableMM
or flags.Detector.EnablesTGC:
92 esd_items += [
"Trk::SegmentCollection#TrackMuonNSWSegments"]
96 esd_items += [
"TrackRecordCollection#MuonEntryLayerFilter"]
97 esd_items += [
"TrackRecordCollection#MuonExitLayerFilter"]
99 esd_items += [
"PRD_MultiTruthCollection#MDT_TruthMap",
100 "PRD_MultiTruthCollection#RPC_TruthMap",
"PRD_MultiTruthCollection#TGC_TruthMap"]
101 if flags.Detector.EnableCSC:
102 esd_items += [
"PRD_MultiTruthCollection#CSC_TruthMap"]
103 if flags.Detector.EnablesTGC:
104 esd_items += [
"PRD_MultiTruthCollection#STGC_TruthMap"]
105 if flags.Detector.EnableMM:
106 esd_items += [
"PRD_MultiTruthCollection#MM_TruthMap"]
109 esd_items += [
"DetailedTrackTruthCollection#MuonSpectrometerTracksTruth"]
110 esd_items += [
"TrackTruthCollection#MuonSpectrometerTracksTruth"]
112 if flags.Muon.writeSDOs:
113 if flags.Detector.EnableCSC: esd_items+=[
"CscSimDataCollection#CSC_SDO"]
114 esd_items+=[
"MuonSimDataCollection#MDT_SDO"]
115 esd_items+=[
"MuonSimDataCollection#RPC_SDO"]
116 esd_items+=[
"MuonSimDataCollection#TGC_SDO"]
117 if flags.Detector.EnablesTGC: esd_items+=[
"MuonSimDataCollection#sTGC_SDO"]
118 if flags.Detector.EnableMM: esd_items+=[
"MuonSimDataCollection#MM_SDO"]
121 if flags.Output.doWriteESD:
122 result.merge(OutputStreamCfg(flags,
"ESD", esd_items))
123 if flags.Output.doWriteAOD:
124 result.merge(OutputStreamCfg(flags,
"AOD", aod_items))
130 from MuonConfig.MuonPrepDataConvConfig
import MuonPrepDataConvCfg
131 from MuonConfig.MuonRecToolsConfig
import MuonTrackScoringToolCfg
132 from MuonConfig.MuonGeometryConfig
import MuonIdHelperSvcCfg
133 from MuonConfig.MuonRecToolsConfig
import MuonEDMHelperSvcCfg
134 from TrkConfig.TrkTrackSummaryToolConfig
import MuonTrackSummaryToolCfg
135 from TrkConfig.AtlasExtrapolatorConfig
import AtlasExtrapolatorCfg
138 result = MuonIdHelperSvcCfg(flags)
139 result.merge(MuonEDMHelperSvcCfg(flags))
142 result.merge(MuonPrepDataConvCfg(flags))
143 result.merge(MuonSegmentFindingCfg(flags))
144 result.merge(MuonTrackBuildingCfg(flags))
145 result.merge(MuonStandaloneTrackParticleCnvAlgCfg(flags))
149 from AthenaConfiguration.Enums
import Format
150 if (flags.Input.isMC
or flags.Overlay.DataOverlay)
and flags.Input.Format!=Format.BS:
152 if "MuonEntryLayerFilter" not in flags.Input.Collections
and \
153 (
"MuonEntryLayer" in flags.Input.Collections):
154 result.addEventAlgo(CompFactory.TrackRecordFilter())
155 if "MuonExitLayerFilter" not in flags.Input.Collections
and \
156 (
"MuonExitLayer" in flags.Input.Collections):
157 result.addEventAlgo(CompFactory.TrackRecordFilter(
"TrackRecordFilterMuonExitLayer",
158 inputName=
"MuonExitLayer",
159 outputName=
"MuonExitLayerFilter"))
162 track_cols = [
"MuonSpectrometerTracks"]
163 track_colstp = [
"MuonSpectrometerTrackParticles"]
165 from MuonConfig.MuonTruthAlgsConfig
import MuonDetailedTrackTruthMakerCfg
166 result.merge(MuonDetailedTrackTruthMakerCfg(flags, name=
"MuonStandaloneDetailedTrackTruthMaker",
167 TrackCollectionNames=track_cols))
169 if not flags.Muon.scheduleActsReco:
170 for i
in range(len(track_cols)):
171 from TrkConfig.TrkTruthAlgsConfig
import TrackTruthSelectorCfg, TrackParticleTruthAlgCfg
172 result.merge(TrackTruthSelectorCfg(flags, tracks=track_cols[i]))
173 result.merge(TrackParticleTruthAlgCfg(flags, tracks=track_cols[i],
174 TrackParticleName=track_colstp[i]))
178 if flags.Muon.makePRDs:
179 if not flags.Muon.usePhaseIIGeoSetup:
180 from MuonConfig.MuonTruthAlgsConfig
import MuonTruthAlgsCfg
181 result.merge(MuonTruthAlgsCfg(flags))
183 from MuonTruthAlgsR4.MuonTruthAlgsConfig
import MuonTruthAlgsCfg
184 result.merge(MuonTruthAlgsCfg(flags))
186 if flags.Muon.doMSVertex:
187 msvertexrecotool = CompFactory.Muon.MSVertexRecoTool(
188 MyExtrapolator=result.popToolsAndMerge(
189 AtlasExtrapolatorCfg(flags)),
190 TGCKey=
'TGC_MeasurementsAllBCs')
191 the_alg = CompFactory.MSVertexRecoAlg(
192 name=
"MSVertexRecoAlg", MSVertexRecoTool=msvertexrecotool)
194 result.addEventAlgo(the_alg)
199 result.addPublicTool(result.popToolsAndMerge(
200 MuonTrackScoringToolCfg(flags)))
202 result.addPublicTool(result.popToolsAndMerge(
203 MuonTrackSummaryToolCfg(flags)))
206 if flags.Output.doWriteESD
or flags.Output.doWriteAOD:
208 if flags.Muon.scheduleActsReco:
209 from MuonConfig.ReconstructionConfigR4
import MuonReconstructionConfig
217 from MuonConfig.MuonConfigUtils
import SetupMuonStandaloneConfigFlags
218 flags = SetupMuonStandaloneConfigFlags()
220 from MuonConfig.MuonConfigUtils
import SetupMuonStandaloneCA
221 cfg = SetupMuonStandaloneCA(flags)
227 from SGComps.AddressRemappingConfig
import InputRenameCfg
228 cfg.merge(InputRenameCfg(
"TrackCollection",
229 "MuonSpectrometerTracks",
"MuonSpectrometerTracks_old"))
231 cfg.printConfig(withDetails=
True)
235 oldRemaps = cfg.getService(
"AddressRemappingSvc").TypeKeyRenameMaps
236 cfg.getService(
"AddressRemappingSvc").TypeKeyRenameMaps = [
237 remap
for remap
in oldRemaps
if "Trk::SegmentCollection" not in remap]
239 f = open(
"MuonReconstruction.pkl",
"wb")
243 from MuonConfig.MuonConfigUtils
import executeTest
251 This config (made for r24.0 in Nov 2024) is used to:
252 1] Switch setup of the segment making in the NSW to loosen constrain on the IP
253 2] Adapt and switch off various criteria in TrackSteering/building to be able to reconstruct track from the non-standards (non-collision background) segments
257 cfg.getEventAlgo(
"MuonSegmentMaker").NSWSegmentMaker.SeedMMStereos=
False
258 cfg.getEventAlgo(
"MuonSegmentMaker").NSWSegmentMaker.IPConstraint=
False
262 cfg.getEventAlgo(
"MuonCreatorAlg").MuonCreatorTool.RequireMSOEforSA=
False
263 cfg.getEventAlgo(
"MuonCreatorAlg").MuonCreatorTool.RequireCaloForSA=
False
265 cfg.getEventAlgo(
"MuonCombinedMuonCandidateAlg").MuonCandidateTool.ExtrapolationStrategy=1
268 cfg.getEventAlgo(
"MuPatTrackBuilder").TrackSteering.SegSeedQCut = -2
269 cfg.getEventAlgo(
"MuPatTrackBuilder").TrackSteering.Seg2ndQCut = -2
270 cfg.getEventAlgo(
"MuPatTrackBuilder").TrackSteering.SegOtherQCut = -2
271 cfg.getEventAlgo(
"MuPatTrackBuilder").TrackSteering.UseTightSegmentMatching =
False
273 cfg.getEventAlgo(
"MuPatTrackBuilder").TrackSteering.TrackBuilderTool.CandidateMatchingTool.DoTrackSegmentMatching =
False
274 cfg.getEventAlgo(
"MuPatTrackBuilder").TrackSteering.MooBuilderTool.CandidateMatchingTool.DoTrackSegmentMatching =
False
275 cfg.getEventAlgo(
"MuPatTrackBuilder").TrackSteering.TrackBuilderTool.CandidateMatchingTool.DoTrackSegmentMatching =
False
277 cfg.getEventAlgo(
"MuPatTrackBuilder").TrackSteering.CandidateMatchingTool.DoTrackSegmentMatching =
False
279 cfg.getEventAlgo(
"MuPatTrackBuilder").TrackSteering.TrackRefinementTool.CandidateMatchingTool.DoTrackSegmentMatching =
False
282 cfg.getEventAlgo(
"MuPatTrackBuilder").TrackSteering.CandidateMatchingTool.SegmentMatchingTool.UseEndcapExtrapolationMatching =
False
283 cfg.getEventAlgo(
"MuPatTrackBuilder").TrackSteering.CandidateMatchingTool.SegmentMatchingTool.doThetaMatching =
False
284 cfg.getEventAlgo(
"MuPatTrackBuilder").TrackSteering.CandidateMatchingTool.SegmentMatchingTool.doPhiMatching =
False
287 cfg.getEventAlgo(
"MuPatTrackBuilder").TrackSteering.TrackBuilderTool.CandidateMatchingTool.SegmentMatchingTool.UseEndcapExtrapolationMatching =
False
288 cfg.getEventAlgo(
"MuPatTrackBuilder").TrackSteering.TrackBuilderTool.CandidateMatchingTool.SegmentMatchingTool.doThetaMatching =
False
289 cfg.getEventAlgo(
"MuPatTrackBuilder").TrackSteering.TrackBuilderTool.CandidateMatchingTool.SegmentMatchingTool.doPhiMatching =
False
291 cfg.getEventAlgo(
"MuPatTrackBuilder").TrackSteering.MooBuilderTool.CandidateMatchingTool.SegmentMatchingTool.UseEndcapExtrapolationMatching =
False
292 cfg.getEventAlgo(
"MuPatTrackBuilder").TrackSteering.MooBuilderTool.CandidateMatchingTool.SegmentMatchingTool.doThetaMatching =
False
293 cfg.getEventAlgo(
"MuPatTrackBuilder").TrackSteering.MooBuilderTool.CandidateMatchingTool.SegmentMatchingTool.doPhiMatching =
False