JEMRIS  2.8.1
open-source MRI simulations
EddyPulse.h
Go to the documentation of this file.
1 
5 /*
6  * JEMRIS Copyright (C)
7  * 2006-2015 Tony Stoecker
8  * 2007-2015 Kaveh Vahedipour
9  * 2009-2015 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 
35 class EddyPulse : public GradPulse {
36 
37  public:
38 
42  EddyPulse () {Init();};
43 
47  ~EddyPulse () {};
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 ConvKernel ();
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;
142  double m_linger_time;
143  int m_length;
144  vector<double> m_kernel;
145  bool m_prepared;
149 };
150 
151 #endif /*HARDRFPULSE_H_*/
void SetGenPulse(GradPulse *pulse)
Set the pulse which generates the eddy currents.
Definition: EddyPulse.h:118
~EddyPulse()
Default destructor.
Definition: EddyPulse.h:47
EddyPulse * Clone() const
Definition: EddyPulse.h:62
bool ConvKernel()
compute the convolution kernel
Definition: EddyPulse.cpp:88
EddyPulse(const EddyPulse &)
Default copy constructor.
Definition: EddyPulse.h:52
virtual double GetGradient(double const time)
Definition: EddyPulse.cpp:181
virtual bool Prepare(PrepareMode mode)
Prepare the hard RF pulse.
Definition: EddyPulse.cpp:43
virtual string GetInfo()
Definition: EddyPulse.cpp:216
EddyPulse()
Default constructor.
Definition: EddyPulse.h:42
AtomicSequence * GetParentAtom()
Get the AtomicSequence in which eddy currents were generated.
Definition: EddyPulse.h:128
double m_dt
Definition: EddyPulse.h:141
double GetParentDuration()
Get duration of the parent atom of this eddy current.
Definition: EddyPulse.h:97
Implementation of JEMRIS AtomicSequence.
double GetLingerTime()
Get linger time of the eddy current (eddy current duration outside its parent atom) ...
Definition: EddyPulse.h:91
mode
Definition: Declarations.h:112
GradPulse * GetGenPulse()
Get the pulse which generates the eddy currents.
Definition: EddyPulse.h:123
Implementation of JEMRIS GradPulse.
bool m_prepared
status whether eddy currents were succesfully prepared
Definition: EddyPulse.h:145
void Init()
initialize .
Definition: EddyPulse.cpp:33
int m_length
Definition: EddyPulse.h:143
bool Insert(PrepareMode mode)
Insert EddyCurrent pulse in sequence tree.
Definition: EddyPulse.cpp:139
virtual void SetTPOIs()
Allows non-equdistant setting of ADCs via Shape attribute (GiNaC formula)
Definition: EddyPulse.cpp:156
Prototype of an Eddy pulse.
Definition: EddyPulse.h:35
AtomicSequence * m_parent
The parent atom.
Definition: EddyPulse.h:147
Base class and prototype for all gradient pulses.
Definition: GradPulse.h:36
GradPulse * m_gen_pulse
The pulse which generates the eddy currents.
Definition: EddyPulse.h:146
double GetDuration()
Definition: AtomicSequence.cpp:53
virtual void GetValue(double *dAllVal, double const time)
Definition: EddyPulse.cpp:172
double GetAreaNumeric(int steps)
compute the area of the eddy currents
Definition: EddyPulse.cpp:205
double m_linger_time
Definition: EddyPulse.h:142
vector< double > m_kernel
Convolution kernel for EC calculation.
Definition: EddyPulse.h:144
Atomic sequence prototype.
Definition: AtomicSequence.h:40

-- last change 17.06.2016 | Tony Stoecker | Imprint --