higgs_wz.py (raw text file)
from java.lang import *
from java.awt import Color,Font
from jhplot import HPlot,P1D,HLabel,H1D
from jhplot.io import HBook
from proto import FileMC
from jhplot.utils import FileList
from hephysics.particle import LParticle
from hepsim import HepSim
import sys
url=""; TotalEvents=20000
default_www="http://mc.hep.anl.gov/asc/hepsim/events/pp/13tev/pythia8_higgswz/"
if len(sys.argv)>1:
if sys.argv[1].startswith("http"):
flist=HepSim.getList(sys.argv[1])
url=sys.argv[1]
else: flist=FileList.get(sys.argv[1],"promc")
if (len(sys.argv)>2): TotalEvents=int(sys.argv[2])
else:
url=default_www; flist=HepSim.getList(url)
if len(flist)==0: print "Error: No input file!"; sys.exit(0)
else: print "Reading "+str(len(flist))+" files. Nr events= ",TotalEvents
h1= H1D("Stable particles",120,-10,10)
h1.setFill(True)
cross=0; nev=0; Nfiles=len(flist)
for m in range(Nfiles):
file=FileMC(url+flist[m])
header = file.getHeader()
un=float(header.getMomentumUnit())
lunit=float(header.getLengthUnit())
if m==0:
print "ProMC v=",file.getVersion(), "M unit=",un,"L unit=",lunit
if (nev>TotalEvents): print "Max Nr of events are done"; break
for i in range(file.size()):
if (nev>TotalEvents): break
nev=nev+1
if (nev%500==0):
if (Nfiles==1): print "Event=",nev
else: print "Event=",nev," done=",int((100.0*m)/Nfiles),"%"
eve = file.read(i)
pa = eve.getParticles()
for j in range(pa.getPxCount()):
if (pa.getStatus(j)==1):
p=LParticle(pa.getPx(j)/un,pa.getPy(j)/un,pa.getPz(j)/un,pa.getEnergy(j)/un)
eta=p.pseudoRapidity()
h1.fill(eta);
stat = file.getStat()
cross=stat.getCrossSectionAccumulated()
erro=stat.getCrossSectionErrorAccumulated();
file.close()
lumi=nev/cross;
print "Lumi=%.3e pb"%lumi
print "Total cross section (pb)=",cross
print "Total Nr of entries=",h1.allEntries()
h1.scale(1.0/(h1.getBinSize()*lumi))
c1 = HPlot("=HepSim=",600,400)
c1.setNameX("η")
c1.setNameY("d σ / d η [pb]")
c1.setSubTicNumber(0,5)
c1.visible(True)
c1.setAutoRange()
c1.setRangeX(-10,10)
c1.setRangeY(0,150)
c1.setMarginLeft(90)
c1.draw(h1)
l1=HLabel("Pythia8 σ=%.3e pb"%cross, 0.2, 0.8, "NDC")
l1.setFont(Font("Helvetica", Font.PLAIN, 14))
c1.add(l1)
l2=HLabel("=HepSim=",0.7,0.86, "NDC")
l2.setFont(Font("Helvetica", Font.PLAIN, 14))
l2.setColor(Color.gray)
c1.add(l2)
name="output"
if len(sys.argv[0])>0: name=sys.argv[0].replace(".py","")
file=HBook(name+".jdat","w"); print name+".jdat created"
file.write(h1)
file.close()
c1.export(name+".svg"); print name+".svg created"