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
245 raise RuntimeError(
"MuonReconstructionConfigTest requires flags.fillFromArgs() to be run before flags.lock()")
247 from MuonConfig.MuonConfigUtils
import SetupMuonStandaloneCA
254 from SGComps.AddressRemappingConfig
import InputRenameCfg
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")
274 if not sc.isSuccess():
276 sys.exit(
"Execution failed")
282 This config (made for r24.0 in Nov 2024) is used to:
283 1] Switch setup of the segment making in the NSW to loosen constrain on the IP
284 2] Adapt and switch off various criteria in TrackSteering/building to be able to reconstruct track from the non-standards (non-collision background) segments
288 cfg.getEventAlgo(
"MuonSegmentMaker").NSWSegmentMaker.SeedMMStereos=
False
289 cfg.getEventAlgo(
"MuonSegmentMaker").NSWSegmentMaker.IPConstraint=
False
293 cfg.getEventAlgo(
"MuonCreatorAlg").MuonCreatorTool.RequireMSOEforSA=
False
294 cfg.getEventAlgo(
"MuonCreatorAlg").MuonCreatorTool.RequireCaloForSA=
False
296 cfg.getEventAlgo(
"MuonCombinedMuonCandidateAlg").MuonCandidateTool.ExtrapolationStrategy=1
299 cfg.getEventAlgo(
"MuPatTrackBuilder").TrackSteering.SegSeedQCut = -2
300 cfg.getEventAlgo(
"MuPatTrackBuilder").TrackSteering.Seg2ndQCut = -2
301 cfg.getEventAlgo(
"MuPatTrackBuilder").TrackSteering.SegOtherQCut = -2
302 cfg.getEventAlgo(
"MuPatTrackBuilder").TrackSteering.UseTightSegmentMatching =
False
304 cfg.getEventAlgo(
"MuPatTrackBuilder").TrackSteering.TrackBuilderTool.CandidateMatchingTool.DoTrackSegmentMatching =
False
305 cfg.getEventAlgo(
"MuPatTrackBuilder").TrackSteering.MooBuilderTool.CandidateMatchingTool.DoTrackSegmentMatching =
False
306 cfg.getEventAlgo(
"MuPatTrackBuilder").TrackSteering.TrackBuilderTool.CandidateMatchingTool.DoTrackSegmentMatching =
False
308 cfg.getEventAlgo(
"MuPatTrackBuilder").TrackSteering.CandidateMatchingTool.DoTrackSegmentMatching =
False
310 cfg.getEventAlgo(
"MuPatTrackBuilder").TrackSteering.TrackRefinementTool.CandidateMatchingTool.DoTrackSegmentMatching =
False
313 cfg.getEventAlgo(
"MuPatTrackBuilder").TrackSteering.CandidateMatchingTool.SegmentMatchingTool.UseEndcapExtrapolationMatching =
False
314 cfg.getEventAlgo(
"MuPatTrackBuilder").TrackSteering.CandidateMatchingTool.SegmentMatchingTool.doThetaMatching =
False
315 cfg.getEventAlgo(
"MuPatTrackBuilder").TrackSteering.CandidateMatchingTool.SegmentMatchingTool.doPhiMatching =
False
318 cfg.getEventAlgo(
"MuPatTrackBuilder").TrackSteering.TrackBuilderTool.CandidateMatchingTool.SegmentMatchingTool.UseEndcapExtrapolationMatching =
False
319 cfg.getEventAlgo(
"MuPatTrackBuilder").TrackSteering.TrackBuilderTool.CandidateMatchingTool.SegmentMatchingTool.doThetaMatching =
False
320 cfg.getEventAlgo(
"MuPatTrackBuilder").TrackSteering.TrackBuilderTool.CandidateMatchingTool.SegmentMatchingTool.doPhiMatching =
False
322 cfg.getEventAlgo(
"MuPatTrackBuilder").TrackSteering.MooBuilderTool.CandidateMatchingTool.SegmentMatchingTool.UseEndcapExtrapolationMatching =
False
323 cfg.getEventAlgo(
"MuPatTrackBuilder").TrackSteering.MooBuilderTool.CandidateMatchingTool.SegmentMatchingTool.doThetaMatching =
False
324 cfg.getEventAlgo(
"MuPatTrackBuilder").TrackSteering.MooBuilderTool.CandidateMatchingTool.SegmentMatchingTool.doPhiMatching =
False
328 if __name__ ==
"__main__":