ATLAS Offline Software
ZZj_MiNNLO.py
Go to the documentation of this file.
1 # Copyright (C) 2002-2025 CERN for the benefit of the ATLAS collaboration
2 
3 from AthenaCommon import Logging
4 from ..powheg_RES import PowhegRES
5 
6 
7 logger = Logging.logging.getLogger("PowhegControl")
8 
9 
11  """! Default Powheg configuration for Z-boson pair production plus one jet using MiNNLOPS.
12 
13  Create a configurable object with all applicable Powheg options.
14 
15  @author Guglielmo Frattari <guglielmo.frattari@cern.ch>
16  """
17 
18  def __init__(self, base_directory, **kwargs):
19  """! Constructor: all process options are set here.
20 
21  @param base_directory: path to PowhegBox code.
22  @param kwargs dictionary of arguments from Generate_tf.
23  """
24  super(ZZj_MiNNLO, self).__init__(base_directory, "ZZJ", **kwargs)
25 
26  # Add parameter validation functions
27  self.validation_functions.append("validate_decays")
28 
29  # Add flag for the MiNNLO reweight
30  self.reweight_for_MiNNLO = True
31 
32 
33  self.allowed_decay_modes = ["z z > e- e+ mu- mu+",
34  "z z > e- e+ tau- tau+",
35  "z z > mu- mu+ tau- tau+",
36  "z z > l- l+ l'- l'+",
37  "z z > e- e+ e- e+",
38  "z z > mu- mu+ mu- mu+",
39  "z z > tau- tau+ tau- tau+",
40  "z z > l- l+ l- l+",
41  "z z > e- e+ e- e+ / mu- mu+ mu- mu+",
42  "z z > e- e+ vl vl~",
43  "z z > mu- mu+ vl vl~",
44  "z z > tau- tau+ vl vl~",
45  "z z > l- l+ vl vl~",
46  "z z > e- e+ vl vl~ / mu- mu+ vl vl~",
47  "z z (+ w w) > e- e+ vl vl~",
48  "z z (+ w w) > mu- mu+ vl vl~",
49  "z z (+ w w) > tau- tau+ vl vl~",
50  "z z (+ w w) > l- l+ vl vl~",
51  "z z (+ w w) > e- e+ vl vl~ / mu- mu+ vl vl~",
52  "z z > j j j' j'",
53  "z z > j j j j",
54  "z z > l- l+ j j",
55  "z z > j j vl vl~"]
56 
57  # Add all keywords for this process, overriding defaults if required
58  self.add_keyword("ih1")
59  self.add_keyword("ih2")
60  self.add_keyword("lhans1", self.default_PDFs)
61  self.add_keyword("lhans2", self.default_PDFs)
62  self.add_keyword("alphas_from_pdf", 1)
63  self.add_keyword("fixedscale", 0)
64  self.add_keyword("whichscale", 1)
65  self.add_keyword("minlo", 1)
66  self.add_keyword("minnlo", 1)
67  self.add_keyword("modlog_p", "-1d0")
68  self.add_keyword("Q0", "0d0")
69  self.add_keyword("largeptscales", 1)
70  self.add_keyword("smartMiNLO", 1)
71  self.add_keyword("run_mode", 4)
72  self.add_keyword("rwl_group_events", 1)
73  self.add_keyword("renscfact", self.default_scales[1])
74  self.add_keyword("facscfact", self.default_scales[0])
75  self.add_keyword("storeinfo_rwgt", 1)
76  self.add_keyword("rwl_file")
77  self.add_keyword("ewscheme")
78  self.add_keyword("gfermi")
79  self.add_keyword("zmass")
80  self.add_keyword("wmass")
81  self.add_keyword("hmass")
82  self.add_keyword("tmass")
83  self.add_keyword("bmass", 0)
84  self.add_keyword("zwidth")
85  self.add_keyword("wwidth")
86  self.add_keyword("twidth")
87  self.add_keyword("hwidth")
88  self.add_keyword("e-e+mu-mu+", 1, name="decay_mode", hidden=False)
89  self.add_keyword("e-e+tau-tau+")
90  self.add_keyword("mu-mu+tau-tau+")
91  self.add_keyword("4l_DF")
92  self.add_keyword("e-e+e-e+")
93  self.add_keyword("mu-mu+mu-mu+")
94  self.add_keyword("tau-tau+tau-tau+")
95  self.add_keyword("4l_SF")
96  self.add_keyword("4l_notau_SF")
97  self.add_keyword("e-e+nunu_DF")
98  self.add_keyword("mu-mu+nunu_DF")
99  self.add_keyword("tau-tau+nunu_DF")
100  self.add_keyword("2l2nu_DF")
101  self.add_keyword("2l2nu_notau_DF")
102  self.add_keyword("n_neutrinos_DF")
103  self.add_keyword("e-e+nunu_SF")
104  self.add_keyword("mu-mu+nunu_SF")
105  self.add_keyword("tau-tau+nunu_SF")
106  self.add_keyword("2l2nu_SF")
107  self.add_keyword("2l2nu_notau_SF")
108  self.add_keyword("4q_DF")
109  self.add_keyword("4q_SF")
110  self.add_keyword("2l2q")
111  self.add_keyword("2q2nu")
112  self.add_keyword("massive_leptons", 0)
113  self.add_keyword("e_mass", 0.000511)
114  self.add_keyword("mu_mass", 0.1057)
115  self.add_keyword("tau_mass", 1.777)
116  self.add_keyword("c_mass", 1.40)
117  self.add_keyword("b_mass", 4.92)
118  self.add_keyword("bornktmin", 0.26)
119  self.add_keyword("mll_min", 60)
120  self.add_keyword("mll_max", 120)
121  self.add_keyword("m4lcut", 4)
122  self.add_keyword("use-old-grid", 1)
123  self.add_keyword("ncall1", 30000)
124  self.add_keyword("itmx1", 1)
125  self.add_keyword("ncall2", 30000)
126  self.add_keyword("itmx2", 1)
127  self.add_keyword("foldcsi", 1)
128  self.add_keyword("foldy", 1)
129  self.add_keyword("foldphi", 1)
130  self.add_keyword("testplots", 0)
131  self.add_keyword("use-old-ubound", 1)
132  self.add_keyword("nubound", 50000)
133  self.add_keyword("storemintupb", 1)
134  self.add_keyword("xupbound", 2)
135  self.add_keyword("mintupbratlim", 1000)
136  self.add_keyword("ubexcess_correct", 1)
137  # self.add_keyword("btildeviol")
138  # self.add_keyword("corr_btilde")
139  # self.add_keyword("corr_remnant")
140  self.add_keyword("colltest", 0)
141  self.add_keyword("softtest", 0)
142  self.add_keyword("withdamp", 1)
143  self.add_keyword("smartsig", 1)
144  self.add_keyword("fastbtlbound", 1)
145  self.add_keyword("check_bad_st1")
146  self.add_keyword("check_bad_st2")
147  self.add_keyword("manyseeds")
148  self.add_keyword("parallelstage")
149  self.add_keyword("maxseeds")
150  self.add_keyword("xgriditeration")
151 
152  def validate_decays(self):
153  """! Validate the various decay mode keywords."""
154  self.expose() # convenience call to simplify syntax
155  self.check_decay_mode(self.decay_mode, self.allowed_decay_modes)
156  # Enable appropriate decay mode
157  list(self.parameters_by_keyword("e-e+mu-mu+"))[0].value = 0
158  __decay_mode_lookup = {
159  "z z > l- l+ l'- l'+" : "4l_DF",
160  "z z > e- e+ mu- mu+": "e-e+mu-mu+",
161  "z z > e- e+ tau- tau+": "e-e+tau-tau+",
162  "z z > mu- mu+ tau- tau+": "mu-mu+tau-tau+",
163  "z z > e- e+ e- e+": "e-e+e-e+",
164  "z z > mu- mu+ mu- mu+": "mu-mu+mu-mu+",
165  "z z > tau- tau+ tau- tau+": "tau-tau+tau-tau+",
166  "z z > l- l+ l- l+": "4l_SF",
167  "z z > e- e+ e- e+ / mu- mu+ mu- mu+": "4l_notau_SF",
168  "z z > e- e+ vl vl~": "e-e+nunu_DF",
169  "z z > mu- mu+ vl vl~": "mu-mu+nunu_DF",
170  "z z > tau- tau+ vl vl~": "tau-tau+nunu_DF",
171  "z z > l- l+ vl vl~": "2l2nu_DF",
172  "z z > e- e+ vl vl~ / mu- mu+ vl vl~": "2l2nu_notau_DF",
173  "z z (+ w w) > e- e+ vl vl~": "e-e+nunu_SF",
174  "z z (+ w w) > mu- mu+ vl vl~": "mu-mu+nunu_SF",
175  "z z (+ w w) > tau- tau+ vl vl~": "tau-tau+nunu_SF",
176  "z z (+ w w) > l- l+ vl vl~": "2l2nu_SF",
177  "z z (+ w w) > e- e+ vl vl~ / mu- mu+ vl vl~": "2l2nu_notau_SF",
178  "z z > j j j' j'": "4q_DF",
179  "z z > j j j j": "4q_SF",
180  "z z > l- l+ j j": "2l2q",
181  "z z > j j vl vl~": "2q2nu"}
182 
183  list(self.parameters_by_keyword(__decay_mode_lookup[self.decay_mode]))[0].value = 1
python.processes.configurable.Configurable.expose
def expose(self)
Add all names to the interface of this object.
Definition: configurable.py:46
python.processes.powheg.ZZj_MiNNLO.ZZj_MiNNLO
Default Powheg configuration for Z-boson pair production plus one jet using MiNNLOPS.
Definition: ZZj_MiNNLO.py:10
python.processes.powheg_base.PowhegBase.default_scales
def default_scales(self)
Default scale variations for this process.
Definition: powheg_base.py:194
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.ZZj_MiNNLO.ZZj_MiNNLO.allowed_decay_modes
allowed_decay_modes
List of allowed decay modes.
Definition: ZZj_MiNNLO.py:33
python.processes.powheg.ZZj_MiNNLO.ZZj_MiNNLO.reweight_for_MiNNLO
reweight_for_MiNNLO
Definition: ZZj_MiNNLO.py:30
python.processes.powheg.ZZj_MiNNLO.ZZj_MiNNLO.__init__
def __init__(self, base_directory, **kwargs)
Constructor: all process options are set here.
Definition: ZZj_MiNNLO.py:18
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.ZZj_MiNNLO.ZZj_MiNNLO.validate_decays
def validate_decays(self)
Validate the various decay mode keywords.
Definition: ZZj_MiNNLO.py:152
python.processes.powheg_base.PowhegBase.validation_functions
validation_functions
List of validation functions to run before preparing runcard.
Definition: powheg_base.py:127
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:231
histSizes.list
def list(name, path='/')
Definition: histSizes.py:38
python.processes.powheg_base.PowhegBase.default_PDFs
def default_PDFs(self)
Default PDFs for this process.
Definition: powheg_base.py:189
python.processes.powheg_RES.PowhegRES
Base class for PowhegBox RES processes.
Definition: powheg_RES.py:7