Debugging dispersion and xtcav app plugins

This commit is contained in:
2023-07-26 13:32:43 +02:00
parent 25e717e132
commit fff0c81070
4 changed files with 66 additions and 38 deletions

View File

@ -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__':