Show a summary of experimental data
Source code name: "real_life_glueballs.py"
Programming language: Python
Topic: Physics/HEP
DMelt Version 1. Last modified: 05/09/2015. License: Pro
https://datamelt.org/code/cache/real_life_glueballs_4741.py
To run this script using the DMelt IDE, copy the above URL link to the menu [File]→[Read script from URL] of the DMelt IDE.




from java.awt import Font,Color
from java.util import Random
from jhplot  import  HPlot,P1D,HLabel,HKey
from jhplot.shapes  import Line,Arrow,Rectan

massAverage=1525
massError=5

widthAverage=73
widthError=6

# class to keep a single measurement
class Measurement:
     def __init__(self, ref, mass, mass_err_left, mass_err_right, 
                             width, width_err_left, width_err_right):
         "Class representing a single measurement"
         self.r_ref = ref
         self.r_mass = mass
         self.r_mass_err_left = mass_err_left
         self.r_mass_err_right = mass_err_right
         self.r_width = width
         self.r_width_err_left = width_err_left
         self.r_width_err_right = width_err_right
         self.r_y=10
         
         # keep mass
         self.p1=P1D(self.r_ref)
         self.p1.setErrSysX(0)
         self.p1.setSymbolSize(8)
         self.p1.setSymbol(4)
         self.p1.setPenWidthErr(2)
         # p1.setPenWidthErrSys(2)
         self.p1.add(self.r_mass,self.r_y,self.r_mass_err_left,self.r_mass_err_right,0,0,0,0,0,0)
         self.p1.setLegend(0)

         # keep width         
         self.p2=P1D(self.r_ref)
         self.p2.setErrSysX(0)
         self.p2.setSymbolSize(8)
         self.p2.setSymbol(4)
         self.p2.setPenWidthErr(2)
         # p2.setPenWidthErrSys(2)
         self.p2.add(self.r_width,self.r_y,self.r_width_err_left,self.r_width_err_right,0,0,0,0,0,0)
         self.p2.setLegend(0)

      


         # define interactive label
         self.lab=HLabel(self.r_ref,20,10)
         self.lab.setColor(Color.blue)
         
         
     def printMass(self):
         print  self.r_ref, self.r_mass,  self.r_mass_err_left,   self.r_mass_err_right
     def printWidth(self):
         print  self.r_ref, self.r_width,  self.r_width_err_left,   self.r_width_err_right                 


     def getMass(self):
         return self.r_mass;
     def getY(self):
         return self.r_y;
    
     def setY(self, y):
         self.r_y=y
         self.p1.clear()
         self.p2.clear()
         self.p1.add(self.r_mass,self.r_y,self.r_mass_err_left,self.r_mass_err_right,0,0,0,0,0,0)
         self.p2.add(self.r_width,self.r_y,self.r_width_err_left,self.r_width_err_right,0,0,0,0,0,0)
         self.lab.setLocation(20, self.r_y)
           
     def getMass(self):       
          return self.p1
     def getWidth(self):       
          return self.p2        
     def getLabel(self):       
          return self.lab  



# fill world's measurements
all=[]
all.append( Measurement('K-meson beams',   1523.4 ,1.3,1.3,   80.2,2.6,2.6) )
all.append( Measurement('e^{+}e^{-} annihilation',   1520.7, 2, 2,   79.9,3.3,3.3) )
all.append( Measurement('e p DIS',   1520.7, 2, 2,   79.9,3.3,3.3) )
all.append( Measurement('e p collisions',   1520.7, 2, 2,   79.9,3.3,3.3)) 


c1 = HPlot("Canvas",800,600,3, 1)
c1.setGTitle("World's summary f_{2}^{'} (1525)")
c1.setGridAll(0,0)
c1.setGridAll(1,0)
c1.visible(1)


# plot masses
c1.cd(1,1)
c1.removeAxes()
c1.setRange(1510,1540,0,100)
c1.setAxisX()
c1.setNameX("mass") 
c1.setAxisPenTicWidth(3)
c1.setPenWidthAxis(3)




# show PDG masses
line = Line(massAverage,0.0, massAverage, 100)
line.setColor(Color.red)
line.setTransparency(0.99)
c1.add(line)
rec = Rectan(massAverage,50, massError, 100)
rec.setColor(Color.yellow)
rec.setTransparency(0.5)
rec.setFill(1)
c1.add(rec)

tot=len(all)
delta=100/(tot+1)
for i in range(len(all)):
             m=all[i]
             m.printMass()
             m.setY(delta+i*delta)
             c1.draw(m.getMass())



# -------- citation
c1.cd(2,1)
c1.setRange(0,100,0,100)
c1.removeAxes()


# put key
key=HKey("PDG",20,10)
key.setKey(20,7,Color.yellow)
key.setKeySpace(2)
c1.add(key)

for i in range(len(all)):
             m=all[i]
             print "Labels=", m.printMass()
             m.setY(1.4*delta+i*delta)
             c1.add(m.getLabel())

c1.update()



# -------- plot widthes --------------------------------

c1.cd(3,1)
c1.removeAxes()
c1.setRange(50,100,0,100)
c1.setAxisX()
c1.setNameX("width (GeV)")
c1.setAxisPenTicWidth(3)
c1.setPenWidthAxis(3)

line = Line(widthAverage,0.0, widthAverage, 100)
line.setColor(Color.red)
line.setTransparency(0.99)
c1.add(line)
rec = Rectan(widthAverage,50, widthError, 100)
rec.setColor(Color.yellow)
rec.setTransparency(0.5)
rec.setFill(1)
c1.add(rec)



for i in range(len(all)):
             m=all[i]
             m.printWidth()
             m.setY(delta+i*delta)
             c1.draw(m.getWidth())


You see the box below because you did not login.