diff --git a/Trigger/TrigAlgorithms/TrigL2MuonSA/python/MdtDataPreparator_test.py b/Trigger/TrigAlgorithms/TrigL2MuonSA/python/MdtDataPreparator_test.py index 587fc173326ee1f418e22dfd2522136d0d9bf33e..742b8b517046d54c294850af715649d2a596d41a 100644 --- a/Trigger/TrigAlgorithms/TrigL2MuonSA/python/MdtDataPreparator_test.py +++ b/Trigger/TrigAlgorithms/TrigL2MuonSA/python/MdtDataPreparator_test.py @@ -44,7 +44,7 @@ def testCfg (configFlags): from MagFieldServices.MagFieldServicesConfig import MagneticFieldSvcCfg result.merge (MagneticFieldSvcCfg(configFlags, UseDCS = False)) - TrigL2MuonSA__MdtDataPreparator=CompFactory.TrigL2MuonSA__MdtDataPreparator + TrigL2MuonSA__MdtDataPreparator=CompFactory.TrigL2MuonSA.MdtDataPreparator result.addPublicTool (TrigL2MuonSA__MdtDataPreparator ('TrigL2MuonSA::MdtDataPreparator', OutputLevel = 1)) # noqa: ATL900 result.addEventAlgo (TestAlg ('TestAlg')) diff --git a/Trigger/TrigAlgorithms/TrigL2MuonSA/python/TrigL2MuonSAConfig_newJO.py b/Trigger/TrigAlgorithms/TrigL2MuonSA/python/TrigL2MuonSAConfig_newJO.py index e7f1b1d3b212d71def85af74bd6927b5ffdd7247..30d0ade1678b73b7c862eb0063a682405da33edf 100644 --- a/Trigger/TrigAlgorithms/TrigL2MuonSA/python/TrigL2MuonSAConfig_newJO.py +++ b/Trigger/TrigAlgorithms/TrigL2MuonSA/python/TrigL2MuonSAConfig_newJO.py @@ -29,9 +29,9 @@ def RpcDataPreparatorCfg( flags, roisKey ): acc.merge( rpcAcc ) # Set Rpc data preparator for MuFast data preparator - TrigL2MuonSA__RpcDataPreparator=CompFactory.TrigL2MuonSA__RpcDataPreparator - RpcDataPreparator = TrigL2MuonSA__RpcDataPreparator( RpcPrepDataProvider = "", - RpcRawDataProvider = "", + TrigL2MuonSA__RpcDataPreparator=CompFactory.getComp("TrigL2MuonSA::RpcDataPreparator") + RpcDataPreparator = TrigL2MuonSA__RpcDataPreparator( RpcPrepDataProvider = None, + RpcRawDataProvider = None, DecodeBS = False, DoDecoding = False ) acc.addPublicTool( RpcDataPreparator, primary=True ) # Now this is needed, but should be removed @@ -56,9 +56,9 @@ def TgcDataPreparatorCfg( flags, roisKey ): acc.merge( tgcAcc ) # Set Tgc data preparator for MuFast data preparator - TrigL2MuonSA__TgcDataPreparator=CompFactory.TrigL2MuonSA__TgcDataPreparator - TgcDataPreparator = TrigL2MuonSA__TgcDataPreparator( TgcPrepDataProvider = "", - TgcRawDataProvider = "", + TrigL2MuonSA__TgcDataPreparator=CompFactory.getComp("TrigL2MuonSA::TgcDataPreparator") + TgcDataPreparator = TrigL2MuonSA__TgcDataPreparator( TgcPrepDataProvider = None, + TgcRawDataProvider = None, DecodeBS = False, DoDecoding = False ) @@ -83,9 +83,9 @@ def MdtDataPreparatorCfg( flags, roisKey ): acc.merge( mdtAcc ) # Set Mdt data preparator for MuFast data preparator - TrigL2MuonSA__MdtDataPreparator=CompFactory.TrigL2MuonSA__MdtDataPreparator - MdtDataPreparator = TrigL2MuonSA__MdtDataPreparator( MdtPrepDataProvider = "", - MDT_RawDataProvider = "", + TrigL2MuonSA__MdtDataPreparator=CompFactory.getComp("TrigL2MuonSA::MdtDataPreparator") + MdtDataPreparator = TrigL2MuonSA__MdtDataPreparator( MdtPrepDataProvider = None, + MDT_RawDataProvider = None, DecodeBS = False, DoDecoding = False ) @@ -114,10 +114,10 @@ def CscDataPreparatorCfg( flags, roisKey ): acc.merge( cscAcc ) # Set Csc data preparator for MuFast data preparator - TrigL2MuonSA__CscDataPreparator=CompFactory.TrigL2MuonSA__CscDataPreparator - CscDataPreparator = TrigL2MuonSA__CscDataPreparator( CscPrepDataProvider = "", - CscClusterProvider = "", - CscRawDataProvider = "", + TrigL2MuonSA__CscDataPreparator=CompFactory.getComp("TrigL2MuonSA::CscDataPreparator") + CscDataPreparator = TrigL2MuonSA__CscDataPreparator( CscPrepDataProvider = None, + CscClusterProvider = None, + CscRawDataProvider = None, DecodeBS = False, DoDecoding = False ) @@ -147,14 +147,14 @@ def muFastSteeringCfg( flags, roisKey, setup="" ): acc.merge( cscAcc ) # Set MuFast data preparator - TrigL2MuonSA__MuFastDataPreparator=CompFactory.TrigL2MuonSA__MuFastDataPreparator + TrigL2MuonSA__MuFastDataPreparator=CompFactory.getComp("TrigL2MuonSA::MuFastDataPreparator") MuFastDataPreparator = TrigL2MuonSA__MuFastDataPreparator( CSCDataPreparator = CscDataPreparator, MDTDataPreparator = MdtDataPreparator, RPCDataPreparator = RpcDataPreparator, TGCDataPreparator = TgcDataPreparator ) # Setup the station fitter - TrigL2MuonSA__MuFastStationFitter,TrigL2MuonSA__PtFromAlphaBeta=CompFactory.getComps("TrigL2MuonSA__MuFastStationFitter","TrigL2MuonSA__PtFromAlphaBeta") + TrigL2MuonSA__MuFastStationFitter,TrigL2MuonSA__PtFromAlphaBeta=CompFactory.getComps("TrigL2MuonSA::MuFastStationFitter","TrigL2MuonSA::PtFromAlphaBeta") PtFromAlphaBeta = TrigL2MuonSA__PtFromAlphaBeta() if flags.Trigger.run2Config == '2016': PtFromAlphaBeta.useCscPt = False @@ -165,7 +165,7 @@ def muFastSteeringCfg( flags, roisKey, setup="" ): MuFastStationFitter = TrigL2MuonSA__MuFastStationFitter( PtFromAlphaBeta = PtFromAlphaBeta ) - TrigL2MuonSA__MuFastPatternFinder,TrigL2MuonSA__MuFastTrackFitter,TrigL2MuonSA__MuFastTrackExtrapolator,TrigL2MuonSA__MuCalStreamerTool,TrigL2MuonSA__CscSegmentMaker=CompFactory.getComps("TrigL2MuonSA__MuFastPatternFinder","TrigL2MuonSA__MuFastTrackFitter","TrigL2MuonSA__MuFastTrackExtrapolator","TrigL2MuonSA__MuCalStreamerTool","TrigL2MuonSA__CscSegmentMaker") + TrigL2MuonSA__MuFastPatternFinder,TrigL2MuonSA__MuFastTrackFitter,TrigL2MuonSA__MuFastTrackExtrapolator,TrigL2MuonSA__MuCalStreamerTool,TrigL2MuonSA__CscSegmentMaker=CompFactory.getComps("TrigL2MuonSA::MuFastPatternFinder","TrigL2MuonSA::MuFastTrackFitter","TrigL2MuonSA::MuFastTrackExtrapolator","TrigL2MuonSA::MuCalStreamerTool","TrigL2MuonSA::CscSegmentMaker") MuFastPatternFinder = TrigL2MuonSA__MuFastPatternFinder() MuFastTrackFitter = TrigL2MuonSA__MuFastTrackFitter() MuFastTrackExtrapolator = TrigL2MuonSA__MuFastTrackExtrapolator() @@ -173,7 +173,7 @@ def muFastSteeringCfg( flags, roisKey, setup="" ): CscSegmentMaker = TrigL2MuonSA__CscSegmentMaker() # Set Reco alg of muFast step - from TrigL2MuonSA.TrigL2MuonSAMonitoring import TrigL2MuonSAMonitoring + #from TrigL2MuonSA.TrigL2MuonSAMonitoring import TrigL2MuonSAMonitoring MuFastSteering=CompFactory.MuFastSteering muFastAlg = MuFastSteering( name = "MuFastSteering_Muon"+setup, DataPreparator = MuFastDataPreparator, @@ -189,7 +189,8 @@ def muFastSteeringCfg( flags, roisKey, setup="" ): USE_ROIBASEDACCESS_CSC = True, RpcErrToDebugStream = True, Timing = False, - MonTool = TrigL2MuonSAMonitoring() ) + MonTool = None ) + #MonTool = TrigL2MuonSAMonitoring() ) # Default backextrapolator is for MC Misaligned Detector # Based on MuonBackExtrapolatorForMisalignedDet at TrigMuonBackExtrapolator/TrigMuonBackExtrapolatorConfig.py @@ -229,8 +230,10 @@ def muFastSteeringCfg( flags, roisKey, setup="" ): def PtBarrelLUTSvcCfg( flags ): acc = ComponentAccumulator() - from TrigL2MuonSA.TrigL2MuonSAConfig import PtBarrelLUTSvc - ptBarrelLUTSvc = PtBarrelLUTSvc() + ptBarrelLUTSvc = CompFactory.getComp("TrigL2MuonSA::PtBarrelLUTSvc")(name = 'PtBarrelLUTSvc') + ptBarrelLUTSvc.LUTfile = "pt_barrel.lut" + ptBarrelLUTSvc.SP_LUTfile = "pt_barrelSP_new.lut" + acc.addService( ptBarrelLUTSvc ) return acc, ptBarrelLUTSvc @@ -238,8 +241,8 @@ def PtBarrelLUTSvcCfg( flags ): def PtBarrelLUTSvcCfg_MC( flags ): acc = ComponentAccumulator() - from TrigL2MuonSA.TrigL2MuonSAConfig import PtBarrelLUTSvc_MC - ptBarrelLUTSvc_MC = PtBarrelLUTSvc_MC() + ptBarrelLUTSvc_MC = CompFactory.getComp("TrigL2MuonSA::PtBarrelLUTSvc")(name = 'PtBarrelLUTSvc_MC') + ptBarrelLUTSvc_MC.LUTfile = "pt_barrel.mc10.lut" acc.addService( ptBarrelLUTSvc_MC ) return acc, ptBarrelLUTSvc_MC @@ -247,8 +250,10 @@ def PtBarrelLUTSvcCfg_MC( flags ): def PtEndcapLUTSvcCfg( flags ): acc = ComponentAccumulator() - from TrigL2MuonSA.TrigL2MuonSAConfig import PtEndcapLUTSvc - ptEndcapLUTSvc = PtEndcapLUTSvc() + ptEndcapLUTSvc = CompFactory.getComp("TrigL2MuonSA::PtEndcapLUTSvc")(name = 'PtEndcapLUTSvc') + ptEndcapLUTSvc.FileName = "pt_endcap.lut" + ptEndcapLUTSvc.EMeanLUT = "pt_comb_mean.lut" + ptEndcapLUTSvc.ESigmaLUT = "pt_comb_sigma.lut" acc.addService( ptEndcapLUTSvc ) return acc, ptEndcapLUTSvc @@ -256,8 +261,10 @@ def PtEndcapLUTSvcCfg( flags ): def PtEndcapLUTSvcCfg_MC( flags ): acc = ComponentAccumulator() - from TrigL2MuonSA.TrigL2MuonSAConfig import PtEndcapLUTSvc_MC - ptEndcapLUTSvc_MC = PtEndcapLUTSvc_MC() + ptEndcapLUTSvc_MC = CompFactory.getComp("TrigL2MuonSA::PtEndcapLUTSvc")(name = 'PtEndcapLUTSvc_MC') + ptEndcapLUTSvc_MC.FileName = "pt_endcap.mc10.lut" + ptEndcapLUTSvc_MC.EMeanLUT = "pt_comb_mean.lut" + ptEndcapLUTSvc_MC.ESigmaLUT = "pt_comb_sigma.lut" acc.addService( ptEndcapLUTSvc_MC ) return acc, ptEndcapLUTSvc_MC @@ -266,8 +273,8 @@ def PtEndcapLUTSvcCfg_MC( flags ): def AlignmentBarrelLUTSvcCfg( flags ): acc = ComponentAccumulator() - from TrigL2MuonSA.TrigL2MuonSAConfig import AlignmentBarrelLUTSvc - alignmentBarrelLUTSvc = AlignmentBarrelLUTSvc() + alignmentBarrelLUTSvc = CompFactory.getComp("TrigL2MuonSA::AlignmentBarrelLUTSvc")(name = 'AlignmentBarrelLUTSvc') + alignmentBarrelLUTSvc.LUTfile = "dZ_barrel.lut" acc.addService( alignmentBarrelLUTSvc ) return acc, alignmentBarrelLUTSvc diff --git a/Trigger/TrigAlgorithms/TrigT2CaloCommon/python/CaloDef.py b/Trigger/TrigAlgorithms/TrigT2CaloCommon/python/CaloDef.py index 147e78c881b1a665106ee6565767c0bc50642bfc..64283dd03dab9bb42d1662821367487dc9e30319 100644 --- a/Trigger/TrigAlgorithms/TrigT2CaloCommon/python/CaloDef.py +++ b/Trigger/TrigAlgorithms/TrigT2CaloCommon/python/CaloDef.py @@ -1,6 +1,8 @@ +# Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration + from AthenaCommon.Constants import ERROR from AthenaCommon.CFElements import seqAND, parOR -from ViewAlgs.ViewAlgsConf import EventViewCreatorAlgorithm, ViewCreatorInitialROITool +from AthenaConfiguration.ComponentFactory import CompFactory def setMinimalCaloSetup() : from AthenaCommon.AppMgr import ServiceMgr as svcMgr @@ -73,10 +75,10 @@ def fastCaloRecoSequence(InViewRoIs, doRinger=False, ClustersName="HLT_L2CaloEMC def fastCaloEVCreator(): InViewRoIs="EMCaloRoIs" - fastCaloViewsMaker = EventViewCreatorAlgorithm( "IMfastCalo" ) + fastCaloViewsMaker = CompFactory.EventViewCreatorAlgorithm( "IMfastCalo" ) fastCaloViewsMaker.ViewFallThrough = True fastCaloViewsMaker.RoIsLink = "initialRoI" - fastCaloViewsMaker.RoITool = ViewCreatorInitialROITool() + fastCaloViewsMaker.RoITool = CompFactory.ViewCreatorInitialROITool() fastCaloViewsMaker.InViewRoIs = InViewRoIs fastCaloViewsMaker.Views = "EMCaloViews" fastCaloViewsMaker.ViewNodeName = "fastCaloInViewSequence" @@ -102,8 +104,8 @@ def createFastCaloSequence(EMRoIDecisions, doRinger=False, ClustersName="HLT_L2C def clusterFSInputMaker( ): """Creates the inputMaker for FS in menu""" RoIs = 'FSJETRoI' - from DecisionHandling.DecisionHandlingConf import InputMakerForRoI - InputMakerAlg = InputMakerForRoI("IMclusterFS", RoIsLink="initialRoI") + from AthenaConfiguration.ComponentFactory import CompFactory + InputMakerAlg = CompFactory.InputMakerForRoI("IMclusterFS", RoIsLink="initialRoI") InputMakerAlg.RoIs=RoIs return InputMakerAlg diff --git a/Trigger/TrigAlgorithms/TrigT2CaloCommon/python/TrigCaloDataAccessConfig.py b/Trigger/TrigAlgorithms/TrigT2CaloCommon/python/TrigCaloDataAccessConfig.py index 13f0d0758b4a7c32a77f409494a4a3c3a2bfad6e..89b0204f7c36eadb2f13431f90298bddefd51b11 100644 --- a/Trigger/TrigAlgorithms/TrigT2CaloCommon/python/TrigCaloDataAccessConfig.py +++ b/Trigger/TrigAlgorithms/TrigT2CaloCommon/python/TrigCaloDataAccessConfig.py @@ -34,8 +34,7 @@ def createLArRoI_Map( flags ): def trigCaloDataAccessSvcCfg( flags ): acc = ComponentAccumulator() - from TrigT2CaloCommon.TrigT2CaloCommonConfig import TrigCaloDataAccessSvc - svc = TrigCaloDataAccessSvc() + svc = CompFactory.TrigCaloDataAccessSvc() # since the svc depends on calo geometry configure it here from LArGeoAlgsNV.LArGMConfig import LArGMCfg @@ -87,9 +86,7 @@ def trigCaloDataAccessSvcCfg( flags ): if __name__ == "__main__": - from AthenaCommon.Configurable import Configurable - Configurable.configurableRun3Behavior = True from AthenaConfiguration.TestDefaults import defaultTestFiles from AthenaConfiguration.AllConfigFlags import ConfigFlags ConfigFlags.Input.Files = defaultTestFiles.RAW diff --git a/Trigger/TrigAlgorithms/TrigT2CaloCommon/test/test_dataaccessNewJO.sh b/Trigger/TrigAlgorithms/TrigT2CaloCommon/test/test_dataaccessNewJO.sh index 24e9d9f712850530826255cbb00304c081604dc3..9d689d5380cc0268ddc1d207ba8b4efe01585b86 100755 --- a/Trigger/TrigAlgorithms/TrigT2CaloCommon/test/test_dataaccessNewJO.sh +++ b/Trigger/TrigAlgorithms/TrigT2CaloCommon/test/test_dataaccessNewJO.sh @@ -11,5 +11,6 @@ fi echo "configuration stored in the pickle" confTool.py --printConf test.pkl -echo "running athena " -athena test.pkl +echo "Executing the pickle file " +CARunner.py test.pkl 10 + diff --git a/Trigger/TrigAlgorithms/TrigT2CaloEgamma/python/TrigT2CaloEgammaConfig.py b/Trigger/TrigAlgorithms/TrigT2CaloEgamma/python/TrigT2CaloEgammaConfig.py index 573d90f48f2354758bf787246e31aa4f775812de..3cd0e702c2e75899fd1ecb59c8317e56d38baed7 100644 --- a/Trigger/TrigAlgorithms/TrigT2CaloEgamma/python/TrigT2CaloEgammaConfig.py +++ b/Trigger/TrigAlgorithms/TrigT2CaloEgamma/python/TrigT2CaloEgammaConfig.py @@ -12,7 +12,7 @@ from TrigT2CaloEgamma.TrigT2CaloEgammaConf import EgammaReEmEnFex from TrigT2CaloEgamma.TrigT2CaloEgammaConf import EgammaReHadEnFex from TrigT2CaloEgamma.TrigT2CaloEgammaConf import RingerReFex from TrigT2CaloEgamma.TrigT2CaloEgammaConf import T2CaloEgamma -from TrigT2CaloEgamma.TrigT2CaloEgammaConf import T2CaloEgammaReFastAlgo + from TrigT2CaloCalibration.EgammaCalibrationConfig import EgammaHitsCalibrationBarrelConfig, EgammaHitsCalibrationEndcapConfig, EgammaGapCalibrationConfig from TrigT2CaloCalibration.EgammaCalibrationConfig import EgammaTransitionRegionsConfig @@ -398,8 +398,8 @@ class T2CaloEgamma_Ringer (T2CaloEgamma_eGamma): self.TimerNtuple="T2CaloEgamma.T2CaEgtTotRinger" self.AthenaMonTools += [TrigT2CaloEgammaRingerTimeMonitoring()] - -class T2CaloEgamma_ReFastAlgo (T2CaloEgammaReFastAlgo): +from AthenaConfiguration.ComponentFactory import CompFactory +class T2CaloEgamma_ReFastAlgo (CompFactory.T2CaloEgammaReFastAlgo): __slots__ = [] def __init__ (self, name="T2CaloEgamma_ReFastAlgo", ClustersName="HLT_L2CaloEMClusters", doRinger=False, RingerKey="HLT_L2CaloRinger"): super(T2CaloEgamma_ReFastAlgo, self).__init__(name) diff --git a/Trigger/TrigAlgorithms/TrigT2CaloEgamma/python/TrigT2CaloEgammaMTConfig.py b/Trigger/TrigAlgorithms/TrigT2CaloEgamma/python/TrigT2CaloEgammaMTConfig.py index c0a7e7f57a074cd12a27bafc802e96e8b54bb540..f464090ee7e0d430060a9171cf9a8867fa2a1f6d 100644 --- a/Trigger/TrigAlgorithms/TrigT2CaloEgamma/python/TrigT2CaloEgammaMTConfig.py +++ b/Trigger/TrigAlgorithms/TrigT2CaloEgamma/python/TrigT2CaloEgammaMTConfig.py @@ -1,9 +1,9 @@ # # Copyright (C) 2002-2019 CERN for the benefit of the ATLAS collaboration # + from AthenaConfiguration.ComponentFactory import CompFactory from AthenaConfiguration.ComponentAccumulator import ComponentAccumulator -T2CaloEgammaReFastAlgo=CompFactory.T2CaloEgammaReFastAlgo def fastL2EgammaClusteringAlg( flags, roisKey="EMCaloRoIs", doRinger=False): @@ -37,7 +37,7 @@ def fastL2EgammaClusteringAlg( flags, roisKey="EMCaloRoIs", doRinger=False): samph.ExtraInputs=[('TileEMScale','ConditionStore+TileEMScale'),('TileBadChannels','ConditionStore+TileBadChannels')] acc.addPublicTool( samph ) - alg = T2CaloEgammaReFastAlgo("FastEMCaloAlgo") + alg = CompFactory.T2CaloEgammaReFastAlgo("FastEMCaloAlgo") from TrigEDMConfig.TriggerEDMRun3 import recordable alg.ClustersName = recordable('HLT_L2CaloEMClusters') alg.RoIs = roisKey diff --git a/Trigger/TrigConfiguration/TrigConfigSvc/python/TrigConfigSvcCfg.py b/Trigger/TrigConfiguration/TrigConfigSvc/python/TrigConfigSvcCfg.py index 2e0660ce64c63fe0225fd7a6e0dd324851773279..7d76ea9843ae0f51a6b27798b6a9b8482615b17c 100644 --- a/Trigger/TrigConfiguration/TrigConfigSvc/python/TrigConfigSvcCfg.py +++ b/Trigger/TrigConfiguration/TrigConfigSvc/python/TrigConfigSvcCfg.py @@ -3,6 +3,8 @@ from PyUtils.Decorators import memoize from AthenaCommon.Logging import logging from collections import OrderedDict as odict +from AthenaConfiguration.ComponentFactory import CompFactory +from AthenaConfiguration.ComponentAccumulator import ComponentAccumulator, conf2toConfigurable import json def getHLTPrescaleFolderName(): @@ -158,12 +160,14 @@ def getL1ConfigSvc( flags = None ): log = logging.getLogger('TrigConfigSvcCfg') from AthenaCommon.Logging import log from TriggerJobOpts.TriggerFlags import TriggerFlags - from TrigConfigSvc.TrigConfigSvcConf import TrigConf__LVL1ConfigSvc - from AthenaCommon.AppMgr import theApp + from AthenaCommon.Configurable import Configurable + print("HERE importing as {}".format(Configurable.configurableRun3Behavior)) # generate menu file generatedFile = generateL1Menu( flags=flags ) # configure config svc + + TrigConf__LVL1ConfigSvc = CompFactory.getComp("TrigConf::LVL1ConfigSvc") l1ConfigSvc = TrigConf__LVL1ConfigSvc( "LVL1ConfigSvc" ) l1ConfigSvc.ConfigSource = "XML" @@ -186,7 +190,7 @@ def getL1ConfigSvc( flags = None ): l1ConfigSvc.JsonFileName = l1JsonFileName log.info( "For run 3 style menu access configured LVL1ConfigSvc with InputType='file' and JsonFileName=%s", l1JsonFileName ) - theApp.CreateSvc += [ "TrigConf::LVL1ConfigSvc/LVL1ConfigSvc" ] + #theApp.CreateSvc += [ "TrigConf::LVL1ConfigSvc/LVL1ConfigSvc" ] return l1ConfigSvc @@ -194,17 +198,18 @@ def getL1ConfigSvc( flags = None ): @memoize def getHLTConfigSvc( flags = None ): log = logging.getLogger('TrigConfigSvcCfg') - from AthenaCommon.Logging import log - from TrigConfigSvc.TrigConfigSvcConf import TrigConf__HLTConfigSvc - from AthenaCommon.AppMgr import theApp - hltConfigSvc = TrigConf__HLTConfigSvc( "HLTConfigSvc" ) + HLTConfigSvc = CompFactory.getComp("TrigConf::HLTConfigSvc") + hltConfigSvc = HLTConfigSvc("HLTConfigSvc") + hltXMLFile = "None" hltConfigSvc.ConfigSource = "None" hltConfigSvc.XMLMenuFile = hltXMLFile hltConfigSvc.InputType = "file" hltJsonFileName = getHLTMenuFileName( flags ) hltConfigSvc.JsonFileName = hltJsonFileName - theApp.CreateSvc += [ "TrigConf::HLTConfigSvc/HLTConfigSvc" ] + # TODO revisit if needed + #from AthenaCommon.AppMgr import theApp + #theApp.CreateSvc += [ "TrigConf::HLTConfigSvc/HLTConfigSvc" ] log.info( "Configured HLTConfigSvc with run 2 style input file : %s", hltXMLFile ) log.info( "Configured HLTConfigSvc with InputType='file' and JsonFileName=%s", hltJsonFileName ) return hltConfigSvc @@ -214,7 +219,7 @@ def getHLTConfigSvc( flags = None ): @memoize def setupHLTPrescaleCondAlg( flags = None ): log = logging.getLogger('TrigConfigSvcCfg') - from TrigConfigSvc.TrigConfigSvcConf import TrigConf__HLTPrescaleCondAlg + TrigConf__HLTPrescaleCondAlg = CompFactory.getComp("TrigConf::HLTPrescaleCondAlg") hltPrescaleCondAlg = TrigConf__HLTPrescaleCondAlg( "HLTPrescaleCondAlg" ) tc = getTrigConfigFromFlag( flags ) @@ -239,14 +244,13 @@ def setupHLTPrescaleCondAlg( flags = None ): if flags is None: # old style config from AthenaCommon.AlgSequence import AthSequencer condSequence = AthSequencer("AthCondSeq") - condSequence += hltPrescaleCondAlg + condSequence += conf2toConfigurable( hltPrescaleCondAlg ) log.info("Adding HLTPrescaleCondAlg to AthCondSeq") return hltPrescaleCondAlg # provide L1 config service in new JO def L1ConfigSvcCfg( flags ): - from AthenaConfiguration.ComponentAccumulator import ComponentAccumulator acc = ComponentAccumulator() acc.addService( getL1ConfigSvc( flags ) ) return acc @@ -281,9 +285,6 @@ def HLTPrescaleCondAlgCfg( flags ): if __name__ == "__main__": - from AthenaCommon.Configurable import Configurable - Configurable.configurableRun3Behavior=True - from AthenaConfiguration.AllConfigFlags import ConfigFlags ConfigFlags.lock() acc = TrigConfigSvcCfg( ConfigFlags ) diff --git a/Trigger/TrigCost/RatesAnalysis/share/RatesAnalysisFullMenu.py b/Trigger/TrigCost/RatesAnalysis/share/RatesAnalysisFullMenu.py index 0b73cf1b596f56acf914272a04e5c06afc7c3948..c8e00bb707bc835c6ea62562e923d8fafbc5578c 100755 --- a/Trigger/TrigCost/RatesAnalysis/share/RatesAnalysisFullMenu.py +++ b/Trigger/TrigCost/RatesAnalysis/share/RatesAnalysisFullMenu.py @@ -71,11 +71,11 @@ if __name__=='__main__': from AthenaServices.MetaDataSvcConfig import MetaDataSvcCfg cfg.merge(MetaDataSvcCfg(ConfigFlags)) - cfgsvc = CompFactory.TrigConf__xAODConfigSvc('xAODConfigSvc') + cfgsvc = CompFactory.TrigConf.xAODConfigSvc('xAODConfigSvc') cfg.addService(cfgsvc) from TrigEDMConfig.TriggerEDM import EDMLibraries - tdt = CompFactory.Trig__TrigDecisionTool('TrigDecisionTool') + tdt = CompFactory.Trig.TrigDecisionTool('TrigDecisionTool') tdt.TrigConfigSvc = cfgsvc tdt.NavigationFormat = "TrigComposite" tdt.Navigation.Dlls = [e for e in EDMLibraries if 'TPCnv' not in e] diff --git a/Trigger/TrigHypothesis/TrigEgammaHypo/python/TrigL2CaloHypoTool.py b/Trigger/TrigHypothesis/TrigEgammaHypo/python/TrigL2CaloHypoTool.py index 14283124db828e9ceadf03212829f270f71081c5..6a995f08a34e9faf401ef33f43a1ecfdde66bc63 100644 --- a/Trigger/TrigHypothesis/TrigEgammaHypo/python/TrigL2CaloHypoTool.py +++ b/Trigger/TrigHypothesis/TrigEgammaHypo/python/TrigL2CaloHypoTool.py @@ -1,10 +1,11 @@ # Copyright (C) 2002-2019 CERN for the benefit of the ATLAS collaboration from AthenaCommon.SystemOfUnits import GeV +from AthenaCommon.Include import Include +# flake8: noqa from AthenaMonitoringKernel.GenericMonitoringTool import GenericMonitoringTool from TriggerJobOpts.TriggerFlags import TriggerFlags -from TrigEgammaHypo.TrigEgammaHypoConf import TrigL2CaloHypoToolInc from TrigEgammaHypo.TrigL2CaloHypoCutDefs import L2CaloCutMaps from AthenaCommon.Logging import logging @@ -13,8 +14,8 @@ log = logging.getLogger('TrigL2CaloHypoTool') def _IncTool(name, threshold, sel): possibleSel = L2CaloCutMaps( threshold ).MapsHADETthr.keys() - - tool = TrigL2CaloHypoToolInc( name ) + from AthenaConfiguration.ComponentFactory import CompFactory + tool = CompFactory.TrigL2CaloHypoToolInc( name ) tool.AcceptAll = False if 'Validation' in TriggerFlags.enableMonitoring() or 'Online' in TriggerFlags.enableMonitoring(): @@ -40,8 +41,8 @@ def _IncTool(name, threshold, sel): monTool.defineHistogram('Weta2', type='TH1F', path='EXPERT', title="L2Calo Hypo Weta2; E Width in sampling 2", xbins=96, xmin=-0.1, xmax=0.61) monTool.defineHistogram('Wstot', type='TH1F', path='EXPERT', title="L2Calo Hypo Wstot; E Width in sampling 1", xbins=48, xmin=-0.1, xmax=11.) monTool.defineHistogram('F3', type='TH1F', path='EXPERT', title="L2Calo Hypo F3; E3/(E0+E1+E2+E3)", xbins=96, xmin=-0.1, xmax=1.1) - - monTool.HistPath = 'L2CaloHypo/'+tool.name() + + monTool.HistPath = 'L2CaloHypo/'+tool.getName() tool.MonTool = monTool @@ -55,25 +56,25 @@ def _IncTool(name, threshold, sel): tool.F1thr = same( 0.005 ) tool.ET2thr = same( 90.0*GeV ) tool.HADET2thr = same( 999.0 ) - tool.HADETthr = same( 0.058 ) - tool.WETA2thr = same( 99999. ) + tool.HADETthr = same( 0.058 ) + tool.WETA2thr = same( 99999. ) tool.WSTOTthr = same( 99999. ) tool.F3thr = same( 99999. ) - tool.CARCOREthr = same( -9999. ) + tool.CARCOREthr = same( -9999. ) tool.CAERATIOthr = same( -9999. ) if sel == 'nocut' or 'idperf' in name: tool.AcceptAll = True - tool.ETthr = same( float( threshold )*GeV ) + tool.ETthr = same( float( threshold )*GeV ) tool.dETACLUSTERthr = 9999. tool.dPHICLUSTERthr = 9999. tool.F1thr = same( 0.0 ) tool.HADETthr = same( 9999. ) - tool.CARCOREthr = same( -9999. ) + tool.CARCOREthr = same( -9999. ) tool.CAERATIOthr = same( -9999. ) elif "etcut" in sel: # stcut is part of the name, it can as well be etcut1step (test chains) - tool.ETthr = same( ( float( threshold ) - 3 )*GeV ) + tool.ETthr = same( ( float( threshold ) - 3 )*GeV ) # No other cuts applied tool.dETACLUSTERthr = 9999. tool.dPHICLUSTERthr = 9999. @@ -88,10 +89,10 @@ def _IncTool(name, threshold, sel): tool.CARCOREthr = L2CaloCutMaps( threshold ).MapsCARCOREthr[sel] tool.CAERATIOthr = L2CaloCutMaps( threshold ).MapsCAERATIOthr[sel] - + etaBinsLen = len( tool.EtaBins ) - 1 for prop in "ETthr HADETthr CARCOREthr CARCOREthr F1thr F3thr WSTOTthr WETA2thr HADETthr HADETthr ET2thr".split(): - propLen = len( getattr( tool, prop ) ) + propLen = len( getattr( tool, prop ) ) assert propLen == etaBinsLen , "In " + name + " " + prop + " has length " + str( propLen ) + " which is different from EtaBins which has length " + str( etaBinsLen ) # assert _l( EtaBins, tool.ETthr, tool.HADETthr, tool.CARCOREthr, tool.CARCOREthr ) , "All list properties should have equal length ( as EtaBins )" @@ -100,8 +101,8 @@ def _IncTool(name, threshold, sel): def _MultTool(name): - from TrigEgammaHypo.TrigEgammaHypoConf import TrigL2CaloHypoToolMult - return TrigL2CaloHypoToolMult( name ) + from AthenaConfiguration.ComponentFactory import CompFactory + return CompFactory.TrigL2CaloHypoToolMult( name ) @@ -114,13 +115,13 @@ def TrigL2CaloHypoToolFromDict( d ): def __th(cpart): return cpart['threshold'] - + def __sel(cpart): return cpart['addInfo'][0] if cpart['addInfo'] else cpart['IDinfo'] - + name = d['chainName'] - + # do we need to configure high multiplicity selection, either NeX or ex_ey_ez etc...? if len(cparts) > 1 or __mult(cparts[0]) > 1: tool = _MultTool(name) @@ -129,9 +130,9 @@ def TrigL2CaloHypoToolFromDict( d ): tool.SubTools += [ _IncTool( cpart['chainPartName']+"_"+str(cutNumber), __th( cpart ), __sel( cpart) ) ] return tool - else: + else: return _IncTool( name, __th( cparts[0]), __sel( cparts[0] ) ) - + def TrigL2CaloHypoToolFromName( name, conf ): """ To be phased out """ @@ -139,11 +140,11 @@ def TrigL2CaloHypoToolFromName( name, conf ): from TriggerMenuMT.HLTMenuConfig.Menu.DictFromChainName import dictFromChainName decodedDict = dictFromChainName(conf) - + return TrigL2CaloHypoToolFromDict( decodedDict ) - -if __name__ == "__main__": + +if __name__ == "__main__": TriggerFlags.enableMonitoring=['Validation'] t = TrigL2CaloHypoToolFromName( "HLT_e10_etcut_L1EM3","HLT_e10_etcut_L1EM3" ) diff --git a/Trigger/TrigHypothesis/TrigEgammaHypo/python/TrigL2ElectronHypoTool.py b/Trigger/TrigHypothesis/TrigEgammaHypo/python/TrigL2ElectronHypoTool.py index a38f1bafdb4de80d10e3c46ee63c65da64376e85..c2eb94a1b687776c26ceabf946a46fa437bd0e1d 100644 --- a/Trigger/TrigHypothesis/TrigEgammaHypo/python/TrigL2ElectronHypoTool.py +++ b/Trigger/TrigHypothesis/TrigEgammaHypo/python/TrigL2ElectronHypoTool.py @@ -2,9 +2,11 @@ from AthenaCommon.SystemOfUnits import GeV from AthenaCommon.Logging import logging +from AthenaCommon.Include import Include +# flake8: noqa from AthenaMonitoringKernel.GenericMonitoringTool import GenericMonitoringTool -from TrigEgammaHypo.TrigEgammaHypoConf import TrigL2ElectronHypoTool + log = logging.getLogger('TrigL2ElectronHypoTool') @@ -15,8 +17,8 @@ def TrigL2ElectronHypoToolFromDict( chainDict ): thresholds = sum([ [cpart['threshold']]*int(cpart['multiplicity']) for cpart in cparts], []) name = chainDict['chainName'] - - tool = TrigL2ElectronHypoTool(name) + from AthenaConfiguration.ComponentFactory import CompFactory + tool = CompFactory.TrigL2ElectronHypoTool(name) monTool = GenericMonitoringTool("MonTool"+name) monTool.defineHistogram('CutCounter', type='TH1I', path='EXPERT', title="L2Electron Hypo Cut Counter;Cut Counter", xbins=8, xmin=-1.5, xmax=7.5, opt="kCumulative") @@ -28,7 +30,7 @@ def TrigL2ElectronHypoToolFromDict( chainDict ): monTool.defineHistogram('CaloEta', type='TH1F', path='EXPERT', title="L2Electron Hypo #eta^{calo} ; #eta^{calo};Nevents", xbins=200, xmin=-2.5, xmax=2.5) monTool.defineHistogram('CaloPhi', type='TH1F', path='EXPERT', title="L2Electron Hypo #phi^{calo} ; #phi^{calo};Nevents", xbins=320, xmin=-3.2, xmax=3.2) - monTool.HistPath = 'L2ElectronHypo/'+tool.name() + monTool.HistPath = 'L2ElectronHypo/'+tool.getName() tool.MonTool = monTool nt = len( thresholds ) diff --git a/Trigger/TrigHypothesis/TrigEgammaHypo/python/TrigL2PhotonHypoTool.py b/Trigger/TrigHypothesis/TrigEgammaHypo/python/TrigL2PhotonHypoTool.py index 12437d0e5043ef3f3df38bd9a0045d75e3ec8177..25b409716746dcc2367d71daf74f1a124959e3a6 100644 --- a/Trigger/TrigHypothesis/TrigEgammaHypo/python/TrigL2PhotonHypoTool.py +++ b/Trigger/TrigHypothesis/TrigEgammaHypo/python/TrigL2PhotonHypoTool.py @@ -1,7 +1,9 @@ # Copyright (C) 2002-2019 CERN for the benefit of the ATLAS collaboration -from TrigEgammaHypo.TrigEgammaHypoConf import TrigL2PhotonHypoTool + from AthenaCommon.SystemOfUnits import GeV +from AthenaCommon.Include import Include +# flake8: noqa from AthenaMonitoringKernel.GenericMonitoringTool import GenericMonitoringTool from AthenaCommon.Logging import logging log = logging.getLogger('TrigL2PhotonHypoTool') @@ -11,8 +13,8 @@ def TrigL2PhotonHypoToolFromDict( chainDict ): thresholds = sum([ [cpart['threshold']]*int(cpart['multiplicity']) for cpart in chainDict['chainParts']], []) name = chainDict['chainName'] - - tool = TrigL2PhotonHypoTool(name) + from AthenaConfiguration.ComponentFactory import CompFactory + tool = CompFactory.TrigL2PhotonHypoTool(name) monTool = GenericMonitoringTool("MonTool"+name) monTool.defineHistogram('CutCounter', type='TH1I', path='EXPERT', title="L2Photon Hypo Cut Counter;Cut Counter", xbins=8, xmin=-1.5, xmax=7.5, opt="kCumulative") @@ -20,7 +22,7 @@ def TrigL2PhotonHypoToolFromDict( chainDict ): monTool.defineHistogram('CaloEta', type='TH1F', path='EXPERT', title="L2Photon Hypo #eta^{calo} ; #eta^{calo};Nevents", xbins=200, xmin=-2.5, xmax=2.5) monTool.defineHistogram('CaloPhi', type='TH1F', path='EXPERT', title="L2Photon Hypo #phi^{calo} ; #phi^{calo};Nevents", xbins=320, xmin=-3.2, xmax=3.2) - monTool.HistPath = 'L2PhotonHypo/'+tool.name() + monTool.HistPath = 'L2PhotonHypo/'+tool.getName() tool.MonTool = monTool nt = len( thresholds ) diff --git a/Trigger/TrigHypothesis/TrigMuonHypoMT/python/TrigMuonHypoMTConfig.py b/Trigger/TrigHypothesis/TrigMuonHypoMT/python/TrigMuonHypoMTConfig.py index 88b6cb96c27bdd3eb109f8cfe4c07470292781ae..a9905fc06929d304b9f41aaaf56ea05a07b2bbb5 100755 --- a/Trigger/TrigHypothesis/TrigMuonHypoMT/python/TrigMuonHypoMTConfig.py +++ b/Trigger/TrigHypothesis/TrigMuonHypoMT/python/TrigMuonHypoMTConfig.py @@ -1,17 +1,18 @@ # Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration # import Hypo Algs/Tools +from AthenaConfiguration.ComponentFactory import CompFactory # tools are imported from the factory, (NewJO) from TrigMuonHypoMT.TrigMuonHypoMTConf import ( # noqa: F401 (algs not used here) - TrigMufastHypoAlg, TrigMufastHypoTool, - TrigmuCombHypoAlg, TrigmuCombHypoTool, - TrigMuonEFMSonlyHypoAlg, TrigMuonEFMSonlyHypoTool, - TrigMuisoHypoAlg, TrigMuisoHypoTool, - TrigMuonEFCombinerHypoAlg, TrigMuonEFCombinerHypoTool, - TrigMuonEFTrackIsolationHypoAlg, TrigMuonEFTrackIsolationHypoTool, - TrigL2MuonOverlapRemoverMufastAlg, TrigL2MuonOverlapRemoverMucombAlg, TrigL2MuonOverlapRemoverTool, - TrigMuonEFInvMassHypoAlg, TrigMuonEFInvMassHypoTool, - TrigMuonLateMuRoIHypoAlg, TrigMuonLateMuRoIHypoTool -) + TrigMufastHypoAlg, + TrigmuCombHypoAlg, + TrigMuonEFMSonlyHypoAlg, + TrigMuisoHypoAlg, + TrigMuonEFCombinerHypoAlg, + TrigMuonEFTrackIsolationHypoAlg, + TrigL2MuonOverlapRemoverMufastAlg, + TrigMuonEFInvMassHypoAlg, + TrigMuonLateMuRoIHypoAlg + ) # import monitoring from TrigMuonHypoMT.TrigMuonHypoMonitoringMT import ( @@ -25,25 +26,27 @@ from TrigMuonHypoMT.TrigMuonHypoMonitoringMT import ( TrigMuonEFInvMassHypoMonitoring ) + # other imports from AthenaCommon.SystemOfUnits import GeV from AthenaCommon.Logging import logging log = logging.getLogger('TrigMuonHypoMTConfig') +TrigL2MuonOverlapRemoverTool=CompFactory.TrigL2MuonOverlapRemoverTool trigMuonEFSAThresholds = { '0GeV' : [ [0,9.9], [ 0.100 ] ], '2GeV' : [ [0,9.9], [ 2.000 ] ], '3GeV' : [ [0,9.9], [ 3.000 ] ], '4GeV' : [ [0,1.05,1.5,2.0,9.9], [ 3.0, 2.5, 2.5, 2.5] ], - '4GeV_barrelOnly' : [ [0,1.05,1.5,2.0,9.9], [ 3.0,1000.0,1000.0,1000.0]], + '4GeV_barrelOnly' : [ [0,1.05,1.5,2.0,9.9], [ 3.0,1000.0,1000.0,1000.0]], '5GeV' : [ [0,1.05,1.5,2.0,9.9], [ 4.6, 3.3, 4.0, 4.5] ], '6GeV' : [ [0,1.05,1.5,2.0,9.9], [ 5.4, 4.5, 4.9, 5.3] ], '7GeV' : [ [0,1.05,1.5,2.0,9.9], [ 6.3, 5.6, 5.6, 6.3] ], '8GeV' : [ [0,1.05,1.5,2.0,9.9], [ 7.2, 6.7, 6.4, 7.3] ], '10GeV' : [ [0,1.05,1.5,2.0,9.9], [ 8.9, 9.0, 8.4, 9.2] ], '11GeV' : [ [0,1.05,1.5,2.0,9.9], [ 9.8, 10.1, 9.3, 10.1] ], - '12GeV' : [ [0,1.05,1.5,2.0,9.9], [ 10.6, 11.0, 10.2, 11.0] ], + '12GeV' : [ [0,1.05,1.5,2.0,9.9], [ 10.6, 11.0, 10.2, 11.0] ], '13GeV' : [ [0,1.05,1.5,2.0,9.9], [ 11.4, 12.0, 11.1, 12.0] ], '14GeV' : [ [0,1.05,1.5,2.0,9.9], [ 12.2, 13.0, 12.1, 13.0] ], '15GeV' : [ [0,1.05,1.5,2.0,9.9], [ 13.0, 14.0, 13.0, 14.0] ], @@ -57,14 +60,14 @@ trigMuonEFSAThresholds = { '30GeV' : [ [0,1.05,1.5,2.0,9.9], [ 25.0, 24.5, 23.0, 26.0] ], '35GeV' : [ [0,1.05,1.5,2.0,9.9], [ 25.0, 24.5, 23.0, 26.0] ], # not optimized '36GeV' : [ [0,1.05,1.5,2.0,9.9], [ 25.0, 24.5, 23.0, 26.0] ], # not optimized - '40GeV' : [ [0,1.05,1.5,2.0,9.9], [ 31.5, 30.0, 28.5, 32.5] ], - '40GeV_barrelOnly' : [ [0,1.05,1.5,2.0,9.9], [ 31.5,1000.0,1000.0,1000.0]], - '40GeV_uptoEC2' : [ [0,1.05,1.5,2.0,9.9], [ 31.5, 30.0, 28.5, 1000.0]], - '50GeV' : [ [0,1.05,1.5,2.0,9.9], [ 45.0, 45.0, 45.0, 45.0] ], - '50GeV_barrelOnly' : [ [0,1.05,1.5,2.0,9.9], [ 45.0,1000.0,1000.0,1000.0]], - '60GeV' : [ [0,1.05,1.5,2.0,9.9], [ 54.0, 54.0, 54.0, 54.0] ], - '60GeV_barrelOnly' : [ [0,1.05,1.5,2.0,9.9], [ 54.0,1000.0,1000.0,1000.0]], - '70GeV' : [ [0,1.05,1.5,2.0,9.9], [ 63.0, 63.0, 63.0, 63.0] ], + '40GeV' : [ [0,1.05,1.5,2.0,9.9], [ 31.5, 30.0, 28.5, 32.5] ], + '40GeV_barrelOnly' : [ [0,1.05,1.5,2.0,9.9], [ 31.5,1000.0,1000.0,1000.0]], + '40GeV_uptoEC2' : [ [0,1.05,1.5,2.0,9.9], [ 31.5, 30.0, 28.5, 1000.0]], + '50GeV' : [ [0,1.05,1.5,2.0,9.9], [ 45.0, 45.0, 45.0, 45.0] ], + '50GeV_barrelOnly' : [ [0,1.05,1.5,2.0,9.9], [ 45.0,1000.0,1000.0,1000.0]], + '60GeV' : [ [0,1.05,1.5,2.0,9.9], [ 54.0, 54.0, 54.0, 54.0] ], + '60GeV_barrelOnly' : [ [0,1.05,1.5,2.0,9.9], [ 54.0,1000.0,1000.0,1000.0]], + '70GeV' : [ [0,1.05,1.5,2.0,9.9], [ 63.0, 63.0, 63.0, 63.0] ], '80GeV' : [ [0,1.05,1.5,2.0,9.9], [ 72.0, 72.0, 72.0, 72.0] ], '100GeV' : [ [0,1.05,1.5,2.0,9.9], [ 90.0, 90.0, 90.0, 90.0] ], } @@ -85,7 +88,7 @@ efCombinerThresholds = { '13GeV_v15a' : [ [0,1.05,1.5,2.0,9.9], [ 12.80, 12.67, 12.43, 12.38] ], '14GeV_v15a' : [ [0,1.05,1.5,2.0,9.9], [ 13.75, 13.62, 13.38, 13.36] ], '15GeV_v15a' : [ [0,1.05,1.5,2.0,9.9], [ 14.63, 14.49, 14.42, 14.38] ], - '16GeV_v15a' : [ [0,1.05,1.5,2.0,9.9], [ 15.65, 15.50, 15.39, 15.37] ], # Lidia - extrapolated not optimized + '16GeV_v15a' : [ [0,1.05,1.5,2.0,9.9], [ 15.65, 15.50, 15.39, 15.37] ], # Lidia - extrapolated not optimized '18GeV_v15a' : [ [0,1.05,1.5,2.0,9.9], [ 17.68, 17.51, 17.34, 17.34] ], '20GeV_v15a' : [ [0,1.05,1.5,2.0,9.9], [ 19.65, 19.42, 19.16, 19.19] ], '22GeV_v15a' : [ [0,1.05,1.5,2.0,9.9], [ 21.57, 21.32, 21.07, 21.11] ], @@ -96,7 +99,7 @@ efCombinerThresholds = { '30GeV_v15a' : [ [0,1.05,1.5,2.0,9.9], [ 29.17, 29.03, 29.00, 28.92] ], '32GeV_v15a' : [ [0,1.05,1.5,2.0,9.9], [ 31.10, 30.96, 30.91, 30.84] ], '34GeV_v15a' : [ [0,1.05,1.5,2.0,9.9], [ 33.04, 32.88, 32.81, 32.74] ], - '35GeV_v15a' : [ [0,1.05,1.5,2.0,9.9], [ 34.14, 33.82, 33.65, 33.65] ], # Lidia - extrapolated not optimized + '35GeV_v15a' : [ [0,1.05,1.5,2.0,9.9], [ 34.14, 33.82, 33.65, 33.65] ], # Lidia - extrapolated not optimized '36GeV_v15a' : [ [0,1.05,1.5,2.0,9.9], [ 35.23, 34.75, 34.48, 34.55] ], '38GeV_v15a' : [ [0,1.05,1.5,2.0,9.9], [ 36.87, 36.67, 36.55, 36.48] ], '40GeV_v15a' : [ [0,1.05,1.5,2.0,9.9], [ 38.76, 38.54, 38.38, 38.31] ], @@ -123,12 +126,12 @@ muCombThresholds = { '13GeV_v15a' : [ [0,1.05,1.5,2.0,9.9], [ 12.62, 12.48, 12.24, 11.88] ], '14GeV_v15a' : [ [0,1.05,1.5,2.0,9.9], [ 13.57, 13.44, 13.21, 12.77] ], '15GeV_v15a' : [ [0,1.05,1.5,2.0,9.9], [ 14.5, 14.0, 14.0, 14.5] ], - '16GeV_v15a' : [ [0,1.05,1.5,2.0,9.9], [ 15.47, 15.09, 14.98, 15.08] ], # Lidia - extrapolated not optimized + '16GeV_v15a' : [ [0,1.05,1.5,2.0,9.9], [ 15.47, 15.09, 14.98, 15.08] ], # Lidia - extrapolated not optimized '18GeV_v15a' : [ [0,1.05,1.5,2.0,9.9], [ 17.41, 17.27, 16.95, 16.25] ], '20GeV_v15a' : [ [0,1.05,1.5,2.0,9.9], [ 19.31, 19.19, 18.80, 17.95] ], '22GeV_v15a' : [ [0,1.05,1.5,2.0,9.9], [ 21.19, 21.07, 20.68, 19.71] ], '24GeV_v15a' : [ [0,1.05,1.5,2.0,9.9], [ 23.08, 22.99, 22.56, 21.39] ], - '25GeV_v15a' : [ [0,1.05,1.5,2.0,9.9], [ 24.2, 23.2, 23.2, 22.6] ], + '25GeV_v15a' : [ [0,1.05,1.5,2.0,9.9], [ 24.2, 23.2, 23.2, 22.6] ], '26GeV_v15a' : [ [0,1.05,1.5,2.0,9.9], [ 24.95, 24.86, 24.39, 23.13] ], '27GeV_v15a' : [ [0,1.05,1.5,2.0,9.9], [ 26.2, 25.1, 25.1, 24.4] ], '28GeV_v15a' : [ [0,1.05,1.5,2.0,9.9], [ 27.1, 26.0, 26.0, 25.2] ], @@ -235,22 +238,22 @@ def addMonitoring(tool, monClass, name, thresholdHLT ): log.error('%s Monitoring Tool failed', name) -def getThresholdsFromDict( chainDict ): +def getThresholdsFromDict( chainDict ): cparts = [i for i in chainDict['chainParts'] if i['signature']=='Muon' or i['signature']=='Bphysics'] return sum( [ [part['threshold']]*int(part['multiplicity']) for part in cparts ], []) -def TrigMufastHypoToolFromDict( chainDict ): +def TrigMufastHypoToolFromDict( chainDict ): if 'lateMu' in chainDict['chainParts'][0]['chainPartName']: thresholds = ['passthrough'] else: thresholds = getThresholdsFromDict( chainDict ) config = TrigMufastHypoConfig() - tool=config.ConfigurationHypoTool( chainDict['chainName'], thresholds ) + tool = config.ConfigurationHypoTool( chainDict['chainName'], thresholds ) # Setup MonTool for monitored variables in AthenaMonitoring package addMonitoring( tool, TrigMufastHypoMonitoring, 'TrigMufastHypoTool', chainDict['chainName'] ) - + return tool @@ -260,7 +263,7 @@ class TrigMufastHypoConfig(object): def ConfigurationHypoTool( self, toolName, thresholds ): - tool = TrigMufastHypoTool( toolName ) + tool = CompFactory.TrigMufastHypoTool( toolName ) if "muoncalib" in toolName: tool.DoCalib = True @@ -268,7 +271,7 @@ class TrigMufastHypoConfig(object): tool.PtBins = [ [ 0, 2.5 ] ] * nt try: tool.AcceptAll = False - + except LookupError: raise Exception('MuFast Hypo for muoncalib chain Misconfigured') else: @@ -278,7 +281,7 @@ class TrigMufastHypoConfig(object): tool.PtThresholds = [ [ 5.49 * GeV ] ] * nt tool.PtThresholdForECWeakBRegionA = [ 3. * GeV ] * nt tool.PtThresholdForECWeakBRegionB = [ 3. * GeV ] * nt - + for th, thvalue in enumerate(thresholds): if (thvalue == 'passthrough'): tool.PtBins[th] = [-10000.,10000.] @@ -291,11 +294,11 @@ class TrigMufastHypoConfig(object): thvaluename = thvalue+ "GeV_barrelOnly_v15a" else: thvaluename = '6GeV_v15a' - - - + + + log.debug('Number of threshold = %d, Value of threshold = %s', th, thvaluename) - + try: tool.AcceptAll = False values = muFastThresholds[thvaluename] @@ -316,32 +319,31 @@ class TrigMufastHypoConfig(object): else: tool.PtThresholdForECWeakBRegionA[th] = spThres[1] * GeV tool.PtThresholdForECWeakBRegionB[th] = spThres[2] * GeV - + log.debug('Thresholds for A[%d]/B[%d] = %d/%d', th, th, tool.PtThresholdForECWeakBRegionA[th], tool.PtThresholdForECWeakBRegionB[th]) - + except LookupError: raise Exception('MuFast Hypo Misconfigured: threshold %r not supported' % thvaluename) return tool ### for TrigL2MuonOverlapRemoverMufast -def TrigL2MuonOverlapRemoverMufastToolFromDict( chainDict ): +def TrigL2MuonOverlapRemoverMufastToolFromDict( chainDict ): thresholds = getThresholdsFromDict( chainDict ) config = TrigL2MuonOverlapRemoverMufastConfig() tool=config.ConfigurationHypoTool( chainDict['chainName'], thresholds) # # Setup MonTool for monitored variables in AthenaMonitoring package addMonitoring( tool, TrigL2MuonOverlapRemoverMonitoringMufast, 'TrigL2MuonOverlapRemoverMufastTool', chainDict['chainName'] ) - + return tool class TrigL2MuonOverlapRemoverMufastConfig(object): - - def ConfigurationHypoTool( self, toolName, thresholds): - - tool = TrigL2MuonOverlapRemoverTool( toolName ) - tool.Multiplicity = len(thresholds) + + def ConfigurationHypoTool( self, toolName, thresholds): + tool = CompFactory.TrigL2MuonOverlapRemoverTool( toolName ) + tool.Multiplicity = len(thresholds) tool.DoMufastBasedRemoval = True # cut defintion @@ -363,23 +365,22 @@ class TrigL2MuonOverlapRemoverMufastConfig(object): ### for TrigL2MuonOverlapRemoverMucomb -def TrigL2MuonOverlapRemoverMucombToolFromDict( chainDict ): +def TrigL2MuonOverlapRemoverMucombToolFromDict( chainDict ): thresholds = getThresholdsFromDict( chainDict ) config = TrigL2MuonOverlapRemoverMucombConfig() tool=config.ConfigurationHypoTool( chainDict['chainName'], thresholds) # # Setup MonTool for monitored variables in AthenaMonitoring package addMonitoring( tool, TrigL2MuonOverlapRemoverMonitoringMucomb, 'TrigL2MuonOverlapRemoverMucombTool', chainDict['chainName'] ) - + return tool class TrigL2MuonOverlapRemoverMucombConfig(object): - - def ConfigurationHypoTool( self, toolName, thresholds): - - tool = TrigL2MuonOverlapRemoverTool( toolName ) - tool.Multiplicity = len(thresholds) + + def ConfigurationHypoTool( self, toolName, thresholds): + tool = CompFactory.TrigL2MuonOverlapRemoverTool( toolName ) + tool.Multiplicity = len(thresholds) tool.DoMucombBasedRemoval = True # cut defintion tool.MucombRequireDR = True @@ -402,7 +403,7 @@ def TrigmuCombHypoToolFromDict( chainDict ): thresholds = getThresholdsFromDict( chainDict ) config = TrigmuCombHypoConfig() - + tight = False # can be probably decoded from some of the proprties of the chain, expert work tool=config.ConfigurationHypoTool( chainDict['chainName'], thresholds, tight ) @@ -416,7 +417,7 @@ class TrigmuCombHypoConfig(object): def ConfigurationHypoTool( self, thresholdHLT, thresholds, tight ): - tool = TrigmuCombHypoTool( thresholdHLT ) + tool = CompFactory.TrigmuCombHypoTool( thresholdHLT ) nt = len(thresholds) log.debug('Set %d thresholds', nt) @@ -446,7 +447,7 @@ class TrigmuCombHypoConfig(object): except LookupError: raise Exception('MuComb Hypo Misconfigured: threshold %r not supported' % thvaluename) - return tool + return tool @@ -457,19 +458,19 @@ def TrigMuisoHypoToolFromDict( chainDict ): tool = config.ConfigurationHypoTool( chainDict['chainName'] ) addMonitoring( tool, TrigMuisoHypoMonitoring, "TrigMuisoHypoTool", chainDict['chainName']) return tool - + class TrigMuisoHypoConfig(object): log = logging.getLogger('TrigMuisoHypoConfig') - def ConfigurationHypoTool( self, toolName ): + def ConfigurationHypoTool( self, toolName ): + + tool = CompFactory.TrigMuisoHypoTool( toolName ) - tool = TrigMuisoHypoTool( toolName ) - # If configured with passthrough, set AcceptAll flag on, not quite there in the menu tool.AcceptAll = False - if 'passthrough' in toolName: + if 'passthrough' in toolName: tool.AcceptAll = True log.debug('MuisoHypoConfig configured in pasthrough mode') @@ -477,7 +478,7 @@ class TrigMuisoHypoConfig(object): tool.IDConeSize = 2 tool.MaxIDIso_1 = 0.12 tool.MaxIDIso_2 = 0.12 - tool.MaxIDIso_3 = 0.12 + tool.MaxIDIso_3 = 0.12 else: tool.IDConeSize = 2 tool.MaxIDIso_1 = 0.1 @@ -488,7 +489,7 @@ class TrigMuisoHypoConfig(object): def TrigMuonEFMSonlyHypoToolFromDict( chainDict ) : - thresholds = getThresholdsFromDict( chainDict ) + thresholds = getThresholdsFromDict( chainDict ) config = TrigMuonEFMSonlyHypoConfig() tool = config.ConfigurationHypoTool( chainDict['chainName'], thresholds ) addMonitoring( tool, TrigMuonEFMSonlyHypoMonitoring, "TrigMuonEFMSonlyHypoTool", chainDict['chainName'] ) @@ -496,7 +497,7 @@ def TrigMuonEFMSonlyHypoToolFromDict( chainDict ) : def TrigMuonEFMSonlyHypoToolFromName(chainDict): #For full scan chains, we need to configure the thresholds based on all muons - #in the chain to get the counting correct. Currently a bit convoluted as + #in the chain to get the counting correct. Currently a bit convoluted as #the chain dict is (improperly) overwritten when merging for FS chains. #Can probably improve this once serial merging is officially implemented thresholds=[] @@ -515,7 +516,7 @@ def TrigMuonEFMSonlyHypoToolFromName(chainDict): tool = config.ConfigurationHypoTool(chainDict['chainName'], thresholds) addMonitoring( tool, TrigMuonEFMSonlyHypoMonitoring, "TrigMuonEFMSonlyHypoTool", chainDict['chainName'] ) return tool - + class TrigMuonEFMSonlyHypoConfig(object): log = logging.getLogger('TrigMuonEFMSonlyHypoConfig') @@ -523,7 +524,7 @@ class TrigMuonEFMSonlyHypoConfig(object): def ConfigurationHypoTool( self, toolName, thresholds ): log = logging.getLogger(self.__class__.__name__) - tool = TrigMuonEFMSonlyHypoTool( toolName ) + tool = CompFactory.TrigMuonEFMSonlyHypoTool( toolName ) nt = len(thresholds) log.debug('Set %d thresholds', nt) @@ -555,7 +556,7 @@ class TrigMuonEFMSonlyHypoConfig(object): return tool - + def TrigMuonEFCombinerHypoToolFromDict( chainDict ) : if 'idperf' in chainDict['chainParts'][0]['chainPartName']: thresholds = ['passthrough'] @@ -574,7 +575,7 @@ def TrigMuonEFCombinerHypoToolFromDict( chainDict ) : def TrigMuonEFCombinerHypoToolFromName(chainDict): #For full scan chains, we need to configure the thresholds based on all muons - #in the chain to get the counting correct. Currently a bit convoluted as + #in the chain to get the counting correct. Currently a bit convoluted as #the chain dict is (improperly) overwritten when merging for FS chains. #Can probably improve this once serial merging is officially implemented thresholds=[] @@ -593,28 +594,28 @@ def TrigMuonEFCombinerHypoToolFromName(chainDict): muonquality = True else: muonquality = False - + config = TrigMuonEFCombinerHypoConfig() tool = config.ConfigurationHypoTool(chainDict['chainName'], thresholds, muonquality) addMonitoring( tool, TrigMuonEFCombinerHypoMonitoring, "TrigMuonEFCombinerHypoTool", chainDict['chainName'] ) return tool - + class TrigMuonEFCombinerHypoConfig(object): - + log = logging.getLogger('TrigMuonEFCombinerHypoConfig') def ConfigurationHypoTool( self, thresholdHLT, thresholds, muonquality ): - tool = TrigMuonEFCombinerHypoTool( thresholdHLT ) + tool = CompFactory.TrigMuonEFCombinerHypoTool( thresholdHLT ) nt = len(thresholds) log.debug('Set %d thresholds', nt) tool.PtBins = [ [ 0, 2.5 ] ] * nt tool.PtThresholds = [ [ 5.49 * GeV ] ] * nt - + tool.MuonQualityCut = muonquality - + for th, thvalue in enumerate(thresholds): thvaluename = thvalue + 'GeV_v15a' log.debug('Number of threshold = %d, Value of threshold = %s', th, thvaluename) @@ -650,7 +651,7 @@ class TrigMuonEFTrackIsolationHypoConfig(object) : def ConfigurationHypoTool(self, toolName, isoCut): - tool=TrigMuonEFTrackIsolationHypoTool(toolName) + tool = CompFactory.TrigMuonEFTrackIsolationHypoTool(toolName) try: ptcone03 = trigMuonEFTrkIsoThresholds[ isoCut ] @@ -668,7 +669,7 @@ class TrigMuonEFTrackIsolationHypoConfig(object) : if 'var' in isoCut : tool.useVarIso = True else : - tool.useVarIso = False + tool.useVarIso = False except LookupError: if(isoCut=='passthrough') : log.debug('Setting passthrough') @@ -692,10 +693,10 @@ class TrigMuonEFInvMassHypoConfig(object) : def ConfigurationHypoTool(self, toolName, thresholds): - tool=TrigMuonEFInvMassHypoTool(toolName) + tool = CompFactory.TrigMuonEFInvMassHypoTool(toolName) try: - massWindow = trigMuonEFInvMassThresholds[thresholds] + massWindow = trigMuonEFInvMassThresholds[thresholds] tool.InvMassLow = massWindow[0] tool.InvMassHigh = massWindow[1] @@ -721,7 +722,7 @@ class TrigMuonLateMuRoIHypoConfig(object) : def ConfigurationHypoTool(self, toolName): - tool=TrigMuonLateMuRoIHypoTool(toolName) + tool = CompFactory.TrigMuonLateMuRoIHypoTool(toolName) try: tool.AcceptAll = False @@ -736,17 +737,17 @@ if __name__ == '__main__': # normaly this tools are private and have no clash in naming, for the test we create them and never assign so they are like public, # in Run3 config this is checked in a different way so having Run 3 JO behaviour solves test issue from AthenaCommon.Configurable import Configurable - Configurable.configurableRun3Behavior=1 + Configurable.configurableRun3Behavior=1 configToTest = [ 'HLT_mu6fast_L1MU6', 'HLT_mu6Comb_L1MU6', - 'HLT_mu6_L1MU6', + 'HLT_mu6_L1MU6', 'HLT_mu20_ivar_L1MU20', 'HLT_2mu6Comb_L12MU6', 'HLT_2mu6_L12MU6'] from TriggerMenuMT.HLTMenuConfig.Menu.DictFromChainName import dictFromChainName - + for c in configToTest: log.info("testing config %s", c) chainDict = dictFromChainName(c) @@ -760,5 +761,5 @@ if __name__ == '__main__': assert toolEFMSonly toolEFCombiner = TrigMuonEFCombinerHypoToolFromDict(chainDict) assert toolEFCombiner - + log.info("All OK") diff --git a/Trigger/TrigMonitoring/TrigCostMonitorMT/python/TrigCostMonitorMTConfig.py b/Trigger/TrigMonitoring/TrigCostMonitorMT/python/TrigCostMonitorMTConfig.py index 3916e8fd1bf02b950368c0f6217c193d6f101df0..1c4f9792135d42c587c2f0523edc25a989595a19 100644 --- a/Trigger/TrigMonitoring/TrigCostMonitorMT/python/TrigCostMonitorMTConfig.py +++ b/Trigger/TrigMonitoring/TrigCostMonitorMT/python/TrigCostMonitorMTConfig.py @@ -7,21 +7,21 @@ def TrigCostMonitorMTCfg(flags): """ Component Accumulator based configuration of Trigger Cost MT Service and associated Auditor """ - - from TrigCostMonitorMT.TrigCostMonitorMTConf import TrigCostMTAuditor, TrigCostMTSvc - from GaudiSvc.GaudiSvcConf import AuditorSvc + from AthenaConfiguration.ComponentFactory import CompFactory from AthenaConfiguration.ComponentAccumulator import ComponentAccumulator acc = ComponentAccumulator() if flags.Trigger.CostMonitoring.doCostMonitoring: - trigCostService = TrigCostMTSvc() + trigCostService = CompFactory.TrigCostMTSvc() trigCostService.MonitorAllEvents = flags.Trigger.CostMonitoring.monitorAllEvents trigCostService.SaveHashes = True # This option will go away once the TrigConfigSvc is fully up & running acc.addService(trigCostService) - auditorService = AuditorSvc() - auditorService += TrigCostMTAuditor() + auditorService = CompFactory.AuditorSvc() + tca=CompFactory.TrigCostMTAuditor() + #acc.addService(tca) + auditorService.Auditors=[tca.getFullJobOptName(),] acc.addService(auditorService) acc.setAppProperty("AuditAlgorithms", True) diff --git a/Trigger/TrigMonitoring/TrigMinBiasMonitoring/python/TrigMinBiasMonitoringMT.py b/Trigger/TrigMonitoring/TrigMinBiasMonitoring/python/TrigMinBiasMonitoringMT.py index b95c3a1a71e62740bc722b5a52bd57502dc2e048..3abb85ac066e074f215046944d449b314da7d7c1 100644 --- a/Trigger/TrigMonitoring/TrigMinBiasMonitoring/python/TrigMinBiasMonitoringMT.py +++ b/Trigger/TrigMonitoring/TrigMinBiasMonitoring/python/TrigMinBiasMonitoringMT.py @@ -21,10 +21,10 @@ def TrigMinBias(configFlags): alg.triggerList = [ "HLT_mb_sptrk_L1RD0_FILLED"] length = len(alg.triggerList) mbEffAllGroup.defineHistogram( "PurityAll,whichTrigger",type = 'TEfficiency',title="PurityAll;whichTrigger" ,xbins=length, xmin=0, xmax=length) - mbEffAllGroup.defineHistogram( "PurityPassed,whichTrigger",type = 'TEfficiency',title="PurityPassed;whichTrigger",xbins=length, xmin=0, xmax=length,labels = alg.triggerList) + mbEffAllGroup.defineHistogram( "PurityPassed,whichTrigger",type = 'TEfficiency',title="PurityPassed;whichTrigger",xbins=length, xmin=0, xmax=length,labels = list(alg.triggerList)) mbEffAllGroup.defineHistogram( "EfficiencyAll,whichTrigger",type = 'TEfficiency', title="EfficiencyAll;whichTrigger",xbins=length, xmin=0, xmax=length) mbEffAllGroup.defineHistogram( "EfficiencyPassed,whichTrigger",type = 'TEfficiency', title="EfficiencyPassed;whichTrigger", xbins=length, xmin=0, xmax=length) - mbEffAllGroup.defineHistogram( "EfficiencyPassed,trigNo",type = 'TEfficiency', title="EfficiencyPassed;trig No.", xbins=length, xmin=0, xmax=length,labels = alg.triggerList) + mbEffAllGroup.defineHistogram( "EfficiencyPassed,trigNo",type = 'TEfficiency', title="EfficiencyPassed;trig No.", xbins=length, xmin=0, xmax=length,labels = list(alg.triggerList)) mbEffAllGroup.defineHistogram( "whichTrigger",title="count of triggers", xbins=length, xmin=0, xmax=length) mbEffAllGroup.defineHistogram( "EfficiencyPassed,trigCount",type = 'TProfile',title="EfficiencyPassed;Trigger;EfficiencyPassed", xbins=length, xmin=0, xmax=length) diff --git a/Trigger/TrigSteer/DecisionHandling/python/DecisionHandlingConfig.py b/Trigger/TrigSteer/DecisionHandling/python/DecisionHandlingConfig.py index d80985cfec43541b0c05f7f3c2f3e51af9fba58b..f1890347b73e97bd5649176ea619f6e10c330c77 100644 --- a/Trigger/TrigSteer/DecisionHandling/python/DecisionHandlingConfig.py +++ b/Trigger/TrigSteer/DecisionHandling/python/DecisionHandlingConfig.py @@ -9,7 +9,7 @@ def setupFilterMonitoring( filterAlg ): inputKeys = filterAlg.Input monTool.HistPath="HLTFramework/Filters" - monTool.defineHistogram( 'name,stat;'+filterAlg.name(), path='EXPERT', type='TH2I', + monTool.defineHistogram( 'name,stat;'+filterAlg.getName(), path='EXPERT', type='TH2I', title='Input activity fraction;;presence', xbins=len(inputKeys), xmin=0, xmax=len(inputKeys)+2, xlabels=['exec', 'anyvalid']+inputKeys, ybins=2, ymin=-0.5, ymax=1.5, ylabels=['no', 'yes'] ) @@ -17,8 +17,8 @@ def setupFilterMonitoring( filterAlg ): filterAlg.MonTool = monTool def TriggerSummaryAlg( name ): - from DecisionHandling.DecisionHandlingConf import TriggerSummaryAlg as Alg - alg = Alg( name ) + from AthenaConfiguration.ComponentFactory import CompFactory + alg = CompFactory.TriggerSummaryAlg( name ) from AthenaMonitoringKernel.GenericMonitoringTool import GenericMonitoringTool monTool = GenericMonitoringTool('MonTool', HistPath='HLTFramework/'+name) monTool.defineHistogram('TIME_SinceEventStart', path='EXPERT', type='TH1F', diff --git a/Trigger/TrigSteer/L1Decoder/python/L1DecoderConfig.py b/Trigger/TrigSteer/L1Decoder/python/L1DecoderConfig.py index bcf84590999f0a96c1412654775bcde6d0748100..fe1de5879571beb0d82cd409767698b5cad121ff 100644 --- a/Trigger/TrigSteer/L1Decoder/python/L1DecoderConfig.py +++ b/Trigger/TrigSteer/L1Decoder/python/L1DecoderConfig.py @@ -5,6 +5,7 @@ from six import iteritems from AthenaCommon.Logging import logging log = logging.getLogger('L1DecoderConfig') +from AthenaConfiguration.ComponentFactory import CompFactory def mapThresholdToL1DecisionCollection(threshold): """ @@ -50,85 +51,84 @@ def mapThresholdToL1RoICollection(threshold): def createCaloRoIUnpackers(): - from L1Decoder.L1DecoderConf import EMRoIsUnpackingTool, METRoIsUnpackingTool, JRoIsUnpackingTool, RerunRoIsUnpackingTool, TAURoIsUnpackingTool + #from L1Decoder.L1DecoderConf import EMRoIsUnpackingTool, METRoIsUnpackingTool, JRoIsUnpackingTool, RerunRoIsUnpackingTool, TAURoIsUnpackingTool from L1Decoder.L1DecoderMonitoring import RoIsUnpackingMonitoring from TrigEDMConfig.TriggerEDMRun3 import recordable - emUnpacker = EMRoIsUnpackingTool(Decisions = mapThresholdToL1DecisionCollection("EM"), - OutputTrigRoIs = recordable(mapThresholdToL1RoICollection("EM")), - MonTool = RoIsUnpackingMonitoring( prefix="EM", maxCount=30 )) + emUnpacker = CompFactory.EMRoIsUnpackingTool(Decisions = mapThresholdToL1DecisionCollection("EM"), + OutputTrigRoIs = recordable(mapThresholdToL1RoICollection("EM")), + MonTool = RoIsUnpackingMonitoring( prefix="EM", maxCount=30 )) # emUnpacker.MonTool = RoIsUnpackingMonitoring( prefix="EM", maxCount=30 ) - emRerunUnpacker = RerunRoIsUnpackingTool("EMRerunRoIsUnpackingTool", - SourceDecisions=mapThresholdToL1DecisionCollection("EM"), - Decisions="HLTNav_RerunL1EM" ) + emRerunUnpacker = CompFactory.RerunRoIsUnpackingTool("EMRerunRoIsUnpackingTool", + SourceDecisions=mapThresholdToL1DecisionCollection("EM"), + Decisions="HLTNav_RerunL1EM" ) - metUnpacker = METRoIsUnpackingTool(Decisions = mapThresholdToL1DecisionCollection("XE")) + metUnpacker = CompFactory.METRoIsUnpackingTool(Decisions = mapThresholdToL1DecisionCollection("XE")) - tauUnpacker = TAURoIsUnpackingTool(Decisions = mapThresholdToL1DecisionCollection("TAU"), - OutputTrigRoIs = recordable("HLT_TAURoI")) + tauUnpacker = CompFactory.TAURoIsUnpackingTool(Decisions = mapThresholdToL1DecisionCollection("TAU"), + OutputTrigRoIs = recordable("HLT_TAURoI")) tauUnpacker.MonTool = RoIsUnpackingMonitoring( prefix="TAU", maxCount=30 ) - jUnpacker = JRoIsUnpackingTool(Decisions = mapThresholdToL1DecisionCollection("J"), - OutputTrigRoIs = recordable(mapThresholdToL1RoICollection("J")) ) + jUnpacker = CompFactory.JRoIsUnpackingTool(Decisions = mapThresholdToL1DecisionCollection("J"), + OutputTrigRoIs = recordable(mapThresholdToL1RoICollection("J")) ) jUnpacker.MonTool = RoIsUnpackingMonitoring( prefix="J", maxCount=30 ) - return [emUnpacker, metUnpacker, tauUnpacker, jUnpacker ],[emRerunUnpacker] def createMuonRoIUnpackers(): - from L1Decoder.L1DecoderConf import MURoIsUnpackingTool, RerunRoIsUnpackingTool + #from L1Decoder.L1DecoderConf import MURoIsUnpackingTool, RerunRoIsUnpackingTool from L1Decoder.L1DecoderMonitoring import RoIsUnpackingMonitoring from TrigEDMConfig.TriggerEDMRun3 import recordable - muUnpacker = MURoIsUnpackingTool(Decisions = mapThresholdToL1DecisionCollection("MU"), + muUnpacker = CompFactory.MURoIsUnpackingTool(Decisions = mapThresholdToL1DecisionCollection("MU"), OutputTrigRoIs = recordable(mapThresholdToL1RoICollection("MU"))) muUnpacker.MonTool = RoIsUnpackingMonitoring( prefix="MU", maxCount=20 ) - muRerunUnpacker = RerunRoIsUnpackingTool("MURerunRoIsUnpackingTool", - SourceDecisions=mapThresholdToL1DecisionCollection("MU"), - Decisions="HLTNav_RerunL1MU" ) + muRerunUnpacker = CompFactory.RerunRoIsUnpackingTool("MURerunRoIsUnpackingTool", + SourceDecisions=mapThresholdToL1DecisionCollection("MU"), + Decisions="HLTNav_RerunL1MU" ) return [muUnpacker],[muRerunUnpacker] -from L1Decoder.L1DecoderConf import L1TriggerResultMaker -class L1TriggerResultMaker(L1TriggerResultMaker): - def __init__(self, name='L1TriggerResultMaker', *args, **kwargs): - super(L1TriggerResultMaker, self).__init__(name, *args, **kwargs) +#from L1Decoder.L1DecoderConf import L1TriggerResultMaker + - # Muon RoIs - self.MuRoIKey = "LVL1MuonRoIs" - self.MuRoILinkName = "mu_roi" +def setupL1TriggerResultMaker( alg ): + alg.MuRoIKey = "LVL1MuonRoIs" + alg.MuRoILinkName = "mu_roi" +# # Placeholder for other L1 xAOD outputs: +# # - CTP result +# # - L1Topo result +# # - L1Calo (Run3) RoIs - # Placeholder for other L1 xAOD outputs: - # - CTP result - # - L1Topo result - # - L1Calo (Run3) RoIs +# from L1Decoder.L1DecoderConf import L1TriggerResultMaker +# class L1TriggerResultMaker(L1TriggerResultMaker): +# def __init__(self, name='L1TriggerResultMaker', *args, **kwargs): +# super(L1TriggerResultMaker, self).__init__(name, *args, **kwargs) +# setupL1TriggerResultMaker( self ) -from L1Decoder.L1DecoderConf import L1Decoder -class L1Decoder(L1Decoder) : +#from L1Decoder.L1DecoderConf import L1Decoder +class L1Decoder(CompFactory.L1Decoder) : def __init__(self, name='L1Decoder', *args, **kwargs): super(L1Decoder, self).__init__(name, *args, **kwargs) from TriggerJobOpts.TriggerFlags import TriggerFlags - from L1Decoder.L1DecoderConf import CTPUnpackingTool # CTP unpacker - - ctpUnpacker = CTPUnpackingTool(OutputLevel = self.getDefaultProperty("OutputLevel"),) + ctpUnpacker = CompFactory.CTPUnpackingTool() self.ctpUnpacker = ctpUnpacker - from L1Decoder.L1DecoderConf import FSRoIsUnpackingTool - self.roiUnpackers += [ FSRoIsUnpackingTool("FSRoIsUnpackingTool", Decisions=mapThresholdToL1DecisionCollection("FSNOSEED") ) ] + self.roiUnpackers += [ CompFactory.FSRoIsUnpackingTool("FSRoIsUnpackingTool", Decisions=mapThresholdToL1DecisionCollection("FSNOSEED") ) ] # EM unpacker if TriggerFlags.doID() or TriggerFlags.doCalo(): - unpackers, rerunUnpackers = createCaloRoIUnpackers() + unpackers, rerunUnpackers = createCaloRoIUnpackers() self.roiUnpackers += unpackers self.rerunRoiUnpackers += rerunUnpackers @@ -146,21 +146,24 @@ class L1Decoder(L1Decoder) : def L1DecoderCfg(flags): + from AthenaCommon.Configurable import Configurable + Configurable.configurableRun3Behavior += 1 from AthenaConfiguration.ComponentAccumulator import ComponentAccumulator - from L1Decoder.L1DecoderConf import L1Decoder, CTPUnpackingTool + #from L1Decoder.L1DecoderConf import L1Decoder, CTPUnpackingTool from L1Decoder.L1DecoderMonitoring import CTPUnpackingMonitoring acc = ComponentAccumulator() - decoderAlg = L1Decoder() + + decoderAlg = CompFactory.L1Decoder() decoderAlg.L1DecoderSummaryKey = "L1DecoderSummary" # Transient, consumed by DecisionSummaryMakerAlg - decoderAlg.ctpUnpacker = CTPUnpackingTool( ForceEnableAllChains = flags.Trigger.L1Decoder.forceEnableAllChains, + decoderAlg.ctpUnpacker = CompFactory.CTPUnpackingTool( ForceEnableAllChains = flags.Trigger.L1Decoder.forceEnableAllChains, MonTool = CTPUnpackingMonitoring(512, 200) ) - from L1Decoder.L1DecoderConf import FSRoIsUnpackingTool - decoderAlg.roiUnpackers += [ FSRoIsUnpackingTool("FSRoIsUnpackingTool", Decisions=mapThresholdToL1DecisionCollection("FSNOSEED") ) ] + + decoderAlg.roiUnpackers += [ CompFactory.FSRoIsUnpackingTool("FSRoIsUnpackingTool", Decisions=mapThresholdToL1DecisionCollection("FSNOSEED") ) ] unpackers, rerunUnpackers = createCaloRoIUnpackers() decoderAlg.roiUnpackers += unpackers @@ -185,7 +188,11 @@ def L1DecoderCfg(flags): # TODO: implement flags to allow disabling either RoIBResult or L1TriggerResult acc.merge( RoIBResultDecoderCfg(flags) ) acc.merge( L1TriggerByteStreamDecoderCfg(flags) ) - acc.addEventAlgo( L1TriggerResultMaker() ) + + resultMaker = CompFactory.L1TriggerResultMaker() + setupL1TriggerResultMaker( resultMaker ) + acc.addEventAlgo( resultMaker ) + Configurable.configurableRun3Behavior -= 1 return acc,decoderAlg diff --git a/Trigger/TrigT1/TrigT1CaloSim/python/OverlayTTL1Config.py b/Trigger/TrigT1/TrigT1CaloSim/python/OverlayTTL1Config.py index 7742c6084fb3471a3fc60354d05d9421aca16d0d..5fabbc5c6ffae828e1f79d9f236c240706fa8b97 100644 --- a/Trigger/TrigT1/TrigT1CaloSim/python/OverlayTTL1Config.py +++ b/Trigger/TrigT1/TrigT1CaloSim/python/OverlayTTL1Config.py @@ -40,7 +40,7 @@ def OverlayTTL1Cfg(flags, name="OverlayTTL1", **kwargs): flags.Overlay.SigPrefix + "TileTTL1MBTS") kwargs.setdefault("OutputTileMBTSTTL1Key", "TileTTL1MBTS") - OverlayTTL1 = CompFactory.LVL1__OverlayTTL1 + OverlayTTL1 = CompFactory.LVL1.OverlayTTL1 acc.addEventAlgo(OverlayTTL1(name, **kwargs)) if flags.Output.doWriteRDO: diff --git a/Trigger/TrigT1/TrigT1ResultByteStream/python/TrigT1ResultByteStreamConfig.py b/Trigger/TrigT1/TrigT1ResultByteStream/python/TrigT1ResultByteStreamConfig.py index 80ca34dac0d15dabf481046c90f996d880059daf..5cfa5b97241bd8d2f54f27bc57386754ca6b1584 100644 --- a/Trigger/TrigT1/TrigT1ResultByteStream/python/TrigT1ResultByteStreamConfig.py +++ b/Trigger/TrigT1/TrigT1ResultByteStream/python/TrigT1ResultByteStreamConfig.py @@ -1,21 +1,19 @@ # # Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration # - +from AthenaConfiguration.ComponentFactory import CompFactory +from AthenaConfiguration.ComponentAccumulator import ComponentAccumulator def RoIBResultDecoderCfg(flags): - from TrigT1ResultByteStream.TrigT1ResultByteStreamConf import RoIBResultByteStreamTool,RoIBResultByteStreamDecoderAlg - decoderTool = RoIBResultByteStreamTool() - decoderAlg = RoIBResultByteStreamDecoderAlg(name="RoIBResultByteStreamDecoderAlg", - RoIBResultWHKey="RoIBResult", - DecoderTool=decoderTool) - - from AthenaConfiguration.ComponentAccumulator import ComponentAccumulator + decoderTool = CompFactory.RoIBResultByteStreamTool() + decoderAlg = CompFactory.RoIBResultByteStreamDecoderAlg(name="RoIBResultByteStreamDecoderAlg", + RoIBResultWHKey="RoIBResult", + DecoderTool=decoderTool) acc = ComponentAccumulator() acc.addEventAlgo(decoderAlg) return acc -from TrigT1ResultByteStream.TrigT1ResultByteStreamConf import ExampleL1TriggerByteStreamTool as _ExampleL1TriggerByteStreamTool -class ExampleL1TriggerByteStreamTool(_ExampleL1TriggerByteStreamTool): + +class ExampleL1TriggerByteStreamTool(CompFactory.ExampleL1TriggerByteStreamTool): def __init__(self, name, writeBS=False, *args, **kwargs): super(ExampleL1TriggerByteStreamTool, self).__init__(name, *args, **kwargs) from libpyeformat_helper import SourceIdentifier,SubDetector @@ -33,17 +31,14 @@ class ExampleL1TriggerByteStreamTool(_ExampleL1TriggerByteStreamTool): self.MuonRoIContainerWriteKey="LVL1MuonRoIs" def L1TriggerByteStreamDecoderCfg(flags): - from TrigT1ResultByteStream.TrigT1ResultByteStreamConf import L1TriggerByteStreamDecoderAlg - from TrigT1ResultByteStream.TrigT1ResultByteStreamConfig import ExampleL1TriggerByteStreamTool # Placeholder for real decoder tools - now it's just an example - exampleTool = ExampleL1TriggerByteStreamTool(name="L1MuonBSDecoderTool", writeBS=False) - decoderTools = [exampleTool] + exampleTool = ExampleL1TriggerByteStreamTool(name="L1MuonBSDecoderTool") - decoderAlg = L1TriggerByteStreamDecoderAlg(name="L1TriggerByteStreamDecoder", - DecoderTools=decoderTools) + decoderTools = [exampleTool] + decoderAlg = CompFactory.L1TriggerByteStreamDecoderAlg(name="L1TriggerByteStreamDecoder", + DecoderTools=decoderTools) - from AthenaConfiguration.ComponentAccumulator import ComponentAccumulator acc = ComponentAccumulator() acc.addEventAlgo(decoderAlg) return acc @@ -52,7 +47,6 @@ def L1TriggerByteStreamEncoderCfg(flags): from TrigT1ResultByteStream.TrigT1ResultByteStreamConfig import ExampleL1TriggerByteStreamTool exampleTool = ExampleL1TriggerByteStreamTool(name="L1MuonBSEncoderTool", writeBS=True) - from AthenaConfiguration.ComponentAccumulator import ComponentAccumulator acc = ComponentAccumulator() acc.addPublicTool(exampleTool) return acc @@ -71,3 +65,4 @@ def L1ByteStreamEncodersRecExSetup(): from AthenaConfiguration.ComponentAccumulator import CAtoGlobalWrapper from AthenaConfiguration.AllConfigFlags import ConfigFlags CAtoGlobalWrapper(L1TriggerByteStreamEncoderCfg,ConfigFlags) + diff --git a/Trigger/TrigTools/TrigInDetConfig/CMakeLists.txt b/Trigger/TrigTools/TrigInDetConfig/CMakeLists.txt index 1369d4f2a8d8bf5cdeffe16503b635f5658b9d1a..b81ee4711bcdb7d5748426fc44a4234d7bff0f4d 100644 --- a/Trigger/TrigTools/TrigInDetConfig/CMakeLists.txt +++ b/Trigger/TrigTools/TrigInDetConfig/CMakeLists.txt @@ -8,4 +8,4 @@ atlas_subdir( TrigInDetConfig ) # Install files from the package: atlas_install_python_modules( python/*.py ) -atlas_add_test( TrigInDetCfg SCRIPT python -m TrigInDetConfig.InDetConfig POST_EXEC_SCRIPT nopost.sh ) +atlas_add_test( TrigInDetCfg SCRIPT python -m TrigInDetConfig.TrigInDetConfig POST_EXEC_SCRIPT nopost.sh ) diff --git a/Trigger/TrigTools/TrigInDetConfig/python/InDetSetup.py b/Trigger/TrigTools/TrigInDetConfig/python/InDetSetup.py index 20cdcf7f98ade1f26ff45b9d40687a591bfb4333..652ada20d8102ba9310b92e9ca8ac8473342a6d2 100644 --- a/Trigger/TrigTools/TrigInDetConfig/python/InDetSetup.py +++ b/Trigger/TrigTools/TrigInDetConfig/python/InDetSetup.py @@ -1,11 +1,11 @@ # -# Copyright (C) 2002-2019 CERN for the benefit of the ATLAS collaboration +# Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration # from AthenaCommon.Include import include include.block("InDetTrigRecExample/EFInDetConfig.py") -from AthenaCommon.Logging import logging +from AthenaCommon.Logging import logging log = logging.getLogger("InDetSetup") if not 'InDetTrigFlags' in dir(): @@ -19,7 +19,8 @@ if not 'InDetTrigFlags' in dir(): InDetTrigFlags.doPrintConfigurables = False -from TrigInDetConfig.InDetConfig import InDetCacheNames + + def makeInDetAlgs( whichSignature='', separateTrackParticleCreator='', rois = 'EMViewRoIs' ): #If signature specified add suffix to the algorithms @@ -33,8 +34,9 @@ def makeInDetAlgs( whichSignature='', separateTrackParticleCreator='', rois = 'E from AthenaCommon.AppMgr import ToolSvc from AthenaCommon.AppMgr import ServiceMgr - + from TrigInDetConfig import InDetCacheNames from AthenaCommon.GlobalFlags import globalflags + #Only add raw data decoders if we're running over raw data if globalflags.InputFormat.is_bytestream(): #Pixel @@ -51,7 +53,7 @@ def makeInDetAlgs( whichSignature='', separateTrackParticleCreator='', rois = 'E if (InDetTrigFlags.doPrintConfigurables()): print(InDetPixelRawDataProviderTool) # noqa: ATL901 - + # load the PixelRawDataProvider from PixelRawDataByteStreamCnv.PixelRawDataByteStreamCnvConf import PixelRawDataProvider InDetPixelRawDataProvider = PixelRawDataProvider(name = "InDetPixelRawDataProvider"+ signature, @@ -60,13 +62,13 @@ def makeInDetAlgs( whichSignature='', separateTrackParticleCreator='', rois = 'E InDetPixelRawDataProvider.isRoI_Seeded = True InDetPixelRawDataProvider.RoIs = rois InDetPixelRawDataProvider.RDOCacheKey = InDetCacheNames.PixRDOCacheKey - + viewAlgs.append(InDetPixelRawDataProvider) if (InDetTrigFlags.doPrintConfigurables()): print(InDetPixelRawDataProvider) # noqa: ATL901 - + #SCT from SCT_RawDataByteStreamCnv.SCT_RawDataByteStreamCnvConf import SCT_RodDecoder @@ -79,7 +81,7 @@ def makeInDetAlgs( whichSignature='', separateTrackParticleCreator='', rois = 'E ToolSvc += InDetSCTRawDataProviderTool if (InDetTrigFlags.doPrintConfigurables()): print(InDetSCTRawDataProviderTool) # noqa: ATL901 - + # load the SCTRawDataProvider from SCT_RawDataByteStreamCnv.SCT_RawDataByteStreamCnvConf import SCTRawDataProvider @@ -139,7 +141,7 @@ def makeInDetAlgs( whichSignature='', separateTrackParticleCreator='', rois = 'E InDetPixelClusterization.isRoI_Seeded = True InDetPixelClusterization.RoIs = rois - InDetPixelClusterization.ClusterContainerCacheKey = InDetCacheNames.Pixel_ClusterKey + InDetPixelClusterization.ClusterContainerCacheKey = InDetCacheNames.Pixel_ClusterKey viewAlgs.append(InDetPixelClusterization) @@ -193,8 +195,8 @@ def makeInDetAlgs( whichSignature='', separateTrackParticleCreator='', rois = 'E conditionsTool = InDetSCT_ConditionsSummaryToolWithoutFlagged) InDetSCT_Clusterization.isRoI_Seeded = True InDetSCT_Clusterization.RoIs = rois - InDetSCT_Clusterization.ClusterContainerCacheKey = InDetCacheNames.SCT_ClusterKey - + InDetSCT_Clusterization.ClusterContainerCacheKey = InDetCacheNames.SCT_ClusterKey + viewAlgs.append(InDetSCT_Clusterization) @@ -236,7 +238,7 @@ def makeInDetAlgs( whichSignature='', separateTrackParticleCreator='', rois = 'E theFTF = TrigFastTrackFinderBase("TrigFastTrackFinder_" + whichSignature, whichSignature) theFTF.RoIs = rois theFTF.TracksName = "TrigFastTrackFinder_Tracks" + separateTrackParticleCreator - + #the following doCloneRemoval modification should be set up in the InDetTrigSliceSettings once legacy trigger not needed if whichSignature=="Electron": theFTF.doCloneRemoval = True @@ -262,5 +264,5 @@ def makeInDetAlgs( whichSignature='', separateTrackParticleCreator='', rois = 'E - + return viewAlgs diff --git a/Trigger/TrigTools/TrigInDetConfig/python/InDetConfig.py b/Trigger/TrigTools/TrigInDetConfig/python/TrigInDetConfig.py similarity index 89% rename from Trigger/TrigTools/TrigInDetConfig/python/InDetConfig.py rename to Trigger/TrigTools/TrigInDetConfig/python/TrigInDetConfig.py index acbbb038d6d054465dc062478180c86c9b27551c..40ed099c7bccbb35a7bd2154ee7a5674f1a4d580 100644 --- a/Trigger/TrigTools/TrigInDetConfig/python/InDetConfig.py +++ b/Trigger/TrigTools/TrigInDetConfig/python/TrigInDetConfig.py @@ -18,7 +18,7 @@ class InDetCacheNames(object): def InDetIDCCacheCreatorCfg(): #Create IdentifiableCaches acc = ComponentAccumulator() - InDet__CacheCreator=CompFactory.InDet__CacheCreator + InDet__CacheCreator=CompFactory.getComp("InDet::CacheCreator") InDetCacheCreatorTrig = InDet__CacheCreator(name = "InDetCacheCreatorTrig", Pixel_ClusterKey = InDetCacheNames.Pixel_ClusterKey, SCT_ClusterKey = InDetCacheNames.SCT_ClusterKey, @@ -50,15 +50,10 @@ def TrigInDetCondConfig( flags ): SCT_DCSConditionsTool=CompFactory.SCT_DCSConditionsTool dcsTool = SCT_DCSConditionsTool(ReadAllDBFolders = True, ReturnHVTemp = True) - from SCT_ConditionsTools.SCT_SiliconConditionsToolSetup import SCT_SiliconConditionsToolSetup - sct_SiliconConditionsToolSetup = SCT_SiliconConditionsToolSetup() - sct_SiliconConditionsToolSetup.setDcsTool(dcsTool) - sct_SiliconConditionsToolSetup.setToolName("InDetSCT_SiliconConditionsTool") - sct_SiliconConditionsToolSetup.setup() - - sctSiliconConditionsTool = sct_SiliconConditionsToolSetup.getTool() - sctSiliconConditionsTool.CheckGeoModel = False - sctSiliconConditionsTool.ForceUseGeoModel = False + from SCT_ConditionsTools.SCT_SiliconConditionsConfig import SCT_SiliconConditionsToolCfg, SCT_SiliconConditionsCfg + #sctSiliconConditionsTool= SCT_SiliconConditionsCfg(flags, toolName="InDetSCT_SiliconConditionsTool", dcsTool=dcsTool ) + sctSiliconConditionsTool = SCT_SiliconConditionsToolCfg(flags) + acc.merge(SCT_SiliconConditionsCfg(flags, DCSConditionsTool=dcsTool)) SCT_AlignCondAlg=CompFactory.SCT_AlignCondAlg acc.addCondAlgo(SCT_AlignCondAlg(UseDynamicAlignFolders = True)) @@ -283,13 +278,13 @@ def TrigInDetConfig( flags, roisKey="EMRoIs", signatureName='' ): #Pixel clusterisation - InDet__ClusterMakerTool=CompFactory.InDet__ClusterMakerTool + InDet__ClusterMakerTool=CompFactory.InDet.ClusterMakerTool InDetClusterMakerTool = InDet__ClusterMakerTool(name = "InDetClusterMakerTool"+ signature) acc.addPublicTool(InDetClusterMakerTool) - InDet__MergedPixelsTool=CompFactory.InDet__MergedPixelsTool + InDet__MergedPixelsTool=CompFactory.InDet.MergedPixelsTool InDetMergedPixelsTool = InDet__MergedPixelsTool(name = "InDetMergedPixelsTool"+ signature, globalPosAlg = InDetClusterMakerTool, MinimalSplitSize = 0, @@ -299,11 +294,11 @@ def TrigInDetConfig( flags, roisKey="EMRoIs", signatureName='' ): ) acc.addPublicTool(InDetMergedPixelsTool) - InDet__PixelGangedAmbiguitiesFinder=CompFactory.InDet__PixelGangedAmbiguitiesFinder + InDet__PixelGangedAmbiguitiesFinder=CompFactory.InDet.PixelGangedAmbiguitiesFinder InDetPixelGangedAmbiguitiesFinder = InDet__PixelGangedAmbiguitiesFinder(name = "InDetPixelGangedAmbiguitiesFinder"+ signature) acc.addPublicTool(InDetPixelGangedAmbiguitiesFinder) - InDet__PixelClusterization=CompFactory.InDet__PixelClusterization + InDet__PixelClusterization=CompFactory.InDet.PixelClusterization InDetPixelClusterization = InDet__PixelClusterization(name = "InDetPixelClusterization"+ signature, clusteringTool = InDetMergedPixelsTool, gangedAmbiguitiesFinder = InDetPixelGangedAmbiguitiesFinder, @@ -313,34 +308,16 @@ def TrigInDetConfig( flags, roisKey="EMRoIs", signatureName='' ): InDetPixelClusterization.isRoI_Seeded = True InDetPixelClusterization.RoIs = roisKey InDetPixelClusterization.ClusterContainerCacheKey = InDetCacheNames.Pixel_ClusterKey - acc.addEventAlgo(InDetPixelClusterization) - from SCT_ConditionsTools.SCT_FlaggedConditionToolSetup import SCT_FlaggedConditionToolSetup - sct_FlaggedConditionToolSetup = SCT_FlaggedConditionToolSetup() - sct_FlaggedConditionToolSetup.setup() - InDetSCT_FlaggedConditionTool = sct_FlaggedConditionToolSetup.getTool() - - from SCT_ConditionsTools.SCT_ConditionsSummaryToolSetup import SCT_ConditionsSummaryToolSetup - sct_ConditionsSummaryToolSetup = SCT_ConditionsSummaryToolSetup() - sct_ConditionsSummaryToolSetup = SCT_ConditionsSummaryToolSetup("InDetSCT_ConditionsSummaryTool"+ signature) - sct_ConditionsSummaryToolSetup.setup() - InDetSCT_ConditionsSummaryTool = sct_ConditionsSummaryToolSetup.getTool() - condTools = [] - for condToolHandle in InDetSCT_ConditionsSummaryTool.ConditionsTools: - condTool = condToolHandle.typeAndName - if condTool not in condTools: - if condTool != InDetSCT_FlaggedConditionTool.getFullName(): - condTools.append(condTool) - sct_ConditionsSummaryToolSetupWithoutFlagged = SCT_ConditionsSummaryToolSetup("InDetSCT_ConditionsSummaryToolWithoutFlagged"+ signature) - sct_ConditionsSummaryToolSetupWithoutFlagged.setup() - InDetSCT_ConditionsSummaryToolWithoutFlagged = sct_ConditionsSummaryToolSetupWithoutFlagged.getTool() - InDetSCT_ConditionsSummaryToolWithoutFlagged.ConditionsTools = condTools + from InDetConfig.InDetRecToolConfig import InDetSCT_ConditionsSummaryToolCfg + InDetSCT_ConditionsSummaryToolWithoutFlagged = acc.popToolsAndMerge(InDetSCT_ConditionsSummaryToolCfg(flags,withFlaggedCondTool=False)) + # # --- SCT_ClusteringTool (public) # - InDet__SCT_ClusteringTool=CompFactory.InDet__SCT_ClusteringTool + InDet__SCT_ClusteringTool=CompFactory.InDet.SCT_ClusteringTool InDetSCT_ClusteringTool = InDet__SCT_ClusteringTool(name = "InDetSCT_ClusteringTool"+ signature, globalPosAlg = InDetClusterMakerTool, conditionsTool = InDetSCT_ConditionsSummaryToolWithoutFlagged) @@ -348,7 +325,7 @@ def TrigInDetConfig( flags, roisKey="EMRoIs", signatureName='' ): # --- SCT_Clusterization algorithm # - InDet__SCT_Clusterization=CompFactory.InDet__SCT_Clusterization + InDet__SCT_Clusterization=CompFactory.InDet.SCT_Clusterization InDetSCT_Clusterization = InDet__SCT_Clusterization(name = "InDetSCT_Clusterization"+ signature, clusteringTool = InDetSCT_ClusteringTool, # ChannelStatus = InDetSCT_ChannelStatusAlg, @@ -364,12 +341,12 @@ def TrigInDetConfig( flags, roisKey="EMRoIs", signatureName='' ): #Space points and FTF - InDet__SiSpacePointMakerTool=CompFactory.InDet__SiSpacePointMakerTool + InDet__SiSpacePointMakerTool=CompFactory.InDet.SiSpacePointMakerTool InDetSiSpacePointMakerTool = InDet__SiSpacePointMakerTool(name = "InDetSiSpacePointMakerTool"+ signature) acc.addPublicTool(InDetSiSpacePointMakerTool) from AthenaCommon.DetFlags import DetFlags - InDet__SiTrackerSpacePointFinder=CompFactory.InDet__SiTrackerSpacePointFinder + InDet__SiTrackerSpacePointFinder=CompFactory.InDet.SiTrackerSpacePointFinder InDetSiTrackerSpacePointFinder = InDet__SiTrackerSpacePointFinder(name = "InDetSiTrackerSpacePointFinder"+ signature, SiSpacePointMakerTool = InDetSiSpacePointMakerTool, PixelsClustersName = "PixelTrigClusters", @@ -393,7 +370,7 @@ def TrigInDetConfig( flags, roisKey="EMRoIs", signatureName='' ): #from TrigInDetConf.TrigInDetRecCommonTools import InDetTrigFastTrackSummaryTool #from TrigInDetConf.TrigInDetPostTools import InDetTrigParticleCreatorToolFTF - #InDet__TrigTrackingxAODCnvMT=CompFactory.InDet__TrigTrackingxAODCnvMT + #InDet__TrigTrackingxAODCnvMT=CompFactory.InDet.TrigTrackingxAODCnvMT #theTrackParticleCreatorAlg = InDet__TrigTrackingxAODCnvMT(name = "InDetTrigTrackParticleCreatorAlg", # doIBLresidual = False, # TrackName = "TrigFastTrackFinder_Tracks", @@ -432,7 +409,7 @@ if __name__ == "__main__": nThreads=1 - SG__HiveMgrSvc=CompFactory.SG__HiveMgrSvc + SG__HiveMgrSvc=CompFactory.SG.HiveMgrSvc eventDataSvc = SG__HiveMgrSvc("EventDataSvc") eventDataSvc.NSlots = nThreads acc.addService( eventDataSvc ) diff --git a/Trigger/TrigTools/TrigT2CaloCalibration/python/EgammaCalibrationConfig.py b/Trigger/TrigTools/TrigT2CaloCalibration/python/EgammaCalibrationConfig.py index db40fd98ed8cb14dbd726237ab432997595719bf..ce285ce687b82d8e713a9c970093a52ca930fcaa 100644 --- a/Trigger/TrigTools/TrigT2CaloCalibration/python/EgammaCalibrationConfig.py +++ b/Trigger/TrigTools/TrigT2CaloCalibration/python/EgammaCalibrationConfig.py @@ -3,10 +3,10 @@ ############################# # EgammaLWCalibration ############################# -from TrigT2CaloCalibration.TrigT2CaloCalibrationConf import EgammaLWCalibration +from AthenaConfiguration.ComponentFactory import CompFactory from CaloClusterCorrection.CaloSwLongWeights_v5 import * -class EgammaLWCalibrationBarrelConfig(EgammaLWCalibration): +class EgammaLWCalibrationBarrelConfig(CompFactory.EgammaLWCalibration): __slots__=[] def __init__(self,name="EgammaLWCalibrationBarrel"): super(EgammaLWCalibrationBarrelConfig,self).__init__(name) @@ -20,7 +20,7 @@ class EgammaLWCalibrationBarrelConfig(EgammaLWCalibration): self.degree=3 #self.region = CALOCORR_COMBINED2 -class EgammaLWCalibrationEndcapConfig(EgammaLWCalibration): +class EgammaLWCalibrationEndcapConfig(CompFactory.EgammaLWCalibration): __slots__=[] def __init__(self,name="EgammaLWCalibrationEndcap"): super(EgammaLWCalibrationEndcapConfig,self).__init__(name) @@ -36,11 +36,10 @@ class EgammaLWCalibrationEndcapConfig(EgammaLWCalibration): ############################# # EgammaHitsCalibration ############################# -from TrigT2CaloCalibration.TrigT2CaloCalibrationConf import EgammaHitsCalibration from CaloClusterCorrection.CaloSwCalibHitsCalibration_v9 import * from CaloClusterCorrection.CaloSwCalibHitsCalibration_v9leakdata import * -class EgammaHitsCalibrationBarrelConfig(EgammaHitsCalibration): +class EgammaHitsCalibrationBarrelConfig(CompFactory.EgammaHitsCalibration): __slots__=[] def __init__(self,name="EgammaHitsCalibrationBarrel"): super(EgammaHitsCalibrationBarrelConfig,self).__init__(name) @@ -54,7 +53,7 @@ class EgammaHitsCalibrationBarrelConfig(EgammaHitsCalibration): self.preserve_offset=False self.OutputLevel=0 -class EgammaHitsCalibrationEndcapConfig(EgammaHitsCalibration): +class EgammaHitsCalibrationEndcapConfig(CompFactory.EgammaHitsCalibration): __slots__=[] def __init__(self,name="EgammaHitsCalibrationEndcap"): super(EgammaHitsCalibrationEndcapConfig,self).__init__(name) @@ -72,10 +71,9 @@ class EgammaHitsCalibrationEndcapConfig(EgammaHitsCalibration): ############################# # EgammaGapCalibration ############################# -from TrigT2CaloCalibration.TrigT2CaloCalibrationConf import EgammaGapCalibration from CaloClusterCorrection.CaloSwGap_v4 import * -class EgammaGapCalibrationConfig(EgammaGapCalibration): +class EgammaGapCalibrationConfig(CompFactory.EgammaGapCalibration): __slots__=[] def __init__(self,name="EgammaGapCalibration"): super(EgammaGapCalibrationConfig,self).__init__(name) @@ -89,10 +87,9 @@ class EgammaGapCalibrationConfig(EgammaGapCalibration): ############################# # EgammaSshapeCalibration ############################# -from TrigT2CaloCalibration.TrigT2CaloCalibrationConf import EgammaSshapeCalibration from CaloClusterCorrection.CaloSwEtaoff_v4_1 import * -class EgammaSshapeCalibrationBarrelConfig(EgammaSshapeCalibration): +class EgammaSshapeCalibrationBarrelConfig(CompFactory.EgammaSshapeCalibration): __slots__=[] def __init__(self,name="EgammaSshapeCalibrationBarrel"): super(EgammaSshapeCalibrationBarrelConfig,self).__init__(name) @@ -102,7 +99,7 @@ class EgammaSshapeCalibrationBarrelConfig(EgammaSshapeCalibration): self.energy_degree=3 self.rangeBarrel=True -class EgammaSshapeCalibrationEndcapConfig(EgammaSshapeCalibration): +class EgammaSshapeCalibrationEndcapConfig(CompFactory.EgammaSshapeCalibration): __slots__=[] def __init__(self,name="EgammaSshapeCalibrationEndcap"): super(EgammaSshapeCalibrationEndcapConfig,self).__init__(name) @@ -116,10 +113,9 @@ class EgammaSshapeCalibrationEndcapConfig(EgammaSshapeCalibration): ############################# # EgammaTransitionRegions ############################# -from TrigT2CaloCalibration.TrigT2CaloCalibrationConf import EgammaTransitionRegions from CaloClusterCorrection.CaloSwTransitionRegionsCorr_v5_1 import * -class EgammaTransitionRegionsConfig(EgammaTransitionRegions): +class EgammaTransitionRegionsConfig(CompFactory.EgammaTransitionRegions): __slots__=[] def __init__(self,name="EgammaTransitionRegionsConfig"): super(EgammaTransitionRegionsConfig,self).__init__(name) diff --git a/Trigger/TrigValidation/TrigUpgradeTest/python/HLTSignatureConfig.py b/Trigger/TrigValidation/TrigUpgradeTest/python/HLTSignatureConfig.py index eb705d0050f8e8bbffd497220eeb1120e858438c..241870da2825dd466a195b2c7b431b1f287cf822 100644 --- a/Trigger/TrigValidation/TrigUpgradeTest/python/HLTSignatureConfig.py +++ b/Trigger/TrigValidation/TrigUpgradeTest/python/HLTSignatureConfig.py @@ -9,13 +9,16 @@ from AthenaConfiguration.AllConfigFlags import ConfigFlags import sys -HLTTest__TestRecoAlg, HLTTest__TestHypoAlg=CompFactory.getComps("HLTTest__TestRecoAlg","HLTTest__TestHypoAlg",) +HLTTest__TestHypoAlg=CompFactory.getComps.HLTTest.TestHypoAlg +HLTTest__TestRecoAlg=CompFactory.getComps.HLTTest.TestRecoAlg + + UseThisLinkName="initialRoI" #UseThisLinkName="feature" -HLTTest__TestInputMaker=CompFactory.HLTTest__TestInputMaker +HLTTest__TestInputMaker=CompFactory.HLTTest.TestInputMaker def InputMakerForInitialRoIAlg(name): return HLTTest__TestInputMaker(name, RoIsLink="initialRoI", LinkName="initialRoI") diff --git a/Trigger/TrigValidation/TrigUpgradeTest/python/TriggerHistSvcConfig.py b/Trigger/TrigValidation/TrigUpgradeTest/python/TriggerHistSvcConfig.py index 8e2e9daadd33672001521c5b63b00c4cd4e97e9d..aa0acf5095b7c141f8d7ed4ed805a1015a964772 100644 --- a/Trigger/TrigValidation/TrigUpgradeTest/python/TriggerHistSvcConfig.py +++ b/Trigger/TrigValidation/TrigUpgradeTest/python/TriggerHistSvcConfig.py @@ -4,9 +4,9 @@ def TriggerHistSvcConfig(flags): from AthenaConfiguration.ComponentAccumulator import ComponentAccumulator + from AthenaConfiguration.ComponentFactory import CompFactory acc = ComponentAccumulator() - from GaudiSvc.GaudiSvcConf import THistSvc - histSvc = THistSvc() + histSvc = CompFactory.THistSvc() histSvc.Output = ["SHIFT DATAFILE='shift-monitoring.root' OPT='RECREATE'", "EXPERT DATAFILE='expert-monitoring.root' OPT='RECREATE'", "run_1 DATAFILE='lbn-monitoring.root' OPT='RECREATE'", diff --git a/Trigger/TrigValidation/TrigUpgradeTest/share/EmuNewJOTest.py b/Trigger/TrigValidation/TrigUpgradeTest/share/EmuNewJOTest.py index 9aea0a3f528689c8f11a9751c0b110996f7fb99e..84c4201a66e02c81c993d2e06299a45d2eae29f3 100644 --- a/Trigger/TrigValidation/TrigUpgradeTest/share/EmuNewJOTest.py +++ b/Trigger/TrigValidation/TrigUpgradeTest/share/EmuNewJOTest.py @@ -17,7 +17,7 @@ from TriggerMenuMT.HLTMenuConfig.Menu.HLTCFConfig_newJO import generateDecisionT from TriggerMenuMT.HLTMenuConfig.Menu.MenuComponents import MenuSequence, createStepView from AthenaCommon.CFElements import seqOR from RegionSelector.RegSelConfig import regSelCfg -from TrigInDetConfig.InDetConfig import TrigInDetCondConfig +from TrigInDetConfig.TrigInDetConfig import TrigInDetCondConfig from TrigUpgradeTest.EmuStepProcessingConfig import generateL1DecoderAndChains log = logging.getLogger('EmuNewJOTest') diff --git a/Trigger/TrigValidation/TrigUpgradeTest/share/full_menu_cf.py b/Trigger/TrigValidation/TrigUpgradeTest/share/full_menu_cf.py index 243636ae5a343d0138db832da7c7b2cb72d2db2f..0f9c036c5f8b89f13e2ecf700def7d30b5c09c68 100644 --- a/Trigger/TrigValidation/TrigUpgradeTest/share/full_menu_cf.py +++ b/Trigger/TrigValidation/TrigUpgradeTest/share/full_menu_cf.py @@ -334,10 +334,11 @@ else: from AthenaConfiguration.AllConfigFlags import ConfigFlags from AthenaCommon.Configurable import Configurable -Configurable.configurableRun3Behavior+=1 +Configurable.configurableRun3Behavior=1 acc, edmSet = triggerOutputCfg(ConfigFlags, decObj, decObjHypoOut, summaryMakerAlg) -Configurable.configurableRun3Behavior-=1 -acc.appendToGlobals() +Configurable.configurableRun3Behavior=0 +from AthenaConfiguration.ComponentAccumulator import appendCAtoAthena +appendCAtoAthena(acc) ########################################## # Print top sequence for debugging diff --git a/Trigger/TrigValidation/TrigUpgradeTest/share/newJOtest.py b/Trigger/TrigValidation/TrigUpgradeTest/share/newJOtest.py index 66f117dbd6ae04e49ce0cf5e3bccaf18ee6660ec..53d03d4efc3e7ce0b9780aa84230bf1d97c886c4 100644 --- a/Trigger/TrigValidation/TrigUpgradeTest/share/newJOtest.py +++ b/Trigger/TrigValidation/TrigUpgradeTest/share/newJOtest.py @@ -64,7 +64,7 @@ from RegionSelector.RegSelConfig import regSelCfg acc.merge( regSelCfg( flags ) ) -from TrigInDetConfig.InDetConfig import TrigInDetCondConfig +from TrigInDetConfig.TrigInDetConfig import TrigInDetCondConfig acc.merge( TrigInDetCondConfig( flags ) ) acc.getEventAlgo( "TrigSignatureMoniMT" ).OutputLevel=DEBUG diff --git a/Trigger/TriggerCommon/TriggerJobOpts/python/Lvl1SimulationConfig.py b/Trigger/TriggerCommon/TriggerJobOpts/python/Lvl1SimulationConfig.py index b8379861eadef87801700cbaec016b78222078e6..b3105fd101d2c04a4db5df8e35342f9c8aa02e7e 100644 --- a/Trigger/TriggerCommon/TriggerJobOpts/python/Lvl1SimulationConfig.py +++ b/Trigger/TriggerCommon/TriggerJobOpts/python/Lvl1SimulationConfig.py @@ -16,7 +16,7 @@ def Lvl1SimulationSequence( flags = None ): # from AthenaCommon.Logging import logging log = logging.getLogger('TriggerJobOpts.Lvl1Simulation') - + from AthenaConfiguration.ComponentAccumulator import conf2toConfigurable from AthenaCommon.CFElements import seqAND from AthenaCommon.AppMgr import ServiceMgr as svcMgr from AthenaCommon.AlgSequence import AthSequencer @@ -27,7 +27,7 @@ def Lvl1SimulationSequence( flags = None ): TriggerFlags.outputLVL1configFile = None log.info("setting up LVL1ConfigSvc, including the menu generation") from TrigConfigSvc.TrigConfigSvcCfg import getL1ConfigSvc - svcMgr += getL1ConfigSvc() + svcMgr += conf2toConfigurable(getL1ConfigSvc()) from TrigT1CaloSim.TrigT1CaloSimRun2Config import Run2TriggerTowerMaker caloTowerMaker = Run2TriggerTowerMaker("Run2TriggerTowerMaker25ns") diff --git a/Trigger/TriggerCommon/TriggerJobOpts/python/TriggerConfig.py b/Trigger/TriggerCommon/TriggerJobOpts/python/TriggerConfig.py index 82cae47f428f86123792d9ea1904f3ad480cad6b..63b30ea32b2584eaf0c9c07c4e1b25291bf57ee0 100644 --- a/Trigger/TriggerCommon/TriggerJobOpts/python/TriggerConfig.py +++ b/Trigger/TriggerCommon/TriggerJobOpts/python/TriggerConfig.py @@ -5,11 +5,14 @@ from collections import OrderedDict from builtins import str from AthenaConfiguration.ComponentAccumulator import ComponentAccumulator from AthenaConfiguration.ComponentFactory import CompFactory -from AthenaCommon.CFElements import seqAND, seqOR, flatAlgorithmSequences +from AthenaCommon.CFElements import seqAND, seqOR, flatAlgorithmSequences, getSequenceChildren, isSequence, hasProp, getProp from AthenaCommon.Logging import logging __log = logging.getLogger('TriggerConfig') - +from AthenaCommon.Constants import DEBUG +__log.setLevel(DEBUG) import six +def __isCombo(alg): + return hasProp( alg, "MultiplicitiesMap" ) # alg.getType() == 'ComboHypo': def collectHypos( steps ): """ @@ -18,52 +21,57 @@ def collectHypos( steps ): Returned is a map with the step name and list of all instances of hypos in that step. Input is top HLT sequencer. """ - __log.info("Collecting hypos") + __log.info("Collecting hypos from steps") from collections import defaultdict hypos = defaultdict( list ) - for stepSeq in steps.getChildren(): - if "filter" in stepSeq.name(): - __log.info("Skipping filtering steps " +stepSeq.name() ) + for stepSeq in getSequenceChildren( steps ): + if not isSequence( stepSeq ): + continue + + if "filter" in stepSeq.getName(): + __log.info("Skipping filtering steps " +stepSeq.getName() ) continue - __log.info( "collecting hypos from step " + stepSeq.name() ) + __log.info( "collecting hypos from step " + stepSeq.getName() ) # start = {} for seq,algs in six.iteritems (flatAlgorithmSequences( stepSeq )): - for alg in algs: + if isSequence( alg ): + continue # will replace by function once dependencies are sorted - if 'HypoInputDecisions' in alg.getProperties(): - __log.info( "found hypo " + alg.name() + " in " +stepSeq.name() ) - if alg.getType() == 'ComboHypo': - __log.info( " with %d comboHypoTools: %s", len(alg.ComboHypoTools), ' '.join(map(str, [tool.name() for tool in alg.ComboHypoTools]))) - hypos[stepSeq.name()].append( alg ) + if hasProp( alg, 'HypoInputDecisions'): + __log.info( "found hypo " + alg.getName() + " in " +stepSeq.getName() ) + if __isCombo( alg ): + __log.info( " with %d comboHypoTools: %s", len(alg.ComboHypoTools), ' '.join(map(str, [tool.getName() for tool in alg.ComboHypoTools]))) + hypos[stepSeq.getName()].append( alg ) else: - __log.verbose("Not a hypo" + alg.name()) + __log.verbose("Not a hypo" + alg.getName()) return hypos def __decisionsFromHypo( hypo ): """ return all chains served by this hypo and the key of produced decision object """ from TrigCompositeUtils.TrigCompositeUtils import isLegId - if hypo.getType() == 'ComboHypo': + __log.info("Hypo type is combo {}".format( __isCombo( hypo ) ) ) + if __isCombo( hypo ): return [key for key in list(hypo.MultiplicitiesMap.keys()) if not isLegId(key)], hypo.HypoOutputDecisions[0] else: # regular hypos - return [ t.name() for t in hypo.HypoTools if not isLegId(t.name())], hypo.HypoOutputDecisions + return [ t.getName() for t in hypo.HypoTools if not isLegId(t.getName())], hypo.HypoOutputDecisions def collectViewMakers( steps ): """ collect all view maker algorithms in the configuration """ makers = [] # map with name, instance and encompasing recoSequence - for stepSeq in steps.getChildren(): - for recoSeq in stepSeq.getChildren(): + for stepSeq in getSequenceChildren( steps ): + for recoSeq in getSequenceChildren( stepSeq ): algsInSeq = flatAlgorithmSequences( recoSeq ) for seq,algs in six.iteritems (algsInSeq): for alg in algs: - if "EventViewCreator" in alg.getFullName(): # TODO base it on checking types of write handles once available + if "EventViewCreator" in alg.getFullJobOptName(): # TODO base it on checking types of write handles once available if alg not in makers: makers.append(alg) - __log.debug("Found ViewMakers: {}".format( ' '.join([ maker.name() for maker in makers ]) )) + __log.debug("Found ViewMakers: {}".format( ' '.join([ maker.getName() for maker in makers ]) )) return makers @@ -79,10 +87,10 @@ def collectFilters( steps ): from collections import defaultdict filters = defaultdict( list ) - for stepSeq in steps.getChildren(): - if "filter" in stepSeq.name(): - filters[stepSeq.name()] = stepSeq.getChildren() - __log.info("Found Filters in Step {} : {}".format(stepSeq.name(), stepSeq.getChildren())) + for stepSeq in getSequenceChildren( steps ): + if "filter" in stepSeq.getName(): + filters[stepSeq.getName()] = getSequenceChildren( stepSeq ) + __log.info("Found Filters in Step {} : {}".format(stepSeq.getName(), getSequenceChildren( stepSeq ))) return filters @@ -101,7 +109,7 @@ def collectHypoDecisionObjects(hypos, inputs = True, outputs = True): for step, stepHypos in six.iteritems (hypos): for hypoAlg in stepHypos: __log.debug( "Hypo %s with input %s and output %s ", - hypoAlg.getName(), hypoAlg.HypoInputDecisions, hypoAlg.HypoOutputDecisions ) + hypoAlg.name, hypoAlg.HypoInputDecisions, hypoAlg.HypoOutputDecisions ) if isinstance( hypoAlg.HypoInputDecisions, list): if inputs: [ decisionObjects.add( d ) for d in hypoAlg.HypoInputDecisions ] @@ -182,7 +190,8 @@ def triggerSummaryCfg(flags, hypos): for c, cont in six.iteritems (allChains): __log.debug("Final decision of chain " + c + " will be read from " + cont ) decisionSummaryAlg.FinalDecisionKeys = list(OrderedDict.fromkeys(allChains.values())) - decisionSummaryAlg.FinalStepDecisions = dict(allChains) + if len(allChains) > 0: + decisionSummaryAlg.FinalStepDecisions = dict(allChains) decisionSummaryAlg.DecisionsSummaryKey = "HLTNav_Summary" # Output decisionSummaryAlg.DoCostMonitoring = flags.Trigger.CostMonitoring.doCostMonitoring decisionSummaryAlg.CostWriteHandleKey = recordable(flags.Trigger.CostMonitoring.outputCollection) @@ -211,12 +220,12 @@ def triggerMonitoringCfg(flags, hypos, filters, l1Decoder): allChains.update( hypoChains ) dcTool = DecisionCollectorTool( "DecisionCollector" + stepName, Decisions=list(OrderedDict.fromkeys(stepDecisionKeys))) - __log.debug( "The step monitoring decisions in " + dcTool.name() + " " +str( dcTool.Decisions ) ) + __log.debug( "The step monitoring decisions in " + dcTool.getName() + " " +str( dcTool.Decisions ) ) mon.CollectorTools += [ dcTool ] #mon.FinalChainStep = allChains - mon.L1Decisions = l1Decoder.getProperties()['L1DecoderSummaryKey'] if l1Decoder.getProperties()['L1DecoderSummaryKey'] != '<no value>' else l1Decoder.getDefaultProperty('L1DecoderSummary') + mon.L1Decisions = getProp( l1Decoder, 'L1DecoderSummaryKey' ) from DecisionHandling.DecisionHandlingConfig import setupFilterMonitoring [ [ setupFilterMonitoring( alg ) for alg in algs ] for algs in list(filters.values()) ] @@ -402,18 +411,15 @@ def triggerPOOLOutputCfg(flags, decObj, decObjHypoOut, edmSet): ("xAOD::TrigConfKeys", "TrigConfKeys")] # Produce the trigger bits - from TrigOutputHandling.TrigOutputHandlingConfig import TriggerBitsMakerToolCfg - from TrigDecisionMaker.TrigDecisionMakerConfig import TrigDecisionMakerMT + #from TrigOutputHandling.TrigOutputHandlingConfig import TriggerBitsMakerToolCfg + #from TrigDecisionMaker.TrigDecisionMakerConfig import TrigDecisionMakerMT + bitsmaker = CompFactory.TriggerBitsMakerTool() + decmaker = CompFactory.getComp("TrigDec::TrigDecisionMakerMT")("TrigDecMakerMT", BitsMakerTool = bitsmaker) - bitsmaker = TriggerBitsMakerToolCfg() - decmaker = TrigDecisionMakerMT('TrigDecMakerMT') - - decmaker.BitsMakerTool = bitsmaker acc.addEventAlgo( decmaker ) # Produce trigger metadata - TrigConf__xAODMenuWriterMT=CompFactory.TrigConf__xAODMenuWriterMT - menuwriter = TrigConf__xAODMenuWriterMT() + menuwriter = CompFactory.getComp("TrigConf::xAODMenuWriterMT")() menuwriter.IsHLTJSONConfig = True menuwriter.IsL1JSONConfig = True acc.addEventAlgo( menuwriter ) @@ -462,7 +468,7 @@ def triggerMergeViewsAndAddMissingEDMCfg( edmSet, hypos, viewMakers, decObj, dec if len(producer) > 1: for pr in producer[1:]: if pr != producer[0]: - __log.error("Several View making algorithms produce the same output collection {}: {}".format( viewsColl, ' '.join([p.name() for p in producer ]) ) ) + __log.error("Several View making algorithms produce the same output collection {}: {}".format( viewsColl, ' '.join([p.getName() for p in producer ]) ) ) continue alg.OutputTools += [ tool ] @@ -509,6 +515,7 @@ def triggerRunCfg( flags, menu=None ): # L1ConfigSvc needed for L1Decoder from TrigConfigSvc.TrigConfigSvcCfg import L1ConfigSvcCfg + acc.merge( L1ConfigSvcCfg(flags) ) acc.merge( triggerIDCCacheCreatorsCfg( flags ) ) @@ -522,7 +529,7 @@ def triggerRunCfg( flags, menu=None ): if menu: menuAcc = menu( flags ) HLTSteps = menuAcc.getSequence( "HLTAllSteps" ) - __log.info( "Configured menu with "+ str( len(HLTSteps.getChildren()) ) +" steps" ) + __log.info( "Configured menu with "+ str( len(HLTSteps.Members) ) +" steps" ) # collect hypothesis algorithms from all sequence @@ -575,7 +582,7 @@ def triggerIDCCacheCreatorsCfg(flags): from MuonConfig.MuonRdoDecodeConfig import MuonPrdCacheCfg acc.merge( MuonPrdCacheCfg() ) - from TrigInDetConfig.InDetConfig import InDetIDCCacheCreatorCfg + from TrigInDetConfig.TrigInDetConfig import InDetIDCCacheCreatorCfg acc.merge( InDetIDCCacheCreatorCfg() ) return acc @@ -605,8 +612,13 @@ if __name__ == "__main__": menuCA.addSequence( seqAND("HLTAllSteps") ) return menuCA + acc = triggerRunCfg( ConfigFlags, testMenu ) + Configurable.configurableRun3Behavior=0 + from AthenaConfiguration.ComponentAccumulator import appendCAtoAthena + appendCAtoAthena( acc ) + f=open("TriggerRunConf.pkl","wb") acc.store(f) f.close() diff --git a/Trigger/TriggerCommon/TriggerJobOpts/share/runHLT_standalone.py b/Trigger/TriggerCommon/TriggerJobOpts/share/runHLT_standalone.py index 9da25d053027813ab81ac8e90d24adce8fdb8768..fcb0ed49a5ae771c903440ccbdc185d8b34e8312 100644 --- a/Trigger/TriggerCommon/TriggerJobOpts/share/runHLT_standalone.py +++ b/Trigger/TriggerCommon/TriggerJobOpts/share/runHLT_standalone.py @@ -416,8 +416,10 @@ from TrigConfigSvc.TrigConfigSvcCfg import generateL1Menu, createL1PrescalesFile generateL1Menu() createL1PrescalesFileFromMenu() -from TrigConfigSvc.TrigConfigSvcCfg import getL1ConfigSvc -svcMgr += getL1ConfigSvc() +from TrigConfigSvc.TrigConfigSvcCfg import getL1ConfigSvc,L1ConfigSvcCfg +from AthenaConfiguration.ComponentAccumulator import CAtoGlobalWrapper, conf2toConfigurable +CAtoGlobalWrapper(L1ConfigSvcCfg,None) +#svcMgr += getL1ConfigSvc() # --------------------------------------------------------------- @@ -454,7 +456,7 @@ if opt.doL1Unpacking: transTypeKey = ("TransientBSOutType","StoreGateSvc+TransientBSOutKey") l1decoder.ExtraInputs += [transTypeKey] - topSequence += l1decoder + topSequence += conf2toConfigurable(l1decoder) else: from TrigUpgradeTest.TestUtils import L1EmulationTest topSequence += L1EmulationTest() @@ -488,7 +490,7 @@ if not opt.createHLTMenuExternally: from TrigConfigSvc.TrigConfigSvcCfg import getHLTConfigSvc, setupHLTPrescaleCondAlg -svcMgr += getHLTConfigSvc() +svcMgr += conf2toConfigurable( getHLTConfigSvc() ) setupHLTPrescaleCondAlg() if not opt.createHLTMenuExternally: @@ -533,7 +535,6 @@ if svcMgr.MessageSvc.OutputLevel<INFO: # Use parts of NewJO #------------------------------------------------------------- from AthenaCommon.Configurable import Configurable -Configurable.configurableRun3Behavior+=1 from TriggerJobOpts.TriggerConfig import triggerIDCCacheCreatorsCfg from AthenaConfiguration.AllConfigFlags import ConfigFlags @@ -554,8 +555,8 @@ if opt.doWriteBS: # ID Cache Creators ConfigFlags.lock() -triggerIDCCacheCreatorsCfg(ConfigFlags).appendToGlobals() -Configurable.configurableRun3Behavior-=1 +CAtoGlobalWrapper(triggerIDCCacheCreatorsCfg,ConfigFlags) + # Trigger output if opt.doWriteBS or opt.doWriteRDOTrigger: @@ -577,11 +578,7 @@ if opt.doWriteBS or opt.doWriteRDOTrigger: log.warning("Failed to find L1Decoder or DecisionSummaryMakerAlg, cannot determine Decision names for output configuration") decObj = [] decObjHypoOut = [] - - Configurable.configurableRun3Behavior+=1 - acc, edmSet = triggerOutputCfg(ConfigFlags, decObj, decObjHypoOut, summaryMakerAlg) - Configurable.configurableRun3Behavior-=1 - acc.appendToGlobals() + CAtoGlobalWrapper( triggerOutputCfg, ConfigFlags, destinationSeq=AlgSequence("AthMasterSeq"), decObj=decObj, decObjHypoOut=decObjHypoOut, summaryAlg=summaryMakerAlg) #------------------------------------------------------------- # Non-ComponentAccumulator Cost Monitoring diff --git a/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Electron/ElectronRecoSequences.py b/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Electron/ElectronRecoSequences.py index dbc17f551815b93782ed35746d1a805397eb6eec..c7e2f37c3f319a6c14c9a09981b2ce889fba8321 100644 --- a/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Electron/ElectronRecoSequences.py +++ b/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Electron/ElectronRecoSequences.py @@ -13,8 +13,8 @@ def l2CaloRecoCfg( flags ): return reco def l2CaloHypoCfg( flags, name="UNSPECIFIED", CaloClusters="UNSPECIFIED" ): - from TrigEgammaHypo.TrigEgammaHypoConf import TrigL2CaloHypoAlgMT - l2CaloHypo = TrigL2CaloHypoAlgMT( name ) + from AthenaConfiguration.ComponentFactory import CompFactory + l2CaloHypo = CompFactory.TrigL2CaloHypoAlgMT( name ) l2CaloHypo.CaloClusters = CaloClusters return l2CaloHypo diff --git a/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Electron/generateElectron.py b/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Electron/generateElectron.py index e01ad60c871b607795d9a435739600a83a2eb65d..3e4c2bab38d82c3e8f674974fd0f399a283bc137 100644 --- a/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Electron/generateElectron.py +++ b/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Electron/generateElectron.py @@ -7,11 +7,11 @@ from TriggerMenuMT.HLTMenuConfig.Menu.MenuComponents import CAMenuSequence, \ from TrigEgammaHypo.TrigL2CaloHypoTool import TrigL2CaloHypoToolFromDict from AthenaConfiguration.ComponentAccumulator import ComponentAccumulator from TrigEDMConfig.TriggerEDMRun3 import recordable +from AthenaConfiguration.ComponentFactory import CompFactory # TODO remove once full tracking is in place -def fakeHypoAlgCfg(flags, name="FakeHypoForElectron"): - from TrigUpgradeTest.TrigUpgradeTestConf import HLTTest__TestHypoAlg - return HLTTest__TestHypoAlg( name, Input="" ) +def fakeHypoAlgCfg(flags, name="FakeHypoForElectron"): + return CompFactory.getComp("HLTTest::TestHypoAlg")( name, Input="" ) def generateChains( flags, chainDict ): @@ -52,19 +52,18 @@ def generateChains( flags, chainDict ): accTrk.addSequence(stepView) # # # fast ID - from TrigInDetConfig.InDetConfig import indetInViewRecoCfg + from TrigInDetConfig.TrigInDetConfig import indetInViewRecoCfg fastInDetReco = indetInViewRecoCfg(flags, viewMakerName='ElectronInDet', signature='Electron') accTrk.merge( fastInDetReco, sequenceName=stepReco.getName() ) # TODO once tracking fully works remove fake hypos - from TrigUpgradeTest.TrigUpgradeTestConf import HLTTest__TestHypoTool # TODO remove once full tracking is in place fakeHypoAlg = fakeHypoAlgCfg(flags, name='FakeHypoForElectron') def makeFakeHypoTool(chainDict, cfg = None): - return HLTTest__TestHypoTool(chainDict['chainName']) + return CompFactory.getComp("HLTTest::TestHypoTool")(chainDict['chainName']) accTrk.addEventAlgo(fakeHypoAlg, sequenceName=stepView.getName()) diff --git a/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Jet/JetRecoSequences.py b/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Jet/JetRecoSequences.py index a91bbcd72fa855d9b7a6c157a45b9e8b1f953fd2..869ab4174bc16381db13fd0a25639f040e08c721 100644 --- a/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Jet/JetRecoSequences.py +++ b/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Jet/JetRecoSequences.py @@ -4,9 +4,10 @@ from AthenaCommon.CFElements import parOR, seqAND from TriggerMenuMT.HLTMenuConfig.Menu.ChainConfigurationBase import RecoFragmentsPool - +from AthenaConfiguration.ComponentAccumulator import conf2toConfigurable from TriggerMenuMT.HLTMenuConfig.Jet import JetRecoConfiguration + # Translate the reco dict to a string for suffixing etc def jetRecoDictToString(jetRecoDict): strtemp = "{recoAlg}_{dataType}_{calib}_{jetCalib}" @@ -18,7 +19,7 @@ def jetRecoDictToString(jetRecoDict): # Start from a FullScan inputs maker def jetAthSequence(dummyFlags, **jetRecoDict): from TrigT2CaloCommon.CaloDef import clusterFSInputMaker - InputMakerAlg= clusterFSInputMaker() + InputMakerAlg= conf2toConfigurable(clusterFSInputMaker()) # Does nothing now, but may need to use this to toggle Insitu calib step # in which case it should be deduced from input flags @@ -44,6 +45,8 @@ def jetRecoSequence( dummyFlags, dataSource, RoIs = 'FSJETRoI', **jetRecoDict): jetNamePrefix = "HLT_" from TrigEDMConfig.TriggerEDMRun3 import recordable + from JetRecConfig import ConfigurableCompatibility + ConfigurableCompatibility.Convert2Configurable = True from JetRecConfig.JetRecConfig import getConstitPJGAlg, getJetAlgorithm if doRecluster: # Reclustering -- recursively call the basic jet reco and add this to the sequence, @@ -69,12 +72,12 @@ def jetRecoSequence( dummyFlags, dataSource, RoIs = 'FSJETRoI', **jetRecoDict): rcConstitPJAlg = getConstitPJGAlg( rcJetDef.inputdef ) rcConstitPJKey = rcConstitPJAlg.PJGetter.OutputContainer - recoSeq += rcConstitPJAlg + recoSeq += conf2toConfigurable( rcConstitPJAlg ) rcPJs = [rcConstitPJKey] rcJetRecAlg = getJetAlgorithm(rcJetsFullName, rcJetDef, rcPJs, rcModList) - recoSeq += rcJetRecAlg + recoSeq += conf2toConfigurable( rcJetRecAlg ) sequenceOut = recordable(rcJetsFullName) @@ -85,7 +88,7 @@ def jetRecoSequence( dummyFlags, dataSource, RoIs = 'FSJETRoI', **jetRecoDict): ungroomedJetRecoDict["recoAlg"] = ungroomedJetRecoDict["recoAlg"].rstrip("t") # Drop grooming spec ungroomedJetRecoDict["jetCalib"] = "nojcalib" # No need to calibrate (ungroomedJetRecoSequence,ungroomedJetsName) = RecoFragmentsPool.retrieve(jetRecoSequence,None,dataSource=dataSource, **ungroomedJetRecoDict) - recoSeq += ungroomedJetRecoSequence + recoSeq += conf2toConfigurable( ungroomedJetRecoSequence ) ungroomedDef = JetRecoConfiguration.defineJets(ungroomedJetRecoDict) # Cluster large-R jets only down to 50 GeV @@ -100,7 +103,7 @@ def jetRecoSequence( dummyFlags, dataSource, RoIs = 'FSJETRoI', **jetRecoDict): from JetRecConfig.JetGroomConfig import getJetGroomAlg groomalg = getJetGroomAlg(groomedJetsFullName,groomDef,groomedModList) - recoSeq += groomalg + recoSeq += conf2toConfigurable( groomalg ) sequenceOut = recordable(groomedJetsFullName) else: @@ -143,7 +146,7 @@ def jetRecoSequence( dummyFlags, dataSource, RoIs = 'FSJETRoI', **jetRecoDict): # Add the PseudoJetGetter alg to the sequence constitPJAlg = getConstitPJGAlg( jetDef.inputdef ) constitPJKey = constitPJAlg.PJGetter.OutputContainer - recoSeq += constitPJAlg + recoSeq += conf2toConfigurable( constitPJAlg ) # Basic list of PseudoJets is just the constituents # Append ghosts (tracks) if desired pjs = [constitPJKey] @@ -166,7 +169,7 @@ def jetRecoSequence( dummyFlags, dataSource, RoIs = 'FSJETRoI', **jetRecoDict): if "sub" in jetRecoDict["jetCalib"]: # Add the event shape alg if needed for area subtraction eventShapeAlg = JetRecConfig.getEventShapeAlg( jetDef.inputdef, constitPJKey, "HLT_" ) - recoSeq += eventShapeAlg + recoSeq += conf2toConfigurable(eventShapeAlg) # Not currently written because impossible to merge # across event views, which is maybe a concern in # the case of regional PFlow @@ -182,7 +185,7 @@ def jetRecoSequence( dummyFlags, dataSource, RoIs = 'FSJETRoI', **jetRecoDict): # Generate a JetAlgorithm to run the jet finding and modifiers # (via a JetRecTool instance). jetRecAlg = JetRecConfig.getJetAlgorithm(jetsFullName, jetDef, pjs, jetModList) - recoSeq += jetRecAlg + recoSeq += conf2toConfigurable( jetRecAlg ) # End of basic jet reco pass diff --git a/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Jet/JetTrackingConfig.py b/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Jet/JetTrackingConfig.py index eaad75e3b641ad0cfba1252203c96ae0b26e128a..1ddb3e812883f70f12eae13aa08660891cdb4914 100644 --- a/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Jet/JetTrackingConfig.py +++ b/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Jet/JetTrackingConfig.py @@ -6,6 +6,8 @@ from AthenaCommon.CFElements import parOR from TrigEDMConfig.TriggerEDMRun3 import recordable from JetRecTools.JetRecToolsConfig import getTrackSelTool, getTrackVertexAssocTool +from AthenaConfiguration.ComponentFactory import CompFactory +from AthenaConfiguration.ComponentAccumulator import conf2toConfigurable def JetTrackingSequence(dummyFlags,trkopt,RoIs): jetTrkSeq = parOR( "JetTrackingSeq_"+trkopt, []) @@ -44,15 +46,18 @@ def JetTrackingSequence(dummyFlags,trkopt,RoIs): trackcollectionmap[trkopt]["JetTracks"] = jettracksname trackcollectionmap[trkopt]["TVA"] = tvaname - from JetRec import JetRecConf - jettrkprepalg = JetRecConf.JetAlgorithm("jetalg_TrackPrep") + #from JetRec import JetRecConf + #jettrkprepalg = JetRecConf.JetAlgorithm("jetalg_TrackPrep") + + + jettrkprepalg = CompFactory.JetAlgorithm("jetalg_TrackPrep") jettrkprepalg.Tools = [ jettrackselloose, jettvassoc ] - jetTrkSeq += jettrkprepalg + jetTrkSeq += conf2toConfigurable( jettrkprepalg ) label = "GhostTrack_{}".format(trkopt) ghosttracksname = "PseudoJet{}".format(label) - pjg = JetRecConf.PseudoJetGetter("pjg_{}".format(label), - InputContainer=tracksname, + pjg = CompFactory.PseudoJetGetter("pjg_{}".format(label), + InputContainer=tracksname, OutputContainer=ghosttracksname, Label=label, SkipNegativeEnergy=True, @@ -61,10 +66,10 @@ def JetTrackingSequence(dummyFlags,trkopt,RoIs): trackcollectionmap[trkopt]["GhostTracks"] = ghosttracksname trackcollectionmap[trkopt]["GhostTracksLabel"] = label - pjgalg = JetRecConf.PseudoJetAlgorithm( + pjgalg = CompFactory.PseudoJetAlgorithm( "pjgalg_"+label, PJGetter=pjg ) - jetTrkSeq += pjgalg + jetTrkSeq += conf2toConfigurable( pjgalg ) return jetTrkSeq, trkcolls diff --git a/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Jet/TriggerJetMods.py b/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Jet/TriggerJetMods.py index 15d86d8f0b33a728351399c165139f0ab9643e45..408f56fc5fb4618d86e963b2bf7a6da04febd095 100644 --- a/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Jet/TriggerJetMods.py +++ b/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Jet/TriggerJetMods.py @@ -1,3 +1,4 @@ +# Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration from JetRecConfig.JetDefinition import JetModifier ######################################################################## @@ -6,13 +7,13 @@ from JetRecConfig.JetDefinition import JetModifier # No need for the special momentum scales, just copy the basic four-vec # to "DetectorEtaPhi", because we're not doing origin correction # and certainly not with the offline collection names -from JetMomentTools import JetMomentToolsConf +from AthenaConfiguration.ComponentFactory import CompFactory def getConstitFourMomTool_copy(): - cfourmom = JetMomentToolsConf.JetConstitFourMomTool("constitfourmom_copy", - JetScaleNames = ["DetectorEtaPhi"], - AltConstitColls = [""], - AltConstitScales = [0], - AltJetScales = ["JetConstitScaleMomentum"]) + cfourmom = CompFactory.JetConstitFourMomTool("constitfourmom_copy", + JetScaleNames = ["DetectorEtaPhi"], + AltConstitColls = [""], + AltConstitScales = [0], + AltJetScales = ["JetConstitScaleMomentum"]) return cfourmom ConstitFourMom_copy = JetModifier("JetConstitFourMomTool", "constitfourmom_copy", diff --git a/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Jet/generateJet.py b/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Jet/generateJet.py index 88a417bfeebf4279355abeb72ee41fdd818fda0f..b70f9f7230d60237fa4a50e439acd359da55fd83 100644 --- a/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Jet/generateJet.py +++ b/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Jet/generateJet.py @@ -25,16 +25,20 @@ def generateChains( flags, chainDict ): cellsname = "CaloCellsFS" clustersname = "HLT_CaloTopoClustersFS" - from TrigCaloRec.TrigCaloRecConfig import HLTCaloCellMaker - cellmaker=HLTCaloCellMaker("HLTCaloCellMaker_FS") - cellmaker.RoIs="FSJETRoI" - cellmaker.TrigDataAccessMT=cdaSvc - cellmaker.CellsName=cellsname + from AthenaConfiguration.ComponentFactory import CompFactory + cellmaker = CompFactory.HLTCaloCellMaker("HLTCaloCellMaker_FS") + cellmaker.RoIs = "FSJETRoI" + cellmaker.TrigDataAccessMT = cdaSvc + cellmaker.CellsName = cellsname inEventReco.addRecoAlg(cellmaker) from CaloRec.CaloTopoClusterConfig import CaloTopoClusterCfg - inEventReco.mergeReco( CaloTopoClusterCfg(flags,cellsname=cellsname,clustersname=clustersname,doLCCalib=False,sequenceName=inEventReco.recoSeq.name()) ) + inEventReco.mergeReco( CaloTopoClusterCfg( flags, + cellsname = cellsname, + clustersname = clustersname, + doLCCalib = False, + sequenceName = inEventReco.recoSeq.name) ) #sequencing of actual jet reconstruction from JetRecConfig import JetRecConfig @@ -58,9 +62,8 @@ def generateChains( flags, chainDict ): acc.merge(inEventReco,stepReco.getName()) #hypo - from TrigHLTJetHypo.TrigHLTJetHypoConf import TrigJetHypoAlgMT from TrigHLTJetHypo.TrigJetHypoToolConfig import trigJetHypoToolFromDict - hypo = TrigJetHypoAlgMT("TrigJetHypoAlgMT_a4tcem_subjesIS") + hypo = CompFactory.TrigJetHypoAlgMT("TrigJetHypoAlgMT_a4tcem_subjesIS") jetsfullname = jetprefix+TrigAntiKt4EMTopoSubJES.basename+jetsuffix+"Jets" hypo.Jets = jetsfullname acc.addEventAlgo(hypo) diff --git a/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Menu/HLTCFConfig.py b/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Menu/HLTCFConfig.py index 533f10f729b8d6d0ff7dfcd88140043ab47d5305..c7f9600463bd48c315575e8aa88ddc6bf3a31e30 100644 --- a/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Menu/HLTCFConfig.py +++ b/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Menu/HLTCFConfig.py @@ -35,6 +35,7 @@ from AthenaCommon.CFElements import parOR, seqAND, seqOR from AthenaCommon.AlgSequence import dumpSequence from TriggerMenuMT.HLTMenuConfig.Menu.HLTCFDot import stepCF_DataFlow_to_dot, stepCF_ControlFlow_to_dot, all_DataFlow_to_dot, create_dot from TriggerMenuMT.HLTMenuConfig.Menu.MenuComponentsNaming import CFNaming +from AthenaCommon.Configurable import Configurable from AthenaCommon.Logging import logging @@ -160,28 +161,29 @@ def makeHLTTree(newJO=False, triggerConfigHLT = None): from TriggerJobOpts.TriggerConfig import collectHypos, collectFilters, collectViewMakers, collectDecisionObjects,\ triggerMonitoringCfg, triggerSummaryCfg, triggerMergeViewsAndAddMissingEDMCfg, collectHypoDecisionObjects from AthenaConfiguration.AllConfigFlags import ConfigFlags - from AthenaCommon.Configurable import Configurable - Configurable.configurableRun3Behavior+=1 + + from AthenaConfiguration.ComponentAccumulator import conf2toConfigurable, appendCAtoAthena hypos = collectHypos(steps) filters = collectFilters(steps) viewMakers = collectViewMakers(steps) + Configurable.configurableRun3Behavior=1 summaryAcc, summaryAlg = triggerSummaryCfg( ConfigFlags, hypos ) - hltTop += summaryAlg - summaryAcc.appendToGlobals() + Configurable.configurableRun3Behavior=0 + hltTop += conf2toConfigurable( summaryAlg ) + appendCAtoAthena( summaryAcc ) decObj = collectDecisionObjects( hypos, filters, l1decoder[0], summaryAlg ) decObjHypoOut = collectHypoDecisionObjects(hypos, inputs=False, outputs=True) - + Configurable.configurableRun3Behavior=1 monAcc, monAlg = triggerMonitoringCfg( ConfigFlags, hypos, filters, l1decoder[0] ) - monAcc.appendToGlobals() - hltTop += monAlg - - # this is a shotcut for now, we always assume we may be writing ESD & AOD outputs, so all gaps will be filled edmAlg = triggerMergeViewsAndAddMissingEDMCfg(['AOD', 'ESD'], hypos, viewMakers, decObj, decObjHypoOut) - hltTop += edmAlg + Configurable.configurableRun3Behavior=0 + hltTop += conf2toConfigurable( monAlg ) + appendCAtoAthena( monAcc ) - Configurable.configurableRun3Behavior-=1 + # this is a shotcut for now, we always assume we may be writing ESD & AOD outputs, so all gaps will be filled + hltTop += conf2toConfigurable(edmAlg) topSequence += hltTop # Test the configuration diff --git a/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Menu/HLTCFConfig_newJO.py b/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Menu/HLTCFConfig_newJO.py index 447afb87b97177b977f8c091ae04a703248e7e6b..8dff3a97d213fbbe8e327d741037415ff7bb23d2 100644 --- a/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Menu/HLTCFConfig_newJO.py +++ b/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Menu/HLTCFConfig_newJO.py @@ -2,12 +2,13 @@ from collections import defaultdict from AthenaConfiguration.ComponentAccumulator import ComponentAccumulator +from AthenaConfiguration.ComponentFactory import CompFactory from TriggerMenuMT.HLTMenuConfig.Menu.MenuComponentsNaming import CFNaming -from TriggerMenuMT.HLTMenuConfig.Menu.HLTCFConfig import buildFilter, makeSummary +from TriggerMenuMT.HLTMenuConfig.Menu.HLTCFConfig import makeSummary from TriggerMenuMT.HLTMenuConfig.Menu.HLTCFDot import stepCF_DataFlow_to_dot, \ stepCF_ControlFlow_to_dot, all_DataFlow_to_dot -from TriggerMenuMT.HLTMenuConfig.Menu.MenuComponents import CFSequence, createStepView -from AthenaCommon.CFElements import parOR, seqAND +from TriggerMenuMT.HLTMenuConfig.Menu.MenuComponents import CFSequence, createStepView, SequenceFilterNode +from AthenaCommon.CFElements import parOR, seqAND, findAlgorithm from AthenaCommon.Logging import logging log = logging.getLogger( __name__ ) @@ -77,12 +78,20 @@ def generateDecisionTree(chains): # One aggregated filter per chain (one per column in matrix) filterName = CFNaming.filterName(chainStep.name) - sfilter = buildFilter(filterName, filter_input) - filterAcc.addEventAlgo(sfilter.Alg, sequenceName = stepFilterNodeName) + #filter = buildFilter(filterName, filter_input) + + # append input to filter if it exists + filterAlg = findAlgorithm( filterAcc.getSequence(), filterName ) + if filterAlg: + filterAlg.Input += filter_input + else: + filterAlg = CompFactory.RoRSeqFilter(filterName, Input=filter_input ) + filterAcc.addEventAlgo(filterAlg, sequenceName = stepFilterNodeName) stepReco, stepView = createStepView(chainStep.name) - viewWithFilter = seqAND(chainStep.name, [sfilter.Alg, stepView]) + viewWithFilter = seqAND(chainStep.name, [filterAlg, stepView]) + sfilter = SequenceFilterNode(filterAlg, 'Input', 'Output') recoAcc.addSequence(viewWithFilter, parentName = stepRecoNodeName) stepsAcc = ComponentAccumulator() diff --git a/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Menu/HLTCFDot.py b/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Menu/HLTCFDot.py index 00f0f3a3de23d3ce95e52d65741ec08025b335bc..58d11c34e41071de2e60fd12d592077ccf89b191 100644 --- a/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Menu/HLTCFDot.py +++ b/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Menu/HLTCFDot.py @@ -6,7 +6,7 @@ from AthenaCommon.AlgSequence import AthSequencer from TriggerMenuMT.HLTMenuConfig.Menu.MenuComponents import algColor import itertools - +from AthenaCommon.CFElements import getSequenceChildren, isSequence def create_dot(): from TriggerJobOpts.TriggerFlags import TriggerFlags @@ -21,18 +21,18 @@ def drawHypoTools(file, all_hypos): for hp in all_hypos: for hypotool in hp.tools: file.write(" %s[fillcolor=yellow,style=filled,shape= Mdiamond]\n"%(hypotool)) - file.write(" %s -> %s [style=dashed, color=grey]\n"%(hp.Alg.name(), hypotool)) + file.write(" %s -> %s [style=dashed, color=grey]\n"%(hp.Alg.getName(), hypotool)) def stepCF_ControlFlow_to_dot(stepCF): def _dump (seq, indent): o = list() - for c in seq.getChildren(): - if isinstance(c, AthSequencer): - o.append( ("%s[color=%s, shape=circle, width=.5, fixedsize=true ,style=filled]\n"%(c.name(),_seqColor(c)), indent) ) + if isSequence(seq): + for c in getSequenceChildren( seq ): + o.append( ("%s[color=%s, shape=circle, width=.5, fixedsize=true ,style=filled]\n"%(c.getName(),_seqColor(c)), indent) ) else: - o.append( ("%s[fillcolor=%s,style=filled]\n"%(c.name(),algColor(c)), indent) ) - o.append( ("%s -> %s\n"%(seq.name(), c.name()), indent)) + o.append( ("%s[fillcolor=%s,style=filled]\n"%(c.getName(),algColor(c)), indent) ) + o.append( ("%s -> %s\n"%(seq.getName(), c.getName()), indent)) o.extend( _dump (c, indent+1) ) return o @@ -66,17 +66,17 @@ def stepCF_ControlFlow_to_dot(stepCF): - with open('%s.CF.dot'%stepCF.name(), mode="wt") as file: + with open('%s.CF.dot'%stepCF.getName(), mode="wt") as file: #strict file.write( 'digraph step { \n'\ +' concentrate=true;\n'\ +' rankdir="LR";\n' +' node [ shape=polygon, fontname=Helvetica ]\n'\ +' edge [ fontname=Helvetica ]\n' - +' %s [shape=Mdiamond]\n'%stepCF.name()) + +' %s [shape=Mdiamond]\n'%stepCF.getName()) indent=0 - # out = [("%s[color=%s shape=circle]\n"%(stepCF.name(),_seqColor(stepCF)), indent)] + # out = [("%s[color=%s shape=circle]\n"%(stepCF.getName(),_seqColor(stepCF)), indent)] out = [("",indent)] out.extend( _dump( stepCF, indent=indent+1 ) ) for n,i in out: @@ -106,7 +106,7 @@ def all_DataFlow_to_dot(name, step_list): # reset the last step last_step_hypoNodes =[] for cfseq in cfseq_list: - file.write(" %s[fillcolor=%s style=filled]\n"%(cfseq.filter.Alg.name(),algColor(cfseq.filter.Alg))) + file.write(" %s[fillcolor=%s style=filled]\n"%(cfseq.filter.Alg.getName(),algColor(cfseq.filter.Alg))) step_connections.append(cfseq.filter) file.write( '\n subgraph cluster_%s {\n'%(cfseq.step.name)\ +' concentrate=true;\n' @@ -133,7 +133,7 @@ def all_DataFlow_to_dot(name, step_list): #combo if cfseq.step.isCombo: if cfseq.step.combo is not None: - file.write(" %s[color=%s]\n"%(cfseq.step.combo.Alg.name(), algColor(cfseq.step.combo.Alg))) + file.write(" %s[color=%s]\n"%(cfseq.step.combo.Alg.getName(), algColor(cfseq.step.combo.Alg))) cfseq_algs.append(cfseq.step.combo) last_step_hypoNodes.append(cfseq.step.combo) file.write(' }\n') @@ -160,9 +160,9 @@ def stepCF_DataFlow_to_dot(name, cfseq_list): all_hypos = [] for cfseq in cfseq_list: - file.write(" %s[fillcolor=%s style=filled]\n"%(cfseq.filter.Alg.name(),algColor(cfseq.filter.Alg))) + file.write(" %s[fillcolor=%s style=filled]\n"%(cfseq.filter.Alg.getName(),algColor(cfseq.filter.Alg))) for inp in cfseq.filter.getInputList(): - file.write(addConnection(name, cfseq.filter.Alg.name(), inp)) + file.write(addConnection(name, cfseq.filter.Alg.getName(), inp)) file.write( '\n subgraph cluster_%s {\n'%(cfseq.step.name)\ +' concentrate=true;\n' @@ -184,7 +184,7 @@ def stepCF_DataFlow_to_dot(name, cfseq_list): #combo if cfseq.step.isCombo: if cfseq.step.combo is not None: - file.write(" %s[color=%s]\n"%(cfseq.step.combo.Alg.name(), algColor(cfseq.step.combo.Alg))) + file.write(" %s[color=%s]\n"%(cfseq.step.combo.Alg.getName(), algColor(cfseq.step.combo.Alg))) cfseq_algs.append(cfseq.step.combo) file.write(' }\n') @@ -208,8 +208,8 @@ def findConnections(alg_list): dataIntersection = list(set(outs) & set(ins)) if len(dataIntersection) > 0: for line in dataIntersection: - lineconnect+=addConnection(nodeA.Alg.name(),nodeB.Alg.name(), line) -# print "Data connections between %s and %s: %s"%(nodeA.Alg.name(), nodeB.Alg.name(), line) + lineconnect+=addConnection(nodeA.Alg.getName(),nodeB.Alg.getName(), line) +# print "Data connections between %s and %s: %s"%(nodeA.Alg.getName(), nodeB.Alg.getName(), line) return lineconnect @@ -229,8 +229,8 @@ def findDHconnections(nodeA, nodeB): dataIntersection = list(set(outs) & set(ins)) if len(dataIntersection) > 0: for line in dataIntersection: - lineconnect+=addConnection(nodeA.Alg.name(),nodeB.Alg.name(), line) - #print 'Data DH connections between %s and %s: %s'%(nodeA.Alg.name(), nodeB.Alg.name(), line) + lineconnect+=addConnection(nodeA.Alg.getName(),nodeB.Alg.getName(), line) + #print 'Data DH connections between %s and %s: %s'%(nodeA.Alg.getName(), nodeB.Alg.getName(), line) return lineconnect @@ -241,7 +241,7 @@ def getValuesProperties(node): algs = [] if isinstance(node.Alg, AthSequencer): seq=node.Alg - algs = seq.getChildren() + algs = getSequenceChildren( seq ) algs.pop(0) # remove InputMaker else: algs.append(node.Alg) diff --git a/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Menu/HLTMenuJSON.py b/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Menu/HLTMenuJSON.py index c9ae9790827cc0cc2ccbfd2fb4a85c3193ddd386..2b42306e92f30bbe059d3f905d58d0f0cb3c2b03 100644 --- a/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Menu/HLTMenuJSON.py +++ b/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Menu/HLTMenuJSON.py @@ -3,27 +3,30 @@ import json from collections import OrderedDict as odict from TrigConfigSvc.TrigConfigSvcCfg import getHLTMenuFileName - +from AthenaCommon.CFElements import getSequenceChildren, isSequence from AthenaCommon.Logging import logging __log = logging.getLogger( __name__ ) +def getChildrenIfSequence( s ): + return getSequenceChildren( s ) if isSequence( s ) else [] + def __getStepsDataFromAlgSequence(HLTAllSteps): """ Generates a list where the index corresponds to a Step number and the stored object is a list of Sequencers making up the Step """ stepsData = [] if HLTAllSteps is not None: - for HLTStep in HLTAllSteps.getChildren(): - if "_reco" not in HLTStep.name(): # Avoid the pre-step Filter execution + for HLTStep in getSequenceChildren( HLTAllSteps ): + if "_reco" not in HLTStep.getName(): # Avoid the pre-step Filter execution # Look for newJO reco - for Step in HLTStep.getChildren(): - for View in Step.getChildren(): - for Reco in View.getChildren(): - if "_reco" in Reco.name() and HLTStep.name() not in stepsData: - stepsData.append( HLTStep.getChildren() ) + for Step in getChildrenIfSequence( HLTStep ): + for View in getChildrenIfSequence( Step ): + for Reco in getChildrenIfSequence( View ): + if "_reco" in Reco.getName() and HLTStep.getName() not in stepsData: + stepsData.append( getSequenceChildren( HLTStep ) ) break continue - stepsData.append( HLTStep.getChildren() ) + stepsData.append( getSequenceChildren( HLTStep ) ) else: __log.warn( "No HLTAllSteps sequencer, will not export per-Step data for chains.") return stepsData @@ -40,11 +43,11 @@ def __getChainSequencers(stepsData, chainName): mySequencer = None endOfChain = False for sequencer in step: - sequencerFilter = sequencer.getChildren()[0] # Always the first child in the step + sequencerFilter = getSequenceChildren( sequencer )[0] # Always the first child in the step if any(chainName in chainNameFromLegName(fChain) for fChain in sequencerFilter.Chains): if mySequencer is not None: __log.error( "Multiple Filters found (corresponding Sequencers %s, %s) for %s in Step %i!", - mySequencer.name(), sequencer.name(), chainName, counter) + mySequencer.getName(), sequencer.getName(), chainName, counter) mySequencer = sequencer if mySequencer is None: endOfChain = True @@ -55,7 +58,7 @@ def __getChainSequencers(stepsData, chainName): __log.error( "Found another Step, (Step %i) for chain %s " "which looked like it had already finished after %i Steps!", counter, chainName, sequencers.len()) - sequencers.append(mySequencer.name()) + sequencers.append(mySequencer.getName()) return sequencers def __getSequencerAlgs(stepsData): @@ -65,7 +68,7 @@ def __getSequencerAlgs(stepsData): sequencerAlgs = odict() for step in stepsData: for sequencer in step: - sequencerAlgs[ sequencer.name() ] = list(map(lambda x: x.getFullName(), findAllAlgorithms(sequencer))) + sequencerAlgs[ sequencer.getName() ] = list(map(lambda x: x.getFullJobOptName(), findAllAlgorithms(sequencer))) return sorted(sequencerAlgs.items(), key=lambda t: t[0]) def __generateJSON( chainDicts, chainConfigs, HLTAllSteps, menuName, fileName ): diff --git a/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Menu/LS2_v1_newJO.py b/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Menu/LS2_v1_newJO.py index 1c66197a11badca3eef94384021f389d5d78ac2b..2eee6d649370783551dd1abfddf41ab8081b17eb 100644 --- a/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Menu/LS2_v1_newJO.py +++ b/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Menu/LS2_v1_newJO.py @@ -98,8 +98,8 @@ if __name__ == "__main__": fs = flatAlgorithmSequences( menu.getSequence('HLTAllSteps') ) for seq, algs in six.iteritems (fs): for alg in algs: - if 'HypoTools' in alg.getProperties(): - log.verbose("%s %s", alg.getName(), [ t.getFullName() for t in alg.HypoTools ]) + if 'HypoTools' in alg._properties: + log.verbose("%s %s", alg.name, [ t.getFullJobOptName() for t in alg.HypoTools ]) f = open('newJOMenu.pkl', 'wb') acc.store(f) diff --git a/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Menu/MenuComponents.py b/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Menu/MenuComponents.py index ade757ddfef7de1a6ee95abed975643f08a4295d..88748d06b00b453054adcff10fbfe3de7f37b8b0 100644 --- a/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Menu/MenuComponents.py +++ b/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Menu/MenuComponents.py @@ -3,15 +3,15 @@ from AthenaCommon.Logging import logging log = logging.getLogger( __name__ ) -from DecisionHandling.DecisionHandlingConf import RoRSeqFilter from TriggerMenuMT.HLTMenuConfig.Menu.MenuComponentsNaming import CFNaming -from AthenaCommon.CFElements import parOR, seqAND - +from AthenaCommon.CFElements import parOR, seqAND, compName, getProp +from AthenaConfiguration.ComponentFactory import CompFactory +RoRSeqFilter=CompFactory.RoRSeqFilter class Node(object): """base class representing one Alg + inputs + outputs, to be used to Draw dot diagrams and connect objects""" def __init__(self, Alg): - self.name = ("%sNode")%( Alg.name()) + self.name = ("%sNode")%( Alg.name ) self.Alg=Alg self.inputs=[] self.outputs=[] @@ -29,7 +29,7 @@ class Node(object): return self.inputs def __repr__(self): - return "Node::%s [%s] -> [%s]"%(self.Alg.name(), ' '.join(map(str, self.getInputList())), ' '.join(map(str, self.getOutputList()))) + return "Node::%s [%s] -> [%s]"%(self.Alg.name, ' '.join(map(str, self.getInputList())), ' '.join(map(str, self.getOutputList()))) @@ -42,10 +42,10 @@ class AlgNode(Node): def addDefaultOutput(self): if self.outputProp != '': - self.addOutput(("%s_%s"%(self.Alg.name(),self.outputProp))) + self.addOutput(("%s_%s"%(self.Alg.getName(),self.outputProp))) def setPar(self, prop, name): - cval = self.Alg.getProperties()[prop] + cval = getProp( self.Alg, prop) if type(cval) is list: cval.append(name) return setattr(self.Alg, prop, cval) @@ -53,17 +53,14 @@ class AlgNode(Node): return setattr(self.Alg, prop, name) def resetPar(self, prop): - cval = self.Alg.getProperties()[prop] + cval = getProp(self.Alg, prop) if type(cval) is list: return setattr(self.Alg, prop, []) else: return setattr(self.Alg, prop, "") def getPar(self, prop): - if hasattr(self.Alg, prop): - return getattr(self.Alg, prop) - else: - return self.Alg.getDefaultProperty(prop) + return getProp(self.Alg, prop) def resetOutput(self): @@ -119,7 +116,7 @@ class AlgNode(Node): return inputs def __repr__(self): - return "Alg::%s [%s] -> [%s]"%(self.Alg.name(), ' '.join(map(str, self.getInputList())), ' '.join(map(str, self.getOutputList()))) + return "Alg::%s [%s] -> [%s]"%(self.Alg.getName(), ' '.join(map(str, self.getInputList())), ' '.join(map(str, self.getOutputList()))) def algColor(alg): @@ -165,7 +162,7 @@ class HypoAlgNode(AlgNode): """Node for HypoAlgs""" initialOutput= 'StoreGateSvc+UNSPECIFIED_OUTPUT' def __init__(self, Alg): - assert isHypoBase(Alg), "Error in creating HypoAlgNode from Alg " + Alg.name() + assert isHypoBase(Alg), "Error in creating HypoAlgNode from Alg " + compName(Alg) AlgNode.__init__(self, Alg, 'HypoInputDecisions', 'HypoOutputDecisions') self.tools = [] self.previous=[] @@ -183,7 +180,7 @@ class HypoAlgNode(AlgNode): def addHypoTool (self, hypoToolConf): - log.debug(" Adding HypoTool %s to %s", hypoToolConf.chainDict['chainName'], self.Alg.name()) + log.debug(" Adding HypoTool %s to %s", hypoToolConf.chainDict['chainName'], compName(self.Alg)) if hypoToolConf.chainDict['chainName'] not in self.tools: ## HypoTools are private, so need to be created when added to the Alg ## this incantation may seem strange, however it is the only one which works @@ -205,7 +202,7 @@ class HypoAlgNode(AlgNode): self.resetInput() def __repr__(self): - return "HypoAlg::%s [%s] -> [%s], previous = [%s], HypoTools=[%s]"%(self.Alg.name(),' '.join(map(str, self.getInputList())), + return "HypoAlg::%s [%s] -> [%s], previous = [%s], HypoTools=[%s]"%(compName(self.Alg),' '.join(map(str, self.getInputList())), ' '.join(map(str, self.getOutputList())), ' '.join(map(str, self.previous)), ' '.join(map(str, self.tools))) @@ -223,7 +220,7 @@ class SequenceFilterNode(AlgNode): return self.getPar("Chains") def __repr__(self): - return "SequenceFilter::%s [%s] -> [%s], chains=%s"%(self.Alg.name(),' '.join(map(str, self.getInputList())),' '.join(map(str, self.getOutputList())), self.getChains()) + return "SequenceFilter::%s [%s] -> [%s], chains=%s"%(compName(self.Alg),' '.join(map(str, self.getInputList())),' '.join(map(str, self.getOutputList())), self.getChains()) class RoRSequenceFilterNode(SequenceFilterNode): @@ -235,9 +232,9 @@ class RoRSequenceFilterNode(SequenceFilterNode): class InputMakerNode(AlgNode): def __init__(self, Alg): - assert isInputMakerBase(Alg), "Error in creating InputMakerNode from Alg " + Alg.name() + assert isInputMakerBase(Alg), "Error in creating InputMakerNode from Alg " + compName(Alg) AlgNode.__init__(self, Alg, 'InputMakerInputDecisions', 'InputMakerOutputDecisions') - input_maker_output = CFNaming.inputMakerOutName(self.Alg.name(),"out") + input_maker_output = CFNaming.inputMakerOutName(compName(self.Alg),"out") self.addOutput(input_maker_output) @@ -256,14 +253,14 @@ class ComboMaker(AlgNode): def addChain(self, chainDict): chainName = chainDict['chainName'] - log.debug("ComboMaker %s adding chain %s", self.Alg.name(),chainName) + log.debug("ComboMaker %s adding chain %s", compName(self.Alg), chainName) allMultis = self.mult newdict = {chainName : allMultis} cval = self.Alg.getProperties()[self.prop] # check necessary to see if chain was added already? if type(cval) is dict: if chainName in cval.keys(): - log.error("ERROR in cofiguration: ComboAlg %s has already been configured for chain %s", self.Alg.name(), chainName) + log.error("ERROR in cofiguration: ComboAlg %s has already been configured for chain %s", compName(self.Alg), chainName) else: cval[chainName]=allMultis else: @@ -282,7 +279,7 @@ class ComboMaker(AlgNode): if not len(comboToolConfs): return confs = [ HypoToolConf( tool ) for tool in comboToolConfs ] - log.debug("ComboMaker.createComboHypoTools for chain %s, Alg %s with %d tools", chainDict["chainName"],self.Alg.name(), len(comboToolConfs)) + log.debug("ComboMaker.createComboHypoTools for chain %s, Alg %s with %d tools", chainDict["chainName"],self.Alg.getName(), len(comboToolConfs)) self.Alg.ComboHypoTools = [conf.confAndCreate( chainDict ) for conf in confs] @@ -320,14 +317,13 @@ def isComboHypoAlg(alg): ########################################################## # Now sequences and chains ########################################################## -from DecisionHandling.DecisionHandlingConf import InputMakerForRoI class EmptyMenuSequence(object): """ Class to emulate reco sequences with no Hypo""" """ By construction it has no Hypo;""" def __init__(self, name): - Maker = InputMakerForRoI("IM"+name) + Maker = CompFactory.InputMakerForRoI("IM"+name) self._name = name self._maker = InputMakerNode( Alg = Maker ) self._seed='' @@ -363,7 +359,7 @@ class EmptyMenuSequence(object): # menu sequence empty do not add to athena sequencer log.debug("This sequence is empty. Adding Maker node only to athena sequencer") ath_sequence = self.sequence.Alg - name = ath_sequence.name() + name = ath_sequence.getName() if name in already_connected: log.debug("AthSequencer %s already in the Tree, not added again",name) return stepReco, seqAndView, already_connected @@ -394,7 +390,7 @@ class MenuSequence(object): """ By construction it has one Hypo Only; behaviour changed to support muFastOvlpRmSequence() which has two, but this will change""" def __init__(self, Sequence, Maker, Hypo, HypoToolGen): - assert Maker.name().startswith("IM"), "The input maker {} name needs to start with letter: IM".format(Maker.name()) + assert compName(Maker).startswith("IM"), "The input maker {} name needs to start with letter: IM".format(compName(Maker)) self._sequence = Node( Alg=Sequence) self._maker = InputMakerNode( Alg = Maker ) self._seed='' @@ -409,26 +405,26 @@ class MenuSequence(object): if isinstance(Hypo, list): self._hypo = [ HypoAlgNode( Alg = alg ) for alg in Hypo ] self._hypoToolConf = [ HypoToolConf( tool ) for tool in HypoToolGen ] - self._name = [ CFNaming.menuSequenceName(alg.name()) for alg in self._hypo ] + self._name = [ CFNaming.menuSequenceName(compName(alg)) for alg in self._hypo ] hypo_input = input_maker_output for hypo_alg_node in self._hypo: - hypo_output = CFNaming.hypoAlgOutName(hypo_alg_node.Alg.name()) + hypo_output = CFNaming.hypoAlgOutName(compName(hypo_alg_node.Alg)) hypo_alg_node.addOutput( hypo_output ) hypo_alg_node.setPreviousDecision( hypo_input ) hypo_input = hypo_output else: - self._name = CFNaming.menuSequenceName(Hypo.name()) + self._name = CFNaming.menuSequenceName(compName(Hypo)) self._hypoToolConf = HypoToolConf( HypoToolGen ) self._hypo = HypoAlgNode( Alg = Hypo ) - hypo_output = CFNaming.hypoAlgOutName(Hypo.name()) + hypo_output = CFNaming.hypoAlgOutName(compName(Hypo)) self._hypo.addOutput(hypo_output) self._hypo.setPreviousDecision( input_maker_output) log.debug("MenuSequence.connect: connecting InputMaker and HypoAlg and OverlapRemoverAlg, adding: \n\ InputMaker::%s.output=%s",\ - self.maker.Alg.name(), input_maker_output) + compName(self.maker.Alg), input_maker_output) if type(self._hypo) is list: hypo_input_total = [] @@ -439,11 +435,11 @@ class MenuSequence(object): for hp, hp_in, hp_out in zip( self._hypo, hypo_input_total, hypo_output_total): log.debug("HypoAlg::%s.previousDecision=%s, \n\ HypoAlg::%s.output=%s",\ - hp.Alg.name(), hp_in, hp.Alg.name(), hp_out) + compName(hp.Alg), hp_in, compName(hp.Alg), hp_out) else: log.debug("HypoAlg::%s.previousDecision=%s, \n \ HypoAlg::%s.output=%s",\ - self.hypo.Alg.name(), input_maker_output, self.hypo.Alg.name(), self.hypo.readOutputList()[0]) + compName(self.hypo.Alg), input_maker_output, compName(self.hypo.Alg), self.hypo.readOutputList()[0]) @property @@ -498,11 +494,11 @@ class MenuSequence(object): hypo_output_total=[] hypo_input = input_maker_output for hypo_alg, hptool in zip(Hypo, HypoToolGen): - self.name.append( CFNaming.menuSequenceName(hypo_alg.name()) ) + self.name.append( CFNaming.menuSequenceName(compName(hypo_alg)) ) self.hypoToolConf.append( HypoToolConf( hptool ) ) hypo_input_total.append(hypo_input) - hypo_output = CFNaming.hypoAlgOutName(hypo_alg.name()) + hypo_output = CFNaming.hypoAlgOutName(compName(hypo_alg)) hypo_output_total.append(hypo_output) hypo_node = HypoAlgNode( Alg = hypo_alg ) @@ -513,26 +509,26 @@ class MenuSequence(object): hypo_input = hypo_output log.warning("Sequence %s has more than one Hypo; correct your sequence for next develpments", self.name) else: - self.name = CFNaming.menuSequenceName(Hypo.name()) + self.name = CFNaming.menuSequenceName(compName(Hypo)) self.hypoToolConf = HypoToolConf( HypoToolGen ) self._hypo = HypoAlgNode( Alg = Hypo ) - hypo_output = CFNaming.hypoAlgOutName(Hypo.name()) + hypo_output = CFNaming.hypoAlgOutName(compName(Hypo)) self._hypo.addOutput(hypo_output) self._hypo.setPreviousDecision( input_maker_output) log.debug("MenuSequence.connect: connecting InputMaker and HypoAlg and OverlapRemoverAlg, adding: \n\ InputMaker::%s.output=%s",\ - self._maker.Alg.name(), input_maker_output) + compName(self._maker.Alg), input_maker_output) if type(self._hypo) is list: for hp, hp_in, hp_out in zip( self._hypo, hypo_input_total, hypo_output_total): log.debug("HypoAlg::%s.previousDecision=%s, \n\ HypoAlg::%s.output=%s",\ - hp.Alg.name(), hp_in, hp.Alg.name(), hp_out) + compName(hp.Alg), hp_in, compName(hp.Alg), hp_out) else: log.debug("HypoAlg::%s.previousDecision=%s, \n\ HypoAlg::%s.output=%s",\ - self._hypo.Alg.name(), input_maker_output, self._hypo.Alg.name(), self._hypo.readOutputList()[0]) + compName(self._hypo.Alg), input_maker_output, compName(self._hypo.Alg), self._hypo.readOutputList()[0]) def createHypoTools(self, chainDict): @@ -548,7 +544,7 @@ class MenuSequence(object): def addToSequencer(self, stepReco, seqAndView, already_connected): ath_sequence = self.sequence.Alg - name = ath_sequence.name() + name = ath_sequence.getName() if name in already_connected: log.debug("AthSequencer %s already in the Tree, not added again",name) return stepReco, seqAndView, already_connected @@ -567,17 +563,17 @@ class MenuSequence(object): cfseq_algs.append(self._maker) cfseq_algs.append(self.sequence ) - file.write(" %s[fillcolor=%s]\n"%(self._maker.Alg.name(), algColor(self._maker.Alg))) - file.write(" %s[fillcolor=%s]\n"%(self.sequence.Alg.name(), algColor(self.sequence.Alg))) + file.write(" %s[fillcolor=%s]\n"%(self._maker.Alg.getName(), algColor(self._maker.Alg))) + file.write(" %s[fillcolor=%s]\n"%(self.sequence.Alg.getName(), algColor(self.sequence.Alg))) if type(self._hypo) is list: for hp in self._hypo: cfseq_algs.append(hp) - file.write(" %s[color=%s]\n"%(hp.Alg.name(), algColor(hp.Alg))) + file.write(" %s[color=%s]\n"%(hp.Alg.getName(), algColor(hp.Alg))) all_hypos.append(hp) else: cfseq_algs.append(self._hypo) - file.write(" %s[color=%s]\n"%(self._hypo.Alg.name(), algColor(self._hypo.Alg))) + file.write(" %s[color=%s]\n"%(self._hypo.Alg.getName(), algColor(self._hypo.Alg))) all_hypos.append(self._hypo) if not isCombo: if type(self._hypo) is list: @@ -602,15 +598,15 @@ class MenuSequence(object): hyponame=[] hypotool=[] for hp, hptool in zip(self._hypo, self._hypoToolConf): - hyponame.append( hp.Alg.name() ) + hyponame.append( hp.Alg.getName() ) hypotool.append( hptool.name ) return "MenuSequence::%s \n Hypo::%s \n Maker::%s \n Sequence::%s \n HypoTool::%s"\ - %(self.name, hyponame, self._maker.Alg.name(), self.sequence.Alg.name(), hypotool) + %(self.name, hyponame, self._maker.Alg.getName(), self.sequence.Alg.getName(), hypotool) else: - hyponame = self._hypo.Alg.name() + hyponame = self._hypo.Alg.getName() hypotool = self._hypoToolConf.name return "MenuSequence::%s \n Hypo::%s \n Maker::%s \n Sequence::%s \n HypoTool::%s\n"\ - %(self.name, hyponame, self._maker.Alg.name(), self.sequence.Alg.name(), hypotool) + %(self.name, hyponame, self._maker.Alg.getName(), self.sequence.Alg.getName(), hypotool) class CAMenuSequence(MenuSequence): @@ -622,19 +618,19 @@ class CAMenuSequence(MenuSequence): @property def sequence(self): - makerAlg = self.ca.getEventAlgo(self._maker.Alg.name()) + makerAlg = self.ca.getEventAlgo(self._maker.Alg.name) self._maker.Alg = makerAlg return self._sequence @property def maker(self): - makerAlg = self.ca.getEventAlgo(self._maker.Alg.name()) + makerAlg = self.ca.getEventAlgo(self._maker.Alg.name) self._maker.Alg = makerAlg return self._maker @property def hypo(self): - hypoAlg = self.ca.getEventAlgo(self._hypo.Alg.name()) + hypoAlg = self.ca.getEventAlgo(self._hypo.Alg.name) self._hypo.Alg = hypoAlg return self._hypo @@ -791,7 +787,8 @@ class CFSequence(object): if a ChainStep contains the same sequence multiple times (for multi-object chains), the filter is connected only once (to avoid multiple DH links) """ - log.debug("CFSequence: connect Filter %s with %d menuSequences of step %s, using %d connections", self.filter.Alg.name(), len(self.step.sequences), self.step.name, len(connections)) + #log.info("CFSequence: sequences %s", " ".join([ str(type(s)) for s in self.step.sequences ])) + log.debug("CFSequence: connect Filter %s with %d menuSequences of step %s, using %d connections", compName(self.filter.Alg), len(self.step.sequences), self.step.name, len(connections)) if len(connections) == 0: log.error("ERROR, no filter outputs are set!") #raise("CFSequence: Invalid Filter Configuration") @@ -804,7 +801,7 @@ class CFSequence(object): nseq=0 for seq in self.step.sequences: filter_out = connections[nseq] - log.debug("CFSequence: Found input %s to sequence::%s from Filter::%s (from seed %s)", filter_out, seq.name, self.filter.Alg.name(), seq.seed) + log.debug("CFSequence: Found input %s to sequence::%s from Filter::%s (from seed %s)", filter_out, seq.name, compName(self.filter.Alg), seq.seed) seq.connectToFilter( filter_out ) nseq+=1 else: @@ -819,16 +816,16 @@ class CFSequence(object): else: combo_input=seq.getOutputList()[0] self.step.combo.addInput(combo_input) - log.debug("CFSequence.connectCombo: adding input to %s: %s", self.step.combo.Alg.name(), combo_input) + log.debug("CFSequence.connectCombo: adding input to %s: %s", self.step.combo.Alg.getName(), combo_input) # inputs are the output decisions of the hypos of the sequences - combo_output=CFNaming.comboHypoOutputName (self.step.combo.Alg.name(), combo_input) + combo_output=CFNaming.comboHypoOutputName (self.step.combo.Alg.getName(), combo_input) self.step.combo.addOutput(combo_output) - log.debug("CFSequence.connectCombo: adding output to %s: %s", self.step.combo.Alg.name(), combo_output) + log.debug("CFSequence.connectCombo: adding output to %s: %s", self.step.combo.Alg.getName(), combo_output) def __repr__(self): return "--- CFSequence ---\n + Filter: %s \n + decisions: %s\n + %s \n"%(\ - self.filter.Alg.name(), self.decisions, self.step) + self.filter.Alg.getName(), self.decisions, self.step) @@ -892,7 +889,6 @@ class InEventReco( ComponentAccumulator ): def __init__(self, name, inputMaker=None): super( InEventReco, self ).__init__() self.name = name - from AthenaCommon.CFElements import parOR, seqAND self.mainSeq = seqAND( name ) self.addSequence( self.mainSeq ) @@ -900,9 +896,9 @@ class InEventReco( ComponentAccumulator ): self.inputMakerAlg = inputMaker # Avoid registering a duplicate - self.addEventAlgo( self.inputMakerAlg, self.mainSeq.name() ) - self.recoSeq = parOR( "InputSeq_"+self.inputMakerAlg.name()) - self.addSequence( self.recoSeq, self.mainSeq.name() ) + self.addEventAlgo( self.inputMakerAlg, self.mainSeq.name ) + self.recoSeq = parOR( "InputSeq_"+self.inputMakerAlg.name ) + self.addSequence( self.recoSeq, self.mainSeq.name ) pass def mergeReco( self, ca ): @@ -912,10 +908,10 @@ class InEventReco( ComponentAccumulator ): def addRecoAlg( self, alg ): """Reconstruction alg to be run per event""" log.warning( "InViewReco.addRecoAlgo: consider using mergeReco that takes care of the CA accumulation and moving algorithms" ) - self.addEventAlgo( alg, self.recoSeq.name() ) + self.addEventAlgo( alg, self.recoSeq.name ) def addHypoAlg(self, alg): - self.addEventAlgo( alg, self.mainSeq.name() ) + self.addEventAlgo( alg, self.mainSeq.name ) def sequence( self ): return self.mainSeq @@ -930,15 +926,15 @@ class InViewReco( ComponentAccumulator ): def __init__(self, name, viewMaker=None): super( InViewReco, self ).__init__() self.name = name - from AthenaCommon.CFElements import parOR, seqAND self.mainSeq = seqAND( name ) self.addSequence( self.mainSeq ) - from ViewAlgs.ViewAlgsConf import EventViewCreatorAlgorithm, ViewCreatorInitialROITool + ViewCreatorInitialROITool=CompFactory.ViewCreatorInitialROITool + if viewMaker: self.viewMakerAlg = viewMaker else: - self.viewMakerAlg = EventViewCreatorAlgorithm("IM"+name, + self.viewMakerAlg = CompFactory.EventViewCreatorAlgorithm("IM"+name, ViewFallThrough = True, RoIsLink = 'initialRoI', RoITool = ViewCreatorInitialROITool(), @@ -946,9 +942,9 @@ class InViewReco( ComponentAccumulator ): Views = name+'Views', ViewNodeName = name+"InView") - self.addEventAlgo( self.viewMakerAlg, self.mainSeq.name() ) + self.addEventAlgo( self.viewMakerAlg, self.mainSeq.name ) self.viewsSeq = parOR( self.viewMakerAlg.ViewNodeName ) - self.addSequence( self.viewsSeq, self.mainSeq.name() ) + self.addSequence( self.viewsSeq, self.mainSeq.name ) def addInputFromFilter(self, filterAlg ): assert len(filterAlg.Output) == 1, "Can only oprate on filter algs with one configured output, use addInput to setup specific inputs" @@ -966,10 +962,10 @@ class InViewReco( ComponentAccumulator ): def addRecoAlg( self, alg ): """Reconstruction alg to be run per view""" log.warning( "InViewReco.addRecoAlgo: consider using mergeReco that takes care of the CA accumulation and moving algorithms" ) - self.addEventAlgo( alg, self.viewsSeq.name() ) + self.addEventAlgo( alg, self.viewsSeq.name ) def addHypoAlg(self, alg): - self.addEventAlgo( alg, self.mainSeq.name() ) + self.addEventAlgo( alg, self.mainSeq.name ) def sequence( self ): return self.mainSeq diff --git a/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Muon/generateMuon.py b/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Muon/generateMuon.py index 5435538f229a264370c16c726adf7906e0b47418..877fe48a781efd87a78a432895b69744b8630236 100644 --- a/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Muon/generateMuon.py +++ b/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Muon/generateMuon.py @@ -8,8 +8,10 @@ from TrigMuonHypoMT.TrigMuonHypoMTConfig import TrigMufastHypoToolFromDict from TriggerMenuMT.HLTMenuConfig.Menu.ChainDictTools import splitChainDict +from AthenaConfiguration.ComponentFactory import CompFactory + def fakeHypoAlgCfg(flags, name="FakeHypoForMuon"): - from TrigUpgradeTest.TrigUpgradeTestConf import HLTTest__TestHypoAlg + HLTTest__TestHypoAlg=CompFactory.HLTTest.TestHypoAlg return HLTTest__TestHypoAlg( name, Input="" ) def generateChains( flags, chainDict ): @@ -71,7 +73,7 @@ def generateChains( flags, chainDict ): accMS.merge(recoMS, sequenceName=stepEFMSReco.getName()) # TODO remove once full step is in place - from TrigUpgradeTest.TrigUpgradeTestConf import HLTTest__TestHypoTool + HLTTest__TestHypoTool=CompFactory.HLTTest.TestHypoTool fakeHypoAlg = fakeHypoAlgCfg(muonflags, name='FakeHypoForMuon') def makeFakeHypoTool(chainDict, cfg=None): return HLTTest__TestHypoTool(chainDict['chainName']) diff --git a/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Photon/PhotonRecoSequences.py b/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Photon/PhotonRecoSequences.py index 47e76e5db178c196771295cb1a32a7e3ed44de9e..29bd316dfd05fbbb6c8ff679ca253a151d9e4efd 100644 --- a/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Photon/PhotonRecoSequences.py +++ b/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Photon/PhotonRecoSequences.py @@ -76,9 +76,11 @@ def precisionPhotonRecoSequence(RoIs): def l2PhotonAlgCfg( flags ): acc = ComponentAccumulator() - from TrigEgammaHypo.TrigL2PhotonFexMTConfig import L2PhotonFex_1 + #from TrigEgammaHypo.TrigL2PhotonFexMTConfig import L2PhotonFex_1 + from AthenaConfiguration.ComponentFactory import CompFactory - photonFex= L2PhotonFex_1() + photonFex= CompFactory.TrigL2PhotonFexMT("L2PhotonFex_1") + #photonFex= L2PhotonFex_1() photonFex.TrigEMClusterName = recordable("HLT_L2CaloEMClusters") photonFex.PhotonsName = recordable("HLT_L2Photons") photonFex.RoIs = "L2PhotonRecoRoIs" @@ -91,10 +93,11 @@ def l2PhotonRecoCfg( flags ): reco = InViewReco("L2PhotonReco") reco.inputMaker().RequireParentView = True reco.inputMaker().RoIsLink="initialRoI" - import AthenaCommon.CfgMgr as CfgMgr - moveClusters = CfgMgr.AthViews__ViewDataVerifier("photonViewDataVerifier") + from AthenaConfiguration.ComponentFactory import CompFactory + moveClusters = CompFactory.getComp("AthViews::ViewDataVerifier")("photonViewDataVerifier") moveClusters.DataObjects = [ ('xAOD::TrigEMClusterContainer','StoreGateSvc+HLT_L2CaloEMClusters') ] + reco.addRecoAlg( moveClusters ) algAcc, alg = l2PhotonAlgCfg( flags ) @@ -104,9 +107,9 @@ def l2PhotonRecoCfg( flags ): return reco def l2PhotonHypoCfg( flags, Photons='Unspecified', RunInView=True): - from TrigEgammaHypo.TrigEgammaHypoConf import TrigL2PhotonHypoAlgMT + from AthenaConfiguration.ComponentFactory import CompFactory - l2PhotonHypo = TrigL2PhotonHypoAlgMT() + l2PhotonHypo = CompFactory.TrigL2PhotonHypoAlgMT() l2PhotonHypo.Photons = Photons l2PhotonHypo.RunInView = RunInView