12 #include "../../MetaInstruments/Stage.h"
13 #include "../../MetaInstruments/DigitalOut.h"
14 #include "../../MetaInstruments/DigitalIn.h"
15 #include "../../MetaInstruments/AnalogOut.h"
16 #include "../../MetaInstruments/AnalogIn.h"
17 #include "../../MetaInstruments/Camera.h"
18 #include "../../MetaInstruments/TimeTagger.h"
19 #include "../../Instruments/InterModuleCommunicator.h"
20 #include "../../Instruments/WidefieldLocalization.h"
21 #include "../../Modules/ImageViewer/ImageViewerEvents.h"
22 #include "../../Modules/SpectrumViewer/SpectrumViewerEvents.h"
70 constexpr
void Reset() noexcept;
74 std::string
ToStr(std::string_view Prefix =
"")
const;
156 std::stringstream
AssembleCSVHeader(
bool IncludeConfocalScan,
bool IncludeHBT,
bool IncludeAutoMeasure)
const;
342 void ResetImpl(dispatch_tag<QModuleDataBase>)
override final;
465 virtual const char*
GetParamClassTag() const noexcept
override {
return "WidefieldMicroscopeParams"; }
480 "WidefieldConfocalSwitch",
"Widefield/confocal mode switch (DO)",
483 "WidefieldConfocalIndicator",
"Widefield/confocal mode indicator (DI)",
486 "Widefield/confocal transition time (ms)",
487 "Time it takes to transition from widefield into confocal mode or vice versa once the widefield/confocal mode switch has been triggered",
488 false, 500, 0, 10000, 10, 0 };
490 "WidefieldHBTSwitch",
"HBT flip mirror servo actuator (DO)",
"Servo actuator to switch to HBT measurement mode",
DynExpUI::Icons::Instrument,
true };
492 "HBT flip mirror low duty cycle",
493 "Duty cycle of rectangular pulses applied to the HBT flip mirror servo actuator in order to make it flip the mirror into the low position",
494 false, .2, 0, 1, .1, 2 };
496 "HBT flip mirror high duty cycle",
497 "Duty cycle of rectangular pulses applied to the HBT flip mirror servo actuator in order to make it flip the mirror into the high position",
498 false, .8, 0, 1, .1, 2 };
500 "HBT flip mirror transition time (ms)",
501 "Time it takes to flip the HBT mirror once the duty cycle of the rectangular pulses applied to the flip mirror servo actuator has changed",
502 false, 500, 0, 10000, 10, 0 };
506 "PumpPowerIndicator",
"Pump power indicator (AI)",
"Analog input to measure the current power of the pump light source",
509 "Defines the pump power in units of the pump power (AO) parameter which is initially used in the widefield mode",
510 true, 1, 0, std::numeric_limits<ParamsConfigDialog::NumberType>::max(), .1, 3 };
512 "Defines the pump power in units of the pump power (AO) parameter which is initially used in the confocal mode",
513 true, .1, 0, std::numeric_limits<ParamsConfigDialog::NumberType>::max(), .1, 3 };
517 "WidefieldLocalizer",
"Widefield localizer",
"gRPC service to perform widefield localization of emitters within a recorded camera image",
520 "Magnification factor of the optical system between the sample and the widefield camera",
521 false, 100, .01, 10000, 1, 2 };
527 "AcqInterModuleCommunicator",
"Acq. inter-module communicator",
"Inter-module communicator to control image and spectrum capturing modules with",
DynExpUI::Icons::Instrument,
true };
559 constexpr
static auto Name() noexcept {
return "Widefield Microscope"; }
560 constexpr
static auto Category() noexcept {
return "Experiments"; }
586 template <typename PosT>
588 const PosT x, const PosT y)
591 Util::NumToT<WidefieldMicroscopeData::PositionType>(x *
ModuleData->GetWidefieldCamera()->GetPixelSizeInMicrons() * 1000 / ModuleParams->WidefieldCameraMagnification),
592 Util::NumToT<WidefieldMicroscopeData::PositionType>(y *
ModuleData->GetWidefieldCamera()->GetPixelSizeInMicrons() * 1000 / ModuleParams->WidefieldCameraMagnification)
603 QPoint MarkerPos, QPointF SamplePos) const;
605 QPoint MarkerPos, QPointF SamplePos) const;
895 },
"Autofocusing..." };
898 },
"Locating confocal spot..." };
901 },
"Locating confocal spot..." };
905 },
"Optimizing count rate..." };
Defines DynExp's core module as an interface between the UI and DynExp objects.
std::chrono::milliseconds TimeType
Time type describing the camera's times like its exposure time.
SampleT SampleType
Alias for SampleT.
signed long long PositionType
Numeric type to store the stage positions.
virtual ~WidefieldMicroscopeConfigurator()=default
WidefieldMicroscopeConfigurator()=default
virtual DynExp::ParamsBasePtrType MakeParams(DynExp::ItemIDType ID, const DynExp::DynExpCore &Core) const override final
Override to make derived classes call DynExp::MakeParams with the correct configurator type derived f...
void SetCellID(const DynExpInstr::WidefieldLocalizationCellIDType &CellID)
bool AutoMeasureHBTEnabled
bool IsCellRangeValid() const noexcept
int GetConfocalScanDistPerPixel() const noexcept
int AutoMeasureMaxOptimizationReruns
bool HaveLocalizedPositionsStateChanged() const noexcept
const PositionPoint & GetSampleHomePosition() const noexcept
CameraTimeType GetMinCameraExposureTime() const noexcept
bool LocalizedPositionsChanged
void SetAutoMeasureOptimizationMaxDistance(int OptimizationMaxDistance) noexcept
void SetSPD2SamplesWritten(size_t SamplesWritten) noexcept
void SetAutoMeasureSpectrumEnabled(bool Enabled) noexcept
LocalizedPositionsMapType LocalizedPositions
bool AutoMeasureSpectrumEnabled
auto GetAutoMeasureCurrentOptimizationRerun() const noexcept
int AutoMeasureNumOptimizationAttempts
DynExp::LinkedObjectWrapperContainer< DynExpInstr::PositionerStage > SampleStageZ
auto & GetSampleFocusPiezoZ() noexcept
auto & GetSampleFocusPiezoZ() const noexcept
const auto & GetLastCellID() const noexcept
auto & GetWidefieldCamera() const noexcept
void SetMaxFocusVoltage(double MaxVoltage) noexcept
auto & GetPumpPowerIndicator() noexcept
PositionPoint SampleHomePosition
Location set by the user as a home position in nm.
void SetFocusZeroVoltage(double ZeroVoltage) noexcept
double FocusCurrentVoltage
bool HasConfocalScanSurfacePlotRows() const noexcept
void SetAutoMeasureNumOptimizationAttempts(int NumOptimizationAttempts) noexcept
void SetWidefieldPosition(const PositionPoint &Position) noexcept
bool LocalizedPositionsStateChanged
auto GetHBTNumEventCounts() const noexcept
void SetMinCameraExposureTime(CameraTimeType Time) noexcept
auto & GetWidefieldLocalizer() const noexcept
auto GetAutoMeasureNumOptimizationAttempts() const noexcept
double GetMeasuredPumpPower() const noexcept
auto GetAutoMeasureHBTEnabled() const noexcept
std::chrono::microseconds HBTTotalIntegrationTime
std::chrono::seconds AutoMeasureInitialImageSetWaitTime
auto & GetSampleStageY() const noexcept
void SetFocusConfocalOffsetVoltage(double ConfocalOffsetVoltage) noexcept
void ClearLocalizedPositions()
auto & GetSPD1() const noexcept
auto & GetWidefieldHBTSwitch() const noexcept
CameraTimeType GetMaxCameraExposureTime() const noexcept
double GetFocusCurrentVoltage() const noexcept
const QImage & GetCurrentImage() const noexcept
void ClearHBTDataPoints()
void ClearConfocalScanSurfacePlotRows()
auto GetAutoMeasureCurrentImageSet() const noexcept
auto GetAutoMeasureCurrentEmitter() const noexcept
void ResetAutoMeasureCurrentImageSet() noexcept
auto & GetSampleStageZ() noexcept
size_t GetNumFailedLocalizedPositions() const
DynExpInstr::WidefieldLocalizationCellIDType LastCellID
void SetAutoMeasureInitialImageSetWaitTime(std::chrono::seconds Time) noexcept
void ResetAutoMeasureCurrentOptimizationRerun() noexcept
DynExp::LinkedObjectWrapperContainer< DynExpInstr::DigitalOut > LEDSwitch
DynExp::LinkedObjectWrapperContainer< DynExpInstr::DigitalOut > WidefieldConfocalSwitch
static QColor GetLocalizedEmitterColor(LocalizedEmitterStateType State)
const PositionPoint & GetHBTSamplePosition() const noexcept
auto & GetLEDSwitch() noexcept
auto & GetWidefieldConfocalIndicator() noexcept
const auto & GetConfocalScanResults() const noexcept
void SetHBTBinWidth(Util::picoseconds BinWidth) noexcept
auto & GetAutoMeasureCellRangeFrom() noexcept
CameraTimeType MinCameraExposureTime
DynExp::LinkedObjectWrapperContainer< DynExpInstr::AnalogOut > FocusPiezoZ
void SetCurrentImage(QImage &&Image)
bool IsAutoMeasureRunning() const noexcept
void SetAutoMeasureImagePositionScatterRadius(int ScatterRadius) noexcept
auto & GetSPD1() noexcept
void SetAutoMeasureHBTEnabled(bool Enabled) noexcept
void ResetLocalizedPositionsChanged() noexcept
CameraTimeType WidefieldCameraExposureTime
double GetConfocalOptimizationInitXYStepSize() const noexcept
CameraTimeType MaxCameraExposureTime
std::filesystem::path AutoMeasureSavePath
DynExp::LinkedObjectWrapperContainer< DynExpInstr::PositionerStage > SampleStageX
double WidefieldPumpPower
void WriteConfocalScanResults(std::stringstream &Stream) const
double GetWidefieldPumpPower() const noexcept
void SetConfocalOptimizationInitXYStepSize(double StepSize) noexcept
void SetSPD2Ready(double Value) noexcept
QSurfaceDataRowsType ConfocalScanSurfacePlotRows
std::vector< std::pair< PositionPoint, double > > ConfocalScanResults
double GetMinFocusVoltage() const noexcept
void SetUIMessage(const std::string &Message)
virtual void ResetImpl(dispatch_tag< WidefieldMicroscopeData >)
auto GetHBTDataPointsMaxValues() const noexcept
QPoint AutoMeasureCellRangeTo
virtual ~WidefieldMicroscopeData()=default
auto GetHBTDataPointsMinValues() const noexcept
void SetHBTNumEventCounts(long long NumEventCounts) noexcept
auto GetHBTBinWidth() const noexcept
DynExp::LinkedObjectWrapperContainer< DynExpInstr::TimeTagger > SPD2
Util::picoseconds HBTBinWidth
auto IncrementAutoMeasureCurrentEmitter() noexcept
WidefieldMicroscopeWidget::LocalizationType AutoMeasureLocalizationType
PositionPoint WidefieldPosition
Location where the current widefield image has been taken in nm.
LocalizedPositionsMapType::iterator AutoMeasureCurrentEmitter
Iterator to the emitter being characterized.
int AutoMeasureCountRateThreshold
DynExp::LinkedObjectWrapperContainer< DynExpInstr::PositionerStage > SampleStageY
QList< QPointF > HBTDataPoints
auto GetAutoMeasureNumberImageSets() const noexcept
DynExpInstr::WidefieldLocalizationCellIDType CurrentCellID
std::chrono::microseconds HBTMaxIntegrationTime
LocalizedEmitterStateType
Util::FeatureTester< FeatureType > Features
void SetMeasuredPumpPower(double MeasuredPower) noexcept
SetupModeType GetSetupMode() const noexcept
auto & GetLEDSwitch() const noexcept
bool SetAutoMeasureFirstEmitter(Util::MarkerGraphicsView::MarkerType::IDType FirstEmitterID) noexcept
Returns true in case of success, false otherwise.
auto & GetHBTDataPoints() noexcept
auto GetAutoMeasureCurrentOptimizationAttempt() const noexcept
double ConfocalOptimizationInitZStepSize
auto & GetPumpSwitch() const noexcept
@ InterModuleCommunicator
@ WidefieldConfocalIndicator
@ WidefieldConfocalSwitch
void ClearConfocalScanResults()
long long HBTNumEventCounts
auto GetAutoMeasureOptimizationMaxDistance() const noexcept
auto IncrementAutoMeasureCurrentOptimizationAttempt() noexcept
LocalizedPositionsMapType::iterator AutoMeasureFirstEmitter
Iterator to the first emitter to be characterized.
void SetConfocalPumpPower(double Power) noexcept
void SetMinFocusVoltage(double MinVoltage) noexcept
void SetAutoMeasureCurrentCellPosition(const PositionPoint &Position) noexcept
double GetFocusZeroVoltage() const noexcept
bool IsCurrentImageAvlbl() const
void SetFeature(FeatureType Flag)
int GetAutoMeasureImagePositionScatterRadius() const noexcept
auto IncrementAutoMeasureCurrentOptimizationRerun() noexcept
void SetSetupMode(SetupModeType NewMode) noexcept
void SetLEDCameraExposureTime(CameraTimeType Time) noexcept
void SetAutoMeasureMaxOptimizationReruns(int MaxOptimizationReruns) noexcept
void SetConfocalScanDistPerPixel(int DistPerPixel) noexcept
void SetConfocalOptimizationTolerance(double Tolerance) noexcept
auto & GetSPD2() noexcept
auto & GetAutoMeasureCellRangeTo() const noexcept
void SetConfocalSpotImagePosition(const QPoint &Position) noexcept
auto & GetPumpPower() const noexcept
void SetConfocalScanWidth(int Width) noexcept
double ConfocalOptimizationTolerance
void SetWidefieldPumpPower(double Power) noexcept
void SetSPD1Ready(double Value) noexcept
auto & GetSampleStageY() noexcept
auto & GetAcqCommunicator() const noexcept
auto & GetWidefieldConfocalIndicator() const noexcept
auto GetAutoMeasureMaxOptimizationReruns() const noexcept
const auto & GetCellID() const noexcept
PositionPoint GetSamplePosition() const
Returns current sample position.
bool GetSPD1Ready() const noexcept
std::chrono::seconds GetAutoMeasureInitialImageSetWaitTime() const noexcept
QPointF HBTDataPointsMinValues
int AutoMeasureCurrentOptimizationAttempt
double GetConfocalPumpPower() const noexcept
DynExp::LinkedObjectWrapperContainer< DynExpInstr::AnalogIn > PumpPowerIndicator
void SetHBTMaxIntegrationTime(std::chrono::microseconds MaxIntegrationTime) noexcept
void SetAutoMeasureCountRateThreshold(int CountRateThreshold) noexcept
auto & GetPumpPower() noexcept
int AutoMeasureCurrentOptimizationRerun
int ConfocalScanDistPerPixel
auto GetHBTMaxIntegrationTime() const noexcept
bool HasCellID() const noexcept
bool AutoMeasureOptimizeEnabled
void SetConfocalScanSurfacePlotRows(QSurfaceDataRowsType &&QSurfaceDataRows) noexcept
QPoint ConfocalSpotImagePosition
Location of confocal spot in units of px within widefield image.
void ResetAutoMeasureCurrentOptimizationAttempt() noexcept
DynExpInstr::CameraData::TimeType CameraTimeType
auto GetSPD1SamplesWritten() const noexcept
DynExp::LinkedObjectWrapperContainer< DynExpInstr::DigitalIn > WidefieldConfocalIndicator
auto & GetWidefieldLocalizer() noexcept
void ResetAutoMeasureCurrentEmitter() noexcept
void SetPumpLightTurnedOn(bool State)
double ConfocalOptimizationInitXYStepSize
void SetSPD1SamplesWritten(size_t SamplesWritten) noexcept
SPDTimeType GetSPDExposureTime() const noexcept
const auto & GetHBTDataPoints() const noexcept
auto & GetPumpSwitch() noexcept
void ClearLocalizedPositionsStateChanged()
void SetMaxCameraExposureTime(CameraTimeType Time) noexcept
bool GetLEDLightTurnedOn() const noexcept
DynExpInstr::PositionerStageData::PositionType PositionType
double GetFocusConfocalOffsetVoltage() const noexcept
auto & GetAcqCommunicator() noexcept
std::chrono::milliseconds SPDTimeType
bool IsAutofocusFinished() const noexcept
auto & GetSampleStageX() const noexcept
DynExp::LinkedObjectWrapperContainer< DynExpInstr::DigitalOut > PumpSwitch
auto GetAutoMeasureFirstEmitter() const noexcept
void SetAutoMeasureOptimizeEnabled(bool Enabled) noexcept
QPointF HBTDataPointsMaxValues
std::vector< std::unique_ptr< QSurfaceDataRow > > QSurfaceDataRowsType
int GetAutoMeasureCurrentCellIndex() const
void ResetSPD1State() noexcept
int GetConfocalScanHeight() const noexcept
void SetHBTDataPointsMinValues(const QPointF &DataPointsMinValues) noexcept
void SetHBTSamplePosition(const PositionPoint &Position) noexcept
auto & GetAutoMeasureCellSkip() noexcept
void SetFocusCurrentVoltage(double CurrentVoltage) noexcept
void SetMinPumpPower(double MinPower) noexcept
auto GetSPD2Value() const noexcept
void SetAutoMeasureNumberImageSets(int NumberImageSets) noexcept
size_t GetNumFinishedLocalizedPositions() const
double FocusConfocalOffsetVoltage
void SetSampleHomePosition(const PositionPoint &Position) noexcept
auto & GetAutoMeasureCellRangeTo() noexcept
bool HaveLocalizedPositionsChanged() const noexcept
DynExp::LinkedObjectWrapperContainer< DynExpInstr::Camera > WidefieldCamera
PositionPoint AutoMeasureCurrentCellPosition
Center position of the current cell in nm where an automated measurement takes place.
int GetAutoMeasureCellColumnLength() const noexcept
int GetAutoMeasureCellCount() const noexcept
void SetHBTTotalIntegrationTime(std::chrono::microseconds TotalIntegrationTime) noexcept
void SetAutoMeasureLocalizationType(WidefieldMicroscopeWidget::LocalizationType LocalizationType) noexcept
int GetConfocalScanWidth() const noexcept
void ResetImpl(dispatch_tag< QModuleDataBase >) override final
DynExp::LinkedObjectWrapperContainer< DynExpInstr::FunctionGenerator > WidefieldHBTSwitch
QPoint AutoMeasureCellRangeFrom
double GetMinPumpPower() const noexcept
void WriteHBTResults(std::stringstream &Stream) const
WidefieldMicroscopeData()
auto & GetPumpPowerIndicator() const noexcept
void SetLocalizedPositions(LocalizedPositionsMapType &&Positions)
auto GetAutoMeasureCountRateThreshold() const noexcept
auto GetAutoMeasureLocalizationType() const noexcept
void SetAutoMeasureSavePath(std::filesystem::path SavePath) noexcept
static const char * GetLocalizedEmitterStateString(LocalizedEmitterStateType State)
std::map< Util::MarkerGraphicsView::MarkerType::IDType, LocalizedEmitterType > LocalizedPositionsMapType
void AppendLocalizedPosition(LocalizedPositionsMapType::value_type &&Position)
const auto & GetLocalizedPositions() const noexcept
auto & GetSPD2() const noexcept
void SetLocalizedPositionsStateChanged()
bool GetSPD2Ready() const noexcept
double GetMaxPumpPower() const noexcept
const PositionPoint & GetWidefieldPosition() const noexcept
void SetLastCountRate(double CountRate) noexcept
CameraTimeType GetLEDCameraExposureTime() const noexcept
auto & GetLocalizedPositions() noexcept
auto & GetConfocalScanResults() noexcept
void SetConfocalOptimizationInitZStepSize(double StepSize) noexcept
SPDTimeType SPDExposureTime
auto GetSPD2SamplesWritten() const noexcept
PositionPoint HBTSamplePosition
Location in nm where the HBT measurement has been started.
CameraTimeType LEDCameraExposureTime
auto GetConfocalScanSurfacePlotRows() noexcept
void SetLEDLightTurnedOn(bool State)
int AutoMeasureCurrentImageSet
Index of the image set being recorded if auto-measure localization is running, -1 otherwise.
auto & GetSampleStageZ() const noexcept
void SetConfocalScanHeight(int Length) noexcept
auto & GetWidefieldConfocalSwitch() noexcept
void ResetCurrentImageAvlbl() noexcept
void SetHBTDataPointsMaxValues(const QPointF &DataPointsMaxValues) noexcept
bool TestFeature(const std::array< FeatureType, N > &Flags) const
double GetConfocalOptimizationTolerance() const noexcept
void SetAutoMeasureRunning(bool Running) noexcept
QPoint GetConfocalSpotImagePosition() const noexcept
int GetAutoMeasureCellLineLength() const noexcept
void SetWidefieldCameraExposureTime(CameraTimeType Time) noexcept
double GetMaxFocusVoltage() const noexcept
auto GetAutoMeasureOptimizeEnabled() const noexcept
bool GetPumpLightTurnedOn() const noexcept
void SetAutofocusFinished() noexcept
auto & GetAutoMeasureCellRangeFrom() const noexcept
auto GetSPD1Value() const noexcept
auto & GetWidefieldConfocalSwitch() const noexcept
LocalizedEmitterStateType State
DynExp::LinkedObjectWrapperContainer< DynExpInstr::InterModuleCommunicator > AcqCommunicator
DynExp::LinkedObjectWrapperContainer< DynExpInstr::WidefieldLocalization > WidefieldLocalizer
auto & GetSampleStageX() noexcept
QPoint AutoMeasureCellSkip
auto GetHBTTotalIntegrationTime() const noexcept
std::stringstream AssembleCSVHeader(bool IncludeConfocalScan, bool IncludeHBT, bool IncludeAutoMeasure) const
std::filesystem::path GetAutoMeasureSavePath() const
DynExp::LinkedObjectWrapperContainer< DynExpInstr::AnalogOut > PumpPower
void SetMaxPumpPower(double MaxPower) noexcept
auto & GetWidefieldHBTSwitch() noexcept
std::string_view GetUIMessage() const noexcept
double GetLastCountRate() const noexcept
void ResetSPD2State() noexcept
CameraTimeType GetWidefieldCameraExposureTime() const noexcept
void SetCellIDToLastCellID()
void SetSPDExposureTime(SPDTimeType Time) noexcept
void SetHBTBinCount(size_t BinCount) noexcept
void ResetAutofocusFinished() noexcept
auto & GetWidefieldCamera() noexcept
int AutoMeasureOptimizationMaxDistance
int AutoMeasureImagePositionScatterRadius
int AutoMeasureNumberImageSets
auto IncrementAutoMeasureCurrentImageSet() noexcept
auto GetHBTBinCount() const noexcept
bool TestFeature(FeatureType Flag) const
DynExp::LinkedObjectWrapperContainer< DynExpInstr::TimeTagger > SPD1
auto GetAutoMeasureSpectrumEnabled() const noexcept
auto & GetAutoMeasureCellSkip() const noexcept
const PositionPoint & GetAutoMeasureCurrentCellPosition() const noexcept
double GetConfocalOptimizationInitZStepSize() const noexcept
WidefieldMicroscopeParams(DynExp::ItemIDType ID, const DynExp::DynExpCore &Core)
Param< DynExp::ObjectLink< DynExpInstr::AnalogIn > > PumpPowerIndicator
Param< ParamsConfigDialog::NumberType > DefaultPowerConfocalMode
Param< DynExp::ObjectLink< DynExpInstr::Camera > > WidefieldCamera
Param< DynExp::ObjectLink< DynExpInstr::PositionerStage > > SampleStageX
Param< DynExp::ObjectLink< DynExpInstr::WidefieldLocalization > > WidefieldLocalizer
Param< ParamsConfigDialog::NumberType > WidefieldHBTSwitchLowDutyCycle
Param< DynExp::ObjectLink< DynExpInstr::FunctionGenerator > > WidefieldHBTSwitch
virtual const char * GetParamClassTag() const noexcept override
This function is intended to be overridden once in each derived class returning the name of the respe...
void ConfigureParamsImpl(dispatch_tag< QModuleParamsBase >) override final
Param< DynExp::ObjectLink< DynExpInstr::DigitalOut > > WidefieldConfocalSwitch
Param< DynExp::ObjectLink< DynExpInstr::AnalogOut > > PumpPower
Param< ParamsConfigDialog::NumberType > WidefieldHBTSwitchHighDutyCycle
Param< DynExp::ObjectLink< DynExpInstr::PositionerStage > > SampleStageY
Param< DynExp::ObjectLink< DynExpInstr::PositionerStage > > SampleStageZ
Param< ParamsConfigDialog::NumberType > WidefieldConfocalTransitionTime
Param< ParamsConfigDialog::NumberType > WidefieldHBTTransitionTime
Param< DynExp::ObjectLink< DynExpInstr::InterModuleCommunicator > > AcqCommunicator
Param< DynExp::ObjectLink< DynExpInstr::DigitalOut > > PumpSwitch
Param< DynExp::ObjectLink< DynExpInstr::DigitalOut > > LEDSwitch
Param< DynExp::ObjectLink< DynExpInstr::DigitalIn > > WidefieldConfocalIndicator
Param< ParamsConfigDialog::NumberType > DefaultPowerWidefieldMode
Param< DynExp::ObjectLink< DynExpInstr::TimeTagger > > SPD2
Param< ParamsConfigDialog::NumberType > WidefieldCameraMagnification
Param< DynExp::ObjectLink< DynExpInstr::AnalogOut > > FocusPiezoZ
Param< DynExp::ObjectLink< DynExpInstr::TimeTagger > > SPD1
virtual ~WidefieldMicroscopeParams()=default
static constexpr auto ConfocalScanCaptureState
void OnCaptureWidefieldImage(DynExp::ModuleInstance *Instance, bool) const
void OnConfocalSPDExposureTimeChanged(DynExp::ModuleInstance *Instance, int Value) const
const gsl_multimin_fminimizer_type *const GSLConfocalOptimizationMinimizer
static constexpr auto AutoMeasureCharacterizationHBTFinishedState
const Util::StateMachineContext< StateMachineStateType > AutoMeasureSampleCharacterizationContext
void OnAutofocus(DynExp::ModuleInstance *Instance, bool) const
void OnOptimizePositions(DynExp::ModuleInstance *Instance, bool) const
static constexpr auto AutoMeasureLocalizationSaveLEDImageState
void OnAutoMeasureCellRangeFromXChanged(DynExp::ModuleInstance *Instance, int Value) const
std::chrono::microseconds HBTIntegrationTimeBeforeReset
StateType AutoMeasureCharacterizationHBTFinishedStateFunc(DynExp::ModuleInstance &Instance)
StateType HBTAcquiringStateFunc(DynExp::ModuleInstance &Instance)
ModuleDataType::PositionPoint RandomPointInCircle(ModuleDataType::PositionType Radius) const
Returns a uniformly-distributed random coordinate within a circle of radius Radius,...
static constexpr auto WaitingState
static constexpr auto ConfocalOptimizationStepState
const Util::StateMachineContext< StateMachineStateType > AutoMeasureSampleContext
void OnRunCharacterizationFromID(DynExp::ModuleInstance *Instance, Util::MarkerGraphicsView::MarkerType::IDType ID) const
const Util::StateMachineContext< StateMachineStateType > AutoMeasureSampleLocalizationContext
StateType AutoMeasureCharacterizationOptimizationFinishedStateFunc(DynExp::ModuleInstance &Instance)
void OnHBTBinWidthChanged(DynExp::ModuleInstance *Instance, int Value) const
void OnGoToHomePosition(DynExp::ModuleInstance *Instance, bool) const
void PrepareAPDsForConfocalMode(Util::SynchronizedPointer< ModuleDataType > &ModuleData) const
void OnAutoMeasureMaxOptimizationRerunsChanged(DynExp::ModuleInstance *Instance, int Value) const
void OnConfocalConfocalWidthChanged(DynExp::ModuleInstance *Instance, int Value) const
StateType InitiateReadCellIDFromImage(Util::SynchronizedPointer< ModuleDataType > &ModuleData) const
void MoveSampleTo(const ModuleDataType::PositionPoint &Point, Util::SynchronizedPointer< ModuleDataType > &ModuleData) const
static constexpr auto SpectrumAcquisitionWaitingState
static ModuleDataType::PositionPoint PositionPointFromPixelDist(Util::SynchronizedPointer< const ParamsType > &ModuleParams, Util::SynchronizedPointer< ModuleDataType > &ModuleData, const PosT x, const PosT y)
StateType ConfocalOptimizationInitSubStepStateFunc(DynExp::ModuleInstance &Instance)
std::unique_ptr< DynExp::QModuleWidget > MakeUIWidget() override final
Used by InitUI() as a factory function for the module's user interface widget. Create the widget here...
StateType WaitingForImageStateFunc(DynExp::ModuleInstance &Instance)
bool IsCharacterizingSample() const noexcept
Returns true if an entire sample (multiple cells) are processed, false if only a single cell is proce...
const Util::StateMachineContext< StateMachineStateType > AutoMeasureSampleRecenterCellContext
void OnConfocalConfocalDistPerPixelChanged(DynExp::ModuleInstance *Instance, int Value) const
static constexpr auto SetupTransitionFinishedState
StateType FindingConfocalSpotAfterTransitioningToConfocalModeStateFunc(DynExp::ModuleInstance &Instance)
static constexpr auto SetupTransitionBeginState
StateType AutoMeasureSampleStepStateFunc(DynExp::ModuleInstance &Instance)
const Util::StateMachineContext< StateMachineStateType > WidefieldImageAcquisitionSetupTransitioningContext
static constexpr auto WaitingForWidefieldImageState
void OnAutoMeasureNumberImageSetsChanged(DynExp::ModuleInstance *Instance, int Value) const
const std::shared_ptr< AtomicWidefieldImageProcessingStateType > WidefieldCellIDState
const Util::StateMachineContext< StateMachineStateType > ConfocalOptimizationContext
void OnAutoMeasureCountRateThresholdChanged(DynExp::ModuleInstance *Instance, int Value) const
bool IsReadyState() const noexcept
StateType StartAutoMeasureLocalization(Util::SynchronizedPointer< ModuleDataType > &ModuleData) const
void OnWidefieldLEDExposureTimeChanged(DynExp::ModuleInstance *Instance, int Value) const
StateType AutoMeasureLocalizationSaveLEDImageStateFunc(DynExp::ModuleInstance &Instance)
static constexpr auto AutoMeasureCharacterizationSpectrumBeginState
StateType AutoMeasureCharacterizationStepStateFunc(DynExp::ModuleInstance &Instance)
void OnInit(DynExp::ModuleInstance *Instance) const override final
This event is triggered right before the module thread starts. Override it to lock instruments this m...
StateType AutoMeasureCharacterizationSpectrumBeginStateFunc(DynExp::ModuleInstance &Instance)
StateType WidefieldCellWaitUntilCenteredStateFunc(DynExp::ModuleInstance &Instance)
void OnGeneralConfocalPowerChanged(DynExp::ModuleInstance *Instance, double Value) const
static constexpr auto LEDImageAcquisitionBeginState
void OnAutoMeasureOptimizationMaxDistanceChanged(DynExp::ModuleInstance *Instance, int Value) const
void OnToggleAutoMeasureSpectrumEnabled(DynExp::ModuleInstance *Instance, int State) const
WidefieldMicroscope(const std::thread::id OwnerThreadID, DynExp::ParamsBasePtrType &&Params)
StateType ReadyStateFunc(DynExp::ModuleInstance &Instance)
static constexpr auto AutoMeasureLocalizationMovingState
const std::shared_ptr< AtomicPositionerStateType > ConfocalScanPositionerStateY
StateType AutoMeasureCharacterizationGotoEmitterStateFunc(DynExp::ModuleInstance &Instance)
void OnConfocalOptimizationInitZStepSizeChanged(DynExp::ModuleInstance *Instance, double Value) const
ModuleDataType::PositionPoint CalcMarkerToConfocalSpotDestiny(Util::SynchronizedPointer< const ParamsType > &ModuleParams, Util::SynchronizedPointer< ModuleDataType > &ModuleData, QPoint MarkerPos, QPointF SamplePos) const
WidefieldImageProcessingStateType
static constexpr auto AutoMeasureSampleFindEmittersState
StateType ConfocalOptimizationInitStateFunc(DynExp::ModuleInstance &Instance)
StateType FindingConfocalSpotBeginStateFunc(DynExp::ModuleInstance &Instance)
StateType AutofocusBeginStateFunc(DynExp::ModuleInstance &Instance)
void OnConfocalOptimizationInitXYStepSizeChanged(DynExp::ModuleInstance *Instance, double Value) const
void OnGeneralFocusConfocalOffsetVoltageChanged(DynExp::ModuleInstance *Instance, double Value) const
static constexpr auto AutoMeasureCharacterizationFinishedState
void OnGoToSamplePos(DynExp::ModuleInstance *Instance, QPointF SamplePos) const
void OnAutoMeasureCellRangeToXChanged(DynExp::ModuleInstance *Instance, int Value) const
void OnResetCellID(DynExp::ModuleInstance *Instance, bool) const
static double ConfocalOptimizationFuncForwarder(const gsl_vector *vector, void *params)
const Util::StateMachineContext< StateMachineStateType > AutofocusSetupTransitioningContext
static constexpr auto ConfocalScanWaitUntilMovedState
WidefieldMicroscopeParams ParamsType
StateType SetupTransitionEndStateFunc(DynExp::ModuleInstance &Instance)
StateType WaitingForImageReadyToCaptureStateFunc(DynExp::ModuleInstance &Instance)
std::future< ConfocalOptimizationThreadReturnType > ConfocalOptimizationThreadReturnFuture
const std::shared_ptr< AtomicWidefieldImageProcessingStateType > WidefieldLocalizationState
void OnSaveCurrentImage(DynExp::ModuleInstance *Instance, QString Filename) const
static constexpr auto WaitingForLEDImageState
void OnAutoMeasureImagePositionScatterRadius(DynExp::ModuleInstance *Instance, int Value) const
static constexpr auto AutoMeasureSampleCharacterizeState
void UpdateUIChild(const ModuleBase::ModuleDataGetterType &ModuleDataGetter) override final
void OnCaptureLEDImage(DynExp::ModuleInstance *Instance, bool) const
void OnToggleAutoMeasureHBTEnabled(DynExp::ModuleInstance *Instance, int State) const
void OnConfocalConfocalHeightChanged(DynExp::ModuleInstance *Instance, int Value) const
static constexpr auto WaitingForLEDImageFinishedState
void OnAutoMeasureSavePathChanged(DynExp::ModuleInstance *Instance, QString Path) const
const Util::StateMachineContext< StateMachineStateType > AutoMeasureSampleCharacterizationHBTContext
gsl_multimin_fminimizer *const GSLConfocalOptimizationState
void OnWidefieldLocalizeEmitters(DynExp::ModuleInstance *Instance, bool) const
static constexpr auto WaitingForWidefieldImageReadyToCaptureState
static constexpr auto ConfocalOptimizationInitSubStepState
std::atomic< size_t > ConfocalOptimizationNumStepsPerformed
static constexpr auto ConfocalOptimizationWaitState
StateType InitiateLocalizationFromImage(Util::SynchronizedPointer< ModuleDataType > &ModuleData) const
const Util::StateMachineContext< StateMachineStateType > AutoMeasureCharacterizationOptimizationContext
double ConfocalOptimizationFeedbackType
StateType AutofocusWaitingStateFunc(DynExp::ModuleInstance &Instance)
void OnConfocalOptimizationToleranceChanged(DynExp::ModuleInstance *Instance, double Value) const
bool TurnOnPumpSourceAfterTransitioning
void OnToggleAutoMeasureOptimizeEnabled(DynExp::ModuleInstance *Instance, int State) const
const Util::StateMachineContext< StateMachineStateType > AutoMeasureCharacterizationContext
void OnHHBTMaxIntegrationTimeChanged(DynExp::ModuleInstance *Instance, double Value) const
static constexpr auto FindingConfocalSpotBeginState
std::future< ConfocalOptimizationFeedbackType > ConfocalOptimizationFeedbackFuture
Util::DynExpErrorCodes::DynExpErrorCodes ModuleMainLoop(DynExp::ModuleInstance &Instance) override final
Module main loop. The function is executed periodically by the module thread. Also refer to GetMainLo...
static constexpr auto WidefieldCellWaitUntilCenteredState
void SetHBTSwitch(Util::SynchronizedPointer< const ParamsType > &ModuleParams, Util::SynchronizedPointer< ModuleDataType > &ModuleData, bool IsHBTMode) const
WidefieldMicroscopeData ModuleDataType
static constexpr auto FindingConfocalSpotAfterRecordingWidefieldImageState
void OnPerformConfocalScan(DynExp::ModuleInstance *Instance, bool) const
const std::shared_ptr< AtomicPositionerStateType > ConfocalScanPositionerStateX
void OnSpectrumFinishedRecording(DynExp::ModuleInstance *Instance) const
bool ImageCapturingPaused
void OnTogglePumpLightSource(DynExp::ModuleInstance *Instance, bool State) const
static constexpr auto AutoMeasureCharacterizationGotoEmitterState
StateType ConfocalScanWaitUntilMovedStateFunc(DynExp::ModuleInstance &Instance)
StateType WaitingForWidefieldLocalizationStateFunc(DynExp::ModuleInstance &Instance)
StateType StartAutofocus(Util::SynchronizedPointer< ModuleDataType > &ModuleData) const
static constexpr auto AutoMeasureLocalizationStepState
StateType ReturnToReadyStateFunc(DynExp::ModuleInstance &Instance)
void OnWidefieldApplyPumpExposureTime(DynExp::ModuleInstance *Instance, bool) const
std::promise< ConfocalOptimizationFeedbackType > ConfocalOptimizationFeedbackPromise
StateType InitializingStateFunc(DynExp::ModuleInstance &Instance)
void RecordImage(Util::SynchronizedPointer< ModuleDataType > &ModuleData) const
StateType FindingConfocalSpotAfterRecordingWidefieldImageStateFunc(DynExp::ModuleInstance &Instance)
void OnFinishedAutofocus(DynExp::ModuleInstance *Instance, bool Success, double Voltage) const
StateType ConfocalOptimizationWaitStateFunc(DynExp::ModuleInstance &Instance)
static constexpr auto AutoMeasureSampleAdvanceCellState
void ConfocalSurfaceSelectedPointChanged(DynExp::ModuleInstance *Instance, QPoint Position) const
const std::shared_ptr< AtomicPositionerStateType > ConfocalScanPositionerStateZ
void OnWidefieldApplyLEDExposureTime(DynExp::ModuleInstance *Instance, bool) const
virtual std::string GetName() const override
Returns the name of this Object type.
bool IsSampleMoving(Util::SynchronizedPointer< ModuleDataType > &ModuleData) const
Checks whether the sample is moving in x- or y-direction. The z-direction is ignored currently since ...
virtual std::string GetCategory() const override
Returns the category of this Object type.
const Util::StateMachineContext< StateMachineStateType > AutoMeasureLocalizationContext
StateType AutoMeasureCharacterizationHBTBeginStateFunc(DynExp::ModuleInstance &Instance)
static constexpr auto WaitingForWidefieldImageFinishedState
static constexpr auto SpectrumAcquisitionFinishedState
StateType WidefieldImageAcquisitionBeginStateFunc(DynExp::ModuleInstance &Instance)
StateType StartAutoMeasureSampleCharacterization(Util::SynchronizedPointer< ModuleDataType > &ModuleData) const
void OnAutoMeasureInitialImageSetWaitTimeChanged(DynExp::ModuleInstance *Instance, int Value) const
static constexpr auto AutoMeasureCharacterizationSpectrumFinishedState
void OnToggleHBTMirror(DynExp::ModuleInstance *Instance, bool Checked) const
static constexpr auto WaitingFinishedState
static constexpr auto AutofocusBeginState
const Util::StateMachineContext< StateMachineStateType > LEDImageAcquisitionSetupTransitioningContext
StateType AutoMeasureSampleAdvanceCellStateFunc(DynExp::ModuleInstance &Instance)
Checks whether the last cell within the sample characterization range (specified as a square region b...
void OnAutoMeasureRunLocalization(DynExp::ModuleInstance *Instance, bool) const
StateType AutoMeasureCharacterizationSpectrumFinishedStateFunc(DynExp::ModuleInstance &Instance)
void InitializeHBT(Util::SynchronizedPointer< ModuleDataType > &ModuleData) const
static constexpr auto AutoMeasureSampleFinishedState
std::atomic< PositionerStateType > AtomicPositionerStateType
std::chrono::system_clock::time_point WaitingEndTimePoint
static constexpr auto WaitingForWidefieldCellIDState
static constexpr auto AutoMeasureCharacterizationOptimizationFinishedState
void OnHBTBinCountChanged(DynExp::ModuleInstance *Instance, int Value) const
void OnGeneralFocusZeroVoltageChanged(DynExp::ModuleInstance *Instance, double Value) const
static constexpr auto ConfocalOptimizationFinishedState
StateType SetupTransitionBeginStateFunc(DynExp::ModuleInstance &Instance)
StateType SetupTransitioningStateFunc(DynExp::ModuleInstance &Instance)
Util::StateMachine< StateMachineStateType > StateMachine
void OnAutoMeasureLocalizationTypeChanged(DynExp::ModuleInstance *Instance, int Value) const
static constexpr auto SetupTransitioningState
const Util::StateMachineContext< StateMachineStateType > AutoMeasureCharacterizationHBTContext
void OnWidefieldReadCellID(DynExp::ModuleInstance *Instance, bool) const
static constexpr auto WidefieldCellIDReadFinishedState
StateType WaitingStateFunc(DynExp::ModuleInstance &Instance)
StateType AutoMeasureLocalizationMovingStateFunc(DynExp::ModuleInstance &Instance)
static constexpr auto WidefieldImageAcquisitionBeginState
StateType ResetState(Util::SynchronizedPointer< ModuleDataType > &ModuleData) const
Aborts a measurement or experimental sequence and continues with the ready state.
void OnSetupModeChanged(DynExp::ModuleInstance *Instance, QAction *Action) const
std::future< ConfocalOptimizationStateType > ConfocalOptimizationStateFuture
void OnAutoMeasureCellSkipYChanged(DynExp::ModuleInstance *Instance, int Value) const
constexpr static auto Name() noexcept
const Util::StateMachineContext< StateMachineStateType > AutoMeasureSampleCharacterizationSpectrumContext
StateType WaitingForWidefieldCellIDStateFunc(DynExp::ModuleInstance &Instance)
void StopHBT(Util::SynchronizedPointer< ModuleDataType > &ModuleData) const
static constexpr auto AutoMeasureSampleLocalizeState
static constexpr auto AutoMeasureCharacterizationHBTWaitForInitState
static constexpr auto ConfocalScanStepState
void OnExit(DynExp::ModuleInstance *Instance) const override final
This event is triggered right before the module thread terminates (not due to an exception,...
double ConfocalOptimizationFunc(const gsl_vector *vector) noexcept
void OnTerminate(DynExp::ModuleInstance *Instance, bool) const
void OnImageCapturingPaused(DynExp::ModuleInstance *Instance) const
void OnAutoMeasureRunCharacterization(DynExp::ModuleInstance *Instance, bool) const
static ConfocalOptimizationThreadReturnType ConfocalOptimizationThread(WidefieldMicroscope *Owner)
void OnWidefieldAnalyzeImageDistortion(DynExp::ModuleInstance *Instance, bool) const
void OnSetHomePosition(DynExp::ModuleInstance *Instance, bool) const
void UpdatePumpPower(Util::SynchronizedPointer< ModuleDataType > &ModuleData) const
static constexpr auto ConfocalOptimizationInitState
static constexpr auto FindingConfocalSpotAfterTransitioningToConfocalModeState
virtual ~WidefieldMicroscope()
static constexpr auto AutofocusFinishedState
static constexpr auto AutoMeasureLocalizationFinishedState
StateType AutoMeasureLocalizationStepStateFunc(DynExp::ModuleInstance &Instance)
void OnAutoMeasureCellRangeToYChanged(DynExp::ModuleInstance *Instance, int Value) const
StateType StartAutoMeasureCharacterization(Util::SynchronizedPointer< ModuleDataType > &ModuleData, Util::MarkerGraphicsView::MarkerType::IDType FirstEmitterID=-1) const
std::atomic< WidefieldImageProcessingStateType > AtomicWidefieldImageProcessingStateType
void OnMeasureHBT(DynExp::ModuleInstance *Instance, bool) const
std::chrono::system_clock::time_point SetupTransitionFinishedTimePoint
static constexpr auto AutoMeasureCharacterizationStepState
const Util::StateMachineContext< StateMachineStateType > FindingConfocalSpotRecordingWidefieldImageContext
static constexpr auto AutoMeasureCharacterizationHBTBeginState
void ResetImpl(dispatch_tag< QModuleBase >) override final
StateType AutoMeasureSampleLocalizeStateFunc(DynExp::ModuleInstance &Instance)
StateType AutoMeasureSampleCharacterizeStateFunc(DynExp::ModuleInstance &Instance)
std::list< WidefieldMicroscopeData::PositionPoint > ConfocalScanPositions
void OnGeneralSetZeroFocus(DynExp::ModuleInstance *Instance, bool) const
void OnWidefieldPumpExposureTimeChanged(DynExp::ModuleInstance *Instance, int Value) const
StateType ConfocalScanWaitUntilCapturedStateFunc(DynExp::ModuleInstance &Instance)
static constexpr auto WaitingForLEDImageReadyToCaptureState
static constexpr auto AutoMeasureSampleStepState
void InitializeConfocalOptimizer(Util::SynchronizedPointer< ModuleDataType > &ModuleData) const
static constexpr auto InitializingState
size_t NumFailedUpdateAttempts
StateType AutoMeasureLocalizationSaveWidefieldImageStateFunc(DynExp::ModuleInstance &Instance)
const Util::StateMachineContext< StateMachineStateType > AutoMeasureCharacterizationSpectrumContext
static constexpr auto WaitingForWidefieldLocalizationState
void OnGeneralWidefieldPowerChanged(DynExp::ModuleInstance *Instance, double Value) const
static constexpr auto AutoMeasureSampleReadCellIDFinishedState
gsl_vector *const GSLConfocalOptimizationStepSize
void OnAutoMeasureCellRangeFromYChanged(DynExp::ModuleInstance *Instance, int Value) const
void PrepareImageRecording(Util::SynchronizedPointer< ModuleDataType > &ModuleData) const
StateType ConfocalOptimizationStepStateFunc(DynExp::ModuleInstance &Instance)
void OnToggleLEDLightSource(DynExp::ModuleInstance *Instance, bool State) const
void OnStopAction(DynExp::ModuleInstance *Instance, bool) const
ModuleDataType::QSurfaceDataRowsType CalculateConfocalScanPositions(const int Width, const int Height, const int DistPerPixel, const WidefieldMicroscopeData::PositionPoint CenterPosition) const
static constexpr auto AutoMeasureSampleReadCellIDState
void OnBringMarkerToConfocalSpot(DynExp::ModuleInstance *Instance, QPoint MarkerPos, QPointF SamplePos) const
std::promise< ConfocalOptimizationStateType > ConfocalOptimizationStatePromise
std::chrono::milliseconds GetMainLoopDelay() const override final
Specifies in which time intervals the module's event queue runs to handle pending events.
void OnWidefieldImageClicked(DynExp::ModuleInstance *Instance, QPoint Position) const
StateType AutoMeasureSampleReadCellIDStateFunc(DynExp::ModuleInstance &Instance)
void OnAutoMeasureNumOptimizationAttemptsChanged(DynExp::ModuleInstance *Instance, int Value) const
static constexpr auto SetupTransitionEndState
static constexpr auto WidefieldLocalizationFinishedState
StateType ConfocalScanCaptureStateFunc(DynExp::ModuleInstance &Instance)
const Util::StateMachineContext< StateMachineStateType > AutoMeasureSampleCharacterizationOptimizationContext
StateType ConfocalScanStepStateFunc(DynExp::ModuleInstance &Instance)
constexpr static auto Category() noexcept
static constexpr auto AutofocusWaitingState
std::atomic_bool ConfocalOptimizationPromisesRenewed
void OnGeneralApplyZeroFocus(DynExp::ModuleInstance *Instance, bool) const
StateType AutoMeasureSampleFindEmittersStateFunc(DynExp::ModuleInstance &Instance)
std::filesystem::path BuildFilename(Util::SynchronizedPointer< ModuleDataType > &ModuleData, std::string_view FilenameSuffix) const
gsl_multimin_function GSLConfocalOptimizationFuncDesc
StateType LEDImageAcquisitionBeginStateFunc(DynExp::ModuleInstance &Instance)
void BringMarkerToConfocalSpot(Util::SynchronizedPointer< const ParamsType > &ModuleParams, Util::SynchronizedPointer< ModuleDataType > &ModuleData, QPoint MarkerPos, QPointF SamplePos) const
static constexpr size_t GSLConfocalOptimizationNumDimensions
void OnAutoMeasureCellSkipXChanged(DynExp::ModuleInstance *Instance, int Value) const
void OnAutoMeasureRunSampleCharacterization(DynExp::ModuleInstance *Instance, bool) const
static constexpr auto ConfocalScanWaitUntilCapturedState
void OnGeneralFocusCurrentVoltageChanged(DynExp::ModuleInstance *Instance, double Value) const
static constexpr auto ReadyState
void OnWidefieldFindConfocalSpot(DynExp::ModuleInstance *Instance, bool) const
StateType AutoMeasureSampleReadCellIDFinishedStateFunc(DynExp::ModuleInstance &Instance)
static constexpr auto HBTAcquiringState
void ConfocalOptimizationInitPromises()
static constexpr auto HBTFinishedState
ConfocalOptimizationThreadReturnType
StateType AutoMeasureCharacterizationHBTWaitForInitStateFunc(DynExp::ModuleInstance &Instance)
gsl_vector *const GSLConfocalOptimizationInitialPoint
StateType SpectrumAcquisitionWaitingStateFunc(DynExp::ModuleInstance &Instance)
static constexpr auto AutoMeasureLocalizationSaveWidefieldImageState
const Util::StateMachineContext< StateMachineStateType > FindingConfocalSpotBeginContext
DynExp's core class acts as the interface between the user interface and DynExp's internal data like ...
Base class for modules. Modules implement programs on their own (e.g. measurement protocols or server...
Util::CallableMemberWrapper< ModuleBase, ModuleDataTypeSyncPtrType(ModuleBase::*)(const std::chrono::milliseconds)> ModuleDataGetterType
Invoking an instance of this alias is supposed to call ModuleBase::GetModuleData() of the instance th...
const std::unique_ptr< ModuleDataType > ModuleData
Module data belonging to this ModuleBase instance.
ModuleBase(const std::thread::id OwnerThreadID, ParamsBasePtrType &&Params)
Constructs a ModuleBase instance.
Configurator class for ModuleBase.
Data structure to contain data which is synchronized in between different threads....
Refer to ParamsBase::dispatch_tag.
Defines data for a thread belonging to a ModuleBase instance. Refer to RunnableInstance.
Parameter class for ModuleBase.
const std::thread::id OwnerThreadID
Thread id of the thread which has constructed (and owns) this Object instance.
const ParamsBasePtrType Params
Pointer to the parameter class instance belonging to this Object instance.
const ItemIDType ID
ID of the Object this parameter class instance belongs to.
const auto & GetCore() const noexcept
Returns a reference to DynExp's core.
const DynExpCore & Core
Reference to DynExp's core.
Tag for function dispatching mechanism within this class used when derived classes are not intended t...
Base class for modules with a Qt-based user interface. Derive from this class to implement modules wi...
void SetFocus() noexcept
Focuses/activates Widget and moves it on top of other windows if possible. Does nothing if any of Wid...
QModuleBase(const std::thread::id OwnerThreadID, DynExp::ParamsBasePtrType &&Params)
Constructs a QModuleBase instance.
Configurator class for QModuleBase.
Data class for QModuleBase.
Parameter class for QModuleBase.
QModuleParamsBase(ItemIDType ID, const DynExpCore &Core)
Constructs the parameters for a QModuleBase instance.
void Set(EnumType Flag)
Sets a flag.
bool Test(const std::array< EnumType, N > &Flags) const
Tests whether all of the flags passed as an array are set.
State machine context as used by class StateMachine. A state machine context holds a map with keys an...
State machine state as used by class StateMachine. A state mainly wraps a state function of the membe...
This class models a state machine. It keeps track of the current state and allows to invoke its assoc...
Pointer to lock a class derived from ISynchronizedPointerLockable for synchronizing between threads....
@ Y
Y component of the signal in cartesian coordinates.
@ X
X component of the signal in cartesian coordinates.
@ AutoMeasureCharacterizationGotoEmitter
@ AutoMeasureLocalizationSaveWidefieldImage
@ AutoMeasureLocalizationFinished
@ AutoMeasureLocalizationMoving
@ WaitingForWidefieldImage
@ WaitingForLEDImageReadyToCapture
@ FindingConfocalSpotBegin
@ AutoMeasureSampleAdvanceCell
@ WaitingForWidefieldImageReadyToCapture
@ FindingConfocalSpotAfterTransitioningToConfocalMode
@ AutoMeasureSampleFinished
@ AutoMeasureCharacterizationSpectrumFinished
@ AutoMeasureSampleReadCellIDFinished
@ WaitingForLEDImageFinished
@ WidefieldLocalizationFinished
@ LEDImageAcquisitionBegin
@ AutoMeasureSampleReadCellID
@ ConfocalOptimizationFinished
@ WaitingForWidefieldImageFinished
@ AutoMeasureSampleFindEmitters
@ AutoMeasureSampleCharacterize
@ AutoMeasureCharacterizationStep
@ WidefieldCellIDReadFinished
@ AutoMeasureCharacterizationHBTWaitForInit
@ ConfocalOptimizationInitSubStep
@ ConfocalOptimizationWait
@ ConfocalScanWaitUntilMoved
@ FindingConfocalSpotAfterRecordingWidefieldImage
@ WaitingForWidefieldCellID
@ WaitingForWidefieldLocalization
@ ConfocalOptimizationInit
@ AutoMeasureCharacterizationHBTBegin
@ ConfocalOptimizationStep
@ SpectrumAcquisitionWaiting
@ SetupTransitionFinished
@ AutoMeasureCharacterizationOptimizationFinished
@ AutoMeasureSampleLocalize
@ AutoMeasureLocalizationStep
@ AutoMeasureLocalizationSaveLEDImage
@ AutoMeasureCharacterizationFinished
@ ConfocalScanWaitUntilCaptured
@ AutoMeasureCharacterizationSpectrumBegin
@ AutoMeasureCharacterizationHBTFinished
@ WidefieldImageAcquisitionBegin
@ SpectrumAcquisitionFinished
@ WidefieldCellWaitUntilCentered
WidefieldMicroscopeData::PositionPoint operator-(const WidefieldMicroscopeData::PositionPoint &lhs, const WidefieldMicroscopeData::PositionPoint &rhs)
WidefieldMicroscopeData::PositionPoint operator+(const WidefieldMicroscopeData::PositionPoint &lhs, const WidefieldMicroscopeData::PositionPoint &rhs)
constexpr auto Instrument
DynExp's main namespace contains the implementation of DynExp including classes to manage resources (...
std::unique_ptr< ParamsBase > ParamsBasePtrType
Alias for a pointer to the parameter system base class ParamsBase.
size_t ItemIDType
ID type of objects/items managed by DynExp.
DynExpErrorCodes
DynExp's error codes
DynExp's Util namespace contains commonly used functions and templates as well as extensions to Qt an...
std::chrono::duration< double, std::pico > picoseconds
Extends std::chrono by a duration data type for picoseconds.
std::chrono::duration< double > seconds
Extends std::chrono by a duration data type for seconds capable of storing fractions of seconds.
Accumulates include statements to provide a precompiled header.
double DistTo(const PositionPoint &Other) const
std::string ToStr(std::string_view Prefix="") const
constexpr PositionPoint(PositionType x, PositionType y, PositionType z)
constexpr bool IsEmpty() const noexcept
constexpr PositionPoint(PositionType x, PositionType y)
constexpr PositionPoint(PositionType x) noexcept
constexpr PositionPoint() noexcept
constexpr void Reset() noexcept
constexpr void Reset() noexcept
constexpr SPDStateType(double Value=0, bool Ready=false, size_t StreamSamplesWritten=0) noexcept
size_t StreamSamplesWritten