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