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
104
105 esd_items += ["TrackCollection#MuonSpectrometerTracks"]
106 if flags.Muon.runCommissioningChain:
107 esd_items += ["TrackCollection#EMEO_MuonSpectrometerTracks"]
108 if flags.Detector.EnableMM or flags.Detector.EnablesTGC:
109 esd_items += ["Trk::SegmentCollection#TrackMuonNSWSegments"]
110
111
112 if flags.Input.isMC:
113 esd_items += ["TrackRecordCollection#MuonEntryLayerFilter"]
114 esd_items += ["TrackRecordCollection#MuonExitLayerFilter"]
115
116 esd_items += ["PRD_MultiTruthCollection#MDT_TruthMap",
117 "PRD_MultiTruthCollection#RPC_TruthMap", "PRD_MultiTruthCollection#TGC_TruthMap"]
118 if flags.Detector.EnableCSC:
119 esd_items += ["PRD_MultiTruthCollection#CSC_TruthMap"]
120 if flags.Detector.EnablesTGC:
121 esd_items += ["PRD_MultiTruthCollection#STGC_TruthMap"]
122 if flags.Detector.EnableMM:
123 esd_items += ["PRD_MultiTruthCollection#MM_TruthMap"]
124
125
126 esd_items += ["DetailedTrackTruthCollection#MuonSpectrometerTracksTruth"]
127 esd_items += ["TrackTruthCollection#MuonSpectrometerTracksTruth"]
128
129 if flags.Muon.writeSDOs:
130 if flags.Detector.EnableCSC: esd_items+=["CscSimDataCollection#CSC_SDO"]
131 esd_items+=["MuonSimDataCollection#MDT_SDO"]
132 esd_items+=["MuonSimDataCollection#RPC_SDO"]
133 esd_items+=["MuonSimDataCollection#TGC_SDO"]
134 if flags.Detector.EnablesTGC: esd_items+=["MuonSimDataCollection#sTGC_SDO"]
135 if flags.Detector.EnableMM: esd_items+=["MuonSimDataCollection#MM_SDO"]
136
137 if flags.Muon.writexAODPRD:
138 for item in ["MDT_SDO","RPC_SDO","TGC_SDO","MM_SDO","sTGC_SDO"]:
139 esd_items += [f"xAOD::MuonSimHitContainer#{item}", f"xAOD::MuonSimHitAuxContainer#{item}Aux."]
140
141 if flags.Output.doWriteESD:
142 result.merge(OutputStreamCfg(flags, "ESD", esd_items))
143 if flags.Output.doWriteAOD:
144 result.merge(OutputStreamCfg(flags, "AOD", aod_items))
145 return result
146
147