msl 1.3.0
Loading...
Searching...
No Matches
msl::GradientPulse Class Reference

Detailed Description

Trapezoidal gradient pulse on three axes, with matching ramp and plateau durations on all axes and equal ramp up and ramp down durations.

#include <GradientPulse.h>

Public Member Functions

 GradientPulse ()
 Create a 0-area gradient on all axes.
 
 GradientPulse (Vector3d const &amplitude, long rampDuration, long plateauDuration)
 Create a gradient pulse.
 
 GradientPulse (GradientPulse const &)=default
 
 GradientPulse (GradientPulse &&)=default
 
GradientPulseoperator= (GradientPulse const &)=default
 
GradientPulseoperator= (GradientPulse &&)=default
 
 ~GradientPulse ()=default
 
GradientPulseupdate (GradientPulse const &pulse)
 Update the gradients amplitudes and durations without changing the start time.
 
Vector3d amplitude () const
 Return the gradient amplitude in mT/m.
 
long rampDuration () const
 Return the ramp duration in µs.
 
long plateauDuration () const
 Return the plateau duration in µs.
 
long duration () const
 Return the total duration in µs.
 
Vector3d area () const
 Return the total area in mT/m*µs.
 
Vector3d area (double begin, double end) const
 Return a partial area in mT/m*µs.
 
Vector3d areaFrom (double begin) const
 Return the area in mT/m*µs from begin to the end of the gradient pulse.
 
Vector3d areaTo (double end) const
 Return the area in mT/m*µs from 0 to the requested end.
 
Vector3d rampArea () const
 Return the ramp area in mT/m*µs.
 
Vector3d plateauArea () const
 Return the plateau area in mT/m*µs.
 
long startTime () const
 Return the start time in µs.
 
GradientPulsesetStartTime (long startTime)
 Set the start time in µs.
 
long plateauTime () const
 Return the start time of the plateau in µs.
 
GradientPulsesetPlateauTime (long plateauTime)
 Set the start time of the plateau in µs.
 
long endTime () const
 Return the end time in µs.
 
GradientPulsesetEndTime (long endTime)
 Set the end time in µs.
 
sGRAD_PULSE_TRAP const & operator[] (std::size_t i) const
 Return the internal gradient object.
 
NLSStatus run ()
 Run the non-0 gradients on the three axes.
 

Constructor & Destructor Documentation

◆ GradientPulse() [1/4]

msl::GradientPulse::GradientPulse ( )

Create a 0-area gradient on all axes.

◆ GradientPulse() [2/4]

msl::GradientPulse::GradientPulse ( Vector3d const &  amplitude,
long  rampDuration,
long  plateauDuration 
)

Create a gradient pulse.

Attention
Neither maximum amplitude nor maximum slew rate are checked

◆ GradientPulse() [3/4]

msl::GradientPulse::GradientPulse ( GradientPulse const &  )
default

◆ GradientPulse() [4/4]

msl::GradientPulse::GradientPulse ( GradientPulse &&  )
default

◆ ~GradientPulse()

msl::GradientPulse::~GradientPulse ( )
default

Member Function Documentation

◆ operator=() [1/2]

GradientPulse & msl::GradientPulse::operator= ( GradientPulse const &  )
default

◆ operator=() [2/2]

GradientPulse & msl::GradientPulse::operator= ( GradientPulse &&  )
default

◆ update()

GradientPulse & msl::GradientPulse::update ( GradientPulse const &  pulse)

Update the gradients amplitudes and durations without changing the start time.

◆ amplitude()

Vector3d msl::GradientPulse::amplitude ( ) const

Return the gradient amplitude in mT/m.

◆ rampDuration()

long msl::GradientPulse::rampDuration ( ) const

Return the ramp duration in µs.

◆ plateauDuration()

long msl::GradientPulse::plateauDuration ( ) const

Return the plateau duration in µs.

◆ duration()

long msl::GradientPulse::duration ( ) const

Return the total duration in µs.

◆ area() [1/2]

Vector3d msl::GradientPulse::area ( ) const

Return the total area in mT/m*µs.

◆ area() [2/2]

Vector3d msl::GradientPulse::area ( double  begin,
double  end 
) const

Return a partial area in mT/m*µs.

If begin (resp. end) is negative, it is transformed to duration()-begin (resp. duration()-end).

◆ areaFrom()

Vector3d msl::GradientPulse::areaFrom ( double  begin) const

Return the area in mT/m*µs from begin to the end of the gradient pulse.

The transform described in area(begin, end) applies.

◆ areaTo()

Vector3d msl::GradientPulse::areaTo ( double  end) const

Return the area in mT/m*µs from 0 to the requested end.

The transform described in area(begin, end) applies.

◆ rampArea()

Vector3d msl::GradientPulse::rampArea ( ) const

Return the ramp area in mT/m*µs.

◆ plateauArea()

Vector3d msl::GradientPulse::plateauArea ( ) const

Return the plateau area in mT/m*µs.

◆ startTime()

long msl::GradientPulse::startTime ( ) const

Return the start time in µs.

◆ setStartTime()

GradientPulse & msl::GradientPulse::setStartTime ( long  startTime)

Set the start time in µs.

◆ plateauTime()

long msl::GradientPulse::plateauTime ( ) const

Return the start time of the plateau in µs.

◆ setPlateauTime()

GradientPulse & msl::GradientPulse::setPlateauTime ( long  plateauTime)

Set the start time of the plateau in µs.

◆ endTime()

long msl::GradientPulse::endTime ( ) const

Return the end time in µs.

◆ setEndTime()

GradientPulse & msl::GradientPulse::setEndTime ( long  endTime)

Set the end time in µs.

◆ operator[]()

sGRAD_PULSE_TRAP const & msl::GradientPulse::operator[] ( std::size_t  i) const

Return the internal gradient object.

◆ run()

NLSStatus msl::GradientPulse::run ( )

Run the non-0 gradients on the three axes.

Note
The 0-gradients are skipped so that sequence unit tests pass

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