msl 1.3.0
Loading...
Searching...
No Matches
SimpleRFPulse.h
Go to the documentation of this file.
1// Copyright 2025-2026 Julien Lamy, ICube, Université de Strasbourg-CNRS.
2// Part of msl, distributed under the terms of the MIT license.
3
4#ifndef _24586826_eceb_491b_9fb0_6995bd97989a
5#define _24586826_eceb_491b_9fb0_6995bd97989a
6
7#include <string>
8
9#include <MrProtSrv/Domain/CoreNative/SeqLim.h>
10#include <MrProtSrv/Domain/MrProtData/MrProt/MrProt.h>
11#include <MrProtSrv/Domain/MrProtData/MrProt/SeqIF/SeqExpo.h>
12#include <MrProtSrv/Domain/MrProtData/MrProt/SeqIF/SeqExpoRFBlockInfo.h>
13
14#include "msl/NCOPair.h"
15#include "msl/RFPulse.h"
16
17namespace msl
18{
19
21namespace rf_pulses
22{
23
25template<typename TPulse>
26class SimpleRFPulse: public RFPulse
27{
28public:
29 SimpleRFPulse();
30 SimpleRFPulse(SimpleRFPulse<TPulse> const &) = default;
31 SimpleRFPulse(SimpleRFPulse<TPulse> &&) = default;
32 SimpleRFPulse<TPulse> & operator=(SimpleRFPulse<TPulse> const &) = default;
33 SimpleRFPulse<TPulse> & operator=(SimpleRFPulse<TPulse> &&) = default;
34 virtual ~SimpleRFPulse() = default;
35
37 Type type() const override;
38
40 SimpleRFPulse<TPulse> & setType(Type type) override;
41
43 double flipAngle() const override;
44
46 SimpleRFPulse<TPulse> & setFlipAngle(double flipAngle) override;
47
49 double initialPhase() const override;
50
52 SimpleRFPulse<TPulse> & setInitialPhase(double initialPhase) override;
53
55 double additionalPhase() const override;
56
58 SimpleRFPulse<TPulse> & setAdditionalPhase(double additionalPhase) override;
59
61 long startTime() const override;
62
64 SimpleRFPulse<TPulse> & setStartTime(long startTime) override;
65
67 long duration() const override;
68
70 SimpleRFPulse<TPulse> & setDuration(long duration) override;
71
73 long samples() const override;
74
76 SimpleRFPulse<TPulse> & setSamples(long samples) override;
77
79 std::string ident() const override;
80
82 SimpleRFPulse<TPulse> & setIdent(std::string const & ident) override;
83
85 double gamma() const override;
86
88 MrProtocolData::SeqExpoRFInfo rfInfo() const override;
89
91 NLSStatus run(
92 MrProt & protocol, SeqLim & limits, SeqExpo & exports) override;
93
94protected:
96 TPulse _rf;
97
100
103};
104
105}
106
107}
108
109#include "SimpleRFPulse.txx"
110
111#endif // _24586826_eceb_491b_9fb0_6995bd97989a
Encapsulation of a pair of NCO objects, setting and resetting the frequency and the phase of the NCO ...
Definition NCOPair.h:26
Type
Type of pulse, i.e. its role in the sequence.
Definition RFPulse.h:18
Type type() const override
Return the type of the RF pulse.
double flipAngle() const override
Return the flip angle (deg).
SimpleRFPulse< TPulse > & setAdditionalPhase(double additionalPhase) override
Set the additional phase of the RF pulse (deg).
SimpleRFPulse< TPulse > & setDuration(long duration) override
Set the duration of the RF pulse (µs).
long startTime() const override
Return the start time of the RF pulse (µs).
double _additionalPhase
Additional phase for the NCO.
Definition SimpleRFPulse.h:102
double gamma() const override
Return the gyromagnetic ratio of the current nucleus (MHz/T).
TPulse _rf
sRF_PULSE-derived object
Definition SimpleRFPulse.h:96
SimpleRFPulse< TPulse > & setIdent(std::string const &ident) override
Set the user-defined name of the RF pulse.
NLSStatus run(MrProt &protocol, SeqLim &limits, SeqExpo &exports) override
Run the RF pulse and the NCO.
long duration() const override
Return the duration of the RF pulse (µs).
SimpleRFPulse< TPulse > & setSamples(long samples) override
Set the number of discrete samples of the RF pulse.
SimpleRFPulse< TPulse > & setFlipAngle(double flipAngle) override
Set the flip angle (deg).
SimpleRFPulse< TPulse > & setInitialPhase(double initialPhase) override
Set the initial phase of the RF pulse (deg).
std::string ident() const override
Return the user-defined name of the RF pulse.
double additionalPhase() const override
Return the additional phase of the RF pulse (deg).
MrProtocolData::SeqExpoRFInfo rfInfo() const override
Return the RF information for SAR computation.
NCOPair _nco
NCO before and after this pulse.
Definition SimpleRFPulse.h:99
SimpleRFPulse< TPulse > & setType(Type type) override
Set the type of the RF pulse.
SimpleRFPulse< TPulse > & setStartTime(long startTime) override
Set the start time of the RF pulse (µs).
double initialPhase() const override
Return the initial phase of the RF pulse (deg).
long samples() const override
Return the number of discrete samples of the RF pulse.
Pre-defined RF pulses and pulse modifiers.
Definition External.h:21
Top-level namespace of the msl library.
Definition acceleration.h:17