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()