KSFoundation  [April-2021]
A platform for simpler EPIC programming on GE MR systems
KS_SLICE_PLAN Struct Reference

#include <KSFoundation.h>

Data Fields

int nslices
 
int npasses
 
int nslices_per_pass
 
DATA_ACQ_ORDER acq_order [SLICE_FACTOR *DATA_ACQ_MAX]
 

Detailed Description

Struct holding all information about slice locations and aquisition order

Background

For 2D imaging one can fit a certain number of slices within each TR, and one may often need multiple TRs (or passes) to play out all slices. GE's product sequences uses the following CVs:

  • opslquant (number of slices in total, taken from the prescribed slices in the UI)
  • slquant1 (number of slices that can fit within one TR)
  • acqs (number of passes, acquisitions, or TRs necessary to acquire all slices)

Then typically orderslice() is called to set up the global data_acq_order array, which is used in the reconstruction

ks_slice_plan

This is replaced with one ks_slice_plan, effectively making acqs and slquant1 obsolete, and making scan() only dependent on one KS_SLICE_PLAN. This is e.g. beneficial for multiband (SMS) imaging, where there is one slice plan for the calibration step and another slice plan for the slice-accelerated scan.

Multiple functions can exist to create different KS_SLICE_PLANs (instead of using orderslice()), and for standard interleaved 2D imaging (odd slices followed by even slices), there is aleady a ks_calc_sliceplan() function, which in turn calls ks_calc_sliceplan_interleaved(), where the level of slice interleaving can be set.

As GE's data_acq_order() is critical for the image reconstruction, this has to be filled in correctly before scanning, and this is done by store the ks_slice_plan information by calling GEReq_predownload_store_sliceplan() in predownload().

ks_slice_plan is declared as KS_SLICE_PLAN in GERequired.e, hence there is no need to declare it for each pulse sequence.

Field Documentation

◆ nslices

int nslices

Number of slices in total (opslquant)

◆ npasses

int npasses

Number of TRs or passes (i.e. acquisitions) necessary to acquire all slices

◆ nslices_per_pass

int nslices_per_pass

Number of slices that can fit each TR (pass)

◆ acq_order

DATA_ACQ_ORDER acq_order[SLICE_FACTOR *DATA_ACQ_MAX]

Table of slice locations, slice order, and pass index for the scan


The documentation for this struct was generated from the following file: