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."]
51 if flags.Muon.prdToxAOD:
52 aod_items += [
"xAOD::TrackMeasurementValidationContainer#MDT_DriftCircles"]
53 aod_items += [
"xAOD::TrackMeasurementValidationAuxContainer#MDT_DriftCirclesAux."]
54 aod_items += [
"xAOD::TrackMeasurementValidationContainer#RPC_Measurements"]
55 aod_items += [
"xAOD::TrackMeasurementValidationAuxContainer#RPC_MeasurementsAux."]
56 aod_items += [
"xAOD::TrackMeasurementValidationContainer#TGC_MeasurementsAllBCs"]
57 aod_items += [
"xAOD::TrackMeasurementValidationAuxContainer#TGC_MeasurementsAllBCsAux."]
58 if flags.Detector.EnableCSC:
59 aod_items += [
"xAOD::TrackMeasurementValidationContainer#CSC_Clusters"]
60 aod_items += [
"xAOD::TrackMeasurementValidationAuxContainer#CSC_ClustersAux."]
62 if flags.Muon.rpcRawToxAOD:
63 aod_items += [
"xAOD::TrackMeasurementValidationContainer#RPC_RDO_Measurements"]
64 aod_items += [
"xAOD::TrackMeasurementValidationAuxContainer#RPC_RDO_MeasurementsAux."]
68 esd_items += aod_items
71 if flags.Detector.EnableMM:
72 esd_items += [
"Muon::MMPrepDataContainer#MM_Measurements"]
73 esd_items += [
"xAOD::NSWMMTPRDOContainer#*",
"xAOD::NSWMMTPRDOAuxContainer#*"]
74 if flags.Detector.EnablesTGC:
75 esd_items += [
"Muon::sTgcPrepDataContainer#STGC_Measurements"]
76 esd_items += [
"Muon::NSW_PadTriggerDataContainer#NSW_PadTrigger_RDO"]
77 esd_items += [
"xAOD::NSWTPRDOContainer#*",
"xAOD::NSWTPRDOAuxContainer#*"]
80 if flags.Detector.EnableCSC:
81 esd_items += [
"Muon::CscPrepDataContainer#CSC_Clusters"]
82 esd_items += [
"Muon::CscStripPrepDataContainer#CSC_Measurements"]
83 esd_items += [
"Muon::RpcPrepDataContainer#RPC_Measurements"]
84 esd_items += [
"Muon::TgcPrepDataContainer#TGC_MeasurementsAllBCs"]
85 esd_items += [
"Muon::MdtPrepDataContainer#MDT_DriftCircles"]
88 esd_items += [
"Muon::TgcCoinDataContainer#TrigT1CoinDataCollection"]
89 esd_items += [
"Muon::TgcCoinDataContainer#TrigT1CoinDataCollectionPriorBC"]
90 esd_items += [
"Muon::TgcCoinDataContainer#TrigT1CoinDataCollectionNextBC"]
91 esd_items += [
"Muon::TgcCoinDataContainer#TrigT1CoinDataCollectionNextNextBC"]
92 esd_items += [
"Muon::RpcCoinDataContainer#RPC_triggerHits"]
93 esd_items += [
"RpcSectorLogicContainer#RPC_SECTORLOGIC"]
96 if flags.Output.doWriteRDO
or flags.Muon.doWriteRpcRDO:
97 esd_items += [
"RpcPadContainer#RPCPAD"]
100 esd_items += [
"Trk::SegmentCollection#NCB_TrackMuonSegments"]
103 esd_items += [
"TrackCollection#MuonSpectrometerTracks"]
104 if flags.Muon.runCommissioningChain:
105 esd_items += [
"TrackCollection#EMEO_MuonSpectrometerTracks"]
106 if flags.Detector.EnableMM
or flags.Detector.EnablesTGC:
107 esd_items += [
"Trk::SegmentCollection#TrackMuonNSWSegments"]
111 esd_items += [
"TrackRecordCollection#MuonEntryLayerFilter"]
112 esd_items += [
"TrackRecordCollection#MuonExitLayerFilter"]
114 esd_items += [
"PRD_MultiTruthCollection#MDT_TruthMap",
115 "PRD_MultiTruthCollection#RPC_TruthMap",
"PRD_MultiTruthCollection#TGC_TruthMap"]
116 if flags.Detector.EnableCSC:
117 esd_items += [
"PRD_MultiTruthCollection#CSC_TruthMap"]
118 if flags.Detector.EnablesTGC:
119 esd_items += [
"PRD_MultiTruthCollection#STGC_TruthMap"]
120 if flags.Detector.EnableMM:
121 esd_items += [
"PRD_MultiTruthCollection#MM_TruthMap"]
124 esd_items += [
"DetailedTrackTruthCollection#MuonSpectrometerTracksTruth"]
125 esd_items += [
"TrackTruthCollection#MuonSpectrometerTracksTruth"]
127 if flags.Muon.writeSDOs:
128 if flags.Detector.EnableCSC: esd_items+=[
"CscSimDataCollection#CSC_SDO"]
129 esd_items+=[
"MuonSimDataCollection#MDT_SDO"]
130 esd_items+=[
"MuonSimDataCollection#RPC_SDO"]
131 esd_items+=[
"MuonSimDataCollection#TGC_SDO"]
132 if flags.Detector.EnablesTGC: esd_items+=[
"MuonSimDataCollection#sTGC_SDO"]
133 if flags.Detector.EnableMM: esd_items+=[
"MuonSimDataCollection#MM_SDO"]
135 if flags.Output.doWriteESD:
137 if flags.Output.doWriteAOD:
144 from MuonConfig.MuonPrepDataConvConfig
import MuonPrepDataConvCfg
145 from MuonConfig.MuonRecToolsConfig
import MuonTrackScoringToolCfg
146 from MuonConfig.MuonGeometryConfig
import MuonIdHelperSvcCfg
147 from MuonConfig.MuonRecToolsConfig
import MuonEDMHelperSvcCfg
148 from TrkConfig.TrkTrackSummaryToolConfig
import MuonTrackSummaryToolCfg
149 from TrkConfig.AtlasExtrapolatorConfig
import AtlasExtrapolatorCfg
160 if flags.Muon.runCommissioningChain:
162 "MuonStandaloneTrackParticleCnvAlg_EMEO",
163 TrackContainerName=
"EMEO_MuonSpectrometerTracks",
164 xAODTrackParticlesFromTracksContainerName=
"EMEO_MuonSpectrometerTrackParticles"))
170 if "MuonEntryLayerFilter" not in flags.Input.Collections:
171 result.addEventAlgo(CompFactory.TrackRecordFilter())
172 if "MuonExitLayerFilter" not in flags.Input.Collections:
173 result.addEventAlgo(CompFactory.TrackRecordFilter(
"TrackRecordFilterMuonExitLayer",
174 inputName=
"MuonExitLayer",
175 outputName=
"MuonExitLayerFilter"))
178 track_cols = [
"MuonSpectrometerTracks"]
179 track_colstp = [
"MuonSpectrometerTrackParticles"]
180 if flags.Muon.runCommissioningChain:
181 track_cols += [
"EMEO_MuonSpectrometerTracks"]
182 track_colstp += [
"EMEO_MuonSpectrometerTrackParticles"]
184 from MuonConfig.MuonTruthAlgsConfig
import MuonDetailedTrackTruthMakerCfg
186 TrackCollectionNames=track_cols))
188 for i
in range(len(track_cols)):
189 from TrkConfig.TrkTruthAlgsConfig
import TrackTruthSelectorCfg, TrackParticleTruthAlgCfg
193 TrackParticleName=track_colstp[i]))
197 if flags.Muon.makePRDs:
198 from MuonConfig.MuonRdoDecodeConfig
import MuonPRD_MultiTruthMakerCfg
201 from MuonConfig.MuonTruthAlgsConfig
import MuonTruthDecorationAlgCfg
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:
229 if __name__ ==
"__main__":
232 from MuonConfig.MuonConfigUtils
import SetupMuonStandaloneConfigFlags, SetupMuonStandaloneCA
240 from SGComps.AddressRemappingConfig
import InputRenameCfg
242 "MuonSpectrometerTracks",
"MuonSpectrometerTracks_old"))
244 cfg.printConfig(withDetails=
True)
248 oldRemaps = cfg.getService(
"AddressRemappingSvc").TypeKeyRenameMaps
249 cfg.getService(
"AddressRemappingSvc").TypeKeyRenameMaps = [
250 remap
for remap
in oldRemaps
if "Trk::SegmentCollection" not in remap]
252 f =
open(
"MuonReconstruction.pkl",
"wb")
255 if not args.config_only:
257 if not sc.isSuccess():
259 sys.exit(
"Execution failed")