ATLAS Offline Software
Toggle main menu visibility
Loading...
Searching...
No Matches
Generators
PowhegControl
python
processes
powheg
VBF_ZZ.py
Go to the documentation of this file.
1
# Copyright (C) 2002-2021 CERN for the benefit of the ATLAS collaboration
2
3
from
...
import
Logging
4
from
..powheg_V2
import
PowhegV2
5
import
itertools
6
7
8
logger = Logging.logging.getLogger(
"PowhegControl"
)
9
10
11
class
VBF_ZZ
(
PowhegV2
):
12
"""
13
Default Powheg configuration for Z-boson pair plus jet production through vector boson fusion.
14
15
Create a configurable object with all applicable Powheg options.
16
17
Note that in the presence of a very sharp resonance, as is the case in a scenario with a light Higgs boson with a
18
mass below 200 GeV, the resonant Higgs contribution has to be evaluated separately from the ZZ continuum, as
19
described in https://arxiv.org/abs/1312.3252. In this case the entire event generation chain has to be performed
20
for each of these two contributions separately in two distinct working directories, setting
21
:code:`PowhegConfig.zz_res_type = 1`
22
for the WW continuum and
23
:code:`PowhegConfig.zz_res_type = 2`
24
for the Higgs resonance contribution. After all the runs have been performed for each case, the results have to
25
be added.
26
If the Higgs is heavy and broad, such a splitting is not necessary, and all contributions can be evaluated at the
27
same time, setting
28
:code:PowhegConfig.zz_res_type = 0`.
29
30
If you use this process for a publication, please cite:
31
https://arxiv.org/abs/1312.3252
32
as well as the usual Powheg(Box) publications
33
34
@author Timothee Theveneaux-Pelzer <tpelzer@cern.ch>
35
"""
36
37
def
__init__
(self, base_directory, **kwargs):
38
"""! Constructor: all process options are set here.
39
40
@param base_directory: path to PowhegBox code.
41
@param kwargs dictionary of arguments from Generate_tf.
42
"""
43
super(VBF_ZZ, self).
__init__
(base_directory,
"VBF_Z_Z"
, **kwargs)
44
45
# Add parameter validation functions
46
self.
validation_functions
.append(
"validate_decays"
)
47
48
50
z_decay_products = [
"e+ e-"
,
"mu+ mu-"
,
"ve ve~"
,
"vm vm~"
,
"d d~"
,
"s s~"
,
"u u~"
,
"c- c~"
,
"(d d~ / s s~)"
,
"(u u~ / c c~)"
]
51
52
self.
allowed_decay_modes
= [
"z z > {} {}"
.format(*x)
for
x
in
itertools.product(z_decay_products, z_decay_products)]
53
# Add all keywords for this process, overriding defaults if required
54
self.
add_keyword
(
"alphas_from_lhapdf"
)
55
self.
add_keyword
(
"bornktmin"
)
56
self.
add_keyword
(
"bornonly"
)
57
self.
add_keyword
(
"bornsuppfact"
, 100)
# self.add_keyword("bornsuppfact", 1)
58
self.
add_keyword
(
"bornzerodamp"
)
59
self.
add_keyword
(
"bottomthr"
)
60
self.
add_keyword
(
"bottomthrpdf"
)
61
self.
add_keyword
(
"btildeborn"
)
62
self.
add_keyword
(
"btildecoll"
)
63
self.
add_keyword
(
"btildereal"
)
64
self.
add_keyword
(
"btildevirt"
)
65
self.
add_keyword
(
"btlscalect"
, 1)
66
self.
add_keyword
(
"btlscalereal"
, 1)
67
self.
add_keyword
(
"channel_type"
, 0)
# [0:all (default), 7: all Neutral Currents, 1:ucuc-type NC, 2:usus-type NC, 3:dcdc-type NC, 4:dsds-type NC, 8: all Charged Currents, 5: usdc-type CC, 6: dcus-type CC]
68
self.
add_keyword
(
"charmthr"
)
69
self.
add_keyword
(
"charmthrpdf"
)
70
self.
add_keyword
(
"check_bad_st1"
)
71
self.
add_keyword
(
"check_bad_st2"
)
72
self.
add_keyword
(
"clobberlhe"
)
73
self.
add_keyword
(
"colltest"
)
74
self.
add_keyword
(
"compress_lhe"
)
75
self.
add_keyword
(
"compress_upb"
)
76
self.
add_keyword
(
"compute_rwgt"
)
77
self.
add_keyword
(
"doublefsr"
)
78
self.
add_keyword
(
"evenmaxrat"
)
79
self.
add_keyword
(
"facscfact"
, self.
default_scales
[0])
80
self.
add_keyword
(
"fakevirt"
)
81
self.
add_keyword
(
"fastbtlbound"
)
82
self.
add_keyword
(
"fixedgrid"
)
83
self.
add_keyword
(
"flg_debug"
)
84
self.
add_keyword
(
"foldcsi"
, 2)
85
self.
add_keyword
(
"foldphi"
)
86
self.
add_keyword
(
"foldy"
, 2)
87
self.
add_keyword
(
"fullrwgt"
)
88
self.
add_keyword
(
"fullrwgtmode"
)
89
self.
add_keyword
(
"hdamp"
)
90
self.
add_keyword
(
"hfact"
)
91
self.
add_keyword
(
"hmass"
)
92
self.
add_keyword
(
"hwidth"
)
93
self.
add_keyword
(
"icsimax"
)
94
self.
add_keyword
(
"ih1"
)
95
self.
add_keyword
(
"ih2"
)
96
self.
add_keyword
(
"itmx1"
, 3)
97
self.
add_keyword
(
"itmx1rm"
)
98
self.
add_keyword
(
"itmx2"
, 6)
99
self.
add_keyword
(
"itmx2rm"
)
100
self.
add_keyword
(
"iupperfsr"
)
101
self.
add_keyword
(
"iupperisr"
)
102
self.
add_keyword
(
"iymax"
)
103
self.
add_keyword
(
"lhans1"
, self.
default_PDFs
)
104
self.
add_keyword
(
"lhans2"
, self.
default_PDFs
)
105
self.
add_keyword
(
"lhapdf6maxsets"
)
106
self.
add_keyword
(
"lhrwgt_descr"
)
107
self.
add_keyword
(
"lhrwgt_group_combine"
)
108
self.
add_keyword
(
"lhrwgt_group_name"
)
109
self.
add_keyword
(
"lhrwgt_id"
)
110
self.
add_keyword
(
"LOevents"
)
111
self.
add_keyword
(
"manyseeds"
)
112
self.
add_keyword
(
"max_io_bufsize"
)
113
self.
add_keyword
(
"maxseeds"
, 1000)
114
self.
add_keyword
(
"minlo"
)
115
self.
add_keyword
(
"mintupbratlim"
)
116
self.
add_keyword
(
"mintupbxless"
)
117
self.
add_keyword
(
"mll_gencut"
, 20)
118
self.
add_keyword
(
"ncall1"
, 700000)
119
self.
add_keyword
(
"ncall1rm"
)
120
self.
add_keyword
(
"ncall2"
, 900000)
121
self.
add_keyword
(
"ncall2rm"
)
122
self.
add_keyword
(
"ncallfrominput"
)
123
self.
add_keyword
(
"noevents"
)
124
self.
add_keyword
(
"novirtual"
)
125
self.
add_keyword
(
"nubound"
, 400000)
126
self.
add_keyword
(
"olddij"
)
127
self.
add_keyword
(
"par_2gsupp"
)
128
self.
add_keyword
(
"par_diexp"
)
129
self.
add_keyword
(
"par_dijexp"
)
130
self.
add_keyword
(
"parallelstage"
)
131
self.
add_keyword
(
"pdfreweight"
)
132
self.
add_keyword
(
"ptsqmin"
)
133
self.
add_keyword
(
"ptsupp"
)
134
self.
add_keyword
(
"radregion"
)
135
self.
add_keyword
(
"rand1"
)
136
self.
add_keyword
(
"rand2"
)
137
self.
add_keyword
(
"renscfact"
, self.
default_scales
[1])
138
self.
add_keyword
(
"runningscales"
, 1)
139
self.
add_keyword
(
"rwl_add"
)
140
self.
add_keyword
(
"rwl_file"
)
141
self.
add_keyword
(
"rwl_format_rwgt"
)
142
self.
add_keyword
(
"rwl_group_events"
)
143
self.
add_keyword
(
"smartsig"
)
144
self.
add_keyword
(
"softtest"
)
145
self.
add_keyword
(
"stage2init"
)
146
self.
add_keyword
(
"storeinfo_rwgt"
)
147
self.
add_keyword
(
"storemintupb"
)
148
self.
add_keyword
(
"testplots"
)
149
self.
add_keyword
(
"testsuda"
)
150
self.
add_keyword
(
"ubexcess_correct"
)
151
self.
add_keyword
(
"ubsigmadetails"
)
152
self.
add_keyword
(
"use-old-grid"
)
153
self.
add_keyword
(
"use-old-ubound"
)
154
self.
add_keyword
(
"vdecaymodeZ2"
, hidden=
True
)
155
self.
add_keyword
(
"vdecaymodeZ1"
, self.
allowed_decay_modes
[0], name=
"decay_mode"
)
156
self.
add_keyword
(
"withdamp"
, 1)
157
self.
add_keyword
(
"withnegweights"
)
158
self.
add_keyword
(
"withsubtr"
)
159
self.
add_keyword
(
"wmass"
)
160
self.
add_keyword
(
"wwidth"
)
161
self.
add_keyword
(
"zmass"
)
162
self.
add_keyword
(
"zwidth"
)
163
self.
add_keyword
(
"zz_res_type"
)
164
self.
add_keyword
(
"xgriditeration"
)
165
self.
add_keyword
(
"xupbound"
, 2)
166
self.
add_keyword
(
"zerowidth"
)
167
# Note: the process-specific parameter 'fat jet' is not currently implemented in PowhegControl.
168
# If you need it, please contact the PowhegControl maintainer(s).
169
170
171
def
validate_decays
(self):
172
"""! Validate idvecbos, vdecaymodew1 and vdecaymodew2 keywords."""
173
self.
expose
()
# convenience call to simplify syntax
174
self.
check_decay_mode
(self.
decay_mode
, self.
allowed_decay_modes
)
175
# Calculate appropriate decay mode numbers
176
_decay_products = [p
for
p
in
self.
decay_mode
.
split
(
"> "
)[1].
split
(
" "
)]
177
_decay_mode_lookup = {
178
"e+ e-"
: 11,
179
"mu+ mu-"
: 13,
180
"ve ve~"
: 12,
181
"vm vm~"
: 14,
182
"d d~"
: 1,
183
"s s~"
: 3,
184
"u u~"
: 2,
185
"c- c~"
: 4,
186
"(d d~ / s s~)"
: 7,
187
"(u u~ / c c~)"
: 8,
188
}
189
list(self.
parameters_by_keyword
(
"vdecaymodeZ1"
))[0].value = _decay_mode_lookup[
" "
.join(_decay_products[0:2])]
190
list(self.
parameters_by_keyword
(
"vdecaymodeZ2"
))[0].value = _decay_mode_lookup[
" "
.join(_decay_products[2:4])]
python.processes.configurable.Configurable.add_keyword
add_keyword(self, keyword, value=None, name=None, frozen=None, hidden=None, description=None, **kwargs)
Register configurable parameter that is exposed to the user.
Definition
configurable.py:21
python.processes.configurable.Configurable.expose
expose(self)
Add all names to the interface of this object.
Definition
configurable.py:46
python.processes.configurable.Configurable.parameters_by_keyword
parameters_by_keyword(self, keyword)
Retrieve all parameters that use a given keyword.
Definition
configurable.py:57
python.processes.powheg.VBF_ZZ.VBF_ZZ
Definition
VBF_ZZ.py:11
python.processes.powheg.VBF_ZZ.VBF_ZZ.allowed_decay_modes
list allowed_decay_modes
Definition
VBF_ZZ.py:52
python.processes.powheg.VBF_ZZ.VBF_ZZ.__init__
__init__(self, base_directory, **kwargs)
Constructor: all process options are set here.
Definition
VBF_ZZ.py:37
python.processes.powheg.VBF_ZZ.VBF_ZZ.validate_decays
validate_decays(self)
Validate idvecbos, vdecaymodew1 and vdecaymodew2 keywords.
Definition
VBF_ZZ.py:171
python.processes.powheg.VBF_ZZ.VBF_ZZ.decay_mode
decay_mode
Definition
VBF_ZZ.py:174
python.processes.powheg_V2.PowhegV2
Base class for PowhegBox V2 processes.
Definition
powheg_V2.py:6
python.processes.powheg_base.PowhegBase.validation_functions
list validation_functions
List of validation functions to run before preparing runcard.
Definition
powheg_base.py:127
python.processes.powheg_base.PowhegBase.check_decay_mode
check_decay_mode(self, decay_mode, allowed_decay_modes=None)
Check whether a decay mode is allowed an raise an exception if it is not.
Definition
powheg_base.py:231
python.processes.powheg_base.PowhegBase.default_scales
default_scales(self)
Default scale variations for this process.
Definition
powheg_base.py:194
split
std::vector< std::string > split(const std::string &s, const std::string &t=":")
Definition
hcg.cxx:179
Generated on
for ATLAS Offline Software by
1.17.0