4 from AthenaConfiguration.ComponentAccumulator
import ComponentAccumulator
5 from AthenaConfiguration.ComponentFactory
import CompFactory
8 from MuonConfig.MuonSegmentFindingConfig
import MuonSegmentFindingCfg
9 from MuonConfig.MuonTrackBuildingConfig
import MuonTrackBuildingCfg
10 from xAODTrackingCnv.xAODTrackingCnvConfig
import MuonStandaloneTrackParticleCnvAlgCfg
13 from OutputStreamAthenaPool.OutputStreamConfig
import OutputStreamCfg
17 from TrkEventCnvTools.TrkEventCnvToolsConfig
import (
18 TrkEventCnvSuperToolCfg)
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."]
32 aod_items += [
"xAOD::TrackParticleContainer#MuonSpectrometerTrackParticles"]
33 aod_items += [
"xAOD::TrackParticleAuxContainer#MuonSpectrometerTrackParticlesAux."]
34 aod_items += [
"xAOD::TrackParticleContainer#MuonSpectrometerOnlyTrackParticles"]
35 aod_items += [
"xAOD::TrackParticleAuxContainer#MuonSpectrometerOnlyTrackParticlesAux."]
37 aod_items += [
"xAOD::TrackParticleContainer#MSonlyTracklets"]
38 aod_items += [
"xAOD::TrackParticleAuxContainer#MSonlyTrackletsAux."]
39 aod_items += [
"xAOD::VertexContainer#MSDisplacedVertex"]
40 aod_items += [
"xAOD::VertexAuxContainer#MSDisplacedVertexAux."]
42 if flags.Input.isMC
or flags.Overlay.DataOverlay:
44 aod_items += [
"xAOD::TruthParticleContainer#MuonTruthParticles"]
45 aod_items += [
"xAOD::TruthParticleAuxContainer#MuonTruthParticlesAux."]
48 aod_items += [
"xAOD::MuonSegmentContainer#MuonTruthSegments"]
49 aod_items += [
"xAOD::MuonSegmentAuxContainer#MuonTruthSegmentsAux."]
53 esd_items += aod_items
56 if flags.Detector.EnableMM:
57 esd_items += [
"Muon::MMPrepDataContainer#MM_Measurements"]
58 esd_items += [
"xAOD::NSWMMTPRDOContainer#*",
"xAOD::NSWMMTPRDOAuxContainer#*"]
59 if flags.Detector.EnablesTGC:
60 esd_items += [
"Muon::sTgcPrepDataContainer#STGC_Measurements"]
61 esd_items += [
"Muon::NSW_PadTriggerDataContainer#NSW_PadTrigger_RDO"]
62 esd_items += [
"xAOD::NSWTPRDOContainer#*",
"xAOD::NSWTPRDOAuxContainer#*"]
65 if flags.Detector.EnableCSC:
66 esd_items += [
"Muon::CscPrepDataContainer#CSC_Clusters"]
67 esd_items += [
"Muon::CscStripPrepDataContainer#CSC_Measurements"]
68 esd_items += [
"Muon::RpcPrepDataContainer#RPC_Measurements"]
69 esd_items += [
"Muon::TgcPrepDataContainer#TGC_MeasurementsAllBCs"]
70 esd_items += [
"Muon::MdtPrepDataContainer#MDT_DriftCircles"]
72 if flags.Muon.writexAODPRD:
73 esd_items += [
"xAOD::MdtDriftCircleContainer#xMdtDriftCircles",
"xAOD::MdtDriftCircleAuxContainer#xMdtDriftCirclesAux." ]
74 esd_items += [
"xAOD::MdtTwinDriftCircleContainer#xMdtTwinDriftCircles",
"xAOD::MdtTwinDriftCircleAuxContainer#xMdtTwinDriftCirclesAux." ]
75 esd_items += [
"xAOD::sTgcStripContainer#xAODsTgcStrips",
"xAOD::sTgcStripAuxContainer#xAODsTgcStripsAux." ]
76 esd_items += [
"xAOD::sTgcPadContainer#xAODsTgcPads",
"xAOD::sTgcPadAuxContainer#xAODsTgcPadsAux." ]
77 esd_items += [
"xAOD::sTgcWireContainer#xAODsTgcWires",
"xAOD::sTgcWireAuxContainer#xAODsTgcWiresAux." ]
78 esd_items += [
"xAOD::MMClusterContainer#xAODMMClusters",
"xAOD::MMClusterAuxContainer#xAODMMClustersAux." ]
79 esd_items += [
"xAOD::TgcStripContainer#xTgcStrips",
"xAOD::TgcStripAuxContainer#xTgcStripsAux." ]
80 esd_items += [
"xAOD::RpcStripContainer#xRpcStrips",
"xAOD::RpcStripAuxContainer#xRpcStripsAux." ]
81 esd_items += [
"xAOD::RpcStrip2DContainer#xRpcBILStrips",
"xAOD::RpcStrip2DAuxContainer#xRpcBILStripsAux." ]
85 esd_items += [
"Muon::TgcCoinDataContainer#TrigT1CoinDataCollection"]
86 esd_items += [
"Muon::TgcCoinDataContainer#TrigT1CoinDataCollectionPriorBC"]
87 esd_items += [
"Muon::TgcCoinDataContainer#TrigT1CoinDataCollectionNextBC"]
88 esd_items += [
"Muon::TgcCoinDataContainer#TrigT1CoinDataCollectionNextNextBC"]
89 esd_items += [
"Muon::RpcCoinDataContainer#RPC_triggerHits"]
90 esd_items += [
"RpcSectorLogicContainer#RPC_SECTORLOGIC"]
93 if flags.Output.doWriteRDO
or flags.Muon.doWriteRpcRDO:
94 esd_items += [
"RpcPadContainer#RPCPAD"]
97 esd_items += [
"Trk::SegmentCollection#NCB_TrackMuonSegments"]
100 esd_items += [
"TrackCollection#MuonSpectrometerTracks"]
101 if flags.Muon.runCommissioningChain:
102 esd_items += [
"TrackCollection#EMEO_MuonSpectrometerTracks"]
103 if flags.Detector.EnableMM
or flags.Detector.EnablesTGC:
104 esd_items += [
"Trk::SegmentCollection#TrackMuonNSWSegments"]
108 esd_items += [
"TrackRecordCollection#MuonEntryLayerFilter"]
109 esd_items += [
"TrackRecordCollection#MuonExitLayerFilter"]
111 esd_items += [
"PRD_MultiTruthCollection#MDT_TruthMap",
112 "PRD_MultiTruthCollection#RPC_TruthMap",
"PRD_MultiTruthCollection#TGC_TruthMap"]
113 if flags.Detector.EnableCSC:
114 esd_items += [
"PRD_MultiTruthCollection#CSC_TruthMap"]
115 if flags.Detector.EnablesTGC:
116 esd_items += [
"PRD_MultiTruthCollection#STGC_TruthMap"]
117 if flags.Detector.EnableMM:
118 esd_items += [
"PRD_MultiTruthCollection#MM_TruthMap"]
121 esd_items += [
"DetailedTrackTruthCollection#MuonSpectrometerTracksTruth"]
122 esd_items += [
"TrackTruthCollection#MuonSpectrometerTracksTruth"]
124 if flags.Muon.writeSDOs:
125 if flags.Detector.EnableCSC: esd_items+=[
"CscSimDataCollection#CSC_SDO"]
126 esd_items+=[
"MuonSimDataCollection#MDT_SDO"]
127 esd_items+=[
"MuonSimDataCollection#RPC_SDO"]
128 esd_items+=[
"MuonSimDataCollection#TGC_SDO"]
129 if flags.Detector.EnablesTGC: esd_items+=[
"MuonSimDataCollection#sTGC_SDO"]
130 if flags.Detector.EnableMM: esd_items+=[
"MuonSimDataCollection#MM_SDO"]
132 if flags.Output.doWriteESD:
134 if flags.Output.doWriteAOD:
141 from MuonConfig.MuonPrepDataConvConfig
import MuonPrepDataConvCfg
142 from MuonConfig.MuonRecToolsConfig
import MuonTrackScoringToolCfg
143 from MuonConfig.MuonGeometryConfig
import MuonIdHelperSvcCfg
144 from MuonConfig.MuonRecToolsConfig
import MuonEDMHelperSvcCfg
145 from TrkConfig.TrkTrackSummaryToolConfig
import MuonTrackSummaryToolCfg
146 from TrkConfig.AtlasExtrapolatorConfig
import AtlasExtrapolatorCfg
157 if flags.Muon.runCommissioningChain:
159 "MuonStandaloneTrackParticleCnvAlg_EMEO",
160 TrackContainerName=
"EMEO_MuonSpectrometerTracks",
161 xAODTrackParticlesFromTracksContainerName=
"EMEO_MuonSpectrometerTrackParticles"))
165 if flags.Input.isMC
or flags.Overlay.DataOverlay:
167 if "MuonEntryLayerFilter" not in flags.Input.Collections
and \
168 (
"MuonEntryLayer" in flags.Input.Collections):
169 result.addEventAlgo(CompFactory.TrackRecordFilter())
170 if "MuonExitLayerFilter" not in flags.Input.Collections
and \
171 (
"MuonExitLayer" in flags.Input.Collections):
172 result.addEventAlgo(CompFactory.TrackRecordFilter(
"TrackRecordFilterMuonExitLayer",
173 inputName=
"MuonExitLayer",
174 outputName=
"MuonExitLayerFilter"))
177 track_cols = [
"MuonSpectrometerTracks"]
178 track_colstp = [
"MuonSpectrometerTrackParticles"]
179 if flags.Muon.runCommissioningChain:
180 track_cols += [
"EMEO_MuonSpectrometerTracks"]
181 track_colstp += [
"EMEO_MuonSpectrometerTrackParticles"]
183 from MuonConfig.MuonTruthAlgsConfig
import MuonDetailedTrackTruthMakerCfg
185 TrackCollectionNames=track_cols))
187 for i
in range(len(track_cols)):
188 from TrkConfig.TrkTruthAlgsConfig
import TrackTruthSelectorCfg, TrackParticleTruthAlgCfg
192 TrackParticleName=track_colstp[i]))
196 if flags.Muon.makePRDs:
197 if not flags.Muon.usePhaseIIGeoSetup:
198 from MuonConfig.MuonRdoDecodeConfig
import MuonPRD_MultiTruthMakerCfg
200 from MuonConfig.MuonTruthAlgsConfig
import TruthMuonMakerAlgCfg
202 from MuonConfig.MuonTruthAlgsConfig
import MuonTruthAddTrackRecordsAlgCfg
204 from MuonConfig.MuonTruthAlgsConfig
import MuonTruthHitCountsAlgCfg
206 from MuonConfig.MuonTruthAlgsConfig
import MuonTruthSegmentCreationAlgCfg
209 from MuonTruthAlgsR4.MuonTruthAlgsConfig
import MuonTruthAlgsCfg
212 if flags.Muon.doMSVertex:
213 msvertexrecotool = CompFactory.Muon.MSVertexRecoTool(
214 MyExtrapolator=result.popToolsAndMerge(
216 TGCKey=
'TGC_MeasurementsAllBCs' if not flags.Muon.useTGCPriorNextBC
else 'TGC_Measurements')
217 the_alg = CompFactory.MSVertexRecoAlg(
218 name=
"MSVertexRecoAlg", MSVertexRecoTool=msvertexrecotool)
220 result.addEventAlgo(the_alg)
225 result.addPublicTool(result.popToolsAndMerge(
228 result.addPublicTool(result.popToolsAndMerge(
232 if flags.Output.doWriteESD
or flags.Output.doWriteAOD:
240 from MuonConfig.MuonConfigUtils
import SetupMuonStandaloneConfigFlags
243 from MuonConfig.MuonConfigUtils
import SetupMuonStandaloneCA
250 from SGComps.AddressRemappingConfig
import InputRenameCfg
252 "MuonSpectrometerTracks",
"MuonSpectrometerTracks_old"))
254 cfg.printConfig(withDetails=
True)
258 oldRemaps = cfg.getService(
"AddressRemappingSvc").TypeKeyRenameMaps
259 cfg.getService(
"AddressRemappingSvc").TypeKeyRenameMaps = [
260 remap
for remap
in oldRemaps
if "Trk::SegmentCollection" not in remap]
262 f =
open(
"MuonReconstruction.pkl",
"wb")
266 from MuonConfig.MuonConfigUtils
import executeTest
274 This config (made for r24.0 in Nov 2024) is used to:
275 1] Switch setup of the segment making in the NSW to loosen constrain on the IP
276 2] Adapt and switch off various criteria in TrackSteering/building to be able to reconstruct track from the non-standards (non-collision background) segments
280 cfg.getEventAlgo(
"MuonSegmentMaker").NSWSegmentMaker.SeedMMStereos=
False
281 cfg.getEventAlgo(
"MuonSegmentMaker").NSWSegmentMaker.IPConstraint=
False
285 cfg.getEventAlgo(
"MuonCreatorAlg").MuonCreatorTool.RequireMSOEforSA=
False
286 cfg.getEventAlgo(
"MuonCreatorAlg").MuonCreatorTool.RequireCaloForSA=
False
288 cfg.getEventAlgo(
"MuonCombinedMuonCandidateAlg").MuonCandidateTool.ExtrapolationStrategy=1
291 cfg.getEventAlgo(
"MuPatTrackBuilder").TrackSteering.SegSeedQCut = -2
292 cfg.getEventAlgo(
"MuPatTrackBuilder").TrackSteering.Seg2ndQCut = -2
293 cfg.getEventAlgo(
"MuPatTrackBuilder").TrackSteering.SegOtherQCut = -2
294 cfg.getEventAlgo(
"MuPatTrackBuilder").TrackSteering.UseTightSegmentMatching =
False
296 cfg.getEventAlgo(
"MuPatTrackBuilder").TrackSteering.TrackBuilderTool.CandidateMatchingTool.DoTrackSegmentMatching =
False
297 cfg.getEventAlgo(
"MuPatTrackBuilder").TrackSteering.MooBuilderTool.CandidateMatchingTool.DoTrackSegmentMatching =
False
298 cfg.getEventAlgo(
"MuPatTrackBuilder").TrackSteering.TrackBuilderTool.CandidateMatchingTool.DoTrackSegmentMatching =
False
300 cfg.getEventAlgo(
"MuPatTrackBuilder").TrackSteering.CandidateMatchingTool.DoTrackSegmentMatching =
False
302 cfg.getEventAlgo(
"MuPatTrackBuilder").TrackSteering.TrackRefinementTool.CandidateMatchingTool.DoTrackSegmentMatching =
False
305 cfg.getEventAlgo(
"MuPatTrackBuilder").TrackSteering.CandidateMatchingTool.SegmentMatchingTool.UseEndcapExtrapolationMatching =
False
306 cfg.getEventAlgo(
"MuPatTrackBuilder").TrackSteering.CandidateMatchingTool.SegmentMatchingTool.doThetaMatching =
False
307 cfg.getEventAlgo(
"MuPatTrackBuilder").TrackSteering.CandidateMatchingTool.SegmentMatchingTool.doPhiMatching =
False
310 cfg.getEventAlgo(
"MuPatTrackBuilder").TrackSteering.TrackBuilderTool.CandidateMatchingTool.SegmentMatchingTool.UseEndcapExtrapolationMatching =
False
311 cfg.getEventAlgo(
"MuPatTrackBuilder").TrackSteering.TrackBuilderTool.CandidateMatchingTool.SegmentMatchingTool.doThetaMatching =
False
312 cfg.getEventAlgo(
"MuPatTrackBuilder").TrackSteering.TrackBuilderTool.CandidateMatchingTool.SegmentMatchingTool.doPhiMatching =
False
314 cfg.getEventAlgo(
"MuPatTrackBuilder").TrackSteering.MooBuilderTool.CandidateMatchingTool.SegmentMatchingTool.UseEndcapExtrapolationMatching =
False
315 cfg.getEventAlgo(
"MuPatTrackBuilder").TrackSteering.MooBuilderTool.CandidateMatchingTool.SegmentMatchingTool.doThetaMatching =
False
316 cfg.getEventAlgo(
"MuPatTrackBuilder").TrackSteering.MooBuilderTool.CandidateMatchingTool.SegmentMatchingTool.doPhiMatching =
False
320 if __name__ ==
"__main__":