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
187 // Events, run in module thread
188 void OnInit(DynExp::ModuleInstance* Instance) const override final;
189 void OnExit(DynExp::ModuleInstance* Instance) const override final;
190
191 void OnRFPowerChanged(DynExp::ModuleInstance* Instance, double Value) const;
192 void OnRFAutoEnableClicked(DynExp::ModuleInstance* Instance, Qt::CheckState Checked) const;
193 void OnRFCenterFreqChanged(DynExp::ModuleInstance* Instance, double Value) const;
194 void OnRFFreqSpanChanged(DynExp::ModuleInstance* Instance, double Value) const;
195 void OnRFFreqSpacingChanged(DynExp::ModuleInstance* Instance, double Value) const;
196 void OnRFDwellTimeChanged(DynExp::ModuleInstance* Instance, double Value) const;
197
198 void OnRFModNoneClicked(DynExp::ModuleInstance* Instance, bool Checked) const;
199 void OnRFModSineClicked(DynExp::ModuleInstance* Instance, bool Checked) const;
200 void OnRFModPulseClicked(DynExp::ModuleInstance* Instance, bool Checked) const;
201 void OnRFModFreqChanged(DynExp::ModuleInstance* Instance, double Value) const;
202 void OnRFModDepthChanged(DynExp::ModuleInstance* Instance, double Value) const;
203
204 void OnODMRSamplingRateChanged(DynExp::ModuleInstance* Instance, double Value) const;
205
206 void OnSavePathChanged(DynExp::ModuleInstance* Instance, QString Path) const;
207 void OnSaveIndexChanged(DynExp::ModuleInstance* Instance, int Index) const;
208 void OnAutosaveClicked(DynExp::ModuleInstance* Instance, Qt::CheckState Checked) const;
209
210 void OnRecordSensitivityClicked(DynExp::ModuleInstance* Instance, Qt::CheckState Checked) const;
211 void OnRecordSensitivityOncePerSweepClicked(DynExp::ModuleInstance* Instance, Qt::CheckState Checked) const;
212 void OnRecordSensitivityOffResonanceClicked(DynExp::ModuleInstance* Instance, Qt::CheckState Checked) const;
213 void OnSensitivityResonanceFreqChanged(DynExp::ModuleInstance* Instance, double Value) const;
214 void OnSensitivityOffResonanceFreqChanged(DynExp::ModuleInstance* Instance, double Value) const;
215 void OnSensitivityResonanceSpanChanged(DynExp::ModuleInstance* Instance, double Value) const;
216 void OnSensitivitySamplingRateChanged(DynExp::ModuleInstance* Instance, double Value) const;
217 void OnSensitivityDurationChanged(DynExp::ModuleInstance* Instance, double Value) const;
218
219 void OnEnableSensitivityAnalysisClicked(DynExp::ModuleInstance* Instance, bool Checked) const;
220 void OnGyromagneticRatioChanged(DynExp::ModuleInstance* Instance, double Value) const;
221
222 void OnEnableSweepSeriesClicked(DynExp::ModuleInstance* Instance, Qt::CheckState Checked) const;
223 void OnSweepSeriesParamChanged(DynExp::ModuleInstance* Instance, int Index) const;
224 void OnSweepSeriesStartChanged(DynExp::ModuleInstance* Instance, double Value) const;
225 void OnSweepSeriesStopChanged(DynExp::ModuleInstance* Instance, double Value) const;
226 void OnSweepSeriesStepChanged(DynExp::ModuleInstance* Instance, double Value) const;
227 void OnSweepSeriesRetraceClicked(DynExp::ModuleInstance* Instance, Qt::CheckState Checked) const;
228 void OnSweepSeriesAdvanceLastValueClicked(DynExp::ModuleInstance* Instance, Qt::CheckState Checked) const;
229
230 void OnStartClicked(DynExp::ModuleInstance* Instance, bool) const;
231 void OnStartSensitivityClicked(DynExp::ModuleInstance* Instance, bool) const;
232 void OnStopClicked(DynExp::ModuleInstance* Instance, bool) const;
233 void OnRFOnClicked(DynExp::ModuleInstance* Instance, bool) const;
234 void OnRFOffClicked(DynExp::ModuleInstance* Instance, bool) const;
235
236 void OnODMRGraphClicked(DynExp::ModuleInstance* Instance, QPointF Point) const;
237
238 // State functions for state machine
249
250 // States for state machine
252 &ODMR::InitializingStateFunc, "Initializing module...");
254 &ODMR::ReadyStateFunc, "Ready");
256 &ODMR::MeasurementSeriesInitFunc, "Measuring...");
258 &ODMR::MeasurementSeriesStepFunc, "Measuring...");
260 &ODMR::ODMRTraceInitFunc, "Acquiring ODMR trace...");
262 &ODMR::ODMRTraceWaitFunc, "Acquiring ODMR trace...");
264 &ODMR::ODMRTraceFinishFunc, "Processing and saving ODMR trace...");
266 &ODMR::SensitivityInitFunc, "Acquiring sensitivity series...");
268 &ODMR::SensitivityWaitFunc, "Acquiring sensitivity series...");
270 &ODMR::SensitivityFinishFunc, "Processing and saving sensitivity series...");
271
272 // Contexts for state machine
273 const Util::StateMachineContext<StateMachineStateType> SensitivityOffResonanceContext = { {}, "Acquiring off-resonance sensitivity series..." };
274
275 // Logical const-ness: allow events to set the state machine's current state.
277
278 double NextRFPower{};
281
283 };
284}
Defines DynExp's core module as an interface between the UI and DynExp objects.
User interface belonging to the DynExpModule::ODMR::ODMR module.
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:22
bool TestFeature(const std::array< FeatureType, N > &Flags) const
Definition ODMR.h:35
double GetRFStopFreq() const noexcept
Definition ODMR.h:48
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
DynExp::Units::UnitType AuxAnalogOutValueUnit
Definition ODMR.h:96
double SensitivityOffResonanceFreq
Definition ODMR.h:75
unsigned long long GetSweepNumberSteps() const noexcept
Definition ODMR.cpp:14
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:9
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:217
size_t NumFailedUpdateAttempts
Definition ODMR.h:282
static constexpr auto MeasurementSeriesInitState
Definition ODMR.h:255
void InitRFGenerator(double Frequency, bool EnableRF, Util::SynchronizedPointer< ModuleDataType > &ModuleData) const
Definition ODMR.cpp:318
virtual std::string GetCategory() const override
Returns the category of this Object type.
Definition ODMR.h:167
void OnEnableSweepSeriesClicked(DynExp::ModuleInstance *Instance, Qt::CheckState Checked) const
Definition ODMR.cpp:555
void OnSweepSeriesStopChanged(DynExp::ModuleInstance *Instance, double Value) const
Definition ODMR.cpp:582
void OnRFModDepthChanged(DynExp::ModuleInstance *Instance, double Value) const
Definition ODMR.cpp:465
static constexpr auto SensitivityWaitState
Definition ODMR.h:267
static constexpr auto ODMRTraceFinishState
Definition ODMR.h:263
void UpdateUIChild(const ModuleBase::ModuleDataGetterType &ModuleDataGetter) override final
Definition ODMR.cpp:271
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:389
Util::StateMachine< StateMachineStateType > StateMachine
Definition ODMR.h:276
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:180
void WaitUntilReadyAndTrigger(Util::SynchronizedPointer< ModuleDataType > &ModuleData) const
Definition ODMR.cpp:339
static constexpr auto ODMRTraceWaitState
Definition ODMR.h:261
StateType MeasurementSeriesInitFunc(DynExp::ModuleInstance &Instance)
Definition ODMR.cpp:671
void OnSweepSeriesAdvanceLastValueClicked(DynExp::ModuleInstance *Instance, Qt::CheckState Checked) const
Definition ODMR.cpp:600
void OnStopClicked(DynExp::ModuleInstance *Instance, bool) const
Definition ODMR.cpp:628
void OnSweepSeriesRetraceClicked(DynExp::ModuleInstance *Instance, Qt::CheckState Checked) const
Definition ODMR.cpp:594
StateType ODMRTraceWaitFunc(DynExp::ModuleInstance &Instance)
Definition ODMR.cpp:747
void OnRFModNoneClicked(DynExp::ModuleInstance *Instance, bool Checked) const
Definition ODMR.cpp:435
void OnAutosaveClicked(DynExp::ModuleInstance *Instance, Qt::CheckState Checked) const
Definition ODMR.cpp:489
void OnRFFreqSpanChanged(DynExp::ModuleInstance *Instance, double Value) const
Definition ODMR.cpp:417
void OnGyromagneticRatioChanged(DynExp::ModuleInstance *Instance, double Value) const
Definition ODMR.cpp:549
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:169
bool IsReadyState() const noexcept
Definition ODMR.h:181
void OnODMRSamplingRateChanged(DynExp::ModuleInstance *Instance, double Value) const
Definition ODMR.cpp:471
void ResetImpl(dispatch_tag< QModuleBase >) override final
Definition ODMR.cpp:206
void OnRFOnClicked(DynExp::ModuleInstance *Instance, bool) const
Definition ODMR.cpp:640
double NextAuxAnalogOutValue
Definition ODMR.h:280
void OnRFModPulseClicked(DynExp::ModuleInstance *Instance, bool Checked) const
Definition ODMR.cpp:451
static constexpr auto SensitivityFinishState
Definition ODMR.h:269
StateType ReadyStateFunc(DynExp::ModuleInstance &Instance)
Definition ODMR.cpp:666
void OnRecordSensitivityOffResonanceClicked(DynExp::ModuleInstance *Instance, Qt::CheckState Checked) const
Definition ODMR.cpp:507
void OnSavePathChanged(DynExp::ModuleInstance *Instance, QString Path) const
Definition ODMR.cpp:477
void OnSweepSeriesStepChanged(DynExp::ModuleInstance *Instance, double Value) const
Definition ODMR.cpp:588
void OnSensitivityResonanceSpanChanged(DynExp::ModuleInstance *Instance, double Value) const
Definition ODMR.cpp:525
StateType SensitivityWaitFunc(DynExp::ModuleInstance &Instance)
Definition ODMR.cpp:895
void OnSensitivityOffResonanceFreqChanged(DynExp::ModuleInstance *Instance, double Value) const
Definition ODMR.cpp:519
StateType SensitivityFinishFunc(DynExp::ModuleInstance &Instance)
Definition ODMR.cpp:902
static constexpr auto SensitivityInitState
Definition ODMR.h:265
StateType ODMRTraceInitFunc(DynExp::ModuleInstance &Instance)
Definition ODMR.cpp:716
StateType InitializingStateFunc(DynExp::ModuleInstance &Instance)
Definition ODMR.cpp:661
double NextRFModulationDepth
Definition ODMR.h:279
void SetAuxAnalogOutValue(Util::SynchronizedPointer< ModuleDataType > &ModuleData) const
Definition ODMR.cpp:333
void OnSaveIndexChanged(DynExp::ModuleInstance *Instance, int Index) const
Definition ODMR.cpp:483
StateType SensitivityInitFunc(DynExp::ModuleInstance &Instance)
Definition ODMR.cpp:868
static constexpr auto Name() noexcept
Definition ODMR.h:160
StateType MeasurementSeriesStepFunc(DynExp::ModuleInstance &Instance)
Definition ODMR.cpp:689
void OnRFFreqSpacingChanged(DynExp::ModuleInstance *Instance, double Value) const
Definition ODMR.cpp:423
void OnRFModFreqChanged(DynExp::ModuleInstance *Instance, double Value) const
Definition ODMR.cpp:459
void OnODMRGraphClicked(DynExp::ModuleInstance *Instance, QPointF Point) const
Definition ODMR.cpp:652
void OnRFDwellTimeChanged(DynExp::ModuleInstance *Instance, double Value) const
Definition ODMR.cpp:429
static constexpr auto InitializingState
Definition ODMR.h:251
void OnStartClicked(DynExp::ModuleInstance *Instance, bool) const
Definition ODMR.cpp:606
void InitSweepValues(Util::SynchronizedPointer< ModuleDataType > &ModuleData)
Definition ODMR.cpp:289
void OnSensitivitySamplingRateChanged(DynExp::ModuleInstance *Instance, double Value) const
Definition ODMR.cpp:531
void OnSensitivityResonanceFreqChanged(DynExp::ModuleInstance *Instance, double Value) const
Definition ODMR.cpp:513
void OnRFModSineClicked(DynExp::ModuleInstance *Instance, bool Checked) const
Definition ODMR.cpp:443
static constexpr auto ODMRTraceInitState
Definition ODMR.h:259
void OnStartSensitivityClicked(DynExp::ModuleInstance *Instance, bool) const
Definition ODMR.cpp:617
static constexpr auto ReadyState
Definition ODMR.h:253
virtual std::string GetName() const override
Returns the name of this Object type.
Definition ODMR.h:166
static constexpr auto MeasurementSeriesStepState
Definition ODMR.h:257
void OnRFAutoEnableClicked(DynExp::ModuleInstance *Instance, Qt::CheckState Checked) const
Definition ODMR.cpp:405
void OnRFOffClicked(DynExp::ModuleInstance *Instance, bool) const
Definition ODMR.cpp:646
void OnRecordSensitivityClicked(DynExp::ModuleInstance *Instance, Qt::CheckState Checked) const
Definition ODMR.cpp:495
void OnSweepSeriesParamChanged(DynExp::ModuleInstance *Instance, int Index) const
Definition ODMR.cpp:561
void OnEnableSensitivityAnalysisClicked(DynExp::ModuleInstance *Instance, bool Checked) const
Definition ODMR.cpp:543
void OnRecordSensitivityOncePerSweepClicked(DynExp::ModuleInstance *Instance, Qt::CheckState Checked) const
Definition ODMR.cpp:501
void OnRFPowerChanged(DynExp::ModuleInstance *Instance, double Value) const
Definition ODMR.cpp:399
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:359
void OnSweepSeriesStartChanged(DynExp::ModuleInstance *Instance, double Value) const
Definition ODMR.cpp:576
StateType ODMRTraceFinishFunc(DynExp::ModuleInstance &Instance)
Definition ODMR.cpp:754
const Util::StateMachineContext< StateMachineStateType > SensitivityOffResonanceContext
Definition ODMR.h:273
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:411
void OnSensitivityDurationChanged(DynExp::ModuleInstance *Instance, double Value) const
Definition ODMR.cpp:537
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:3176
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:625
const std::unique_ptr< ModuleDataType > ModuleData
Module data belonging to this ModuleBase instance.
Definition Module.h:789
ModuleBase(const std::thread::id OwnerThreadID, ParamsBasePtrType &&Params)
Constructs a ModuleBase instance.
Definition Module.cpp:206
Refer to ParamsBase::dispatch_tag.
Definition Module.h:192
Defines data for a thread belonging to a ModuleBase instance. Refer to RunnableInstance.
Definition Module.h:841
const std::thread::id OwnerThreadID
Thread id of the thread which has constructed (and owns) this Object instance.
Definition Object.h:2310
const ParamsBasePtrType Params
Pointer to the parameter class instance belonging to this Object instance.
Definition Object.h:2311
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:1668
Configurator class for QModuleBase.
Definition Module.h:1654
Data class for QModuleBase.
Definition Module.h:1544
Parameter class for QModuleBase.
Definition Module.h:1630
QModuleParamsBase(ItemIDType ID, const DynExpCore &Core)
Constructs the parameters for a QModuleBase instance.
Definition Module.h:1636
Holds a bitset containing flags to indicate which features a certain instrument/ module etc....
Definition Util.h:1289
void Set(EnumType Flag)
Sets a flag.
Definition Util.h:1339
bool Test(const std::array< EnumType, N > &Flags) const
Tests whether all of the flags passed as an array are set.
Definition Util.h:1315
State machine context as used by class StateMachine. A state machine context holds a map with keys an...
Definition Util.h:1420
State machine state as used by class StateMachine. A state mainly wraps a state function of the membe...
Definition Util.h:1363
This class models a state machine. It keeps track of the current state and allows to invoke its assoc...
Definition Util.h:1493
Pointer to lock a class derived from ISynchronizedPointerLockable for synchronizing between threads....
Definition Util.h:171
constexpr auto Instrument
UnitType
Units which can be used with DynExp instruments.
Definition Units.h:28
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.