KSFoundation  [October2024]
A platform for structured EPIC programming on GE MR systems
ksdixon.h File Reference
#include "ksdesign.h"

Data Structures

struct  KSDIXON_DESIGN
 
struct  KSDIXON_READTRAP
 
struct  KSDIXON_DUALREADTRAP
 
struct  KSDIXON_STATE
 

Macros

#define KSDIXON_MAX_POINTS   2 /* Maximum number of chemical shift encodes */
 
#define KSDIXON_UPDATE_UI(dixon_mode, kdesign, ks_op_dixon_mode, ks_op_dixon_tr_mode, ks_op_dixon_shift)   ksdixon_update_UI(dixon_mode, kdesign, KS_EXPAND_OPUSER(ks_op_dixon_mode), KS_EXPAND_OPUSER(ks_op_dixon_tr_mode), KS_EXPAND_OPUSER(ks_op_dixon_shift))
 
#define KSDIXON_INIT_UI(rbw, xres, fov, ks_op_dixon_mode, ks_op_dixon_tr_mode, ks_op_dixon_shift)   ksdixon_init_UI(rbw, xres, fov, KS_EXPAND_OPUSER(ks_op_dixon_mode), KS_EXPAND_OPUSER(ks_op_dixon_tr_mode), KS_EXPAND_OPUSER(ks_op_dixon_shift))
 
#define KSDIXON_SETUP(dixon_settings, ks_op_dixon_mode, ks_op_dixon_tr_mode, ks_op_dixon_shift)   ksdixon_setup(dixon_settings, KS_EXPAND_OPUSER(ks_op_dixon_mode), KS_EXPAND_OPUSER(ks_op_dixon_tr_mode), KS_EXPAND_OPUSER(ks_op_dixon_shift));
 
#define KSDIXON_MODE_DESCR   "Dixon [1=shift, 2=dBW, 3=spl, 4=invrmp, 5=triptr, 6=dBWs}"
 
#define KSDIXON_MODE_NUM_MODES   7
 
#define KSDIXON_TR_MODE_DESCR   "TR [0:single 1:multi]"
 
#define KSDIXON_SHIFT_DEFAULT   (30000.0/(float)cffield * 1000)
 
#define KSDIXON_SHIFT_DESC   "Shift [us]"
 
#define KSDIXON_INIT_DESIGN   {KSDIXON_OFF, 1, KS_INITVALUE(KSDIXON_MAX_POINTS,0), KS_NOTSET, 1.0, KS_NOTSET, KS_NOTSET, KS_NOTSET, KS_NOTSET, KS_NOTSET, KS_NOTSET, KSDIXON_SINGLE_TR}
 
#define KSDIXON_INIT_READTRAP   {KS_INITVALUE(4,0.0), KS_INITVALUE(4,0.0)}
 
#define KSDIXON_INIT_DUALREADTRAP   {KSDIXON_INIT_READTRAP, KSDIXON_INIT_READTRAP, 0.0, 0.0, 0}
 
#define KSDIXON_INIT_STATE   {KS_INITVALUE(3, KS_NOTSET), KS_INITVALUE(KSDIXON_MAX_POINTS,0), 0}
 

Enumerations

enum  KSDIXON_MODE {
  KSDIXON_OFF = 0, KSDIXON_SHIFTED = 1, KSDIXON_DBW = 2, KSDIXON_ASYM_SPLINE = 3,
  KSDIXON_ASYM_INVRAMP = 4, KSDIXON_TRIP_TRAP = 5, KSDIXON_DBW_STAGGERED = 6
}
 
enum  KSDIXON_TR_MODE { KSDIXON_SINGLE_TR = 0, KSDIXON_MULTI_TR = 1 }
 

Functions

float ksdixon_calc_dephasing_period ()
 
float ksdixon_calc_nsa (float t1, float t2, float var1, float var2, float dephasing_period)
 
int ksdixon_max_shift (KSDIXON_MODE mode, int duration, float xres, float fov)
 
STATUS ksdixon_time2echo_from_readtrap (float *time2echo, KSDIXON_READTRAP *readtrap, float area2echo)
 
STATUS ksdixon_dualreadtrap_eval_shifts (KSDIXON_DUALREADTRAP *dualreadtrap, float area2echo, float shift_at_acq_start, float deadtime)
 
