~madteam/mg5amcnlo/series2.0

« back to all changes in this revision

Viewing changes to Template/LO/bin/internal/addmasses_optional.py

  • Committer: olivier-mattelaer
  • Date: 2020-08-21 09:16:56 UTC
  • mfrom: (284.2.24 python3)
  • Revision ID: olivier-mattelaer-20200821091656-iizux2mj94tkssuo
pass to 2.8.0 (and move to python3 branch)

Show diffs side-by-side

added added

removed removed

Lines of Context:
5
5
# Add masses to charged leptons, fix kinematics
6
6
# Insert W/Z when missing
7
7
 
 
8
from __future__ import absolute_import
 
9
from __future__ import print_function
8
10
import math,sys,re
9
11
from xml.dom import minidom
 
12
from six.moves import range
10
13
 
11
14
#tolerance for energy momentum conservation
12
15
toler = 1e-4
70
73
        self.pz = self.pz/pi*po
71
74
    def printMe(self):
72
75
        li = [self.px,self.py, self.pz, self.E, self.m]
73
 
        print "| %18.10E %18.10E %18.10E %18.10E %18.10E |" % tuple(li)    
 
76
        print("| %18.10E %18.10E %18.10E %18.10E %18.10E |" % tuple(li))    
74
77
 
75
78
#useful class to describe a particle
76
79
class Particle:
87
90
        self.polar = l[12]
88
91
    def printMe(self):
89
92
        li = [self.no, self.id, self.status,self.mo1, self.mo2, self.co1, self.co2, self.mom.px,self.mom.py, self.mom.pz, self.mom.E, self.mom.m, self.life, self.polar]
90
 
        print "%2i | %9i | %4i | %4i %4i | %4i %4i | %18.10E %18.10E %18.10E %18.10E %18.10E | %1.0f. %2.0f" % tuple(li)
 
93
        print("%2i | %9i | %4i | %4i %4i | %4i %4i | %18.10E %18.10E %18.10E %18.10E %18.10E | %1.0f. %2.0f" % tuple(li))
91
94
    def writeMe(self):
92
95
        li = [self.id, self.status,self.mo1, self.mo2, self.co1, self.co2, self.mom.px,self.mom.py, self.mom.pz, self.mom.E, self.mom.m, self.life, self.polar]
93
96
        return "%9i %4i %4i %4i %4i %4i %18.10E %18.10E %18.10E %18.10E %18.10E  %1.0f. %2.0f\n" % tuple(li)        
108
111
        try:
109
112
            line=f.readline()
110
113
        except IOError:
111
 
            print "Problem reading from file ",sys.argv[1]
 
114
            print("Problem reading from file ",sys.argv[1])
112
115
            sys.exit(0)
113
116
        if line.find("<event>")==-1:
114
117
            g.write(line)
121
124
    try:
122
125
        xmldoc = minidom.parse(sys.argv[1])
123
126
    except IOError:
124
 
        print " could not open file for xml parsing ",sys.argv[1]
 
127
        print(" could not open file for xml parsing ",sys.argv[1])
125
128
        sys.exit(0)
126
129
        
127
130
        
178
181
            if len(noMotherList)==0:
179
182
                pass
180
183
            elif len(noMotherList)%2 != 0:
181
 
                print "single orphan; do not know how to process"
 
184
                print("single orphan; do not know how to process")
182
185
            else:
183
186
                ki=0
184
187
                while ki<len(noMotherList)-1:
265
268
                pSum = pSum + p.mom
266
269
    
267
270
        if abs(pSum.px)>toler or abs(pSum.py)>toler or abs(pSum.pz)>toler or abs(pSum.E)>toler:
268
 
            print "Event does not pass tolerance ",toler
 
271
            print("Event does not pass tolerance ",toler)
269
272
            pSum.printMe()
270
273
    
271
274
        if 1:
286
289
 
287
290
    #main part of analysis
288
291
    if len(sys.argv)!=3:
289
 
        print "Usage: addmasses.py <infile> <outfile>    "
290
 
        print " Last modified: Fri Nov 21 10:49:14 CST 2008 "
 
292
        print("Usage: addmasses.py <infile> <outfile>    ")
 
293
        print(" Last modified: Fri Nov 21 10:49:14 CST 2008 ")
291
294
        sys.exit(1)
292
295
    else:
293
 
        print "Running addmasses.py to add masses and correct kinematics of fixed particles"
 
296
        print("Running addmasses.py to add masses and correct kinematics of fixed particles")
294
297
    
295
298
    #first print out leading information
296
299
    try:
297
300
        f=open(sys.argv[1],'r')
298
301
    except IOError:
299
 
        print "need a file for reading"
 
302
        print("need a file for reading")
300
303
        sys.exit(1)
301
304
 
302
305
    try:
303
306
        g=open(sys.argv[2],'w')
304
307
    except IOError:
305
 
        print "need a file for writing"
 
308
        print("need a file for writing")
306
309
        sys.exit(1)
307
310
    
308
311
    try:
309
312
        add_masses(f,g)
310
 
    except Exception, error:
311
 
        print "addmasses failed with error, %s" % error
 
313
    except Exception as error:
 
314
        print("addmasses failed with error, %s" % error)
312
315
        sys.exit(1)
313
316