bluesky.plans.tune_centroid#
- bluesky.plans.tune_centroid(detectors: Sequence[Readable], signal: str, motor: NamedMovable, start: float, stop: float, min_step: float, num: int = 10, step_factor: float = 3.0, snake: bool = False, *, md: dict[str, Any] | None = None) Generator[Msg, Any, str][source]#
- plan: tune a motor to the centroid of signal(motor) - Initially, traverse the range from start to stop with the number of points specified. Repeat with progressively smaller step size until the minimum step size is reached. Rescans will be centered on the signal centroid (for $I(x)$, centroid$= sum{I}/sum{x*I}$) with original scan range reduced by - step_factor.- Set - snake=Trueif your positions are reproducible moving from either direction. This will not necessarily decrease the number of traversals required to reach convergence. Snake motion reduces the total time spent on motion to reset the positioner. For some positioners, such as those with hysteresis, snake scanning may not be appropriate. For such positioners, always approach the positions from the same direction.- Note: Ideally the signal has only one peak in the range to be scanned. It is assumed the signal is not polymodal between - startand- stop.- Parameters:
- detectorslist or tuple
- list of ‘readable’ objects 
- signalstring
- detector field whose output is to maximize 
- motorobject
- any ‘settable’ object (motor, temp controller, etc.) 
- startfloat
- start of range 
- stopfloat
- end of range, note: start < stop 
- min_stepfloat
- smallest step size to use. 
- numint, optional
- number of points with each traversal, default = 10 
- step_factorfloat, optional
- used in calculating new range after each pass - note: step_factor > 1.0, default = 3 
- snakebool, optional
- if False (default), always scan from start to stop 
- mddict, optional
- metadata 
 
 - Examples - Find the center of a peak using synthetic hardware. - >>> from ophyd.sim import SynAxis, SynGauss >>> motor = SynAxis(name='motor') >>> det = SynGauss(name='det', motor, 'motor', ... center=-1.3, Imax=1e5, sigma=0.05) >>> RE(tune_centroid([det], "det", motor, -1.5, -0.5, 0.01, 10))