diff --git a/Reconstruction/MuonIdentification/MuonCombinedConfig/python/MuonCombinedRecToolsConfig.py b/Reconstruction/MuonIdentification/MuonCombinedConfig/python/MuonCombinedRecToolsConfig.py index a5624da3b662f00ef17b766f1bd64c0c0793cfe8..bee7b31c20d38ded5859b283cbd0a1a96711305d 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) @@ -237,8 +248,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 @@ -249,13 +265,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) @@ -360,11 +380,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 4533997e04666ecfc3626f680e055d7981ee4b9a..f95b8b148d193d2164ed7331059313188cd331bc 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 e3b0f4093020fe0b36bd5e45841e7620fc169fb6..9c0fc82c8dea356d11a51909f994fc9aff742777 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())