21 #include <odinseq/seqdur.h>
22 #include <odinseq/seqfreq.h>
23 #include <odinseq/seqobj.h>
24 #include <odinseq/seqdriver.h>
28 #define _MAX_PULSE_ATTENUATION_ 120.0
42 enum pulseType {excitation=0, refocusing, storeMagn, recallMagn, inversion, saturation, numof_pulseTypes};
43 static const char* pulseTypeLabel[]={
"excitation",
"refocusing",
"storeMagn",
"recallMagn",
"inversion",
"saturation"};
44 AVOID_CC_WARNING(pulseTypeLabel)
75 virtual double get_pulsduration()
const {
if(marshall)
return marshall->get_pulsduration();
else marshall_error();
return 0.0;}
81 virtual float get_flipangle()
const {
if(marshall)
return marshall->get_flipangle();
else marshall_error();
return 0.0;}
113 virtual float get_power()
const {
if(marshall)
return marshall->get_power();
else marshall_error();
return 0.0;}
124 virtual float get_rel_magnetic_center()
const {
if(marshall)
return marshall->get_rel_magnetic_center();
else marshall_error();
return 0.0;}
129 virtual float get_magnetic_center()
const {
if(marshall)
return marshall->get_magnetic_center();
else marshall_error();
return 0.0;}
163 virtual void set_flipscales(
const fvector& flipscales) {
if(marshall) marshall->set_flipscales(flipscales);
else marshall_error();}
164 virtual fvector get_flipscales()
const {
if(marshall)
return marshall->get_flipscales();
else marshall_error();
return fvector();}
219 virtual bool prep_driver(
const cvector& wave,
double pulsduration,
double pulscenter,
float b1max,
float power,
float flipangle,
const fvector& flipscales,
pulseType plstype) = 0;
220 virtual void event(
eventContext& context,
double start)
const = 0;
221 virtual double get_rf_energy()
const = 0;
223 virtual bool prep_flipangle_iteration(
unsigned int count) = 0;
225 virtual double get_predelay()
const = 0;
226 virtual double get_postdelay()
const = 0;
228 virtual STD_string get_program(
programContext& context,
unsigned int phaselistindex,
int channel,
const STD_string& iteratorcommand)
const = 0;
230 virtual STD_string get_instr_label()
const = 0;
232 virtual svector get_flipvector_commands(
const STD_string& iterator)
const =0;
235 virtual void new_freq(
double newfreq)
const = 0;
236 virtual bool has_new_freq()
const = 0;
275 SeqPuls(
const STD_string& object_label,
const cvector& waveform,
float pulsduration,
277 const STD_string& nucleus=
"",
const dvector& phaselist=0,
278 const dvector& freqlist=0,
float rel_magnetic_center=0.5);
283 SeqPuls(
const STD_string& object_label =
"unnamedSeqPuls");
326 void set_flipscales(
const fvector& flipscales) {flipvec.flipanglescale=flipscales;}
327 fvector get_flipscales()
const {
return flipvec.flipanglescale;}
342 SeqPuls& set_system_flipangle(
float angle);
343 SeqPuls& set_B1max(
float b1max);
344 float get_B1max()
const {
return B1max_mT;}
352 STD_string get_driver_instr_label()
const {
return pulsdriver->get_instr_label();}
361 float system_flipangle;
bool needs_unrolling_check() const
bool prep_iteration() const
unsigned int get_vectorsize() const
svector get_vector_commands(const STD_string &iterator) const
virtual SeqPulsInterface & set_rel_magnetic_center(float center)
virtual SeqPulsInterface & set_flipangle_reorder_scheme(reorderScheme scheme, unsigned int nsegments)
virtual float get_rel_magnetic_center() const
virtual double get_pulsduration() const
virtual SeqPulsInterface & set_power(float pulspower)
virtual float get_magnetic_center() const
virtual float get_flipangle() const
virtual SeqPulsInterface & set_flipangle(float flipangle)
virtual SeqPulsInterface & set_pulse_type(pulseType type)
virtual SeqPulsInterface & set_pulsduration(float pulsduration)
virtual const SeqVector & get_flipangle_vector() const
virtual const SeqVector & get_flipangle_reorder_vector() const
virtual pulseType get_pulse_type() const
fvector get_flipangles() const
virtual float get_power() const
SeqPulsInterface & set_flipangles(const fvector &flipangles)
double get_pulsduration() const
SeqPulsInterface & set_pulse_type(pulseType type)
pulseType get_pulse_type() const
SeqPuls(const SeqPuls &sp)
SeqPuls & operator=(const SeqPuls &sp)
double get_duration() const
const SeqVector & get_flipangle_reorder_vector() const
SeqPulsInterface & set_rel_magnetic_center(float center)
SeqPuls(const STD_string &object_label, const cvector &waveform, float pulsduration, float pulspower, const STD_string &nucleus="", const dvector &phaselist=0, const dvector &freqlist=0, float rel_magnetic_center=0.5)
float get_magnetic_center() const
float get_flipangle() const
SeqPuls & set_wave(const cvector &waveform)
float get_rel_magnetic_center() const
SeqPulsInterface & set_power(float pulspower)
double get_pulsstart() const
unsigned int event(eventContext &context) const
double get_rf_energy() const
SeqPulsInterface & set_flipangle_reorder_scheme(reorderScheme scheme, unsigned int nsegments)
const SeqVector & get_flipangle_vector() const
STD_string get_program(programContext &context) const
STD_string get_properties() const
SeqPulsInterface & set_pulsduration(float pulsduration)
SeqPulsInterface & set_flipangle(float flipangle)
SeqPuls(const STD_string &object_label="unnamedSeqPuls")
SeqValList get_freqvallist(freqlistAction action) const
SeqVector & set_reorder_scheme(reorderScheme scheme, unsigned int nsegments=1)
const SeqVector & get_reorder_vector() const
SeqVector(const STD_string &object_label="unnamedSeqVector")
tjvector< float > fvector