v2.0.0
Loading...
Searching...
No Matches
fwd_coil.h
Go to the documentation of this file.
1//=============================================================================================================
31
32#ifndef FWD_COIL_H
33#define FWD_COIL_H
34
35//=============================================================================================================
36// INCLUDES
37//=============================================================================================================
38
39#include "fwd_global.h"
40
42
43//=============================================================================================================
44// EIGEN INCLUDES
45//=============================================================================================================
46
47#include <Eigen/Core>
48
49//=============================================================================================================
50// QT INCLUDES
51//=============================================================================================================
52
53#include <memory>
54
55//=============================================================================================================
56// DEFINE NAMESPACE FWDLIB
57//=============================================================================================================
58
59namespace FWDLIB
60{
61
62//=============================================================================================================
63// COIL TYPE AND ACCURACY CONSTANTS
64//=============================================================================================================
65
66constexpr int FWD_COIL_UNKNOWN = 0;
67
68constexpr int FWD_COILC_UNKNOWN = 0;
69constexpr int FWD_COILC_EEG = 1000;
70constexpr int FWD_COILC_MAG = 1;
71constexpr int FWD_COILC_AXIAL_GRAD = 2;
72constexpr int FWD_COILC_PLANAR_GRAD = 3;
73constexpr int FWD_COILC_AXIAL_GRAD2 = 4;
74
75constexpr int FWD_COIL_ACCURACY_POINT = 0;
76constexpr int FWD_COIL_ACCURACY_NORMAL = 1;
78
79inline constexpr bool FWD_IS_MEG_COIL(int x) { return (x != FWD_COILC_EEG && x != FWD_COILC_UNKNOWN); }
80
81//=============================================================================================================
88{
89public:
90 typedef std::unique_ptr<FwdCoil> UPtr;
91
92 //=========================================================================================================
96 FwdCoil(int p_np);
97
98 //=========================================================================================================
104 FwdCoil(const FwdCoil& p_FwdCoil);
105
106 //=========================================================================================================
110 ~FwdCoil();
111
112 //=========================================================================================================
123
124 //=========================================================================================================
130 bool is_axial_coil() const;
131
132 //=========================================================================================================
138 bool is_magnetometer_coil() const;
139
140 //=========================================================================================================
146 bool is_planar_coil() const;
147
148 //=========================================================================================================
154 bool is_eeg_electrode() const;
155
156public:
157 QString chname;
159 QString desc;
161 int type;
163 float size;
164 float base;
165 Eigen::Vector3f r0;
166 Eigen::Vector3f ex;
167 Eigen::Vector3f ey;
168 Eigen::Vector3f ez;
169 int np;
170 Eigen::Matrix<float, Eigen::Dynamic, 3, Eigen::RowMajor> rmag;
171 Eigen::Matrix<float, Eigen::Dynamic, 3, Eigen::RowMajor> cosmag;
172 Eigen::VectorXf w;
173
175 Eigen::Map<const Eigen::Vector3f> pos(int j) const { return Eigen::Map<const Eigen::Vector3f>(rmag.row(j).data()); }
177 Eigen::Map<const Eigen::Vector3f> dir(int j) const { return Eigen::Map<const Eigen::Vector3f>(cosmag.row(j).data()); }
178};
179
180//=============================================================================================================
181// INLINE DEFINITIONS
182//=============================================================================================================
183} // NAMESPACE FWDLIB
184
185#endif // FWD_COIL_H
Symbol-visibility macro and build-info entry points for the FWDLIB (MEG/EEG forward-modelling) librar...
#define FWDSHARED_EXPORT
Definition fwd_global.h:44
4x4 affine FIFF coordinate transform (FIFF_COORD_TRANS) annotated with source/destination coordinate-...
Forward modelling — BEM solver, spherical models, sensor/coil definitions and the lead-field assembly...
Definition compute_fwd.h:83
constexpr int FWD_COIL_ACCURACY_NORMAL
Definition fwd_coil.h:76
constexpr int FWD_COILC_EEG
Definition fwd_coil.h:69
constexpr int FWD_COIL_ACCURACY_POINT
Definition fwd_coil.h:75
constexpr int FWD_COIL_ACCURACY_ACCURATE
Definition fwd_coil.h:77
constexpr bool FWD_IS_MEG_COIL(int x)
Definition fwd_coil.h:79
constexpr int FWD_COILC_PLANAR_GRAD
Definition fwd_coil.h:72
constexpr int FWD_COIL_UNKNOWN
Definition fwd_coil.h:66
constexpr int FWD_COILC_UNKNOWN
Definition fwd_coil.h:68
constexpr int FWD_COILC_AXIAL_GRAD2
Definition fwd_coil.h:73
constexpr int FWD_COILC_AXIAL_GRAD
Definition fwd_coil.h:71
constexpr int FWD_COILC_MAG
Definition fwd_coil.h:70
Per-channel FIFF descriptor: identifiers, kind, calibration, coil type, channel-frame coil position a...
Labelled 4x4 FIFF affine: source frame, destination frame, rotation, translation and cached inverse.
std::unique_ptr< FwdCoil > UPtr
Definition fwd_coil.h:90
Eigen::Map< const Eigen::Vector3f > dir(int j) const
Definition fwd_coil.h:177
Eigen::Vector3f ey
Definition fwd_coil.h:167
QString chname
Definition fwd_coil.h:157
FwdCoil(int p_np)
Definition fwd_coil.cpp:44
Eigen::Map< const Eigen::Vector3f > pos(int j) const
Definition fwd_coil.h:175
bool is_eeg_electrode() const
Definition fwd_coil.cpp:181
Eigen::Matrix< float, Eigen::Dynamic, 3, Eigen::RowMajor > cosmag
Definition fwd_coil.h:171
static FwdCoil::UPtr create_eeg_el(const FIFFLIB::FiffChInfo &ch, const FIFFLIB::FiffCoordTrans &t=FIFFLIB::FiffCoordTrans())
Definition fwd_coil.cpp:103
bool is_planar_coil() const
Definition fwd_coil.cpp:174
bool is_axial_coil() const
Definition fwd_coil.cpp:158
Eigen::Vector3f ex
Definition fwd_coil.h:166
Eigen::Vector3f r0
Definition fwd_coil.h:165
Eigen::Matrix< float, Eigen::Dynamic, 3, Eigen::RowMajor > rmag
Definition fwd_coil.h:170
bool is_magnetometer_coil() const
Definition fwd_coil.cpp:167
Eigen::Vector3f ez
Definition fwd_coil.h:168
Eigen::VectorXf w
Definition fwd_coil.h:172