STATUS ksdixon_eval_acq_trap (KSDIXON_READTRAP *readtrap, int acq_duration, float sample_area, float max_start_amp, float sampling_threshold_amp, float slew, float amp_limit)
 
STATUS ksdixon_eval_dualreadtrap (KSDIXON_DUALREADTRAP *dualreadtrap, int acq_duration1, int acq_duration2, float sample_area, float max_start_end_amp, float sampling_threshold_amp)
 
STATUS ksdixon_eval_gre_dBW_acq_waves (KS_WAVE *wave1, KS_WAVE *wave2, int *shift1, int *shift2, int *nover, int acq_start_time, float sampling_threshold_amp, int min_nover, int fov, int res, KS_DESCRIPTION desc)
 
STATUS ksdixon_eval_gre_dualBW_readwave (KS_READWAVE *readwave1, KS_READWAVE *readwave2, const KS_KSPACE_DESIGN *kdesign, KSDIXON_DESIGN *dixon, const int acq_start_time, KS_DESCRIPTION desc)
 
STATUS ksdixon_eval_asym_spline_acq_wave (KS_WAVE *wave, int shift, int duration, float area, KS_DESCRIPTION desc)
 
STATUS ksdixon_eval_trip_trap_acq_wave (KS_WAVE *wave, int shift, int duration, float area, KS_DESCRIPTION desc)
 
STATUS ksdixon_eval_flat_acq_wave (KS_WAVE *wave, int duration, float area, KS_DESCRIPTION desc)
 
STATUS ksdixon_eval_inverted_ramp_acq_wave (KS_WAVE *wave, int shift, int duration, float area, KS_DESCRIPTION desc)
 
STATUS ksdixon_eval_trip_trap_acq_points (float *t, float *G, int shift, int duration, float area, float Mc, float g1, float s)
 
STATUS ksdixon_eval_trip_traps (KS_WAVE *acq_waves, int *shifts, int points, const KS_KSPACE_DESIGN *kdesign, KS_DESCRIPTION desc)
 
float ksdixon_amp_limit (float board_amp_limit, float fov)
 
STATUS ksdixon_eval_inverted_ramp_acq_points (float *t, float *G, int shift, int duration, float area, float s, float amp_limit)
 
void ksdixon_init_settings (KSDIXON_DESIGN *const dixon)
 
STATUS ksdixon_setup (KSDIXON_DESIGN *pdixon, const int opnum_dixon_mode, _cvfloat *_opuser_dixon_mode, const int opnum_dixon_tr_mode, _cvfloat *_opuser_dixon_tr_mode, const int opnum_dixon_shift, _cvfloat *_opuser_dixon_shift)
 
STATUS ksdixon_eval_validate_settings (const KSDIXON_DESIGN *dixon)
 
void ksdixon_update_UI (const KSDIXON_MODE dixon_mode, const KS_KSPACE_DESIGN *const kdesign, const int opnum_dixon_mode, _cvfloat *_opuser_dixon_mode, const int opnum_dixon_tr_mode, _cvfloat *_opuser_dixon_tr_mode, const int opnum_dixon_shift, _cvfloat *_opuser_dixon_shift)
 
void ksdixon_init_UI (float rbw, int xres, float fov, const int opnum_dixon_mode, _cvfloat *_opuser_dixon_mode, const int opnum_dixon_tr_mode, _cvfloat *_opuser_dixon_tr_mode, const int opnum_dixon_shift, _cvfloat *_opuser_dixon_shift)
 
STATUS ksdixon_eval_setup_gre_readouts (KS_ECHOTRAIN *echotrain, KSDIXON_DESIGN *dixon, const KS_KSPACE_DESIGN *kdesign, const int acq_start_time, const int TR_index, KS_DESCRIPTION desc)
 
STATUS ksdixon_set_design (KSDIXON_DESIGN *const dixon_design, const KS_KSPACE_DESIGN *const kdesign)
 
STATUS ksdixon_setup_fse_echotrain (KS_ECHOTRAIN_DESIGN *const echotrain_design, KSDIXON_STATE *const dixon_state, const KSDIXON_DESIGN *const dixon_design, const int ETL, float xcrusher_area, const KS_DESCRIPTION description)
 

Variables

int piuset
 

Detailed Description

This file contains sequence-independent definitions for Dixon