JEMRIS 2.9.2
open-source MRI simulations
Loading...
Searching...
No Matches
EddyPulse.h
Go to the documentation of this file.
1
5/*
6 * JEMRIS Copyright (C)
7 * 2006-2025 Tony Stoecker
8 * 2007-2018 Kaveh Vahedipour
9 * 2009-2019 Daniel Pflugfelder
10 *
11 *
12 * This program is free software; you can redistribute it and/or modify
13 * it under the terms of the GNU General Public License as published by
14 * the Free Software Foundation; either version 2 of the License, or
15 * (at your option) any later version.
16 *
17 * This program is distributed in the hope that it will be useful,
18 * but WITHOUT ANY WARRANTY; without even the implied warranty of
19 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
20 * GNU General Public License for more details.
21 *
22 * You should have received a copy of the GNU General Public License
23 * along with this program; if not, write to the Free Software
24 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
25 */
26
27#ifndef EDDYPULSE_H_
28#define EDDYPULSE_H_
29
30#include "GradPulse.h"
31#include "AtomicSequence.h"
32
34
35class EddyPulse : public GradPulse {
36
37 public:
38
42 EddyPulse () {Init();};
43
48
52 EddyPulse (const EddyPulse&){Init();};
53
57 void Init();
58
62 inline EddyPulse* Clone() const { return (new EddyPulse(*this)); };
63
70 virtual bool Prepare (PrepareMode mode);
71
75 bool Insert (PrepareMode mode);
76
80 bool Convolve ();
81
85 double GetAreaNumeric (int steps);
86
91 double GetLingerTime() {return m_linger_time;};
92
97 double GetParentDuration() {if (m_parent!=NULL) return m_parent->GetDuration(); else return 0.0; };
98
102 virtual void GetValue (double * dAllVal, double const time);
103
107 virtual double GetGradient (double const time);
108
113 virtual void SetTPOIs ();
114
118 void SetGenPulse (GradPulse* pulse) {m_gen_pulse=pulse;};
119
124
129
130 protected:
131
137 virtual string GetInfo ();
138
139 private:
140
141 double m_dt;
145 vector<double> m_kernel;
146 vector<double> m_eddy;
151};
152
153#endif /*HARDRFPULSE_H_*/
Implementation of JEMRIS AtomicSequence.
mode
Definition Declarations.h:112
Implementation of JEMRIS GradPulse.
Atomic sequence prototype.
Definition AtomicSequence.h:40
double GetDuration()
Definition AtomicSequence.cpp:54
Prototype of an Eddy pulse.
Definition EddyPulse.h:35
bool m_prepared
status whether eddy currents were succesfully prepared
Definition EddyPulse.h:147
AtomicSequence * m_parent
The parent atom.
Definition EddyPulse.h:149
virtual string GetInfo()
Definition EddyPulse.cpp:229
EddyPulse(const EddyPulse &)
Default copy constructor.
Definition EddyPulse.h:52
virtual double GetGradient(double const time)
Definition EddyPulse.cpp:209
double m_dt
Definition EddyPulse.h:141
vector< double > m_eddy
the eddy current
Definition EddyPulse.h:146
GradPulse * m_gen_pulse
The pulse which generates the eddy currents.
Definition EddyPulse.h:148
virtual void GetValue(double *dAllVal, double const time)
Definition EddyPulse.cpp:200
double GetParentDuration()
Get duration of the parent atom of this eddy current.
Definition EddyPulse.h:97
double m_area_gen_pulse
Definition EddyPulse.h:143
vector< double > m_kernel
Convolution kernel for EC calculation.
Definition EddyPulse.h:145
AtomicSequence * GetParentAtom()
Get the AtomicSequence in which eddy currents were generated.
Definition EddyPulse.h:128
void Init()
initialize .
Definition EddyPulse.cpp:33
void SetGenPulse(GradPulse *pulse)
Set the pulse which generates the eddy currents.
Definition EddyPulse.h:118
bool Insert(PrepareMode mode)
Insert EddyCurrent pulse in sequence tree.
Definition EddyPulse.cpp:164
int m_length
Definition EddyPulse.h:144
virtual bool Prepare(PrepareMode mode)
Prepare the hard RF pulse.
Definition EddyPulse.cpp:44
EddyPulse * Clone() const
Definition EddyPulse.h:62
double GetAreaNumeric(int steps)
compute the area of the eddy currents
Definition EddyPulse.cpp:218
GradPulse * GetGenPulse()
Get the pulse which generates the eddy currents.
Definition EddyPulse.h:123
double GetLingerTime()
Get linger time of the eddy current (eddy current duration outside its parent atom)
Definition EddyPulse.h:91
~EddyPulse()
Default destructor.
Definition EddyPulse.h:47
EddyPulse()
Default constructor.
Definition EddyPulse.h:42
double m_linger_time
Definition EddyPulse.h:142
virtual void SetTPOIs()
Allows non-equdistant setting of ADCs via Shape attribute (GiNaC formula)
Definition EddyPulse.cpp:183
bool Convolve()
compute the convolution kernel
Definition EddyPulse.cpp:89
Base class and prototype for all gradient pulses.
Definition GradPulse.h:36

-- last change 03.01.2025 | Tony Stoecker | Imprint | Data Protection --