diff --git a/Trigger/TrigAlgorithms/TrigT2CaloCommon/python/CaloDef.py b/Trigger/TrigAlgorithms/TrigT2CaloCommon/python/CaloDef.py index 089d34606b1eb8af486a7245e01b073540622af2..9217d54e8a8818d4008d1d171ccc9b7097aa2eb1 100644 --- a/Trigger/TrigAlgorithms/TrigT2CaloCommon/python/CaloDef.py +++ b/Trigger/TrigAlgorithms/TrigT2CaloCommon/python/CaloDef.py @@ -57,7 +57,7 @@ def _algoL2Egamma(inputEDM="", doRinger=False, ClustersName="HLT_FastCaloEMClust setMinimalCaloSetup() if doForward: from TrigT2CaloEgamma.TrigT2CaloEgammaConfig import T2CaloEgamma_ReFastFWDAlgo - algo=T2CaloEgamma_ReFastFWDAlgo("FastCaloFWDL2EgammaAlg", doRinger=doRinger, RingerKey=RingerKey) + algo=T2CaloEgamma_ReFastFWDAlgo("FastCaloL2EgammaAlg_FWD", doRinger=doRinger, RingerKey=RingerKey) else: from TrigT2CaloEgamma.TrigT2CaloEgammaConfig import T2CaloEgamma_ReFastAlgo algo=T2CaloEgamma_ReFastAlgo("FastCaloL2EgammaAlg", doRinger=doRinger, RingerKey=RingerKey) @@ -72,7 +72,8 @@ def _algoL2Egamma(inputEDM="", doRinger=False, ClustersName="HLT_FastCaloEMClust def fastCaloRecoSequence(InViewRoIs, doRinger=False, ClustersName="HLT_FastCaloEMClusters", RingerKey="HLT_FastCaloRinger"): - fastCaloAlg = _algoL2Egamma(inputEDM=InViewRoIs, doRinger=doRinger, ClustersName="HLT_FastCaloEMClusters", RingerKey=RingerKey) + + fastCaloAlg = _algoL2Egamma(inputEDM=InViewRoIs, doRinger=doRinger, ClustersName=ClustersName, RingerKey=RingerKey) import AthenaCommon.CfgMgr as CfgMgr fastCaloVDV = CfgMgr.AthViews__ViewDataVerifier("fastCaloVDV") @@ -85,15 +86,15 @@ def fastCaloRecoSequence(InViewRoIs, doRinger=False, ClustersName="HLT_FastCaloE -def fastCaloRecoFWDSequence(InViewRoIs, doRinger=False, ClustersName="HLT_FastCaloEMClusters", RingerKey="HLT_FastCaloRinger"): +def fastCaloRecoFWDSequence(InViewRoIs, doRinger=False, ClustersName="HLT_FastCaloEMClusters_FWD", RingerKey="HLT_FastCaloRinger_FWD"): # create alg - fastCaloAlg = _algoL2Egamma(inputEDM=InViewRoIs, doRinger=doRinger, ClustersName="HLT_FastCaloEMClusters", - RingerKey="HLT_FWDFastCaloRinger", doForward=True) + fastCaloAlg = _algoL2Egamma(inputEDM=InViewRoIs, doRinger=doRinger, ClustersName=ClustersName, RingerKey=RingerKey, + doForward=True) import AthenaCommon.CfgMgr as CfgMgr - fastCaloVDV = CfgMgr.AthViews__ViewDataVerifier("fastCaloFWDVDV") + fastCaloVDV = CfgMgr.AthViews__ViewDataVerifier("fastCaloVDV_FWD") fastCaloVDV.DataObjects = [( 'CaloBCIDAverage' , 'StoreGateSvc+CaloBCIDAverage' ), - ( 'TrigRoiDescriptorCollection' , 'StoreGateSvc+EMCaloRoIs' )] - fastCaloInViewSequence = seqAND('fastCaloFWDInViewSequence' , [fastCaloVDV, fastCaloAlg] ) + ( 'TrigRoiDescriptorCollection' , 'StoreGateSvc+FSJETMETCaloRoI' )] + fastCaloInViewSequence = seqAND('fastCaloInViewSequence_FWD' , [fastCaloVDV, fastCaloAlg] ) sequenceOut = fastCaloAlg.ClustersName return (fastCaloInViewSequence, sequenceOut) @@ -113,19 +114,22 @@ def fastCaloEVCreator(): def fastCaloEVFWDCreator(): - InViewRoIs="EMCaloRoIs" - fastCaloViewsMaker = CompFactory.EventViewCreatorAlgorithm( "IMfastCaloFWD" ) + #InViewRoIs="EMCaloRoIs" + InViewRoIs = "FSJETMETCaloRoI" + fastCaloViewsMaker = CompFactory.EventViewCreatorAlgorithm( "IMfastCalo_FWD" ) fastCaloViewsMaker.ViewFallThrough = True fastCaloViewsMaker.RoIsLink = "initialRoI" fastCaloViewsMaker.RoITool = CompFactory.ViewCreatorInitialROITool() fastCaloViewsMaker.InViewRoIs = InViewRoIs - fastCaloViewsMaker.Views = "EMCaloFWDViews" - fastCaloViewsMaker.ViewNodeName = "fastCaloFWDInViewSequence" + fastCaloViewsMaker.Views = "EMCaloViews_FWD" + fastCaloViewsMaker.ViewNodeName = "fastCaloInViewSequence_FWD" + return (fastCaloViewsMaker, InViewRoIs) + ################################## # standalone testing ################################### @@ -145,9 +149,6 @@ def createFastCaloSequence(EMRoIDecisions, doRinger=False, ClustersName="HLT_Fas - - - ################################## # cluster maker functions ################################### @@ -180,15 +181,15 @@ def HLTFSTopoRecoSequence(ConfigFlags,RoIs): return (RecoSequence, topoClusterMaker.CaloClusters) -def HLTRoITopoRecoSequence(ConfigFlags, RoIs, lrtInfo=''): +def HLTRoITopoRecoSequence(ConfigFlags, RoIs, algSuffix=''): import AthenaCommon.CfgMgr as CfgMgr - HLTRoITopoRecoSequenceVDV = CfgMgr.AthViews__ViewDataVerifier("HLTRoITopoRecoSequenceVDV%s"%lrtInfo) - HLTRoITopoRecoSequenceVDV.DataObjects = [( 'TrigRoiDescriptorCollection' , 'StoreGateSvc+PrecisionCaloRoIs%s'%lrtInfo ), + HLTRoITopoRecoSequenceVDV = CfgMgr.AthViews__ViewDataVerifier("HLTRoITopoRecoSequenceVDV%s"%algSuffix) + HLTRoITopoRecoSequenceVDV.DataObjects = [( 'TrigRoiDescriptorCollection' , 'StoreGateSvc+PrecisionCaloRoIs%s'%algSuffix ), ( 'CaloBCIDAverage' , 'StoreGateSvc+CaloBCIDAverage' )] - cellMaker = HLTCellMaker(ConfigFlags, RoIs, algSuffix="RoI%s"%lrtInfo) - topoClusterMaker = _algoHLTTopoCluster(inputEDM = cellMaker.CellsName, algSuffix="RoI%s"%lrtInfo) - RecoSequence = parOR("RoITopoClusterRecoSequence%s"%lrtInfo, [HLTRoITopoRecoSequenceVDV, cellMaker, topoClusterMaker]) + cellMaker = HLTCellMaker(ConfigFlags, RoIs, algSuffix="RoI%s"%algSuffix) + topoClusterMaker = _algoHLTTopoCluster(inputEDM = cellMaker.CellsName, algSuffix="RoI%s"%algSuffix) + RecoSequence = parOR("RoITopoClusterRecoSequence%s"%algSuffix, [HLTRoITopoRecoSequenceVDV, cellMaker, topoClusterMaker]) return (RecoSequence, topoClusterMaker.CaloClusters) diff --git a/Trigger/TrigHypothesis/TrigEgammaForwardHypo/CMakeLists.txt b/Trigger/TrigHypothesis/TrigEgammaForwardHypo/CMakeLists.txt index 4c91e4e2e5405e5cdeef336470e3e8d8384d0402..dfc71c7c2c673dc80ecd6bfe2e12104bd7642901 100644 --- a/Trigger/TrigHypothesis/TrigEgammaForwardHypo/CMakeLists.txt +++ b/Trigger/TrigHypothesis/TrigEgammaForwardHypo/CMakeLists.txt @@ -7,9 +7,8 @@ atlas_subdir( TrigEgammaForwardHypo ) atlas_add_component( TrigEgammaForwardHypo src/*.cxx src/components/*.cxx - LINK_LIBRARIES AthViews AthenaBaseComps AthenaMonitoringKernelLib DecisionHandlingLib - GaudiKernel LumiBlockCompsLib RingerSelectorToolsEnumsLib TrigCompositeUtilsLib - TrigSteeringEvent xAODTrigCalo xAODTrigRinger xAODTrigger EgammaAnalysisInterfacesLib) + LINK_LIBRARIES AthViews AthenaBaseComps AthenaMonitoringKernelLib DecisionHandlingLib EgammaAnalysisInterfacesLib GaudiKernel LumiBlockCompsLib RecoToolInterfaces StoreGateLib TrigCompositeUtilsLib TrigMultiVarHypoLib TrigSteeringEvent TrkCaloExtension xAODBase xAODCaloEvent xAODEgamma xAODEventInfo xAODTracking xAODTrigCalo xAODTrigEgamma xAODTrigRinger xAODTrigger AthOnnxruntimeServiceLib RingerSelectorToolsLib) + # Install files from the package: atlas_install_python_modules( python/*.py POST_BUILD_CMD ${ATLAS_FLAKE8} --extend-extensions=ATL900,ATL901 ) diff --git a/Trigger/TriggerCommon/TrigEDMConfig/python/TriggerEDMRun3.py b/Trigger/TriggerCommon/TrigEDMConfig/python/TriggerEDMRun3.py index 5a699e21afb7fd4d88eef2cf8bd9bf90d56e42ea..eceeda642e9b38017cd336dbdab350af045e16fc 100644 --- a/Trigger/TriggerCommon/TrigEDMConfig/python/TriggerEDMRun3.py +++ b/Trigger/TriggerCommon/TrigEDMConfig/python/TriggerEDMRun3.py @@ -171,6 +171,10 @@ TriggerHLTListRun3 = [ ('xAOD::TrigRingerRingsContainer#HLT_FastCaloAsymRinger', 'BS ESD AODFULL', 'Egamma', 'inViews:EMCaloViews'), #Ringer ('xAOD::TrigRingerRingsAuxContainer#HLT_FastCaloAsymRingerAux.', 'BS ESD AODFULL', 'Egamma'), #Ringer + # Egamma FWD + ('xAOD::TrigEMClusterContainer#HLT_FastCaloEMClusters_FWD', 'BS ESD AODFULL', 'Egamma', 'inViews:EMCaloViews_FWD'), # last arg specifies in which view container the fragments are, look into the proprty of View maker alg for it + ('xAOD::TrigEMClusterAuxContainer#HLT_FastCaloEMClusters_FWDAux.', 'BS ESD AODFULL', 'Egamma'), + ('xAOD::TrigPhotonContainer#HLT_FastPhotons', 'BS ESD AODFULL', 'Egamma', 'inViews:EMPhotonViews'), ('xAOD::TrigPhotonAuxContainer#HLT_FastPhotonsAux.', 'BS ESD AODFULL', 'Egamma'), ('xAOD::TrigElectronContainer#HLT_FastElectrons', 'BS ESD AODFULL', 'Egamma', 'inViews:EMElectronViews'), @@ -197,10 +201,16 @@ TriggerHLTListRun3 = [ # these two corresponds to the output of the precisionCalo step ('xAOD::CaloClusterContainer#HLT_CaloEMClusters', 'BS ESD AODFULL', 'Egamma', 'inViews:precisionCaloViews'), ('xAOD::CaloClusterTrigAuxContainer#HLT_CaloEMClustersAux.', 'BS ESD AODFULL', 'Egamma'), - + + # these two corresponds to the output of the precisionCalo_LRT step ('xAOD::CaloClusterContainer#HLT_CaloEMClusters_LRT', 'BS ESD AODFULL', 'Egamma', 'inViews:precisionCaloViews_LRT'), ('xAOD::CaloClusterTrigAuxContainer#HLT_CaloEMClusters_LRTAux.', 'BS ESD AODFULL', 'Egamma'), + # these two corresponds to the output of the precisionCalo forward step + ('xAOD::CaloClusterContainer#HLT_CaloEMClusters_FWD', 'BS ESD AODFULL', 'Egamma', 'inViews:precisionCaloViews_FWD'), + ('xAOD::CaloClusterTrigAuxContainer#HLT_CaloEMClusters_FWDAux.', 'BS ESD AODFULL', 'Egamma'), + + # This variant needed by TrigUpgradeTest/egammaRinger.py ('xAOD::CaloClusterContainer#HLT_TopoCaloClusters', 'BS ESD AODFULL', 'Egamma'), ('xAOD::CaloClusterTrigAuxContainer#HLT_TopoCaloClustersAux.', 'BS ESD AODFULL', 'Egamma'), diff --git a/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/CommonSequences/CaloSequences.py b/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/CommonSequences/CaloSequences.py index 922f79207e4baa802aaa3ac10b78dedffc16c591..a396cf29e5028329adb14ebd9d41386d2bb6922e 100644 --- a/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/CommonSequences/CaloSequences.py +++ b/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/CommonSequences/CaloSequences.py @@ -16,31 +16,19 @@ class CaloMenuDefs(object): # # central or forward fast calo sequence # -def fastCaloSequence(flags, doForward=False, name="fastCaloSequence"): +def fastCaloSequence(flags, name="fastCaloSequence"): """ Creates Fast Calo reco sequence""" - if doForward: - from TrigT2CaloCommon.CaloDef import fastCaloEVFWDCreator as theEVCreator - from TrigT2CaloCommon.CaloDef import fastCaloRecoFWDSequence as theRecoSequence - else: - from TrigT2CaloCommon.CaloDef import fastCaloEVCreator as theEVCreator - from TrigT2CaloCommon.CaloDef import fastCaloRecoSequence as theRecoSequence - - (fastCaloViewsMaker, InViewRoIs) = theEVCreator() + + from TrigT2CaloCommon.CaloDef import fastCaloEVCreator + from TrigT2CaloCommon.CaloDef import fastCaloRecoSequence + (fastCaloViewsMaker, InViewRoIs) = fastCaloEVCreator() # reco sequence always build the rings - (fastCaloInViewSequence, sequenceOut) = theRecoSequence(InViewRoIs, doRinger=True) + (fastCaloInViewSequence, sequenceOut) = fastCaloRecoSequence(InViewRoIs, doRinger=True) # connect EVC and reco fastCaloSequence = seqAND(name, [fastCaloViewsMaker, fastCaloInViewSequence ]) return (fastCaloSequence, fastCaloViewsMaker, sequenceOut) -# -# Forward fast calo sequence only -# -def fastCaloFWDSequence(flags): - return fastCaloSequence(flags, doForward=True, name="fastCaloFWDSequence") - - - def fastCaloMenuSequence(name, doRinger=True): """ Creates Egamma Fast Calo MENU sequence @@ -55,7 +43,6 @@ def fastCaloMenuSequence(name, doRinger=True): else: from TrigEgammaHypo.TrigEgammaFastCaloHypoTool import createTrigEgammaFastCaloHypoAlgMT_noringer as createTrigEgammaFastCaloHypoAlgMT - theFastCaloHypo = createTrigEgammaFastCaloHypoAlgMT(name+"EgammaFastCaloHypo", sequenceOut) CaloMenuDefs.L2CaloClusters = sequenceOut @@ -66,32 +53,6 @@ def fastCaloMenuSequence(name, doRinger=True): HypoToolGen = TrigEgammaFastCaloHypoToolFromDict ) -# -# Create e/g fast calo menu sequence for central or forward region. -# -def fastCaloFWDMenuSequence(name, doRinger=True): - """ Creates Egamma Fast Calo FWD MENU sequence (Reco and Hypo) - The Hypo name changes depending on name, so for different implementations (Electron, Gamma,....) - """ - - (sequence, fastCaloViewsMaker, sequenceOut) = RecoFragmentsPool.retrieve(fastCaloFWDSequence, flags=None) - - # hypo - from TrigEgammaForwardHypo.TrigEgammaForwardHypoConf import TrigEgammaForwardFastCaloHypoAlg - from TrigEgammaForwardHypo.TrigEgammaForwardFastCaloHypoTool import TrigEgammaForwardFastCaloHypoToolFromDict - theFastCaloHypo = TrigEgammaForwardFastCaloHypoAlg(name+"EgammaFastCaloFWDHypo") - theFastCaloHypo.CaloClusters = sequenceOut - - from TrigEgammaForwardHypo.TrigEgammaForwardFastCaloHypoTool import createTrigEgammaForwardFastCaloHypoAlg - - theFastCaloHypo = createTrigEgammaForwardFastCaloHypoAlg(name+"EgammaFastCaloFWDHypo", sequenceOut) - CaloMenuDefs.L2CaloClusters = sequenceOut - - return MenuSequence( Sequence = sequence, - Maker = fastCaloViewsMaker, - Hypo = theFastCaloHypo, - HypoToolGen = TrigEgammaForwardFastCaloHypoToolFromDict ) - diff --git a/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/CommonSequences/CaloSequences_FWD.py b/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/CommonSequences/CaloSequences_FWD.py new file mode 100644 index 0000000000000000000000000000000000000000..17214e1d17e69367c116c9f77bb520d010de302c --- /dev/null +++ b/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/CommonSequences/CaloSequences_FWD.py @@ -0,0 +1,58 @@ +# +# Copyright (C) 2002-2021 CERN for the benefit of the ATLAS collaboration +# + +from TriggerMenuMT.HLTMenuConfig.Menu.MenuComponents import RecoFragmentsPool, MenuSequence +from AthenaCommon.CFElements import seqAND + +class CaloMenuDefs_FWD(object): + """Static Class to collect all string manipulations in Calo sequences """ + from TrigEDMConfig.TriggerEDMRun3 import recordable + L2CaloClusters= recordable("HLT_FastCaloEMClusters_FWD") + + +# +# central or forward fast calo sequence +# +def fastCaloSequence_FWD(flags, name="fastCaloFWDSequence"): + + from TrigT2CaloCommon.CaloDef import fastCaloEVFWDCreator + from TrigT2CaloCommon.CaloDef import fastCaloRecoFWDSequence + + (fastCaloViewsMaker, InViewRoIs) = fastCaloEVFWDCreator() + # reco sequence always build the rings + (fastCaloInViewSequence, sequenceOut) = fastCaloRecoFWDSequence(InViewRoIs, doRinger=True) + # connect EVC and reco + fastCaloSequence = seqAND(name, [fastCaloViewsMaker, fastCaloInViewSequence ]) + return (fastCaloSequence, fastCaloViewsMaker, sequenceOut) + + + +# +# Create e/g fast calo menu sequence for central or forward region. +# +def fastCaloMenuSequence_FWD(name, doRinger=True): + """ Creates Egamma Fast Calo FWD MENU sequence (Reco and Hypo) + The Hypo name changes depending on name, so for different implementations (Electron, Gamma,....) + """ + + (sequence, fastCaloViewsMaker, sequenceOut) = RecoFragmentsPool.retrieve(fastCaloSequence_FWD, flags=None) + + # hypo + from TrigEgammaForwardHypo.TrigEgammaForwardHypoConf import TrigEgammaForwardFastCaloHypoAlgMT + from TrigEgammaForwardHypo.TrigEgammaForwardFastCaloHypoTool import TrigEgammaForwardFastCaloHypoToolFromDict + theFastCaloHypo = TrigEgammaForwardFastCaloHypoAlgMT(name+"EgammaFastCaloFWDHypo") + theFastCaloHypo.CaloClusters = sequenceOut + + from TrigEgammaForwardHypo.TrigEgammaForwardFastCaloHypoTool import createTrigEgammaForwardFastCaloHypoAlgMT + + theFastCaloHypo = createTrigEgammaForwardFastCaloHypoAlgMT(name+"EgammaFastCaloFWDHypo", sequenceOut) + CaloMenuDefs_FWD.L2CaloClusters = sequenceOut + + return MenuSequence( Sequence = sequence, + Maker = fastCaloViewsMaker, + Hypo = theFastCaloHypo, + HypoToolGen = TrigEgammaForwardFastCaloHypoToolFromDict ) + + + diff --git a/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Egamma/ElectronChainConfiguration.py b/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Egamma/ElectronChainConfiguration.py index ce940b38e94ce0e3f0e3a4ecfd2d56829972231a..e102b41baf4da804eea631598569ae36060ddc79 100644 --- a/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Egamma/ElectronChainConfiguration.py +++ b/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Egamma/ElectronChainConfiguration.py @@ -7,13 +7,14 @@ log = logging.getLogger("TriggerMenuMT.HLTMenuConfig.Egamma.ElectronChainConfigu from ..Menu.ChainConfigurationBase import ChainConfigurationBase from ..CommonSequences.CaloSequences import fastCaloMenuSequence -from ..CommonSequences.CaloSequences import fastCaloFWDMenuSequence +from ..CommonSequences.CaloSequences_FWD import fastCaloMenuSequence_FWD -from .ElectronMenuSequences import fastElectronMenuSequence -from .ElectronMenuSequences_LRT import fastElectronMenuSequence_LRT +from .FastElectronMenuSequences import fastElectronMenuSequence +from .FastElectronMenuSequences_LRT import fastElectronMenuSequence_LRT from .PrecisionCaloMenuSequences import precisionCaloMenuSequence from .PrecisionCaloMenuSequences_LRT import precisionCaloMenuSequence_LRT +from .PrecisionCaloMenuSequences_FWD import precisionCaloMenuSequence_FWD from .PrecisionElectronMenuSequences import precisionElectronMenuSequence from .PrecisionElectronMenuSequences_GSF import precisionElectronMenuSequence_GSF from .PrecisionElectronMenuSequences_LRT import precisionElectronMenuSequence_LRT @@ -31,9 +32,6 @@ from AthenaMonitoringKernel.GenericMonitoringTool import GenericMonitoringTool, def electronFastCaloCfg( flags ): return fastCaloMenuSequence("Electron") -def electronFWDFastCaloCfg( flags ): - return fastCaloFWDMenuSequence("Electron") - def fastElectronSequenceCfg( flags ): return fastElectronMenuSequence(do_idperf=False) @@ -91,6 +89,15 @@ def diElectronJpsieeMassComboHypoToolFromDict(chainDict): monTool.HistPath = 'EgammaMassHypo/'+tool.getName() tool.MonTool = monTool return tool + + +def electronFastCaloCfg_fwd( flags ): + return fastCaloMenuSequence_FWD("Electron") + +def precisionCaloSequenceCfg_fwd( flags ): + return precisionCaloMenuSequence_FWD('Electron') + + #---------------------------------------------------------------- # Class to configure chain #---------------------------------------------------------------- @@ -162,8 +169,8 @@ class ElectronChainConfiguration(ChainConfigurationBase): 'mediumidperflrtloose' : ['getFastCalo', 'getFastElectron_lrt_idperf', 'getPrecisionCaloElectron_lrt', 'getPrecisionTracking_lrt'], 'tightidperflrtloose' : ['getFastCalo', 'getFastElectron_lrt_idperf', 'getPrecisionCaloElectron_lrt', 'getPrecisionTracking_lrt'], - # forward sequences - 'etcutfwd' : ['getFWDFastCalo'] + # fwd sequences + 'etcutfwd' : ['getFastCalo_fwd', 'getPrecisionCaloElectron_fwd'] } log.debug('electron chain part = %s', self.chainPart) @@ -202,11 +209,6 @@ class ElectronChainConfiguration(ChainConfigurationBase): fastCaloCfg = electronFastCaloCfg return self.getStep(1,stepName,[ fastCaloCfg]) - def getFWDFastCalo(self): - stepName = "FastCalo_FWD_electron" - fastCaloCfg = electronFWDFastCaloCfg - return self.getStep(1, stepName, [fastCaloCfg]) - def getFastElectron(self): if "bBeeM6000" in self.chainName: stepName = "fast_electron_bBee" @@ -283,3 +285,12 @@ class ElectronChainConfiguration(ChainConfigurationBase): stepName = "precision_electron_lrt"+str(isocut) return self.getStep(5,stepName,[ precisionElectronSequenceCfg_lrt]) + + + def getFastCalo_fwd(self): + stepName = "FastCalo_FWD_electron" + return self.getStep(1, stepName, [electronFastCaloCfg_fwd]) + + def getPrecisionCaloElectron_fwd(self): + stepName = "precisionCalo_FWD_electron" + return self.getStep(2,stepName,[ precisionCaloSequenceCfg_fwd]) diff --git a/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Egamma/ElectronMenuSequences.py b/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Egamma/FastElectronMenuSequences.py similarity index 100% rename from Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Egamma/ElectronMenuSequences.py rename to Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Egamma/FastElectronMenuSequences.py diff --git a/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Egamma/ElectronMenuSequences_LRT.py b/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Egamma/FastElectronMenuSequences_LRT.py similarity index 100% rename from Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Egamma/ElectronMenuSequences_LRT.py rename to Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Egamma/FastElectronMenuSequences_LRT.py diff --git a/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Egamma/PhotonMenuSequences.py b/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Egamma/FastPhotonMenuSequences.py similarity index 55% rename from Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Egamma/PhotonMenuSequences.py rename to Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Egamma/FastPhotonMenuSequences.py index 50b6cbbcc88486a739f2fd26775fc163334ba8ad..f9aa88521d905e17c1ff4d942ce4586040360569 100644 --- a/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Egamma/PhotonMenuSequences.py +++ b/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Egamma/FastPhotonMenuSequences.py @@ -1,10 +1,10 @@ # Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration # menu components -from TriggerMenuMT.HLTMenuConfig.Menu.MenuComponents import MenuSequence, RecoFragmentsPool +from TriggerMenuMT.HLTMenuConfig.Menu.MenuComponents import MenuSequence from AthenaCommon.CFElements import parOR, seqAND from ViewAlgs.ViewAlgsConf import EventViewCreatorAlgorithm -from DecisionHandling.DecisionHandlingConf import ViewCreatorCentredOnClusterROITool, ViewCreatorPreviousROITool +from DecisionHandling.DecisionHandlingConf import ViewCreatorCentredOnClusterROITool import AthenaCommon.CfgMgr as CfgMgr from TrigEDMConfig.TriggerEDMRun3 import recordable @@ -45,7 +45,6 @@ def fastPhotonMenuSequence(): thePhotonFex.RoIs = l2PhotonViewsMaker.InViewRoIs - photonInViewAlgs = parOR("photonInViewAlgs", [ViewVerify, thePhotonFex ]) l2PhotonViewsMaker.ViewNodeName = "photonInViewAlgs" @@ -68,47 +67,3 @@ def fastPhotonMenuSequence(): Hypo=thePhotonHypo, HypoToolGen=TrigEgammaFastPhotonHypoToolFromDict) - -def precisionPhotonSequence(ConfigFlags): - """ This function creates the PrecisionPhoton sequence""" - - # Prepare first the EventView - InViewRoIs="PrecisionPhotonRoIs" - precisionPhotonViewsMaker = EventViewCreatorAlgorithm( "IMprecisionPhoton") - precisionPhotonViewsMaker.ViewFallThrough = True - precisionPhotonViewsMaker.RequireParentView = True - precisionPhotonViewsMaker.RoIsLink = "initialRoI" # ROI link used to merge inputs - precisionPhotonViewsMaker.RoITool = ViewCreatorPreviousROITool() # Tool used to supply ROIs for EventViews - precisionPhotonViewsMaker.InViewRoIs = InViewRoIs # names to use for the collection of which the RoIs are picked up - precisionPhotonViewsMaker.Views = "precisionPhotonViews" # Output container which has the view objects - - # Configure the reconstruction algorithm sequence - from TriggerMenuMT.HLTMenuConfig.Photon.PhotonRecoSequences import precisionPhotonRecoSequence - (precisionPhotonInViewSequence, sequenceOut) = precisionPhotonRecoSequence(InViewRoIs) - - precisionPhotonViewsMaker.ViewNodeName = precisionPhotonInViewSequence.name() - - theSequence = seqAND("precisionPhotonSequence", [precisionPhotonViewsMaker,precisionPhotonInViewSequence]) - return (theSequence, precisionPhotonViewsMaker, sequenceOut) - - - -def precisionPhotonMenuSequence(name): - - # This will be executed after pricisionCalo, so we need to pickup indeed the topoClusters by precisionCalo and add them here as requirements - - from AthenaConfiguration.AllConfigFlags import ConfigFlags - """Creates precisionPhoton sequence""" - (sequence, precisionPhotonViewsMaker, sequenceOut) = RecoFragmentsPool.retrieve(precisionPhotonSequence,ConfigFlags) - - # Hypo - from TrigEgammaHypo.TrigEgammaPrecisionPhotonHypoTool import createTrigEgammaPrecisionPhotonHypoAlgMT - thePrecisionPhotonHypo = createTrigEgammaPrecisionPhotonHypoAlgMT(name+"precisionPhotonHypo", sequenceOut) - - from TrigEgammaHypo.TrigEgammaPrecisionPhotonHypoTool import TrigEgammaPrecisionPhotonHypoToolFromDict - - return MenuSequence( Sequence = sequence, - Maker = precisionPhotonViewsMaker, - Hypo = thePrecisionPhotonHypo, - HypoToolGen = TrigEgammaPrecisionPhotonHypoToolFromDict) - diff --git a/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Egamma/PhotonChainConfiguration.py b/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Egamma/PhotonChainConfiguration.py index 45c926261c0b075d52f7d51ca42835e1f3629eca..3025f10a471cfc081f383e07f631e5ea0523d45c 100644 --- a/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Egamma/PhotonChainConfiguration.py +++ b/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Egamma/PhotonChainConfiguration.py @@ -10,7 +10,8 @@ log = logging.getLogger("TriggerMenuMT.HLTMenuConfig.Egamma.PhotonDef") from ..Menu.ChainConfigurationBase import ChainConfigurationBase from ..CommonSequences.CaloSequences import fastCaloMenuSequence -from .PhotonMenuSequences import fastPhotonMenuSequence, precisionPhotonMenuSequence +from .FastPhotonMenuSequences import fastPhotonMenuSequence +from .PrecisionPhotonMenuSequences import precisionPhotonMenuSequence from .PrecisionCaloMenuSequences import precisionCaloMenuSequence from AthenaMonitoringKernel.GenericMonitoringTool import GenericMonitoringTool, defineHistogram diff --git a/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Egamma/PrecisionCaloMenuSequences.py b/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Egamma/PrecisionCaloMenuSequences.py index 2c5c0d69842bc1aaac72c4b2392361fce621b454..a59c2a05d68df4efdbccc2fee2a6a29e5c97a1fa 100644 --- a/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Egamma/PrecisionCaloMenuSequences.py +++ b/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Egamma/PrecisionCaloMenuSequences.py @@ -32,7 +32,7 @@ def precisionCaloSequence(ConfigFlags): precisionCaloViewsMaker.RequireParentView = True # reco sequence - from TriggerMenuMT.HLTMenuConfig.Egamma.PrecisionCaloRec import precisionCaloRecoSequence + from TriggerMenuMT.HLTMenuConfig.Egamma.PrecisionCaloRecoSequences import precisionCaloRecoSequence (precisionCaloInViewSequence, sequenceOut) = precisionCaloRecoSequence(None,InViewRoIs) precisionCaloViewsMaker.ViewNodeName = precisionCaloInViewSequence.name() diff --git a/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Egamma/PrecisionCaloMenuSequences_FWD.py b/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Egamma/PrecisionCaloMenuSequences_FWD.py new file mode 100644 index 0000000000000000000000000000000000000000..8af519b442388ad2e53ed2c37657c95a75aa013d --- /dev/null +++ b/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Egamma/PrecisionCaloMenuSequences_FWD.py @@ -0,0 +1,60 @@ +# +# Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration +# + +# menu components +from TriggerMenuMT.HLTMenuConfig.Menu.MenuComponents import MenuSequence, RecoFragmentsPool +from AthenaCommon.CFElements import seqAND +from ViewAlgs.ViewAlgsConf import EventViewCreatorAlgorithm +from DecisionHandling.DecisionHandlingConf import ViewCreatorPreviousROITool +from AthenaConfiguration.AllConfigFlags import ConfigFlags +from TrigEDMConfig.TriggerEDMRun3 import recordable + +class precisionCaloMenuDefs_FWD(object): + """Static class to collect all string manipulation in Calo sequences """ + precisionCaloClusters= recordable("HLT_CaloEMClusters_FWD") + + +def precisionCaloSequence_FWD(ConfigFlags): + """ Creates PrecisionCalo sequence """ + # EV creator + InViewRoIs="PrecisionCaloRoIs_FWD" + precisionCaloViewsMaker = EventViewCreatorAlgorithm( "IMprecisionCalo_FWD") + precisionCaloViewsMaker.ViewFallThrough = True + precisionCaloViewsMaker.RoIsLink = "initialRoI" # Merge inputs based on their initial L1 ROI + roiTool = ViewCreatorPreviousROITool() + # Note: This step processes Decision Objects which have followed either Electron reco, Photon reco, or both. + # For Decision Object which have followed both, there is an ambiguity about which ROI should be used in this + # merged step. In such cases we break the ambiguity by specifying that the Electron ROI is to be used. + #roiTool.RoISGKey = "HLT_Roi_FastElectron_FWD" + precisionCaloViewsMaker.RoITool = roiTool + precisionCaloViewsMaker.InViewRoIs = InViewRoIs + precisionCaloViewsMaker.Views = "precisionCaloViews_FWD" + precisionCaloViewsMaker.RequireParentView = True + + # reco sequence + from TriggerMenuMT.HLTMenuConfig.Egamma.PrecisionCaloRecoSequences import precisionCaloRecoSequence_FWD + (precisionCaloInViewSequence, sequenceOut) = precisionCaloRecoSequence_FWD(None,InViewRoIs) + + precisionCaloViewsMaker.ViewNodeName = precisionCaloInViewSequence.name() + + # connect EVC and reco + theSequence = seqAND("precisionCaloSequence_FWD", [precisionCaloViewsMaker, precisionCaloInViewSequence] ) + return (theSequence, precisionCaloViewsMaker, sequenceOut) + + +def precisionCaloMenuSequence_FWD(name): + """ Creates precisionCalo FWD MENU sequence """ + (sequence, precisionCaloViewsMaker, sequenceOut) = RecoFragmentsPool.retrieve(precisionCaloSequence_FWD, ConfigFlags) + + #Hypo + from TrigEgammaForwardHypo.TrigEgammaForwardHypoConf import TrigEgammaForwardPrecisionCaloHypoAlgMT + from TrigEgammaForwardHypo.TrigEgammaForwardPrecisionCaloHypoTool import TrigEgammaForwardPrecisionCaloHypoToolFromDict + + thePrecisionCaloHypo = TrigEgammaForwardPrecisionCaloHypoAlgMT(name+"precisionCaloHypo_FWD") + thePrecisionCaloHypo.CaloClusters = sequenceOut + + return MenuSequence( Sequence = sequence, + Maker = precisionCaloViewsMaker, + Hypo = thePrecisionCaloHypo, + HypoToolGen = TrigEgammaForwardPrecisionCaloHypoToolFromDict) diff --git a/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Egamma/PrecisionCaloMenuSequences_LRT.py b/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Egamma/PrecisionCaloMenuSequences_LRT.py index e8a9eb35a55a0c8f64668a61548ab50b9cbde77b..b5199356892b099191b65037941b2b942bb20b57 100644 --- a/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Egamma/PrecisionCaloMenuSequences_LRT.py +++ b/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Egamma/PrecisionCaloMenuSequences_LRT.py @@ -32,7 +32,7 @@ def precisionCaloSequence_LRT(ConfigFlags): precisionCaloViewsMaker.RequireParentView = True # reco sequence - from TriggerMenuMT.HLTMenuConfig.Egamma.PrecisionCaloRec import precisionCaloRecoSequence_LRT + from TriggerMenuMT.HLTMenuConfig.Egamma.PrecisionCaloRecoSequences import precisionCaloRecoSequence_LRT (precisionCaloInViewSequence, sequenceOut) = precisionCaloRecoSequence_LRT(None,InViewRoIs) precisionCaloViewsMaker.ViewNodeName = precisionCaloInViewSequence.name() diff --git a/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Egamma/PrecisionCaloRec.py b/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Egamma/PrecisionCaloRecoSequences.py similarity index 68% rename from Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Egamma/PrecisionCaloRec.py rename to Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Egamma/PrecisionCaloRecoSequences.py index 92ae5f06ca0ada930e158d77b55f6e8af57ee8a4..753a451e90f33135dc652c327ff386488c460f29 100644 --- a/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Egamma/PrecisionCaloRec.py +++ b/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Egamma/PrecisionCaloRecoSequences.py @@ -7,10 +7,13 @@ from egammaRec.Factories import AlgFactory from TriggerMenuMT.HLTMenuConfig.Menu.MenuComponents import RecoFragmentsPool from .PrecisionCaloMenuSequences import precisionCaloMenuDefs from .PrecisionCaloMenuSequences_LRT import precisionCaloMenuDefs_LRT -# logger +from .PrecisionCaloMenuSequences_FWD import precisionCaloMenuDefs_FWD from AthenaCommon.Logging import logging + log = logging.getLogger( 'TriggerMenuMT.HLTMenuConfig.Egamma.PrecisionCaloRec' ) + + # Dummy flag arg needed so that each reco sequence is held separately # in the RecoFragmentsPool -- only the RoIs are used to distinguish # different sequences. New convention is just to pass "None" for flags @@ -27,7 +30,7 @@ def precisionCaloRecoSequence(DummyFlag, RoIs): doAdd = False ) from TrigT2CaloCommon.CaloDef import HLTRoITopoRecoSequence - (precisionRecoSequence, caloclusters) = RecoFragmentsPool.retrieve(HLTRoITopoRecoSequence, None, RoIs=RoIs, lrtInfo='') + (precisionRecoSequence, caloclusters) = RecoFragmentsPool.retrieve(HLTRoITopoRecoSequence, None, RoIs=RoIs, algSuffix='') algo = egammaTopoClusterCopier() algo.InputTopoCollection = caloclusters @@ -49,7 +52,31 @@ def precisionCaloRecoSequence_LRT(DummyFlag, RoIs): doAdd = False ) from TrigT2CaloCommon.CaloDef import HLTRoITopoRecoSequence - (precisionRecoSequence, caloclusters) = RecoFragmentsPool.retrieve(HLTRoITopoRecoSequence, None, RoIs=RoIs,lrtInfo='_LRT') + (precisionRecoSequence, caloclusters) = RecoFragmentsPool.retrieve(HLTRoITopoRecoSequence, None, RoIs=RoIs,algSuffix='_LRT') + + algo = egammaTopoClusterCopier() + algo.InputTopoCollection = caloclusters + precisionRecoSequence += algo + sequenceOut = algo.OutputTopoCollection + + return (precisionRecoSequence, sequenceOut) + + + + +def precisionCaloRecoSequence_FWD(DummyFlag, RoIs): + log.info('DummyFlag_FWD = %s',str(DummyFlag)) + log.info('RoIs_FWD = %s',RoIs) + + egammaTopoClusterCopier = AlgFactory( egammaAlgsConf.egammaTopoClusterCopier, + name = 'TrigEgammaTopoClusterCopier%s' % RoIs , + InputTopoCollection= "caloclusters", + OutputTopoCollection=precisionCaloMenuDefs_FWD.precisionCaloClusters, + OutputTopoCollectionShallow="tmp_"+precisionCaloMenuDefs_FWD.precisionCaloClusters, + doAdd = False ) + + from TrigT2CaloCommon.CaloDef import HLTRoITopoRecoSequence + (precisionRecoSequence, caloclusters) = RecoFragmentsPool.retrieve(HLTRoITopoRecoSequence, None, RoIs=RoIs,algSuffix='_FWD') algo = egammaTopoClusterCopier() algo.InputTopoCollection = caloclusters diff --git a/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Egamma/PrecisionPhotonMenuSequences.py b/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Egamma/PrecisionPhotonMenuSequences.py new file mode 100644 index 0000000000000000000000000000000000000000..0626ad43171d885e7f879209d010f363774e46d2 --- /dev/null +++ b/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Egamma/PrecisionPhotonMenuSequences.py @@ -0,0 +1,55 @@ +# Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration + +# menu components +from TriggerMenuMT.HLTMenuConfig.Menu.MenuComponents import MenuSequence, RecoFragmentsPool +from AthenaCommon.CFElements import seqAND +from ViewAlgs.ViewAlgsConf import EventViewCreatorAlgorithm +from DecisionHandling.DecisionHandlingConf import ViewCreatorPreviousROITool + +# logger +from AthenaCommon.Logging import logging +log = logging.getLogger( 'TriggerMenuMT.HLTMenuConfig.Egamma.PrecisionPhotonMenuSequences' ) + + +def precisionPhotonSequence(ConfigFlags): + """ This function creates the PrecisionPhoton sequence""" + # Prepare first the EventView + InViewRoIs="PrecisionPhotonRoIs" + precisionPhotonViewsMaker = EventViewCreatorAlgorithm( "IMprecisionPhoton") + precisionPhotonViewsMaker.ViewFallThrough = True + precisionPhotonViewsMaker.RequireParentView = True + precisionPhotonViewsMaker.RoIsLink = "initialRoI" # ROI link used to merge inputs + precisionPhotonViewsMaker.RoITool = ViewCreatorPreviousROITool() # Tool used to supply ROIs for EventViews + precisionPhotonViewsMaker.InViewRoIs = InViewRoIs # names to use for the collection of which the RoIs are picked up + precisionPhotonViewsMaker.Views = "precisionPhotonViews" # Output container which has the view objects + + # Configure the reconstruction algorithm sequence + from TriggerMenuMT.HLTMenuConfig.Photon.PhotonRecoSequences import precisionPhotonRecoSequence + (precisionPhotonInViewSequence, sequenceOut) = precisionPhotonRecoSequence(InViewRoIs) + + precisionPhotonViewsMaker.ViewNodeName = precisionPhotonInViewSequence.name() + + theSequence = seqAND("precisionPhotonSequence", [precisionPhotonViewsMaker,precisionPhotonInViewSequence]) + return (theSequence, precisionPhotonViewsMaker, sequenceOut) + + + +def precisionPhotonMenuSequence(name): + + # This will be executed after pricisionCalo, so we need to pickup indeed the topoClusters by precisionCalo and add them here as requirements + + from AthenaConfiguration.AllConfigFlags import ConfigFlags + """Creates precisionPhoton sequence""" + (sequence, precisionPhotonViewsMaker, sequenceOut) = RecoFragmentsPool.retrieve(precisionPhotonSequence,ConfigFlags) + + # Hypo + from TrigEgammaHypo.TrigEgammaPrecisionPhotonHypoTool import createTrigEgammaPrecisionPhotonHypoAlgMT + thePrecisionPhotonHypo = createTrigEgammaPrecisionPhotonHypoAlgMT(name+"precisionPhotonHypo", sequenceOut) + + from TrigEgammaHypo.TrigEgammaPrecisionPhotonHypoTool import TrigEgammaPrecisionPhotonHypoToolFromDict + + return MenuSequence( Sequence = sequence, + Maker = precisionPhotonViewsMaker, + Hypo = thePrecisionPhotonHypo, + HypoToolGen = TrigEgammaPrecisionPhotonHypoToolFromDict) +