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."]
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#*",
"xAOD::MdtDriftCircleAuxContainer#*" ]
74 esd_items += [
"xAOD::sTgcStripContainer#*",
"xAOD::sTgcStripAuxContainer#*" ]
75 esd_items += [
"xAOD::MMClusterContainer#*",
"xAOD::MMClusterAuxContainer#*" ]
76 esd_items += [
"xAOD::TgcStripContainer#*",
"xAOD::TgcStripAuxContainer#*" ]
77 esd_items += [
"xAOD::RpcStripContainer#*",
"xAOD::RpcStripAuxContainer#*" ]
80 esd_items += [
"Muon::TgcCoinDataContainer#TrigT1CoinDataCollection"]
81 esd_items += [
"Muon::TgcCoinDataContainer#TrigT1CoinDataCollectionPriorBC"]
82 esd_items += [
"Muon::TgcCoinDataContainer#TrigT1CoinDataCollectionNextBC"]
83 esd_items += [
"Muon::TgcCoinDataContainer#TrigT1CoinDataCollectionNextNextBC"]
84 esd_items += [
"Muon::RpcCoinDataContainer#RPC_triggerHits"]
85 esd_items += [
"RpcSectorLogicContainer#RPC_SECTORLOGIC"]
88 if flags.Output.doWriteRDO
or flags.Muon.doWriteRpcRDO:
89 esd_items += [
"RpcPadContainer#RPCPAD"]
92 esd_items += [
"Trk::SegmentCollection#NCB_TrackMuonSegments"]
95 esd_items += [
"TrackCollection#MuonSpectrometerTracks"]
96 if flags.Muon.runCommissioningChain:
97 esd_items += [
"TrackCollection#EMEO_MuonSpectrometerTracks"]
98 if flags.Detector.EnableMM
or flags.Detector.EnablesTGC:
99 esd_items += [
"Trk::SegmentCollection#TrackMuonNSWSegments"]
103 esd_items += [
"TrackRecordCollection#MuonEntryLayerFilter"]
104 esd_items += [
"TrackRecordCollection#MuonExitLayerFilter"]
106 esd_items += [
"PRD_MultiTruthCollection#MDT_TruthMap",
107 "PRD_MultiTruthCollection#RPC_TruthMap",
"PRD_MultiTruthCollection#TGC_TruthMap"]
108 if flags.Detector.EnableCSC:
109 esd_items += [
"PRD_MultiTruthCollection#CSC_TruthMap"]
110 if flags.Detector.EnablesTGC:
111 esd_items += [
"PRD_MultiTruthCollection#STGC_TruthMap"]
112 if flags.Detector.EnableMM:
113 esd_items += [
"PRD_MultiTruthCollection#MM_TruthMap"]
116 esd_items += [
"DetailedTrackTruthCollection#MuonSpectrometerTracksTruth"]
117 esd_items += [
"TrackTruthCollection#MuonSpectrometerTracksTruth"]
119 if flags.Muon.writeSDOs:
120 if flags.Detector.EnableCSC: esd_items+=[
"CscSimDataCollection#CSC_SDO"]
121 esd_items+=[
"MuonSimDataCollection#MDT_SDO"]
122 esd_items+=[
"MuonSimDataCollection#RPC_SDO"]
123 esd_items+=[
"MuonSimDataCollection#TGC_SDO"]
124 if flags.Detector.EnablesTGC: esd_items+=[
"MuonSimDataCollection#sTGC_SDO"]
125 if flags.Detector.EnableMM: esd_items+=[
"MuonSimDataCollection#MM_SDO"]
127 if flags.Output.doWriteESD:
129 if flags.Output.doWriteAOD:
136 from MuonConfig.MuonPrepDataConvConfig
import MuonPrepDataConvCfg
137 from MuonConfig.MuonRecToolsConfig
import MuonTrackScoringToolCfg
138 from MuonConfig.MuonGeometryConfig
import MuonIdHelperSvcCfg
139 from MuonConfig.MuonRecToolsConfig
import MuonEDMHelperSvcCfg
140 from TrkConfig.TrkTrackSummaryToolConfig
import MuonTrackSummaryToolCfg
141 from TrkConfig.AtlasExtrapolatorConfig
import AtlasExtrapolatorCfg
152 if flags.Muon.runCommissioningChain:
154 "MuonStandaloneTrackParticleCnvAlg_EMEO",
155 TrackContainerName=
"EMEO_MuonSpectrometerTracks",
156 xAODTrackParticlesFromTracksContainerName=
"EMEO_MuonSpectrometerTrackParticles"))
162 if "MuonEntryLayerFilter" not in flags.Input.Collections:
163 result.addEventAlgo(CompFactory.TrackRecordFilter())
164 if "MuonExitLayerFilter" not in flags.Input.Collections:
165 result.addEventAlgo(CompFactory.TrackRecordFilter(
"TrackRecordFilterMuonExitLayer",
166 inputName=
"MuonExitLayer",
167 outputName=
"MuonExitLayerFilter"))
170 track_cols = [
"MuonSpectrometerTracks"]
171 track_colstp = [
"MuonSpectrometerTrackParticles"]
172 if flags.Muon.runCommissioningChain:
173 track_cols += [
"EMEO_MuonSpectrometerTracks"]
174 track_colstp += [
"EMEO_MuonSpectrometerTrackParticles"]
176 from MuonConfig.MuonTruthAlgsConfig
import MuonDetailedTrackTruthMakerCfg
178 TrackCollectionNames=track_cols))
180 for i
in range(len(track_cols)):
181 from TrkConfig.TrkTruthAlgsConfig
import TrackTruthSelectorCfg, TrackParticleTruthAlgCfg
185 TrackParticleName=track_colstp[i]))
189 if flags.Muon.makePRDs
and flags.Input.isMC:
190 if not flags.Muon.usePhaseIIGeoSetup:
191 from MuonConfig.MuonRdoDecodeConfig
import MuonPRD_MultiTruthMakerCfg
193 from MuonConfig.MuonTruthAlgsConfig
import TruthMuonMakerAlgCfg
195 from MuonConfig.MuonTruthAlgsConfig
import MuonTruthAddTrackRecordsAlgCfg
197 from MuonConfig.MuonTruthAlgsConfig
import MuonTruthHitCountsAlgCfg
199 from MuonConfig.MuonTruthAlgsConfig
import MuonTruthSegmentCreationAlgCfg
202 from MuonTruthAlgsR4.MuonTruthAlgsConfig
import MuonTruthAlgsCfg
205 if flags.Muon.doMSVertex:
206 msvertexrecotool = CompFactory.Muon.MSVertexRecoTool(
207 MyExtrapolator=result.popToolsAndMerge(
209 TGCKey=
'TGC_MeasurementsAllBCs' if not flags.Muon.useTGCPriorNextBC
else 'TGC_Measurements')
210 the_alg = CompFactory.MSVertexRecoAlg(
211 name=
"MSVertexRecoAlg", MSVertexRecoTool=msvertexrecotool)
213 result.addEventAlgo(the_alg)
218 result.addPublicTool(result.popToolsAndMerge(
221 result.addPublicTool(result.popToolsAndMerge(
225 if flags.Output.doWriteESD
or flags.Output.doWriteAOD:
233 from MuonConfig.MuonConfigUtils
import SetupMuonStandaloneConfigFlags
238 raise RuntimeError(
"MuonReconstructionConfigTest requires flags.fillFromArgs() to be run before flags.lock()")
240 from MuonConfig.MuonConfigUtils
import SetupMuonStandaloneCA
247 from SGComps.AddressRemappingConfig
import InputRenameCfg
249 "MuonSpectrometerTracks",
"MuonSpectrometerTracks_old"))
251 cfg.printConfig(withDetails=
True)
255 oldRemaps = cfg.getService(
"AddressRemappingSvc").TypeKeyRenameMaps
256 cfg.getService(
"AddressRemappingSvc").TypeKeyRenameMaps = [
257 remap
for remap
in oldRemaps
if "Trk::SegmentCollection" not in remap]
259 f =
open(
"MuonReconstruction.pkl",
"wb")
267 if not sc.isSuccess():
269 sys.exit(
"Execution failed")
275 This config (made for r24.0 in Nov 2024) is used to:
276 1] Switch setup of the segment making in the NSW to loosen constrain on the IP
277 2] Adapt and switch off various criteria in TrackSteering/building to be able to reconstruct track from the non-standards (non-collision background) segments
281 cfg.getEventAlgo(
"MuonSegmentMaker").NSWSegmentMaker.SeedMMStereos=
False
282 cfg.getEventAlgo(
"MuonSegmentMaker").NSWSegmentMaker.IPConstraint=
False
286 cfg.getEventAlgo(
"MuonCreatorAlg").MuonCreatorTool.RequireMSOEforSA=
False
287 cfg.getEventAlgo(
"MuonCreatorAlg").MuonCreatorTool.RequireCaloForSA=
False
289 cfg.getEventAlgo(
"MuonCombinedMuonCandidateAlg").MuonCandidateTool.ExtrapolationStrategy=1
292 cfg.getEventAlgo(
"MuPatTrackBuilder").TrackSteering.SegSeedQCut = -2
293 cfg.getEventAlgo(
"MuPatTrackBuilder").TrackSteering.Seg2ndQCut = -2
294 cfg.getEventAlgo(
"MuPatTrackBuilder").TrackSteering.SegOtherQCut = -2
295 cfg.getEventAlgo(
"MuPatTrackBuilder").TrackSteering.UseTightSegmentMatching =
False
297 cfg.getEventAlgo(
"MuPatTrackBuilder").TrackSteering.TrackBuilderTool.CandidateMatchingTool.DoTrackSegmentMatching =
False
298 cfg.getEventAlgo(
"MuPatTrackBuilder").TrackSteering.MooBuilderTool.CandidateMatchingTool.DoTrackSegmentMatching =
False
299 cfg.getEventAlgo(
"MuPatTrackBuilder").TrackSteering.TrackBuilderTool.CandidateMatchingTool.DoTrackSegmentMatching =
False
301 cfg.getEventAlgo(
"MuPatTrackBuilder").TrackSteering.CandidateMatchingTool.DoTrackSegmentMatching =
False
303 cfg.getEventAlgo(
"MuPatTrackBuilder").TrackSteering.TrackRefinementTool.CandidateMatchingTool.DoTrackSegmentMatching =
False
306 cfg.getEventAlgo(
"MuPatTrackBuilder").TrackSteering.CandidateMatchingTool.SegmentMatchingTool.UseEndcapExtrapolationMatching =
False
307 cfg.getEventAlgo(
"MuPatTrackBuilder").TrackSteering.CandidateMatchingTool.SegmentMatchingTool.doThetaMatching =
False
308 cfg.getEventAlgo(
"MuPatTrackBuilder").TrackSteering.CandidateMatchingTool.SegmentMatchingTool.doPhiMatching =
False
311 cfg.getEventAlgo(
"MuPatTrackBuilder").TrackSteering.TrackBuilderTool.CandidateMatchingTool.SegmentMatchingTool.UseEndcapExtrapolationMatching =
False
312 cfg.getEventAlgo(
"MuPatTrackBuilder").TrackSteering.TrackBuilderTool.CandidateMatchingTool.SegmentMatchingTool.doThetaMatching =
False
313 cfg.getEventAlgo(
"MuPatTrackBuilder").TrackSteering.TrackBuilderTool.CandidateMatchingTool.SegmentMatchingTool.doPhiMatching =
False
315 cfg.getEventAlgo(
"MuPatTrackBuilder").TrackSteering.MooBuilderTool.CandidateMatchingTool.SegmentMatchingTool.UseEndcapExtrapolationMatching =
False
316 cfg.getEventAlgo(
"MuPatTrackBuilder").TrackSteering.MooBuilderTool.CandidateMatchingTool.SegmentMatchingTool.doThetaMatching =
False
317 cfg.getEventAlgo(
"MuPatTrackBuilder").TrackSteering.MooBuilderTool.CandidateMatchingTool.SegmentMatchingTool.doPhiMatching =
False
321 if __name__ ==
"__main__":