ATLAS Offline Software
VBF_osWW.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 opposite-sign W-boson pair plus jet pair 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 WW continuum, as
19  described in https://arxiv.org/abs/1301.1695. 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.ww_res_type = 1`
22  for the WW continuum and
23  :code:`PowhegConfig.ww_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.ww_res_type = 0`.
29 
30  If you use this process for a publication, please cite:
31  https://arxiv.org/abs/1301.1695
32  as well as the usual Powheg(Box) publications
33 
34  @author Stefan Richter <stefan.richter@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_osWW, self).__init__(base_directory, "VBF_Wp_Wm", **kwargs)
44 
45  # Add parameter validation functions
46  self.validation_functions.append("validate_decays")
47 
48 
49  wp_decay_products = ["e+ ve", "mu+ vm", "tau+ vt", "u d~", "c s~", "(u d~ / c s~)"]
50  wm_decay_products = ["e- ve~", "mu- vm~", "tau- vt~", "d u~", "s c~", "(d u~ / s c~)"]
51 
52  self.allowed_decay_modes = ["w+ w- > {} {}".format(*x) for x in itertools.product(wp_decay_products, wm_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("charmthr")
68  self.add_keyword("charmthrpdf")
69  self.add_keyword("check_bad_st1")
70  self.add_keyword("check_bad_st2")
71  self.add_keyword("clobberlhe")
72  self.add_keyword("colltest")
73  self.add_keyword("compress_lhe")
74  self.add_keyword("compress_upb")
75  self.add_keyword("compute_rwgt")
76  self.add_keyword("doublefsr")
77  self.add_keyword("evenmaxrat")
78  self.add_keyword("facscfact", self.default_scales[0])
79  self.add_keyword("fakevirt")
80  self.add_keyword("fastbtlbound")
81  self.add_keyword("fixedgrid")
82  self.add_keyword("flg_debug")
83  self.add_keyword("foldcsi", 2)
84  self.add_keyword("foldphi")
85  self.add_keyword("foldy", 2)
86  self.add_keyword("fullrwgt")
87  self.add_keyword("fullrwgtmode")
88  self.add_keyword("hdamp")
89  self.add_keyword("hfact")
90  self.add_keyword("hmass")
91  self.add_keyword("hwidth")
92  self.add_keyword("icsimax")
93  self.add_keyword("ih1")
94  self.add_keyword("ih2")
95  self.add_keyword("itmx1", 3)
96  self.add_keyword("itmx1rm")
97  self.add_keyword("itmx2", 6)
98  self.add_keyword("itmx2rm")
99  self.add_keyword("iupperfsr")
100  self.add_keyword("iupperisr")
101  self.add_keyword("iymax")
102  self.add_keyword("lhans1", self.default_PDFs)
103  self.add_keyword("lhans2", self.default_PDFs)
104  self.add_keyword("lhapdf6maxsets")
105  self.add_keyword("lhrwgt_descr")
106  self.add_keyword("lhrwgt_group_combine")
107  self.add_keyword("lhrwgt_group_name")
108  self.add_keyword("lhrwgt_id")
109  self.add_keyword("LOevents")
110  self.add_keyword("manyseeds")
111  self.add_keyword("max_io_bufsize")
112  self.add_keyword("maxseeds", 1000)
113  self.add_keyword("minlo")
114  self.add_keyword("mintupbratlim")
115  self.add_keyword("mintupbxless")
116  self.add_keyword("ncall1", 700000)
117  self.add_keyword("ncall1rm")
118  self.add_keyword("ncall2", 900000)
119  self.add_keyword("ncall2rm")
120  self.add_keyword("ncallfrominput")
121  self.add_keyword("noevents")
122  self.add_keyword("novirtual")
123  self.add_keyword("nubound", 400000)
124  self.add_keyword("olddij")
125  self.add_keyword("par_2gsupp")
126  self.add_keyword("par_diexp")
127  self.add_keyword("par_dijexp")
128  self.add_keyword("parallelstage")
129  self.add_keyword("pdfreweight")
130  self.add_keyword("ptsqmin")
131  self.add_keyword("ptsupp")
132  self.add_keyword("radregion")
133  self.add_keyword("rand1")
134  self.add_keyword("rand2")
135  self.add_keyword("renscfact", self.default_scales[1])
136  self.add_keyword("runningscales", 1)
137  self.add_keyword("rwl_add")
138  self.add_keyword("rwl_file")
139  self.add_keyword("rwl_format_rwgt")
140  self.add_keyword("rwl_group_events")
141  self.add_keyword("smartsig")
142  self.add_keyword("softtest")
143  self.add_keyword("stage2init")
144  self.add_keyword("storeinfo_rwgt")
145  self.add_keyword("storemintupb")
146  self.add_keyword("testplots")
147  self.add_keyword("testsuda")
148  self.add_keyword("ubexcess_correct")
149  self.add_keyword("ubsigmadetails")
150  self.add_keyword("use-old-grid")
151  self.add_keyword("use-old-ubound")
152  self.add_keyword("vdecaymodeWm", hidden=True)
153  self.add_keyword("vdecaymodeWp", self.allowed_decay_modes[0], name="decay_mode")
154  self.add_keyword("withdamp", 1)
155  self.add_keyword("withnegweights")
156  self.add_keyword("withsubtr")
157  self.add_keyword("wmass")
158  self.add_keyword("ww_res_type")
159  self.add_keyword("wwidth")
160  self.add_keyword("xgriditeration")
161  self.add_keyword("xupbound", 2)
162  self.add_keyword("zerowidth")
163  # Note: the process-specific parameter 'fat jet' is not currently implemented in PowhegControl.
164  # If you need it, please contact the PowhegControl maintainer(s).
165 
166 
167  def validate_decays(self):
168  """! Validate idvecbos, vdecaymodew1 and vdecaymodew2 keywords."""
169  self.expose() # convenience call to simplify syntax
170  self.check_decay_mode(self.decay_mode, self.allowed_decay_modes)
171  # Calculate appropriate decay mode numbers
172  _decay_products = [p for p in self.decay_mode.split("> ")[1].split(" ")]
173  _decay_mode_lookup = {
174  "e+ ve": -11,
175  "mu+ vm": -13,
176  "tau+ vt": -15,
177  "u d~" : -1,
178  "c s~" : -3,
179  "(u d~ / c s~)" : -7,
180  "e- ve~": 11,
181  "mu- vm~": 13,
182  "tau- vt~": 15,
183  "d u~" : 1,
184  "s c~" : 3,
185  "(d u~ / s c~)" : 7,
186  }
187  list(self.parameters_by_keyword("vdecaymodeWp"))[0].value = _decay_mode_lookup[" ".join(_decay_products[0:2])]
188  list(self.parameters_by_keyword("vdecaymodeWm"))[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
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.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_osWW.VBF_osWW.__init__
def __init__(self, base_directory, **kwargs)
Constructor: all process options are set here.
Definition: VBF_osWW.py:37
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.VBF_osWW.VBF_osWW
Definition: VBF_osWW.py:11
python.processes.powheg.VBF_osWW.VBF_osWW.validate_decays
def validate_decays(self)
Validate idvecbos, vdecaymodew1 and vdecaymodew2 keywords.
Definition: VBF_osWW.py:167
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
python.processes.powheg.VBF_osWW.VBF_osWW.allowed_decay_modes
allowed_decay_modes
List of allowed decay modes.
Definition: VBF_osWW.py:52
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_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