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.-localSegPars"]
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.MuonTruthAlgsConfig
import MuonTruthAlgsCfg
201 from MuonTruthAlgsR4.MuonTruthAlgsConfig
import MuonTruthAlgsCfg
204 if flags.Muon.doMSVertex:
205 msvertexrecotool = CompFactory.Muon.MSVertexRecoTool(
206 MyExtrapolator=result.popToolsAndMerge(
208 TGCKey=
'TGC_MeasurementsAllBCs' if not flags.Muon.useTGCPriorNextBC
else 'TGC_Measurements')
209 the_alg = CompFactory.MSVertexRecoAlg(
210 name=
"MSVertexRecoAlg", MSVertexRecoTool=msvertexrecotool)
212 result.addEventAlgo(the_alg)
217 result.addPublicTool(result.popToolsAndMerge(
220 result.addPublicTool(result.popToolsAndMerge(
224 if flags.Output.doWriteESD
or flags.Output.doWriteAOD:
232 from MuonConfig.MuonConfigUtils
import SetupMuonStandaloneConfigFlags
235 from MuonConfig.MuonConfigUtils
import SetupMuonStandaloneCA
242 from SGComps.AddressRemappingConfig
import InputRenameCfg
244 "MuonSpectrometerTracks",
"MuonSpectrometerTracks_old"))
246 cfg.printConfig(withDetails=
True)
250 oldRemaps = cfg.getService(
"AddressRemappingSvc").TypeKeyRenameMaps
251 cfg.getService(
"AddressRemappingSvc").TypeKeyRenameMaps = [
252 remap
for remap
in oldRemaps
if "Trk::SegmentCollection" not in remap]
254 f =
open(
"MuonReconstruction.pkl",
"wb")
258 from MuonConfig.MuonConfigUtils
import executeTest
266 This config (made for r24.0 in Nov 2024) is used to:
267 1] Switch setup of the segment making in the NSW to loosen constrain on the IP
268 2] Adapt and switch off various criteria in TrackSteering/building to be able to reconstruct track from the non-standards (non-collision background) segments
272 cfg.getEventAlgo(
"MuonSegmentMaker").NSWSegmentMaker.SeedMMStereos=
False
273 cfg.getEventAlgo(
"MuonSegmentMaker").NSWSegmentMaker.IPConstraint=
False
277 cfg.getEventAlgo(
"MuonCreatorAlg").MuonCreatorTool.RequireMSOEforSA=
False
278 cfg.getEventAlgo(
"MuonCreatorAlg").MuonCreatorTool.RequireCaloForSA=
False
280 cfg.getEventAlgo(
"MuonCombinedMuonCandidateAlg").MuonCandidateTool.ExtrapolationStrategy=1
283 cfg.getEventAlgo(
"MuPatTrackBuilder").TrackSteering.SegSeedQCut = -2
284 cfg.getEventAlgo(
"MuPatTrackBuilder").TrackSteering.Seg2ndQCut = -2
285 cfg.getEventAlgo(
"MuPatTrackBuilder").TrackSteering.SegOtherQCut = -2
286 cfg.getEventAlgo(
"MuPatTrackBuilder").TrackSteering.UseTightSegmentMatching =
False
288 cfg.getEventAlgo(
"MuPatTrackBuilder").TrackSteering.TrackBuilderTool.CandidateMatchingTool.DoTrackSegmentMatching =
False
289 cfg.getEventAlgo(
"MuPatTrackBuilder").TrackSteering.MooBuilderTool.CandidateMatchingTool.DoTrackSegmentMatching =
False
290 cfg.getEventAlgo(
"MuPatTrackBuilder").TrackSteering.TrackBuilderTool.CandidateMatchingTool.DoTrackSegmentMatching =
False
292 cfg.getEventAlgo(
"MuPatTrackBuilder").TrackSteering.CandidateMatchingTool.DoTrackSegmentMatching =
False
294 cfg.getEventAlgo(
"MuPatTrackBuilder").TrackSteering.TrackRefinementTool.CandidateMatchingTool.DoTrackSegmentMatching =
False
297 cfg.getEventAlgo(
"MuPatTrackBuilder").TrackSteering.CandidateMatchingTool.SegmentMatchingTool.UseEndcapExtrapolationMatching =
False
298 cfg.getEventAlgo(
"MuPatTrackBuilder").TrackSteering.CandidateMatchingTool.SegmentMatchingTool.doThetaMatching =
False
299 cfg.getEventAlgo(
"MuPatTrackBuilder").TrackSteering.CandidateMatchingTool.SegmentMatchingTool.doPhiMatching =
False
302 cfg.getEventAlgo(
"MuPatTrackBuilder").TrackSteering.TrackBuilderTool.CandidateMatchingTool.SegmentMatchingTool.UseEndcapExtrapolationMatching =
False
303 cfg.getEventAlgo(
"MuPatTrackBuilder").TrackSteering.TrackBuilderTool.CandidateMatchingTool.SegmentMatchingTool.doThetaMatching =
False
304 cfg.getEventAlgo(
"MuPatTrackBuilder").TrackSteering.TrackBuilderTool.CandidateMatchingTool.SegmentMatchingTool.doPhiMatching =
False
306 cfg.getEventAlgo(
"MuPatTrackBuilder").TrackSteering.MooBuilderTool.CandidateMatchingTool.SegmentMatchingTool.UseEndcapExtrapolationMatching =
False
307 cfg.getEventAlgo(
"MuPatTrackBuilder").TrackSteering.MooBuilderTool.CandidateMatchingTool.SegmentMatchingTool.doThetaMatching =
False
308 cfg.getEventAlgo(
"MuPatTrackBuilder").TrackSteering.MooBuilderTool.CandidateMatchingTool.SegmentMatchingTool.doPhiMatching =
False
312 if __name__ ==
"__main__":