From 6d1759a78dfd03e0b167d611b1108f1c0d2143b9 Mon Sep 17 00:00:00 2001
From: James Robinson <james.em.robinson@gmail.com>
Date: Thu, 8 Mar 2018 17:39:07 +0100
Subject: [PATCH] Improved parameter logging. Added VBF_W, VBF_Z, Wjj and Zjj
 process (only VBF_W is validated). Support for many updates in process
 version. 2016-02-01 15:48:41. (PowhegControl-00-02-17)

Former-commit-id: aefcf69e6b91758752d84d8b95471b582dcb2e44
---
 Generators/PowhegControl/CMakeLists.txt       |  11 --
 ...01010.PowhegPythia8_AU2CT10_Wjj_example.py |  21 ++++
 ...01010.PowhegPythia8_AU2CT10_Zjj_example.py |  21 ++++
 ...gPythia8EvtGen_A14NNPDF23_VBF_W_example.py |  20 ++++
 ...gPythia8EvtGen_A14NNPDF23_VBF_Z_example.py |  20 ++++
 ...hegPythia8EvtGen_A14NNPDF23_Wjj_example.py |  20 ++++
 ...hegPythia8EvtGen_A14NNPDF23_Zjj_example.py |  20 ++++
 .../PowhegControl/python/DecoratorFactory.py  |  60 ++--------
 .../PowhegControl/python/PowhegConfig_base.py |  45 ++++----
 .../decorators/AnomalousCouplingDecorator.py  |  14 +--
 .../python/decorators/BaseDecorator.py        | 109 ++++++++----------
 ...orator.py => BreitWignerWidthDecorator.py} |   8 +-
 .../python/decorators/CKKWDecorator.py        |   2 +-
 .../python/decorators/CKMDecorator.py         |  18 +--
 .../python/decorators/DarkMatterDecorator.py  |   8 +-
 .../decorators/DarkMatterPhiDecorator.py      |   6 +-
 .../python/decorators/DibosonDecorator.py     |   6 +-
 .../DibosonInterferenceDecorator.py           |   6 +-
 .../decorators/DileptonMassDecorator.py       |  20 ++++
 .../decorators/EWPropertiesDecorator.py       |  30 +++++
 .../python/decorators/ExtraTestsDecorator.py  |   2 +-
 .../python/decorators/FakeVirtualDecorator.py |   2 +-
 .../python/decorators/FixedScaleDecorator.py  |   2 +-
 .../decorators/GenericScaleDecorator.py       |  21 ++++
 .../python/decorators/HVJDecorator.py         |  25 ----
 .../python/decorators/HeavyQuarkDecorator.py  |   2 +-
 .../decorators/HiggsDecayModeDecorator.py     |   2 +-
 .../HiggsDecayPropertiesDecorator.py          |  10 +-
 .../decorators/HiggsFixedWidthDecorator.py    |   2 +-
 .../decorators/HiggsMassWindowDecorator.py    |  21 ----
 .../decorators/HiggsPropertiesDecorator.py    |   4 +-
 .../decorators/HiggsVectorBosonDecorator.py   |  23 ++++
 .../HiggsVectorBosonJetDecorator.py           |  28 +++++
 .../python/decorators/ISRFSRDecorator.py      |  23 ++++
 .../python/decorators/JacsingDecorator.py     |   2 +-
 .../python/decorators/LHEv3Decorator.py       |  21 ----
 .../python/decorators/LeptonMassDecorator.py  |  13 ++-
 .../python/decorators/MassWindowDecorator.py  |   8 +-
 .../python/decorators/MiNLONLLDecorator.py    |   8 +-
 .../decorators/NNLOReweightingDecorator.py    |   4 +-
 .../python/decorators/OldDijDecorator.py      |  20 ++++
 .../decorators/PDFReweightingDecorator.py     |  21 ++++
 .../RadiationParametrisationDecorator.py      |   4 +-
 .../decorators/RunningScaleDecorator.py       |   5 +-
 .../decorators/RunningScalesDecorator.py      |   2 +-
 .../decorators/RunningWidthDecorator.py       |   3 +-
 .../SecondGenerationQuarkMassDecorator.py     |  10 +-
 .../decorators/SemileptonicDecorator.py       |   2 +-
 .../python/decorators/Sin2ThetaWDecorator.py  |   2 +-
 .../python/decorators/SingleTopDecorator.py   |  24 ----
 .../decorators/SingleVectorBosonDecorator.py  |  26 -----
 .../decorators/TopDecayBranchingDecorator.py  |  12 +-
 .../decorators/TopDecayModeDecorator.py       |   2 +-
 .../TopDecaySecondGenerationQuarkDecorator.py |  22 ----
 ...Decorator.py => TopPropertiesDecorator.py} |  14 ++-
 .../python/decorators/UpperBoundDecorator.py  |  29 +++++
 .../python/decorators/V2Decorator.py          |  57 +++++----
 .../decorators/VBFVectorBosonDecorator.py     |  67 +++++++++++
 .../python/decorators/VPlusJetsDecorator.py   |  23 ----
 ...or.py => VectorBosonDecayModeDecorator.py} |   8 +-
 .../decorators/VectorBosonJetJetDecorator.py  |  23 ++++
 .../python/decorators/WDecayModeDecorator.py  |   2 +-
 .../python/decorators/WIDDecorator.py         |   2 +-
 .../python/decorators/WMassWindowDecorator.py |   8 +-
 .../python/decorators/WWDecayDecorator.py     |   4 +-
 .../python/decorators/ZMassWindowDecorator.py |   8 +-
 .../python/decorators/ZeroWidthDecorator.py   |   2 +-
 .../python/decorators/__init__.py             |  24 ++--
 .../python/processes/PowhegConfig_DMGG.py     |  14 ++-
 .../processes/PowhegConfig_DMS_tloop.py       |   6 +-
 .../python/processes/PowhegConfig_DMV.py      |  15 ++-
 .../python/processes/PowhegConfig_HWj.py      |  17 +--
 .../python/processes/PowhegConfig_HZj.py      |  32 ++---
 .../python/processes/PowhegConfig_Hj.py       |  16 ++-
 .../python/processes/PowhegConfig_Hjj.py      |   9 +-
 .../python/processes/PowhegConfig_VBF_H.py    |   8 +-
 .../python/processes/PowhegConfig_VBF_W.py    |  43 +++++++
 .../python/processes/PowhegConfig_VBF_Z.py    |  47 ++++++++
 .../python/processes/PowhegConfig_VBF_ssWW.py |  12 +-
 .../python/processes/PowhegConfig_W.py        |   9 +-
 .../python/processes/PowhegConfig_WW.py       |   5 +-
 .../python/processes/PowhegConfig_WZ.py       |   6 +-
 .../python/processes/PowhegConfig_Wj.py       |  14 ++-
 .../python/processes/PowhegConfig_Wjj.py      |  58 ++++++++++
 .../python/processes/PowhegConfig_Wt_DR.py    |  12 +-
 .../python/processes/PowhegConfig_Wt_DS.py    |  18 +--
 .../python/processes/PowhegConfig_Z.py        |   9 +-
 .../python/processes/PowhegConfig_ZZ.py       |   8 +-
 .../python/processes/PowhegConfig_Zj.py       |  20 ++--
 .../python/processes/PowhegConfig_Zjj.py      |  60 ++++++++++
 .../python/processes/PowhegConfig_bb.py       |   8 +-
 .../python/processes/PowhegConfig_ggF_H.py    |  19 +--
 .../python/processes/PowhegConfig_ggF_HZ.py   |   7 +-
 .../python/processes/PowhegConfig_jj.py       |  15 ++-
 .../python/processes/PowhegConfig_jjj.py      |  40 ++++---
 .../python/processes/PowhegConfig_ssWWjj.py   |  27 +++--
 .../python/processes/PowhegConfig_t_sch.py    |   9 +-
 .../python/processes/PowhegConfig_tt.py       |  29 +++--
 .../python/processes/PowhegConfig_ttH.py      |  11 +-
 .../python/processes/PowhegConfig_ttj.py      |  61 +++++-----
 .../python/processes/__init__.py              |   4 +
 .../python/utility/IntegrationGridTester.py   |  19 +--
 .../python/utility/LHEHandler.py              |   2 +-
 .../python/utility/NonBlockingStreamReader.py |   7 +-
 .../python/utility/ProcessHandling.py         |   6 +-
 .../share/PowhegControl_VBF_W_Common.py       |   6 +
 .../share/PowhegControl_VBF_Z_Common.py       |   6 +
 .../share/PowhegControl_Wjj_Common.py         |   6 +
 .../share/PowhegControl_Zjj_Common.py         |   6 +
 109 files changed, 1194 insertions(+), 646 deletions(-)
 delete mode 100644 Generators/PowhegControl/CMakeLists.txt
 create mode 100644 Generators/PowhegControl/examples/MC12_examples/MC12.101010.PowhegPythia8_AU2CT10_Wjj_example.py
 create mode 100644 Generators/PowhegControl/examples/MC12_examples/MC12.101010.PowhegPythia8_AU2CT10_Zjj_example.py
 create mode 100644 Generators/PowhegControl/examples/MC15_examples/MC15.101010.PowhegPythia8EvtGen_A14NNPDF23_VBF_W_example.py
 create mode 100644 Generators/PowhegControl/examples/MC15_examples/MC15.101010.PowhegPythia8EvtGen_A14NNPDF23_VBF_Z_example.py
 create mode 100644 Generators/PowhegControl/examples/MC15_examples/MC15.101010.PowhegPythia8EvtGen_A14NNPDF23_Wjj_example.py
 create mode 100644 Generators/PowhegControl/examples/MC15_examples/MC15.101010.PowhegPythia8EvtGen_A14NNPDF23_Zjj_example.py
 rename Generators/PowhegControl/python/decorators/{HPlusJetsDecorator.py => BreitWignerWidthDecorator.py} (65%)
 create mode 100644 Generators/PowhegControl/python/decorators/DileptonMassDecorator.py
 create mode 100644 Generators/PowhegControl/python/decorators/EWPropertiesDecorator.py
 create mode 100644 Generators/PowhegControl/python/decorators/GenericScaleDecorator.py
 delete mode 100644 Generators/PowhegControl/python/decorators/HVJDecorator.py
 delete mode 100644 Generators/PowhegControl/python/decorators/HiggsMassWindowDecorator.py
 create mode 100644 Generators/PowhegControl/python/decorators/HiggsVectorBosonDecorator.py
 create mode 100644 Generators/PowhegControl/python/decorators/HiggsVectorBosonJetDecorator.py
 create mode 100644 Generators/PowhegControl/python/decorators/ISRFSRDecorator.py
 delete mode 100644 Generators/PowhegControl/python/decorators/LHEv3Decorator.py
 create mode 100644 Generators/PowhegControl/python/decorators/OldDijDecorator.py
 create mode 100644 Generators/PowhegControl/python/decorators/PDFReweightingDecorator.py
 delete mode 100644 Generators/PowhegControl/python/decorators/SingleTopDecorator.py
 delete mode 100644 Generators/PowhegControl/python/decorators/SingleVectorBosonDecorator.py
 delete mode 100644 Generators/PowhegControl/python/decorators/TopDecaySecondGenerationQuarkDecorator.py
 rename Generators/PowhegControl/python/decorators/{TopMassDecorator.py => TopPropertiesDecorator.py} (54%)
 create mode 100644 Generators/PowhegControl/python/decorators/UpperBoundDecorator.py
 create mode 100644 Generators/PowhegControl/python/decorators/VBFVectorBosonDecorator.py
 delete mode 100644 Generators/PowhegControl/python/decorators/VPlusJetsDecorator.py
 rename Generators/PowhegControl/python/decorators/{VectorBosonDecayDecorator.py => VectorBosonDecayModeDecorator.py} (58%)
 create mode 100644 Generators/PowhegControl/python/decorators/VectorBosonJetJetDecorator.py
 create mode 100644 Generators/PowhegControl/python/processes/PowhegConfig_VBF_W.py
 create mode 100644 Generators/PowhegControl/python/processes/PowhegConfig_VBF_Z.py
 create mode 100644 Generators/PowhegControl/python/processes/PowhegConfig_Wjj.py
 create mode 100644 Generators/PowhegControl/python/processes/PowhegConfig_Zjj.py
 create mode 100644 Generators/PowhegControl/share/PowhegControl_VBF_W_Common.py
 create mode 100644 Generators/PowhegControl/share/PowhegControl_VBF_Z_Common.py
 create mode 100644 Generators/PowhegControl/share/PowhegControl_Wjj_Common.py
 create mode 100644 Generators/PowhegControl/share/PowhegControl_Zjj_Common.py

