00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018 #ifndef RECODRIFTCORR_H
00019 #define RECODRIFTCORR_H
00020
00021 #include "step.h"
00022
00023 static const char* posted_repdrift_str="fieldrepdrift";
00024
00025
00026 static void modify4repdrift(RecoCoord& coord);
00027
00028
00029 class RecoDriftCalc: public RecoStep {
00030
00031
00032 STD_string label() const {return "driftcalc";}
00033 STD_string description() const {return "Calculate field drift for each repetition";}
00034 bool process(RecoData& rd, RecoController& controller);
00035 RecoCoord input_coord() const {return RecoCoord::coord_with_mode(RecoIndex::collected,cycle,slice,echo,epi,channel,line3d,line,readout);}
00036 void modify_coord(RecoCoord& coord) const {}
00037 bool query(RecoQueryContext& context);
00038 RecoStep* allocate() const {return new RecoDriftCalc;}
00039 void init();
00040
00041 JDXstring driftcalcFile;
00042 JDXfloat driftcalcTE;
00043
00044 };
00045
00046
00047
00049
00050
00051 class RecoDriftCorr: public RecoStep {
00052
00053
00054 STD_string label() const {return "driftcorr";}
00055 STD_string description() const {return "Correct for linear field drift over repetitions";}
00056 bool process(RecoData& rd, RecoController& controller);
00057 RecoCoord input_coord() const {return RecoCoord::coord_with_mode(RecoIndex::collected,readout);}
00058 void modify_coord(RecoCoord& coord) const {}
00059 RecoStep* allocate() const {return new RecoDriftCorr;}
00060 void init() {}
00061
00062 Data<float,1> driftcache;
00063 Mutex mutex;
00064 };
00065
00066
00067 #endif
00068