Beams, PMTs and Shutters

These three components are thin managers over dabs devices. Each exposes an array-style API indexed by device, and each keeps a handle list to the underlying device objects so you can drop down to the device API when you need to.


hSI.hBeams

scanimage.components.Beams. Manages power modulation for every configured beam modulator. The array properties are 1 x N over hSI.hBeams.hBeams.

Property

Description

powerFractions

Nominal power fraction (0..1) for each beam.

powers

Legacy equivalent expressed as a percentage.

lengthConstants

Depth length constant for each beam, used by exponential power adjustment.

pzAdjust

scanimage.types.BeamAdjustTypes per beam, selecting the power-versus-depth adjustment.

powerFractionLimits

Read-only. The maximum allowed fraction for each beam.

interlaceDecimation

Turn a beam on only every nth line.

interlaceOffset

Line offset at which the interlace pattern starts.

flybackBlanking

Blank the beam during the Y galvo flyback.

turnAroundBlanking

Blank the beam outside the fill fraction.

hBeams

Read-only cell array of the underlying dabs.resources.devices.BeamModulator objects.

hSI.hBeams.powerFractions = 0.05;                % 5 % on the single configured beam
hSI.hBeams.pzAdjust       = scanimage.types.BeamAdjustTypes.Exponential;
hSI.hBeams.lengthConstants = 200;                % microns

Power boxes

Property

Description

enablePowerBox

Enable the power box feature.

powerBoxes

Array of scanimage.components.beams.PowerBox objects. Each has rect ([left top width height] as a fraction of the scanfield), powers (one per beam), name, oddLines, evenLines and an optional mask matrix of power fractions stretched to fill the box.

powerBoxStartFrame, powerBoxEndFrame

Frame range over which the power box is active.

pb = scanimage.components.beams.PowerBox();
pb.rect   = [0.25 0.25 0.5 0.5];
pb.powers = 0.2;
pb.name   = 'center';

hSI.hBeams.powerBoxes    = pb;
hSI.hBeams.enablePowerBox = true;

Methods

Method

Description

hSI.hBeams.deactivateAllBeams()

Turn every configured beam off.

hSI.hBeams.deactivateCurrentBeams()

Turn off the beams belonging to the active imaging system.

hSI.hBeams.deactivateBeams(beams)

Turn off specific beams.

[fast,slow,all] = hSI.hBeams.wrapBeams(hBeams)

Wrap device objects into the fast / slow beam scanner objects that the waveform manager uses.

See also

Beams for the concepts, and Sample Tracking Power Boxes for sample-relative power boxes.


hSI.hPmts

scanimage.components.Pmts. Array properties are 1 x N over hSI.hPmts.hPMTs.

Property

Description

gains

Power supply gain setting for each PMT.

offsets

Signal offset setting for each PMT.

bandwidths

Amplifier bandwidth for each PMT.

powersOn

Dependent. Power state of each PMT.

tripped

Dependent, read-only. Trip status of each PMT.

autoPower

Per-PMT: power up and down automatically with the acquisition.

autoPowerOnWaitTime_s

Seconds to wait after auto power-on before acquiring. Default 0.3.

hPMTs

Read-only cell array of dabs.resources.devices.PMT objects.

hSI.hPmts.powersOn = true;
hSI.hPmts.gains    = 0.6;

% clear a trip on the underlying device
hSI.hPmts.hPMTs{1}.resetTrip();

hSI.hPmts.waitAutoPowerComplete() blocks until auto-powered PMTs have finished powering up. ScanImage calls it before measuring channel offsets.


hSI.hShutters

scanimage.components.Shutters. hSI.hShutters.hShutters is a read-only cell array of dabs.resources.devices.Shutter objects.

Method

Description

hSI.hShutters.shuttersTransitionAll(openTF,silent)

Open (true) or close (false) every configured shutter. Shutters in an error state are skipped; silent suppresses the error report.

hSI.hShutters.shuttersTransition(shutterIDs,openTF,applyShutterOpenTime)

Transition specific shutters by index into hShutters.

hSI.hShutters.shuttersTransitionAll(true);    % open everything
hSI.hShutters.shuttersTransition(1,false);    % close the first shutter

Note

Shutters deliberately does not implement the component start / abort hooks - shutters are driven by the imaging system through hSI.hScan2D.openShutters() / closeShutters() and by these transition methods, never by the acquisition state machine directly.