DynExp
Highly flexible laboratory automation for dynamically changing experiments.
Loading...
Searching...
No Matches
ODMR.h
Go to the documentation of this file.
1// This file is part of DynExp.
2
9#pragma once
10
11#include "stdafx.h"
12#include "DynExpCore.h"
13#include "../../MetaInstruments/FunctionGenerator.h"
14#include "../../MetaInstruments/LockinAmplifier.h"
15#include "../../MetaInstruments/AnalogIn.h"
16#include "../../MetaInstruments/AnalogOut.h"
17#include "../../MetaInstruments/DigitalOut.h"
18
19#include "ODMRWidget.h"
20
21namespace DynExpModule::ODMR
22{
24 {
25 public:
28 enum class RFModulationType { None, Sine, Pulse };
30
31 ODMRData() { Init(); }
32 virtual ~ODMRData() = default;
33
34 template <size_t N>
35 bool TestFeature(const std::array<FeatureType, N>& Flags) const { return Features.Test(Flags); }
36
37 bool TestFeature(FeatureType Flag) { return Features.Test(Flag); }
38 void SetFeature(FeatureType Flag) { Features.Set(Flag); }
39
40 auto& GetRFGenerator() noexcept { return RFGenerator; }
41 auto& GetSignalDetector() noexcept { return SignalDetector; }
42 auto GetLockinAmplifier() { return DynExp::dynamic_Object_cast<DynExpInstr::LockinAmplifier>(GetSignalDetector().get()); }
43 auto GetAnalogIn() { return DynExp::dynamic_Object_cast<DynExpInstr::AnalogIn>(GetSignalDetector().get()); }
44 auto& GetTrigger() noexcept { return TriggerOut; }
45 auto& GetAuxAnalogOut() noexcept { return AuxAnalogOut; }
46
47 double GetRFStartFreq() const noexcept { return std::abs(RFCenterFreq) - std::abs(RFFreqSpan) / 2; }
48 double GetRFStopFreq() const noexcept { return std::abs(RFCenterFreq) + std::abs(RFFreqSpan) / 2; }
49 unsigned long long GetNumSamples() const noexcept { return std::abs(RFFreqSpan / RFFreqSpacing); }
50 unsigned long long GetSweepNumberSteps() const noexcept;
51 std::stringstream AssembleCSVHeader(double RFPower, double RFModulationDepth, double AuxAnalogOutValue, bool IsRFOffResonance);
52
53 double RFPower{}; // in units of RFGenerator
55 double RFCenterFreq{}; // in Hz
56 double RFFreqSpan{}; // in Hz
57 double RFFreqSpacing{}; // in Hz
58 double RFDwellTime{}; // in s
59
61 double RFModulationFreq{}; // in Hz
62 double RFModulationDepth{}; // in Hz
63
64 double ODMRSamplingRate{}; // in samples/s
65
67 std::string SaveDataPath;
68 unsigned int CurrentSaveIndex{};
70
74 double SensitivityResonanceFreq{}; // in Hz
75 double SensitivityOffResonanceFreq{}; // in Hz
76 double SensitivityResonanceSpan{}; // in Hz
77 double SensitivitySamplingRate{}; // in samples/s
78 double SensitivityDuration{}; // in s
79
81 double GyromagneticRatio{}; // in Hz/T
82
85 double SweepSeriesStart{}; // in kHz or units of RFGenerator
86 double SweepSeriesStop{}; // in kHz or units of RFGenerator
87 double SweepSeriesStep{}; // in kHz or units of RFGenerator
90 unsigned long long CurrentSweepIndex;
91
95
99
100 double AcquisitionTime{}; // in s
101
104
105 private:
106 void ResetImpl(dispatch_tag<QModuleDataBase>) override final;
108
109 void Init();
110
115
117 };
118
120 {
121 public:
123 virtual ~ODMRParams() = default;
124
125 virtual const char* GetParamClassTag() const noexcept override { return "ODMRParams"; }
126
128 "RFGenerator", "RF generator", "RF generator to drive spin transitions", DynExpUI::Icons::Instrument };
130 "SignalDetector", "Signal detector", "Detector to record the ODMR signal (might be a lock-in amplifier or any DAQ device)", DynExpUI::Icons::Instrument };
132 "TriggerOut", "Trigger output (DO)", "Trigger output to synchronize an RF frequency sweep and the data acquisition", DynExpUI::Icons::Instrument };
134 "AuxAnalogOut", "Auxiliary analog output (AO)", "Auxiliary output to perform ODMR parameter sweeps with", DynExpUI::Icons::Instrument, true };
135
136 private:
138 };
139
141 {
142 public:
145
146 ODMRConfigurator() = default;
147 virtual ~ODMRConfigurator() = default;
148
149 private:
150 virtual DynExp::ParamsBasePtrType MakeParams(DynExp::ItemIDType ID, const DynExp::DynExpCore& Core) const override final { return DynExp::MakeParams<ODMRConfigurator>(ID, Core); }
151 };
152
154 {
155 public:
159
160 constexpr static auto Name() noexcept { return "ODMR"; }
161 constexpr static auto Category() noexcept { return "Experiments"; }
162
163 ODMR(const std::thread::id OwnerThreadID, DynExp::ParamsBasePtrType&& Params);
164 virtual ~ODMR() = default;
165
166 virtual std::string GetName() const override { return Name(); }
167 virtual std::string GetCategory() const override { return Category(); }
168
169 std::chrono::milliseconds GetMainLoopDelay() const override final;
170 bool TreatModuleExceptionsAsWarnings() const override final { return StateMachine.GetCurrentState()->GetState() != StateType::Initializing; }
171
172 private:
174
175 void ResetImpl(dispatch_tag<QModuleBase>) override final;
176
177 std::unique_ptr<DynExp::QModuleWidget> MakeUIWidget() override final;
178 void UpdateUIChild(const ModuleBase::ModuleDataGetterType& ModuleDataGetter) override final;
179
180 // Helper functions
181 bool IsReadyState() const noexcept { return StateMachine.GetCurrentState()->GetState() == StateType::Ready; }
183 void InitRFGenerator(double Frequency, bool EnableRF, Util::SynchronizedPointer<ModuleDataType>& ModuleData) const;
186 void ConnectChartWidgets(QLineSeries* ODMRLineSeries);
187
188 // Events, run in module thread
189 void OnInit(DynExp::ModuleInstance* Instance) const override final;
190 void OnExit(DynExp::ModuleInstance* Instance) const override final;
191
192 void OnRFPowerChanged(DynExp::ModuleInstance* Instance, double Value) const;
193 void OnRFAutoEnableClicked(DynExp::ModuleInstance* Instance, int Checked) const;
194 void OnRFCenterFreqChanged(DynExp::ModuleInstance* Instance, double Value) const;
195 void OnRFFreqSpanChanged(DynExp::ModuleInstance* Instance, double Value) const;
196 void OnRFFreqSpacingChanged(DynExp::ModuleInstance* Instance, double Value) const;
197 void OnRFDwellTimeChanged(DynExp::ModuleInstance* Instance, double Value) const;
198
199 void OnRFModNoneClicked(DynExp::ModuleInstance* Instance, bool Checked) const;
200 void OnRFModSineClicked(DynExp::ModuleInstance* Instance, bool Checked) const;
201 void OnRFModPulseClicked(DynExp::ModuleInstance* Instance, bool Checked) const;
202 void OnRFModFreqChanged(DynExp::ModuleInstance* Instance, double Value) const;
203 void OnRFModDepthChanged(DynExp::ModuleInstance* Instance, double Value) const;
204
205 void OnODMRSamplingRateChanged(DynExp::ModuleInstance* Instance, double Value) const;
206
207 void OnSavePathChanged(DynExp::ModuleInstance* Instance, QString Path) const;
208 void OnSaveIndexChanged(DynExp::ModuleInstance* Instance, int Index) const;
209 void OnAutosaveClicked(DynExp::ModuleInstance* Instance, int Checked) const;
210
211 void OnRecordSensitivityClicked(DynExp::ModuleInstance* Instance, int Checked) const;
212 void OnRecordSensitivityOncePerSweepClicked(DynExp::ModuleInstance* Instance, int Checked) const;
213 void OnRecordSensitivityOffResonanceClicked(DynExp::ModuleInstance* Instance, int Checked) const;
214 void OnSensitivityResonanceFreqChanged(DynExp::ModuleInstance* Instance, double Value) const;
215 void OnSensitivityOffResonanceFreqChanged(DynExp::ModuleInstance* Instance, double Value) const;
216 void OnSensitivityResonanceSpanChanged(DynExp::ModuleInstance* Instance, double Value) const;
217 void OnSensitivitySamplingRateChanged(DynExp::ModuleInstance* Instance, double Value) const;
218 void OnSensitivityDurationChanged(DynExp::ModuleInstance* Instance, double Value) const;
219
220 void OnEnableSensitivityAnalysisClicked(DynExp::ModuleInstance* Instance, bool Checked) const;
221 void OnGyromagneticRatioChanged(DynExp::ModuleInstance* Instance, double Value) const;
222
223 void OnEnableSweepSeriesClicked(DynExp::ModuleInstance* Instance, int Checked) const;
224 void OnSweepSeriesParamChanged(DynExp::ModuleInstance* Instance, int Index) const;
225 void OnSweepSeriesStartChanged(DynExp::ModuleInstance* Instance, double Value) const;
226 void OnSweepSeriesStopChanged(DynExp::ModuleInstance* Instance, double Value) const;
227 void OnSweepSeriesStepChanged(DynExp::ModuleInstance* Instance, double Value) const;
228 void OnSweepSeriesRetraceClicked(DynExp::ModuleInstance* Instance, int Checked) const;
229 void OnSweepSeriesAdvanceLastValueClicked(DynExp::ModuleInstance* Instance, int Checked) const;
230
231 void OnStartClicked(DynExp::ModuleInstance* Instance, bool) const;
232 void OnStartSensitivityClicked(DynExp::ModuleInstance* Instance, bool) const;
233 void OnStopClicked(DynExp::ModuleInstance* Instance, bool) const;
234 void OnRFOnClicked(DynExp::ModuleInstance* Instance, bool) const;
235 void OnRFOffClicked(DynExp::ModuleInstance* Instance, bool) const;
236
237 void OnODMRChartHovered(DynExp::ModuleInstance* Instance, QPointF Point, bool State) const;
238 void OnODMRChartClicked(DynExp::ModuleInstance* Instance, QPointF Point) const;
239
240 // State functions for state machine
251
252 // States for state machine
254 &ODMR::InitializingStateFunc, "Initializing module...");
256 &ODMR::ReadyStateFunc, "Ready");
258 &ODMR::MeasurementSeriesInitFunc, "Measuring...");
260 &ODMR::MeasurementSeriesStepFunc, "Measuring...");
262 &ODMR::ODMRTraceInitFunc, "Acquiring ODMR trace...");
264 &ODMR::ODMRTraceWaitFunc, "Acquiring ODMR trace...");
266 &ODMR::ODMRTraceFinishFunc, "Processing and saving ODMR trace...");
268 &ODMR::SensitivityInitFunc, "Acquiring sensitivity series...");
270 &ODMR::SensitivityWaitFunc, "Acquiring sensitivity series...");
272 &ODMR::SensitivityFinishFunc, "Processing and saving sensitivity series...");
273
274 // Contexts for state machine
275 const Util::StateMachineContext<StateMachineStateType> SensitivityOffResonanceContext = { {}, "Acquiring off-resonance sensitivity series..." };
276
277 // Logical const-ness: allow events to set the state machine's current state.
279
280 double NextRFPower{};
283
285 };
286}
Defines DynExp's core module as an interface between the UI and DynExp objects.
User interface belonging to the DynExpModule::ODMR::ODMR module.
UnitType
Units which can be used for data stream instruments.
double ValueType
Data type to represent hardware limits on the sample values to write to the hardware adapter assigned...
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...
Definition ODMR.h:150
auto & GetTrigger() noexcept
Definition ODMR.h:44
DynExpInstr::DataStreamInstrumentData::ValueType AuxAnalogOutMinValue
Definition ODMR.h:97
double SensitivityResonanceFreq
Definition ODMR.h:74
bool TestFeature(FeatureType Flag)
Definition ODMR.h:37
std::stringstream AssembleCSVHeader(double RFPower, double RFModulationDepth, double AuxAnalogOutValue, bool IsRFOffResonance)
Definition ODMR.cpp:21
bool TestFeature(const std::array< FeatureType, N > &Flags) const
Definition ODMR.h:35
double GetRFStopFreq() const noexcept
Definition ODMR.h:48
DynExpInstr::DataStreamInstrumentData::UnitType AuxAnalogOutValueUnit
Definition ODMR.h:96
SweepSeriesType SweepSeries
Definition ODMR.h:84
auto & GetRFGenerator() noexcept
Definition ODMR.h:40
std::string SaveDataPath
Definition ODMR.h:67
DynExp::LinkedObjectWrapperContainer< DynExpInstr::DigitalOut > TriggerOut
Definition ODMR.h:113
unsigned long long CurrentSweepIndex
Definition ODMR.h:90
SensitivityPlotType SensitivityPlot
Definition ODMR.h:103
DynExpInstr::FunctionGeneratorDefs::FunctionDescType RFGeneratorMaxFuncDesc
Definition ODMR.h:93
double SensitivityResonanceSpan
Definition ODMR.h:76
Util::FeatureTester< FeatureType > Features
Definition ODMR.h:116
double SensitivityOffResonanceFreq
Definition ODMR.h:75
unsigned long long GetSweepNumberSteps() const noexcept
Definition ODMR.cpp:13
void SetFeature(FeatureType Flag)
Definition ODMR.h:38
virtual void ResetImpl(dispatch_tag< ODMRData >)
Definition ODMR.h:107
unsigned long long GetNumSamples() const noexcept
Definition ODMR.h:49
DynExp::LinkedObjectWrapperContainer< DynExpInstr::DataStreamInstrument > SignalDetector
Definition ODMR.h:112
DynExp::LinkedObjectWrapperContainer< DynExpInstr::FunctionGenerator > RFGenerator
Definition ODMR.h:111
unsigned int CurrentSaveIndex
Definition ODMR.h:68
double GetRFStartFreq() const noexcept
Definition ODMR.h:47
MeasurementModeType MeasurementMode
Definition ODMR.h:66
DynExp::LinkedObjectWrapperContainer< DynExpInstr::AnalogOut > AuxAnalogOut
Definition ODMR.h:114
DynExpInstr::FunctionGeneratorDefs::FunctionDescType RFGeneratorDefaultFuncDesc
Definition ODMR.h:94
ODMRPlotType ODMRPlot
Definition ODMR.h:102
RFModulationType RFModulation
Definition ODMR.h:60
DynExpInstr::FunctionGeneratorDefs::FunctionDescType RFGeneratorMinFuncDesc
Definition ODMR.h:92
virtual ~ODMRData()=default
bool SensitivityOffResonanceEnabled
Definition ODMR.h:73
DynExpInstr::DataStreamInstrumentData::ValueType AuxAnalogOutMaxValue
Definition ODMR.h:98
auto & GetAuxAnalogOut() noexcept
Definition ODMR.h:45
auto & GetSignalDetector() noexcept
Definition ODMR.h:41
void ResetImpl(dispatch_tag< QModuleDataBase >) override final
Definition ODMR.cpp:8
Param< DynExp::ObjectLink< DynExpInstr::FunctionGenerator > > RFGenerator
Definition ODMR.h:127
Param< DynExp::ObjectLink< DynExpInstr::DataStreamInstrument > > SignalDetector
Definition ODMR.h:129
virtual ~ODMRParams()=default
ODMRParams(DynExp::ItemIDType ID, const DynExp::DynExpCore &Core)
Definition ODMR.h:122
Param< DynExp::ObjectLink< DynExpInstr::AnalogOut > > AuxAnalogOut
Definition ODMR.h:133
void ConfigureParamsImpl(dispatch_tag< QModuleParamsBase >) override final
Definition ODMR.h:137
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...
Definition ODMR.h:125
Param< DynExp::ObjectLink< DynExpInstr::DigitalOut > > TriggerOut
Definition ODMR.h:131
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...
Definition ODMR.cpp:209
size_t NumFailedUpdateAttempts
Definition ODMR.h:284
static constexpr auto MeasurementSeriesInitState
Definition ODMR.h:257
void InitRFGenerator(double Frequency, bool EnableRF, Util::SynchronizedPointer< ModuleDataType > &ModuleData) const
Definition ODMR.cpp:327
virtual std::string GetCategory() const override
Returns the category of this Object type.
Definition ODMR.h:167
void OnSweepSeriesStopChanged(DynExp::ModuleInstance *Instance, double Value) const
Definition ODMR.cpp:600
void OnRFModDepthChanged(DynExp::ModuleInstance *Instance, double Value) const
Definition ODMR.cpp:483
void ConnectChartWidgets(QLineSeries *ODMRLineSeries)
Definition ODMR.cpp:368
static constexpr auto SensitivityWaitState
Definition ODMR.h:269
static constexpr auto ODMRTraceFinishState
Definition ODMR.h:265
void UpdateUIChild(const ModuleBase::ModuleDataGetterType &ModuleDataGetter) override final
Definition ODMR.cpp:261
void OnExit(DynExp::ModuleInstance *Instance) const override final
This event is triggered right before the module thread terminates (not due to an exception,...
Definition ODMR.cpp:407
Util::StateMachine< StateMachineStateType > StateMachine
Definition ODMR.h:278
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...
Definition ODMR.cpp:172
void WaitUntilReadyAndTrigger(Util::SynchronizedPointer< ModuleDataType > &ModuleData) const
Definition ODMR.cpp:348
static constexpr auto ODMRTraceWaitState
Definition ODMR.h:263
StateType MeasurementSeriesInitFunc(DynExp::ModuleInstance &Instance)
Definition ODMR.cpp:695
void OnStopClicked(DynExp::ModuleInstance *Instance, bool) const
Definition ODMR.cpp:646
void OnRFAutoEnableClicked(DynExp::ModuleInstance *Instance, int Checked) const
Definition ODMR.cpp:423
StateType ODMRTraceWaitFunc(DynExp::ModuleInstance &Instance)
Definition ODMR.cpp:771
void OnRFModNoneClicked(DynExp::ModuleInstance *Instance, bool Checked) const
Definition ODMR.cpp:453
void OnRFFreqSpanChanged(DynExp::ModuleInstance *Instance, double Value) const
Definition ODMR.cpp:435
void OnGyromagneticRatioChanged(DynExp::ModuleInstance *Instance, double Value) const
Definition ODMR.cpp:567
virtual ~ODMR()=default
std::chrono::milliseconds GetMainLoopDelay() const override final
Specifies in which time intervals the module's event queue runs to handle pending events.
Definition ODMR.cpp:161
void OnRecordSensitivityOffResonanceClicked(DynExp::ModuleInstance *Instance, int Checked) const
Definition ODMR.cpp:525
bool IsReadyState() const noexcept
Definition ODMR.h:181
void OnODMRSamplingRateChanged(DynExp::ModuleInstance *Instance, double Value) const
Definition ODMR.cpp:489
void OnEnableSweepSeriesClicked(DynExp::ModuleInstance *Instance, int Checked) const
Definition ODMR.cpp:573
void ResetImpl(dispatch_tag< QModuleBase >) override final
Definition ODMR.cpp:198
void OnRFOnClicked(DynExp::ModuleInstance *Instance, bool) const
Definition ODMR.cpp:658
double NextAuxAnalogOutValue
Definition ODMR.h:282
void OnRFModPulseClicked(DynExp::ModuleInstance *Instance, bool Checked) const
Definition ODMR.cpp:469
static constexpr auto SensitivityFinishState
Definition ODMR.h:271
StateType ReadyStateFunc(DynExp::ModuleInstance &Instance)
Definition ODMR.cpp:690
void OnSavePathChanged(DynExp::ModuleInstance *Instance, QString Path) const
Definition ODMR.cpp:495
void OnSweepSeriesStepChanged(DynExp::ModuleInstance *Instance, double Value) const
Definition ODMR.cpp:606
void OnSensitivityResonanceSpanChanged(DynExp::ModuleInstance *Instance, double Value) const
Definition ODMR.cpp:543
StateType SensitivityWaitFunc(DynExp::ModuleInstance &Instance)
Definition ODMR.cpp:917
void OnRecordSensitivityClicked(DynExp::ModuleInstance *Instance, int Checked) const
Definition ODMR.cpp:513
void OnSensitivityOffResonanceFreqChanged(DynExp::ModuleInstance *Instance, double Value) const
Definition ODMR.cpp:537
StateType SensitivityFinishFunc(DynExp::ModuleInstance &Instance)
Definition ODMR.cpp:924
static constexpr auto SensitivityInitState
Definition ODMR.h:267
StateType ODMRTraceInitFunc(DynExp::ModuleInstance &Instance)
Definition ODMR.cpp:740
StateType InitializingStateFunc(DynExp::ModuleInstance &Instance)
Definition ODMR.cpp:685
double NextRFModulationDepth
Definition ODMR.h:281
void OnSweepSeriesRetraceClicked(DynExp::ModuleInstance *Instance, int Checked) const
Definition ODMR.cpp:612
void SetAuxAnalogOutValue(Util::SynchronizedPointer< ModuleDataType > &ModuleData) const
Definition ODMR.cpp:342
void OnSaveIndexChanged(DynExp::ModuleInstance *Instance, int Index) const
Definition ODMR.cpp:501
void OnODMRChartHovered(DynExp::ModuleInstance *Instance, QPointF Point, bool State) const
Definition ODMR.cpp:670
StateType SensitivityInitFunc(DynExp::ModuleInstance &Instance)
Definition ODMR.cpp:890
static constexpr auto Name() noexcept
Definition ODMR.h:160
StateType MeasurementSeriesStepFunc(DynExp::ModuleInstance &Instance)
Definition ODMR.cpp:713
void OnODMRChartClicked(DynExp::ModuleInstance *Instance, QPointF Point) const
Definition ODMR.cpp:676
void OnRFFreqSpacingChanged(DynExp::ModuleInstance *Instance, double Value) const
Definition ODMR.cpp:441
void OnRFModFreqChanged(DynExp::ModuleInstance *Instance, double Value) const
Definition ODMR.cpp:477
void OnAutosaveClicked(DynExp::ModuleInstance *Instance, int Checked) const
Definition ODMR.cpp:507
void OnRFDwellTimeChanged(DynExp::ModuleInstance *Instance, double Value) const
Definition ODMR.cpp:447
static constexpr auto InitializingState
Definition ODMR.h:253
void OnStartClicked(DynExp::ModuleInstance *Instance, bool) const
Definition ODMR.cpp:624
void InitSweepValues(Util::SynchronizedPointer< ModuleDataType > &ModuleData)
Definition ODMR.cpp:298
void OnSensitivitySamplingRateChanged(DynExp::ModuleInstance *Instance, double Value) const
Definition ODMR.cpp:549
void OnSensitivityResonanceFreqChanged(DynExp::ModuleInstance *Instance, double Value) const
Definition ODMR.cpp:531
void OnRFModSineClicked(DynExp::ModuleInstance *Instance, bool Checked) const
Definition ODMR.cpp:461
void OnSweepSeriesAdvanceLastValueClicked(DynExp::ModuleInstance *Instance, int Checked) const
Definition ODMR.cpp:618
static constexpr auto ODMRTraceInitState
Definition ODMR.h:261
void OnStartSensitivityClicked(DynExp::ModuleInstance *Instance, bool) const
Definition ODMR.cpp:635
static constexpr auto ReadyState
Definition ODMR.h:255
virtual std::string GetName() const override
Returns the name of this Object type.
Definition ODMR.h:166
static constexpr auto MeasurementSeriesStepState
Definition ODMR.h:259
void OnRFOffClicked(DynExp::ModuleInstance *Instance, bool) const
Definition ODMR.cpp:664
void OnSweepSeriesParamChanged(DynExp::ModuleInstance *Instance, int Index) const
Definition ODMR.cpp:579
void OnEnableSensitivityAnalysisClicked(DynExp::ModuleInstance *Instance, bool Checked) const
Definition ODMR.cpp:561
void OnRFPowerChanged(DynExp::ModuleInstance *Instance, double Value) const
Definition ODMR.cpp:417
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...
Definition ODMR.cpp:377
void OnRecordSensitivityOncePerSweepClicked(DynExp::ModuleInstance *Instance, int Checked) const
Definition ODMR.cpp:519
void OnSweepSeriesStartChanged(DynExp::ModuleInstance *Instance, double Value) const
Definition ODMR.cpp:594
StateType ODMRTraceFinishFunc(DynExp::ModuleInstance &Instance)
Definition ODMR.cpp:778
const Util::StateMachineContext< StateMachineStateType > SensitivityOffResonanceContext
Definition ODMR.h:275
bool TreatModuleExceptionsAsWarnings() const override final
Determines whether this module should be terminated if an exception leaves the module's main loop or ...
Definition ODMR.h:170
void OnRFCenterFreqChanged(DynExp::ModuleInstance *Instance, double Value) const
Definition ODMR.cpp:429
void OnSensitivityDurationChanged(DynExp::ModuleInstance *Instance, double Value) const
Definition ODMR.cpp:555
static constexpr auto Category() noexcept
Definition ODMR.h:161
DynExp's core class acts as the interface between the user interface and DynExp's internal data like ...
Definition DynExpCore.h:127
This class holds a pointer (LinkedObjectWrapperPointer) to a LinkedObjectWrapper. Intances of this cl...
Definition Object.h:3160
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...
Definition Module.h:587
const std::unique_ptr< ModuleDataType > ModuleData
Module data belonging to this ModuleBase instance.
Definition Module.h:743
ModuleBase(const std::thread::id OwnerThreadID, ParamsBasePtrType &&Params)
Constructs a ModuleBase instance.
Definition Module.cpp:189
Refer to ParamsBase::dispatch_tag.
Definition Module.h:189
Defines data for a thread belonging to a ModuleBase instance. Refer to RunnableInstance.
Definition Module.h:793
const std::thread::id OwnerThreadID
Thread id of the thread which has constructed (and owns) this Object instance.
Definition Object.h:2302
const ParamsBasePtrType Params
Pointer to the parameter class instance belonging to this Object instance.
Definition Object.h:2303
const auto & GetCore() const noexcept
Returns a reference to DynExp's core.
Definition Object.h:1677
const ItemIDType ID
ID of the Object this parameter class instance belongs to.
Definition Object.h:1779
const DynExpCore & Core
Reference to DynExp's core.
Definition Object.h:1780
Tag for function dispatching mechanism within this class used when derived classes are not intended t...
Definition Object.h:349
Base class for modules with a Qt-based user interface. Derive from this class to implement modules wi...
Definition Module.h:1344
Configurator class for QModuleBase.
Definition Module.h:1330
Data class for QModuleBase.
Definition Module.h:1220
Parameter class for QModuleBase.
Definition Module.h:1306
QModuleParamsBase(ItemIDType ID, const DynExpCore &Core)
Constructs the parameters for a QModuleBase instance.
Definition Module.h:1312
Holds a bitset containing flags to indicate which features a certain instrument/ module etc....
Definition Util.h:1231
void Set(EnumType Flag)
Sets a flag.
Definition Util.h:1281
bool Test(const std::array< EnumType, N > &Flags) const
Tests whether all of the flags passed as an array are set.
Definition Util.h:1257
State machine context as used by class StateMachine. A state machine context holds a map with keys an...
Definition Util.h:1362
State machine state as used by class StateMachine. A state mainly wraps a state function of the membe...
Definition Util.h:1305
This class models a state machine. It keeps track of the current state and allows to invoke its assoc...
Definition Util.h:1435
Pointer to lock a class derived from ISynchronizedPointerLockable for synchronizing between threads....
Definition Util.h:170
constexpr auto Instrument
std::unique_ptr< ParamsBase > ParamsBasePtrType
Alias for a pointer to the parameter system base class ParamsBase.
Definition Object.h:1807
size_t ItemIDType
ID type of objects/items managed by DynExp.
DynExpErrorCodes
DynExp's error codes
Definition Exception.h:22
Accumulates include statements to provide a precompiled header.
Type describing a generic periodic function.