ATLAS Offline Software
Toggle main menu visibility
Loading...
Searching...
No Matches
Generators
PowhegControl
python
processes
powheg
VV_pol_EFT.py
Go to the documentation of this file.
1
# Copyright (C) 2002-2025 CERN for the benefit of the ATLAS collaboration
2
3
import
os
4
from
...
import
Logging
5
from
..powheg_RES
import
PowhegRES
6
7
8
logger = Logging.logging.getLogger(
"PowhegControl"
)
9
10
11
class
VV_pol_EFT
(
PowhegRES
):
12
"""! Default Powheg configuration for W-boson pair production plus one jet using MiNNLOPS.
13
14
Create a configurable object with all applicable Powheg options.
15
16
@author Aonan Wang <aonan.wang@cern.ch>
17
"""
18
19
def
__init__
(self, base_directory, **kwargs):
20
"""! Constructor: all process options are set here.
21
22
@param base_directory: path to PowhegBox code.
23
@param kwargs dictionary of arguments from Generate_tf.
24
"""
25
super(VV_pol_EFT, self).
__init__
(base_directory,
"VV_pol"
, powheg_executable =
"pwhg_main_SM_ATGC_WARSAW"
,**kwargs)
26
27
os.environ[
'LD_LIBRARY_PATH'
] = os.environ.get(
"RECOLA_SM_ATGC_WARSAW_PATH"
,
""
) +
"/lib64/"
+
":"
+ os.environ.get(
"RECOLA_SM_ATGC_WARSAW_PATH"
,
""
) +
"/lib/"
+
":"
+ os.environ.get(
"LD_LIBRARY_PATH"
,
""
)
28
29
# Add parameter validation functions
30
self.
validation_functions
.append(
"validate_process"
)
31
self.
validation_functions
.append(
"validate_polarization"
)
32
33
# Add flag for the MiNNLO reweight
34
self.
reweight_for_MiNNLO
=
True
35
36
37
self.
allowed_VVprocess
= [
"w+ w- > e+ ve mu- vm~"
,
38
"w+ w- > mu+ vm e- ve~"
,
39
"w+ w- > tau+ vt e- ve~"
,
40
"w+ w- > e+ ve tau- vt~"
,
41
"w+ w- > tau+ vt mu- vm~"
,
42
"w+ w- > mu+ vm tau- vt~"
,
43
"w+ w- > e+ ve e- ve~"
,
44
"w+ w- > mu+ vm mu- vm~"
,
45
"w+ w- > tau+ vt tau- vt~"
,
46
"w+ z > e+ ve mu+ mu-"
,
47
"w+ z > e+ ve tau+ tau-"
,
48
"w+ z > mu+ vm e+ e-"
,
49
"w+ z > mu+ vm tau+ tau-"
,
50
"w+ z > tau+ vt e+ e-"
,
51
"w+ z > tau+ vt mu+ mu-"
,
52
"w- z > e- ve~ mu+ mu-"
,
53
"w- z > e- ve~ tau+ tau-"
,
54
"w- z > mu- vm~ e+ e-"
,
55
"w- z > mu- vm~ tau+ tau-"
,
56
"w- z > tau- vt~ e+ e-"
,
57
"w- z > tau- vt~ mu+ mu-"
,
58
"z z > e+ e- mu+ mu-"
,
59
"z z > e+ e- tau+ tau-"
,
60
"z z > mu+ mu- e+ e-"
,
61
"z z > mu+ mu- tau+ tau-"
,
62
"z z > tau+ tau- e+ e-"
,
63
"z z > tau+ tau- mu+ mu-"
,
64
]
65
self.
allowed_polarization
= [
"unpol-unpol"
,
66
"unpol-transv"
,
67
"transv-unpol"
,
68
"unpol-longit"
,
69
"longit-unpol"
,
70
"longit-longit"
,
71
"transv-transv"
,
72
"longit-transv"
,
73
"transv-longit"
,
74
"unpol-left"
,
75
"left-unpol"
,
76
"longit-left"
,
77
"left-longit"
,
78
"transv-left"
,
79
"left-transv"
,
80
"unpol-right"
,
81
"right-unpol"
,
82
"longit-right"
,
83
"right-longit"
,
84
"transv-right"
,
85
"right-transv"
,
86
"right-left"
,
87
"left-right"
,
88
"left-left"
,
89
"right-right"
,
90
]
91
# Add all keywords for this process, overriding defaults if required
92
self.
add_keyword
(
"ih1"
)
93
self.
add_keyword
(
"ih2"
)
94
self.
add_keyword
(
"lhans1"
, self.
default_PDFs
)
95
self.
add_keyword
(
"lhans2"
, self.
default_PDFs
)
96
self.
add_keyword
(
"renscfact"
, self.
default_scales
[1])
97
self.
add_keyword
(
"facscfact"
, self.
default_scales
[0])
98
self.
add_keyword
(
"procVV"
)
99
self.
add_keyword
(
"idvecbos"
)
100
self.
add_keyword
(
"decayV1"
,
"w+ w- > e+ ve mu- vm~"
, name=
"VVprocess"
, hidden=
False
)
101
self.
add_keyword
(
"decayV2"
)
102
self.
add_keyword
(
"dpa"
, 1)
103
self.
add_keyword
(
"pol1"
, 4, name=
"polarization"
)
104
self.
add_keyword
(
"pol2"
, 4)
105
self.
add_keyword
(
"NP_POWER"
)
106
self.
add_keyword
(
"SUM_AMP"
)
107
self.
add_keyword
(
"CHBD6"
)
108
self.
add_keyword
(
"CHWD6"
)
109
self.
add_keyword
(
"CHWBD6"
)
110
self.
add_keyword
(
"CWD6"
)
111
self.
add_keyword
(
"CHBtilD6"
)
112
self.
add_keyword
(
"CHWtilD6"
)
113
self.
add_keyword
(
"CHWBtilD6"
)
114
self.
add_keyword
(
"CWtilD6"
)
115
self.
add_keyword
(
"whichphsp"
, 2)
116
self.
add_keyword
(
"qcdonly"
, 0)
117
self.
add_keyword
(
"qedonly"
, 0)
118
self.
add_keyword
(
"numberofquarks"
, 4)
119
self.
add_keyword
(
"alphas_from_pdf"
, 1)
120
self.
add_keyword
(
"scheme"
, 1)
121
self.
add_keyword
(
"runningscale"
, 0)
122
self.
add_keyword
(
"improvedrclrunning"
)
123
self.
add_keyword
(
"useOSmass-mu"
)
124
self.
add_keyword
(
"mllcut"
)
125
self.
add_keyword
(
"mllmax"
,
"1d10"
)
126
self.
add_keyword
(
"ewsimplecuts"
)
127
self.
add_keyword
(
"ncall1"
, 1000000)
128
self.
add_keyword
(
"itmx1"
, 1)
129
self.
add_keyword
(
"fakevirt"
, 0)
130
self.
add_keyword
(
"ncall2"
, 1000000)
131
self.
add_keyword
(
"itmx2"
, 1)
132
self.
add_keyword
(
"foldcsi"
, 1)
133
self.
add_keyword
(
"foldy"
, 1)
134
self.
add_keyword
(
"foldphi"
, 1)
135
self.
add_keyword
(
"use-old-grid"
)
136
self.
add_keyword
(
"testplots"
)
137
self.
add_keyword
(
"nubound"
, 500000)
138
self.
add_keyword
(
"xupbound"
, 2)
139
self.
add_keyword
(
"use-old-ubound"
)
140
self.
add_keyword
(
"icsimax"
, 1)
141
self.
add_keyword
(
"iymax"
, 1)
142
self.
add_keyword
(
"ubexcess_correct"
)
143
self.
add_keyword
(
"storeinfo_rwgt"
)
144
self.
add_keyword
(
"rwl_group_events"
, 1)
145
self.
add_keyword
(
"rwl_file"
)
146
self.
add_keyword
(
"rwl_add"
)
147
self.
add_keyword
(
"rwl_format_rwgt"
)
148
self.
add_keyword
(
"Zmass"
)
149
self.
add_keyword
(
"Zwidth"
)
150
self.
add_keyword
(
"Wmass"
)
151
self.
add_keyword
(
"Wwidth"
)
152
self.
add_keyword
(
"Tmass"
)
153
self.
add_keyword
(
"Twidth"
)
154
self.
add_keyword
(
"Hmass"
)
155
self.
add_keyword
(
"Hwidth"
)
156
self.
add_keyword
(
"Mumass"
, 0)
157
self.
add_keyword
(
"Elmass"
, 0)
158
self.
add_keyword
(
"Taumass"
, 0)
159
self.
add_keyword
(
"gmu"
)
160
self.
add_keyword
(
"CKM_Vud"
,1)
161
self.
add_keyword
(
"CKM_Vus"
,0)
162
self.
add_keyword
(
"CKM_Vub"
,0)
163
self.
add_keyword
(
"CKM_Vcd"
,0)
164
self.
add_keyword
(
"CKM_Vcs"
,1)
165
self.
add_keyword
(
"CKM_Vcb"
,0)
166
self.
add_keyword
(
"CKM_Vtd"
,0)
167
self.
add_keyword
(
"CKM_Vts"
,0)
168
self.
add_keyword
(
"CKM_Vtb"
,1)
169
self.
add_keyword
(
"nondiagCKM"
)
170
self.
add_keyword
(
"bornzerodamp"
)
171
self.
add_keyword
(
"bornsuppfact"
)
172
self.
add_keyword
(
"bornsuppfact-pt"
)
173
self.
add_keyword
(
"bornonly"
)
174
self.
add_keyword
(
"allrad"
)
175
self.
add_keyword
(
"check_bad_st1"
)
176
self.
add_keyword
(
"check_bad_st2"
)
177
self.
add_keyword
(
"manyseeds"
)
178
self.
add_keyword
(
"parallelstage"
)
179
self.
add_keyword
(
"maxseeds"
)
180
self.
add_keyword
(
"xgriditeration"
)
181
182
def
validate_process
(self):
183
"""! Validate the various process keywords."""
184
self.
expose
()
# convenience call to simplify syntax
185
self.
check_decay_mode
(self.
VVprocess
, self.
allowed_VVprocess
)
186
# Enable appropriate decay mode
187
list(self.
parameters_by_keyword
(
"decayV1"
))[0].value = 1
# adjust the one used as a proxy for process
188
189
if
"w+ w-"
in
self.
VVprocess
:
190
list(self.
parameters_by_keyword
(
"procVV"
))[0].value = 1
191
if
"e+ ve mu- vm~"
in
self.
VVprocess
:
192
list(self.
parameters_by_keyword
(
"decayV1"
))[0].value = 1
193
list(self.
parameters_by_keyword
(
"decayV2"
))[0].value = 2
194
elif
"mu+ vm e- ve~"
in
self.
VVprocess
:
195
list(self.
parameters_by_keyword
(
"decayV1"
))[0].value = 2
196
list(self.
parameters_by_keyword
(
"decayV2"
))[0].value = 1
197
elif
"tau+ vt e- ve~"
in
self.
VVprocess
:
198
list(self.
parameters_by_keyword
(
"decayV1"
))[0].value = 3
199
list(self.
parameters_by_keyword
(
"decayV2"
))[0].value = 1
200
elif
"e+ ve tau- vt~"
in
self.
VVprocess
:
201
list(self.
parameters_by_keyword
(
"decayV1"
))[0].value = 1
202
list(self.
parameters_by_keyword
(
"decayV2"
))[0].value = 3
203
elif
"tau+ vt mu- vm~"
in
self.
VVprocess
:
204
list(self.
parameters_by_keyword
(
"decayV1"
))[0].value = 3
205
list(self.
parameters_by_keyword
(
"decayV2"
))[0].value = 2
206
elif
"mu+ vm tau- vt~"
in
self.
VVprocess
:
207
list(self.
parameters_by_keyword
(
"decayV1"
))[0].value = 2
208
list(self.
parameters_by_keyword
(
"decayV2"
))[0].value = 3
209
elif
"e+ ve e- ve~"
in
self.
VVprocess
:
210
list(self.
parameters_by_keyword
(
"decayV1"
))[0].value = 1
211
list(self.
parameters_by_keyword
(
"decayV2"
))[0].value = 1
212
elif
"mu+ vm mu- vm~"
in
self.
VVprocess
:
213
list(self.
parameters_by_keyword
(
"decayV1"
))[0].value = 2
214
list(self.
parameters_by_keyword
(
"decayV2"
))[0].value = 2
215
elif
"tau+ vt tau- vt~"
in
self.
VVprocess
:
216
list(self.
parameters_by_keyword
(
"decayV1"
))[0].value = 3
217
list(self.
parameters_by_keyword
(
"decayV2"
))[0].value = 3
218
219
elif
"z z"
in
self.
VVprocess
:
220
list(self.
parameters_by_keyword
(
"procVV"
))[0].value = 2
221
list(self.
parameters_by_keyword
(
"numberofquarks"
))[0].value = 5
222
if
"e+ ve mu+ mu-"
in
self.
VVprocess
:
223
list(self.
parameters_by_keyword
(
"decayV1"
))[0].value = 1
224
list(self.
parameters_by_keyword
(
"decayV2"
))[0].value = 2
225
elif
"e+ e- tau+ tau-"
in
self.
VVprocess
:
226
list(self.
parameters_by_keyword
(
"decayV1"
))[0].value = 1
227
list(self.
parameters_by_keyword
(
"decayV2"
))[0].value = 3
228
elif
"mu+ mu- e+ e-"
in
self.
VVprocess
:
229
list(self.
parameters_by_keyword
(
"decayV1"
))[0].value = 2
230
list(self.
parameters_by_keyword
(
"decayV2"
))[0].value = 1
231
elif
"mu+ mu- tau+ tau-"
in
self.
VVprocess
:
232
list(self.
parameters_by_keyword
(
"decayV1"
))[0].value = 2
233
list(self.
parameters_by_keyword
(
"decayV2"
))[0].value = 3
234
elif
"tau+ tau- e+ e-"
in
self.
VVprocess
:
235
list(self.
parameters_by_keyword
(
"decayV1"
))[0].value = 3
236
list(self.
parameters_by_keyword
(
"decayV2"
))[0].value = 1
237
elif
"tau+ tau- mu+ mu-"
in
self.
VVprocess
:
238
list(self.
parameters_by_keyword
(
"decayV1"
))[0].value = 3
239
list(self.
parameters_by_keyword
(
"decayV2"
))[0].value = 2
240
241
elif
"w+ z"
in
self.
VVprocess
:
242
list(self.
parameters_by_keyword
(
"idvecbos"
))[0].value = 24
243
list(self.
parameters_by_keyword
(
"procVV"
))[0].value = 3
244
if
"e+ ve mu+ mu-"
in
self.
VVprocess
:
245
list(self.
parameters_by_keyword
(
"decayV1"
))[0].value = 1
246
list(self.
parameters_by_keyword
(
"decayV2"
))[0].value = 2
247
elif
"e+ ve tau+ tau-"
in
self.
VVprocess
:
248
list(self.
parameters_by_keyword
(
"decayV1"
))[0].value = 1
249
list(self.
parameters_by_keyword
(
"decayV2"
))[0].value = 3
250
elif
"mu+ vm e+ e-"
in
self.
VVprocess
:
251
list(self.
parameters_by_keyword
(
"decayV1"
))[0].value = 2
252
list(self.
parameters_by_keyword
(
"decayV2"
))[0].value = 1
253
elif
"mu+ vm tau+ tau-"
in
self.
VVprocess
:
254
list(self.
parameters_by_keyword
(
"decayV1"
))[0].value = 2
255
list(self.
parameters_by_keyword
(
"decayV2"
))[0].value = 3
256
elif
"tau+ vt e+ e-"
in
self.
VVprocess
:
257
list(self.
parameters_by_keyword
(
"decayV1"
))[0].value = 3
258
list(self.
parameters_by_keyword
(
"decayV2"
))[0].value = 1
259
elif
"tau+ vt mu+ mu-"
in
self.
VVprocess
:
260
list(self.
parameters_by_keyword
(
"decayV1"
))[0].value = 3
261
list(self.
parameters_by_keyword
(
"decayV2"
))[0].value = 2
262
263
elif
"w- z"
in
self.
VVprocess
:
264
list(self.
parameters_by_keyword
(
"idvecbos"
))[0].value = -24
265
list(self.
parameters_by_keyword
(
"procVV"
))[0].value = 3
266
if
"e- ve~ mu+ mu-"
in
self.
VVprocess
:
267
list(self.
parameters_by_keyword
(
"decayV1"
))[0].value = 1
268
list(self.
parameters_by_keyword
(
"decayV2"
))[0].value = 2
269
elif
"e- ve~ tau+ tau-"
in
self.
VVprocess
:
270
list(self.
parameters_by_keyword
(
"decayV1"
))[0].value = 1
271
list(self.
parameters_by_keyword
(
"decayV2"
))[0].value = 3
272
elif
"mu- vm~ e+ e-"
in
self.
VVprocess
:
273
list(self.
parameters_by_keyword
(
"decayV1"
))[0].value = 2
274
list(self.
parameters_by_keyword
(
"decayV2"
))[0].value = 1
275
elif
"mu- vm~ tau+ tau-"
in
self.
VVprocess
:
276
list(self.
parameters_by_keyword
(
"decayV1"
))[0].value = 2
277
list(self.
parameters_by_keyword
(
"decayV2"
))[0].value = 3
278
elif
"tau- vt~ e+ e-"
in
self.
VVprocess
:
279
list(self.
parameters_by_keyword
(
"decayV1"
))[0].value = 3
280
list(self.
parameters_by_keyword
(
"decayV2"
))[0].value = 1
281
elif
"tau- vt~ mu+ mu-"
in
self.
VVprocess
:
282
list(self.
parameters_by_keyword
(
"decayV1"
))[0].value = 3
283
list(self.
parameters_by_keyword
(
"decayV2"
))[0].value = 2
284
285
def
validate_polarization
(self):
286
"""! Validate the various polarization keywords."""
287
self.
expose
()
# convenience call to simplify syntax
288
self.
check_decay_mode
(self.
polarization
, self.
allowed_polarization
)
289
# Enable appropriate decay mode
290
list(self.
parameters_by_keyword
(
"pol1"
))[0].value = 4
# adjust the one used as a proxy for polarization
291
list(self.
parameters_by_keyword
(
"pol2"
))[0].value = 4
292
293
if
"unpol-unpol"
not
in
self.
polarization
:
294
list(self.
parameters_by_keyword
(
"dpa"
))[0].value = 1
295
list(self.
parameters_by_keyword
(
"qcdonly"
))[0].value = 1
296
if
"transv-"
in
self.
polarization
:
297
list(self.
parameters_by_keyword
(
"pol1"
))[0].value = 3
298
elif
"longit-"
in
self.
polarization
:
299
list(self.
parameters_by_keyword
(
"pol1"
))[0].value = 0
300
elif
"left-"
in
self.
polarization
:
301
list(self.
parameters_by_keyword
(
"pol1"
))[0].value = -1
302
elif
"right-"
in
self.
polarization
:
303
list(self.
parameters_by_keyword
(
"pol1"
))[0].value = 1
304
if
"-transv"
in
self.
polarization
:
305
list(self.
parameters_by_keyword
(
"pol2"
))[0].value = 3
306
elif
"-longit"
in
self.
polarization
:
307
list(self.
parameters_by_keyword
(
"pol2"
))[0].value = 0
308
elif
"-left"
in
self.
polarization
:
309
list(self.
parameters_by_keyword
(
"pol2"
))[0].value = -1
310
elif
"-right"
in
self.
polarization
:
311
list(self.
parameters_by_keyword
(
"pol2"
))[0].value = 1
312
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.VV_pol_EFT.VV_pol_EFT
Default Powheg configuration for W-boson pair production plus one jet using MiNNLOPS.
Definition
VV_pol_EFT.py:11
python.processes.powheg.VV_pol_EFT.VV_pol_EFT.validate_polarization
validate_polarization(self)
Validate the various polarization keywords.
Definition
VV_pol_EFT.py:285
python.processes.powheg.VV_pol_EFT.VV_pol_EFT.VVprocess
VVprocess
Definition
VV_pol_EFT.py:185
python.processes.powheg.VV_pol_EFT.VV_pol_EFT.validate_process
validate_process(self)
Validate the various process keywords.
Definition
VV_pol_EFT.py:182
python.processes.powheg.VV_pol_EFT.VV_pol_EFT.polarization
polarization
Definition
VV_pol_EFT.py:288
python.processes.powheg.VV_pol_EFT.VV_pol_EFT.allowed_VVprocess
list allowed_VVprocess
List of allowed decay modes.
Definition
VV_pol_EFT.py:37
python.processes.powheg.VV_pol_EFT.VV_pol_EFT.allowed_polarization
list allowed_polarization
Definition
VV_pol_EFT.py:65
python.processes.powheg.VV_pol_EFT.VV_pol_EFT.reweight_for_MiNNLO
bool reweight_for_MiNNLO
Definition
VV_pol_EFT.py:34
python.processes.powheg.VV_pol_EFT.VV_pol_EFT.__init__
__init__(self, base_directory, **kwargs)
Constructor: all process options are set here.
Definition
VV_pol_EFT.py:19
python.processes.powheg_RES.PowhegRES
Base class for PowhegBox RES processes.
Definition
powheg_RES.py:7
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
Generated on
for ATLAS Offline Software by
1.17.0