3 from AthenaCommon
import Logging
4 from ...decorators
import timed
5 from ...utility
import FileParser
8 logger = Logging.logging.getLogger(
"PowhegControl")
10 @
timed(
"LHE file cleaning")
12 """Post-process LHE file to conform to what the parton-shower generator expects.
14 @param powheg_LHE_output Name of LHE file produced by PowhegBox.
16 logger.info(
"Starting to run PowhegControl LHE file cleaner")
18 os.system(
'cp {0} unmodified_{0}'.
format(powheg_LHE_output))
31 pdf_removed = FileParser(powheg_LHE_output).text_remove_all_if_one_line_matches(
"^#pdf",
"NaN")
32 rwg_removed = FileParser(powheg_LHE_output).text_remove_all_if_one_line_matches(
"^#rwgt",
"NaN")
33 new_removed = FileParser(powheg_LHE_output).text_remove_all_if_one_line_matches(
"^#new weight",
"NaN")
34 matching_removed = FileParser(powheg_LHE_output).text_remove_all_if_one_line_matches(
"^#matching",
"NaN")
35 rdm_removed = FileParser(powheg_LHE_output).text_remove_all_if_one_line_matches(
"^ #Random",
"NaN")
38 logger.info(
"{} line(s) starting with '#pdf' were removed in {} since at least one looked buggy".
format(pdf_removed, powheg_LHE_output))
40 logger.info(
"{} line(s) starting with '#rwgt' were removed in {} since at least one looked buggy".
format(rwg_removed, powheg_LHE_output))
42 logger.info(
"{} line(s) starting with '#new weight' were removed in {} since at least one looked buggy".
format(new_removed, powheg_LHE_output))
43 if matching_removed != 0:
44 logger.info(
"{} line(s) starting with '#matching' were removed in {} since at least one looked buggy".
format(matching_removed, powheg_LHE_output))
46 logger.info(
"{} line(s) starting with ' #Random' were removed in {} since at least one looked buggy".
format(rdm_removed, powheg_LHE_output))
49 FileParser(powheg_LHE_output).text_replace(
'LesHouchesEvents version="1.0"',
'LesHouchesEvents version="3.0"')