ATLAS Offline Software
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 AthenaCommon import Logging
4 from ..powheg_V2 import PowhegV2
5 import itertools
6 
7 
8 logger = Logging.logging.getLogger("PowhegControl")
9 
10 
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.expose
def expose(self)
Add all names to the interface of this object.
Definition: configurable.py:46
python.processes.powheg.VBF_ZZ.VBF_ZZ.__init__
def __init__(self, base_directory, **kwargs)
Constructor: all process options are set here.
Definition: VBF_ZZ.py:37
vtune_athena.format
format
Definition: vtune_athena.py:14
python.processes.powheg_base.PowhegBase.default_scales
def default_scales(self)
Default scale variations for this process.
Definition: powheg_base.py:246
python.processes.powheg.VBF_ZZ.VBF_ZZ
Definition: VBF_ZZ.py:11
python.processes.configurable.Configurable.add_keyword
def 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.powheg.VBF_ZZ.VBF_ZZ.validate_decays
def validate_decays(self)
Validate idvecbos, vdecaymodew1 and vdecaymodew2 keywords.
Definition: VBF_ZZ.py:171
dumpHVPathFromNtuple.append
bool append
Definition: dumpHVPathFromNtuple.py:91
python.processes.configurable.Configurable.parameters_by_keyword
def parameters_by_keyword(self, keyword)
Retrieve all parameters that use a given keyword.
Definition: configurable.py:57
python.processes.powheg_base.PowhegBase.validation_functions
validation_functions
List of validation functions to run before preparing runcard.
Definition: powheg_base.py:179
python.processes.powheg_base.PowhegBase.check_decay_mode
def 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:283
histSizes.list
def list(name, path='/')
Definition: histSizes.py:38
TCS::join
std::string join(const std::vector< std::string > &v, const char c=',')
Definition: Trigger/TrigT1/L1Topo/L1TopoCommon/Root/StringUtils.cxx:10
python.processes.powheg.VBF_ZZ.VBF_ZZ.allowed_decay_modes
allowed_decay_modes
List of allowed decay modes WARNING: "tau+ tau-" or "vt vt~" are not supported for this process.
Definition: VBF_ZZ.py:52
python.processes.powheg_base.PowhegBase.default_PDFs
def default_PDFs(self)
Default PDFs for this process.
Definition: powheg_base.py:241
python.processes.powheg_V2.PowhegV2
Base class for PowhegBox V2 processes.
Definition: powheg_V2.py:6
Trk::split
@ split
Definition: LayerMaterialProperties.h:38