MNE-CPP  0.1.9
A Framework for Electrophysiology
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 
65 namespace FIFFLIB {
66  class FiffInfo;
67 }
68 
69 namespace INVERSELIB {
70  class SensorSet;
71  class HPIFit;
72  struct HpiFitResult;
73  class HpiModelParameters;
74 }
75 
76 //=============================================================================================================
77 // DEFINE NAMESPACE RTPROCESSINGLIB
78 //=============================================================================================================
79 
80 namespace RTPROCESSINGLIB
81 {
82 
83 //=============================================================================================================
89 class RTPROCESINGSHARED_EXPORT RtHpiWorker : public QObject
90 {
91  Q_OBJECT
92 
93 public:
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 
117 protected:
118  //=========================================================================================================
119  QSharedPointer<INVERSELIB::HPIFit> m_pHpiFit;
121 signals:
122  void resultReady(const INVERSELIB::HpiFitResult &fitResult);
123 };
124 
125 //=============================================================================================================
131 class RTPROCESINGSHARED_EXPORT RtHpi : public QObject
132 {
133  Q_OBJECT
134 
135 public:
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 
199 protected:
200  //=========================================================================================================
204  void handleResults(const INVERSELIB::HpiFitResult &fitResult);
205 
206  QThread m_workerThread;
207  Eigen::MatrixXd m_matCoilsHead;
208  Eigen::MatrixXd m_matProjectors;
209  INVERSELIB::SensorSet m_sensorSet;
210  INVERSELIB::HpiModelParameters m_modelParameters;
211 
212 signals:
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
RTPROCESSINGLIB::RtHpi::m_matCoilsHead
Eigen::MatrixXd m_matCoilsHead
Definition: rthpis.h:207
RTPROCESSINGLIB::RtHpi
Real-time Head Coil Positions estimation.
Definition: rthpis.h:131
INVERSELIB::HpiModelParameters
Brief description of this class.
Definition: hpimodelparameters.h:75
rtprocessing_global.h
realtime library export/import macros.
RTPROCESSINGLIB::RtHpi::m_matProjectors
Eigen::MatrixXd m_matProjectors
Definition: rthpis.h:208
RTPROCESSINGLIB::RtHpi::SPtr
QSharedPointer< RtHpi > SPtr
Definition: rthpis.h:136
INVERSELIB::HpiFitResult
Definition: hpifit.h:112
RTPROCESSINGLIB::RtHpi::m_workerThread
QThread m_workerThread
Definition: rthpis.h:206
RTPROCESSINGLIB::RtHpi::ConstSPtr
QSharedPointer< const RtHpi > ConstSPtr
Definition: rthpis.h:137
RTPROCESSINGLIB::RtHpiWorker
Real-time HPI worker.
Definition: rthpis.h:89
sensorset.h
SensorSet class declaration.
INVERSELIB::SensorSet
Definition: sensorset.h:80
signalmodel.h
SignalModel class declaration.
RTPROCESSINGLIB::RtHpiWorker::m_pHpiFit
QSharedPointer< INVERSELIB::HPIFit > m_pHpiFit
Definition: rthpis.h:119
RTPROCESINGSHARED_EXPORT
#define RTPROCESINGSHARED_EXPORT
Definition: rtprocessing_global.h:55