• Main Page
  • Related Pages
  • Modules
  • Classes
  • Files
  • File List

seqdiffweight.h

00001 /***************************************************************************
00002                           seqdiffweight.h  -  description
00003                              -------------------
00004     begin                : Wed Feb 12 2003
00005     copyright            : (C) 2001 by Thies H. Jochimsen
00006     email                : jochimse@cns.mpg.de
00007  ***************************************************************************/
00008 
00009 /***************************************************************************
00010  *                                                                         *
00011  *   This program is free software; you can redistribute it and/or modify  *
00012  *   it under the terms of the GNU General Public License as published by  *
00013  *   the Free Software Foundation; either version 2 of the License, or     *
00014  *   (at your option) any later version.                                   *
00015  *                                                                         *
00016  ***************************************************************************/
00017 
00018 #ifndef SEQDIFFWEIGHT_H
00019 #define SEQDIFFWEIGHT_H
00020 
00021 #include <odinseq/seqparallel.h>
00022 #include <odinseq/seqlist.h>
00023 #include <odinseq/seqgrad.h>
00024 #include <odinseq/seqgradpulse.h>
00025 #include <odinseq/seqgradconst.h>
00026 #include <odinseq/seqsimvec.h>
00027 
00053 class SeqDiffWeight : public SeqObjList, public SeqSimultanVector, public virtual SeqGradInterface {
00054 
00055  public:
00056 
00068   SeqDiffWeight(const STD_string& object_label, const fvector& bvals, float maxgradstrength,
00069                     const SeqObjBase& midpart, direction chan, bool stejskalTanner=false, const STD_string& nucleus = "" );
00070 
00071 
00084   SeqDiffWeight(const STD_string& object_label, unsigned int ndir, const fvector& bvals, float maxgradstrength,
00085                     const SeqObjBase& midpart, unsigned int baseline_rep=0, bool stejskalTanner=false, const STD_string& nucleus = "" );
00086 
00087 
00091   SeqDiffWeight(const STD_string& object_label = "unnamedSeqDiffWeight" );
00092 
00096   SeqDiffWeight(const SeqDiffWeight& sgdw) {SeqDiffWeight::operator = (sgdw);}
00097 
00101   SeqDiffWeight& operator = (const SeqDiffWeight& sgdw);
00102 
00106   const SeqGradInterface& get_grad1() const {return par1;}
00107 
00111   const SeqGradInterface& get_grad2() const {return par2;}
00112 
00116   double get_grad1_duration() const {return par1.get_duration();}
00117 
00121   double get_grad2_duration() const {return par2.get_duration();}
00122 
00126   double get_midpart_duration() const {return middle_part.get_duration();}
00127 
00131   const darray& get_b_vectors() const {return b_vectors_cache;}
00132 
00133 
00134 
00135   // overloading virtual function from SeqGradInterface
00136   SeqGradInterface& set_strength(float gradstrength);
00137   SeqGradInterface& invert_strength();
00138   float get_strength() const;
00139   fvector get_gradintegral() const;
00140   double get_gradduration() const;
00141   SeqGradInterface& set_gradrotmatrix(const RotMatrix& matrix);
00142 
00143 
00144   // final overrider of virtual functions from SeqClass
00145   void clear_container() {SeqObjList::clear(); SeqSimultanVector::clear();}
00146 
00147 
00148   // implemented virtual functions from SeqVector
00149   bool is_qualvector() const {return false;}
00150 
00151  private:
00152 
00153   void build_seq();
00154 
00155 
00156   SeqGradVectorPulse pfg1[n_directions];
00157   SeqGradVectorPulse pfg2[n_directions];
00158 
00159 
00160   SeqParallel par1;
00161   SeqParallel par2;
00162 
00163   SeqObjList middle_part;
00164 
00165   darray b_vectors_cache;
00166 
00167 };
00168 
00169 
00171 
00179 class SeqDiffWeightFlowComp : public SeqGradChanList, public SeqSimultanVector {
00180 
00181  public:
00182 
00193   SeqDiffWeightFlowComp(const STD_string& object_label, const fvector& bvals, float maxgradstrength,
00194                     direction chan, double stimdelay=1.0, const STD_string& nucleus = "" );
00195 
00199   SeqDiffWeightFlowComp(const STD_string& object_label = "unnamedSeqDiffWeightFlowComp" );
00200 
00204   SeqDiffWeightFlowComp(const SeqDiffWeightFlowComp& sgdwfc) {SeqDiffWeightFlowComp::operator = (sgdwfc);}
00205 
00209   SeqDiffWeightFlowComp& operator = (const SeqDiffWeightFlowComp& sgdwfc);
00210 
00211 
00212   // final overrider of virtual functions from SeqClass
00213   void clear_container() {SeqGradChanList::clear(); SeqSimultanVector::clear();}
00214 
00215 
00216   // implemented virtual functions from SeqVector
00217   bool is_qualvector() const {return false;}
00218 
00219  private:
00220 
00221   void build_seq();
00222 
00223   SeqGradVectorPulse pfg1;
00224   SeqGradVectorPulse pfg2;
00225   SeqGradVectorPulse pfg3;
00226   SeqGradDelay delay;
00227 };
00228 
00229 
00230 
00231 
00236 #endif

Generated on Tue Dec 18 2012 15:11:14 by  doxygen 1.7.1