13def quark_colour_fixer(process, powheg_LHE_output):
14 """! Post-process existing events to ensure that all quarks are coloured.
16 @param process PowhegBox process.
17 @param powheg_LHE_output Name of LHE file produced by PowhegBox.
19 @author James Robinson <james.robinson@cern.ch>
22 if all(p.value
in [0, 10]
for p
in process.parameters_by_keyword(
"vdecaymode")):
23 logger.info(
"Checking for presence of colourless quarks!")
26 preamble = LHE.preamble(powheg_LHE_output)
27 postamble = LHE.postamble(powheg_LHE_output)
31 logger.info(
"Checking events for colourless final-state quarks")
32 powheg_LHE_recoloured =
"{}.recoloured".format(powheg_LHE_output)
33 with open(powheg_LHE_recoloured,
"w")
as f_output:
34 f_output.write(
"{}\n".format(preamble))
35 for input_event
in LHE.event_iterator(powheg_LHE_output):
36 is_event_changed, output_event = LHE.ensure_coloured_quarks(input_event)
37 f_output.write(output_event)
38 n_events += [0, 1][is_event_changed]
39 f_output.write(postamble)
40 logger.info(
"Re-coloured final-state quarks in {} events!".format(n_events))
43 shutil.move(powheg_LHE_output,
"{}.quark_colour_fixer_backup".format(powheg_LHE_output))
44 shutil.move(powheg_LHE_recoloured, powheg_LHE_output)