Пример #1
0
  def __init__(self, vb):
    self.vb=vb
    self.tl=None
    self.getbs()
    #self.roc=0
    warning="""Do not forget to set Cal. flag and ROC bits on right FO
in FOs/Cluster window
"""
    print warning; self.vb.io.write(warning)
    if self.tl:
      myw.RiseToplevel(self.tl)
    else:
      #self.tl=Toplevel(vb.master)
      self.tl=myw.NewToplevel("Test class")
    self.fbusy= myw.MywFrame(self.tl,side="top")   # busys frame
    self.fbcnbcm= myw.MywFrame(self.tl,side="top") # entries frame
    self.fcq= myw.MywFrame(self.tl,side="top")   # check/quit
    self.busys=myw.MywBits(self.fbusy,label="RO flags",
      defval= self.tcstatus, 
      helptext="""RO Flags:
explanation later...
""",
    bits=[
        ("ClusterBUSY",0),
        ("PPreq",0),
        ("L0req",0),
        ("L0ack",0),
        ("ClassBUSY",0),
        ("L1ack",0),
        ("L2Rack",0),
        ("L2Aack",0)],
      side="top")
    self.rwflags=myw.MywBits(self.fbusy,label="RW flags",
      defval= self.tcset, cmd=self.modRWflags,
      helptext="""RW Flags:
Choosen Flgas (red) are set to '1' which means:
  -> don't care for VETOs flags (bcm*, PFveto)
  -> CAL or SYNCH triggers for 'non-veto' flags
Notes:
1. When CAL flag is set, SYNCH flag is set automatically too and
   PP is generated ib BC 128 (the final exact shift is set on TTCvi)
2. BCmask (bcm1..bcm4) flags are ignored for SYNCH triggers -i.e.
   SYNCH triggers can be issued in any BC
3. The FO and INT boards are not programmed. For CAL trigger,
   corresponding FO should be flagged with CalFlag and Test class (T)
   has to be set for detector(s) which are supposed to get SW trigger.
   INT board: word INT_TC_SET should be correctly set with
              RoC and CalFlag for CTP readout.
""",
      bits=[("bc0",1), ("bc1",1), ("bc2",1), ("bc3",1), ("bc4",1),
        ("bc5",1), ("bc6",1), ("bc7",1), ("bc8",1), ("bc9",1),
        ("bc10",1), ("bc11",1),
        "SYNCH  -off ->ASYNCHRONOUS trigger",
        "CAL    -off ->not calibration trigger",
        "bcm1", "bcm2", "bcm3", "bcm4",
        "L0 PFveto -P/F protection veto",
        "L1 PFveto -P/F protection veto",
        "L2 PFveto -P/F protection veto",],
      side="top")
    self.bbcn= myw.MywEntry(self.fbcnbcm,label="BC number",
      helptext="""BC number. Relevant only for synchronous triggers.
Valid values are: 0..3563
3563:last BC in the Orbit
0:   1st BC in the Orbit. If L0_BCOFFSET is set to 0, it corresponds
     to BC 3 when counted from Orbit signal. 
     Or, set L0_BCOFFSET=3562 to have numbering conforming with Orbit signal.
""",
      side="left", bind='lr', cmdlabel=self.bcmod,
      defvalue= str(self.tcset&0xfff))
      # Commented, FOs are managed in FOs/Clusters window.
    self.broc= """myw.MywEntry(self.fbcnbcm,label="ROC",
      helptext="4 ROC bits. The combinations with most significant one (0x8) set to 1 are reserved for CTP use.
      side="left", bind='lr', cmdlabel=self.brocmod,
      defvalue= str(self.roc&0xf))"""
    self.detectorsw=myw.MywBits(self.fbusy,label="Detectors",
      defval= self.detectors, cmd=self.moddetectors,
      helptext="""Detectors: 1-24, (DAQdet numbers). The set choosen here
is writen to L2_TCSET word. BUSY board is not programmed.
""",
      bits=["1","2","3","4","5","6","7","8","9","10","11","12","13","14","15","16","17","18","19","20","21","22","23","24"],
      side="top")
    self.butstart=myw.MywButton(self.fcq, label="Generate\nsw. trigger",
      helptext="""Clear flags and generate SW trigger.
Only L0_TCCLEAR (clear flags) and L0_TCSET (generate) written.""",
      side="left",cmd=self.gensw)
    self.butssmstart=myw.MywButton(self.fcq, label="Start SSM+\nsw. trigger",
      helptext="""Clear flags, start L0-SSM (27ms) in outmon mode, 
and generate SW trigger""",
      side="left",cmd= myw.curry(self.gensw, "1"))
    self.butcheck=myw.MywButton(self.fcq, label="Check\nflags",
      helptext="Check L0_TCSTATUS register",side="left",cmd=self.checkbs)
    self.butclear=myw.MywButton(self.fcq, label="Clear\nflags",
      helptext="Clear L0_TCSTATUS register",side="left",cmd=self.clear)
    self.butquit=myw.MywButton(self.fcq, label="Quit",
      helptext="QUIT this window", side="right",cmd=self.quitcb)
