24 from OutputStreamAthenaPool.OutputStreamConfig
import OutputStreamCfg
25 result = ComponentAccumulator()
30 if flags.Input.isMC
or flags.Overlay.DataOverlay:
32 aod_items += [
"xAOD::TruthParticleContainer#MuonTruthParticles"]
33 aod_items += [
"xAOD::TruthParticleAuxContainer#MuonTruthParticlesAux."]
36 aod_items += [
"xAOD::MuonSegmentContainer#MuonTruthSegments"]
37 aod_items += [
"xAOD::MuonSegmentAuxContainer#MuonTruthSegmentsAux.-localSegPars"]
39 from AthenaConfiguration.Enums
import Format
40 if (flags.Input.isMC
or flags.Overlay.DataOverlay)
and flags.Input.Format!=Format.BS:
42 if "MuonEntryLayerFilter" not in flags.Input.Collections
and \
43 (
"MuonEntryLayer" in flags.Input.Collections):
44 result.addEventAlgo(CompFactory.TrackRecordFilter())
45 if "MuonExitLayerFilter" not in flags.Input.Collections
and \
46 (
"MuonExitLayer" in flags.Input.Collections):
47 result.addEventAlgo(CompFactory.TrackRecordFilter(
"TrackRecordFilterMuonExitLayer",
48 inputName=
"MuonExitLayer",
49 outputName=
"MuonExitLayerFilter"))
51 esd_items += [
"TrackRecordCollection#MuonEntryLayerFilter"]
52 esd_items += [
"TrackRecordCollection#MuonExitLayerFilter"]
56 if flags.Muon.writeSDOs:
57 for item
in [
"MDT_SDO",
"RPC_SDO",
"TGC_SDO",
"MM_SDO",
"sTGC_SDO"]:
58 esd_items += [f
"xAOD::MuonSimHitContainer#{item}", f
"xAOD::MuonSimHitAuxContainer#{item}Aux."]
62 exclude = [
"",
"mdtTrkPrdLink",
"rpcTrkPrdLink",
"tgcTrkPrdLink",
"segmentFitDriftSign"]
63 contList = [(
"MdtDriftCircle",
"xMdtDriftCircles"),
64 (
"MdtTwinDriftCircle",
"xMdtTwinDriftCircles"),
65 (
"sTgcStrip",
"xAODsTgcStrips"),
66 (
"sTgcPad",
"xAODsTgcPads"),
67 (
"sTgcWire",
"xAODsTgcWires"),
68 (
"MMCluster",
"xAODMMClusters"),
69 (
"TgcStrip",
"xTgcStrips"),
70 (
"CombinedMuonStrip",
"CombinedMuonPrds")]
72 from AthenaConfiguration.Enums
import LHCPeriod
73 if flags.GeoModel.Run >= LHCPeriod.Run4:
74 contList += [ (
"RpcStrip",
"xRpcStrips" ), (
"RpcStrip2D",
"xRpcBILStrips") ]
76 contList += [(
"RpcStrip",
"xRpcMeasurements")]
78 for cont_t, cont_name
in contList:
79 esd_items+=[f
"xAOD::{cont_t}Container#{cont_name}",
80 "xAOD::{cont_t}AuxContainer#{cont_name}Aux{exclude}".format(
81 cont_t = cont_t,cont_name = cont_name,
82 exclude =
".-".join(exclude))]
85 aod_items += [
"xAOD::MuonSegmentContainer#MsSegments"]
86 aod_items += [
"xAOD::MuonSegmentAuxContainer#MsSegmentsAux.-localSegPars.-parentSegment.-localSegCov"]
89 for trk
in [
"MuonMsAtIpTrackParticles",
"MuonMsTrackParticles",
"MuonSTACOTrackParticles"]:
90 aod_items += [f
"xAOD::TrackParticleContainer#{trk}",
91 f
"xAOD::TrackParticleAuxContainer#{trk}Aux."]
93 if flags.Output.doWriteESD:
94 from ActsConfig.ActsEventCnvConfig
import ActsToXAODTrackConverterAlgCfg
95 result.merge(ActsToXAODTrackConverterAlgCfg(flags, name =
"MsTracksToXAODTrackConverterAlg",
96 InputActsTracksLocation =
"MuonMsTracks",
97 OutputActsTracksLocation=
"MuonMsTracks"))
99 if flags.Muon.buildMETrack:
100 result.merge(ActsToXAODTrackConverterAlgCfg(flags, name =
"MsAtIpTracksToXAODTrackConverterAlg",
101 InputActsTracksLocation =
"MuonMsAtIpTracks",
102 OutputActsTracksLocation=
"MuonMsAtIpTracks"))
105 aod_items += [
"xAOD::MuonContainer#Muons"]
106 aod_items += [
"xAOD::MuonAuxContainerR4#MuonsAux."]
108 aod_items += [
"xAOD::MuonContainer#MuonsLRT"]
109 aod_items += [
"xAOD::MuonAuxContainerR4#MuonsLRTAux."]
111 esd_items += aod_items
113 if flags.Output.doWriteESD:
114 result.merge(OutputStreamCfg(flags,
"ESD", esd_items))
115 if flags.Output.doWriteAOD:
116 result.merge(OutputStreamCfg(flags,
"AOD", aod_items))
121 result = ComponentAccumulator()
123 from MuonTrackFindingAlgs.TrackFindingConfig
import MuonActsToTrkConvCfg
124 result.merge(MuonActsToTrkConvCfg(flags))
127 from MuonCombinedConfig.MuonCombinedReconstructionConfig
import MuonCombinedMuonCandidateAlgCfg
128 result.merge(MuonCombinedMuonCandidateAlgCfg(flags,
129 name=
"MuonMSOECandidateAlgR4",
130 MuonSpectrometerTrackParticleLocation=
"MuonMsTrackParticles",
131 MuonCandidateLocation=
"MuonCandidatesR4",
132 MSOnlyExtrapolatedTrackLocation=
"MSOETrksR4"))
135 from MuonCombinedConfig.MuonCombinedReconstructionConfig
import MuonCreatorAlgCfg
136 result.merge(MuonCreatorAlgCfg(flags,
137 name=
"MuonCreatorAlgR4",
139 CreateSAmuons =
True,
141 MuonContainerLocation=
"MuonsR4",
142 MSOnlyExtrapolatedTrackLocation=
"MSOETrackParticlesR4",
143 MSOnlyExtrapolatedLocation=
"MSOEMuonTrackParticlesR4",
144 MuonCandidateLocation=[
"MuonCandidatesR4"],
145 ClusterContainerName=
""))
149 result = ComponentAccumulator()
151 MuonTags = [
"MuonTagsSA"]
153 from MuonCombinedAlgsR4.MuonCombinedAlgsConfigR4
import MuonInDetTrackSelectionAlgCfg, \
154 MuonSegmentTaggingAlgCfg, \
155 BeamSpotPreparatorAlgCfg, \
156 MuonLegacyCaloTagAlgCfg, \
157 MuonCombinedStacoAlgCfg, \
158 MuonCombinedFitAlgCfg, \
159 MuidSaTagMakerAlgCfg, \
161 if flags.Reco.EnableTracking:
162 if flags.Muon.buildMETrack: result.merge(BeamSpotPreparatorAlgCfg(flags))
163 result.merge(MuonInDetTrackSelectionAlgCfg(flags))
164 result.merge(MuonSegmentTaggingAlgCfg(flags))
165 MuonTags+= [
"SegmentTags"]
166 result.merge(MuonCombinedStacoAlgCfg(flags))
167 MuonTags+=[
"MuonTagsSTACO"]
168 result.merge(MuonCombinedFitAlgCfg(flags))
169 MuonTags+=[
"MuonTagsMuidCo"]
170 if flags.MuonCombined.doCaloTrkMuId:
171 result.merge(MuonLegacyCaloTagAlgCfg(flags))
172 MuonTags+=[
"LegacyCaloTags"]
174 result.merge(MuidSaTagMakerAlgCfg(flags,
175 CombinedTags=
"MuonTagsSTACO" if flags.Reco.EnableTracking
else ""))
177 if flags.Muon.buildMETrack:
178 from MuonTrackFindingAlgs.TrackFindingConfig
import TrackSummaryLockCfg
179 result.merge(TrackSummaryLockCfg(flags, inContainer=
"MuonMsAtIpTrackParticles"))
182 result.merge(MuonCreatorAlgCfg(flags, name =
"MuonActsCreatorAlg",
187 result = ComponentAccumulator()
188 if not flags.Reco.EnableTracking
or not flags.Acts.doLargeRadius:
192 from MuonCombinedAlgsR4.MuonCombinedAlgsConfigR4
import LRT_MuonInDetTrackSelectionAlgCfg, \
193 LRT_MuonCombinedStacoAlgCfg, \
194 LRT_MuonLegacyCaloTagAlgCfg, \
195 LRT_MuonSegmentTaggingAlgCfg, \
196 LRT_MuonCombinedFitAlgCfg, \
198 from ActsConfig.CaloExtensionBuilderConfig
import ActsCaloExtensionBuilderCfg
200 result.merge(ActsCaloExtensionBuilderCfg(flags, name=
"ActsCaloExtensionBuilderLRT",TrackParticleContainerName=
"InDetLargeD0TrackParticles", CaloExtensionName=
"CaloExtensionLRT"))
201 result.merge(LRT_MuonInDetTrackSelectionAlgCfg(flags))
203 result.merge(LRT_MuonSegmentTaggingAlgCfg(flags))
204 MuonTags+= [
"SegmentTagsLRT"]
206 result.merge(LRT_MuonCombinedStacoAlgCfg(flags))
207 MuonTags+=[
"MuonTagsSTACOLRT"]
209 result.merge(LRT_MuonCombinedFitAlgCfg(flags))
210 MuonTags+=[
"MuonTagsMuidCoLRT"]
213 if flags.MuonCombined.doCaloTrkMuId:
214 result.merge(LRT_MuonLegacyCaloTagAlgCfg(flags))
215 MuonTags+=[
"LegacyCaloTagsLRT"]
217 result.merge(MuonCreatorAlgCfg(flags, name =
"MuonActsCreatorAlg_LRT",
218 TagKeys=MuonTags, MuonKey=
"MuonsLRT"))
223 result = ComponentAccumulator()
224 if not flags.Input.isMC:
227 from MuonTruthAlgsR4.MuonTruthAlgsConfig
import MuonTruthAlgsCfg
228 result.merge(MuonTruthAlgsCfg(flags))
230 from MuonTruthAlgsR4.MuonTruthAlgsConfig
import MuonActsTruthMatchingCfg, MuonToTruthAssocAlgCfg
231 tracks = [
"MuonMsTrackParticles"]
232 result.merge(MuonActsTruthMatchingCfg(flags, TrackContainer=
"MuonMsTracks",
233 ParticleContainer=
"MuonMsTrackParticles"))
234 if flags.Muon.buildMETrack:
235 tracks+=[
"MuonMsAtIpTrackParticles"]
236 result.merge(MuonActsTruthMatchingCfg(flags, TrackContainer=
"MuonMsAtIpTracks",
237 ParticleContainer=
"MuonMsAtIpTrackParticles"))
239 if flags.Reco.EnableTracking:
240 tracks+=[
"MuonCmbTrackParticles",
"InDetTrackParticles"]
241 result.merge(MuonActsTruthMatchingCfg(flags, TrackContainer=
"MuonCmbTracks",
242 ParticleContainer=
"MuonCmbTrackParticles",
244 if flags.Muon.buildMETrack:
245 tracks+=[
"MuonMeTrackParticles"]
246 result.merge(MuonActsTruthMatchingCfg(flags, TrackContainer=
"MuonMeTracks",
247 ParticleContainer=
"MuonMeTrackParticles"))
248 if flags.Acts.doLargeRadius:
249 tracks+=[
"MuonCmbTrackParticlesLRT"]
250 result.merge(MuonActsTruthMatchingCfg(flags, TrackContainer=
"MuonCmbTracksLRT",
251 ParticleContainer=
"MuonCmbTrackParticlesLRT",
253 if flags.Muon.buildMETrack:
254 tracks+=[
"MuonMeTrackParticlesLRT"]
255 result.merge(MuonActsTruthMatchingCfg(flags, TrackContainer=
"MuonMeTracksLRT",
256 ParticleContainer=
"MuonMeTrackParticlesLRT"))
258 result.merge(MuonToTruthAssocAlgCfg(flags, TrackKeys = tracks))
259 if flags.Acts.doLargeRadius
and flags.Reco.EnableTracking:
260 result.merge(MuonToTruthAssocAlgCfg(flags, name =
"MuonToTruthAssocAlgLRT",
261 TrackKeys= tracks, MuonKey=
"MuonsLRT"))
266 result = ComponentAccumulator()
270 from MuonConfig.MuonDataPrepConfig
import xAODUncalibMeasPrepCfg
271 result.merge(xAODUncalibMeasPrepCfg(flags))
274 from MuonSpacePointFormation.SpacePointFormationConfig
import MuonSpacePointFormationCfg
275 result.merge(MuonSpacePointFormationCfg(flags))
278 from MuonPatternRecognitionAlgs.MuonPatternRecognitionConfig
import MuonPatternRecognitionCfg
279 result.merge(MuonPatternRecognitionCfg(flags))
282 from MuonTrackFindingAlgs.TrackFindingConfig
import MSTrackFinderAlgCfg, \
283 StandaloneTrackPartCnvCfg
284 result.merge(MSTrackFinderAlgCfg(flags))
287 result.merge(StandaloneTrackPartCnvCfg(flags))
289 if flags.Muon.scheduleLegacyReco:
293 if flags.Acts.doLargeRadius:
296 if flags.Output.doWriteAOD
or flags.Output.doWriteESD: