12def StandaloneMuonOutputCfg(flags):
13 from OutputStreamAthenaPool.OutputStreamConfig import OutputStreamCfg
14 result = ComponentAccumulator()
15
16
17 from TrkEventCnvTools.TrkEventCnvToolsConfig import (
18 TrkEventCnvSuperToolCfg)
19 result.merge(TrkEventCnvSuperToolCfg(flags))
20
21 aod_items = []
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."]
27
28 aod_items += ["xAOD::MuonSegmentContainer#NCB_MuonSegments"]
29 aod_items += ["xAOD::MuonSegmentAuxContainer#NCB_MuonSegmentsAux."]
30
31 if flags.Muon.scheduleActsReco:
32 aod_items += ["xAOD::MuonSegmentContainer#MuonSegmentsFromR4"]
33 aod_items += ["xAOD::MuonSegmentAuxContainer#MuonSegmentsFromR4Aux.-localSegPars.-parentSegment"]
34
35
36 aod_items += ["xAOD::TrackParticleContainer#MuonSpectrometerTrackParticles"]
37 aod_items += ["xAOD::TrackParticleAuxContainer#MuonSpectrometerTrackParticlesAux."]
38 aod_items += ["xAOD::TrackParticleContainer#MuonSpectrometerOnlyTrackParticles"]
39 aod_items += ["xAOD::TrackParticleAuxContainer#MuonSpectrometerOnlyTrackParticlesAux."]
40
41 aod_items += ["xAOD::TrackParticleContainer#MSonlyTracklets"]
42 aod_items += ["xAOD::TrackParticleAuxContainer#MSonlyTrackletsAux."]
43 aod_items += ["xAOD::VertexContainer#MSDisplacedVertex"]
44 aod_items += ["xAOD::VertexAuxContainer#MSDisplacedVertexAux."]
45
46 if flags.Input.isMC or flags.Overlay.DataOverlay:
47
48 aod_items += ["xAOD::TruthParticleContainer#MuonTruthParticles"]
49 aod_items += ["xAOD::TruthParticleAuxContainer#MuonTruthParticlesAux."]
50
51
52 aod_items += ["xAOD::MuonSegmentContainer#MuonTruthSegments"]
53 aod_items += ["xAOD::MuonSegmentAuxContainer#MuonTruthSegmentsAux.-localSegPars"]
54
55
56 esd_items = []
57 esd_items += aod_items
58
59
60 if flags.Detector.EnableMM:
61 esd_items += ["Muon::MMPrepDataContainer#MM_Measurements"]
62 esd_items += ["xAOD::NSWMMTPRDOContainer#*", "xAOD::NSWMMTPRDOAuxContainer#*"]
63 if flags.Detector.EnablesTGC:
64 esd_items += ["Muon::sTgcPrepDataContainer#STGC_Measurements"]
65 esd_items += ["Muon::NSW_PadTriggerDataContainer#NSW_PadTrigger_RDO"]
66 esd_items += ["xAOD::NSWTPRDOContainer#*", "xAOD::NSWTPRDOAuxContainer#*"]
67
68
69 if flags.Detector.EnableCSC:
70 esd_items += ["Muon::CscPrepDataContainer#CSC_Clusters"]
71 esd_items += ["Muon::CscStripPrepDataContainer#CSC_Measurements"]
72 esd_items += ["Muon::RpcPrepDataContainer#RPC_Measurements"]
73 esd_items += ["Muon::TgcPrepDataContainer#TGC_MeasurementsAllBCs"]
74 esd_items += ["Muon::MdtPrepDataContainer#MDT_DriftCircles"]
75
76 if flags.Muon.writexAODPRD:
77 esd_items += ["xAOD::MdtDriftCircleContainer#xMdtDriftCircles", "xAOD::MdtDriftCircleAuxContainer#xMdtDriftCirclesAux." ]
78 esd_items += ["xAOD::MdtTwinDriftCircleContainer#xMdtTwinDriftCircles", "xAOD::MdtTwinDriftCircleAuxContainer#xMdtTwinDriftCirclesAux." ]
79 esd_items += ["xAOD::sTgcStripContainer#xAODsTgcStrips", "xAOD::sTgcStripAuxContainer#xAODsTgcStripsAux." ]
80 esd_items += ["xAOD::sTgcPadContainer#xAODsTgcPads", "xAOD::sTgcPadAuxContainer#xAODsTgcPadsAux." ]
81 esd_items += ["xAOD::sTgcWireContainer#xAODsTgcWires", "xAOD::sTgcWireAuxContainer#xAODsTgcWiresAux." ]
82 esd_items += ["xAOD::MMClusterContainer#xAODMMClusters", "xAOD::MMClusterAuxContainer#xAODMMClustersAux." ]
83 esd_items += ["xAOD::TgcStripContainer#xTgcStrips", "xAOD::TgcStripAuxContainer#xTgcStripsAux." ]
84 esd_items += ["xAOD::RpcStripContainer#xRpcStrips", "xAOD::RpcStripAuxContainer#xRpcStripsAux." ]
85 esd_items += ["xAOD::RpcStrip2DContainer#xRpcBILStrips", "xAOD::RpcStrip2DAuxContainer#xRpcBILStripsAux." ]
86
87
88
89
90 esd_items += ["Muon::TgcCoinDataContainer#TrigT1CoinDataCollection"]
91 esd_items += ["Muon::TgcCoinDataContainer#TrigT1CoinDataCollectionPriorBC"]
92 esd_items += ["Muon::TgcCoinDataContainer#TrigT1CoinDataCollectionNextBC"]
93 esd_items += ["Muon::TgcCoinDataContainer#TrigT1CoinDataCollectionNextNextBC"]
94 esd_items += ["Muon::RpcCoinDataContainer#RPC_triggerHits"]
95 esd_items += ["RpcSectorLogicContainer#RPC_SECTORLOGIC"]
96
97
98 if flags.Output.doWriteRDO or flags.Muon.doWriteRpcRDO:
99 esd_items += ["RpcPadContainer#RPCPAD"]
100
101
102 esd_items += ["Trk::SegmentCollection#NCB_TrackMuonSegments"]
103
106
107
108 esd_items += ["TrackCollection#MuonSpectrometerTracks"]
109 if flags.Muon.runCommissioningChain:
110 esd_items += ["TrackCollection#EMEO_MuonSpectrometerTracks"]
111 if flags.Detector.EnableMM or flags.Detector.EnablesTGC:
112 esd_items += ["Trk::SegmentCollection#TrackMuonNSWSegments"]
113
114
115 if flags.Input.isMC:
116 esd_items += ["TrackRecordCollection#MuonEntryLayerFilter"]
117 esd_items += ["TrackRecordCollection#MuonExitLayerFilter"]
118
119 esd_items += ["PRD_MultiTruthCollection#MDT_TruthMap",
120 "PRD_MultiTruthCollection#RPC_TruthMap", "PRD_MultiTruthCollection#TGC_TruthMap"]
121 if flags.Detector.EnableCSC:
122 esd_items += ["PRD_MultiTruthCollection#CSC_TruthMap"]
123 if flags.Detector.EnablesTGC:
124 esd_items += ["PRD_MultiTruthCollection#STGC_TruthMap"]
125 if flags.Detector.EnableMM:
126 esd_items += ["PRD_MultiTruthCollection#MM_TruthMap"]
127
128
129 esd_items += ["DetailedTrackTruthCollection#MuonSpectrometerTracksTruth"]
130 esd_items += ["TrackTruthCollection#MuonSpectrometerTracksTruth"]
131
132 if flags.Muon.writeSDOs:
133 if flags.Detector.EnableCSC: esd_items+=["CscSimDataCollection#CSC_SDO"]
134 esd_items+=["MuonSimDataCollection#MDT_SDO"]
135 esd_items+=["MuonSimDataCollection#RPC_SDO"]
136 esd_items+=["MuonSimDataCollection#TGC_SDO"]
137 if flags.Detector.EnablesTGC: esd_items+=["MuonSimDataCollection#sTGC_SDO"]
138 if flags.Detector.EnableMM: esd_items+=["MuonSimDataCollection#MM_SDO"]
139
140 if flags.Muon.writexAODPRD:
141 for item in ["MDT_SDO","RPC_SDO","TGC_SDO","MM_SDO","sTGC_SDO"]:
142 esd_items += [f"xAOD::MuonSimHitContainer#{item}", f"xAOD::MuonSimHitAuxContainer#{item}Aux."]
143
144 if flags.Output.doWriteESD:
145 result.merge(OutputStreamCfg(flags, "ESD", esd_items))
146 if flags.Output.doWriteAOD:
147 result.merge(OutputStreamCfg(flags, "AOD", aod_items))
148 return result
149
150