KSFoundation  [October2024]
A platform for structured EPIC programming on GE MR systems
ksscan.h File Reference
#include <KSFoundation.h>

Data Structures

struct  KS_SLICETIMING_DESIGN
 
struct  KS_SLICETIMING
 
struct  KS_CORESLICETIME
 
struct  KS_PHASEENCODING_PLAN_DESIGN
 
struct  KSSCAN_LOOP_CONTROL
 
struct  KSSCAN_LOOP_CONTROL_DESIGN
 

Macros

#define KS_MAX_RF_SCANINFO   256
 
#define KS_INIT_SLICETIMING_DESIGN   {KS_INITVALUE(SLTAB_MAX, DEFAULT_AXIAL_SCAN_INFO), KS_NOTSET, 0, 1, 1, 2, 0, 0}
 
#define KS_INIT_SLICETIMING   {KS_INITVALUE(KS_MAX_RF_SCANINFO, DEFAULT_AXIAL_SCAN_INFO), KS_INIT_SLICEPLAN, KS_NOTSET, KS_NOTSET, 0, 1, 0, SMS_SLICE_ENCODING_DIRECTION_NEG}
 
#define KS_INIT_CORESLICETIME   {0, KS_NOTSET};
 
#define KS_INIT_PHASEENCODING_PLAN_DESIGN   {KS_INIT_DESC, KS_INIT_KSPACE_ACQ, {CARTESIAN_COORD, CARTESIAN_COORD}, 1, KS_NOTSET, MTF_Y, Y_Z, SPLIT_SHOTS_LCPO, KS_INIT_PHASEENCODING_REPEAT_DESIGN}
 
#define KSSCAN_INIT_LOOP_CONTROL   {0, 0, 0, 0, 0, KS_INIT_PHASEENCODING_PLAN, KS_INIT_PHASEENCODING_PLAN, KS_INIT_SLICETIMING}
 
#define KSSCAN_INIT_LOOP_CONTROL_DESIGN   {0, 1, 1, 1, 0, KS_INIT_PHASEENCODING_PLAN_DESIGN, KS_INIT_PHASEENCODING_PLAN_DESIGN, KS_INIT_SLICETIMING_DESIGN}
 

Enumerations

enum  SMS_SLICE_ENCODING_DIRECTION { SMS_SLICE_ENCODING_DIRECTION_POS, SMS_SLICE_ENCODING_DIRECTION_NEG }
 

Functions

STATUS ksscan_validate_slicetimingdesign (const KS_SLICETIMING_DESIGN *design)
 
STATUS ksscan_slicetiming_eval_design (KS_SLICETIMING *slicetiming, KS_SEQ_CONTROL *sequence_to_inflate, KS_CORESLICETIME coreslice(const SCAN_INFO *slice_pos, KS_DYNAMIC_STATE *dynamic), const KS_SLICETIMING_DESIGN *slicetiming_design)
 
void ksscan_copy_slices (KS_SLICETIMING_DESIGN *slicetiming_design, const SCAN_INFO *slice_pos)
 
STATUS ksscan_eval_setup_rf_slices (KS_SLICETIMING *slicetiming, const KS_SLICETIMING_DESIGN *slicetiming_design, int is2D)
 
STATUS ksscan_phaseencoding_plan_eval_design (KS_PHASEENCODING_PLAN *pe_plan, const KS_PHASEENCODING_PLAN_DESIGN *design)
 
STATUS ksscan_loop_control_eval_design (KSSCAN_LOOP_CONTROL *loop_control, KS_SEQ_CONTROL *sequence_to_inflate, KS_CORESLICETIME coreslice(const SCAN_INFO *slice_pos, KS_DYNAMIC_STATE *dynamic), const KSSCAN_LOOP_CONTROL_DESIGN *design)
 
s64 ksscan_sliceloop (const KSSCAN_LOOP_CONTROL *loop_control, KS_DYNAMIC_STATE *dynamic, KS_CORESLICETIME coreslice(const SCAN_INFO *slice_pos, KS_DYNAMIC_STATE *dynamic))
 
s64 ksscan_acqloop (const KSSCAN_LOOP_CONTROL *loop_control, KS_DYNAMIC_STATE *dynamic, KS_CORESLICETIME coreslice(const SCAN_INFO *slice_pos, KS_DYNAMIC_STATE *dynamic))
 
void ksscan_plotloop_shots (const KSSCAN_LOOP_CONTROL *loop_control, KS_CORESLICETIME coreslice(const SCAN_INFO *slice_pos, KS_DYNAMIC_STATE *dynamic))
 
void ksscan_plotloop_slices (const KSSCAN_LOOP_CONTROL *loop_control, KS_CORESLICETIME coreslice(const SCAN_INFO *slice_pos, KS_DYNAMIC_STATE *dynamic))
 
s64 ksscan_scanloop (const KSSCAN_LOOP_CONTROL *orig_loop_control, KS_DYNAMIC_STATE *dynamic, KS_CORESLICETIME coreslice(const SCAN_INFO *slice_pos, KS_DYNAMIC_STATE *dynamic))
 
void ksscan_prescanloop (const KSSCAN_LOOP_CONTROL *loop_control, KS_CORESLICETIME coreslice(const SCAN_INFO *slice_pos, KS_DYNAMIC_STATE *dynamic), int nloops, int dda)
 
void ksscan_init_loopcontrol (KSSCAN_LOOP_CONTROL *loop_control)
 
void ksscan_init_slicetiming (KS_SLICETIMING *slicetiming)
 
void ks_plot_psd (const KS_SEQ_CONTROL *ctrl, const KSSCAN_LOOP_CONTROL *loopctrl)
 

Detailed Description

This file contains sequence-independent definitions for looping functions and structs