Main Page | Packages | Class Hierarchy | Alphabetical List | Class List | Directories | File List | Namespace Members | Class Members | Related Pages

trgDisplayImpl.py

00001 #!/usr/local/bin/python
00002 #
00003 #                               Copyright 2004
00004 #                                     by
00005 #                        The Board of Trustees of the
00006 #                     Leland Stanford Junior University.
00007 #                            All rights reserved.
00008 #
00009 
00010 
00011 __facility__ = "Trigger"
00012 __abstract__ = "Trigger display implementation"
00013 __author__   = "Martin Kocian, SLAC"
00014 __date__     = ("$Date: 2005/06/15 23:42:31 $").split(' ')[1]
00015 __version__  = "$Revision: 2.17 $"
00016 __release__  = "$Name: R04-12-00 $"
00017 __credits__  = "SLAC"
00018 
00019 import LATTE.copyright_SLAC
00020 
00021 import sys
00022 from qt import *
00023 from trgDisplay import trgDisplay
00024 from towerwidgetImpl import towerwidgetImpl
00025 import time
00026 from listmean import *
00027 import logging as myLog
00028 from trgConsumer import *
00029 from imagedata import *
00030 
00031 CLOCKTICK=50.e-9
00032 TIMEOUT=10.
00033 class eventThread(QThread):
00034   def __init__(self,cons):
00035     QThread.__init__(self)
00036     self.cons=cons
00037   def run(self):
00038     self.cons.loop() 
00039   
00040 class trgDisplayImpl(trgDisplay):
00041 
00042   def __init__(self,lat,ocs,server,infile,parent = None,name = None,modal=0,fl = 0):
00043     trgDisplay.__init__(self,parent,name,modal,fl)
00044     self.cons=trgConsumer(server,infile)
00045     self.__firstresize=False
00046     self.__thewidth=0
00047     self.__theheight=0
00048     self.__solicited=0
00049     self.__tkr=0
00050     self.__callow=0
00051     self.__calhigh=0
00052     self.__cno=0
00053     self.__roi=0
00054     self.__periodic=0
00055     self.__ext=0
00056     self.timestamp=0
00057     self.timeout=0
00058     self.tkrvecold=[]
00059     self.tkrveclist=[]
00060     self.roivecold=[]
00061     self.roiveclist=[]
00062     self.cnovecold=[]
00063     self.cnoveclist=[]
00064     self.callowvecold=[]
00065     self.callowveclist=[]
00066     self.calhighvecold=[]
00067     self.calhighveclist=[]
00068     self.orvecold=[]
00069     self.orveclist=[]
00070     self.lut=[]
00071     self.englist=[]
00072     self.engnew=[]
00073     self.engold=[]
00074     for i in range(16):
00075       self.tkrvecold.append(0)
00076       self.tkrveclist.append([])
00077       self.roivecold.append(0)
00078       self.roiveclist.append([])
00079       self.cnovecold.append(0)
00080       self.cnoveclist.append([])
00081       self.callowvecold.append(0)
00082       self.callowveclist.append([])
00083       self.calhighvecold.append(0)
00084       self.calhighveclist.append([])
00085       self.orvecold.append(0)
00086       self.orveclist.append([])
00087       self.engold.append(0)
00088       self.engnew.append(0)
00089       self.englist.append([])
00090     self.__samplingrate=1000
00091     self.__ratehaschanged=False
00092     self.__numsamples=10
00093     self.__tkrlist=[]
00094     self.__callowlist=[]
00095     self.__calhighlist=[]
00096     self.__cnolist=[]
00097     self.__roilist=[]
00098     self.__periodiclist=[]
00099     self.__solicitedlist=[]
00100     self.__extlist=[]
00101     self.__consevents=0
00102     self.ref=5
00103     self.roion=False
00104     self.tkron=False
00105     self.callowon=False
00106     self.calhighon=False
00107     self.cnoon=False
00108     self.exton=False
00109     self.__lat = lat
00110     self.__ocs = ocs
00111     self.towerlist=[]
00112     for temid in range(16):
00113       tem=self.__lat.downTEM(temid)
00114       if tem==None: continue
00115       self.towerlist.append(temid)
00116     self.__oldtime=time.time()
00117     self.__timebase=lat.GEM.GEMST.timebase
00118     self.__livetime=lat.GEM.GEMST.livetime
00119     self.__discarded=lat.GEM.GEMST.discarded
00120     self.__deadzone=lat.GEM.GEMST.deadzone
00121     self.__prescaled=lat.GEM.GEMST.prescaled
00122     self.__sent=lat.GEM.GEMST.sent
00123     self.__validev=ocs.stats_valid_events
00124     self.__window=lat.GEM.GEMW.window_width
00125     self.cons.winwidth=self.__window
00126     self.cons.conf=lat.GEM.GEMC.configuration&1
00127     self.__livelist=[]
00128     self.__sentlist=[]
00129     self.__discardedlist=[]
00130     self.__prescaledlist=[]
00131     self.__deadzonelist=[]
00132     self.rate.setText("")
00133     #self.number.setProperty("value",QVariant(self.step))
00134     QObject.connect(self.samplingrate,SIGNAL("clicked(int)"),self.changeRate)    
00135     QObject.connect(self.avrate,SIGNAL("clicked(int)"),self.changeSampling)    
00136     
00137     self.rate1.setHigh("10")
00138     self.rate10.setHigh("100")
00139     self.rate100.setHigh("1000")
00140     self.rate1.setLow("0")
00141     self.rate10.setLow("0")
00142     self.rate100.setLow("0")
00143     self.rate1.bar.setScale(10)
00144     self.rate10.bar.setScale(100)
00145     self.rate100.bar.setScale(1000)
00146     self.rate1.setTitle("")
00147     self.rate10.setTitle("")
00148     self.rate100.setTitle("")
00149     self.rate1.bar.setMinor(500)
00150     self.rate1.bar.setMajor(1000)
00151     self.rate10.bar.setMinor(500)
00152     self.rate10.bar.setMajor(1000)
00153     self.rate100.bar.setMinor(500)
00154     self.rate100.bar.setMajor(1000)
00155     self.instrate1.setHigh("10")
00156     self.instrate10.setHigh("100")
00157     self.instrate100.setHigh("1000")
00158     self.instrate1.setLow("0")
00159     self.instrate10.setLow("0")
00160     self.instrate100.setLow("0")
00161     self.instrate1.bar.setScale(10)
00162     self.instrate10.bar.setScale(100)
00163     self.instrate100.bar.setScale(1000)
00164     self.instrate1.setTitle("")
00165     self.instrate10.setTitle("")
00166     self.instrate100.setTitle("")
00167     self.instrate1.bar.setMinor(500)
00168     self.instrate1.bar.setMajor(1000)
00169     self.instrate10.bar.setMinor(500)
00170     self.instrate10.bar.setMajor(1000)
00171     self.instrate100.bar.setMinor(500)
00172     self.instrate100.bar.setMajor(1000)
00173     self.deadtime1.setHigh("1")
00174     self.deadtime10.setHigh("10")
00175     self.deadtime100.setHigh("100")
00176     self.deadtime1.setLow("0")
00177     self.deadtime10.setLow("0")
00178     self.deadtime100.setLow("0")
00179     self.deadtime1.bar.setScale(1)
00180     self.deadtime10.bar.setScale(10)
00181     self.deadtime100.bar.setScale(100)
00182     self.deadtime1.setTitle("")
00183     self.deadtime10.setTitle("")
00184     self.deadtime100.setTitle("")
00185     self.deadtime1.bar.setMinor(.5)
00186     self.deadtime1.bar.setMajor(5)
00187     self.deadtime10.bar.setMinor(.5)
00188     self.deadtime10.bar.setMajor(5)
00189     self.deadtime100.bar.setMinor(.5)
00190     self.deadtime100.bar.setMajor(5)
00191     self.deadtime.setText("")
00192     self.prescaledb.setTitle("Prescaled")
00193     self.prescaledb.setSlidingScale(1)
00194     self.discardedb.setTitle("Discarded")
00195     self.discardedb.setSlidingScale(1)
00196     self.deadzoneb.setTitle("Dead zone")
00197     self.deadzoneb.setSlidingScale(1)
00198     self.histo.setup(100,1,65536,True,True)
00199     self.histo.boxwidth=.35
00200     self.histo.addHisto("deltaetime","black",0,1)
00201     self.histo.addHisto("deltawtime","orange",1,1)
00202     self.histo.xaxislabel.setText("clock ticks (50 ns)")
00203     self.histo.histolabel[0].setText("Delta Event Time")
00204     self.histo.histolabel[1].setText("Delta Window Time")
00205     self.multibar1.setup(8)
00206     self.multibar1.setSlidingScale(1)
00207     self.multibar1.setTitle("Conditions Rates (Aver.)" )
00208     self.multibar2.setup(16,2)
00209     self.multibar2.setTitle("Tower Rates (Average)")
00210     self.multibar2.setSlidingScale(1)
00211     self.multibartower.setup(16,2)
00212     self.multibartower.setTitle("Tower Rates (Average)")
00213     self.multibartower.setSlidingScale(1)
00214     self.multibartkr.setup(16,2)
00215     self.multibartkr.setTitle("Tracker Rates (Average)")
00216     self.multibartkr.setSlidingScale(1)
00217     self.multibarcallow.setup(16,2)
00218     self.multibarcallow.setTitle("Cal low Rates (Average)")
00219     self.multibarcallow.setSlidingScale(1)
00220     self.multibarcalhigh.setup(16,2)
00221     self.multibarcalhigh.setTitle("Cal high Rates (Average)")
00222     self.multibarcalhigh.setSlidingScale(1)
00223     self.multibarroi.setup(16,2)
00224     self.multibarroi.setTitle("ROI Rates (Average)")
00225     self.multibarroi.setSlidingScale(1)
00226     self.multibarcno.setup(12,0)
00227     self.multibarcno.setTitle("CNO Rates (Average)")
00228     self.multibarcno.setSlidingScale(1)
00229     cnotitles=["1LA","1RB","2LA","2LB","2RA","2RB","3LA","3RB","4LA","4LB","4RA","4RB"]
00230     for i in range (16):
00231       self.multibar2.setBarTitle(i,str(i))
00232       self.multibartower.setBarTitle(i,str(i))
00233       self.multibartkr.setBarTitle(i,str(i))
00234       self.multibarcallow.setBarTitle(i,str(i))
00235       self.multibarcalhigh.setBarTitle(i,str(i))
00236       self.multibarroi.setBarTitle(i,str(i))
00237       if i<12:
00238         self.multibarcno.setBarTitle(i,cnotitles[i])
00239 
00240     self.multibareng.setup(16,0)
00241     self.multibareng.setSlidingScale(1)
00242     self.multibareng.setTitle("")
00243     for i in range (16):
00244       self.multibareng.setBarTitle(i,str(i))
00245     self.engmeters=[]
00246     for i in range(16):
00247       self.engmeters.append(QLabel(self.tab_5,""))
00248       self.engmeters[i].setText("")
00249       self.engmeters[i].setAlignment(QLabel.AlignCenter)
00250       self.engmeters[i].setGeometry(163+i*31,250,30,12)
00251     self.prescalelabels=[]
00252     for i in range(16):
00253       self.prescalelabels.append(QLabel(self.tab_5,""))
00254       self.prescalelabels[i].setText("")
00255       self.prescalelabels[i].setAlignment(QLabel.AlignCenter)
00256       self.prescalelabels[i].setGeometry(163+i*31,120,30,12)
00257     plabel=QLabel(self.tab_5,"")
00258     plabel.setText("Prescale:")
00259     plabel.setGeometry(60,117,85,16)
00260     
00261                             
00262     self.image0 = QPixmap(image0_data)
00263     self.image1 = QPixmap(image1_data)
00264     self.calstrobe=[]
00265     for i in range(16):
00266       self.calstrobe.append(QLabel(self.tab_5,""))
00267       self.calstrobe[i].setGeometry(168+i*31,217,14,14)
00268     cslabel=QLabel(self.tab_5,"")
00269     cslabel.setText("Calstrobe:")
00270     cslabel.setGeometry(60,217,65,16)
00271     self.tack=[]
00272     for i in range(16):
00273       self.tack.append(QLabel(self.tab_5,""))
00274       self.tack[i].setGeometry(168+i*31,197,14,14)
00275     tacklabel=QLabel(self.tab_5,"")
00276     tacklabel.setText("TACK:")
00277     tacklabel.setGeometry(60,197,65,16)
00278     self.fourrange=[]
00279     for i in range(16):
00280       self.fourrange.append(QLabel(self.tab_5,""))
00281       self.fourrange[i].setGeometry(168+i*31,177,14,14)
00282     frlabel=QLabel(self.tab_5,"")
00283     frlabel.setText("Four-range:")
00284     frlabel.setGeometry(60,177,65,16)
00285     self.zerosup=[]
00286     for i in range(16):
00287       self.zerosup.append(QLabel(self.tab_5,""))
00288       self.zerosup[i].setGeometry(168+i*31,157,14,14)
00289     zslabel=QLabel(self.tab_5,"")
00290     zslabel.setText("0 suppression:")
00291     zslabel.setGeometry(60,157,85,16)
00292     self.inhib=[]
00293     for i in range(16):
00294       self.inhib.append(QLabel(self.tab_5,""))
00295       self.inhib[i].setGeometry(168+i*31,137,14,14)
00296     illabel=QLabel(self.tab_5,"")
00297     illabel.setText("Inhibited:")
00298     illabel.setGeometry(60,137,85,16)
00299                             
00300     if len(self.towerlist)>0:
00301       self.radiomask1.setup(len(self.towerlist))
00302       self.radiomask2.setup(len(self.towerlist))
00303       self.radiomask1.setTitle("Display Data from Tower:")
00304       self.radiomask2.setTitle("Display Data from Tower:")
00305     for i in range(len(self.towerlist)):
00306       self.radiomask1.setLabel(i,str(self.towerlist[i]))
00307       self.radiomask2.setLabel(i,str(self.towerlist[i]))
00308     self.tower1=None
00309     self.tower2=None
00310     if len(self.towerlist)>0:
00311       self.tower1=0
00312       self.radiomask1.click(0)
00313       if len(self.towerlist)>1:
00314         self.tower2=1
00315         self.radiomask2.click(1)
00316       else:
00317         self.tower2=0
00318         self.radiomask2.click(0)
00319       
00320       
00321     self.maskcal11.setup(8)
00322     self.maskcalh11.setup(8)
00323     self.maskcal12.setup(8)
00324     self.maskcalh12.setup(8)
00325     self.maskcal21.setup(8)
00326     self.maskcalh21.setup(8)
00327     self.maskcal22.setup(8)
00328     self.maskcalh22.setup(8)
00329     for i in range(8):
00330       if i<4:
00331         a="x%d"%i
00332       else:
00333         a="y%d"%(i-4)
00334       self.maskcal11.setLabel(i,a)
00335       self.maskcalh11.setLabel(i,a)
00336       self.maskcal12.setLabel(i,a)
00337       self.maskcalh12.setLabel(i,a)
00338       self.maskcal21.setLabel(i,a)
00339       self.maskcalh21.setLabel(i,a)
00340       self.maskcal22.setLabel(i,a)
00341       self.maskcalh22.setLabel(i,a)
00342     self.maskcal11.setTitle("FLE")
00343     self.maskcalh11.setTitle("FHE")
00344     self.maskcal12.setTitle("FLE")
00345     self.maskcalh12.setTitle("FHE")
00346     self.barwcal11.setSlidingScale(1)
00347     self.barwcal11.bar.setMajor(100000)
00348     self.barwcal12.setSlidingScale(1)
00349     self.barwcal12.bar.setMajor(100000)
00350     self.maskcal21.setTitle("FLE")
00351     self.maskcalh21.setTitle("FHE")
00352     self.maskcal22.setTitle("FLE")
00353     self.maskcalh22.setTitle("FHE")
00354     self.barwcal21.setSlidingScale(1)
00355     self.barwcal21.bar.setMajor(100000)
00356     self.barwcal22.setSlidingScale(1)
00357     self.barwcal22.bar.setMajor(100000)
00358     self.masktkr11.setup(4)
00359     self.masktkr12.setup(4)
00360     self.masktkr13.setup(4)
00361     self.masktkr14.setup(4)
00362     for i in range(4):
00363       self.masktkr11.setLabel(i,"C%d"%i)
00364       self.masktkr12.setLabel(i,"C%d"%(i+4))
00365       self.masktkr13.setLabel(i,"C%d"%(i+8))
00366       self.masktkr14.setLabel(i,"C%d"%(i+12))
00367     self.masktkr11.setTitle("Comb")
00368     self.masktkr12.setTitle("Comb")
00369     self.masktkr13.setTitle("Comb")
00370     self.masktkr14.setTitle("Comb")
00371     self.barwtkr11.setSlidingScale(1)
00372     self.barwtkr11.bar.setMajor(100000)
00373     self.barwtkr12.setSlidingScale(1)
00374     self.barwtkr12.bar.setMajor(100000)
00375     self.barwtkr13.setSlidingScale(1)
00376     self.barwtkr13.bar.setMajor(100000)
00377     self.barwtkr14.setSlidingScale(1)
00378     self.barwtkr14.bar.setMajor(100000)
00379     self.masktkr21.setup(4)
00380     self.masktkr22.setup(4)
00381     self.masktkr23.setup(4)
00382     self.masktkr24.setup(4)
00383     for i in range(4):
00384       self.masktkr21.setLabel(i,"C%d"%i)
00385       self.masktkr22.setLabel(i,"C%d"%(i+4))
00386       self.masktkr23.setLabel(i,"C%d"%(i+8))
00387       self.masktkr24.setLabel(i,"C%d"%(i+12))
00388     self.masktkr21.setTitle("Comb")
00389     self.masktkr22.setTitle("Comb")
00390     self.masktkr23.setTitle("Comb")
00391     self.masktkr24.setTitle("Comb")
00392     self.barwtkr21.setSlidingScale(1)
00393     self.barwtkr21.bar.setMajor(100000)
00394     self.barwtkr22.setSlidingScale(1)
00395     self.barwtkr22.bar.setMajor(100000)
00396     self.barwtkr23.setSlidingScale(1)
00397     self.barwtkr23.bar.setMajor(100000)
00398     self.barwtkr24.setSlidingScale(1)
00399     self.barwtkr24.bar.setMajor(100000)
00400     self.barwtile1.setSlidingScale(1)
00401     self.barwtile1.bar.setMajor(100000)
00402     self.barwtile2.setSlidingScale(1)
00403     self.barwtile2.bar.setMajor(100000)
00404     self.barwcno1.setSlidingScale(1)
00405     self.barwcno1.bar.setMajor(100000)
00406     self.barwcno2.setSlidingScale(1)
00407     self.barwcno2.bar.setMajor(100000)
00408 
00409 
00410     self.calcounterlist11=[]
00411     self.calcounterlist12=[]
00412     self.calcounterlist21=[]
00413     self.calcounterlist22=[]
00414     self.tkrcounterlist11=[]
00415     self.tkrcounterlist12=[]
00416     self.tkrcounterlist13=[]
00417     self.tkrcounterlist14=[]
00418     self.tkrcounterlist21=[]
00419     self.tkrcounterlist22=[]
00420     self.tkrcounterlist23=[]
00421     self.tkrcounterlist24=[]
00422     self.tile0list=[]
00423     self.tile1list=[]
00424     self.cno0list=[]
00425     self.cno1list=[]
00426     if self.tower1 is not None:
00427       calmask=self.__lat.downTEM(self.towerlist[self.tower1]).TIC.cal_lrs_mask
00428       calmask=(~calmask)&0xffffffffL
00429       self.maskcal11.setMask(calmask&0xff)
00430       self.maskcalh11.setMask((calmask>>8)&0xff)
00431       self.maskcal12.setMask((calmask>>16)&0xff)
00432       self.maskcalh12.setMask((calmask>>24)&0xff)
00433       calcounter=self.__lat.downTEM(self.towerlist[self.tower1]).TIC.cal_lrs_counters
00434       self.calcounter11=calcounter&0xffff
00435       self.calcounter12=(calcounter>>16)&0xffff
00436       tkrmask= self.__lat.downTEM(self.towerlist[self.tower1]).TIC.tkr_out_lrs_mask
00437       tkrmask=(~tkrmask)&0xffff
00438       self.masktkr11.setMask(tkrmask&0xf)
00439       self.masktkr12.setMask((tkrmask>>4)&0xf)
00440       self.masktkr13.setMask((tkrmask>>8)&0xf)
00441       self.masktkr14.setMask((tkrmask>>12)&0xf)
00442       tkrcounter0=self.__lat.downTEM(self.towerlist[self.tower1]).TIC.tkr_lrs_counter_0
00443       tkrcounter1=self.__lat.downTEM(self.towerlist[self.tower1]).TIC.tkr_lrs_counter_1
00444       self.tkrcounter12=tkrcounter0&0xffff
00445       self.tkrcounter11=(tkrcounter0>>16)&0xffff
00446       self.tkrcounter14=tkrcounter1&0xffff
00447       self.tkrcounter13=(tkrcounter1>>16)&0xffff
00448 
00449     if self.tower2 is not None:
00450       calmask=self.__lat.downTEM(self.towerlist[self.tower2]).TIC.cal_lrs_mask
00451       calmask=(~calmask)&0xffffffffL
00452       self.maskcal21.setMask(calmask&0xff)
00453       self.maskcalh21.setMask((calmask>>8)&0xff)
00454       self.maskcal22.setMask((calmask>>16)&0xff)
00455       self.maskcalh22.setMask((calmask>>24)&0xff)
00456       calcounter=self.__lat.downTEM(self.towerlist[self.tower2]).TIC.cal_lrs_counters
00457       self.calcounter21=calcounter&0xffff
00458       self.calcounter22=(calcounter>>16)&0xffff
00459       tkrmask= self.__lat.downTEM(self.towerlist[self.tower2]).TIC.tkr_out_lrs_mask
00460       tkrmask=(~tkrmask)&0xffff
00461       self.masktkr21.setMask(tkrmask&0xf)
00462       self.masktkr22.setMask((tkrmask>>4)&0xf)
00463       self.masktkr23.setMask((tkrmask>>8)&0xf)
00464       self.masktkr24.setMask((tkrmask>>12)&0xf)
00465       tkrcounter0=self.__lat.downTEM(self.towerlist[self.tower2]).TIC.tkr_lrs_counter_0
00466       tkrcounter1=self.__lat.downTEM(self.towerlist[self.tower2]).TIC.tkr_lrs_counter_1
00467       self.tkrcounter22=tkrcounter0&0xffff
00468       self.tkrcounter21=(tkrcounter0>>16)&0xffff
00469       self.tkrcounter24=tkrcounter1&0xffff
00470       self.tkrcounter23=(tkrcounter1>>16)&0xffff
00471     tile_0=self.__lat.GEM.GEMST.tile_0
00472     tile_1=self.__lat.GEM.GEMST.tile_1
00473     self.tile1.setValue(tile_0)
00474     self.tile2.setValue(tile_1)
00475     acdcounters=self.__lat.GEM.GEMST.tile_counters
00476     self.tile_0=acdcounters&0xffff
00477     self.tile_1=(acdcounters>>16)&0xffff
00478     cno_0=self.__lat.GEM.GEMST.cno_0
00479     cno_1=self.__lat.GEM.GEMST.cno_1
00480     self.cno1.setValue(cno_0)
00481     self.cno2.setValue(cno_1)
00482     acdcounters=self.__lat.GEM.GEMST.cno_counters
00483     self.cno_0=acdcounters&0xffff
00484     self.cno_1=(acdcounters>>16)&0xffff
00485     #counters saturated? reset and ignore reading
00486     self.ignoretile=False
00487     self.ignorecno=False
00488     self.ignorecal1=False
00489     self.ignoretkr11=False
00490     self.ignoretkr12=False
00491     self.ignorecal2=False
00492     self.ignoretkr21=False
00493     self.ignoretkr22=False
00494     
00495     QObject.connect(self.maskcal11,PYSIGNAL("update"),self.changecalmask11) 
00496     QObject.connect(self.maskcal12,PYSIGNAL("update"),self.changecalmask12) 
00497     QObject.connect(self.maskcalh11,PYSIGNAL("update"),self.changecalmaskh11) 
00498     QObject.connect(self.maskcalh12,PYSIGNAL("update"),self.changecalmaskh12) 
00499     QObject.connect(self.maskcal21,PYSIGNAL("update"),self.changecalmask21) 
00500     QObject.connect(self.maskcal22,PYSIGNAL("update"),self.changecalmask22) 
00501     QObject.connect(self.maskcalh21,PYSIGNAL("update"),self.changecalmaskh21) 
00502     QObject.connect(self.maskcalh22,PYSIGNAL("update"),self.changecalmaskh22) 
00503     QObject.connect(self.masktkr11,PYSIGNAL("update"),self.changetkrmask11) 
00504     QObject.connect(self.masktkr12,PYSIGNAL("update"),self.changetkrmask12) 
00505     QObject.connect(self.masktkr13,PYSIGNAL("update"),self.changetkrmask13) 
00506     QObject.connect(self.masktkr14,PYSIGNAL("update"),self.changetkrmask14) 
00507     QObject.connect(self.masktkr21,PYSIGNAL("update"),self.changetkrmask21) 
00508     QObject.connect(self.masktkr22,PYSIGNAL("update"),self.changetkrmask22) 
00509     QObject.connect(self.masktkr23,PYSIGNAL("update"),self.changetkrmask23) 
00510     QObject.connect(self.masktkr24,PYSIGNAL("update"),self.changetkrmask24) 
00511     QObject.connect(self.tile1,SIGNAL("valueChanged(int)"),self.changetile1) 
00512     QObject.connect(self.tile2,SIGNAL("valueChanged(int)"),self.changetile2) 
00513     QObject.connect(self.cno1,SIGNAL("valueChanged(int)"),self.changecno1) 
00514     QObject.connect(self.cno2,SIGNAL("valueChanged(int)"),self.changecno2) 
00515     QObject.connect(self.radiomask1,PYSIGNAL("update"),self.changetower1) 
00516     QObject.connect(self.radiomask2,PYSIGNAL("update"),self.changetower2) 
00517     QObject.connect(self.resetcal1,SIGNAL("clicked()"),self.doresetcal1) 
00518     QObject.connect(self.resetcal2,SIGNAL("clicked()"),self.doresetcal2) 
00519     QObject.connect(self.resettkr11,SIGNAL("clicked()"),self.doresettkr11) 
00520     QObject.connect(self.resettkr12,SIGNAL("clicked()"),self.doresettkr12) 
00521     QObject.connect(self.resettkr21,SIGNAL("clicked()"),self.doresettkr21) 
00522     QObject.connect(self.resettkr22,SIGNAL("clicked()"),self.doresettkr22) 
00523     QObject.connect(self.resettile,SIGNAL("clicked()"),self.doresettile) 
00524     QObject.connect(self.resetcno,SIGNAL("clicked()"),self.doresetcno) 
00525           
00526       
00527     #self.multibar1.setBarTitle(0,"ROI\n ")
00528     ##self.multibar1.setBarTitle(1,"TKR\n ")
00529     #self.multibar1.setBarTitle(2,"CAL\nlow")
00530     ##self.multibar1.setBarTitle(3,"CAL\nhigh")
00531     #self.multibar1.setBarTitle(4,"CNO\n ")
00532     #self.multibar1.setBarTitle(5,"Per.\n ")
00533     #self.multibar1.setBarTitle(6,"Sol.\n ")
00534     #self.multibar1.setBarTitle(7,"EXT\n ")
00535     QObject.connect(self.logy,SIGNAL("toggled(bool)"),self.histo.setLogy)    
00536     QObject.connect(self.resetlin,SIGNAL("clicked()"),self.histo.resetlin)    
00537     QObject.connect(self.resetlog,SIGNAL("clicked()"),self.histo.resetlog)    
00538 
00539     self.timehisto.setup(2*self.__window+1,-self.__window-.5,self.__window+.5,False,False)
00540     self.cons.timehisto=self.timehisto
00541     self.timehisto.bds=10
00542     self.timehisto.boxwidth=.25
00543     self.timehisto.xaxislabel.setText("clock ticks (50 ns)")
00544     self.timehisto.addHisto("ROI","black",0,1,0)
00545     self.timehisto.setHistoLabel("ROI","ROI")
00546     self.timehisto.addHisto("TKR","blue",0,1,0)
00547     self.timehisto.setHistoLabel("TKR","TKR")
00548     self.timehisto.addHisto("CALlow","red",0,1,0)
00549     self.timehisto.setHistoLabel("CALlow","CAL low")
00550     self.timehisto.addHisto("CALhigh","orange",0,1,0)
00551     self.timehisto.setHistoLabel("CALhigh","CAL high")
00552     self.timehisto.addHisto("CNO","magenta",0,1,0)
00553     self.timehisto.setHistoLabel("CNO","CNO")
00554     self.timehisto.addHisto("EXT","green",0,1,0)
00555     self.timehisto.setHistoLabel("EXT","External")
00556     QObject.connect(self.logytime,SIGNAL("toggled(bool)"),self.timehisto.setLogy)    
00557     QObject.connect(self.resettime,SIGNAL("clicked()"),self.resettimehisto)    
00558     QObject.connect(self.reference,SIGNAL("clicked(int)"),self.setReference)    
00559     QObject.connect(self.roitime,SIGNAL("toggled(bool)"),self.setROI)    
00560     QObject.connect(self.tkrtime,SIGNAL("toggled(bool)"),self.setTKR)    
00561     QObject.connect(self.callowtime,SIGNAL("toggled(bool)"),self.setCALlow)    
00562     QObject.connect(self.calhightime,SIGNAL("toggled(bool)"),self.setCALhigh)    
00563     QObject.connect(self.cnotime,SIGNAL("toggled(bool)"),self.setCNO)    
00564     QObject.connect(self.exttime,SIGNAL("toggled(bool)"),self.setEXT)    
00565 
00566     self.__timer=QTimer(self)
00567     QObject.connect(self.__timer,SIGNAL("timeout()"),self.update)
00568     self.__timer.start(self.__samplingrate,False)
00569     self.consthread=eventThread(self.cons)
00570     self.consthread.start()
00571 
00572     #tower tab
00573     self.towers=[]
00574     for i in self.towerlist:
00575       xcoord=i%4
00576       ycoord=i/4
00577       self.towers.append(towerwidgetImpl(self.__lat,i,self.tab_2,"tower_%d"%i))
00578       self.towers[-1].frame.setTitle("TEM %d"%i)
00579       self.towers[-1].setGeometry(10+180*xcoord,10+155*ycoord,130,150) 
00580       self.towers[-1].barw.setHigh("100 %")
00581       self.towers[-1].barw.setLow("0")
00582       self.towers[-1].barw.bar.setScale(100)
00583       QObject.connect(self.__timer,SIGNAL("timeout()"),self.towers[-1].update)    
00584       QObject.connect(self.avrate,SIGNAL("clicked(int)"),self.towers[-1].changeSampling)    
00585   
00586   def resettimehisto(self):
00587     self.timehisto.resetlin()
00588     self.cons.timematrix=None
00589   def changecalmask11(self,mask):
00590     if self.tower1 is not None:
00591       calmask=self.__lat.downTEM(self.towerlist[self.tower1]).TIC.cal_lrs_mask
00592       calmask=~calmask&0xffffffffl
00593       calmask&=0xffffff00L
00594       calmask|=mask
00595       calmask=~calmask&0xffffffffl
00596       self.__lat.downTEM(self.towerlist[self.tower1]).TIC.cal_lrs_mask=calmask
00597   def changecalmask12(self,mask):
00598     if self.tower1 is not None:
00599       calmask=self.__lat.downTEM(self.towerlist[self.tower1]).TIC.cal_lrs_mask
00600       calmask=~calmask&0xffffffffl
00601       calmask&=0xff00ffffL 
00602       calmask|=mask<<16
00603       calmask=~calmask&0xffffffffl
00604       self.__lat.downTEM(self.towerlist[self.tower1]).TIC.cal_lrs_mask=calmask
00605   def changecalmaskh11(self,mask):
00606     if self.tower1 is not None:
00607       calmask=self.__lat.downTEM(self.towerlist[self.tower1]).TIC.cal_lrs_mask
00608       calmask=~calmask&0xffffffffl
00609       calmask&=0xffff00ffL 
00610       calmask|=mask<<8
00611       calmask=~calmask&0xffffffffl
00612       self.__lat.downTEM(self.towerlist[self.tower1]).TIC.cal_lrs_mask=calmask
00613   def changecalmaskh12(self,mask):
00614     if self.tower1 is not None:
00615       calmask=self.__lat.downTEM(self.towerlist[self.tower1]).TIC.cal_lrs_mask
00616       calmask=~calmask&0xffffffffl
00617       calmask&=0xffffffL
00618       calmask|=mask<<24
00619       calmask=~calmask&0xffffffffl
00620       self.__lat.downTEM(self.towerlist[self.tower1]).TIC.cal_lrs_mask=calmask
00621   def changecalmask21(self,mask):
00622     if self.tower2 is not None:
00623       calmask=self.__lat.downTEM(self.towerlist[self.tower2]).TIC.cal_lrs_mask
00624       calmask=~calmask&0xffffffffl
00625       calmask&=0xffffff00L 
00626       calmask|=mask
00627       calmask=~calmask&0xffffffffl
00628       self.__lat.downTEM(self.towerlist[self.tower2]).TIC.cal_lrs_mask=calmask
00629   def changecalmaskh21(self,mask):
00630     if self.tower2 is not None:
00631       calmask=self.__lat.downTEM(self.towerlist[self.tower2]).TIC.cal_lrs_mask
00632       calmask=~calmask&0xffffffffl
00633       calmask&=0xffff00ffL 
00634       calmask|=mask<<8
00635       calmask=~calmask&0xffffffffl
00636       self.__lat.downTEM(self.towerlist[self.tower2]).TIC.cal_lrs_mask=calmask
00637   def changecalmask22(self,mask):
00638     if self.tower2 is not None:
00639       calmask=self.__lat.downTEM(self.towerlist[self.tower2]).TIC.cal_lrs_mask
00640       calmask=~calmask&0xffffffffl
00641       calmask&=0xff00ffffL
00642       calmask|=mask<<16
00643       calmask=~calmask&0xffffffffl
00644       self.__lat.downTEM(self.towerlist[self.tower2]).TIC.cal_lrs_mask=calmask
00645   def changecalmaskh22(self,mask):
00646     if self.tower2 is not None:
00647       calmask=self.__lat.downTEM(self.towerlist[self.tower2]).TIC.cal_lrs_mask
00648       calmask=~calmask&0xffffffffl
00649       calmask&=0xffffffL
00650       calmask|=mask<<24
00651       calmask=~calmask&0xffffffffl
00652       self.__lat.downTEM(self.towerlist[self.tower2]).TIC.cal_lrs_mask=calmask
00653   def changetkrmask11(self,mask):
00654     if self.tower1 is not None:
00655       tkrmask= self.__lat.downTEM(self.towerlist[self.tower1]).TIC.tkr_out_lrs_mask
00656       tkrmask=~tkrmask&0xffff
00657       tkrmask&=0xfff0
00658       tkrmask|=mask
00659       tkrmask=~tkrmask&0xffff
00660       self.__lat.downTEM(self.towerlist[self.tower1]).TIC.tkr_out_lrs_mask=tkrmask
00661   def changetkrmask12(self,mask):
00662     if self.tower1 is not None:
00663       tkrmask= self.__lat.downTEM(self.towerlist[self.tower1]).TIC.tkr_out_lrs_mask
00664       tkrmask=~tkrmask&0xffff
00665       tkrmask&=0xff0f
00666       tkrmask|=mask<<4
00667       tkrmask=~tkrmask&0xffff
00668       self.__lat.downTEM(self.towerlist[self.tower1]).TIC.tkr_out_lrs_mask=tkrmask
00669   def changetkrmask13(self,mask):
00670     if self.tower1 is not None:
00671       tkrmask= self.__lat.downTEM(self.towerlist[self.tower1]).TIC.tkr_out_lrs_mask
00672       tkrmask=~tkrmask&0xffff
00673       tkrmask&=0xf0ff
00674       tkrmask|=mask<<8
00675       tkrmask=~tkrmask&0xffff
00676       self.__lat.downTEM(self.towerlist[self.tower1]).TIC.tkr_out_lrs_mask=tkrmask
00677   def changetkrmask14(self,mask):
00678     if self.tower1 is not None:
00679       tkrmask= self.__lat.downTEM(self.towerlist[self.tower1]).TIC.tkr_out_lrs_mask
00680       tkrmask=~tkrmask&0xffff
00681       tkrmask&=0xfff
00682       tkrmask|=mask<<12
00683       tkrmask=~tkrmask&0xffff
00684       self.__lat.downTEM(self.towerlist[self.tower1]).TIC.tkr_out_lrs_mask=tkrmask
00685   def changetkrmask21(self,mask):
00686     if self.tower2 is not None:
00687       tkrmask= self.__lat.downTEM(self.towerlist[self.tower2]).TIC.tkr_out_lrs_mask
00688       tkrmask=~tkrmask&0xffff
00689       tkrmask&=0xfff0
00690       tkrmask|=mask
00691       tkrmask=~tkrmask&0xffff
00692       self.__lat.downTEM(self.towerlist[self.tower2]).TIC.tkr_out_lrs_mask=tkrmask
00693   def changetkrmask22(self,mask):
00694     if self.tower2 is not None:
00695       tkrmask= self.__lat.downTEM(self.towerlist[self.tower2]).TIC.tkr_out_lrs_mask
00696       tkrmask=~tkrmask&0xffff
00697       tkrmask&=0xff0f
00698       tkrmask|=mask<<4
00699       tkrmask=~tkrmask&0xffff
00700       self.__lat.downTEM(self.towerlist[self.tower2]).TIC.tkr_out_lrs_mask=tkrmask
00701   def changetkrmask23(self,mask):
00702     if self.tower2 is not None:
00703       tkrmask= self.__lat.downTEM(self.towerlist[self.tower2]).TIC.tkr_out_lrs_mask
00704       tkrmask=~tkrmask&0xffff
00705       tkrmask&=0xf0ff
00706       tkrmask|=mask<<8
00707       tkrmask=~tkrmask&0xffff
00708       self.__lat.downTEM(self.towerlist[self.tower2]).TIC.tkr_out_lrs_mask=tkrmask
00709   def changetkrmask24(self,mask):
00710     if self.tower2 is not None:
00711       tkrmask= self.__lat.downTEM(self.towerlist[self.tower2]).TIC.tkr_out_lrs_mask
00712       tkrmask=~tkrmask&0xffff
00713       tkrmask&=0xfff
00714       tkrmask|=mask<<12
00715       tkrmask=~tkrmask&0xffff
00716       self.__lat.downTEM(self.towerlist[self.tower2]).TIC.tkr_out_lrs_mask=tkrmask
00717   def changetile1(self,tile):
00718     self.__lat.GEM.GEMST.tile_0 = tile
00719       
00720   def changetile2(self,tile):
00721     self.__lat.GEM.GEMST.tile_1 = tile
00722 
00723   def changecno1(self,tile):
00724     self.__lat.GEM.GEMST.cno_0 = tile
00725       
00726   def changecno2(self,tile):
00727     self.__lat.GEM.GEMST.cno_1 = tile
00728 
00729   def changetower1(self,id):
00730     self.tower1=id
00731 
00732   def changetower2(self,id):
00733     self.tower2=id
00734 
00735   def doresetcal1(self):
00736     self.__lat.downTEM(self.towerlist[self.tower1]).TIC.cal_lrs_counters=0
00737     self.calcounter11=0
00738     self.calcounter12=0
00739     self.ignorecal1=True
00740     if self.tower1==self.tower2:
00741       self.__lat.downTEM(self.towerlist[self.tower2]).TIC.cal_lrs_counters=0
00742       self.calcounter21=0
00743       self.calcounter22=0
00744       self.ignorecal2=True
00745   def doresetcal2(self):
00746     self.__lat.downTEM(self.towerlist[self.tower2]).TIC.cal_lrs_counters=0
00747     self.calcounter21=0
00748     self.calcounter22=0
00749     self.ignorecal2=True
00750     if self.tower1==self.tower2:
00751       self.__lat.downTEM(self.towerlist[self.tower1]).TIC.cal_lrs_counters=0
00752       self.calcounter11=0
00753       self.calcounter12=0
00754       self.ignorecal1=True
00755   def doresettkr11(self):
00756     self.__lat.downTEM(self.towerlist[self.tower1]).TIC.tkr_lrs_counter_0=0
00757     self.tkrcounter11=0
00758     self.tkrcounter12=0
00759     self.ignoretkr11==True
00760     if self.tower1==self.tower2:
00761       self.__lat.downTEM(self.towerlist[self.tower2]).TIC.tkr_lrs_counter_0=0
00762       self.tkrcounter21=0
00763       self.tkrcounter22=0
00764       self.ignoretkr21==True
00765   def doresettkr12(self):
00766     self.__lat.downTEM(self.towerlist[self.tower1]).TIC.tkr_lrs_counter_1=0
00767     self.tkrcounter13=0
00768     self.tkrcounter14=0
00769     self.ignoretkr12==True
00770     if self.tower1==self.tower2:
00771       self.__lat.downTEM(self.towerlist[self.tower2]).TIC.tkr_lrs_counter_1=0
00772       self.tkrcounter23=0
00773       self.tkrcounter24=0
00774       self.ignoretkr22==True
00775   def doresettkr21(self):
00776     self.__lat.downTEM(self.towerlist[self.tower2]).TIC.tkr_lrs_counter_0=0
00777     self.tkrcounter21=0
00778     self.tkrcounter22=0
00779     self.ignoretkr21==True
00780     if self.tower1==self.tower2:
00781       self.__lat.downTEM(self.towerlist[self.tower1]).TIC.tkr_lrs_counter_0=0
00782       self.tkrcounter11=0
00783       self.tkrcounter12=0
00784       self.ignoretkr11==True
00785   def doresettkr22(self):
00786     self.__lat.downTEM(self.towerlist[self.tower2]).TIC.tkr_lrs_counter_1=0
00787     self.tkrcounter23=0
00788     self.tkrcounter24=0
00789     self.ignoretkr22==True
00790     if self.tower1==self.tower2:
00791       self.__lat.downTEM(self.towerlist[self.tower1]).TIC.tkr_lrs_counter_1=0
00792       self.tkrcounter13=0
00793       self.tkrcounter14=0
00794       self.ignoretkr12==True
00795   def doresettile(self):
00796     self.__lat.GEM.GEMST.tile_counters=0
00797     self.tile_0=0
00798     self.tile_1=0
00799     self.ignoretile=True
00800   def doresetcno(self):
00801     self.__lat.GEM.GEMST.cno_counters=0
00802     self.cno_0=0
00803     self.cno_1=0
00804     self.ignorecno=True
00805   def update(self):
00806     ignoreevent=False
00807   
00808     # read livetime first to sample counters
00809     if self.__ratehaschanged:
00810       self.__timer.changeInterval(self.__samplingrate)
00811       self.__ratehaschanged=False
00812     newtime=time.time()
00813     timebase=self.__lat.GEM.GEMST.timebase
00814     livetime=self.__lat.GEM.GEMST.livetime
00815     sent=self.__lat.GEM.GEMST.sent
00816     validev=self.__ocs.stats_valid_events
00817     discarded=self.__lat.GEM.GEMST.discarded
00818     deadzone=self.__lat.GEM.GEMST.deadzone
00819     prescaled=self.__lat.GEM.GEMST.prescaled
00820     self.cons.conf=self.__lat.GEM.GEMC.configuration&1
00821     timestamp=self.cons.timestamp
00822     newtowerlist=[]
00823     for temid in range(16):
00824       tem=self.__lat.downTEM(temid)
00825       if tem==None: continue
00826       newtowerlist.append(temid)
00827     if newtowerlist!=self.towerlist:
00828       print "configuration has changed"
00829     tile_0=self.__lat.GEM.GEMST.tile_0
00830     tile_1=self.__lat.GEM.GEMST.tile_1
00831     if tile_0!=self.tile1.value():
00832       self.tile1.setValue(tile_0)
00833       self.tile0list=[]
00834     if tile_1!=self.tile2.value():
00835       self.tile2.setValue(tile_1)
00836       self.tile1list=[]
00837     acdcounters=self.__lat.GEM.GEMST.tile_counters
00838     tile_0=acdcounters&0xffff
00839     tile_1=(acdcounters>>16)&0xffff
00840     difftile0=tile_0-self.tile_0
00841     difftile1=tile_1-self.tile_1
00842     self.tile_0=tile_0
00843     self.tile_1=tile_1
00844     cno_0=self.__lat.GEM.GEMST.cno_0
00845     cno_1=self.__lat.GEM.GEMST.cno_1
00846     if cno_0!=self.cno1.value():
00847       self.cno1.setValue(cno_0)
00848       self.cno0list=[]
00849     if cno_1!=self.cno2.value():
00850       self.cno2.setValue(cno_1)
00851       self.cno1list=[]
00852     acdcounters=self.__lat.GEM.GEMST.cno_counters
00853     cno_0=acdcounters&0xffff
00854     cno_1=(acdcounters>>16)&0xffff
00855     diffcno0=cno_0-self.cno_0
00856     diffcno1=cno_1-self.cno_1
00857     self.cno_0=cno_0
00858     self.cno_1=cno_1
00859     
00860     if self.tower1 is not None:
00861       calmask=self.__lat.downTEM(self.towerlist[self.tower1]).TIC.cal_lrs_mask
00862       calmask=(~calmask)&0xffffffffL
00863       if self.maskcal11.getMask()!=calmask&0xff: 
00864         self.maskcal11.setMask(calmask&0xff)
00865         self.calcounterlist11=[]
00866       if self.maskcalh11.getMask()!=(calmask>>8)&0xff: 
00867         self.maskcalh11.setMask((calmask>>8)&0xff)
00868         self.calcounterlist11=[]
00869       if self.maskcal12.getMask()!=(calmask>>16)&0xff: 
00870         self.maskcal12.setMask((calmask>>16)&0xff)
00871         self.calcounterlist12=[]
00872       if self.maskcalh12.getMask()!=(calmask>>24)&0xff: 
00873         self.maskcalh12.setMask((calmask>>24)&0xff)
00874         self.calcounterlist12=[]
00875       tkrmask= self.__lat.downTEM(self.towerlist[self.tower1]).TIC.tkr_out_lrs_mask
00876       tkrmask=(~tkrmask)&0xffff
00877       if self.masktkr11.getMask()!=tkrmask&0xf:
00878         self.masktkr11.setMask(tkrmask&0xf)
00879         self.tkrcounterlist11=[]
00880       if self.masktkr12.getMask()!=(tkrmask>>4)&0xf:
00881         self.masktkr12.setMask((tkrmask>>4)&0xf)
00882         self.tkrcounterlist12=[]
00883       if self.masktkr13.getMask()!=(tkrmask>>8)&0xf:
00884         self.masktkr13.setMask((tkrmask>>8)&0xf)
00885         self.tkrcounterlist13=[]
00886       if self.masktkr14.getMask()!=(tkrmask>>12)&0xf:
00887         self.masktkr14.setMask((tkrmask>>12)&0xf)
00888         self.tkrcounterlist14=[]
00889       calcounter=self.__lat.downTEM(self.towerlist[self.tower1]).TIC.cal_lrs_counters
00890       calcounter11=calcounter&0xffff
00891       calcounter12=(calcounter>>16)&0xffff
00892       tkrcounter0=self.__lat.downTEM(self.towerlist[self.tower1]).TIC.tkr_lrs_counter_0
00893       tkrcounter1=self.__lat.downTEM(self.towerlist[self.tower1]).TIC.tkr_lrs_counter_1
00894       tkrcounter12=tkrcounter0&0xffff
00895       tkrcounter11=(tkrcounter0>>16)&0xffff
00896       tkrcounter14=tkrcounter1&0xffff
00897       tkrcounter13=(tkrcounter1>>16)&0xffff
00898       diffcalcounter11=calcounter11-self.calcounter11
00899       diffcalcounter12=calcounter12-self.calcounter12
00900       self.calcounter11=calcounter11
00901       self.calcounter12=calcounter12
00902       difftkrcounter11=tkrcounter11-self.tkrcounter11
00903       difftkrcounter12=tkrcounter12-self.tkrcounter12
00904       self.tkrcounter11=tkrcounter11
00905       self.tkrcounter12=tkrcounter12
00906       difftkrcounter13=tkrcounter13-self.tkrcounter13
00907       difftkrcounter14=tkrcounter14-self.tkrcounter14
00908       self.tkrcounter13=tkrcounter13
00909       self.tkrcounter14=tkrcounter14
00910     if self.tower2 is not None:
00911       calmask=self.__lat.downTEM(self.towerlist[self.tower2]).TIC.cal_lrs_mask
00912       calmask=(~calmask)&0xffffffffL
00913       if self.maskcal21.getMask()!=calmask&0xff: 
00914         self.maskcal21.setMask(calmask&0xff)
00915         self.calcounterlist21=[]
00916       if self.maskcalh21.getMask()!=(calmask>>8)&0xff: 
00917         self.maskcalh21.setMask((calmask>>8)&0xff)
00918         self.calcounterlist21=[]
00919       if self.maskcal22.getMask()!=(calmask>>16)&0xff: 
00920         self.maskcal22.setMask((calmask>>16)&0xff)
00921         self.calcounterlist22=[]
00922       if self.maskcalh22.getMask()!=(calmask>>24)&0xff: 
00923         self.maskcalh22.setMask((calmask>>24)&0xff)
00924         self.calcounterlist22=[]
00925       tkrmask= self.__lat.downTEM(self.towerlist[self.tower2]).TIC.tkr_out_lrs_mask
00926       tkrmask=(~tkrmask)&0xffff
00927       if self.masktkr21.getMask()!=tkrmask&0xf:
00928         self.masktkr21.setMask(tkrmask&0xf)
00929         self.tkrcounterlist21=[]
00930       if self.masktkr22.getMask()!=(tkrmask>>4)&0xf:
00931         self.masktkr22.setMask((tkrmask>>4)&0xf)
00932         self.tkrcounterlist22=[]
00933       if self.masktkr23.getMask()!=(tkrmask>>8)&0xf:
00934         self.masktkr23.setMask((tkrmask>>8)&0xf)
00935         self.tkrcounterlist23=[]
00936       if self.masktkr24.getMask()!=(tkrmask>>12)&0xf:
00937         self.masktkr24.setMask((tkrmask>>12)&0xf)
00938         self.tkrcounterlist24=[]
00939       calcounter=self.__lat.downTEM(self.towerlist[self.tower2]).TIC.cal_lrs_counters
00940       calcounter21=calcounter&0xffff
00941       calcounter22=(calcounter>>16)&0xffff
00942       tkrcounter0=self.__lat.downTEM(self.towerlist[self.tower2]).TIC.tkr_lrs_counter_0
00943       tkrcounter1=self.__lat.downTEM(self.towerlist[self.tower2]).TIC.tkr_lrs_counter_1
00944       tkrcounter22=tkrcounter0&0xffff
00945       tkrcounter21=(tkrcounter0>>16)&0xffff
00946       tkrcounter24=tkrcounter1&0xffff
00947       tkrcounter23=(tkrcounter1>>16)&0xffff
00948       diffcalcounter21=calcounter21-self.calcounter21
00949       diffcalcounter22=calcounter22-self.calcounter22
00950       self.calcounter21=calcounter21
00951       self.calcounter22=calcounter22
00952       difftkrcounter21=tkrcounter21-self.tkrcounter21
00953       difftkrcounter22=tkrcounter22-self.tkrcounter22
00954       self.tkrcounter21=tkrcounter21
00955       self.tkrcounter22=tkrcounter22
00956       difftkrcounter23=tkrcounter23-self.tkrcounter23
00957       difftkrcounter24=tkrcounter24-self.tkrcounter24
00958       self.tkrcounter23=tkrcounter23
00959       self.tkrcounter24=tkrcounter24
00960 
00961     if self.cons.readlut:
00962       gemsc=self.__lat.GEM.GEMSC
00963       gemmg=self.__lat.GEM.GEMMG
00964       self.cons.readlut=False
00965       self.lut=self.readlut(gemsc)
00966       validengines={}
00967       for it in self.lut.values():
00968         validengines[it]=1
00969       engines=self.getEngines(gemmg,validengines)
00970       for key in engines:
00971         if engines[key]&1<<15:self.inhib[key].setPixmap(self.image0)
00972         else:self.inhib[key].setPixmap(self.image1)
00973         if engines[key]&1<<16:self.calstrobe[key].setPixmap(self.image0)
00974         else: self.calstrobe[key].setPixmap(self.image1)
00975         if engines[key]&1<<19:self.tack[key].setPixmap(self.image0)
00976         else: self.tack[key].setPixmap(self.image1)
00977         if engines[key]&1<<20: self.fourrange[key].setPixmap(self.image0)
00978         else: self.fourrange[key].setPixmap(self.image1)
00979         if engines[key]&1<<21: self.zerosup[key].setPixmap(self.image0)
00980         else: self.zerosup[key].setPixmap(self.image1)
00981         self.prescalelabels[key].setText("%d"%(engines[key]&0xff))
00982     utimediff=newtime-self.__oldtime
00983     self.__oldtime=newtime
00984     if utimediff>1.62:
00985       ignoreevent=True
00986       myLog.debug("No update - Time between samples too long")
00987     if timebase>=self.__timebase:
00988       timediff=timebase-self.__timebase
00989     else:
00990       timediff=timebase+33554432-self.__timebase
00991     self.__timebase=timebase
00992     #if abs(timediff*CLOCKTICK/utimediff-1.) > 0.001:
00993     #  myLog.debug( "Warning! Timebase out of spec")
00994     #  myLog.debug (str(timediff/utimediff*CLOCKTICK))
00995     #  myLog.debug (str(timediff/CLOCKTICK,utimediff))
00996     if self.timestamp==0 and timestamp!=0:
00997       ignoreevent=True
00998     else:
00999       if self.timestamp<timestamp:
01000         evtimediff=timestamp-self.timestamp
01001         self.timeout=newtime
01002       elif self.timestamp==timestamp:
01003         evtimediff=0
01004       else:
01005         evtimediff=timestamp+128-self.timestamp
01006         self.timeout=newtime
01007     self.timestamp=timestamp
01008     tkr=self.cons.tkr
01009     deltatkr=tkr-self.__tkr 
01010     self.__tkr=tkr
01011     callow=self.cons.callow
01012     deltacallow=callow-self.__callow 
01013     self.__callow=callow
01014     calhigh=self.cons.calhigh
01015     deltacalhigh=calhigh-self.__calhigh 
01016     self.__calhigh=calhigh
01017     cno=self.cons.cno
01018     deltacno=cno-self.__cno 
01019     self.__cno=cno
01020     roi=self.cons.roi
01021     deltaroi=roi-self.__roi 
01022     self.__roi=roi
01023     ext=self.cons.ext
01024     deltaext=ext-self.__ext 
01025     self.__ext=ext
01026     periodic=self.cons.periodic
01027     deltaperiodic=periodic-self.__periodic 
01028     self.__periodic=periodic
01029     solicited=self.cons.solicited
01030     deltasolicited=solicited-self.__solicited 
01031     self.__solicited=solicited
01032     consevents=self.cons.events
01033     eventdiff=consevents-self.__consevents
01034     deltatkrvec=[]
01035     deltaroivec=[]
01036     deltacnovec=[]
01037     deltacallowvec=[]
01038     deltacalhighvec=[]
01039     deltaorvec=[]
01040     deltaeng=[]
01041     for i in self.cons.condsum:
01042       self.engnew[self.lut[i]]+=1
01043     for i in range (16):
01044       deltatkrvec.append(self.cons.tkrvector[i]-self.tkrvecold[i])
01045       deltaroivec.append(self.cons.roivector[i]-self.roivecold[i])
01046       deltacnovec.append(self.cons.cnovector[i]-self.cnovecold[i])
01047       deltacallowvec.append(self.cons.callowvector[i]-self.callowvecold[i])
01048       deltacalhighvec.append(self.cons.calhighvector[i]-self.calhighvecold[i])
01049       deltaorvec.append(self.cons.orvector[i]-self.orvecold[i])
01050       deltaeng.append(self.engnew[i]-self.engold[i])
01051     self.tkrvecold=list(self.cons.tkrvector)
01052     self.callowvecold=list(self.cons.callowvector)
01053     self.calhighvecold=list(self.cons.calhighvector)
01054     self.roivecold=list(self.cons.roivector)
01055     self.cnovecold=list(self.cons.cnovector)
01056     self.orvecold=list(self.cons.orvector)
01057     self.engold=list(self.engnew)
01058     self.__consevents=consevents
01059       
01060     if sent>=self.__sent:
01061       sentdiff=sent-self.__sent
01062     else:
01063       sentdiff=sent+65536-self.__sent
01064       ignoreevent=True
01065     self.__sent=sent
01066     validevdiff=validev-self.__validev
01067     self.__validev=validev
01068 
01069     if livetime>=self.__livetime:
01070       livediff=livetime-self.__livetime
01071     else:
01072       livediff=livetime+33554432-self.__livetime
01073     self.__livetime=livetime
01074 
01075     if discarded >=self.__discarded:
01076       discdiff=discarded-self.__discarded
01077     else:
01078       discdiff=discarded+16777216-self.__discarded
01079     self.__discarded=discarded
01080 
01081     if prescaled>=self.__prescaled:
01082       prescalediff=prescaled-self.__prescaled
01083     else:
01084       prescalediff=prescaled+16777216-self.__prescaled
01085     self.__prescaled=prescaled
01086 
01087     if deadzone>=self.__deadzone:
01088       deadzonediff=deadzone-self.__deadzone
01089     else:
01090       deadzonediff=deadzone+65536-self.__deadzone
01091     self.__deadzone=deadzone
01092     
01093     if ignoreevent==False:
01094       diff=0.
01095       #rate
01096       instdiff=0.
01097       if utimediff>0:
01098         diff=listmean(self.__sentlist,float(sentdiff)/utimediff,self.__numsamples)
01099         instdiff=float(sentdiff)/utimediff
01100       self.rate.setText("%.1f Hz"%diff)
01101       self.rate1.bar.displayValue(diff)
01102       self.rate10.bar.displayValue(diff)
01103       self.rate100.bar.displayValue(diff)
01104       self.instrate.setText("%.0f Hz"%instdiff)
01105       self.instrate1.bar.displayValue(instdiff)
01106       self.instrate10.bar.displayValue(instdiff)
01107       self.instrate100.bar.displayValue(instdiff)
01108       # Dead time
01109       deadtime=0.
01110       if utimediff>0:
01111         deadtime=100.*(utimediff/CLOCKTICK-livediff)/utimediff*CLOCKTICK
01112       diff=listmean(self.__livelist,deadtime,self.__numsamples)
01113       if diff<0:diff=0.
01114       self.deadtime.setText("%.2f" % diff+" %")
01115       self.deadtime1.bar.displayValue(diff)
01116       self.deadtime10.bar.displayValue(diff)
01117       self.deadtime100.bar.displayValue(diff)
01118       # Discarded
01119       diff=0.
01120       if utimediff>0.:
01121         diff=listmean(self.__discardedlist,float(discdiff)/utimediff,self.__numsamples)
01122       self.discarded.setText("%.1f Hz"%diff) 
01123       self.discardedb.displaySlidingScaleValue(diff)
01124       #Dead zone
01125       diff=0.
01126       if utimediff>0:
01127         diff=listmean(self.__deadzonelist,float(deadzonediff)/utimediff,self.__numsamples)
01128       self.deadzone.setText("%.1f Hz"%diff)
01129       self.deadzoneb.displaySlidingScaleValue(diff)
01130       # Prescaled
01131       diff=0.
01132       if utimediff>0:
01133         diff=listmean(self.__prescaledlist,float(prescalediff)/utimediff,self.__numsamples)
01134       self.prescaled.setText("%.1f Hz"%diff)
01135       self.prescaledb.displaySlidingScaleValue(diff)
01136       #counters
01137       diff=0.
01138       if tile_0==0xffff:
01139         self.barwtile1.setTitle("Full")
01140         self.barwtile1.bar.displayValue(100001)
01141       elif utimediff>0 and not self.ignoretile:
01142         diff=listmean(self.tile0list,float(difftile0)/utimediff,self.__numsamples)
01143       self.barwtile1.setTitle("%d"%(diff+.5))
01144       self.barwtile2.displaySlidingScaleValue(diff)
01145       diff=0.
01146       if tile_1==0xffff:
01147         self.barwtile2.setTitle("Full")
01148         self.barwtile2.bar.displayValue(100001)
01149       elif utimediff>0 and not self.ignoretile:
01150         diff=listmean(self.tile1list,float(difftile1)/utimediff,self.__numsamples)
01151       self.barwtile2.setTitle("%d"%(diff+.5))
01152       self.barwtile2.displaySlidingScaleValue(diff)
01153       diff=0.
01154       if cno_0==0xffff:
01155         self.barwcno1.setTitle("Full")
01156         self.barwcno1.bar.displayValue(100001)
01157       elif utimediff>0 and not self.ignorecno:
01158         diff=listmean(self.cno0list,float(diffcno0)/utimediff,self.__numsamples)
01159       self.barwcno1.setTitle("%d"%(diff+.5))
01160       self.barwcno2.displaySlidingScaleValue(diff)
01161       diff=0.
01162       if cno_1==0xffff:
01163         self.barwcno2.setTitle("Full")
01164         self.barwcno2.bar.displayValue(100001)
01165       elif utimediff>0 and not self.ignorecno:
01166         diff=listmean(self.cno1list,float(diffcno1)/utimediff,self.__numsamples)
01167       self.barwcno2.setTitle("%d"%(diff+.5))
01168       self.barwcno2.displaySlidingScaleValue(diff)
01169       if self.tower1 is not None:
01170         diff=0.
01171         if calcounter11==0xffff:
01172           self.barwcal11.setTitle("Full")
01173           self.barwcal11.bar.displayValue(100001)
01174         elif utimediff>0 and not self.ignorecal1:
01175           diff=listmean(self.calcounterlist11,float(diffcalcounter11)/utimediff,self.__numsamples)
01176           self.barwcal11.setTitle("%d"%(diff+.5))
01177           self.barwcal11.displaySlidingScaleValue(diff)
01178         diff=0.
01179         if calcounter12==0xffff:
01180           self.barwcal12.setTitle("Full")
01181           self.barwcal12.bar.displayValue(100001)
01182         elif utimediff>0 and not self.ignorecal1:
01183           diff=listmean(self.calcounterlist12,float(diffcalcounter12)/utimediff,self.__numsamples)
01184           self.barwcal12.setTitle("%d"%(diff+.5))
01185           self.barwcal12.displaySlidingScaleValue(diff)
01186         diff=0.
01187         if tkrcounter11==0xffff:
01188           self.barwtkr11.setTitle("Full")
01189           self.barwtkr11.bar.displayValue(100001)
01190         elif utimediff>0 and not self.ignoretkr11:
01191           diff=listmean(self.tkrcounterlist11,float(difftkrcounter11)/utimediff,self.__numsamples)
01192           self.barwtkr11.setTitle("%d"%(diff+.5))
01193           self.barwtkr11.displaySlidingScaleValue(diff)
01194         diff=0.
01195         if tkrcounter12==0xffff:
01196           self.barwtkr12.setTitle("Full")
01197           self.barwtkr12.bar.displayValue(100001)
01198         elif utimediff>0 and not self.ignoretkr11:
01199           diff=listmean(self.tkrcounterlist12,float(difftkrcounter12)/utimediff,self.__numsamples)
01200           self.barwtkr12.setTitle("%d"%(diff+.5))
01201           self.barwtkr12.displaySlidingScaleValue(diff)
01202         diff=0.
01203         if tkrcounter13==0xffff:
01204           self.barwtkr13.setTitle("Full")
01205           self.barwtkr13.bar.displayValue(100001)
01206         elif utimediff>0 and not self.ignoretkr12:
01207           diff=listmean(self.tkrcounterlist13,float(difftkrcounter13)/utimediff,self.__numsamples)
01208           self.barwtkr13.setTitle("%d"%(diff+.5))
01209           self.barwtkr13.displaySlidingScaleValue(diff)
01210         diff=0.
01211         if tkrcounter14==0xffff:
01212           self.barwtkr14.setTitle("Full")
01213           self.barwtkr14.bar.displayValue(100001)
01214         elif utimediff>0 and not self.ignoretkr12:
01215           diff=listmean(self.tkrcounterlist14,float(difftkrcounter14)/utimediff,self.__numsamples)
01216           self.barwtkr14.setTitle("%d"%(diff+.5))
01217           self.barwtkr14.displaySlidingScaleValue(diff)
01218       if self.tower2 is not None:
01219         diff=0.
01220         if calcounter21==0xffff:
01221           self.barwcal21.setTitle("Full")
01222           self.barwcal21.bar.displayValue(100001)
01223         elif utimediff>0 and not self.ignorecal2:
01224           diff=listmean(self.calcounterlist21,float(diffcalcounter21)/utimediff,self.__numsamples)
01225           self.barwcal21.setTitle("%d"%(diff+.5))
01226           self.barwcal21.displaySlidingScaleValue(diff)
01227         diff=0.
01228         if calcounter22==0xffff:
01229           self.barwcal22.setTitle("Full")
01230           self.barwcal22.bar.displayValue(100001)
01231         elif utimediff>0 and not self.ignorecal2:
01232           diff=listmean(self.calcounterlist22,float(diffcalcounter22)/utimediff,self.__numsamples)
01233           self.barwcal22.setTitle("%d"%(diff+.5))
01234           self.barwcal22.displaySlidingScaleValue(diff)
01235         diff=0.
01236         if tkrcounter21==0xffff:
01237           self.barwtkr21.setTitle("Full")
01238           self.barwtkr21.bar.displayValue(100001)
01239         elif utimediff>0 and not self.ignoretkr21:
01240           diff=listmean(self.tkrcounterlist21,float(difftkrcounter21)/utimediff,self.__numsamples)
01241           self.barwtkr21.setTitle("%d"%(diff+.5))
01242           self.barwtkr21.displaySlidingScaleValue(diff)
01243         diff=0.
01244         if tkrcounter22==0xffff:
01245           self.barwtkr22.setTitle("Full")
01246           self.barwtkr22.bar.displayValue(100001)
01247         elif utimediff>0 and not self.ignoretkr21:
01248           diff=listmean(self.tkrcounterlist22,float(difftkrcounter22)/utimediff,self.__numsamples)
01249           self.barwtkr22.setTitle("%d"%(diff+.5))
01250           self.barwtkr22.displaySlidingScaleValue(diff)
01251         diff=0.
01252         if tkrcounter23==0xffff:
01253           self.barwtkr23.setTitle("Full")
01254           self.barwtkr23.bar.displayValue(100001)
01255         elif utimediff>0 and not self.ignoretkr22:
01256           diff=listmean(self.tkrcounterlist23,float(difftkrcounter23)/utimediff,self.__numsamples)
01257           self.barwtkr23.setTitle("%d"%(diff+.5))
01258           self.barwtkr23.displaySlidingScaleValue(diff)
01259         diff=0.
01260         if tkrcounter24==0xffff:
01261           self.barwtkr24.setTitle("Full")
01262           self.barwtkr24.bar.displayValue(100001)
01263         elif utimediff>0 and not self.ignoretkr22:
01264           diff=listmean(self.tkrcounterlist24,float(difftkrcounter24)/utimediff,self.__numsamples)
01265           self.barwtkr24.setTitle("%d"%(diff+.5))
01266           self.barwtkr24.displaySlidingScaleValue(diff)
01267        
01268       self.ignoretile=False
01269       self.ignorecno=False
01270       self.ignorecal1=False
01271       self.ignoretkr11=False
01272       self.ignoretkr12=False
01273       self.ignorecal2=False
01274       self.ignoretkr21=False
01275       self.ignoretkr22=False
01276     
01277       if eventdiff>0:
01278         factor2=float(sentdiff)/float(eventdiff)
01279       factor=0.
01280       if eventdiff>0:
01281         factor=float(validevdiff)/float(eventdiff)
01282         diff=0.
01283       factor=1.
01284       if evtimediff>0:
01285         diff=listmean(self.__tkrlist,float(deltatkr)/evtimediff*factor,self.__numsamples)
01286         self.multibar1.displaySlidingScaleValue(1,diff)
01287         self.multibar1.setBarTitle(1,"%d"%(diff+.5))
01288         diff=listmean(self.__callowlist,float(deltacallow)/evtimediff*factor,self.__numsamples)
01289         self.multibar1.displaySlidingScaleValue(2,diff)
01290         self.multibar1.setBarTitle(2,"%d"%(diff+.5))
01291         diff=listmean(self.__calhighlist,float(deltacalhigh)/evtimediff*factor,self.__numsamples)
01292         self.multibar1.displaySlidingScaleValue(3,diff)
01293         self.multibar1.setBarTitle(3,"%d"%(diff+.5))
01294         diff=listmean(self.__roilist,float(deltaroi)/evtimediff*factor,self.__numsamples)
01295         self.multibar1.displaySlidingScaleValue(0,diff)
01296         self.multibar1.setBarTitle(0,"%d"%(diff+.5))
01297         diff=listmean(self.__cnolist,float(deltacno)/evtimediff*factor,self.__numsamples)
01298         self.multibar1.displaySlidingScaleValue(4,diff)
01299         self.multibar1.setBarTitle(4,"%d"%(diff+.5))
01300         diff=listmean(self.__periodiclist,float(deltaperiodic)/evtimediff*factor,self.__numsamples)
01301         self.multibar1.displaySlidingScaleValue(5,diff)
01302         self.multibar1.setBarTitle(5,"%d"%(diff+.5))
01303         diff=listmean(self.__solicitedlist,float(deltasolicited)/evtimediff*factor,self.__numsamples)
01304         self.multibar1.displaySlidingScaleValue(6,diff)
01305         self.multibar1.setBarTitle(6,"%d"%(diff+.5))
01306         diff=listmean(self.__extlist,float(deltaext)/evtimediff*factor,self.__numsamples)
01307         self.multibar1.displaySlidingScaleValue(7,diff)
01308         self.multibar1.setBarTitle(7,"%d"%(diff+.5))
01309         diff0=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]
01310         diff1=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]
01311         diff2=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]
01312         diff3=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]
01313         diff4=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]
01314         diff5=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]
01315         diff6=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]
01316         for i in range(16):
01317           diff0[i]=listmean(self.tkrveclist[i],float(deltatkrvec[i])/evtimediff*factor,self.__numsamples)
01318           diff1[i]=listmean(self.roiveclist[i],float(deltaroivec[i])/evtimediff*factor,self.__numsamples)
01319           diff5[i]=listmean(self.cnoveclist[i],float(deltacnovec[i])/evtimediff*factor,self.__numsamples)
01320           diff2[i]=listmean(self.callowveclist[i],float(deltacallowvec[i])/evtimediff*factor,self.__numsamples)
01321           diff3[i]=listmean(self.calhighveclist[i],float(deltacalhighvec[i])/evtimediff*factor,self.__numsamples)
01322           diff4[i]=listmean(self.orveclist[i],float(deltaorvec[i])/evtimediff*factor,self.__numsamples)
01323           diff6[i]=listmean(self.englist[i],float(deltaeng[i])/evtimediff*factor,self.__numsamples)
01324           self.multibar2.displaySlidingScaleValue(i,diff4[i])
01325           self.multibartower.displaySlidingScaleValue(i,diff4[i])
01326           self.multibartkr.displaySlidingScaleValue(i,diff0[i])
01327           self.multibarcallow.displaySlidingScaleValue(i,diff2[i])
01328           self.multibarcalhigh.displaySlidingScaleValue(i,diff3[i])
01329           self.multibarroi.displaySlidingScaleValue(i,diff1[i])
01330           if i < 12:
01331             self.multibarcno.displaySlidingScaleValue(i,diff5[i])
01332           self.multibareng.displaySlidingScaleValue(i,diff6[i])
01333           self.engmeters[i].setText("%d"%(diff6[i]+.5))
01334       elif newtime-self.timeout>TIMEOUT:
01335         self.timestamp=0
01336         self.__tkrlist=[]
01337         self.multibar1.bars[1].displayValue(0)
01338         self.multibar1.setBarTitle(1,"%d"%0)
01339         self.__callowlist=[]
01340         self.multibar1.bars[2].displayValue(0)
01341         self.multibar1.setBarTitle(2,"%d"%0)
01342         self.__calhighlist=[]
01343         self.multibar1.bars[3].displayValue(0)
01344         self.multibar1.setBarTitle(3,"%d"%0)
01345         self.__roilist=[]
01346         self.multibar1.bars[0].displayValue(0)
01347         self.multibar1.setBarTitle(0,"%d"%0)
01348         self.__cnolist=[]
01349         self.multibar1.bars[4].displayValue(0)
01350         self.multibar1.setBarTitle(4,"%d"%0)
01351         self.__periodiclist=[]
01352         self.multibar1.bars[5].displayValue(0)
01353         self.multibar1.setBarTitle(5,"%d"%0)
01354         self.__solicitedlist=[]
01355         self.multibar1.bars[6].displayValue(0)
01356         self.multibar1.setBarTitle(6,"%d"%0)
01357         self.__extlist=[]
01358         self.multibar1.bars[7].displayValue(0)
01359         self.multibar1.setBarTitle(7,"%d"%0)
01360         for i in range(16):
01361           self.tkrveclist[i]=[]
01362           self.roiveclist[i]=[]
01363           self.cnoveclist[i]=[]
01364           self.callowveclist[i]=[]
01365           self.calhighveclist[i]=[]
01366           self.orveclist[i]=[]
01367           self.englist[i]=[]
01368           self.multibar2.bars[i].displayValue(0)
01369           self.multibartower.bars[i].displayValue(0)
01370           self.multibartkr.bars[i].displayValue(0)
01371           self.multibarcallow.bars[i].displayValue(0)
01372           self.multibarcalhigh.bars[i].displayValue(0)
01373           self.multibarroi.bars[i].displayValue(0)
01374           if i < 12:
01375             self.multibarcno.bars[i].displayValue(0)
01376           self.multibareng.bars[i].displayValue(0)
01377           self.engmeters[i].setText("%d"%(0))
01378           
01379       #use the results of the consumer
01380       win=self.__lat.GEM.GEMW.window_width
01381       if win !=self.__window:
01382         self.__window=win
01383         self.cons.timematrix=None
01384         self.cons.winwidth=win
01385         self.timehisto.removeAllHistos()
01386         self.timehisto.setup(2*self.__window+1,-self.__window-.5,self.__window+.5,False,False)
01387         self.timehisto.bds=10
01388         self.timehisto.boxwidth=.25
01389         self.timehisto.xaxislabel.setText("timing in clock ticks of 50 ns")
01390         self.timehisto.addHisto("ROI","black",0,1,self.roion)
01391         self.timehisto.setHistoLabel("ROI","ROI")
01392         self.timehisto.addHisto("TKR","blue",0,1,self.tkron)
01393         self.timehisto.setHistoLabel("TKR","TKR")
01394         self.timehisto.addHisto("CALlow","red",0,1,self.callowon)
01395         self.timehisto.setHistoLabel("CALlow","CAL low")
01396         self.timehisto.addHisto("CALhigh","orange",0,1,self.calhighon)
01397         self.timehisto.setHistoLabel("CALhigh","CAL high")
01398         self.timehisto.addHisto("CNO","magenta",0,1,self.cnoon)
01399         self.timehisto.setHistoLabel("CNO","CNO")
01400         self.timehisto.addHisto("EXT","green",0,1,self.exton)
01401         self.timehisto.setHistoLabel("EXT","External")
01402         self.timehisto.update()
01403         self.timehisto.drawLabels()
01404       if self.cons.resethistos==True:
01405         self.cons.resethistos=False
01406         self.histo.resetAllHistos()
01407         self.timehisto.resetAllHistos()
01408       for ti in self.cons.deltawtime:
01409         self.histo.fill("deltawtime",ti)
01410       for ti in self.cons.deltatime:
01411         self.histo.fill("deltaetime",ti)
01412       self.histo.updateHisto()
01413       #consumer fills histo
01414       self.timehisto.updateHisto()
01415       self.cons.resetWindowData()
01416           
01417   def changeRate(self,rate):
01418     rates=[1.5,1.,0.5,0.2,0.1]
01419     self.__samplingrate=rates[rate]*1000
01420     self.__ratehaschanged=True
01421 
01422   def changeSampling(self,sampling):
01423     sample=[100,50,20,10,5,2,1]
01424     self.__numsamples=sample[sampling]
01425     
01426   def setReference(self,ref):
01427     self.ref=ref
01428     self.cons.ref=ref
01429     self.timehisto.resetAllHistos()
01430     self.timehisto.resetlin()
01431     self.cons.resetWindowData()
01432     self.roitime.setChecked(0)
01433     self.tkrtime.setChecked(0)
01434     self.callowtime.setChecked(0)
01435     self.calhightime.setChecked(0)
01436     self.cnotime.setChecked(0)
01437     self.exttime.setChecked(0)
01438     self.cons.reloadData()
01439     
01440   def setROI(self,onoff):
01441     if onoff == True:
01442       if self.ref==0:
01443         self.roitime.setChecked(0)
01444       else:
01445         self.timehisto.showHisto("ROI")
01446         self.roion=True
01447         self.timehisto.update()
01448     else:
01449       self.timehisto.hideHisto("ROI")
01450       self.roion=False
01451       self.timehisto.update()
01452   def setTKR(self,onoff):
01453     if onoff == True:
01454       if self.ref==1:
01455         self.tkrtime.setChecked(0)
01456       else:
01457         self.timehisto.showHisto("TKR")
01458         self.tkron=True
01459         self.timehisto.update()
01460     else:
01461       self.timehisto.hideHisto("TKR")
01462       self.tkron=False
01463       self.timehisto.update()
01464   def setCALlow(self,onoff):
01465     if onoff == True:
01466       if self.ref==2:
01467         self.callowtime.setChecked(0)
01468       else:
01469         self.timehisto.showHisto("CALlow")
01470         self.callowon=True
01471         self.timehisto.update()
01472     else:
01473       self.timehisto.hideHisto("CALlow")
01474       self.callowon=False
01475       self.timehisto.update()
01476     pass
01477   def setCALhigh(self,onoff):
01478     if onoff == True:
01479       if self.ref==3:
01480         self.calhightime.setChecked(0)
01481       else:
01482         self.timehisto.showHisto("CALhigh")
01483         self.calhighon=True
01484         self.timehisto.update()
01485     else:
01486       self.timehisto.hideHisto("CALhigh")
01487       self.calhighon=False
01488       self.timehisto.update()
01489     pass
01490   def setCNO(self,onoff):
01491     if onoff == True:
01492       if self.ref==4:
01493         self.cnotime.setChecked(0)
01494       else:
01495         self.timehisto.showHisto("CNO")
01496         self.cnoon=True
01497         self.timehisto.update()
01498     else:
01499       self.timehisto.hideHisto("CNO")
01500       self.cnoon=False
01501       self.timehisto.update()
01502     pass
01503   def setEXT(self,onoff):
01504     if onoff == True:
01505       if self.ref==5:
01506         self.exttime.setChecked(0)
01507       else:
01508         self.timehisto.showHisto("EXT")
01509         self.exton=True
01510         self.timehisto.update()
01511     else:
01512       self.timehisto.hideHisto("EXT")
01513       self.exton=False
01514       self.timehisto.update()
01515     pass
01516   def closeEvent(self,e):
01517     self.stopthethread()
01518     e.accept()
01519   def stopthethread(self):
01520     myLog.debug( "terminating consumer")
01521     self.cons.exitConsumer()
01522     self.consthread.wait()
01523   def resizeEvent(self,rev):
01524     if self.__firstresize==False:
01525       self.__theheight=rev.oldSize().height()
01526       self.__thewidth=rev.oldSize().width()
01527       self.__firstresize=True
01528   def readlut(self,gemsc):
01529     cond=[]
01530     cond.append(gemsc.conditions_00_07)
01531     cond.append(gemsc.conditions_08_0f)
01532     cond.append(gemsc.conditions_10_17)
01533     cond.append(gemsc.conditions_18_1f)
01534     cond.append(gemsc.conditions_20_27)
01535     cond.append(gemsc.conditions_28_2f)
01536     cond.append(gemsc.conditions_30_37)
01537     cond.append(gemsc.conditions_38_3f)
01538     cond.append(gemsc.conditions_40_47)
01539     cond.append(gemsc.conditions_48_4f)
01540     cond.append(gemsc.conditions_50_57)
01541     cond.append(gemsc.conditions_58_5f)
01542     cond.append(gemsc.conditions_60_67)
01543     cond.append(gemsc.conditions_68_6f)
01544     cond.append(gemsc.conditions_70_77)
01545     cond.append(gemsc.conditions_78_7f)
01546     cond.append(gemsc.conditions_80_87)
01547     cond.append(gemsc.conditions_88_8f)
01548     cond.append(gemsc.conditions_90_97)
01549     cond.append(gemsc.conditions_98_9f)
01550     cond.append(gemsc.conditions_a0_a7)
01551     cond.append(gemsc.conditions_a8_af)
01552     cond.append(gemsc.conditions_b0_b7)
01553     cond.append(gemsc.conditions_b8_bf)
01554     cond.append(gemsc.conditions_c0_c7)
01555     cond.append(gemsc.conditions_c8_cf)
01556     cond.append(gemsc.conditions_d0_d7)
01557     cond.append(gemsc.conditions_d8_df)
01558     cond.append(gemsc.conditions_e0_e7)
01559     cond.append(gemsc.conditions_e8_ef)
01560     cond.append(gemsc.conditions_f0_f7)
01561     cond.append(gemsc.conditions_f8_ff)
01562     lut={}
01563     j=0
01564     for co in cond:
01565       for i in range(8):
01566         lut[j]=(co>>(i*4))&0xf
01567         j+=1
01568     return lut
01569 
01570   def getEngines(self,gemmg,val):
01571     engall=[]
01572     engall.append(gemmg.engine_0)
01573     engall.append(gemmg.engine_1)
01574     engall.append(gemmg.engine_2)
01575     engall.append(gemmg.engine_3)
01576     engall.append(gemmg.engine_4)
01577     engall.append(gemmg.engine_5)
01578     engall.append(gemmg.engine_6)
01579     engall.append(gemmg.engine_7)
01580     engall.append(gemmg.engine_8)
01581     engall.append(gemmg.engine_9)
01582     engall.append(gemmg.engine_a)
01583     engall.append(gemmg.engine_b)
01584     engall.append(gemmg.engine_c)
01585     engall.append(gemmg.engine_d)
01586     engall.append(gemmg.engine_e)
01587     engall.append(gemmg.engine_f)
01588     res={}
01589     for a in val.keys():
01590       res[a]=engall[a]
01591     return res
01592     
01593 def disconnectcmdcli():
01594   myLog.debug( "Disconnecting command client" )
01595   cmd.disconnect()
01596 
01597 if __name__ == "__main__":
01598   from LATTE.client.gOptions import Options
01599   from LATTE.client.gCmdCli  import CmdCli
01600   from LATTE.database.gLAT   import GLAT
01601   from LATTE.database.gOCS   import GOCS
01602 
01603   options = Options(['cmdserver', 'schema'],['nevents','server','infile','rate'])
01604   try:
01605     options.parse()
01606   except Exception, msg:
01607     options.usage(str(msg))
01608     sys.exit(1)
01609   if options.infile==None and options.server==None:
01610     sys.exit(1)
01611   cmd = CmdCli()
01612   cmd.connect(options.cmdserver)
01613 
01614   lat = GLAT(cmd)
01615   ocs = GOCS(cmd)
01616   lat.readSchema(options.schema)
01617 
01618     
01619   
01620 
01621   a = QApplication(sys.argv)
01622   QObject.connect(a,SIGNAL("lastWindowClosed()"),a,SLOT("quit()"))
01623   QObject.connect(a,SIGNAL("aboutToQuit()"),disconnectcmdcli)
01624   w = trgDisplayImpl(lat,ocs,options.server,options.infile)
01625   a.setMainWidget(w,)
01626   #QObject.connect(a,SIGNAL("aboutToQuit()"),w.stopthethread)
01627   w.show()
01628   a.exec_loop()

Generated on Fri Jul 21 13:26:33 2006 for LATTE R04-12-00 by doxygen 1.4.3