/usr/include/odinseq/seqparallel.h is in libodin-dev 1.8.8-2ubuntu1.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 | /***************************************************************************
seqparallel.h - description
-------------------
begin : Fri Apr 16 2004
copyright : (C) 2000-2014 by Thies H. Jochimsen
email : thies@jochimsen.de
***************************************************************************/
/***************************************************************************
* *
* This program is free software; you can redistribute it and/or modify *
* it under the terms of the GNU General Public License as published by *
* the Free Software Foundation; either version 2 of the License, or *
* (at your option) any later version. *
* *
***************************************************************************/
#ifndef SEQPARALLEL_H
#define SEQPARALLEL_H
#include <tjutils/tjhandler.h>
#include <odinseq/seqgradobj.h>
#include <odinseq/seqobj.h>
#include <odinseq/seqdriver.h>
/**
* @addtogroup odinseq_internals
* @{
*/
/**
* The base class for platform specific drivers of parallel RF/gradient handling
*/
class SeqParallelDriver : public SeqDriverBase {
public:
SeqParallelDriver() {}
virtual ~SeqParallelDriver() {}
virtual STD_string get_program(programContext& context, const SeqObjBase* soa, const SeqGradObjInterface* sgoa) const = 0;
virtual double get_duration (const SeqObjBase* soa, const SeqGradObjInterface* sgoa) const = 0;
virtual double get_predelay (const SeqObjBase* soa, const SeqGradObjInterface* sgoa) const = 0;
virtual SeqParallelDriver* clone_driver() const = 0;
};
/////////////////////////////////////////////////////////////////////////////////////////
/**
* This container class is used to play out a sequence object (RF pulse, acquisition)
* and a gradient object in parallel
*/
class SeqParallel : public SeqObjBase, public virtual SeqGradInterface {
public:
/**
* Construct an empty gradient channel list with the given label
*/
SeqParallel(const STD_string& object_label="unnamedSeqParallel");
/**
* Constructs a copy of 'sgp'
*/
SeqParallel(const SeqParallel& sgp);
/**
* Assignment operator
*/
SeqParallel& operator = (const SeqParallel& sgp);
/**
* Makes 'sgc' become the gradient part
*/
SeqParallel& operator /= (SeqGradChan& sgc);
/**
* Makes 'sgcl' become the gradient part
*/
SeqParallel& operator /= (SeqGradChanList& sgcl);
/**
* Makes 'sgcp' become the gradient part
*/
SeqParallel& operator /= (SeqGradChanParallel& sgcp);
/**
* Makes 'sgoa' become the gradient part
*/
SeqParallel& operator /= (SeqGradObjInterface& sgoa);
/**
* Makes 'soa' become the RF part
*/
SeqParallel& operator /= (const SeqObjBase& soa);
// overloading virtual function from SeqTreeObj
STD_string get_program(programContext& context) const {return pardriver->get_program(context,get_pulsptr(),get_const_gradptr());}
double get_duration() const;
STD_string get_properties() const;
unsigned int event(eventContext& context) const;
SeqValList get_freqvallist(freqlistAction action) const;
SeqValList get_delayvallist() const;
void query(queryContext& context) const;
RecoValList get_recovallist(unsigned int reptimes, JDXkSpaceCoords& coords) const;
double get_rf_energy() const;
// overloading virtual function from SeqGradInterface
SeqGradInterface& set_strength(float gradstrength);
SeqGradInterface& invert_strength();
float get_strength() const;
fvector get_gradintegral() const;
double get_gradduration() const;
SeqGradInterface& set_gradrotmatrix(const RotMatrix& matrix);
/**
* Returns the duration for the gradient commands in the pulse programm
*/
double get_pulprogduration() const;
/**
* Clears the RF anf gradient part
*/
void clear();
protected:
SeqParallel& set_pulsptr(const SeqObjBase* pptr);
const SeqObjBase* get_pulsptr() const;
SeqParallel& set_gradptr(SeqGradObjInterface* gptr);
SeqParallel& set_gradptr(const SeqGradObjInterface* gptr);
SeqParallel& clear_gradptr();
SeqGradObjInterface* get_gradptr() const;
const SeqGradObjInterface* get_const_gradptr() const;
private:
friend class SeqOperator;
friend class SeqObjList;
friend class SeqObjVector;
friend class SeqGradObjInterface;
friend class SeqGradChanList;
friend class SeqEpiDriverParavision;
// overloading virtual function from SeqClass
void clear_container() {clear();}
mutable SeqDriverInterface<SeqParallelDriver> pardriver;
Handler<const SeqObjBase* > pulsptr;
Handler<SeqGradObjInterface* > gradptr;
Handler<const SeqGradObjInterface* > const_gradptr;
};
/** @}
*/
#endif
|