msl 1.1.0
 
Loading...
Searching...
No Matches
CartesianReadout.h
Go to the documentation of this file.
1// Copyright 2025 Julien Lamy, ICube, Université de Strasbourg-CNRS.
2// Part of msl, distributed under the terms of the MIT license.
3
4#ifndef _5ab5cca8_2d48_40c2_89b5_30f7c75ca92d
5#define _5ab5cca8_2d48_40c2_89b5_30f7c75ca92d
6
7#include <MrMeasSrv/SeqIF/libRT/sREADOUT.h>
8
9#include <msl/KSpace.h>
10#include <msl/GradientPulse.h>
11#include <msl/NCOPair.h>
12#include <msl/RealTimeEvents.h>
13#include <msl/Vector.h>
14
15namespace msl
16{
17
23{
24public:
26 virtual ~CartesianReadout() override = default;
31
33 double phase() const;
34
37
40
43
48 double adcStartPosition() const;
49
55
61
66 double adcEndPosition() const;
67
73
78 CartesianReadout & setADCEndPosition(double x, msl::KSpace const & kspace);
79
84 CartesianReadout & setADCPosition(double kStart, double kEnd);
85
91 double xStart, double xEnd, msl::KSpace const & kSpace);
92
94 long echoTime() const;
95
98
101
104
105 NLSStatus prepare(
106 MrProt & protocol, SeqLim & limits, SeqExpo & exports) override;
107 NLSStatus run(
108 MrProt & protocol, SeqLim & limits, SeqExpo & exports) override;
109
110 MrProtocolData::SeqExpoRFInfo rfInfo() const override;
111
112 long startTime() const override;
113 long endTime() const override;
114
117
123
129
135
141
146 sREADOUT & adc();
147
148private:
149 double _phase;
150 msl::Vector2l _index;
151 double _adcStartPosition, _adcEndPosition;
152 long _echoTime;
153
154 msl::GradientPulse _gradient;
155 sREADOUT _adc;
156 msl::NCOPair _nco;
157};
158
159}
160
161#endif // _5ab5cca8_2d48_40c2_89b5_30f7c75ca92d
CartesianReadout & setIndex(msl::Vector2l const &index)
Set the index of the current point in the discrete ky-kz space.
long endTime() const override
Return the end time of the events.
CartesianReadout & setPhase(double phase)
Set the phase of the NCO during the readout.
msl::Vector3d areaAfterEcho() const
Return the area of the read-out gradient after the effective echo time.
CartesianReadout & setADCEndPosition(double x, msl::KSpace const &kspace)
Return the position on the x-axis the k-space at the end of the ADC, as a fraction of the k-space ext...
msl::Vector3d endPosition() const
Return the position in the k-space at the end of the gradient lobe.
CartesianReadout & setADCEndPosition(double k)
Set the position on the x-axis of the k-space at the end of the ADC.
msl::Vector3d areaBeforeADC() const
Return the area of the read-out gradient before the start of the ADC.
double adcStartPosition() const
Return the position on the x-axis the k-space at the start of the ADC.
msl::Vector3d areaBeforeEcho() const
Return the area of the read-out gradient before the effective echo time.
msl::Vector3d areaAfterADC() const
Return the area of the read-out gradient after the end of the ADC.
MrProtocolData::SeqExpoRFInfo rfInfo() const override
Return the RF information for SAR computation.
double phase() const
Return the phase of the NCO during the readout.
virtual ~CartesianReadout() override=default
CartesianReadout & setADCStartPosition(double x, msl::KSpace const &kspace)
Return the position on the x-axis the k-space at the start of the ADC, as a fraction of the k-space e...
CartesianReadout & setADCPosition(double xStart, double xEnd, msl::KSpace const &kSpace)
Return the position on the x-axis the k-space at the start and the end of the ADC,...
long startTime() const override
Return the start time of the events.
CartesianReadout & setEchoTime(long echoTime)
Set the effective echo time.
NLSStatus run(MrProt &protocol, SeqLim &limits, SeqExpo &exports) override
Run the real-time events.
sREADOUT & adc()
Return a reference to the ADC real-time object, e.g. for updating its meta-data.
msl::Vector3d startPosition() const
Return the position in the k-space at the start of the gradient lobe.
msl::Vector2l index() const
Return the index of the current point in the discrete ky-kz space.
double adcEndPosition() const
Return the position on the x-axis the k-space at the end of the ADC.
CartesianReadout & operator=(CartesianReadout &&)=default
msl::GradientPulse const & gradient() const
Return the read-out gradient.
CartesianReadout & operator=(CartesianReadout const &)=default
CartesianReadout & setADCPosition(double kStart, double kEnd)
Set the position on the x-axis of the k-space at the start and the end of the ADC.
CartesianReadout(CartesianReadout &&)=default
NLSStatus prepare(MrProt &protocol, SeqLim &limits, SeqExpo &exports) override
Prepare the real-time events.
CartesianReadout & setADCStartPosition(double k)
Set the position on the x-axis of the k-space at the start of the ADC.
long echoTime() const
Return the effective echo time.
CartesianReadout(CartesianReadout const &)=default
Trapezoidal gradient pulse on three axes, with matching ramp and plateau durations on all axes and eq...
Definition GradientPulse.h:19
Description of the discretized k-space geometry.
Definition KSpace.h:16
Encapsulation of a pair of NCO objects, setting and resetting the frequency and the phase of the NCO ...
Definition NCOPair.h:26
Definition acceleration.h:17
Vector< 2, long > Vector2l
2D vector of longs
Definition Vector.h:104
Vector< 3, double > Vector3d
3D vector of doubles
Definition Vector.h:110