Macro for performing an energy scan with different regions (changing step size and integration time). At each point of the energy scan a maia scan is performed.
#!/bin/env python
import PyTango
import time
from sardana.macroserver.macro import macro, Type, ParamRepeat
__all__ = ["maia_regions_scan"]
class HookPars:
pass
def hook_post_move(self, hook_pars):
macro,pars = self.createMacro('maia_scan', hook_pars.mot0, hook_pars.pixel_origin0, hook_pars.scan_range0, hook_pars.pixel_pitch0, hook_pars.scan_dwell, hook_pars.mot1, hook_pars.pixel_origin1, hook_pars.scan_range1,hook_pars.pixel_pitch1,hook_pars.info_comment)
self.runMacro(macro)
@macro([
['mot0', Type.Moveable, None, 'Internal motor'],
['pixel_origin0', Type.Float, None, 'Pixel origin internal motor'],
['scan_range0', Type.Float, None, 'Scan range internal motor'],
['pixel_pitch0', Type.Float, None, 'Pixel pitch internal motor'],
['mot1', Type.Moveable, None, 'External motor'],
['pixel_origin1', Type.Float, None, 'Pixel origin external motor'],
['scan_range1', Type.Float, None, 'Scan range external motor'],
['pixel_pitch1', Type.Float, None, 'Pixel pitch external motor'],
['info_comment', Type.String, " ", 'Comment to be written in the maia scan info'],
["scan_regions",
ParamRepeat(['start_point', Type.Float, None, 'start position'],
['stop_point', Type.Float, None, 'end position'],
['nb_interv', Type.Integer, None, 'number of intervals'],
['integration_time', Type.Float, None, 'integration time']),
None, 'List of motor and path curves']
])
def maia_regions_scan( self, *list_parameters):
""" region scans with maia scans """
energy_motor = self.getObj("energy_all")
nb_scans = len(list_parameters) - 9
# Start the scan
for i in range(0,nb_scans):
macro,pars = self.createMacro('ascan', energy_motor, list_parameters[i + 9][0], list_parameters[i + 9][1], list_parameters[i + 9][2], list_parameters[i + 9][3])
hook_pars = HookPars()
hook_pars.mot0 = list_parameters[0]
hook_pars.pixel_origin0 = list_parameters[1]
hook_pars.scan_range0 = list_parameters[2]
hook_pars.pixel_pitch0 = list_parameters[3]
hook_pars.scan_dwell = list_parameters[i + 9][3]
hook_pars.mot1 = list_parameters[4]
hook_pars.pixel_origin1 = list_parameters[5]
hook_pars.scan_range1 = list_parameters[6]
hook_pars.pixel_pitch1 = list_parameters[7]
hook_pars.info_comment = list_parameters[8]
f = lambda : hook_post_move( self, hook_pars)
macro.hooks = [
(f, ["post-move"]),
]
self.runMacro(macro)