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, Qt::CheckState 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, Qt::CheckState Checked) const;
210
211 void OnRecordSensitivityClicked(DynExp::ModuleInstance* Instance, Qt::CheckState Checked) const;
212 void OnRecordSensitivityOncePerSweepClicked(DynExp::ModuleInstance* Instance, Qt::CheckState Checked) const;
213 void OnRecordSensitivityOffResonanceClicked(DynExp::ModuleInstance* Instance, Qt::CheckState 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, Qt::CheckState 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, Qt::CheckState Checked) const;
229 void OnSweepSeriesAdvanceLastValueClicked(DynExp::ModuleInstance* Instance, Qt::CheckState 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:22
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: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:210
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:328
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:574
void OnSweepSeriesStopChanged(DynExp::ModuleInstance *Instance, double Value) const
Definition ODMR.cpp:601
void OnRFModDepthChanged(DynExp::ModuleInstance *Instance, double Value) const
Definition ODMR.cpp:484
void ConnectChartWidgets(QLineSeries *ODMRLineSeries)
Definition ODMR.cpp:369
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:262
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:408
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:173
void WaitUntilReadyAndTrigger(Util::SynchronizedPointer< ModuleDataType > &ModuleData) const
Definition ODMR.cpp:349
static constexpr auto ODMRTraceWaitState
Definition ODMR.h:263
StateType MeasurementSeriesInitFunc(DynExp::ModuleInstance &Instance)
Definition ODMR.cpp:696
void OnSweepSeriesAdvanceLastValueClicked(DynExp::ModuleInstance *Instance, Qt::CheckState Checked) const
Definition ODMR.cpp:619
void OnStopClicked(DynExp::ModuleInstance *Instance, bool) const
Definition ODMR.cpp:647
void OnSweepSeriesRetraceClicked(DynExp::ModuleInstance *Instance, Qt::CheckState Checked) const
Definition ODMR.cpp:613
StateType ODMRTraceWaitFunc(DynExp::ModuleInstance &Instance)
Definition ODMR.cpp:772
void OnRFModNoneClicked(DynExp::ModuleInstance *Instance, bool Checked) const
Definition ODMR.cpp:454
void OnAutosaveClicked(DynExp::ModuleInstance *Instance, Qt::CheckState Checked) const
Definition ODMR.cpp:508
void OnRFFreqSpanChanged(DynExp::ModuleInstance *Instance, double Value) const
Definition ODMR.cpp:436
void OnGyromagneticRatioChanged(DynExp::ModuleInstance *Instance, double Value) const
Definition ODMR.cpp:568
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:162
bool IsReadyState() const noexcept
Definition ODMR.h:181
void OnODMRSamplingRateChanged(DynExp::ModuleInstance *Instance, double Value) const
Definition ODMR.cpp:490
void ResetImpl(dispatch_tag< QModuleBase >) override final
Definition ODMR.cpp:199
void OnRFOnClicked(DynExp::ModuleInstance *Instance, bool) const
Definition ODMR.cpp:659
double NextAuxAnalogOutValue
Definition ODMR.h:282
void OnRFModPulseClicked(DynExp::ModuleInstance *Instance, bool Checked) const
Definition ODMR.cpp:470
static constexpr auto SensitivityFinishState
Definition ODMR.h:271
StateType ReadyStateFunc(DynExp::ModuleInstance &Instance)
Definition ODMR.cpp:691
void OnRecordSensitivityOffResonanceClicked(DynExp::ModuleInstance *Instance, Qt::CheckState Checked) const
Definition ODMR.cpp:526
void OnSavePathChanged(DynExp::ModuleInstance *Instance, QString Path) const
Definition ODMR.cpp:496
void OnSweepSeriesStepChanged(DynExp::ModuleInstance *Instance, double Value) const
Definition ODMR.cpp:607
void OnSensitivityResonanceSpanChanged(DynExp::ModuleInstance *Instance, double Value) const
Definition ODMR.cpp:544
StateType SensitivityWaitFunc(DynExp::ModuleInstance &Instance)
Definition ODMR.cpp:918
void OnSensitivityOffResonanceFreqChanged(DynExp::ModuleInstance *Instance, double Value) const
Definition ODMR.cpp:538
StateType SensitivityFinishFunc(DynExp::ModuleInstance &Instance)
Definition ODMR.cpp:925
static constexpr auto SensitivityInitState
Definition ODMR.h:267
StateType ODMRTraceInitFunc(DynExp::ModuleInstance &Instance)
Definition ODMR.cpp:741
StateType InitializingStateFunc(DynExp::ModuleInstance &Instance)
Definition ODMR.cpp:686
double NextRFModulationDepth
Definition ODMR.h:281
void SetAuxAnalogOutValue(Util::SynchronizedPointer< ModuleDataType > &ModuleData) const
Definition ODMR.cpp:343
void OnSaveIndexChanged(DynExp::ModuleInstance *Instance, int Index) const
Definition ODMR.cpp:502
void OnODMRChartHovered(DynExp::ModuleInstance *Instance, QPointF Point, bool State) const
Definition ODMR.cpp:671
StateType SensitivityInitFunc(DynExp::ModuleInstance &Instance)
Definition ODMR.cpp:891
static constexpr auto Name() noexcept
Definition ODMR.h:160
StateType MeasurementSeriesStepFunc(DynExp::ModuleInstance &Instance)
Definition ODMR.cpp:714
void OnODMRChartClicked(DynExp::ModuleInstance *Instance, QPointF Point) const
Definition ODMR.cpp:677
void OnRFFreqSpacingChanged(DynExp::ModuleInstance *Instance, double Value) const
Definition ODMR.cpp:442
void OnRFModFreqChanged(DynExp::ModuleInstance *Instance, double Value) const
Definition ODMR.cpp:478
void OnRFDwellTimeChanged(DynExp::ModuleInstance *Instance, double Value) const
Definition ODMR.cpp:448
static constexpr auto InitializingState
Definition ODMR.h:253
void OnStartClicked(DynExp::ModuleInstance *Instance, bool) const
Definition ODMR.cpp:625
void InitSweepValues(Util::SynchronizedPointer< ModuleDataType > &ModuleData)
Definition ODMR.cpp:299
void OnSensitivitySamplingRateChanged(DynExp::ModuleInstance *Instance, double Value) const
Definition ODMR.cpp:550
void OnSensitivityResonanceFreqChanged(DynExp::ModuleInstance *Instance, double Value) const
Definition ODMR.cpp:532
void OnRFModSineClicked(DynExp::ModuleInstance *Instance, bool Checked) const
Definition ODMR.cpp:462
static constexpr auto ODMRTraceInitState
Definition ODMR.h:261
void OnStartSensitivityClicked(DynExp::ModuleInstance *Instance, bool) const
Definition ODMR.cpp:636
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 OnRFAutoEnableClicked(DynExp::ModuleInstance *Instance, Qt::CheckState Checked) const
Definition ODMR.cpp:424
void OnRFOffClicked(DynExp::ModuleInstance *Instance, bool) const
Definition ODMR.cpp:665
void OnRecordSensitivityClicked(DynExp::ModuleInstance *Instance, Qt::CheckState Checked) const
Definition ODMR.cpp:514
void OnSweepSeriesParamChanged(DynExp::ModuleInstance *Instance, int Index) const
Definition ODMR.cpp:580
void OnEnableSensitivityAnalysisClicked(DynExp::ModuleInstance *Instance, bool Checked) const
Definition ODMR.cpp:562
void OnRecordSensitivityOncePerSweepClicked(DynExp::ModuleInstance *Instance, Qt::CheckState Checked) const
Definition ODMR.cpp:520
void OnRFPowerChanged(DynExp::ModuleInstance *Instance, double Value) const
Definition ODMR.cpp:418
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:378
void OnSweepSeriesStartChanged(DynExp::ModuleInstance *Instance, double Value) const
Definition ODMR.cpp:595
StateType ODMRTraceFinishFunc(DynExp::ModuleInstance &Instance)
Definition ODMR.cpp:779
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:430
void OnSensitivityDurationChanged(DynExp::ModuleInstance *Instance, double Value) const
Definition ODMR.cpp:556
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:3168
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:624
const std::unique_ptr< ModuleDataType > ModuleData
Module data belonging to this ModuleBase instance.
Definition Module.h:788
ModuleBase(const std::thread::id OwnerThreadID, ParamsBasePtrType &&Params)
Constructs a ModuleBase instance.
Definition Module.cpp:206
Refer to ParamsBase::dispatch_tag.
Definition Module.h:191
Defines data for a thread belonging to a ModuleBase instance. Refer to RunnableInstance.
Definition Module.h:840
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:1660
Configurator class for QModuleBase.
Definition Module.h:1646
Data class for QModuleBase.
Definition Module.h:1536
Parameter class for QModuleBase.
Definition Module.h:1622
QModuleParamsBase(ItemIDType ID, const DynExpCore &Core)
Constructs the parameters for a QModuleBase instance.
Definition Module.h:1628
Holds a bitset containing flags to indicate which features a certain instrument/ module etc....
Definition Util.h:1293
void Set(EnumType Flag)
Sets a flag.
Definition Util.h:1343
bool Test(const std::array< EnumType, N > &Flags) const
Tests whether all of the flags passed as an array are set.
Definition Util.h:1319
State machine context as used by class StateMachine. A state machine context holds a map with keys an...
Definition Util.h:1424
State machine state as used by class StateMachine. A state mainly wraps a state function of the membe...
Definition Util.h:1367
This class models a state machine. It keeps track of the current state and allows to invoke its assoc...
Definition Util.h:1497
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.