Пример #2
0
  def __init__(self,vb):
    self.vb=vb
    self.sigfdir= os.environ['VMECFDIR'] +"/CFG/ctp/ssmsigs/"
    workfdir= os.environ['VMECFDIR'] +"/WORK/"
    self.tl= myw.NewToplevel("SSM browser")
    self.basebc=0
    self.savedsigs=[]   # list of saved signals
    self.fsigs= myw.MywFrame(self.tl,side=TOP,relief=FLAT)  # signals frame
    self.fbuts= myw.MywFrame(self.tl,side=TOP,relief=FLAT)  # contr. buttons frame
    #self.sms=[] done in findAllSMS()
    self.findAllSMS()   # fill in self.sms (the copy of sms from ssm.c)
    self.ssmboards=[]   #items for BSnames.ssmboards
    self.dossmboards()
    # find SSMs with highest syncflag:
    self.syncflag=None   # STRING
    self.sigs=[]; self.findSynced()   # only relevant SSMs
    self.newsigbut= myw.MywButton(self.fbuts, label="Add new signal",
      cmd=self.addnewsig, side=LEFT, helptext="""
Add new signal:
The new signal widget is created in SSMbrowser window.
The SSM and its bit can be choosen by 2 left most buttons.
The SSM can be choosen from boards, from which SSM was read -
i.e. unsynchronised SSMs can be viewed too.
""")
    self.refreshbut= myw.MywButton(self.fbuts, label="Refresh shown signals",
      cmd=self.refreshsigs, side=LEFT, helptext="""
Redraw the signals on the screen. Note: SSM on the board is not read
into computer memory -the refresh is done only from computer memory
""")
    self.savebut= myw.MywButton(self.fbuts, label="Save shown signals",
      cmd=self.savesigs, side=LEFT, helptext="""
Save choosen boards/bits names for future restore with new instance 
of SSMbrowser and pressing Restore button
""")
    self.restorebut= myw.MywButton(self.fbuts, label="Restore signals",
      cmd=self.restoresigs, side=LEFT, helptext="""
Restore shown signals from file created before by 'Save shown signals'
button.
""")
    llbut= myw.MywButton(self.fbuts, label="<<",
      cmd=myw.curry(self.shiftsigs,0), side=LEFT)
    lbut= myw.MywButton(self.fbuts, label="<",
      cmd=myw.curry(self.shiftsigs,-100), side=LEFT)
    rbut= myw.MywButton(self.fbuts, label=">",
      cmd=myw.curry(self.shiftsigs,100), side=LEFT)
    self.bcent= myw.MywEntry(self.fbuts, label="bc:", 
      defvalue=str(self.basebc),bind='lr',side=LEFT, 
      cmdlabel=self.bcmodified, helptext="""
0 corresponds to synchronised SSM beginning (if more synced SSM
are available)
""")
    synctxt='SyncFlag:'+self.syncflag+' SSMs:'
    for nt in self.sigs:
      ix= eval(nt.ssmix)
      #print "bla1:", type(ix), ix
      #print "bla:", type(nt.ssmix), type(self.sms[ix]), ix
      synctxt= synctxt+ ' '+nt.ssmix+ '-' + self.sms[ix][0]
    self.synclab= myw.MywLabel(self.fbuts, label=synctxt,side=LEFT,
      helptext="""
Highest syncflag (has to be >0 for synced boards) and
the numbers-boardnames of boards with synchronised SSMs.
""")