diff --git a/PhysicsAnalysis/Algorithms/AnalysisAlgorithmsConfig/python/ConfigAccumulator.py b/PhysicsAnalysis/Algorithms/AnalysisAlgorithmsConfig/python/ConfigAccumulator.py index 49797cac20cf8478df394b816fa511af4cd56dbc..9d942f7dbea5aaf6a09ffa454708d1e020929c58 100644 --- a/PhysicsAnalysis/Algorithms/AnalysisAlgorithmsConfig/python/ConfigAccumulator.py +++ b/PhysicsAnalysis/Algorithms/AnalysisAlgorithmsConfig/python/ConfigAccumulator.py @@ -18,8 +18,8 @@ def mapUserName (name, *, noSysSuffix) : class DataType(FlagEnum): """holds the various data types as an enum""" Data = 'data' - FullSim = 'mc' - FastSim = 'afii' + FullSim = 'fullsim' + FastSim = 'fastsim' class SelectionConfig : """all the data for a given selection that has been registered @@ -119,7 +119,14 @@ class ConfigAccumulator : geometry = autoconfigFromFlags.GeoModel.Run dsid = autoconfigFromFlags.Input.MCChannelNumber else: - dataType = DataType(dataType) + # legacy mappings of string arguments + if isinstance(dataType, str): + if dataType == 'mc': + dataType = DataType.FullSim + elif dataType == 'afii': + dataType = DataType.FastSim + else: + dataType = DataType(dataType) # allow possible string argument for `geometry` and convert it to enum geometry = LHCPeriod(geometry) if geometry not in [LHCPeriod.Run2, LHCPeriod.Run3] : @@ -153,7 +160,7 @@ class ConfigAccumulator : def dataType (self) : - """the data type we run on (data, mc, afii)""" + """the data type we run on (data, fullsim, fastsim)""" return self._dataType diff --git a/PhysicsAnalysis/Algorithms/AnalysisAlgorithmsConfig/python/ConfigText.py b/PhysicsAnalysis/Algorithms/AnalysisAlgorithmsConfig/python/ConfigText.py index 137a453d99406f1da3e9a7cd2ff053df0902620a..7f241658167b923bbdc23e3b130f8f2fbacf1e9c 100644 --- a/PhysicsAnalysis/Algorithms/AnalysisAlgorithmsConfig/python/ConfigText.py +++ b/PhysicsAnalysis/Algorithms/AnalysisAlgorithmsConfig/python/ConfigText.py @@ -11,6 +11,7 @@ import inspect from collections import namedtuple from AnalysisAlgorithmsConfig.ConfigSequence import ConfigSequence +from AnalysisAlgorithmsConfig.ConfigAccumulator import DataType # class for config block information node = namedtuple("ConfigBlock", ['alg', 'algName', 'options', 'defaults', 'subAlgs']) @@ -334,7 +335,8 @@ def addDefaultAlgs(config, dataType, isPhyslite, noPhysliteBroken, noSystematics return campaign, files, prwfiles, lumicalcfiles = None, None, None, None useDefaultConfig = False - prwfiles, lumicalcfiles = pileupConfigFiles(dataType) + # need to allow for conversion of dataType from string to enum for the call to pileupConfigFiles + prwfiles, lumicalcfiles = pileupConfigFiles( {'data': DataType.Data, 'mc': DataType.FullSim, 'afii': DataType.FastSim}.get(dataType, dataType) ) makePileupReweightingConfig(seq) seq.setOptionValue ('.campaign', campaign, noneAction='ignore') diff --git a/PhysicsAnalysis/Algorithms/AnalysisAlgorithmsConfig/python/FullCPAlgorithmsTest.py b/PhysicsAnalysis/Algorithms/AnalysisAlgorithmsConfig/python/FullCPAlgorithmsTest.py index 00ecd3f8552c7c3f1a211c79d19ddadf4a39e8f9..e4c3bed67ffbde0273bb6c3eb21013f73c4f24f9 100644 --- a/PhysicsAnalysis/Algorithms/AnalysisAlgorithmsConfig/python/FullCPAlgorithmsTest.py +++ b/PhysicsAnalysis/Algorithms/AnalysisAlgorithmsConfig/python/FullCPAlgorithmsTest.py @@ -6,7 +6,7 @@ from AnaAlgorithm.AlgSequence import AlgSequence from AnaAlgorithm.DualUseConfig import createAlgorithm, addPrivateTool from AsgAnalysisAlgorithms.AsgAnalysisAlgorithmsTest import pileupConfigFiles from AnalysisAlgorithmsConfig.ConfigSequence import ConfigSequence -from AnalysisAlgorithmsConfig.ConfigAccumulator import ConfigAccumulator +from AnalysisAlgorithmsConfig.ConfigAccumulator import ConfigAccumulator, DataType # Config: triggerChainsPerYear = { @@ -108,7 +108,8 @@ def makeSequenceOld (dataType, algSeq, forCompare, isPhyslite, noPhysliteBroken, files = autoconfigFromFlags.Input.Files useDefaultConfig = True else: - prwfiles, lumicalcfiles = pileupConfigFiles(dataType) + # need to convert dataType from string to enum for the call to pileupConfigFiles + prwfiles, lumicalcfiles = pileupConfigFiles( {'data': DataType.Data, 'mc': DataType.FullSim, 'afii': DataType.FastSim}.get(dataType, None) ) from AsgAnalysisAlgorithms.PileupAnalysisSequence import \ makePileupAnalysisSequence @@ -589,7 +590,8 @@ def makeSequenceBlocks (dataType, algSeq, forCompare, isPhyslite, noPhysliteBrok files = autoconfigFromFlags.Input.Files useDefaultConfig = True else: - prwfiles, lumicalcfiles = pileupConfigFiles(dataType) + # need to allow for conversion of dataType from string to enum for the call to pileupConfigFiles + prwfiles, lumicalcfiles = pileupConfigFiles( {'data': DataType.Data, 'mc': DataType.FullSim, 'afii': DataType.FastSim}.get(dataType, dataType) ) configSeq += makeConfig ('Event.PileupReweighting', None) configSeq.setOptionValue ('.campaign', campaign, noneAction='ignore') @@ -724,7 +726,7 @@ def makeSequenceBlocks (dataType, algSeq, forCompare, isPhyslite, noPhysliteBrok configSeq += makeConfig('SystObjectLink', 'SystObjectLink.AnaTauJets') - if dataType != 'data' : + if dataType is not DataType.Data : # Include, and then set up the generator analysis sequence: configSeq += makeConfig( 'Event.Generator', None) configSeq.setOptionValue ('.saveCutBookkeepers', True) diff --git a/PhysicsAnalysis/Algorithms/AsgAnalysisAlgorithms/python/AsgAnalysisAlgorithmsTest.py b/PhysicsAnalysis/Algorithms/AsgAnalysisAlgorithms/python/AsgAnalysisAlgorithmsTest.py index c4b4b5f1c1d417fcc066d99e06e5b88352558b72..d545f6d9c9434b88e57d1df5ca1a79b9e9c61f4d 100644 --- a/PhysicsAnalysis/Algorithms/AsgAnalysisAlgorithms/python/AsgAnalysisAlgorithmsTest.py +++ b/PhysicsAnalysis/Algorithms/AsgAnalysisAlgorithms/python/AsgAnalysisAlgorithmsTest.py @@ -5,6 +5,7 @@ from AnaAlgorithm.AlgSequence import AlgSequence from AnaAlgorithm.DualUseConfig import createAlgorithm, createService +from AnalysisAlgorithmsConfig.ConfigAccumulator import DataType def makeOverlapSequence (dataType) : algSeq = AlgSequence() @@ -229,7 +230,7 @@ def makeGeneratorAlgorithmsSequence (dataType) : def pileupConfigFiles(dataType): """Return the PRW config files and lumicalc files for tests""" - if dataType == "data": + if dataType is DataType.Data: prwfiles = [] lumicalcfiles = [] else: @@ -237,7 +238,7 @@ def pileupConfigFiles(dataType): "GoodRunsLists/data15_13TeV/20170619/PHYS_StandardGRL_All_Good_25ns_276262-284484_OflLumi-13TeV-008.root", "GoodRunsLists/data16_13TeV/20180129/PHYS_StandardGRL_All_Good_25ns_297730-311481_OflLumi-13TeV-009.root", ] - if dataType == "mc": + if dataType is DataType.FullSim: prwfiles = [ "PileupReweighting/mc20_common/mc20a.284500.physlite.prw.v1.root" ] diff --git a/PhysicsAnalysis/Algorithms/AsgAnalysisAlgorithms/python/AsgAnalysisConfig.py b/PhysicsAnalysis/Algorithms/AsgAnalysisAlgorithms/python/AsgAnalysisConfig.py index 0c6309dc32b019845e70dc5f7b56ce77185d21e4..377231282b65c97144a3a5eb5a2cd2b354e88255 100644 --- a/PhysicsAnalysis/Algorithms/AsgAnalysisAlgorithms/python/AsgAnalysisConfig.py +++ b/PhysicsAnalysis/Algorithms/AsgAnalysisAlgorithms/python/AsgAnalysisConfig.py @@ -81,7 +81,7 @@ class PileupReweightingBlock (ConfigBlock): else: from PileupReweighting.AutoconfigurePRW import getConfigurationFiles toolConfigFiles = getConfigurationFiles(campaign=campaign, files=self.files, useDefaultConfig=self.useDefaultConfig, - data_type=config.dataType().value) + data_type=config.dataType()) log.info('Setting PRW configuration based on input files') if toolConfigFiles: diff --git a/PhysicsAnalysis/Algorithms/MetAnalysisAlgorithms/python/MetAnalysisConfig.py b/PhysicsAnalysis/Algorithms/MetAnalysisAlgorithms/python/MetAnalysisConfig.py index 530a23f9d572838c79aeec07ee6930e4a3019f38..b75615672e4c1ca9ef001f52281ddcccbb116e66 100644 --- a/PhysicsAnalysis/Algorithms/MetAnalysisAlgorithms/python/MetAnalysisConfig.py +++ b/PhysicsAnalysis/Algorithms/MetAnalysisAlgorithms/python/MetAnalysisConfig.py @@ -104,7 +104,6 @@ def makeMetAnalysisConfig( seq, containerName, Selections on each container can also be defined Keyword arguments: - dataType -- The data type to run on ("data", "mc" or "afii") useFJVT -- Use FJVT decision for the calculation treatPUJets -- Treat pile-up jets in the MET significance calculation setMuonJetEMScale -- Use consituent scale and subtract muon eloss for jets overlapping muons diff --git a/PhysicsAnalysis/Algorithms/TauAnalysisAlgorithms/python/DiTauAnalysisConfig.py b/PhysicsAnalysis/Algorithms/TauAnalysisAlgorithms/python/DiTauAnalysisConfig.py index 60dc0b245df8edfdaee5861e31ac0ac145fe25a2..b6e1e0cd50105dc325cce99ce138d281ea99276c 100644 --- a/PhysicsAnalysis/Algorithms/TauAnalysisAlgorithms/python/DiTauAnalysisConfig.py +++ b/PhysicsAnalysis/Algorithms/TauAnalysisAlgorithms/python/DiTauAnalysisConfig.py @@ -102,7 +102,6 @@ def makeDiTauCalibrationConfig( seq, containerName, postfix = '', between the working points. Keyword arguments: - dataType -- The data type to run on ("data", "mc" or "afii") postfix -- a postfix to apply to decorations and algorithm names. this is mostly used/needed when using this sequence with multiple working points to ensure all @@ -123,7 +122,6 @@ def makeDiTauWorkingPointConfig( seq, containerName, workingPoint, postfix, """Create tau analysis algorithms for a single working point Keyword arguments: - dataType -- The data type to run on ("data", "mc" or "afii") legacyRecommendations -- use legacy tau BDT and electron veto recommendations postfix -- a postfix to apply to decorations and algorithm names. this is mostly used/needed when using this diff --git a/PhysicsAnalysis/Algorithms/TriggerAnalysisAlgorithms/python/TriggerAnalysisConfig.py b/PhysicsAnalysis/Algorithms/TriggerAnalysisAlgorithms/python/TriggerAnalysisConfig.py index 06cc9ddc4e88f65d5cee7db0edf9402ddda84ef6..dd2e55eff1ce45df3c909c562d2df345bb527ffb 100644 --- a/PhysicsAnalysis/Algorithms/TriggerAnalysisAlgorithms/python/TriggerAnalysisConfig.py +++ b/PhysicsAnalysis/Algorithms/TriggerAnalysisAlgorithms/python/TriggerAnalysisConfig.py @@ -161,7 +161,6 @@ def makeTriggerAnalysisConfig( seq, """Create a basic trigger analysis algorithm sequence Keyword arguments: - dataType -- The data type to run on ("data", "mc" or "afii") triggerChainsPerYear -- a dictionary with key (str) the year and value (list of strings) the trigger chains triggerChainsForSelection -- a list of trigger chains to be used for trigger selection, only set it if you need a different setup than for SFs! prescaleLumiCalcFiles -- a list of lumicalc files to calculate trigger prescales diff --git a/PhysicsAnalysis/AnalysisCommon/PileupReweighting/python/AutoconfigurePRW.py b/PhysicsAnalysis/AnalysisCommon/PileupReweighting/python/AutoconfigurePRW.py index 0ef4a51aa9b40e1e2441e188989a5bdf0941135f..3548de65bea938c4ab2ffa41b97f3fe18b3b35bd 100644 --- a/PhysicsAnalysis/AnalysisCommon/PileupReweighting/python/AutoconfigurePRW.py +++ b/PhysicsAnalysis/AnalysisCommon/PileupReweighting/python/AutoconfigurePRW.py @@ -1,5 +1,6 @@ # Copyright (C) 2002-2023 CERN for the benefit of the ATLAS collaboration from Campaigns.Utils import Campaign, getMCCampaign +from AnalysisAlgorithmsConfig.ConfigAccumulator import DataType def getLumicalcFiles(campaign): @@ -115,15 +116,15 @@ def getConfigurationFiles(campaign=None, dsid=None, data_type=None, files=None, simulation_flavour = GetFileMD(files).get('Simulator', '') if not simulation_flavour: simulation_flavour = GetFileMD(files).get('SimulationFlavour', '') - data_type = 'mc' if (not simulation_flavour or 'FullG4' in simulation_flavour) else 'afii' + data_type = DataType.FullSim if (not simulation_flavour or 'FullG4' in simulation_flavour) else DataType.FastSim - # data_type as in pileup analysis sequence: either 'data' or ('mc' or 'afii') - if data_type == 'data': + # data_type as in pileup analysis sequence: either 'data' or ('fullsim' or 'afii') + if data_type is DataType.Data: raise ValueError('Data is not supported') - if data_type == 'mc': + if data_type is DataType.FullSim: simulation_type = 'FS' - elif data_type == 'afii': + elif data_type is DataType.FastSim: simulation_type = 'AFII' else: raise ValueError(f'Invalid data_type {data_type}')