diff --git a/PhysicsAnalysis/Algorithms/AnalysisAlgorithmsConfig/python/ConfigFactory.py b/PhysicsAnalysis/Algorithms/AnalysisAlgorithmsConfig/python/ConfigFactory.py index 0f8bbffc28280692fda91e91e9bb9e787c9c5871..608d6e5a9e59057599d8fa859bd6436d28e4b5f2 100644 --- a/PhysicsAnalysis/Algorithms/AnalysisAlgorithmsConfig/python/ConfigFactory.py +++ b/PhysicsAnalysis/Algorithms/AnalysisAlgorithmsConfig/python/ConfigFactory.py @@ -310,6 +310,10 @@ class ConfigFactory(): from AsgAnalysisAlgorithms.BootstrapGeneratorConfig import BootstrapGeneratorConfig config.addAlgConfigBlock(algName='Bootstraps', alg=BootstrapGeneratorConfig) + # per-event scale factor calculation + from AsgAnalysisAlgorithms.AsgAnalysisConfig import PerEventSFBlock + config.addAlgConfigBlock(algName='PerEventSF', alg=PerEventSFBlock) + # output from AsgAnalysisAlgorithms.OutputAnalysisConfig import OutputAnalysisConfig config.addAlgConfigBlock(algName="Output", alg=OutputAnalysisConfig, diff --git a/PhysicsAnalysis/Algorithms/AsgAnalysisAlgorithms/python/AsgAnalysisConfig.py b/PhysicsAnalysis/Algorithms/AsgAnalysisAlgorithms/python/AsgAnalysisConfig.py index 4f594fc6e0d35c564b81ba032f384fc2e740ce83..f4dad423c4e8ba884706c3bf0871d91908ccd1da 100644 --- a/PhysicsAnalysis/Algorithms/AsgAnalysisAlgorithms/python/AsgAnalysisConfig.py +++ b/PhysicsAnalysis/Algorithms/AsgAnalysisAlgorithms/python/AsgAnalysisConfig.py @@ -357,6 +357,30 @@ class IFFLeptonDecorationBlock (ConfigBlock): config.addOutputVar(self.containerName, alg.decoration, alg.decoration.split("_%SYS%")[0], noSys=True) +class PerEventSFBlock (ConfigBlock): + """the ConfigBlock for the AsgEventScaleFactorAlg""" + + def __init__ (self, name): + super(PerEventSFBlock, self).__init__() + self.algName = name + self.addOption('particles', '', type=str) + self.addOption('objectSF', '', type=str) + self.addOption('eventSF', '', type=str) + + def makeAlgs(self, config): + if config.dataType() is DataType.Data: + return + particles, selection = config.readNameAndSelection(self.particles) + alg = config.createAlgorithm('CP::AsgEventScaleFactorAlg', self.algName) + alg.particles = particles + alg.preselection = selection + alg.scaleFactorInputDecoration = self.objectSF + alg.scaleFactorOutputDecoration = self.eventSF + + config.addOutputVar('EventInfo', alg.scaleFactorOutputDecoration, + alg.scaleFactorOutputDecoration.split("_%SYS%")[0]) + + def makeCommonServicesConfig( seq ): """Create the common services config"""