MNE-CPP 0.1.9
A Framework for Electrophysiology
Loading...
Searching...
No Matches
rthpis.h
Go to the documentation of this file.
1//=============================================================================================================
35#ifndef RTHPIS_RTPROCESSING_H
36#define RTHPIS_RTPROCESSING_H
37
38//=============================================================================================================
39// INCLUDES
40//=============================================================================================================
41
42#include "rtprocessing_global.h"
45
46//=============================================================================================================
47// EIGEN INCLUDES
48//=============================================================================================================
49
50#include <Eigen/Core>
51
52//=============================================================================================================
53// QT INCLUDES
54//=============================================================================================================
55
56#include <QThread>
57#include <QMutex>
58#include <QSharedPointer>
59#include <QVector>
60
61//=============================================================================================================
62// FORWARD DECLARATIONS
63//=============================================================================================================
64
65namespace FIFFLIB {
66 class FiffInfo;
67}
68
69namespace INVERSELIB {
70 class SensorSet;
71 class HPIFit;
72 struct HpiFitResult;
73 class HpiModelParameters;
74}
75
76//=============================================================================================================
77// DEFINE NAMESPACE RTPROCESSINGLIB
78//=============================================================================================================
79
80namespace RTPROCESSINGLIB
81{
82
83//=============================================================================================================
90{
91 Q_OBJECT
92
93public:
94
95 //=========================================================================================================
101 explicit RtHpiWorker(const INVERSELIB::SensorSet sensorSet);
102
103 //=========================================================================================================
112 void doWork(const Eigen::MatrixXd& matData,
113 const Eigen::MatrixXd& matProjectors,
114 const INVERSELIB::HpiModelParameters& hpiModelParameters,
115 const Eigen::MatrixXd& matCoilsHead);
116
117protected:
118 //=========================================================================================================
119 QSharedPointer<INVERSELIB::HPIFit> m_pHpiFit;
121signals:
122 void resultReady(const INVERSELIB::HpiFitResult &fitResult);
123};
124
125//=============================================================================================================
131class RTPROCESINGSHARED_EXPORT RtHpi : public QObject
132{
133 Q_OBJECT
134
135public:
136 typedef QSharedPointer<RtHpi> SPtr;
137 typedef QSharedPointer<const RtHpi> ConstSPtr;
139 //=========================================================================================================
146 explicit RtHpi(const INVERSELIB::SensorSet sensorSet,
147 QObject *parent = 0);
148
149 //=========================================================================================================
153 ~RtHpi();
154
155 //=========================================================================================================
161 void append(const Eigen::MatrixXd &data);
162
163 //=========================================================================================================
169 void setModelParameters(INVERSELIB::HpiModelParameters hpiModelParameters);
170
171 //=========================================================================================================
177 void setProjectionMatrix(const Eigen::MatrixXd& matProjectors);
178
179 //=========================================================================================================
185 void setHpiDigitizer(const Eigen::MatrixXd& matCoilsHead);
186
187 //=========================================================================================================
191 void restart();
192
193 //=========================================================================================================
197 void stop();
198
199protected:
200 //=========================================================================================================
204 void handleResults(const INVERSELIB::HpiFitResult &fitResult);
205
207 Eigen::MatrixXd m_matCoilsHead;
208 Eigen::MatrixXd m_matProjectors;
209 INVERSELIB::SensorSet m_sensorSet;
210 INVERSELIB::HpiModelParameters m_modelParameters;
211
212signals:
213 void newHpiFitResultAvailable(const INVERSELIB::HpiFitResult &fitResult);
214 void operate(const Eigen::MatrixXd& matData,
215 const Eigen::MatrixXd& matProjectors,
216 const INVERSELIB::HpiModelParameters& hpiModelParameters,
217 const Eigen::MatrixXd& matCoilsHead);
218};
219
220//=============================================================================================================
221// INLINE DEFINITIONS
222//=============================================================================================================
223} // NAMESPACE
224
225#endif // RTHPIS_RTPROCESSING_H
realtime library export/import macros.
#define RTPROCESINGSHARED_EXPORT
SensorSet class declaration.
SignalModel class declaration.
Brief description of this class.
Real-time HPI worker.
Definition rthpis.h:90
QSharedPointer< INVERSELIB::HPIFit > m_pHpiFit
Definition rthpis.h:119
Real-time Head Coil Positions estimation.
Definition rthpis.h:132
QSharedPointer< const RtHpi > ConstSPtr
Definition rthpis.h:137
QSharedPointer< RtHpi > SPtr
Definition rthpis.h:136
Eigen::MatrixXd m_matCoilsHead
Definition rthpis.h:207
Eigen::MatrixXd m_matProjectors
Definition rthpis.h:208