ATLAS Offline Software
mu2e.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("mu2e")
13 def mu2e(powheg_LHE_output):
14  """! Post-process existing events from muons to electrons
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 muon to electron 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_e = "{}.e".format(powheg_LHE_output)
28  with open(powheg_LHE_e, "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.mu2e(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 mu->e in {} events!".format(n_events))
36 
37  # Make a backup of the original events
38  shutil.move(powheg_LHE_output, "{}.mu2e_backup".format(powheg_LHE_output))
39  shutil.move(powheg_LHE_e, 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
python.algorithms.postprocessors.mu2e.mu2e
def mu2e(powheg_LHE_output)
Post-process existing events from muons to electrons.
Definition: mu2e.py:13
Trk::open
@ open
Definition: BinningType.h:40