MNE-CPP  beta 1.0
rtinvop.cpp
Go to the documentation of this file.
1 //=============================================================================================================
37 //*************************************************************************************************************
38 //=============================================================================================================
39 // INCLUDES
40 //=============================================================================================================
41 
42 #include "rtinvop.h"
43 
44 
45 //*************************************************************************************************************
46 //=============================================================================================================
47 // QT INCLUDES
48 //=============================================================================================================
49 
50 
51 #include <QDebug>
52 
53 
54 //*************************************************************************************************************
55 //=============================================================================================================
56 // USED NAMESPACES
57 //=============================================================================================================
58 
59 using namespace RTINVLIB;
60 
61 //*************************************************************************************************************
62 //=============================================================================================================
63 // DEFINE MEMBER METHODS
64 //=============================================================================================================
65 
66 RtInvOp::RtInvOp(FiffInfo::SPtr &p_pFiffInfo, MNEForwardSolution::SPtr &p_pFwd, QObject *parent)
67 : QThread(parent)
68 , m_pFiffInfo(p_pFiffInfo)
69 , m_pFwd(p_pFwd)
70 {
71  qRegisterMetaType<MNEInverseOperator::SPtr>("MNEInverseOperator::SPtr");
72 }
73 
74 
75 //*************************************************************************************************************
76 
78 {
79  stop();
80 }
81 
82 
83 //*************************************************************************************************************
84 
86 {
87  mutex.lock();
88  //Use here a circular buffer
89  m_vecNoiseCov.push_back(p_noiseCov);
90 
91  qDebug() << "RtInvOp m_vecNoiseCov" << m_vecNoiseCov.size();
92 
93  mutex.unlock();
94 }
95 
96 
97 //*************************************************************************************************************
98 
100 {
101  m_bIsRunning = false;
102  QThread::wait();
103 
104  return true;
105 }
106 
107 
108 //*************************************************************************************************************
109 
111 {
112  m_bIsRunning = true;
113 
114  while(m_bIsRunning)
115  {
116  if(m_vecNoiseCov.size() > 0)
117  {
118  // Restrict forward solution as necessary for MEG
119  MNEForwardSolution t_forwardMeg = m_pFwd->pick_types(true, false);
120 
121  mutex.lock();
122  MNEInverseOperator::SPtr t_invOpMeg(new MNEInverseOperator(*m_pFiffInfo.data(), t_forwardMeg, m_vecNoiseCov[0], 0.2f, 0.8f));
123  m_vecNoiseCov.pop_front();
124  mutex.unlock();
125 
126  emit invOperatorCalculated(t_invOpMeg);
127  }
128  }
129 }
RtInvOp class declaration.
virtual bool stop()
Definition: rtinvop.cpp:99
void invOperatorCalculated(MNELIB::MNEInverseOperator::SPtr p_pInvOp)
QSharedPointer< MNEForwardSolution > SPtr
QSharedPointer< FiffInfo > SPtr
Definition: fiff_info.h:99
virtual void run()
Definition: rtinvop.cpp:110
RtInvOp(FiffInfo::SPtr &p_pFiffInfo, MNEForwardSolution::SPtr &p_pFwd, QObject *parent=0)
Definition: rtinvop.cpp:66
covariance data
Definition: fiff_cov.h:94
Definition: rtave.h:89
QSharedPointer< MNEInverseOperator > SPtr
void appendNoiseCov(FiffCov &p_NoiseCov)
Definition: rtinvop.cpp:85