diff --git a/PhysicsAnalysis/Algorithms/AnalysisAlgorithmsConfig/python/ConfigBlock.py b/PhysicsAnalysis/Algorithms/AnalysisAlgorithmsConfig/python/ConfigBlock.py index 530a54b020e985e4fc28e5df86aebfa5c8b1b666..5d4782c2e1001f9d907a9b46d0e7a684c4dace36 100644 --- a/PhysicsAnalysis/Algorithms/AnalysisAlgorithmsConfig/python/ConfigBlock.py +++ b/PhysicsAnalysis/Algorithms/AnalysisAlgorithmsConfig/python/ConfigBlock.py @@ -91,11 +91,11 @@ class ConfigBlock: stay the same, but some behavior may change. """ if name in self._options : - raise KeyError ('duplicate option: ' + name) + raise KeyError (f'duplicate option: {name}') if type not in [str, bool, int, float, list, None] : - raise TypeError ('unknown option type: ' + str (type)) + raise TypeError (f'unknown option type: {type}') if duplicateAction not in ['skip', 'set', 'error'] : - raise ValueError ('unknown duplicateAction: ' + duplicateAction) + raise ValueError (f'unknown duplicateAction: {duplicateAction}') setattr (self, name, defaultValue) self._options[name] = ConfigBlockOption (type=type, info=info, duplicateAction=duplicateAction, required=required) @@ -111,10 +111,10 @@ class ConfigBlock: noneActions = ['error', 'set', 'ignore'] if noneAction not in noneActions : - raise ValueError ('invalid noneAction: ' + noneAction + ' [allowed values: ' + str (noneActions) + ']') + raise ValueError (f'invalid noneAction: {noneAction} [allowed values: {noneActions}]') if name not in self._options : - raise KeyError ('unknown option: ' + name) + raise KeyError (f'unknown option "{name}" in block "{self.__class__.__name__}"') option = self._options[name] if isDuplicate : @@ -123,14 +123,14 @@ class ConfigBlock: elif option.duplicateAction == 'skip' : return elif option.duplicateAction == 'error' : - raise Exception ("can't have two options with the same name: " + self._groupName + '.' + name) + raise Exception (f"can't have two options with the same name: {self._groupName}.{name}") if value is not None or noneAction == 'set' : setattr (self, name, value) elif noneAction == 'ignore' : pass elif noneAction == 'error' : - raise ValueError ('passed None for setting option ' + name + ' with noneAction=error') + raise ValueError (f'passed None for setting option {name} with noneAction=error') else : raise Exception ('should not get here') diff --git a/PhysicsAnalysis/Algorithms/AnalysisAlgorithmsConfig/python/ConfigFactory.py b/PhysicsAnalysis/Algorithms/AnalysisAlgorithmsConfig/python/ConfigFactory.py index d08338e9fa6df0fd564ac0f2dde59d4d1fd3ae34..2b9bdcee4c3faf835ff078f9900f69a4b3dcdf0f 100644 --- a/PhysicsAnalysis/Algorithms/AnalysisAlgorithmsConfig/python/ConfigFactory.py +++ b/PhysicsAnalysis/Algorithms/AnalysisAlgorithmsConfig/python/ConfigFactory.py @@ -200,124 +200,124 @@ class ConfigFactory(): return configSeq - def addDefaultAlgs(config): + def addDefaultAlgs(self): """add algorithms and options""" # CommonServices from AsgAnalysisAlgorithms.AsgAnalysisConfig import makeCommonServicesConfig - config.addAlgConfigBlock(algName="CommonServices", alg=makeCommonServicesConfig) + self.addAlgConfigBlock(algName="CommonServices", alg=makeCommonServicesConfig) # pileup reweighting from AsgAnalysisAlgorithms.AsgAnalysisConfig import PileupReweightingBlock - config.addAlgConfigBlock(algName="PileupReweighting", alg=PileupReweightingBlock) + self.addAlgConfigBlock(algName="PileupReweighting", alg=PileupReweightingBlock) # event cleaning from AsgAnalysisAlgorithms.EventCleaningConfig import EventCleaningBlock - config.addAlgConfigBlock(algName="EventCleaning", alg=EventCleaningBlock) + self.addAlgConfigBlock(algName="EventCleaning", alg=EventCleaningBlock) # jets from JetAnalysisAlgorithms.JetAnalysisConfig import makeJetAnalysisConfig - config.addAlgConfigBlock(algName="Jets", alg=makeJetAnalysisConfig) + self.addAlgConfigBlock(algName="Jets", alg=makeJetAnalysisConfig) from JetAnalysisAlgorithms.JetJvtAnalysisConfig import JetJvtAnalysisConfig - config.addAlgConfigBlock(algName="JVT", alg=JetJvtAnalysisConfig, + self.addAlgConfigBlock(algName="JVT", alg=JetJvtAnalysisConfig, superBlocks="Jets") from FTagAnalysisAlgorithms.FTagAnalysisConfig import makeFTagAnalysisConfig - config.addAlgConfigBlock(algName="FlavourTagging", alg=makeFTagAnalysisConfig, + self.addAlgConfigBlock(algName="FlavourTagging", alg=makeFTagAnalysisConfig, defaults={'selectionName': ''}, superBlocks="Jets") # electrons from EgammaAnalysisAlgorithms.ElectronAnalysisConfig import ElectronCalibrationConfig - config.addAlgConfigBlock(algName="Electrons", alg=ElectronCalibrationConfig) + self.addAlgConfigBlock(algName="Electrons", alg=ElectronCalibrationConfig) from EgammaAnalysisAlgorithms.ElectronAnalysisConfig import ElectronWorkingPointConfig - config.addAlgConfigBlock(algName="WorkingPoint", alg=ElectronWorkingPointConfig, + self.addAlgConfigBlock(algName="WorkingPoint", alg=ElectronWorkingPointConfig, superBlocks="Electrons") # photons from EgammaAnalysisAlgorithms.PhotonAnalysisConfig import PhotonCalibrationConfig - config.addAlgConfigBlock(algName="Photons", alg=PhotonCalibrationConfig) + self.addAlgConfigBlock(algName="Photons", alg=PhotonCalibrationConfig) from EgammaAnalysisAlgorithms.PhotonAnalysisConfig import PhotonWorkingPointConfig - config.addAlgConfigBlock(algName="WorkingPoint", alg=PhotonWorkingPointConfig, + self.addAlgConfigBlock(algName="WorkingPoint", alg=PhotonWorkingPointConfig, superBlocks="Photons") # muons from MuonAnalysisAlgorithms.MuonAnalysisConfig import MuonCalibrationConfig - config.addAlgConfigBlock(algName="Muons", alg=MuonCalibrationConfig) + self.addAlgConfigBlock(algName="Muons", alg=MuonCalibrationConfig) from MuonAnalysisAlgorithms.MuonAnalysisConfig import MuonWorkingPointConfig - config.addAlgConfigBlock(algName="WorkingPoint", alg=MuonWorkingPointConfig, + self.addAlgConfigBlock(algName="WorkingPoint", alg=MuonWorkingPointConfig, superBlocks="Muons") # tauJets from TauAnalysisAlgorithms.TauAnalysisConfig import TauCalibrationConfig - config.addAlgConfigBlock(algName="TauJets", alg=TauCalibrationConfig) + self.addAlgConfigBlock(algName="TauJets", alg=TauCalibrationConfig) from TauAnalysisAlgorithms.TauAnalysisConfig import TauWorkingPointConfig - config.addAlgConfigBlock(algName="WorkingPoint", alg=TauWorkingPointConfig, + self.addAlgConfigBlock(algName="WorkingPoint", alg=TauWorkingPointConfig, superBlocks="TauJets") # SystObjectLink from AsgAnalysisAlgorithms.SystObjectLinkConfig import makeSystObjectLinkConfig - config.addAlgConfigBlock(algName="SystObjectLink", alg=makeSystObjectLinkConfig, - superBlocks=[config.ROOTNAME, "Jets", "Electrons", "Photons", "Muons", "TauJets"]) + self.addAlgConfigBlock(algName="SystObjectLink", alg=makeSystObjectLinkConfig, + superBlocks=[self.ROOTNAME, "Jets", "Electrons", "Photons", "Muons", "TauJets"]) # IFF truth classification from AsgAnalysisAlgorithms.AsgAnalysisConfig import IFFLeptonDecorationBlock - config.addAlgConfigBlock(algName="IFFClassification", alg=IFFLeptonDecorationBlock, + self.addAlgConfigBlock(algName="IFFClassification", alg=IFFLeptonDecorationBlock, superBlocks=["Electrons","Muons"]) # generator level analysis from AsgAnalysisAlgorithms.AsgAnalysisConfig import makeGeneratorAnalysisConfig - config.addAlgConfigBlock(algName="GeneratorLevelAnalysis", alg=makeGeneratorAnalysisConfig) + self.addAlgConfigBlock(algName="GeneratorLevelAnalysis", alg=makeGeneratorAnalysisConfig) # pT/Eta Selection from AsgAnalysisAlgorithms.AsgAnalysisConfig import makePtEtaSelectionConfig - config.addAlgConfigBlock(algName="PtEtaSelection", alg=makePtEtaSelectionConfig, + self.addAlgConfigBlock(algName="PtEtaSelection", alg=makePtEtaSelectionConfig, defaults={'selectionName': ''}, - superBlocks=[config.ROOTNAME, "Jets", "Electrons", "Photons", "Muons", "TauJets"]) + superBlocks=[self.ROOTNAME, "Jets", "Electrons", "Photons", "Muons", "TauJets"]) # met from MetAnalysisAlgorithms.MetAnalysisConfig import MetAnalysisConfig - config.addAlgConfigBlock(algName="MissingET", alg=MetAnalysisConfig) + self.addAlgConfigBlock(algName="MissingET", alg=MetAnalysisConfig) # overlap removal from AsgAnalysisAlgorithms.OverlapAnalysisConfig import OverlapAnalysisConfig - config.addAlgConfigBlock(algName="OverlapRemoval", alg=OverlapAnalysisConfig, + self.addAlgConfigBlock(algName="OverlapRemoval", alg=OverlapAnalysisConfig, defaults={'configName': 'OverlapRemoval'}) # object-based cutflow from AsgAnalysisAlgorithms.AsgAnalysisConfig import ObjectCutFlowBlock - config.addAlgConfigBlock(algName='ObjectCutFlow', alg=ObjectCutFlowBlock) + self.addAlgConfigBlock(algName='ObjectCutFlow', alg=ObjectCutFlowBlock) # thinning from AsgAnalysisAlgorithms.AsgAnalysisConfig import OutputThinningBlock - config.addAlgConfigBlock(algName="Thinning", alg=OutputThinningBlock, + self.addAlgConfigBlock(algName="Thinning", alg=OutputThinningBlock, defaults={'configName': 'Thinning'}, - superBlocks=[config.ROOTNAME, "Jets", "Electrons", "Photons", "Muons", "TauJets"]) + superBlocks=[self.ROOTNAME, "Jets", "Electrons", "Photons", "Muons", "TauJets"]) # trigger from TriggerAnalysisAlgorithms.TriggerAnalysisConfig import TriggerAnalysisBlock - config.addAlgConfigBlock(algName="Trigger", alg=TriggerAnalysisBlock, + self.addAlgConfigBlock(algName="Trigger", alg=TriggerAnalysisBlock, defaults={'configName': 'Trigger'}) # event selection from EventSelectionAlgorithms.EventSelectionConfig import makeMultipleEventSelectionConfigs - config.addAlgConfigBlock(algName='EventSelection', alg=makeMultipleEventSelectionConfigs) + self.addAlgConfigBlock(algName='EventSelection', alg=makeMultipleEventSelectionConfigs) # event-based cutflow from AsgAnalysisAlgorithms.AsgAnalysisConfig import EventCutFlowBlock - config.addAlgConfigBlock(algName='EventCutFlow', alg=EventCutFlowBlock, + self.addAlgConfigBlock(algName='EventCutFlow', alg=EventCutFlowBlock, defaults={'containerName': 'EventInfo', 'selectionName': ''}) # bootstraps from AsgAnalysisAlgorithms.BootstrapGeneratorConfig import BootstrapGeneratorConfig - config.addAlgConfigBlock(algName='Bootstraps', alg=BootstrapGeneratorConfig) + self.addAlgConfigBlock(algName='Bootstraps', alg=BootstrapGeneratorConfig) # per-event scale factor calculation from AsgAnalysisAlgorithms.AsgAnalysisConfig import PerEventSFBlock - config.addAlgConfigBlock(algName='PerEventSF', alg=PerEventSFBlock) + self.addAlgConfigBlock(algName='PerEventSF', alg=PerEventSFBlock) # output from AsgAnalysisAlgorithms.OutputAnalysisConfig import OutputAnalysisConfig - config.addAlgConfigBlock(algName="Output", alg=OutputAnalysisConfig, + self.addAlgConfigBlock(algName="Output", alg=OutputAnalysisConfig, defaults={'configName': 'Output'}) return diff --git a/PhysicsAnalysis/Algorithms/AnalysisAlgorithmsConfig/python/ConfigSequence.py b/PhysicsAnalysis/Algorithms/AnalysisAlgorithmsConfig/python/ConfigSequence.py index b509331fb1ccc77fc465df4333e16fe011c79c70..0565e94f51f6a5b1d832172998b75779a6c0fe7e 100644 --- a/PhysicsAnalysis/Algorithms/AnalysisAlgorithmsConfig/python/ConfigSequence.py +++ b/PhysicsAnalysis/Algorithms/AnalysisAlgorithmsConfig/python/ConfigSequence.py @@ -83,7 +83,7 @@ class ConfigSequence: block.setOptionValue (optionName, value, isDuplicate=used, **kwargs) used = True if not used : - raise KeyError ('unknown option: ' + name) + raise KeyError (f'unknown option "{name}" in sequence "{self.__class__.__name__}"') def printOptions(self):