Adds a [`TrapezoidGradient`](@ref) to underly the [`ADC`](@ref) event.
## Parameters
- `rotate`: with which user-set parameter will this gradient be rotated (default: :FOV).
- `orientation`: gradient orientation before rotation (default: [1, 0, 0]).
- `ramp_overlap`: how much the gradient ramp should overlap with the ADC. 0 for no overlap, 1 for full overlap (default: 1). Can be set to `nothing` to become a free variable.
## Variables
New variables added at this level:
- [`fov`](@ref): FOV of the output image along this single k-space line in mm.
- [`voxel_size`](@ref): size of each voxel along this single k-space line in mm.
ADC variables:
- [`resolution`](@ref): number of voxels in the readout direction. This can be a non-integer value during optimisation.
- [`nsamples`](@ref): number of samples in the readout. This can be a non-integer value during optimisation.
- [`dwell_time`](@ref): Time between each readout sample in ms.
- [`effective_time`](@ref): time till the center of k-space from the start of the gradient (might not be the same as the start of the ADC).
Gradient variables:
- [`gradient_strength`](@ref): Maximum gradient strength achieved during the pulse in kHz/um
"""
function SingleLine(adc;rotate=:FOV,orientation=[1,0,0],ramp_overlap=1.,kwargs...)
:inverse_voxel_size=>"Inverse of voxel size in 1/mm. Also see [`voxel_size`](@ref).",
:resolution=>"Number of voxels in the final readout. During the optimisation this might produce non-integer values, but this will be fixed after optimsation.",
:oversample=>"How much to oversample with ([`nsamples`](@ref) / [`resolution`](@ref))",
:ramp_overlap=>"Fraction of overlap between ADC event and underlying gradient pulse ramp (between 0 and 1)."