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

multifreq.h

00001 /***************************************************************************
00002                           multifreq.h  -  description
00003                              -------------------
00004     begin                : Wed Jun 6 2007
00005     copyright            : (C) 2001 by Thies 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 RECOMULTIFREQ_H
00019 #define RECOMULTIFREQ_H
00020 
00021 #include "fieldmap.h"
00022 
00023 
00024 class RecoMultiFreq : public RecoStep {
00025 
00026   // implementing virtual functions of RecoStep
00027   STD_string label() const {return "multifreq";}
00028   STD_string description() const {return "Generate multi-frequency ADCs based on fieldmap";}
00029   bool process(RecoData& rd, RecoController& controller);
00030   RecoCoord input_coord() const {return RecoCoord::coord_with_mode(RecoIndex::collected,readout);}
00031   void modify_coord(RecoCoord& coord) const {}
00032   bool query(RecoQueryContext& context);
00033   RecoStep* allocate() const {return new RecoMultiFreq;}
00034   void init();
00035 
00036   JDXint max_numof_freq;
00037 
00038 
00039   bool get_freqs(Data<float,1>& result, const RecoCoord& fmapcoord, double adcdur, RecoController& controller);
00040 
00041 
00042   // cache frequency values
00043   typedef STD_map<RecoCoord, Data<float,1> > FreqMap;
00044   FreqMap freqmap;
00045   Mutex freqmutex;
00046 
00047   darray echoTimeStamps; // epis x echoes
00048   Mutex stampmutex;
00049 };
00050 
00052 
00053 
00054 class RecoFreqComb : public RecoFieldMapUser {
00055 
00056   // implementing virtual functions of RecoStep
00057   STD_string label() const {return "freqcomb";}
00058   STD_string description() const {return "Combine multi-frequency images using fieldmap";}
00059   bool process(RecoData& rd, RecoController& controller);
00060   RecoCoord input_coord() const {return RecoCoord::coord_with_mode(RecoIndex::collected,freq,line3d,line,readout);}
00061   void modify_coord(RecoCoord& coord) const {coord.set_mode(RecoIndex::single,freq);}
00062   RecoStep* allocate() const {return new RecoFreqComb;}
00063   void init() {}
00064 
00065 
00066   bool get_freqs(Data<float,1>& result, const RecoCoord& fmapcoord, RecoController& controller);
00067 
00068 };
00069 
00070 
00071 #endif
00072 

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