4#ifndef _a2706a74_88a7_497b_91e7_d5df6c57161f
5#define _a2706a74_88a7_497b_91e7_d5df6c57161f
9#include <MrMeasSrv/SeqIF/libRT/sGRAD_PULSE.h>
24 enum class Kind { Trapezoidal, Arbitrary };
138 std::array<sGRAD_PULSE_TRAP, 3> _trapezoidalGradients;
141 std::array<sGRAD_PULSE_ARB, 3> _arbitraryGradients;
144 void _checkKind(
Kind const &
kind)
const;
Vector3d area(double begin, double end) const
Return a partial area in mT/m*µs.
long plateauDuration() const
Return the plateau duration in µs (trapezoidal gradients only).
NLSStatus run()
Run the non-0 gradients on the three axes.
Vector3d amplitude() const
Return the plateau gradient amplitude (for trapezoidal gradients) or the maximum positive amplitude (...
Vector3d rampArea() const
Return the ramp area in mT/m*µs (trapezoidal gradients only).
Vector3d plateauArea() const
Return the plateau area in mT/m*µs (trapezoidal gradients only).
long duration() const
Return the total duration in µs.
GradientPulse & setEndTime(long endTime)
Set the end time in µs.
Vector3d area() const
Return the total area in mT/m*µs.
long startTime() const
Return the start time in µs.
long plateauTime() const
Return the start time of the plateau in µs (trapezoidal gradients only).
Vector3d areaTo(double end) const
Return the area in mT/m*µs from 0 to the requested end.
GradientPulse & setPlateauTime(long plateauTime)
Set the start time of the plateau in µs (trapezoidal gradients only).
IGRAD_PULSE_BASE * operator[](std::size_t i) const
Return a pointer to the internal gradient object.
Vector3d areaFrom(double begin) const
Return the area in mT/m*µs from begin to the end of the gradient pulse.
GradientPulse & update(GradientPulse const &pulse)
Update the gradients amplitudes and durations without changing the start time.
Kind
Kind of the gradient object.
Definition GradientPulse.h:24
long rampDuration() const
Return the ramp duration in µs (trapezoidal gradients only).
long endTime() const
Return the end time in µs.
GradientPulse(Vector3d const &litude, long rampDuration, long plateauDuration)
Create a trapezoidal gradient pulse.
GradientPulse & setStartTime(long startTime)
Set the start time in µs.
GradientPulse()
Create a 0-area trapezoidal gradient on all axes.
GradientPulse(std::vector< Vector3d > const &litude)
Create an arbitrary gradient pulse.
Kind const & kind() const
Return the kind of the gradient object.
Top-level namespace of the msl library.
Definition acceleration.h:17
Vector< 3, double > Vector3d
3D vector of doubles
Definition Vector.h:136