def __init__(self, name, pgm_grat_pitch, pgm_mirr_pitch, pgmpvroot, energy, idupvroot, iddpvroot, move_pgm=True, move_id=True): # motors, maybe also detector to set the delay time self.logger = LoggerFactory.getLogger("ContinuousPgmGratingIDGapEnergyMoveController:%s" % name) self.verbose = False self.setName(name) self._start_event = threading.Event() self._movelog_time = datetime.now() #PGM self._pgm_grat_pitch = pgm_grat_pitch self._pgm_mirr_pitch = pgm_mirr_pitch self._pgm_grat_pitch_speed_orig = None self._pgm_runupdown_time = None self._move_pgm = move_pgm self._move_id = move_id self.pvs = PvManager({'grating_density': 'NLINES', 'cff': 'CFF', 'grating_offset': 'GRTOFFSET', 'plane_mirror_offset': 'MIROFFSET', 'pgm_energy': 'ENERGY', 'grating_pitch': 'GRT:PITCH', 'mirror_pitch': 'MIR:PITCH', 'energy_calibration_gradient': 'MX', 'energy_calibration_reference': 'REFERENCE'}, pgmpvroot) if installation.isLive(): self.pvs.configure() #ID self.energy = energy self.idd = energy.idd self.idu = energy.idu self._id_gap_speed_orig=None self._id_runupdown_time = None self.idupvs = PvManager({'vel':'BLGSETVEL', 'acc':'IDGSETACC'}, idupvroot) if installation.isLive(): self.idupvs.configure() self.iddpvs = PvManager({'vel':'BLGSETVEL', 'acc':'IDGSETACC'}, iddpvroot) if installation.isLive(): self.iddpvs.configure() self.grating_pitch_positions=[] self.mirror_pitch_positions=[] self.pgm_energy_positions=[] self._start_time = None self.idspeedfactor=1.0 self.pgmspeedfactor=1.0 self.idstartdelaytime=0.0 self._move_start = 0.0 self._move_end = 1.0 self._move_step = 0.1 self._triggerPeriod = 0.0 self.idcontrols = None self.continuousMovingStarted = False
def __init__(self, name, pvroot, filepath=None, stdNotArr=True, reconnect=True, verbose=False, acquireToCagetDelay_s=0.1): # BL07I-DI-PHDGN-06:CAM:DATA self.name = name self.extraNames = [] self.outputFormat = [] self.level = 9 self.verbose = verbose self.acquireToCagetDelay_s = acquireToCagetDelay_s stdArr = "STD" if stdNotArr else "ARR" pvs = { "DATA": stdArr + ":ArrayData", "START": "CAM:Acquire", "WIDTH": "CAM:ArraySizeX_RBV", "HEIGHT": "CAM:ArraySizeY_RBV", "COLLECTTIME": "CAM:AcquireTime" } if reconnect: pvs["RECONNECT"] = "CAM:RESET.PROC" self.pvs = PvManager(pvs, pvroot) self.pvs.configure() self.filepath = filepath self.ds = None self.disableStop = False
def __init__( self, name, pgm_grat_pitch, pgm_mirr_pitch, pgmpvroot): # motors, maybe also detector to set the delay time self.logger = LoggerFactory.getLogger( "ContinuousPgmGratingEnergyMoveController:%s" % name) self.verbose = False self.name = name self._pgm_grat_pitch = pgm_grat_pitch self._pgm_mirr_pitch = pgm_mirr_pitch self._start_event = threading.Event() self._pgm_grat_pitch_speed_orig = None self._movelog_time = datetime.now() self._pgm_runupdown_time = None self.pvs = PvManager( { 'grating_density': 'NLINES', 'cff': 'CFF', 'grating_offset': 'GRTOFFSET', 'plane_mirror_offset': 'MIROFFSET', 'pgm_energy': 'ENERGY', 'grating_pitch': 'GRT:PITCH', 'mirror_pitch': 'MIR:PITCH', 'energy_calibration_gradient': 'MX', 'energy_calibration_reference': 'REFERENCE' }, pgmpvroot) if installation.isLive(): self.pvs.configure()
def __init__(self, name, rootPV, continuousMoveController): self.name = name self.setInputNames([name]) self.setExtraNames(self._getExtraNames()) self.setOutputFormat(self._getOutputFormat()) self.setLevel(100) self.pvs = PvManager(pvroot=rootPV) self.continuousMoveController = continuousMoveController #from gda.device.zebra.controller.impl import ZebraImpl #self.zebra = ZebraImpl() self.verbose = False self.negative_offset = 0.05 self.setDelayAfterRise(-0.01) self.setDelayAfterFall(-0.01) self.setAcquireTimePerPulse(0.02)
def __init__(self, pvroot): if isinstance(pvroot, str): from gdascripts.scannable.epics.PvManager import PvManager self.pvs = PvManager( { 'setpoint': 'SET:SETPOINTFIELD', 'setpointRbv': 'RBV:SETPOINTFIELD', 'sweeprate': 'SET:FIELDSWEEPRATE', 'sweeprateRbv': 'RBV:FIELDSWEEPRATE', 'demand_field': 'RBV:DEMANDFIELD' }, pvroot) self.pvs.configure() else: self.pvs = pvroot self.pvs.pvroot = ""
def __init__(self, name, pvroot, filepath, filename, fileformat): self.name = name self.inputNames = ['ExposureTime'] self.extraNames = ['FileNum'] self.outputFormat = ['%.2f', '%.0f'] self.level = 9 self.filepath = None self.filename = None self.fileformat = None self.filenum = None self.cached_exptime = None self.filenum = None self.pvs = PvManager([ 'Acquire', 'NImages', 'Abort', 'ExposureTime', 'FilePath', 'Filename', 'FileNumber', 'FileFormat', 'ThresholdEnergy' ], pvroot) self.configure(filepath, filename, fileformat)
def __init__( self, name, energy, idgap, idpvroot, move_mono=True, move_id=True): # motors, maybe also detector to set the delay time self.logger = LoggerFactory.getLogger( "ContinuousEnergyMoveController:%s" % name) self.verbose = False self.setName(name) self._start_event = threading.Event() self._movelog_time = datetime.now() self._energy = energy #PGM self._mono_energy = energy.mono_energy self._mono_energy_speed_orig = None self._mono_runupdown_time = None #ID self._id_gap = idgap self._id_gap_speed_orig = None self._id_runupdown_time = None self.idpvs = PvManager({ 'vel': 'BLGSETVEL', 'acc': 'IDGSETACC' }, idpvroot) if installation.isLive(): self.idpvs.configure() self.mono_energy_positions = [] self.id_gap_positions = [] self._start_time = None #behaviour properties self._move_mono = move_mono self._move_id = move_id self.idspeedfactor = 1.0 self.monospeedfactor = 1.0 self.idstartdelaytime = 0.0 self.continuousMovingStarted = False
def __init__(self, name, pvroot, filepath=None, determine_data_pv_based_on_zoom=False, numtracker_extension='tmp', filename_template='fire%d_%05d.png'): # BL07I-DI-PHDGN-06:CAM:DATA self.determine_data_pv_based_on_zoom = determine_data_pv_based_on_zoom self.name = name self.extraNames = [] self.outputFormat = [] self.level = 9 self.pvs = PvManager(['SET_SHUTTR', 'WIDTH', 'HEIGHT', 'ZOOM'], pvroot) self.pv_data = [] self.pv_data.append( gda.epics.LazyPVFactory.newReadOnlyIntegerArrayPV(pvroot + 'DATA')) self.pv_data.append( gda.epics.LazyPVFactory.newReadOnlyIntegerArrayPV(pvroot + 'DATA1')) self.pv_data.append( gda.epics.LazyPVFactory.newReadOnlyIntegerArrayPV(pvroot + 'DATA2')) self.pv_data.append( gda.epics.LazyPVFactory.newReadOnlyIntegerArrayPV(pvroot + 'DATA3')) self.pv_data.append( gda.epics.LazyPVFactory.newReadOnlyIntegerArrayPV(pvroot + 'DATA4')) self.pvs.configure() self.filepath = filepath self.ds = None self.last_image_path = None self.last_filename = None self.last_image_number = 0 self.numtracker_extension = numtracker_extension self.filename_template = filename_template