Debugging dispersion and xtcav app plugins
This commit is contained in:
@ -57,8 +57,6 @@ class Dispersion:
|
||||
self.Nsteps = 2
|
||||
self.Nsamples = 1
|
||||
|
||||
|
||||
|
||||
def setBranch(self,branch = 'Aramis'):
|
||||
self.sc = None
|
||||
if branch == 'Athos Dump':
|
||||
@ -97,29 +95,37 @@ class Dispersion:
|
||||
# define adjustable
|
||||
self.adj = PVAdjustable(self.adjSV,pvname_readback = self.adjRB, accuracy = 0.1,ID = self.adjSV, name = self.name)
|
||||
val = self.adj.get_current_value(readback=False)
|
||||
# dval = self.amp*scl
|
||||
# self.values=np.linspace(val-dval,val+dval,num=self.N)
|
||||
dval = 0
|
||||
values = np.linspace(val-dval,val+dval, num = self.N)
|
||||
if self.adj2SV:
|
||||
self.adj2 = PVAdjustable(self.adj2SV,pvname_readback = self.adj2RB, accuracy = 0.1,ID = self.adjSV, name = self.name)
|
||||
val2 = self.adj.get_current_value(readback=False)
|
||||
dval = self.amp*scl * 0
|
||||
|
||||
# create scanner backend
|
||||
self.sc=self.scanner.ascan_list(self.adj, values, # list of adjustables and their values
|
||||
filename=self.branch, # relative directory for data
|
||||
start_immediately = False, # wait for execution to performe pre-action items
|
||||
n_pulses=self.Ns, # steps
|
||||
return_to_initial_values=True)# return to initial values
|
||||
if self.adj2SV:
|
||||
self.sc=self.scanner.a2scan(self.adj, val-dval, val+dval,
|
||||
self.adj2, val+dval, val-dval,
|
||||
self.Ns, # steps
|
||||
filename=self.branch, # relative directory for data
|
||||
start_immediately = False, # wait for execution to performe pre-action items
|
||||
return_to_initial_values=True) # return to initial values
|
||||
else:
|
||||
self.sc=self.scanner.ascan(self.adj, val-dval, val+dval,
|
||||
self.Ns, # steps
|
||||
filename=self.branch, # relative directory for data
|
||||
start_immediately = False, # wait for execution to performe pre-action items
|
||||
return_to_initial_values=True) # return to initial values
|
||||
|
||||
# self.preaction() ######
|
||||
self.sc.run() # run scan
|
||||
# self.auxdata = getAux(self.aux)
|
||||
# self.postaction() #######
|
||||
self.preaction()
|
||||
self.sc.run()
|
||||
self.auxdata = getAux(self.aux)
|
||||
self.postaction()
|
||||
self.bsc.stop() # stop the queue
|
||||
|
||||
#################################
|
||||
# definition of the individual branches
|
||||
|
||||
|
||||
|
||||
def setupAthosDump(self):
|
||||
# pathes and name tags
|
||||
# branch and name tag
|
||||
self.branch='Athos_Dump'
|
||||
self.name ='SATCB01-Linac'
|
||||
|
||||
@ -135,6 +141,8 @@ class Dispersion:
|
||||
# adjustable
|
||||
self.adjSV = 'SATCB01-RSYS:SET-BEAM-PHASE'
|
||||
self.adjRB = 'SATCB01-RSYS:GET-BEAM-PHASE'
|
||||
self.adj2SV = None
|
||||
self.adj2RB = None
|
||||
self.amp = 30 # the amplitude of the scan, which can be scaled
|
||||
|
||||
# acquisition
|
||||
@ -145,13 +153,11 @@ class Dispersion:
|
||||
# auxiliar data to be read one
|
||||
self.aux = getRFCalibrationChannels(sensor2,'SATCL01-MBND100:ENERGY-OP')
|
||||
|
||||
|
||||
|
||||
|
||||
def setupAramis(self):
|
||||
# branch and name tag
|
||||
self.branch='Aramis'
|
||||
pgroup = '%s-%s' % (self.pgroup,self.branch)
|
||||
self.path = '/sf/data/'+pgroup
|
||||
self.name = 'Linac3'
|
||||
|
||||
# pre-scan item
|
||||
self.pre = {}
|
||||
self.pre['SFB_BEAM_DUMP_AR:ONOFF1']={'Val':0,'InitVal':0}
|
||||
@ -160,23 +166,28 @@ class Dispersion:
|
||||
self.pre['SFB_ORBIT_SAR:ONOFF1']={'Val':0,'InitVal':0}
|
||||
for pv in self.pre.keys():
|
||||
self.pre[pv]['adj']=PVAdjustable(pv)
|
||||
|
||||
# adjustable
|
||||
self.adjSV = 'S30:SET-E-GAIN-OP'
|
||||
self.adjRB = 'S30:GET-E-GAIN-OP'
|
||||
self.adj = PVAdjustable(self.adjSV,pvname_readback = self.adjRB, accuracy = 0.1,ID = self.adjSV, name = "Linac3")
|
||||
self.adj2SV = None
|
||||
self.adj2RB = None
|
||||
self.amp = 20 # the amplitude of the scan, which can be scaled
|
||||
|
||||
# acquisition
|
||||
sensor1 = getBSChannels('SAR.*DBPM.*:[XY]1$')
|
||||
sensor2 = getBSChannels('S[23].*-RLLE-DSP:.*-VS$')
|
||||
self.sensor = sensor1+sensor2
|
||||
self.acq = [BSAcquisition(".",pgroup, default_channels=self.sensor)]
|
||||
|
||||
# auxiliar data to be read one
|
||||
self.aux = self.getRFCalibrationChannels(sensor2,'S10BC02-MBND100:ENERGY-OP')
|
||||
|
||||
|
||||
def setupAthos(self):
|
||||
self.branch='Aramis'
|
||||
pgroup = '%s-%s' % (self.pgroup,self.branch)
|
||||
self.path = '/sf/data/'+pgroup
|
||||
# branch and name tag
|
||||
self.branch='Athos'
|
||||
self.name = 'Linac2+3'
|
||||
|
||||
# pre-scan item
|
||||
self.pre = {}
|
||||
self.pre['SFB_BEAM_DUMP_AT:ONOFF1']={'Val':0,'InitVal':0}
|
||||
@ -187,24 +198,25 @@ class Dispersion:
|
||||
self.pre['SFB_ORBIT_SAT_%2.2d:ONOFF1' % i ]={'Val':0,'InitVal':0}
|
||||
for pv in self.pre.keys():
|
||||
self.pre[pv]['adj']=PVAdjustable(pv)
|
||||
|
||||
# adjustable
|
||||
self.adjSV = 'S20:SET-E-GAIN-OP'
|
||||
self.adjRB = 'S20:GET-E-GAIN-OP'
|
||||
self.adj = PVAdjustable(self.adjSV,pvname_readback = self.adjRB, accuracy = 0.1,ID = self.adjSV, name = "Linac 2 and 3")
|
||||
# self.adj2SV = 'S30:SET-E-GAIN-OP'
|
||||
# self.adj2RB = 'S30:GET-E-GAIN-OP'
|
||||
# self.adj2 = PVAdjustable(self.adj2SV,pvname_readback = self.adj2RB, accuracy = 0.1)
|
||||
# self.adj = CounterAdjustable(self.adj1,self.adj2) # combine the two channels
|
||||
self.adj2SV = 'S30:SET-E-GAIN-OP' # counter adjustable
|
||||
self.adj2RB = 'S30:GET-E-GAIN-OP'
|
||||
self.amp = 10 # the amplitude of the scan, which can be scaled
|
||||
|
||||
# acquisition
|
||||
sensor1 = getBSChannels('SAT[SDC].*DBPM.*:[XY]2$')
|
||||
sensor2 = getBSChannels('S[2].*-RLLE-DSP:.*-VS$')
|
||||
self.sensor = sensor1+sensor2
|
||||
self.acq = [BSAcquisition(".",pgroup, default_channels=self.sensor)]
|
||||
|
||||
# auxiliar data to be read one
|
||||
self.aux = self.getRFCalibrationChannels(sensor2,'S10BC02-MBND100:ENERGY-OP')
|
||||
|
||||
|
||||
#########################
|
||||
# some basic interaction with the scan functionality
|
||||
|
||||
|
||||
def preaction(self):
|
||||
@ -215,7 +227,6 @@ class Dispersion:
|
||||
def postaction(self):
|
||||
for key in self.pre.keys():
|
||||
self.pre[key]['adj'].set_target_value(self.pre[key]['InitVal'])
|
||||
|
||||
|
||||
def stop(self):
|
||||
if self.sc is None:
|
||||
@ -243,7 +254,7 @@ class Dispersion:
|
||||
|
||||
|
||||
#--------------------
|
||||
# for debugging
|
||||
# main implementation for debugging
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
|
Reference in New Issue
Block a user