diff --git a/Control/AthenaConfiguration/CMakeLists.txt b/Control/AthenaConfiguration/CMakeLists.txt index 75db7364fa46878a2881aa3fcc83d5fb2cd13fa8..65493f70f083c9b45bea213b433bc61c5bdde0cd 100644 --- a/Control/AthenaConfiguration/CMakeLists.txt +++ b/Control/AthenaConfiguration/CMakeLists.txt @@ -100,8 +100,4 @@ if( NOT SIMULATIONBASE AND NOT GENERATIONBASE AND NOT XAOD_ANALYSIS ) atlas_add_test( ComponentAccumulatorTestReco SCRIPT test/testComponentAccumulatorReco.py POST_EXEC_SCRIPT nopost.sh ) - - atlas_add_test( OldFlags2NewFlagsTest - SCRIPT python -m AthenaConfiguration.OldFlags2NewFlags - POST_EXEC_SCRIPT nopost.sh ) endif() diff --git a/Control/AthenaConfiguration/python/AllConfigFlags.py b/Control/AthenaConfiguration/python/AllConfigFlags.py index 70c3b2f36f07fd1e76ce8e43cfc40fc5592785ee..9660e40316e94193dd554868bf6aceedccbb0a44 100644 --- a/Control/AthenaConfiguration/python/AllConfigFlags.py +++ b/Control/AthenaConfiguration/python/AllConfigFlags.py @@ -527,9 +527,6 @@ def initConfigFlags(): return acf -ConfigFlags=initConfigFlags() - - if __name__=="__main__": from AthenaConfiguration.TestDefaults import defaultTestFiles flags = initConfigFlags() diff --git a/Control/AthenaConfiguration/python/AthConfigFlags.py b/Control/AthenaConfiguration/python/AthConfigFlags.py index 408ab48e0eee6cdb9b2939315d786a024ef66eae..a89c37f15a36afc7e6c5b6689739df78908411fd 100644 --- a/Control/AthenaConfiguration/python/AthConfigFlags.py +++ b/Control/AthenaConfiguration/python/AthConfigFlags.py @@ -121,11 +121,14 @@ class FlagAddress(object): def __init__(self, f, name): if isinstance(f, AthConfigFlags): self._flags = f - self._name = name + rname = self._flags._renames.get(name, name) + self._name = rname elif isinstance(f, FlagAddress): self._flags = f._flags - self._name = f._name+"."+name + name = f._name+"."+name + rname = self._flags._renames.get(name, name) + self._name = rname def __getattr__(self, name): return getattr(self._flags, self._name + "." + name) @@ -219,6 +222,7 @@ class AthConfigFlags(object): self._hash = None self._parser = None self._args = None # user args from parser + self._renames = {} def athHash(self): if self._locked is False: @@ -383,6 +387,9 @@ class AthConfigFlags(object): if name in self._categoryCache: return True + if name in self._renames: + return self.hasCategory(self._renames[name]) + # If not found do search through all keys. # TODO: could be improved by using a trie for _flagdict for f in self._flagdict.keys(): @@ -445,7 +452,7 @@ class AthConfigFlags(object): return cln - def cloneAndReplace(self,subsetToReplace,replacementSubset): + def cloneAndReplace(self,subsetToReplace,replacementSubset, keepOriginal=False): """ This is to replace subsets of configuration flags like @@ -453,64 +460,28 @@ class AthConfigFlags(object): newflags = flags.cloneAndReplace('Muon', 'Trigger.Offline.Muon') """ - def _copyFunction(obj): - return obj if self.locked() else deepcopy(obj) # if flags are locked we can reuse containers, no need to deepcopy - _msg.info("cloning flags and replacing %s by %s", subsetToReplace, replacementSubset) self._loadDynaFlags( subsetToReplace ) self._loadDynaFlags( replacementSubset ) - if not subsetToReplace.endswith("."): - subsetToReplace+="." - pass - if not replacementSubset.endswith("."): - replacementSubset+="." - pass + subsetToReplace = subsetToReplace.strip(".") + replacementSubset = replacementSubset.strip(".") #Sanity check: Don't replace a by a if (subsetToReplace == replacementSubset): raise RuntimeError("Can not replace flags {} with themselves".format(subsetToReplace)) - replacedNames=set() - replacementNames=set() - newFlagDict=dict() - for (name,flag) in self._flagdict.items(): - if name.startswith(subsetToReplace): - replacedNames.add(name[len(subsetToReplace):]) #Remember replaced flag for the check later - elif name.startswith(replacementSubset): - subName=name[len(replacementSubset):] - replacementNames.add(subName) # remember replacement name - #Move the flag to the new name: - - newFlagDict[subsetToReplace+subName] = _copyFunction(flag) - pass - else: - newFlagDict[name] = _copyFunction(flag) #All other flags are simply copied - pass - #End loop over flags - pass - - #Last sanity check: Make sure that the replaced section still contains the same names: - if not replacementNames.issuperset(replacedNames): - _msg.error(replacedNames) - _msg.error(replacementNames) - raise RuntimeError("Attempt to replace incompatible flags subsets: distinct flag are " - + repr(replacementNames - replacedNames)) - newFlags = AthConfigFlags() - newFlags._flagdict = newFlagDict - - for k,v in self._dynaflags.items(): # cant just assign the dicts because then they are shared when loading - newFlags._dynaflags[k] = _copyFunction(v) + newFlags = copy(self) # shallow copy + newFlags._renames = deepcopy(self._renames) #maintains renames + newFlags._renames[subsetToReplace] = replacementSubset + if not keepOriginal: + newFlags._renames[replacementSubset] = "" # block access to original flags newFlags._hash = None - - if self._locked: - newFlags.lock() return newFlags - def join(self, other, prefix=''): """ Merges two flag containers @@ -535,31 +506,40 @@ class AthConfigFlags(object): def dump(self, pattern=".*", evaluate=False, formatStr="{:40} : {}", maxLength=None): import re compiled = re.compile(pattern) - print(formatStr.format( "Flag Name","Value" ) ) def truncate(s): return s[:maxLength] + ("..." if maxLength and len(s)>maxLength else "") + reverse_renames = {value: key for key, value in self._renames.items() if value != ''} # new name to old for name in sorted(self._flagdict): - if compiled.match(name): + renamed = name + if any([name.startswith(r) for r in reverse_renames.keys()]): + for oldprefix, newprefix in reverse_renames.items(): + if name.startswith(oldprefix): + renamed = name.replace(oldprefix, newprefix) + break + if compiled.match(renamed): if evaluate: try: rep = repr(self._flagdict[name] ) val = repr(self._flagdict[name].get(self)) if val != rep: - print(formatStr.format(name,truncate("{} {}".format( val, rep )) )) + print(formatStr.format(renamed,truncate("{} {}".format( val, rep )) )) else: - print(formatStr.format( name, truncate("{}".format(val)) ) ) + print(formatStr.format(renamed, truncate("{}".format(val)) ) ) except Exception as e: - print(formatStr.format(name, truncate("Exception: {}".format( e )) )) + print(formatStr.format(renamed, truncate("Exception: {}".format( e )) )) else: - print(formatStr.format( name, truncate("{}".format(repr(self._flagdict[name] ) )) )) - - if len(self._dynaflags) == 0: - return - print("Flag categories that can be loaded dynamically") - print("{:25} : {:>30} : {}".format( "Category","Generator name", "Defined in" ) ) - for name,gen_and_prefix in sorted(self._dynaflags.items()): - if compiled.match(name): - print("{:25} : {:>30} : {}".format( name, gen_and_prefix[0].__name__, '/'.join(gen_and_prefix[0].__code__.co_filename.split('/')[-2:]) ) ) - + print(formatStr.format( renamed, truncate("{}".format(repr(self._flagdict[name] ) )) )) + + if len(self._dynaflags) != 0: + print("Flag categories that can be loaded dynamically") + print("{:25} : {:>30} : {}".format( "Category","Generator name", "Defined in" ) ) + for name,gen_and_prefix in sorted(self._dynaflags.items()): + if compiled.match(name): + print("{:25} : {:>30} : {}".format( name, gen_and_prefix[0].__name__, '/'.join(gen_and_prefix[0].__code__.co_filename.split('/')[-2:]) ) ) + if len(self._renames): + print("Flag categories that are redirected by the cloneAndReplace") + for alias,src in self._renames.items(): + print("{:30} points to {:>30} ".format( alias, src if src else "nothing") ) + def initAll(self): """ @@ -647,7 +627,7 @@ class AthConfigFlags(object): # parser argument must be an ArgumentParser returned from getArgumentParser() def fillFromArgs(self, listOfArgs=None, parser=None): """ - Used to set flags from command-line parameters, like ConfigFlags.fillFromArgs(sys.argv[1:]) + Used to set flags from command-line parameters, like flags.fillFromArgs(sys.argv[1:]) """ import sys diff --git a/Control/AthenaConfiguration/python/OldFlags2NewFlags.py b/Control/AthenaConfiguration/python/OldFlags2NewFlags.py deleted file mode 100644 index 5b3294e5406259982644fdfd2809e489bf62e87c..0000000000000000000000000000000000000000 --- a/Control/AthenaConfiguration/python/OldFlags2NewFlags.py +++ /dev/null @@ -1,192 +0,0 @@ -# Copyright (C) 2002-2023 CERN for the benefit of the ATLAS collaboration - -def getNewConfigFlags(): - """Create new ConfigFlags from old-style jobproperties. Usage: - - from AthenaConfiguration.OldFlags2NewFlags import getNewConfigFlags - ConfigFlags = getNewConfigFlags() - """ - # Set up a logger object. - from AthenaCommon.Logging import logging - log = logging.getLogger('getNewConfigFlags') - - # Flags needed from this package. - from AthenaConfiguration.AllConfigFlags import ConfigFlags - from AthenaConfiguration.Enums import BeamType - - # Import some old-style flags - from AthenaCommon.DetFlags import DetFlags - from AthenaCommon.AthenaCommonFlags import jobproperties - import AthenaCommon.GlobalFlags # noqa: F401 - import AthenaCommon.BeamFlags # noqa: F401 - import AthenaCommon.ConcurrencyFlags # noqa: F401 - - # Files and conditions - if jobproperties.Global.InputFormat() == 'bytestream': - ConfigFlags.Input.Files = ( jobproperties.AthenaCommonFlags.FilesInput() or - jobproperties.AthenaCommonFlags.BSRDOInput() ) - elif jobproperties.Global.InputFormat() == 'pool': - ConfigFlags.Input.Files = ( jobproperties.AthenaCommonFlags.FilesInput() or - jobproperties.AthenaCommonFlags.PoolHitsInput() ) - - ConfigFlags.IOVDb.GlobalTag = jobproperties.Global.ConditionsTag() - ConfigFlags.Beam.Type = BeamType(jobproperties.Beam.beamType()) - ConfigFlags.Beam.BunchSpacing = jobproperties.Beam.bunchSpacing() - try: - from AthenaMonitoring.DQMonFlags import DQMonFlags - ConfigFlags.Output.HISTFileName = DQMonFlags.histogramFile() - except ImportError: - log.info('AthenaMonitoring not available, "ConfigFlags.Output.HISTFileName" not set') - pass - # Geometry - General - ConfigFlags.GeoModel.AtlasVersion = jobproperties.Global.DetDescrVersion() - try: - from AtlasGeoModel.InDetGMJobProperties import InDetGeometryFlags - ConfigFlags.GeoModel.Align.Dynamic = InDetGeometryFlags.useDynamicAlignFolders() - except ImportError: - log.info('AtlasGeoModel not available, "ConfigFlags.GeoModel.Align.Dynamic" not set') - pass - # Environment - ConfigFlags.Common.isOnline = jobproperties.AthenaCommonFlags.isOnline() - - # Concurrency - ConfigFlags.Concurrency.NumProcs = jobproperties.ConcurrencyFlags.NumProcs() - ConfigFlags.Concurrency.NumThreads = jobproperties.ConcurrencyFlags.NumThreads() - ConfigFlags.Concurrency.NumConcurrentEvents = jobproperties.ConcurrencyFlags.NumConcurrentEvents() - - # Let's build a map whose key is new flagname, and whose value is old flagname. - geom_flag_map = {} - # Geometry - InnerDetector - geom_flag_map.update({ 'Bpipe':'bpipe', 'BCM':'BCM', 'Pixel':'pixel', 'SCT':'SCT', 'TRT':'TRT'}) - - # Geometry - Upgrade Phase-2 - TODO - # geom_flag_map.update({ 'BCMPrime':'', 'ITkPixel':'', 'ITkStrip':'', 'HGTD':''}) - - # Geometry - Calo - geom_flag_map.update({ 'LAr':'LAr', 'Tile':'Tile'}) - - #Geometry - Muon - geom_flag_map.update({ 'CSC':'CSC', 'MDT':'MDT', 'RPC':'RPC', 'TGC':'TGC'}) - geom_flag_map.update({ 'MM':'MM', 'sTGC':'sTGC'}) - - # Geometry - Forward - geom_flag_map.update({'Lucid':'Lucid', 'ZDC':'ZDC', 'ALFA':'ALFA', 'AFP':'AFP'}) - - # Now set Geometry i.e. do equivalent of : - # ConfigFlags.Detector.GeometryBpipe = DetFlags.geometry.bpipe_on() - ConfigFlags._loadDynaFlags('Detector') - for flag in geom_flag_map: - ConfigFlags._set('Detector.Geometry'+flag, getattr(DetFlags.detdescr,geom_flag_map[flag]+'_on')()) - - # Apparently we have detdescr flags and MuonGeometryFlags and they don't agree. FIXME. - try: - from AtlasGeoModel.MuonGMJobProperties import MuonGeometryFlags - ConfigFlags.Detector.GeometrysTGC = MuonGeometryFlags.hasSTGC() - ConfigFlags.Detector.GeometryMM = MuonGeometryFlags.hasMM() - ConfigFlags.Detector.GeometryCSC = MuonGeometryFlags.hasCSC() - except ImportError: - log.info('AtlasGeoModel not available, "ConfigFlags.Detector.GeometrysTGC", "ConfigFlags.Detector.GeometryMM" and "ConfigFlags.Detector.GeometryCSC" not set') - pass - - # Now setup Enable flags: - reco_flag_map = { 'BCM':'BCM', 'Pixel':'pixel', 'SCT':'SCT', 'TRT':'TRT'} - for flag in reco_flag_map: - ConfigFlags._set('Detector.Enable'+flag, getattr(DetFlags.haveRIO,reco_flag_map[flag]+'_on')() ) - - # miscellaneous settings - try: - from InDetRecExample.InDetJobProperties import InDetFlags - InDetFlags.init() - ConfigFlags.Tracking.doTIDE_Ambi = InDetFlags.doTIDE_Ambi() - ConfigFlags.InDet.useDCS = InDetFlags.useDCS() - ConfigFlags.Tracking.doVertexFinding = InDetFlags.doVertexFinding() - ConfigFlags.Tracking.doForwardTracks = InDetFlags.doForwardTracks() - except ImportError: - log.info('InDetRecExample not available, "ConfigFlags.Tracking.doTIDE_Ambi", "ConfigFlags.InDet.useDCS" and "ConfigFlags.Tracking.doVertexFinding" not set') - pass - - - # LAr Flags - try: - from LArConditionsCommon.LArCondFlags import larCondFlags - ConfigFlags.LAr.OFCShapeFolder = larCondFlags.OFCShapeFolder() - except ImportError: - log.info('LArConditionsCommon not available, "ConfigFlags.LAr.OFCShapeFolder" not set') - pass - try: - from LArROD.LArRODFlags import larRODFlags - ConfigFlags.LAr.ROD.NumberOfCollisions= larRODFlags.NumberOfCollisions() if larRODFlags.doOFCPileupOptimization() else 0 - ConfigFlags.LAr.ROD.nSamples=larRODFlags.nSamples() - ConfigFlags.LAr.ROD.FirstSample=larRODFlags.firstSample() - ConfigFlags.LAr.ROD.UseHighestGainAutoCorr=larRODFlags.useHighestGainAutoCorr() - ConfigFlags.LAr.ROD.DoOFCMixedOptimization=larRODFlags.doOFCMixedOptimization() - ConfigFlags.LAr.ROD.UseDelta=larRODFlags.UseDelta() - ConfigFlags.LAr.ROD.forceIter=larRODFlags.forceIter() - except ImportError: - log.info('LArROD not available, "ConfigFlags.LAr.ROD" flags not set') - pass - - # Muon reco flags - try: - from RecExConfig.RecAlgsFlags import recAlgs - if not recAlgs.doMuGirl(): - ConfigFlags.MuonCombined.doMuGirl = False - except ImportError: - log.info('RecExConfig not available, "ConfigFlags.MuonCombined.doMuGirl" not set') - pass - try: - from MuonCombinedRecExample.MuonCombinedRecFlags import muonCombinedRecFlags - if not muonCombinedRecFlags.doMuGirlLowBeta(): - ConfigFlags.MuonCombined.doMuGirlLowBeta = False - except ImportError: - log.info('MuonCombinedRecExample not available, "ConfigFlags.MuonCombined.doMuGirlLowBeta" not set') - pass - try: - from MuonRecExample.MuonRecFlags import muonRecFlags - ConfigFlags.Muon.doMSVertex = muonRecFlags.doMSVertex() - ConfigFlags.Muon.enableNRPC = muonRecFlags.doNRPCs() - except ImportError: - log.info('MuonRecExample not available, "ConfigFlags.Muon.doMSVertex" not set') - pass - - # data overlay - try: - from AthenaCommon.GlobalFlags import globalflags - from OverlayCommonAlgs.OverlayFlags import overlayFlags - ConfigFlags.Overlay.DataOverlay = globalflags.isOverlay() and overlayFlags.isDataOverlay() - except ImportError: - log.info('OverlayCommonAlgs not available, "ConfigFlags.Overlay.DataOverlay" not set') - pass - - try: - from RecExConfig.RecFlags import rec - if rec.doDPD(): - # flags for Physics Validation (ATLASRECTS-6636) - ConfigFlags.BTagging.SaveSV1Probabilities = True - ConfigFlags.BTagging.RunFlipTaggers = True - pass - except ImportError: - log.info('RecExConfig not available, "ConfigFlags.BTagging.SaveSV1Probabilities" and "ConfigFlags.BTagging.RunFlipTaggers" not set') - pass - - - #Hack for event-less unit-test (avoid peeking into inexistant input file) - oldDefaultFile="Hits.pool.root" - if (ConfigFlags.Input.Files == [oldDefaultFile,]): - import os - if not (os.access(oldDefaultFile,os.R_OK)): - from AthenaConfiguration.TestDefaults import defaultGeometryTags - from Campaigns.Utils import Campaign - ConfigFlags.Input.isMC=True - #flags.IOVDb.GlobalTag = 'OFLCOND-MC23-SDR-RUN3-02' - ConfigFlags.GeoModel.AtlasVersion=defaultGeometryTags.RUN2 - ConfigFlags.Input.MCCampaign=Campaign.Unknown - ConfigFlags.Input.TypedCollections=[] - pass - pass - - return ConfigFlags - - -if __name__=="__main__": - ConfigFlags = getNewConfigFlags() diff --git a/Control/AthenaConfiguration/python/__init__.py b/Control/AthenaConfiguration/python/__init__.py index a258afc5332653bed568346e013295e1929721cb..cc1be8f45741b09fa33fd29cbebdeeaf607ab020 100644 --- a/Control/AthenaConfiguration/python/__init__.py +++ b/Control/AthenaConfiguration/python/__init__.py @@ -1 +1 @@ -__all__=[ 'ComponentAccumulator', 'ConfigFlags'] +__all__=[ 'ComponentAccumulator'] diff --git a/Control/AthenaConfiguration/test/testAthConfigFlags.py b/Control/AthenaConfiguration/test/testAthConfigFlags.py index 03b5c2d1e4f23d531a246f113aa6579e071f006f..14c5ad2fabe64a409eb5f0bb965bc967daa63426 100755 --- a/Control/AthenaConfiguration/test/testAthConfigFlags.py +++ b/Control/AthenaConfiguration/test/testAthConfigFlags.py @@ -282,9 +282,27 @@ class TestFlagsSetupDynamic(FlagsSetup): copyf.dump() self.flags.lock() - copyf = self.flags.cloneAndReplace( "X", "Z.Xclone2") - self.assertEqual( copyf.X.a, 40, "dynamically loaded flags have wrong value") + copyf = self.flags.cloneAndReplace( "X", "Z.Xclone2").cloneAndReplace( "X2", "Z.Xclone1") + self.assertEqual( copyf.X.a, 40, "cloned loaded flags have wrong value") self.assertEqual( copyf.T.Abool, False, "The flags clone does not have dynamic flags") + self.assertEqual( copyf.T.Abool, False, "The flags clone does not have dynamic flags") + self.assertEqual( copyf.X2.a, 20, "cloned loaded flags have wrong value") + def _touchRemappedFlag(): + copyf.Z.Xclone1.a + self.assertRaises(AttributeError, _touchRemappedFlag) + + copyf = self.flags.cloneAndReplace( "X", "Z.Xclone2").cloneAndReplace( "X2", "Z.Xclone1", keepOriginal=True) + self.assertEqual( copyf.X2.a, 20, "cloned flags have wrong value") + self.assertEqual( copyf.Z.Xclone1.a, 20, "original flag have wrong value") + + print("\nFlag after double remap:") + print("-"*80) + copyf.dump() + print("\nFlag after double remap ..") + print("-"*80) + + + def test_exists(self): """Test `has` methods""" diff --git a/Generators/EvgenJobTransforms/python/GENtoEVGEN_Skeleton.py b/Generators/EvgenJobTransforms/python/GENtoEVGEN_Skeleton.py index a9bc737a5ce10ee78c91a2f77e864b3f2bf7c1e4..e04af387cb0703f0a778d9edac9f4aecb20d1f24 100644 --- a/Generators/EvgenJobTransforms/python/GENtoEVGEN_Skeleton.py +++ b/Generators/EvgenJobTransforms/python/GENtoEVGEN_Skeleton.py @@ -2,10 +2,6 @@ # """Functionality core of the Gen_tf transform""" -# temporarily force no global config flags -from AthenaConfiguration import AllConfigFlags -del AllConfigFlags.ConfigFlags - # force no legacy job properties from AthenaCommon import JobProperties JobProperties.jobPropertiesDisallowed = True diff --git a/HLT/Trigger/TrigTransforms/TrigTransform/python/trigRecoExe.py b/HLT/Trigger/TrigTransforms/TrigTransform/python/trigRecoExe.py index 92a3a09dab2ab440b8608b3d67896a6206415f92..7b3843ce8b072c77faad5ac98996fbc6515c5667 100644 --- a/HLT/Trigger/TrigTransforms/TrigTransform/python/trigRecoExe.py +++ b/HLT/Trigger/TrigTransforms/TrigTransform/python/trigRecoExe.py @@ -15,7 +15,7 @@ import six from PyJobTransforms.trfExe import athenaExecutor # imports for preExecute -from PyJobTransforms.trfUtils import asetupReport, cvmfsDBReleaseCheck, unpackDBRelease, setupDBRelease, lineByLine +from PyJobTransforms.trfUtils import asetupReport, cvmfsDBReleaseCheck, unpackDBRelease, setupDBRelease, lineByLine, asetupReleaseIsOlderThan import PyJobTransforms.trfEnv as trfEnv import PyJobTransforms.trfExceptions as trfExceptions from PyJobTransforms.trfExitCodes import trfExit as trfExit @@ -142,6 +142,23 @@ class trigRecoExecutor(athenaExecutor): asetupString = dbgAsetupString msg.info('Will use asetup string for debug stream analysis %s', dbgAsetupString) + # If legacy release, bring up centos7 container + OSSetupString = None + legacyOSRelease = asetupReleaseIsOlderThan(asetupString, 24) + if asetupString is not None: + currentOS = os.environ['ALRB_USER_PLATFORM'] + if legacyOSRelease and "centos7" not in currentOS: + OSSetupString = "centos7" + msg.info('Legacy release required for the substep {}, will setup a container running {}'.format(self._substep, OSSetupString)) + + # allow overriding the container OS using a flag + if 'runInContainer' in self.conf.argdict: + OSSetupString = self.conf.argdict['runInContainer'].returnMyValue(name=self._name, substep=self._substep, first=self.conf.firstExecutor) + msg.info('The step {} will be performed in a container running {}, as explicitly requested'.format(self._substep, OSSetupString)) + if OSSetupString is not None and asetupString is None: + raise trfExceptions.TransformExecutionException(trfExit.nameToCode('TRF_EXEC_SETUP_FAIL'), + '--asetup must be used for the substep which requires --runInContainer') + # Set database in command line if it was missing if 'useDB' in self.conf.argdict and 'DBserver' not in self.conf.argdict and dbAlias: msg.warn("Database alias will be set to %s", dbAlias) @@ -162,7 +179,6 @@ class trigRecoExecutor(athenaExecutor): raise trfExceptions.TransformExecutionException(trfExit.nameToCode('TRF_OUTPUT_FILE_ERROR'), f'Directory already contains files with expected output name format {expectedOutputFileName}, please remove/rename these first: {matchedOutputFileNames}') - # Call athenaExecutor parent as the above overrides what athenaExecutor would have done super(athenaExecutor, self).preExecute(input, output) @@ -170,7 +186,7 @@ class trigRecoExecutor(athenaExecutor): # This will have asetup and/or DB release setups in it # Do this last in this preExecute as the _cmd needs to be finalised msg.info('Now writing wrapper for substep executor {0}'.format(self._name)) - self._writeAthenaWrapper(asetup=asetupString, dbsetup=dbsetup) + self._writeAthenaWrapper(asetup=asetupString, dbsetup=dbsetup, ossetup=OSSetupString) msg.info('Athena will be executed in a subshell via {0}'.format(self._cmd)) def _prepAthenaCommandLine(self): diff --git a/InnerDetector/InDetMonitoring/InDetAlignmentMonitoringRun3/python/IDAlignMonGenericTracksAlgCfg.py b/InnerDetector/InDetMonitoring/InDetAlignmentMonitoringRun3/python/IDAlignMonGenericTracksAlgCfg.py index 947c8389177dfc636e2aabdaa5d3e7613d3b2dbb..21a6caa758746197ba5ed1e1e78c42446e44c6d0 100644 --- a/InnerDetector/InDetMonitoring/InDetAlignmentMonitoringRun3/python/IDAlignMonGenericTracksAlgCfg.py +++ b/InnerDetector/InDetMonitoring/InDetAlignmentMonitoringRun3/python/IDAlignMonGenericTracksAlgCfg.py @@ -71,6 +71,10 @@ def IDAlignMonGenericTracksAlgCfg(helper, alg, **kwargs): title = 'Number of PIXEL hits per track;Number of Pixel hits (PIX+IBL);Number of Tracks' genericTrackGroup.defineHistogram(varName, type='TH1F', path=pathtrack, title=title, xbins=m_rangePixHits+1, xmin=-0.5, xmax=m_rangePixHits +0.5) + varName = 'm_npixelhits_per_track_barrel;Npixhits_per_track_barrel' + title = 'Number of PIXEL hits per track (Barrel);Number of Pixel hits in Barrel (PIX+IBL);Number of Tracks' + genericTrackGroup.defineHistogram(varName, type='TH1F', path=pathtrack, title=title, xbins=m_rangePixHits+1, xmin=-0.5, xmax=m_rangePixHits +0.5) + varName = 'm_nscthits_per_track;Nscthits_per_track' title = 'Number of SCT hits per track;Number of SCT hits per Tracks;Number of Tracks' genericTrackGroup.defineHistogram(varName, type='TH1F', path=pathtrack, title=title, xbins=m_rangeSCTHits+1, xmin=-0.5, xmax=m_rangeSCTHits +0.5) diff --git a/InnerDetector/InDetMonitoring/InDetAlignmentMonitoringRun3/src/IDAlignMonGenericTracksAlg.cxx b/InnerDetector/InDetMonitoring/InDetAlignmentMonitoringRun3/src/IDAlignMonGenericTracksAlg.cxx index 147bbfe1b353419d421be8b561c2d0a9019728ff..220074985e489ed6b17501d854b26786896f3339 100644 --- a/InnerDetector/InDetMonitoring/InDetAlignmentMonitoringRun3/src/IDAlignMonGenericTracksAlg.cxx +++ b/InnerDetector/InDetMonitoring/InDetAlignmentMonitoringRun3/src/IDAlignMonGenericTracksAlg.cxx @@ -431,6 +431,8 @@ StatusCode IDAlignMonGenericTracksAlg::fillHistograms( const EventContext& ctx ) fill(genericTrackGroup, nhits_per_track_m); auto npixelhits_per_track_m = Monitored::Scalar<float>( "m_npixelhits_per_track", nhpix ); fill(genericTrackGroup, npixelhits_per_track_m); + auto npixelhits_per_track_barrel_m = Monitored::Scalar<float>( "m_npixelhits_per_track_barrel", nhpixB ); + fill(genericTrackGroup, npixelhits_per_track_barrel_m); auto nscthits_per_track_m = Monitored::Scalar<float>( "m_nscthits_per_track", nhsct ); fill(genericTrackGroup, nscthits_per_track_m); auto ntrthits_per_track_m = Monitored::Scalar<float>( "m_ntrthits_per_track", nhtrt ); @@ -481,7 +483,7 @@ StatusCode IDAlignMonGenericTracksAlg::fillHistograms( const EventContext& ctx ) auto ngTracks_m = Monitored::Scalar<float>( "m_ngTracks", ngTracks ); fill(genericTrackGroup, ngTracks_m); - ATH_MSG_DEBUG("Histogram fillim completed for #good_tracks: " << ngTracks); + ATH_MSG_DEBUG("Histogram filling completed for #good_tracks: " << ngTracks); return StatusCode::SUCCESS; } diff --git a/LArCalorimeter/LArCalibTools/CMakeLists.txt b/LArCalorimeter/LArCalibTools/CMakeLists.txt index da65b50c6481a5ae30367dcea5a3f16abb3d68d1..10407f4a08766955df5ffdd3d723a5c1ae83d3dc 100644 --- a/LArCalorimeter/LArCalibTools/CMakeLists.txt +++ b/LArCalorimeter/LArCalibTools/CMakeLists.txt @@ -18,3 +18,8 @@ atlas_add_component( LArCalibTools atlas_install_python_modules( python/*.py POST_BUILD_CMD ${ATLAS_FLAKE8} ) atlas_install_joboptions( share/*.py ) atlas_install_scripts( share/LArConditions2Ntuple.py ) + + +atlas_add_test( LArConditions2Ntuple + SCRIPT LArConditions2Ntuple.py + POST_EXEC_SCRIPT noerror.sh ) diff --git a/LArCalorimeter/LArCalibTools/share/LArCommConditions2Ntuple.py b/LArCalorimeter/LArCalibTools/share/LArCommConditions2Ntuple.py deleted file mode 100644 index eb0750d00d1f47540489f56402a7d0709de1b12f..0000000000000000000000000000000000000000 --- a/LArCalorimeter/LArCalibTools/share/LArCommConditions2Ntuple.py +++ /dev/null @@ -1,535 +0,0 @@ -import AthenaCommon.AtlasUnixGeneratorJob #use MC event selector -## get a handle to the default top-level algorithm sequence -from AthenaCommon.AlgSequence import AlgSequence -topSequence = AlgSequence() - - -#Input Parameters: -# PoolFiles: sequence of pool files to read from though CondProxyProvider -# if not given, read from COOL -# -# RunNumber: Input to COOL IOV-DB if reading from -# -# RootFile: root file for the ntuple -# -# Objects: List of objects written to ntuple (PEDESTAL OFC, RAMP, - -if not 'InputDB' in dir(): - InputDB="COOLONL_LAR/CONDBR2" - -if not "OFCFolder" in dir(): - OFCFolder="5samples1phase" - -if not 'RunNumber' in dir(): - RunNumber=2147483647 - -if not "RootFile" in dir(): - RootFile="LArConditions.root" - -if not "Objects" in dir(): - Objects=["PEDESTAL","RAMP","OFC","MPHYSOVERMCAL"] - -if not "SuperCells" in dir(): - SuperCells=False - -# For shape MC-Data are different -if not "IsMC" in dir(): - IsMC=False - -if not "IsFlat" in dir(): - IsFlat=True - -if not "OffIdDump" in dir(): - OffIdDump=False - -if not "HashDump" in dir(): - HashDump=False - -if not "DBTag" in dir(): - if "OFLP" in InputDB: - DBTag="OFLCOND-RUN1-SDR-06" - else: - DBTag="LARCALIB-RUN2-00" - -if not "TagSuffix" in dir(): - if SuperCells: # no linking to global tag yet - TagSuffix="-000" - -def doObj(objName): - for o in Objects: - if o.upper().find(objName.upper())!=-1: - return True - return False - -def getDBFolderAndTag(folder): - if ("TagSuffix" in globals()) and (TagSuffix != ""): - tag="<tag>"+"".join(folder.split('/')) + TagSuffix+"</tag>" - else: - tag="" - return "<db>"+InputDB+"</db>"+folder+tag - -from AthenaCommon.GlobalFlags import globalflags -if IsMC: - globalflags.DataSource="geant4" - globalflags.InputFormat="pool" -else: - globalflags.DataSource="data" - globalflags.InputFormat="bytestream" - globalflags.DatabaseInstance="CONDBR2" - -from AthenaCommon.JobProperties import jobproperties -jobproperties.Global.DetDescrVersion = "ATLAS-R2-2015-04-00-00" - -from AthenaCommon.DetFlags import DetFlags -DetFlags.Calo_setOff() -DetFlags.ID_setOff() -DetFlags.Muon_setOff() -DetFlags.Truth_setOff() -DetFlags.LVL1_setOff() -DetFlags.digitize.all_setOff() - -#Set up GeoModel (not really needed but crashes without) -from AtlasGeoModel import SetGeometryVersion -from AtlasGeoModel import GeoModelInit - -from LArConditionsCommon import LArAlignable #noqa F401 - -#Get identifier mapping (needed by LArConditionsContainer) -svcMgr.IOVDbSvc.GlobalTag=DBTag -if IsMC: - include( "LArConditionsCommon/LArIdMap_MC_jobOptions.py" ) - conddb.addFolder("LAR_OFL","/LAR/BadChannels/BadChannels<tag>LArBadChannelsBadChannels-IOVDEP-06</tag>",className="CondAttrListCollection") -else: - include( "LArConditionsCommon/LArIdMap_comm_jobOptions.py" ) - conddb.addFolder("LAR_OFL","/LAR/BadChannelsOfl/BadChannels<key>/LAR/BadChannels/BadChannels</key>",className="CondAttrListCollection") - - -from LArBadChannelTool.LArBadChannelToolConf import LArBadChannelCondAlg -theLArBadChannelCondAlg=LArBadChannelCondAlg() -theLArBadChannelCondAlg.ReadKey="/LAR/BadChannels/BadChannels" -condSeq+=theLArBadChannelCondAlg - -theApp.EvtMax = 1 -svcMgr.EventSelector.RunNumber = RunNumber - -if SuperCells: - from LArCabling.LArCablingAccess import LArCalibIdMappingSC,LArOnOffIdMappingSC - LArOnOffIdMappingSC() - LArCalibIdMappingSC() - -if 'PoolFiles' in dir(): - from AthenaCommon.ConfigurableDb import getConfigurable - from AthenaCommon.AppMgr import ServiceMgr - ServiceMgr.ProxyProviderSvc.ProviderNames += [ "CondProxyProvider" ] - ServiceMgr += getConfigurable( "CondProxyProvider" )() - svcMgr.CondProxyProvider.InputCollections=PoolFiles - -if 'PoolCat' in dir(): - svcMgr.PoolSvc.ReadCatalog+=["xmlcatalog_file:"+PoolCat] - -loadCastorCat=True - - -if doObj("PEDESTAL"): - from LArCalibTools.LArCalibToolsConf import LArPedestals2Ntuple - LArPedestals2Ntuple=LArPedestals2Ntuple("LArPedestals2Ntuple") - LArPedestals2Ntuple.AddFEBTempInfo=False - LArPedestals2Ntuple.OffId=OffIdDump - if IsMC: - if SuperCells: - conddb.addFolder("",getDBFolderAndTag("/LAR/ElecCalibMCSC/Pedestal")) - LArPedestals2Ntuple.ContainerKey="LArPedestalSC" - else: - conddb.addFolder("",getDBFolderAndTag("/LAR/ElecCalibMC/Pedestal")) - LArPedestals2Ntuple.ContainerKey="LArPedestal" - elif IsFlat: - from AthenaCommon.AlgSequence import AthSequencer - condSequence = AthSequencer("AthCondSeq") - if SuperCells: - from LArRecUtils.LArRecUtilsConf import LArFlatConditionsAlg_LArPedestalSC_ as LArPedCondAlg - folder="/LAR/ElecCalibFlatSC/Pedestal" - else: - from LArRecUtils.LArRecUtilsConf import LArFlatConditionsAlg_LArPedestalFlat_ as LArPedCondAlg - folder="/LAR/ElecCalibFlat/Pedestal" - conddb.addFolder("",getDBFolderAndTag(folder),className = 'CondAttrListCollection') - LArPedestals2Ntuple.ContainerKey="Pedestal" - condSequence += LArPedCondAlg(ReadKey=folder, WriteKey='Pedestal') - else: - conddb.addFolder("",getDBFolderAndTag("/LAR/ElecCalibOfl/Pedestals/Pedestal")) - LArPedestals2Ntuple.ContainerKey="Pedestal" - LArPedestals2Ntuple.isSC=SuperCells - LArPedestals2Ntuple.isFlat=IsFlat - LArPedestals2Ntuple.OutputLevel=WARNING - topSequence+=LArPedestals2Ntuple - - -if doObj("AUTOCORR"): - from LArCalibTools.LArCalibToolsConf import LArAutoCorr2Ntuple - LArAutoCorr2Ntuple=LArAutoCorr2Ntuple("LArAutoCorr2Ntuple") - LArAutoCorr2Ntuple.AddFEBTempInfo=False - LArAutoCorr2Ntuple.OffId=OffIdDump - if IsMC: - if SuperCells: - conddb.addFolder("",getDBFolderAndTag("/LAR/ElecCalibMCSC/AutoCorr")) - LArAutoCorr2Ntuple.ContainerKey="LArAutoCorrSC" - else: - conddb.addFolder("",getDBFolderAndTag("/LAR/ElecCalibMC/AutoCorr")) - LArAutoCorr2Ntuple.ContainerKey="LArAutoCorr" - elif IsFlat: - print( 'No Flat Autocorr exists !!!') - import sys; sys.exit(-1) - else: - if SuperCells: - conddb.addFolder("",getDBFolderAndTag("/LAR/ElecCalibOflSC/AutoCorrs/AutoCorr"),className="LArAutoCorrComplete") - else: - conddb.addFolder("",getDBFolderAndTag("/LAR/ElecCalibOfl/AutoCorrs/AutoCorr"),className="LArAutoCorrComplete") - loadCastorCat=True - LArAutoCorr2Ntuple.ContainerKey="LArAutoCorr" - LArAutoCorr2Ntuple.isSC=SuperCells - LArAutoCorr2Ntuple.isFlat=IsFlat - topSequence+=LArAutoCorr2Ntuple - -if doObj("PHYSAUTOCORR"): - if SuperCells: - conddb.addFolder("",getDBFolderAndTag("/LAR/ElecCalibOflSC/AutoCorrs/PhysicsAutoCorr")) - else: - conddb.addFolder("",getDBFolderAndTag("/LAR/ElecCalibOfl/AutoCorrs/PhysicsAutoCorr")) - from LArCalibTools.LArCalibToolsConf import LArAutoCorr2Ntuple - LArAutoCorr2Ntuple=LArAutoCorr2Ntuple("LArAutoCorr2Ntuple") - LArAutoCorr2Ntuple.AddFEBTempInfo=False - LArAutoCorr2Ntuple.isSC=SuperCells - LArAutoCorr2Ntuple.isFlat=False - topSequence+=LArAutoCorr2Ntuple - -if (doObj("OFPhase")): - if SuperCells: - conddb.addFolder("",getDBFolderAndTag("/LAR/ElecCalibOflSC/OFCBin/PhysShift"),className="LArOFCBinComplete") - Ckey="LArSCOFCPhase" - else: - conddb.addFolder("",getDBFolderAndTag("/LAR/ElecCalibOfl/OFCBin/PhysWaveShifts"),className="LArOFCBinComplete") - Ckey="LArPhysWaveShift" - print("OFPhase key: ",Ckey) - from LArCalibTools.LArCalibToolsConf import LArOFCBin2Ntuple - LArOFCBin2Ntuple=LArOFCBin2Ntuple("LArOFCBin2Ntuple") - LArOFCBin2Ntuple.ContainerKey=Ckey - LArOFCBin2Ntuple.AddFEBTempInfo=False - LArOFCBin2Ntuple.isSC = SuperCells - LArOFCBin2Ntuple.OffId=OffIdDump - topSequence+=LArOFCBin2Ntuple - -if doObj("OFC"): - from LArCalibTools.LArCalibToolsConf import LArOFC2Ntuple - LArOFC2Ntuple = LArOFC2Ntuple("LArOFC2Ntuple") - LArOFC2Ntuple.AddFEBTempInfo=False - LArOFC2Ntuple.OffId=OffIdDump - if IsMC: - if SuperCells: - from LArRecUtils.LArOFCSCCondAlgDefault import LArOFCCondAlgDefault - ofcAlg = LArOFCSCCondAlgDefault() - else: - from LArRecUtils.LArOFCCondAlgDefault import LArOFCCondAlgDefault - ofcAlg = LArOFCCondAlgDefault() - LArOFC2Ntuple.ContainerKey = ofcAlg.LArOFCObjKey - - elif IsFlat: - from LArRecUtils.LArRecUtilsConf import LArFlatConditionsAlg_LArOFCFlat_ as LArOFCCondAlg - from AthenaCommon.AlgSequence import AthSequencer - condSequence = AthSequencer("AthCondSeq") - if SuperCells: - folder = '/LAR/ElecCalibFlatSC/OFC' - else: - folder = '/LAR/ElecCalibFlat/OFC' - conddb.addFolder('LAR_ONL', getDBFolderAndTag(folder), className = 'CondAttrListCollection') - condSequence += LArOFCCondAlg (ReadKey=folder, WriteKey='LArOFC') - - else: - if SuperCells: - conddb.addFolder("",getDBFolderAndTag("/LAR/ElecCalibOflSC/OFC/PhysWave/RTM/"+OFCFolder) + '<key>LArOFC</key>', - #conddb.addFolder("",getDBFolderAndTag("/LAR/ElecCalibOflSC/OFC/CaliWave") + '<key>LArOFC</key>', - className='LArOFCComplete') - else: - conddb.addFolder("",getDBFolderAndTag("/LAR/ElecCalibOfl/OFC/PhysWave/RTM/"+OFCFolder) + '<key>LArOFC</key>', - className='LArOFCComplete') - - LArOFC2Ntuple.isSC=SuperCells - LArOFC2Ntuple.isFlat=IsFlat - #LArOFC2Ntuple.OutputLevel=VERBOSE - topSequence+=LArOFC2Ntuple - -if (doObj("SHAPE")): - from LArCalibTools.LArCalibToolsConf import LArShape2Ntuple - LArShape2Ntuple = LArShape2Ntuple("LArShape2Ntuple") - if SuperCells: - LArShape2Ntuple.ContainerKey = "LArShapeSC" - else: - LArShape2Ntuple.ContainerKey = "LArShape" - if IsMC: - if SuperCells: - conddb.addFolder("",getDBFolderAndTag("/LAR/ElecCalibMCSC/Shape")) - else: - conddb.addFolder("",getDBFolderAndTag("/LAR/ElecCalibMC/Shape")) - elif IsFlat: - conddb.addFolder("",getDBFolderAndTag("/LAR/ElecCalibFlat/Shape")) - else: - conddb.addFolder("",getDBFolderAndTag("/LAR/ElecCalibOfl/Shape/RTM/"+OFCFolder)) - LArShape2Ntuple.isComplete=True - pass - if SuperCells: - LArShape2Ntuple.ContainerKey = "LArShapeSC" - else: - LArShape2Ntuple.ContainerKey = "LArShape" - LArShape2Ntuple.AddFEBTempInfo=False - LArShape2Ntuple.isSC = SuperCells - LArShape2Ntuple.isFlat = IsFlat - LArShape2Ntuple.OffId=OffIdDump - topSequence+=LArShape2Ntuple - -if doObj("RAMP"): - from LArCalibTools.LArCalibToolsConf import LArRamps2Ntuple - LArRamps2Ntuple=LArRamps2Ntuple("LArRamps2Ntuple") - LArRamps2Ntuple.NtupleName = "RAMPS" - LArRamps2Ntuple.OffId=OffIdDump - if IsMC: - if SuperCells: - conddb.addFolder("",getDBFolderAndTag("/LAR/ElecCalibMCSC/Ramp")) - LArRamps2Ntuple.RampKey="LArRampSC" - else: - conddb.addFolder("",getDBFolderAndTag("/LAR/ElecCalibMC/Ramp")) - elif IsFlat: - conddb.addFolder("",getDBFolderAndTag("/LAR/ElecCalibFlat/Ramp")) - else: - if SuperCells: - conddb.addFolder("",getDBFolderAndTag("/LAR/ElecCalibOflSC/Ramps/RampLinea")) - else: - conddb.addFolder("",getDBFolderAndTag("/LAR/ElecCalibOfl/Ramps/RampLinea")) - LArRamps2Ntuple.RawRamp = False - LArRamps2Ntuple.AddFEBTempInfo=False - LArRamps2Ntuple.isSC = SuperCells - LArRamps2Ntuple.isFlat = IsFlat - topSequence+=LArRamps2Ntuple - -if (doObj("UA2MEV")): - from LArCalibTools.LArCalibToolsConf import LAruA2MeV2Ntuple - LAruA2MeV2Ntuple=LAruA2MeV2Ntuple("LAruA2MeV2Ntuple") - LAruA2MeV2Ntuple.AddFEBTempInfo=False - LAruA2MeV2Ntuple.isSC = SuperCells - LAruA2MeV2Ntuple.isFlat = IsFlat - LAruA2MeV2Ntuple.OffId=OffIdDump - LAruA2MeV2Ntuple.AddHash=HashDump - if IsMC: - if SuperCells: - conddb.addFolder("",getDBFolderAndTag("/LAR/ElecCalibMCSC/DAC2uA")) - conddb.addFolder("",getDBFolderAndTag("/LAR/ElecCalibMCSC/uA2MeV")) - else: - conddb.addFolder("",getDBFolderAndTag("/LAR/ElecCalibMC/DAC2uA")) - conddb.addFolder("",getDBFolderAndTag("/LAR/ElecCalibMC/uA2MeV")) - elif IsFlat: - conddb.addFolder("",getDBFolderAndTag("/LAR/ElecCalibFlat/DAC2uA")) - conddb.addFolder("",getDBFolderAndTag("/LAR/ElecCalibFlat/uA2MeV")) - else: - conddb.addFolder("",getDBFolderAndTag("/LAR/ElecCalibOfl/uA2MeV/Symmetry")) - LAruA2MeV2Ntuple.DAC2uAKey="" - topSequence+=LAruA2MeV2Ntuple - -if (doObj("MPHYSOVERMCAL")): - if IsMC: - if SuperCells: - conddb.addFolder("",getDBFolderAndTag("/LAR/ElecCalibMCSC/MphysOverMcal")) - print( 'Not MPHYSOVERMCAL fo SuperCells yet !!' ) - import sys; sys.exit(-2) - else: - conddb.addFolder("",getDBFolderAndTag("/LAR/ElecCalibMC/MphysOverMcal")) - elif IsFlat: - conddb.addFolder("",getDBFolderAndTag("/LAR/ElecCalibFlat/MphysOverMcal")) - else: - conddb.addFolder("",getDBFolderAndTag("/LAR/ElecCalibOfl/MphysOverMcal/RTM")) - from LArCalibTools.LArCalibToolsConf import LArMphysOverMcal2Ntuple - LArMphysOverMcal2Ntuple=LArMphysOverMcal2Ntuple("LArMphysOverMcal2Ntuple") - LArMphysOverMcal2Ntuple.AddFEBTempInfo=False - LArMphysOverMcal2Ntuple.isSC = SuperCells - LArMphysOverMcal2Ntuple.isFlat = IsFlat - LArMphysOverMcal2Ntuple.OffId=OffIdDump - topSequence+=LArMphysOverMcal2Ntuple - -if (doObj("CALIWAVE")): - if IsMC: - if SuperCells: - print( 'No CALIWAVE for SuperCells yet !!!') - import sys; sys.exit(-3) - else: - conddb.addFolder("",getDBFolderAndTag("/LAR/ElecCalibMC/CaliWave")) - elif IsFlat: - print( 'No Flat CALIWAVE !!!') - import sys; sys.exit(-3) - else: - loadCastorCat=True - #conddb.addFolder("",getDBFolderAndTag("/LAR/ElecCalibOfl/CaliWaves/CaliWave")) - conddb.addFolder("",getDBFolderAndTag("/LAR/ElecCalibOfl/CaliWaves/CaliWaveXtalkCorr")) - from LArCalibTools.LArCalibToolsConf import LArCaliWaves2Ntuple - LArCaliWaves2Ntuple=LArCaliWaves2Ntuple("LArCaliWaves2Ntuple") - LArCaliWaves2Ntuple.NtupleName = "CALIWAVE" - LArCaliWaves2Ntuple.KeyList = [ 'LArCaliWave' ] - LArCaliWaves2Ntuple.SaveDerivedInfo = True - LArCaliWaves2Ntuple.SaveJitter = True - LArCaliWaves2Ntuple.AddFEBTempInfo=False - LArCaliWaves2Ntuple.isSC = SuperCells - LArCaliWaves2Ntuple.isFlat = IsFlat - LArCaliWaves2Ntuple.OffId=OffIdDump - topSequence+=LArCaliWaves2Ntuple - -if (doObj("WFPARAMS")): - loadCastorCat=True - conddb.addFolder("",getDBFolderAndTag("/LAR/ElecCalibOfl/DetCellParams/RTM")) - conddb.addFolder("",getDBFolderAndTag("/LAR/ElecCalibOfl/CaliPulseParams/RTM")) - conddb.addFolder("",getDBFolderAndTag("/LAR/ElecCalibOfl/Tdrift/Computed")) - #conddb.addFolder("",getDBFolderAndTag("/LAR/ElecCalibOfl/PhysCaliTdiff")) - conddb.addFolder("",getDBFolderAndTag("/LAR/ElecCalibOfl/OFCBin/PhysWaveShifts")) - from LArCalibTools.LArCalibToolsConf import LArWFParams2Ntuple - LArWFParams2Ntuple=LArWFParams2Ntuple("LArWFParams2Ntuple") - LArWFParams2Ntuple.DumpCaliPulseParams=True - LArWFParams2Ntuple.DumpDetCellParams=True - LArWFParams2Ntuple.DumpPhysCaliTdiff=False - LArWFParams2Ntuple.DumpTdrift=True - LArWFParams2Ntuple.DumpOFCBin=True - LArWFParams2Ntuple.CaliPulseParamsKey="LArCaliPulseParams_RTM" - LArWFParams2Ntuple.DetCellParamsKey="LArDetCellParams_RTM" - LArWFParams2Ntuple.PhysCaliTDiffKey="LArPhysCaliTdiff" - #LArWFParams2Ntuple.OFCBinKey="LArOFCPhase" - LArWFParams2Ntuple.OFCBinKey="LArPhysWaveShift" - #LArWFParams2Ntuple.DetStoreSuffix="_RTM" - LArWFParams2Ntuple.OffId=OffIdDump - #LArWFParams2Ntuple.OutputLevel=DEBUG - topSequence+=LArWFParams2Ntuple - -if (doObj("NOISE")): - if IsMC: - if SuperCells: - conddb.addFolder("",getDBFolderAndTag("/LAR/ElecCalibMCSC/Noise")) - else: - conddb.addFolder("",getDBFolderAndTag("/LAR/ElecCalibMC/Noise")) - elif IsFlat: - #conddb.addFolder("",getDBFolderAndTag("/LAR/ElecCalibFlat/Noise")) - print( 'No Flat LArNoise yet !!!') - import sys; sys.exit(-5) - else: - print( 'For Cell noise use the CaloNoise2Ntuple algo !') - import sys; sys.exit(-5) - pass - from LArCalibTools.LArCalibToolsConf import LArNoise2Ntuple - LArNoise2Ntuple=LArNoise2Ntuple("LArNoise2Ntuple") - LArNoise2Ntuple.AddFEBTempInfo=False - LArNoise2Ntuple.isSC = SuperCells - LArNoise2Ntuple.isFlat = IsFlat - LArNoise2Ntuple.OffId=OffIdDump - topSequence+=LArNoise2Ntuple - -if (doObj("FSAMPL")): - if IsMC: - if SuperCells: - conddb.addFolder("",getDBFolderAndTag("/LAR/ElecCalibMCSC/fSampl")) - else: - conddb.addFolder("",getDBFolderAndTag("/LAR/ElecCalibMC/fSampl")) - elif IsFlat: - #conddb.addFolder("",getDBFolderAndTag("/LAR/ElecCalibFlat/fSampl")) - print( 'No Flat LArfSampl yet !!!') - import sys; sys.exit(-5) - else: - conddb.addFolder("",getDBFolderAndTag("/LAR/ElecCalibOfl/fSampl/Symmetry")) - from LArCalibTools.LArCalibToolsConf import LArfSampl2Ntuple - LArfSampl2Ntuple=LArfSampl2Ntuple("LArfSampl2Ntuple") - LArfSampl2Ntuple.AddFEBTempInfo=False - LArfSampl2Ntuple.isSC = SuperCells - LArfSampl2Ntuple.isFlat = IsFlat - LArfSampl2Ntuple.OffId=OffIdDump - LArfSampl2Ntuple.AddHash=HashDump - topSequence+=LArfSampl2Ntuple - - -if doObj("HVSCALE"): - if IsMC: - conddb.addFolder("",getDBFolderAndTag("/LAR/ElecCalibMC/HVScaleCorr")) - else: - if IsFlat: - from AthenaCommon.AlgSequence import AthSequencer - condSequence = AthSequencer("AthCondSeq") - if SuperCells: - folder="/LAR/ElecCalibFlatSC/HVScaleCorr" - from LArRecUtils.LArRecUtilsConf import LArFlatConditionsAlg_LArHVScaleCorrSC_ as LArHVCondAlg - else: - folder="/LAR/ElecCalibFlat/HVScaleCorr" - from LArRecUtils.LArRecUtilsConf import LArFlatConditionsAlg_LArHVScaleCorrFlat_ as LArHVCondAlg - conddb.addFolder("",getDBFolderAndTag(folder),className = 'CondAttrListCollection') - condSequence += LArHVCondAlg(ReadKey=folder, WriteKey='HVScaleCorr') - else: - print( 'Only Flat HVSCALE !!!') - import sys; sys.exit(-5) - - - from LArCalibTools.LArCalibToolsConf import LArHVScaleCorr2Ntuple - theLArHVScaleCorr2Ntuple = LArHVScaleCorr2Ntuple("LArHVScaleCorr2Ntuple") - theLArHVScaleCorr2Ntuple.AddFEBTempInfo = False - theLArHVScaleCorr2Ntuple.isSC = SuperCells - theLArHVScaleCorr2Ntuple.isFlat = IsFlat - theLArHVScaleCorr2Ntuple.ContainerKey = 'HVScaleCorr' - topSequence += theLArHVScaleCorr2Ntuple - -if (doObj("MINBIAS")): - if IsMC: - if SuperCells: - conddb.addFolder("",getDBFolderAndTag("/LAR/ElecCalibMCSC/MinBias")) - else: - conddb.addFolder("",getDBFolderAndTag("/LAR/ElecCalibMC/MinBias")) - conddb.addFolder("",getDBFolderAndTag("/LAR/ElecCalibMC/MinBiasAverage")) - elif IsFlat: - #conddb.addFolder("",getDBFolderAndTag("/LAR/ElecCalibFlat/Noise")) - print( 'No Flat LArMinBias yet !!!') - import sys; sys.exit(-5) - from LArCalibTools.LArCalibToolsConf import LArMinBias2Ntuple - LArMinBias2Ntuple=LArMinBias2Ntuple("LArMinBias2Ntuple") - LArMinBias2Ntuple.AddFEBTempInfo=False - topSequence+=LArMinBias2Ntuple - -if (doObj("PILEUP")): - if IsMC: - if SuperCells: - print( 'No LArPileup for SC yet !!!') - import sys; sys.exit(-5) - else: - conddb.addFolder("",getDBFolderAndTag("/LAR/ElecCalibMC/LArPileupAverage")) - elif IsFlat: - #conddb.addFolder("",getDBFolderAndTag("/LAR/ElecCalibFlat/Noise")) - print( 'No Flat LArPileup yet !!!') - import sys; sys.exit(-5) - else: - conddb.addFolder("",getDBFolderAndTag("/LAR/ElecCalibOfl/LArPileupAverage")) - from LArCalibTools.LArCalibToolsConf import LArMinBias2Ntuple - LArPileup2Ntuple=LArMinBias2Ntuple("LArPileup2Ntuple") - LArPileup2Ntuple.AddFEBTempInfo=False - LArPileup2Ntuple.ContainerKey="LArPileup" - LArPileup2Ntuple.NtupleName="/NTUPLES/FILE1/PILEUP" - topSequence+=LArPileup2Ntuple - -if (doObj("RINJ")): - conddb.addFolder("",getDBFolderAndTag("/LAR/ElecCalibOfl/HecPAMap")) - from LArCalibTools.LArCalibToolsConf import LArRinj2Ntuple - LArRinj2Ntuple=LArRinj2Ntuple("LArRinj2Ntuple") - LArRinj2Ntuple.AddFEBTempInfo=False - LArRinj2Ntuple.isSC = False - LArRinj2Ntuple.OffId=OffIdDump - topSequence+=LArRinj2Ntuple - -if loadCastorCat: - svcMgr.PoolSvc.ReadCatalog += ['xmlcatalog_file:'+'/afs/cern.ch/atlas/conditions/poolcond/catalogue/poolcond/PoolCat_comcond_castor.xml'] - - -theApp.HistogramPersistency = "ROOT" -from GaudiSvc.GaudiSvcConf import NTupleSvc -svcMgr += NTupleSvc() -svcMgr.NTupleSvc.Output = [ "FILE1 DATAFILE='"+RootFile+"' OPT='NEW'" ] - -#svcMgr.DetectorStore.Dump=True -#svcMgr.MessageSvc.OutputLevel = DEBUG -svcMgr.MessageSvc.Format = "% F%50W%C%8W%R%T %0W%M" -#svcMgr.MessageSvc.defaultLimit = 99999999 - -svcMgr.IOVDbSvc.DBInstance="" diff --git a/LArCalorimeter/LArCalibTools/share/LArConditions2Ntuple.py b/LArCalorimeter/LArCalibTools/share/LArConditions2Ntuple.py index 595e830a844bdbf3e68290cab9880dcdb28deb00..0ba6137053a0017a08bcf6d69a2017060ede2a06 100755 --- a/LArCalorimeter/LArCalibTools/share/LArConditions2Ntuple.py +++ b/LArCalorimeter/LArCalibTools/share/LArConditions2Ntuple.py @@ -95,6 +95,9 @@ if __name__=='__main__': #flags.Exec.OutputLevel=1 + if (args.sqlite): + flags.IOVDb.SqliteInput=args.sqlite + flags.lock() from AthenaConfiguration.MainServicesConfig import MainServicesCfg @@ -137,7 +140,7 @@ if __name__=='__main__': from LArConfiguration.LArElecCalibDBConfig import LArElecCalibDBCfg - cfg.merge(LArElecCalibDBCfg(flags,objects,args.sqlite)) + cfg.merge(LArElecCalibDBCfg(flags,objects)) if "Pedestal" in objects: cfg.addEventAlgo(CompFactory.LArPedestals2Ntuple(ContainerKey = "LArPedestal", diff --git a/LArCalorimeter/LArCalibTools/share/LArRamp2Ntuple_jobOptions.py b/LArCalorimeter/LArCalibTools/share/LArRamp2Ntuple_jobOptions.py deleted file mode 100755 index 49a84597a9efe870a5655228f445f8538a94cdf1..0000000000000000000000000000000000000000 --- a/LArCalorimeter/LArCalibTools/share/LArRamp2Ntuple_jobOptions.py +++ /dev/null @@ -1,60 +0,0 @@ -############################################## -# Job options to dump the Ramps to a ntuple. # -############################################## - -from AthenaCommon.DetFlags import DetFlags -DetFlags.all_setOff() -DetFlags.em_setOn() - -from AthenaCommon.GlobalFlags import GlobalFlags -GlobalFlags.DetGeo.set_ctbh8() -GlobalFlags.DataSource.set_data() -include( "AthenaCommon/Atlas_Gen.UnixStandardJob.py" ) - -include( "LArDetDescr/LArDetDescr_H8_joboptions.py" ) -#include ("LArIdCnv/LArIdCnv_joboptions.py") -#include ("LArConditionsCommon/LArIdMap_H8_jobOptions.py") - -EventSelector = Service( "EventSelector" ) -EventSelector.RunNumber=1000942 -EventSelector.EventsPerRun=1 -EventSelector.FirstEvent=1 - -LArTB04FolderTag_Calib = "TB04-Default" -LArTB04FolderTag_Pedestal = "TB04-Default" -LArTB04FolderTag_Ramp = "TB04-Default" -LArTB04FolderTag_OFC_RTM = "TB04-Default" -LArTB04FolderTag_OFC_TCM = "TB04-Default" - -include ( "LArConditionsCommon/LArConditionsCommon_H8_jobOptions.py") - -## get a handle to the default top-level algorithm sequence -from AthenaCommon.AlgSequence import AlgSequence -topSequence = AlgSequence() - -## get a handle to the ApplicationManager, to the ServiceManager and to the ToolSvc -from AthenaCommon.AppMgr import (theApp, ServiceMgr as svcMgr,ToolSvc) - -from LArCalibTools.LArCalibToolsConf import LArRamps2Ntuple -LArRamps2Ntuple=LArRamps2Ntuple("LArRamps2Ntuple") -LArRamps2Ntuple.ContainerKey = ["HIGH","MEDIUM","LOW"] -LArRamps2Ntuple.RawRamp=False -LArRamps2Ntuple.SaveAllSamples=False - -topSequence+= LArRamps2Ntuple - - -theApp.HistogramPersistency = "ROOT" -from GaudiSvc.GaudiSvcConf import NTupleSvc -svcMgr += NTupleSvc() -svcMgr.NTupleSvc.Output = [ "FILE1 DATAFILE='LArRamp.root' OPT='NEW'" ] - -AthenaEventLoopMgr=Service("AthenaEventLoopMgr") -AthenaEventLoopMgr.OutputLevel=ERROR - -theApp.EvtMax=1 -svcMgr.MessageSvc.OutputLevel=DEBUG - -#DetStore=Service("DetectorStore"); -#DetStore.dump=TRUE - diff --git a/LArCalorimeter/LArCalibTools/share/LAruAMeV2Ntuple_jobOptions.py b/LArCalorimeter/LArCalibTools/share/LAruAMeV2Ntuple_jobOptions.py deleted file mode 100755 index cca171ddf2bdd59737a50a7318daf065fe1306c4..0000000000000000000000000000000000000000 --- a/LArCalorimeter/LArCalibTools/share/LAruAMeV2Ntuple_jobOptions.py +++ /dev/null @@ -1,49 +0,0 @@ -######################################################### -# Job options to dump the LArADC2MeV factor to a ntuple.# -######################################################### - - -from AthenaCommon.DetFlags import DetFlags -DetFlags.all_setOff() -DetFlags.em_setOn() - -from AthenaCommon.GlobalFlags import GlobalFlags -GlobalFlags.DetGeo.set_ctbh8() -GlobalFlags.DataSource.set_data() -include( "AthenaCommon/Atlas_Gen.UnixStandardJob.py" ) - -include( "LArDetDescr/LArDetDescr_H8_joboptions.py" ) -#include ("LArIdCnv/LArIdCnv_joboptions.py") -#include ("LArConditionsCommon/LArIdMap_H8_jobOptions.py") - -EventSelector = Service( "EventSelector" ) -EventSelector.RunNumber=1000942 -EventSelector.EventsPerRun=1 -EventSelector.FirstEvent=1 - -LArTB04FolderTag_Calib = "TB04-Default" -LArTB04FolderTag_Pedestal = "TB04-Default" -LArTB04FolderTag_Ramp = "TB04-Default" -LArTB04FolderTag_OFC_RTM = "TB04-Default" -LArTB04FolderTag_OFC_TCM = "TB04-Default" - -include ( "LArConditionsCommon/LArConditionsCommon_H8_jobOptions.py") - -theApp.Dlls += ["LArCalibTools"] - -theApp.TopAlg += [ "LAruA2MeV2Ntuple" ] - -theApp.Dlls += [ "RootHistCnv" ] -theApp.HistogramPersistency = "ROOT" -NTupleSvc = Service( "NTupleSvc" ) -NTupleSvc.Output = [ "FILE1 DATAFILE='uA2MEV.root' OPT='NEW'" ] - -AthenaEventLoopMgr=Service("AthenaEventLoopMgr") -AthenaEventLoopMgr.OutputLevel=ERROR - -theApp.EvtMax=1 -MessageSvc.OutputLevel=INFO - -DetStore=Service("DetectorStore"); -DetStore.dump=TRUE - diff --git a/LArCalorimeter/LArExample/LArConditionsCommon/share/LArConditionsCommon_H8_jobOptions.py b/LArCalorimeter/LArExample/LArConditionsCommon/share/LArConditionsCommon_H8_jobOptions.py deleted file mode 100755 index ddb1ef30700ffc6b4f991a4b13a89b18aed834a4..0000000000000000000000000000000000000000 --- a/LArCalorimeter/LArExample/LArConditionsCommon/share/LArConditionsCommon_H8_jobOptions.py +++ /dev/null @@ -1,69 +0,0 @@ -################################################################### -# -# Job options file for accessing LArRawConditions objects from COOL -# (H8 version) -#================================================================== - -include.block ( "LArConditionsCommon/LArConditionsCommon_H8_jobOptions.py" ) - -# LArH8DBConnection = CondDBCool.LAR - -#include ("LArRawConditions/LArRawConditionsDict_joboptions.py") -include( "LArCondAthenaPool/LArCondAthenaPool_joboptions.py" ) - - -#-------------------------------------------------------------- -# Access to IOVSvc and IOVDbSvc -# Must list the folders to be used for reading -#-------------------------------------------------------------- - - -# Set folders default tag if none is defined -# -if not 'LArTB04FolderTag_Calib' in dir(): - LArTB04FolderTag_Calib = "TB04-Default" -if not 'LArTB04FolderTag_Pedestal' in dir(): - LArTB04FolderTag_Pedestal = "TB04-Default" -if not 'LArTB04FolderTag_Ramp' in dir(): - LArTB04FolderTag_Ramp = "TB04-Default" -if not 'LArTB04FolderTag_OFC_RTM' in dir(): - LArTB04FolderTag_OFC_RTM = "TB04-Default" -if not 'LArTB04FolderTag_OFC_TCM' in dir(): - LArTB04FolderTag_OFC_TCM = "TB04-Default" -if not 'LArTB04FolderTag_MphyMcal' in dir(): - LArTB04FolderTag_MphyMcal = "TB04-Xtlk1" -if not 'LArTB04FolderTag_MphyMcal' in dir(): - LArTB04FolderTag_MphyMcal = "TB04-Xtlk1" - -LArH8FolderList = [#"/LAR/LArElecCalibH8/LArCalibParams<tag>LArCalibParams-"+LArTB04FolderTag_Calib+"</tag>", - "/LAR/LArElecCalibH8/LArPedestal<tag>LArPedestal-"+LArTB04FolderTag_Pedestal+"</tag>", - "/LAR/LArElecCalibH8/LArAutoCorr<tag>LArAutoCorr-"+LArTB04FolderTag_Pedestal+"</tag>", - "/LAR/LArElecCalibH8/LArRamp<tag>LArRamp-"+LArTB04FolderTag_Ramp+"</tag>", - "/LAR/LArElecCalibH8/LAruA2MeV<tag>LAruA2MeV-"+LArTB04FolderTag_Ramp+"</tag>", - "/LAR/LArElecCalibH8/LArDAC2uA<tag>LArDAC2uA-"+LArTB04FolderTag_Ramp+"</tag>", - "/LAR/LArElecCalibH8/LArMphysOverMcal<tag>LArMphysOverMcal-"+LArTB04FolderTag_MphyMcal+"</tag>" - ] - -if 'useRTMOFC' in dir() and useRTMOFC: - LArH8FolderList +=[ - "/LAR/LArElecCalibH8/LArOFCPhys/RTM<tag>LArOFCPhysRTM-"+LArTB04FolderTag_OFC_RTM+"</tag>"#, -# "/LAR/LArElecCalibH8/LArShape/RTM<tag>LArShapeRTM-"+LArTB04FolderTag_OFC_RTM+"</tag>" - ] - -if 'useTCMOFC' in dir() and useTCMOFC: - LArH8FolderList +=[ - "/LAR/LArElecCalibH8/LArOFCPhys/TCM<tag>LArOFCPhysTCM-"+LArTB04FolderTag_OFC_TCM+"</tag>"#, -# "/LAR/LArElecCalibH8/LArShape/TCM<tag>LArShapeTCM-"+LArTB04FolderTag_OFC_TCM+"</tag>" - ] - -#for i in range(len(LArH8FolderList)): -# LArH8FolderList[i]+=LArH8DBConnection - - -from IOVDbSvc.CondDB import conddb -for f in LArH8FolderList : - conddb.addFolder("LAR",f) - -PoolSvc = Service( "PoolSvc" ) -if not (hasattr(PoolSvc.ReadCatalog,'__len__') and "prfile:poolcond/PoolCat_oflcond.xml" in PoolSvc.ReadCatalog): - PoolSvc.ReadCatalog+= [ "prfile:poolcond/PoolCat_oflcond.xml" ] diff --git a/LArCalorimeter/LArRawConditions/share/LArRawConditions_H8_jobOptions.py b/LArCalorimeter/LArRawConditions/share/LArRawConditions_H8_jobOptions.py deleted file mode 100755 index e70b4999898819d3fb23a4ced1177a95e89149bb..0000000000000000000000000000000000000000 --- a/LArCalorimeter/LArRawConditions/share/LArRawConditions_H8_jobOptions.py +++ /dev/null @@ -1 +0,0 @@ -include ("LArConditionsCommon/LArConditionsCommon_H8_jobOptions.py") diff --git a/MagneticField/MagFieldUtils/CMakeLists.txt b/MagneticField/MagFieldUtils/CMakeLists.txt index 252d9e9e303287718c81cacd47216da49b1646a5..5e0b823313de092b690a52ea3fbf5bd3ce99485c 100644 --- a/MagneticField/MagFieldUtils/CMakeLists.txt +++ b/MagneticField/MagFieldUtils/CMakeLists.txt @@ -1,4 +1,4 @@ -# Copyright (C) 2002-2021 CERN for the benefit of the ATLAS collaboration +# Copyright (C) 2002-2024 CERN for the benefit of the ATLAS collaboration # Declare the package name: atlas_subdir( MagFieldUtils ) @@ -16,6 +16,3 @@ atlas_add_library( MagFieldUtils NO_PUBLIC_HEADERS PRIVATE_INCLUDE_DIRS ${ROOT_INCLUDE_DIRS} ${GEANT4_INCLUDE_DIRS} ${CLHEP_INCLUDE_DIRS} PRIVATE_LINK_LIBRARIES ${ROOT_LIBRARIES} ${GEANT4_LIBRARIES} ${CLHEP_LIBRARIES} AthenaBaseComps GaudiKernel MagFieldConditions MagFieldInterfaces StoreGateLib ) - -# Install files from the package: -atlas_install_joboptions( share/*.py ) diff --git a/MagneticField/MagFieldUtils/share/MagFieldTestbedAlg_postInclude.py b/MagneticField/MagFieldUtils/share/MagFieldTestbedAlg_postInclude.py deleted file mode 100644 index 8d0e54d5ffc31c095530d32de99fd17f7281e00e..0000000000000000000000000000000000000000 --- a/MagneticField/MagFieldUtils/share/MagFieldTestbedAlg_postInclude.py +++ /dev/null @@ -1,37 +0,0 @@ -# (0.) configure new MagFieldSvc -from AthenaCommon.AppMgr import ServiceMgr -from MagFieldServices.MagFieldServicesConf import MagField__AtlasFieldSvc -ServiceMgr += MagField__AtlasFieldSvc("AtlasFieldSvc"); -#ServiceMgr.AtlasFieldSvc.FieldMapFile = '/afs/cern.ch/user/m/masahiro/public/BFieldMap/combinedMap.root' - -from IOVDbSvc.CondDB import conddb -conddb.addOverride('/GLOBAL/BField/Map','BFieldMap-FullAsym-09-solTil3') - -# (1.) setup the Athena algorithm -from AthenaCommon.AlgSequence import AlgSequence -topSequence = AlgSequence() -from MagFieldUtils.MagFieldUtilsConf import MagField__MagFieldTestbedAlg -topSequence += MagField__MagFieldTestbedAlg('MagFieldTestbedAlg') -topSequence.MagFieldTestbedAlg.useOldMagFieldSvc = True -topSequence.MagFieldTestbedAlg.numberOfReadings = 1000000 -topSequence.MagFieldTestbedAlg.recordReadings = True -topSequence.MagFieldTestbedAlg.coordsAlongBeam = True - -topSequence.MagFieldTestbedAlg.explicitCoords = True -topSequence.MagFieldTestbedAlg.explicitX = 4846.35 -topSequence.MagFieldTestbedAlg.explicitY = 2037.96 -topSequence.MagFieldTestbedAlg.explicitZ = -12625.6 - - -topSequence.MagFieldTestbedAlg.useDerivatives = True -topSequence.MagFieldTestbedAlg.onlyCheckSolenoid = False - -topSequence.MagFieldTestbedAlg.ReferenceFile = 'oldMagField.root' - - -# (2.) configure the THistStream -from GaudiSvc.GaudiSvcConf import THistSvc -if not hasattr(ServiceMgr, 'THistSvc'): - ServiceMgr += THistSvc("THistSvc") - -ServiceMgr.THistSvc.Output = ["MagFieldTestbedAlg DATAFILE='comparedMagFields.root' OPT='RECREATE'"] diff --git a/MagneticField/MagFieldUtils/share/MagFieldTestbedAlg_standalone.py b/MagneticField/MagFieldUtils/share/MagFieldTestbedAlg_standalone.py deleted file mode 100644 index 3a3bc5914487e9016d39b3ba7994f781e0c67879..0000000000000000000000000000000000000000 --- a/MagneticField/MagFieldUtils/share/MagFieldTestbedAlg_standalone.py +++ /dev/null @@ -1,49 +0,0 @@ -from AthenaCommon.DetFlags import DetFlags -DetFlags.Muon_setOn() -DetFlags.Calo_setOn() -DetFlags.ID_setOn() - -include('RecExCond/AllDet_detDescr.py') - -if len(globalflags.ConditionsTag()): - from IOVDbSvc.CondDB import conddb - conddb.setGlobalTag(globalflags.ConditionsTag()) - -# (0.) configure new MagFieldSvc -from AthenaCommon.AppMgr import ServiceMgr -from AthenaCommon.AppMgr import theApp - -import MagFieldServices.SetupField - - -theApp.EvtMax = 1 - -from IOVDbSvc.CondDB import conddb -conddb.addOverride('/GLOBAL/BField/Map','BFieldMap-FullAsym-09-solTil3') - -# (1.) setup the Athena algorithm -from AthenaCommon.AlgSequence import AlgSequence -topSequence = AlgSequence() -from MagFieldUtils.MagFieldUtilsConf import MagField__MagFieldTestbedAlg -topSequence += MagField__MagFieldTestbedAlg('MagFieldTestbedAlg') -topSequence.MagFieldTestbedAlg.useOldMagFieldSvc = False -topSequence.MagFieldTestbedAlg.numberOfReadings = 1000000 -topSequence.MagFieldTestbedAlg.recordReadings = True -topSequence.MagFieldTestbedAlg.coordsAlongBeam = False -topSequence.MagFieldTestbedAlg.useDerivatives = True - -#topSequence.MagFieldTestbedAlg.explicitCoords = False -#topSequence.MagFieldTestbedAlg.explicitX = 4846.35 -#topSequence.MagFieldTestbedAlg.explicitY = 2037.96 -#topSequence.MagFieldTestbedAlg.explicitZ = -12625.6 -topSequence.MagFieldTestbedAlg.onlyCheckSolenoid = False - -#topSequence.MagFieldTestbedAlg.ReferenceFile = 'NewMagField.root' - - -# (2.) configure the THistStream -from GaudiSvc.GaudiSvcConf import THistSvc -if not hasattr(ServiceMgr, 'THistSvc'): - ServiceMgr += THistSvc("THistSvc") - -ServiceMgr.THistSvc.Output = ["MagFieldTestbedAlg DATAFILE='NewMagField.root' OPT='RECREATE'"] diff --git a/MagneticField/MagFieldUtils/share/SolenoidTest_postInclude.py b/MagneticField/MagFieldUtils/share/SolenoidTest_postInclude.py deleted file mode 100644 index 8f9c7d7692abd3815ed98ee8d8d090d4fff6f29f..0000000000000000000000000000000000000000 --- a/MagneticField/MagFieldUtils/share/SolenoidTest_postInclude.py +++ /dev/null @@ -1,70 +0,0 @@ -# (0.) configure the THistStream -from AthenaCommon.AppMgr import ServiceMgr -from GaudiSvc.GaudiSvcConf import THistSvc -if not hasattr(ServiceMgr, 'THistSvc'): - ServiceMgr += THistSvc("THistSvc") -ServiceMgr.THistSvc.Output = ["SolenoidTest DATAFILE='hurz.root' OPT='RECREATE'"] - -# configure the field service -#from MagFieldServices.MagFieldServicesConf import MagField__AtlasFieldSvc -#ServiceMgr += MagField__AtlasFieldSvc("AtlasFieldSvc"); -ServiceMgr.AtlasFieldSvc.FullMapFile = "/afs/cern.ch/user/m/masahiro/public/BFieldMap/bfieldmap_7730_20400.root" -ServiceMgr.AtlasFieldSvc.SoleMapFile = "/afs/cern.ch/user/m/masahiro/public/BFieldMap/bfieldmap_7730_0.root" -ServiceMgr.AtlasFieldSvc.ToroMapFile = "/afs/cern.ch/user/m/masahiro/public/BFieldMap/bfieldmap_0_20400.root" -ServiceMgr.AtlasFieldSvc.UseDCS = False -ServiceMgr.AtlasFieldSvc.UseSoleCurrent = 7730 -ServiceMgr.AtlasFieldSvc.UseToroCurrent = 0 # 20400 - -# (1.) setup the SolenoidTest algorithm -from AthenaCommon.AlgSequence import AlgSequence -topSequence = AlgSequence() -from MagFieldUtils.MagFieldUtilsConf import MagField__SolenoidTest -testFull = 1000 # =1000 to measure the speed of the full 3d field -testFast = 1000 # =1000 to measure the speed of the fast 2d field -testOld = 0 # =1000 to measure the speed of the old field -testHist = 100 # =100 to produce ROOT file to compare full vs. fast -if testFull: - topSequence += MagField__SolenoidTest('SolenoidTestFull') - topSequence.SolenoidTestFull.UseFullField = True - topSequence.SolenoidTestFull.UseFastField = False - topSequence.SolenoidTestFull.UseOldField = False - topSequence.SolenoidTestFull.WriteNtuple = False - topSequence.SolenoidTestFull.Derivatives = False - topSequence.SolenoidTestFull.StepsR = testFull - topSequence.SolenoidTestFull.StepsZ = testFull - topSequence.SolenoidTestFull.StepsPhi = testFull -if testFast: - topSequence += MagField__SolenoidTest('SolenoidTestFast') - topSequence.SolenoidTestFast.UseFullField = False - topSequence.SolenoidTestFast.UseFastField = True - topSequence.SolenoidTestFull.UseOldField = False - topSequence.SolenoidTestFast.WriteNtuple = False - topSequence.SolenoidTestFast.Derivatives = False - topSequence.SolenoidTestFast.StepsR = testFast - topSequence.SolenoidTestFast.StepsZ = testFast - topSequence.SolenoidTestFast.StepsPhi = testFast -if testOld: - topSequence += MagField__SolenoidTest('SolenoidTestOld') - topSequence.SolenoidTestOld.UseFullField = False - topSequence.SolenoidTestOld.UseFastField = False - topSequence.SolenoidTestOld.UseOldField = True - topSequence.SolenoidTestOld.WriteNtuple = False - topSequence.SolenoidTestOld.Derivatives = False - topSequence.SolenoidTestOld.StepsR = testOld - topSequence.SolenoidTestOld.StepsZ = testOld - topSequence.SolenoidTestOld.StepsPhi = testOld -if testHist: - topSequence += MagField__SolenoidTest('SolenoidTestHist') - topSequence.SolenoidTestHist.UseFullField = True - topSequence.SolenoidTestHist.UseFastField = True - topSequence.SolenoidTestHist.UseOldField = True - topSequence.SolenoidTestHist.WriteNtuple = True - topSequence.SolenoidTestHist.Derivatives = True - topSequence.SolenoidTestHist.MinimumZ = -3000. - topSequence.SolenoidTestHist.MaximumZ = 3000. - topSequence.SolenoidTestHist.MinimumR = 0. - topSequence.SolenoidTestHist.MaximumR = 1200. - topSequence.SolenoidTestHist.StepsR = testHist - topSequence.SolenoidTestHist.StepsZ = testHist - topSequence.SolenoidTestHist.StepsPhi = testHist - diff --git a/MagneticField/MagFieldUtils/share/test_IdentityManipulator.py b/MagneticField/MagFieldUtils/share/test_IdentityManipulator.py deleted file mode 100644 index 3826d6405db24f1aac4e887193cb66fcab96b547..0000000000000000000000000000000000000000 --- a/MagneticField/MagFieldUtils/share/test_IdentityManipulator.py +++ /dev/null @@ -1,58 +0,0 @@ -# example standalone joboptions to test IdentityManipulator -# (compare with MagFieldTestbedAlg_standalone.py) -# Valerio Ippolito, Harvard University - -from AthenaCommon.DetFlags import DetFlags -DetFlags.Muon_setOn() -DetFlags.Calo_setOn() -DetFlags.ID_setOn() - -include('RecExCond/AllDet_detDescr.py') - -if len(globalflags.ConditionsTag()): - from IOVDbSvc.CondDB import conddb - conddb.setGlobalTag(globalflags.ConditionsTag()) - -# (0.) configure new MagFieldSvc -from AthenaCommon.AppMgr import ServiceMgr -from AthenaCommon.AppMgr import ToolSvc -from AthenaCommon.AppMgr import theApp - -import MagFieldServices.SetupField - -# add the test mag field manipulation tool -from MagFieldUtils.MagFieldUtilsConf import MagField__IdentityManipulator as manip -ToolSvc += manip('IdentityManipulator') - -# configure it -from AthenaCommon.CfgGetter import getService -fieldSvc = getService('AtlasFieldSvc') -fieldSvc.DoManipulation = True -fieldSvc.ManipulatorTool = ToolSvc.IdentityManipulator - -theApp.EvtMax = 1 - -from IOVDbSvc.CondDB import conddb -conddb.addOverride('/GLOBAL/BField/Map','BFieldMap-FullAsym-09-solTil3') - -# (1.) setup the Athena algorithm -from AthenaCommon.AlgSequence import AlgSequence -topSequence = AlgSequence() -from MagFieldUtils.MagFieldUtilsConf import MagField__MagFieldTestbedAlg -topSequence += MagField__MagFieldTestbedAlg('MagFieldTestbedAlg') -topSequence.MagFieldTestbedAlg.useOldMagFieldSvc = False -topSequence.MagFieldTestbedAlg.numberOfReadings = 1000000 -topSequence.MagFieldTestbedAlg.recordReadings = True -topSequence.MagFieldTestbedAlg.coordsAlongBeam = False -topSequence.MagFieldTestbedAlg.useDerivatives = True -topSequence.MagFieldTestbedAlg.onlyCheckSolenoid = False - -# uncomment to test differences with the file produced by -# MagFieldTestbedAlg_standalone.py -#topSequence.MagFieldTestbedAlg.ReferenceFile = 'NewMagField.root' -# (2.) configure the THistStream -from GaudiSvc.GaudiSvcConf import THistSvc -if not hasattr(ServiceMgr, 'THistSvc'): - ServiceMgr += THistSvc("THistSvc") - -ServiceMgr.THistSvc.Output = ["MagFieldTestbedAlg DATAFILE='NewMagField_IM.root' OPT='RECREATE'"] diff --git a/MuonSpectrometer/MuonValidation/MuonRecValidation/MuonRecRTT/test/test_Run3_symmetric_fullChain.sh b/MuonSpectrometer/MuonValidation/MuonRecValidation/MuonRecRTT/test/test_Run3_symmetric_fullChain.sh index aa72d1d5e54ba18e73e0af57c125b46e6d124abb..5e26e8ac90e57b935a2e824b5a0a6ee7766a49b3 100755 --- a/MuonSpectrometer/MuonValidation/MuonRecValidation/MuonRecRTT/test/test_Run3_symmetric_fullChain.sh +++ b/MuonSpectrometer/MuonValidation/MuonRecValidation/MuonRecRTT/test/test_Run3_symmetric_fullChain.sh @@ -21,9 +21,9 @@ # art-output: NSWRecoCheck.txt # art-output: diff_1_vs_serial.txt # art-output: diff_5_vs_1.txt -# art-output: log.RAWtoESD_serial -# art-output: log.RAWtoESD_1thread -# art-output: log.RAWtoESD_5thread +# art-output: log.RAWtoALL_serial +# art-output: log.RAWtoALL_1thread +# art-output: log.RAWtoALL_5thread # art-output: log.DCubeSim # art-output: log.DCubeDigits ##################################################################### @@ -160,13 +160,18 @@ then fi ##################################################################### +# Run each Reco_tf in a seperate directory + +mkdir Serial +cd Serial + ##################################################################### # now use the produced RDO file and run reconstruction # the postInclude adds a validation algorithm which writes out an ntuple for digit/RDO/PRD validation # (without the postInclude, a standard reconstruction job would run) # the postExec is needed to specify the correct (symmetric) MDT calibration setup matching the layout (ATLAS-R3S-2021-01-00-02) Reco_tf.py --CA True \ - --inputRDOFile OUT_RDO.root \ + --inputRDOFile ../OUT_RDO.root \ --autoConfiguration everything \ --imf False \ --geometryVersion "${geo_version}" \ @@ -185,7 +190,10 @@ NWARNING="$(cat log.RAWtoALL | grep WARNING | wc -l)" NERROR="$(cat log.RAWtoALL | grep ERROR | wc -l)" NFATAL="$(cat log.RAWtoALL | grep FATAL | wc -l)" echo "Found ${NWARNING} WARNING, ${NERROR} ERROR and ${NFATAL} FATAL messages in log.RAWtoALL" -mv log.RAWtoALL log.RAWtoESD_serial +cd .. +mv Serial/log.RAWtoALL log.RAWtoALL_serial +mv Serial/OUT_ESD.root ./ +mv Serial/NSWPRDValAlg.reco.ntuple.root ./ ##################################################################### # check the NSW validation ntuple python $Athena_DIR/bin/checkNSWValTree.py -i NSWPRDValAlg.reco.ntuple.root &> NSWRecoCheck.txt @@ -224,10 +232,13 @@ then fi ##################################################################### +mkdir 1thread +cd 1thread + ##################################################################### # now run reconstruction with AthenaMT with 1 thread Reco_tf.py --CA True \ - --inputRDOFile OUT_RDO.root \ + --inputRDOFile ../OUT_RDO.root \ --autoConfiguration everything \ --athenaopts="--threads=1" \ --geometryVersion "${geo_version}" \ @@ -240,13 +251,18 @@ if [ ${exit_code} -ne 0 ] then exit ${exit_code} fi -mv log.RAWtoALL log.RAWtoALL_1thread +cd .. +mv 1thread/log.RAWtoALL log.RAWtoALL_1thread +mv 1thread/OUT_ESD_1thread.root ./ ##################################################################### +mkdir 5thread +cd 5thread + ##################################################################### # now run reconstruction with AthenaMT with 5 threads Reco_tf.py --CA True \ - --inputRDOFile OUT_RDO.root \ + --inputRDOFile ../OUT_RDO.root \ --autoConfiguration everything \ --athenaopts="--threads=5" \ --geometryVersion "${geo_version}" \ @@ -259,7 +275,9 @@ if [ ${exit_code} -ne 0 ] then exit ${exit_code} fi -mv log.RAWtoALL log.RAWtoALL_5thread +cd .. +mv 5thread/log.RAWtoALL log.RAWtoALL_5thread +mv 5thread/OUT_ESD_5thread.root ./ ##################################################################### ##################################################################### diff --git a/MuonSpectrometer/MuonValidation/MuonRecValidation/MuonRecRTT/test/test_q442_RAWtoALL_MT.sh b/MuonSpectrometer/MuonValidation/MuonRecValidation/MuonRecRTT/test/test_q442_RAWtoALL_MT.sh index 890fbe91bcfadf1a752c30e5e7e9962157fed5f7..86f402b1d479d7df7a0e0ea9cbe3b174791fd697 100755 --- a/MuonSpectrometer/MuonValidation/MuonRecValidation/MuonRecRTT/test/test_q442_RAWtoALL_MT.sh +++ b/MuonSpectrometer/MuonValidation/MuonRecValidation/MuonRecRTT/test/test_q442_RAWtoALL_MT.sh @@ -20,6 +20,11 @@ # art-output: NSWPRDValAlg.reco.ntuple.root # art-output: NSWPRDValAlg.reco.dcube.root +# Run each Reco_tf in a seperate directory + +mkdir Serial +cd Serial + ##################################################################### Reco_tf.py \ --CA 'True' \ @@ -35,9 +40,15 @@ if [ ${exit_code} -ne 0 ] then exit ${exit_code} fi -mv log.RAWtoALL log.RAWtoALL_serial +cd .. +mv Serial/log.RAWtoALL log.RAWtoALL_serial +mv Serial/NSWPRDValAlg.reco.ntuple.root ./ +mv Serial/OUT_ESD.root ./ ##################################################################### +mkdir 1thread +cd 1thread + ##################################################################### # now run reconstruction with AthenaMT with 1 thread Reco_tf.py --CA 'all:True' 'RDOtoRDOTrigger:False' \ @@ -52,9 +63,14 @@ if [ ${exit_code} -ne 0 ] then exit ${exit_code} fi -mv log.RAWtoALL log.RAWtoALL_1thread +cd .. +mv 1thread/log.RAWtoALL log.RAWtoALL_1thread +mv 1thread/OUT_ESD_1thread.root ./ ##################################################################### +mkdir 5thread +cd 5thread + ##################################################################### # now run reconstruction with AthenaMT with 5 threads Reco_tf.py --CA 'all:True' 'RDOtoRDOTrigger:False' \ @@ -69,9 +85,14 @@ if [ ${exit_code} -ne 0 ] then exit ${exit_code} fi -mv log.RAWtoALL log.RAWtoALL_5thread +cd .. +mv 5thread/log.RAWtoALL log.RAWtoALL_5thread +mv 5thread/OUT_ESD_5thread.root ./ ##################################################################### +mkdir 8thread +cd 8thread + ##################################################################### # now run reconstruction with AthenaMT with 8 threads Reco_tf.py --CA 'all:True' 'RDOtoRDOTrigger:False' \ @@ -86,7 +107,9 @@ if [ ${exit_code} -ne 0 ] then exit ${exit_code} fi -mv log.RAWtoALL log.RAWtoALL_8thread +cd .. +mv 8thread/log.RAWtoALL log.RAWtoALL_8thread +mv 8thread/OUT_ESD_8thread.root ./ ##################################################################### ##################################################################### diff --git a/MuonSpectrometer/MuonValidation/MuonRecValidation/MuonRecRTT/test/test_q443_RAWtoALL_MT.sh b/MuonSpectrometer/MuonValidation/MuonRecValidation/MuonRecRTT/test/test_q443_RAWtoALL_MT.sh index fb45a6213c769e97746ceed316c14b75c1d5c095..7728d3ffe467b3c600669106ef483cd4de36db6d 100755 --- a/MuonSpectrometer/MuonValidation/MuonRecValidation/MuonRecRTT/test/test_q443_RAWtoALL_MT.sh +++ b/MuonSpectrometer/MuonValidation/MuonRecValidation/MuonRecRTT/test/test_q443_RAWtoALL_MT.sh @@ -28,6 +28,11 @@ # art-output: NSWPRDValAlg.reco.ntuple.root # art-output: NSWPRDValAlg.reco.dcube.root +# Run each Reco_tf in a seperate directory + +mkdir Serial +cd Serial + ##################################################################### Reco_tf.py --CA 'all:True' 'RDOtoRDOTrigger:False' \ --AMI q443 \ @@ -41,12 +46,17 @@ if [ ${exit_code} -ne 0 ] then exit ${exit_code} fi -mv log.HITtoRDO log.HITtoRDO_serial -mv log.RDOtoRDOTrigger log.RDOtoRDOTrigger_serial -mv log.RAWtoALL log.RAWtoALL_serial +cd .. +mv Serial/log.HITtoRDO log.HITtoRDO_serial +mv Serial/log.RDOtoRDOTrigger log.RDOtoRDOTrigger_serial +mv Serial/log.RAWtoALL log.RAWtoALL_serial +mv Serial/OUT_ESD.root ./ +mv Serial/NSWPRDValAlg.reco.ntuple.root ./ ##################################################################### export ATHENA_CORE_NUMBER=1 +mkdir 1thread +cd 1thread ##################################################################### # now run reconstruction with AthenaMT with 1 thread @@ -62,12 +72,16 @@ if [ ${exit_code} -ne 0 ] then exit ${exit_code} fi -mv log.HITtoRDO log.HITtoRDO_1thread -mv log.RDOtoRDOTrigger log.RDOtoRDOTrigger_1thread -mv log.RAWtoALL log.RAWtoALL_1thread +cd .. +mv 1thread/log.HITtoRDO log.HITtoRDO_1thread +mv 1thread/log.RDOtoRDOTrigger log.RDOtoRDOTrigger_1thread +mv 1thread/log.RAWtoALL log.RAWtoALL_1thread +mv 1thread/OUT_ESD_1thread.root ./ ##################################################################### export ATHENA_CORE_NUMBER=5 +mkdir 5thread +cd 5thread ##################################################################### # now run reconstruction with AthenaMT with 5 threads @@ -83,12 +97,16 @@ if [ ${exit_code} -ne 0 ] then exit ${exit_code} fi -mv log.HITtoRDO log.HITtoRDO_5thread -mv log.RDOtoRDOTrigger log.RDOtoRDOTrigger_5thread -mv log.RAWtoALL log.RAWtoALL_5thread +cd .. +mv 5thread/log.HITtoRDO log.HITtoRDO_5thread +mv 5thread/log.RDOtoRDOTrigger log.RDOtoRDOTrigger_5thread +mv 5thread/log.RAWtoALL log.RAWtoALL_5thread +mv 5thread/OUT_ESD_5thread.root ./ ##################################################################### export ATHENA_CORE_NUMBER=8 +mkdir 8thread +cd 8thread ##################################################################### # now run reconstruction with AthenaMT with 8 threads @@ -104,9 +122,11 @@ if [ ${exit_code} -ne 0 ] then exit ${exit_code} fi -mv log.HITtoRDO log.HITtoRDO_8thread -mv log.RDOtoRDOTrigger log.RDOtoRDOTrigger_8thread -mv log.RAWtoALL log.RAWtoALL_8thread +cd .. +mv 8thread/log.HITtoRDO log.HITtoRDO_8thread +mv 8thread/log.RDOtoRDOTrigger log.RDOtoRDOTrigger_8thread +mv 8thread/log.RAWtoALL log.RAWtoALL_8thread +mv 8thread/OUT_ESD_8thread.root ./ ##################################################################### ##################################################################### diff --git a/MuonSpectrometer/MuonValidation/MuonRecValidation/MuonRecRTT/test/test_q445_RAWtoALL_MT.sh b/MuonSpectrometer/MuonValidation/MuonRecValidation/MuonRecRTT/test/test_q445_RAWtoALL_MT.sh index ec26d7227fdde2d7f2590c753950a569aa7767a3..18693b36863a5a235459edf1aec236a31aacb76b 100755 --- a/MuonSpectrometer/MuonValidation/MuonRecValidation/MuonRecRTT/test/test_q445_RAWtoALL_MT.sh +++ b/MuonSpectrometer/MuonValidation/MuonRecValidation/MuonRecRTT/test/test_q445_RAWtoALL_MT.sh @@ -22,10 +22,14 @@ # art-output: log.RDOtoRDOTrigger_8thread # art-output: NSWPRDValAlg.reco.ntuple.root +# Run each Reco_tf in a seperate directory + export ATHENA_CORE_NUMBER=1 +mdkir 1thread +cd 1thread ##################################################################### -# Run reconstruction with AthenaMT with 1 thread +# now run reconstruction with AthenaMT with 1 thread Reco_tf.py --CA 'all:True' \ --AMI q445 \ --postInclude "RAWtoALL:MuonPRDTest.NSWPRDValAlgReco.NSWPRDValAlgRecoCfg" \ @@ -37,12 +41,17 @@ if [ ${exit_code} -ne 0 ] then exit ${exit_code} fi -mv log.HITtoRDO log.HITtoRDO_1thread -mv log.RDOtoRDOTrigger log.RDOtoRDOTrigger_1thread -mv log.RAWtoALL log.RAWtoALL_1thread +cd .. +mv 1thread/log.HITtoRDO log.HITtoRDO_1thread +mv 1thread/log.RDOtoRDOTrigger log.RDOtoRDOTrigger_1thread +mv 1thread/log.RAWtoALL log.RAWtoALL_1thread +mv 1thread/NSWPRDValAlg.reco.ntuple.root ./ +mv 1thread/OUT_ESD_1thread.root ./ ##################################################################### export ATHENA_CORE_NUMBER=5 +mkdir 5thread +cd 5thread ##################################################################### # now run reconstruction with AthenaMT with 5 threads @@ -56,12 +65,16 @@ if [ ${exit_code} -ne 0 ] then exit ${exit_code} fi -mv log.HITtoRDO log.HITtoRDO_5thread -mv log.RDOtoRDOTrigger log.RDOtoRDOTrigger_5thread -mv log.RAWtoALL log.RAWtoALL_5thread +cd .. +mv 5thread/log.HITtoRDO log.HITtoRDO_5thread +mv 5thread/log.RDOtoRDOTrigger log.RDOtoRDOTrigger_5thread +mv 5thread/log.RAWtoALL log.RAWtoALL_5thread +mv 5thread/OUT_ESD_5thread.root ./ ##################################################################### export ATHENA_CORE_NUMBER=8 +mkdir 8thread +cd 8thread ##################################################################### # now run reconstruction with AthenaMT with 8 threads @@ -75,9 +88,11 @@ if [ ${exit_code} -ne 0 ] then exit ${exit_code} fi -mv log.HITtoRDO log.HITtoRDO_8thread -mv log.RDOtoRDOTrigger log.RDOtoRDOTrigger_8thread -mv log.RAWtoALL log.RAWtoALL_8thread +cd .. +mv 8thread/log.HITtoRDO log.HITtoRDO_8thread +mv 8thread/log.RDOtoRDOTrigger log.RDOtoRDOTrigger_8thread +mv 8thread/log.RAWtoALL log.RAWtoALL_8thread +mv 8thread/OUT_ESD_8thread.root ./ ##################################################################### ##################################################################### diff --git a/MuonSpectrometer/MuonValidation/MuonRecValidation/MuonRecRTT/test/test_q449_RAWtoALL_MT.sh b/MuonSpectrometer/MuonValidation/MuonRecValidation/MuonRecRTT/test/test_q449_RAWtoALL_MT.sh index f9f0dc1b3d50f6dd8873a0a3a48b06d3354f0183..73cbf1cce8fcfb940bca4c647f7004dfcdcb7d65 100755 --- a/MuonSpectrometer/MuonValidation/MuonRecValidation/MuonRecRTT/test/test_q449_RAWtoALL_MT.sh +++ b/MuonSpectrometer/MuonValidation/MuonRecValidation/MuonRecRTT/test/test_q449_RAWtoALL_MT.sh @@ -20,6 +20,11 @@ # art-output: NSWPRDValAlg.reco.ntuple.root # art-output: NSWPRDValAlg.reco.dcube.root +# Run each Reco_tf in a seperate directory + +mkdir Serial +cd Serial + ##################################################################### Reco_tf.py --CA True \ --AMI q449 \ @@ -33,9 +38,15 @@ if [ ${exit_code} -ne 0 ] then exit ${exit_code} fi -mv log.RAWtoALL log.RAWtoALL_serial +cd .. +mv Serial/log.RAWtoALL log.RAWtoALL_serial +mv Serial/OUT_ESD.root ./ +mv Serial/NSWPRDValAlg.reco.ntuple.root ./ ##################################################################### +mkdir 1thread +cd 1thread + ##################################################################### # now run reconstruction with AthenaMT with 1 thread Reco_tf.py --CA True \ @@ -49,9 +60,14 @@ if [ ${exit_code} -ne 0 ] then exit ${exit_code} fi -mv log.RAWtoALL log.RAWtoALL_1thread +cd .. +mv 1thread/log.RAWtoALL log.RAWtoALL_1thread +mv 1thread/OUT_ESD_1thread.root ./ ##################################################################### +mkdir 5thread +cd 5thread + ##################################################################### # now run reconstruction with AthenaMT with 5 threads Reco_tf.py --CA True \ @@ -65,9 +81,14 @@ if [ ${exit_code} -ne 0 ] then exit ${exit_code} fi -mv log.RAWtoALL log.RAWtoALL_5thread +cd .. +mv 5thread/log.RAWtoALL log.RAWtoALL_5thread +mv 5thread/OUT_ESD_5thread.root ./ ##################################################################### +mkdir 8thread +cd 8thread + ##################################################################### # now run reconstruction with AthenaMT with 8 threads Reco_tf.py --CA True \ @@ -81,7 +102,9 @@ if [ ${exit_code} -ne 0 ] then exit ${exit_code} fi -mv log.RAWtoALL log.RAWtoALL_8thread +cd .. +mv 8thread/log.RAWtoALL log.RAWtoALL_8thread +mv 8thread/OUT_ESD_8thread.root ./ ##################################################################### ##################################################################### diff --git a/PhysicsAnalysis/DerivationFramework/DerivationFrameworkConfiguration/python/DerivationSkeleton.py b/PhysicsAnalysis/DerivationFramework/DerivationFrameworkConfiguration/python/DerivationSkeleton.py index cd2ae73cac94b818e3baaa92e0037e3b7b1337e0..8f95a34d332d9852d661491826039b3b399b7be3 100644 --- a/PhysicsAnalysis/DerivationFramework/DerivationFrameworkConfiguration/python/DerivationSkeleton.py +++ b/PhysicsAnalysis/DerivationFramework/DerivationFrameworkConfiguration/python/DerivationSkeleton.py @@ -1,4 +1,4 @@ -# Copyright (C) 2002-2023 CERN for the benefit of the ATLAS collaboration +# Copyright (C) 2002-2024 CERN for the benefit of the ATLAS collaboration import sys @@ -8,10 +8,6 @@ from DerivationFrameworkConfiguration import DerivationConfigList from PyJobTransforms.CommonRunArgsToFlags import commonRunArgsToFlags from PyJobTransforms.TransformUtils import processPreExec, processPreInclude, processPostExec, processPostInclude -# temporarily force no global config flags -from AthenaConfiguration import AllConfigFlags -del AllConfigFlags.ConfigFlags - # force no legacy job properties from AthenaCommon import JobProperties JobProperties.jobPropertiesDisallowed = True diff --git a/PhysicsAnalysis/DerivationFramework/DerivationFrameworkConfiguration/python/PhysicsValidationSkeleton.py b/PhysicsAnalysis/DerivationFramework/DerivationFrameworkConfiguration/python/PhysicsValidationSkeleton.py index 4b4bb3559bb905248ff4ea4702a4c5dc6e8b2951..81de7ad2f221b3731b1ab655936e0c0ba3fb72e2 100644 --- a/PhysicsAnalysis/DerivationFramework/DerivationFrameworkConfiguration/python/PhysicsValidationSkeleton.py +++ b/PhysicsAnalysis/DerivationFramework/DerivationFrameworkConfiguration/python/PhysicsValidationSkeleton.py @@ -1,4 +1,4 @@ -# Copyright (C) 2002-2022 CERN for the benefit of the ATLAS collaboration +# Copyright (C) 2002-2024 CERN for the benefit of the ATLAS collaboration import sys @@ -6,10 +6,6 @@ from PyJobTransforms.CommonRunArgsToFlags import commonRunArgsToFlags from PyJobTransforms.TransformUtils import processPreExec, processPreInclude, processPostExec, processPostInclude from AthenaPoolCnvSvc.PoolReadConfig import PoolReadCfg -# temporarily force no global config flags -from AthenaConfiguration import AllConfigFlags -del AllConfigFlags.ConfigFlags - # force no legacy job properties from AthenaCommon import JobProperties JobProperties.jobPropertiesDisallowed = True diff --git a/PhysicsAnalysis/JetTagging/JetTagAlgs/BTagging/CMakeLists.txt b/PhysicsAnalysis/JetTagging/JetTagAlgs/BTagging/CMakeLists.txt index 044d6b80815fedc56883836e74a37385b70279c9..6ffe683cee772d9a703259a5c7dea1e6d6a57d4c 100644 --- a/PhysicsAnalysis/JetTagging/JetTagAlgs/BTagging/CMakeLists.txt +++ b/PhysicsAnalysis/JetTagging/JetTagAlgs/BTagging/CMakeLists.txt @@ -1,4 +1,4 @@ -# Copyright (C) 2002-2022 CERN for the benefit of the ATLAS collaboration +# Copyright (C) 2002-2024 CERN for the benefit of the ATLAS collaboration # Declare the package name: atlas_subdir( BTagging ) @@ -21,5 +21,4 @@ atlas_add_component( BTagging # Install files from the package: atlas_install_python_modules( python/*.py POST_BUILD_CMD ${ATLAS_FLAKE8} ) -atlas_install_joboptions( share/*.py ) diff --git a/PhysicsAnalysis/JetTagging/JetTagAlgs/BTagging/share/BTagCalibBroker_AODFix_jobOptions.py b/PhysicsAnalysis/JetTagging/JetTagAlgs/BTagging/share/BTagCalibBroker_AODFix_jobOptions.py deleted file mode 100644 index e00dabb3405da561e59ee3898fc65dbfeb5151c1..0000000000000000000000000000000000000000 --- a/PhysicsAnalysis/JetTagging/JetTagAlgs/BTagging/share/BTagCalibBroker_AODFix_jobOptions.py +++ /dev/null @@ -1,9 +0,0 @@ -# -- for calibration from COOL -from BTagging.BTaggingFlags import BTaggingFlags -include("JetTagCalibration/BTagCalibrationBroker_AODFix_jobOptions.py") -BTagCalibrationBrokerTool_AODFix.folders[:] = [] # Wipe folders; these will be dynamically filled by the configuration code -from BTagging.BTaggingConfiguration import getConfiguration -ConfInst = getConfiguration("AODFix") -ConfInst.registerTool("BTagCalibrationBrokerTool", BTagCalibrationBrokerTool_AODFix) - -# NOTE: The reason for this file is that we want to be able to set up a default configuration when requested by a Python function. However for some reason if we include JetTagCalibration/BTagCalibrationBroker_jobOptions.py at that location then the BTagCalibrationBrokerTool name will not be accessible afterwards, and we need to be able to register it. This file is included from BTaggingConfiguration_LoadTools.py. diff --git a/PhysicsAnalysis/JetTagging/JetTagAlgs/BTagging/share/BTagCalibBroker_Trig_jobOptions.py b/PhysicsAnalysis/JetTagging/JetTagAlgs/BTagging/share/BTagCalibBroker_Trig_jobOptions.py deleted file mode 100644 index 7e7c5440c0ce2bccb3273eb52eb50e36d31e2ea2..0000000000000000000000000000000000000000 --- a/PhysicsAnalysis/JetTagging/JetTagAlgs/BTagging/share/BTagCalibBroker_Trig_jobOptions.py +++ /dev/null @@ -1,9 +0,0 @@ -# -- for calibration from COOL -from BTagging.BTaggingFlags import BTaggingFlags -include("JetTagCalibration/BTagCalibrationBroker_Trig_jobOptions.py") -BTagCalibrationBrokerTool_Trig.taggers[:] = [] # Wipe taggers; these will be dynamically filled by the configuration code -from BTagging.BTaggingConfiguration import getConfiguration -ConfInst = getConfiguration("Trig") -ConfInst.registerTool("BTagCalibrationBrokerTool", BTagCalibrationBrokerTool_Trig) - -# NOTE: The reason for this file is that we want to be able to set up a default configuration when requested by a Python function. However for some reason if we include JetTagCalibration/BTagCalibrationBroker_jobOptions.py at that location then the BTagCalibrationBrokerTool name will not be accessible afterwards, and we need to be able to register it. This file is included from BTaggingConfiguration_LoadTools.py. diff --git a/PhysicsAnalysis/JetTagging/JetTagAlgs/BTagging/share/BTagCalibBroker_jobOptions.py b/PhysicsAnalysis/JetTagging/JetTagAlgs/BTagging/share/BTagCalibBroker_jobOptions.py deleted file mode 100644 index d229fe35201873240e1717f69358800feb92da46..0000000000000000000000000000000000000000 --- a/PhysicsAnalysis/JetTagging/JetTagAlgs/BTagging/share/BTagCalibBroker_jobOptions.py +++ /dev/null @@ -1,9 +0,0 @@ -# -- for calibration from COOL -from BTagging.BTaggingFlags import BTaggingFlags -include("JetTagCalibration/BTagCalibrationBroker_jobOptions.py") -BTagCalibrationBrokerTool.taggers[:] = [] # Wipe folders; these will be dynamically filled by the configuration code -from BTagging.BTaggingConfiguration import getConfiguration -ConfInst = getConfiguration() -ConfInst.registerTool("BTagCalibrationBrokerTool", BTagCalibrationBrokerTool) - -# NOTE: The reason for this file is that we want to be able to set up a default configuration when requested by a Python function. However for some reason if we include JetTagCalibration/BTagCalibrationBroker_jobOptions.py at that location then the BTagCalibrationBrokerTool name will not be accessible afterwards, and we need to be able to register it. This file is included from BTaggingConfiguration_LoadTools.py. diff --git a/PhysicsAnalysis/JetTagging/JetTagAlgs/BTagging/share/BTaggingReconstructionOutputAODList_jobOptions.py b/PhysicsAnalysis/JetTagging/JetTagAlgs/BTagging/share/BTaggingReconstructionOutputAODList_jobOptions.py deleted file mode 100644 index 44c9833cfcefeab18c4640d13167c0e3393f063f..0000000000000000000000000000000000000000 --- a/PhysicsAnalysis/JetTagging/JetTagAlgs/BTagging/share/BTaggingReconstructionOutputAODList_jobOptions.py +++ /dev/null @@ -1,16 +0,0 @@ -include.block('BTagging/BTaggingReconstructionOutputAODList_jobOptions.py') -#************** AOD list ************************************************ -from BTagging.BTagConfig import registerContainer - -printfunc ("List of containers") -JetCollectionList = ['AntiKt4LCTopo', 'AntiKt4EMTopo', 'AntiKt4Track', 'AntiKt4EMPFlow', 'AntiKt2Track', 'AntiKt4HI'] -from JetRec.JetRecFlags import jetFlags -BTaggingAODList = [] -BTaggingESDList = [] -for coll in JetCollectionList: - if jetFlags.writeJetsToAOD(): - registerContainer(coll, BTaggingAODList) - registerContainer(coll, BTaggingESDList) - -printfunc ("#BTAG# ESD output container list: " + str(BTaggingESDList)) -printfunc ("#BTAG# AOD output container list: " + str(BTaggingAODList)) diff --git a/PhysicsAnalysis/JetTagging/JetTagAlgs/BTagging/share/BTaggingReconstructionOutputESDList_jobOptions.py b/PhysicsAnalysis/JetTagging/JetTagAlgs/BTagging/share/BTaggingReconstructionOutputESDList_jobOptions.py deleted file mode 100644 index 00257e8cb63b95c2abcd5ed0765524b0c5e45783..0000000000000000000000000000000000000000 --- a/PhysicsAnalysis/JetTagging/JetTagAlgs/BTagging/share/BTaggingReconstructionOutputESDList_jobOptions.py +++ /dev/null @@ -1,7 +0,0 @@ -#************** ESD list ************************************************ - -from BTagging.BTaggingFlags import BTaggingFlags -BTaggingESDList = BTaggingFlags.btaggingESDList - -#BTaggingESDList += ["xAOD::BTaggingAuxContainer_v1#*"] -#BTaggingESDList += ["xAOD::BTaggingContainer_v1#*"] diff --git a/PhysicsAnalysis/JetTagging/JetTagAlgs/BTagging/share/BTagging_jobOptions.py b/PhysicsAnalysis/JetTagging/JetTagAlgs/BTagging/share/BTagging_jobOptions.py deleted file mode 100755 index 3df227cf2c78438ac516b0733573a2691f39c789..0000000000000000000000000000000000000000 --- a/PhysicsAnalysis/JetTagging/JetTagAlgs/BTagging/share/BTagging_jobOptions.py +++ /dev/null @@ -1,75 +0,0 @@ -######################################## -# BTagging_jobOptions.py -# author: andreas.wildauer@cern.ch -# devivie@lal.in2p3.fr -# vacavant@in2p3.fr -# -# Main jobO for b-tagging: -# - load all the necessary tools -# - configure the b-tagging algorithms -######################################## - -# <================= IMPORTANT ==============================================> - # !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! - # NOTE: The inclusion of the LoadTools is no longer needed with the - # new configuration; the default configuration is automatically set up - # for any unconfigured jet collection where which setupJetBTaggerTool - # is called. In fact the only thing the LoadTools does now is just call - # this default setup on all jet collections in BTaggingFlags.Jets. - # - # If you need to modify the default setup permanently can modify - # BTaggingConfiguration_LoadTools.py in the ./python/ directory. - # - # If you want different settings not obtainable via the BTaggingFlags, - # you need to use the new configuration scheme before any call to - # setupJetBTaggerTools is made for the jet collection in question. - # You can start by calling BTaggingConfiguration_LoadTools.py's - # Initiate() function. - # !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -# <================= IMPORTANT ==============================================> - -# <================= IMPORTANT ==============================================> - # !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! - # NOTE: Consider adding some of the stuff found here to the Initiate() - # function in BTaggingConfiguration_LoadTools.py. The code there is - # run exactly once; if B-tagging is enabled. - # - # DOING SO WILL MAKE THE CODE COMPATIBLE WITH A FUTURE CHANGE IN JETREC - # WHERE THEY WILL RETRIEVE OUR BTAGGING FUNCTION IF REQUESTED BY A USER. - # !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -# <================= IMPORTANT ==============================================> - -import re - -if not BTaggingFlags.DoNotSetupBTagging: # Temporary measure so the JetRec people can test setting this all up from their side. - # - # ========== Load and configure everything - # - - from BTagging.BTaggingConfiguration import getConfiguration - ConfInstance = getConfiguration() - - if ConfInstance.checkFlagsUsingBTaggingFlags(): - - #Jet collections - #JetCollectionList = ['AntiKt4LCTopoJets', 'AntiKt4EMTopoJets', 'AntiKt4TrackJets', 'AntiKt4EMPFlowJets', 'AntiKt2TrackJets'] - JetCollectionList = ['AntiKt4EMTopoJets'] - - BTaggingFlags.Jets = [ name[:-4] for name in JetCollectionList] - - from AthenaCommon.AlgSequence import AlgSequence - topSequence = AlgSequence() - - for i, jet in enumerate(JetCollectionList): - btagger = ConfInstance.setupJetBTaggerAlg(ToolSvc, jet) #The [:-4] is not needed here; this function automatically removes trailing 'jets' or 'Jets'. - if btagger is None: - continue - topSequence += btagger - #jet = jet.replace("Track", "PV0Track") - #jetname = getattr(jtm, jet) - #jetname.unlock() - #jetname.JetModifiers += [ btagger ] - #jetname.lock() - if BTaggingFlags.OutputLevel < 3: - printfunc (ConfInstance.getJetCollectionTool(jet[:-4])) - diff --git a/PhysicsAnalysis/JetTagging/JetTagMonitoring/CMakeLists.txt b/PhysicsAnalysis/JetTagging/JetTagMonitoring/CMakeLists.txt index d3859aa5f0da4ecbba6b07902bd9a6e3110adee5..d79b00d2f7158c18bc6565b2639870e505d4c158 100644 --- a/PhysicsAnalysis/JetTagging/JetTagMonitoring/CMakeLists.txt +++ b/PhysicsAnalysis/JetTagging/JetTagMonitoring/CMakeLists.txt @@ -1,4 +1,4 @@ -# Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration +# Copyright (C) 2002-2024 CERN for the benefit of the ATLAS collaboration # Declare the package name: atlas_subdir( JetTagMonitoring ) @@ -15,5 +15,3 @@ atlas_add_component( JetTagMonitoring # Install files from the package: atlas_install_python_modules( python/*.py POST_BUILD_CMD ${ATLAS_FLAKE8} ) -atlas_install_joboptions( share/*.py ) - diff --git a/PhysicsAnalysis/JetTagging/JetTagMonitoring/share/JetTagMonitoring_jobOptions.py b/PhysicsAnalysis/JetTagging/JetTagMonitoring/share/JetTagMonitoring_jobOptions.py deleted file mode 100644 index a8073ffb96345e9257be0cc5c69b8099bce4770a..0000000000000000000000000000000000000000 --- a/PhysicsAnalysis/JetTagging/JetTagMonitoring/share/JetTagMonitoring_jobOptions.py +++ /dev/null @@ -1,91 +0,0 @@ - -monManJetTag = AthenaMonManager(name="JetTagMonManager", - FileKey = DQMonFlags.monManFileKey(), - Environment = DQMonFlags.monManEnvironment(), - ManualDataTypeSetup = DQMonFlags.monManManualDataTypeSetup(), - DataType = DQMonFlags.monManDataType()) - -from TrackToVertex.TrackToVertexConf import Reco__TrackToVertex as toolBTagTrackToVertexTool -trackToVertexTool = toolBTagTrackToVertexTool('BTagTrackToVertexTool') -options = {} -options.setdefault('trackToVertexTool', trackToVertexTool) -options.setdefault('name', "Analysis::TrackSelector") -options.setdefault('nHitBLayer', 0) -from JetTagTools.JetTagToolsConf import Analysis__TrackSelector -trackSelectorTool = Analysis__TrackSelector (**options) -ToolSvc += trackSelectorTool -#trackSelectorTool.OutputLevel = VERBOSE - -from JetTagMonitoring.JetTagMonitoringConf import JetTagMonitoring -jetTagMonTool = JetTagMonitoring ( - name = "jetTagMonTool", - ) -# remove events with non-collision BCIDs from your monitoring tools -# see https://indico.cern.ch/getFile.py/access?contribId=1&resId=1&materialId=slides&confId=135968 -from AthenaMonitoring.FilledBunchFilterTool import GetFilledBunchFilterTool -jetTagMonTool.FilterTools += [ GetFilledBunchFilterTool() ] - -# remove events with intolerable LAr defects -from AthenaMonitoring.BadLBFilterTool import GetLArBadLBFilterTool -jetTagMonTool.FilterTools += [ GetLArBadLBFilterTool() ] - -# remove events with atlas not ready for physics -from AthenaMonitoring.AtlasReadyFilterTool import GetAtlasReadyFilterTool -jetTagMonTool.FilterTools += [ GetAtlasReadyFilterTool() ] - -jetTagMonTool.OutputLevel = INFO -jetTagMonTool.JetContainer = "AntiKt4EMTopoJets" -jetTagMonTool.TrackParticleContainer = "InDetTrackParticles" -jetTagMonTool.PrimaryVertexContainer = "PrimaryVertices" -jetTagMonTool.ElectronContainer = "Electrons" -jetTagMonTool.MuonContainer = "Muons" - -jetTagMonTool.DQcuts = True -jetTagMonTool.PriVtxTrkMinCut = 4 -jetTagMonTool.D0_min_cuts = 0 -jetTagMonTool.D0_max_cuts = 1 -jetTagMonTool.JetPt_cuts = 15 -jetTagMonTool.JetEta_cuts = 2.5 -jetTagMonTool.nTrk_cuts = 1 - -jetTagMonTool.MV_algorithmName = "MV2c10" - -# taken from webpage (https://twiki.cern.ch/twiki/bin/view/AtlasProtected/BTaggingBenchmarksRelease20) 14 june 2017 -jetTagMonTool.SV1IP3D_weight_cut = 0.0 -jetTagMonTool.MV_60_cut = 0.934906 -jetTagMonTool.MV_70_cut = 0.8244273 -jetTagMonTool.MV_77_cut = 0.645925 -jetTagMonTool.MV_85_cut = 0.1758475 - -if not rec.doInDet: - jetTagMonTool.UseTrackSelector = False -else: - jetTagMonTool.UseTrackSelector = True - -# Setting up the trigger decision tool -# for trigger-aware monitoring - -jetTagMonTool.UseTrigDecisionTool = True # added by SARA -if DQMonFlags.useTrigger() and hasattr(ToolSvc, DQMonFlags.nameTrigDecTool()): - printfunc ("jetTagMonTool will use TrigDecisionTool instance: %s" % DQMonFlags.nameTrigDecTool()) -# jetTagMonTool.TrigDecisionTool = getattr(ToolSvc, DQMonFlags.nameTrigDecTool()) - jetTagMonTool.UseTrigDecisionTool = True -else: - printfunc ("WARNING!!! jetTagMonTool will NOT use TrigDecisionTool.") - jetTagMonTool.UseTrigDecisionTool = False - -if (rec.triggerStream()=='express'): # added by SARA # don't require trigger if running on express stream - jetTagMonTool.UseTrigDecisionTool = False # added by SARA - -jetTagMonTool.ElectronTrigger_2016 = "HLT_e26_lhtight_nod0_ivarloose"; # added by SARA -jetTagMonTool.MuonTrigger_2016 = "HLT_mu26_ivarmedium"; # added by SARA -jetTagMonTool.JetTrigger_2016 = "HLT_j15"; # added by SARA -jetTagMonTool.ElectronTrigger_2017 = "HLT_e28_lhtight_nod0_ivarloose"; # added by SARA -jetTagMonTool.MuonTrigger_2017 = "HLT_mu26_ivarmedium"; # added by SARA -jetTagMonTool.JetTrigger_2017 = "HLT_j15"; # added by SARA -jetTagMonTool.ElectronTrigger_201X = "HLT_e[2-9][0-9]_.*"; # electrons 20-99 GeV -jetTagMonTool.MuonTrigger_201X = "HLT_mu.*"; # muons *all* GeV - -#ToolSvc += jetTagMonTool -monManJetTag.AthenaMonTools += [ jetTagMonTool ] -topSequence += monManJetTag diff --git a/PhysicsAnalysis/PhysicsValidation/PhysValMonitoring/CMakeLists.txt b/PhysicsAnalysis/PhysicsValidation/PhysValMonitoring/CMakeLists.txt index 12ecd5a07dcb127252a00379186734622ae4b6ef..4933e6bd11a0bee4efc20c18fc38d73c8f2f7f17 100644 --- a/PhysicsAnalysis/PhysicsValidation/PhysValMonitoring/CMakeLists.txt +++ b/PhysicsAnalysis/PhysicsValidation/PhysValMonitoring/CMakeLists.txt @@ -15,6 +15,5 @@ atlas_add_component( PhysValMonitoring LINK_LIBRARIES ${ROOT_LIBRARIES} ${CLHEP_LIBRARIES} GaudiKernel AthenaBaseComps AthenaMonitoringLib xAODBTagging xAODBase xAODEgamma xAODEventInfo xAODJet xAODMissingET xAODMuon xAODTau xAODTracking RecEvent TrkValHistUtils ) # Install files from the package: -atlas_install_joboptions( share/*.py ) atlas_install_python_modules( python/*.py POST_BUILD_CMD ${ATLAS_FLAKE8} ) atlas_install_runtime( scripts/*.py POST_BUILD_CMD ${ATLAS_FLAKE8} ) diff --git a/PhysicsAnalysis/PhysicsValidation/PhysValMonitoring/share/PhysValBtag_jobOptions.py b/PhysicsAnalysis/PhysicsValidation/PhysValMonitoring/share/PhysValBtag_jobOptions.py deleted file mode 100644 index 53f6c5dd3f120fefb317fc99a3f2c0330e12d702..0000000000000000000000000000000000000000 --- a/PhysicsAnalysis/PhysicsValidation/PhysValMonitoring/share/PhysValBtag_jobOptions.py +++ /dev/null @@ -1,24 +0,0 @@ -from PhysValMonitoring.PhysValUtils import getHistogramDefinitions -import os -from RecExConfig.RecFlags import rec as recFlags -import ROOT - -from JetTagDQA.JetTagDQAConf import JetTagDQA__PhysValBTag -tool1 = JetTagDQA__PhysValBTag() -tool1.EnableLumi = False -tool1.OutputLevel = WARNING -tool1.DetailLevel = 10 -tool1.isData = not recFlags.doTruth() -tool1.JetPtCutTtbar = 20000 -tool1.JetPtCutZprime = 500000 -tool1.JVTCutAntiKt4EMTopoJets = 0.59 -tool1.JVTCutLargerEtaAntiKt4EMTopoJets = 0.11 -tool1.JVTCutAntiKt4EMPFlowJets = 0.2 -tool1.truthMatchProbabilityCut = 0.75 - -path = ROOT.PathResolver.find_file( 'JetTagDQA/PhysValBtag_VariablesMenu.json', 'DATAPATH' ) -path_Run = ROOT.PathResolver.find_file( 'JetTagDQA/PhysValBtag_VariablesMenu_Run3.json', 'DATAPATH' ) -tool1.HistogramDefinitions = getHistogramDefinitions(path, 'PHYSVAL', 'ALL') + getHistogramDefinitions(path_Run, 'PHYSVAL', 'ALL') - -monMan = CfgMgr.AthenaMonManager("PhysValMonManager") -monMan.AthenaMonTools += [ tool1 ] diff --git a/PhysicsAnalysis/PhysicsValidation/PhysValMonitoring/share/PhysValEgamma_jobOptions.py b/PhysicsAnalysis/PhysicsValidation/PhysValMonitoring/share/PhysValEgamma_jobOptions.py deleted file mode 100644 index 82e7becaf9ef1a8cc01a69d5ba01f3675b8a4634..0000000000000000000000000000000000000000 --- a/PhysicsAnalysis/PhysicsValidation/PhysValMonitoring/share/PhysValEgamma_jobOptions.py +++ /dev/null @@ -1,18 +0,0 @@ -from EgammaPhysValMonitoring.EgammaPhysValMonitoringConf import EgammaPhysValMonitoring__EgammaPhysValMonitoringTool -tool1 = EgammaPhysValMonitoring__EgammaPhysValMonitoringTool() -tool1.EnableLumi = False -tool1.OutputLevel = WARNING -tool1.DetailLevel = 10 - -tool1.PhotonContainerName = "Photons" -tool1.ElectronContainerName = "Electrons" -tool1.ElectronContainerFrwdName = "ForwardElectrons" -tool1.TruthParticleContainerName = "TruthParticles" -tool1.LRTElectronContainerName = "LRTElectrons" - -tool1.isMC = rec.doTruth() -from MCTruthClassifier.MCTruthClassifierBase import MCTruthClassifierCalo -tool1.MCTruthClassifier = MCTruthClassifierCalo - -monMan = CfgMgr.AthenaMonManager("PhysValMonManager") -monMan.AthenaMonTools += [ tool1 ] diff --git a/PhysicsAnalysis/PhysicsValidation/PhysValMonitoring/share/PhysValExample_jobOptions.py b/PhysicsAnalysis/PhysicsValidation/PhysValMonitoring/share/PhysValExample_jobOptions.py deleted file mode 100644 index a3d990ae1177bc3c3e1e7deae0ec7f38abcb6f7a..0000000000000000000000000000000000000000 --- a/PhysicsAnalysis/PhysicsValidation/PhysValMonitoring/share/PhysValExample_jobOptions.py +++ /dev/null @@ -1,21 +0,0 @@ -from PhysValMonitoring.PhysValMonitoringConf import PhysVal__PhysValExample -tool1 = PhysVal__PhysValExample() -tool1.EnableLumi = False -tool1.OutputLevel = WARNING -tool1.DetailLevel = 10 - -tool1.TauContainerName = "TauJets" -tool1.PhotonContainerName = "Photons" -tool1.ElectronContainerName = "Electrons" -tool1.METContainerName = "MET_Reference_AntiKt4LCTopo" - - - -from RecExConfig.AutoConfiguration import IsInInputFile -tool1.DoExMET=IsInInputFile('xAOD::MissingETContainer',"MET_Reference_AntiKt4LCTopo") -tool1.DoExJet=IsInInputFile('xAOD::JetContainer','AntiKt4EMTopoJets') -tool1.DoExBtag=IsInInputFile('xAOD::JetContainer','AntiKt4EMTopoJets') - - -monMan = CfgMgr.AthenaMonManager("PhysValMonManager") -monMan.AthenaMonTools += [ tool1 ] diff --git a/PhysicsAnalysis/PhysicsValidation/PhysValMonitoring/share/PhysValInDet_jobOptions.py b/PhysicsAnalysis/PhysicsValidation/PhysValMonitoring/share/PhysValInDet_jobOptions.py deleted file mode 100644 index 23114e87ad32b4cf2d6303ea59b003cb6829d168..0000000000000000000000000000000000000000 --- a/PhysicsAnalysis/PhysicsValidation/PhysValMonitoring/share/PhysValInDet_jobOptions.py +++ /dev/null @@ -1,29 +0,0 @@ -import InDetPhysValMonitoring.InDetPhysValDecoration -decoration = InDetPhysValMonitoring.InDetPhysValDecoration.addDecoratorIfNeeded() - -# add ID physics validation monitoring tool - -from InDetPhysValMonitoring.InDetPhysValJobProperties import InDetPhysValFlags -import InDetPhysValMonitoring.InDetPhysValMonitoringTool as InDetPhysValMonitoringTool - -mons=[ (True , InDetPhysValMonitoringTool.getInDetPhysValMonitoringTool), - (InDetPhysValFlags.doValidateMuonMatchedTracks() , InDetPhysValMonitoringTool.getInDetPhysValMonitoringToolMuons), - (InDetPhysValFlags.doValidateElectronMatchedTracks() , InDetPhysValMonitoringTool.getInDetPhysValMonitoringToolElectrons), - (InDetPhysValFlags.doValidateLargeD0Tracks() , InDetPhysValMonitoringTool.getInDetLargeD0PhysValMonitoringTool), - (InDetPhysValFlags.doValidateLooseTracks() , InDetPhysValMonitoringTool.getInDetPhysValMonitoringToolLoose), - (InDetPhysValFlags.doValidateTightPrimaryTracks() , InDetPhysValMonitoringTool.getInDetPhysValMonitoringToolTightPrimary), - (InDetPhysValFlags.doValidateGSFTracks() , InDetPhysValMonitoringTool.getInDetPhysValMonitoringToolGSF) - ] - -for enabled, creator in mons : - if enabled : - monMan.AthenaMonTools += [ creator() ] - -from InDetPhysValMonitoring.InDetPhysValMonitoringTool import getInDetPhysValMonitoringTool -from InDetPhysValMonitoring.InDetPhysValJobProperties import InDetPhysValFlags -from InDetPhysValMonitoring.ConfigUtils import extractCollectionPrefix -for col in InDetPhysValFlags.validateExtraTrackCollections() : - prefix=extractCollectionPrefix(col) - monMan.AthenaMonTools += [ getInDetPhysValMonitoringTool(name = 'InDetPhysValMonitoringTool'+prefix, - SubFolder = prefix+'Tracks/', - TrackParticleContainerName = prefix+'TrackParticles') ] diff --git a/PhysicsAnalysis/PhysicsValidation/PhysValMonitoring/share/PhysValJet_jobOptions.py b/PhysicsAnalysis/PhysicsValidation/PhysValMonitoring/share/PhysValJet_jobOptions.py deleted file mode 100644 index c530ceb649dad7217b61e883f396ba6b036fb5db..0000000000000000000000000000000000000000 --- a/PhysicsAnalysis/PhysicsValidation/PhysValMonitoring/share/PhysValJet_jobOptions.py +++ /dev/null @@ -1,8 +0,0 @@ -from JetValidation.PhysicsValidationHistos import athenaPhysValTool -tool1 = athenaPhysValTool() -tool1.EnableLumi = False -tool1.OutputLevel = WARNING -tool1.DetailLevel = 10 - -monMan = CfgMgr.AthenaMonManager("PhysValMonManager") -monMan.AthenaMonTools += [ tool1 ] diff --git a/PhysicsAnalysis/PhysicsValidation/PhysValMonitoring/share/PhysValMET_jobOptions.py b/PhysicsAnalysis/PhysicsValidation/PhysValMonitoring/share/PhysValMET_jobOptions.py deleted file mode 100644 index 752bab0bb258eada885501a7b9823709fd707ed4..0000000000000000000000000000000000000000 --- a/PhysicsAnalysis/PhysicsValidation/PhysValMonitoring/share/PhysValMET_jobOptions.py +++ /dev/null @@ -1,88 +0,0 @@ -from MissingEtDQA.MissingEtDQAConf import MissingEtDQA__PhysValMET -tool1 = MissingEtDQA__PhysValMET() -tool1.EnableLumi = False -tool1.OutputLevel = WARNING -tool1.DetailLevel = 10 -from RecExConfig.RecFlags import rec as recFlags -if recFlags.doTruth(): - tool1.DoTruth = True - -from AthenaCommon import CfgMgr -jvtToolEMTopo = CfgMgr.JetVertexTaggerTool('JVTToolEMTopo') -jvtToolPFlow = CfgMgr.JetVertexTaggerTool('JVTToolPFlow') -tool1.JVTToolEMTopo = jvtToolEMTopo -tool1.JVTToolEMPFlow = jvtToolPFlow -tool1.JVTToolEMTopo.JetContainer = "AntiKt4EMTopoJets" -tool1.JVTToolEMPFlow.JetContainer = "AntiKt4EMPFlowJets" - -# for EMTopo jets no NNJvt is calculated so we need to fall back to Jvt -# (re-calculated in MissingEtDQA::PhysValMET as "NewJvt") -mettoolTopo = CfgMgr.met__METMaker('METMaker_AntiKt4Topo', - JetSelection="Loose", - UseR21JvtFallback=True, - JetJvtMomentName="NewJvt", - DoPFlow=False) -tool1.METMakerTopo = mettoolTopo - -mettoolPFlow = CfgMgr.met__METMaker('METMaker_AntiKt4PFlow', - JetSelection="Loose", - DoPFlow=True) -tool1.METMakerPFlow = mettoolPFlow -from AtlasGeoModel.CommonGMJobProperties import CommonGeometryFlags -museltool = CfgMgr.CP__MuonSelectionTool("MuonSelectionTool", - MuQuality=1, # Medium - MaxEta=2.4, - TurnOffMomCorr = True, - IsRun3Geo = CommonGeometryFlags.Run not in ["RUN1","RUN2"] - ) -tool1.MuonSelectionTool = museltool - -eseltool = CfgMgr.AsgElectronLikelihoodTool("ElectronLHSelectionTool", - WorkingPoint="MediumLHElectron") -tool1.ElectronLHSelectionTool = eseltool - -phoseltool = CfgMgr.AsgPhotonIsEMSelector("PhotonIsEMSelectionTool", - WorkingPoint="TightPhoton") -tool1.PhotonIsEMSelectionTool = phoseltool - -from ROOT import TauAnalysisTools -SelectionCuts = TauAnalysisTools.SelectionCuts - -tauseltool = CfgMgr.TauAnalysisTools__TauSelectionTool("TauSelectionTool") -tool1.TauSelectionTool = tauseltool - -tool1.TauSelectionTool.ConfigPath = "" -tool1.TauSelectionTool.SelectionCuts \ - = int(SelectionCuts.CutPt | SelectionCuts.CutAbsEta | - SelectionCuts.CutAbsCharge | SelectionCuts.CutNTrack | SelectionCuts.CutJetIDWP) -tool1.TauSelectionTool.PtMin = 20.0 -tool1.TauSelectionTool.JetIDWP = TauAnalysisTools.JETIDRNNMEDIUM -tool1.TauSelectionTool.NTracks = (1, 3) -tool1.TauSelectionTool.AbsCharge = 1 -tool1.TauSelectionTool.AbsEtaRegion = (0.0, 1.37, 1.52, 2.5) - -#check if we are running over DAOD_PHYSVAL or AOD -from PyUtils.MetaReader import read_metadata -from AthenaCommon.AppMgr import ServiceMgr as svcMgr -try: - input_file = svcMgr.EventSelector.InputCollections[0] -except AttributeError: - from AthenaCommon.AthenaCommonFlags import athenaCommonFlags - input_file = athenaCommonFlags.FilesInput()[0] -metadata = read_metadata(input_file) -metadata = metadata[input_file] # promote all keys one level up - -isDAOD_PHYSVAL=False -for class_name, name in metadata['metadata_items'].items(): - if name == 'EventStreamInfo': - if "DAOD_PHYSVAL" in class_name : - print ("Running on DAOD_PHYSVAL - will not add TTVA decorations.") - isDAOD_PHYSVAL=True - -tool1.InputIsDAOD = isDAOD_PHYSVAL - -from RecExConfig.AutoConfiguration import IsInInputFile -tool1.DoMETRefPlots=IsInInputFile('xAOD::MissingETContainer',"MET_Reference_AntiKt4EMTopo") - -monMan = CfgMgr.AthenaMonManager("PhysValMonManager") -monMan.AthenaMonTools += [ tool1 ] diff --git a/PhysicsAnalysis/PhysicsValidation/PhysValMonitoring/share/PhysValMuon_jobOptions.py b/PhysicsAnalysis/PhysicsValidation/PhysValMonitoring/share/PhysValMuon_jobOptions.py deleted file mode 100644 index a8e820da04f1f764621203a6f39ec74552419be5..0000000000000000000000000000000000000000 --- a/PhysicsAnalysis/PhysicsValidation/PhysValMonitoring/share/PhysValMuon_jobOptions.py +++ /dev/null @@ -1,90 +0,0 @@ -from AthenaCommon.CfgGetter import getPublicTool -getPublicTool("MuonCombinedInDetDetailedTrackSelectorTool") - -algseq = CfgMgr.AthSequencer("AthAlgSeq") - -from PyUtils.MetaReader import read_metadata -from AthenaCommon.AppMgr import ServiceMgr as svcMgr -try: - input_file = svcMgr.EventSelector.InputCollections[0] -except AttributeError: - from AthenaCommon.AthenaCommonFlags import athenaCommonFlags - input_file = athenaCommonFlags.FilesInput()[0] -metadata = read_metadata(input_file) -metadata = metadata[input_file] # promote all keys one level up - -isDAOD_PHYSVAL=False -for class_name, name in metadata['metadata_items'].items(): - if name == 'EventStreamInfo': - if "DAOD_PHYSVAL" in class_name : - print ("Running on DAOD_PHYSVAL - will not add TTVA decorations.") - isDAOD_PHYSVAL=True - -if not isDAOD_PHYSVAL: - from IsolationAlgs.IsoUpdatedTrackCones import GetUpdatedIsoTrackCones - if not hasattr(algseq,"IsolationBuilderNonprompt_All_MaxWeight500"): - ToolSvc += CfgMgr.InDet__InDetUsedInFitTrackDecoratorTool( name = algseq.name()+"_InDetUsedInFitDecoratorTool_forIso", - AMVFVerticesDecoName = 'TTVA_AMVFVertices', - AMVFWeightsDecoName = 'TTVA_AMVFWeights', - TrackContainer = 'InDetTrackParticles', - VertexContainer = 'PrimaryVertices' ) - algseq += CfgMgr.InDet__InDetUsedInVertexFitTrackDecorator(name = algseq.name()+"_InDetUsedInFitDecorator_forIso", - UsedInFitDecoratorTool = getattr(ToolSvc, algseq.name()+"_InDetUsedInFitDecoratorTool_forIso") ) - algseq += GetUpdatedIsoTrackCones() - -from MuonPhysValMonitoring.MuonPhysValMonitoringConf import MuonPhysValMonitoring__MuonPhysValMonitoringTool -from RecExConfig.RecFlags import rec as recFlags - -tool1 = MuonPhysValMonitoring__MuonPhysValMonitoringTool( name = 'muphysval' ) -tool1.IsData = not recFlags.doTruth() - -#add if you need any of the following containers -#tool1.FwdTrackContainerName='InDetForwardTrackParticles' -tool1.SlowMuonContainerName = '' - -tool1.SelectHLTMuonItems = [ - ["HLT_mu20","L1_MU20"], - ["HLT_mu20_iloose_L1MU15","L1_MU15"], - ["HLT_mu24","L1_MU20"], - ["HLT_mu24_iloose_L1MU15","L1_MU15"], - ["HLT_mu24_imedium","L1_MU20"], - ["HLT_mu26","L1_MU20"], - ["HLT_mu26_imedium","L1_MU20"], - ["HLT_mu50","L1_MU20"] -] - -tool1.SelectL1MuonItems = [ - "L1_MU4", - "L1_MU6", - "L1_MU10", - "L1_MU11", - "L1_MU15", - "L1_MU20" -] - -#Select Muon Working Points... (empty: all, -1: None, 0: Tight, 1: Medium, 2: Loose, 3: VeryLoose) -tool1.SelectMuonWorkingPoints = [0, 1, 2 ] - -#Select Muon Authors... (empty: all authors, 0: None, 1: combined, 2: STACO, 4: MuTagIMO, 5: Standalone, 6: MuGirl, 8: CaloTag, 10: CaloScore) -tool1.SelectMuonAuthors = [ 1, 2, 4, 5, 6, 8, 10 ] - -#Select Muon Categories... (origin of muons, empty: all categories, 0: ALL, 1: PROMPT, 2: IN-FLIGHT, 3: NON-ISOLATED, 4: REST) -tool1.SelectMuonCategories = [ 0, 1 ] # lighter version, good for official validation tasks overriden when in data mode - -if not recFlags.doTruth(): - tool1.SelectMuonCategories = [0, 1, 4] - -from IsolationSelection.IsolationSelectionConf import CP__IsolationSelectionTool -IsolationTool = CP__IsolationSelectionTool( "IsolationSelectionTool", - MuonWP = "PflowTight_FixedRad") -ToolSvc += IsolationTool -tool1.IsoTool = IsolationTool -tool1.EnableLumi = False -tool1.OutputLevel = WARNING -tool1.DetailLevel = 10 - -#Flag for saving a ROOT TTree in an output ntuple... default value is False --> no TTree is saved -#tool1.DoMuonTree = True - -monMan = CfgMgr.AthenaMonManager("PhysValMonManager") -monMan.AthenaMonTools += [ tool1 ] \ No newline at end of file diff --git a/PhysicsAnalysis/PhysicsValidation/PhysValMonitoring/share/PhysValPFlow_FlowElements_jobOptions.py b/PhysicsAnalysis/PhysicsValidation/PhysValMonitoring/share/PhysValPFlow_FlowElements_jobOptions.py deleted file mode 100644 index e248eb12e7391715c8e82533aa5e79082f6898f5..0000000000000000000000000000000000000000 --- a/PhysicsAnalysis/PhysicsValidation/PhysValMonitoring/share/PhysValPFlow_FlowElements_jobOptions.py +++ /dev/null @@ -1,24 +0,0 @@ -#Please note that to access LC PFlow container, one should run the below tool to combine the two neutral containers into one -#That then puts a new container in StoreGate, which PhysValPFO_neutral could be updated to access -#from PFlowUtils.PFlowUtilsConf import CombinePFO - -from PFODQA.PFODQAConf import PhysValFE # get plots from FE - -#charged Flow Element - -PhysValFE_charged=PhysValFE("PhysValFE_charged") -PhysValFE_charged.OutputLevel= WARNING -PhysValFE_charged.DetailLevel= 10 -PhysValFE_charged.EnableLumi=False -PhysValFE_charged.FlowElementContainerName="JetETMissChargedParticleFlowObjects" -PhysValFE_charged.useNeutralFE= False -monMan.AthenaMonTools += [ PhysValFE_charged ] - - -PhysValFE_neutral=PhysValFE("PhysValFE_neutral") -PhysValFE_neutral.OutputLevel= WARNING -PhysValFE_neutral.DetailLevel= 10 -PhysValFE_neutral.EnableLumi=False -PhysValFE_neutral.FlowElementContainerName="JetETMissNeutralParticleFlowObjects" -PhysValFE_neutral.useNeutralFE=True -monMan.AthenaMonTools += [ PhysValFE_neutral ] diff --git a/PhysicsAnalysis/PhysicsValidation/PhysValMonitoring/share/PhysValSlowMuon_jobOptions.py b/PhysicsAnalysis/PhysicsValidation/PhysValMonitoring/share/PhysValSlowMuon_jobOptions.py deleted file mode 100644 index bba17cbbf04a41b569e8c7f42f201db13422d543..0000000000000000000000000000000000000000 --- a/PhysicsAnalysis/PhysicsValidation/PhysValMonitoring/share/PhysValSlowMuon_jobOptions.py +++ /dev/null @@ -1,43 +0,0 @@ -from AthenaCommon.CfgGetter import getPublicTool -getPublicTool("MuonCombinedInDetDetailedTrackSelectorTool") - -from MuonPhysValMonitoring.MuonPhysValMonitoringConf import MuonPhysValMonitoring__MuonPhysValMonitoringTool -from RecExConfig.RecFlags import rec as recFlags - -tool1 = MuonPhysValMonitoring__MuonPhysValMonitoringTool( name = 'slowmuphysval' ) -tool1.IsData = not recFlags.doTruth() - -# -tool1.MuonContainerName = ''; # Must be blank for SlowMuons -tool1.SlowMuonContainerName = 'SlowMuons'; -tool1.MuonTruthParticleContainerName = 'MuonTruthParticles'; -tool1.DoBinnedResolutionPlots = False - -tool1.TrackContainerName = '' -tool1.FwdTrackContainerName='' -tool1.MuonTrackContainerName = '' -tool1.MuonExtrapolatedTrackContainerName = '' -tool1.MuonOnlyExtrapolatedTrackContainerName = '' -tool1.MuonSegmentContainerName = '' - -#Select Muon Working Points... (empty: all, -1: None, 0: Tight, 1: Medium, 2: Loose, 3: VeryLoose) -tool1.SelectMuonWorkingPoints = [ -1 ] - -#Select Muon Authors... (empty: all authors, 0: None, 1: combined, 2: STACO, 4: MuTagIMO, 5: Standalone, 6: MuGirl, 8: CaloTag) -tool1.SelectMuonAuthors = [ 0 ] # only one author is defined in this case... no need to specify - -#Select Muon Categories... (origin of muons, empty: all categories, 0: ALL, 1: PROMPT, 2: IN-FLIGHT, 3: NON-ISOLATED, 4: REST) -#tool1.SelectMuonCategories = [ 0, 1, 2, 3, 4 ] # all possible categories -tool1.SelectMuonCategories = [ 0, 1 ] # lighter version, good for official validation tasks; overriden when in data mode - -from IsolationSelection.IsolationSelectionConf import CP__IsolationSelectionTool -IsolationTool = CP__IsolationSelectionTool( "IsolationSelectionTool", - MuonWP = "PflowTight_FixedRad") -ToolSvc += IsolationTool -tool1.IsoTool = IsolationTool -tool1.EnableLumi = False -tool1.OutputLevel = ERROR -tool1.DetailLevel = 10 - -monMan = CfgMgr.AthenaMonManager("PhysValMonManager") -monMan.AthenaMonTools += [ tool1 ] diff --git a/PhysicsAnalysis/PhysicsValidation/PhysValMonitoring/share/PhysValTau_jobOptions.py b/PhysicsAnalysis/PhysicsValidation/PhysValMonitoring/share/PhysValTau_jobOptions.py deleted file mode 100644 index d11be52f443865d23f1cda9a4e8902cced1cbb72..0000000000000000000000000000000000000000 --- a/PhysicsAnalysis/PhysicsValidation/PhysValMonitoring/share/PhysValTau_jobOptions.py +++ /dev/null @@ -1,47 +0,0 @@ -from TauDQA.TauDQAConf import PhysValTau -tool1 = PhysValTau() -tool1.EnableLumi = False -tool1.OutputLevel = WARNING -tool1.DetailLevel = 10 -from RecExConfig.RecFlags import rec as recFlags -if recFlags.doTruth(): - tool1.isMC = True - -# configuration of the truth matching tool -tool1.TauTruthMatchingTool.TruthElectronContainerName = "TruthElectrons" -tool1.TauTruthMatchingTool.TruthMuonContainerName = "MuonTruthParticles" -tool1.TauTruthMatchingTool.WriteTruthTaus = True - -# Trigger loading of TauAnalysisTools to make ID enums visible -import cppyy -try: - print("Successfully loaded TauAnalysisToolsDict") - cppyy.load_library('libTauAnalysisToolsDict') -except: - print("Could not load TauAnalysisToolsDict") - pass -from ROOT import TauAnalysisTools -SelectionCuts = TauAnalysisTools.SelectionCuts - -# configuration of the 'primitive' tau selection -tool1.PrimitiveTauSelectionTool.ConfigPath = "" -tool1.PrimitiveTauSelectionTool.SelectionCuts \ - = int(SelectionCuts.CutAbsEta | SelectionCuts.CutAbsCharge | SelectionCuts.CutNTrack) -tool1.PrimitiveTauSelectionTool.PtMin = 0.0 -tool1.PrimitiveTauSelectionTool.JetIDWP = TauAnalysisTools.JETIDNONE -tool1.PrimitiveTauSelectionTool.NTracks = (0, 1, 2, 3, 4, 5) -tool1.PrimitiveTauSelectionTool.AbsCharges = (0, 1, 2, 3) -tool1.PrimitiveTauSelectionTool.AbsEtaRegion = (0.0, 10.0) - -# configuration of the 'nominal' tau selection -tool1.NominalTauSelectionTool.ConfigPath = "" -tool1.NominalTauSelectionTool.SelectionCuts \ - = int(SelectionCuts.CutPt | SelectionCuts.CutAbsEta | SelectionCuts.CutAbsCharge | SelectionCuts.CutNTrack) -tool1.NominalTauSelectionTool.PtMin = 20.0 -tool1.NominalTauSelectionTool.JetIDWP = TauAnalysisTools.JETIDNONE -tool1.NominalTauSelectionTool.NTracks = (0, 1, 2, 3, 4, 5) -tool1.NominalTauSelectionTool.AbsCharges = (0, 1, 2, 3) -tool1.NominalTauSelectionTool.AbsEtaRegion = (0.0, 1.37, 1.52, 2.5) - -monMan = CfgMgr.AthenaMonManager("PhysValMonManager") -monMan.AthenaMonTools += [ tool1 ] diff --git a/PhysicsAnalysis/PhysicsValidation/PhysValMonitoring/share/PhysValTop_jobOptions.py b/PhysicsAnalysis/PhysicsValidation/PhysValMonitoring/share/PhysValTop_jobOptions.py deleted file mode 100644 index fd7c036b7bf559135aac58be2c1fb61cb5b11485..0000000000000000000000000000000000000000 --- a/PhysicsAnalysis/PhysicsValidation/PhysValMonitoring/share/PhysValTop_jobOptions.py +++ /dev/null @@ -1,14 +0,0 @@ -from TopPhysValMonitoring.TopPhysValMonitoringConf import TopPhysVal__TopPhysValMonitoring -tool1 = TopPhysVal__TopPhysValMonitoring() -tool1.EnableLumi = False -tool1.OutputLevel = WARNING -tool1.DetailLevel = 10 - -#tool1.METContainerName = "" # do not try to read MET as long as the proxy is missing - -tool1.PhotonContainerName = "Photons" -tool1.ElectronContainerName = "Electrons" -tool1.TauContainerName = "TauJets" - -monMan = CfgMgr.AthenaMonManager("PhysValMonManager") -monMan.AthenaMonTools += [ tool1 ] diff --git a/PhysicsAnalysis/PhysicsValidation/PhysValMonitoring/share/PhysValTopoCluster_jobOptions.py b/PhysicsAnalysis/PhysicsValidation/PhysValMonitoring/share/PhysValTopoCluster_jobOptions.py deleted file mode 100644 index 57f4db49180732ca8e1f5bbebcab62b5e32cf40f..0000000000000000000000000000000000000000 --- a/PhysicsAnalysis/PhysicsValidation/PhysValMonitoring/share/PhysValTopoCluster_jobOptions.py +++ /dev/null @@ -1,19 +0,0 @@ -from PFODQA.PFODQAConf import PhysValCluster - -PhysValCluster_LC = PhysValCluster("PhysValCluster_LC") -PhysValCluster_LC.OutputLevel = INFO -PhysValCluster_LC.DetailLevel = 10 -PhysValCluster_LC.EnableLumi = False -PhysValCluster_LC.ClusterContainerName="CaloCalTopoClusters" - -monMan.AthenaMonTools += [ PhysValCluster_LC ] - -# new origin corrected clusters - -PhysValCluster_origin = PhysValCluster("PhysValCluster_origin") -PhysValCluster_origin.OutputLevel = INFO -PhysValCluster_origin.DetailLevel = 10 -PhysValCluster_origin.EnableLumi = False -PhysValCluster_origin.ClusterContainerName="LCOriginTopoClusters" - -monMan.AthenaMonTools += [ PhysValCluster_origin ] diff --git a/PhysicsAnalysis/PhysicsValidation/PhysValMonitoring/share/PhysValTrigIDtrk_jobOptions.py b/PhysicsAnalysis/PhysicsValidation/PhysValMonitoring/share/PhysValTrigIDtrk_jobOptions.py deleted file mode 100644 index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..0000000000000000000000000000000000000000 diff --git a/PhysicsAnalysis/PhysicsValidation/PhysValMonitoring/share/PhysValZee_jobOptions.py b/PhysicsAnalysis/PhysicsValidation/PhysValMonitoring/share/PhysValZee_jobOptions.py deleted file mode 100644 index 3db5195f9c73f0a64b806529db3e0679bdb780c1..0000000000000000000000000000000000000000 --- a/PhysicsAnalysis/PhysicsValidation/PhysValMonitoring/share/PhysValZee_jobOptions.py +++ /dev/null @@ -1,16 +0,0 @@ -from RecExConfig.RecFlags import rec as recFlags - -from ZeeValidation.ZeeValidationConf import ZeeValidation__ZeeValidationMonitoringTool -tool1 = ZeeValidation__ZeeValidationMonitoringTool() -tool1.IsData = not recFlags.doTruth() -tool1.EnableLumi = False -tool1.OutputLevel = WARNING -tool1.DetailLevel = 10 - -tool1.PhotonContainerName = "Photons" -tool1.ElectronContainerName = "Electrons" -tool1.ElectronContainerFrwdName = "ForwardElectrons" -tool1.TruthParticleContainerName = "TruthParticles" - -monMan = CfgMgr.AthenaMonManager("PhysValMonManager") -monMan.AthenaMonTools += [ tool1 ] diff --git a/PhysicsAnalysis/PhysicsValidation/PhysValMonitoring/share/PhysVal_jobOptions.py b/PhysicsAnalysis/PhysicsValidation/PhysValMonitoring/share/PhysVal_jobOptions.py deleted file mode 100644 index dbf1912c6afacd3670c6c968e686da058752830b..0000000000000000000000000000000000000000 --- a/PhysicsAnalysis/PhysicsValidation/PhysValMonitoring/share/PhysVal_jobOptions.py +++ /dev/null @@ -1,64 +0,0 @@ -# $Id: PhysVal_jobOptions.py 597458 2014-05-16 13:00:31Z cristinz $ - -# Set up the reading of the input xAOD: -FNAME = "AOD.pool.root" -include( "AthenaPython/iread_file.py" ) -#import AthenaPoolCnvSvc.ReadAthenaPool -#ServiceMgr.EventSelector.InputCollections = [ FNAME ] - -# Access the algorithm sequence: -from AthenaCommon.AlgSequence import AlgSequence -topSequence = AlgSequence() - -# Default 'do' list: -validations = ["InDet","PrimaryTracking", "SecondaryTracking", "Jet", "MET", "Muon", "SlowMuon", "Egamma", "Tau", "Btag", - "SMZee", "SMZMet", "HSG6", "Top", "SUSY", "Exotics", - "Example"] - -# All false by defualt for now except example -for val in validations: - vars()['do' + val] = False - -doExample = True -#doInDet = True -#doMET = True -#doEgamma = True -#doMuon = True -#doTau = True -#doJet = True -#doSUSY = True -#doTop = True - - -from AthenaMonitoring.AthenaMonitoringConf import AthenaMonManager -monMan = AthenaMonManager( "PhysValMonManager" ) -monMan.ManualDataTypeSetup = True -monMan.DataType = "monteCarlo" -monMan.Environment = "altprod" -monMan.ManualRunLBSetup = True -monMan.Run = 1 -monMan.LumiBlock = 1 -monMan.FileKey = "PhysVal" -topSequence += monMan - - -for val in validations: - if not vars()['do' + val]: continue - include("PhysValMonitoring/PhysVal" + val + "_jobOptions.py") - -for tool in monMan.AthenaMonTools: - tool.EnableLumi = False - tool.ManagerName = 'PhysValMonManager' - -from AthenaCommon.AppMgr import ServiceMgr -from GaudiSvc.GaudiSvcConf import THistSvc -ServiceMgr += THistSvc() -svcMgr.THistSvc.Output += ["PhysVal DATAFILE='PhysVal.root' OPT='RECREATE'"] - -#topSequence.PanTau_SeedBuilder_eflowRec.Enable = False -#topSequence.PanTau_SeedBuilder_CellBased.Enable = False - -# Do some additional tweaking: -from AthenaCommon.AppMgr import theApp -ServiceMgr.MessageSvc.OutputLevel = INFO -ServiceMgr.MessageSvc.defaultLimit = 1000000 diff --git a/Reconstruction/RecJobTransforms/python/AODtoHIST_Skeleton.py b/Reconstruction/RecJobTransforms/python/AODtoHIST_Skeleton.py index bbfc02ce143c6615ea72ee906f30a110ff2e71e3..12613492246c1e803fd4c3c02d6e82e70d595465 100644 --- a/Reconstruction/RecJobTransforms/python/AODtoHIST_Skeleton.py +++ b/Reconstruction/RecJobTransforms/python/AODtoHIST_Skeleton.py @@ -1,13 +1,9 @@ -# Copyright (C) 2002-2023 CERN for the benefit of the ATLAS collaboration +# Copyright (C) 2002-2024 CERN for the benefit of the ATLAS collaboration import sys from PyJobTransforms.TransformUtils import processPreExec, processPreInclude, processPostExec, processPostInclude -# temporarily force no global config flags -from AthenaConfiguration import AllConfigFlags -del AllConfigFlags.ConfigFlags - # force no legacy job properties from AthenaCommon import JobProperties JobProperties.jobPropertiesDisallowed = True diff --git a/Reconstruction/RecJobTransforms/python/RAWtoALL_Skeleton.py b/Reconstruction/RecJobTransforms/python/RAWtoALL_Skeleton.py index 1fb68161206c7728b8da8865d805362679910b3a..81556b647f68c28a6377a2092c21a60b8476a0e9 100644 --- a/Reconstruction/RecJobTransforms/python/RAWtoALL_Skeleton.py +++ b/Reconstruction/RecJobTransforms/python/RAWtoALL_Skeleton.py @@ -1,12 +1,8 @@ -# Copyright (C) 2002-2022 CERN for the benefit of the ATLAS collaboration +# Copyright (C) 2002-2024 CERN for the benefit of the ATLAS collaboration from PyJobTransforms.CommonRunArgsToFlags import commonRunArgsToFlags from PyJobTransforms.TransformUtils import processPreExec, processPreInclude, processPostExec, processPostInclude -# temporarily force no global config flags -from AthenaConfiguration import AllConfigFlags -del AllConfigFlags.ConfigFlags - # force no legacy job properties from AthenaCommon import JobProperties JobProperties.jobPropertiesDisallowed = True diff --git a/Reconstruction/RecoAlgs/CaloRingerAlgs/CMakeLists.txt b/Reconstruction/RecoAlgs/CaloRingerAlgs/CMakeLists.txt index a53a963189824f3520755d9eb9e70450ca62c01e..21824b38099bd5556127af8ad3b18fc9350acaa9 100644 --- a/Reconstruction/RecoAlgs/CaloRingerAlgs/CMakeLists.txt +++ b/Reconstruction/RecoAlgs/CaloRingerAlgs/CMakeLists.txt @@ -1,4 +1,4 @@ -# Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration +# Copyright (C) 2002-2024 CERN for the benefit of the ATLAS collaboration # Declare the package name: atlas_subdir( CaloRingerAlgs ) @@ -11,4 +11,3 @@ atlas_add_component( CaloRingerAlgs # Install files from the package: atlas_install_python_modules( python/*.py POST_BUILD_CMD ${ATLAS_FLAKE8} ) -atlas_install_joboptions( share/*.py ) diff --git a/Reconstruction/RecoAlgs/CaloRingerAlgs/share/CaloRingerOutputItemList_jobOptions.py b/Reconstruction/RecoAlgs/CaloRingerAlgs/share/CaloRingerOutputItemList_jobOptions.py deleted file mode 100644 index 693779b1ef49764587a1ee3dec750c11893da989..0000000000000000000000000000000000000000 --- a/Reconstruction/RecoAlgs/CaloRingerAlgs/share/CaloRingerOutputItemList_jobOptions.py +++ /dev/null @@ -1,38 +0,0 @@ -# Copyright (C) 2002-2023 CERN for the benefit of the ATLAS collaboration - - -from CaloRingerAlgs.CaloRingerKeys import ( - CaloRingerKeysDict, -) - -from RecExConfig.RecFlags import rec -__doc__ = "Add containers to ESD/AOD ItemList using the definitions from CaloRingerKeys" - -from AthenaCommon.Logging import logging - -mlog = logging.getLogger('CaloRingerOutputItemList_jobOptions.py') -mlog.info('Entering') - - -class IncludeError (ImportError): - pass - -# Avoid duplication -caloRingerAODList = [] - -# Add itens into lists -from AthenaConfiguration.AllConfigFlags import ConfigFlags -from AthenaCommon.Configurable import ConfigurableCABehavior -from CaloRingerAlgs.CaloRingerAlgsConfig import CaloRingerOutputCfg - -caloRingerFlags = ConfigFlags.clone() -caloRingerFlags.Output.doWriteESD = True -caloRingerFlags.Output.doWriteAOD = True -caloRingerFlags.lock() -with ConfigurableCABehavior(): - toOutput = CaloRingerOutputCfg(caloRingerFlags) - -caloRingerESDList = list(toOutput.getEventAlgo('OutputStreamESD').ItemList) -caloRingerAODList = list(toOutput.getEventAlgo('OutputStreamAOD').ItemList) - -toOutput.wasMerged() diff --git a/Reconstruction/tauMonitoring/python/tauMonitorAlgorithm.py b/Reconstruction/tauMonitoring/python/tauMonitorAlgorithm.py index 80333c73b6083e6bbd90017e94219ce6102af828..cc40f186d91366d76c5a31a15d46b30b92fe7887 100644 --- a/Reconstruction/tauMonitoring/python/tauMonitorAlgorithm.py +++ b/Reconstruction/tauMonitoring/python/tauMonitorAlgorithm.py @@ -55,6 +55,7 @@ def tauMonitoringConfig(inputFlags,**kwargs): tauMonAlgTauTrig5 = cfgHelper.addAlgorithm( tauMonitorAlgorithm, name='tauMonAlgTauTrig5', addFilterTools = [LArBadLBFilterToolCfg(inputFlags)]) tauMonAlgTauTrig6 = cfgHelper.addAlgorithm( tauMonitorAlgorithm, name='tauMonAlgTauTrig6', addFilterTools = [LArBadLBFilterToolCfg(inputFlags)]) tauMonAlgTauTrig7 = cfgHelper.addAlgorithm( tauMonitorAlgorithm, name='tauMonAlgTauTrig7', addFilterTools = [LArBadLBFilterToolCfg(inputFlags)]) + tauMonAlgTauTrig8 = cfgHelper.addAlgorithm( tauMonitorAlgorithm, name='tauMonAlgTauTrig8', addFilterTools = [LArBadLBFilterToolCfg(inputFlags)]) tauMonAlgEleTrig = cfgHelper.addAlgorithm( tauMonitorAlgorithm, name='tauMonAlgEleTrig', addFilterTools = [LArBadLBFilterToolCfg(inputFlags)]) tauMonAlgJetTrig = cfgHelper.addAlgorithm( tauMonitorAlgorithm, name='tauMonAlgJetTrig', addFilterTools = [LArBadLBFilterToolCfg(inputFlags)]) @@ -74,7 +75,8 @@ def tauMonitoringConfig(inputFlags,**kwargs): tauMonAlgTauTrig4.TriggerChain = "HLT_tau160_mediumRNN_tracktwoMVA_L1eTAU140" tauMonAlgTauTrig5.TriggerChain = "HLT_tau80_mediumRNN_tracktwoMVA_tau35_mediumRNN_tracktwoMVA_03dRAB30_L1TAU60_DR-TAU20ITAU12I" tauMonAlgTauTrig6.TriggerChain = "HLT_tau35_mediumRNN_tracktwoMVA_tau25_mediumRNN_tracktwoMVA_03dRAB30_L1DR-TAU20ITAU12I-J25" - tauMonAlgTauTrig7.TriggerChain = "HLT_tau200_mediumRNN_tracktwoMVA_L1TAU100" + tauMonAlgTauTrig7.TriggerChain = "HLT_tau80_mediumRNN_tracktwoMVA_tau35_mediumRNN_tracktwoMVA_03dRAB30_L1eTAU80_2cTAU30M_DR-eTAU30eTAU20" + tauMonAlgTauTrig8.TriggerChain = "HLT_tau35_mediumRNN_tracktwoMVA_tau25_mediumRNN_tracktwoMVA_03dRAB30_L1cTAU30M_2cTAU20M_DR-eTAU30eTAU20-jJ55" tauMonAlgEleTrig.TriggerChain = "HLT_e[2-9][0-9]_.*" @@ -102,6 +104,8 @@ def tauMonitoringConfig(inputFlags,**kwargs): tauMonAlgTauTrig6.etaMax = 100 tauMonAlgTauTrig7.etaMin = -100 tauMonAlgTauTrig7.etaMax = 100 + tauMonAlgTauTrig8.etaMin = -100 + tauMonAlgTauTrig8.etaMax = 100 tauMonAlgEleTrig.etaMin = -100 tauMonAlgEleTrig.etaMax = 100 @@ -119,6 +123,7 @@ def tauMonitoringConfig(inputFlags,**kwargs): tauMonAlgTauTrig5.kinGroupName = 'tauMonKinGroupTauTrig5' tauMonAlgTauTrig6.kinGroupName = 'tauMonKinGroupTauTrig6' tauMonAlgTauTrig7.kinGroupName = 'tauMonKinGroupTauTrig7' + tauMonAlgTauTrig8.kinGroupName = 'tauMonKinGroupTauTrig8' tauMonAlgEleTrig.kinGroupName = 'tauMonKinGroupEleTrig' tauMonAlgJetTrig.kinGroupName = 'tauMonKinGroupJetTrig' @@ -140,6 +145,7 @@ def tauMonitoringConfig(inputFlags,**kwargs): myKinGroupTauTrig5 = cfgHelper.addGroup(alg=tauMonAlgTauTrig5, name='tauMonKinGroupTauTrig5', topPath='Tau/Trigger/tauTrigger5/' ) myKinGroupTauTrig6 = cfgHelper.addGroup(alg=tauMonAlgTauTrig6, name='tauMonKinGroupTauTrig6', topPath='Tau/Trigger/tauTrigger6/' ) myKinGroupTauTrig7 = cfgHelper.addGroup(alg=tauMonAlgTauTrig7, name='tauMonKinGroupTauTrig7', topPath='Tau/Trigger/tauTrigger7/' ) + myKinGroupTauTrig8 = cfgHelper.addGroup(alg=tauMonAlgTauTrig8, name='tauMonKinGroupTauTrig8', topPath='Tau/Trigger/tauTrigger8/' ) myKinGroupEleTrig = cfgHelper.addGroup(alg=tauMonAlgEleTrig, name='tauMonKinGroupEleTrig', topPath='Tau/Trigger/EleTrig/' ) myKinGroupJetTrig = cfgHelper.addGroup(alg=tauMonAlgJetTrig, name='tauMonKinGroupJetTrig', topPath='Tau/Trigger/JetTrig/' ) @@ -158,6 +164,7 @@ def tauMonitoringConfig(inputFlags,**kwargs): 'TauTrig5': "tauTriggered5_", 'TauTrig6': "tauTriggered6_", 'TauTrig7': "tauTriggered7_", + 'TauTrig8': "tauTriggered8_", } @@ -189,7 +196,8 @@ def tauMonitoringConfig(inputFlags,**kwargs): (myKinGroupTauTrig4, 'TauTrig4'), (myKinGroupTauTrig5, 'TauTrig5'), (myKinGroupTauTrig6, 'TauTrig6'), - (myKinGroupTauTrig7, 'TauTrig7')]: + (myKinGroupTauTrig7, 'TauTrig7'), + (myKinGroupTauTrig8, 'TauTrig8')]: (igroup, postfix) = itup @@ -650,6 +658,7 @@ if __name__=='__main__': exampleMonitorAcc.getEventAlgo('tauMonAlgTauTrig5').OutputLevel = 2 # DEBUG exampleMonitorAcc.getEventAlgo('tauMonAlgTauTrig6').OutputLevel = 2 # DEBUG exampleMonitorAcc.getEventAlgo('tauMonAlgTauTrig7').OutputLevel = 2 # DEBUG + exampleMonitorAcc.getEventAlgo('tauMonAlgTauTrig8').OutputLevel = 2 # DEBUG exampleMonitorAcc.getEventAlgo('tauMonAlgEleTrig').OutputLevel = 2 # DEBUG exampleMonitorAcc.getEventAlgo('tauMonAlgJetTrig').OutputLevel = 2 # DEBUG diff --git a/Simulation/Overlay/OverlayConfiguration/python/OverlaySkeleton.py b/Simulation/Overlay/OverlayConfiguration/python/OverlaySkeleton.py index df5edd32aab32c60cbddffcd89b0cf8539e404c8..17a25b7cc54521df22e60a537845d25733c239dc 100644 --- a/Simulation/Overlay/OverlayConfiguration/python/OverlaySkeleton.py +++ b/Simulation/Overlay/OverlayConfiguration/python/OverlaySkeleton.py @@ -1,4 +1,4 @@ -# Copyright (C) 2002-2023 CERN for the benefit of the ATLAS collaboration +# Copyright (C) 2002-2024 CERN for the benefit of the ATLAS collaboration import sys @@ -8,14 +8,6 @@ from PyJobTransforms.CommonRunArgsToFlags import commonRunArgsToFlags from PyJobTransforms.TransformUtils import processPreExec, processPreInclude, processPostExec, processPostInclude from SimuJobTransforms.CommonSimulationSteering import specialConfigPreInclude, specialConfigPostInclude -try: - # temporarily force no global config flags - from AthenaConfiguration import AllConfigFlags - del AllConfigFlags.ConfigFlags -except AttributeError: - # AllConfigFlags.ConfigFlags has already been deleted - pass - # force no legacy job properties from AthenaCommon import JobProperties JobProperties.jobPropertiesDisallowed = True diff --git a/Simulation/SimuJobTransforms/python/FilterHit_Skeleton.py b/Simulation/SimuJobTransforms/python/FilterHit_Skeleton.py index 091ce33ac7c32b1c8846fccba5aefc0a38177404..a72df9a2b63865eb55be9e2941ec182c544520de 100644 --- a/Simulation/SimuJobTransforms/python/FilterHit_Skeleton.py +++ b/Simulation/SimuJobTransforms/python/FilterHit_Skeleton.py @@ -4,10 +4,6 @@ import sys from PyJobTransforms.CommonRunArgsToFlags import commonRunArgsToFlags from PyJobTransforms.TransformUtils import processPreExec, processPreInclude, processPostExec, processPostInclude -# temporarily force no global config flags -from AthenaConfiguration import AllConfigFlags -del AllConfigFlags.ConfigFlags - # force no legacy job properties from AthenaCommon import JobProperties JobProperties.jobPropertiesDisallowed = True diff --git a/Simulation/SimuJobTransforms/python/G4AtlasAlg_Skeleton.py b/Simulation/SimuJobTransforms/python/G4AtlasAlg_Skeleton.py index c95f941b6d7ca4fd7adb85592d8a729599a37441..be99c27f454c3fe655bb91dfb18acef919ea175c 100644 --- a/Simulation/SimuJobTransforms/python/G4AtlasAlg_Skeleton.py +++ b/Simulation/SimuJobTransforms/python/G4AtlasAlg_Skeleton.py @@ -5,10 +5,6 @@ from PyJobTransforms.CommonRunArgsToFlags import commonRunArgsToFlags from PyJobTransforms.TransformUtils import processPreExec, processPreInclude, processPostExec, processPostInclude from SimuJobTransforms.CommonSimulationSteering import CommonSimulationCfg, specialConfigPreInclude, specialConfigPostInclude -# temporarily force no global config flags -from AthenaConfiguration import AllConfigFlags -del AllConfigFlags.ConfigFlags - # force no legacy job properties from AthenaCommon import JobProperties JobProperties.jobPropertiesDisallowed = True diff --git a/Simulation/SimuJobTransforms/python/HITSMerge_Skeleton.py b/Simulation/SimuJobTransforms/python/HITSMerge_Skeleton.py index 693f1fd9a44961e5715b418c5a289d22f9b9cda1..c812e0991d2736edae2aaa4d2d2afdc08c5328ef 100644 --- a/Simulation/SimuJobTransforms/python/HITSMerge_Skeleton.py +++ b/Simulation/SimuJobTransforms/python/HITSMerge_Skeleton.py @@ -4,10 +4,6 @@ import sys from PyJobTransforms.CommonRunArgsToFlags import commonRunArgsToFlags from PyJobTransforms.TransformUtils import processPreExec, processPreInclude, processPostExec, processPostInclude -# temporarily force no global config flags -from AthenaConfiguration import AllConfigFlags -del AllConfigFlags.ConfigFlags - # force no legacy job properties from AthenaCommon import JobProperties JobProperties.jobPropertiesDisallowed = True diff --git a/Simulation/SimuJobTransforms/python/HITtoRDO_Skeleton.py b/Simulation/SimuJobTransforms/python/HITtoRDO_Skeleton.py index a4c2cbd5d2e4d0dfb5f373c1843990ff516b945f..3155166a42defe3f12005718b3debf57efb0e656 100644 --- a/Simulation/SimuJobTransforms/python/HITtoRDO_Skeleton.py +++ b/Simulation/SimuJobTransforms/python/HITtoRDO_Skeleton.py @@ -6,10 +6,6 @@ from PyJobTransforms.CommonRunArgsToFlags import commonRunArgsToFlags from PyJobTransforms.TransformUtils import processPreExec, processPreInclude, processPostExec, processPostInclude from SimuJobTransforms.CommonSimulationSteering import specialConfigPreInclude, specialConfigPostInclude -# temporarily force no global config flags -from AthenaConfiguration import AllConfigFlags -del AllConfigFlags.ConfigFlags - # force no legacy job properties from AthenaCommon import JobProperties JobProperties.jobPropertiesDisallowed = True diff --git a/Simulation/SimuJobTransforms/python/ISF_Skeleton.py b/Simulation/SimuJobTransforms/python/ISF_Skeleton.py index 5a0f37654b08e2c467bd6f2fc18cf941ae1fe0f5..00f5986a9c7b3e95f73296066ba3204e52d97af9 100644 --- a/Simulation/SimuJobTransforms/python/ISF_Skeleton.py +++ b/Simulation/SimuJobTransforms/python/ISF_Skeleton.py @@ -5,10 +5,6 @@ from PyJobTransforms.CommonRunArgsToFlags import commonRunArgsToFlags from PyJobTransforms.TransformUtils import processPreExec, processPreInclude, processPostExec, processPostInclude from SimuJobTransforms.CommonSimulationSteering import CommonSimulationCfg, specialConfigPreInclude, specialConfigPostInclude -# temporarily force no global config flags -from AthenaConfiguration import AllConfigFlags -del AllConfigFlags.ConfigFlags - # force no legacy job properties from AthenaCommon import JobProperties JobProperties.jobPropertiesDisallowed = True diff --git a/Simulation/SimuJobTransforms/python/RDOMerge_Skeleton.py b/Simulation/SimuJobTransforms/python/RDOMerge_Skeleton.py index 1e26eb20eccb20ce9ecd210e242b371fcf6b6c13..212a782db1bfa8d96063d14fd9bf1845224d09ab 100644 --- a/Simulation/SimuJobTransforms/python/RDOMerge_Skeleton.py +++ b/Simulation/SimuJobTransforms/python/RDOMerge_Skeleton.py @@ -4,10 +4,6 @@ import sys from PyJobTransforms.CommonRunArgsToFlags import commonRunArgsToFlags from PyJobTransforms.TransformUtils import processPreExec, processPreInclude, processPostExec, processPostInclude -# temporarily force no global config flags -from AthenaConfiguration import AllConfigFlags -del AllConfigFlags.ConfigFlags - # force no legacy job properties from AthenaCommon import JobProperties JobProperties.jobPropertiesDisallowed = True diff --git a/Simulation/SimuJobTransforms/python/ReSimulation_Skeleton.py b/Simulation/SimuJobTransforms/python/ReSimulation_Skeleton.py index e9e59c822631f69b5b673910b0f2c7a9a80dae13..2dd92267c9d5556c16a4bae6d90f29d0a1b86a6b 100644 --- a/Simulation/SimuJobTransforms/python/ReSimulation_Skeleton.py +++ b/Simulation/SimuJobTransforms/python/ReSimulation_Skeleton.py @@ -5,10 +5,6 @@ from PyJobTransforms.CommonRunArgsToFlags import commonRunArgsToFlags from PyJobTransforms.TransformUtils import processPreExec, processPreInclude, processPostExec, processPostInclude from SimuJobTransforms.CommonSimulationSteering import CommonSimulationCfg, specialConfigPreInclude, specialConfigPostInclude -# temporarily force no global config flags -from AthenaConfiguration import AllConfigFlags -del AllConfigFlags.ConfigFlags - # force no legacy job properties from AthenaCommon import JobProperties JobProperties.jobPropertiesDisallowed = True diff --git a/Simulation/SimuJobTransforms/python/TestBeam_Skeleton.py b/Simulation/SimuJobTransforms/python/TestBeam_Skeleton.py index 5cd4898d8303693cc5758fd78f6f8cc3faff88ce..90fe218e690bfc1ce1591b2e2c5311ba8455f305 100644 --- a/Simulation/SimuJobTransforms/python/TestBeam_Skeleton.py +++ b/Simulation/SimuJobTransforms/python/TestBeam_Skeleton.py @@ -5,10 +5,6 @@ from PyJobTransforms.CommonRunArgsToFlags import commonRunArgsToFlags from PyJobTransforms.TransformUtils import processPreExec, processPreInclude, processPostExec, processPostInclude from SimuJobTransforms.CommonSimulationSteering import CommonSimulationCfg, specialConfigPreInclude, specialConfigPostInclude -# temporarily force no global config flags -from AthenaConfiguration import AllConfigFlags -del AllConfigFlags.ConfigFlags - # force no legacy job properties from AthenaCommon import JobProperties JobProperties.jobPropertiesDisallowed = True diff --git a/Simulation/SimulationConfig/python/SimConfigFlags.py b/Simulation/SimulationConfig/python/SimConfigFlags.py index 9bd717fcb047fc202d5c03f9bb58e67eb8d460f3..a7098218854fad33ca6d1f9804667b80c92d40ea 100644 --- a/Simulation/SimulationConfig/python/SimConfigFlags.py +++ b/Simulation/SimulationConfig/python/SimConfigFlags.py @@ -14,7 +14,7 @@ def createSimConfigFlags(): scf.addFlag("Sim.ParticleID", False) def _checkCalibrationRun(prevFlags): - if prevFlags.Sim.ISF.Simulator not in [SimulationFlavour.FullG4MT, SimulationFlavour.FullG4MT_QS, SimulationFlavour.PassBackG4MT, SimulationFlavour.AtlasG4] \ + if prevFlags.Sim.ISF.Simulator not in [SimulationFlavour.FullG4MT, SimulationFlavour.FullG4MT_QS, SimulationFlavour.PassBackG4MT, SimulationFlavour.AtlasG4, SimulationFlavour.AtlasG4_QS] \ or prevFlags.Sim.LArParameterization is not LArParameterization.NoFrozenShowers: return CalibrationRun.Off return CalibrationRun.DeadLAr diff --git a/Simulation/Tools/McEventCollectionFilter/src/SiliconHitsTruthRelink.cxx b/Simulation/Tools/McEventCollectionFilter/src/SiliconHitsTruthRelink.cxx index 3f3f9fb55b661089cfa5eddb6fb9a2db8de92c6e..f71778ffc3bf16e01845ba415d56fc1c72943ac6 100644 --- a/Simulation/Tools/McEventCollectionFilter/src/SiliconHitsTruthRelink.cxx +++ b/Simulation/Tools/McEventCollectionFilter/src/SiliconHitsTruthRelink.cxx @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2021 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2024 CERN for the benefit of the ATLAS collaboration */ #include "SiliconHitsTruthRelink.h" @@ -61,7 +61,7 @@ StatusCode SiliconHitsTruthRelink::execute(const EventContext &ctx) const currentBarcode = referenceBarcode; } HepMcParticleLink particleLink(currentBarcode, oldLink.eventIndex(), HepMcParticleLink::IS_EVENTNUM, ctx); - outputCollection->Emplace(lP1, lP2, energyLoss, meanTime, currentBarcode, id); + outputCollection->Emplace(lP1, lP2, energyLoss, meanTime, particleLink, id); } return StatusCode::SUCCESS; diff --git a/Tools/FullChainTransforms/python/FastChainSkeleton.py b/Tools/FullChainTransforms/python/FastChainSkeleton.py index 23db59cdf02b7d0dd433a6a5f74f30ebab1b6dcb..231c38a96e363fecec1a425dfb1c1cff0709f3dc 100644 --- a/Tools/FullChainTransforms/python/FastChainSkeleton.py +++ b/Tools/FullChainTransforms/python/FastChainSkeleton.py @@ -7,11 +7,6 @@ from AthenaConfiguration.MainServicesConfig import MainServicesCfg from AthenaPoolCnvSvc.PoolReadConfig import PoolReadCfg from SimuJobTransforms.CommonSimulationSteering import specialConfigPreInclude, specialConfigPostInclude - -# temporarily force no global config flags -from AthenaConfiguration import AllConfigFlags -del AllConfigFlags.ConfigFlags - # force no legacy job properties from AthenaCommon import JobProperties JobProperties.jobPropertiesDisallowed = True diff --git a/Tools/PyJobTransforms/python/HelloWorldSkeleton.py b/Tools/PyJobTransforms/python/HelloWorldSkeleton.py index 1b71f37919eb2f8b971b5ac3f2f4ba22f9248bd8..a298320a943cb1800fd5d16f5450f8e2bedf42fb 100644 --- a/Tools/PyJobTransforms/python/HelloWorldSkeleton.py +++ b/Tools/PyJobTransforms/python/HelloWorldSkeleton.py @@ -7,10 +7,6 @@ from PyJobTransforms.TransformUtils import processPreExec, processPreInclude, pr from AthExHelloWorld.HelloWorldConfig import HelloWorldCfg from AthenaConfiguration.MainServicesConfig import MainServicesCfg -# temporarily force no global config flags -from AthenaConfiguration import AllConfigFlags -del AllConfigFlags.ConfigFlags - # force no legacy job properties from AthenaCommon import JobProperties JobProperties.jobPropertiesDisallowed = True diff --git a/Tools/TrfTestsART/test/test_trf_aodmerge_serial_ca.sh b/Tools/TrfTestsART/test/test_trf_aodmerge_serial_ca.sh index 53e350f5a162017374112c153b775472895936cb..a799ad335c716d9c2518bf3866ab196c27ebc29c 100755 --- a/Tools/TrfTestsART/test/test_trf_aodmerge_serial_ca.sh +++ b/Tools/TrfTestsART/test/test_trf_aodmerge_serial_ca.sh @@ -3,6 +3,7 @@ # art-description: AODMerge_tf.py serial CA # art-type: grid # art-include: main/Athena +# art-include: 24.0/Athena AODMerge_tf.py --CA \ --inputAODFile /cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/Tier0ChainTests/mc16_13TeV.361107.PowhegPythia8EvtGen_AZNLOCTEQ6L1_Zmumu.recon.AOD.e3601_s3126_r12305/AOD.23662571._000001.pool.root.1,/cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/Tier0ChainTests/mc16_13TeV.361107.PowhegPythia8EvtGen_AZNLOCTEQ6L1_Zmumu.recon.AOD.e3601_s3126_r12305/AOD.23662571._000001.pool.root.1 \ diff --git a/Tools/TrfTestsART/test/test_trf_esdmerge_serial_ca.sh b/Tools/TrfTestsART/test/test_trf_esdmerge_serial_ca.sh index 0d659d50d48ce4748b58bf3df3c587e7da714d37..3087a0a4c9e4d7d15c4516fb31aa1b753ae2a35e 100755 --- a/Tools/TrfTestsART/test/test_trf_esdmerge_serial_ca.sh +++ b/Tools/TrfTestsART/test/test_trf_esdmerge_serial_ca.sh @@ -3,7 +3,7 @@ # art-description: ESDMerge_tf.py serial CA # art-type: grid # art-include: main/Athena -# art-include: main/24.0 +# art-include: 24.0/Athena ESDMerge_tf.py --CA \ --inputESDFile /cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/Tier0ChainTests/DESDM_MCP.26614755._001203.pool.root.1,/cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/Tier0ChainTests/DESDM_MCP.26614755._001208.pool.root.1 \ diff --git a/Tools/WorkflowTestRunner/python/Checks.py b/Tools/WorkflowTestRunner/python/Checks.py index c3437828ec212a2e70325d948136bbe8f465990b..69d8ae90ad5b220efa7c895de656bcc3dcc5f498 100644 --- a/Tools/WorkflowTestRunner/python/Checks.py +++ b/Tools/WorkflowTestRunner/python/Checks.py @@ -40,14 +40,13 @@ class FailedOrPassedCheck(WorkflowCheck): self.logger.info("-----------------------------------------------------") if errors: - self.logger.info(f"{step} validation test step ERRORS") errors = list(dict.fromkeys(errors)) for e in errors: self.logger.info(f" {e}") self.logger.info("-----------------------------------------------------") - if counter: + if counter and not errors: self.logger.info(f"{step} validation test step successful") if step == "DQHistogramMerge": @@ -110,6 +109,7 @@ class FrozenTier0PolicyCheck(WorkflowCheck): super().__init__(setup) self.format = input_format self.max_events = str(max_events) + self.detailed_comparison = setup.detailed_comparison def run(self, test: WorkflowTest) -> bool: self.logger.info("---------------------------------------------------------------------------------------") @@ -173,7 +173,8 @@ class FrozenTier0PolicyCheck(WorkflowCheck): diff_root_list = " ".join(diff_root_list) diff_root_mode = "--branches-of-interest" if branches_of_interest else "--ignore-leaves" - comparison_command = f"acmd.py diff-root {reference_file} {validation_file} --order-trees --nan-equal --exact-branches --mode semi-detailed --error-mode resilient {diff_root_mode} {diff_root_list} --entries {self.max_events} > {log_file} 2>&1" + comparison_mode = "detailed" if self.detailed_comparison else "semi-detailed" + comparison_command = f"acmd.py diff-root {reference_file} {validation_file} --order-trees --nan-equal --exact-branches --mode {comparison_mode} --error-mode resilient {diff_root_mode} {diff_root_list} --entries {self.max_events} > {log_file} 2>&1" output, error = subprocess.Popen(["/bin/bash", "-c", comparison_command], stdout=subprocess.PIPE, stderr=subprocess.PIPE).communicate() output, error = output.decode("utf-8"), error.decode("utf-8") diff --git a/Tools/WorkflowTestRunner/python/ScriptUtils.py b/Tools/WorkflowTestRunner/python/ScriptUtils.py index 12a5b2e9c6069b889c6b4e706ac83a097edf7e5d..1eeb8242d49262e85ff7d2c0cc479cfa6e85bf03 100644 --- a/Tools/WorkflowTestRunner/python/ScriptUtils.py +++ b/Tools/WorkflowTestRunner/python/ScriptUtils.py @@ -102,6 +102,8 @@ def setup_parser() -> ArgumentParser: The file should contain one regexp per line.""") advanced.add_argument("--no-output-checks", action="store_true", dest="disable_output_checks", default=False, help="Disable output checks") + advanced.add_argument("--detailed-comparison", action="store_true", dest="detailed_comparison", default=False, + help="Detailed output comparison") tests = parser.add_argument_group("tests") tests.add_argument("-t", "--test", type=str, dest="test", default=None, @@ -145,6 +147,7 @@ def get_test_setup(name: str, options: Namespace, log: logging.Logger) -> TestSe setup.parallel_execution = options.fast_mode setup.disable_output_checks = options.disable_output_checks setup.custom_threads = options.threads + setup.detailed_comparison = options.detailed_comparison # not in global setup: # options.extra_args diff --git a/Tools/WorkflowTestRunner/python/Test.py b/Tools/WorkflowTestRunner/python/Test.py index b7a491b92e97a62ea5ab8e6aabee515a78aa3b43..e3479b39c775da3f1250958c5f9a4cc6d4cd9c01 100644 --- a/Tools/WorkflowTestRunner/python/Test.py +++ b/Tools/WorkflowTestRunner/python/Test.py @@ -31,6 +31,7 @@ class TestSetup: self.parallel_execution = False self.disable_output_checks = False self.custom_threads = None + self.detailed_comparison = False def setup_release(self, reference=None, validation=None) -> None: if reference and validation: diff --git a/Tracking/Acts/ActsConfig/share/ActsTrackingComponents.ref b/Tracking/Acts/ActsConfig/share/ActsTrackingComponents.ref index 1a34f33b317b4fbad01cb42166884e2a741bcf07..80c0400dfb038ac41a626df98f92c2af900a9f83 100644 --- a/Tracking/Acts/ActsConfig/share/ActsTrackingComponents.ref +++ b/Tracking/Acts/ActsConfig/share/ActsTrackingComponents.ref @@ -4,18 +4,19 @@ Py:AthConfigFlags INFO cloning flags and replacing Tracking.ActiveConfig by T ************************************************************************ ******************** Tracking reconstruction Config ******************** Active Config is -Flag Name : Value Tracking.ActiveConfig.doAthenaAmbiguityResolution : True Tracking.ActiveConfig.doAthenaCluster : True Tracking.ActiveConfig.doAthenaSeed : True Tracking.ActiveConfig.doAthenaSpacePoint : True Tracking.ActiveConfig.doAthenaToActsCluster : False Tracking.ActiveConfig.doAthenaToActsSpacePoint : False -Tracking.ActiveConfig.doAthenaToActsTrack : False +Tracking.ActiveConfig.doAthenaToActsTrack : False Tracking.ActiveConfig.doAthenaTrack : True Flag categories that can be loaded dynamically Category : Generator name : Defined in -Flag Name : Value +Flag categories that are redirected by the cloneAndReplace +Tracking.ActiveConfig points to Tracking.ITkMainPass +Tracking.ITkMainPass points to nothing Tracking.ActiveConfig.doActsAmbiguityResolution : False Tracking.ActiveConfig.doActsCluster : False Tracking.ActiveConfig.doActsSeed : False @@ -28,24 +29,28 @@ Tracking.ActiveConfig.doActsToAthenaTrack : False Tracking.ActiveConfig.doActsTrack : False Flag categories that can be loaded dynamically Category : Generator name : Defined in +Flag categories that are redirected by the cloneAndReplace +Tracking.ActiveConfig points to Tracking.ITkMainPass +Tracking.ITkMainPass points to nothing ************************************************************************ Py:AthConfigFlags INFO cloning flags and replacing Tracking.ActiveConfig by Tracking.ITkActsPass ************************************************************************ ******************** Tracking reconstruction Config ******************** Active Config is Acts -Flag Name : Value Tracking.ActiveConfig.doAthenaAmbiguityResolution : False Tracking.ActiveConfig.doAthenaCluster : False Tracking.ActiveConfig.doAthenaSeed : False Tracking.ActiveConfig.doAthenaSpacePoint : False Tracking.ActiveConfig.doAthenaToActsCluster : False Tracking.ActiveConfig.doAthenaToActsSpacePoint : False -Tracking.ActiveConfig.doAthenaToActsTrack : False +Tracking.ActiveConfig.doAthenaToActsTrack : False Tracking.ActiveConfig.doAthenaTrack : False Flag categories that can be loaded dynamically Category : Generator name : Defined in -Flag Name : Value +Flag categories that are redirected by the cloneAndReplace +Tracking.ActiveConfig points to Tracking.ITkActsPass +Tracking.ITkActsPass points to nothing Tracking.ActiveConfig.doActsAmbiguityResolution : False [function] Tracking.ActiveConfig.doActsCluster : True Tracking.ActiveConfig.doActsSeed : True @@ -58,13 +63,15 @@ Tracking.ActiveConfig.doActsToAthenaTrack : False Tracking.ActiveConfig.doActsTrack : True Flag categories that can be loaded dynamically Category : Generator name : Defined in +Flag categories that are redirected by the cloneAndReplace +Tracking.ActiveConfig points to Tracking.ITkActsPass +Tracking.ITkActsPass points to nothing ************************************************************************ Py:AthConfigFlags INFO cloning flags and replacing Tracking.ActiveConfig by Tracking.ITkValidateActsClustersPass ************************************************************************ ******************** Tracking reconstruction Config ******************** Active Config is ValidateActsClusters -Flag Name : Value Tracking.ActiveConfig.doAthenaAmbiguityResolution : True Tracking.ActiveConfig.doAthenaCluster : False Tracking.ActiveConfig.doAthenaSeed : True @@ -75,7 +82,9 @@ Tracking.ActiveConfig.doAthenaToActsTrack : False Tracking.ActiveConfig.doAthenaTrack : True Flag categories that can be loaded dynamically Category : Generator name : Defined in -Flag Name : Value +Flag categories that are redirected by the cloneAndReplace +Tracking.ActiveConfig points to Tracking.ITkValidateActsClustersPass +Tracking.ITkValidateActsClustersPass points to nothing Tracking.ActiveConfig.doActsAmbiguityResolution : False Tracking.ActiveConfig.doActsCluster : True Tracking.ActiveConfig.doActsSeed : False @@ -88,13 +97,15 @@ Tracking.ActiveConfig.doActsToAthenaTrack : False Tracking.ActiveConfig.doActsTrack : False Flag categories that can be loaded dynamically Category : Generator name : Defined in +Flag categories that are redirected by the cloneAndReplace +Tracking.ActiveConfig points to Tracking.ITkValidateActsClustersPass +Tracking.ITkValidateActsClustersPass points to nothing ************************************************************************ Py:AthConfigFlags INFO cloning flags and replacing Tracking.ActiveConfig by Tracking.ITkValidateActsSpacePointsPass ************************************************************************ ******************** Tracking reconstruction Config ******************** Active Config is ValidateActsSpacePoints -Flag Name : Value Tracking.ActiveConfig.doAthenaAmbiguityResolution : True Tracking.ActiveConfig.doAthenaCluster : True Tracking.ActiveConfig.doAthenaSeed : False @@ -105,7 +116,9 @@ Tracking.ActiveConfig.doAthenaToActsTrack : False Tracking.ActiveConfig.doAthenaTrack : True Flag categories that can be loaded dynamically Category : Generator name : Defined in -Flag Name : Value +Flag categories that are redirected by the cloneAndReplace +Tracking.ActiveConfig points to Tracking.ITkValidateActsSpacePointsPass +Tracking.ITkValidateActsSpacePointsPass points to nothing Tracking.ActiveConfig.doActsAmbiguityResolution : False Tracking.ActiveConfig.doActsCluster : False Tracking.ActiveConfig.doActsSeed : False @@ -118,13 +131,15 @@ Tracking.ActiveConfig.doActsToAthenaTrack : False Tracking.ActiveConfig.doActsTrack : False Flag categories that can be loaded dynamically Category : Generator name : Defined in +Flag categories that are redirected by the cloneAndReplace +Tracking.ActiveConfig points to Tracking.ITkValidateActsSpacePointsPass +Tracking.ITkValidateActsSpacePointsPass points to nothing ************************************************************************ Py:AthConfigFlags INFO cloning flags and replacing Tracking.ActiveConfig by Tracking.ITkValidateActsSeedsPass ************************************************************************ ******************** Tracking reconstruction Config ******************** Active Config is ValidateActsSeeds -Flag Name : Value Tracking.ActiveConfig.doAthenaAmbiguityResolution : True Tracking.ActiveConfig.doAthenaCluster : True Tracking.ActiveConfig.doAthenaSeed : False @@ -135,7 +150,9 @@ Tracking.ActiveConfig.doAthenaToActsTrack : False Tracking.ActiveConfig.doAthenaTrack : True Flag categories that can be loaded dynamically Category : Generator name : Defined in -Flag Name : Value +Flag categories that are redirected by the cloneAndReplace +Tracking.ActiveConfig points to Tracking.ITkValidateActsSeedsPass +Tracking.ITkValidateActsSeedsPass points to nothing Tracking.ActiveConfig.doActsAmbiguityResolution : False Tracking.ActiveConfig.doActsCluster : False Tracking.ActiveConfig.doActsSeed : False @@ -148,13 +165,15 @@ Tracking.ActiveConfig.doActsToAthenaTrack : False Tracking.ActiveConfig.doActsTrack : False Flag categories that can be loaded dynamically Category : Generator name : Defined in +Flag categories that are redirected by the cloneAndReplace +Tracking.ActiveConfig points to Tracking.ITkValidateActsSeedsPass +Tracking.ITkValidateActsSeedsPass points to nothing ************************************************************************ Py:AthConfigFlags INFO cloning flags and replacing Tracking.ActiveConfig by Tracking.ITkValidateActsTracksPass ************************************************************************ ******************** Tracking reconstruction Config ******************** Active Config is ValidateActsTracks -Flag Name : Value Tracking.ActiveConfig.doAthenaAmbiguityResolution : True [function] Tracking.ActiveConfig.doAthenaCluster : True Tracking.ActiveConfig.doAthenaSeed : False @@ -165,7 +184,9 @@ Tracking.ActiveConfig.doAthenaToActsTrack : False Tracking.ActiveConfig.doAthenaTrack : False Flag categories that can be loaded dynamically Category : Generator name : Defined in -Flag Name : Value +Flag categories that are redirected by the cloneAndReplace +Tracking.ActiveConfig points to Tracking.ITkValidateActsTracksPass +Tracking.ITkValidateActsTracksPass points to nothing Tracking.ActiveConfig.doActsAmbiguityResolution : False [function] Tracking.ActiveConfig.doActsCluster : False Tracking.ActiveConfig.doActsSeed : True @@ -178,13 +199,15 @@ Tracking.ActiveConfig.doActsToAthenaTrack : True [function] Tracking.ActiveConfig.doActsTrack : True Flag categories that can be loaded dynamically Category : Generator name : Defined in +Flag categories that are redirected by the cloneAndReplace +Tracking.ActiveConfig points to Tracking.ITkValidateActsTracksPass +Tracking.ITkValidateActsTracksPass points to nothing ************************************************************************ Py:AthConfigFlags INFO cloning flags and replacing Tracking.ActiveConfig by Tracking.ITkValidateActsAmbiguityResolutionPass ************************************************************************ ******************** Tracking reconstruction Config ******************** Active Config is ValidateActsAmbiguityResolution -Flag Name : Value Tracking.ActiveConfig.doAthenaAmbiguityResolution : False Tracking.ActiveConfig.doAthenaCluster : True Tracking.ActiveConfig.doAthenaSeed : True @@ -195,7 +218,9 @@ Tracking.ActiveConfig.doAthenaToActsTrack : True Tracking.ActiveConfig.doAthenaTrack : True Flag categories that can be loaded dynamically Category : Generator name : Defined in -Flag Name : Value +Flag categories that are redirected by the cloneAndReplace +Tracking.ActiveConfig points to Tracking.ITkValidateActsAmbiguityResolutionPass +Tracking.ITkValidateActsAmbiguityResolutionPass points to nothing Tracking.ActiveConfig.doActsAmbiguityResolution : True Tracking.ActiveConfig.doActsCluster : False Tracking.ActiveConfig.doActsSeed : False @@ -208,13 +233,15 @@ Tracking.ActiveConfig.doActsToAthenaTrack : False Tracking.ActiveConfig.doActsTrack : False Flag categories that can be loaded dynamically Category : Generator name : Defined in +Flag categories that are redirected by the cloneAndReplace +Tracking.ActiveConfig points to Tracking.ITkValidateActsAmbiguityResolutionPass +Tracking.ITkValidateActsAmbiguityResolutionPass points to nothing ************************************************************************ Py:AthConfigFlags INFO cloning flags and replacing Tracking.ActiveConfig by Tracking.ITkActsBenchmarkSpotPass ************************************************************************ ******************** Tracking reconstruction Config ******************** Active Config is ActsBenchmarkSpot -Flag Name : Value Tracking.ActiveConfig.doAthenaAmbiguityResolution : False Tracking.ActiveConfig.doAthenaCluster : True Tracking.ActiveConfig.doAthenaSeed : False @@ -225,7 +252,9 @@ Tracking.ActiveConfig.doAthenaToActsTrack : False Tracking.ActiveConfig.doAthenaTrack : False Flag categories that can be loaded dynamically Category : Generator name : Defined in -Flag Name : Value +Flag categories that are redirected by the cloneAndReplace +Tracking.ActiveConfig points to Tracking.ITkActsBenchmarkSpotPass +Tracking.ITkActsBenchmarkSpotPass points to nothing Tracking.ActiveConfig.doActsAmbiguityResolution : True Tracking.ActiveConfig.doActsCluster : True Tracking.ActiveConfig.doActsSeed : True @@ -238,13 +267,15 @@ Tracking.ActiveConfig.doActsToAthenaTrack : False Tracking.ActiveConfig.doActsTrack : True Flag categories that can be loaded dynamically Category : Generator name : Defined in +Flag categories that are redirected by the cloneAndReplace +Tracking.ActiveConfig points to Tracking.ITkActsBenchmarkSpotPass +Tracking.ITkActsBenchmarkSpotPass points to nothing ************************************************************************ Py:AthConfigFlags INFO cloning flags and replacing Tracking.ActiveConfig by Tracking.ITkValidateActsTracksPass ************************************************************************ ******************** Tracking reconstruction Config ******************** Active Config is ValidateActsResolvedTracks -Flag Name : Value Tracking.ActiveConfig.doAthenaAmbiguityResolution : False [function] Tracking.ActiveConfig.doAthenaCluster : True Tracking.ActiveConfig.doAthenaSeed : False @@ -255,7 +286,9 @@ Tracking.ActiveConfig.doAthenaToActsTrack : False Tracking.ActiveConfig.doAthenaTrack : False Flag categories that can be loaded dynamically Category : Generator name : Defined in -Flag Name : Value +Flag categories that are redirected by the cloneAndReplace +Tracking.ActiveConfig points to Tracking.ITkValidateActsTracksPass +Tracking.ITkValidateActsTracksPass points to nothing Tracking.ActiveConfig.doActsAmbiguityResolution : True [function] Tracking.ActiveConfig.doActsCluster : False Tracking.ActiveConfig.doActsSeed : True @@ -268,13 +301,15 @@ Tracking.ActiveConfig.doActsToAthenaTrack : False [function] Tracking.ActiveConfig.doActsTrack : True Flag categories that can be loaded dynamically Category : Generator name : Defined in +Flag categories that are redirected by the cloneAndReplace +Tracking.ActiveConfig points to Tracking.ITkValidateActsTracksPass +Tracking.ITkValidateActsTracksPass points to nothing ************************************************************************ Py:AthConfigFlags INFO cloning flags and replacing Tracking.ActiveConfig by Tracking.ITkActsConversionPass ************************************************************************ ******************** Tracking reconstruction Config ******************** Active Config is ActsConversion -Flag Name : Value Tracking.ActiveConfig.doAthenaAmbiguityResolution : False Tracking.ActiveConfig.doAthenaCluster : False Tracking.ActiveConfig.doAthenaSeed : False @@ -285,7 +320,9 @@ Tracking.ActiveConfig.doAthenaToActsTrack : False Tracking.ActiveConfig.doAthenaTrack : False Flag categories that can be loaded dynamically Category : Generator name : Defined in -Flag Name : Value +Flag categories that are redirected by the cloneAndReplace +Tracking.ActiveConfig points to Tracking.ITkActsConversionPass +Tracking.ITkActsConversionPass points to nothing Tracking.ActiveConfig.doActsAmbiguityResolution : True [function] Tracking.ActiveConfig.doActsCluster : True Tracking.ActiveConfig.doActsSeed : True @@ -298,4 +335,7 @@ Tracking.ActiveConfig.doActsToAthenaTrack : False Tracking.ActiveConfig.doActsTrack : True Flag categories that can be loaded dynamically Category : Generator name : Defined in +Flag categories that are redirected by the cloneAndReplace +Tracking.ActiveConfig points to Tracking.ITkActsConversionPass +Tracking.ITkActsConversionPass points to nothing ************************************************************************ diff --git a/Tracking/TrkVertexFitter/TrkVertexSeedFinderTools/CMakeLists.txt b/Tracking/TrkVertexFitter/TrkVertexSeedFinderTools/CMakeLists.txt index 13d3a73f412295138922f208740506f5f911d386..527c6b74823bcdcf550033e40b56c15a60aa5ef9 100644 --- a/Tracking/TrkVertexFitter/TrkVertexSeedFinderTools/CMakeLists.txt +++ b/Tracking/TrkVertexFitter/TrkVertexSeedFinderTools/CMakeLists.txt @@ -26,7 +26,7 @@ atlas_add_component( TrkVertexSeedFinderTools function( run_seed_test testName ) atlas_add_test( ${testName} SCRIPT python -m TrkConfig.TrkVertexSeedFinderToolsConfig --finder ${testName} - PROPERTIES TIMEOUT 300 + PRIVATE_WORKING_DIRECTORY LOG_SELECT_PATTERN "^testalg1 " ) endfunction (run_seed_test) diff --git a/Trigger/TrigHypothesis/TrigHLTJetHypo/python/prefilter_maxmult.py b/Trigger/TrigHypothesis/TrigHLTJetHypo/python/prefilter_maxmult.py index a01c73d940f365359dbdd929e91add7cb4930c5b..a631db5ddd69561b9fb943bac58faaaa2d09f028 100644 --- a/Trigger/TrigHypothesis/TrigHLTJetHypo/python/prefilter_maxmult.py +++ b/Trigger/TrigHypothesis/TrigHLTJetHypo/python/prefilter_maxmult.py @@ -1,6 +1,7 @@ -# Copyright (C) 2002-2023 CERN for the benefit of the ATLAS collaboration +# Copyright (C) 2002-2024 CERN for the benefit of the ATLAS collaboration from TrigHLTJetHypo.FastReductionAlgToolFactory import toolfactory +from TrigHLTJetHypo.ConditionDefaults import defaults from AthenaCommon.Logging import logging from AthenaCommon.Constants import DEBUG @@ -10,13 +11,18 @@ import re logger = logging.getLogger( __name__) logger.setLevel(DEBUG) -pattern = r'^MAXMULT(?P<end>\d+)$' - +pattern = r'^MAXMULT(?P<end>\d+)(?P<eta>[jacf]*)$' rgx = re.compile(pattern) +etaRangeAbbrev = { + "j":"0eta320", # default + "a":"0eta490", + "c":"0eta240", + "f":"320eta490" +} def prefilter_maxmult(pf_string): - """calculate the parameters needed to generate a RangeFilter config + """calculate the parameters needed to generate a MaxMultFilter config AlgTool starting from the prefilter substring if it appears in the chain dict""" @@ -27,8 +33,16 @@ def prefilter_maxmult(pf_string): groupdict = m.groupdict() vals = {} - vals['end'] = int(groupdict['end']) + # eta region + eta_region = groupdict['eta'] + if not eta_region: eta_region = 'j' + eta_sel = etaRangeAbbrev[eta_region] + lo, hi = eta_sel.split('eta') + vals = defaults('eta', lo=lo, hi=hi) + + # jet multiplicity + vals['end'] = int(groupdict['end']) toolclass, name = toolfactory('MaxMultFilterConfigTool') vals['name'] = name diff --git a/Trigger/TrigHypothesis/TrigHLTJetHypo/src/MaxMultFilter.cxx b/Trigger/TrigHypothesis/TrigHLTJetHypo/src/MaxMultFilter.cxx index 89413d378f9f40c391440ea61f3dde5cffa444ef..d3567c9bbcad638d7576b4eb060e8aa2c6117489 100644 --- a/Trigger/TrigHypothesis/TrigHLTJetHypo/src/MaxMultFilter.cxx +++ b/Trigger/TrigHypothesis/TrigHLTJetHypo/src/MaxMultFilter.cxx @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2023 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2024 CERN for the benefit of the ATLAS collaboration */ #include <algorithm> @@ -8,36 +8,35 @@ #include "./HypoJetPreds.h" // HypoJetPtGreater -MaxMultFilter::MaxMultFilter(std::size_t end): - m_end(end) { - m_nToSort = end; -} - +MaxMultFilter::MaxMultFilter(std::size_t end, double etaMin, double etaMax): + m_end(end), m_etaMin(etaMin), m_etaMax(etaMax), m_nToSort(end) {} HypoJetVector MaxMultFilter::filter(const HypoJetVector& jv, const std::unique_ptr<ITrigJetHypoInfoCollector>&) const { - - auto nToSort = m_nToSort; - if (m_nToSort > jv.size()) { - nToSort = jv.size(); - } - - auto filtered = HypoJetVector(jv.cbegin(), jv.cend()); - + + auto filtered = HypoJetVector(); + std::copy_if(jv.begin(), jv.end(), std::back_inserter(filtered), + [this](const pHypoJet& jp){ + return (std::abs(jp->eta())<this->m_etaMax && std::abs(jp->eta())>this->m_etaMin);} ); + + auto nToSort = std::min(m_nToSort, filtered.size()); + std::partial_sort(filtered.begin(), filtered.begin() + nToSort, filtered.end(), HypoJetPtGreater()); - return HypoJetVector(filtered.begin(), - filtered.begin() + nToSort); + filtered.resize(nToSort); + + return filtered; } std::string MaxMultFilter::toString() const { std::stringstream ss; const void* address = static_cast<const void*>(this); ss << "MaxMultFilter: (" << address << ") " + << " eta range [" << m_etaMin << ", " << m_etaMax << "]:" << " end " << m_end << '\n'; return ss.str(); } diff --git a/Trigger/TrigHypothesis/TrigHLTJetHypo/src/MaxMultFilter.h b/Trigger/TrigHypothesis/TrigHLTJetHypo/src/MaxMultFilter.h index aeda7e5fd5566b8696d16b63ac2d5b279f9c5ea9..982944721e12757db26a44aff33a6e12494decf2 100644 --- a/Trigger/TrigHypothesis/TrigHLTJetHypo/src/MaxMultFilter.h +++ b/Trigger/TrigHypothesis/TrigHLTJetHypo/src/MaxMultFilter.h @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2023 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2024 CERN for the benefit of the ATLAS collaboration */ #ifndef TRIGHLTJETHYPO_MAXMULTFILTER_H @@ -13,7 +13,7 @@ class MaxMultFilter: public IHypoJetVectorFilter { public: MaxMultFilter(){}; - MaxMultFilter(std::size_t end); + MaxMultFilter(std::size_t end, double etaMin, double etaMax); // find the subset of jets which satisfy a sequence of ranges virtual HypoJetVector @@ -21,10 +21,12 @@ class MaxMultFilter: public IHypoJetVectorFilter { const std::unique_ptr<ITrigJetHypoInfoCollector>& ) const override; - virtual std::string toString() const override; + virtual std::string toString() const override; private: - std::size_t m_end{0}; - long unsigned int m_nToSort{0u}; + const std::size_t m_end{0}; + const double m_etaMin{0.}; + const double m_etaMax{0.}; + const long unsigned int m_nToSort{0u}; }; std::ostream& operator<<(std::ostream&, const MaxMultFilter&); diff --git a/Trigger/TrigHypothesis/TrigHLTJetHypo/src/TrigJetHypoToolConfig_maxmultfilter.cxx b/Trigger/TrigHypothesis/TrigHLTJetHypo/src/TrigJetHypoToolConfig_maxmultfilter.cxx index 5338d5ec8c548408a462d8e667dd7857f4179598..03e0a69551d557abcc025fd9cbb9d8947ca4387c 100644 --- a/Trigger/TrigHypothesis/TrigHLTJetHypo/src/TrigJetHypoToolConfig_maxmultfilter.cxx +++ b/Trigger/TrigHypothesis/TrigHLTJetHypo/src/TrigJetHypoToolConfig_maxmultfilter.cxx @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2023 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2024 CERN for the benefit of the ATLAS collaboration */ /* @@ -28,16 +28,28 @@ StatusCode TrigJetHypoToolConfig_maxmultfilter::initialize() { FilterPtr TrigJetHypoToolConfig_maxmultfilter::getHypoJetVectorFilter() const { - /* create and return a RangeFilter with the configure range limits.*/ + /* create and return a MaxMultFilter with the configured range limits.*/ FilterPtr fp = std::unique_ptr<IHypoJetVectorFilter>(nullptr); - fp.reset(new MaxMultFilter(m_end)); + auto a2d = ArgStrToDouble(); + fp.reset(new MaxMultFilter(m_end, a2d(m_min), a2d(m_max))); return fp; } StatusCode TrigJetHypoToolConfig_maxmultfilter::checkVals() const { - if (m_end < 1u) {ATH_MSG_ERROR("MaxMultFilter < 1"); + auto a2d = ArgStrToDouble(); + + auto min_val = a2d(m_min); + auto max_val = a2d(m_max); + + if (min_val > max_val){ + ATH_MSG_ERROR(" min eta > max eta: " << min_val << max_val); + return StatusCode::FAILURE; + } + + if (m_end < 1u) { + ATH_MSG_ERROR("MaxMultFilter < 1: " << m_end); return StatusCode::FAILURE; } return StatusCode::SUCCESS; diff --git a/Trigger/TrigHypothesis/TrigHLTJetHypo/src/TrigJetHypoToolConfig_maxmultfilter.h b/Trigger/TrigHypothesis/TrigHLTJetHypo/src/TrigJetHypoToolConfig_maxmultfilter.h index 5fa272503997a71120f2d85f036db1b5fb21202d..8fdb7720f3f9dc19ce32b6d8a5951101460eea05 100644 --- a/Trigger/TrigHypothesis/TrigHLTJetHypo/src/TrigJetHypoToolConfig_maxmultfilter.h +++ b/Trigger/TrigHypothesis/TrigHLTJetHypo/src/TrigJetHypoToolConfig_maxmultfilter.h @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2023 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2024 CERN for the benefit of the ATLAS collaboration */ #ifndef TRIGJETHYPOTOOLCONFIG_MAXMULTFILTER_H @@ -7,9 +7,10 @@ #include "ITrigHypoJetVectorFilterConfig.h" #include "AthenaBaseComps/AthAlgTool.h" +#include "./ArgStrToDouble.h" /* - * maxmult filter - orders jets (currently by pt), and returns + * maxmult filter - filters jets by some eta condition, orders them in pt, and returns * iterators to the 0 to end / N positions of the ordered container, if N (number of jets) < max mult requested. */ @@ -27,11 +28,12 @@ public: private: - //Gaudi::Property<std::size_t> - //m_begin{this, "begin", {0u}, "first position in range"}; - - Gaudi::Property<std::size_t> - m_end{this, "end", {0u}, "end (last + 1) position in range"}; + Gaudi::Property<std::size_t> + m_end{this, "end", {0u}, "end (last + 1) position in range"}; + Gaudi::Property<std::string> + m_min{this, "min", {"0."}, "Abs eta min for eta region"}; + Gaudi::Property<std::string> + m_max{this, "max", {"inf"}, "Abs eta max for eta region"}; StatusCode checkVals() const; diff --git a/Trigger/TrigMonitoring/TrigBjetMonitoring/python/TrigBjetMonitorAlgorithm.py b/Trigger/TrigMonitoring/TrigBjetMonitoring/python/TrigBjetMonitorAlgorithm.py index 384e4692630dbfa0c2ec91a51c6186d70a6c1269..315a07b047145914a94dac4f7e725617aa94b5b2 100644 --- a/Trigger/TrigMonitoring/TrigBjetMonitoring/python/TrigBjetMonitorAlgorithm.py +++ b/Trigger/TrigMonitoring/TrigBjetMonitoring/python/TrigBjetMonitorAlgorithm.py @@ -216,6 +216,15 @@ def TrigBjetMonConfig(inputFlags): BjetMonGroup.defineHistogram(HistName,type='TH2F',title='RelPt vs GN1 weight;GN1 weight;RelPt', path='Shifter/'+chain[2:],xbins=20,xmin=-20.0,xmax=+20.0,ybins=20,ymin=0.,ymax=20.) + HistName = 'wGN2_' + chain[2:] + ',RelPt_' + chain[2:] + if chain[0:1] == "E" : + BjetMonGroup.defineHistogram(HistName,type='TH2F',title='RelPt vs GN2 weight;GN2 weight;RelPt', + path='Expert/'+chain[2:],xbins=20,xmin=-20.0,xmax=+20.0,ybins=20,ymin=0.,ymax=20.) + + if chain[0:1] == "S" : + BjetMonGroup.defineHistogram(HistName,type='TH2F',title='RelPt vs GN2 weight;GN2 weight;RelPt', + path='Shifter/'+chain[2:],xbins=20,xmin=-20.0,xmax=+20.0,ybins=20,ymin=0.,ymax=20.) + HistName = 'DeltaR_' + chain[2:] if chain[0:1] == "E" : @@ -459,68 +468,6 @@ def TrigBjetMonConfig(inputFlags): # b-tagging quantities - - HistName = 'xMVtx_tr_' + chain[2:] - if chain[0:1] == "E" : - BjetMonGroup.defineHistogram(HistName, title='SV1 mass distribution;SV1 mass;Events', - path='Expert/'+chain[2:],xbins=50,xmin=0.0,xmax=10.0) - if chain[0:1] == "S" : - BjetMonGroup.defineHistogram(HistName, title='SV1 mass distribution;SV1 mass;Events', - path='Shifter/'+chain[2:],xbins=50,xmin=0.0,xmax=10.0) - - HistName = 'xEVtx_tr_' + chain[2:] - if chain[0:1] == "E" : - BjetMonGroup.defineHistogram(HistName, title='SV1 E-fraction distribution;SV1 E-fraction;Events', - path='Expert/'+chain[2:],xbins=50,xmin=0.0,xmax=1.0) - if chain[0:1] == "S" : - BjetMonGroup.defineHistogram(HistName, title='SV1 E-fraction distribution;SV1 E-fraction;Events', - path='Shifter/'+chain[2:],xbins=50,xmin=0.0,xmax=1.0) - - HistName = 'xNVtx_tr_' + chain[2:] - if chain[0:1] == "E" : - BjetMonGroup.defineHistogram(HistName, title='Distribution of number of 2-track SV1;Number of 2-track SV1;Events', - path='Expert/'+chain[2:],xbins=40,xmin=0.0,xmax=40.0) - if chain[0:1] == "S" : - BjetMonGroup.defineHistogram(HistName, title='Distribution of number of 2-track SV1;Number of 2-track SV1;Events', - path='Shifter/'+chain[2:],xbins=40,xmin=0.0,xmax=40.0) - - - HistName = 'JFxMVtx_tr_' + chain[2:] - if chain[0:1] == "E" : - BjetMonGroup.defineHistogram(HistName, title='JF mass distribution;JF mass;Events', - path='Expert/'+chain[2:],xbins=50,xmin=0.0,xmax=10.0) - if chain[0:1] == "S" : - BjetMonGroup.defineHistogram(HistName, title='JF mass distribution;JF mass;Events', - path='Shifter/'+chain[2:],xbins=50,xmin=0.0,xmax=10.0) - - HistName = 'JFxEVtx_tr_' + chain[2:] - if chain[0:1] == "E" : - BjetMonGroup.defineHistogram(HistName, title='JF E-fraction distribution;JF E-fraction;Events', - path='Expert/'+chain[2:],xbins=50,xmin=0.0,xmax=1.0) - if chain[0:1] == "S" : - BjetMonGroup.defineHistogram(HistName, title='JF E-fraction distribution;JF E-fraction;Events', - path='Shifter/'+chain[2:],xbins=50,xmin=0.0,xmax=1.0) - - - HistName = 'JFxSig_tr_' + chain[2:] - if chain[0:1] == "E" : - BjetMonGroup.defineHistogram(HistName, title='JF 3d significance distribution;JF 3d significance;Events', - path='Expert/'+chain[2:],xbins=50,xmin=0.0,xmax=5.0) - if chain[0:1] == "S" : - BjetMonGroup.defineHistogram(HistName, title='JF 3d significance distribution;JF 3d significance;Events', - path='Shifter/'+chain[2:],xbins=50,xmin=0.0,xmax=5.0) - - - HistName = 'JFxNVtx_tr_' + chain[2:] - if chain[0:1] == "E" : - BjetMonGroup.defineHistogram(HistName, title='Distribution of number of 2-track JFVtx;Number of 2-track JFVtx;Events', - path='Expert/'+chain[2:],xbins=40,xmin=0.0,xmax=40.0) - if chain[0:1] == "S" : - BjetMonGroup.defineHistogram(HistName, title='Distribution of number of 2-track JFVtx;Number of 2-track JFVtx;Events', - path='Shifter/'+chain[2:],xbins=40,xmin=0.0,xmax=40.0) - - - HistName = 'GN1_pu_tr_' + chain[2:] if chain[0:1] == "E" : BjetMonGroup.defineHistogram(HistName, title='Distribution of GN1_pu probability;GN1_pu;Events', @@ -554,32 +501,39 @@ def TrigBjetMonConfig(inputFlags): path='Shifter/'+chain[2:],xbins=200,xmin=-50.,xmax=50.) - - - HistName = 'DIPSL_pu_tr_' + chain[2:] + HistName = 'GN2_pu_tr_' + chain[2:] if chain[0:1] == "E" : - BjetMonGroup.defineHistogram(HistName, title='Distribution of DIPS u probability;dipsLoose20210517_pu;Events', + BjetMonGroup.defineHistogram(HistName, title='Distribution of GN2_pu probability;GN2_pu;Events', path='Expert/'+chain[2:],xbins=200,xmin=0.0,xmax=1.0) if chain[0:1] == "S" : - BjetMonGroup.defineHistogram(HistName, title='Distribution of DIPS u probability;dipsLoose20210517_pu;Events', + BjetMonGroup.defineHistogram(HistName, title='Distribution of GN2_pu probability;GN2_pu;Events', path='Shifter/'+chain[2:],xbins=200,xmin=0.0,xmax=1.0) - HistName = 'DIPSL_pc_tr_' + chain[2:] + HistName = 'GN2_pc_tr_' + chain[2:] if chain[0:1] == "E" : - BjetMonGroup.defineHistogram(HistName, title='Distribution of DIPS c probability;dipsLoose20210517_pc;Events', + BjetMonGroup.defineHistogram(HistName, title='Distribution of GN2_pc probability;GN2_pc;Events', path='Expert/'+chain[2:],xbins=200,xmin=0.0,xmax=1.0) if chain[0:1] == "S" : - BjetMonGroup.defineHistogram(HistName, title='Distribution of DIPS c probability;dipsLoose20210517_pc;Events', + BjetMonGroup.defineHistogram(HistName, title='Distribution of GN2_pc probability;GN2_pc;Events', path='Shifter/'+chain[2:],xbins=200,xmin=0.0,xmax=1.0) - HistName = 'DIPSL_pb_tr_' + chain[2:] + HistName = 'GN2_pb_tr_' + chain[2:] if chain[0:1] == "E" : - BjetMonGroup.defineHistogram(HistName, title='Distribution of DIPS b probability;dipsLoose20210517_pb;Events', + BjetMonGroup.defineHistogram(HistName, title='Distribution of GN2_pb probability;GN2_pb;Events', path='Expert/'+chain[2:],xbins=200,xmin=0.0,xmax=1.0) if chain[0:1] == "S" : - BjetMonGroup.defineHistogram(HistName, title='Distribution of DIPS b probability;dipsLoose20210517_pb;Events', + BjetMonGroup.defineHistogram(HistName, title='Distribution of GN2_pb probability;GN2_pb;Events', path='Shifter/'+chain[2:],xbins=200,xmin=0.0,xmax=1.0) + HistName = 'GN2_mv_tr_' + chain[2:] + if chain[0:1] == "E" : + BjetMonGroup.defineHistogram(HistName, title='Distribution of GN2_mv LLR;GN2_mv;Events', + path='Expert/'+chain[2:],xbins=200,xmin=-50.,xmax=50.) + if chain[0:1] == "S" : + BjetMonGroup.defineHistogram(HistName, title='Distribution of GN2_mv LLR;GN2_mv;Events', + path='Shifter/'+chain[2:],xbins=200,xmin=-50.,xmax=50.) + + continue diff --git a/Trigger/TrigMonitoring/TrigBjetMonitoring/src/TrigBjetMonitorAlgorithm.cxx b/Trigger/TrigMonitoring/TrigBjetMonitoring/src/TrigBjetMonitorAlgorithm.cxx index dc0d224bf85f5824881b3567eb57dad45aa845b1..eed934f375ebe02ed234dcc88c9ac05f7b3e8538 100644 --- a/Trigger/TrigMonitoring/TrigBjetMonitoring/src/TrigBjetMonitorAlgorithm.cxx +++ b/Trigger/TrigMonitoring/TrigBjetMonitoring/src/TrigBjetMonitorAlgorithm.cxx @@ -249,8 +249,8 @@ StatusCode TrigBjetMonitorAlgorithm::fillHistograms( const EventContext& ctx ) c fill("TrigBjetMonitor",nJet); float muonPt1(0.), muonEta1(0.), muonPhi1(0.), muonZ1(0.), jetPt1(0.), jetEta1(0.), jetPhi1(0.), jetZ1(0.), muonZ(0.); - double GN1_mv(0.); - bool theLLR(false), theLLR_GN1(false); + double GN1_mv(0.), GN2_mv(0.); + bool theLLR(false), theLLR_GN1(false), theLLR_GN2(false); bool plotDeltaZ(false); for(const auto& muonLinkInfo : onlinemuons) { @@ -344,6 +344,18 @@ StatusCode TrigBjetMonitorAlgorithm::fillHistograms( const EventContext& ctx ) c if ( !theLLR ) GN1_mv=-100.; ATH_MSG_DEBUG(" GN1_mv: " << GN1_mv << " LLR: " << theLLR); + double GN2_pu(0.), GN2_pc(0.), GN2_pb(0.); + btag->pu("GN120220813",GN2_pu); + ATH_MSG_DEBUG(" GN2_pu: " << GN2_pu); + btag->pc("GN120220813",GN2_pc); + ATH_MSG_DEBUG(" GN2_pc: " << GN2_pc); + btag->pb("GN120220813",GN2_pb); + ATH_MSG_DEBUG(" GN2_pb: " << GN2_pb); + theLLR = LLR (GN2_pu, GN2_pc, GN2_pb, GN2_mv); + theLLR_GN2 = theLLR; + if ( !theLLR ) GN2_mv=-100.; + ATH_MSG_DEBUG(" GN2_mv: " << GN2_mv << " LLR: " << theLLR); + } }// if ijet==0 @@ -401,6 +413,14 @@ StatusCode TrigBjetMonitorAlgorithm::fillHistograms( const EventContext& ctx ) c ATH_MSG_DEBUG(" wGN1: " << wGN1 << " RelPt : " << RelPt); if (calc_relpt && theLLR_GN1) fill("TrigBjetMonitor",wGN1,RelPt); + // wGN2 + std::string wGN2H = "wGN2_"+trigName; + ATH_MSG_DEBUG( " NameH: " << wGN2H ); + auto wGN2 = Monitored::Scalar<float>(wGN2H,0.0); + wGN2 = float(GN2_mv); + ATH_MSG_DEBUG(" wGN2: " << wGN2 << " RelPt : " << RelPt); + if (calc_relpt && theLLR_GN2) fill("TrigBjetMonitor",wGN2,RelPt); + }// if mujetChain @@ -480,63 +500,8 @@ StatusCode TrigBjetMonitorAlgorithm::fillHistograms( const EventContext& ctx ) c const xAOD::BTagging* btag = *(btaggingLinkInfo.link); - // SV1 variables (credit LZ) - NameH = "xNVtx_tr_"+trigName; - ATH_MSG_DEBUG( " NameH: " << NameH ); - auto svp_n2t = Monitored::Scalar<int>(NameH,0.0); - btag->variable<int>("SV1", "N2Tpair", svp_n2t); - ATH_MSG_DEBUG(" svp_n2t: " << svp_n2t); - fill("TrigBjetMonitor",svp_n2t); - - NameH = "xMVtx_tr_"+trigName; - ATH_MSG_DEBUG( " NameH: " << NameH ); - auto svp_mass = Monitored::Scalar<float>(NameH,0.0); - btag->variable<float>("SV1", "masssvx", svp_mass); - svp_mass *= 1.e-3; - ATH_MSG_DEBUG(" svp_mass in GeV: " << svp_mass ); - fill("TrigBjetMonitor",svp_mass); - - if (svp_mass > 0) { - NameH = "xEVtx_tr_"+trigName; - ATH_MSG_DEBUG( " NameH: " << NameH ); - auto svp_efrc = Monitored::Scalar<float>(NameH,0.0); - btag->variable<float>("SV1", "efracsvx", svp_efrc); - ATH_MSG_DEBUG(" svp_efrc: " << svp_efrc); - fill("TrigBjetMonitor",svp_efrc); - } - - // JF variables (a la LZ) - NameH = "JFxNVtx_tr_"+trigName; - ATH_MSG_DEBUG( " NameH: " << NameH ); - auto jf_n2t = Monitored::Scalar<int>(NameH,0.0); - btag->variable<int>("JetFitter", "N2Tpair", jf_n2t); - ATH_MSG_DEBUG(" jf_n2t: " << jf_n2t); - fill("TrigBjetMonitor",jf_n2t); - - NameH = "JFxSig_tr_"+trigName; - ATH_MSG_DEBUG( " NameH: " << NameH ); - auto jf_sig3 = Monitored::Scalar<float>(NameH,0.0); - btag->variable<float>("JetFitter", "significance3d", jf_sig3); - ATH_MSG_DEBUG(" jf_sig3: " << jf_sig3); - fill("TrigBjetMonitor",jf_sig3); - - NameH = "JFxMVtx_tr_"+trigName; - ATH_MSG_DEBUG( " NameH: " << NameH ); - auto jf_mass = Monitored::Scalar<float>(NameH,0.0); - btag->variable<float>("JetFitter", "mass", jf_mass); - jf_mass *= 1.e-3; - ATH_MSG_DEBUG(" jf_mass in GeV: " << jf_mass ); - fill("TrigBjetMonitor",jf_mass); - - NameH = "JFxEVtx_tr_"+trigName; - ATH_MSG_DEBUG( " NameH: " << NameH ); - auto jf_efrc = Monitored::Scalar<float>(NameH,0.0); - btag->variable<float>("JetFitter", "energyFraction", jf_efrc); - ATH_MSG_DEBUG(" jf_efrc: " << jf_efrc); - fill("TrigBjetMonitor",jf_efrc); - + bool theLLR(false); - bool theLLR(false); NameH = "GN1_pu_tr_"+trigName; ATH_MSG_DEBUG( " NameH: " << NameH ); auto GN1_pu = Monitored::Scalar<double>(NameH,0.0); @@ -565,30 +530,36 @@ StatusCode TrigBjetMonitorAlgorithm::fillHistograms( const EventContext& ctx ) c if ( theLLR ) fill("TrigBjetMonitor",GN1_mv); ATH_MSG_DEBUG(" GN1_mv: " << GN1_mv << " LLR: " << theLLR); - + + NameH = "GN2_pu_tr_"+trigName; + ATH_MSG_DEBUG( " NameH: " << NameH ); + auto GN2_pu = Monitored::Scalar<double>(NameH,0.0); + btag->pu("GN120220813",GN2_pu); + ATH_MSG_DEBUG(" GN2_pu: " << GN2_pu); + fill("TrigBjetMonitor",GN2_pu); - - NameH = "DIPSL_pu_tr_"+trigName; + NameH = "GN2_pc_tr_"+trigName; ATH_MSG_DEBUG( " NameH: " << NameH ); - auto DIPSL_pu = Monitored::Scalar<double>(NameH,0.0); - btag->pu("dips20211116",DIPSL_pu); - ATH_MSG_DEBUG(" DIPSL_pu: " << DIPSL_pu); - fill("TrigBjetMonitor",DIPSL_pu); + auto GN2_pc = Monitored::Scalar<double>(NameH,0.0); + btag->pc("GN120220813",GN2_pc); + ATH_MSG_DEBUG(" GN2_pc: " << GN2_pc); + fill("TrigBjetMonitor",GN2_pc); - NameH = "DIPSL_pc_tr_"+trigName; + NameH = "GN2_pb_tr_"+trigName; ATH_MSG_DEBUG( " NameH: " << NameH ); - auto DIPSL_pc = Monitored::Scalar<double>(NameH,0.0); - btag->pc("dips20211116",DIPSL_pc); - ATH_MSG_DEBUG(" DIPSL_pc: " << DIPSL_pc); - fill("TrigBjetMonitor",DIPSL_pc); + auto GN2_pb = Monitored::Scalar<double>(NameH,0.0); + btag->pb("GN120220813",GN2_pb); + ATH_MSG_DEBUG(" GN2_pb: " << GN2_pb); + fill("TrigBjetMonitor",GN2_pb); - NameH = "DIPSL_pb_tr_"+trigName; + NameH = "GN2_mv_tr_"+trigName; ATH_MSG_DEBUG( " NameH: " << NameH ); - auto DIPSL_pb = Monitored::Scalar<double>(NameH,0.0); - btag->pb("dips20211116",DIPSL_pb); - ATH_MSG_DEBUG(" DIPSL_pb: " << DIPSL_pb); - fill("TrigBjetMonitor",DIPSL_pb); + auto GN2_mv = Monitored::Scalar<double>(NameH,0.0); + theLLR = LLR (GN2_pu, GN2_pc, GN2_pb, GN2_mv); + if ( theLLR ) fill("TrigBjetMonitor",GN2_mv); + ATH_MSG_DEBUG(" GN2_mv: " << GN2_mv << " LLR: " << theLLR); + // Tracks associated to triggered jets ( featurs = onlinejets ) courtesy of Tim Martin on 12/05/2020 const auto track_it_pair = m_trigDecTool->associateToEventView(theTracks, jetLinkInfo.source, "roi"); diff --git a/Trigger/TrigT1/L1CaloFEX/L1CaloFEXSim/CMakeLists.txt b/Trigger/TrigT1/L1CaloFEX/L1CaloFEXSim/CMakeLists.txt index 6968b99ef5d22c11e38b203ad594af4875f4d1b9..2921a9c0954b5104058a01925c71c8433c73206a 100644 --- a/Trigger/TrigT1/L1CaloFEX/L1CaloFEXSim/CMakeLists.txt +++ b/Trigger/TrigT1/L1CaloFEX/L1CaloFEXSim/CMakeLists.txt @@ -1,4 +1,4 @@ -# Copyright (C) 2002-2022 CERN for the benefit of the ATLAS collaboration +# Copyright (C) 2002-2024 CERN for the benefit of the ATLAS collaboration # Declare the package name: atlas_subdir( L1CaloFEXSim ) @@ -22,32 +22,26 @@ atlas_add_component( L1CaloFEXSim # Install files from the package: atlas_install_python_modules( python/*.py POST_BUILD_CMD ${ATLAS_FLAKE8} ) -atlas_install_joboptions( share/*.py ) atlas_install_runtime( share/*.csv ) -atlas_install_data( share/*.ref ) atlas_install_data( data/bdt_config_v*.json ) atlas_add_test( L1CaloFEXSimCfg_MC SCRIPT python -m L1CaloFEXSim.L1CaloFEXSimCfg -i ttbar -e -n 5 - LOG_SELECT_PATTERN "^ApplicationMgr" - PROPERTIES TIMEOUT 300 - PRIVATE_WORKING_DIRECTORY ) + PRIVATE_WORKING_DIRECTORY + POST_EXEC_SCRIPT noerror.sh ) atlas_add_test( L1CaloFEXSimCfg_R2data SCRIPT python -m L1CaloFEXSim.L1CaloFEXSimCfg -i data_run2_EB -e -n 5 - LOG_SELECT_PATTERN "^ApplicationMgr" - PROPERTIES TIMEOUT 300 - PRIVATE_WORKING_DIRECTORY ) + PRIVATE_WORKING_DIRECTORY + POST_EXEC_SCRIPT noerror.sh ) atlas_add_test( L1CaloFEXSimCfg_R3data SCRIPT python -m L1CaloFEXSim.L1CaloFEXSimCfg -i data -e -n 5 - LOG_SELECT_PATTERN "^ApplicationMgr" - PROPERTIES TIMEOUT 300 - PRIVATE_WORKING_DIRECTORY ) + PRIVATE_WORKING_DIRECTORY + POST_EXEC_SCRIPT noerror.sh ) atlas_add_test( L1CaloFEXSimCfgBDTTau_R3data SCRIPT python -m L1CaloFEXSim.L1CaloFEXSimCfg -i data -e -d -n 5 - PROPERTIES TIMEOUT 300 - PRIVATE_WORKING_DIRECTORY - ENVIRONMENT "TAU_EFEX_BDT_CONFIG_PATH=${CMAKE_CURRENT_SOURCE_DIR}/data/bdt_config_v16.json" - POST_EXEC_SCRIPT ${CMAKE_CURRENT_SOURCE_DIR}/share/validateBDTTau.py ) + PRIVATE_WORKING_DIRECTORY + ENVIRONMENT "TAU_EFEX_BDT_CONFIG_PATH=${CMAKE_CURRENT_SOURCE_DIR}/data/bdt_config_v16.json" + POST_EXEC_SCRIPT ${CMAKE_CURRENT_SOURCE_DIR}/share/validateBDTTau.py ) diff --git a/Trigger/TrigT1/L1CaloFEX/L1CaloFEXSim/share/L1CaloFEXSimCfg_MC.ref b/Trigger/TrigT1/L1CaloFEX/L1CaloFEXSim/share/L1CaloFEXSimCfg_MC.ref deleted file mode 100644 index c7126756f3e8efbc3862606b3fe6109347d670f7..0000000000000000000000000000000000000000 --- a/Trigger/TrigT1/L1CaloFEX/L1CaloFEXSim/share/L1CaloFEXSimCfg_MC.ref +++ /dev/null @@ -1,6 +0,0 @@ -ApplicationMgr INFO Application Manager Configured successfully -ApplicationMgr 0 INFO Application Manager Initialized successfully -ApplicationMgr 0 INFO Application Manager Started successfully -ApplicationMgr INFO Application Manager Stopped successfully -ApplicationMgr INFO Application Manager Finalized successfully -ApplicationMgr INFO Application Manager Terminated successfully diff --git a/Trigger/TrigT1/L1CaloFEX/L1CaloFEXSim/share/L1CaloFEXSimCfg_R2data.ref b/Trigger/TrigT1/L1CaloFEX/L1CaloFEXSim/share/L1CaloFEXSimCfg_R2data.ref deleted file mode 100644 index c7126756f3e8efbc3862606b3fe6109347d670f7..0000000000000000000000000000000000000000 --- a/Trigger/TrigT1/L1CaloFEX/L1CaloFEXSim/share/L1CaloFEXSimCfg_R2data.ref +++ /dev/null @@ -1,6 +0,0 @@ -ApplicationMgr INFO Application Manager Configured successfully -ApplicationMgr 0 INFO Application Manager Initialized successfully -ApplicationMgr 0 INFO Application Manager Started successfully -ApplicationMgr INFO Application Manager Stopped successfully -ApplicationMgr INFO Application Manager Finalized successfully -ApplicationMgr INFO Application Manager Terminated successfully diff --git a/Trigger/TrigT1/L1CaloFEX/L1CaloFEXSim/share/L1CaloFEXSimCfg_R3data.ref b/Trigger/TrigT1/L1CaloFEX/L1CaloFEXSim/share/L1CaloFEXSimCfg_R3data.ref deleted file mode 100644 index c7126756f3e8efbc3862606b3fe6109347d670f7..0000000000000000000000000000000000000000 --- a/Trigger/TrigT1/L1CaloFEX/L1CaloFEXSim/share/L1CaloFEXSimCfg_R3data.ref +++ /dev/null @@ -1,6 +0,0 @@ -ApplicationMgr INFO Application Manager Configured successfully -ApplicationMgr 0 INFO Application Manager Initialized successfully -ApplicationMgr 0 INFO Application Manager Started successfully -ApplicationMgr INFO Application Manager Stopped successfully -ApplicationMgr INFO Application Manager Finalized successfully -ApplicationMgr INFO Application Manager Terminated successfully diff --git a/Trigger/TrigT1/L1CaloFEX/L1CaloFEXSim/share/eFEXDriverJobOptions.py b/Trigger/TrigT1/L1CaloFEX/L1CaloFEXSim/share/eFEXDriverJobOptions.py deleted file mode 100644 index 15d963518aa176c68ac3bd9d5134b18cc689662c..0000000000000000000000000000000000000000 --- a/Trigger/TrigT1/L1CaloFEX/L1CaloFEXSim/share/eFEXDriverJobOptions.py +++ /dev/null @@ -1,74 +0,0 @@ -#jps.AthenaCommonFlags.AccessMode = "POOLAccess" # use POOL read mode because reading calocells -#svcMgr.EventSelector.InputCollections = jps.AthenaCommonFlags.FilesInput() -from AthenaCommon.GlobalFlags import globalflags -import AthenaPoolCnvSvc.ReadAthenaPool - -if type(theApp).__name__ == "fakeAppMgr": theApp.initialize() #this line cuts off pathena when joboption parsing ... since all outputs now declared - -#from RecExConfig import AutoConfiguration -#AutoConfiguration.ConfigureSimulationOrRealData() -#AutoConfiguration.ConfigureGeo() -#AutoConfiguration.ConfigureConditionsTag() -#from AthenaCommon.DetFlags import DetFlags -#DetFlags.detdescr.all_setOff() -#DetFlags.detdescr.Calo_setOn() -#include("RecExCond/AllDet_detDescr.py") - -#include( "CaloConditions/CaloConditions_jobOptions.py" ) -include( "LArDetDescr/LArDetDescr_joboptions.py" ) - - -include( "RegistrationServices/IOVRegistrationSvc_jobOptions.py" ) - -IOVBeginRun = IOVRunNumberMin -IOVEndRun = IOVRunNumberMax -IOVBeginLB = IOVLBNumberMin -IOVEndLB = IOVLBNumberMax - -import RegistrationServices.IOVRegistrationSvc -regSvc = svcMgr.IOVRegistrationSvc - - -#svcMgr.IOVDbSvc.DBInstance="" - -if "GlobalTag" not in dir(): - GlobalTag = 'OFLCOND-CSC-00-01-00' #Sadly event his doesn't work for the 14 TeV jetjet sample 'OFLCOND-MC15c-SDR-14-02' #This works for 13 TeV 'OFLCOND-CSC-00-01-00' #No idea what this is: COMCOND-BLKPST-004-05' - -#svcMgr.IOVDbSvc.GlobalTag = GlobalTag - -svcMgr.IOVDbSvc.GlobalTag=globalflags.ConditionsTag() - -# configure detector description from metadata in input file -from RecExConfig import AutoConfiguration -AutoConfiguration.ConfigureSimulationOrRealData() -AutoConfiguration.ConfigureGeo() -AutoConfiguration.ConfigureConditionsTag() -from AthenaCommon.DetFlags import DetFlags -DetFlags.detdescr.all_setOff() -DetFlags.detdescr.Calo_setOn() -include("RecExCond/AllDet_detDescr.py") - -# menu with default configuration for testing -from AthenaConfiguration.ComponentAccumulator import CAtoGlobalWrapper -from AthenaConfiguration.AllConfigFlags import initConfigFlags -from TrigConfigSvc.TrigConfigSvcCfg import L1ConfigSvcCfg -flags = initConfigFlags() -flags.Input.Files = athenaCommonFlags.FilesInput() -flags.Trigger.triggerConfig = "FILE" -flags.lock() -CAtoGlobalWrapper(L1ConfigSvcCfg,flags) - -from TrigConfigSvc.TrigConfigSvcCfg import generateL1Menu -generateL1Menu(flags) - -svcMgr += CfgMgr.THistSvc() -#svcMgr.THistSvc.Output += ["ISO DATAFILE='tobIso.root' OPT='RECREATE'"] -svcMgr.THistSvc.Output += ["ANALYSIS DATAFILE='myfile.root' OPT='RECREATE'"] -####################################################### -log.info("==========================================================") -log.info("Scheduling eFEXDriver") -athAlgSeq += CfgMgr.LVL1__eTowerMakerFromSuperCells('MyeTowerMaker') -athAlgSeq += CfgMgr.LVL1__eFEXDriver('MyeFEXDriver') -athAlgSeq += CfgMgr.LVL1__eFEXNtupleWriter('MyeFEXNtupleWriter') -log.info("==========================================================") -####################################################### diff --git a/Trigger/TrigT1/L1CaloFEX/L1CaloFEXSim/share/gFEXDriverJobOptions.py b/Trigger/TrigT1/L1CaloFEX/L1CaloFEXSim/share/gFEXDriverJobOptions.py deleted file mode 100644 index b34d506a4bb2d1388288bcc91dcf3ffb9f8e25a8..0000000000000000000000000000000000000000 --- a/Trigger/TrigT1/L1CaloFEX/L1CaloFEXSim/share/gFEXDriverJobOptions.py +++ /dev/null @@ -1,86 +0,0 @@ -#jps.AthenaCommonFlags.AccessMode = "POOLAccess" # use POOL read mode because reading calocells -#svcMgr.EventSelector.InputCollections = jps.AthenaCommonFlags.FilesInput() -from AthenaCommon.GlobalFlags import globalflags -import AthenaPoolCnvSvc.ReadAthenaPool - -if type(theApp).__name__ == "fakeAppMgr": theApp.initialize() #this line cuts off pathena when joboption parsing ... since all outputs now declared - -include( "LArDetDescr/LArDetDescr_joboptions.py" ) - - -include( "RegistrationServices/IOVRegistrationSvc_jobOptions.py" ) - -IOVBeginRun = IOVRunNumberMin -IOVEndRun = IOVRunNumberMax -IOVBeginLB = IOVLBNumberMin -IOVEndLB = IOVLBNumberMax - -import RegistrationServices.IOVRegistrationSvc -regSvc = svcMgr.IOVRegistrationSvc - - -if "GlobalTag" not in dir(): - GlobalTag = 'OFLCOND-CSC-00-01-00' - -svcMgr.IOVDbSvc.GlobalTag=globalflags.ConditionsTag() - -# configure detector description from metadata in input file -from RecExConfig import AutoConfiguration -AutoConfiguration.ConfigureSimulationOrRealData() -AutoConfiguration.ConfigureGeo() -AutoConfiguration.ConfigureConditionsTag() -from AthenaCommon.DetFlags import DetFlags -DetFlags.detdescr.all_setOff() -DetFlags.detdescr.Calo_setOn() -include("RecExCond/AllDet_detDescr.py") - -# menu with default configuration for testing -from AthenaConfiguration.ComponentAccumulator import CAtoGlobalWrapper -from AthenaConfiguration.AllConfigFlags import initConfigFlags -from TrigConfigSvc.TrigConfigSvcCfg import L1ConfigSvcCfg -flags = initConfigFlags() -flags.Input.Files = athenaCommonFlags.FilesInput() -flags.Trigger.triggerConfig = "FILE" -flags.lock() -CAtoGlobalWrapper(L1ConfigSvcCfg,flags) - -from TrigConfigSvc.TrigConfigSvcCfg import generateL1Menu -generateL1Menu(flags) - - -svcMgr += CfgMgr.THistSvc() -svcMgr.THistSvc.Output += ["ANALYSIS DATAFILE='myfile.root' OPT='RECREATE'"] - - -from OutputStreamAthenaPool.MultipleStreamManager import MSMgr -StreamAOD_Augmented = MSMgr.NewPoolRootStream( "StreamAOD", "xAOD.gFEX.output.root" ) -StreamAOD = StreamAOD_Augmented.GetEventStream() - -# Generic event info -StreamAOD.ItemList+=["xAOD::EventInfo#*"] -StreamAOD.ItemList+=["xAOD::EventAuxInfo#*"] - -# # the gFex containers -StreamAOD.ItemList+=["xAOD::gFexJetRoIContainer#*"] -StreamAOD.ItemList+=["xAOD::gFexJetRoIAuxContainer#*"] -StreamAOD.ItemList+=["xAOD::gFexGlobalRoIContainer#*"] -StreamAOD.ItemList+=["xAOD::gFexGlobalRoIAuxContainer#*"] -StreamAOD.ItemList+=["xAOD::TriggerTowerContainer#*"] - -#Physics Objects -StreamAOD.ItemList+=["xAOD::JetContainer#*"] -StreamAOD.ItemList+=["xAOD::JetAuxContainer#*"] -StreamAOD.ItemList+=["xAOD::MissingETContainer#MET_Reference_AntiKt4EMTopo"] -StreamAOD.ItemList+=["xAOD::MissingETAuxContainer#MET_Reference_AntiKt4EMTopoAux.-ConstitObjectLinks.-ConstitObjectWeights"] - - - - -####################################################### -log.info("==========================================================") -log.info("Scheduling gFEXDriver") -athAlgSeq += CfgMgr.LVL1__gTowerMakerFromGfexTowers('MygTowerMaker', IsMC=True) -athAlgSeq += CfgMgr.LVL1__gFEXDriver('MygFEXDriver') -athAlgSeq += CfgMgr.LVL1__gFEXNtupleWriter('MygFEXNtupleWriter') -log.info("==========================================================") -####################################################### diff --git a/Trigger/TrigT1/L1CaloFEX/L1CaloFEXSim/share/jFEXDriverJobOptions.py b/Trigger/TrigT1/L1CaloFEX/L1CaloFEXSim/share/jFEXDriverJobOptions.py deleted file mode 100644 index e400bba904689c6ac09413b627bde2215e2a3cf4..0000000000000000000000000000000000000000 --- a/Trigger/TrigT1/L1CaloFEX/L1CaloFEXSim/share/jFEXDriverJobOptions.py +++ /dev/null @@ -1,98 +0,0 @@ -from AthenaCommon.GlobalFlags import globalflags -import AthenaPoolCnvSvc.ReadAthenaPool - - -if type(theApp).__name__ == "fakeAppMgr": theApp.initialize() #this line cuts off pathena when joboption parsing ... since all outputs now declared - -include( "LArDetDescr/LArDetDescr_joboptions.py" ) -include( "RegistrationServices/IOVRegistrationSvc_jobOptions.py" ) - -IOVBeginRun = IOVRunNumberMin -IOVEndRun = IOVRunNumberMax -IOVBeginLB = IOVLBNumberMin -IOVEndLB = IOVLBNumberMax - -import RegistrationServices.IOVRegistrationSvc -regSvc = svcMgr.IOVRegistrationSvc - - -#svcMgr.IOVDbSvc.DBInstance="" - -if "GlobalTag" not in dir(): - GlobalTag = 'OFLCOND-CSC-00-01-00' #Sadly event his doesn't work for the 14 TeV jetjet sample 'OFLCOND-MC15c-SDR-14-02' #This works for 13 TeV 'OFLCOND-CSC-00-01-00' #No idea what this is: COMCOND-BLKPST-004-05' - -#svcMgr.IOVDbSvc.GlobalTag = GlobalTag - -svcMgr.IOVDbSvc.GlobalTag=globalflags.ConditionsTag() - -# configure detector description from metadata in input file -from RecExConfig import AutoConfiguration -AutoConfiguration.ConfigureSimulationOrRealData() -AutoConfiguration.ConfigureGeo() -AutoConfiguration.ConfigureConditionsTag() -from AthenaCommon.DetFlags import DetFlags -DetFlags.detdescr.all_setOff() -DetFlags.detdescr.Calo_setOn() -include("RecExCond/AllDet_detDescr.py") - -# menu with default configuration for testing -from AthenaConfiguration.ComponentAccumulator import CAtoGlobalWrapper -from AthenaConfiguration.AllConfigFlags import initConfigFlags -from TrigConfigSvc.TrigConfigSvcCfg import L1ConfigSvcCfg -flags = initConfigFlags() -flags.Input.Files = athenaCommonFlags.FilesInput() -flags.Trigger.triggerConfig = "FILE" -flags.lock() -CAtoGlobalWrapper(L1ConfigSvcCfg,flags) - -from TrigConfigSvc.TrigConfigSvcCfg import generateL1Menu -generateL1Menu(flags) - -svcMgr += CfgMgr.THistSvc() -svcMgr.THistSvc.Output += ["ANALYSIS DATAFILE='myfile_jfex.root' OPT='RECREATE'"] - - -from OutputStreamAthenaPool.MultipleStreamManager import MSMgr -StreamAOD_Augmented = MSMgr.NewPoolRootStream( "StreamAOD", "xAOD.jFEX.output.root" ) -StreamAOD = StreamAOD_Augmented.GetEventStream() - -# the jFex containers -StreamAOD.ItemList+=["xAOD::jFexSRJetRoIContainer#*"] -StreamAOD.ItemList+=["xAOD::jFexSRJetRoIAuxContainer#*"] -StreamAOD.ItemList+=["xAOD::jFexLRJetRoIContainer#*"] -StreamAOD.ItemList+=["xAOD::jFexLRJetRoIAuxContainer#*"] -StreamAOD.ItemList+=["xAOD::TriggerTowerContainer#*"] -StreamAOD.ItemList+=["xAOD::jFexTauRoIContainer#*"] -StreamAOD.ItemList+=["xAOD::jFexTauRoIAuxContainer#*"] -StreamAOD.ItemList+=["xAOD::jFexFwdElRoIContainer#*"] -StreamAOD.ItemList+=["xAOD::jFexFwdElRoIAuxContainer#*"] -StreamAOD.ItemList+=["xAOD::jFexSumETRoIContainer#*"] -StreamAOD.ItemList+=["xAOD::jFexSumETRoIAuxContainer#*"] -StreamAOD.ItemList+=["xAOD::jFexMETRoIContainer#*"] -StreamAOD.ItemList+=["xAOD::jFexMETRoIAuxContainer#*"] - -#Physics Objects -StreamAOD.ItemList+=["xAOD::JetContainer#Anti*"] -StreamAOD.ItemList+=["xAOD::JetAuxContainer#Anti*"] -StreamAOD.ItemList+=["xAOD::JetRoIContainer#*"] -StreamAOD.ItemList+=["xAOD::JetRoIAuxContainer#*"] -StreamAOD.ItemList+=["xAOD::ElectronContainer#Electrons"] -StreamAOD.ItemList+=["xAOD::ElectronAuxContainer#ElectronsAux."] -StreamAOD.ItemList+=["xAOD::TauJetContainer#TauJets"] -StreamAOD.ItemList+=["xAOD::TauJetAuxContainer#TauJetsAux.-VertexedClusters"] - - - - - - - - -####################################################### -log.info("==========================================================") -log.info("Scheduling jFEXDriver") -athAlgSeq += CfgMgr.LVL1__jTowerMakerFromSuperCells('MyeTowerMaker') -athAlgSeq += CfgMgr.LVL1__jFEXDriver('MyjFEXDriver') -athAlgSeq += CfgMgr.LVL1__jFEXNtupleWriter('MyjFEXNtupleWriter') -log.info("==========================================================") -####################################################### diff --git a/Trigger/TrigValidation/TrigAnalysisTest/share/ref_RDOtoRDOTrig_v1Dev_build.ref b/Trigger/TrigValidation/TrigAnalysisTest/share/ref_RDOtoRDOTrig_v1Dev_build.ref index 9a9905e8b5082500c4c3b9bd15795d4d80fb2a78..294f5c31a4914d0d83eaa51726b33da6fd818ae6 100644 --- a/Trigger/TrigValidation/TrigAnalysisTest/share/ref_RDOtoRDOTrig_v1Dev_build.ref +++ b/Trigger/TrigValidation/TrigAnalysisTest/share/ref_RDOtoRDOTrig_v1Dev_build.ref @@ -2638,7 +2638,7 @@ HLT_4j110_pf_ftf_presel4j85_L13jJ90: 0: 1 stepFeatures: 0: 1 -HLT_4j110_pf_ftf_preselZ120MAXMULT20XX4c85_L13J50: +HLT_4j110_pf_ftf_preselZ120MAXMULT20cXX4c85_L13J50: eventCount: 0 stepCounts: 0: 1 @@ -13672,22 +13672,22 @@ HLT_j0_Z120XX4c120_roiftf_presel4j85_L13J50: 0: 1 stepFeatures: 0: 1 -HLT_j0_Z120XX4c20_MAXMULT20_roiftf_presel4c20_L1RD0_FILLED: - eventCount: 18 +HLT_j0_Z120XX4c20_MAXMULT20c_roiftf_presel4c20_L1RD0_FILLED: + eventCount: 19 stepCounts: 0: 20 - 1: 18 + 1: 19 stepFeatures: 0: 20 - 1: 102 -HLT_j0_Z120XX4c20_MAXMULT6_roiftf_presel4c20_L1RD0_FILLED: - eventCount: 17 + 1: 113 +HLT_j0_Z120XX4c20_MAXMULT6c_roiftf_presel4c20_L1RD0_FILLED: + eventCount: 19 stepCounts: 0: 20 - 1: 17 + 1: 19 stepFeatures: 0: 20 - 1: 83 + 1: 97 HLT_j0_Z120XX4c20_roiftf_presel4c20_L1RD0_FILLED: eventCount: 19 stepCounts: @@ -13770,7 +13770,7 @@ HLT_j0_pf_ftf_preselZ116XX4c20_L1jJ85p0ETA21_3jJ40p0ETA25: 0: 16 1: 15 2: 381 -HLT_j0_pf_ftf_preselZ120MAXMULT20XX4c20_L1jJ85p0ETA21_3jJ40p0ETA25: +HLT_j0_pf_ftf_preselZ120MAXMULT20cXX4c20_L1jJ85p0ETA21_3jJ40p0ETA25: eventCount: 15 stepCounts: 0: 16 @@ -13790,16 +13790,16 @@ HLT_j0_pf_ftf_preselZ120XX4c20_L1jJ85p0ETA21_3jJ40p0ETA25: 0: 16 1: 15 2: 381 -HLT_j0_pf_ftf_preselZ126MAXMULT5XX4c20_L1jJ85p0ETA21_3jJ40p0ETA25: - eventCount: 14 +HLT_j0_pf_ftf_preselZ126MAXMULT5cXX4c20_L1jJ85p0ETA21_3jJ40p0ETA25: + eventCount: 15 stepCounts: 0: 16 - 1: 14 - 2: 14 + 1: 15 + 2: 15 stepFeatures: 0: 16 - 1: 14 - 2: 312 + 1: 15 + 2: 381 HLT_j0_pf_ftf_preselZ128XX4c20_L1jJ85p0ETA21_3jJ40p0ETA25: eventCount: 15 stepCounts: @@ -13810,26 +13810,26 @@ HLT_j0_pf_ftf_preselZ128XX4c20_L1jJ85p0ETA21_3jJ40p0ETA25: 0: 16 1: 15 2: 381 -HLT_j0_pf_ftf_preselZ138MAXMULT5XX4c20_L1jJ85p0ETA21_3jJ40p0ETA25: - eventCount: 14 +HLT_j0_pf_ftf_preselZ138MAXMULT5cXX4c20_L1jJ85p0ETA21_3jJ40p0ETA25: + eventCount: 15 stepCounts: 0: 16 - 1: 14 - 2: 14 + 1: 15 + 2: 15 stepFeatures: 0: 16 - 1: 14 - 2: 312 -HLT_j0_pf_ftf_preselZ167MAXMULT5XX4c20_L1jJ85p0ETA21_3jJ40p0ETA25: - eventCount: 14 + 1: 15 + 2: 381 +HLT_j0_pf_ftf_preselZ167MAXMULT5cXX4c20_L1jJ85p0ETA21_3jJ40p0ETA25: + eventCount: 15 stepCounts: 0: 16 - 1: 14 - 2: 14 + 1: 15 + 2: 15 stepFeatures: 0: 16 - 1: 14 - 2: 312 + 1: 15 + 2: 381 HLT_j0_pf_ftf_preselZ82XX3c20_L1jJ85p0ETA21_3jJ40p0ETA25: eventCount: 14 stepCounts: @@ -13840,7 +13840,7 @@ HLT_j0_pf_ftf_preselZ82XX3c20_L1jJ85p0ETA21_3jJ40p0ETA25: 0: 16 1: 14 2: 359 -HLT_j0_pf_ftf_preselZ84MAXMULT20XX3c20_L1jJ85p0ETA21_3jJ40p0ETA25: +HLT_j0_pf_ftf_preselZ84MAXMULT20cXX3c20_L1jJ85p0ETA21_3jJ40p0ETA25: eventCount: 15 stepCounts: 0: 16 @@ -17582,7 +17582,7 @@ HLT_j75c_020jvt_j50c_020jvt_j25c_020jvt_j20c_020jvt_SHARED_2j20c_020jvt_bgn177_p 1: 45 2: 161 3: 18 -? HLT_j75c_020jvt_j50c_020jvt_j25c_020jvt_j20c_020jvt_SHARED_2j20c_020jvt_bgn177_pf_ftf_preselZ116MAXMULT20XX4c20_L1jJ85p0ETA21_3jJ40p0ETA25 +? HLT_j75c_020jvt_j50c_020jvt_j25c_020jvt_j20c_020jvt_SHARED_2j20c_020jvt_bgn177_pf_ftf_preselZ116MAXMULT20cXX4c20_L1jJ85p0ETA21_3jJ40p0ETA25 : eventCount: 8 stepCounts: 0: 16 @@ -17642,18 +17642,18 @@ HLT_j75c_020jvt_j50c_020jvt_j25c_020jvt_j20c_020jvt_SHARED_2j20c_020jvt_bgn177_p 1: 75 2: 282 3: 24 -? HLT_j75c_020jvt_j50c_020jvt_j25c_020jvt_j20c_020jvt_SHARED_2j20c_020jvt_bgn177_pf_ftf_preselZ138MAXMULT5XX4c20_L1jJ85p0ETA21_3jJ40p0ETA25 +? HLT_j75c_020jvt_j50c_020jvt_j25c_020jvt_j20c_020jvt_SHARED_2j20c_020jvt_bgn177_pf_ftf_preselZ138MAXMULT5cXX4c20_L1jJ85p0ETA21_3jJ40p0ETA25 : eventCount: 8 stepCounts: 0: 16 - 1: 14 - 2: 13 + 1: 15 + 2: 14 3: 8 stepFeatures: 0: 80 - 1: 70 - 2: 266 - 3: 23 + 1: 75 + 2: 282 + 3: 24 ? HLT_j75c_020jvt_j50c_020jvt_j25c_020jvt_j20c_020jvt_SHARED_2j20c_020jvt_bgn177_pf_ftf_preselZ138XX4c20_L1jJ85p0ETA21_3jJ40p0ETA25 : eventCount: 8 stepCounts: @@ -17666,19 +17666,19 @@ HLT_j75c_020jvt_j50c_020jvt_j25c_020jvt_j20c_020jvt_SHARED_2j20c_020jvt_bgn177_p 1: 80 2: 282 3: 24 -? HLT_j75c_020jvt_j50c_020jvt_j25c_020jvt_j20c_020jvt_SHARED_2j20c_020jvt_bgn177_pf_ftf_preselZ167MAXMULT5XX4c20_L1jJ85p0ETA21_3jJ40p0ETA25 +? HLT_j75c_020jvt_j50c_020jvt_j25c_020jvt_j20c_020jvt_SHARED_2j20c_020jvt_bgn177_pf_ftf_preselZ167MAXMULT5cXX4c20_L1jJ85p0ETA21_3jJ40p0ETA25 : eventCount: 8 stepCounts: 0: 16 - 1: 14 - 2: 13 + 1: 15 + 2: 14 3: 8 stepFeatures: 0: 80 - 1: 70 - 2: 266 - 3: 23 -? HLT_j75c_020jvt_j50c_020jvt_j25c_020jvt_j20c_020jvt_SHARED_2j20c_020jvt_bgn177_pf_ftf_preselZ84MAXMULT20XX3c20_L1jJ85p0ETA21_3jJ40p0ETA25 + 1: 75 + 2: 282 + 3: 24 +? HLT_j75c_020jvt_j50c_020jvt_j25c_020jvt_j20c_020jvt_SHARED_2j20c_020jvt_bgn177_pf_ftf_preselZ84MAXMULT20cXX3c20_L1jJ85p0ETA21_3jJ40p0ETA25 : eventCount: 7 stepCounts: 0: 16 @@ -17994,7 +17994,7 @@ HLT_j75c_020jvt_j50c_020jvt_j25c_020jvt_j20c_020jvt_pf_ftf_preselZ116XX4c20_L1jJ 0: 64 1: 60 2: 212 -HLT_j75c_020jvt_j50c_020jvt_j25c_020jvt_j20c_020jvt_pf_ftf_preselZ120MAXMULT20XX4c20_L1jJ85p0ETA21_3jJ40p0ETA25: +HLT_j75c_020jvt_j50c_020jvt_j25c_020jvt_j20c_020jvt_pf_ftf_preselZ120MAXMULT20cXX4c20_L1jJ85p0ETA21_3jJ40p0ETA25: eventCount: 14 stepCounts: 0: 16 @@ -18024,16 +18024,16 @@ HLT_j75c_020jvt_j50c_020jvt_j25c_020jvt_j20c_020jvt_pf_ftf_preselZ120XX4c20_L1jJ 0: 64 1: 60 2: 212 -HLT_j75c_020jvt_j50c_020jvt_j25c_020jvt_j20c_020jvt_pf_ftf_preselZ126MAXMULT5XX4c20_L1jJ85p0ETA21_3jJ40p0ETA25: - eventCount: 13 +HLT_j75c_020jvt_j50c_020jvt_j25c_020jvt_j20c_020jvt_pf_ftf_preselZ126MAXMULT5cXX4c20_L1jJ85p0ETA21_3jJ40p0ETA25: + eventCount: 14 stepCounts: 0: 16 - 1: 14 - 2: 13 + 1: 15 + 2: 14 stepFeatures: 0: 64 - 1: 56 - 2: 200 + 1: 60 + 2: 212 HLT_j75c_020jvt_j50c_020jvt_j25c_020jvt_j20c_020jvt_pf_ftf_preselZ128XX4c20_L1jJ85p0ETA21_3jJ40p0ETA25: eventCount: 14 stepCounts: @@ -18044,7 +18044,7 @@ HLT_j75c_020jvt_j50c_020jvt_j25c_020jvt_j20c_020jvt_pf_ftf_preselZ128XX4c20_L1jJ 0: 64 1: 60 2: 212 -HLT_j75c_020jvt_j50c_020jvt_j25c_020jvt_j20c_020jvt_pf_ftf_preselZ138MAXMULT5XX2c20XX2c20b85_L1jJ85p0ETA21_3jJ40p0ETA25: +HLT_j75c_020jvt_j50c_020jvt_j25c_020jvt_j20c_020jvt_pf_ftf_preselZ138MAXMULT5cXX2c20XX2c20b85_L1jJ85p0ETA21_3jJ40p0ETA25: eventCount: 8 stepCounts: 0: 16 @@ -18054,26 +18054,26 @@ HLT_j75c_020jvt_j50c_020jvt_j25c_020jvt_j20c_020jvt_pf_ftf_preselZ138MAXMULT5XX2 0: 64 1: 36 2: 119 -HLT_j75c_020jvt_j50c_020jvt_j25c_020jvt_j20c_020jvt_pf_ftf_preselZ138MAXMULT5XX4c20_L1jJ85p0ETA21_3jJ40p0ETA25: - eventCount: 13 +HLT_j75c_020jvt_j50c_020jvt_j25c_020jvt_j20c_020jvt_pf_ftf_preselZ138MAXMULT5cXX4c20_L1jJ85p0ETA21_3jJ40p0ETA25: + eventCount: 14 stepCounts: 0: 16 - 1: 14 - 2: 13 + 1: 15 + 2: 14 stepFeatures: 0: 64 - 1: 56 - 2: 200 -HLT_j75c_020jvt_j50c_020jvt_j25c_020jvt_j20c_020jvt_pf_ftf_preselZ167MAXMULT5XX4c20_L1jJ85p0ETA21_3jJ40p0ETA25: - eventCount: 13 + 1: 60 + 2: 212 +HLT_j75c_020jvt_j50c_020jvt_j25c_020jvt_j20c_020jvt_pf_ftf_preselZ167MAXMULT5cXX4c20_L1jJ85p0ETA21_3jJ40p0ETA25: + eventCount: 14 stepCounts: 0: 16 - 1: 14 - 2: 13 + 1: 15 + 2: 14 stepFeatures: 0: 64 - 1: 56 - 2: 200 + 1: 60 + 2: 212 HLT_j75c_020jvt_j50c_020jvt_j25c_020jvt_j20c_020jvt_pf_ftf_preselZ82XX3c20_L1jJ85p0ETA21_3jJ40p0ETA25: eventCount: 13 stepCounts: @@ -18084,7 +18084,7 @@ HLT_j75c_020jvt_j50c_020jvt_j25c_020jvt_j20c_020jvt_pf_ftf_preselZ82XX3c20_L1jJ8 0: 64 1: 56 2: 194 -HLT_j75c_020jvt_j50c_020jvt_j25c_020jvt_j20c_020jvt_pf_ftf_preselZ84MAXMULT20XX3c20_L1jJ85p0ETA21_3jJ40p0ETA25: +HLT_j75c_020jvt_j50c_020jvt_j25c_020jvt_j20c_020jvt_pf_ftf_preselZ84MAXMULT20cXX3c20_L1jJ85p0ETA21_3jJ40p0ETA25: eventCount: 13 stepCounts: 0: 16 @@ -18142,7 +18142,7 @@ HLT_j75c_j50c_j25c_j20c_pf_ftf_preselZ116XX4c20_L1jJ85p0ETA21_3jJ40p0ETA25: 0: 64 1: 60 2: 226 -HLT_j75c_j50c_j25c_j20c_pf_ftf_preselZ120MAXMULT20XX4c20_L1jJ85p0ETA21_3jJ40p0ETA25: +HLT_j75c_j50c_j25c_j20c_pf_ftf_preselZ120MAXMULT20cXX4c20_L1jJ85p0ETA21_3jJ40p0ETA25: eventCount: 14 stepCounts: 0: 16 @@ -18162,16 +18162,16 @@ HLT_j75c_j50c_j25c_j20c_pf_ftf_preselZ120XX4c20_L1jJ85p0ETA21_3jJ40p0ETA25: 0: 64 1: 60 2: 226 -HLT_j75c_j50c_j25c_j20c_pf_ftf_preselZ126MAXMULT5XX4c20_L1jJ85p0ETA21_3jJ40p0ETA25: - eventCount: 13 +HLT_j75c_j50c_j25c_j20c_pf_ftf_preselZ126MAXMULT5cXX4c20_L1jJ85p0ETA21_3jJ40p0ETA25: + eventCount: 14 stepCounts: 0: 16 - 1: 14 - 2: 13 + 1: 15 + 2: 14 stepFeatures: 0: 64 - 1: 56 - 2: 211 + 1: 60 + 2: 226 HLT_j75c_j50c_j25c_j20c_pf_ftf_preselZ128XX4c20_L1jJ85p0ETA21_3jJ40p0ETA25: eventCount: 14 stepCounts: @@ -18182,26 +18182,26 @@ HLT_j75c_j50c_j25c_j20c_pf_ftf_preselZ128XX4c20_L1jJ85p0ETA21_3jJ40p0ETA25: 0: 64 1: 60 2: 226 -HLT_j75c_j50c_j25c_j20c_pf_ftf_preselZ138MAXMULT5XX4c20_L1jJ85p0ETA21_3jJ40p0ETA25: - eventCount: 13 +HLT_j75c_j50c_j25c_j20c_pf_ftf_preselZ138MAXMULT5cXX4c20_L1jJ85p0ETA21_3jJ40p0ETA25: + eventCount: 14 stepCounts: 0: 16 - 1: 14 - 2: 13 + 1: 15 + 2: 14 stepFeatures: 0: 64 - 1: 56 - 2: 211 -HLT_j75c_j50c_j25c_j20c_pf_ftf_preselZ167MAXMULT5XX4c20_L1jJ85p0ETA21_3jJ40p0ETA25: - eventCount: 13 + 1: 60 + 2: 226 +HLT_j75c_j50c_j25c_j20c_pf_ftf_preselZ167MAXMULT5cXX4c20_L1jJ85p0ETA21_3jJ40p0ETA25: + eventCount: 14 stepCounts: 0: 16 - 1: 14 - 2: 13 + 1: 15 + 2: 14 stepFeatures: 0: 64 - 1: 56 - 2: 211 + 1: 60 + 2: 226 HLT_j75c_j50c_j25c_j20c_pf_ftf_preselZ82XX3c20_L1jJ85p0ETA21_3jJ40p0ETA25: eventCount: 13 stepCounts: @@ -18212,7 +18212,7 @@ HLT_j75c_j50c_j25c_j20c_pf_ftf_preselZ82XX3c20_L1jJ85p0ETA21_3jJ40p0ETA25: 0: 64 1: 56 2: 208 -HLT_j75c_j50c_j25c_j20c_pf_ftf_preselZ84MAXMULT20XX3c20_L1jJ85p0ETA21_3jJ40p0ETA25: +HLT_j75c_j50c_j25c_j20c_pf_ftf_preselZ84MAXMULT20cXX3c20_L1jJ85p0ETA21_3jJ40p0ETA25: eventCount: 14 stepCounts: 0: 16 @@ -25268,6 +25268,24 @@ HLT_mu4_j20_0eta290_boffperf_pf_ftf_dRAB04_L1MU3V_jJ30: 4: 10 5: 49 6: 49 +HLT_mu4_j35_0eta290_020jvt_boffperf_pf_ftf_dRAB04_L1BTAG-MU3VjJ40: + eventCount: 5 + stepCounts: + 0: 6 + 1: 6 + 2: 6 + 3: 6 + 4: 6 + 5: 6 + 6: 5 + stepFeatures: + 0: 7 + 1: 7 + 2: 7 + 3: 7 + 4: 6 + 5: 22 + 6: 22 HLT_mu4_j35_0eta290_020jvt_boffperf_pf_ftf_dRAB04_L1MU3V_J15: eventCount: 4 stepCounts: @@ -25286,7 +25304,7 @@ HLT_mu4_j35_0eta290_020jvt_boffperf_pf_ftf_dRAB04_L1MU3V_J15: 4: 9 5: 34 6: 34 -HLT_mu4_j35_0eta290_020jvt_boffperf_pf_ftf_dRAB04_L1MU3V_jJ30: +HLT_mu4_j35_0eta290_020jvt_boffperf_pf_ftf_dRAB04_L1MU3V_jJ40: eventCount: 5 stepCounts: 0: 10 @@ -25358,6 +25376,24 @@ HLT_mu4_j35_0eta290_boffperf_pf_ftf_dRAB04_L1MU3V_jJ40: 4: 10 5: 36 6: 36 +HLT_mu4_j45_0eta290_020jvt_boffperf_pf_ftf_dRAB04_L1BTAG-MU3VjJ40: + eventCount: 4 + stepCounts: + 0: 6 + 1: 6 + 2: 6 + 3: 6 + 4: 6 + 5: 6 + 6: 4 + stepFeatures: + 0: 7 + 1: 7 + 2: 7 + 3: 7 + 4: 6 + 5: 18 + 6: 18 HLT_mu4_j45_0eta290_020jvt_boffperf_pf_ftf_dRAB04_L1MU3V_J15: eventCount: 3 stepCounts: @@ -25376,7 +25412,7 @@ HLT_mu4_j45_0eta290_020jvt_boffperf_pf_ftf_dRAB04_L1MU3V_J15: 4: 9 5: 28 6: 28 -HLT_mu4_j45_0eta290_020jvt_boffperf_pf_ftf_dRAB04_L1MU3V_jJ30: +HLT_mu4_j45_0eta290_020jvt_boffperf_pf_ftf_dRAB04_L1MU3V_jJ40: eventCount: 4 stepCounts: 0: 10 @@ -25718,6 +25754,24 @@ HLT_mu6_ivarmedium_L1MU5VF: 2: 11 3: 11 4: 4 +HLT_mu6_j100_0eta290_020jvt_boffperf_pf_ftf_dRAB04_L1BTAG-MU5VFjJ80: + eventCount: 1 + stepCounts: + 0: 1 + 1: 1 + 2: 1 + 3: 1 + 4: 1 + 5: 1 + 6: 1 + stepFeatures: + 0: 1 + 1: 1 + 2: 1 + 3: 1 + 4: 1 + 5: 1 + 6: 1 HLT_mu6_j100_0eta290_020jvt_boffperf_pf_ftf_dRAB04_L1MU5VF_J40: eventCount: 1 stepCounts: @@ -25790,24 +25844,24 @@ HLT_mu6_j100_0eta290_boffperf_pf_ftf_dRAB04_L1MU5VF_jJ80: 4: 8 5: 6 6: 6 -HLT_mu6_j45_0eta290_boffperf_pf_ftf_dRAB03_L1BTAG-MU5VFjJ50: - eventCount: 4 +HLT_mu6_j45_0eta290_boffperf_pf_ftf_dRAB03_L1BTAG-MU5VFjJ80: + eventCount: 1 stepCounts: - 0: 4 - 1: 4 - 2: 4 - 3: 4 - 4: 4 - 5: 4 - 6: 4 + 0: 1 + 1: 1 + 2: 1 + 3: 1 + 4: 1 + 5: 1 + 6: 1 stepFeatures: - 0: 4 - 1: 4 - 2: 4 - 3: 4 - 4: 4 - 5: 13 - 6: 13 + 0: 1 + 1: 1 + 2: 1 + 3: 1 + 4: 1 + 5: 5 + 6: 5 HLT_mu6_j45_nojcalib_L1J20: eventCount: 8 stepCounts: @@ -25822,6 +25876,24 @@ HLT_mu6_j45_nojcalib_L1J20: 2: 10 3: 10 4: 16 +HLT_mu6_j60_0eta290_020jvt_boffperf_pf_ftf_dRAB04_L1BTAG-MU3VjJ40: + eventCount: 2 + stepCounts: + 0: 6 + 1: 6 + 2: 6 + 3: 6 + 4: 6 + 5: 5 + 6: 2 + stepFeatures: + 0: 6 + 1: 6 + 2: 6 + 3: 6 + 4: 6 + 5: 13 + 6: 13 HLT_mu6_j60_0eta290_020jvt_boffperf_pf_ftf_dRAB04_L1MU3V_J15: eventCount: 2 stepCounts: @@ -25840,7 +25912,7 @@ HLT_mu6_j60_0eta290_020jvt_boffperf_pf_ftf_dRAB04_L1MU3V_J15: 4: 9 5: 20 6: 20 -HLT_mu6_j60_0eta290_020jvt_boffperf_pf_ftf_dRAB04_L1MU3V_jJ30: +HLT_mu6_j60_0eta290_020jvt_boffperf_pf_ftf_dRAB04_L1MU3V_jJ40: eventCount: 2 stepCounts: 0: 10 diff --git a/Trigger/TrigValidation/TrigP1Test/share/ref_v1Dev_decodeBS_build.ref b/Trigger/TrigValidation/TrigP1Test/share/ref_v1Dev_decodeBS_build.ref index c865799f5a545ade6dc59c742168e4dcbe42216d..3c504a8547932f0270dc66914723b4dd2435cc3c 100644 --- a/Trigger/TrigValidation/TrigP1Test/share/ref_v1Dev_decodeBS_build.ref +++ b/Trigger/TrigValidation/TrigP1Test/share/ref_v1Dev_decodeBS_build.ref @@ -1003,7 +1003,7 @@ HLT_4j110_pf_ftf_presel4j85_L13J50: eventCount: 0 HLT_4j110_pf_ftf_presel4j85_L13jJ90: eventCount: 0 -HLT_4j110_pf_ftf_preselZ120MAXMULT20XX4c85_L13J50: +HLT_4j110_pf_ftf_preselZ120MAXMULT20cXX4c85_L13J50: eventCount: 0 HLT_4j110_pf_ftf_preselZ120XX4c85_L13J50: eventCount: 0 @@ -5295,7 +5295,7 @@ HLT_j0_Z120XX10c40_roiftf_presel7j30_L14J15: eventCount: 0 HLT_j0_Z120XX4c120_roiftf_presel4j85_L13J50: eventCount: 0 -HLT_j0_Z120XX4c20_MAXMULT20_roiftf_presel4c20_L1RD0_FILLED: +HLT_j0_Z120XX4c20_MAXMULT20c_roiftf_presel4c20_L1RD0_FILLED: eventCount: 3 stepCounts: 0: 13 @@ -5303,14 +5303,14 @@ HLT_j0_Z120XX4c20_MAXMULT20_roiftf_presel4c20_L1RD0_FILLED: stepFeatures: 0: 13 1: 14 -HLT_j0_Z120XX4c20_MAXMULT6_roiftf_presel4c20_L1RD0_FILLED: +HLT_j0_Z120XX4c20_MAXMULT6c_roiftf_presel4c20_L1RD0_FILLED: eventCount: 3 stepCounts: 0: 13 1: 3 stepFeatures: 0: 13 - 1: 12 + 1: 13 HLT_j0_Z120XX4c20_roiftf_presel4c20_L1RD0_FILLED: eventCount: 3 stepCounts: @@ -5355,21 +5355,21 @@ HLT_j0_pf_ftf_L1jJ85p0ETA21_3jJ40p0ETA25: eventCount: 0 HLT_j0_pf_ftf_preselZ116XX4c20_L1jJ85p0ETA21_3jJ40p0ETA25: eventCount: 0 -HLT_j0_pf_ftf_preselZ120MAXMULT20XX4c20_L1jJ85p0ETA21_3jJ40p0ETA25: +HLT_j0_pf_ftf_preselZ120MAXMULT20cXX4c20_L1jJ85p0ETA21_3jJ40p0ETA25: eventCount: 0 HLT_j0_pf_ftf_preselZ120XX4c20_L1jJ85p0ETA21_3jJ40p0ETA25: eventCount: 0 -HLT_j0_pf_ftf_preselZ126MAXMULT5XX4c20_L1jJ85p0ETA21_3jJ40p0ETA25: +HLT_j0_pf_ftf_preselZ126MAXMULT5cXX4c20_L1jJ85p0ETA21_3jJ40p0ETA25: eventCount: 0 HLT_j0_pf_ftf_preselZ128XX4c20_L1jJ85p0ETA21_3jJ40p0ETA25: eventCount: 0 -HLT_j0_pf_ftf_preselZ138MAXMULT5XX4c20_L1jJ85p0ETA21_3jJ40p0ETA25: +HLT_j0_pf_ftf_preselZ138MAXMULT5cXX4c20_L1jJ85p0ETA21_3jJ40p0ETA25: eventCount: 0 -HLT_j0_pf_ftf_preselZ167MAXMULT5XX4c20_L1jJ85p0ETA21_3jJ40p0ETA25: +HLT_j0_pf_ftf_preselZ167MAXMULT5cXX4c20_L1jJ85p0ETA21_3jJ40p0ETA25: eventCount: 0 HLT_j0_pf_ftf_preselZ82XX3c20_L1jJ85p0ETA21_3jJ40p0ETA25: eventCount: 0 -HLT_j0_pf_ftf_preselZ84MAXMULT20XX3c20_L1jJ85p0ETA21_3jJ40p0ETA25: +HLT_j0_pf_ftf_preselZ84MAXMULT20cXX3c20_L1jJ85p0ETA21_3jJ40p0ETA25: eventCount: 0 HLT_j0_pf_ftf_preselZ84XX3c20_L1jJ85p0ETA21_3jJ40p0ETA25: eventCount: 0 @@ -6983,7 +6983,7 @@ HLT_j75c_020jvt_j50c_020jvt_j25c_020jvt_j20c_020jvt_SHARED_2j20c_020jvt_bgn177_p : eventCount: 0 ? HLT_j75c_020jvt_j50c_020jvt_j25c_020jvt_j20c_020jvt_SHARED_2j20c_020jvt_bgn177_pf_ftf_presel2c20XX2c20bg85_L1jJ85p0ETA21_3jJ40p0ETA25 : eventCount: 0 -? HLT_j75c_020jvt_j50c_020jvt_j25c_020jvt_j20c_020jvt_SHARED_2j20c_020jvt_bgn177_pf_ftf_preselZ116MAXMULT20XX4c20_L1jJ85p0ETA21_3jJ40p0ETA25 +? HLT_j75c_020jvt_j50c_020jvt_j25c_020jvt_j20c_020jvt_SHARED_2j20c_020jvt_bgn177_pf_ftf_preselZ116MAXMULT20cXX4c20_L1jJ85p0ETA21_3jJ40p0ETA25 : eventCount: 0 ? HLT_j75c_020jvt_j50c_020jvt_j25c_020jvt_j20c_020jvt_SHARED_2j20c_020jvt_bgn177_pf_ftf_preselZ116XX4c20_L1jJ85p0ETA21_3jJ40p0ETA25 : eventCount: 0 @@ -6993,13 +6993,13 @@ HLT_j75c_020jvt_j50c_020jvt_j25c_020jvt_j20c_020jvt_SHARED_2j20c_020jvt_bgn177_p : eventCount: 0 ? HLT_j75c_020jvt_j50c_020jvt_j25c_020jvt_j20c_020jvt_SHARED_2j20c_020jvt_bgn177_pf_ftf_preselZ128XX4c20_L1jJ85p0ETA21_3jJ40p0ETA25 : eventCount: 0 -? HLT_j75c_020jvt_j50c_020jvt_j25c_020jvt_j20c_020jvt_SHARED_2j20c_020jvt_bgn177_pf_ftf_preselZ138MAXMULT5XX4c20_L1jJ85p0ETA21_3jJ40p0ETA25 +? HLT_j75c_020jvt_j50c_020jvt_j25c_020jvt_j20c_020jvt_SHARED_2j20c_020jvt_bgn177_pf_ftf_preselZ138MAXMULT5cXX4c20_L1jJ85p0ETA21_3jJ40p0ETA25 : eventCount: 0 ? HLT_j75c_020jvt_j50c_020jvt_j25c_020jvt_j20c_020jvt_SHARED_2j20c_020jvt_bgn177_pf_ftf_preselZ138XX4c20_L1jJ85p0ETA21_3jJ40p0ETA25 : eventCount: 0 -? HLT_j75c_020jvt_j50c_020jvt_j25c_020jvt_j20c_020jvt_SHARED_2j20c_020jvt_bgn177_pf_ftf_preselZ167MAXMULT5XX4c20_L1jJ85p0ETA21_3jJ40p0ETA25 +? HLT_j75c_020jvt_j50c_020jvt_j25c_020jvt_j20c_020jvt_SHARED_2j20c_020jvt_bgn177_pf_ftf_preselZ167MAXMULT5cXX4c20_L1jJ85p0ETA21_3jJ40p0ETA25 : eventCount: 0 -? HLT_j75c_020jvt_j50c_020jvt_j25c_020jvt_j20c_020jvt_SHARED_2j20c_020jvt_bgn177_pf_ftf_preselZ84MAXMULT20XX3c20_L1jJ85p0ETA21_3jJ40p0ETA25 +? HLT_j75c_020jvt_j50c_020jvt_j25c_020jvt_j20c_020jvt_SHARED_2j20c_020jvt_bgn177_pf_ftf_preselZ84MAXMULT20cXX3c20_L1jJ85p0ETA21_3jJ40p0ETA25 : eventCount: 0 ? HLT_j75c_020jvt_j50c_020jvt_j25c_020jvt_j20c_020jvt_SHARED_2j20c_020jvt_bgn177_pf_ftf_preselZ84XX1c20XX2c20b85_L1jJ85p0ETA21_3jJ40p0ETA25 : eventCount: 0 @@ -7053,25 +7053,25 @@ HLT_j75c_020jvt_j50c_020jvt_j25c_020jvt_j20c_020jvt_pf_ftf_presel2c20XX2c20b85_L eventCount: 0 HLT_j75c_020jvt_j50c_020jvt_j25c_020jvt_j20c_020jvt_pf_ftf_preselZ116XX4c20_L1jJ85p0ETA21_3jJ40p0ETA25: eventCount: 0 -HLT_j75c_020jvt_j50c_020jvt_j25c_020jvt_j20c_020jvt_pf_ftf_preselZ120MAXMULT20XX4c20_L1jJ85p0ETA21_3jJ40p0ETA25: +HLT_j75c_020jvt_j50c_020jvt_j25c_020jvt_j20c_020jvt_pf_ftf_preselZ120MAXMULT20cXX4c20_L1jJ85p0ETA21_3jJ40p0ETA25: eventCount: 0 HLT_j75c_020jvt_j50c_020jvt_j25c_020jvt_j20c_020jvt_pf_ftf_preselZ120XX2c20XX2c20b85_L1jJ85p0ETA21_3jJ40p0ETA25: eventCount: 0 HLT_j75c_020jvt_j50c_020jvt_j25c_020jvt_j20c_020jvt_pf_ftf_preselZ120XX4c20_L1jJ85p0ETA21_3jJ40p0ETA25: eventCount: 0 -HLT_j75c_020jvt_j50c_020jvt_j25c_020jvt_j20c_020jvt_pf_ftf_preselZ126MAXMULT5XX4c20_L1jJ85p0ETA21_3jJ40p0ETA25: +HLT_j75c_020jvt_j50c_020jvt_j25c_020jvt_j20c_020jvt_pf_ftf_preselZ126MAXMULT5cXX4c20_L1jJ85p0ETA21_3jJ40p0ETA25: eventCount: 0 HLT_j75c_020jvt_j50c_020jvt_j25c_020jvt_j20c_020jvt_pf_ftf_preselZ128XX4c20_L1jJ85p0ETA21_3jJ40p0ETA25: eventCount: 0 -HLT_j75c_020jvt_j50c_020jvt_j25c_020jvt_j20c_020jvt_pf_ftf_preselZ138MAXMULT5XX2c20XX2c20b85_L1jJ85p0ETA21_3jJ40p0ETA25: +HLT_j75c_020jvt_j50c_020jvt_j25c_020jvt_j20c_020jvt_pf_ftf_preselZ138MAXMULT5cXX2c20XX2c20b85_L1jJ85p0ETA21_3jJ40p0ETA25: eventCount: 0 -HLT_j75c_020jvt_j50c_020jvt_j25c_020jvt_j20c_020jvt_pf_ftf_preselZ138MAXMULT5XX4c20_L1jJ85p0ETA21_3jJ40p0ETA25: +HLT_j75c_020jvt_j50c_020jvt_j25c_020jvt_j20c_020jvt_pf_ftf_preselZ138MAXMULT5cXX4c20_L1jJ85p0ETA21_3jJ40p0ETA25: eventCount: 0 -HLT_j75c_020jvt_j50c_020jvt_j25c_020jvt_j20c_020jvt_pf_ftf_preselZ167MAXMULT5XX4c20_L1jJ85p0ETA21_3jJ40p0ETA25: +HLT_j75c_020jvt_j50c_020jvt_j25c_020jvt_j20c_020jvt_pf_ftf_preselZ167MAXMULT5cXX4c20_L1jJ85p0ETA21_3jJ40p0ETA25: eventCount: 0 HLT_j75c_020jvt_j50c_020jvt_j25c_020jvt_j20c_020jvt_pf_ftf_preselZ82XX3c20_L1jJ85p0ETA21_3jJ40p0ETA25: eventCount: 0 -HLT_j75c_020jvt_j50c_020jvt_j25c_020jvt_j20c_020jvt_pf_ftf_preselZ84MAXMULT20XX3c20_L1jJ85p0ETA21_3jJ40p0ETA25: +HLT_j75c_020jvt_j50c_020jvt_j25c_020jvt_j20c_020jvt_pf_ftf_preselZ84MAXMULT20cXX3c20_L1jJ85p0ETA21_3jJ40p0ETA25: eventCount: 0 HLT_j75c_020jvt_j50c_020jvt_j25c_020jvt_j20c_020jvt_pf_ftf_preselZ84XX1c20XX2c20b85_L1jJ85p0ETA21_3jJ40p0ETA25: eventCount: 0 @@ -7083,21 +7083,21 @@ HLT_j75c_j50c_j25c_j20c_pf_ftf_L1jJ85p0ETA21_3jJ40p0ETA25: eventCount: 0 HLT_j75c_j50c_j25c_j20c_pf_ftf_preselZ116XX4c20_L1jJ85p0ETA21_3jJ40p0ETA25: eventCount: 0 -HLT_j75c_j50c_j25c_j20c_pf_ftf_preselZ120MAXMULT20XX4c20_L1jJ85p0ETA21_3jJ40p0ETA25: +HLT_j75c_j50c_j25c_j20c_pf_ftf_preselZ120MAXMULT20cXX4c20_L1jJ85p0ETA21_3jJ40p0ETA25: eventCount: 0 HLT_j75c_j50c_j25c_j20c_pf_ftf_preselZ120XX4c20_L1jJ85p0ETA21_3jJ40p0ETA25: eventCount: 0 -HLT_j75c_j50c_j25c_j20c_pf_ftf_preselZ126MAXMULT5XX4c20_L1jJ85p0ETA21_3jJ40p0ETA25: +HLT_j75c_j50c_j25c_j20c_pf_ftf_preselZ126MAXMULT5cXX4c20_L1jJ85p0ETA21_3jJ40p0ETA25: eventCount: 0 HLT_j75c_j50c_j25c_j20c_pf_ftf_preselZ128XX4c20_L1jJ85p0ETA21_3jJ40p0ETA25: eventCount: 0 -HLT_j75c_j50c_j25c_j20c_pf_ftf_preselZ138MAXMULT5XX4c20_L1jJ85p0ETA21_3jJ40p0ETA25: +HLT_j75c_j50c_j25c_j20c_pf_ftf_preselZ138MAXMULT5cXX4c20_L1jJ85p0ETA21_3jJ40p0ETA25: eventCount: 0 -HLT_j75c_j50c_j25c_j20c_pf_ftf_preselZ167MAXMULT5XX4c20_L1jJ85p0ETA21_3jJ40p0ETA25: +HLT_j75c_j50c_j25c_j20c_pf_ftf_preselZ167MAXMULT5cXX4c20_L1jJ85p0ETA21_3jJ40p0ETA25: eventCount: 0 HLT_j75c_j50c_j25c_j20c_pf_ftf_preselZ82XX3c20_L1jJ85p0ETA21_3jJ40p0ETA25: eventCount: 0 -HLT_j75c_j50c_j25c_j20c_pf_ftf_preselZ84MAXMULT20XX3c20_L1jJ85p0ETA21_3jJ40p0ETA25: +HLT_j75c_j50c_j25c_j20c_pf_ftf_preselZ84MAXMULT20cXX3c20_L1jJ85p0ETA21_3jJ40p0ETA25: eventCount: 0 HLT_j75c_j50c_j25c_j20c_pf_ftf_preselZ84XX3c20_L1jJ85p0ETA21_3jJ40p0ETA25: eventCount: 0 @@ -8590,6 +8590,24 @@ HLT_mu4_j20_0eta290_boffperf_pf_ftf_dRAB04_L1MU3V_jJ30: 4: 3 5: 15 6: 15 +HLT_mu4_j35_0eta290_020jvt_boffperf_pf_ftf_dRAB04_L1BTAG-MU3VjJ40: + eventCount: 1 + stepCounts: + 0: 2 + 1: 2 + 2: 2 + 3: 1 + 4: 1 + 5: 1 + 6: 1 + stepFeatures: + 0: 2 + 1: 2 + 2: 2 + 3: 1 + 4: 1 + 5: 3 + 6: 3 HLT_mu4_j35_0eta290_020jvt_boffperf_pf_ftf_dRAB04_L1MU3V_J15: eventCount: 1 stepCounts: @@ -8608,7 +8626,7 @@ HLT_mu4_j35_0eta290_020jvt_boffperf_pf_ftf_dRAB04_L1MU3V_J15: 4: 2 5: 3 6: 3 -HLT_mu4_j35_0eta290_020jvt_boffperf_pf_ftf_dRAB04_L1MU3V_jJ30: +HLT_mu4_j35_0eta290_020jvt_boffperf_pf_ftf_dRAB04_L1MU3V_jJ40: eventCount: 1 stepCounts: 0: 6 @@ -8679,6 +8697,24 @@ HLT_mu4_j35_0eta290_boffperf_pf_ftf_dRAB04_L1MU3V_jJ40: 4: 3 5: 3 6: 3 +HLT_mu4_j45_0eta290_020jvt_boffperf_pf_ftf_dRAB04_L1BTAG-MU3VjJ40: + eventCount: 1 + stepCounts: + 0: 2 + 1: 2 + 2: 2 + 3: 1 + 4: 1 + 5: 1 + 6: 1 + stepFeatures: + 0: 2 + 1: 2 + 2: 2 + 3: 1 + 4: 1 + 5: 2 + 6: 2 HLT_mu4_j45_0eta290_020jvt_boffperf_pf_ftf_dRAB04_L1MU3V_J15: eventCount: 1 stepCounts: @@ -8697,7 +8733,7 @@ HLT_mu4_j45_0eta290_020jvt_boffperf_pf_ftf_dRAB04_L1MU3V_J15: 4: 2 5: 2 6: 2 -HLT_mu4_j45_0eta290_020jvt_boffperf_pf_ftf_dRAB04_L1MU3V_jJ30: +HLT_mu4_j45_0eta290_020jvt_boffperf_pf_ftf_dRAB04_L1MU3V_jJ40: eventCount: 1 stepCounts: 0: 6 @@ -8913,6 +8949,8 @@ HLT_mu6_ivarmedium_L1MU5VF: 2: 2 3: 2 4: 2 +HLT_mu6_j100_0eta290_020jvt_boffperf_pf_ftf_dRAB04_L1BTAG-MU5VFjJ80: + eventCount: 0 HLT_mu6_j100_0eta290_020jvt_boffperf_pf_ftf_dRAB04_L1MU5VF_J40: eventCount: 0 HLT_mu6_j100_0eta290_020jvt_boffperf_pf_ftf_dRAB04_L1MU5VF_jJ80: @@ -8921,7 +8959,7 @@ HLT_mu6_j100_0eta290_boffperf_pf_ftf_dRAB04_L1BTAG-MU5VFjJ90: eventCount: 0 HLT_mu6_j100_0eta290_boffperf_pf_ftf_dRAB04_L1MU5VF_jJ80: eventCount: 0 -HLT_mu6_j45_0eta290_boffperf_pf_ftf_dRAB03_L1BTAG-MU5VFjJ50: +HLT_mu6_j45_0eta290_boffperf_pf_ftf_dRAB03_L1BTAG-MU5VFjJ80: eventCount: 0 HLT_mu6_j45_nojcalib_L1J20: eventCount: 0 @@ -8931,6 +8969,16 @@ HLT_mu6_j45_nojcalib_L1J20: stepFeatures: 0: 3 1: 1 +HLT_mu6_j60_0eta290_020jvt_boffperf_pf_ftf_dRAB04_L1BTAG-MU3VjJ40: + eventCount: 0 + stepCounts: + 0: 2 + 1: 1 + 2: 1 + stepFeatures: + 0: 2 + 1: 1 + 2: 1 HLT_mu6_j60_0eta290_020jvt_boffperf_pf_ftf_dRAB04_L1MU3V_J15: eventCount: 0 stepCounts: @@ -8945,7 +8993,7 @@ HLT_mu6_j60_0eta290_020jvt_boffperf_pf_ftf_dRAB04_L1MU3V_J15: 2: 2 3: 1 4: 1 -HLT_mu6_j60_0eta290_020jvt_boffperf_pf_ftf_dRAB04_L1MU3V_jJ30: +HLT_mu6_j60_0eta290_020jvt_boffperf_pf_ftf_dRAB04_L1MU3V_jJ40: eventCount: 0 stepCounts: 0: 6 diff --git a/Trigger/TrigValidation/TrigP1Test/test/test_trigP1_v1PhysP1_trfDbgStream_build.py b/Trigger/TrigValidation/TrigP1Test/test/test_trigP1_v1PhysP1_trfDbgStream_build.py index b598a63446ce118f00b21d55417d0aa6c7cb0f3a..d7cde47a448ad6d87d4a6b6dd62dae0341e33d00 100755 --- a/Trigger/TrigValidation/TrigP1Test/test/test_trigP1_v1PhysP1_trfDbgStream_build.py +++ b/Trigger/TrigValidation/TrigP1Test/test/test_trigP1_v1PhysP1_trfDbgStream_build.py @@ -17,7 +17,8 @@ hlt.forks = 1 hlt.threads = 1 hlt.concurrent_events = 1 hlt.max_events = 50 -hlt.args = '--CA --preExec="Trigger.triggerMenuSetup=\'PhysicsP1_pp_run3_v1\'"' +# currently using data21 input file (rel. 22), disable CA for athenaHLT +hlt.args = ' --CA "all:True" "BSRDOtoRAW:False" --precommand=\\\"setMenu=\\\'PhysicsP1_pp_run3_v1\\\'\\\"' hlt.args += ' --streamSelection=Main,BphysDelayed,VBFDelayed' hlt.args += ' --prodSysBSRDO True' hlt.args += ' --outputBSFile=RAW.pool.root' diff --git a/Trigger/TrigValidation/TrigValTools/bin/compare-counts-CA.py b/Trigger/TrigValidation/TrigValTools/bin/compare-counts-CA.py deleted file mode 100755 index dc79a01f36a4b13f717a6f0d2964728abb4f794f..0000000000000000000000000000000000000000 --- a/Trigger/TrigValidation/TrigValTools/bin/compare-counts-CA.py +++ /dev/null @@ -1,242 +0,0 @@ -#!/usr/bin/env python3 -# Copyright (C) 2002-2023 CERN for the benefit of the ATLAS collaboration -import json -import argparse -from glob import glob - -""" -This script can be used to diff the HLTChain.txt and HLTStep.txt count reports -taking into account which trigger chains have been partially or fully migrated -to ComponentAccumulator. - -Input files can be taken e.g. from ART tests: - - trigAna_RDOtoRDOTrig_v1Dev_build vs trigAna_RDOtoRDOTrig_v1Dev_newJO_build - - test_trigP1_v1PhysP1_newJO_build vs test_trigP1_v1PhysP1_build - - trigP1_v1Dev_newJO_build vs trigP1_v1Dev_build -See 'expert page' on https://test-atrvshft.web.cern.ch/test-atrvshft/ART_monitor/ - -The input dirs should contain a single HLT menu, -and the HLTChain.txt and HLTStep.txt files. -""" - -def add_args(parser): - parser.add_argument('legacy', type=str, help='Directory holding legacy HLT menu and counts to read') - parser.add_argument('CA', type=str, help='Directory holding CA HLT menu and counts to read') - - -def find_unique_file(dir,filename): - fpath = glob(f'{dir}/{filename}') - assert len(fpath)==1, f"Did not find unique matching {filename} in legacy dir" - return fpath[0] - - -def extract_chainsteps(menu_path): - menuf = open(menu_path) - menu = json.load(menuf) - - def remove_empty(steps): - return [s for s in steps if s] - - return { - c: remove_empty(info['sequencers']) for c,info in menu['chains'].items() - } - - -# Tries to additionally keep the first non-migrated legacy step -def get_common_steps(steps1,steps2,ignore_step_number): - if ignore_step_number: - # We need to map the legacy steps to the CA - # because menu alignment in an incomplete menu - # may result in offsets - chopped1 = [s.split('_',1)[1] for s in steps1] - chopped2steps = {s.split('_',1)[1]:s for s in steps2} - merged1 = zip(chopped1,steps1) - - common_steps = {} - first_missing_CA = True - for short,long in merged1: - if short in chopped2steps: - common_steps[long] = chopped2steps[short] - elif first_missing_CA: - common_steps[long] = "N/A" - first_missing_CA = False - else: - break - else: - # Simpler code for when we think everything lines up - common_steps = [] - first_missing_CA = True - for s in steps1: - if s in steps2: - common_steps.append(s) - elif first_missing_CA: - common_steps.append(s) - first_missing_CA = False - else: - break - return common_steps - - -def get_common_chainsteps(legacy,ca,ignore_step_number): - # All CA chains should exist in the legacy menu - for chain in ca: - assert chain in legacy - common_chainsteps = {} - for chain, steps in legacy.items(): - if chain in ca: - common_chainsteps[chain] = get_common_steps(steps,ca[chain],ignore_step_number) - return common_chainsteps - - -def compare_chain_counts(chain_counts_path_leg,chain_counts_path_CA,common_chainsteps): - - fchain_counts_leg = open(chain_counts_path_leg) - fchain_counts_CA = open(chain_counts_path_CA) - - def parse_chain_counts(fcounts, common_chainsteps): - counts = {} - for l in fcounts: - try: - chain, count = l.split() - if chain in common_chainsteps: - counts[chain] = int(count) - except ValueError: - pass - return counts - - chain_counts_leg = parse_chain_counts(fchain_counts_leg, common_chainsteps) - chain_counts_CA = parse_chain_counts(fchain_counts_CA, common_chainsteps) - - # Merge the counts - chain_counts_compared = { - chain: { - 'legacy': chain_counts_leg[chain], - 'CA': chain_counts_CA[chain], - } for chain in chain_counts_leg - } - return chain_counts_compared - - -def compare_step_counts(step_counts_path_leg,step_counts_path_CA,common_chainsteps): - fstep_counts_leg = open(step_counts_path_leg) - fstep_counts_CA = open(step_counts_path_CA) - - def parse_chain_counts(fcounts, common_chainsteps): - counts = {} - # Accumulate counts, indexed by step number in chain - for l in fcounts: - try: - stepname, count = l.split() - chain, step = stepname.rsplit('_',1) - stepno = int(step[4:]) - if chain in common_chainsteps: - if chain not in counts: - counts[chain] = {} - counts[chain][stepno] = int(count) - except ValueError: - pass - - # Reorder the counts -- the lines are printed alphabetically - # so that 11 precedes 2 - counts_condensed = {} - for chain, stepcounts in counts.items(): - ordered_counts = [] - for stepno in range(len(stepcounts)): - ordered_counts.append(stepcounts[stepno]) - # Retain just the nonzero counts, as absent or empty steps - # render as 0's - counts_condensed[chain] = [c for c in ordered_counts if c>0] - - return counts_condensed - - step_counts_leg = parse_chain_counts(fstep_counts_leg, common_chainsteps) - step_counts_CA = parse_chain_counts(fstep_counts_CA, common_chainsteps) - - # Merge the counts - step_counts_compared = { - chain: { - 'legacy': step_counts_leg[chain], - 'CA': step_counts_CA[chain], - } for chain in step_counts_leg - } - return step_counts_compared - - -def main(): - parser = argparse.ArgumentParser( - description='Compare HLT menus to determine CA/Legacy chain differences' - ) - add_args(parser) - args = parser.parse_args() - - leg_menu = find_unique_file(args.legacy,"HLTMenu*.json") - CA_menu = find_unique_file(args.CA,"HLTMenu*.json") - - chainsteps_leg = extract_chainsteps(leg_menu) - chainsteps_ca = extract_chainsteps(CA_menu) - - # For now we will always assume that the legacy & CA steps - # could get misaligned. The retrieved mapping also - # contains the first legacy step not reflected in CA - common_chainsteps = get_common_chainsteps(chainsteps_leg, chainsteps_ca, ignore_step_number=True) - json.dump( - common_chainsteps, - open('common_chainsteps.json','w'), - indent=4 - ) - - ########### Compare chain event counts - chain_counts_path_leg = f'{args.legacy}/HLTChain.txt' - chain_counts_path_CA = f'{args.CA}/HLTChain.txt' - - chain_counts_compared = compare_chain_counts(chain_counts_path_leg,chain_counts_path_CA,common_chainsteps) - json.dump( - chain_counts_compared, - open('chain_count_legacy_CA.json','w'), - indent=4 - ) - - # Print a text summary of mismatches - fchaindiff = open('HLTChain_diff.txt','w') - print("Chain counts disagreeing between CA and legacy configs:\n-----",file=fchaindiff) - print(f"{'Chain name':<120} | legacy | CA",file=fchaindiff) - for chain, comp in chain_counts_compared.items(): - if comp['legacy'] != comp['CA']: - print(f"{chain:<120} | {comp['legacy']:6} | {comp['CA']}",file=fchaindiff) - - ########### Compare step event counts - step_counts_path_leg = f'{args.legacy}/HLTStep.txt' - step_counts_path_CA = f'{args.CA}/HLTStep.txt' - - step_counts_compared = compare_step_counts(step_counts_path_leg,step_counts_path_CA,common_chainsteps) - json.dump( - step_counts_compared, - open('step_count_legacy_CA.json','w'), - indent=4 - ) - - # Print a display of mismatches - fstepdiff = open('HLTStep_diff.txt','w') - print("Step counts disagreeing between CA and legacy configs:\n-----",file=fstepdiff) - print(f"{'Chain name':<80} | {'Legacy step':<50} | legacy | {'CA step':<50} | CA",file=fstepdiff) - for chain, comp in step_counts_compared.items(): - # Need to a - if comp['legacy'] != comp['CA']: - lengthdiff = len(comp['legacy'])-len(comp['CA']) - if lengthdiff==0: - leg_padded = comp['legacy'] - CA_padded = comp['CA'] - elif lengthdiff>0: - leg_padded = comp['legacy'] - CA_padded = comp['CA'] + [0]*lengthdiff - elif lengthdiff<0: - leg_padded = comp['legacy'] + [0]*abs(lengthdiff) - CA_padded = comp['CA'] - stepnames = [(k,v) for k,v in common_chainsteps[chain].items()] - for index, (legcount, CAcount) in enumerate(zip(leg_padded,CA_padded)): - step_leg, step_CA = stepnames[index] if index < len(stepnames) else ('...', '...') - print(f"{chain if index==0 else '':<80} | {step_leg:<50} | {legcount:6} | {step_CA:<50} | {CAcount}",file=fstepdiff) - - -if __name__=='__main__': - main() diff --git a/Trigger/TrigValidation/TrigValTools/bin/runTrigCI.py b/Trigger/TrigValidation/TrigValTools/bin/runTrigCI.py deleted file mode 100755 index fb8ac6167d20df45fcd419abe76ac9fe8120f04c..0000000000000000000000000000000000000000 --- a/Trigger/TrigValidation/TrigValTools/bin/runTrigCI.py +++ /dev/null @@ -1,130 +0,0 @@ -#!/usr/bin/env python -# -# Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration -# - -'''Script to run several Trigger ART test scripts and make a summary for Continuous Integration framework''' - -import os -import sys -import logging -import argparse -import subprocess -import errno -from collections import OrderedDict -from TrigValTools.TrigARTUtils import find_scripts, remember_cwd - - -def get_parser(): - parser = argparse.ArgumentParser(usage='%(prog)s [options] scripts', - description=__doc__) - parser.add_argument('scripts', - metavar='scripts', - nargs='+', - help='Scripts to run (can be multiple)') - parser.add_argument('-r', '--required-step', - metavar='STEP_NAME', - action='append', - help='Add step name to explicitly check in addition to the exit code.' - ' This option can be specified multiple times') - parser.add_argument('-v', '--verbose', - action='store_true', - help='Increase output verbosity') - return parser - - -def analyse_steps(log_file, steps): - art_results = {} - if not os.path.isfile(log_file): - logging.error('CANNOT OPEN LOG FILE %s', log_file) - return 1 - - with open(log_file) as f: - for line in f: - if not line.startswith('art-result:'): - continue - logging.debug('PARSING RESULT LINE: %s', line) - split_line = line.split(' ') - if len(split_line) < 3: - logging.warning('CANNOT PARSE STEP RESULT FROM LINE: %s', line) - continue - art_results[split_line[2].strip()] = int(split_line[1].strip()) - - logging.debug('FOUND THE FOLLOWING RESULTS: %s', art_results.keys()) - ret_code = 0 - for step_name in steps: - if step_name not in art_results.keys(): - logging.error('NO RESULT FOUND FOR REQUIRED STEP %s', step_name) - return 1 - result = art_results[step_name] - if result == 0: - logging.debug('STEP %s SUCCEEDED WITH CODE %d', step_name, result) - else: - logging.error('STEP %s FAILED WITH CODE %d', step_name, result) - if abs(result) > ret_code: - ret_code = abs(result) - - return ret_code - - -def try_mkdir(dirname): - try: - os.mkdir(dirname) - except OSError as e: - if e.errno == errno.EEXIST: - logging.info("SUB-DIRECTORY %s ALREADY EXISTS AND WILL BE REUSED", dirname) - else: - logging.error("FAILED TO CREATE SUB-DIRECTORY %s", dirname) - raise e - - -def main(): - args = get_parser().parse_args() - logging.basicConfig(stream=sys.stdout, - format='========== %(levelname)-8s %(message)s', - level=logging.DEBUG if args.verbose else logging.INFO) - - results = OrderedDict() - max_name_len = 0 - for script in args.scripts: - logging.debug('PROCESSING SCRIPT %s', script) - found_scripts = find_scripts([script]) - if len(found_scripts)==0 or os.path.basename(found_scripts[0]) != script: - logging.error('THE SCRIPT %s IS NOT INSTALLED, CANNOT RUN THE TEST', script) - results[script] = 1 - if len(script) > max_name_len: - max_name_len = len(script) - with remember_cwd(): - dirname = os.path.splitext(script)[0] - try_mkdir(dirname) - os.chdir(dirname) - logging.info('='*50) - logging.info('STARTING %s IN SUB-DIRECTORY %s', script, dirname) - logging.info('='*50) - cmd = '{:s} 2>&1 | tee stdout.txt; exit ${{PIPESTATUS[0]}}'.format(script) - logging.debug('EXECUTING COMMAND IN A SUBSHELL: %s', cmd) - ret_code = subprocess.call(cmd, shell=True) - if not args.required_step: - logging.info('FINISHED %s WITH EXIT CODE %d', script, ret_code) - else: - logging.info('FINISHED %s WITH EXIT CODE %d, CHECKING RESULTS FOR EXTRA REQUIRED STEPS: %s', - script, ret_code, ' '.join(args.required_step)) - ret_code = analyse_steps('stdout.txt', args.required_step) - logging.info('POST-PROCESSING RESULT OF %s IS CODE %d\n', script, ret_code) - results[script] = ret_code - - logging.info('RESULTS SUMMARY:') - logging.info('='*(max_name_len+11)) - final_code = 0 - for script, result in results.items(): - logging.info('| %s : %4d |', '{:{width}s}'.format(script, width=max_name_len), result) - if abs(result) > final_code: - final_code = abs(result) - logging.info('| %s : %4d |', '{:{width}s}'.format('FINAL CODE', width=max_name_len), final_code) - logging.info('='*(max_name_len+11)) - - return final_code - - -if "__main__" in __name__: - sys.exit(main()) diff --git a/Trigger/TrigValidation/TrigValTools/python/TrigValSteering/ExecStep.py b/Trigger/TrigValidation/TrigValTools/python/TrigValSteering/ExecStep.py index 6ee5ba0433ba914c33cc9e320e3e9605810c8060..7bef43ef4a530b99da0d47e4c3cd59883c7b591b 100644 --- a/Trigger/TrigValidation/TrigValTools/python/TrigValSteering/ExecStep.py +++ b/Trigger/TrigValidation/TrigValTools/python/TrigValSteering/ExecStep.py @@ -1,5 +1,5 @@ # -# Copyright (C) 2002-2023 CERN for the benefit of the ATLAS collaboration +# Copyright (C) 2002-2024 CERN for the benefit of the ATLAS collaboration # ''' @@ -205,26 +205,21 @@ class ExecStep(Step): new_cmd += precommand self.args = self.args.replace(old_cmd, new_cmd) - def add_hlt_jo_modifier(self, modifier): + def add_trf_precommand(self, precommand): ''' - Same as add_precommand but checks if using HLT job options where the modifier is applicable - and prepends the transform step name in case of transforms + Same as add_precommand but prepends the transform step name in case of transforms. ''' - if self.type in ['athena', 'athenaHLT'] and 'runHLT_standalone' not in self.job_options: - self.log.debug('Skip adding modifier %s to step %s because it does not use runHLT_standalone job options', - modifier, self.name) - return - elif self.type in ['Reco_tf', 'Trig_reco_tf', 'Derivation_tf']: + if self.type in ['Reco_tf', 'Trig_reco_tf', 'Derivation_tf']: if 'inputBS_RDOFile' in self.args: - modifier = 'BSRDOtoRAW:' + modifier + precommand = 'BSRDOtoRAW:' + precommand elif 'outputRDO_TRIGFile' in self.args or 'doRDO_TRIG' in self.args: - modifier = 'RDOtoRDOTrigger:' + modifier + precommand = 'RDOtoRDOTrigger:' + precommand else: - self.log.debug('Skip adding modifier %s to step %s because it is a transform which does not run Trigger', - modifier, self.name) + self.log.debug('Skip adding precommand %s to step %s because it is a transform which does not run Trigger', + precommand, self.name) return - return self.add_precommand(modifier) + return self.add_precommand(precommand) def configure_args(self, test): self.log.debug('Configuring args for step %s', self.name) @@ -263,10 +258,7 @@ class ExecStep(Step): if self.costmon: self.flags.append('Trigger.CostMonitoring.monitorAllEvents=True') if self.fpe_auditor: - if self._isCA: - self.flags.append('Exec.FPE=1') - else: - self.add_hlt_jo_modifier('fpeAuditor=True') + self.flags.append('Exec.FPE=1') # Run config-only if requested if self.config_only : @@ -375,13 +367,13 @@ class ExecStep(Step): self.misconfig_abort('Wrong type for flags. Expected list or tuple.') if self.type.endswith('_tf'): # for transform, set flags as pre-exec - self.add_hlt_jo_modifier(';'.join(f'flags.{flag}' for flag in self.flags)) + self.add_trf_precommand(';'.join(f'flags.{flag}' for flag in self.flags)) else: # athena(HLT) if self._isCA: self.args += ' ' + ' '.join(self.flags) - else: # for legacy, set flags as pre-exec - self.add_hlt_jo_modifier('from AthenaConfiguration.AllConfigFlags import ConfigFlags;' + - ';'.join(f'ConfigFlags.{flag}' for flag in self.flags)) + else: + self.log.warning('Setting flags in legacy job options is no longer supported. Ignoring: ' + + ' '.join(self.flags)) # Strip extra whitespace self.args = self.args.strip() diff --git a/Trigger/TrigValidation/TrigValTools/test/test_unit_trigvalsteering_build.py b/Trigger/TrigValidation/TrigValTools/test/test_unit_trigvalsteering_build.py index 27d7073e4726b61743644d621111c83eba42119b..db3980ca0ef81fd8b22c3d557872f3792f2510a6 100755 --- a/Trigger/TrigValidation/TrigValTools/test/test_unit_trigvalsteering_build.py +++ b/Trigger/TrigValidation/TrigValTools/test/test_unit_trigvalsteering_build.py @@ -1,5 +1,5 @@ #!/usr/bin/env python -# Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration +# Copyright (C) 2002-2024 CERN for the benefit of the ATLAS collaboration # # This is not an ART test. This is a unit test of the framework used for # steering Trigger ART tests. @@ -21,7 +21,8 @@ for test_type in ['athena','athenaHLT','Reco_tf','Trig_reco_tf']: ex = ExecStep.ExecStep('Test_'+test_type) ex.type = test_type if '_tf' not in test_type: - ex.job_options = 'AthExJobOptions/AthExJobOptions_MinimalJobOptionsNoEvt.py' + # the actual job options don't matter as we just print --help + ex.job_options = 'AthExHelloWorld/HelloWorldOptions.py' ex.input = '' ex.args = '--help' test.exec_steps.append(ex) diff --git a/Trigger/TriggerCommon/TriggerJobOpts/python/TriggerConfig.py b/Trigger/TriggerCommon/TriggerJobOpts/python/TriggerConfig.py index ee9da76eda1c200241edaa29784192fe0c0e926a..3cc2a20278d2e644b56f4279dcaea4882a528bad 100644 --- a/Trigger/TriggerCommon/TriggerJobOpts/python/TriggerConfig.py +++ b/Trigger/TriggerCommon/TriggerJobOpts/python/TriggerConfig.py @@ -5,14 +5,14 @@ from collections import OrderedDict, defaultdict from AthenaConfiguration.ComponentAccumulator import ComponentAccumulator from AthenaConfiguration.ComponentFactory import CompFactory from AthenaConfiguration.Enums import Format, MetadataCategory -from AthenaCommon.CFElements import seqAND, seqOR, parOR, flatAlgorithmSequences, getSequenceChildren, isSequence, hasProp, getProp +from AthenaCommon.CFElements import seqAND, seqOR, parOR, flatAlgorithmSequences, getSequenceChildren, isSequence from AthenaCommon.Logging import logging __log = logging.getLogger('TriggerConfig') def __isCombo(alg): - return hasProp( alg, "MultiplicitiesMap" ) + return hasattr( alg, "MultiplicitiesMap" ) def __stepNumber(stepName): """extract step number frmo strings like Step2... -> 2""" @@ -29,7 +29,7 @@ def collectHypos( steps ): __log.info("Collecting hypos from steps") hypos = defaultdict( list ) - for stepSeq in getSequenceChildren( steps ): + for stepSeq in steps.Members: if not isSequence( stepSeq ): continue @@ -38,13 +38,12 @@ def collectHypos( steps ): continue __log.debug( "collecting hypos from step %s", stepSeq.getName() ) -# start = {} for seq,algs in flatAlgorithmSequences(stepSeq).items(): for alg in sorted(algs, key=lambda t: str(t.getName())): if isSequence( alg ): continue # will replace by function once dependencies are sorted - if hasProp(alg, 'HypoInputDecisions'): + if hasattr(alg, 'HypoInputDecisions'): __log.debug("found hypo %s in %s", alg.getName(), stepSeq.getName()) if __isCombo( alg ) and len(alg.ComboHypoTools): __log.debug( " with %d comboHypoTools: %s", len(alg.ComboHypoTools), ' '.join(map(str, [tool.getName() for tool in alg.ComboHypoTools]))) @@ -63,16 +62,12 @@ def __decisionsFromHypo( hypo ): else: # regular hypos return [ t.getName() for t in hypo.HypoTools if not isLegId(t.getName())], [str(hypo.HypoOutputDecisions)] -def __getSequenceChildrenIfIsSequence( s ): - if isSequence( s ): - return getSequenceChildren( s ) - return [] def collectViewMakers( steps ): """ collect all view maker algorithms in the configuration """ makers = [] # map with name, instance and encompasing recoSequence - for stepSeq in __getSequenceChildrenIfIsSequence( steps ): - for recoSeq in __getSequenceChildrenIfIsSequence( stepSeq ): + for stepSeq in getSequenceChildren( steps ): + for recoSeq in getSequenceChildren( stepSeq ): if not isSequence( recoSeq ): continue algsInSeq = flatAlgorithmSequences( recoSeq ) @@ -96,10 +91,10 @@ def collectFilters( steps ): __log.info("Collecting filters") filters = defaultdict( list ) - for stepSeq in getSequenceChildren( steps ): + for stepSeq in steps.Members: if "filter" in stepSeq.getName(): - filters[stepSeq.getName()] = getSequenceChildren( stepSeq ) - __log.debug("Found Filters in Step %s : %s", stepSeq.getName(), getSequenceChildren(stepSeq)) + filters[stepSeq.getName()] = stepSeq.Members + __log.debug("Found Filters in Step %s : %s", stepSeq.getName(), stepSeq.Members) return filters @@ -275,7 +270,7 @@ def triggerMonitoringCfg(flags, hypos, filters, hltSeeding): acc.merge(onlineServicesAcc) - mon.L1Decisions = getProp( hltSeeding, 'HLTSeedingSummaryKey' ) + mon.L1Decisions = hltSeeding.HLTSeedingSummaryKey from DecisionHandling.DecisionHandlingConfig import setupFilterMonitoring [ [ setupFilterMonitoring( flags, alg ) for alg in algs ] for algs in list(filters.values()) ] diff --git a/Trigger/TriggerCommon/TriggerJobOpts/python/runHLT.py b/Trigger/TriggerCommon/TriggerJobOpts/python/runHLT.py index 86763d45bad927b42cd42888dc642a9088b6b8ab..d5015d4da9c8ac8d32a89d3e563fd32f5d0af986 100644 --- a/Trigger/TriggerCommon/TriggerJobOpts/python/runHLT.py +++ b/Trigger/TriggerCommon/TriggerJobOpts/python/runHLT.py @@ -29,11 +29,6 @@ def lock_and_restrict(flags): def set_flags(flags): """Set default flags for running HLT""" - - # Make sure nobody uses deprecated global ConfigFlags - import AthenaConfiguration.AllConfigFlags - del AthenaConfiguration.AllConfigFlags.ConfigFlags - from AthenaConfiguration.Enums import BeamType flags.Trigger.doHLT = True # needs to be set early as other flags depend on it diff --git a/Trigger/TriggerCommon/TriggerMenuMT/python/CFtest/test_menu_cf_CA.py b/Trigger/TriggerCommon/TriggerMenuMT/python/CFtest/test_menu_cf_CA.py index 325bf6ae178a522ce594e080a293e9618f0d4dc1..94b2a278246f83892f17f9c8a90835114890d582 100644 --- a/Trigger/TriggerCommon/TriggerMenuMT/python/CFtest/test_menu_cf_CA.py +++ b/Trigger/TriggerCommon/TriggerMenuMT/python/CFtest/test_menu_cf_CA.py @@ -72,10 +72,6 @@ def makeMenu(flags): return menuCA def main(): - # Make sure nobody uses deprecated global ConfigFlags - import AthenaConfiguration.AllConfigFlags - del AthenaConfiguration.AllConfigFlags.ConfigFlags - from AthenaConfiguration.AllConfigFlags import initConfigFlags flags = initConfigFlags() set_flags(flags) @@ -107,8 +103,8 @@ def main(): from AthenaConfiguration.AccumulatorCache import AccumulatorDecorator AccumulatorDecorator.printStats() - from AthenaCommon.CFElements import getSequenceChildren, isSequence - for alg in getSequenceChildren( menu.getSequence("HLTAllSteps") ): + from AthenaCommon.CFElements import isSequence + for alg in menu.getSequence("HLTAllSteps").Members: if isSequence( alg ): continue diff --git a/Trigger/TriggerCommon/TriggerMenuMT/python/HLT/CommonSequences/EventBuildingSequences.py b/Trigger/TriggerCommon/TriggerMenuMT/python/HLT/CommonSequences/EventBuildingSequences.py index dc878d521b326f815fe20de9ef53c8427caa746d..e7acf2d7b05b1491f80b00abad465a2e00b0baec 100644 --- a/Trigger/TriggerCommon/TriggerMenuMT/python/HLT/CommonSequences/EventBuildingSequences.py +++ b/Trigger/TriggerCommon/TriggerMenuMT/python/HLT/CommonSequences/EventBuildingSequences.py @@ -10,7 +10,6 @@ from TrigPartialEventBuilding.TrigPartialEventBuildingConfig import StaticPEBInf from HLTSeeding.HLTSeedingConfig import mapThresholdToL1DecisionCollection from libpyeformat_helper import SourceIdentifier, SubDetector from AthenaConfiguration.ComponentFactory import CompFactory -from AthenaConfiguration.AccumulatorCache import AccumulatorCache from .LATOMESourceIDs import LATOMESourceIDs from AthenaCommon.Logging import logging log = logging.getLogger(__name__) @@ -286,13 +285,6 @@ def pebInputMaker(flags, chain, eventBuildType): return maker -@AccumulatorCache -def pebSequenceCfg(eventBuildType, inputMaker): - # Create new sequence and add inputMaker. Sequence is cached for next call. - recoAcc = InEventRecoCA("pebSequence_"+eventBuildType, inputMaker=inputMaker) - return recoAcc - - def pebMenuSequenceCfg(flags, chain, eventBuildType, chainDict): ''' Return the MenuSequenceCA for the PEB input maker for this chain. @@ -304,7 +296,7 @@ def pebMenuSequenceCfg(flags, chain, eventBuildType, chainDict): suffix = getPEBBuildSuffix(chain, eventBuildType) inputMaker = pebInputMaker(flags, chain, eventBuildType) - recoAcc = pebSequenceCfg(eventBuildType, inputMaker) + recoAcc = InEventRecoCA("pebSequence_"+eventBuildType, inputMaker=inputMaker) selAcc = SelectionCA("pebMainSeq_"+eventBuildType+suffix) selAcc.mergeReco(recoAcc) selAcc.addHypoAlgo(CompFactory.PEBInfoWriterAlg('PEBInfoWriterAlg_' + eventBuildType+suffix)) diff --git a/Trigger/TriggerCommon/TriggerMenuMT/python/HLT/Config/ControlFlow/HLTCFComponents.py b/Trigger/TriggerCommon/TriggerMenuMT/python/HLT/Config/ControlFlow/HLTCFComponents.py index 64a9299c325557ddf38ef3168b20b8720b1a4c86..76f1f4632e7d82ed21f7838f84f68d78af974d42 100644 --- a/Trigger/TriggerCommon/TriggerMenuMT/python/HLT/Config/ControlFlow/HLTCFComponents.py +++ b/Trigger/TriggerCommon/TriggerMenuMT/python/HLT/Config/ControlFlow/HLTCFComponents.py @@ -7,7 +7,7 @@ from TriggerMenuMT.HLT.Config.ControlFlow.HLTCFTools import isComboHypoAlg from TriggerMenuMT.HLT.Config.MenuComponents import EmptyMenuSequence from AthenaConfiguration.ComponentAccumulator import ComponentAccumulator from AthenaConfiguration.ComponentFactory import CompFactory -from AthenaCommon.CFElements import compName, findAlgorithmByPredicate, parOR, seqAND +from AthenaCommon.CFElements import findAlgorithmByPredicate, parOR, seqAND from functools import lru_cache from AthenaCommon.Logging import logging @@ -32,7 +32,7 @@ class SequenceFilterNode(AlgNode): return [[]] def __repr__(self): - return "SequenceFilter::%s [%s] -> [%s], chains=%s"%(compName(self.Alg),' '.join(map(str, self.getInputList())),' '.join(map(str, self.getOutputList())), self.getChains()) + return "SequenceFilter::%s [%s] -> [%s], chains=%s"%(self.Alg.name,' '.join(map(str, self.getInputList())),' '.join(map(str, self.getOutputList())), self.getChains()) class RoRSequenceFilterNode(SequenceFilterNode): def __init__(self, name): @@ -118,7 +118,7 @@ class CFSequence(object): the filter is connected only once (to avoid multiple DH links) """ if log.isEnabledFor(logging.DEBUG): - 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)) + 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.debug(" --- sequences: ") for seq in self.step.sequences: log.debug(seq) @@ -134,7 +134,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", filter_out, seq.name, compName(self.filter.Alg)) + log.debug("CFSequence: Found input %s to sequence::%s from Filter::%s", filter_out, seq.name, self.filter.Alg.name) seq.connectToFilter( filter_out ) nseq+=1 else: @@ -189,7 +189,7 @@ class CFSequence(object): def __repr__(self): return "--- CFSequence ---\n + Filter: %s \n + decisions: %s\n + %s \n"%(\ - compName(self.filter.Alg), self.decisions, self.step) + self.filter.Alg.name, self.decisions, self.step) class CFSequenceCA(CFSequence): @@ -235,7 +235,7 @@ class CFSequenceCA(CFSequence): @lru_cache(None) def findComboHypoAlg(self): - return findAlgorithmByPredicate(self.seq, lambda alg: compName(alg) == self.step.Alg.getName() and isComboHypoAlg(alg)) + return findAlgorithmByPredicate(self.seq, lambda alg: alg.name == self.step.Alg.name and isComboHypoAlg(alg)) def createHypoTools(self, flags, chain, newstep): diff --git a/Trigger/TriggerCommon/TriggerMenuMT/python/HLT/Config/ControlFlow/HLTCFConfig.py b/Trigger/TriggerCommon/TriggerMenuMT/python/HLT/Config/ControlFlow/HLTCFConfig.py index 3e1a446e845154807909e0c0d44adfe8c1641bee..dc1e5b1d76408db29f139eeed5e7bf6726114cdc 100644 --- a/Trigger/TriggerCommon/TriggerMenuMT/python/HLT/Config/ControlFlow/HLTCFConfig.py +++ b/Trigger/TriggerCommon/TriggerMenuMT/python/HLT/Config/ControlFlow/HLTCFConfig.py @@ -26,7 +26,7 @@ from TriggerMenuMT.HLT.Config.ControlFlow.HLTCFDot import stepCF_DataFlow_to_dot from TriggerMenuMT.HLT.Config.ControlFlow.HLTCFComponents import RoRSequenceFilterNode, PassFilterNode, CFSequenceCA from TriggerMenuMT.HLT.Config.ControlFlow.MenuComponentsNaming import CFNaming -from AthenaCommon.CFElements import parOR, seqAND, getSequenceChildren, isSequence, compName +from AthenaCommon.CFElements import parOR, seqAND, isSequence from AthenaCommon.AlgSequence import dumpSequence from AthenaCommon.Logging import logging @@ -159,26 +159,25 @@ def sequenceScanner( HLTNode ): """ Recursively finds the steps in which sequences are used""" if not isSequence(seq): return stepIndex - name = compName(seq) - match=re.search('^Step([0-9]+)_filter',name) + match=re.search('^Step([0-9]+)_filter',seq.name) if match: stepIndex = match.group(1) - log.debug("sequenceScanner: This is another step: %s %s", name, stepIndex) + log.debug("sequenceScanner: This is another step: %s %s", seq.name, stepIndex) inViewSequence = "" inView = False - for c in getSequenceChildren( seq ): + for c in seq.Members: if isSequence(c): # Detect whether this is the view sequence pointed to # by the EV creator alg, or if it is in such a sequence inView = c.getName()==inViewSequence or childInView stepIndex = _mapSequencesInSteps(c, stepIndex, childInView=inView) - _seqMapInStep[compName(c)].add((stepIndex,inView)) - log.verbose("sequenceScanner: Child %s of sequence %s is in view? %s --> '%s'", compName(c), name, inView, inViewSequence) + _seqMapInStep[c.name].add((stepIndex,inView)) + log.verbose("sequenceScanner: Child %s of sequence %s is in view? %s --> '%s'", c.name, seq.name, inView, inViewSequence) else: if isinstance(c, CompFactory.EventViewCreatorAlgorithm): inViewSequence = c.ViewNodeName - log.verbose("sequenceScanner: EventViewCreatorAlg %s is child of sequence %s with ViewNodeName %s", compName(c), name, c.ViewNodeName) - log.debug("sequenceScanner: Sequence %s is in view? %s --> '%s'", name, inView, inViewSequence) + log.verbose("sequenceScanner: EventViewCreatorAlg %s is child of sequence %s with ViewNodeName %s", c.name, seq.name, c.ViewNodeName) + log.debug("sequenceScanner: Sequence %s is in view? %s --> '%s'", seq.name, inView, inViewSequence) return stepIndex # do the job: @@ -305,7 +304,7 @@ def createDataFlow(flags, chains, allDicts): log.error("[createDataFlow] lengths of chainlegs = %s differ from inputs = %s", str(chainLegs), str(filterInput)) raise Exception("[createDataFlow] Cannot proceed, exiting.") for finput, leg in zip(filterInput, chainLegs): - log.debug("Adding chain %s to input %s of %s", leg, finput,compName(sequenceFilter.Alg)) + log.debug("Adding chain %s to input %s of %s", leg, finput, sequenceFilter.Alg.name) sequenceFilter.addChain(leg, finput) log.debug("Now Filter has chains: %s", sequenceFilter.getChains()) @@ -418,7 +417,7 @@ def buildFilter(filter_name, filter_input, empty): log.debug("Added inputs to filter: %s", sfilter.getInputList()) log.debug("Added outputs to filter: %s", sfilter.getOutputList()) - log.debug("Filter Done: %s", compName(sfilter.Alg)) + log.debug("Filter Done: %s", sfilter.Alg.name) return (sfilter) diff --git a/Trigger/TriggerCommon/TriggerMenuMT/python/HLT/Config/ControlFlow/HLTCFDot.py b/Trigger/TriggerCommon/TriggerMenuMT/python/HLT/Config/ControlFlow/HLTCFDot.py index 595b625d9df54e73e92d695bbd5d83a0f9aa3707..7749afb3d112ee2a65da4364073c44375e9e2df1 100644 --- a/Trigger/TriggerCommon/TriggerMenuMT/python/HLT/Config/ControlFlow/HLTCFDot.py +++ b/Trigger/TriggerCommon/TriggerMenuMT/python/HLT/Config/ControlFlow/HLTCFDot.py @@ -1,4 +1,4 @@ -# Copyright (C) 2002-2021 CERN for the benefit of the ATLAS collaboration +# Copyright (C) 2002-2024 CERN for the benefit of the ATLAS collaboration ###### Here some graphical methods to produce dot files from Decision Handling # to visualize: dot -T pdf Step1.dot > Step1.pdf @@ -7,7 +7,7 @@ from AthenaCommon.AlgSequence import AthSequencer from TriggerMenuMT.HLT.Config.ControlFlow.HLTCFTools import algColor from TriggerMenuMT.HLT.Config.ControlFlow.HLTCFComponents import isPassSequence import itertools -from AthenaCommon.CFElements import getSequenceChildren, isSequence, compName +from AthenaCommon.CFElements import isSequence DrawHypoTools=True @@ -17,19 +17,19 @@ def drawHypoTools(file, all_hypos): for hp in all_hypos: for hypotool in hp.Alg.HypoTools: file.write(" \"%s\"[fillcolor=yellow,style=filled,shape= Mdiamond]\n" % hypotool.getName()) - file.write(" \"%s\" -> \"%s\" [style=dashed, color=grey]\n"%(compName(hp.Alg), hypotool.getName())) + file.write(" \"%s\" -> \"%s\" [style=dashed, color=grey]\n" % (hp.Alg.name, hypotool.getName())) def stepCF_ControlFlow_to_dot(stepCF): def _dump (seq, indent): o = list() if isSequence(seq): - for c in getSequenceChildren( seq ): + for c in seq.Members: if isSequence(c): - o.append( ("%s[color=%s, shape=circle, width=.5, fixedsize=true ,style=filled]\n"%(compName(c),_seqColor(c)), indent) ) + o.append( ("%s[color=%s, shape=circle, width=.5, fixedsize=true ,style=filled]\n"%(c.name,_seqColor(c)), indent) ) else: - o.append( ("%s[fillcolor=%s,style=filled]\n"%(compName(c),algColor(c)), indent) ) - o.append( ("%s -> %s\n"%(compName(seq), compName(c)), indent)) + o.append( ("%s[fillcolor=%s,style=filled]\n"%(c.name,algColor(c)), indent) ) + o.append( ("%s -> %s\n"%(seq.name, c.name), indent)) o.extend( _dump (c, indent+1) ) return o @@ -63,14 +63,14 @@ def stepCF_ControlFlow_to_dot(stepCF): - with open('%s.CF.dot'%compName(stepCF), mode="wt") as file: + with open('%s.CF.dot'%stepCF.name, 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'%compName(stepCF)) + +' %s [shape=Mdiamond]\n'%stepCF.name) indent=0 # out = [("%s[color=%s shape=circle]\n"%(stepCF.getName(),_seqColor(stepCF)), indent)] @@ -103,7 +103,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"%(compName(cfseq.filter.Alg),algColor(cfseq.filter.Alg))) + file.write(" %s[fillcolor=%s style=filled]\n"%(cfseq.filter.Alg.name,algColor(cfseq.filter.Alg))) step_connections.append(cfseq.filter) file.write( '\n subgraph cluster_%s {\n'%(cfseq.step.name)\ +' concentrate=true;\n' @@ -127,7 +127,7 @@ def all_DataFlow_to_dot(name, step_list): if cfseq.step.combo is not None: - file.write(" %s[color=%s]\n"%(compName(cfseq.step.combo.Alg), algColor(cfseq.step.combo.Alg))) + file.write(" %s[color=%s]\n"%(cfseq.step.combo.Alg.name, algColor(cfseq.step.combo.Alg))) cfseq_algs.append(cfseq.step.combo) last_step_hypoNodes.append(cfseq.step.combo) file.write(' }\n') @@ -156,9 +156,9 @@ def stepCF_DataFlow_to_dot(name, cfseq_list): all_hypos = [] for cfseq in cfseq_list: - file.write(" %s[fillcolor=%s style=filled]\n"%(compName(cfseq.filter.Alg),algColor(cfseq.filter.Alg))) + file.write(" %s[fillcolor=%s style=filled]\n"%(cfseq.filter.Alg.name,algColor(cfseq.filter.Alg))) for inp in cfseq.filter.getInputList(): - file.write(addConnection(name, compName(cfseq.filter.Alg), inp)) + file.write(addConnection(name, cfseq.filter.Alg.name, inp)) file.write( '\n subgraph cluster_%s {\n'%(cfseq.step.name)\ +' concentrate=true;\n' @@ -177,7 +177,7 @@ def stepCF_DataFlow_to_dot(name, cfseq_list): None, file) if cfseq.step.combo is not None: - file.write(" %s[color=%s]\n"%(compName(cfseq.step.combo.Alg), algColor(cfseq.step.combo.Alg))) + file.write(" %s[color=%s]\n"%(cfseq.step.combo.Alg.name, algColor(cfseq.step.combo.Alg))) cfseq_algs.append(cfseq.step.combo) file.write(' }\n') @@ -203,7 +203,7 @@ def findConnections(alg_list): dataIntersection = list(set(outs) & set(ins)) if len(dataIntersection) > 0: for line in dataIntersection: - lineconnect+=addConnection(compName(nodeA.Alg), compName(nodeB.Alg), line) + lineconnect+=addConnection(nodeA.Alg.name, nodeB.Alg.name, line) #print ("Data connections between ", compName(nodeA.Alg)," and ",compName(nodeB.Alg) ,": ", line) return lineconnect @@ -224,7 +224,7 @@ def findDHconnections(nodeA, nodeB): dataIntersection = list(set(outs) & set(ins)) if len(dataIntersection) > 0: for line in dataIntersection: - lineconnect+=addConnection(compName(nodeA.Alg), compName(nodeB.Alg), line) + lineconnect+=addConnection(nodeA.Alg.name, nodeB.Alg.name, line) #print 'Data DH connections between %s and %s: %s'%(nodeA.Alg.getName(), nodeB.Alg.getName(), line) return lineconnect @@ -236,8 +236,7 @@ def getValuesProperties(node): algs = [] if isinstance(node.Alg, AthSequencer): seq=node.Alg - algs = getSequenceChildren( seq ) - algs.pop(0) # remove InputMaker + seq.Members.pop(0) # remove InputMaker else: algs.append(node.Alg) diff --git a/Trigger/TriggerCommon/TriggerMenuMT/python/HLT/Config/GenerateMenuMT.py b/Trigger/TriggerCommon/TriggerMenuMT/python/HLT/Config/GenerateMenuMT.py index 116763c47e6035bb8c8adb9c563f5974d14f5422..dc4a44438db10656f5da972881782bd7718fab2b 100755 --- a/Trigger/TriggerCommon/TriggerMenuMT/python/HLT/Config/GenerateMenuMT.py +++ b/Trigger/TriggerCommon/TriggerMenuMT/python/HLT/Config/GenerateMenuMT.py @@ -615,8 +615,7 @@ def makeHLTTree(flags): from TriggerMenuMT.HLT.Config.ControlFlow.HLTCFConfig import decisionTreeFromChains, sequenceScanner from TriggerJobOpts.TriggerConfig import collectViewMakers from AthenaConfiguration.ComponentAccumulator import ComponentAccumulator - from AthenaCommon.CFElements import compName - from AthenaCommon.CFElements import seqAND + from AthenaCommon.CFElements import seqAND acc = ComponentAccumulator() steps = seqAND('HLTAllSteps') @@ -634,7 +633,7 @@ def makeHLTTree(flags): flatDecisions.extend (step) viewMakers = collectViewMakers(steps) - viewMakerMap = {compName(vm):vm for vm in viewMakers} + viewMakerMap = {vm.name:vm for vm in viewMakers} for vmname, vm in viewMakerMap.items(): log.debug(f"[makeHLTTree] {vmname} InputMakerOutputDecisions: {vm.InputMakerOutputDecisions}") if vmname.endswith("_probe"): diff --git a/Trigger/TriggerCommon/TriggerMenuMT/python/HLT/Config/JSON/HLTMenuJSON.py b/Trigger/TriggerCommon/TriggerMenuMT/python/HLT/Config/JSON/HLTMenuJSON.py index e64a862f3411b0244a783dc493ce4349442188b1..a701bf944cb9873ea6000bd72a1804d89dfa18bd 100644 --- a/Trigger/TriggerCommon/TriggerMenuMT/python/HLT/Config/JSON/HLTMenuJSON.py +++ b/Trigger/TriggerCommon/TriggerMenuMT/python/HLT/Config/JSON/HLTMenuJSON.py @@ -4,12 +4,10 @@ import re import json from functools import cache from TrigConfigSvc.TrigConfigSvcCfg import getHLTMenuFileName -from AthenaCommon.CFElements import getSequenceChildren, isSequence +from AthenaCommon.CFElements import getSequenceChildren from AthenaCommon.Logging import logging __log = logging.getLogger( __name__ ) -def getChildrenIfSequence( s ): - return getSequenceChildren( s ) if isSequence( s ) else [] # remove prescale suffixes def __getMenuBaseName(menuName): @@ -26,17 +24,17 @@ def __getStepsDataFromAlgSequence(HLTAllSteps): """ stepsData = [] if HLTAllSteps is not None: - for HLTStep in getSequenceChildren( HLTAllSteps ): + for HLTStep in HLTAllSteps.Members: if "_reco" not in HLTStep.getName(): # Avoid the pre-step Filter execution - for Step in getChildrenIfSequence( HLTStep ): - for View in getChildrenIfSequence( Step ): - for Reco in getChildrenIfSequence( View ): + for Step in getSequenceChildren( HLTStep ): + for View in getSequenceChildren( Step ): + for Reco in getSequenceChildren( View ): if "_reco" in Reco.getName() and HLTStep.getName() not in stepsData: - stepsData.append( getSequenceChildren( HLTStep ) ) + stepsData.append( HLTStep.Members ) break continue - stepsData.append( getSequenceChildren( HLTStep ) ) + stepsData.append( HLTStep.Members ) else: __log.warn( "No HLTAllSteps sequencer, will not export per-Step data for chains.") return stepsData @@ -57,10 +55,10 @@ def __getChainSequencers(stepsData, chainName): for counter, step in enumerate(stepsData, 1): mySequencer = None for sequencer in step: - seqq=getSequenceChildren( sequencer) - if not seqq: # empty steps - continue - sequencerFilter = seqq[0] # Always the first child in the step + try: + sequencerFilter = sequencer.Members[0] # Always the first child in the step + except (AttributeError, IndexError): + continue # empty steps if chainName in __getFilterChains(sequencerFilter): if mySequencer is not None: __log.error( "Multiple Filters found (corresponding Sequencers %s, %s) for %s in Step %i!", @@ -95,7 +93,6 @@ def generateJSON(flags, chainDicts, chainConfigs, HLTAllSteps): # List of steps data for sequencers stepsData = __getStepsDataFromAlgSequence(HLTAllSteps) - from TriggerMenuMT.HLT.Menu import StreamInfo for chain in chainDicts: # Prepare information for stream list and fill separate dictionary diff --git a/Trigger/TriggerCommon/TriggerMenuMT/python/HLT/Config/MenuComponents.py b/Trigger/TriggerCommon/TriggerMenuMT/python/HLT/Config/MenuComponents.py index 716cceefd1e80c93bd51e0c281c29addd7b59ba7..b4a3b985d5ba32448f6dc3bc5ba83c251a208a4c 100644 --- a/Trigger/TriggerCommon/TriggerMenuMT/python/HLT/Config/MenuComponents.py +++ b/Trigger/TriggerCommon/TriggerMenuMT/python/HLT/Config/MenuComponents.py @@ -6,7 +6,7 @@ from TriggerMenuMT.HLT.Config.ControlFlow.HLTCFTools import (NoHypoToolCreated, algColor, isHypoBase, isInputMakerBase) -from AthenaCommon.CFElements import parOR, seqAND, compName, getProp, hasProp, findAlgorithmByPredicate +from AthenaCommon.CFElements import parOR, seqAND, findAlgorithmByPredicate from AthenaConfiguration.ComponentAccumulator import ComponentAccumulator from AthenaConfiguration.ComponentFactory import CompFactory from DecisionHandling.DecisionHandlingConfig import ComboHypoCfg @@ -61,7 +61,7 @@ class AlgNode(Node): self.addOutput(("%s_%s"%(self.Alg.getName(),self.outputProp))) def setPar(self, propname, value): - cval = getProp( self.Alg, propname) + cval = getattr( self.Alg, propname) if isinstance(cval, MutableSequence): cval.append(value) return setattr(self.Alg, propname, cval) @@ -69,14 +69,14 @@ class AlgNode(Node): return setattr(self.Alg, propname, value) def resetPar(self, prop): - cval = getProp(self.Alg, prop) + cval = getattr(self.Alg, prop) if isinstance(cval, MutableSequence): return setattr(self.Alg, prop, []) else: return setattr(self.Alg, prop, "") def getPar(self, prop): - return getProp(self.Alg, prop) + return getattr(self.Alg, prop) def resetOutput(self): self.resetPar(self.outputProp) @@ -151,7 +151,7 @@ class HypoAlgNode(AlgNode): """Node for HypoAlgs""" initialOutput= 'StoreGateSvc+UNSPECIFIED_OUTPUT' def __init__(self, Alg): - assert isHypoBase(Alg), "Error in creating HypoAlgNode from Alg " + compName(Alg) + assert isHypoBase(Alg), "Error in creating HypoAlgNode from Alg " + Alg.name AlgNode.__init__(self, Alg, 'HypoInputDecisions', 'HypoOutputDecisions') self.previous=[] @@ -193,7 +193,7 @@ class HypoAlgNode(AlgNode): def __repr__(self): return "HypoAlg::%s [%s] -> [%s], previous = [%s], HypoTools=[%s]" % \ - (compName(self.Alg),' '.join(map(str, self.getInputList())), + (self.Alg.name,' '.join(map(str, self.getInputList())), ' '.join(map(str, self.getOutputList())), ' '.join(map(str, self.previous)), ' '.join([t.getName() for t in self.Alg.HypoTools])) @@ -201,11 +201,11 @@ class HypoAlgNode(AlgNode): class InputMakerNode(AlgNode): def __init__(self, Alg): - assert isInputMakerBase(Alg), "Error in creating InputMakerNode from Alg " + compName(Alg) + assert isInputMakerBase(Alg), "Error in creating InputMakerNode from Alg " + Alg.name AlgNode.__init__(self, Alg, 'InputMakerInputDecisions', 'InputMakerOutputDecisions') self.resetInput() self.resetOutput() ## why do we need this in CA mode?? - input_maker_output = CFNaming.inputMakerOutName(compName(self.Alg)) + input_maker_output = CFNaming.inputMakerOutName(self.Alg.name) self.addOutput(input_maker_output) @@ -260,17 +260,17 @@ class ComboMaker(AlgNode): legsToInputCollections = self.mapRawInputsToInputsIndex() if len(chainMult) != len(legsToInputCollections): log.error("ComboMaker for Alg:{} with addChain for:{} Chain multiplicity:{} Per leg input collection index:{}." - .format(compName(self.Alg), chainName, tuple(chainMult), tuple(legsToInputCollections))) + .format(self.Alg.name, chainName, tuple(chainMult), tuple(legsToInputCollections))) log.error("The size of the multiplicies vector must be the same size as the per leg input collection vector.") log.error("The ComboHypo needs to know which input DecisionContainers contain the DecisionObjects to be used for each leg.") log.error("Check why ComboMaker.addInput(...) was not called exactly once per leg.") raise Exception("[createDataFlow] Error in ComboMaker.addChain. Cannot proceed.") - cval1 = getProp(self.Alg, self.prop1) # check necessary to see if chain was added already? - cval2 = getProp(self.Alg, self.prop2) + cval1 = getattr(self.Alg, self.prop1) # check necessary to see if chain was added already? + cval2 = getattr(self.Alg, self.prop2) if type(cval1) is dict or isinstance(cval1, GaudiConfig2.semantics._DictHelper): if chainName in cval1.keys(): - log.error("ERROR in configuration: ComboAlg %s has already been configured for chain %s", compName(self.Alg), chainName) + log.error("ERROR in configuration: ComboAlg %s has already been configured for chain %s", self.Alg.name, chainName) raise Exception("[createDataFlow] Error in ComboMaker.addChain. Cannot proceed.") else: cval1[chainName] = chainMult @@ -284,7 +284,7 @@ class ComboMaker(AlgNode): def getChains(self): - cval = getProp(self.Alg, self.prop1) + cval = getattr(self.Alg, self.prop1) return cval.keys() @@ -368,15 +368,15 @@ 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, flags, Sequence, Maker, Hypo, HypoToolGen, IsProbe=False): - assert compName(Maker).startswith("IM"), "The input maker {} name needs to start with letter: IM".format(compName(Maker)) + assert Maker.name.startswith("IM"), "The input maker {} name needs to start with letter: IM".format(Maker.name) self._maker = InputMakerNode( Alg = Maker ) input_maker_output= self.maker.readOutputList()[0] # only one since it's merged - self._name = CFNaming.menuSequenceName(compName(Hypo)) + self._name = CFNaming.menuSequenceName(Hypo.name) self._hypoToolConf = HypoToolConf( HypoToolGen ) Hypo.RuntimeValidation = flags.Trigger.doRuntimeNaviVal self._hypo = HypoAlgNode( Alg = Hypo ) - hypo_output = CFNaming.hypoAlgOutName(compName(Hypo)) + hypo_output = CFNaming.hypoAlgOutName(Hypo.name) self._hypo.addOutput(hypo_output) self._hypo.setPreviousDecision( input_maker_output ) @@ -384,7 +384,7 @@ class MenuSequence(object): if ROBPrefetching.StepRoI in flags.Trigger.ROBPrefetchingOptions: seqChildren = Sequence.getChildren() if hasattr(Sequence,'getChildren') else Sequence.Members for child in seqChildren: - if hasProp(child,'ROBPrefetchingInputDecisions') and input_maker_output not in child.ROBPrefetchingInputDecisions and not IsProbe: + if hasattr(child,'ROBPrefetchingInputDecisions') and input_maker_output not in child.ROBPrefetchingInputDecisions and not IsProbe: locked = bool(child.isLocked()) if hasattr(child,'isLocked') else False if locked: child.unlock() @@ -401,7 +401,7 @@ class MenuSequence(object): if isinstance(probeIM,CompFactory.EventViewCreatorAlgorithm): for child in baseSeq.getChildren()[1:]: probeChild = child.clone(child.getName()+"_probe") - if hasProp(child,'ROBPrefetchingInputDecisions') and (ROBPrefetching.StepRoI in flags.Trigger.ROBPrefetchingOptions): + if hasattr(child,'ROBPrefetchingInputDecisions') and (ROBPrefetching.StepRoI in flags.Trigger.ROBPrefetchingOptions): # child is a ROB prefetching alg, map the probe IM decisions probeChild.ROBPrefetchingInputDecisions = [str(probeIM.InputMakerOutputDecisions)] elif probeIM.ViewNodeName == child.getName(): @@ -419,7 +419,7 @@ class MenuSequence(object): if ROBPrefetching.StepRoI in flags.Trigger.ROBPrefetchingOptions: seqChildren = Sequence.getChildren() if hasattr(Sequence,'getChildren') else Sequence.Members for child in seqChildren: - if hasProp(child,'ROBPrefetchingInputDecisions') and input_maker_output not in child.ROBPrefetchingInputDecisions: + if hasattr(child,'ROBPrefetchingInputDecisions') and input_maker_output not in child.ROBPrefetchingInputDecisions: locked = bool(child.isLocked()) if hasattr(child,'isLocked') else False if locked: child.unlock() @@ -432,10 +432,10 @@ class MenuSequence(object): log.debug("connecting InputMaker and HypoAlg, adding: \n\ InputMaker::%s.output=%s",\ - compName(self.maker.Alg), input_maker_output) + self.maker.Alg.name, input_maker_output) log.debug("HypoAlg::%s.HypoInputDecisions=%s, \n \ HypoAlg::%s.HypoOutputDecisions=%s",\ - compName(self.hypo.Alg), self.hypo.readInputList()[0], compName(self.hypo.Alg), self.hypo.readOutputList()[0]) + self.hypo.Alg.name, self.hypo.readInputList()[0], self.hypo.Alg.name, self.hypo.readOutputList()[0]) @property @@ -497,7 +497,7 @@ class MenuSequence(object): def connectToFilter(self, outfilter): """ Connect filter to the InputMaker""" - log.debug("connecting %s to inputs of %s", outfilter,compName(self.maker.Alg)) + log.debug("connecting %s to inputs of %s", outfilter, self.maker.Alg.name) self.maker.addInput(outfilter) @@ -913,7 +913,7 @@ class ChainStep(object): ' '.join(map(str, [dic['chainName'] for dic in self.stepDicts])), ' '.join(map(str, [seq.name for seq in self.sequences]) )) if self.combo is not None: - repr_string += "\n + ComboHypo = %s" %(compName(self.combo.Alg)) + repr_string += "\n + ComboHypo = %s" % self.combo.Alg.name if len(self.comboToolConfs)>0: repr_string +=", ComboHypoTools = %s" %(' '.join(map(str, [tool.__name__ for tool in self.comboToolConfs]))) repr_string += "\n" diff --git a/Trigger/TriggerCommon/TriggerMenuMT/python/HLT/Jet/JetPresel.py b/Trigger/TriggerCommon/TriggerMenuMT/python/HLT/Jet/JetPresel.py index 176c51e36159acceb37f774f11570b02a06170d9..8c2985b85ede6c8bf817b96501da3ecb9548d26a 100644 --- a/Trigger/TriggerCommon/TriggerMenuMT/python/HLT/Jet/JetPresel.py +++ b/Trigger/TriggerCommon/TriggerMenuMT/python/HLT/Jet/JetPresel.py @@ -71,12 +71,16 @@ def _preselJetHypoToolFromDict(flags, mainChainDict, doTaggingSel=False): usingDIPZ = bool(re.match(r'.*Z', presel_cut_str)) # Need to determine if there's DIPZ leg anywhere to enforce central jets across all calopresel legs if usingDIPZ: - findAllJets = re.findall(r'(?P<nJet>\d?\d?[jacf])', presel_cut_str) - findAllJets = ['1'+el if len(el) == 1 else el for el in findAllJets] + findSel = re.finditer(r'(?P<nJet>\d?[jacf])(?P<ptcut>\d+)', presel_cut_str) + findAllJets=[] + findAllPts=[] + for match in findSel: + nJ = match.group("nJet") + findAllJets.append('1'+nJ if len(nJ)==1 else nJ) + findAllPts.append(int(match.group("ptcut"))) nAllJets = sum(int(i[:-1]) for i in findAllJets) - nCentralJets = sum(int(i[:-1]) if 'c' in i else 0 for i in findAllJets) - findAllPts = re.findall(r'[jacf](?P<ptcut>\d+)', presel_cut_str) - ptCut = min(float(i) for i in findAllPts) + nCentralJets = sum(int(i[:-1]) if 'c' in i else 0 for i in findAllJets) + ptCut = min(int(i) for i in findAllPts) assert nAllJets == nCentralJets, "Your preselection has a DIPZ part but not only central jets were required. This isn't currently supported. Please investigate." preselCommonJetParts = dict(JetChainParts_Default) @@ -103,7 +107,7 @@ def _preselJetHypoToolFromDict(flags, mainChainDict, doTaggingSel=False): pattern_to_test += r'b(?P<btagger>\D*)(?P<bwp>\d+)' if hasBjetSel else '' # b-tagging if needed pattern_to_test += r'gntau(?P<tauwp>\d\d)' if hasTauSel else '' # tau preselection if needed pattern_to_test += r'emf(?P<emfc>\d+)' if hascalSel else '' - if hasDIPZsel: pattern_to_test = r'(?P<scenario>Z)((?P<dipzwp>\d+))?(?P<prefilt>(MAXMULT\d+)?)' + if hasDIPZsel: pattern_to_test = r'(?P<scenario>Z)((?P<dipzwp>\d+))?(?P<prefilt>(MAXMULT\d+[jacf]?)?)' matched = re.match(pattern_to_test, p) assert matched is not None, "Impossible to extract preselection cut for \'{0}\' substring. Please investigate.".format(p) cut_dict = matched.groupdict() @@ -170,8 +174,7 @@ def _preselJetHypoToolFromDict(flags, mainChainDict, doTaggingSel=False): 'prefilters': prefilters, } ) - preselChainDict['chainParts'] += [tmpChainDict] - + preselChainDict['chainParts'] += [tmpChainDict] # We need to pad by the legs not in the preselection expression diff --git a/Trigger/TriggerCommon/TriggerMenuMT/python/HLT/Menu/Dev_pp_run3_v1.py b/Trigger/TriggerCommon/TriggerMenuMT/python/HLT/Menu/Dev_pp_run3_v1.py index e04584ee0611ca3512d10b63b81ccb21885be88b..5b43e15c7d9ea1ff60c6bfdd6771f4010c62e79d 100644 --- a/Trigger/TriggerCommon/TriggerMenuMT/python/HLT/Menu/Dev_pp_run3_v1.py +++ b/Trigger/TriggerCommon/TriggerMenuMT/python/HLT/Menu/Dev_pp_run3_v1.py @@ -115,9 +115,9 @@ def getDevSignatures(): ChainProp(name='HLT_mu6_mu4_PhysicsTLA_L1BPH-7M22-MU5VFMU3VF', l1SeedThresholds=['MU5VF','MU3VF'],stream=['TLA'], groups=MultiMuonGroup+EOFL1MuGroup+Topo3Group), ChainProp(name='HLT_2mu4_PhysicsTLA_L1BPH-7M22-0DR20-2MU3V', l1SeedThresholds=['MU3V'],stream=['TLA'], groups=MultiMuonGroup+EOFL1MuGroup+Topo3Group), - # ATR-22782, 4mu analysis + # ATR-22782, ATR-28868, 4mu analysis ChainProp(name='HLT_mu4_ivarloose_mu4_L1BPH-7M14-0DR25-MU5VFMU3VF', l1SeedThresholds=['MU3VF','MU3VF'], stream=['BphysDelayed'], groups=MultiMuonGroup+EOFBPhysL1MuGroup+Topo3Group), - ChainProp(name='HLT_mu4_ivarloose_2mu3noL1_L1BPH-7M14-0DR25-MU5VFMU3VF', l1SeedThresholds=['MU3VF','FSNOSEED'], stream=['BphysDelayed'], groups=MultiMuonGroup+EOFBPhysL1MuGroup+Topo3Group), + ] chains['Egamma'] = [ @@ -480,13 +480,13 @@ def getDevSignatures(): ChainProp(name='HLT_j0_Z120XX10c40_roiftf_presel7j30_L14J15', groups=MultiJetGroup+DevGroup, l1SeedThresholds=['FSNOSEED']), ChainProp(name='HLT_10j40c_L14J15', groups=MultiJetGroup+DevGroup, l1SeedThresholds=['FSNOSEED']), ChainProp(name='HLT_4j110_pf_ftf_preselZ120XX4c85_L13J50', groups=MultiJetGroup+DevGroup, l1SeedThresholds=['FSNOSEED']), - ChainProp(name='HLT_4j110_pf_ftf_preselZ120MAXMULT20XX4c85_L13J50', groups=MultiJetGroup+DevGroup, l1SeedThresholds=['FSNOSEED']), + ChainProp(name='HLT_4j110_pf_ftf_preselZ120MAXMULT20cXX4c85_L13J50', groups=MultiJetGroup+DevGroup, l1SeedThresholds=['FSNOSEED']), ChainProp(name='HLT_4j20c_pf_ftf_preselZ120XX4c20_L1RD0_FILLED', groups=MultiJetGroup+DevGroup, l1SeedThresholds=['FSNOSEED']), ChainProp(name='HLT_4j20c_pf_ftf_presel4c20_L1RD0_FILLED', groups=MultiJetGroup+DevGroup, l1SeedThresholds=['FSNOSEED']), ChainProp(name="HLT_4j20c_roiftf_presel4c20_L1RD0_FILLED", groups=MultiJetGroup+DevGroup, l1SeedThresholds=['FSNOSEED']), ChainProp(name="HLT_j0_Z120XX4c20_roiftf_presel4c20_L1RD0_FILLED", groups=MultiJetGroup+DevGroup, l1SeedThresholds=['FSNOSEED']), - ChainProp(name="HLT_j0_Z120XX4c20_MAXMULT6_roiftf_presel4c20_L1RD0_FILLED", groups=MultiJetGroup+DevGroup, l1SeedThresholds=['FSNOSEED']), - ChainProp(name="HLT_j0_Z120XX4c20_MAXMULT20_roiftf_presel4c20_L1RD0_FILLED", groups=MultiJetGroup+DevGroup, l1SeedThresholds=['FSNOSEED']), + ChainProp(name="HLT_j0_Z120XX4c20_MAXMULT6c_roiftf_presel4c20_L1RD0_FILLED", groups=MultiJetGroup+DevGroup, l1SeedThresholds=['FSNOSEED']), + ChainProp(name="HLT_j0_Z120XX4c20_MAXMULT20c_roiftf_presel4c20_L1RD0_FILLED", groups=MultiJetGroup+DevGroup, l1SeedThresholds=['FSNOSEED']), ] @@ -568,12 +568,12 @@ def getDevSignatures(): ChainProp(name='HLT_j75c_020jvt_j50c_020jvt_j25c_020jvt_j20c_020jvt_SHARED_2j20c_020jvt_bgn177_pf_ftf_preselZ128XX4c20_L1jJ85p0ETA21_3jJ40p0ETA25', l1SeedThresholds=['FSNOSEED']*5, stream=[PhysicsStream], groups=DevGroup+MultiBjetGroup), ChainProp(name='HLT_j75c_020jvt_j50c_020jvt_j25c_020jvt_j20c_020jvt_SHARED_2j20c_020jvt_bgn177_pf_ftf_preselZ120XX4c20_L1jJ85p0ETA21_3jJ40p0ETA25', l1SeedThresholds=['FSNOSEED']*5, stream=[PhysicsStream], groups=DevGroup+MultiBjetGroup), ChainProp(name='HLT_j75c_020jvt_j50c_020jvt_j25c_020jvt_j20c_020jvt_SHARED_2j20c_020jvt_bgn177_pf_ftf_preselZ116XX4c20_L1jJ85p0ETA21_3jJ40p0ETA25', l1SeedThresholds=['FSNOSEED']*5, stream=[PhysicsStream], groups=DevGroup+MultiBjetGroup), - ChainProp(name='HLT_j75c_020jvt_j50c_020jvt_j25c_020jvt_j20c_020jvt_SHARED_2j20c_020jvt_bgn177_pf_ftf_preselZ167MAXMULT5XX4c20_L1jJ85p0ETA21_3jJ40p0ETA25', l1SeedThresholds=['FSNOSEED']*5, stream=[PhysicsStream], groups=DevGroup+MultiBjetGroup), - ChainProp(name='HLT_j75c_020jvt_j50c_020jvt_j25c_020jvt_j20c_020jvt_SHARED_2j20c_020jvt_bgn177_pf_ftf_preselZ116MAXMULT20XX4c20_L1jJ85p0ETA21_3jJ40p0ETA25', l1SeedThresholds=['FSNOSEED']*5, stream=[PhysicsStream], groups=DevGroup+MultiBjetGroup), + ChainProp(name='HLT_j75c_020jvt_j50c_020jvt_j25c_020jvt_j20c_020jvt_SHARED_2j20c_020jvt_bgn177_pf_ftf_preselZ167MAXMULT5cXX4c20_L1jJ85p0ETA21_3jJ40p0ETA25', l1SeedThresholds=['FSNOSEED']*5, stream=[PhysicsStream], groups=DevGroup+MultiBjetGroup), + ChainProp(name='HLT_j75c_020jvt_j50c_020jvt_j25c_020jvt_j20c_020jvt_SHARED_2j20c_020jvt_bgn177_pf_ftf_preselZ116MAXMULT20cXX4c20_L1jJ85p0ETA21_3jJ40p0ETA25', l1SeedThresholds=['FSNOSEED']*5, stream=[PhysicsStream], groups=DevGroup+MultiBjetGroup), ChainProp(name='HLT_j75c_020jvt_j50c_020jvt_j25c_020jvt_j20c_020jvt_SHARED_2j20c_020jvt_bgn177_pf_ftf_preselZ138XX4c20_L1jJ85p0ETA21_3jJ40p0ETA25', l1SeedThresholds=['FSNOSEED']*5, stream=[PhysicsStream], groups=DevGroup+MultiBjetGroup), - ChainProp(name='HLT_j75c_020jvt_j50c_020jvt_j25c_020jvt_j20c_020jvt_SHARED_2j20c_020jvt_bgn177_pf_ftf_preselZ138MAXMULT5XX4c20_L1jJ85p0ETA21_3jJ40p0ETA25', l1SeedThresholds=['FSNOSEED']*5, stream=[PhysicsStream], groups=DevGroup+MultiBjetGroup), + ChainProp(name='HLT_j75c_020jvt_j50c_020jvt_j25c_020jvt_j20c_020jvt_SHARED_2j20c_020jvt_bgn177_pf_ftf_preselZ138MAXMULT5cXX4c20_L1jJ85p0ETA21_3jJ40p0ETA25', l1SeedThresholds=['FSNOSEED']*5, stream=[PhysicsStream], groups=DevGroup+MultiBjetGroup), ChainProp(name='HLT_j75c_020jvt_j50c_020jvt_j25c_020jvt_j20c_020jvt_SHARED_2j20c_020jvt_bgn177_pf_ftf_preselZ84XX3c20_L1jJ85p0ETA21_3jJ40p0ETA25', l1SeedThresholds=['FSNOSEED']*5, stream=[PhysicsStream], groups=DevGroup+MultiBjetGroup), - ChainProp(name='HLT_j75c_020jvt_j50c_020jvt_j25c_020jvt_j20c_020jvt_SHARED_2j20c_020jvt_bgn177_pf_ftf_preselZ84MAXMULT20XX3c20_L1jJ85p0ETA21_3jJ40p0ETA25', l1SeedThresholds=['FSNOSEED']*5, stream=[PhysicsStream], groups=DevGroup+MultiBjetGroup), + ChainProp(name='HLT_j75c_020jvt_j50c_020jvt_j25c_020jvt_j20c_020jvt_SHARED_2j20c_020jvt_bgn177_pf_ftf_preselZ84MAXMULT20cXX3c20_L1jJ85p0ETA21_3jJ40p0ETA25', l1SeedThresholds=['FSNOSEED']*5, stream=[PhysicsStream], groups=DevGroup+MultiBjetGroup), # Test chains with (DIPZ+b-jet in presel) ChainProp(name='HLT_j75c_020jvt_j50c_020jvt_j25c_020jvt_j20c_020jvt_SHARED_2j20c_020jvt_bgn177_pf_ftf_preselZ128XX2c20XX2c20b85_L1jJ85p0ETA21_3jJ40p0ETA25', l1SeedThresholds=['FSNOSEED']*5, stream=[PhysicsStream], groups=PrimaryPhIGroup+MultiBjetGroup), ChainProp(name='HLT_j75c_020jvt_j50c_020jvt_j25c_020jvt_j20c_020jvt_SHARED_2j20c_020jvt_bgn177_pf_ftf_preselZ84XX1c20XX2c20b85_L1jJ85p0ETA21_3jJ40p0ETA25', l1SeedThresholds=['FSNOSEED']*5, stream=[PhysicsStream], groups=PrimaryPhIGroup+MultiBjetGroup), @@ -582,44 +582,44 @@ def getDevSignatures(): ChainProp(name='HLT_j0_pf_ftf_preselZ128XX4c20_L1jJ85p0ETA21_3jJ40p0ETA25', l1SeedThresholds=['FSNOSEED'], stream=[PhysicsStream], groups=DevGroup+MultiBjetGroup), ChainProp(name='HLT_j0_pf_ftf_preselZ120XX4c20_L1jJ85p0ETA21_3jJ40p0ETA25', l1SeedThresholds=['FSNOSEED'], stream=[PhysicsStream], groups=DevGroup+MultiBjetGroup), ChainProp(name='HLT_j0_pf_ftf_preselZ116XX4c20_L1jJ85p0ETA21_3jJ40p0ETA25', l1SeedThresholds=['FSNOSEED'], stream=[PhysicsStream], groups=DevGroup+MultiBjetGroup), - ChainProp(name='HLT_j0_pf_ftf_preselZ167MAXMULT5XX4c20_L1jJ85p0ETA21_3jJ40p0ETA25', l1SeedThresholds=['FSNOSEED'], stream=[PhysicsStream], groups=DevGroup+MultiBjetGroup), - ChainProp(name='HLT_j0_pf_ftf_preselZ138MAXMULT5XX4c20_L1jJ85p0ETA21_3jJ40p0ETA25', l1SeedThresholds=['FSNOSEED'], stream=[PhysicsStream], groups=DevGroup+MultiBjetGroup), - ChainProp(name='HLT_j0_pf_ftf_preselZ126MAXMULT5XX4c20_L1jJ85p0ETA21_3jJ40p0ETA25', l1SeedThresholds=['FSNOSEED'], stream=[PhysicsStream], groups=DevGroup+MultiBjetGroup), + ChainProp(name='HLT_j0_pf_ftf_preselZ167MAXMULT5cXX4c20_L1jJ85p0ETA21_3jJ40p0ETA25', l1SeedThresholds=['FSNOSEED'], stream=[PhysicsStream], groups=DevGroup+MultiBjetGroup), + ChainProp(name='HLT_j0_pf_ftf_preselZ138MAXMULT5cXX4c20_L1jJ85p0ETA21_3jJ40p0ETA25', l1SeedThresholds=['FSNOSEED'], stream=[PhysicsStream], groups=DevGroup+MultiBjetGroup), + ChainProp(name='HLT_j0_pf_ftf_preselZ126MAXMULT5cXX4c20_L1jJ85p0ETA21_3jJ40p0ETA25', l1SeedThresholds=['FSNOSEED'], stream=[PhysicsStream], groups=DevGroup+MultiBjetGroup), ChainProp(name='HLT_j0_pf_ftf_preselZ87XX3c20_L1jJ85p0ETA21_3jJ40p0ETA25', l1SeedThresholds=['FSNOSEED'], stream=[PhysicsStream], groups=DevGroup+MultiBjetGroup), ChainProp(name='HLT_j0_pf_ftf_preselZ84XX3c20_L1jJ85p0ETA21_3jJ40p0ETA25', l1SeedThresholds=['FSNOSEED'], stream=[PhysicsStream], groups=DevGroup+MultiBjetGroup), ChainProp(name='HLT_j0_pf_ftf_preselZ82XX3c20_L1jJ85p0ETA21_3jJ40p0ETA25', l1SeedThresholds=['FSNOSEED'], stream=[PhysicsStream], groups=DevGroup+MultiBjetGroup), - ChainProp(name='HLT_j0_pf_ftf_preselZ120MAXMULT20XX4c20_L1jJ85p0ETA21_3jJ40p0ETA25', l1SeedThresholds=['FSNOSEED'], stream=[PhysicsStream], groups=DevGroup+MultiBjetGroup), - ChainProp(name='HLT_j0_pf_ftf_preselZ84MAXMULT20XX3c20_L1jJ85p0ETA21_3jJ40p0ETA25', l1SeedThresholds=['FSNOSEED'], stream=[PhysicsStream], groups=DevGroup+MultiBjetGroup), + ChainProp(name='HLT_j0_pf_ftf_preselZ120MAXMULT20cXX4c20_L1jJ85p0ETA21_3jJ40p0ETA25', l1SeedThresholds=['FSNOSEED'], stream=[PhysicsStream], groups=DevGroup+MultiBjetGroup), + ChainProp(name='HLT_j0_pf_ftf_preselZ84MAXMULT20cXX3c20_L1jJ85p0ETA21_3jJ40p0ETA25', l1SeedThresholds=['FSNOSEED'], stream=[PhysicsStream], groups=DevGroup+MultiBjetGroup), # Test chains with no b-tagging in main or preselection: ChainProp(name='HLT_j75c_020jvt_j50c_020jvt_j25c_020jvt_j20c_020jvt_pf_ftf_L1jJ85p0ETA21_3jJ40p0ETA25', l1SeedThresholds=['FSNOSEED']*4, stream=[PhysicsStream], groups=DevGroup+MultiBjetGroup), #Baseline ChainProp(name='HLT_j75c_020jvt_j50c_020jvt_j25c_020jvt_j20c_020jvt_pf_ftf_preselZ128XX4c20_L1jJ85p0ETA21_3jJ40p0ETA25', l1SeedThresholds=['FSNOSEED']*4, stream=[PhysicsStream], groups=DevGroup+MultiBjetGroup), ChainProp(name='HLT_j75c_020jvt_j50c_020jvt_j25c_020jvt_j20c_020jvt_pf_ftf_preselZ120XX4c20_L1jJ85p0ETA21_3jJ40p0ETA25', l1SeedThresholds=['FSNOSEED']*4, stream=[PhysicsStream], groups=DevGroup+MultiBjetGroup), ChainProp(name='HLT_j75c_020jvt_j50c_020jvt_j25c_020jvt_j20c_020jvt_pf_ftf_preselZ116XX4c20_L1jJ85p0ETA21_3jJ40p0ETA25', l1SeedThresholds=['FSNOSEED']*4, stream=[PhysicsStream], groups=DevGroup+MultiBjetGroup), - ChainProp(name='HLT_j75c_020jvt_j50c_020jvt_j25c_020jvt_j20c_020jvt_pf_ftf_preselZ167MAXMULT5XX4c20_L1jJ85p0ETA21_3jJ40p0ETA25', l1SeedThresholds=['FSNOSEED']*4, stream=[PhysicsStream], groups=DevGroup+MultiBjetGroup), - ChainProp(name='HLT_j75c_020jvt_j50c_020jvt_j25c_020jvt_j20c_020jvt_pf_ftf_preselZ138MAXMULT5XX4c20_L1jJ85p0ETA21_3jJ40p0ETA25', l1SeedThresholds=['FSNOSEED']*4, stream=[PhysicsStream], groups=DevGroup+MultiBjetGroup), - ChainProp(name='HLT_j75c_020jvt_j50c_020jvt_j25c_020jvt_j20c_020jvt_pf_ftf_preselZ126MAXMULT5XX4c20_L1jJ85p0ETA21_3jJ40p0ETA25', l1SeedThresholds=['FSNOSEED']*4, stream=[PhysicsStream], groups=DevGroup+MultiBjetGroup), + ChainProp(name='HLT_j75c_020jvt_j50c_020jvt_j25c_020jvt_j20c_020jvt_pf_ftf_preselZ167MAXMULT5cXX4c20_L1jJ85p0ETA21_3jJ40p0ETA25', l1SeedThresholds=['FSNOSEED']*4, stream=[PhysicsStream], groups=DevGroup+MultiBjetGroup), + ChainProp(name='HLT_j75c_020jvt_j50c_020jvt_j25c_020jvt_j20c_020jvt_pf_ftf_preselZ138MAXMULT5cXX4c20_L1jJ85p0ETA21_3jJ40p0ETA25', l1SeedThresholds=['FSNOSEED']*4, stream=[PhysicsStream], groups=DevGroup+MultiBjetGroup), + ChainProp(name='HLT_j75c_020jvt_j50c_020jvt_j25c_020jvt_j20c_020jvt_pf_ftf_preselZ126MAXMULT5cXX4c20_L1jJ85p0ETA21_3jJ40p0ETA25', l1SeedThresholds=['FSNOSEED']*4, stream=[PhysicsStream], groups=DevGroup+MultiBjetGroup), ChainProp(name='HLT_j75c_020jvt_j50c_020jvt_j25c_020jvt_j20c_020jvt_pf_ftf_preselZ87XX3c20_L1jJ85p0ETA21_3jJ40p0ETA25', l1SeedThresholds=['FSNOSEED']*4, stream=[PhysicsStream], groups=DevGroup+MultiBjetGroup), ChainProp(name='HLT_j75c_020jvt_j50c_020jvt_j25c_020jvt_j20c_020jvt_pf_ftf_preselZ84XX3c20_L1jJ85p0ETA21_3jJ40p0ETA25', l1SeedThresholds=['FSNOSEED']*4, stream=[PhysicsStream], groups=DevGroup+MultiBjetGroup), ChainProp(name='HLT_j75c_020jvt_j50c_020jvt_j25c_020jvt_j20c_020jvt_pf_ftf_preselZ82XX3c20_L1jJ85p0ETA21_3jJ40p0ETA25', l1SeedThresholds=['FSNOSEED']*4, stream=[PhysicsStream], groups=DevGroup+MultiBjetGroup), - ChainProp(name='HLT_j75c_020jvt_j50c_020jvt_j25c_020jvt_j20c_020jvt_pf_ftf_preselZ120MAXMULT20XX4c20_L1jJ85p0ETA21_3jJ40p0ETA25', l1SeedThresholds=['FSNOSEED']*4, stream=[PhysicsStream], groups=DevGroup+MultiBjetGroup), - ChainProp(name='HLT_j75c_020jvt_j50c_020jvt_j25c_020jvt_j20c_020jvt_pf_ftf_preselZ84MAXMULT20XX3c20_L1jJ85p0ETA21_3jJ40p0ETA25', l1SeedThresholds=['FSNOSEED']*4, stream=[PhysicsStream], groups=DevGroup+MultiBjetGroup), + ChainProp(name='HLT_j75c_020jvt_j50c_020jvt_j25c_020jvt_j20c_020jvt_pf_ftf_preselZ120MAXMULT20cXX4c20_L1jJ85p0ETA21_3jJ40p0ETA25', l1SeedThresholds=['FSNOSEED']*4, stream=[PhysicsStream], groups=DevGroup+MultiBjetGroup), + ChainProp(name='HLT_j75c_020jvt_j50c_020jvt_j25c_020jvt_j20c_020jvt_pf_ftf_preselZ84MAXMULT20cXX3c20_L1jJ85p0ETA21_3jJ40p0ETA25', l1SeedThresholds=['FSNOSEED']*4, stream=[PhysicsStream], groups=DevGroup+MultiBjetGroup), # Test chains with no b-tagging in preselection or main and with no JVT in main: ChainProp(name='HLT_j75c_j50c_j25c_j20c_pf_ftf_L1jJ85p0ETA21_3jJ40p0ETA25', l1SeedThresholds=['FSNOSEED']*4, stream=[PhysicsStream], groups=DevGroup+MultiBjetGroup), #Baseline ChainProp(name='HLT_j75c_j50c_j25c_j20c_pf_ftf_preselZ128XX4c20_L1jJ85p0ETA21_3jJ40p0ETA25', l1SeedThresholds=['FSNOSEED']*4, stream=[PhysicsStream], groups=DevGroup+MultiBjetGroup), ChainProp(name='HLT_j75c_j50c_j25c_j20c_pf_ftf_preselZ120XX4c20_L1jJ85p0ETA21_3jJ40p0ETA25', l1SeedThresholds=['FSNOSEED']*4, stream=[PhysicsStream], groups=DevGroup+MultiBjetGroup), ChainProp(name='HLT_j75c_j50c_j25c_j20c_pf_ftf_preselZ116XX4c20_L1jJ85p0ETA21_3jJ40p0ETA25', l1SeedThresholds=['FSNOSEED']*4, stream=[PhysicsStream], groups=DevGroup+MultiBjetGroup), - ChainProp(name='HLT_j75c_j50c_j25c_j20c_pf_ftf_preselZ167MAXMULT5XX4c20_L1jJ85p0ETA21_3jJ40p0ETA25', l1SeedThresholds=['FSNOSEED']*4, stream=[PhysicsStream], groups=DevGroup+MultiBjetGroup), - ChainProp(name='HLT_j75c_j50c_j25c_j20c_pf_ftf_preselZ138MAXMULT5XX4c20_L1jJ85p0ETA21_3jJ40p0ETA25', l1SeedThresholds=['FSNOSEED']*4, stream=[PhysicsStream], groups=DevGroup+MultiBjetGroup), - ChainProp(name='HLT_j75c_j50c_j25c_j20c_pf_ftf_preselZ126MAXMULT5XX4c20_L1jJ85p0ETA21_3jJ40p0ETA25', l1SeedThresholds=['FSNOSEED']*4, stream=[PhysicsStream], groups=DevGroup+MultiBjetGroup), + ChainProp(name='HLT_j75c_j50c_j25c_j20c_pf_ftf_preselZ167MAXMULT5cXX4c20_L1jJ85p0ETA21_3jJ40p0ETA25', l1SeedThresholds=['FSNOSEED']*4, stream=[PhysicsStream], groups=DevGroup+MultiBjetGroup), + ChainProp(name='HLT_j75c_j50c_j25c_j20c_pf_ftf_preselZ138MAXMULT5cXX4c20_L1jJ85p0ETA21_3jJ40p0ETA25', l1SeedThresholds=['FSNOSEED']*4, stream=[PhysicsStream], groups=DevGroup+MultiBjetGroup), + ChainProp(name='HLT_j75c_j50c_j25c_j20c_pf_ftf_preselZ126MAXMULT5cXX4c20_L1jJ85p0ETA21_3jJ40p0ETA25', l1SeedThresholds=['FSNOSEED']*4, stream=[PhysicsStream], groups=DevGroup+MultiBjetGroup), ChainProp(name='HLT_j75c_j50c_j25c_j20c_pf_ftf_preselZ87XX3c20_L1jJ85p0ETA21_3jJ40p0ETA25', l1SeedThresholds=['FSNOSEED']*4, stream=[PhysicsStream], groups=DevGroup+MultiBjetGroup), ChainProp(name='HLT_j75c_j50c_j25c_j20c_pf_ftf_preselZ84XX3c20_L1jJ85p0ETA21_3jJ40p0ETA25', l1SeedThresholds=['FSNOSEED']*4, stream=[PhysicsStream], groups=DevGroup+MultiBjetGroup), ChainProp(name='HLT_j75c_j50c_j25c_j20c_pf_ftf_preselZ82XX3c20_L1jJ85p0ETA21_3jJ40p0ETA25', l1SeedThresholds=['FSNOSEED']*4, stream=[PhysicsStream], groups=DevGroup+MultiBjetGroup), - ChainProp(name='HLT_j75c_j50c_j25c_j20c_pf_ftf_preselZ120MAXMULT20XX4c20_L1jJ85p0ETA21_3jJ40p0ETA25', l1SeedThresholds=['FSNOSEED']*4, stream=[PhysicsStream], groups=DevGroup+MultiBjetGroup), - ChainProp(name='HLT_j75c_j50c_j25c_j20c_pf_ftf_preselZ84MAXMULT20XX3c20_L1jJ85p0ETA21_3jJ40p0ETA25', l1SeedThresholds=['FSNOSEED']*4, stream=[PhysicsStream], groups=DevGroup+MultiBjetGroup), + ChainProp(name='HLT_j75c_j50c_j25c_j20c_pf_ftf_preselZ120MAXMULT20cXX4c20_L1jJ85p0ETA21_3jJ40p0ETA25', l1SeedThresholds=['FSNOSEED']*4, stream=[PhysicsStream], groups=DevGroup+MultiBjetGroup), + ChainProp(name='HLT_j75c_j50c_j25c_j20c_pf_ftf_preselZ84MAXMULT20cXX3c20_L1jJ85p0ETA21_3jJ40p0ETA25', l1SeedThresholds=['FSNOSEED']*4, stream=[PhysicsStream], groups=DevGroup+MultiBjetGroup), # Test chains with b-tagging in preselection but not in main: ChainProp(name='HLT_j75c_020jvt_j50c_020jvt_j25c_020jvt_j20c_020jvt_pf_ftf_presel2c20XX2c20b85_L1jJ85p0ETA21_3jJ40p0ETA25', l1SeedThresholds=['FSNOSEED']*4, stream=[PhysicsStream], groups=DevGroup+MultiBjetGroup), #Baseline ChainProp(name='HLT_j75c_020jvt_j50c_020jvt_j25c_020jvt_j20c_020jvt_pf_ftf_preselZ120XX2c20XX2c20b85_L1jJ85p0ETA21_3jJ40p0ETA25', l1SeedThresholds=['FSNOSEED']*4, stream=[PhysicsStream], groups=DevGroup+MultiBjetGroup), - ChainProp(name='HLT_j75c_020jvt_j50c_020jvt_j25c_020jvt_j20c_020jvt_pf_ftf_preselZ138MAXMULT5XX2c20XX2c20b85_L1jJ85p0ETA21_3jJ40p0ETA25', l1SeedThresholds=['FSNOSEED']*4, stream=[PhysicsStream], groups=DevGroup+MultiBjetGroup), + ChainProp(name='HLT_j75c_020jvt_j50c_020jvt_j25c_020jvt_j20c_020jvt_pf_ftf_preselZ138MAXMULT5cXX2c20XX2c20b85_L1jJ85p0ETA21_3jJ40p0ETA25', l1SeedThresholds=['FSNOSEED']*4, stream=[PhysicsStream], groups=DevGroup+MultiBjetGroup), ChainProp(name='HLT_j75c_020jvt_j50c_020jvt_j25c_020jvt_j20c_020jvt_pf_ftf_preselZ84XX1c20XX2c20b85_L1jJ85p0ETA21_3jJ40p0ETA25', l1SeedThresholds=['FSNOSEED']*4, stream=[PhysicsStream], groups=DevGroup+MultiBjetGroup), # Test chains with b-tagging in preselection but no main selection at all: ChainProp(name='HLT_j0_j0_pf_ftf_presel2c20XX2c20b85_L1jJ85p0ETA21_3jJ40p0ETA25', l1SeedThresholds=['FSNOSEED']*2, stream=[PhysicsStream], groups=DevGroup+MultiBjetGroup), #Baseline @@ -973,11 +973,8 @@ def getDevSignatures(): # ChainProp(name='HLT_g35_tight_3j25_0eta290_boffperf_pf_ftf_L1EM22VHI', l1SeedThresholds=['EM22VHI','FSNOSEED'], groups=EgammaJetGroup), # ATR-28443, test H to yjj trigger - ChainProp(name='HLT_g24_tight_icaloloose_j50c_j30c_j24c_03dRAB30_03dRAC30_15dRBC45_50invmBC130_pf_ftf_L1eEM26M', groups=PrimaryLegGroup+EgammaJetGroup, l1SeedThresholds=['eEM26M','FSNOSEED','FSNOSEED','FSNOSEED'],stream=[PhysicsStream]), ChainProp(name='HLT_g24_tight_icaloloose_j50c_j30c_j24c_03dRAB35_03dRAC35_15dRBC45_50invmBC130_pf_ftf_L1eEM26M', groups=PrimaryLegGroup+EgammaJetGroup, l1SeedThresholds=['eEM26M','FSNOSEED','FSNOSEED','FSNOSEED'],stream=[PhysicsStream]), ChainProp(name='HLT_g24_tight_icaloloose_j40c_j30c_j24c_03dRAB35_03dRAC35_15dRBC45_50invmBC130_pf_ftf_L1eEM26M', groups=PrimaryLegGroup+EgammaJetGroup, l1SeedThresholds=['eEM26M','FSNOSEED','FSNOSEED','FSNOSEED'],stream=[PhysicsStream]), - ChainProp(name='HLT_g20_tight_icaloloose_j40_j35a_j25a_j25_j20c_j0_DJMASS300j35_pf_ftf_L1eEM22M_jMJJ-300', groups=PrimaryLegGroup+EgammaJetGroup, l1SeedThresholds=['eEM22M','FSNOSEED','FSNOSEED','FSNOSEED','FSNOSEED','FSNOSEED','FSNOSEED'],stream=[PhysicsStream]), - ChainProp(name='HLT_g20_tight_icaloloose_j40_j35a_j20c_j0_DJMASS300j35_pf_ftf_L1eEM22M_jMJJ-300', groups=PrimaryLegGroup+EgammaJetGroup, l1SeedThresholds=['eEM22M','FSNOSEED','FSNOSEED','FSNOSEED','FSNOSEED'],stream=[PhysicsStream]), # high-mu AFP ChainProp(name='HLT_2j20_mb_afprec_afpdijet_L1RD0_FILLED', l1SeedThresholds=['FSNOSEED']*2, stream=[PhysicsStream],groups=MinBiasGroup+SupportLegGroup), @@ -996,7 +993,7 @@ def getDevSignatures(): #ATR-23156 will be superseeded by ATR-24698 ChainProp(name='HLT_mu4_j20_0eta290_boffperf_pf_ftf_dRAB03_L1MU3V', l1SeedThresholds=['MU3V','FSNOSEED'], groups=SingleBjetGroup), ChainProp(name='HLT_mu4_j35_0eta290_boffperf_pf_ftf_dRAB03_L1BTAG-MU3VjJ40', l1SeedThresholds=['MU3V','FSNOSEED'], groups=SingleBjetGroup+Topo2Group), - ChainProp(name='HLT_mu6_j45_0eta290_boffperf_pf_ftf_dRAB03_L1BTAG-MU5VFjJ50', l1SeedThresholds=['MU5VF','FSNOSEED'], groups=SingleBjetGroup+Topo2Group), + ChainProp(name='HLT_mu6_j45_0eta290_boffperf_pf_ftf_dRAB03_L1BTAG-MU5VFjJ80', l1SeedThresholds=['MU5VF','FSNOSEED'], groups=SingleBjetGroup+Topo2Group), #ATR-24698 #L1Topo diff --git a/Trigger/TriggerCommon/TriggerMenuMT/python/HLT/Menu/L1Seeds.py b/Trigger/TriggerCommon/TriggerMenuMT/python/HLT/Menu/L1Seeds.py index bc32d0c73659323ad3c639b1b9e9db5f901c2966..255bd22c6d07542a2f42e5e913f47d9eeb38b22d 100644 --- a/Trigger/TriggerCommon/TriggerMenuMT/python/HLT/Menu/L1Seeds.py +++ b/Trigger/TriggerCommon/TriggerMenuMT/python/HLT/Menu/L1Seeds.py @@ -50,7 +50,7 @@ def getL1BackgroundSeed(): 'L1_jJ30_UNPAIREDB1', 'L1_jJ30_UNPAIREDB2', 'L1_jJ30_UNPAIRED_ISO', 'L1_jJ30_UNPAIRED_NONISO', 'L1_jJ90_UNPAIRED_ISO', 'L1_jJ90_UNPAIRED_NONISO', - 'L1_jJ30_EMPTY', 'L1_jJ30_FIRSTEMPTY', 'L1_jJ30_BRGP12', + 'L1_jJ30_EMPTY', 'L1_jJ30_FIRSTEMPTY', 'L1_jJ30_BGRP12', ] ############################## diff --git a/Trigger/TriggerCommon/TriggerMenuMT/python/HLT/Menu/MC_pp_run3_v1.py b/Trigger/TriggerCommon/TriggerMenuMT/python/HLT/Menu/MC_pp_run3_v1.py index 62fb143164b3cdfdca0db1726a3624f789efbe13..b2ab41a3e98c7b425bd71b934fbfc7d584359ca9 100644 --- a/Trigger/TriggerCommon/TriggerMenuMT/python/HLT/Menu/MC_pp_run3_v1.py +++ b/Trigger/TriggerCommon/TriggerMenuMT/python/HLT/Menu/MC_pp_run3_v1.py @@ -930,7 +930,6 @@ def getMCSignatures(): #ATR-28761 Legacy mu + jet moved ChainProp(name='HLT_mu4_j35_0eta290_020jvt_boffperf_pf_ftf_dRAB04_L1MU3V_J15', l1SeedThresholds=['MU3V' ,'FSNOSEED'], groups=SupportLegGroup+MuonBjetGroup, monGroups=['muonMon:online','bJetMon:online'], stream=['Main', ]), - ChainProp(name='HLT_mu4_j45_0eta290_020jvt_boffperf_pf_ftf_dRAB04_L1MU3V_J15', l1SeedThresholds=['MU3V' ,'FSNOSEED'], groups=SupportLegGroup+MuonBjetGroup, monGroups=['bJetMon:shifter','muonMon:online','bJetMon:online'], stream=['Main','express']), ChainProp(name='HLT_mu6_j60_0eta290_020jvt_boffperf_pf_ftf_dRAB04_L1MU3V_J15', l1SeedThresholds=['MU3V' ,'FSNOSEED'], groups=SupportLegGroup+MuonBjetGroup, monGroups=['muonMon:online','bJetMon:online'], stream=['Main', ]), diff --git a/Trigger/TriggerCommon/TriggerMenuMT/python/HLT/Menu/P1_run3_v1.py b/Trigger/TriggerCommon/TriggerMenuMT/python/HLT/Menu/P1_run3_v1.py index 938a5a9f8357b545fe22c95509553c20d36a5778..ef8f683ec4d352f805746867fb45c185cfe6b660 100644 --- a/Trigger/TriggerCommon/TriggerMenuMT/python/HLT/Menu/P1_run3_v1.py +++ b/Trigger/TriggerCommon/TriggerMenuMT/python/HLT/Menu/P1_run3_v1.py @@ -104,8 +104,8 @@ def addCommonP1Signatures(chains): ChainProp(name='HLT_larnoiseburst_L1jJ125', l1SeedThresholds=['FSNOSEED'], stream=['LArNoiseBurst'], groups=['RATE:Calibration','BW:Detector']+SupportPhIGroup), ChainProp(name='HLT_larnoiseburst_L1J100', l1SeedThresholds=['FSNOSEED'], stream=['LArNoiseBurst'], groups=['RATE:Calibration','BW:Detector']+SupportLegGroup), ChainProp(name='HLT_larnoiseburst_L1jJ160', l1SeedThresholds=['FSNOSEED'], stream=['LArNoiseBurst'], groups=['RATE:Calibration','BW:Detector']+SupportPhIGroup), - #ChainProp(name='HLT_larnoiseburst_L1jJ80_jXE100', l1SeedThresholds=['FSNOSEED'], stream=['LArNoiseBurst'], groups=['RATE:Calibration','BW:Detector']+SupportPhIGroup), - #ChainProp(name='HLT_larnoiseburst_L1jJ80_jXE120', l1SeedThresholds=['FSNOSEED'], stream=['LArNoiseBurst'], groups=['RATE:Calibration','BW:Detector']+SupportLegGroup), + ChainProp(name='HLT_larnoiseburst_L1jJ80_jXE100', l1SeedThresholds=['FSNOSEED'], stream=['LArNoiseBurst'], groups=['RATE:Calibration','BW:Detector']+SupportPhIGroup), + ChainProp(name='HLT_larnoiseburst_L1jJ80_jXE120', l1SeedThresholds=['FSNOSEED'], stream=['LArNoiseBurst'], groups=['RATE:Calibration','BW:Detector']+SupportPhIGroup), ChainProp(name='HLT_larnoiseburst_L1All', l1SeedThresholds=['FSNOSEED'], stream=['LArNoiseBurst'], groups=['PS:NoHLTRepro','RATE:Calibration','BW:Detector']), # Temporary for testing, high CPU cost ChainProp(name='HLT_acceptedevts_larnoiseburst_L1All', l1SeedThresholds=['FSNOSEED'], stream=['DISCARD'], groups=['RATE:DISCARD','BW:DISCARD']), diff --git a/Trigger/TriggerCommon/TriggerMenuMT/python/HLT/Menu/Physics_pp_run3_v1.py b/Trigger/TriggerCommon/TriggerMenuMT/python/HLT/Menu/Physics_pp_run3_v1.py index 9b15023cde51ad28bfd099fee925423b985af47b..dcac41a5f1a62d6cc0f55e6c0e4fa7cd100f0b5c 100644 --- a/Trigger/TriggerCommon/TriggerMenuMT/python/HLT/Menu/Physics_pp_run3_v1.py +++ b/Trigger/TriggerCommon/TriggerMenuMT/python/HLT/Menu/Physics_pp_run3_v1.py @@ -304,8 +304,9 @@ def setupMenu(menu_name): ChainProp(name='HLT_2mu6_l2io_invmDimu_L1LFV-MU5VF', l1SeedThresholds=['MU5VF'], stream=['BphysDelayed'], groups=MultiMuonGroup+SupportGroup+['RATE:CPS_LFV-MU5VF']+Topo2Group), ChainProp(name='HLT_mu11_l2io_mu6_l2io_invmDimu_L1MU8VF_2MU5VF', l1SeedThresholds=['MU8VF','MU5VF'], stream=['BphysDelayed','express'], groups=MultiMuonGroup+SupportGroup, monGroups=['bphysMon:shifter']), ChainProp(name='HLT_mu11_l2io_mu6_l2io_invmDimu_L1LFV-MU8VF', l1SeedThresholds=['MU8VF','MU5VF'], stream=['BphysDelayed'], groups=MultiMuonGroup+SupportGroup+Topo2Group), - # ATR-22782 4muon + # ATR-22782, ATR-28868, 4muon ChainProp(name='HLT_mu4_ivarloose_mu4_mu3noL1_L1BPH-7M14-0DR25-MU5VFMU3VF', l1SeedThresholds=['MU3VF', 'MU3VF', 'FSNOSEED'], stream=['BphysDelayed'], groups=MultiMuonGroup+SupportGroup+Topo3Group), + ChainProp(name='HLT_mu4_ivarloose_2mu3noL1_L1BPH-7M14-0DR25-MU5VFMU3VF', l1SeedThresholds=['MU3VF','FSNOSEED'], stream=['BphysDelayed'], groups=MultiMuonGroup+SupportGroup+Topo3Group), ChainProp(name='HLT_2mu4_L1BPH-7M11-25DR99-2MU3VF', l1SeedThresholds=['MU3VF'], stream=['BphysDelayed'], groups=MultiMuonGroup+SupportGroup+Topo2Group), ChainProp(name='HLT_2mu4_ivarloose_L1BPH-7M14-0DR25-MU5VFMU3VF', l1SeedThresholds=['MU3VF'], stream=['BphysDelayed'], groups=MultiMuonGroup+SupportGroup+Topo3Group), @@ -2041,7 +2042,8 @@ def setupMenu(menu_name): ChainProp(name='HLT_2g10_loose_L1eEM9_mu23_L1MU18VFCH', l1SeedThresholds=['eEM9','MU18VFCH'], stream=[PhysicsStream], groups=PrimaryPhIGroup+EgammaMuonGroup), # unsure what eEM seed should be # ATR-24698-28783: muon + bjet chains for calibrations Legacy moved - ChainProp(name='HLT_mu6_j100_0eta290_020jvt_boffperf_pf_ftf_dRAB04_L1MU5VF_J40', l1SeedThresholds=['MU5VF','FSNOSEED'], groups=SupportLegGroup+MuonBjetGroup, monGroups=['bJetMon:t0','muonMon:online','bJetMon:online'], stream=['Main','express']), + ChainProp(name='HLT_mu4_j45_0eta290_020jvt_boffperf_pf_ftf_dRAB04_L1MU3V_J15', l1SeedThresholds=['MU3V' ,'FSNOSEED'], groups=SupportLegGroup+MuonBjetGroup, monGroups=['bJetMon:shifter','muonMon:online','bJetMon:online'], stream=[PhysicsStream,'express']), + ChainProp(name='HLT_mu6_j100_0eta290_020jvt_boffperf_pf_ftf_dRAB04_L1MU5VF_J40', l1SeedThresholds=['MU5VF','FSNOSEED'], groups=SupportLegGroup+MuonBjetGroup, monGroups=['bJetMon:t0','muonMon:online','bJetMon:online'], stream=[PhysicsStream,'express']), #---------- support 2m + 1g + ZRad triggers ChainProp(name='HLT_2mu14_g20_tight_probe_L12MU8F', l1SeedThresholds=['MU8F','PROBEEM15VHI'],groups=TagAndProbeLegGroup+EgammaMuonGroup), ChainProp(name='HLT_2mu14_g22_tight_probe_L12MU8F', l1SeedThresholds=['MU8F','PROBEEM15VHI'],groups=TagAndProbeLegGroup+EgammaMuonGroup), @@ -2450,11 +2452,17 @@ def setupMenu(menu_name): ChainProp(name='HLT_mu4_j20_0eta290_020jvt_boffperf_pf_ftf_dRAB04_L1MU3V' , l1SeedThresholds=['MU3V' ,'FSNOSEED'], groups=SupportGroup +MuonBjetGroup, monGroups=['bJetMon:t0','muonMon:online','bJetMon:online'], stream=[PhysicsStream,'express']), ChainProp(name='HLT_mu6_j100_0eta290_020jvt_boffperf_pf_ftf_dRAB04_L1MU5VF_jJ80', l1SeedThresholds=['MU5VF','FSNOSEED'], groups=SupportPhIGroup+MuonBjetGroup, monGroups=['bJetMon:t0','muonMon:online','bJetMon:online'], stream=[PhysicsStream,'express']), + # ATR-28761 added some muon + bjet Phase-1 chains - ChainProp(name='HLT_mu4_j35_0eta290_020jvt_boffperf_pf_ftf_dRAB04_L1MU3V_jJ30', l1SeedThresholds=['MU3V' ,'FSNOSEED'], groups=SupportPhIGroup+MuonBjetGroup, monGroups=['muonMon:online','bJetMon:online'], stream=[PhysicsStream, ]), - ChainProp(name='HLT_mu4_j45_0eta290_020jvt_boffperf_pf_ftf_dRAB04_L1MU3V_jJ30', l1SeedThresholds=['MU3V' ,'FSNOSEED'], groups=SupportPhIGroup+MuonBjetGroup, monGroups=['bJetMon:shifter','muonMon:online','bJetMon:online'], stream=[PhysicsStream,'express']), - ChainProp(name='HLT_mu6_j60_0eta290_020jvt_boffperf_pf_ftf_dRAB04_L1MU3V_jJ30', l1SeedThresholds=['MU3V' ,'FSNOSEED'], groups=SupportPhIGroup+MuonBjetGroup, monGroups=['muonMon:online','bJetMon:online'], stream=[PhysicsStream, ]), + ChainProp(name='HLT_mu4_j35_0eta290_020jvt_boffperf_pf_ftf_dRAB04_L1MU3V_jJ40', l1SeedThresholds=['MU3V' ,'FSNOSEED'], groups=SupportPhIGroup+MuonBjetGroup, monGroups=['muonMon:online','bJetMon:online'], stream=[PhysicsStream, ]), + ChainProp(name='HLT_mu4_j45_0eta290_020jvt_boffperf_pf_ftf_dRAB04_L1MU3V_jJ40', l1SeedThresholds=['MU3V' ,'FSNOSEED'], groups=SupportPhIGroup+MuonBjetGroup, monGroups=['bJetMon:shifter','muonMon:online','bJetMon:online'], stream=[PhysicsStream,'express']), + ChainProp(name='HLT_mu6_j60_0eta290_020jvt_boffperf_pf_ftf_dRAB04_L1MU3V_jJ40', l1SeedThresholds=['MU3V' ,'FSNOSEED'], groups=SupportPhIGroup+MuonBjetGroup, monGroups=['muonMon:online','bJetMon:online'], stream=[PhysicsStream, ]), + # ATR-24698: add muon + bjet L1Topo chains for calibration + ChainProp(name='HLT_mu4_j35_0eta290_020jvt_boffperf_pf_ftf_dRAB04_L1BTAG-MU3VjJ40', l1SeedThresholds=['MU3V' ,'FSNOSEED'], groups=SupportPhIGroup+MuonBjetGroup+Topo2Group, monGroups=['muonMon:online','bJetMon:online'], stream=[PhysicsStream, ]), + ChainProp(name='HLT_mu4_j45_0eta290_020jvt_boffperf_pf_ftf_dRAB04_L1BTAG-MU3VjJ40', l1SeedThresholds=['MU3V' ,'FSNOSEED'], groups=SupportPhIGroup+MuonBjetGroup+Topo2Group, monGroups=['bJetMon:shifter','muonMon:online','bJetMon:online'], stream=[PhysicsStream,'express']), + ChainProp(name='HLT_mu6_j60_0eta290_020jvt_boffperf_pf_ftf_dRAB04_L1BTAG-MU3VjJ40', l1SeedThresholds=['MU3V' ,'FSNOSEED'], groups=SupportPhIGroup+MuonBjetGroup+Topo2Group, monGroups=['muonMon:online','bJetMon:online'], stream=[PhysicsStream, ]), + ChainProp(name='HLT_mu6_j100_0eta290_020jvt_boffperf_pf_ftf_dRAB04_L1BTAG-MU5VFjJ80', l1SeedThresholds=['MU5VF','FSNOSEED'], groups=SupportPhIGroup+MuonBjetGroup+Topo2Group, monGroups=['bJetMon:t0','muonMon:online','bJetMon:online'], stream=[PhysicsStream,'express']), @@ -2638,6 +2646,10 @@ def setupMenu(menu_name): ChainProp(name='HLT_g35_tight_2j35_0eta290_020jvt_bgn177_2j35a_pf_ftf_presel2a20b90XX2a20_L1eEM28M',l1SeedThresholds=['eEM28M','FSNOSEED','FSNOSEED'],stream=[PhysicsStream], groups=SupportPhIGroup+EgammaBjetGroup+['RATE:CPS_eEM28M']), ChainProp(name='HLT_g35_tight_j35_0eta290_020jvt_bgn177_3j35a_j0_DJMASS700j35_pf_ftf_presela20b85XX3a20_L1eEM28M',l1SeedThresholds=['eEM28M','FSNOSEED','FSNOSEED','FSNOSEED'],stream=[PhysicsStream], groups=SupportPhIGroup+EgammaBjetGroup+['RATE:CPS_eEM28M']), + #H->Z+gamma with Z->qq/vv ATR-28443 + ChainProp(name='HLT_g24_tight_icaloloose_j50c_j30c_j24c_03dRAB30_03dRAC30_15dRBC45_50invmBC130_pf_ftf_L1eEM26M', groups=PrimaryPhIGroup+EgammaJetGroup, l1SeedThresholds=['eEM26M','FSNOSEED','FSNOSEED','FSNOSEED'],stream=[PhysicsStream]), + ChainProp(name='HLT_g20_tight_icaloloose_j40_j35a_j20c_j0_DJMASS300j35_pf_ftf_L1eEM22M_jMJJ-300', groups=PrimaryPhIGroup+EgammaJetGroup+Topo2Group, l1SeedThresholds=['eEM22M','FSNOSEED','FSNOSEED','FSNOSEED','FSNOSEED'],stream=[PhysicsStream]), + ChainProp(name='HLT_g20_tight_icaloloose_j40_j35a_j25a_j25_j20c_j0_DJMASS300j35_pf_ftf_L1eEM22M_jMJJ-300', groups=PrimaryPhIGroup+EgammaJetGroup+Topo2Group, l1SeedThresholds=['eEM22M','FSNOSEED','FSNOSEED','FSNOSEED','FSNOSEED','FSNOSEED','FSNOSEED'],stream=[PhysicsStream]), # LLP late stream diff --git a/Trigger/TriggerCommon/TriggerMenuMT/python/HLT/Menu/SignatureDicts.py b/Trigger/TriggerCommon/TriggerMenuMT/python/HLT/Menu/SignatureDicts.py index c73a2c1873f891a225703ef5a308dca53fa618ef..56df443b5199a5e0ff9b4e55437549fdc5cb5172 100644 --- a/Trigger/TriggerCommon/TriggerMenuMT/python/HLT/Menu/SignatureDicts.py +++ b/Trigger/TriggerCommon/TriggerMenuMT/python/HLT/Menu/SignatureDicts.py @@ -244,26 +244,26 @@ JetChainParts = { 'preselZ128XX4c20', 'preselZ120XX4c20', 'preselZ116XX4c20', - 'preselZ167MAXMULT5XX4c20', - 'preselZ138MAXMULT5XX4c20', - 'preselZ126MAXMULT5XX4c20', - 'preselZ120MAXMULT20XX4c85', + 'preselZ167MAXMULT5cXX4c20', + 'preselZ138MAXMULT5cXX4c20', + 'preselZ126MAXMULT5cXX4c20', + 'preselZ120MAXMULT20cXX4c85', 'preselZ87XX3c20', 'preselZ84XX3c20', 'preselZ82XX3c20', 'preselZ120XX2c20XX2c20b85', - 'preselZ138MAXMULT5XX2c20XX2c20b85', + 'preselZ138MAXMULT5cXX2c20XX2c20b85', 'preselZ84XX1c20XX2c20b85', 'preselZ120XX4c85', 'preselZ116XX4c20', 'preselZ138XX4c20', - 'preselZ120MAXMULT20XX4c20', - 'preselZ84MAXMULT20XX3c20', - 'preselZ116MAXMULT5XX4c20', - 'preselZ116MAXMULT20XX4c20', + 'preselZ120MAXMULT20cXX4c20', + 'preselZ84MAXMULT20cXX3c20', + 'preselZ116MAXMULT5cXX4c20', + 'preselZ116MAXMULT20cXX4c20', 'preselZ84XX1c20XX2c20b85', 'preselZ128XX2c20XX2c20b85', - 'preselZ128MAXMULT20XX4c85', + 'preselZ128MAXMULT20cXX4c85', 'preselZ128XX4c20XX1j20', 'preselZ128XX3c20XX1c20bg85', 'preselZ116XX3c20XX1c20bg85', @@ -366,8 +366,8 @@ JetChainParts = { # jets by ordering by pt, and selecting those with indices in [X,Y] 'PTRANGE0r1', 'PTRANGE2r3', - 'MAXMULT20', - 'MAXMULT6',], + 'MAXMULT20c', + 'MAXMULT6c',], 'bsel': ['95bdips','90bdips','85bdips','80bdips','77bdips','95bgnone','90bgnone','85bgnone','80bgnone','77bgnone', '60bgntwox', '70bgntwox', '80bgntwox', '90bgntwox','95bgntwo','90bgntwo','85bgntwo','80bgntwo','82bgntwo','77bgntwo','75bgntwo','60bgntwo'], 'tausel': [ '85gntau' , '90gntau' ], 'smc' : # "Single mass condition" -- rename? diff --git a/Trigger/TriggerCommon/TriggerMenuMT/python/L1/Config/ItemDef.py b/Trigger/TriggerCommon/TriggerMenuMT/python/L1/Config/ItemDef.py index de28f6458d2163a3e89f9bfb28809dcf02eff26e..47e955260e58433a6148d660c95c9e3fdccc4c64 100644 --- a/Trigger/TriggerCommon/TriggerMenuMT/python/L1/Config/ItemDef.py +++ b/Trigger/TriggerCommon/TriggerMenuMT/python/L1/Config/ItemDef.py @@ -655,7 +655,7 @@ class ItemDef: MenuItem('L1_jJ30_FIRSTEMPTY' ).setLogic( d.jJ30 & firstempty).setTriggerType(TT.calo) MenuItem('L1_jJ30_UNPAIRED_ISO' ).setLogic( d.jJ30 & unpaired_isocond).setTriggerType(TT.calo) MenuItem('L1_jJ30_UNPAIRED_NONISO' ).setLogic( d.jJ30 & unpaired_nonisocond).setTriggerType(TT.calo) - MenuItem('L1_jJ30_BRGP12' ).setLogic( d.jJ30 & bgrp12cond).setTriggerType(TT.calo) + MenuItem('L1_jJ30_BGRP12' ).setLogic( d.jJ30 & bgrp12cond).setTriggerType(TT.calo) MenuItem('L1_jJ30_UNPAIREDB1' ).setLogic( d.jJ30 & bgrp13cond).setTriggerType(TT.calo) MenuItem('L1_jJ30_UNPAIREDB2' ).setLogic( d.jJ30 & bgrp14cond).setTriggerType(TT.calo) MenuItem('L1_jJ30p0ETA25' ).setLogic( d.jJ300ETA25 & physcond).setTriggerType(TT.calo) @@ -1923,7 +1923,7 @@ class ItemDef: MenuItem('L1_DPHI-2eEM5_VTE10').setLogic( d.TOPO_27DPHI32_eEMs1_eEMs6 & Not(d.TE10) & physcond).setTriggerType(TT.calo) MenuItem('L1_DPHI-2eEM9_VTE50').setLogic( d.eEM9.x(2) & d.TOPO_27DPHI32_eEMs1_eEMs6 & Not(d.TE50) & physcond).setTriggerType(TT.calo) MenuItem('L1_BTAG-MU3VjJ40').setLogic( d.TOPO_0DR04_MU3Vab_CjJ40ab & physcond) - MenuItem('L1_BTAG-MU5VFjJ50').setLogic( d.TOPO_0DR04_MU5VFab_CjJ50ab & physcond) # added temporarily + MenuItem('L1_BTAG-MU5VFjJ80').setLogic( d.TOPO_0DR04_MU5VFab_CjJ80ab & physcond) MenuItem('L1_BTAG-MU5VFjJ90').setLogic( d.TOPO_0DR04_MU5VFab_CjJ90ab & physcond) MenuItem('L1_BPH-8M15-2MU3V-BO' ).setLogic( d.TOPO_8INVM15_2CMU3Vab & physcond) # 96% for Upsi diff --git a/Trigger/TriggerCommon/TriggerMenuMT/python/L1/Config/MonitorDef.py b/Trigger/TriggerCommon/TriggerMenuMT/python/L1/Config/MonitorDef.py index 7f399dadf345ebc837162b02c41c326121d3ef61..bfee9f3e4b88bfff0826b12a1df3ef7ce14948e4 100644 --- a/Trigger/TriggerCommon/TriggerMenuMT/python/L1/Config/MonitorDef.py +++ b/Trigger/TriggerCommon/TriggerMenuMT/python/L1/Config/MonitorDef.py @@ -174,7 +174,7 @@ class MonitorDef: # Combined "L1_2eEM10L_MU8F", "L1_MU3V_jJ40", # L1Topo (Topo2 always in) - "L1_BTAG-MU3VjJ40", "L1_BTAG-MU5VFjJ50", + "L1_BTAG-MU3VjJ40", "L1_BTAG-MU5VFjJ80", "L1_LAR-ZEE-eEM", "L1_JPSI-1M5-eEM9", "L1_JPSI-1M5-eEM15", "L1_BPH-0M9-eEM9-eEM7", "L1_BPH-0M9-eEM9-eEM7_MU5VF", diff --git a/Trigger/TriggerCommon/TriggerMenuMT/python/L1/Config/TopoAlgoDef.py b/Trigger/TriggerCommon/TriggerMenuMT/python/L1/Config/TopoAlgoDef.py index 9bfcb47e1f689163c158176b92516dd71c6593bb..b4775c62f3f5146e34a789b8e70102be82749c2f 100644 --- a/Trigger/TriggerCommon/TriggerMenuMT/python/L1/Config/TopoAlgoDef.py +++ b/Trigger/TriggerCommon/TriggerMenuMT/python/L1/Config/TopoAlgoDef.py @@ -987,7 +987,7 @@ class TopoAlgoDef: # added for muon-jet: algoList = [ {"minDr": 0, "maxDr": 4, "otype1" : "MU3Vab", "otype2" : "CjJ", "ocut2": 40, "olist2" : "ab"}, #0DR04-MU3Vab-CjJ40ab - {"minDr": 0, "maxDr": 4, "otype1" : "MU5VFab", "otype2" : "CjJ", "ocut2": 50, "olist2" : "ab"}, #0DR04-MU5VFab-CjJ50ab + {"minDr": 0, "maxDr": 4, "otype1" : "MU5VFab", "otype2" : "CjJ", "ocut2": 80, "olist2" : "ab"}, #0DR04-MU5VFab-CjJ80ab {"minDr": 0, "maxDr": 4, "otype1" : "MU5VFab", "otype2" : "CjJ", "ocut2": 90, "olist2" : "ab"}, #0DR04-MU5VFab-CjJ90ab ] for x in algoList: diff --git a/Trigger/TriggerCommon/TriggerMenuMT/python/L1/Menu/Menu_Physics_HI_run3_v1.py b/Trigger/TriggerCommon/TriggerMenuMT/python/L1/Menu/Menu_Physics_HI_run3_v1.py index 76bb17ea34b4a20f54e87c2fc7ea5bff25c06ffc..c432debce9908e2ad08a61edbeaa5ae42b3e745a 100644 --- a/Trigger/TriggerCommon/TriggerMenuMT/python/L1/Menu/Menu_Physics_HI_run3_v1.py +++ b/Trigger/TriggerCommon/TriggerMenuMT/python/L1/Menu/Menu_Physics_HI_run3_v1.py @@ -91,7 +91,7 @@ def defineMenu(): #ATR-28679 'L1_jXE60', 'L1_jXE110', 'L1_jXE120', 'L1_gXEJWOJ60', 'L1_gXEJWOJ110', 'L1_gXEJWOJ120', 'L1_gXEJWOJ500', - 'L1_jJ80_jXE120', + 'L1_jJ80_jXE120', 'L1_jJ80_jXE100', # calo 'L1_TE3', 'L1_TE4', 'L1_TE5', # also for HMT triggers @@ -350,7 +350,7 @@ def defineMenu(): # 'L1_CEP-CjJ90' , #ATR-28678 Ph1 Items for Phisics_pp_Run3 - "L1_jJ30_BRGP12", + "L1_jJ30_BGRP12", "L1_jJ30_EMPTY", "L1_jJ30_FIRSTEMPTY", "L1_jJ30_UNPAIRED_ISO", diff --git a/Trigger/TriggerCommon/TriggerMenuMT/python/L1/Menu/Menu_Physics_pp_run3_v1.py b/Trigger/TriggerCommon/TriggerMenuMT/python/L1/Menu/Menu_Physics_pp_run3_v1.py index 54b3a58a5f0a2692bc7717b94d20b508434d5711..45e98371047eda2412416b5213b6cba7c01b2079 100644 --- a/Trigger/TriggerCommon/TriggerMenuMT/python/L1/Menu/Menu_Physics_pp_run3_v1.py +++ b/Trigger/TriggerCommon/TriggerMenuMT/python/L1/Menu/Menu_Physics_pp_run3_v1.py @@ -97,7 +97,7 @@ def defineMenu(): 'L1_eEM24L_3jJ50', # combined mu - jet - 'L1_MU3V_J15', 'L1_MU5VF_J40', 'L1_BTAG-MU3VjJ40', 'L1_BTAG-MU5VFjJ50', + 'L1_MU3V_J15', 'L1_MU5VF_J40', 'L1_BTAG-MU3VjJ40', 'L1_BTAG-MU5VFjJ80', # L1_MU3V_J12 moved to MC ATR-28761 #ATR-13743 J,XE thershold change for ATR-19376 @@ -111,7 +111,7 @@ def defineMenu(): 'L1_J15','L1_J20','L1_J50','L1_J100','L1_J400','L1_J75p31ETA49', # jJ - 'L1_jJ30', 'L1_jJ30_BRGP12','L1_jJ30_EMPTY','L1_jJ30_FIRSTEMPTY', + 'L1_jJ30', 'L1_jJ30_BGRP12','L1_jJ30_EMPTY','L1_jJ30_FIRSTEMPTY', 'L1_jJ30_UNPAIRED_ISO','L1_jJ30_UNPAIRED_NONISO','L1_jJ30_UNPAIREDB1','L1_jJ30_UNPAIREDB2', 'L1_jJ30p0ETA25', diff --git a/Trigger/TriggerCommon/TriggerMenuMT/python/L1/Menu/Menu_Physics_pp_run3_v1_inputs.py b/Trigger/TriggerCommon/TriggerMenuMT/python/L1/Menu/Menu_Physics_pp_run3_v1_inputs.py index e40eac66c87596e413ebb3cbd10ccc03cf797924..0722ddf195788a74f457f09503bf1574ee2c69c5 100644 --- a/Trigger/TriggerCommon/TriggerMenuMT/python/L1/Menu/Menu_Physics_pp_run3_v1_inputs.py +++ b/Trigger/TriggerCommon/TriggerMenuMT/python/L1/Menu/Menu_Physics_pp_run3_v1_inputs.py @@ -292,7 +292,7 @@ def defineInputsMenu(): "algorithms" : [ TopoMenuDef( '0INVM10-3MU3Vab', outputbits = 0 ), # BLS TopoMenuDef( '0DR04-MU3Vab-CjJ40ab', outputbits = 1 ), # Bjet, TODO: not a primary - TopoMenuDef( '0DR04-MU5VFab-CjJ50ab', outputbits = 2 ), # Bjet, TODO: not a primary + TopoMenuDef( '0DR04-MU5VFab-CjJ80ab', outputbits = 2 ), # Bjet, TODO: not a primary TopoMenuDef( '2DISAMB_jJ55ab_DR_eTAU_eTAU', outputbits = (3,4), outputlines = [ '2DISAMB-jJ55ab-0DR25-eTAU30ab-eTAU20ab', '2DISAMB-jJ55ab-0DR28-eTAU30ab-eTAU20ab' ]), TopoMenuDef( 'DR_eTAU30ab_eTAU20ab', outputbits = (5,6), outputlines = [ '0DR25-eTAU30ab-eTAU20ab', diff --git a/Trigger/TriggerCommon/TriggerMenuMT/scripts/generateL1MenuRun3.py b/Trigger/TriggerCommon/TriggerMenuMT/scripts/generateL1MenuRun3.py index ff7318422eda4922969a19739297276117a342e3..03f95de3aa14fc3f96297dba91ef005f5b9b6623 100755 --- a/Trigger/TriggerCommon/TriggerMenuMT/scripts/generateL1MenuRun3.py +++ b/Trigger/TriggerCommon/TriggerMenuMT/scripts/generateL1MenuRun3.py @@ -4,10 +4,6 @@ import sys def main(): - # Make sure nobody uses deprecated global ConfigFlags - import AthenaConfiguration.AllConfigFlags - del AthenaConfiguration.AllConfigFlags.ConfigFlags - # Prevent usage of legacy job properties from AthenaCommon import JobProperties JobProperties.jobPropertiesDisallowed = True