def get_detector(prefix, kind=None, label=None, **kws): """returns best guess of which Detector class to use Mca, MultiMca, Motor, Scaler, Simple based on kind and/or record type. """ dtypes = {'scaler': ScalerDetector, 'motor': MotorDetector, 'area': AreaDetector, 'mca': McaDetector, 'med': MultiMcaDetector, 'multimca': MultiMcaDetector, # 'xspress3': Xspress3Detector, None: SimpleDetector} if kind is None: if prefix.endswith('.VAL'): prefix = prefix[-4] rtyp = caget("%s.RTYP" % prefix) if rtyp in ('motor', 'mca', 'scaler'): kind = rtyp else: kind = kind.lower() builder = dtypes.get(kind, SimpleDetector) return builder(prefix, label=label, **kws)
def __init__(self, pvname, label=None, array=None, units=None, extra_pvs=None, **kws): Saveable.__init__(self, pvname, label=label, units=units, array=array, extra_pvs=extra_pvs, **kws) if isinstance(pvname, PV): self.pv = pvname else: self.pv = PV(pvname) self.pv.connect() self.units = units if self.pv.connected: self.pv.get_ctrlvars() if units is None: self.units = self.pv.units self.label = label if label is None and self.pv.connected: desc = pvname if '.' in pvname: idot = pvname.index('.') descpv = pvname[:idot] + '.DESC' else: descpv = pvname + '.DESC' try: desc = caget(descpv) except: pass self.label = desc if array is None: array = [] self.array = array if extra_pvs is None: extra_pvs = {} self.extra_pvs = extra_pvs
def get_detector(prefix, kind=None, label=None, **kws): """returns best guess of which Detector class to use Mca, MultiMca, Motor, Scaler, Simple based on kind and/or record type. """ dtypes = { "scaler": ScalerDetector, "motor": MotorDetector, "area": AreaDetector, "mca": McaDetector, "med": MultiMcaDetector, "multimca": MultiMcaDetector, "xspress3": Xspress3Detector, None: SimpleDetector, } if kind is None: if prefix.endswith(".VAL"): prefix = prefix[-4] rtyp = caget("%s.RTYP" % prefix) if rtyp in ("motor", "mca", "scaler"): kind = rtyp else: kind = kind.lower() builder = dtypes.get(kind, SimpleDetector) return builder(prefix, label=label, **kws)
def __init__(self, prefix, rtype=None, fields=None, outpvs=None): if prefix.endswith('.VAL'): prefix = prefix[-4] self.prefix = prefix if rtype is not None: if caget("%s.RTYP" % self.prefix) != rtype: raise TypeError(self.invalid_device_msg) self.outpvs = outpvs self.set_counters(fields)
def __init__(self, prefix, outpvs=None, nchan=8, use_calc=False, use_unlabeled=False): DeviceCounter.__init__(self, prefix, rtype="scaler", outpvs=outpvs) prefix = self.prefix fields = [(".T", "CountTime")] extra_pvs = [] nchan = int(nchan) for i in range(1, nchan + 1): label = caget("%s.NM%i" % (prefix, i)) if len(label) > 0 or use_unlabeled: suff = ".S%i" % i if use_calc: suff = "_calc%i.VAL" % i extra_pvs.append(("Scaler.Calc%i" % i, "%s_calc%i.CALC" % (prefix, i))) fields.append((suff, label)) self.extra_pvs = extra_pvs self.set_counters(fields)
def __init__(self, prefix, outpvs=None, nrois=32, use_net=False, use_unlabeled=False, use_full=False): nrois = int(nrois) DeviceCounter.__init__(self, prefix, rtype='mca', outpvs=outpvs) prefix = self.prefix fields = [] for i in range(nrois): label = caget('%s.R%iNM' % (prefix, i)) if len(label) > 0 or use_unlabeled: suff = '.R%i' % i if use_net: suff = '.R%iN' % i fields.append((suff, label)) if use_full: fields.append(('.VAL', 'mca spectra')) self.set_counters(fields)
def __init__(self, prefix, outpvs=None, nchan=8, use_calc=False, use_unlabeled=False): DeviceCounter.__init__(self, prefix, rtype='scaler', outpvs=outpvs) prefix = self.prefix fields = [('.T', 'CountTime')] extra_pvs = [] nchan = int(nchan) for i in range(1, nchan+1): label = caget('%s.NM%i' % (prefix, i)) if len(label) > 0 or use_unlabeled: suff = '.S%i' % i if use_calc: suff = '_calc%i.VAL' % i extra_pvs.append(('Scaler.Calc%i' % i, '%s_calc%i.CALC' % (prefix, i))) fields.append((suff, label)) self.extra_pvs = extra_pvs self.set_counters(fields)
def __init__(self, prefix, outpvs=None, nrois=32, rois=None, use_net=False, use_unlabeled=False, use_full=False): nrois = int(nrois) DeviceCounter.__init__(self, prefix, rtype="mca", outpvs=outpvs) # use roilist to limit ROI to those listed: roilist = None if rois is not None: roilist = [s.lower().strip() for s in rois] prefix = self.prefix fields = [] for i in range(nrois): label = caget("%s.R%iNM" % (prefix, i)) if roilist is not None and label.lower().strip() not in roilist: continue if len(label) > 0 or use_unlabeled: suff = ".R%i" % i if use_net: suff = ".R%iN" % i fields.append((suff, label)) if use_full: fields.append((".VAL", "mca spectra")) self.set_counters(fields)
def __init__(self, prefix, label=None): pvname = '%s.RBV' % prefix if label is None: label = "%s(actual)" % caget('%s.DESC' % prefix) Counter.__init__(self, pvname, label=label) # , rtype='motor')