ATLAS Offline Software
e2mu.py
Go to the documentation of this file.
1 # Copyright (C) 2002-2023 CERN for the benefit of the ATLAS collaboration
2 
3 from AthenaCommon import Logging
4 from ...decorators import timed
5 from ...utility import LHE
6 import shutil
7 
8 
9 logger = Logging.logging.getLogger("PowhegControl")
10 
11 
12 @timed("e2mu")
13 def e2mu(powheg_LHE_output):
14  """! Post-process existing events from electrons to muons
15 
16  @param powheg_LHE_output Name of LHE file produced by PowhegBox.
17 
18  @author Jan Kretzschmar <jan.kretzschmar@cern.ch>
19  """
20  logger.warning("Converting LHE events from electron to muon decays.")
21 
22  # Get opening and closing strings
23  preamble = LHE.preamble(powheg_LHE_output)
24  postamble = LHE.postamble(powheg_LHE_output)
25 
26  n_events = 0
27  powheg_LHE_mu = "{}.mu".format(powheg_LHE_output)
28  with open(powheg_LHE_mu, "w") as f_output:
29  f_output.write("{}\n".format(preamble))
30  for input_event in LHE.event_iterator(powheg_LHE_output):
31  is_event_changed, output_event = LHE.e2mu(input_event)
32  f_output.write(output_event)
33  n_events += [0, 1][is_event_changed]
34  f_output.write(postamble)
35  logger.info("Changed e->mu in {} events!".format(n_events))
36 
37  # Make a backup of the original events
38  shutil.move(powheg_LHE_output, "{}.e2mu_backup".format(powheg_LHE_output))
39  shutil.move(powheg_LHE_mu, powheg_LHE_output)
python.decorators.timed.timed
def timed(name)
Decorator to output function execution time.
Definition: timed.py:12
vtune_athena.format
format
Definition: vtune_athena.py:14
Trk::open
@ open
Definition: BinningType.h:40
python.algorithms.postprocessors.e2mu.e2mu
def e2mu(powheg_LHE_output)
Post-process existing events from electrons to muons.
Definition: e2mu.py:13