99 lines
3.1 KiB
Python
99 lines
3.1 KiB
Python
###################################################################################################
|
|
# Deployment specific global definitions - executed after startup.py
|
|
###################################################################################################
|
|
FILENAME = None
|
|
data_file = None
|
|
|
|
#The persistence strategy is overriden to adjust file names
|
|
import ch.psi.pshell.data.ScanPersistenceStrategyTable
|
|
class Strategy(ch.psi.pshell.data.ScanPersistenceStrategyTable):
|
|
def getLogFileName(self):
|
|
return time.strftime('%Y%m%d%H%M%S') + '_' + controller.getExecutingContext() + '_logs'
|
|
|
|
def getDatasetName(self, scan):
|
|
global FILENAME, data_file
|
|
name = controller.getExecutingContext() if FILENAME is None else FILENAME
|
|
data_file = time.strftime('%Y%m%d_%H%M') + '_' + name + '_' + str(controller.dataManager.getScanIndex()).zfill(4)
|
|
print "Opened data file: " + str(controller.dataManager.output) + "/" + data_file
|
|
return data_file
|
|
controller.dataManager.setScanStrategy(Strategy())
|
|
|
|
|
|
#Reading Energy Scan configuration file
|
|
def getPars(element):
|
|
f = open(controller.setup.getConfigPath() + '/energy_scan.properties')
|
|
try:
|
|
for line in f:
|
|
tokens = line.split("=")
|
|
if tokens[0] == str(element):
|
|
tokens = tokens[1].split(";")
|
|
for i in range(len(tokens)):
|
|
tokens[i] = float(tokens[i].strip())
|
|
|
|
return tokens
|
|
finally:
|
|
f.close()
|
|
raise Exception ("Invalid element: " + str(element))
|
|
|
|
|
|
#Pseudo-devices
|
|
energy = None
|
|
class SimulatedEnergy(Writable):
|
|
def write(self, value):
|
|
self.put(value)
|
|
|
|
def put(self, value, timeout = None):
|
|
global energy
|
|
energy = value
|
|
|
|
def close(self):
|
|
pass
|
|
|
|
|
|
class SimulatedEnergyReadback(Readable):
|
|
def read(self):
|
|
global energy
|
|
return energy;
|
|
|
|
def get(self):
|
|
return self.read()
|
|
|
|
def close(self):
|
|
pass
|
|
|
|
sim_energy = SimulatedEnergy()
|
|
sim_energy_readback = SimulatedEnergyReadback()
|
|
|
|
###################################################################################################
|
|
#Definitions for importing text batch felis
|
|
###################################################################################################
|
|
|
|
def set_hx(field, timeout = -1):
|
|
field_x.write(field)
|
|
field_x_done.waitValue(1,timeout)
|
|
|
|
def setHz(field, timeout = -1):
|
|
field_z.write(field)
|
|
field_z_done.waitValue(1,timeout)
|
|
|
|
def set_pol_cplus(offset = None, timeout = -1):
|
|
pol_mode.write("CIRC +")
|
|
if off is not None:
|
|
pol_offset.write(offset)
|
|
pol_done.waitValue("DONE",timeout)
|
|
|
|
def set_pol_cminus(offset = None, timeout = -1):
|
|
pol_mode.write("CIRC -")
|
|
if off is not None:
|
|
pol_offset.write(offset)
|
|
pol_done.waitValue("DONE",timeout)
|
|
|
|
def set_pol_lin(angle, offset = None, timeout = -1):
|
|
pol_mode.write("LINEAR")
|
|
pol_angle.write(angle)
|
|
if off is not None:
|
|
pol_offset.write(offset)
|
|
pol_done.waitValue("DONE",timeout)
|
|
|
|
|
|
|