From 836646272bae90ba33b8544b44491b6538a4104e Mon Sep 17 00:00:00 2001 From: Savanna Marie Shaw <savanna.marie.shaw@cern.ch> Date: Thu, 30 Jul 2020 13:23:02 +0200 Subject: [PATCH] Add muon candidate and muon creator algs to trigger new JO test Adding the building of muoncandidates and xAOD muons for the SA part of the muon trigger in the new JO test. In principle this lets us run ms-only type chains in the new configuration (or will once I add a sensible hypo in the future). - Made some changes in the configuration to various tools for trigger running - Added configuration for alg to convert MS tracks to xADO trackParticles (temporarily in trigger config) - Updated trigger configuration to call muon candidate and creator algs Part of the migration in ATR-20388 --- .../python/MuonCombinedRecToolsConfig.py | 83 ++++++++++++------- .../MuonCombinedReconstructionConfig.py | 10 ++- .../python/HLTMenuConfig/Muon/generateMuon.py | 74 +++++++++++++++-- 3 files changed, 130 insertions(+), 37 deletions(-) diff --git a/Reconstruction/MuonIdentification/MuonCombinedConfig/python/MuonCombinedRecToolsConfig.py b/Reconstruction/MuonIdentification/MuonCombinedConfig/python/MuonCombinedRecToolsConfig.py index a6c669de7e7e..59c3ca655269 100644 --- a/Reconstruction/MuonIdentification/MuonCombinedConfig/python/MuonCombinedRecToolsConfig.py +++ b/Reconstruction/MuonIdentification/MuonCombinedConfig/python/MuonCombinedRecToolsConfig.py @@ -112,12 +112,15 @@ def MuonCombinedInDetDetailedTrackSelectorToolCfg(flags, name="MuonCombinedInDet def MuonCombinedParticleCreatorCfg(flags, name="MuonCombinedParticleCreator",**kwargs): - # FIXME - not sure how to handle the trigger bit below (from the old configuration) - # if TriggerFlags.MuonSlice.doTrigMuonConfig: - # kwargs.setdefault("TrackSummaryTool" , getPublicTool("MuonTrackSummaryTool") ) - - result = MuonCombinedTrackSummaryToolCfg(flags) - kwargs.setdefault("TrackSummaryTool", result.getPrimary() ) + result = ComponentAccumulator() + if flags.Muon.MuonTrigger: + from MuonConfig.MuonRecToolsConfig import MuonTrackSummaryToolCfg + acc = MuonTrackSummaryToolCfg(flags) + kwargs.setdefault("TrackSummaryTool", acc.popPrivateTools()) + result.merge(acc) + else: + acc = MuonCombinedTrackSummaryToolCfg(flags) + kwargs.setdefault("TrackSummaryTool", acc.getPrimary() ) acc = AtlasExtrapolatorCfg(flags) kwargs.setdefault("Extrapolator", acc.getPrimary() ) @@ -176,10 +179,16 @@ def MuonMaterialProviderToolCfg(flags, name = "MuonMaterialProviderTool"): result.addPublicTool(atlas_extrapolator) kwargs = dict() kwargs["Extrapolator"] = atlas_extrapolator - acc = MuonCombinedTrackSummaryToolCfg(flags) - muon_combined_track_summary_tool = acc.popPrivateTools() - result.merge(acc) - kwargs["TrackSummaryTool"] = muon_combined_track_summary_tool + if flags.Muon.SAMuonTrigger: + from MuonConfig.MuonRecToolsConfig import MuonTrackSummaryToolCfg + acc = MuonTrackSummaryToolCfg(flags) + kwargs.setdefault("TrackSummaryTool", acc.popPrivateTools()) + result.merge(acc) + else: + acc = MuonCombinedTrackSummaryToolCfg(flags) + muon_combined_track_summary_tool = acc.popPrivateTools() + result.merge(acc) + kwargs["TrackSummaryTool"] = muon_combined_track_summary_tool kwargs["KeepAllPerigee"] = True kwargs["PerigeeExpression"] = "Origin" track_particle_creator = CompFactory.Trk.TrackParticleCreatorTool(name="MuonCaloParticleCreator",**kwargs) @@ -203,11 +212,13 @@ def MuonCreatorToolCfg(flags, name="MuonCreatorTool", **kwargs): from TrackToCalo.TrackToCaloConfig import ParticleCaloExtensionToolCfg result = MuonMaterialProviderToolCfg(flags) kwargs.setdefault( "CaloMaterialProvider", result.getPrimary() ) - # if TriggerFlags.MuonSlice.doTrigMuonConfig: - # kwargs.setdefault('MakeTrackAtMSLink',True) - # kwargs.setdefault("FillTimingInformation",False) - # kwargs.setdefault("MuonSelectionTool", "") - # else: + if flags.Muon.MuonTrigger: + kwargs.setdefault('MakeTrackAtMSLink',True) + kwargs.setdefault("FillTimingInformation",False) + kwargs.setdefault("MuonSelectionTool", "") + kwargs.setdefault("UseCaloCells", False) + kwargs.setdefault("TrackSegmentAssociationTool", "") + acc = MuonCombinedParticleCreatorCfg(flags) kwargs.setdefault("TrackParticleCreator", acc.getPrimary() ) result.merge(acc) @@ -228,8 +239,13 @@ def MuonCreatorToolCfg(flags, name="MuonCreatorTool", **kwargs): def ExtrapolateMuonToIPToolCfg(flags, name="ExtrapolateMuonToIPTool", **kwargs): #FIXME complete this configuration - result = MuonCombinedTrackSummaryToolCfg(flags) - kwargs.setdefault("TrackSummaryTool", result.popPrivateTools() ) + if flags.Muon.MuonTrigger: + from MuonConfig.MuonRecToolsConfig import MuonTrackSummaryToolCfg + result = MuonTrackSummaryToolCfg(flags) + kwargs.setdefault("TrackSummaryTool", result.popPrivateTools()) + else: + result = MuonCombinedTrackSummaryToolCfg(flags) + kwargs.setdefault("TrackSummaryTool", result.popPrivateTools() ) result.setPrivateTools(CompFactory.ExtrapolateMuonToIPTool(name,**kwargs)) return result @@ -240,13 +256,17 @@ def MuonCandidateToolCfg(flags, name="MuonCandidateTool",**kwargs): result = CombinedMuonTrackBuilderCfg(flags, name="CombinedMuonTrackBuilder") kwargs.setdefault("TrackBuilder", result.popPrivateTools() ) -# Why was this dependent on cosmics? will now always create this -# if flags.Beam.Type=="cosmics": - acc = ExtrapolateMuonToIPToolCfg(flags) - extrapolator = acc.popPrivateTools() - result.addPublicTool(extrapolator) - kwargs.setdefault("TrackExtrapolationTool", extrapolator ) - result.merge(acc) + # Why was this dependent on cosmics? will now always create this + # if flags.Beam.Type=="cosmics": + if flags.Muon.MuonTrigger and flags.Beam.Type!="cosmics": + #trigger definitely only uses the ExtrapolateToIPtool in cosmics mode + kwargs.setdefault("TrackExtrapolationTool", "") + else: + acc = ExtrapolateMuonToIPToolCfg(flags) + extrapolator = acc.popPrivateTools() + result.addPublicTool(extrapolator) + kwargs.setdefault("TrackExtrapolationTool", extrapolator ) + result.merge(acc) # if cosmics was until here acc = MuonAmbiProcessorCfg(flags) @@ -346,11 +366,16 @@ def iPatFitterCfg(flags, name='iPatFitter', **kwargs): kwargs.setdefault("FullCombinedFit", True ) result = MuidMaterialAllocatorCfg(flags) kwargs.setdefault("MaterialAllocator",result.popPrivateTools() ) - # if TriggerFlags.MuonSlice.doTrigMuonConfig: - # kwargs.setdefault("MaxIterations", 15) - acc = MuonCombinedTrackSummaryToolCfg(flags) - kwargs.setdefault("TrackSummaryTool", acc.getPrimary() ) - result.merge(acc) + if flags.Muon.MuonTrigger: + kwargs.setdefault("MaxIterations", 15) + from MuonConfig.MuonRecToolsConfig import MuonTrackSummaryToolCfg + acc = MuonTrackSummaryToolCfg(flags) + kwargs.setdefault("TrackSummaryTool", acc.popPrivateTools()) + result.merge(acc) + else: + acc = MuonCombinedTrackSummaryToolCfg(flags) + kwargs.setdefault("TrackSummaryTool", acc.getPrimary() ) + result.merge(acc) tool = CompFactory.Trk.iPatFitter(name,**kwargs) result.setPrivateTools(tool) diff --git a/Reconstruction/MuonIdentification/MuonCombinedConfig/python/MuonCombinedReconstructionConfig.py b/Reconstruction/MuonIdentification/MuonCombinedConfig/python/MuonCombinedReconstructionConfig.py index 4533997e0466..f95b8b148d19 100644 --- a/Reconstruction/MuonIdentification/MuonCombinedConfig/python/MuonCombinedReconstructionConfig.py +++ b/Reconstruction/MuonIdentification/MuonCombinedConfig/python/MuonCombinedReconstructionConfig.py @@ -232,9 +232,13 @@ def MuonCreatorAlgCfg( flags, name="MuonCreatorAlg",**kwargs ): # but don't set this default in case the StauCreatorAlg is created (see below) if not flags.MuonCombined.doMuGirl and not name=="StauCreatorAlg": kwargs.setdefault("TagMaps",["muidcoTagMap","stacoTagMap","caloTagMap","segmentTagMap"]) - # if TriggerFlags.MuonSlice.doTrigMuonConfig: - # kwargs.setdefault("MakeClusters", False) - # kwargs.setdefault("ClusterContainerName", "") + if flags.Muon.MuonTrigger: + kwargs.setdefault("MakeClusters", False) + kwargs.setdefault("ClusterContainerName", "") + if flags.Muon.SAMuonTrigger: + kwargs.setdefault("CreateSAmuons", True) + kwargs.setdefault("TagMaps", []) + alg = CompFactory.MuonCreatorAlg(name,**kwargs) result.addEventAlgo( alg, primary=True ) return result diff --git a/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Muon/generateMuon.py b/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Muon/generateMuon.py index e3b0f4093020..9c0fc82c8dea 100644 --- a/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Muon/generateMuon.py +++ b/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Muon/generateMuon.py @@ -25,7 +25,9 @@ def EFMuonViewDataVerifierCfg(): ( 'Muon::TgcPrepDataContainer' , 'StoreGateSvc+TGC_Measurements' ), ( 'Muon::RpcPrepDataContainer' , 'StoreGateSvc+RPC_Measurements' ), ( 'Muon::CscStripPrepDataContainer' , 'StoreGateSvc+CSC_Measurements' ), - ( 'Muon::CscPrepDataContainer' , 'StoreGateSvc+CSC_Clusters' )] + ( 'Muon::CscPrepDataContainer' , 'StoreGateSvc+CSC_Clusters' ), + ( 'Trk::SolenoidParametrization' , 'ConditionStore+SolenoidParametrization' ) #TODO schedule the correct condAlg to produce this + ] result = ComponentAccumulator() result.addEventAlgo(EFMuonViewDataVerifier) return result @@ -46,6 +48,62 @@ def MuFastViewDataVerifier(): result.addEventAlgo(alg) return result +#Not the ideal place to keep the track cnv alg configuration. Temproarily adding it here +#until a better location can be found +def MuonTrackCollectionCnvToolCfg(flags, name = "MuonTrackCollectionCnvTool", **kwargs): + TrackCollectionCnvTool = CompFactory.xAODMaker.TrackCollectionCnvTool + + result = ComponentAccumulator() + from MuonCombinedConfig.MuonCombinedRecToolsConfig import MuonCombinedParticleCreatorCfg + acc = MuonCombinedParticleCreatorCfg(flags) + kwargs.setdefault("TrackParticleCreator", acc.popPrivateTools()) + result.merge(acc) + + result.setPrivateTools(TrackCollectionCnvTool(name=name, **kwargs)) + return result + +def MuonRecTrackParticleContainerCnvToolCfg(flags, name = "MuonRecTrackParticleContainerCnvTool", **kwargs): + RecTrackParticleCnvTool = CompFactory.xAODMaker.RecTrackParticleContainerCnvTool + + result = ComponentAccumulator() + from MuonCombinedConfig.MuonCombinedRecToolsConfig import MuonCombinedParticleCreatorCfg + acc = MuonCombinedParticleCreatorCfg(flags) + kwargs.setdefault("TrackParticleCreator", acc.popPrivateTools()) + result.merge(acc) + + result.setPrivateTools(RecTrackParticleCnvTool(name=name, **kwargs)) + return result + +def MuonTrackParticleCnvCfg(flags, name = "MuonTrackParticleCnvAlg",**kwargs): + TrackParticleCnv = CompFactory.xAODMaker.TrackParticleCnvAlg + result=ComponentAccumulator() + + from MuonCombinedConfig.MuonCombinedRecToolsConfig import MuonCombinedParticleCreatorCfg + acc = MuonCombinedParticleCreatorCfg(flags) + kwargs.setdefault("TrackParticleCreator", acc.popPrivateTools()) + result.merge(acc) + + acc = MuonTrackCollectionCnvToolCfg(flags) + kwargs.setdefault("TrackCollectionCnvTool", acc.popPrivateTools()) + result.merge(acc) + + acc = MuonRecTrackParticleContainerCnvToolCfg(flags) + kwargs.setdefault("RecTrackParticleContainerCnvTool", acc.popPrivateTools()) + result.merge(acc) + + kwargs.setdefault("TrackContainerName", "MuonSpectrometerTracks") + kwargs.setdefault("xAODTrackParticlesFromTracksContainerName", "MuonSpectrometerTrackParticles") + kwargs.setdefault("AODContainerName", "") + kwargs.setdefault("AODTruthContainerName", "") + kwargs.setdefault("xAODTruthLinkVector", "") + kwargs.setdefault("ConvertTrackParticles", False) + kwargs.setdefault("ConvertTracks", True) + + trackcnv = TrackParticleCnv(name=name, **kwargs ) + + result.addEventAlgo( trackcnv, primary=True ) + return result + def generateChains( flags, chainDict ): chainDict = splitChainDict(chainDict)[0] @@ -179,10 +237,16 @@ def generateChains( flags, chainDict ): trkCfg = MuonTrackBuildingCfg(muonflags, name="TrigMuPatTrackBuilder") recoMS.mergeReco(trkCfg) - #The MuonCandidateAlg is not quite fully working yet - #from MuonCombinedConfig.MuonCombinedReconstructionConfig import MuonCombinedMuonCandidateAlgCfg - #candCfg = MuonCombinedMuonCandidateAlgCfg(muonflags, name = "TrigMuonCandidateAlg") - #recoMS.mergeReco(candCfg) + cnvCfg = MuonTrackParticleCnvCfg(muonflags, name = "TrigMuonTrackParticleCnvAlg") + recoMS.mergeReco(cnvCfg) + + from MuonCombinedConfig.MuonCombinedReconstructionConfig import MuonCombinedMuonCandidateAlgCfg + candCfg = MuonCombinedMuonCandidateAlgCfg(muonflags, name = "TrigMuonCandidateAlg") + recoMS.mergeReco(candCfg) + + from MuonCombinedConfig.MuonCombinedReconstructionConfig import MuonCreatorAlgCfg + creatorCfg = MuonCreatorAlgCfg(muonflags, name = "TrigMuonCreatorAlg") + recoMS.mergeReco(creatorCfg) accMS.merge(recoMS, sequenceName=stepEFMSReco.getName()) -- GitLab