Scan protocol - xcist/documentation GitHub Wiki
The gantry rotation and table translation are defined by the gantry callback function:
cfg.callback_gantry = 'Gantry_Helical';
The same function can be used to compute vibration, multi-source acquisitions, focal spot wobble, etc. The number of views per 360 degrees of rotation is defined by
cfg.views_per_rotation = NumberOfViews;
The tube current (without mA modulation) is given by
cfg.mA = XrayTubeCUrrent_mA;
The X-ray quantum noise can be disabled by setting
cfg.disable_xray_noise = XrayNoiseDisableFlag;
The seed of the random generators can be set by
cfg.seed = [];
or
cfg.seed = SeedInteger;
If the seed is empty, every run has a different noise realization. If it is set to a particular (integer) value, the same random realization will be used every time.
The mA modulation callback routine and level are set using
cfg.callback_mA_modulation = [];
or
cfg.callback_mA_modulation = 'mA_modulation_sin';
cfg.mA_modulation = 0;
If the callback function field is empty, no mA modulation is applied. Otherwise, a level of 0.0 means NO modulation and 1.0 means modulation between 0% and 200%.
The gantry rotation speed is defined by
cfg.rotation_period = GantryRotationPeriod_Seconds
The initial time (in s, usually 0s), the initial table position (in mm) and the initial rotation angle (in degrees) of the simulation are defined by
cfg.start_time = ScanStartTime;
cfg.start_z = ScanStartZ_Millimeters;
cfg.start_angle = ScanStartAngle_Degrees;
For example, if an object is positioned at -100mm, it will be at the center of the gantry for a table z-position of +100mm. The table speed (in mm/s) is defined along the positive z-axis by
cfg.table_speed = TableSpeed_MillimetersPerSecond;
which is zero for axial acquisitions.
The rotation direction is defined by
cfg.rotation_direction = GantryRotationDirecton;
where 1 means counterclockwise and –1 means clockwise (as viewed from the back) of the gantry.
The total scan length can be defined by the total number of views (always integer) or by the total number of rotations (can be non-integer):
cfg.total_n_views = 5*cfg.views_per_rotation;
or
cfg.n_rotations = 5;
The gantry tilt angle (in degrees) is defined by
cfg.tilt_angle = GantryTiltAngle_Degrees;
The gantry is tilted around the x-axis: positive tilt angle means that for positive y, the mid-plane is tilted away in the negative z-direction (left-handed convention).
It is possible to break up simulations into a number of sub-simulations by defining particular start and stop views:
cfg.start_view = StartViewNumber;
cfg.stop_view = StopViewNumber;
Normally a simulation would start at view 1 and stop at view cfg.total_n_views
.
Air and offset scans typically consist of a single noise-free view (in simulations):
cfg.airscan_total_n_views = AirScan_NumberOfViews;
cfg.offsetscan_total_n_views = OffsetScan_NumberOfViews;
except for multi-source simulations in which each source produces a different air flux at the detector.