Skip to content
Snippets Groups Projects
Commit d46b9f40 authored by Walter Lampl's avatar Walter Lampl
Browse files

Merge branch 'combinedEFmuontrigger' into 'master'

Adding EF combined muons to trigger test

See merge request atlas/athena!16739
parents d3e9b04f 1a5c24aa
No related merge requests found
......@@ -106,7 +106,7 @@ StatusCode TrigMuonEFCombinerHypoTool::decide(std::vector<MuonEFInfo>& toolInput
return inclusiveSelection(toolInput);
}
else{
if(numMuon ==1) ATH_MSG_DEBUG("Not applying selection "<<m_decisionId<< " because the number of muons is "<<numMuon);
if(numMuon <=1) ATH_MSG_DEBUG("Not applying selection "<<m_decisionId<< " because the number of muons is "<<numMuon);
else{
ATH_MSG_DEBUG("Applying selection of multiplicity "<< m_decisionId);
return multiplicitySelection(toolInput);
......
......@@ -516,7 +516,7 @@ def muEFSARecoSequence( RoIs, OutputLevel=INFO ):
MuonTrackSteering.DoSummary=True
MuonTrackSteering.DoSummary=DEBUG
TrackBuilder = CfgMgr.MuPatTrackBuilder("MuPatTrackBuilder" )
TrackBuilder.TrackSteering=CfgGetter.getPublicToolClone("MuonTrackSteering", "MuonTrackSteering")
TrackBuilder.TrackSteering=CfgGetter.getPublicToolClone("TrigMuonTrackSteering", "MuonTrackSteering")
from AthenaCommon.Include import include
include("InDetBeamSpotService/BeamCondSvc.py" )
......@@ -567,3 +567,92 @@ def muEFSARecoSequence( RoIs, OutputLevel=INFO ):
return muEFSARecoSequence, sequenceOut
def muEFCBRecoSequence( RoIs, OutputLevel=INFO ):
from MuonRecExample.MuonRecFlags import muonRecFlags
from AthenaCommon.DetFlags import DetFlags
from AthenaCommon.AppMgr import ToolSvc
from AthenaCommon.AppMgr import ServiceMgr
import AthenaCommon.CfgMgr as CfgMgr
import AthenaCommon.CfgGetter as CfgGetter
from AthenaCommon.CfgGetter import getPublicTool, getPublicToolClone
from AthenaCommon import CfgMgr
from AthenaCommon.CFElements import parOR, seqAND, seqOR, stepSeq
efAlgs = []
muEFCBRecoSequence = parOR("efcbViewNode")
#Need ID tracking related objects and MS tracks from previous steps
ViewVerifyTrk = CfgMgr.AthViews__ViewDataVerifier("muonCBViewDataVerifier")
ViewVerifyTrk.DataObjects = [( 'xAOD::TrackParticleContainer' , 'StoreGateSvc+xAODTracks' ),( 'SCT_FlaggedCondData' , 'StoreGateSvc+SCT_FlaggedCondData' ), ( 'InDetBSErrContainer' , 'StoreGateSvc+SCT_ByteStreamErrs' ), ( 'xAOD::EventInfo' , 'StoreGateSvc+EventInfo' ),( 'xAOD::IParticleContainer' , 'StoreGateSvc+xAODTracks' ),( 'SCT_ByteStreamFractionContainer' , 'StoreGateSvc+SCT_ByteStreamFrac' ),( 'Muon::CscStripPrepDataContainer' , 'StoreGateSvc+CSC_Measurements' ), ( 'Muon::MdtPrepDataContainer' , 'StoreGateSvc+MDT_DriftCircles' ), ( 'xAOD::TrackParticleContainer' , 'StoreGateSvc+MuonSpectrometerTrackParticles' ) ]
muEFCBRecoSequence += ViewVerifyTrk
#Make InDetCandidates
theIndetCandidateAlg = CfgMgr.MuonCombinedInDetCandidateAlg("TrigMuonCombinedInDetCandidateAlg",TrackSelector=getPublicTool("MuonCombinedInDetDetailedTrackSelectorTool"),TrackParticleLocation = ["xAODTracks"],ForwardParticleLocation="xAODTracks",OutputLevel=DEBUG)
#MuonCombinedCandidates
theCaloMeasTool = getPublicToolClone("TrigCaloMeasTool", "MuidCaloEnergyMeas", CaloNoiseTool="", UseCaloNoiseTool=False,CellContainerLocation="")
theCaloEnergyTool = getPublicToolClone("TrigCaloEnergyTool", "MuidCaloEnergyTool", CaloMeasTool = theCaloMeasTool, EnergyLossMeasurement=False, MopParametrization=True, TrackIsolation=False)
from TrkExRungeKuttaIntersector.TrkExRungeKuttaIntersectorConf import Trk__IntersectorWrapper as Propagator
TrigMuonPropagator = Propagator(name = 'TrigMuonPropagator')
ToolSvc += TrigMuonPropagator
theCaloTSOS = getPublicToolClone("TrigCaloTrackStateOnSurface", "MuidCaloTrackStateOnSurface", CaloEnergyDeposit=theCaloEnergyTool, CaloEnergyParam=theCaloEnergyTool, Propagator =TrigMuonPropagator, MinRemainingEnergy= 200, ParamPtCut= 3000)
from MuidCaloScatteringTools.MuidCaloScatteringToolsConf import Rec__MuidMaterialEffectsOnTrackProvider
Rec__MuidMaterialEffectsOnTrackProvider.TSOSTool=theCaloTSOS
theErrorOptimiser = getPublicToolClone("TrigMuonErrorOptimiser", "MuonErrorOptimisationTool", PrepareForFit=False, RecreateStartingParameters=False,RefitTool=getPublicToolClone("TrigMuidRefitTool", "MuonRefitTool", AlignmentErrors = False, Fitter = CfgGetter.getPublicTool("iPatFitter")))
theTrackCleaner = getPublicToolClone("TrigMuonTrackCleaner", "MuonTrackCleaner", Fitter='TMEF_iPatFitter', SLFitter='TMEF_iPatFitter')
theTrackBuilderTool = getPublicToolClone("TrigCombinedMuonTrackBuilder","CombinedMuonTrackBuilder", UseCaloTG = True, CaloTSOS=theCaloTSOS, CaloMaterialProvider='TMEF_TrkMaterialProviderTool', MuonHoleRecovery="",OutputLevel=DEBUG,CaloEnergyParam=theCaloEnergyTool,MuonErrorOptimizer=theErrorOptimiser, Fitter='TMEF_iPatFitter', MaterialAllocator="TMEF_MaterialAllocator", Propagator=TrigMuonPropagator, LargeMomentumError=0.5, PerigeeAtSpectrometerEntrance=True, ReallocateMaterial=False, TrackSummaryTool=getPublicTool("CombinedMuonTrackSummary"), Cleaner=theTrackCleaner)
theTrackQuery = getPublicToolClone("TrigMuonTrackQuery", "MuonTrackQuery", Fitter=theTrackBuilderTool)
theCandidateToolCB = getPublicToolClone("TrigMuonCandidateTool_CB", "MuonCandidateTool", TrackBuilder=theTrackBuilderTool,OutputLevel=DEBUG)
theMuonCombinedCandidateAlg = CfgMgr.MuonCombinedMuonCandidateAlg("TrigMuonCombinedMuonCandidateAlg",MuonCandidateTool=theCandidateToolCB,MuonCandidateLocation="CombinedMuonCandidates", OutputLevel=DEBUG)
#MS ID combination
theMuonCombinedFitTagTool = getPublicToolClone("TrigMuonCombinedFitTagTool", "MuonCombinedFitTagTool",TrackBuilder=theTrackBuilderTool,MuonRecovery=getPublicToolClone("TrigMuonRecovery","MuidMuonRecovery", TrackBuilder=theTrackBuilderTool),OutputLevel=DEBUG, TrackQuery=theTrackQuery, MatchQuality = getPublicToolClone("TrigMuonMatchQuality", "MuonMatchQuality", TrackQuery=theTrackQuery))
tools=[]
tools.append(theMuonCombinedFitTagTool)
theMuonCombinedTool = getPublicToolClone("TrigMuonCombinedToolCB", "MuonCombinedTool", MuonCombinedTagTools=tools, OutputLevel=DEBUG)
theMuonCombinedAlg = CfgMgr.MuonCombinedAlg("TrigMuonCombinedAlg", MuonCandidateLocation="CombinedMuonCandidates", MuonCombinedTool=theMuonCombinedTool, CombinedTagMaps=["muidcoTagMap"], OutputLevel=DEBUG)
#Build muon candidates
theCandidateToolCB = getPublicToolClone("MuonCandidateTool_CB", "MuonCandidateTool", TrackBuilder=theTrackBuilderTool)
theMuonCandidateAlgCB=CfgMgr.MuonCombinedMuonCandidateAlg("MuonCandidateAlgCB",MuonCandidateTool=theCandidateToolCB,MuonCandidateLocation="MuonCandidates")
#Create xAOD Muons
thecreatortoolCB= getPublicToolClone("MuonCreatorTool_triggerCB", "MuonCreatorTool", ScatteringAngleTool="", CaloMaterialProvider='TMEF_TrkMaterialProviderTool', MuonSelectionTool="", FillTimingInformation=False, OutputLevel=DEBUG, DoCaloNoiseCut=False, UseCaloCells=False)
themuoncbcreatoralg = CfgMgr.MuonCreatorAlg("MuonCreatorAlgCB", OutputLevel=DEBUG, MuonCandidateLocation="CombinedMuonCandidates")
themuoncbcreatoralg.MuonCreatorTool=thecreatortoolCB
themuoncbcreatoralg.MakeClusters=False
themuoncbcreatoralg.ClusterContainerName=""
themuoncbcreatoralg.MuonContainerLocation = "CBMuons"
themuoncbcreatoralg.SegmentContainerName = "CBSegments"
themuoncbcreatoralg.ExtrapolatedLocation = "CBExtrapolatedMuons"
themuoncbcreatoralg.MSOnlyExtrapolatedLocation = "CBMSOnlyExtrapolatedMuons"
themuoncbcreatoralg.CombinedLocation = "CBCombinedMuon"
#Add all algorithms
efAlgs.append(theIndetCandidateAlg)
efAlgs.append(theMuonCombinedCandidateAlg)
efAlgs.append(theMuonCombinedAlg)
efAlgs.append(theMuonCandidateAlgCB)
efAlgs.append(themuoncbcreatoralg)
# setup muEFMsonly algs
for efAlg in efAlgs:
muEFCBRecoSequence += efAlg
sequenceOut = themuoncbcreatoralg.MuonContainerLocation
return muEFCBRecoSequence, sequenceOut
......@@ -166,7 +166,6 @@ def muEFSAStep():
efsaViewsMaker = EventViewCreatorAlgorithm("efsaViewsMaker", OutputLevel=DEBUG)
efsaViewsMaker.ViewFallThrough = True
#efsaViewsMaker.RoIsLink = "initialRoI" # -||-
efsaViewsMaker.RoIsLink = "roi" # -||-
efsaViewsMaker.InViewRoIs = "MUEFSARoIs" # contract with the consumer
efsaViewsMaker.Views = "MUEFSAViewRoIs"
......@@ -192,6 +191,39 @@ def muEFSAStep():
Hypo = trigMuonEFSAHypo,
HypoToolGen = TrigMuonEFMSonlyHypoToolFromName )
def muEFCBStep():
efcbViewNode = parOR("efcbViewNode")
efcbViewsMaker = EventViewCreatorAlgorithm("efcbViewsMaker", OutputLevel=DEBUG)
efcbViewsMaker.ViewFallThrough = True
efcbViewsMaker.RoIsLink = "roi" # -||-
efcbViewsMaker.InViewRoIs = "MUEFCBRoIs" # contract with the consumer
efcbViewsMaker.Views = "MUEFCBViewRoIs"
efcbViewsMaker.ViewNodeName = efcbViewNode.name()
### get EF reco sequence ###
from TrigUpgradeTest.MuonSetup import muEFCBRecoSequence
muEFCBRecoSequence, sequenceOut = muEFCBRecoSequence( efcbViewsMaker.InViewRoIs, OutputLevel=DEBUG )
efcbViewsMaker.ViewNodeName = muEFCBRecoSequence.name()
# setup EFCB hypo
from TrigMuonHypo.TrigMuonHypoConfigMT import TrigMuonEFCombinerHypoConfig
trigMuonEFCBHypo = TrigMuonEFCombinerHypoConfig( "TrigMuonEFCombinerHypoAlg" )
trigMuonEFCBHypo.OutputLevel = DEBUG
trigMuonEFCBHypo.MuonDecisions = sequenceOut
muonEFCBSequence = seqAND( "muonEFCBSequence", [efcbViewsMaker, efcbViewNode] )
return MenuSequence( Sequence = muonEFCBSequence,
Maker = efcbViewsMaker,
Hypo = trigMuonEFCBHypo,
HypoToolGen = trigMuonEFCBHypo.TrigMuonEFCombinerHypoToolFromName )
### l2Muiso step ###
def muIsoStep():
......
......@@ -39,7 +39,8 @@ if TriggerFlags.doMuon==True:
##########################################
from TriggerMenuMT.HLTMenuConfig.Menu.MenuComponents import Chain, ChainStep
from TrigUpgradeTest.muMenuDefs import muFastStep, muCombStep, muEFMSStep, muEFSAStep, muIsoStep
from TrigUpgradeTest.muMenuDefs import muFastStep, muCombStep, muEFMSStep, muEFSAStep, muIsoStep, muEFCBStep
MenuChains = []
......@@ -51,17 +52,19 @@ if TriggerFlags.doMuon==True:
# step3
step3muEFSA=ChainStep("Step3_muEFSA", [ muEFSAStep() ])
step3muIso =ChainStep("Step3_muIso", [ muIsoStep() ])
# step4
step4muEFCB=ChainStep("Step4_muEFCB", [ muEFCBStep() ])
## single muon trigger
MenuChains += [Chain(name='HLT_mu6fast', Seed="L1_MU6", ChainSteps=[ step1mufast ])]
MenuChains += [Chain(name='HLT_mu6Comb', Seed="L1_MU6", ChainSteps=[ step1mufast, step2muComb ])]
#MenuChains += [Chain(name='HLT_mu6msonly', Seed="L1_MU6", ChainSteps=[ step1mufast, step2muEFMS ])] # removed due to muEFSA isuue(?)
MenuChains += [Chain(name='HLT_mu6', Seed="L1_MU6", ChainSteps=[ step1mufast, step2muComb, step3muEFSA ])]
MenuChains += [Chain(name='HLT_mu6', Seed="L1_MU6", ChainSteps=[ step1mufast, step2muComb, step3muEFSA, step4muEFCB ])]
MenuChains += [Chain(name='HLT_mu20_ivar', Seed="L1_MU6", ChainSteps=[ step1mufast, step2muComb, step3muIso ])]
# multi muon trigger
MenuChains += [Chain(name='HLT_2mu6Comb', Seed="L1_MU6", ChainSteps=[ step1mufast, step2muComb ])]
MenuChains += [Chain(name='HLT_2mu6', Seed="L1_MU6", ChainSteps=[ step1mufast, step2muComb, step3muEFSA ])]
MenuChains += [Chain(name='HLT_2mu6', Seed="L1_MU6", ChainSteps=[ step1mufast, step2muComb, step3muEFSA, step4muEFCB ])]
#################################
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment