46 Modifies `events.lhe` output file from Madgraph by doing the following:
48 - Changes photon px and py to zero and energy to pz
49 - Recalculates energy scales as an average of lepton pair transverse momentum
52 DOMTree = xml.dom.minidom.parse(self.
inFileName)
53 collection = DOMTree.documentElement
56 init = collection.getElementsByTagName(
'init')
59 l_init_repl1=[
"13",
"-13",
"2.510000e+03",
"2.510000e+03",
"0",
"0",
"0",
"0",
"3",
"1"]
60 str_init_repl2 =
" 1.000000e+00 0.000000e+00 1.000000e+00 9999"
61 l_init_repl1[2]=
'%.6e' %(self.
energy/2.)
62 l_init_repl1[3]=
'%.6e' %(self.
energy/2.)
65 str_init_repl1 =
map(str, l_init_repl1)
66 jstr_init_repl1 = delimiter.join(str_init_repl1)
67 jstr_init_repl1 =
'\n ' + jstr_init_repl1 +
'\n'
68 jstr_init_repl = jstr_init_repl1 + str_init_repl2 +
'\n'
69 init[0].firstChild.data = jstr_init_repl
73 event_header =
r'^(\s*\S*\s*\S*\s*\S*\s*)(\S*)(.*)$'
77 event_particle =
r'^(\s*)([0-9-]+)(\s+[0-9-]+\s+[0-9-]+\s+[0-9-]+\s+[0-9-]+\s+[0-9-]+\s+)(\S+)(\s+)(\S+)(\s+)(\S+)(\s+)(\S+)(.*)$'
79 events = collection.getElementsByTagName(
'event')
80 for i, event
in enumerate(events):
83 nodes = event.getElementsByTagName(
'mgrwt')
85 parent = node.parentNode
86 parent.removeChild(node)
91 particles = re.findall(event_particle, event.firstChild.data, re.MULTILINE)
92 for particle
in particles:
93 particle = list(particle)
94 if particle[1] ==
'22':
98 particle[9] = particle[7]
100 if self.
mode ==
'Tauolapp':
102 particle[1] =
'11' if float(particle[7]) > 0.0
else '-11'
104 particle[1] =
'-11' if float(particle[7]) > 0.0
else '11'
105 new_particles.append(
''.join(particle))
106 elif particle[1]
in self.
leptons:
108 lepton_mom.append(float(particle[3]))
109 lepton_mom.append(float(particle[5]))
110 new_particles.append(
''.join(particle))
112 new_particles.append(
''.join(particle))
115 l1_px, l1_py, l2_px, l2_py = lepton_mom
116 l1_pt = math.sqrt(l1_px**2 + l1_py**2)
117 l2_pt = math.sqrt(l2_px**2 + l2_py**2)
118 energy_scale = f
'{(l1_pt + l2_pt) / 2.:.9E}'
120 header = re.search(event_header, event.firstChild.data, re.MULTILINE)
121 header = list(header.groups())
122 header[1] = energy_scale
125 event.firstChild.data =
'\n'.join([
''.join(header)] + new_particles) +
'\n'
127 event.firstChild.data =
'\n'.join([
''.join(header)] + new_particles)
130 output.write(DOMTree.toxml().
replace(
'<?xml version="1.0" ?>',
' '))
134 return StatusCode.Success