msl 1.3.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
79 CartesianReadout & setADCEndPosition(double x, msl::KSpace const & kspace);
80
85 CartesianReadout & setADCPosition(double kStart, double kEnd);
86
92 double xStart, double xEnd, msl::KSpace const & kSpace);
93
95 long contrast() const;
96
99
104 long timeOffset() const;
105
111
116 bool reverted() const;
117
123
125 long echoTime() const;
126
129
132
133 NLSStatus prepare(
134 MrProt & protocol, SeqLim & limits, SeqExpo & exports) override;
135 NLSStatus run(
136 MrProt & protocol, SeqLim & limits, SeqExpo & exports) override;
137
138 MrProtocolData::SeqExpoRFInfo rfInfo() const override;
139
140 long startTime() const override;
141 long endTime() const override;
142
145
147 long adcStartTime() const;
148
150 long adcEndTime() const;
151
157
163
169
175
180 sREADOUT const & adc() const;
181
186 sREADOUT & adc();
187
188private:
189 double _phase;
190 msl::Vector2l _index;
191 double _adcStartPosition, _adcEndPosition;
192 long _contrast;
193 long _timeOffset;
194 bool _reverted;
195
196 long _echoTime;
197
198 msl::GradientPulse _gradient;
199 sREADOUT _adc;
200 msl::NCOPair _nco;
201};
202
203}
204
205#endif // _5ab5cca8_2d48_40c2_89b5_30f7c75ca92d
Cartesian read-out along the X gradient, comprising the ADC, NCO manipulation, and read-out gradient.
Definition CartesianReadout.h:23
CartesianReadout & setContrast(long contrast)
Set the contrast number.
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)
Set the position on the x-axis the k-space at the end of the ADC (i.e. at the end of the last column)...
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 (i.e. at the end of the last colu...
msl::Vector3d areaBeforeADC() const
Return the area of the read-out gradient before the start of the ADC.
long timeOffset() const
Return the time offset to get the effective echo time, accounting e.g. for the time of the excitation...
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.
long adcStartTime() const
Return the start time 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.
bool reverted() const
Return whether the readout is reverted with respect to its nominal direction. This is handled in run,...
virtual ~CartesianReadout() override=default
CartesianReadout & setADCStartPosition(double x, msl::KSpace const &kspace)
Set the position on the x-axis the k-space at the start of the ADC, as a fraction of the k-space exte...
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,...
CartesianReadout & setReverted(bool reverted)
Set whether the readout is reverted with respect to its nominal direction. This is handled in run,...
long startTime() const override
Return the start time of the events.
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.
CartesianReadout & setTimeOffset(long timeOffset)
Set the time offset to get the effective echo time, accounting e.g. for the time of the excitation pu...
msl::Vector3d startPosition() const
Return the position in the k-space at the start of the gradient lobe.
long adcEndTime() const
Return the start time of the ADC.
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.
sREADOUT const & adc() const
Return a reference to the ADC real-time object, e.g. for updating its meta-data.
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 contrast() const
Return the contrast number.
long echoTime() const
Return the effective echo time (requires preparation)
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:22
Encapsulation of a pair of NCO objects, setting and resetting the frequency and the phase of the NCO ...
Definition NCOPair.h:26
Base class for real-time events.
Definition RealTimeEvents.h:20
Top-level namespace of the msl library.
Definition acceleration.h:17