42 #include "../inverse_global.h"
49 #include <QSharedPointer>
67 class FiffCoordTransOld;
68 class FiffDigPointSet;
78 enum class Accuracy : int{high = 2, medium = 1, low = 0};
83 typedef QSharedPointer<SensorSet>
SPtr;
99 explicit SensorSet(
const QSharedPointer<FWDLIB::FwdCoilSet> pFwdCoilSet);
101 inline int np()
const;
102 inline int ncoils()
const;
103 inline Eigen::VectorXd ez(
int iSensor)
const;
104 inline Eigen::MatrixXd ez()
const;
106 inline Eigen::VectorXd r0(
int iSensor)
const;
107 inline Eigen::MatrixXd r0()
const;
109 inline Eigen::MatrixXd rmag(
int iSensor)
const;
110 inline Eigen::MatrixXd rmag()
const;
112 inline Eigen::MatrixXd cosmag(
int iSensor)
const;
113 inline Eigen::MatrixXd cosmag()
const;
115 inline Eigen::MatrixXd tra(
int iSensor)
const;
116 inline Eigen::MatrixXd tra()
const;
118 inline Eigen::RowVectorXd w(
int iSensor)
const;
119 inline Eigen::RowVectorXd w()
const;
121 inline bool operator== (
const SensorSet &b)
const;
122 inline bool operator!= (
const SensorSet &b)
const;
131 void initFromFwdCoilSet(
const QSharedPointer<FWDLIB::FwdCoilSet> pFwdCoilSet);
139 void initMatrices(
int iNchan,
int iNp);
141 Eigen::MatrixXd m_ez{Eigen::MatrixXd(0,0)};
142 Eigen::MatrixXd m_r0{Eigen::MatrixXd(0,0)};
143 Eigen::MatrixXd m_rmag{Eigen::MatrixXd(0,0)};
144 Eigen::MatrixXd m_cosmag{Eigen::MatrixXd(0,0)};
145 Eigen::MatrixXd m_tra{Eigen::MatrixXd(0,0)};
146 Eigen::RowVectorXd m_w{Eigen::RowVectorXd(0)};
155 inline int SensorSet::np()
const
160 inline int SensorSet::ncoils()
const
165 inline Eigen::VectorXd SensorSet::ez(
int iSensor)
const
167 return m_ez.row(iSensor);
170 inline Eigen::MatrixXd SensorSet::ez()
const
175 inline Eigen::VectorXd SensorSet::r0(
int iSensor)
const
177 return m_r0.row(iSensor);
180 inline Eigen::MatrixXd SensorSet::r0()
const
185 inline Eigen::RowVectorXd SensorSet::w(
int iSensor)
const
187 return m_w.segment(iSensor*m_np,m_np);
190 inline Eigen::RowVectorXd SensorSet::w()
const
195 inline Eigen::MatrixXd SensorSet::rmag(
int iSensor)
const
197 return m_rmag.block(iSensor*m_np,0,m_np,3);
200 inline Eigen::MatrixXd SensorSet::rmag()
const
205 inline Eigen::MatrixXd SensorSet::cosmag(
int iSensor)
const
207 return m_cosmag.block(iSensor*m_np,0,m_np,3);
210 inline Eigen::MatrixXd SensorSet::cosmag()
const
215 inline Eigen::MatrixXd SensorSet::tra()
const
221 inline bool SensorSet::operator== (
const SensorSet &b)
const
223 return (this->ez() == b.ez() &&
224 this->r0() == b.r0() &&
225 this->rmag() == b.rmag() &&
226 this->cosmag() == b.cosmag() &&
227 this->tra() == b.tra() &&
228 this->w() == b.w() &&
229 this->np() == b.np() &&
230 this->ncoils() == b.ncoils());
235 inline bool SensorSet::operator!= (
const SensorSet &b)
const
237 bool equal =
this==&b;
251 typedef QSharedPointer<SensorSetCreator>
SPtr;
252 typedef QSharedPointer<const SensorSetCreator>
ConstSPtr;
268 SensorSet updateSensorSet(
const QList<FIFFLIB::FiffChInfo>& channelList,
269 const Accuracy& accuracy);
272 QSharedPointer<FWDLIB::FwdCoilSet> m_pCoilDefinitions{
nullptr};
281 #endif // SENSORSET_H