diff --git a/Generators/PowhegControl/CMakeLists.txt b/Generators/PowhegControl/CMakeLists.txt
deleted file mode 100644
index eb94633ca6d61..0000000000000
--- a/Generators/PowhegControl/CMakeLists.txt
+++ /dev/null
@@ -1,11 +0,0 @@
-################################################################################
-# Package: PowhegControl
-################################################################################
-
-# Declare the package name:
-atlas_subdir( PowhegControl )
-
-# Install files from the package:
-atlas_install_python_modules( python/*.py python/decorators python/processes python/strategies python/utility )
-atlas_install_joboptions( share/*.py )
-
diff --git a/Generators/PowhegControl/examples/MC12_examples/MC12.101010.PowhegPythia8_AU2CT10_Wjj_example.py b/Generators/PowhegControl/examples/MC12_examples/MC12.101010.PowhegPythia8_AU2CT10_Wjj_example.py
new file mode 100644
index 0000000000000..649597c5d51ee
--- /dev/null
+++ b/Generators/PowhegControl/examples/MC12_examples/MC12.101010.PowhegPythia8_AU2CT10_Wjj_example.py
@@ -0,0 +1,21 @@
+# Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+
+#--------------------------------------------------------------
+# Powheg Wj setup starting from ATLAS defaults
+#--------------------------------------------------------------
+include('PowhegControl/PowhegControl_Wjj_Common.py')
+PowhegConfig.generate()
+
+#--------------------------------------------------------------
+# Pythia8 showering with main31 and CTEQ6L1
+#--------------------------------------------------------------
+include('MC12JobOptions/Pythia8_AU2_CTEQ6L1_Common.py')
+include('MC12JobOptions/Pythia8_Powheg_Main31.py')
+
+#--------------------------------------------------------------
+# EVGEN configuration
+#--------------------------------------------------------------
+evgenConfig.description = 'POWHEG+Pythia8 W+jj production with AU2 CT10 tune'
+evgenConfig.keywords    = [ 'SM', 'W', 'jet' ]
+evgenConfig.contact     = [ 'james.robinson@cern.ch' ]
+evgenConfig.generators += [ 'Powheg', 'Pythia8' ]
diff --git a/Generators/PowhegControl/examples/MC12_examples/MC12.101010.PowhegPythia8_AU2CT10_Zjj_example.py b/Generators/PowhegControl/examples/MC12_examples/MC12.101010.PowhegPythia8_AU2CT10_Zjj_example.py
new file mode 100644
index 0000000000000..4e89a991535c3
--- /dev/null
+++ b/Generators/PowhegControl/examples/MC12_examples/MC12.101010.PowhegPythia8_AU2CT10_Zjj_example.py
@@ -0,0 +1,21 @@
+# Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+
+#--------------------------------------------------------------
+# Powheg Zj setup starting from ATLAS defaults
+#--------------------------------------------------------------
+include('PowhegControl/PowhegControl_Zjj_Common.py')
+PowhegConfig.generate()
+
+#--------------------------------------------------------------
+# Pythia8 showering with main31 and CTEQ6L1
+#--------------------------------------------------------------
+include('MC12JobOptions/Pythia8_AU2_CTEQ6L1_Common.py')
+include('MC12JobOptions/Pythia8_Powheg_Main31.py')
+
+#--------------------------------------------------------------
+# EVGEN configuration
+#--------------------------------------------------------------
+evgenConfig.description = 'POWHEG+Pythia8 Z+jj production with AU2 CT10 tune'
+evgenConfig.keywords    = [ 'SM', 'Z', 'jet' ]
+evgenConfig.contact     = [ 'james.robinson@cern.ch' ]
+evgenConfig.generators += [ 'Powheg', 'Pythia8' ]
diff --git a/Generators/PowhegControl/examples/MC15_examples/MC15.101010.PowhegPythia8EvtGen_A14NNPDF23_VBF_W_example.py b/Generators/PowhegControl/examples/MC15_examples/MC15.101010.PowhegPythia8EvtGen_A14NNPDF23_VBF_W_example.py
new file mode 100644
index 0000000000000..554fd65ac0ec1
--- /dev/null
+++ b/Generators/PowhegControl/examples/MC15_examples/MC15.101010.PowhegPythia8EvtGen_A14NNPDF23_VBF_W_example.py
@@ -0,0 +1,20 @@
+# Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+
+#--------------------------------------------------------------
+# Powheg VBF W setup starting from ATLAS defaults
+#--------------------------------------------------------------
+include('PowhegControl/PowhegControl_VBF_W_Common.py')
+PowhegConfig.generate()
+
+#--------------------------------------------------------------
+# Pythia8 showering with the A14 NNPDF2.3 tune
+#--------------------------------------------------------------
+include('MC15JobOptions/Pythia8_A14_NNPDF23LO_EvtGen_Common.py')
+include('MC15JobOptions/Pythia8_Powheg.py')
+
+#--------------------------------------------------------------
+# EVGEN configuration
+#--------------------------------------------------------------
+evgenConfig.description = 'POWHEG+Pythia8 VBF W production with A14 NNPDF2.3 tune'
+evgenConfig.keywords    = [ 'SM', 'VBF', 'W' ]
+evgenConfig.contact     = [ 'james.robinson@cern.ch' ]
diff --git a/Generators/PowhegControl/examples/MC15_examples/MC15.101010.PowhegPythia8EvtGen_A14NNPDF23_VBF_Z_example.py b/Generators/PowhegControl/examples/MC15_examples/MC15.101010.PowhegPythia8EvtGen_A14NNPDF23_VBF_Z_example.py
new file mode 100644
index 0000000000000..5fa0d9d40cdd5
--- /dev/null
+++ b/Generators/PowhegControl/examples/MC15_examples/MC15.101010.PowhegPythia8EvtGen_A14NNPDF23_VBF_Z_example.py
@@ -0,0 +1,20 @@
+# Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+
+#--------------------------------------------------------------
+# Powheg VBF Z setup starting from ATLAS defaults
+#--------------------------------------------------------------
+include('PowhegControl/PowhegControl_VBF_Z_Common.py')
+PowhegConfig.generate()
+
+#--------------------------------------------------------------
+# Pythia8 showering with the A14 NNPDF2.3 tune
+#--------------------------------------------------------------
+include('MC15JobOptions/Pythia8_A14_NNPDF23LO_EvtGen_Common.py')
+include('MC15JobOptions/Pythia8_Powheg.py')
+
+#--------------------------------------------------------------
+# EVGEN configuration
+#--------------------------------------------------------------
+evgenConfig.description = 'POWHEG+Pythia8 VBF Z production with A14 NNPDF2.3 tune'
+evgenConfig.keywords    = [ 'SM', 'VBF', 'Z' ]
+evgenConfig.contact     = [ 'james.robinson@cern.ch' ]
diff --git a/Generators/PowhegControl/examples/MC15_examples/MC15.101010.PowhegPythia8EvtGen_A14NNPDF23_Wjj_example.py b/Generators/PowhegControl/examples/MC15_examples/MC15.101010.PowhegPythia8EvtGen_A14NNPDF23_Wjj_example.py
new file mode 100644
index 0000000000000..c22a9c5a7b246
--- /dev/null
+++ b/Generators/PowhegControl/examples/MC15_examples/MC15.101010.PowhegPythia8EvtGen_A14NNPDF23_Wjj_example.py
@@ -0,0 +1,20 @@
+# Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+
+#--------------------------------------------------------------
+# Powheg Wj setup starting from ATLAS defaults
+#--------------------------------------------------------------
+include('PowhegControl/PowhegControl_Wjj_Common.py')
+PowhegConfig.generate()
+
+#--------------------------------------------------------------
+# Pythia8 showering with the A14 NNPDF2.3 tune
+#--------------------------------------------------------------
+include('MC15JobOptions/Pythia8_A14_NNPDF23LO_EvtGen_Common.py')
+include('MC15JobOptions/Pythia8_Powheg.py')
+
+#--------------------------------------------------------------
+# EVGEN configuration
+#--------------------------------------------------------------
+evgenConfig.description = 'POWHEG+Pythia8 W+jj production with A14 NNPDF2.3 tune'
+evgenConfig.keywords    = [ 'SM', 'W', '2jet' ]
+evgenConfig.contact     = [ 'james.robinson@cern.ch' ]
diff --git a/Generators/PowhegControl/examples/MC15_examples/MC15.101010.PowhegPythia8EvtGen_A14NNPDF23_Zjj_example.py b/Generators/PowhegControl/examples/MC15_examples/MC15.101010.PowhegPythia8EvtGen_A14NNPDF23_Zjj_example.py
new file mode 100644
index 0000000000000..61fdf6c8e99a9
--- /dev/null
+++ b/Generators/PowhegControl/examples/MC15_examples/MC15.101010.PowhegPythia8EvtGen_A14NNPDF23_Zjj_example.py
@@ -0,0 +1,20 @@
+# Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+
+#--------------------------------------------------------------
+# Powheg Zj setup starting from ATLAS defaults
+#--------------------------------------------------------------
+include('PowhegControl/PowhegControl_Zjj_Common.py')
+PowhegConfig.generate()
+
+#--------------------------------------------------------------
+# Pythia8 showering with the A14 NNPDF2.3 tune
+#--------------------------------------------------------------
+include('MC15JobOptions/Pythia8_A14_NNPDF23LO_EvtGen_Common.py')
+include('MC15JobOptions/Pythia8_Powheg.py')
+
+#--------------------------------------------------------------
+# EVGEN configuration
+#--------------------------------------------------------------
+evgenConfig.description = 'POWHEG+Pythia8 Z+jj production with A14 NNPDF2.3 tune'
+evgenConfig.keywords    = [ 'SM', 'Z', '2jet' ]
+evgenConfig.contact     = [ 'james.robinson@cern.ch' ]
diff --git a/Generators/PowhegControl/python/DecoratorFactory.py b/Generators/PowhegControl/python/DecoratorFactory.py
index 625f572413a4c..d6962687ccc27 100644
--- a/Generators/PowhegControl/python/DecoratorFactory.py
+++ b/Generators/PowhegControl/python/DecoratorFactory.py
@@ -6,56 +6,16 @@
 #  Authors: James Robinson  <james.robinson@cern.ch>
 
 #! /usr/bin/env python
-from decorators import *
+import decorators
 
 def decorate( powheg_controller, decorator, **kwargs ) :
   ## Initialise correct decorator for Powheg configurable
-  if decorator == AnomalousCouplingDecorator.name : AnomalousCouplingDecorator(powheg_controller, **kwargs)
-  elif decorator == BaseDecorator.name : BaseDecorator(powheg_controller, **kwargs)
-  elif decorator == CKKWDecorator.name : CKKWDecorator(powheg_controller, **kwargs)
-  elif decorator == CKMDecorator.name : CKMDecorator(powheg_controller, **kwargs)
-  elif decorator == DarkMatterDecorator.name : DarkMatterDecorator(powheg_controller, **kwargs)
-  elif decorator == DarkMatterPhiDecorator.name : DarkMatterPhiDecorator(powheg_controller, **kwargs)
-  elif decorator == DibosonDecorator.name : DibosonDecorator(powheg_controller, **kwargs)
-  elif decorator == DibosonInterferenceDecorator.name : DibosonInterferenceDecorator(powheg_controller, **kwargs)
-  elif decorator == ExtraTestsDecorator.name : ExtraTestsDecorator(powheg_controller, **kwargs)
-  elif decorator == FakeVirtualDecorator.name : FakeVirtualDecorator(powheg_controller, **kwargs)
-  elif decorator == FixedScaleDecorator.name : FixedScaleDecorator(powheg_controller, **kwargs)
-  elif decorator == HeavyQuarkDecorator.name : HeavyQuarkDecorator(powheg_controller, **kwargs)
-  elif decorator == HiggsDecayModeDecorator.name : HiggsDecayModeDecorator(powheg_controller, **kwargs)
-  elif decorator == HiggsDecayPropertiesDecorator.name : HiggsDecayPropertiesDecorator(powheg_controller, **kwargs)
-  elif decorator == HiggsFixedWidthDecorator.name : HiggsFixedWidthDecorator(powheg_controller, **kwargs)
-  elif decorator == HiggsMassWindowDecorator.name : HiggsMassWindowDecorator(powheg_controller, **kwargs)
-  elif decorator == HiggsPropertiesDecorator.name : HiggsPropertiesDecorator(powheg_controller, **kwargs)
-  elif decorator == HPlusJetsDecorator.name : HPlusJetsDecorator(powheg_controller, **kwargs)
-  elif decorator == HVJDecorator.name : HVJDecorator(powheg_controller, **kwargs)
-  elif decorator == JacsingDecorator.name : JacsingDecorator(powheg_controller, **kwargs)
-  elif decorator == LeptonMassDecorator.name : LeptonMassDecorator(powheg_controller, **kwargs)
-  elif decorator == LHEv3Decorator.name : LHEv3Decorator(powheg_controller, **kwargs)
-  elif decorator == MassWindowDecorator.name : MassWindowDecorator(powheg_controller, **kwargs)
-  elif decorator == MiNLONLLDecorator.name : MiNLONLLDecorator(powheg_controller, **kwargs)
-  elif decorator == NNLOReweightingDecorator.name : NNLOReweightingDecorator(powheg_controller, **kwargs)
-  elif decorator == RadiationParametrisationDecorator.name : RadiationParametrisationDecorator(powheg_controller, **kwargs)
-  elif decorator == RunningScaleDecorator.name : RunningScaleDecorator(powheg_controller, **kwargs)
-  elif decorator == RunningScalesDecorator.name : RunningScalesDecorator(powheg_controller, **kwargs)
-  elif decorator == RunningWidthDecorator.name : RunningWidthDecorator(powheg_controller, **kwargs)
-  elif decorator == SecondGenerationQuarkMassDecorator.name : SecondGenerationQuarkMassDecorator(powheg_controller, **kwargs)
-  elif decorator == SemileptonicDecorator.name : SemileptonicDecorator(powheg_controller, **kwargs)
-  elif decorator == Sin2ThetaWDecorator.name : Sin2ThetaWDecorator(powheg_controller, **kwargs)
-  elif decorator == SingleTopDecorator.name : SingleTopDecorator(powheg_controller, **kwargs)
-  elif decorator == SingleVectorBosonDecorator.name : SingleVectorBosonDecorator(powheg_controller, **kwargs)
-  elif decorator == TopDecayBranchingDecorator.name : TopDecayBranchingDecorator(powheg_controller, **kwargs)
-  elif decorator == TopDecayModeDecorator.name : TopDecayModeDecorator(powheg_controller, **kwargs)
-  elif decorator == TopDecaySecondGenerationQuarkDecorator.name : TopDecaySecondGenerationQuarkDecorator(powheg_controller, **kwargs)
-  elif decorator == TopMassDecorator.name : TopMassDecorator(powheg_controller, **kwargs)
-  elif decorator == VectorBosonDecayDecorator.name : VectorBosonDecayDecorator(powheg_controller, **kwargs)
-  elif decorator == V2Decorator.name : V2Decorator(powheg_controller, **kwargs)
-  elif decorator == VPlusJetsDecorator.name : VPlusJetsDecorator(powheg_controller, **kwargs)
-  elif decorator == WIDDecorator.name : WIDDecorator(powheg_controller, **kwargs)
-  elif decorator == WDecayModeDecorator.name : WDecayModeDecorator(powheg_controller, **kwargs)
-  elif decorator == WMassWindowDecorator.name : WMassWindowDecorator(powheg_controller, **kwargs)
-  elif decorator == WWDecayDecorator.name : WWDecayDecorator(powheg_controller, **kwargs)
-  elif decorator == ZeroWidthDecorator.name : ZeroWidthDecorator(powheg_controller, **kwargs)
-  elif decorator == ZMassWindowDecorator.name : ZMassWindowDecorator(powheg_controller, **kwargs)
-  else :
-    powheg_controller.logger.warning( 'Unknown decorator: {0}'.format(decorator) )
+  decorator_name_to_class_name = dict([(cls.name, name) for name, cls in decorators.__dict__.items() if isinstance(cls, type)])
+  try :
+    powheg_controller.logger.debug( 'Applying decorator: {0}'.format(decorator) )
+    getattr(decorators,decorator_name_to_class_name[decorator])( powheg_controller, **kwargs )
+  except KeyError :
+    powheg_controller.logger.info( 'Known decorators are: {0}'.format(sorted(decorator_name_to_class_name.keys())) )
+    raise KeyError( 'Unknown decorator: {0}'.format(decorator) )
+  except TypeError :
+    raise TypeError( 'Decorator: {0} needs additional arguments'.format(decorator) )
diff --git a/Generators/PowhegControl/python/PowhegConfig_base.py b/Generators/PowhegControl/python/PowhegConfig_base.py
index deba27c5afa18..5958ba3889525 100644
--- a/Generators/PowhegControl/python/PowhegConfig_base.py
+++ b/Generators/PowhegControl/python/PowhegConfig_base.py
@@ -82,7 +82,7 @@ class PowhegConfig_base(object) :
     # Enable parallel mode if AthenaMP mode is enabled
     self.__n_cores = int( os.environ.pop('ATHENA_PROC_NUMBER',1) )
     if self.cores > 1 :
-      self.logger.info( 'This job is running with an athenaMP-like whole-node setup.' )
+      self.logger.info( 'This job is running with an athenaMP-like whole-node setup, requesting {0} cores'.format( self.cores ) )
       self.manyseeds = 1
       # Try to modify the transform opts to suppress athenaMP mode
       if hasattr(opts,'nprocs') :
@@ -112,11 +112,12 @@ class PowhegConfig_base(object) :
 
     # Scale-down number of events produced in each run if running in multicore mode
     if self.cores > 1 :
+      self.logger.info( 'Preparing to parallelise: running with {0} jobs'.format( self.cores ) )
       self.nEvents_unscaled = self.nEvents
-      self.nEvents = int( 0.5 + self.nEvents / self.cores )
-      self.ncall1 = int( 0.5 + self.ncall1 / self.cores )
-      self.ncall2 = int( 0.5 + self.ncall2 / self.cores )
-      self.nubound = int( 0.5 + self.nubound / self.cores )
+      self.nEvents = int( 0.5 + float(self.nEvents) / self.cores )
+      self.ncall1 = int( 0.5 + float(self.ncall1) / self.cores )
+      self.ncall2 = int( 0.5 + float(self.ncall2) / self.cores )
+      self.nubound = int( 0.5 + float(self.nubound) / self.cores )
       self.logger.info( 'Scaling number of events per job from {0} down to {1}'.format(self.nEvents_unscaled, self.nEvents) )
 
     # Finalise registered decorators
@@ -142,7 +143,7 @@ class PowhegConfig_base(object) :
         if isinstance(value,list) :
           value = value[0]
           self.__enable_reweighting = True
-        output_line = '{0:<30}! [ATLAS default: {1}] {2}'.format( '{0} {1}'.format( name, value ), default, desc )
+        output_line = '{0:<30}! [ATLAS default: {1}] {2}'.format( '{0} {1}'.format(name,value), default, desc )
         f.write( '{0}\n'.format(output_line) )
         # Print warnings for specific parameters
         if name == 'bornsuppfact' and value > 0 :
@@ -176,16 +177,21 @@ class PowhegConfig_base(object) :
     # Print timing information
     generation_end = time.time()
     elapsed_time = generation_end - time_start
-    self.logger.info( 'Running nominal Powheg took {0} for {1} events => {2:6.3f} Hz'.format( RepeatingTimer.human_readable_time_interval(elapsed_time), self.nEvents, self.nEvents / elapsed_time ) )
+    self.logger.info( 'Running nominal Powheg took {0} for {1} events => {2:6.4f} Hz'.format( RepeatingTimer.human_readable_time_interval(elapsed_time), self.nEvents, self.nEvents / elapsed_time ) )
 
     # Concatenate output events if running in multicore mode
     if self.cores > 1 :
-      self.logger.info( 'Concatenating {0} output LHE files'.format( self.cores ) )
+      self.logger.info( 'Concatenating output LHE files: expecting {0}'.format( self.cores ) )
       LHEHandler(self.logger).merge( 'pwgevents.lhe', sorted( glob.glob('pwgevents*.lhe') ) )
       subprocess.call( 'rm pwgevents-*.lhe 2> /dev/null', shell=True )
       # Unscale nEvents in case this is needed by afterburners
       subprocess.call( 'sed -i "s/numevts.*/numevts {0}/g" powheg*.input'.format(self.nEvents_unscaled), shell=True )
 
+    # Check for required output file
+    if not os.path.isfile('pwgevents.lhe') :
+      self.logger.warning( 'No output LHEF file found! Probably because the Powheg process was killed before finishing.' )
+      raise RuntimeError( 'No output LHEF file produced by Powheg. Terminating job.' )
+
     # Run Powheg afterburners
     self.__run_afterburners()
     elapsed_time = time.time() - generation_end
@@ -197,6 +203,7 @@ class PowhegConfig_base(object) :
       self.logger.info( 'Moved pwgevents.lhe to {0}'.format(self.output_events_file_name) )
     except OSError :
       self.logger.warning( 'No output LHEF file found! Probably because the Powheg process was killed before finishing.' )
+      raise RuntimeError( 'No output LHEF file produced by Powheg. Terminating job.' )
 
     # Tar events if LHE output is requested
     if self.output_tarball_name is not None :
@@ -249,10 +256,10 @@ class PowhegConfig_base(object) :
   #  @param value Value of the parameter
   #  @param desc Description for the run card
   #  @param parameter Name used in the run card if different
-  def add_parameter( self, configurable_name, value, default='', desc='', parameter=None ) :
+  def add_parameter( self, configurable_name, value, desc='', parameter=None ) :
     setattr( self, configurable_name, value ) # add new attribute
     powheg_parameter = parameter if parameter is not None else configurable_name
-    self.configurable_parameters[powheg_parameter] = [configurable_name, default, desc]
+    self.configurable_parameters[powheg_parameter] = [configurable_name, '-', desc]
     return
 
 
@@ -260,9 +267,9 @@ class PowhegConfig_base(object) :
   #  @param configurable_name Configurable parameter name exposed to the user
   #  @param value Value of the parameter
   #  @param desc Description for the run card
-  def add_phantom( self, configurable_name, value, default='', desc='' ) :
+  def add_phantom( self, configurable_name, value, desc='' ) :
     setattr( self, configurable_name, value ) # add new attribute
-    self.phantom_parameters[configurable_name] = [configurable_name, default, desc]
+    self.phantom_parameters[configurable_name] = [configurable_name, '-', desc]
     return
 
 
@@ -270,14 +277,14 @@ class PowhegConfig_base(object) :
   #  @param non_configurable_name Parameter name
   #  @param value Value of the parameter
   #  @param desc Description for the run card
-  def fix_parameter( self, non_configurable_name, value=None, default='', desc='' ) :
+  def fix_parameter( self, non_configurable_name, value=None, desc='', default='-' ) :
     # Get previously set value if not overwriting
     if value is None : value = getattr( self, non_configurable_name )
     # Remove it from the configurable list if it was there
     for powheg_parameter, configurable_list in self.configurable_parameters.items() :
       # Retrieve Powheg parameter name and description if there is a match
       if non_configurable_name == configurable_list[0] :
-        non_configurable_name, desc = powheg_parameter, configurable_list[1]
+        non_configurable_name, default, desc = powheg_parameter, configurable_list[1], configurable_list[2]
         self.configurable_parameters.pop(powheg_parameter)
         break
     self.fixed_parameters.append( [non_configurable_name, value, default, desc] )
@@ -297,7 +304,7 @@ class PowhegConfig_base(object) :
     self.logger.info( 'Defining new weight group {0} with {1} variations'.format( group_name, len(weight_names) ) )
     self.reweight_groups[group_name] = {}
     parameter_names, parameter_values = [], []
-    for parameter, ( name, desc ) in self.configurable_parameters.items() :
+    for parameter, ( name, default, desc ) in self.configurable_parameters.items() :
       if isinstance( getattr(self,name), list ) :
         if not name in [ 'PDF', 'mu_R', 'mu_F' ] : # these are treated separately
           assert( len(weight_names) == len(getattr(self,name)) ), 'Number of parameter variations must be the same as the number of names provided'
@@ -321,15 +328,13 @@ class PowhegConfig_base(object) :
   def populate_default_strings( self ) :
     # Configurable parameters
     for configurable_list in self.configurable_parameters.values() : # [configurable_name, default, desc]
-      value = getattr( self, configurable_list[0] )
-      if '{0}' in configurable_list[1] : configurable_list[1] = configurable_list[1].format( value )
+      configurable_list[1] = getattr( self, configurable_list[0] )
     # Phantom parameters
     for configurable_list in self.phantom_parameters.values() : # [configurable_name, default, desc]
-      value = getattr( self, configurable_list[0] )
-      if '{0}' in configurable_list[1] : configurable_list[1] = configurable_list[1].format( value )
+      configurable_list[1] = getattr( self, configurable_list[0] )
     # Fixed parameters
     for non_configurable_list in self.fixed_parameters : #[non_configurable_name, value, default, desc]
-      if '{0}' in non_configurable_list[2] : non_configurable_list[2] = non_configurable_list[2].format( non_configurable_list[1] )
+      non_configurable_list[2] = non_configurable_list[1]
     return
 
 
diff --git a/Generators/PowhegControl/python/decorators/AnomalousCouplingDecorator.py b/Generators/PowhegControl/python/decorators/AnomalousCouplingDecorator.py
index 96f6f9bbbcb6a..3f2fc0bab0f85 100644
--- a/Generators/PowhegControl/python/decorators/AnomalousCouplingDecorator.py
+++ b/Generators/PowhegControl/python/decorators/AnomalousCouplingDecorator.py
@@ -17,10 +17,10 @@ class AnomalousCouplingDecorator(object) :
     decorated.run_card_decorators.append( self )
     self.decorated = decorated
 
-    self.decorated.add_parameter( 'delg1_g', 0,   default='{0}', desc='Delta_g1(Gamma)' )
-    self.decorated.add_parameter( 'delg1_z', 0,   default='{0}', desc='Delta_g1(Z)' )
-    self.decorated.add_parameter( 'delk_g', 0,    default='{0}', desc='Delta_K(Gamma)' )
-    self.decorated.add_parameter( 'delk_z', 0,    default='{0}', desc='Delta_K(Z)' )
-    self.decorated.add_parameter( 'lambda_g', 0,  default='{0}', desc='Lambda(gamma)' )
-    self.decorated.add_parameter( 'lambda_z', 0,  default='{0}', desc='Lambda(Z)' )
-    self.decorated.add_parameter( 'tevscale', -1, default='{0}', desc='(-1:use Powheg default) W form-factor scale, in TeV' )
+    self.decorated.add_parameter( 'delg1_g', 0,   desc='Delta_g1(Gamma)' )
+    self.decorated.add_parameter( 'delg1_z', 0,   desc='Delta_g1(Z)' )
+    self.decorated.add_parameter( 'delk_g', 0,    desc='Delta_K(Gamma)' )
+    self.decorated.add_parameter( 'delk_z', 0,    desc='Delta_K(Z)' )
+    self.decorated.add_parameter( 'lambda_g', 0,  desc='Lambda(gamma)' )
+    self.decorated.add_parameter( 'lambda_z', 0,  desc='Lambda(Z)' )
+    self.decorated.add_parameter( 'tevscale', -1, desc='(-1:use Powheg default) W form-factor scale, in TeV' )
diff --git a/Generators/PowhegControl/python/decorators/BaseDecorator.py b/Generators/PowhegControl/python/decorators/BaseDecorator.py
index 688ae7a27e094..1da980756c0cd 100644
--- a/Generators/PowhegControl/python/decorators/BaseDecorator.py
+++ b/Generators/PowhegControl/python/decorators/BaseDecorator.py
@@ -19,79 +19,70 @@ class BaseDecorator(object) :
     self.decorated = decorated
 
     # Beam/event information
-    self.decorated.add_parameter( 'nEvents', 5500,     default='{0}', desc='number of events to be generated', parameter='numevts' )
-    self.decorated.fix_parameter( 'ih1', 1,            default='{0}', desc='(1:proton) type of hadron 1' )
-    self.decorated.fix_parameter( 'ih2', 1,            default='{0}', desc='(1:proton) type of hadron 2' )
-    self.decorated.add_parameter( 'beam_energy', 6500, default='{0}', desc='energy of beam 1 in GeV', parameter='ebeam1' )
-    self.decorated.add_parameter( 'beam_energy', 6500, default='{0}', desc='energy of beam 2 in GeV', parameter='ebeam2' )
+    self.decorated.add_parameter( 'nEvents', 5500,     desc='number of events to be generated', parameter='numevts' )
+    self.decorated.fix_parameter( 'ih1', 1,            desc='(1:proton) type of hadron 1' )
+    self.decorated.fix_parameter( 'ih2', 1,            desc='(1:proton) type of hadron 2' )
+    self.decorated.add_parameter( 'beam_energy', 6500, desc='energy of beam 1 in GeV', parameter='ebeam1' )
+    self.decorated.add_parameter( 'beam_energy', 6500, desc='energy of beam 2 in GeV', parameter='ebeam2' )
     # PDF information
-    self.decorated.add_parameter( 'PDF', 10800,     default='{0}', desc='PDF set for hadron 1 (LHAGLUE numbering)', parameter='lhans1' )
-    self.decorated.add_parameter( 'PDF', 10800,     default='{0}', desc='PDF set for hadron 2 (LHAGLUE numbering)', parameter='lhans2' )
-    self.decorated.fix_parameter( 'pdfreweight', 1, default='{0}', desc='(0:disabled; 1:enabled) store PDF information' )
+    self.decorated.add_parameter( 'PDF', 10800,     desc='PDF set for hadron 1 (LHAGLUE numbering)', parameter='lhans1' )
+    self.decorated.add_parameter( 'PDF', 10800,     desc='PDF set for hadron 2 (LHAGLUE numbering)', parameter='lhans2' )
+    self.decorated.fix_parameter( 'pdfreweight', 1, desc='(0:disabled; 1:enabled) store PDF information' )
     # Random seeds
-    self.decorated.add_parameter( 'manyseeds', 0,   default='{0}', desc='(0:disabled; 1:enabled) read multiple seeds for the random number generator from pwgseeds.dat' )
-    self.decorated.fix_parameter( 'rand1', 0,       default='{0}', desc='(0:disabled; 1:enabled) user-initiated random seed (disabled for reproducibility)' )
-    self.decorated.fix_parameter( 'rand2', 0,       default='{0}', desc='(0:disabled; 1:enabled) user-initiated random seed (disabled for reproducibility)' )
-    self.decorated.add_parameter( 'random_seed', 1, default='{0}', desc='seed for the random number generator', parameter='iseed' )
+    self.decorated.add_parameter( 'manyseeds', 0,   desc='(0:disabled; 1:enabled) read multiple seeds for the random number generator from pwgseeds.dat' )
+    self.decorated.fix_parameter( 'rand1', 0,       desc='(0:disabled; 1:enabled) user-initiated random seed (disabled for reproducibility)' )
+    self.decorated.fix_parameter( 'rand2', 0,       desc='(0:disabled; 1:enabled) user-initiated random seed (disabled for reproducibility)' )
+    self.decorated.add_parameter( 'random_seed', 1, desc='seed for the random number generator', parameter='iseed' )
     # Scale evaluation
-    self.decorated.add_parameter( 'mu_F', 1.0, default='{0}', desc='factorization scale factor: mu_fact = mu_ref * facscfact', parameter='facscfact' )
-    self.decorated.add_parameter( 'mu_R', 1.0, default='{0}', desc='renormalization scale factor: mu_ren = mu_ref * renscfact', parameter='renscfact' )
+    self.decorated.add_parameter( 'mu_F', 1.0, desc='factorization scale factor: mu_fact = mu_ref * facscfact', parameter='facscfact' )
+    self.decorated.add_parameter( 'mu_R', 1.0, desc='renormalization scale factor: mu_ren = mu_ref * renscfact', parameter='renscfact' )
     # Integration parameters:
     #   The total number of calls is ncall2*itmx2*foldcsi*foldy*foldphi, with a typical call using 1/1400 seconds
     # These are optimised in each process to ensure:
     #   Cross section uncertainty < 1% : to reduce, increase ncall1*itmx1 or ncall2*itmx2
     #   Negative weight events    < 1% : to reduce, increase fold parameters
     #   Upper bound failures      < 1% : to reduce, increase nubound, xupbound or ncall2*itmx2
-    self.decorated.add_parameter( 'itmx1', 5,      default='{0}', desc='number of iterations for initializing the integration grid' )
-    self.decorated.add_parameter( 'itmx2', 5,      default='{0}', desc='number of iterations for computing the integral and finding upper bound' )
-    self.decorated.add_parameter( 'ncall1', 10000, default='{0}', desc='number of calls for initializing the integration grid' )
-    self.decorated.add_parameter( 'ncall2', 10000, default='{0}', desc='number of calls for computing the integral and finding upper bound' )
+    self.decorated.add_parameter( 'itmx1', 5,      desc='number of iterations for initializing the integration grid' )
+    self.decorated.add_parameter( 'itmx2', 5,      desc='number of iterations for computing the integral and finding upper bound' )
+    self.decorated.add_parameter( 'ncall1', 10000, desc='number of calls for initializing the integration grid' )
+    self.decorated.add_parameter( 'ncall2', 10000, desc='number of calls for computing the integral and finding upper bound' )
     # Allowed values for folding parameters are 1, 2, 5, 10, 25, 50
-    self.decorated.add_parameter( 'foldx', 1,        default='{0}', desc='number of folds on x (csi) integration', parameter='foldcsi' )
-    self.decorated.add_parameter( 'foldy', 1,        default='{0}', desc='number of folds on y integration' )
-    self.decorated.add_parameter( 'foldphi', 1,      default='{0}', desc='number of folds on phi integration' )
-    self.decorated.fix_parameter( 'use-old-grid', 1, default='{0}', desc='(0:disabled; 1:enabled) use old integration grid if available' )
+    self.decorated.add_parameter( 'foldx', 1,        desc='number of folds on x (csi) integration', parameter='foldcsi' )
+    self.decorated.add_parameter( 'foldy', 1,        desc='number of folds on y integration' )
+    self.decorated.add_parameter( 'foldphi', 1,      desc='number of folds on phi integration' )
+    self.decorated.fix_parameter( 'use-old-grid', 1, desc='(0:disabled; 1:enabled) use old integration grid if available' )
     # Born suppression : may be needed in presence of processes where the Born cross section vanishes in some phase-space region
-    self.decorated.add_parameter( 'bornktmin', -1,                         default='{0}', desc='(-1:use Powheg default) generation cut: minimum kt in underlying Born' )
-    self.decorated.fix_parameter( 'bornonly', [0,1][self.decorated.is_LO], default='{0}', desc='(0:disabled; 1:enabled) calculate only Born-level process' )
-    self.decorated.add_parameter( 'bornsuppfact', -1,                      default='{0}', desc='(-1:use Powheg default) mass parameter for Born suppression factor. If > 0 suppfact = 1' )
-    self.decorated.add_parameter( 'bornzerodamp', 1,                       default='{0}', desc='(0:disabled; 1:enabled) use damping where the Born is strongly suppressed (or 0).' )
-    self.decorated.add_parameter( 'hdamp', -1,                             default='{0}', desc='(-1:use Powheg default) DEPRECATED, apply damping factor for high-pt radiation: h**2/(pt2+h**2)' )
-    self.decorated.add_parameter( 'hfact', -1,                             default='{0}', desc='(-1:use Powheg default) apply dumping factor for high-pt radiation: h**2/(pt2+h**2)' )
-    self.decorated.add_parameter( 'ptsupp', -1,                            default='{0}', desc='(-1:use Powheg default) DEPRECATED, but some processes complain if it is missing' )
-    self.decorated.add_parameter( 'withdamp', -1,                          default='{0}', desc='(-1:use Powheg default) use Born-zero damping factor.' )
-    self.decorated.add_parameter( 'withnegweights', 1,                     default='{0}', desc='(0:disabled; 1:enabled) allow negative weights' )
+    self.decorated.add_parameter( 'bornktmin', -1,                         desc='(-1:use Powheg default) generation cut: minimum kt in underlying Born' )
+    self.decorated.fix_parameter( 'bornonly', [0,1][self.decorated.is_LO], desc='(0:disabled; 1:enabled) calculate only Born-level process' )
+    self.decorated.add_parameter( 'bornsuppfact', -1,                      desc='(-1:use Powheg default) mass parameter for Born suppression factor. If > 0 suppfact = 1' )
+    self.decorated.add_parameter( 'bornzerodamp', 1,                       desc='(0:disabled; 1:enabled) use damping where the Born is strongly suppressed (or 0).' )
+    self.decorated.add_parameter( 'hdamp', -1,                             desc='(-1:use Powheg default) DEPRECATED, apply damping factor for high-pt radiation: h**2/(pt2+h**2)' )
+    self.decorated.add_parameter( 'hfact', -1,                             desc='(-1:use Powheg default) apply dumping factor for high-pt radiation: h**2/(pt2+h**2)' )
+    self.decorated.add_parameter( 'ptsupp', -1,                            desc='(-1:use Powheg default) DEPRECATED, but some processes complain if it is missing' )
+    self.decorated.add_parameter( 'withdamp', -1,                          desc='(-1:use Powheg default) use Born-zero damping factor.' )
+    self.decorated.add_parameter( 'withnegweights', 1,                     desc='(0:disabled; 1:enabled) allow negative weights' )
     # Parton splitting settings
-    self.decorated.add_parameter( 'bottomthr', -1,     default='{0}', desc='(-1:use Powheg default) minimum pT in GeV for generating emission off b-quarks' )
-    self.decorated.add_parameter( 'bottomthrpdf', -1,  default='{0}', desc='(-1:use Powheg default) threshold in GeV at which b-quark PDF becomes non-zero' )
-    self.decorated.add_parameter( 'charmthr', -1,      default='{0}', desc='(-1:use Powheg default) minimum pT in GeV for generating emission off c-quarks' )
-    self.decorated.add_parameter( 'charmthrpdf', -1,   default='{0}', desc='(-1:use Powheg default) threshold in GeV at which c-quark PDF becomes non-zero' )
-    self.decorated.add_parameter( 'par_2gsupp', -1,    default='{0}', desc='(-1:use Powheg default)' )
-    self.decorated.add_parameter( 'par_diexp', -1,     default='{0}', desc='(-1:use Powheg default) ISR singularity exponent (p1)' )
-    self.decorated.add_parameter( 'par_dijexp', -1,    default='{0}', desc='(-1:use Powheg default) FSR singularity exponent (p2)' )
-    self.decorated.add_parameter( 'ptsqmin', -1,       default='{0}', desc='(-1:use Powheg default) minimum pT in GeV for generating emission off light quarks' )
+    self.decorated.add_parameter( 'bottomthr', -1,     desc='(-1:use Powheg default) minimum pT in GeV for generating emission off b-quarks' )
+    self.decorated.add_parameter( 'bottomthrpdf', -1,  desc='(-1:use Powheg default) threshold in GeV at which b-quark PDF becomes non-zero' )
+    self.decorated.add_parameter( 'charmthr', -1,      desc='(-1:use Powheg default) minimum pT in GeV for generating emission off c-quarks' )
+    self.decorated.add_parameter( 'charmthrpdf', -1,   desc='(-1:use Powheg default) threshold in GeV at which c-quark PDF becomes non-zero' )
+    self.decorated.add_parameter( 'par_2gsupp', -1,    desc='(-1:use Powheg default)' )
+    self.decorated.add_parameter( 'par_diexp', -1,     desc='(-1:use Powheg default) ISR singularity exponent (p1)' )
+    self.decorated.add_parameter( 'par_dijexp', -1,    desc='(-1:use Powheg default) FSR singularity exponent (p2)' )
+    self.decorated.add_parameter( 'ptsqmin', -1,       desc='(-1:use Powheg default) minimum pT in GeV for generating emission off light quarks' )
     # Users are asked not to change these, since their invocation is time consuming and/or may cause some conflicts with other settings.
-    self.decorated.fix_parameter( 'iupperisr', 1,  default='{0}', desc='choice of ISR upper bounding functional form' )
-    self.decorated.fix_parameter( 'iupperfsr', 2,  default='{0}', desc='choice of FSR upper bounding functional form' )
-    self.decorated.fix_parameter( 'smartsig', 1,   default='{0}', desc='(0:disabled; 1:enabled) remember equal amplitudes' )
-    self.decorated.fix_parameter( 'testplots', 0,  default='{0}', desc='(0:disabled; 1:enabled) do NLO and PWHG distributions' )
-    self.decorated.fix_parameter( 'testsuda', 0,   default='{0}', desc='(0:disabled; 1:enabled) test Sudakov form factor' )
-    self.decorated.fix_parameter( 'withsubtr', 1,  default='{0}', desc='(0:disabled; 1:enabled) subtract real counterterms' )
+    self.decorated.fix_parameter( 'iupperisr', 1,  desc='choice of ISR upper bounding functional form' )
+    self.decorated.fix_parameter( 'iupperfsr', 2,  desc='choice of FSR upper bounding functional form' )
+    self.decorated.fix_parameter( 'smartsig', 1,   desc='(0:disabled; 1:enabled) remember equal amplitudes' )
+    self.decorated.fix_parameter( 'testplots', 0,  desc='(0:disabled; 1:enabled) do NLO and PWHG distributions' )
+    self.decorated.fix_parameter( 'testsuda', 0,   desc='(0:disabled; 1:enabled) test Sudakov form factor' )
+    self.decorated.fix_parameter( 'withsubtr', 1,  desc='(0:disabled; 1:enabled) subtract real counterterms' )
     # Parameters of unknown use
-    self.decorated.add_parameter( 'flg_debug', 0,       default='{0}', desc='(0:disabled; 1:enabled) write extra information to LHEF. Breaks PYTHIA showering.' )
-    self.decorated.add_parameter( 'colltest', 1,        default='{0}', desc='(0:disabled; 1:enabled) check collinear limits' )
-    self.decorated.add_parameter( 'softtest', 1,        default='{0}', desc='(0:disabled; 1:enabled) check soft limits' )
-    self.decorated.add_parameter( 'ubsigmadetails', 1,  default='{0}', desc='(0:disabled; 1:enabled) output calculated cross-sections' )
-    # Radiation settings for NLO processes
-    if not self.decorated.is_LO :
-      self.decorated.add_parameter( 'btlscalect', 0,     default='{0}', desc='(0:disabled; 1:enabled) use the scales of the underlying-Born configuration for the subtraction terms' )
-      self.decorated.add_parameter( 'btlscalereal', 0,   default='{0}', desc='(0:disabled; 1:enabled) compute scales that depend on the real kinematics' )
-      self.decorated.add_parameter( 'ixmax', 1,          default='{0}', desc='number of intervals (<= 10) in x (csi) grid to compute upper bounds', parameter='icsimax' )
-      self.decorated.add_parameter( 'iymax', 1,          default='{0}', desc='number of intervals (<= 10) in y grid to compute upper bounds' )
-      self.decorated.add_parameter( 'nubound', 10000,    default='{0}', desc='number of calls to setup upper bounds for radiation' )
-      self.decorated.add_parameter( 'radregion', -1,     default='{0}', desc='(-1:all regions) only generate radiation in the selected singular region' )
-      self.decorated.fix_parameter( 'use-old-ubound', 1, default='{0}', desc='(0:disabled; 1:enabled) read norm of upper bounding function from pwgubound.dat, if present' )
-      self.decorated.add_parameter( 'xupbound', 2,       default='{0}', desc='increase upper bound for radiation generation by this factor' )
+    self.decorated.add_parameter( 'flg_debug', 0,       desc='(0:disabled; 1:enabled) write extra information to LHEF. Breaks PYTHIA showering.' )
+    self.decorated.add_parameter( 'colltest', 1,        desc='(0:disabled; 1:enabled) check collinear limits' )
+    self.decorated.add_parameter( 'softtest', 1,        desc='(0:disabled; 1:enabled) check soft limits' )
+    self.decorated.add_parameter( 'ubsigmadetails', 1,  desc='(0:disabled; 1:enabled) output calculated cross-sections' )
+
 
   def finalise(self) :
     # Force parameters to integer values
diff --git a/Generators/PowhegControl/python/decorators/HPlusJetsDecorator.py b/Generators/PowhegControl/python/decorators/BreitWignerWidthDecorator.py
similarity index 65%
rename from Generators/PowhegControl/python/decorators/HPlusJetsDecorator.py
rename to Generators/PowhegControl/python/decorators/BreitWignerWidthDecorator.py
index b97772913ad54..876b530350e01 100644
--- a/Generators/PowhegControl/python/decorators/HPlusJetsDecorator.py
+++ b/Generators/PowhegControl/python/decorators/BreitWignerWidthDecorator.py
@@ -1,20 +1,20 @@
 # Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
 
-## @PowhegControl HPlusJetsDecorator
+## @PowhegControl BreitWignerWidthDecorator
 #  Powheg runcard decorator for Higgs+jets properties
 #
 #  Authors: James Robinson  <james.robinson@cern.ch>
 
 #! /usr/bin/env python
 
-class HPlusJetsDecorator(object) :
+class BreitWignerWidthDecorator(object) :
 
   ## Define decorator name string
-  name = 'H+jets'
+  name = 'Breit-Wigner width'
 
   def __init__( self, decorated ) :
     ## Attach decorations to Powheg configurable
     decorated.run_card_decorators.append( self )
     self.decorated = decorated
 
-    self.decorated.add_parameter( 'bwcutoff', 15, default='{0}', desc='Mass window is hmass +/- bwcutoff * hwidth' )
+    self.decorated.add_parameter( 'bwcutoff', 15, desc='Mass window is hmass +/- bwcutoff * hwidth' )
diff --git a/Generators/PowhegControl/python/decorators/CKKWDecorator.py b/Generators/PowhegControl/python/decorators/CKKWDecorator.py
index 2529e1f535c03..b8fb3af8106b6 100644
--- a/Generators/PowhegControl/python/decorators/CKKWDecorator.py
+++ b/Generators/PowhegControl/python/decorators/CKKWDecorator.py
@@ -17,4 +17,4 @@ class CKKWDecorator(object) :
     decorated.run_card_decorators.append( self )
     self.decorated = decorated
 
-    self.decorated.add_parameter( 'ckkwscalup', 1, default='{0}', desc='(0:use Powheg scalup; 1:CKKW scalup [compute scalup scale for subsequent shower using the smallest kt in the final state])' )
+    self.decorated.add_parameter( 'ckkwscalup', 1, desc='(0:use Powheg scalup; 1:CKKW scalup [compute scalup scale for subsequent shower using the smallest kt in the final state])' )
diff --git a/Generators/PowhegControl/python/decorators/CKMDecorator.py b/Generators/PowhegControl/python/decorators/CKMDecorator.py
index b727e80a031ae..e5f1b14cb8530 100644
--- a/Generators/PowhegControl/python/decorators/CKMDecorator.py
+++ b/Generators/PowhegControl/python/decorators/CKMDecorator.py
@@ -18,12 +18,12 @@ class CKMDecorator(object) :
     decorated.run_card_decorators.append( self )
     self.decorated = decorated
 
-    self.decorated.add_parameter( 'CKM_Vud', ATLASCommonParameters.CKM_Vud, default='{0}', desc='CKM element: Vud' )
-    self.decorated.add_parameter( 'CKM_Vus', ATLASCommonParameters.CKM_Vus, default='{0}', desc='CKM element: Vus' )
-    self.decorated.add_parameter( 'CKM_Vub', ATLASCommonParameters.CKM_Vub, default='{0}', desc='CKM element: Vub' )
-    self.decorated.add_parameter( 'CKM_Vcd', ATLASCommonParameters.CKM_Vcd, default='{0}', desc='CKM element: Vcd' )
-    self.decorated.add_parameter( 'CKM_Vcs', ATLASCommonParameters.CKM_Vcs, default='{0}', desc='CKM element: Vcs' )
-    self.decorated.add_parameter( 'CKM_Vcb', ATLASCommonParameters.CKM_Vcb, default='{0}', desc='CKM element: Vcb' )
-    self.decorated.add_parameter( 'CKM_Vtd', ATLASCommonParameters.CKM_Vtd, default='{0}', desc='CKM element: Vtd' )
-    self.decorated.add_parameter( 'CKM_Vts', ATLASCommonParameters.CKM_Vts, default='{0}', desc='CKM element: Vts' )
-    self.decorated.add_parameter( 'CKM_Vtb', ATLASCommonParameters.CKM_Vtb, default='{0}', desc='CKM element: Vtb' )
+    self.decorated.add_parameter( 'CKM_Vud', ATLASCommonParameters.CKM_Vud, desc='CKM element: Vud' )
+    self.decorated.add_parameter( 'CKM_Vus', ATLASCommonParameters.CKM_Vus, desc='CKM element: Vus' )
+    self.decorated.add_parameter( 'CKM_Vub', ATLASCommonParameters.CKM_Vub, desc='CKM element: Vub' )
+    self.decorated.add_parameter( 'CKM_Vcd', ATLASCommonParameters.CKM_Vcd, desc='CKM element: Vcd' )
+    self.decorated.add_parameter( 'CKM_Vcs', ATLASCommonParameters.CKM_Vcs, desc='CKM element: Vcs' )
+    self.decorated.add_parameter( 'CKM_Vcb', ATLASCommonParameters.CKM_Vcb, desc='CKM element: Vcb' )
+    self.decorated.add_parameter( 'CKM_Vtd', ATLASCommonParameters.CKM_Vtd, desc='CKM element: Vtd' )
+    self.decorated.add_parameter( 'CKM_Vts', ATLASCommonParameters.CKM_Vts, desc='CKM element: Vts' )
+    self.decorated.add_parameter( 'CKM_Vtb', ATLASCommonParameters.CKM_Vtb, desc='CKM element: Vtb' )
diff --git a/Generators/PowhegControl/python/decorators/DarkMatterDecorator.py b/Generators/PowhegControl/python/decorators/DarkMatterDecorator.py
index 696e96a89ca3f..028d162e108a1 100644
--- a/Generators/PowhegControl/python/decorators/DarkMatterDecorator.py
+++ b/Generators/PowhegControl/python/decorators/DarkMatterDecorator.py
@@ -17,7 +17,7 @@ class DarkMatterDecorator(object) :
     decorated.run_card_decorators.append( self )
     self.decorated = decorated
 
-    self.decorated.add_parameter( 'DM_mass', 10,   default='{0}', desc='DM-candidate mass', parameter='DMmass' )
-    self.decorated.add_parameter( 'gDM', 1.0,      default='{0}', desc='X-Xbar-med coupling', parameter='DMgDM' )
-    self.decorated.add_parameter( 'gSM', 1.0,      default='{0}', desc='q-q-med coupling', parameter='DMgSM' )
-    self.decorated.add_parameter( 'idDM', 1000022, default='{0}', desc='PDG ID of DM particles' )
+    self.decorated.add_parameter( 'DM_mass', 10,   desc='DM-candidate mass', parameter='DMmass' )
+    self.decorated.add_parameter( 'gDM', 1.0,      desc='X-Xbar-med coupling', parameter='DMgDM' )
+    self.decorated.add_parameter( 'gSM', 1.0,      desc='q-q-med coupling', parameter='DMgSM' )
+    self.decorated.add_parameter( 'idDM', 1000022, desc='PDG ID of DM particles' )
diff --git a/Generators/PowhegControl/python/decorators/DarkMatterPhiDecorator.py b/Generators/PowhegControl/python/decorators/DarkMatterPhiDecorator.py
index a769d385fdd5b..511eb2a23dde7 100644
--- a/Generators/PowhegControl/python/decorators/DarkMatterPhiDecorator.py
+++ b/Generators/PowhegControl/python/decorators/DarkMatterPhiDecorator.py
@@ -17,6 +17,6 @@ class DarkMatterPhiDecorator(object) :
     decorated.run_card_decorators.append( self )
     self.decorated = decorated
 
-    self.decorated.add_parameter( 'decaymode', -1,     default='{0}', desc='[DMS] 1:S-mediated; 2:PS-mediated fermionic DM; -1,-2 for full theory (mediator mass and width needed); [DMGG] 1:GG-mediated fermionic DM; -1:full theory (mediator mass and width needed)' )
-    self.decorated.add_parameter( 'phi_mass', 100,     default='{0}', desc='mediator mass', parameter='DMphimass' )
-    self.decorated.add_parameter( 'phi_width', 42.494, default='{0}', desc='mediator width', parameter='DMphiwidth' )
+    self.decorated.add_parameter( 'decaymode', -1,     desc='[DMS] 1:S-mediated; 2:PS-mediated fermionic DM; -1,-2 for full theory (mediator mass and width needed); [DMGG] 1:GG-mediated fermionic DM; -1:full theory (mediator mass and width needed)' )
+    self.decorated.add_parameter( 'phi_mass', 100,     desc='mediator mass', parameter='DMphimass' )
+    self.decorated.add_parameter( 'phi_width', 42.494, desc='mediator width', parameter='DMphiwidth' )
diff --git a/Generators/PowhegControl/python/decorators/DibosonDecorator.py b/Generators/PowhegControl/python/decorators/DibosonDecorator.py
index 6cd5ea0be9365..2f389b002cb8d 100644
--- a/Generators/PowhegControl/python/decorators/DibosonDecorator.py
+++ b/Generators/PowhegControl/python/decorators/DibosonDecorator.py
@@ -19,8 +19,8 @@ class DibosonDecorator(object) :
 
     self.decorated.allowed_decay_modes = []
 
-    self.decorated.add_phantom(   'decay_mode', None, default='{0}', desc='Diboson decay mode' )
-    self.decorated.add_parameter( 'dronly', 0,        default='{0}', desc='(0:disabled; 1:enabled) include only double resonant diagrams' )
+    self.decorated.add_phantom(   'decay_mode', None, desc='Diboson decay mode' )
+    self.decorated.add_parameter( 'dronly', 0,        desc='(0:disabled; 1:enabled) include only double resonant diagrams' )
 
 
   def finalise( self ) :
@@ -29,4 +29,4 @@ class DibosonDecorator(object) :
       self.decorated.logger.warning( 'Decay mode {0} not recognised!'.format( self.decorated.decay_mode) )
     ## Add entry for each decay mode
     for decay_mode in self.decorated.allowed_decay_modes :
-      self.decorated.fix_parameter( decay_mode, [-1,1][decay_mode==self.decorated.decay_mode], default='{0}', desc='(default user-configured) Diboson decay mode, 1:enabled; -1:disabled' )
+      self.decorated.fix_parameter( decay_mode, [-1,1][decay_mode==self.decorated.decay_mode], default='user-configured', desc='(1:enabled; -1:disabled) Diboson decay mode, ' )
diff --git a/Generators/PowhegControl/python/decorators/DibosonInterferenceDecorator.py b/Generators/PowhegControl/python/decorators/DibosonInterferenceDecorator.py
index 69939d7ff9f0d..63058f024cc99 100644
--- a/Generators/PowhegControl/python/decorators/DibosonInterferenceDecorator.py
+++ b/Generators/PowhegControl/python/decorators/DibosonInterferenceDecorator.py
@@ -1,7 +1,8 @@
 # Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
 
 ## @PowhegControl DibosonInterferenceDecorator
-#  Powheg runcard decorator for diboson interference#
+#  Powheg runcard decorator for diboson interference
+#
 #  Authors: James Robinson  <james.robinson@cern.ch>
 
 #! /usr/bin/env python
@@ -16,5 +17,4 @@ class DibosonInterferenceDecorator(object) :
     decorated.run_card_decorators.append( self )
     self.decorated = decorated
 
-    self.decorated.add_parameter( 'mllmin', 4,           default='{0}', desc='Minimum invariant mass of lepton pairs from Z decay' )
-    self.decorated.add_parameter( 'withinterference', 1, default='{0}', desc='(0:disabled; 1:enabled) include interference for like flavour charged leptons' )
+    self.decorated.add_parameter( 'withinterference', 1, desc='(0:disabled; 1:enabled) include interference for like flavour charged leptons' )
diff --git a/Generators/PowhegControl/python/decorators/DileptonMassDecorator.py b/Generators/PowhegControl/python/decorators/DileptonMassDecorator.py
new file mode 100644
index 0000000000000..0b9d1539a8ff6
--- /dev/null
+++ b/Generators/PowhegControl/python/decorators/DileptonMassDecorator.py
@@ -0,0 +1,20 @@
+# Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+
+## @PowhegControl DileptonMassDecorator
+#  Powheg runcard decorator for diboson interference
+#
+#  Authors: James Robinson  <james.robinson@cern.ch>
+
+#! /usr/bin/env python
+
+class DileptonMassDecorator(object) :
+
+  ## Define decorator name string
+  name = 'dilepton mass'
+
+  def __init__( self, decorated ) :
+    ## Attach decorations to Powheg configurable
+    decorated.run_card_decorators.append( self )
+    self.decorated = decorated
+
+    self.decorated.add_parameter( 'mllmin', 4, desc='Minimum invariant mass of lepton pairs from Z decay' )
diff --git a/Generators/PowhegControl/python/decorators/EWPropertiesDecorator.py b/Generators/PowhegControl/python/decorators/EWPropertiesDecorator.py
new file mode 100644
index 0000000000000..33deab8c1e178
--- /dev/null
+++ b/Generators/PowhegControl/python/decorators/EWPropertiesDecorator.py
@@ -0,0 +1,30 @@
+# Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+
+## @PowhegControl EWPropertiesDecorator
+#  Powheg runcard decorator for electroweak properties
+#
+#  Authors: James Robinson  <james.robinson@cern.ch>
+
+#! /usr/bin/env python
+from .. import ATLASCommonParameters
+
+class EWPropertiesDecorator(object) :
+
+  ## Define decorator name string
+  name = 'electroweak properties'
+
+  def __init__( self, decorated, boson ) :
+    ## Attach decorations to Powheg configurable
+    decorated.run_card_decorators.append( self )
+    self.decorated = decorated
+
+    self.decorated.add_parameter( 'alphaem', ATLASCommonParameters.alphaem,                desc='EM coupling' )
+    self.decorated.add_parameter( 'alphaem_inv', 1.0/float(ATLASCommonParameters.alphaem), desc='EM coupling' )
+    if boson == 'w' :
+      self.decorated.add_parameter( 'mass_W', ATLASCommonParameters.mass_W,              desc='mass of W boson in GeV', parameter='wmass' )
+      self.decorated.add_parameter( 'width_W', ATLASCommonParameters.width_W,            desc='W width', parameter='wwidth' )
+    elif boson == 'W' :
+      self.decorated.add_parameter( 'mass_W', ATLASCommonParameters.mass_W,              desc='W mass in GeV', parameter='Wmass' )
+      self.decorated.add_parameter( 'width_W', ATLASCommonParameters.width_W,            desc='W width in GeV', parameter='Wwidth' )
+    self.decorated.add_parameter( 'mass_Z', ATLASCommonParameters.mass_Z,                desc='Z mass in GeV', parameter='Zmass' )
+    self.decorated.add_parameter( 'width_Z', ATLASCommonParameters.width_Z,              desc='Z width in GeV', parameter='Zwidth' )
diff --git a/Generators/PowhegControl/python/decorators/ExtraTestsDecorator.py b/Generators/PowhegControl/python/decorators/ExtraTestsDecorator.py
index 1478259c0e654..45c3edaab126d 100644
--- a/Generators/PowhegControl/python/decorators/ExtraTestsDecorator.py
+++ b/Generators/PowhegControl/python/decorators/ExtraTestsDecorator.py
@@ -17,4 +17,4 @@ class ExtraTestsDecorator(object) :
     decorated.run_card_decorators.append( self )
     self.decorated = decorated
 
-    self.decorated.add_parameter( 'skipextratests', -1, default='{0}', desc='(-1:use Powheg default)' )
+    self.decorated.add_parameter( 'skipextratests', -1, desc='(-1:use Powheg default)' )
diff --git a/Generators/PowhegControl/python/decorators/FakeVirtualDecorator.py b/Generators/PowhegControl/python/decorators/FakeVirtualDecorator.py
index 8024fd1e338c8..22bfd264cd77e 100644
--- a/Generators/PowhegControl/python/decorators/FakeVirtualDecorator.py
+++ b/Generators/PowhegControl/python/decorators/FakeVirtualDecorator.py
@@ -17,4 +17,4 @@ class FakeVirtualDecorator(object) :
     decorated.run_card_decorators.append( self )
     self.decorated = decorated
 
-    self.decorated.add_parameter( 'fakevirt', 0, default='{0}', desc='(0:disabled; 1:enabled) use Born for virtuals - DO NOT USE when generating events.' )
+    self.decorated.add_parameter( 'fakevirt', 0, desc='(0:disabled; 1:enabled) use Born for virtuals - DO NOT USE when generating events.' )
diff --git a/Generators/PowhegControl/python/decorators/FixedScaleDecorator.py b/Generators/PowhegControl/python/decorators/FixedScaleDecorator.py
index 995272fe99198..4a5e60d833620 100644
--- a/Generators/PowhegControl/python/decorators/FixedScaleDecorator.py
+++ b/Generators/PowhegControl/python/decorators/FixedScaleDecorator.py
@@ -17,4 +17,4 @@ class FixedScaleDecorator(object) :
     decorated.run_card_decorators.append( self )
     self.decorated = decorated
 
-    self.decorated.add_parameter( 'fixedscale', -1, default='{0}', desc='(-1:use Powheg default) use reference renormalisation and factorisation scales' )
+    self.decorated.add_parameter( 'fixedscale', -1, desc='(-1:use Powheg default) use reference renormalisation and factorisation scales' )
diff --git a/Generators/PowhegControl/python/decorators/GenericScaleDecorator.py b/Generators/PowhegControl/python/decorators/GenericScaleDecorator.py
new file mode 100644
index 0000000000000..8ee47219f465a
--- /dev/null
+++ b/Generators/PowhegControl/python/decorators/GenericScaleDecorator.py
@@ -0,0 +1,21 @@
+# Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+
+## @PowhegControl GenericScaleDecorator
+#  Powheg runcard decorator for universal NLO functionality
+#
+#  Authors: James Robinson  <james.robinson@cern.ch>
+
+#! /usr/bin/env python
+
+class GenericScaleDecorator(object) :
+
+  ## Define decorator name string
+  name = 'generic scale'
+
+  def __init__( self, decorated ) :
+    # Attach decorations to Powheg configurable
+    decorated.run_card_decorators.append( self )
+    self.decorated = decorated
+
+    self.decorated.add_parameter( 'btlscalect', -1,     desc='(-1:Powheg default; 0:disabled; 1:enabled) use the scales of the underlying-Born configuration for the subtraction terms' )
+    self.decorated.add_parameter( 'btlscalereal', -1,   desc='(-1:Powheg default; 0:disabled; 1:enabled) compute scales that depend on the real kinematics' )
diff --git a/Generators/PowhegControl/python/decorators/HVJDecorator.py b/Generators/PowhegControl/python/decorators/HVJDecorator.py
deleted file mode 100644
index 2394a89aa27a0..0000000000000
--- a/Generators/PowhegControl/python/decorators/HVJDecorator.py
+++ /dev/null
@@ -1,25 +0,0 @@
-# Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
-
-## @PowhegControl PowhegConfig_bb
-#  Powheg runcard decorator for H+V+jet
-#
-#  Authors: James Robinson  <james.robinson@cern.ch>
-
-#! /usr/bin/env python
-from .. import ATLASCommonParameters
-
-class HVJDecorator(object) :
-
-  ## Define decorator name string
-  name = 'Higgs+V+jet'
-
-  def __init__( self, decorated ) :
-    ## Attach decorations to Powheg configurable
-    decorated.run_card_decorators.append( self )
-    self.decorated = decorated
-
-    self.decorated.add_parameter( 'bmass', ATLASCommonParameters.mass_b, default='{0}', desc='b quark mass' )
-    self.decorated.add_parameter( 'kappa_ghb', 1.0,                      default='{0}', desc='multiplicative kappa-factor of the Higgs-bottom coupling' )
-    self.decorated.add_parameter( 'kappa_ght', 1.0,                      default='{0}', desc='multiplicative kappa-factor of the Higgs-top coupling' )
-    self.decorated.add_parameter( 'use_massive_b', 1,                    default='{0}', desc='(0:disabled; 1:enabled) enable bottom quark loops', parameter='massivebottom' )
-    self.decorated.add_parameter( 'use_massive_t', 1,                    default='{0}', desc='(0:disabled; 1:enabled) enable top quark loops', parameter='massivetop' )
diff --git a/Generators/PowhegControl/python/decorators/HeavyQuarkDecorator.py b/Generators/PowhegControl/python/decorators/HeavyQuarkDecorator.py
index 6624738d15026..833168aee6978 100644
--- a/Generators/PowhegControl/python/decorators/HeavyQuarkDecorator.py
+++ b/Generators/PowhegControl/python/decorators/HeavyQuarkDecorator.py
@@ -17,4 +17,4 @@ class HeavyQuarkDecorator(object) :
     decorated.run_card_decorators.append( self )
     self.decorated = decorated
 
-    self.decorated.add_parameter( 'quark_mass', -1, default='{0}', desc='mass of heavy quark in GeV', parameter='qmass' )
+    self.decorated.add_parameter( 'quark_mass', -1, desc='mass of heavy quark in GeV', parameter='qmass' )
diff --git a/Generators/PowhegControl/python/decorators/HiggsDecayModeDecorator.py b/Generators/PowhegControl/python/decorators/HiggsDecayModeDecorator.py
index 10da6f7475f5a..4f77970614e2b 100644
--- a/Generators/PowhegControl/python/decorators/HiggsDecayModeDecorator.py
+++ b/Generators/PowhegControl/python/decorators/HiggsDecayModeDecorator.py
@@ -17,4 +17,4 @@ class HiggsDecayModeDecorator(object) :
     decorated.run_card_decorators.append( self )
     self.decorated = decorated
 
-    self.decorated.add_parameter( 'hdecaymode', 0, default='{0}', desc='(-1:no decay; 0:all; 1-6:dd, uu etc.; 7-9:e+e-, etc.; 10:WW; 11:ZZ; 12:gammagamma) Higgs boson decay' )
+    self.decorated.add_parameter( 'hdecaymode', 0, desc='(-1:no decay; 0:all; 1-6:dd, uu etc.; 7-9:e+e-, etc.; 10:WW; 11:ZZ; 12:gammagamma) Higgs boson decay' )
diff --git a/Generators/PowhegControl/python/decorators/HiggsDecayPropertiesDecorator.py b/Generators/PowhegControl/python/decorators/HiggsDecayPropertiesDecorator.py
index 8fdacd751c5e8..de940faa2a544 100644
--- a/Generators/PowhegControl/python/decorators/HiggsDecayPropertiesDecorator.py
+++ b/Generators/PowhegControl/python/decorators/HiggsDecayPropertiesDecorator.py
@@ -18,8 +18,8 @@ class HiggsDecayPropertiesDecorator(object) :
     decorated.run_card_decorators.append( self )
     self.decorated = decorated
 
-    self.decorated.add_parameter( 'hdecaywidth', 0,                       default='{0}', desc='(0:use hwidth; 1:read total decay width from HDECAY sm.br2 file)' )
-    self.decorated.add_parameter( 'mass_b', ATLASCommonParameters.mass_b, default='{0}', desc='bottom quark mass (loops disabled if <= 0)', parameter='bottommass' )
-    self.decorated.add_parameter( 'mass_c', ATLASCommonParameters.mass_c, default='{0}', desc='charm quark mass (loops enabled if <= 0)', parameter='charmmass' )
-    self.decorated.add_parameter( 'masswindow', 10.0,                     default='{0}', desc='number of widths around hmass in the BW for an off-shell Higgs boson' )
-    self.decorated.add_parameter( 'nnlo', -1,                             default='{0}', desc='(-1:use Powheg default) enable NNLO rescaling' )
+    self.decorated.add_parameter( 'hdecaywidth', 0,                       desc='(0:use hwidth; 1:read total decay width from HDECAY sm.br2 file)' )
+    self.decorated.add_parameter( 'mass_b', ATLASCommonParameters.mass_b, desc='bottom quark mass (loops disabled if <= 0)', parameter='bottommass' )
+    self.decorated.add_parameter( 'mass_c', ATLASCommonParameters.mass_c, desc='charm quark mass (loops enabled if <= 0)', parameter='charmmass' )
+    self.decorated.add_parameter( 'masswindow', 10.0,                     desc='number of widths around hmass in the BW for an off-shell Higgs boson' )
+    self.decorated.add_parameter( 'nnlo', -1,                             desc='(-1:use Powheg default) enable NNLO rescaling' )
diff --git a/Generators/PowhegControl/python/decorators/HiggsFixedWidthDecorator.py b/Generators/PowhegControl/python/decorators/HiggsFixedWidthDecorator.py
index da460b12ff05e..125dfd611281f 100644
--- a/Generators/PowhegControl/python/decorators/HiggsFixedWidthDecorator.py
+++ b/Generators/PowhegControl/python/decorators/HiggsFixedWidthDecorator.py
@@ -17,4 +17,4 @@ class HiggsFixedWidthDecorator(object) :
     decorated.run_card_decorators.append( self )
     self.decorated = decorated
 
-    self.decorated.add_parameter( 'higgsfixedwidth', 0, default='{0}', desc='(0:running width; 1:fixed width in Breit-Wigner)' )
+    self.decorated.add_parameter( 'higgsfixedwidth', 0, desc='(0:running width; 1:fixed width in Breit-Wigner)' )
diff --git a/Generators/PowhegControl/python/decorators/HiggsMassWindowDecorator.py b/Generators/PowhegControl/python/decorators/HiggsMassWindowDecorator.py
deleted file mode 100644
index 0b632e41c874a..0000000000000
--- a/Generators/PowhegControl/python/decorators/HiggsMassWindowDecorator.py
+++ /dev/null
@@ -1,21 +0,0 @@
-# Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
-
-## @PowhegControl HiggsMassWindowDecorator
-#  Powheg runcard decorator for Higgs mass window settings
-#
-#  Authors: James Robinson  <james.robinson@cern.ch>
-
-#! /usr/bin/env python
-
-class HiggsMassWindowDecorator(object) :
-
-  ## Define decorator name string
-  name = 'Higgs mass window'
-
-  def __init__( self, decorated ) :
-    ## Attach decorations to Powheg configurable
-    decorated.run_card_decorators.append( self )
-    self.decorated = decorated
-
-    self.decorated.add_parameter( 'mass_H_low', 10.,    default='{0}', desc='M_H > mass low', parameter='min_h_mass' )
-    self.decorated.add_parameter( 'mass_H_high', 1000., default='{0}', desc='M_H < mass high', parameter='max_h_mass' )
diff --git a/Generators/PowhegControl/python/decorators/HiggsPropertiesDecorator.py b/Generators/PowhegControl/python/decorators/HiggsPropertiesDecorator.py
index 9f9965fe527ae..ce3399ce96758 100644
--- a/Generators/PowhegControl/python/decorators/HiggsPropertiesDecorator.py
+++ b/Generators/PowhegControl/python/decorators/HiggsPropertiesDecorator.py
@@ -18,5 +18,5 @@ class HiggsPropertiesDecorator(object) :
     decorated.run_card_decorators.append( self )
     self.decorated = decorated
 
-    self.decorated.add_parameter( 'mass_H', ATLASCommonParameters.mass_H,   default='{0}', desc='mass of Higgs boson in GeV', parameter='hmass' )
-    self.decorated.add_parameter( 'width_H', ATLASCommonParameters.width_H, default='{0}', desc='width of Higgs boson in GeV', parameter='hwidth' )
+    self.decorated.add_parameter( 'mass_H', ATLASCommonParameters.mass_H,   desc='mass of Higgs boson in GeV', parameter='hmass' )
+    self.decorated.add_parameter( 'width_H', ATLASCommonParameters.width_H, desc='width of Higgs boson in GeV', parameter='hwidth' )
diff --git a/Generators/PowhegControl/python/decorators/HiggsVectorBosonDecorator.py b/Generators/PowhegControl/python/decorators/HiggsVectorBosonDecorator.py
new file mode 100644
index 0000000000000..4632e3049ff7c
--- /dev/null
+++ b/Generators/PowhegControl/python/decorators/HiggsVectorBosonDecorator.py
@@ -0,0 +1,23 @@
+# Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+
+## @PowhegControl HiggsVectorBosonDecorator
+#  Powheg runcard decorator for Higgs+vector boson processes
+#
+#  Authors: James Robinson  <james.robinson@cern.ch>
+
+#! /usr/bin/env python
+from .. import ATLASCommonParameters
+
+class HiggsVectorBosonDecorator(object) :
+
+  ## Define decorator name string
+  name = 'Higgs + vector boson'
+
+  def __init__( self, decorated ) :
+    ## Attach decorations to Powheg configurable
+    decorated.run_card_decorators.append( self )
+    self.decorated = decorated
+
+    self.decorated.add_parameter( 'mass_b', ATLASCommonParameters.mass_b, desc='b-quark mass', parameter='bmass' )
+    self.decorated.add_parameter( 'mass_H_low', 10.,                      desc='M_H > mass low', parameter='min_h_mass' )
+    self.decorated.add_parameter( 'mass_H_high', 1000.,                   desc='M_H < mass high', parameter='max_h_mass' )
diff --git a/Generators/PowhegControl/python/decorators/HiggsVectorBosonJetDecorator.py b/Generators/PowhegControl/python/decorators/HiggsVectorBosonJetDecorator.py
new file mode 100644
index 0000000000000..baabef729a02c
--- /dev/null
+++ b/Generators/PowhegControl/python/decorators/HiggsVectorBosonJetDecorator.py
@@ -0,0 +1,28 @@
+# Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+
+## @PowhegControl HiggsVectorBosonJetDecorator
+#  Powheg runcard decorator for H+V+jet
+#
+#  Authors: James Robinson  <james.robinson@cern.ch>
+
+#! /usr/bin/env python
+from .. import ATLASCommonParameters
+
+class HiggsVectorBosonJetDecorator(object) :
+
+  ## Define decorator name string
+  name = 'Higgs + vector boson + jet'
+
+  def __init__( self, decorated ) :
+    ## Attach decorations to Powheg configurable
+    decorated.run_card_decorators.append( self )
+    self.decorated = decorated
+
+    self.decorated.add_parameter( 'bornsuppfactV', -1,                   desc='(-1:Powheg default)' )
+    self.decorated.add_parameter( 'kappa_ghb', 1.0,                      desc='multiplicative kappa-factor of the Higgs-bottom coupling' )
+    self.decorated.add_parameter( 'kappa_ght', 1.0,                      desc='multiplicative kappa-factor of the Higgs-top coupling' )
+    self.decorated.add_parameter( 'ptVhigh', -1,                         desc='(-1:Powheg default)' )
+    self.decorated.add_parameter( 'ptVlow', -1,                          desc='(-1:Powheg default)' )
+    self.decorated.add_parameter( 'use_massive_b', 1,                    desc='(0:disabled; 1:enabled) enable bottom quark loops', parameter='massivebottom' )
+    self.decorated.add_parameter( 'use_massive_t', 1,                    desc='(0:disabled; 1:enabled) enable top quark loops', parameter='massivetop' )
+    self.decorated.add_parameter( 'Vstep', -1,                           desc='(-1:Powheg default)' )
diff --git a/Generators/PowhegControl/python/decorators/ISRFSRDecorator.py b/Generators/PowhegControl/python/decorators/ISRFSRDecorator.py
new file mode 100644
index 0000000000000..589734fff64ac
--- /dev/null
+++ b/Generators/PowhegControl/python/decorators/ISRFSRDecorator.py
@@ -0,0 +1,23 @@
+# Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+
+## @PowhegControl ISRFSRDecorator
+#  Powheg runcard decorator for ISR/FSR parameters
+#
+#  Authors: James Robinson  <james.robinson@cern.ch>
+
+#! /usr/bin/env python
+
+class ISRFSRDecorator(object) :
+
+  ## Define decorator name string
+  name = 'ISR/FSR'
+
+  def __init__( self, decorated ) :
+    ## Attach decorations to Powheg configurable
+    decorated.run_card_decorators.append( self )
+    self.decorated = decorated
+
+    self.decorated.add_parameter( 'par_fsrtinycsi', -1, desc='(-1:use Powheg default)' )
+    self.decorated.add_parameter( 'par_fsrtinyy', -1,   desc='(-1:use Powheg default)' )
+    self.decorated.add_parameter( 'par_isrtinycsi', -1, desc='(-1:use Powheg default)' )
+    self.decorated.add_parameter( 'par_isrtinyy', -1,   desc='(-1:use Powheg default)' )
diff --git a/Generators/PowhegControl/python/decorators/JacsingDecorator.py b/Generators/PowhegControl/python/decorators/JacsingDecorator.py
index d75c13340f0cd..ef58a7c203ba3 100644
--- a/Generators/PowhegControl/python/decorators/JacsingDecorator.py
+++ b/Generators/PowhegControl/python/decorators/JacsingDecorator.py
@@ -17,4 +17,4 @@ class JacsingDecorator(object) :
     decorated.run_card_decorators.append( self )
     self.decorated = decorated
 
-    self.decorated.add_parameter( 'jacsing', -1, default='{0}', desc='(-1:use Powheg default)' )
+    self.decorated.add_parameter( 'jacsing', -1, desc='(-1:use Powheg default)' )
diff --git a/Generators/PowhegControl/python/decorators/LHEv3Decorator.py b/Generators/PowhegControl/python/decorators/LHEv3Decorator.py
deleted file mode 100644
index 4b890a1c5a09c..0000000000000
--- a/Generators/PowhegControl/python/decorators/LHEv3Decorator.py
+++ /dev/null
@@ -1,21 +0,0 @@
-# Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
-
-## @PowhegControl LHEv3Decorator
-#  Powheg runcard decorator for LHEv3 weights
-#
-#  Authors: James Robinson  <james.robinson@cern.ch>
-
-#! /usr/bin/env python
-
-class LHEv3Decorator(object) :
-
-  ## Define decorator name string
-  name = 'LHEv3'
-
-  def __init__( self, decorated ) :
-    ## Attach decorations to Powheg configurable
-    decorated.run_card_decorators.append( self )
-    self.decorated = decorated
-
-    self.decorated.fix_parameter( 'compute_rwgt', 0,   default='{0}', desc='(0:nominal; 1:compute reweighting factor)' )
-    self.decorated.fix_parameter( 'storeinfo_rwgt', 0, default='{0}', desc='(0:disabled; 1:enabled) enable new-style PDF information' )
diff --git a/Generators/PowhegControl/python/decorators/LeptonMassDecorator.py b/Generators/PowhegControl/python/decorators/LeptonMassDecorator.py
index 040ba21c950a4..b5acaa882af81 100644
--- a/Generators/PowhegControl/python/decorators/LeptonMassDecorator.py
+++ b/Generators/PowhegControl/python/decorators/LeptonMassDecorator.py
@@ -13,11 +13,16 @@ class LeptonMassDecorator(object) :
   ## Define decorator name string
   name = 'lepton mass'
 
-  def __init__( self, decorated ) :
+  def __init__( self, decorated, prefix ) :
     ## Attach decorations to Powheg configurable
     decorated.run_card_decorators.append( self )
     self.decorated = decorated
 
-    self.decorated.add_parameter( 'lhfm/emass', ATLASCommonParameters.mass_e,     default='{0}', desc='electron mass' )
-    self.decorated.add_parameter( 'lhfm/mumass', ATLASCommonParameters.mass_mu,   default='{0}', desc='mu mass' )
-    self.decorated.add_parameter( 'lhfm/taumass', ATLASCommonParameters.mass_tau, default='{0}', desc='tau mass' )
+    if prefix == 'lhfm' or 'lhfm' in prefix :
+      self.decorated.add_parameter( 'mass_e', ATLASCommonParameters.mass_e,     desc='mass of electron in GeV', parameter='lhfm/emass' )
+      self.decorated.add_parameter( 'mass_mu', ATLASCommonParameters.mass_mu,   desc='mass of mu in GeV', parameter='lhfm/mumass' )
+      self.decorated.add_parameter( 'mass_tau', ATLASCommonParameters.mass_tau, desc='mass of tau in GeV', parameter='lhfm/taumass' )
+    if prefix == 'tdec' or 'tdec' in prefix :
+      self.decorated.add_parameter( 'mass_e', ATLASCommonParameters.mass_e,     desc='mass of electron in GeV', parameter='tdec/emass' )
+      self.decorated.add_parameter( 'mass_mu', ATLASCommonParameters.mass_mu,   desc='mass of mu in GeV', parameter='tdec/mumass' )
+      self.decorated.add_parameter( 'mass_tau', ATLASCommonParameters.mass_tau, desc='mass of tau in GeV', parameter='tdec/taumass' )
diff --git a/Generators/PowhegControl/python/decorators/MassWindowDecorator.py b/Generators/PowhegControl/python/decorators/MassWindowDecorator.py
index 99aba949e9441..7703f94bab630 100644
--- a/Generators/PowhegControl/python/decorators/MassWindowDecorator.py
+++ b/Generators/PowhegControl/python/decorators/MassWindowDecorator.py
@@ -17,7 +17,7 @@ class MassWindowDecorator(object) :
     decorated.run_card_decorators.append( self )
     self.decorated = decorated
 
-    self.decorated.add_parameter( 'mass_low', -1,        default='{0}', desc='(-1:use Powheg default) If set then require M_object > mass_low; otherwise allow internal Powheg computation.' )
-    self.decorated.add_parameter( 'mass_high', -1,       default='{0}', desc='(-1:use Powheg default) If set then require M_object < mass_high; otherwise allow internal Powheg computation.' )
-    self.decorated.add_parameter( 'masswindow_low', -1,  default='{0}', desc='DEPRECATED use mass_low instead' )
-    self.decorated.add_parameter( 'masswindow_high', -1, default='{0}', desc='DEPRECATED use mass_high instead' )
+    self.decorated.add_parameter( 'mass_low', -1,        desc='(-1:use Powheg default) If set then require M_object > mass_low; otherwise allow internal Powheg computation.' )
+    self.decorated.add_parameter( 'mass_high', -1,       desc='(-1:use Powheg default) If set then require M_object < mass_high; otherwise allow internal Powheg computation.' )
+    self.decorated.add_parameter( 'masswindow_low', -1,  desc='DEPRECATED use mass_low instead' )
+    self.decorated.add_parameter( 'masswindow_high', -1, desc='DEPRECATED use mass_high instead' )
diff --git a/Generators/PowhegControl/python/decorators/MiNLONLLDecorator.py b/Generators/PowhegControl/python/decorators/MiNLONLLDecorator.py
index fd49de9a37fdc..1177fd1fec3bf 100644
--- a/Generators/PowhegControl/python/decorators/MiNLONLLDecorator.py
+++ b/Generators/PowhegControl/python/decorators/MiNLONLLDecorator.py
@@ -17,7 +17,7 @@ class MiNLONLLDecorator(object) :
     decorated.run_card_decorators.append( self )
     self.decorated = decorated
 
-    self.decorated.add_parameter( 'factsc2min', 2.0, default='{0}', desc='value at which the factorization scale is frozen (needed with MiNLO)' )
-    self.decorated.add_parameter( 'frensc2min', 2.0, default='{0}', desc='value at which the renormalisation scale is frozen (needed with MiNLO)' )
-    self.decorated.add_parameter( 'minlo_nnll', 1,   default='{0}', desc='(0:disabled; 1:enabled) enable MiNLO NNLL' )
-    self.decorated.add_parameter( 'sudscalevar', 1,  default='{0}', desc='(0:disabled; 1:enabled) scale variation also in Sudakov form factors in MiNLO' )
+    self.decorated.add_parameter( 'factsc2min', 2.0, desc='value at which the factorization scale is frozen (needed with MiNLO)' )
+    self.decorated.add_parameter( 'frensc2min', 2.0, desc='value at which the renormalisation scale is frozen (needed with MiNLO)' )
+    self.decorated.add_parameter( 'minlo_nnll', 1,   desc='(0:disabled; 1:enabled) enable MiNLO NNLL' )
+    self.decorated.add_parameter( 'sudscalevar', 1,  desc='(0:disabled; 1:enabled) scale variation also in Sudakov form factors in MiNLO' )
diff --git a/Generators/PowhegControl/python/decorators/NNLOReweightingDecorator.py b/Generators/PowhegControl/python/decorators/NNLOReweightingDecorator.py
index 9442f50058cfd..a161f8ae7f39b 100644
--- a/Generators/PowhegControl/python/decorators/NNLOReweightingDecorator.py
+++ b/Generators/PowhegControl/python/decorators/NNLOReweightingDecorator.py
@@ -16,8 +16,8 @@ class NNLOReweightingDecorator(object) :
     decorated.run_card_decorators.append( self )
     self.decorated = decorated
 
-    self.decorated.add_phantom( 'NNLO_reweighting_inputs', {}, default='{0}', desc='dictionary of labels => (pre-existing) HNNLO output' )
-    self.decorated.add_phantom( 'NNLO_output_weights', {},     default='{0}', desc='dictionary of weight ID string => weight calculation in NNLOPS format' )
+    self.decorated.add_phantom( 'NNLO_reweighting_inputs', {}, desc='dictionary of labels => (pre-existing) HNNLO output' )
+    self.decorated.add_phantom( 'NNLO_output_weights', {},     desc='dictionary of weight ID string => weight calculation in NNLOPS format' )
 
 
   def finalise( self ) :
diff --git a/Generators/PowhegControl/python/decorators/OldDijDecorator.py b/Generators/PowhegControl/python/decorators/OldDijDecorator.py
new file mode 100644
index 0000000000000..75c0ad7c0a732
--- /dev/null
+++ b/Generators/PowhegControl/python/decorators/OldDijDecorator.py
@@ -0,0 +1,20 @@
+# Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+
+## @PowhegControl ExtraTestsDecorator
+#  Powheg runcard decorator for olddij parameter
+#
+#  Authors: James Robinson  <james.robinson@cern.ch>
+
+#! /usr/bin/env python
+
+class OldDijDecorator(object) :
+
+  ## Define decorator name string
+  name = 'old Dij'
+
+  def __init__( self, decorated ) :
+    ## Attach decorations to Powheg configurable
+    decorated.run_card_decorators.append( self )
+    self.decorated = decorated
+
+    self.decorated.add_parameter( 'olddij', -1, desc='(-1:use Powheg default)' )
diff --git a/Generators/PowhegControl/python/decorators/PDFReweightingDecorator.py b/Generators/PowhegControl/python/decorators/PDFReweightingDecorator.py
new file mode 100644
index 0000000000000..c25e61469bb91
--- /dev/null
+++ b/Generators/PowhegControl/python/decorators/PDFReweightingDecorator.py
@@ -0,0 +1,21 @@
+# Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+
+## @PowhegControl PDFReweightingDecorator
+#  Powheg runcard decorator for PDF reweighting
+#
+#  Authors: James Robinson  <james.robinson@cern.ch>
+
+#! /usr/bin/env python
+
+class PDFReweightingDecorator(object) :
+
+  ## Define decorator name string
+  name = 'PDF reweighting'
+
+  def __init__( self, decorated ) :
+    ## Attach decorations to Powheg configurable
+    decorated.run_card_decorators.append( self )
+    self.decorated = decorated
+
+    self.decorated.fix_parameter( 'compute_rwgt', 0,   desc='(0:nominal; 1:compute reweighting factor)' )
+    self.decorated.fix_parameter( 'storeinfo_rwgt', 0, desc='(0:disabled; 1:enabled) enable new-style PDF information' )
diff --git a/Generators/PowhegControl/python/decorators/RadiationParametrisationDecorator.py b/Generators/PowhegControl/python/decorators/RadiationParametrisationDecorator.py
index c0c315358b200..23dc45a0fe03c 100644
--- a/Generators/PowhegControl/python/decorators/RadiationParametrisationDecorator.py
+++ b/Generators/PowhegControl/python/decorators/RadiationParametrisationDecorator.py
@@ -17,5 +17,5 @@ class RadiationParametrisationDecorator(object) :
     decorated.run_card_decorators.append( self )
     self.decorated = decorated
 
-    self.decorated.add_parameter( 'fullphsp', -1,      default='{0}', desc='(-1:use Powheg default) enable ISR/FSR phase space parametrization' )
-    self.decorated.add_parameter( 'raisingscales', -1, default='{0}', desc='(-1:use Powheg default)' )
+    self.decorated.add_parameter( 'fullphsp', -1,      desc='(-1:use Powheg default) enable ISR/FSR phase space parametrization' )
+    self.decorated.add_parameter( 'raisingscales', -1, desc='(-1:use Powheg default)' )
diff --git a/Generators/PowhegControl/python/decorators/RunningScaleDecorator.py b/Generators/PowhegControl/python/decorators/RunningScaleDecorator.py
index 119cbaf3d220b..81884091c2ba3 100644
--- a/Generators/PowhegControl/python/decorators/RunningScaleDecorator.py
+++ b/Generators/PowhegControl/python/decorators/RunningScaleDecorator.py
@@ -12,9 +12,10 @@ class RunningScaleDecorator(object) :
   ## Define decorator name string
   name = 'running scale'
 
-  def __init__( self, decorated ) :
+  def __init__( self, decorated, description=None ) :
     ## Attach decorations to Powheg configurable
     decorated.run_card_decorators.append( self )
     self.decorated = decorated
+    if description is None : description = 'Choice for mu_R and mu_F in Bbar integration.'
 
-    self.decorated.add_parameter( 'runningscale', 1, default='{0}', desc='Choice for mu_R and mu_F in Bbar integration. For DM 0, 1, 2, 3 correspond to 2mX (fixed), ptj, XXbar invmass, Ht/2' )
+    self.decorated.add_parameter( 'runningscale', 1, desc=description )
diff --git a/Generators/PowhegControl/python/decorators/RunningScalesDecorator.py b/Generators/PowhegControl/python/decorators/RunningScalesDecorator.py
index d430bc9a042ea..6d2ed2ef66263 100644
--- a/Generators/PowhegControl/python/decorators/RunningScalesDecorator.py
+++ b/Generators/PowhegControl/python/decorators/RunningScalesDecorator.py
@@ -17,4 +17,4 @@ class RunningScalesDecorator(object) :
     decorated.run_card_decorators.append( self )
     self.decorated = decorated
 
-    self.decorated.add_parameter( 'runningscales', 0, default='{0}', desc='(0:use hmass as central factorization and renormalisation scale; 1:use the Ht/2)' )
+    self.decorated.add_parameter( 'runningscales', 0, desc='(0:use fixed factorisation/renormalisation scale; 1:use running scale)' )
diff --git a/Generators/PowhegControl/python/decorators/RunningWidthDecorator.py b/Generators/PowhegControl/python/decorators/RunningWidthDecorator.py
index 12b7744305e02..2c4d572be03a5 100644
--- a/Generators/PowhegControl/python/decorators/RunningWidthDecorator.py
+++ b/Generators/PowhegControl/python/decorators/RunningWidthDecorator.py
@@ -16,4 +16,5 @@ class RunningWidthDecorator(object) :
     decorated.run_card_decorators.append( self )
     self.decorated = decorated
 
-    self.decorated.add_parameter( 'runningwidth', 0, default='{0}', desc='(0:disabled; 1:enabled) use running width' )
+    self.decorated.add_parameter( 'runningwidth', 0,  desc='(0:disabled; 1:enabled) use running width' )
+    self.decorated.add_parameter( 'running_width', 0, desc='(0:disabled; 1:enabled) use running width' )
diff --git a/Generators/PowhegControl/python/decorators/SecondGenerationQuarkMassDecorator.py b/Generators/PowhegControl/python/decorators/SecondGenerationQuarkMassDecorator.py
index 6552729c0798e..8ab9f3c5f7b75 100644
--- a/Generators/PowhegControl/python/decorators/SecondGenerationQuarkMassDecorator.py
+++ b/Generators/PowhegControl/python/decorators/SecondGenerationQuarkMassDecorator.py
@@ -13,10 +13,14 @@ class SecondGenerationQuarkMassDecorator(object) :
   ## Define decorator name string
   name = 'second generation quark mass'
 
-  def __init__( self, decorated ) :
+  def __init__( self, decorated, prefix ) :
     ## Attach decorations to Powheg configurable
     decorated.run_card_decorators.append( self )
     self.decorated = decorated
 
-    self.decorated.add_parameter( 'bmass_lhe', ATLASCommonParameters.mass_b, default='{0}', desc='set b-quark mass for momentum reshuffling in GeV' )
-    self.decorated.add_parameter( 'cmass_lhe', ATLASCommonParameters.mass_c, default='{0}', desc='set c-quark mass for momentum reshuffling in GeV' )
+    if prefix == 'lhfm' :
+      self.decorated.add_parameter( 'mass_b', ATLASCommonParameters.mass_b, desc='b-quark mass in GeV', parameter='lhfm/bmass' )
+      self.decorated.add_parameter( 'mass_c', ATLASCommonParameters.mass_c, desc='c-quark mass in GeV', parameter='lhfm/cmass' )
+    elif prefix == 'lhe' :
+      self.decorated.add_parameter( 'mass_b', ATLASCommonParameters.mass_b, desc='set b-quark mass in GeV for momentum reshuffling', parameter='bmass_lhe' )
+      self.decorated.add_parameter( 'mass_c', ATLASCommonParameters.mass_c, desc='set c-quark mass in GeV for momentum reshuffling', parameter='cmass_lhe' )
diff --git a/Generators/PowhegControl/python/decorators/SemileptonicDecorator.py b/Generators/PowhegControl/python/decorators/SemileptonicDecorator.py
index f3e1217c21d55..8363b801469e9 100644
--- a/Generators/PowhegControl/python/decorators/SemileptonicDecorator.py
+++ b/Generators/PowhegControl/python/decorators/SemileptonicDecorator.py
@@ -17,4 +17,4 @@ class SemileptonicDecorator(object) :
     decorated.run_card_decorators.append( self )
     self.decorated = decorated
 
-    self.decorated.add_parameter( 'semileptonic', -1, default='{0}', desc='(-1:use Powheg default) only accept semileptonic decays' )
+    self.decorated.add_parameter( 'semileptonic', -1, desc='(-1:use Powheg default) only accept semileptonic decays' )
diff --git a/Generators/PowhegControl/python/decorators/Sin2ThetaWDecorator.py b/Generators/PowhegControl/python/decorators/Sin2ThetaWDecorator.py
index 26c2fa8edf618..b5816999ea2de 100644
--- a/Generators/PowhegControl/python/decorators/Sin2ThetaWDecorator.py
+++ b/Generators/PowhegControl/python/decorators/Sin2ThetaWDecorator.py
@@ -18,4 +18,4 @@ class Sin2ThetaWDecorator(object) :
     decorated.run_card_decorators.append( self )
     self.decorated = decorated
 
-    self.decorated.add_parameter( 'sthw2', ATLASCommonParameters.sin2thW_eff, default='{0}', desc='sin**2 theta w' )
+    self.decorated.add_parameter( 'sthw2', ATLASCommonParameters.sin2thW_eff, desc='sin**2 theta w' )
diff --git a/Generators/PowhegControl/python/decorators/SingleTopDecorator.py b/Generators/PowhegControl/python/decorators/SingleTopDecorator.py
deleted file mode 100644
index 3d3e546b99abe..0000000000000
--- a/Generators/PowhegControl/python/decorators/SingleTopDecorator.py
+++ /dev/null
@@ -1,24 +0,0 @@
-# Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
-
-## @PowhegControl SingleTopDecorator
-#  Powheg runcard decorator for single top production
-#
-#  Authors: James Robinson  <james.robinson@cern.ch>
-
-#! /usr/bin/env python
-from .. import ATLASCommonParameters
-
-class SingleTopDecorator(object) :
-
-  ## Define decorator name string
-  name = 'single top'
-
-  def __init__( self, decorated ) :
-    ## Attach decorations to Powheg configurable
-    decorated.run_card_decorators.append( self )
-    self.decorated = decorated
-
-    self.decorated.add_parameter( 'alphaem_inv', 1.0/float(ATLASCommonParameters.alphaem), default='{0}', desc='EM coupling' )
-    self.decorated.add_parameter( 'ttype', 1,                                              default='{0}', desc='(1:t; -1:tbar)' )
-    self.decorated.add_parameter( 'wmass', ATLASCommonParameters.mass_W,                   default='{0}', desc='mass of W boson in GeV' )
-    self.decorated.add_parameter( 'wwidth', ATLASCommonParameters.width_W,                 default='{0}', desc='W width' )
diff --git a/Generators/PowhegControl/python/decorators/SingleVectorBosonDecorator.py b/Generators/PowhegControl/python/decorators/SingleVectorBosonDecorator.py
deleted file mode 100644
index 621e42643e07f..0000000000000
--- a/Generators/PowhegControl/python/decorators/SingleVectorBosonDecorator.py
+++ /dev/null
@@ -1,26 +0,0 @@
-# Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
-
-## @PowhegControl SingleVectorBosonDecorator
-#  Powheg runcard decorator for single vector boson production
-#
-#  Authors: James Robinson  <james.robinson@cern.ch>
-
-#! /usr/bin/env python
-from .. import ATLASCommonParameters
-
-class SingleVectorBosonDecorator(object) :
-
-  ## Define decorator name string
-  name = 'single vector boson'
-
-  def __init__( self, decorated ) :
-    ## Attach decorations to Powheg configurable
-    decorated.run_card_decorators.append( self )
-    self.decorated = decorated
-
-    self.decorated.add_parameter( 'alphaem', ATLASCommonParameters.alphaem, default='{0}', desc='EM coupling' )
-    self.decorated.add_parameter( 'running_width', -1,                      default='{0}', desc='(-1:use Powheg default)' )
-    self.decorated.add_parameter( 'Wmass', ATLASCommonParameters.mass_W,    default='{0}', desc='W mass in GeV' )
-    self.decorated.add_parameter( 'Wwidth', ATLASCommonParameters.width_W,  default='{0}', desc='W width in GeV' )
-    self.decorated.add_parameter( 'Zmass', ATLASCommonParameters.mass_Z,    default='{0}', desc='Z mass in GeV' )
-    self.decorated.add_parameter( 'Zwidth', ATLASCommonParameters.width_Z,  default='{0}', desc='Z width in GeV' )
diff --git a/Generators/PowhegControl/python/decorators/TopDecayBranchingDecorator.py b/Generators/PowhegControl/python/decorators/TopDecayBranchingDecorator.py
index 8d02828039706..911807a2fc1e9 100644
--- a/Generators/PowhegControl/python/decorators/TopDecayBranchingDecorator.py
+++ b/Generators/PowhegControl/python/decorators/TopDecayBranchingDecorator.py
@@ -13,16 +13,12 @@ class TopDecayBranchingDecorator(object) :
   ## Define decorator name string
   name = 'top decay branching'
 
-  def __init__( self, decorated, tdec_prefix=True ) :
+  def __init__( self, decorated, prefix='' ) :
     ## Attach decorations to Powheg configurable
     decorated.run_card_decorators.append( self )
     self.decorated = decorated
 
-    if tdec_prefix :
-      self.decorated.add_parameter( 'tdec/elbranching', ATLASCommonParameters.W_lepton_BR, default='{0}', desc='W electronic branching fraction' )
-      self.decorated.add_parameter( 'tdec/emass', ATLASCommonParameters.mass_e,            default='{0}', desc='electron mass' )
-      self.decorated.add_parameter( 'tdec/mumass', ATLASCommonParameters.mass_mu,          default='{0}', desc='mu mass' )
-      self.decorated.add_parameter( 'tdec/taumass', ATLASCommonParameters.mass_tau,        default='{0}', desc='tau mass' )
+    if prefix == 'tdec' :
+      self.decorated.add_parameter( 'elbranching', ATLASCommonParameters.W_lepton_BR, desc='W electronic branching fraction', parameter='tdec/elbranching' )
     else :
-      self.decorated.add_parameter( 'elbranching', ATLASCommonParameters.W_lepton_BR,      default='{0}', desc='W electronic branching fraction' )
-    self.decorated.add_parameter( 'topwidth', ATLASCommonParameters.width_t,               default='{0}', desc='top width' )
+      self.decorated.add_parameter( 'elbranching', ATLASCommonParameters.W_lepton_BR, desc='W electronic branching fraction' )
diff --git a/Generators/PowhegControl/python/decorators/TopDecayModeDecorator.py b/Generators/PowhegControl/python/decorators/TopDecayModeDecorator.py
index e636c136cf7ac..a17c625b05d59 100644
--- a/Generators/PowhegControl/python/decorators/TopDecayModeDecorator.py
+++ b/Generators/PowhegControl/python/decorators/TopDecayModeDecorator.py
@@ -17,4 +17,4 @@ class TopDecayModeDecorator(object) :
     decorated.run_card_decorators.append( self )
     self.decorated = decorated
 
-    self.decorated.add_parameter( 'topdecaymode', 0, default='{0}', desc='5 digits indicating the maximum number of (e,mu,tau,u,c) allowed in decays' )
+    self.decorated.add_parameter( 'topdecaymode', 0, desc='5 digits indicating the maximum number of (e,mu,tau,u,c) allowed in decays' )
diff --git a/Generators/PowhegControl/python/decorators/TopDecaySecondGenerationQuarkDecorator.py b/Generators/PowhegControl/python/decorators/TopDecaySecondGenerationQuarkDecorator.py
deleted file mode 100644
index 5611af37b1c8d..0000000000000
--- a/Generators/PowhegControl/python/decorators/TopDecaySecondGenerationQuarkDecorator.py
+++ /dev/null
@@ -1,22 +0,0 @@
-# Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
-
-## @PowhegControl TopDecaySecondGenerationQuarkDecorator
-#  Powheg runcard decorator for second generation quark masses from top decays
-#
-#  Authors: James Robinson  <james.robinson@cern.ch>
-
-#! /usr/bin/env python
-from .. import ATLASCommonParameters
-
-class TopDecaySecondGenerationQuarkDecorator(object) :
-
-  ## Define decorator name string
-  name = 'top decay second generation quark'
-
-  def __init__( self, decorated ) :
-    ## Attach decorations to Powheg configurable
-    decorated.run_card_decorators.append( self )
-    self.decorated = decorated
-
-    self.decorated.add_parameter( 'lhfm/bmass', ATLASCommonParameters.mass_b, default='{0}', desc='b-quark mass' )
-    self.decorated.add_parameter( 'lhfm/cmass', ATLASCommonParameters.mass_c, default='{0}', desc='c-quark mass' )
diff --git a/Generators/PowhegControl/python/decorators/TopMassDecorator.py b/Generators/PowhegControl/python/decorators/TopPropertiesDecorator.py
similarity index 54%
rename from Generators/PowhegControl/python/decorators/TopMassDecorator.py
rename to Generators/PowhegControl/python/decorators/TopPropertiesDecorator.py
index 7f40c16c7c6a1..774a9df67bd71 100644
--- a/Generators/PowhegControl/python/decorators/TopMassDecorator.py
+++ b/Generators/PowhegControl/python/decorators/TopPropertiesDecorator.py
@@ -1,22 +1,24 @@
 # Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
 
-## @PowhegControl TopMassDecorator
-#  Powheg runcard decorator for top mass parameter
+## @PowhegControl TopPropertiesDecorator
+#  Powheg runcard decorator for top properties
 #
 #  Authors: James Robinson  <james.robinson@cern.ch>
 
 #! /usr/bin/env python
 from .. import ATLASCommonParameters
 
-class TopMassDecorator(object) :
+class TopPropertiesDecorator(object) :
 
   ## Define decorator name string
-  name = 'top mass'
+  name = 'top properties'
 
   def __init__( self, decorated ) :
     ## Attach decorations to Powheg configurable
     decorated.run_card_decorators.append( self )
     self.decorated = decorated
 
-    self.decorated.add_parameter( 'tmass', ATLASCommonParameters.mass_t,   default='{0}', desc='top quark mass' )
-    self.decorated.add_parameter( 'topmass', ATLASCommonParameters.mass_t, default='{0}', desc='top quark mass' )
+    self.decorated.add_parameter( 'tmass', ATLASCommonParameters.mass_t,     desc='mass of top quark in GeV' )
+    self.decorated.add_parameter( 'topmass', ATLASCommonParameters.mass_t,   desc='mass of top quark in GeV' )
+    self.decorated.add_parameter( 'topwidth', ATLASCommonParameters.width_t, desc='top width' )
+    self.decorated.add_parameter( 'ttype', 1,                                desc='(1:t; -1:tbar)' )
diff --git a/Generators/PowhegControl/python/decorators/UpperBoundDecorator.py b/Generators/PowhegControl/python/decorators/UpperBoundDecorator.py
new file mode 100644
index 0000000000000..a3de61ca2e887
--- /dev/null
+++ b/Generators/PowhegControl/python/decorators/UpperBoundDecorator.py
@@ -0,0 +1,29 @@
+# Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+
+## @PowhegControl UpperBoundDecorator
+#  Powheg runcard decorator for upper bound parameters
+#
+#  Authors: James Robinson  <james.robinson@cern.ch>
+
+#! /usr/bin/env python
+
+class UpperBoundDecorator(object) :
+
+  ## Define decorator name string
+  name = 'upper bound'
+
+  def __init__( self, decorated ) :
+    ## Attach decorations to Powheg configurable
+    decorated.run_card_decorators.append( self )
+    self.decorated = decorated
+
+    self.decorated.add_parameter( 'ixmax', 1,          desc='number of intervals (<= 10) in x (csi) grid to compute upper bounds', parameter='icsimax' )
+    self.decorated.add_parameter( 'iymax', 1,          desc='number of intervals (<= 10) in y grid to compute upper bounds' )
+    self.decorated.add_parameter( 'nubound', 10000,    desc='number of calls to setup upper bounds for radiation' )
+    self.decorated.add_parameter( 'radregion', -1,     desc='(-1:all regions) only generate radiation in the selected singular region' )
+    self.decorated.fix_parameter( 'use-old-ubound', 1, desc='(0:disabled; 1:enabled) read norm of upper bounding function from pwgubound.dat, if present' )
+    self.decorated.add_parameter( 'xupbound', 2,       desc='increase upper bound for radiation generation by this factor' )
+
+  def finalise(self) :
+    # Force parameters to integer values
+    [ setattr( self.decorated, parameter, int( getattr(self.decorated, parameter) ) ) for parameter in ('ixmax','iymax','nubound','xupbound') ]
diff --git a/Generators/PowhegControl/python/decorators/V2Decorator.py b/Generators/PowhegControl/python/decorators/V2Decorator.py
index 3a78429af80dc..04d2962e38c90 100644
--- a/Generators/PowhegControl/python/decorators/V2Decorator.py
+++ b/Generators/PowhegControl/python/decorators/V2Decorator.py
@@ -18,41 +18,40 @@ class V2Decorator(object) :
     self.decorated = decorated
     self.decorated._powheg_version_type = 2
 
-    self.decorated.add_parameter( 'btildeborn', -1,                             default='{0}', desc='(-1:use Powheg default)' )
-    self.decorated.add_parameter( 'btildecoll', -1,                             default='{0}', desc='(-1:use Powheg default)' )
-    self.decorated.add_parameter( 'btildereal', -1,                             default='{0}', desc='(-1:use Powheg default) for fixed order: distinguish real terms from Born/virtual/subtraction' )
-    self.decorated.add_parameter( 'btildevirt', -1,                             default='{0}', desc='(-1:use Powheg default)' )
-    self.decorated.add_parameter( 'doublefsr', -1,                              default='{0}', desc='(-1:disabled) reduce observable spikes by suppressing FSR emissions harder than the emitter.' )
-    self.decorated.add_parameter( 'evenmaxrat', 1,                              default='{0}', desc='(0:disabled; 1:enabled) speed up upper-bound calculation by taking maximum of identical processes.' )
-    self.decorated.add_parameter( 'fastbtlbound', 1,                            default='{0}', desc='(0:disabled; 1:enabled) use fast btilde bound.' )
-    self.decorated.add_parameter( 'fixedgrid', -1,                              default='{0}', desc='(-1:use Powheg default)' )
-    self.decorated.add_parameter( 'itmx1rm', -1,                                default='{0}', desc='(-1:use Powheg default) number of iterations for initializing the integration grid for the remnant.' )
-    self.decorated.add_parameter( 'itmx2rm', -1,                                default='{0}', desc='(-1:use Powheg default) number of iterations for computing the integral and finding upper bound for the remnant.' )
-    self.decorated.fix_parameter( 'lhrwgt_descr', 'nominal',                    default='{0}', desc='weight description.' )
-    self.decorated.fix_parameter( 'lhrwgt_id', 0,                               default='{0}', desc='weight ID.' )
-    self.decorated.fix_parameter( 'lhrwgt_group_combine', 'none',               default='{0}', desc='reweighting combination method.' )
-    self.decorated.fix_parameter( 'lhrwgt_group_name', 'nominal',               default='{0}', desc='group description.' )
-    self.decorated.fix_parameter( 'LOevents', ['-1','1'][self.decorated.is_LO], default='{0}', desc='produce LOPS events (scalup=ptj); in this case bornonly should also be enabled.' )
-    self.decorated.add_parameter( 'minlo', 1,                                   default='{0}', desc='(0:disabled; 1:enabled) use MiNLO.' ) # if minlo is set for unsupported processes, Powheg will crash with an 'st_bornorder' error
-    self.decorated.add_parameter( 'ncall1rm', -1,                               default='{0}', desc='(-1:use Powheg default) number of calls for initializing the integration grid for the remant.' )
-    self.decorated.add_parameter( 'ncall2rm', -1,                               default='{0}', desc='(-1:use Powheg default) number of calls for computing the integral and finding upper bound for the remnant.' )
-    self.decorated.add_parameter( 'noevents', -1,                               default='{0}', desc='(-1:use Powheg default)' )
-    self.decorated.add_parameter( 'novirtual', -1,                              default='{0}', desc='(-1:use Powheg default)' )
-    self.decorated.add_parameter( 'parallelstage', -1,                          default='{0}', desc='(-1:disabled) 1...4, which stage to perform in parallel.' )
-    self.decorated.add_parameter( 'stage2init', -1,                             default='{0}', desc='(-1:use Powheg default)' )
-    self.decorated.add_parameter( 'storemintupb', 1,                            default='{0}', desc='(0:disabled; 1:enabled) cache cross sections to speed up construction of upper bounding envelope.' )
-    ## Add radiation for NLO processes
-    if not self.decorated.is_LO :
-      self.decorated.add_parameter( 'olddij', -1,                               default='{0}', desc='(-1:use Powheg default)' )
+    self.decorated.add_parameter( 'btildeborn', -1,                        desc='(-1:use Powheg default)' )
+    self.decorated.add_parameter( 'btildecoll', -1,                        desc='(-1:use Powheg default)' )
+    self.decorated.add_parameter( 'btildereal', -1,                        desc='(-1:use Powheg default) for fixed order: distinguish real terms from Born/virtual/subtraction' )
+    self.decorated.add_parameter( 'btildevirt', -1,                        desc='(-1:use Powheg default)' )
+    self.decorated.add_parameter( 'check_bad_st2', -1,                     desc='(-1:Powheg default)' )
+    self.decorated.add_parameter( 'doublefsr', 0,                          desc='(0:disabled; 1:enabled) reduce observable spikes by suppressing FSR emissions harder than the emitter.' )
+    self.decorated.add_parameter( 'evenmaxrat', 1,                         desc='(0:disabled; 1:enabled) speed up upper-bound calculation by taking maximum of identical processes.' )
+    self.decorated.add_parameter( 'fastbtlbound', 1,                       desc='(0:disabled; 1:enabled) use fast btilde bound.' )
+    self.decorated.add_parameter( 'fixedgrid', -1,                         desc='(-1:use Powheg default)' )
+    self.decorated.add_parameter( 'itmx1rm', -1,                           desc='(-1:use Powheg default) number of iterations for initializing the integration grid for the remnant.' )
+    self.decorated.add_parameter( 'itmx2rm', -1,                           desc='(-1:use Powheg default) number of iterations for computing the integral and finding upper bound for the remnant.' )
+    self.decorated.fix_parameter( 'lhrwgt_descr', 'nominal',               desc='weight description.' )
+    self.decorated.fix_parameter( 'lhrwgt_group_combine', 'none',          desc='reweighting combination method.' )
+    self.decorated.fix_parameter( 'lhrwgt_group_name', 'nominal',          desc='group description.' )
+    self.decorated.fix_parameter( 'lhrwgt_id', 0,                          desc='weight ID.' )
+    self.decorated.fix_parameter( 'LOevents', [0,1][self.decorated.is_LO], desc='(0:disabled; 1:enabled) produce LOPS events (scalup=ptj); in this case bornonly should also be enabled.' )
+    self.decorated.add_parameter( 'minlo', 1,                              desc='(0:disabled; 1:enabled) use MiNLO.' ) # if minlo is set for unsupported processes, Powheg will crash with an 'st_bornorder' error
+    self.decorated.add_parameter( 'ncall1rm', -1,                          desc='(-1:use Powheg default) number of calls for initializing the integration grid for the remant.' )
+    self.decorated.add_parameter( 'ncall2rm', -1,                          desc='(-1:use Powheg default) number of calls for computing the integral and finding upper bound for the remnant.' )
+    self.decorated.fix_parameter( 'ncallfrominput', -1,                    desc='(-1:disabled) read ncall parameters from input.' )
+    self.decorated.add_parameter( 'noevents', -1,                          desc='(-1:use Powheg default)' )
+    self.decorated.add_parameter( 'novirtual', -1,                         desc='(-1:use Powheg default)' )
+    self.decorated.add_parameter( 'parallelstage', -1,                     desc='(-1:disabled) 1...4, which stage to perform in parallel.' )
+    self.decorated.add_parameter( 'stage2init', -1,                        desc='(-1:use Powheg default)' )
+    self.decorated.add_parameter( 'storemintupb', 1,                       desc='(0:disabled; 1:enabled) cache cross sections to speed up construction of upper bounding envelope.' )
+    self.decorated.fix_parameter( 'xgriditeration', 1,                     desc='iteration level for the calculation of the importance sampling grid (only relevant wehn parallelstage=1).' )
 
 
   def finalise( self ) :
     ## Set up parallelisation parameters if in multicore mode
     if self.decorated.cores > 1 :
-      if self.decorated.ncall1rm is not None : self.decorated.ncall1rm = int( self.decorated.ncall1rm / self.decorated.cores + 0.5 )
+      if self.decorated.ncall1rm != -1 : self.decorated.ncall1rm = int( self.decorated.ncall1rm / self.decorated.cores + 0.5 )
+      # if self.decorated.ncall2rm != -1 : self.decorated.ncall2rm = int( self.decorated.ncall2rm / self.decorated.cores + 0.5 )
       self.decorated.parallelstage = 1
-      self.decorated.fix_parameter( 'ncallfrominput', -1, default='{0}', desc='(-1:disabled) read ncall parameters from input.' )
-      self.decorated.fix_parameter( 'xgriditeration', 1,  default='{0}', desc='(default 1) iteration level for the calculation of the importance sampling grid (only relevant for parallelstage=1).' )
 
     ## Fix integration parameters before printing list for user
     [ self.decorated.fix_parameter( parameter ) for parameter in ['parallelstage'] ]
diff --git a/Generators/PowhegControl/python/decorators/VBFVectorBosonDecorator.py b/Generators/PowhegControl/python/decorators/VBFVectorBosonDecorator.py
new file mode 100644
index 0000000000000..04d15bc1789cb
--- /dev/null
+++ b/Generators/PowhegControl/python/decorators/VBFVectorBosonDecorator.py
@@ -0,0 +1,67 @@
+# Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+
+## @PowhegControl VBFVectorBosonDecorator
+#  Powheg runcard decorator for VBF vector boson processes
+#
+#  Authors: James Robinson  <james.robinson@cern.ch>
+
+#! /usr/bin/env python
+from .. import ATLASCommonParameters
+
+class VBFVectorBosonDecorator(object) :
+
+  ## Define decorator name string
+  name = 'VBF vector boson decay'
+
+  def __init__( self, decorated ) :
+    ## Attach decorations to Powheg configurable
+    decorated.run_card_decorators.append( self )
+    self.decorated = decorated
+
+    # For additional run card
+    self.decorated.allowed_decay_modes = []
+    self.decorated.add_phantom( 'decay_mode', None,                                      desc='Vector boson decay mode' )
+    self.decorated.add_phantom( 'mass_H', ATLASCommonParameters.mass_H,                  desc='mass of Higgs boson in GeV' )
+    self.decorated.add_phantom( 'width_H', ATLASCommonParameters.width_H,                desc='width of Higgs boson in GeV' )
+    self.decorated.add_phantom( 'mass_t', ATLASCommonParameters.mass_t,                  desc='mass of top quark in GeV' )
+    self.decorated.add_phantom( 'mass_tau', ATLASCommonParameters.mass_tau,              desc='mass of tau in GeV' )
+    self.decorated.add_phantom( 'mass_b', ATLASCommonParameters.mass_b,                  desc='mass of bottom quark in GeV' )
+    self.decorated.add_phantom( 'mass_c', ATLASCommonParameters.mass_c,                  desc='mass of charm quark in GeV' )
+    self.decorated.add_phantom( 'gfermi', ATLASCommonParameters.G_F,                     desc='Fermi constant' )
+    self.decorated.add_phantom( 'alphaem_inv', 1.0/float(ATLASCommonParameters.alphaem), desc='EM coupling' )
+    self.decorated.add_phantom( 'sthw2', ATLASCommonParameters.sin2thW_eff,              desc='sin**2 theta w' )
+    self.decorated.add_phantom( 'mass_W', ATLASCommonParameters.mass_W,                  desc='mass of W-boson in GeV' )
+    self.decorated.add_phantom( 'mass_Z', ATLASCommonParameters.mass_Z,                  desc='mass of Z-boson in GeV' )
+    # Normal decorations
+    self.decorated.add_parameter( 'mll_gencut', 20., desc='(minimum 15) cut on the invariant dilepton mass in GeV. Needed to avoid singularities from virtual photon decays to two massless leptons' )
+    self.decorated.fix_parameter( 'Phasespace', 1,   desc='(1:standard phasespace; 2:use separate unweighted events as input' )
+    self.decorated.add_parameter( 'ptj_gencut', 20,  desc='Generation cut on the jets pT in the phase space generator. Should be used when bornsuppfact is set to 0' )
+    self.decorated.add_parameter( 'ptsuppfact', -1,  desc='(-1:use Powheg default) Born pT suppression factor' )
+
+
+  def finalise( self ) :
+    VBF_runcard_entries = []
+    # Convert allowed decay mode into PROC_ID/DECAYMODE
+    if self.decorated.decay_mode not in self.decorated.allowed_decay_modes :
+      self.decorated.logger.warning( 'Decay mode {0} not recognised!'.format( self.decorated.decay_mode ) )
+    vector_boson_type = self.decorated.decay_mode[0] if self.decorated.decay_mode[0] != 'W' else self.decorated.decay_mode[0:2]
+    vector_boson_decay = self.decorated.decay_mode.replace(vector_boson_type,'').replace('v','').replace('ee','e').replace('mumu','mu')
+    # Add runcard entries
+    VBF_runcard_entries.append(( 'PROC_ID', { 'Z':120, 'Wp':130, 'Wm':140 }[vector_boson_type], vector_boson_type.replace('p','+').replace('m','-') ))
+    VBF_runcard_entries.append(( 'DECAYMODE', { 'e':11, 'mu':13 }[vector_boson_decay], vector_boson_decay ))
+    VBF_runcard_entries.append(( 'HMASS', self.decorated.mass_H, self.decorated.phantom_parameters['mass_H'][2] ))
+    VBF_runcard_entries.append(( 'HWIDTH', self.decorated.width_H, self.decorated.phantom_parameters['width_H'][2] ))
+    VBF_runcard_entries.append(( 'EWSCHEME', 4, 'Explicitly specify all EW parameters' ))
+    VBF_runcard_entries.append(( 'ANOM_CPL', 0, 'Disable anomalous couplings as these are not supported by the authors' ))
+    VBF_runcard_entries.append(( 'TOPMASS', self.decorated.mass_t, self.decorated.phantom_parameters['mass_t'][2] ))
+    VBF_runcard_entries.append(( 'TAU_MASS', self.decorated.mass_tau, self.decorated.phantom_parameters['mass_tau'][2] ))
+    VBF_runcard_entries.append(( 'BOTTOMMASS', self.decorated.mass_b, self.decorated.phantom_parameters['mass_b'][2] ))
+    VBF_runcard_entries.append(( 'CHARMMASS', self.decorated.mass_c, self.decorated.phantom_parameters['mass_c'][2] ))
+    VBF_runcard_entries.append(( 'FERMI_CONST', self.decorated.gfermi, self.decorated.phantom_parameters['gfermi'][2] ))
+    VBF_runcard_entries.append(( 'INVALFA', self.decorated.alphaem_inv, self.decorated.phantom_parameters['alphaem_inv'][2] ))
+    VBF_runcard_entries.append(( 'SIN2W', self.decorated.sthw2, self.decorated.phantom_parameters['sthw2'][2] ))
+    VBF_runcard_entries.append(( 'WMASS', self.decorated.mass_W, self.decorated.phantom_parameters['mass_W'][2] ))
+    VBF_runcard_entries.append(( 'ZMASS', self.decorated.mass_Z, self.decorated.phantom_parameters['mass_Z'][2] ))
+    # Write special VBF runcard
+    with open( 'vbfnlo.input', 'w' ) as f :
+      [ f.write( '{0:<15} {1:<15} ! {2}\n'.format(*runcard_entry) ) for runcard_entry in VBF_runcard_entries ]
diff --git a/Generators/PowhegControl/python/decorators/VPlusJetsDecorator.py b/Generators/PowhegControl/python/decorators/VPlusJetsDecorator.py
deleted file mode 100644
index 2c1ddd2230a62..0000000000000
--- a/Generators/PowhegControl/python/decorators/VPlusJetsDecorator.py
+++ /dev/null
@@ -1,23 +0,0 @@
-# Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
-
-## @PowhegControl VPlusJetsDecorator
-#  Powheg runcard decorator for ISR/FSR V+jets parameters
-#
-#  Authors: James Robinson  <james.robinson@cern.ch>
-
-#! /usr/bin/env python
-
-class VPlusJetsDecorator(object) :
-
-  ## Define decorator name string
-  name = 'V+jets'
-
-  def __init__( self, decorated ) :
-    ## Attach decorations to Powheg configurable
-    decorated.run_card_decorators.append( self )
-    self.decorated = decorated
-
-    self.decorated.add_parameter( 'par_fsrtinycsi', -1, default='{0}', desc='(-1:use Powheg default)' )
-    self.decorated.add_parameter( 'par_fsrtinyy', -1,   default='{0}', desc='(-1:use Powheg default)' )
-    self.decorated.add_parameter( 'par_isrtinycsi', -1, default='{0}', desc='(-1:use Powheg default)' )
-    self.decorated.add_parameter( 'par_isrtinyy', -1,   default='{0}', desc='(-1:use Powheg default)' )
diff --git a/Generators/PowhegControl/python/decorators/VectorBosonDecayDecorator.py b/Generators/PowhegControl/python/decorators/VectorBosonDecayModeDecorator.py
similarity index 58%
rename from Generators/PowhegControl/python/decorators/VectorBosonDecayDecorator.py
rename to Generators/PowhegControl/python/decorators/VectorBosonDecayModeDecorator.py
index 0bd59a059ce27..ee3977fc0dd3a 100644
--- a/Generators/PowhegControl/python/decorators/VectorBosonDecayDecorator.py
+++ b/Generators/PowhegControl/python/decorators/VectorBosonDecayModeDecorator.py
@@ -1,20 +1,20 @@
 # Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
 
-## @PowhegControl VectorBosonDecayDecorator
+## @PowhegControl VectorBosonDecayModeDecorator
 #  Powheg runcard decorator for vector boson decays
 #
 #  Authors: James Robinson  <james.robinson@cern.ch>
 
 #! /usr/bin/env python
 
-class VectorBosonDecayDecorator(object) :
+class VectorBosonDecayModeDecorator(object) :
 
   ## Define decorator name string
-  name = 'vector boson decay'
+  name = 'vector boson decay mode'
 
   def __init__( self, decorated ) :
     ## Attach decorations to Powheg configurable
     decorated.run_card_decorators.append( self )
     self.decorated = decorated
 
-    self.decorated.add_parameter( 'vdecaymode', 1, default='{0}', desc='(1:e, 2:mu, 3: tau). (DM 1:V-mediated fermionic DM; 2:A-mediated fermionic DM;-1, -2 for full theory)' )
+    self.decorated.add_parameter( 'vdecaymode', 1, desc='(1:e, 2:mu, 3: tau). (DM 1:V-mediated fermionic DM; 2:A-mediated fermionic DM;-1, -2 for full theory)' )
diff --git a/Generators/PowhegControl/python/decorators/VectorBosonJetJetDecorator.py b/Generators/PowhegControl/python/decorators/VectorBosonJetJetDecorator.py
new file mode 100644
index 0000000000000..ff4038f4a922f
--- /dev/null
+++ b/Generators/PowhegControl/python/decorators/VectorBosonJetJetDecorator.py
@@ -0,0 +1,23 @@
+# Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+
+## @PowhegControl VectorBosonJetJetDecorator
+#  Powheg runcard decorator for vector boson plus two jets processes
+#
+#  Authors: James Robinson  <james.robinson@cern.ch>
+
+#! /usr/bin/env python
+from .. import ATLASCommonParameters
+
+class VectorBosonJetJetDecorator(object) :
+
+  ## Define decorator name string
+  name = 'Vector boson + two jets'
+
+  def __init__( self, decorated ) :
+    ## Attach decorations to Powheg configurable
+    decorated.run_card_decorators.append( self )
+    self.decorated = decorated
+
+    self.decorated.add_parameter( 'ptborncut', -1,                       desc='(-1:Powheg default)' )
+    self.decorated.add_parameter( 'zfixedwidth', -1,                     desc='(-1:Powheg default)' )
+    self.decorated.add_parameter( 'zmass', ATLASCommonParameters.mass_Z, desc='Z mass in GeV' )
diff --git a/Generators/PowhegControl/python/decorators/WDecayModeDecorator.py b/Generators/PowhegControl/python/decorators/WDecayModeDecorator.py
index 241cd1765aeb7..2485db676ac97 100644
--- a/Generators/PowhegControl/python/decorators/WDecayModeDecorator.py
+++ b/Generators/PowhegControl/python/decorators/WDecayModeDecorator.py
@@ -17,4 +17,4 @@ class WDecayModeDecorator(object) :
     decorated.run_card_decorators.append( self )
     self.decorated = decorated
 
-    self.decorated.add_parameter( 'wdecaymode', 11111, default='{0}', desc='5 digits indicating the maximum number of (e,mu,tau,u,c) allowed in decays' )
+    self.decorated.add_parameter( 'wdecaymode', 11111, desc='5 digits indicating the maximum number of (e,mu,tau,u,c) allowed in decays' )
diff --git a/Generators/PowhegControl/python/decorators/WIDDecorator.py b/Generators/PowhegControl/python/decorators/WIDDecorator.py
index 2da6a12cd51cd..78e4112486efc 100644
--- a/Generators/PowhegControl/python/decorators/WIDDecorator.py
+++ b/Generators/PowhegControl/python/decorators/WIDDecorator.py
@@ -17,4 +17,4 @@ class WIDDecorator(object) :
     decorated.run_card_decorators.append( self )
     self.decorated = decorated
 
-    self.decorated.add_parameter( 'idvecbos', 24, default='{0}', desc='PDG ID for vector boson to be produced' )
+    self.decorated.add_parameter( 'idvecbos', 24, desc='PDG ID for vector boson to be produced' )
diff --git a/Generators/PowhegControl/python/decorators/WMassWindowDecorator.py b/Generators/PowhegControl/python/decorators/WMassWindowDecorator.py
index e96b244b83bbd..01c807a7f63ea 100644
--- a/Generators/PowhegControl/python/decorators/WMassWindowDecorator.py
+++ b/Generators/PowhegControl/python/decorators/WMassWindowDecorator.py
@@ -17,7 +17,7 @@ class WMassWindowDecorator(object) :
     decorated.run_card_decorators.append( self )
     self.decorated = decorated
 
-    self.decorated.add_parameter( 'mass_W_low', 1.0,      default='{0}', desc='M_W > mass low', parameter='min_w_mass' )
-    self.decorated.add_parameter( 'mass_W_high', 14000.0, default='{0}', desc='M_W < mass high', parameter='max_w_mass' )
-    self.decorated.add_parameter( 'mass_W_low', 1.0,      default='{0}', desc='M_W > mass low', parameter='min_W_mass' )
-    self.decorated.add_parameter( 'mass_W_high', 14000.0, default='{0}', desc='M_W < mass high', parameter='max_W_mass')
+    self.decorated.add_parameter( 'mass_W_low', 1.0,      desc='M_W > mass low', parameter='min_w_mass' )
+    self.decorated.add_parameter( 'mass_W_high', 14000.0, desc='M_W < mass high', parameter='max_w_mass' )
+    self.decorated.add_parameter( 'mass_W_low', 1.0,      desc='M_W > mass low', parameter='min_W_mass' )
+    self.decorated.add_parameter( 'mass_W_high', 14000.0, desc='M_W < mass high', parameter='max_W_mass')
diff --git a/Generators/PowhegControl/python/decorators/WWDecayDecorator.py b/Generators/PowhegControl/python/decorators/WWDecayDecorator.py
index 4bdcc16d64625..a659e21decd8f 100644
--- a/Generators/PowhegControl/python/decorators/WWDecayDecorator.py
+++ b/Generators/PowhegControl/python/decorators/WWDecayDecorator.py
@@ -12,13 +12,13 @@ class WWDecayDecorator(object) :
   ## Define decorator name string
   name = 'WW decay'
 
-  def __init__( self, decorated, boson='W' ) :
+  def __init__( self, decorated, boson ) :
     ## Attach decorations to Powheg configurable
     decorated.run_card_decorators.append( self )
     self.decorated = decorated
 
     self.decorated.allowed_decay_modes = []
-    self.decorated.add_phantom( 'decay_mode', None, default='{0}', desc='WW decay mode' )
+    self.decorated.add_phantom( 'decay_mode', None, desc='WW decay mode' )
     self.boson = boson
 
 
diff --git a/Generators/PowhegControl/python/decorators/ZMassWindowDecorator.py b/Generators/PowhegControl/python/decorators/ZMassWindowDecorator.py
index e96310c58cd07..d49378dc15d45 100644
--- a/Generators/PowhegControl/python/decorators/ZMassWindowDecorator.py
+++ b/Generators/PowhegControl/python/decorators/ZMassWindowDecorator.py
@@ -17,7 +17,7 @@ class ZMassWindowDecorator(object) :
     decorated.run_card_decorators.append( self )
     self.decorated = decorated
 
-    self.decorated.add_parameter( 'mass_Z_low', 1.0,      default='{0}', desc='M_Z > mass low', parameter='min_z_mass' )
-    self.decorated.add_parameter( 'mass_Z_high', 14000.0, default='{0}', desc='M_Z < mass high', parameter='max_z_mass' )
-    self.decorated.add_parameter( 'mass_Z_low', 1.0,      default='{0}', desc='M_Z > mass low', parameter='min_Z_mass' )
-    self.decorated.add_parameter( 'mass_Z_high', 14000.0, default='{0}', desc='M_Z < mass high', parameter='max_Z_mass')
+    self.decorated.add_parameter( 'mass_Z_low', 1.0,      desc='M_Z > mass low', parameter='min_z_mass' )
+    self.decorated.add_parameter( 'mass_Z_high', 14000.0, desc='M_Z < mass high', parameter='max_z_mass' )
+    self.decorated.add_parameter( 'mass_Z_low', 1.0,      desc='M_Z > mass low', parameter='min_Z_mass' )
+    self.decorated.add_parameter( 'mass_Z_high', 14000.0, desc='M_Z < mass high', parameter='max_Z_mass')
diff --git a/Generators/PowhegControl/python/decorators/ZeroWidthDecorator.py b/Generators/PowhegControl/python/decorators/ZeroWidthDecorator.py
index a72e149bcd475..9d07a6eea6e8d 100644
--- a/Generators/PowhegControl/python/decorators/ZeroWidthDecorator.py
+++ b/Generators/PowhegControl/python/decorators/ZeroWidthDecorator.py
@@ -17,4 +17,4 @@ class ZeroWidthDecorator(object) :
     decorated.run_card_decorators.append( self )
     self.decorated = decorated
 
-    self.decorated.add_parameter( 'zerowidth', 0, default='{0}', desc='(0:disabled; 1:enabled) use on-shell quarks/bosons only' )
+    self.decorated.add_parameter( 'zerowidth', 0, desc='(0:disabled; 1:enabled) use on-shell quarks/bosons only' )
diff --git a/Generators/PowhegControl/python/decorators/__init__.py b/Generators/PowhegControl/python/decorators/__init__.py
index 612d917e41536..3eb18b8f3ba7d 100644
--- a/Generators/PowhegControl/python/decorators/__init__.py
+++ b/Generators/PowhegControl/python/decorators/__init__.py
@@ -2,29 +2,34 @@
 
 from AnomalousCouplingDecorator import *
 from BaseDecorator import *
+from BreitWignerWidthDecorator import *
 from CKKWDecorator import *
 from CKMDecorator import *
 from DarkMatterDecorator import *
 from DarkMatterPhiDecorator import *
 from DibosonDecorator import *
 from DibosonInterferenceDecorator import *
+from DileptonMassDecorator import *
+from EWPropertiesDecorator import *
 from ExtraTestsDecorator import *
 from FakeVirtualDecorator import *
 from FixedScaleDecorator import *
+from GenericScaleDecorator import *
 from HeavyQuarkDecorator import *
 from HiggsDecayModeDecorator import *
 from HiggsDecayPropertiesDecorator import *
 from HiggsFixedWidthDecorator import *
-from HiggsMassWindowDecorator import *
 from HiggsPropertiesDecorator import *
-from HPlusJetsDecorator import *
-from HVJDecorator import *
+from HiggsVectorBosonDecorator import *
+from HiggsVectorBosonJetDecorator import *
+from ISRFSRDecorator import *
 from JacsingDecorator import *
 from LeptonMassDecorator import *
-from LHEv3Decorator import *
 from MassWindowDecorator import *
 from MiNLONLLDecorator import *
 from NNLOReweightingDecorator import *
+from OldDijDecorator import *
+from PDFReweightingDecorator import *
 from RadiationParametrisationDecorator import *
 from RunningScaleDecorator import *
 from RunningScalesDecorator import *
@@ -32,15 +37,14 @@ from RunningWidthDecorator import *
 from SecondGenerationQuarkMassDecorator import *
 from SemileptonicDecorator import *
 from Sin2ThetaWDecorator import *
-from SingleTopDecorator import *
-from SingleVectorBosonDecorator import *
 from TopDecayBranchingDecorator import *
 from TopDecayModeDecorator import *
-from TopDecaySecondGenerationQuarkDecorator import *
-from TopMassDecorator import *
-from VectorBosonDecayDecorator import *
+from TopPropertiesDecorator import *
+from UpperBoundDecorator import *
+from VectorBosonDecayModeDecorator import *
+from VectorBosonJetJetDecorator import *
 from V2Decorator import *
-from VPlusJetsDecorator import *
+from VBFVectorBosonDecorator import *
 from WIDDecorator import *
 from WDecayModeDecorator import *
 from WMassWindowDecorator import *
diff --git a/Generators/PowhegControl/python/processes/PowhegConfig_DMGG.py b/Generators/PowhegControl/python/processes/PowhegConfig_DMGG.py
index 86b75a245ed18..1e8ea841ccda8 100644
--- a/Generators/PowhegControl/python/processes/PowhegConfig_DMGG.py
+++ b/Generators/PowhegControl/python/processes/PowhegConfig_DMGG.py
@@ -19,27 +19,31 @@ class PowhegConfig_DMGG(PowhegConfig_base) :
     self._powheg_executable += '/DMGG/pwhg_main'
 
     ## Add process specific options
-    self.add_parameter( 'Lambda', 100,    desc='(default 100) UV scale', parameter='DMLambda' )
-    self.add_parameter( 'nloformfact', 1, desc='(default 1, enabled) include Higgs-specific corrections into GGS and GGP form factor' )
+    self.add_parameter( 'Lambda', 100,    desc='UV scale', parameter='DMLambda' )
+    self.add_parameter( 'nloformfact', 1, desc='(0:disabled; 1:enabled) include Higgs-specific corrections into GGS and GGP form factor' )
 
     ## Decorate with generic option sets
     self.add_parameter_set( 'CKKW' )
     self.add_parameter_set( 'dark matter' )
     self.add_parameter_set( 'dark matter phi' )
     self.add_parameter_set( 'extra tests' )
-    self.add_parameter_set( 'LHEv3' )
+    self.add_parameter_set( 'generic scale' )
     self.add_parameter_set( 'mass window' )
-    self.add_parameter_set( 'running scale' )
+    self.add_parameter_set( 'old Dij' )
+    self.add_parameter_set( 'PDF reweighting' )
+    self.add_parameter_set( 'running scale', description='(0:2mX fixed; 1:pTj; 2:XXbar invmass; 3:Ht/2)' )
     self.add_parameter_set( 'running width' )
+    self.add_parameter_set( 'upper bound' )
     self.add_parameter_set( 'v2' )
 
     ## Set optimised integration parameters
-    self.ncall1   = 2000000
+    self.ncall1   = 800000
     self.itmx1    = 10
     self.ncall2   = 100000
     self.nubound  = 100000
     self.foldx    = 2
     self.foldy    = 2
+    self.foldphi  = 1
 
     ## Override defaults
     self.bornktmin    = 100.0
diff --git a/Generators/PowhegControl/python/processes/PowhegConfig_DMS_tloop.py b/Generators/PowhegControl/python/processes/PowhegConfig_DMS_tloop.py
index f0b0cf4b1d1a9..b531d79b58477 100644
--- a/Generators/PowhegControl/python/processes/PowhegConfig_DMS_tloop.py
+++ b/Generators/PowhegControl/python/processes/PowhegConfig_DMS_tloop.py
@@ -22,11 +22,11 @@ class PowhegConfig_DMS_tloop(PowhegConfig_base) :
     self.add_parameter_set( 'CKKW' )
     self.add_parameter_set( 'dark matter' )
     self.add_parameter_set( 'dark matter phi' )
-    self.add_parameter_set( 'LHEv3' )
     self.add_parameter_set( 'mass window' )
-    self.add_parameter_set( 'running scale' )
+    self.add_parameter_set( 'PDF reweighting' )
+    self.add_parameter_set( 'running scale', description='(0:2mX fixed; 1:pTj; 2:XXbar invmass; 3:Ht/2)' )
     self.add_parameter_set( 'running width' )
-    self.add_parameter_set( 'top mass' )
+    self.add_parameter_set( 'top properties' )
     self.add_parameter_set( 'v2' )
 
     ## Set optimised integration parameters
diff --git a/Generators/PowhegControl/python/processes/PowhegConfig_DMV.py b/Generators/PowhegControl/python/processes/PowhegConfig_DMV.py
index 46aeee3705b24..a01a318bfd84b 100644
--- a/Generators/PowhegControl/python/processes/PowhegConfig_DMV.py
+++ b/Generators/PowhegControl/python/processes/PowhegConfig_DMV.py
@@ -25,17 +25,20 @@ class PowhegConfig_DMV(PowhegConfig_base) :
     ## Decorate with generic option sets
     self.add_parameter_set( 'dark matter' )
     self.add_parameter_set( 'extra tests' )
-    self.add_parameter_set( 'LHEv3' )
+    self.add_parameter_set( 'generic scale' )
     self.add_parameter_set( 'mass window' )
-    self.add_parameter_set( 'running scale' )
+    self.add_parameter_set( 'old Dij' )
+    self.add_parameter_set( 'PDF reweighting' )
+    self.add_parameter_set( 'running scale', description='(0:2mX fixed; 1:pTj; 2:XXbar invmass; 3:Ht/2)' )
     self.add_parameter_set( 'running width' )
-    self.add_parameter_set( 'vector boson decay' )
+    self.add_parameter_set( 'upper bound' )
     self.add_parameter_set( 'v2' )
+    self.add_parameter_set( 'vector boson decay mode' )
 
     ## Set optimised integration parameters
-    self.ncall1   = 100000
-    self.ncall2   = 1000000
-    self.nubound  = 1000000
+    self.ncall1   = 40000
+    self.ncall2   = 80000
+    self.nubound  = 80000
     self.xupbound = 4
     self.foldx    = 2
     self.foldy    = 2
diff --git a/Generators/PowhegControl/python/processes/PowhegConfig_HWj.py b/Generators/PowhegControl/python/processes/PowhegConfig_HWj.py
index ea668108f8404..be103af24b2e9 100644
--- a/Generators/PowhegControl/python/processes/PowhegConfig_HWj.py
+++ b/Generators/PowhegControl/python/processes/PowhegConfig_HWj.py
@@ -19,25 +19,28 @@ class PowhegConfig_HWj(PowhegConfig_base) :
     self._powheg_executable += '/HWJ/pwhg_main'
 
     ## Add process specific options
-    self.add_parameter( 'bornsuppfactW', -1, desc='(default -1, Powheg default)' )
+    self.add_parameter( 'bornsuppfactW', -1, desc='(-1:Powheg default)' )
     self.add_parameter( 'kappa_ghw',      1, desc='multiplicative kappa-factor of the Higgs-W coupling' )
 
     ## Decorate with generic option sets
-    self.add_parameter_set( 'Higgs mass window' )
+    self.add_parameter_set( 'generic scale' )
+    self.add_parameter_set( 'Higgs + vector boson' )
+    self.add_parameter_set( 'Higgs + vector boson + jet' )
     self.add_parameter_set( 'Higgs properties' )
-    self.add_parameter_set( 'Higgs+V+jet' )
-    self.add_parameter_set( 'LHEv3' )
     self.add_parameter_set( 'MiNLO NNLL' )
+    self.add_parameter_set( 'old Dij' )
+    self.add_parameter_set( 'PDF reweighting' )
     self.add_parameter_set( 'running scales' )
-    self.add_parameter_set( 'top mass' )
-    self.add_parameter_set( 'vector boson decay' )
+    self.add_parameter_set( 'top properties' )
+    self.add_parameter_set( 'upper bound' )
+    self.add_parameter_set( 'vector boson decay mode' )
     self.add_parameter_set( 'v2' )
     self.add_parameter_set( 'W ID' )
     self.add_parameter_set( 'W mass window' )
 
     ## Set optimised integration parameters
     self.itmx1    = 2
-    self.ncall1   = 50000
+    self.ncall1   = 70000
     self.ncall2   = 70000
     self.nubound  = 150000
     self.xupbound = 20
diff --git a/Generators/PowhegControl/python/processes/PowhegConfig_HZj.py b/Generators/PowhegControl/python/processes/PowhegConfig_HZj.py
index bfe723f5e1726..5398e82f8bfe9 100644
--- a/Generators/PowhegControl/python/processes/PowhegConfig_HZj.py
+++ b/Generators/PowhegControl/python/processes/PowhegConfig_HZj.py
@@ -19,36 +19,38 @@ class PowhegConfig_HZj(PowhegConfig_base) :
     self._powheg_executable += '/HZJ/pwhg_main'
 
     ## Add process specific options
-    self.add_parameter( 'bornsuppfactV', -1 )
     self.add_parameter( 'kappa_ghz', 1, desc='multiplicative kappa-factor of the Higgs-Z coupling' )
-    self.add_parameter( 'ptVhigh', -1 )
-    self.add_parameter( 'ptVlow', -1 )
-    self.add_parameter( 'Vstep', -1 )
 
     ## Decorate with generic option sets
-    self.add_parameter_set( 'Higgs mass window' )
+    self.add_parameter_set( 'generic scale' )
+    self.add_parameter_set( 'Higgs + vector boson' )
+    self.add_parameter_set( 'Higgs + vector boson + jet' )
     self.add_parameter_set( 'Higgs properties' )
-    self.add_parameter_set( 'Higgs+V+jet' )
-    self.add_parameter_set( 'LHEv3' )
     self.add_parameter_set( 'MiNLO NNLL' )
+    self.add_parameter_set( 'old Dij' )
+    self.add_parameter_set( 'PDF reweighting' )
     self.add_parameter_set( 'running scales' )
-    self.add_parameter_set( 'top mass' )
-    self.add_parameter_set( 'vector boson decay' )
+    self.add_parameter_set( 'top properties' )
+    self.add_parameter_set( 'upper bound' )
     self.add_parameter_set( 'v2' )
+    self.add_parameter_set( 'vector boson decay mode' )
     self.add_parameter_set( 'Z mass window' )
 
     ## Set optimised integration parameters
-    self.ncall1   = 40000
-    self.ncall2   = 150000
-    self.nubound  = 100000
+    self.itmx1    = 8
+    self.itmx2    = 5
+    self.ncall1   = 60000
+    self.ncall2   = 60000
+    self.nubound  = 300000
     self.xupbound = 4
-    self.foldx    = 5
-    self.foldy    = 10
+    self.foldx    = 10
+    self.foldy    = 5
     self.foldphi  = 5
 
+
     ## Override defaults
     self.doublefsr   = 1
-    self.mass_Z_low  = 60.0
+    self.mass_Z_low  = 10.0
     self.mass_Z_high = 2.0 * self.beam_energy
 
     self.populate_default_strings()
diff --git a/Generators/PowhegControl/python/processes/PowhegConfig_Hj.py b/Generators/PowhegControl/python/processes/PowhegConfig_Hj.py
index 2503dff35e5bc..07d31daf9022b 100644
--- a/Generators/PowhegControl/python/processes/PowhegConfig_Hj.py
+++ b/Generators/PowhegControl/python/processes/PowhegConfig_Hj.py
@@ -19,23 +19,27 @@ class PowhegConfig_Hj(PowhegConfig_base) :
     self._powheg_executable += '/HJ/pwhg_main'
 
     ## Add process specific options
-    self.add_parameter( 'bmass_in_minlo', 0,   desc='(default 0) 1: use non-zero b-mass in MiNLO' )
-    self.add_parameter( 'quarkmasseffects', 1, desc='(default 0) 1: enable quark mass effects' )
+    self.add_parameter( 'bmass_in_minlo', 0,   desc='(0:disabled; 1:enabled) use non-zero b-mass in MiNLO' )
+    self.add_parameter( 'quarkmasseffects', 1, desc='(0:disabled; 1:enabled) quark mass effects' )
 
     ## Decorate with generic option sets
+    self.add_parameter_set( 'Breit-Wigner width' )
     self.add_parameter_set( 'CKKW' )
-    self.add_parameter_set( 'extra tests' )
-    self.add_parameter_set( 'H+jets' )
+    self.add_parameter_set( 'generic scale' )
     self.add_parameter_set( 'Higgs decay properties' )
     self.add_parameter_set( 'Higgs fixed width' )
     self.add_parameter_set( 'Higgs properties' )
-    self.add_parameter_set( 'LHEv3' )
     self.add_parameter_set( 'MiNLO NNLL' )
+    self.add_parameter_set( 'old Dij' )
+    self.add_parameter_set( 'PDF reweighting' )
     self.add_parameter_set( 'NNLO reweighting' )
+    self.add_parameter_set( 'radiation parametrisation' )
     self.add_parameter_set( 'running scales' )
-    self.add_parameter_set( 'top mass' )
+    self.add_parameter_set( 'top properties' )
+    self.add_parameter_set( 'upper bound' )
     self.add_parameter_set( 'v2' )
 
+
     ## Set optimised integration parameters
     self.ncall1   = 150000
     self.ncall1rm = 150000
diff --git a/Generators/PowhegControl/python/processes/PowhegConfig_Hjj.py b/Generators/PowhegControl/python/processes/PowhegConfig_Hjj.py
index 5be0b0c86ef52..0458b4505af1c 100644
--- a/Generators/PowhegControl/python/processes/PowhegConfig_Hjj.py
+++ b/Generators/PowhegControl/python/processes/PowhegConfig_Hjj.py
@@ -22,16 +22,19 @@ class PowhegConfig_Hjj(PowhegConfig_base) :
     self.logger.warning( 'Integration parameters have not been validated - see https://twiki.cern.ch/twiki/bin/viewauth/AtlasProtected/PowhegForATLAS#Changing_POWHEG_BOX_integration' )
 
     ## Add process specific options
-    self.add_parameter( 'polecheck', -1 )
+    self.add_parameter( 'polecheck', -1, desc='(-1:Powheg default)' )
 
     ## Decorate with generic option sets
+    self.add_parameter_set( 'Breit-Wigner width' )
     self.add_parameter_set( 'CKKW' )
-    self.add_parameter_set( 'H+jets' )
+    self.add_parameter_set( 'generic scale' )
     self.add_parameter_set( 'Higgs fixed width' )
     self.add_parameter_set( 'Higgs properties' )
-    self.add_parameter_set( 'LHEv3' )
+    self.add_parameter_set( 'old Dij' )
+    self.add_parameter_set( 'PDF reweighting' )
     self.add_parameter_set( 'radiation parametrisation' )
     self.add_parameter_set( 'running scales' )
+    self.add_parameter_set( 'upper bound' )
     self.add_parameter_set( 'v2' )
 
     ## Set optimised integration parameters
diff --git a/Generators/PowhegControl/python/processes/PowhegConfig_VBF_H.py b/Generators/PowhegControl/python/processes/PowhegConfig_VBF_H.py
index 540b340f5223b..4f214e1127173 100644
--- a/Generators/PowhegControl/python/processes/PowhegConfig_VBF_H.py
+++ b/Generators/PowhegControl/python/processes/PowhegConfig_VBF_H.py
@@ -20,15 +20,17 @@ class PowhegConfig_VBF_H(PowhegConfig_base) :
     self._powheg_executable += '/VBF_H/pwhg_main'
 
     ## Add process specific options
-    self.add_parameter( 'complexpolescheme', -1, desc='0 = SM' )
+    self.add_parameter( 'complexpolescheme', -1, desc='(0:SM)' )
 
     ## Decorate with generic option sets
     self.add_parameter_set( 'extra tests' )
+    self.add_parameter_set( 'generic scale' )
     self.add_parameter_set( 'Higgs decay mode' )
     self.add_parameter_set( 'Higgs fixed width' )
     self.add_parameter_set( 'Higgs properties' )
-    self.add_parameter_set( 'LHEv3' )
-    self.add_parameter_set( 'radiation parametrisation' )
+    self.add_parameter_set( 'old Dij' )
+    self.add_parameter_set( 'PDF reweighting' )
+    self.add_parameter_set( 'upper bound' )
     self.add_parameter_set( 'v2' )
 
     ## Set optimised integration parameters
diff --git a/Generators/PowhegControl/python/processes/PowhegConfig_VBF_W.py b/Generators/PowhegControl/python/processes/PowhegConfig_VBF_W.py
new file mode 100644
index 0000000000000..bc6a2566c3b28
--- /dev/null
+++ b/Generators/PowhegControl/python/processes/PowhegConfig_VBF_W.py
@@ -0,0 +1,43 @@
+# Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+
+## @PowhegControl PowhegConfig_VBF_W
+#  Powheg configuration for VBF W subprocess
+#
+#  Authors: James Robinson  <james.robinson@cern.ch>
+
+#! /usr/bin/env python
+from ..PowhegConfig_base import PowhegConfig_base
+
+## Default Powheg configuration for VBF W generation
+#
+#  Create a full configurable with all available Powheg options
+class PowhegConfig_VBF_W(PowhegConfig_base) :
+
+  def __init__( self, runArgs=None, opts=None ) :
+    ## Constructor: set process-dependent executable path here
+    super(PowhegConfig_VBF_W, self).__init__( runArgs, opts )
+    self._powheg_executable += '/VBF_W-Z/pwhg_main'
+
+    ## Decorate with generic option sets
+    self.add_parameter_set( 'fake virtual' )
+    self.add_parameter_set( 'generic scale' )
+    self.add_parameter_set( 'upper bound' )
+    self.add_parameter_set( 'VBF vector boson decay' )
+
+    ## Set optimised integration parameters
+    self.itmx1    = 4
+    self.itmx2    = 5
+    self.ncall1   = 800000
+    self.ncall2   = 6000000
+    self.nubound  = 5000000
+    self.xupbound = 6
+    self.foldx    = 2
+    self.foldy    = 2
+    self.foldphi  = 2
+
+    ## Override defaults
+    self.allowed_decay_modes = [ 'Wpev', 'Wmev', 'Wmmuv','Wmmuv' ]
+    self.decay_mode          = 'Wpev'
+    self.withdamp            = 1
+
+    self.populate_default_strings()
diff --git a/Generators/PowhegControl/python/processes/PowhegConfig_VBF_Z.py b/Generators/PowhegControl/python/processes/PowhegConfig_VBF_Z.py
new file mode 100644
index 0000000000000..26e22796f179a
--- /dev/null
+++ b/Generators/PowhegControl/python/processes/PowhegConfig_VBF_Z.py
@@ -0,0 +1,47 @@
+# Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+
+## @PowhegControl PowhegConfig_VBF_Z
+#  Powheg configuration for VBF Z subprocess
+#
+#  Authors: James Robinson  <james.robinson@cern.ch>
+
+#! /usr/bin/env python
+from ..PowhegConfig_base import PowhegConfig_base
+
+## Default Powheg configuration for VBF Z generation
+#
+#  Create a full configurable with all available Powheg options
+class PowhegConfig_VBF_Z(PowhegConfig_base) :
+
+  def __init__( self, runArgs=None, opts=None ) :
+    ## Constructor: set process-dependent executable path here
+    super(PowhegConfig_VBF_Z, self).__init__( runArgs, opts )
+    self._powheg_executable += '/VBF_W-Z/pwhg_main'
+
+    ## Logger warnings for unvalidated process
+    self.logger.warning( 'Integration parameters have not been validated - see https://twiki.cern.ch/twiki/bin/viewauth/AtlasProtected/PowhegForATLAS#Changing_POWHEG_BOX_integration' )
+
+    ## Decorate with generic option sets
+    self.add_parameter_set( 'fake virtual' )
+    self.add_parameter_set( 'generic scale' )
+    self.add_parameter_set( 'upper bound' )
+    self.add_parameter_set( 'VBF vector boson decay' )
+
+    ## Set optimised integration parameters
+    self.itmx1    = 4
+    self.itmx2    = 5
+    self.ncall1   = 65000000
+    self.ncall2   = 150000000
+    self.nubound  = 10000000
+    self.xupbound = 6
+    self.foldx    = 25
+    self.foldy    = 25
+    self.foldphi  = 25
+
+    ## Override defaults
+    self.allowed_decay_modes = [ 'Zee', 'Zmumu' ]
+    self.decay_mode          = 'Zee'
+    self.mll_gencut          = 60
+    self.withdamp            = 1
+
+    self.populate_default_strings()
diff --git a/Generators/PowhegControl/python/processes/PowhegConfig_VBF_ssWW.py b/Generators/PowhegControl/python/processes/PowhegConfig_VBF_ssWW.py
index 090d56f8d44de..cba0cd7d6a149 100644
--- a/Generators/PowhegControl/python/processes/PowhegConfig_VBF_ssWW.py
+++ b/Generators/PowhegControl/python/processes/PowhegConfig_VBF_ssWW.py
@@ -4,7 +4,6 @@
 #  Powheg configuration for VBF_ssWW subprocess
 #
 #  Authors: James Robinson  <james.robinson@cern.ch>
-#           Daniel Hayden   <danhayden0@googlemail.com>
 
 #! /usr/bin/env python
 from ..PowhegConfig_base import PowhegConfig_base
@@ -19,13 +18,16 @@ class PowhegConfig_VBF_ssWW(PowhegConfig_base) :
     super(PowhegConfig_VBF_ssWW, self).__init__( runArgs, opts )
     self._powheg_executable += '/vbf_wp_wp/pwhg_main'
 
+    ## Logger warnings for unvalidated process
+    self.logger.warning( 'Integration parameters have not been validated - see https://twiki.cern.ch/twiki/bin/viewauth/AtlasProtected/PowhegForATLAS#Changing_POWHEG_BOX_integration' )
+
     ## Decorate with generic option sets
-    self.add_parameter_set( 'extra tests' )
     self.add_parameter_set( 'fake virtual' )
-    self.add_parameter_set( 'LHEv3' )
-    self.add_parameter_set( 'MiNLO NNLL' )
-    self.add_parameter_set( 'radiation parametrisation' )
+    self.add_parameter_set( 'generic scale' )
+    self.add_parameter_set( 'old Dij' )
+    self.add_parameter_set( 'PDF reweighting' )
     self.add_parameter_set( 'running scales' )
+    self.add_parameter_set( 'upper bound' )
     self.add_parameter_set( 'v2' )
     self.add_parameter_set( 'WW decay', boson='w' )
     self.add_parameter_set( 'zero width' )
diff --git a/Generators/PowhegControl/python/processes/PowhegConfig_W.py b/Generators/PowhegControl/python/processes/PowhegConfig_W.py
index 2007189331f93..a4ac457cf465f 100644
--- a/Generators/PowhegControl/python/processes/PowhegConfig_W.py
+++ b/Generators/PowhegControl/python/processes/PowhegConfig_W.py
@@ -22,12 +22,15 @@ class PowhegConfig_W(PowhegConfig_base) :
 
     ## Decorate with generic option sets
     self.add_parameter_set( 'CKM' )
+    self.add_parameter_set( 'electroweak properties', boson='W' )
+    self.add_parameter_set( 'generic scale' )
     self.add_parameter_set( 'mass window' )
     self.add_parameter_set( 'running scale' )
-    self.add_parameter_set( 'second generation quark mass' )
+    self.add_parameter_set( 'running width' )
+    self.add_parameter_set( 'second generation quark mass', prefix='lhe' )
     self.add_parameter_set( 'sin**2 theta W' )
-    self.add_parameter_set( 'single vector boson' )
-    self.add_parameter_set( 'vector boson decay' )
+    self.add_parameter_set( 'upper bound' )
+    self.add_parameter_set( 'vector boson decay mode' )
     self.add_parameter_set( 'W ID' )
 
     ## Set optimised integration parameters
diff --git a/Generators/PowhegControl/python/processes/PowhegConfig_WW.py b/Generators/PowhegControl/python/processes/PowhegConfig_WW.py
index de7beadaa211f..5c3ef9c36795b 100644
--- a/Generators/PowhegControl/python/processes/PowhegConfig_WW.py
+++ b/Generators/PowhegControl/python/processes/PowhegConfig_WW.py
@@ -25,8 +25,11 @@ class PowhegConfig_WW(PowhegConfig_base) :
     self.add_parameter_set( 'diboson' )
     self.add_parameter_set( 'extra tests' )
     self.add_parameter_set( 'fixed scale' )
-    self.add_parameter_set( 'LHEv3' )
+    self.add_parameter_set( 'generic scale' )
+    self.add_parameter_set( 'old Dij' )
+    self.add_parameter_set( 'PDF reweighting' )
     self.add_parameter_set( 'running width' )
+    self.add_parameter_set( 'upper bound' )
     self.add_parameter_set( 'v2' )
     self.add_parameter_set( 'zero width' )
 
diff --git a/Generators/PowhegControl/python/processes/PowhegConfig_WZ.py b/Generators/PowhegControl/python/processes/PowhegConfig_WZ.py
index 25b51de6d2699..c321d09d8f976 100644
--- a/Generators/PowhegControl/python/processes/PowhegConfig_WZ.py
+++ b/Generators/PowhegControl/python/processes/PowhegConfig_WZ.py
@@ -27,10 +27,14 @@ class PowhegConfig_WZ(PowhegConfig_base) :
     self.add_parameter_set( 'anomalous coupling' )
     self.add_parameter_set( 'diboson' )
     self.add_parameter_set( 'diboson interference' )
+    self.add_parameter_set( 'dilepton mass' )
     self.add_parameter_set( 'extra tests' )
     self.add_parameter_set( 'fixed scale' )
-    self.add_parameter_set( 'LHEv3' )
+    self.add_parameter_set( 'generic scale' )
+    self.add_parameter_set( 'old Dij' )
+    self.add_parameter_set( 'PDF reweighting' )
     self.add_parameter_set( 'running width' )
+    self.add_parameter_set( 'upper bound' )
     self.add_parameter_set( 'v2' )
     self.add_parameter_set( 'zero width' )
 
diff --git a/Generators/PowhegControl/python/processes/PowhegConfig_Wj.py b/Generators/PowhegControl/python/processes/PowhegConfig_Wj.py
index fd7a2eba50c09..43724629335cd 100644
--- a/Generators/PowhegControl/python/processes/PowhegConfig_Wj.py
+++ b/Generators/PowhegControl/python/processes/PowhegConfig_Wj.py
@@ -22,18 +22,24 @@ class PowhegConfig_Wj(PowhegConfig_base) :
 
     ## Decorate with generic option sets
     self.add_parameter_set( 'CKM' )
-    self.add_parameter_set( 'LHEv3' )
+    self.add_parameter_set( 'electroweak properties', boson='W' )
+    self.add_parameter_set( 'extra tests' )
+    self.add_parameter_set( 'generic scale' )
+    self.add_parameter_set( 'ISR/FSR' )
+    self.add_parameter_set( 'lepton mass', prefix='lhfm' )
     self.add_parameter_set( 'MiNLO NNLL' )
     self.add_parameter_set( 'NNLO reweighting' )
+    self.add_parameter_set( 'old Dij' )
+    self.add_parameter_set( 'PDF reweighting' )
     self.add_parameter_set( 'running scales' )
     self.add_parameter_set( 'sin**2 theta W' )
-    self.add_parameter_set( 'single vector boson' )
-    self.add_parameter_set( 'V+jets' )
-    self.add_parameter_set( 'vector boson decay' )
+    self.add_parameter_set( 'upper bound' )
     self.add_parameter_set( 'v2' )
+    self.add_parameter_set( 'vector boson decay mode' )
     self.add_parameter_set( 'W ID' )
     self.add_parameter_set( 'W mass window' )
 
+
     ## Set optimised integration parameters
     self.ncall1   = 40000
     self.ncall2   = 100000
diff --git a/Generators/PowhegControl/python/processes/PowhegConfig_Wjj.py b/Generators/PowhegControl/python/processes/PowhegConfig_Wjj.py
new file mode 100644
index 0000000000000..1791fe90c804f
--- /dev/null
+++ b/Generators/PowhegControl/python/processes/PowhegConfig_Wjj.py
@@ -0,0 +1,58 @@
+# Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+
+## @PowhegControl PowhegConfig_Wjj
+#  Powheg configuration for Wjj subprocess
+#
+#  Authors: James Robinson  <james.robinson@cern.ch>
+#           Daniel Hayden   <danhayden0@googlemail.com>
+
+#! /usr/bin/env python
+from ..PowhegConfig_base import PowhegConfig_base
+from .. import ATLASCommonParameters
+
+## Default Powheg configuration for Wjj generation
+#
+#  Create a full configurable with all available Powheg options
+class PowhegConfig_Wjj(PowhegConfig_base) :
+
+  def __init__( self, runArgs=None, opts=None ) :
+    ## Constructor: set process-dependent executable path here
+    super(PowhegConfig_Wjj, self).__init__( runArgs, opts )
+    self._powheg_executable += '/W2jet/pwhg_main'
+
+    ## Logger warnings for unvalidated process
+    self.logger.warning( 'Integration parameters have not been validated - see https://twiki.cern.ch/twiki/bin/viewauth/AtlasProtected/PowhegForATLAS#Changing_POWHEG_BOX_integration' )
+
+    ## Add process specific options
+    self.add_parameter( 'vdecaymodeW', -11, desc='(-11:e+; -13:mu+; 11:e-; 13:mu-). PDG ID of W decay' )
+
+    ## Decorate with generic option sets
+    self.add_parameter_set( 'Breit-Wigner width' )
+    self.add_parameter_set( 'dilepton mass' )
+    self.add_parameter_set( 'electroweak properties', boson='w' )
+    self.add_parameter_set( 'extra tests' )
+    self.add_parameter_set( 'generic scale' )
+    self.add_parameter_set( 'old Dij' )
+    self.add_parameter_set( 'PDF reweighting' )
+    self.add_parameter_set( 'radiation parametrisation' )
+    self.add_parameter_set( 'running scales' )
+    self.add_parameter_set( 'upper bound' )
+    self.add_parameter_set( 'v2' )
+    self.add_parameter_set( 'Vector boson + two jets' )
+
+    ## Set optimised integration parameters
+    self.itmx1    = 4
+    self.itmx2    = 4
+    self.ncall1   = 15000000
+    self.ncall2   = 30000000
+    self.nubound  = 10000000
+    self.xupbound = 5
+    self.foldx    = 25
+    self.foldy    = 25
+    self.foldphi  = 25
+
+    ## Override defaults
+    self.bornktmin   = 10.0
+    self.withdamp    = 1
+
+    self.populate_default_strings()
diff --git a/Generators/PowhegControl/python/processes/PowhegConfig_Wt_DR.py b/Generators/PowhegControl/python/processes/PowhegConfig_Wt_DR.py
index 93bedcf0e193f..dd7ac7f437ea3 100644
--- a/Generators/PowhegControl/python/processes/PowhegConfig_Wt_DR.py
+++ b/Generators/PowhegControl/python/processes/PowhegConfig_Wt_DR.py
@@ -21,13 +21,15 @@ class PowhegConfig_Wt_DR(PowhegConfig_base) :
 
     ## Decorate with generic option sets
     self.add_parameter_set( 'CKM' )
-    self.add_parameter_set( 'lepton mass' )
+    self.add_parameter_set( 'electroweak properties', boson='w' )
+    self.add_parameter_set( 'generic scale' )
+    self.add_parameter_set( 'lepton mass', prefix=['lhfm','tdec'] )
+    self.add_parameter_set( 'second generation quark mass', prefix='lhfm' )
     self.add_parameter_set( 'sin**2 theta W' )
-    self.add_parameter_set( 'single top' )
-    self.add_parameter_set( 'top decay branching' )
     self.add_parameter_set( 'top decay mode' )
-    self.add_parameter_set( 'top decay second generation quark' )
-    self.add_parameter_set( 'top mass' )
+    self.add_parameter_set( 'top decay branching', prefix='tdec' )
+    self.add_parameter_set( 'top properties' )
+    self.add_parameter_set( 'upper bound' )
     self.add_parameter_set( 'W decay mode' )
 
     ## Set optimised integration parameters
diff --git a/Generators/PowhegControl/python/processes/PowhegConfig_Wt_DS.py b/Generators/PowhegControl/python/processes/PowhegConfig_Wt_DS.py
index 3ecb6e0360aaa..dc7449b9ff545 100644
--- a/Generators/PowhegControl/python/processes/PowhegConfig_Wt_DS.py
+++ b/Generators/PowhegControl/python/processes/PowhegConfig_Wt_DS.py
@@ -20,19 +20,21 @@ class PowhegConfig_Wt_DS(PowhegConfig_base) :
     self._powheg_executable += '/ST_wtch_DS/pwhg_main'
 
     ## Add process specific options
-    self.add_parameter( 'nwidthcutoff', -1 )
-    self.add_parameter( 'withfluxfactor', -1 )
-    self.add_parameter( 'withthetacut', -1 )
+    self.add_parameter( 'nwidthcutoff', -1,   desc='(-1:Powheg default)' )
+    self.add_parameter( 'withfluxfactor', -1, desc='(-1:Powheg default)' )
+    self.add_parameter( 'withthetacut', -1,   desc='(-1:Powheg default)' )
 
     ## Decorate with generic option sets
     self.add_parameter_set( 'CKM' )
-    self.add_parameter_set( 'lepton mass' )
+    self.add_parameter_set( 'electroweak properties', boson='w' )
+    self.add_parameter_set( 'generic scale' )
+    self.add_parameter_set( 'lepton mass', prefix=['lhfm','tdec'] )
+    self.add_parameter_set( 'second generation quark mass', prefix='lhfm' )
     self.add_parameter_set( 'sin**2 theta W' )
-    self.add_parameter_set( 'single top' )
-    self.add_parameter_set( 'top decay branching' )
     self.add_parameter_set( 'top decay mode' )
-    self.add_parameter_set( 'top decay second generation quark' )
-    self.add_parameter_set( 'top mass' )
+    self.add_parameter_set( 'top decay branching', prefix='tdec' )
+    self.add_parameter_set( 'top properties' )
+    self.add_parameter_set( 'upper bound' )
     self.add_parameter_set( 'W decay mode' )
 
     ## Set optimised integration parameters
diff --git a/Generators/PowhegControl/python/processes/PowhegConfig_Z.py b/Generators/PowhegControl/python/processes/PowhegConfig_Z.py
index b62c4ca2ba377..dafe9fe35069d 100644
--- a/Generators/PowhegControl/python/processes/PowhegConfig_Z.py
+++ b/Generators/PowhegControl/python/processes/PowhegConfig_Z.py
@@ -21,12 +21,15 @@ class PowhegConfig_Z(PowhegConfig_base) :
     self._powheg_executable += '/Z/pwhg_main'
 
     ## Decorate with generic option sets
+    self.add_parameter_set( 'electroweak properties', boson='W' )
+    self.add_parameter_set( 'generic scale' )
     self.add_parameter_set( 'mass window' )
     self.add_parameter_set( 'running scale' )
-    self.add_parameter_set( 'second generation quark mass' )
+    self.add_parameter_set( 'running width' )
+    self.add_parameter_set( 'second generation quark mass', prefix='lhe' )
     self.add_parameter_set( 'sin**2 theta W' )
-    self.add_parameter_set( 'single vector boson' )
-    self.add_parameter_set( 'vector boson decay' )
+    self.add_parameter_set( 'upper bound' )
+    self.add_parameter_set( 'vector boson decay mode' )
 
     ## Set optimised integration parameters
     self.ncall1  = 120000
diff --git a/Generators/PowhegControl/python/processes/PowhegConfig_ZZ.py b/Generators/PowhegControl/python/processes/PowhegConfig_ZZ.py
index 5cf0efef58fd5..5a54448bb2067 100644
--- a/Generators/PowhegControl/python/processes/PowhegConfig_ZZ.py
+++ b/Generators/PowhegControl/python/processes/PowhegConfig_ZZ.py
@@ -21,14 +21,18 @@ class PowhegConfig_ZZ(PowhegConfig_base) :
     self._powheg_executable += '/ZZ/pwhg_main'
 
     ## Add process specific options
-    self.add_parameter( 'cutallpairs', -1, desc='(default -1, Powheg-default)' )
+    self.add_parameter( 'cutallpairs', -1, desc='(-1:Powheg-default)' )
 
     ## Decorate with generic option sets
     self.add_parameter_set( 'diboson' )
     self.add_parameter_set( 'diboson interference' )
+    self.add_parameter_set( 'dilepton mass' )
     self.add_parameter_set( 'fixed scale' )
-    self.add_parameter_set( 'LHEv3' )
+    self.add_parameter_set( 'generic scale' )
+    self.add_parameter_set( 'old Dij' )
+    self.add_parameter_set( 'PDF reweighting' )
     self.add_parameter_set( 'running width' )
+    self.add_parameter_set( 'upper bound' )
     self.add_parameter_set( 'v2' )
     self.add_parameter_set( 'zero width' )
 
diff --git a/Generators/PowhegControl/python/processes/PowhegConfig_Zj.py b/Generators/PowhegControl/python/processes/PowhegConfig_Zj.py
index 706b91f654963..2604577ef8e03 100644
--- a/Generators/PowhegControl/python/processes/PowhegConfig_Zj.py
+++ b/Generators/PowhegControl/python/processes/PowhegConfig_Zj.py
@@ -21,22 +21,26 @@ class PowhegConfig_Zj(PowhegConfig_base) :
     self._powheg_executable += '/Zj/pwhg_main'
 
     ## Decorate with generic option sets
-    self.add_parameter_set( 'lepton mass' )
-    self.add_parameter_set( 'LHEv3' )
+    self.add_parameter_set( 'electroweak properties', boson='W' )
+    self.add_parameter_set( 'extra tests' )
+    self.add_parameter_set( 'generic scale' )
+    self.add_parameter_set( 'ISR/FSR' )
+    self.add_parameter_set( 'lepton mass', prefix='lhfm' )
     self.add_parameter_set( 'MiNLO NNLL' )
     self.add_parameter_set( 'NNLO reweighting' )
+    self.add_parameter_set( 'old Dij' )
+    self.add_parameter_set( 'PDF reweighting' )
     self.add_parameter_set( 'running scales' )
     self.add_parameter_set( 'sin**2 theta W' )
-    self.add_parameter_set( 'single vector boson' )
-    self.add_parameter_set( 'V+jets' )
-    self.add_parameter_set( 'vector boson decay' )
+    self.add_parameter_set( 'upper bound' )
     self.add_parameter_set( 'v2' )
+    self.add_parameter_set( 'vector boson decay mode' )
     self.add_parameter_set( 'Z mass window' )
 
     ## Set optimised integration parameters
-    self.ncall1   = 20000
-    self.ncall2   = 300000
-    self.nubound  = 2000000
+    self.ncall1   = 30000
+    self.ncall2   = 350000
+    self.nubound  = 3000000
     self.xupbound = 20
     self.foldx    = 5
     self.foldy    = 5
diff --git a/Generators/PowhegControl/python/processes/PowhegConfig_Zjj.py b/Generators/PowhegControl/python/processes/PowhegConfig_Zjj.py
new file mode 100644
index 0000000000000..d1aab1864da61
--- /dev/null
+++ b/Generators/PowhegControl/python/processes/PowhegConfig_Zjj.py
@@ -0,0 +1,60 @@
+# Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+
+## @PowhegControl PowhegConfig_Zjj
+#  Powheg configuration for Zjj subprocess
+#
+#  Authors: James Robinson  <james.robinson@cern.ch>
+#           Daniel Hayden   <danhayden0@googlemail.com>
+
+#! /usr/bin/env python
+from ..PowhegConfig_base import PowhegConfig_base
+from .. import ATLASCommonParameters
+
+## Default Powheg configuration for Zjj generation
+#
+#  Create a full configurable with all available Powheg options
+class PowhegConfig_Zjj(PowhegConfig_base) :
+
+  def __init__( self, runArgs=None, opts=None ) :
+    ## Constructor: set process-dependent executable path here
+    super(PowhegConfig_Zjj, self).__init__( runArgs, opts )
+    self._powheg_executable += '/Z2jet/pwhg_main'
+
+    ## Logger warnings for unvalidated process
+    self.logger.warning( 'Integration parameters have not been validated - see https://twiki.cern.ch/twiki/bin/viewauth/AtlasProtected/PowhegForATLAS#Changing_POWHEG_BOX_integration' )
+
+    ## Add process specific options
+    self.add_parameter( 'mllmax', 2.0*self.beam_energy, desc='Maximum invariant mass of lepton pairs from Z decay' )
+    self.add_parameter( 'vdecaymodeZ', 11,              desc='(11:e-; 13:mu-). PDG ID of first Z decay product (must be positive)' )
+
+    ## Decorate with generic option sets
+    self.add_parameter_set( 'Breit-Wigner width' )
+    self.add_parameter_set( 'dilepton mass' )
+    self.add_parameter_set( 'electroweak properties', boson='w' )
+    self.add_parameter_set( 'fake virtual' )
+    self.add_parameter_set( 'generic scale' )
+    self.add_parameter_set( 'old Dij' )
+    self.add_parameter_set( 'PDF reweighting')
+    self.add_parameter_set( 'radiation parametrisation' )
+    self.add_parameter_set( 'running scales' )
+    self.add_parameter_set( 'upper bound' )
+    self.add_parameter_set( 'v2' )
+    self.add_parameter_set( 'Vector boson + two jets' )
+
+    ## Set optimised integration parameters
+    self.itmx1    = 5
+    self.itmx2    = 5
+    self.ncall1   = 8000000
+    self.ncall2   = 12000000
+    self.nubound  = 32000000
+    self.xupbound = 4
+    self.foldx    = 25
+    self.foldy    = 25
+    self.foldphi  = 25
+
+    ## Override defaults
+    self.bornktmin = 10.0
+    self.mllmin    = 60.0
+    self.withdamp  = 1
+
+    self.populate_default_strings()
diff --git a/Generators/PowhegControl/python/processes/PowhegConfig_bb.py b/Generators/PowhegControl/python/processes/PowhegConfig_bb.py
index 0f3ee11c6f998..8b600754e8ae9 100644
--- a/Generators/PowhegControl/python/processes/PowhegConfig_bb.py
+++ b/Generators/PowhegControl/python/processes/PowhegConfig_bb.py
@@ -24,10 +24,14 @@ class PowhegConfig_bb(PowhegConfig_base) :
     ## Decorate with generic option sets
     self.add_parameter_set( 'extra tests' )
     self.add_parameter_set( 'fixed scale' )
+    self.add_parameter_set( 'generic scale' )
     self.add_parameter_set( 'heavy quark' )
-    self.add_parameter_set( 'LHEv3' )
-    self.add_parameter_set( 'second generation quark mass' )
+    self.add_parameter_set( 'old Dij' )
+    self.add_parameter_set( 'PDF reweighting' )
+    self.add_parameter_set( 'second generation quark mass', prefix='lhe' )
     self.add_parameter_set( 'top decay mode' )
+    self.add_parameter_set( 'top properties' )
+    self.add_parameter_set( 'upper bound' )
     self.add_parameter_set( 'v2' )
 
     ## Set optimised integration parameters
diff --git a/Generators/PowhegControl/python/processes/PowhegConfig_ggF_H.py b/Generators/PowhegControl/python/processes/PowhegConfig_ggF_H.py
index c181d3f72b02e..3c12b262f45b7 100644
--- a/Generators/PowhegControl/python/processes/PowhegConfig_ggF_H.py
+++ b/Generators/PowhegControl/python/processes/PowhegConfig_ggF_H.py
@@ -22,20 +22,23 @@ class PowhegConfig_ggF_H(PowhegConfig_base) :
     self._powheg_executable += '/gg_H_quark-mass-effects/pwhg_main'
 
     ## Add process specific options
-    self.add_parameter( 'bwshape', 1,                        desc='(default 1). Functional form of Breit-Wigner used to distribute Higgs virtuality. 1:running width; 2:hwidth' )
-    self.add_parameter( 'ew', 1,                             desc='(default 1, enabled). Enable EW corrections' )
-    self.add_parameter( 'gfermi', ATLASCommonParameters.G_F, desc='(default ATLAS). Fermi constant' )
-    self.add_parameter( 'massren', 0,                        desc='(default 0). 0 = OS, 1 = MSBAR, 2 = DRBAR' )
-    self.add_parameter( 'model', 0,                          desc='(default 0). 0 = SM' )
+    self.add_parameter( 'bwshape', 1,                        desc='Functional form of Breit-Wigner used to distribute Higgs virtuality. 1:running width; 2:hwidth' )
+    self.add_parameter( 'ew', 1,                             desc='(0:disabled; 1:enabled) EW corrections' )
+    self.add_parameter( 'gfermi', ATLASCommonParameters.G_F, desc='Fermi constant' )
+    self.add_parameter( 'massren', 0,                        desc='(0 = OS, 1 = MSBAR, 2 = DRBAR)' )
+    self.add_parameter( 'model', 0,                          desc='(0 = SM)' )
 
     ## Decorate with generic option sets
     self.add_parameter_set( 'extra tests' )
+    self.add_parameter_set( 'generic scale' )
     self.add_parameter_set( 'Higgs decay mode' )
     self.add_parameter_set( 'Higgs decay properties' )
     self.add_parameter_set( 'Higgs properties' )
-    self.add_parameter_set( 'LHEv3' )
-    self.add_parameter_set( 'running scale' )
-    self.add_parameter_set( 'top mass' )
+    self.add_parameter_set( 'old Dij' )
+    self.add_parameter_set( 'PDF reweighting' )
+    self.add_parameter_set( 'running scale', description='(0:scales equal to the Higgs pole mass; 1:scales equal to the Higgs virtuality)' )
+    self.add_parameter_set( 'top properties' )
+    self.add_parameter_set( 'upper bound' )
     self.add_parameter_set( 'v2' )
     self.add_parameter_set( 'zero width' )
 
diff --git a/Generators/PowhegControl/python/processes/PowhegConfig_ggF_HZ.py b/Generators/PowhegControl/python/processes/PowhegConfig_ggF_HZ.py
index 1668fd193a674..ab099d06579ce 100644
--- a/Generators/PowhegControl/python/processes/PowhegConfig_ggF_HZ.py
+++ b/Generators/PowhegControl/python/processes/PowhegConfig_ggF_HZ.py
@@ -21,13 +21,14 @@ class PowhegConfig_ggF_HZ(PowhegConfig_base) :
     self._powheg_executable += '/ggHZ/pwhg_main'
 
     ## Decorate with generic option sets
+    self.add_parameter_set( 'Higgs + vector boson' )
     self.add_parameter_set( 'Higgs fixed width' )
-    self.add_parameter_set( 'Higgs mass window' )
     self.add_parameter_set( 'Higgs properties' )
-    self.add_parameter_set( 'LHEv3' )
+    self.add_parameter_set( 'PDF reweighting' )
     self.add_parameter_set( 'running scales' )
-    self.add_parameter_set( 'vector boson decay' )
+    self.add_parameter_set( 'top properties' )
     self.add_parameter_set( 'v2' )
+    self.add_parameter_set( 'vector boson decay mode' )
     self.add_parameter_set( 'Z mass window' )
 
     ## Set optimised integration parameters
diff --git a/Generators/PowhegControl/python/processes/PowhegConfig_jj.py b/Generators/PowhegControl/python/processes/PowhegConfig_jj.py
index 3c885815ef70b..a4932c5094557 100644
--- a/Generators/PowhegControl/python/processes/PowhegConfig_jj.py
+++ b/Generators/PowhegControl/python/processes/PowhegConfig_jj.py
@@ -23,20 +23,23 @@ class PowhegConfig_jj(PowhegConfig_base) :
     ## Decorate with generic option sets
     self.add_parameter_set( 'extra tests' )
     self.add_parameter_set( 'fixed scale' )
+    self.add_parameter_set( 'generic scale' )
     self.add_parameter_set( 'jacsing' )
-    self.add_parameter_set( 'LHEv3' )
+    self.add_parameter_set( 'old Dij' )
+    self.add_parameter_set( 'PDF reweighting' )
+    self.add_parameter_set( 'upper bound' )
     self.add_parameter_set( 'v2' )
 
     ## Set optimised integration parameters
-    self.itmx1    = 2
+    self.itmx1    = 8
     self.itmx2    = 10
-    self.ncall1   = 10000
-    self.ncall2   = 200000
-    self.nubound  = 150000
+    self.ncall1   = 80000
+    self.ncall2   = 40000
+    self.nubound  = 500000
     self.xupbound = 10
     self.foldx    = 10
     self.foldy    = 10
-    self.foldphi  = 10
+    self.foldphi  = 5
 
     ## Override defaults
     self.bornktmin = 5.0
diff --git a/Generators/PowhegControl/python/processes/PowhegConfig_jjj.py b/Generators/PowhegControl/python/processes/PowhegConfig_jjj.py
index f7cbbc55998b1..b195b176df50f 100644
--- a/Generators/PowhegControl/python/processes/PowhegConfig_jjj.py
+++ b/Generators/PowhegControl/python/processes/PowhegConfig_jjj.py
@@ -21,34 +21,38 @@ class PowhegConfig_jjj(PowhegConfig_base) :
     self._powheg_executable += '/trijet/pwhg_main'
 
     ## Logger warnings for unvalidated process
-    self.logger.warning( 'Negative weight fraction will probably be outside usual recommendations - check final distributions with care!' )
+    self.logger.warning( 'Integration parameters have not been validated - see https://twiki.cern.ch/twiki/bin/viewauth/AtlasProtected/PowhegForATLAS#Changing_POWHEG_BOX_integration' )
 
     ## Add process specific options
-    self.add_parameter( 'brpar_diexp', -1 )
-    self.add_parameter( 'brpar_dijexp', -1 )
-    self.add_parameter( 'HWJsudakov', -1 )
-    self.add_parameter( 'ktmerging', -1 )
-    self.add_parameter( 'rapsuppfact', -1 )
+    self.add_parameter( 'brpar_diexp', -1,  desc='(-1:Powheg default)' )
+    self.add_parameter( 'brpar_dijexp', -1, desc='(-1:Powheg default)' )
+    self.add_parameter( 'HWJsudakov', -1,   desc='(-1:Powheg default)' )
+    self.add_parameter( 'ktmerging', -1,    desc='(-1:Powheg default)' )
+    self.add_parameter( 'rapsuppfact', -1,  desc='(-1:Powheg default)' )
 
     ## Decorate with generic option sets
-    self.add_parameter_set( 'LHEv3' )
+    self.add_parameter_set( 'generic scale' )
+    self.add_parameter_set( 'old Dij' )
+    self.add_parameter_set( 'PDF reweighting' )
     self.add_parameter_set( 'radiation parametrisation' )
+    self.add_parameter_set( 'upper bound' )
     self.add_parameter_set( 'v2' )
 
     ## Set optimised integration parameters
-    self.ncall1   = 800000
-    # self.ncall1rm = 2000000
-    self.ncall2   = 1750000
-    self.nubound  = 1000000
-    self.itmx1    = 2
-    # self.itmx1rm  = 2
-    self.itmx2    = 10
-    self.ixmax    = 5
-    self.iymax    = 5
+    self.itmx1    = 20
+    self.itmx2    = 20
+    self.ncall1   = 10000000
+    self.ncall1rm = 30000000
+    self.ncall2   = 10000000
+    self.nubound  = 10000000
+    self.xupbound = 4
+    self.foldx    = 25
+    self.foldy    = 25
+    self.foldphi  = 25
 
     ## Override defaults
-    self.bornktmin      = 20.0
-    self.bornsuppfact   = 1000.0
+    self.bornktmin      = 1.0
+    self.bornsuppfact   = 800.0
     self.doublefsr      = 1
     self.withdamp       = 1
 
diff --git a/Generators/PowhegControl/python/processes/PowhegConfig_ssWWjj.py b/Generators/PowhegControl/python/processes/PowhegConfig_ssWWjj.py
index 44e9adf063df6..91a91cda6b46a 100644
--- a/Generators/PowhegControl/python/processes/PowhegConfig_ssWWjj.py
+++ b/Generators/PowhegControl/python/processes/PowhegConfig_ssWWjj.py
@@ -22,23 +22,28 @@ class PowhegConfig_ssWWjj(PowhegConfig_base) :
     self.logger.warning( 'Integration parameters have not been validated - see https://twiki.cern.ch/twiki/bin/viewauth/AtlasProtected/PowhegForATLAS#Changing_POWHEG_BOX_integration' )
 
     ## Add process specific options
-    self.add_parameter( 'smincuts', -1, desc='(default -1, Powheg-default)' )
+    self.add_parameter( 'smincuts', -1, desc='(-1:Powheg-default)' )
 
     ## Decorate with generic option sets
     self.add_parameter_set( 'fake virtual' )
-    self.add_parameter_set( 'LHEv3' )
+    self.add_parameter_set( 'generic scale' )
+    self.add_parameter_set( 'old Dij' )
+    self.add_parameter_set( 'PDF reweighting' )
+    self.add_parameter_set( 'running scales' )
+    self.add_parameter_set( 'upper bound' )
     self.add_parameter_set( 'v2' )
-    self.add_parameter_set( 'WW decay' )
+    self.add_parameter_set( 'WW decay', boson='W' )
+    self.add_parameter_set( 'zero width' )
 
     ## Set optimised integration parameters
-    self.itmx1   = 3
-    self.itmx2   = 4
-    self.ncall1  = 1000000
-    self.ncall2  = 100000
-    self.nubound = 100000
-    self.foldx   = 5
-    self.foldy   = 5
-    self.foldphi = 10
+    self.itmx1   = 5
+    self.itmx2   = 5
+    self.ncall1  = 10000000
+    self.ncall2  = 1000000
+    self.nubound = 1000000
+    self.foldx   = 25
+    self.foldy   = 25
+    self.foldphi = 25
 
     ## Override defaults
     self.withdamp = 0
diff --git a/Generators/PowhegControl/python/processes/PowhegConfig_t_sch.py b/Generators/PowhegControl/python/processes/PowhegConfig_t_sch.py
index 75c00f0fca152..7c699cdb92082 100644
--- a/Generators/PowhegControl/python/processes/PowhegConfig_t_sch.py
+++ b/Generators/PowhegControl/python/processes/PowhegConfig_t_sch.py
@@ -21,11 +21,14 @@ class PowhegConfig_t_sch(PowhegConfig_base) :
 
     ## Decorate with generic option sets
     self.add_parameter_set( 'CKM' )
+    self.add_parameter_set( 'electroweak properties', boson='w' )
+    self.add_parameter_set( 'generic scale' )
+    self.add_parameter_set( 'lepton mass', prefix='tdec' )
     self.add_parameter_set( 'sin**2 theta W' )
-    self.add_parameter_set( 'single top' )
-    self.add_parameter_set( 'top decay branching' )
+    self.add_parameter_set( 'top decay branching', prefix='tdec' )
     self.add_parameter_set( 'top decay mode' )
-    self.add_parameter_set( 'top mass' )
+    self.add_parameter_set( 'top properties' )
+    self.add_parameter_set( 'upper bound' )
 
     ## Set optimised integration parameters
     self.ncall1  = 50000
diff --git a/Generators/PowhegControl/python/processes/PowhegConfig_tt.py b/Generators/PowhegControl/python/processes/PowhegConfig_tt.py
index 672e8093d51fe..87213542de7c1 100644
--- a/Generators/PowhegControl/python/processes/PowhegConfig_tt.py
+++ b/Generators/PowhegControl/python/processes/PowhegConfig_tt.py
@@ -22,25 +22,30 @@ class PowhegConfig_tt(PowhegConfig_base) :
     self._powheg_executable += '/hvq/pwhg_main'
 
     ## Add process specific options
-    self.add_parameter( 'tdec/bmass', ATLASCommonParameters.mass_b,            desc='b quark mass in t decay' )
-    self.add_parameter( 'tdec/cmass', ATLASCommonParameters.mass_c,            desc='c quark mass' )
-    self.add_parameter( 'tdec/dmass', ATLASCommonParameters.mass_d,            desc='d quark mass' )
-    self.add_parameter( 'tdec/sin2cabibbo', ATLASCommonParameters.sin2cabibbo, desc='sine of Cabibbo angle squared' )
-    self.add_parameter( 'tdec/smass', ATLASCommonParameters.mass_s,            desc='s quark mass' )
-    self.add_parameter( 'tdec/twidth', ATLASCommonParameters.width_t,          desc='top width' )
-    self.add_parameter( 'tdec/umass', ATLASCommonParameters.mass_u,            desc='u quark mass' )
-    self.add_parameter( 'tdec/wmass', ATLASCommonParameters.mass_W,            desc='W mass for top decay' )
-    self.add_parameter( 'tdec/wwidth', ATLASCommonParameters.width_W,          desc='W width' )
+    self.add_parameter( 'fullrwgt', -1,                                   desc='(-1:Powheg default)' )
+    self.add_parameter( 'mass_b', ATLASCommonParameters.mass_b,           desc='b quark mass in t decay', parameter='tdec/bmass' )
+    self.add_parameter( 'mass_c', ATLASCommonParameters.mass_c,           desc='c quark mass', parameter='tdec/cmass' )
+    self.add_parameter( 'mass_d', ATLASCommonParameters.mass_d,           desc='d quark mass', parameter='tdec/dmass' )
+    self.add_parameter( 'sin2cabibbo', ATLASCommonParameters.sin2cabibbo, desc='sine of Cabibbo angle squared', parameter='tdec/sin2cabibbo' )
+    self.add_parameter( 'mass_s', ATLASCommonParameters.mass_s,           desc='s quark mass', parameter='tdec/smass' )
+    self.add_parameter( 'width_t', ATLASCommonParameters.width_t,         desc='top width', parameter='tdec/twidth' )
+    self.add_parameter( 'mass_u', ATLASCommonParameters.mass_u,           desc='u quark mass', parameter='tdec/umass' )
+    self.add_parameter( 'mass_W', ATLASCommonParameters.mass_W,           desc='W mass for top decay', parameter='tdec/wmass' )
+    self.add_parameter( 'width_W', ATLASCommonParameters.width_W,         desc='W width', parameter='tdec/wwidth' )
 
     ## Decorate with generic option sets
     self.add_parameter_set( 'extra tests' )
+    self.add_parameter_set( 'lepton mass', prefix='tdec' )
+    self.add_parameter_set( 'top decay branching', prefix='tdec' )
     self.add_parameter_set( 'fixed scale' )
+    self.add_parameter_set( 'generic scale' )
     self.add_parameter_set( 'heavy quark' )
-    self.add_parameter_set( 'LHEv3' )
-    self.add_parameter_set( 'second generation quark mass' )
+    self.add_parameter_set( 'old Dij' )
+    self.add_parameter_set( 'PDF reweighting' )
+    self.add_parameter_set( 'second generation quark mass', prefix='lhe' )
     self.add_parameter_set( 'semileptonic' )
-    self.add_parameter_set( 'top decay branching' )
     self.add_parameter_set( 'top decay mode' )
+    self.add_parameter_set( 'upper bound' )
     self.add_parameter_set( 'v2' )
 
     ## Set optimised integration parameters
diff --git a/Generators/PowhegControl/python/processes/PowhegConfig_ttH.py b/Generators/PowhegControl/python/processes/PowhegConfig_ttH.py
index 26802bea11219..df0e1b1d208e9 100644
--- a/Generators/PowhegControl/python/processes/PowhegConfig_ttH.py
+++ b/Generators/PowhegControl/python/processes/PowhegConfig_ttH.py
@@ -20,18 +20,21 @@ class PowhegConfig_ttH(PowhegConfig_base) :
     self._powheg_executable += '/ttH/pwhg_main'
 
     ## Add process specific options
-    self.add_parameter( 'delta_mttmin', 0, desc='(default 0d0) if not zero, use generation cut on m_tt' )
+    self.add_parameter( 'delta_mttmin', 0, desc='if non-zero, use generation cut on m_tt' )
 
     ## Decorate with generic option sets
     self.add_parameter_set( 'extra tests' )
     self.add_parameter_set( 'fake virtual' )
+    self.add_parameter_set( 'generic scale' )
     self.add_parameter_set( 'Higgs decay mode' )
     self.add_parameter_set( 'Higgs properties' )
-    self.add_parameter_set( 'LHEv3' )
+    self.add_parameter_set( 'old Dij' )
+    self.add_parameter_set( 'PDF reweighting' )
     self.add_parameter_set( 'running scales' )
     self.add_parameter_set( 'semileptonic' )
-    self.add_parameter_set( 'top decay branching', tdec_prefix=False )
+    self.add_parameter_set( 'top decay branching' )
     self.add_parameter_set( 'top decay mode' )
+    self.add_parameter_set( 'upper bound' )
     self.add_parameter_set( 'v2' )
     self.add_parameter_set( 'zero width' )
 
@@ -42,6 +45,6 @@ class PowhegConfig_ttH(PowhegConfig_base) :
 
     ## Override defaults
     self.minlo        = -1
-    self.topdecaymode = 00000 #22222 - decaying tops not supported at the moment
+    self.topdecaymode = 22222
 
     self.populate_default_strings()
diff --git a/Generators/PowhegControl/python/processes/PowhegConfig_ttj.py b/Generators/PowhegControl/python/processes/PowhegConfig_ttj.py
index 3e37b59a73ce8..4e255b6f52b09 100644
--- a/Generators/PowhegControl/python/processes/PowhegConfig_ttj.py
+++ b/Generators/PowhegControl/python/processes/PowhegConfig_ttj.py
@@ -23,51 +23,52 @@ class PowhegConfig_ttj(PowhegConfig_base) :
     self.logger.warning( 'Integration parameters have not been validated - see https://twiki.cern.ch/twiki/bin/viewauth/AtlasProtected/PowhegForATLAS#Changing_POWHEG_BOX_integration' )
 
     ## Add process specific options
-    self.add_parameter( 'bcut', -1 )
-    self.add_parameter( 'collremnsamp', -1, parameter='collremnsamp"' ) # probably a typo in Powheg
-    self.add_parameter( 'ffltest', -1 )
-    self.add_parameter( 'ggproc', -1 )
-    self.add_parameter( 'gqbproc', -1 )
-    self.add_parameter( 'largecorrfact', -1 )
-    self.add_parameter( 'psgen', -1 )
-    self.add_parameter( 'ptmin_jet', 25, desc='jet min pt in GeV for use in analysis code (not relevant here)' )
-    self.add_parameter( 'qgproc', -1 )
-    self.add_parameter( 'qqbproc', -1 )
-    self.add_parameter( 'qqpproc', -1 )
-    self.add_parameter( 'qqproc', -1 )
-    self.add_parameter( 'R_jet', 0.4, desc='jet radius for use in internal Powheg analysis code (not relevant here)' )
-    self.add_parameter( 'use_OLP_interface', -1, parameter='use-OLP-interface' )
+    self.add_parameter( 'bcut', -1,              desc='(-1:Powheg default)' )
+    self.add_parameter( 'collremnsamp', -1,      desc='(-1:Powheg default)', parameter='collremnsamp"' )
+    self.add_parameter( 'ffltest', -1,           desc='(-1:Powheg default)' )
+    self.add_parameter( 'ggproc', -1,            desc='(-1:Powheg default)' )
+    self.add_parameter( 'gqbproc', -1,           desc='(-1:Powheg default)' )
+    self.add_parameter( 'largecorrfact', -1,     desc='(-1:Powheg default)' )
+    self.add_parameter( 'psgen', -1,             desc='(-1:Powheg default)' )
+    self.add_parameter( 'ptmin_jet', 25,         desc='jet min pt in GeV for use in analysis code (not relevant here)' )
+    self.add_parameter( 'qgproc', -1,            desc='(-1:Powheg default)' )
+    self.add_parameter( 'qqbproc', -1,           desc='(-1:Powheg default)' )
+    self.add_parameter( 'qqpproc', -1,           desc='(-1:Powheg default)' )
+    self.add_parameter( 'qqproc', -1,            desc='(-1:Powheg default)' )
+    self.add_parameter( 'R_jet', 0.4,            desc='jet radius for use in internal Powheg analysis code (not relevant here)' )
+    self.add_parameter( 'topwidth', ATLASCommonParameters.width_t, desc='top width' )
+    self.add_parameter( 'use_OLP_interface', -1, desc='(-1:Powheg default)', parameter='use-OLP-interface' )
 
     ## Decorate with generic option sets
     self.add_parameter_set( 'CKM' )
+    self.add_parameter_set( 'electroweak properties', boson='W' )
+    self.add_parameter_set( 'ISR/FSR' )
     self.add_parameter_set( 'jacsing' )
-    self.add_parameter_set( 'lepton mass' )
-    self.add_parameter_set( 'LHEv3' )
+    self.add_parameter_set( 'lepton mass', prefix='lhfm' )
     self.add_parameter_set( 'mass window' )
+    self.add_parameter_set( 'PDF reweighting' )
     self.add_parameter_set( 'running scale' )
+    self.add_parameter_set( 'second generation quark mass', prefix='lhfm' )
     self.add_parameter_set( 'semileptonic' )
     self.add_parameter_set( 'sin**2 theta W' )
-    self.add_parameter_set( 'single vector boson' )
-    self.add_parameter_set( 'top decay branching', tdec_prefix=False )
+    self.add_parameter_set( 'top decay branching' )
     self.add_parameter_set( 'top decay mode' )
-    self.add_parameter_set( 'top decay second generation quark' )
-    self.add_parameter_set( 'top mass' )
-    self.add_parameter_set( 'V+jets' )
+    self.add_parameter_set( 'upper bound' )
     self.add_parameter_set( 'zero width' )
 
     ## Set optimised integration parameters
-    self.itmx1   = 5
-    self.itmx2   = 10
-    self.ncall1  = 2000000
-    self.ncall2  = 5000000
-    self.nubound = 5000000
-    self.foldx   = 5
-    self.foldy   = 5
-    self.foldphi = 2
+    self.itmx1   = 15
+    self.itmx2   = 20
+    self.ncall1  = 20000000
+    self.ncall2  = 50000000
+    self.nubound = 50000000
+    self.foldx   = 25
+    self.foldy   = 25
+    self.foldphi = 25
 
     ## Override defaults
     self.bornktmin    = 5.0
-    self.bornsuppfact = 100.0 # was disabled
+    self.bornsuppfact = 100.0
     self.minlo        = -1
     self.quark_mass   = ATLASCommonParameters.mass_t
     self.topdecaymode = 22222
diff --git a/Generators/PowhegControl/python/processes/__init__.py b/Generators/PowhegControl/python/processes/__init__.py
index d427f555a73c0..a74071b1962e0 100644
--- a/Generators/PowhegControl/python/processes/__init__.py
+++ b/Generators/PowhegControl/python/processes/__init__.py
@@ -19,12 +19,16 @@ from PowhegConfig_ttH import *
 from PowhegConfig_ttj import *
 from PowhegConfig_VBF_H import *
 from PowhegConfig_VBF_ssWW import *
+from PowhegConfig_VBF_W import *
+from PowhegConfig_VBF_Z import *
 from PowhegConfig_W import *
 from PowhegConfig_Wj import *
+from PowhegConfig_Wjj import *
 from PowhegConfig_Wt_DR import *
 from PowhegConfig_Wt_DS import *
 from PowhegConfig_WW import *
 from PowhegConfig_WZ import *
 from PowhegConfig_Z import *
 from PowhegConfig_Zj import *
+from PowhegConfig_Zjj import *
 from PowhegConfig_ZZ import *
diff --git a/Generators/PowhegControl/python/utility/IntegrationGridTester.py b/Generators/PowhegControl/python/utility/IntegrationGridTester.py
index 2ab436ef83d18..afddd9671a438 100644
--- a/Generators/PowhegControl/python/utility/IntegrationGridTester.py
+++ b/Generators/PowhegControl/python/utility/IntegrationGridTester.py
@@ -31,14 +31,15 @@ class IntegrationGridTester(object):
     inclusive_xs, inclusive_xs_error, negative_weights, total_weights, n_events, n_upper_bound_failures = 0, 0, 0, 0, 0, 0
     for file_name in glob.glob( 'pwg*stat*.dat' ) :
       if os.path.isfile( file_name ) :
-        # Inclusive cross-section uncertainty
+        # Inclusive cross-section uncertainty [relative error on (total pos + |total neg|)]
         with open( file_name, 'rb' ) as data_file :
           try :
-            matched_lines = [ line.replace('+-','') for line in data_file if re.match(r'(.*)(total(.*)cross section|suppression factor)(.*)[0-9](.*)\+\-(.*)[0-9](.*)', line) ]
+            matched_lines = [ line.replace('+-','') for line in data_file if re.match(r'(.*)(btilde(.*)weights)(.*)[0-9](.*)\+\-(.*)[0-9](.*)', line) ]
             if len(matched_lines) > 0 :
-              inclusive_xs_values = map( float, re.findall( cls.__re_match_floats, matched_lines[0] ) )
-              inclusive_xs += inclusive_xs_values[0]
-              inclusive_xs_error += inclusive_xs_values[1]
+              positive_weight_xs = sum( [ map( float, re.findall(cls.__re_match_floats,line) ) for line in matched_lines if 'pos.' in line ], [] )
+              negative_weight_xs = sum( [ map( float, re.findall(cls.__re_match_floats,line) ) for line in matched_lines if '|neg.|' in line ], [] )
+              inclusive_xs += positive_weight_xs[0] + negative_weight_xs[0]
+              inclusive_xs_error += math.sqrt( positive_weight_xs[1]**2 + negative_weight_xs[1]**2 )
           except : # catch all exceptions
             pass
         # Negative weight test
@@ -53,13 +54,13 @@ class IntegrationGridTester(object):
 
     for file_name in glob.glob( 'pwgcounters*.dat' ) :
       if os.path.isfile( file_name ) :
-        # Upper bound violations
+        # Upper bound violations [in inclusive cross-section and generation of radiation]
         with open( file_name, 'rb' ) as data_file :
           try :
             matched_lines = [ line.replace('+-','') for line in data_file if re.match(r'(.*)(btilde event|remnant event|upper bound failure)(.*)[0-9](.*)', line) ]
             if len(matched_lines) > 0 :
-              n_events += map( float, re.findall( cls.__re_match_floats, [line for line in matched_lines if 'event' in line][0] ) )[0]
-              n_upper_bound_failures += sum( map( float, sum( [ re.findall( cls.__re_match_floats, line ) for line in matched_lines if 'upper bound failure' in line ], [] ) ) )
+              n_events += sum( map( float, [ re.findall(cls.__re_match_floats,line)[0] for line in matched_lines if 'event' in line ] ) )
+              n_upper_bound_failures += sum( map( float, [ re.findall(cls.__re_match_floats,line)[0] for line in matched_lines if 'upper bound failure' in line ] ) )
           except : # catch all exceptions
             pass
 
@@ -82,5 +83,7 @@ class IntegrationGridTester(object):
       getattr( logger, ['warning','info'][0.0 <= inclusive_xs_test < 1.0] )( 'Integration test :: {0:>25} : {1:.2f}%'.format('cross-section uncertainty', inclusive_xs_test) )
       getattr( logger, ['warning','info'][0.0 <= negative_weight_test < 1.0] )( 'Integration test :: {0:>25} : {1:.2f}%'.format('negative weight fraction', negative_weight_test) )
       getattr( logger, ['warning','info'][0.0 <= upper_bound_test < 1.0] )( 'Integration test :: {0:>25} : {1:.2f}%'.format('upper bound violations', upper_bound_test) )
+      if inclusive_xs_test < 0.0 or inclusive_xs_test >= 1.0 or negative_weight_test < 0.0 or negative_weight_test >= 1.0 or upper_bound_test < 0.0 or upper_bound_test >= 1.0 :
+        logger.warning( 'Not all integration tests passed. Please ensure that physics validation is done before using this sample!' )
     except : # catch all exceptions
       pass
diff --git a/Generators/PowhegControl/python/utility/LHEHandler.py b/Generators/PowhegControl/python/utility/LHEHandler.py
index ebdfef2568c9a..3b141af1b1efa 100644
--- a/Generators/PowhegControl/python/utility/LHEHandler.py
+++ b/Generators/PowhegControl/python/utility/LHEHandler.py
@@ -23,12 +23,12 @@ class LHEHandler :
 
   ## Merge many input LHE files into a single output file
   def merge( self, output_file, input_file_list ) :
+    if len(input_file_list) < 1 : raise IOError( 'No input LHE files provided. Aborting merge!' )
     self.log( 'Preparing to create {0} from {1} input files'.format( output_file, len(input_file_list) ) )
     nEvents = 0
 
     # Open output file
     with open(output_file, 'ab') as f_output :
-
       # Start with the first file
       self.log( '... working on {0}'.format(input_file_list[0]) )
       output_footer = []
diff --git a/Generators/PowhegControl/python/utility/NonBlockingStreamReader.py b/Generators/PowhegControl/python/utility/NonBlockingStreamReader.py
index bf42f6937d982..41507348c35b4 100644
--- a/Generators/PowhegControl/python/utility/NonBlockingStreamReader.py
+++ b/Generators/PowhegControl/python/utility/NonBlockingStreamReader.py
@@ -31,11 +31,12 @@ class NonBlockingStreamReader(object) :
 
 
   ## Return lines from queue
-  def readline(self, timeout = None):
+  def readline(self, timeout=None):
     try:
-      return self._queue.get( block=(timeout is not None), timeout=timeout ).rstrip()
+      output = self._queue.get( block=(timeout is not None), timeout=timeout ).rstrip()
+      return (output,self._queue.qsize())
     except Queue.Empty :
-      return None
+      return (None,0)
 
 
   ## Release thread resources on finalise
diff --git a/Generators/PowhegControl/python/utility/ProcessHandling.py b/Generators/PowhegControl/python/utility/ProcessHandling.py
index 5d58558c95253..5589bc205dbf2 100644
--- a/Generators/PowhegControl/python/utility/ProcessHandling.py
+++ b/Generators/PowhegControl/python/utility/ProcessHandling.py
@@ -73,9 +73,9 @@ class SingleProcessThread :
   def write_queued_output( self ) :
     for stream in [ 'stdout', 'stderr' ] :
       while True :
-        output = getattr( self, stream ).readline(timeout=0.1)
-        if output is None or len(output) == 0 : break
-        self.log( output, self.log_level[stream] )
+        output, queue_size = getattr( self, stream ).readline(timeout=0.1)
+        if not (output is None or len(output) == 0) : self.log( output, self.log_level[stream] )
+        if queue_size == 0 : break
 
 
   ## stdout stream from underlying process
diff --git a/Generators/PowhegControl/share/PowhegControl_VBF_W_Common.py b/Generators/PowhegControl/share/PowhegControl_VBF_W_Common.py
new file mode 100644
index 0000000000000..b195b2a42be00
--- /dev/null
+++ b/Generators/PowhegControl/share/PowhegControl_VBF_W_Common.py
@@ -0,0 +1,6 @@
+from PowhegControl import PowhegConfig_VBF_W
+
+# Use the Powheg_W configuration
+transform_runArgs = runArgs if 'runArgs' in dir() else None
+transform_opts = opts if 'opts' in dir() else None
+PowhegConfig = PowhegConfig_VBF_W( runArgs=transform_runArgs, opts=transform_opts )
diff --git a/Generators/PowhegControl/share/PowhegControl_VBF_Z_Common.py b/Generators/PowhegControl/share/PowhegControl_VBF_Z_Common.py
new file mode 100644
index 0000000000000..96aa13c2cf61c
--- /dev/null
+++ b/Generators/PowhegControl/share/PowhegControl_VBF_Z_Common.py
@@ -0,0 +1,6 @@
+from PowhegControl import PowhegConfig_VBF_Z
+
+# Use the Powheg_Z configuration
+transform_runArgs = runArgs if 'runArgs' in dir() else None
+transform_opts = opts if 'opts' in dir() else None
+PowhegConfig = PowhegConfig_VBF_Z( runArgs=transform_runArgs, opts=transform_opts )
diff --git a/Generators/PowhegControl/share/PowhegControl_Wjj_Common.py b/Generators/PowhegControl/share/PowhegControl_Wjj_Common.py
new file mode 100644
index 0000000000000..e9b7647b8fdc1
--- /dev/null
+++ b/Generators/PowhegControl/share/PowhegControl_Wjj_Common.py
@@ -0,0 +1,6 @@
+from PowhegControl import PowhegConfig_Wjj
+
+# Use the Powheg_Wjj configuration
+transform_runArgs = runArgs if 'runArgs' in dir() else None
+transform_opts = opts if 'opts' in dir() else None
+PowhegConfig = PowhegConfig_Wjj( runArgs=transform_runArgs, opts=transform_opts )
diff --git a/Generators/PowhegControl/share/PowhegControl_Zjj_Common.py b/Generators/PowhegControl/share/PowhegControl_Zjj_Common.py
new file mode 100644
index 0000000000000..6e4eb442df660
--- /dev/null
+++ b/Generators/PowhegControl/share/PowhegControl_Zjj_Common.py
@@ -0,0 +1,6 @@
+from PowhegControl import PowhegConfig_Zjj
+
+# Use the Powheg_Zjj configuration
+transform_runArgs = runArgs if 'runArgs' in dir() else None
+transform_opts = opts if 'opts' in dir() else None
+PowhegConfig = PowhegConfig_Zjj( runArgs=transform_runArgs, opts=transform_opts )
-- 
GitLab