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"""