ATLAS Offline Software
Toggle main menu visibility
Loading...
Searching...
No Matches
Generators
PowhegControl
python
processes
powheg
gg4l.py
Go to the documentation of this file.
1
# Copyright (C) 2002-2023 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
class
gg4l
(
PowhegRES
):
11
"""! Default Powheg configuration for
12
NLO QCD corrections to 4 lepton production in gluon fusion,
13
including the Higgs-mediated contribution, the diboson background and their interference.
14
15
Create a configurable object with all applicable Powheg options.
16
17
@author Andrej Saibel <Andrej.Saibel@cern.ch>
18
"""
19
20
def
__init__
(self, base_directory, **kwargs):
21
"""! Constructor: all process options are set here.
22
23
@param base_directory: path to PowhegBox code.
24
@param kwargs dictionary of arguments from Generate_tf.
25
"""
26
27
# list of message patterns to be treated as warnings
28
warnings = [
29
"ggvvamp: increasing precision to"
30
]
31
super(gg4l, self).
__init__
(base_directory,
"gg4l"
, **kwargs)
32
self.
warning_output
= warnings
33
34
# defining gg4l environment variable to bypass file path issues in QCDLoop-*/ff/ffinit.f
35
os.environ[
'gg4lPATH'
] = os.path.dirname(self.
executable
)
36
logger.info(
"gg4lPATH defined as = {0}"
.format(os.getenv(
'gg4lPATH'
)))
37
38
39
# Add parameter validation functions
40
self.
validation_functions
.append(
"validate_process_contrib"
)
41
42
43
self.
allowed_process_modes
= [
"\'WW\'"
,
"\'ZZ\'"
]
44
self.
allowed_contrib_modes
= [
"\'full\'"
,
"\'only_h\'"
,
"\'no_h\'"
,
"\'interf_h\'"
]
45
46
# Add all keywords for this process, overriding defaults if required
47
self.
add_keyword
(
"allrad"
, 1)
48
self.
add_keyword
(
"alpha"
)
49
self.
add_keyword
(
"bmass"
)
50
self.
add_keyword
(
"bornktmin"
)
51
self.
add_keyword
(
"bornonly"
)
52
self.
add_keyword
(
"bornsuppfact"
)
53
self.
add_keyword
(
"bornzerodamp"
)
54
self.
add_keyword
(
"bottommass"
)
55
self.
add_keyword
(
"bottomthr"
)
56
self.
add_keyword
(
"bottomthrpdf"
)
57
self.
add_keyword
(
"btildeborn"
)
58
self.
add_keyword
(
"btildecoll"
)
59
self.
add_keyword
(
"btildereal"
)
60
self.
add_keyword
(
"btildevirt"
)
61
self.
add_keyword
(
"btlscalect"
)
62
self.
add_keyword
(
"btlscalereal"
)
63
self.
add_keyword
(
"charmthr"
)
64
self.
add_keyword
(
"charmthrpdf"
)
65
self.
add_keyword
(
"check_bad_st1"
)
66
self.
add_keyword
(
"check_bad_st2"
)
67
self.
add_keyword
(
"chklimseed"
)
68
self.
add_keyword
(
"clobberlhe"
)
69
self.
add_keyword
(
"colltest"
)
70
self.
add_keyword
(
"complexGFermi"
)
71
self.
add_keyword
(
"compress_lhe"
)
72
self.
add_keyword
(
"compress_upb"
)
73
self.
add_keyword
(
"compute_rwgt"
)
74
self.
add_keyword
(
"contr"
,
"\'full\'"
)
# 'full', 'only_h', 'no_h' or 'interf_h'
75
self.
add_keyword
(
"dorwgt"
, 1)
76
self.
add_keyword
(
"doublefsr"
)
77
self.
add_keyword
(
"enhancereg"
)
78
self.
add_keyword
(
"evenmaxrat"
)
79
self.
add_keyword
(
"ewscheme"
)
80
self.
add_keyword
(
"facscfact"
, self.
default_scales
[0])
81
self.
add_keyword
(
"fastbtlbound"
)
82
self.
add_keyword
(
"fixedscale"
)
83
self.
add_keyword
(
"flg_debug"
)
84
self.
add_keyword
(
"foldcsi"
, 2)
85
self.
add_keyword
(
"foldphi"
, 5)
86
self.
add_keyword
(
"foldy"
, 5)
87
self.
add_keyword
(
"for_reweighting"
)
88
self.
add_keyword
(
"fullrwgt"
)
89
self.
add_keyword
(
"gamcut"
, 60)
90
self.
add_keyword
(
"hdamp"
, 172.5)
91
self.
add_keyword
(
"hfact"
)
92
self.
add_keyword
(
"hmass"
)
93
self.
add_keyword
(
"hwidth"
)
94
self.
add_keyword
(
"icsimax"
)
95
self.
add_keyword
(
"ih1"
)
96
self.
add_keyword
(
"ih2"
)
97
self.
add_keyword
(
"itmx1"
)
98
self.
add_keyword
(
"itmx1btl"
)
99
self.
add_keyword
(
"itmx1btlbrn"
)
100
self.
add_keyword
(
"itmx1rm"
)
101
self.
add_keyword
(
"itmx2"
, 6)
102
self.
add_keyword
(
"itmx2btl"
)
103
self.
add_keyword
(
"itmx2btlbrn"
)
104
self.
add_keyword
(
"itmx2rm"
)
105
self.
add_keyword
(
"iupperfsr"
)
106
self.
add_keyword
(
"iupperisr"
)
107
self.
add_keyword
(
"iymax"
)
108
self.
add_keyword
(
"lhans1"
, self.
default_PDFs
)
109
self.
add_keyword
(
"lhans2"
, self.
default_PDFs
)
110
self.
add_keyword
(
"lhrwgt_descr"
)
111
self.
add_keyword
(
"lhrwgt_group_combine"
)
112
self.
add_keyword
(
"lhrwgt_group_name"
)
113
self.
add_keyword
(
"lhrwgt_id"
)
114
self.
add_keyword
(
"LOevents"
)
115
self.
add_keyword
(
"m4l_sampling"
, 2)
# 0: flat 1: exponential 2:Breit-Wigner
116
self.
add_keyword
(
"m4lmax"
, 100)
117
self.
add_keyword
(
"m4lmin"
, 1)
118
self.
add_keyword
(
"m4lwindow"
, 4)
119
self.
add_keyword
(
"manyseeds"
)
120
self.
add_keyword
(
"massiveloops"
, 0)
121
self.
add_keyword
(
"mass_rwg_frac"
, 0.)
# gg4l treatment of heavy-flavour
122
self.
add_keyword
(
"max_io_bufsize"
)
123
self.
add_keyword
(
"maxseeds"
)
124
self.
add_keyword
(
"minlo"
)
125
self.
add_keyword
(
"mint_density_map"
)
126
self.
add_keyword
(
"mintupbratlim"
)
127
self.
add_keyword
(
"mllmax"
, 100)
# default 0.1 GeV this is maximum invar mass for Z leptons
128
self.
add_keyword
(
"mllmin"
, 0.)
# default 0.1 GeV this is minimum invar mass for Z leptons
129
self.
add_keyword
(
"MSbarscheme"
)
130
self.
add_keyword
(
"mt_expansion"
, 1)
131
self.
add_keyword
(
"ncall1"
, 10000)
132
self.
add_keyword
(
"ncall1btl"
)
133
self.
add_keyword
(
"ncall1btlbrn"
, 50000)
134
self.
add_keyword
(
"ncall1rm"
)
135
self.
add_keyword
(
"ncall2"
, 10000)
136
self.
add_keyword
(
"ncall2btl"
)
137
self.
add_keyword
(
"ncall2btlbrn"
,100000)
138
self.
add_keyword
(
"ncall2rm"
)
139
self.
add_keyword
(
"ncallfrominput"
)
140
self.
add_keyword
(
"noevents"
)
141
self.
add_keyword
(
"nores"
)
142
self.
add_keyword
(
"novirtual"
)
143
self.
add_keyword
(
"nubound"
, 50000)
144
self.
add_keyword
(
"ol_nf"
, 6)
145
self.
add_keyword
(
"ol_verbose"
, 1)
146
self.
add_keyword
(
"ol_preset"
, 3)
147
self.
add_keyword
(
"ol_notri"
, 0)
148
self.
add_keyword
(
"ol_stability_kill"
, 0.01)
149
self.
add_keyword
(
"olpreset"
)
150
self.
add_keyword
(
"olverbose"
)
151
self.
add_keyword
(
"openloops-stability"
)
152
self.
add_keyword
(
"openloopsreal"
)
153
self.
add_keyword
(
"openloopsvirtual"
)
154
self.
add_keyword
(
"par_2gsupp"
)
155
self.
add_keyword
(
"par_diexp"
)
156
self.
add_keyword
(
"par_dijexp"
)
157
self.
add_keyword
(
"parallelstage"
)
158
self.
add_keyword
(
"pdfreweight"
)
159
self.
add_keyword
(
"proc"
,
"\'WW\'"
)
# 'ZZ' or 'WW'
160
self.
add_keyword
(
"ptllmin"
, 0.1)
# this is hard-coded for virtual corrections with massive loops
161
self.
add_keyword
(
"ptsqmin"
)
162
self.
add_keyword
(
"ptsupp"
)
163
self.
add_keyword
(
"ptVVcut_CT"
)
164
self.
add_keyword
(
"ptVVcut"
)
165
self.
add_keyword
(
"radregion"
)
166
self.
add_keyword
(
"rand1"
)
167
self.
add_keyword
(
"rand2"
)
168
self.
add_keyword
(
"regridfix"
)
169
self.
add_keyword
(
"renscfact"
, self.
default_scales
[1])
170
self.
add_keyword
(
"rwl_add"
)
171
self.
add_keyword
(
"rwl_file"
)
172
self.
add_keyword
(
"rwl_format_rwgt"
)
173
self.
add_keyword
(
"rwl_group_events"
)
174
self.
add_keyword
(
"select_real"
, 0)
#do gg qg qq channels
175
self.
add_keyword
(
"smartsig"
)
176
self.
add_keyword
(
"softmismch"
)
177
self.
add_keyword
(
"softonly"
)
178
self.
add_keyword
(
"softtest"
)
179
self.
add_keyword
(
"stage2init"
)
180
self.
add_keyword
(
"storeinfo_rwgt"
)
181
self.
add_keyword
(
"storemintupb"
)
182
self.
add_keyword
(
"testplots"
)
183
self.
add_keyword
(
"testsuda"
)
184
self.
add_keyword
(
"tmass_phsp"
)
185
self.
add_keyword
(
"tmass"
)
186
self.
add_keyword
(
"twidth"
,-1)
187
self.
add_keyword
(
"twidth_phsp"
,-1)
188
self.
add_keyword
(
"ubexcess_correct"
)
189
self.
add_keyword
(
"ubsigmadetails"
, -1)
# disable cross-section output to avoid Fortran crash
190
self.
add_keyword
(
"use-old-grid"
)
191
self.
add_keyword
(
"use-old-ubound"
)
192
self.
add_keyword
(
"useoldphsp"
, 0)
# use the old phase space parametrization from ggZZ
193
self.
add_keyword
(
"user_reshists_sep"
)
194
self.
add_keyword
(
"vdecaymodeV1"
)
# decay mode of first vector boson
195
self.
add_keyword
(
"vdecaymodeV2"
)
# decay mode of second vector boson
196
self.
add_keyword
(
"verytinypars"
)
197
self.
add_keyword
(
"virtonly"
)
198
self.
add_keyword
(
"which_as"
,2)
199
self.
add_keyword
(
"whichpwhgevent"
)
200
self.
add_keyword
(
"withbtilde"
)
201
self.
add_keyword
(
"withdamp"
, 1)
202
self.
add_keyword
(
"withnegweights"
)
203
self.
add_keyword
(
"withremnants"
)
204
self.
add_keyword
(
"withsubtr"
)
205
self.
add_keyword
(
"wmass"
)
206
self.
add_keyword
(
"wwidth"
)
207
self.
add_keyword
(
"xgriditeration"
)
208
self.
add_keyword
(
"xupbound"
, 2)
209
self.
add_keyword
(
"zerowidth"
)
210
self.
add_keyword
(
"zmass"
)
211
self.
add_keyword
(
"zwidth"
)
212
213
214
def
validate_process_contrib
(self):
215
"""! Validate Process and Contribution modes"""
216
self.
expose
()
# convenience call to simplify syntax
217
218
#adding char qualication to input
219
if
"\'"
not
in
self.
proc
:
220
self.
proc
=
"\'"
+self.
proc
+
"\'"
221
if
"\'"
not
in
self.
contr
:
222
self.
contr
=
"\'"
+self.
contr
+
"\'"
223
224
#Modify unsupported decay configuration in ZZ production
225
if
(self.
proc
==
"'ZZ'"
and
((self.
vdecaymodeV1
== self.
vdecaymodeV2
)
or
self.
vdecaymodeV1
== 15
or
self.
vdecaymodeV2
== 15)):
226
logger.warning(
"Powheg/gg4l does support directly 4e, 4mu or tau final states."
)
227
if
(self.
vdecaymodeV1
== 11
and
self.
vdecaymodeV2
== 11):
228
logger.warning(
"Ask to generate 2e2mu decays and hack the LHE files to have 4e final states - make sure to validate!"
)
229
self.
add_algorithm
(
"mu2e"
)
230
elif(self.
vdecaymodeV1
== 13
and
self.
vdecaymodeV2
== 13):
231
logger.warning(
"Ask to generate 2e2mu decays and hack the LHE files to have 4mu final states - make sure to validate!"
)
232
self.
add_algorithm
(
"e2mu"
)
233
elif(self.
vdecaymodeV1
== 15
and
self.
vdecaymodeV2
== 15):
234
logger.warning(
"Ask to generate 2e2mu decays and hack the LHE files to have 4tau final states - make sure to validate!"
)
235
self.
add_algorithm
(
"e2tau"
)
236
self.
add_algorithm
(
"mu2tau"
)
237
elif(self.
vdecaymodeV1
== 11
and
self.
vdecaymodeV2
== 15)
or
(self.
vdecaymodeV1
== 15
and
self.
vdecaymodeV2
== 11):
238
logger.warning(
"Ask to generate 2e2mu decays and hack the LHE files to have 2e2tau final states - make sure to validate!"
)
239
self.
add_algorithm
(
"mu2tau"
)
240
elif(self.
vdecaymodeV1
== 13
and
self.
vdecaymodeV2
== 15)
or
(self.
vdecaymodeV1
== 15
and
self.
vdecaymodeV2
== 13):
241
logger.warning(
"Ask to generate 2e2mu decays and hack the LHE files to have 2mu2tau final states - make sure to validate!"
)
242
self.
add_algorithm
(
"e2tau"
)
243
elif(self.
vdecaymodeV1
==
'll'
and
self.
vdecaymodeV2
==
'll'
):
244
logger.warning(
"Ask to generate 2e2mu decays and hack the LHE files to have inclusive 4l decays - make sure to validate!"
)
245
self.
add_algorithm
(
"gg4l_emu2all"
)
246
247
self.
vdecaymodeV1
= 11
248
self.
vdecaymodeV2
= 13
249
self.
parameters_by_keyword
(
"vdecaymodeV1"
)[0].value = self.
vdecaymodeV1
250
self.
parameters_by_keyword
(
"vdecaymodeV2"
)[0].value = self.
vdecaymodeV2
251
252
#check if the setting is allowed
253
if
self.
proc
not
in
self.
allowed_process_modes
:
254
logger.warning(
"Process mode {} not recognised!"
.format(self.
proc
))
255
raise
ValueError(
"Process mode {} not recognised!"
.format(self.
proc
))
256
257
if
self.
contr
not
in
self.
allowed_contrib_modes
:
258
logger.warning(
"Contribution mode {} not recognised!"
.format(self.
contr
))
259
raise
ValueError(
"Contribution mode {} not recognised!"
.format(self.
contr
))
260
261
self.
parameters_by_keyword
(
"proc"
)[0].value = self.
proc
262
self.
parameters_by_keyword
(
"contr"
)[0].value = self.
contr
263
if
if(pathvar)
Definition
SealSharedLib.cxx:168
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.gg4l.gg4l
Default Powheg configuration for NLO QCD corrections to 4 lepton production in gluon fusion,...
Definition
gg4l.py:10
python.processes.powheg.gg4l.gg4l.validate_process_contrib
validate_process_contrib(self)
Validate Process and Contribution modes.
Definition
gg4l.py:214
python.processes.powheg.gg4l.gg4l.allowed_contrib_modes
list allowed_contrib_modes
Definition
gg4l.py:44
python.processes.powheg.gg4l.gg4l.contr
str contr
Definition
gg4l.py:221
python.processes.powheg.gg4l.gg4l.__init__
__init__(self, base_directory, **kwargs)
Constructor: all process options are set here.
Definition
gg4l.py:20
python.processes.powheg.gg4l.gg4l.vdecaymodeV1
int vdecaymodeV1
Definition
gg4l.py:227
python.processes.powheg.gg4l.gg4l.vdecaymodeV2
int vdecaymodeV2
Definition
gg4l.py:248
python.processes.powheg.gg4l.gg4l.allowed_process_modes
list allowed_process_modes
Definition
gg4l.py:43
python.processes.powheg.gg4l.gg4l.proc
str proc
Definition
gg4l.py:219
python.processes.powheg_RES.PowhegRES
Base class for PowhegBox RES processes.
Definition
powheg_RES.py:7
python.processes.powheg_base.PowhegBase.executable
executable
Powheg executable that will be used.
Definition
powheg_base.py:72
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.add_algorithm
add_algorithm(self, alg_or_process)
Add an algorithm or external process to the sequence.
Definition
powheg_base.py:156
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