From 8ce75fdabc56e46f1d299be725444d8d5989dbd6 Mon Sep 17 00:00:00 2001 From: James Robinson <james.em.robinson@gmail.com> Date: Thu, 8 Mar 2018 17:49:58 +0100 Subject: [PATCH] Added catch for users defining empty weight groups. Added missing reweighting definitions. 2018-01-22 15:30:30. (PowhegControl-00-03-08) Former-commit-id: 94b9e5f527e881048169d325cd7e83d968837b87 --- .../algorithms/postprocessors/reweighter.py | 25 ++++++++++++------- .../algorithms/preprocessors/reweighter.py | 11 -------- .../PowhegControl/python/powheg_control.py | 16 +++++++----- .../python/processes/powheg/DMS_tloop.py | 3 +++ .../python/processes/powheg/DMV.py | 3 +++ .../python/processes/powheg/HWj.py | 3 +++ .../python/processes/powheg/HZj.py | 3 +++ .../python/processes/powheg/Hjj.py | 3 +++ .../python/processes/powheg/VBF_H.py | 3 +++ .../python/processes/powheg/VBF_ssWW.py | 3 +++ .../python/processes/powheg/WW.py | 3 +++ .../python/processes/powheg/WZ.py | 3 +++ .../python/processes/powheg/W_EW.py | 3 +++ .../python/processes/powheg/Wbb.py | 3 +++ .../python/processes/powheg/Wbbj.py | 3 +++ .../python/processes/powheg/Wjj.py | 3 +++ .../python/processes/powheg/Wt_DR.py | 3 +++ .../python/processes/powheg/Wt_DS.py | 3 +++ .../python/processes/powheg/ZZ.py | 3 +++ .../python/processes/powheg/Z_EW.py | 3 +++ .../python/processes/powheg/Zjj.py | 3 +++ .../python/processes/powheg/bblvlv.py | 1 + .../python/processes/powheg/chi0chi0.py | 3 +++ .../python/processes/powheg/chi0chi1.py | 3 +++ .../python/processes/powheg/chi1chi1.py | 3 +++ .../python/processes/powheg/ggF_H.py | 3 +++ .../python/processes/powheg/jj.py | 4 +++ .../python/processes/powheg/jjj.py | 3 +++ .../python/processes/powheg/ssWWjj.py | 3 +++ .../python/processes/powheg/t_sch.py | 3 +++ .../python/processes/powheg/t_tch_4FS.py | 3 +++ .../python/processes/powheg/ttH.py | 1 + .../python/processes/powheg_base.py | 3 +++ .../python/utility/file_parser.py | 4 ++- .../python/utility/process_handling.py | 11 +++++++- 35 files changed, 126 insertions(+), 28 deletions(-) diff --git a/Generators/PowhegControl/python/algorithms/postprocessors/reweighter.py b/Generators/PowhegControl/python/algorithms/postprocessors/reweighter.py index 301112f225db2..470a1b82cc033 100644 --- a/Generators/PowhegControl/python/algorithms/postprocessors/reweighter.py +++ b/Generators/PowhegControl/python/algorithms/postprocessors/reweighter.py @@ -40,11 +40,11 @@ def reweighter(process, weight_groups, powheg_LHE_output): logger.info("Preparing weight group: {:<19} with {} weights".format(group_name, len(weight_group) - len(non_weight_attributes))) # Name -> keyword dictionary is different if this is an XML reweighting - is_xml_compatible = all([k in xml_kwds.keys() for _kw_set in weight_group["keywords"] for k in _kw_set]) + is_xml_compatible = process.has_XML_support and all([k in xml_kwds.keys() for _kw_set in weight_group["keywords"] for k in _kw_set]) if is_xml_compatible: _keywords = [list(set([xml_kwds[k] for k in _kw_set])) for _kw_set in weight_group["keywords"]] else: - logger.warning("... this weight group is incompatible with XML-style reweighting. Will use (slow) old method.") + logger.warning("... this weight group and/or process is incompatible with XML-style reweighting. Will use (slow) old method.") _keywords = weight_group["keywords"] keyword_dict = dict((n, k) for n, k in zip(weight_group["parameter_names"], _keywords)) @@ -89,6 +89,16 @@ def reweighter(process, weight_groups, powheg_LHE_output): non_xml_weight_list.append(weight) xml_lines.append(xml_lines.pop(0)) # move the closing tag to the end + # Make backup of generation statistics + if os.path.isfile("pwgcounters.dat"): + shutil.copy("pwgcounters.dat", "pwgcounters.dat.bak") + + # .. and also backup unweighted events + try: + shutil.copy(powheg_LHE_output, "{}.unweighted".format(powheg_LHE_output)) + except IOError: + raise IOError("Nominal LHE file could not be found. Probably POWHEG-BOX crashed during event generation.") + # Write xml output n_xml_weights = len(weight_list) - len(non_xml_weight_list) if n_xml_weights > 0: @@ -98,22 +108,19 @@ def reweighter(process, weight_groups, powheg_LHE_output): f_rwgt.write("{}\n".format(xml_line)) f_rwgt.write("</initrwgt>") - # Make backup of generation statistics - if os.path.isfile("pwgcounters.dat"): - shutil.copy("pwgcounters.dat", "pwgcounters.dat.bak") - # Add reweighting lines to runcard FileParser("powheg.input").text_replace("rwl_file .*", "rwl_file 'reweighting_input.xml'") FileParser("powheg.input").text_replace("rwl_add .*", "rwl_add 1") FileParser("powheg.input").text_replace("clobberlhe .*", "clobberlhe 1") - # Copy the old events and then run the reweighter - shutil.copy(powheg_LHE_output, "{}.unweighted".format(powheg_LHE_output)) logger.info("Preparing simultaneous calculation of {} additional weights for generated events.".format(n_xml_weights)) singlecore_untimed(process) # Move the reweighted file back - shutil.move(powheg_LHE_output.replace(".lhe", "-rwgt.lhe"), powheg_LHE_output) + try: + shutil.move(powheg_LHE_output.replace(".lhe", "-rwgt.lhe"), powheg_LHE_output) + except IOError: + raise IOError("Reweighted LHE file could not be found. Probably POWHEG-BOX crashed during reweighting.") # Iterate over any variations which require old-style reweighting if len(non_xml_weight_list) > 0: diff --git a/Generators/PowhegControl/python/algorithms/preprocessors/reweighter.py b/Generators/PowhegControl/python/algorithms/preprocessors/reweighter.py index ab92fa191c58c..12d6d2fd2d3f9 100644 --- a/Generators/PowhegControl/python/algorithms/preprocessors/reweighter.py +++ b/Generators/PowhegControl/python/algorithms/preprocessors/reweighter.py @@ -16,14 +16,3 @@ def reweighter(*args): # Enable #rwgt information lines - these cause Pythia to crash if present in the final output FileParser("powheg.input").text_replace("storeinfo_rwgt 0", "storeinfo_rwgt 1") - - # # Write nominal weight xml output - # with open("nominal_weight.xml", "wb") as f_rwgt: - # f_rwgt.write("<initrwgt>\n") - # f_rwgt.write("<weightgroup name='nominal'>\n") - # f_rwgt.write("<weight id='1'> </weight>\n") - # f_rwgt.write("</weightgroup>\n") - # f_rwgt.write("</initrwgt>") - # - # # Enable nominal weight in XML format - Powheg reweighting will crash if this is not present - # FileParser("powheg.input").text_replace("rwl_file .*", "rwl_file 'nominal_weight.xml'") diff --git a/Generators/PowhegControl/python/powheg_control.py b/Generators/PowhegControl/python/powheg_control.py index b225c69a6c7ae..46fbfd854e775 100644 --- a/Generators/PowhegControl/python/powheg_control.py +++ b/Generators/PowhegControl/python/powheg_control.py @@ -183,15 +183,19 @@ class PowhegControl(object): # Schedule reweighting if more than the nominal weight is requested if len(self.__event_weight_groups) > 0: - # # Add nominal weight as a final group - not needed when rwl_format_rwgt is set - # self.define_event_weight_group("nominal", []) - # self.add_weight_to_group("nominal", "nominal", []) # Reverse the order so that scale comes first and user-defined is last self.__event_weight_groups = collections.OrderedDict(reversed(list(self.__event_weight_groups.items()))) for group_name, event_weight_group in self.__event_weight_groups.items(): - logger.info("Defining new weight group '{}' which alters {} parameters".format(group_name, len(event_weight_group["parameter_names"]))) - for parameter_name in event_weight_group["parameter_names"]: - logger.info("... {}".format(parameter_name)) + _n_weights = len(event_weight_group) - 3 # there are always three entries: parameter_names, combination_method and keywords + # Sanitise weight groups, removing any with no entries + if _n_weights <= 0: + logger.warning("Ignoring weight group '{}' as it does not have any variations defined. Check your jobOptions!".format(group_name)) + del self.__event_weight_groups[group_name] # this is allowed because items() makes a temporary copy of the dictionary + # Otherwise print weight group information for the user + else: + logger.info("Adding new weight group '{}' which contains {} weights defined by varying {} parameters".format(group_name, _n_weights, len(event_weight_group["parameter_names"]))) + for parameter_name in event_weight_group["parameter_names"]: + logger.info("... {}".format(parameter_name)) # Add reweighting to scheduler self.scheduler.add("reweighter", self.process, self.__event_weight_groups) diff --git a/Generators/PowhegControl/python/processes/powheg/DMS_tloop.py b/Generators/PowhegControl/python/processes/powheg/DMS_tloop.py index 3d9194167f15d..c62de8f433ede 100644 --- a/Generators/PowhegControl/python/processes/powheg/DMS_tloop.py +++ b/Generators/PowhegControl/python/processes/powheg/DMS_tloop.py @@ -87,6 +87,7 @@ class DMS_tloop(PowhegV2): self.add_keyword("mass_low") self.add_keyword("masswindow_high") self.add_keyword("masswindow_low") + self.add_keyword("max_io_bufsize") self.add_keyword("maxseeds") self.add_keyword("minlo") self.add_keyword("mintupbratlim") @@ -111,7 +112,9 @@ class DMS_tloop(PowhegV2): self.add_keyword("runningscale", 3, description="Choice for mu_R and mu_F in Bbar integration. [0:2mX (fixed); 1:pTj; 2:XXbar invariant mass; 3:Ht/2]") self.add_keyword("runningwidth") self.add_keyword("rwl_add") + self.add_keyword("rwl_file") self.add_keyword("rwl_format_rwgt") + self.add_keyword("rwl_group_events") self.add_keyword("smartsig") self.add_keyword("softtest") self.add_keyword("stage2init") diff --git a/Generators/PowhegControl/python/processes/powheg/DMV.py b/Generators/PowhegControl/python/processes/powheg/DMV.py index fce4f81d5dff8..d62afe1c7dfa0 100644 --- a/Generators/PowhegControl/python/processes/powheg/DMV.py +++ b/Generators/PowhegControl/python/processes/powheg/DMV.py @@ -88,6 +88,7 @@ class DMV(PowhegV2): self.add_keyword("mass_low") self.add_keyword("masswindow_high") self.add_keyword("masswindow_low") + self.add_keyword("max_io_bufsize") self.add_keyword("maxseeds") self.add_keyword("minlo") self.add_keyword("mintupbratlim") @@ -115,7 +116,9 @@ class DMV(PowhegV2): self.add_keyword("runningscale", 3, description="Choice for mu_R and mu_F in Bbar integration. [0:2mX (fixed); 1:pTj; 2:XXbar invariant mass; 3:Ht/2]") self.add_keyword("runningwidth") self.add_keyword("rwl_add") + self.add_keyword("rwl_file") self.add_keyword("rwl_format_rwgt") + self.add_keyword("rwl_group_events") self.add_keyword("skipextratests") self.add_keyword("smartsig") self.add_keyword("softtest") diff --git a/Generators/PowhegControl/python/processes/powheg/HWj.py b/Generators/PowhegControl/python/processes/powheg/HWj.py index a82743a335ef1..2e8f093455451 100644 --- a/Generators/PowhegControl/python/processes/powheg/HWj.py +++ b/Generators/PowhegControl/python/processes/powheg/HWj.py @@ -96,6 +96,7 @@ class HWj(PowhegV2): self.add_keyword("massivetop") self.add_keyword("max_h_mass") self.add_keyword("max_w_mass", 2.0 * self.parameters_by_name("beam_energy")[0].value) + self.add_keyword("max_io_bufsize") self.add_keyword("maxseeds") self.add_keyword("min_h_mass") self.add_keyword("min_w_mass", 2.5) @@ -127,7 +128,9 @@ class HWj(PowhegV2): self.add_keyword("renscfact") self.add_keyword("runningscales") self.add_keyword("rwl_add") + self.add_keyword("rwl_file") self.add_keyword("rwl_format_rwgt") + self.add_keyword("rwl_group_events") self.add_keyword("skipextratests") self.add_keyword("smartsig") self.add_keyword("softtest") diff --git a/Generators/PowhegControl/python/processes/powheg/HZj.py b/Generators/PowhegControl/python/processes/powheg/HZj.py index c25ed693ac5ea..0602b7ccba1e1 100644 --- a/Generators/PowhegControl/python/processes/powheg/HZj.py +++ b/Generators/PowhegControl/python/processes/powheg/HZj.py @@ -93,6 +93,7 @@ class HZj(PowhegV2): self.add_keyword("massivetop") self.add_keyword("max_h_mass") self.add_keyword("max_z_mass", 2.0 * self.parameters_by_name("beam_energy")[0].value) + self.add_keyword("max_io_bufsize") self.add_keyword("maxseeds") self.add_keyword("min_h_mass") self.add_keyword("min_z_mass", 10.0) @@ -124,7 +125,9 @@ class HZj(PowhegV2): self.add_keyword("renscfact") self.add_keyword("runningscales") self.add_keyword("rwl_add") + self.add_keyword("rwl_file") self.add_keyword("rwl_format_rwgt") + self.add_keyword("rwl_group_events") self.add_keyword("smartsig") self.add_keyword("softtest") self.add_keyword("stage2init") diff --git a/Generators/PowhegControl/python/processes/powheg/Hjj.py b/Generators/PowhegControl/python/processes/powheg/Hjj.py index a979afe613244..3134017472fc5 100644 --- a/Generators/PowhegControl/python/processes/powheg/Hjj.py +++ b/Generators/PowhegControl/python/processes/powheg/Hjj.py @@ -78,6 +78,7 @@ class Hjj(PowhegV2): self.add_keyword("lhrwgt_id") self.add_keyword("LOevents") self.add_keyword("manyseeds") + self.add_keyword("max_io_bufsize") self.add_keyword("maxseeds") self.add_keyword("minlo", 1) self.add_keyword("mintupbratlim") @@ -106,7 +107,9 @@ class Hjj(PowhegV2): self.add_keyword("renscfact") self.add_keyword("runningscales") self.add_keyword("rwl_add") + self.add_keyword("rwl_file") self.add_keyword("rwl_format_rwgt") + self.add_keyword("rwl_group_events") self.add_keyword("smartsig") self.add_keyword("softtest") self.add_keyword("stage2init") diff --git a/Generators/PowhegControl/python/processes/powheg/VBF_H.py b/Generators/PowhegControl/python/processes/powheg/VBF_H.py index 8c68077132e50..4ea7285ac6c85 100644 --- a/Generators/PowhegControl/python/processes/powheg/VBF_H.py +++ b/Generators/PowhegControl/python/processes/powheg/VBF_H.py @@ -81,6 +81,7 @@ class VBF_H(PowhegV2): self.add_keyword("lhrwgt_id") self.add_keyword("LOevents") self.add_keyword("manyseeds") + self.add_keyword("max_io_bufsize") self.add_keyword("maxseeds") self.add_keyword("minlo") self.add_keyword("mintupbratlim") @@ -106,7 +107,9 @@ class VBF_H(PowhegV2): self.add_keyword("rand2") self.add_keyword("renscfact") self.add_keyword("rwl_add") + self.add_keyword("rwl_file") self.add_keyword("rwl_format_rwgt") + self.add_keyword("rwl_group_events") self.add_keyword("skipextratests") self.add_keyword("smartsig") self.add_keyword("softtest") diff --git a/Generators/PowhegControl/python/processes/powheg/VBF_ssWW.py b/Generators/PowhegControl/python/processes/powheg/VBF_ssWW.py index 39c1272079dc7..237bac8fc8f35 100644 --- a/Generators/PowhegControl/python/processes/powheg/VBF_ssWW.py +++ b/Generators/PowhegControl/python/processes/powheg/VBF_ssWW.py @@ -86,6 +86,7 @@ class VBF_ssWW(PowhegV2): self.add_keyword("lhrwgt_id") self.add_keyword("LOevents") self.add_keyword("manyseeds") + self.add_keyword("max_io_bufsize") self.add_keyword("maxseeds") self.add_keyword("minlo") self.add_keyword("mintupbratlim") @@ -112,7 +113,9 @@ class VBF_ssWW(PowhegV2): self.add_keyword("renscfact") self.add_keyword("runningscales") self.add_keyword("rwl_add") + self.add_keyword("rwl_file") self.add_keyword("rwl_format_rwgt") + self.add_keyword("rwl_group_events") self.add_keyword("smartsig") self.add_keyword("softtest") self.add_keyword("stage2init") diff --git a/Generators/PowhegControl/python/processes/powheg/WW.py b/Generators/PowhegControl/python/processes/powheg/WW.py index babd5b77361e8..0a2c06f35643f 100644 --- a/Generators/PowhegControl/python/processes/powheg/WW.py +++ b/Generators/PowhegControl/python/processes/powheg/WW.py @@ -95,6 +95,7 @@ class WW(PowhegV2): self.add_keyword("lhrwgt_id") self.add_keyword("LOevents") self.add_keyword("manyseeds") + self.add_keyword("max_io_bufsize") self.add_keyword("maxseeds") self.add_keyword("minlo") self.add_keyword("mintupbratlim") @@ -121,7 +122,9 @@ class WW(PowhegV2): self.add_keyword("renscfact") self.add_keyword("runningwidth") self.add_keyword("rwl_add") + self.add_keyword("rwl_file") self.add_keyword("rwl_format_rwgt") + self.add_keyword("rwl_group_events") self.add_keyword("skipextratests") self.add_keyword("smartsig") self.add_keyword("softtest") diff --git a/Generators/PowhegControl/python/processes/powheg/WZ.py b/Generators/PowhegControl/python/processes/powheg/WZ.py index b3d8a29c03338..8ba471b9c5758 100644 --- a/Generators/PowhegControl/python/processes/powheg/WZ.py +++ b/Generators/PowhegControl/python/processes/powheg/WZ.py @@ -102,6 +102,7 @@ class WZ(PowhegV2): self.add_keyword("lhrwgt_id") self.add_keyword("LOevents") self.add_keyword("manyseeds") + self.add_keyword("max_io_bufsize") self.add_keyword("maxseeds") self.add_keyword("minlo") self.add_keyword("mintupbratlim") @@ -129,7 +130,9 @@ class WZ(PowhegV2): self.add_keyword("renscfact") self.add_keyword("runningwidth") self.add_keyword("rwl_add") + self.add_keyword("rwl_file") self.add_keyword("rwl_format_rwgt") + self.add_keyword("rwl_group_events") self.add_keyword("skipextratests") self.add_keyword("smartsig") self.add_keyword("softtest") diff --git a/Generators/PowhegControl/python/processes/powheg/W_EW.py b/Generators/PowhegControl/python/processes/powheg/W_EW.py index 380715ad07dc3..db2663770a88c 100644 --- a/Generators/PowhegControl/python/processes/powheg/W_EW.py +++ b/Generators/PowhegControl/python/processes/powheg/W_EW.py @@ -107,6 +107,7 @@ class W_EW(PowhegV2): self.add_keyword("mass_low", 2.5) self.add_keyword("masswindow_high", 30, description="mass window above W-mass peak in units of width_W.") self.add_keyword("masswindow_low", 30, description="mass window below W-mass peak in units of width_W.") + self.add_keyword("max_io_bufsize") self.add_keyword("maxseeds") self.add_keyword("minlo") self.add_keyword("mintupbratlim") @@ -140,7 +141,9 @@ class W_EW(PowhegV2): self.add_keyword("renscfact") self.add_keyword("runningscale") self.add_keyword("rwl_add") + self.add_keyword("rwl_file") self.add_keyword("rwl_format_rwgt") + self.add_keyword("rwl_group_events") self.add_keyword("scheme") self.add_keyword("skipextratests") self.add_keyword("smartsig") diff --git a/Generators/PowhegControl/python/processes/powheg/Wbb.py b/Generators/PowhegControl/python/processes/powheg/Wbb.py index 9f6ce4f4200d0..d7a25e2218462 100644 --- a/Generators/PowhegControl/python/processes/powheg/Wbb.py +++ b/Generators/PowhegControl/python/processes/powheg/Wbb.py @@ -82,6 +82,7 @@ class Wbb(PowhegV2): self.add_keyword("LOevents") self.add_keyword("manyseeds") self.add_keyword("max_w_mass") + self.add_keyword("max_io_bufsize") self.add_keyword("maxseeds") self.add_keyword("min_w_mass", 10) self.add_keyword("minlo") @@ -109,7 +110,9 @@ class Wbb(PowhegV2): self.add_keyword("renscfact") self.add_keyword("runningscales") self.add_keyword("rwl_add") + self.add_keyword("rwl_file") self.add_keyword("rwl_format_rwgt") + self.add_keyword("rwl_group_events") self.add_keyword("skipextratests") self.add_keyword("smartsig") self.add_keyword("softtest") diff --git a/Generators/PowhegControl/python/processes/powheg/Wbbj.py b/Generators/PowhegControl/python/processes/powheg/Wbbj.py index 95e3db5005dfd..916b1286b3302 100644 --- a/Generators/PowhegControl/python/processes/powheg/Wbbj.py +++ b/Generators/PowhegControl/python/processes/powheg/Wbbj.py @@ -86,6 +86,7 @@ class Wbbj(PowhegV2): self.add_keyword("m2bb") self.add_keyword("manyseeds") self.add_keyword("max_w_mass") + self.add_keyword("max_io_bufsize") self.add_keyword("maxseeds") self.add_keyword("min_w_mass") self.add_keyword("minlo", 1) @@ -116,7 +117,9 @@ class Wbbj(PowhegV2): self.add_keyword("renscfact") self.add_keyword("runningscales") self.add_keyword("rwl_add") + self.add_keyword("rwl_file") self.add_keyword("rwl_format_rwgt") + self.add_keyword("rwl_group_events") self.add_keyword("skipextratests") self.add_keyword("smartsig") self.add_keyword("softtest") diff --git a/Generators/PowhegControl/python/processes/powheg/Wjj.py b/Generators/PowhegControl/python/processes/powheg/Wjj.py index 0aa5b605e1ce5..fab899da3e331 100644 --- a/Generators/PowhegControl/python/processes/powheg/Wjj.py +++ b/Generators/PowhegControl/python/processes/powheg/Wjj.py @@ -85,6 +85,7 @@ class Wjj(PowhegV2): self.add_keyword("lhrwgt_id") self.add_keyword("LOevents") self.add_keyword("manyseeds") + self.add_keyword("max_io_bufsize") self.add_keyword("maxseeds") self.add_keyword("minlo", 1) self.add_keyword("mintupbratlim") @@ -114,7 +115,9 @@ class Wjj(PowhegV2): self.add_keyword("renscfact") self.add_keyword("runningscales") self.add_keyword("rwl_add") + self.add_keyword("rwl_file") self.add_keyword("rwl_format_rwgt") + self.add_keyword("rwl_group_events") self.add_keyword("skipextratests") self.add_keyword("smartsig") self.add_keyword("softtest") diff --git a/Generators/PowhegControl/python/processes/powheg/Wt_DR.py b/Generators/PowhegControl/python/processes/powheg/Wt_DR.py index 05ec9b90f0cf8..90d251fe781d0 100644 --- a/Generators/PowhegControl/python/processes/powheg/Wt_DR.py +++ b/Generators/PowhegControl/python/processes/powheg/Wt_DR.py @@ -97,6 +97,7 @@ class Wt_DR(PowhegV2): self.add_keyword("lhfm/taumass") self.add_keyword("LOevents") self.add_keyword("manyseeds") + self.add_keyword("max_io_bufsize") self.add_keyword("maxseeds") self.add_keyword("minlo") self.add_keyword("mintupbratlim") @@ -121,7 +122,9 @@ class Wt_DR(PowhegV2): self.add_keyword("rand2") self.add_keyword("renscfact") self.add_keyword("rwl_add") + self.add_keyword("rwl_file") self.add_keyword("rwl_format_rwgt") + self.add_keyword("rwl_group_events") self.add_keyword("skipextratests") self.add_keyword("smartsig") self.add_keyword("softtest") diff --git a/Generators/PowhegControl/python/processes/powheg/Wt_DS.py b/Generators/PowhegControl/python/processes/powheg/Wt_DS.py index 23b125a0cfdeb..e7c0240719dec 100644 --- a/Generators/PowhegControl/python/processes/powheg/Wt_DS.py +++ b/Generators/PowhegControl/python/processes/powheg/Wt_DS.py @@ -97,6 +97,7 @@ class Wt_DS(PowhegV2): self.add_keyword("lhfm/taumass") self.add_keyword("LOevents") self.add_keyword("manyseeds") + self.add_keyword("max_io_bufsize") self.add_keyword("maxseeds") self.add_keyword("minlo") self.add_keyword("mintupbratlim") @@ -122,7 +123,9 @@ class Wt_DS(PowhegV2): self.add_keyword("rand2") self.add_keyword("renscfact") self.add_keyword("rwl_add") + self.add_keyword("rwl_file") self.add_keyword("rwl_format_rwgt") + self.add_keyword("rwl_group_events") self.add_keyword("skipextratests") self.add_keyword("smartsig") self.add_keyword("softtest") diff --git a/Generators/PowhegControl/python/processes/powheg/ZZ.py b/Generators/PowhegControl/python/processes/powheg/ZZ.py index ec92c878589d9..bd733a96b0703 100644 --- a/Generators/PowhegControl/python/processes/powheg/ZZ.py +++ b/Generators/PowhegControl/python/processes/powheg/ZZ.py @@ -89,6 +89,7 @@ class ZZ(PowhegV2): self.add_keyword("lhrwgt_id") self.add_keyword("LOevents") self.add_keyword("manyseeds") + self.add_keyword("max_io_bufsize") self.add_keyword("maxseeds") self.add_keyword("minlo") self.add_keyword("mintupbratlim") @@ -116,7 +117,9 @@ class ZZ(PowhegV2): self.add_keyword("renscfact") self.add_keyword("runningwidth") self.add_keyword("rwl_add") + self.add_keyword("rwl_file") self.add_keyword("rwl_format_rwgt") + self.add_keyword("rwl_group_events") self.add_keyword("smartsig") self.add_keyword("softtest") self.add_keyword("stage2init") diff --git a/Generators/PowhegControl/python/processes/powheg/Z_EW.py b/Generators/PowhegControl/python/processes/powheg/Z_EW.py index a94ded410bb25..9ab54997ca225 100644 --- a/Generators/PowhegControl/python/processes/powheg/Z_EW.py +++ b/Generators/PowhegControl/python/processes/powheg/Z_EW.py @@ -99,6 +99,7 @@ class Z_EW(PowhegV2): self.add_keyword("LOevents") self.add_keyword("manyseeds") self.add_keyword("mass_low", 10.0) + self.add_keyword("max_io_bufsize") self.add_keyword("maxseeds") self.add_keyword("minlo") self.add_keyword("mintupbratlim") @@ -135,7 +136,9 @@ class Z_EW(PowhegV2): self.add_keyword("resc_em_alpha") self.add_keyword("runningscale") self.add_keyword("rwl_add") + self.add_keyword("rwl_file") self.add_keyword("rwl_format_rwgt") + self.add_keyword("rwl_group_events") self.add_keyword("scheme") self.add_keyword("skipextratests") self.add_keyword("smartsig") diff --git a/Generators/PowhegControl/python/processes/powheg/Zjj.py b/Generators/PowhegControl/python/processes/powheg/Zjj.py index 99edfd7e72124..9759d5d64de6c 100644 --- a/Generators/PowhegControl/python/processes/powheg/Zjj.py +++ b/Generators/PowhegControl/python/processes/powheg/Zjj.py @@ -85,6 +85,7 @@ class Zjj(PowhegV2): self.add_keyword("lhrwgt_id") self.add_keyword("LOevents") self.add_keyword("manyseeds") + self.add_keyword("max_io_bufsize") self.add_keyword("maxseeds") self.add_keyword("minlo", 1) self.add_keyword("mintupbratlim") @@ -115,7 +116,9 @@ class Zjj(PowhegV2): self.add_keyword("renscfact") self.add_keyword("runningscales") self.add_keyword("rwl_add") + self.add_keyword("rwl_file") self.add_keyword("rwl_format_rwgt") + self.add_keyword("rwl_group_events") self.add_keyword("skipextratests") self.add_keyword("smartsig") self.add_keyword("softtest") diff --git a/Generators/PowhegControl/python/processes/powheg/bblvlv.py b/Generators/PowhegControl/python/processes/powheg/bblvlv.py index 08bd69ae5b4c1..c5e2de4fc64fe 100644 --- a/Generators/PowhegControl/python/processes/powheg/bblvlv.py +++ b/Generators/PowhegControl/python/processes/powheg/bblvlv.py @@ -79,6 +79,7 @@ class bblvlv(PowhegRES): self.add_keyword("lhans2") self.add_keyword("LOevents") self.add_keyword("manyseeds") + self.add_keyword("max_io_bufsize") self.add_keyword("maxseeds") self.add_keyword("minlo") self.add_keyword("mint_density_map") diff --git a/Generators/PowhegControl/python/processes/powheg/chi0chi0.py b/Generators/PowhegControl/python/processes/powheg/chi0chi0.py index c55633d482c42..2b6d4b32c9e9b 100644 --- a/Generators/PowhegControl/python/processes/powheg/chi0chi0.py +++ b/Generators/PowhegControl/python/processes/powheg/chi0chi0.py @@ -98,6 +98,7 @@ class chi0chi0(PowhegV2): self.add_keyword("lhans2") self.add_keyword("LOevents") self.add_keyword("manyseeds") + self.add_keyword("max_io_bufsize") self.add_keyword("maxseeds") self.add_keyword("minlo") self.add_keyword("mintupbratlim") @@ -125,7 +126,9 @@ class chi0chi0(PowhegV2): self.add_keyword("renscfact") self.add_keyword("runningscale", 0) self.add_keyword("rwl_add") + self.add_keyword("rwl_file") self.add_keyword("rwl_format_rwgt") + self.add_keyword("rwl_group_events") self.add_keyword("skipextratests") self.add_keyword("SLHA") self.add_keyword("smartsig") diff --git a/Generators/PowhegControl/python/processes/powheg/chi0chi1.py b/Generators/PowhegControl/python/processes/powheg/chi0chi1.py index b1197d5effb1b..6430d579f0098 100644 --- a/Generators/PowhegControl/python/processes/powheg/chi0chi1.py +++ b/Generators/PowhegControl/python/processes/powheg/chi0chi1.py @@ -100,6 +100,7 @@ class chi0chi1(PowhegV2): self.add_keyword("lhans2") self.add_keyword("LOevents") self.add_keyword("manyseeds") + self.add_keyword("max_io_bufsize") self.add_keyword("maxseeds") self.add_keyword("minlo") self.add_keyword("mintupbratlim") @@ -127,7 +128,9 @@ class chi0chi1(PowhegV2): self.add_keyword("renscfact") self.add_keyword("runningscale") self.add_keyword("rwl_add") + self.add_keyword("rwl_file") self.add_keyword("rwl_format_rwgt") + self.add_keyword("rwl_group_events") self.add_keyword("skipextratests") self.add_keyword("SLHA") self.add_keyword("smartsig") diff --git a/Generators/PowhegControl/python/processes/powheg/chi1chi1.py b/Generators/PowhegControl/python/processes/powheg/chi1chi1.py index f8d12d37618ac..5958e1b41aa83 100644 --- a/Generators/PowhegControl/python/processes/powheg/chi1chi1.py +++ b/Generators/PowhegControl/python/processes/powheg/chi1chi1.py @@ -101,6 +101,7 @@ class chi1chi1(PowhegV2): self.add_keyword("lhans2") self.add_keyword("LOevents") self.add_keyword("manyseeds") + self.add_keyword("max_io_bufsize") self.add_keyword("maxseeds") self.add_keyword("minlo") self.add_keyword("mintupbratlim") @@ -128,7 +129,9 @@ class chi1chi1(PowhegV2): self.add_keyword("renscfact") self.add_keyword("runningscale") self.add_keyword("rwl_add") + self.add_keyword("rwl_file") self.add_keyword("rwl_format_rwgt") + self.add_keyword("rwl_group_events") self.add_keyword("skipextratests") self.add_keyword("SLHA") self.add_keyword("smartsig") diff --git a/Generators/PowhegControl/python/processes/powheg/ggF_H.py b/Generators/PowhegControl/python/processes/powheg/ggF_H.py index 7d682b628b368..a508523d47e23 100644 --- a/Generators/PowhegControl/python/processes/powheg/ggF_H.py +++ b/Generators/PowhegControl/python/processes/powheg/ggF_H.py @@ -87,6 +87,7 @@ class ggF_H(PowhegV2): self.add_keyword("manyseeds") self.add_keyword("massren") self.add_keyword("masswindow") + self.add_keyword("max_io_bufsize") self.add_keyword("maxseeds") self.add_keyword("minlo") self.add_keyword("mintupbratlim") @@ -115,7 +116,9 @@ class ggF_H(PowhegV2): self.add_keyword("renscfact") self.add_keyword("runningscale") self.add_keyword("rwl_add") + self.add_keyword("rwl_file") self.add_keyword("rwl_format_rwgt") + self.add_keyword("rwl_group_events") self.add_keyword("skipextratests") self.add_keyword("smartsig") self.add_keyword("softtest") diff --git a/Generators/PowhegControl/python/processes/powheg/jj.py b/Generators/PowhegControl/python/processes/powheg/jj.py index d9b67907724b2..3e63866d5b418 100644 --- a/Generators/PowhegControl/python/processes/powheg/jj.py +++ b/Generators/PowhegControl/python/processes/powheg/jj.py @@ -18,6 +18,7 @@ class jj(PowhegV2): @param kwargs dictionary of arguments from Generate_tf. """ super(self.__class__, self).__init__(base_directory, "dijet", **kwargs) + # self.has_XML_support = False # Add all keywords for this process, overriding defaults if required self.add_keyword("bornktmin", 10.0) @@ -74,6 +75,7 @@ class jj(PowhegV2): self.add_keyword("lhrwgt_id") self.add_keyword("LOevents") self.add_keyword("manyseeds") + self.add_keyword("max_io_bufsize") self.add_keyword("maxseeds") self.add_keyword("minlo") self.add_keyword("mintupbratlim") @@ -99,7 +101,9 @@ class jj(PowhegV2): self.add_keyword("rand2") self.add_keyword("renscfact") self.add_keyword("rwl_add") + self.add_keyword("rwl_file") self.add_keyword("rwl_format_rwgt") + self.add_keyword("rwl_group_events") self.add_keyword("skipextratests") self.add_keyword("smartsig") self.add_keyword("softtest") diff --git a/Generators/PowhegControl/python/processes/powheg/jjj.py b/Generators/PowhegControl/python/processes/powheg/jjj.py index 4d981303654ed..f89a3fa8cfd69 100644 --- a/Generators/PowhegControl/python/processes/powheg/jjj.py +++ b/Generators/PowhegControl/python/processes/powheg/jjj.py @@ -78,6 +78,7 @@ class jjj(PowhegV2): self.add_keyword("lhrwgt_id") self.add_keyword("LOevents") self.add_keyword("manyseeds") + self.add_keyword("max_io_bufsize") self.add_keyword("maxseeds") self.add_keyword("minlo", 1) self.add_keyword("mintupbratlim") @@ -105,7 +106,9 @@ class jjj(PowhegV2): self.add_keyword("rapsuppfact") self.add_keyword("renscfact") self.add_keyword("rwl_add") + self.add_keyword("rwl_file") self.add_keyword("rwl_format_rwgt") + self.add_keyword("rwl_group_events") self.add_keyword("skipextratests") self.add_keyword("smartsig") self.add_keyword("softtest") diff --git a/Generators/PowhegControl/python/processes/powheg/ssWWjj.py b/Generators/PowhegControl/python/processes/powheg/ssWWjj.py index a5aeb183b26da..3775fb2fc65ca 100644 --- a/Generators/PowhegControl/python/processes/powheg/ssWWjj.py +++ b/Generators/PowhegControl/python/processes/powheg/ssWWjj.py @@ -86,6 +86,7 @@ class ssWWjj(PowhegV2): self.add_keyword("lhrwgt_id") self.add_keyword("LOevents") self.add_keyword("manyseeds") + self.add_keyword("max_io_bufsize") self.add_keyword("maxseeds") self.add_keyword("minlo") self.add_keyword("mintupbratlim") @@ -112,7 +113,9 @@ class ssWWjj(PowhegV2): self.add_keyword("renscfact") self.add_keyword("runningscales") self.add_keyword("rwl_add") + self.add_keyword("rwl_file") self.add_keyword("rwl_format_rwgt") + self.add_keyword("rwl_group_events") self.add_keyword("smartsig") self.add_keyword("smincuts") self.add_keyword("softtest") diff --git a/Generators/PowhegControl/python/processes/powheg/t_sch.py b/Generators/PowhegControl/python/processes/powheg/t_sch.py index 0cdc5394c6485..7e0a8f600dcec 100644 --- a/Generators/PowhegControl/python/processes/powheg/t_sch.py +++ b/Generators/PowhegControl/python/processes/powheg/t_sch.py @@ -90,6 +90,7 @@ class t_sch(PowhegV2): self.add_keyword("lhapdf6maxsets") self.add_keyword("LOevents") self.add_keyword("manyseeds") + self.add_keyword("max_io_bufsize") self.add_keyword("maxseeds") self.add_keyword("minlo") self.add_keyword("mintupbratlim") @@ -114,7 +115,9 @@ class t_sch(PowhegV2): self.add_keyword("rand2") self.add_keyword("renscfact") self.add_keyword("rwl_add") + self.add_keyword("rwl_file") self.add_keyword("rwl_format_rwgt") + self.add_keyword("rwl_group_events") self.add_keyword("skipextratests") self.add_keyword("smartsig") self.add_keyword("softtest") diff --git a/Generators/PowhegControl/python/processes/powheg/t_tch_4FS.py b/Generators/PowhegControl/python/processes/powheg/t_tch_4FS.py index 64e7c0c2a06a7..af0702200938a 100644 --- a/Generators/PowhegControl/python/processes/powheg/t_tch_4FS.py +++ b/Generators/PowhegControl/python/processes/powheg/t_tch_4FS.py @@ -97,6 +97,7 @@ class t_tch_4FS(PowhegV2): self.add_keyword("lhrwgt_id") self.add_keyword("LOevents") self.add_keyword("manyseeds") + self.add_keyword("max_io_bufsize") self.add_keyword("maxseeds") self.add_keyword("minlo") self.add_keyword("mintupbratlim") @@ -122,7 +123,9 @@ class t_tch_4FS(PowhegV2): self.add_keyword("rand2") self.add_keyword("renscfact") self.add_keyword("rwl_add") + self.add_keyword("rwl_file") self.add_keyword("rwl_format_rwgt") + self.add_keyword("rwl_group_events") self.add_keyword("smartsig") self.add_keyword("softtest") self.add_keyword("stage2init") diff --git a/Generators/PowhegControl/python/processes/powheg/ttH.py b/Generators/PowhegControl/python/processes/powheg/ttH.py index 5d25d4520caa9..49956446aff3c 100644 --- a/Generators/PowhegControl/python/processes/powheg/ttH.py +++ b/Generators/PowhegControl/python/processes/powheg/ttH.py @@ -82,6 +82,7 @@ class ttH(PowhegV2): self.add_keyword("lhrwgt_group_name") self.add_keyword("lhrwgt_id") self.add_keyword("LOevents") + self.add_keyword("max_io_bufsize") self.add_keyword("manyseeds") self.add_keyword("minlo") self.add_keyword("ncall1", 8000) diff --git a/Generators/PowhegControl/python/processes/powheg_base.py b/Generators/PowhegControl/python/processes/powheg_base.py index b398aad359cba..e37ec515c5046 100644 --- a/Generators/PowhegControl/python/processes/powheg_base.py +++ b/Generators/PowhegControl/python/processes/powheg_base.py @@ -50,6 +50,9 @@ class PowhegBase(Configurable): ## Switch to determine whether reweighting is allowed self.is_reweightable = is_reweightable + ## Switch to determine whether XML reweighting is fully supported + self.has_XML_support = True + def add_algorithm(self, alg_or_process): """! Add an algorithm or external process to the sequence. diff --git a/Generators/PowhegControl/python/utility/file_parser.py b/Generators/PowhegControl/python/utility/file_parser.py index ba83ebc11cf8d..8f5311b8e998e 100644 --- a/Generators/PowhegControl/python/utility/file_parser.py +++ b/Generators/PowhegControl/python/utility/file_parser.py @@ -44,7 +44,9 @@ class FileParser(object): with open("{}.text_replace_backup".format(input_file_name), "rb") as f_input: with open(input_file_name, "wb") as f_output: for line in f_input: - if regex_line_match is not None and not re.search(regex_line_match, line): continue + if regex_line_match is not None and not re.search(regex_line_match, line): + f_output.write(line) + continue new_line = re.sub(regex_find, string_replace, line.rstrip(), count) f_output.write(new_line + "\n") os.remove("{}.text_replace_backup".format(input_file_name)) diff --git a/Generators/PowhegControl/python/utility/process_handling.py b/Generators/PowhegControl/python/utility/process_handling.py index 7a804e2270ab2..768b815ab68d5 100644 --- a/Generators/PowhegControl/python/utility/process_handling.py +++ b/Generators/PowhegControl/python/utility/process_handling.py @@ -29,8 +29,12 @@ class ProcessManager(object): while len(self.__process_list) > 0: for process in list(self.__process_list): if not process.has_output(): + _return_code = process.return_code self.__process_list.remove(process) - logger.info("Finished process #{}: there are now {}/{} running".format(process.id_number, len(self.__process_list), self.__n_initial)) + if _return_code == 0: + logger.info("Finished process #{}: there are now {}/{} running".format(process.id_number, len(self.__process_list), self.__n_initial)) + else: + logger.warning("Process #{} terminated unexpectedly (return code {}): there are now {}/{} running".format(process.id_number, _return_code, len(self.__process_list), self.__n_initial)) class SingleProcessThread(object): @@ -112,6 +116,11 @@ class SingleProcessThread(object): if queue_size == 0: break + @property + def return_code(self): + """! Return code of underlying process.""" + return self.__process.returncode + @property def stdout(self): """! stdout stream from underlying process.""" -- GitLab