00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018 #ifndef RECOPHASECORR_H
00019 #define RECOPHASECORR_H
00020
00021 #include "step.h"
00022
00023 class RecoPhaseMap : public RecoStep {
00024
00025 public:
00026
00027 static void modify(RecoCoord& coord) {
00028 coord.set_mode(RecoIndex::ignore, line, line3d);
00029 coord.set_mode(RecoIndex::separate, echo);
00030 }
00031
00032 static void modify4blackboard(RecoCoord& coord) {
00033 modify(coord);
00034 coord.set_mode(RecoIndex::separate, epi);
00035 coord.set_mode(RecoIndex::ignore, repetition, dti, line3d, templtype, freq);
00036 }
00037
00038
00039 private:
00040
00041 STD_string label() const {return "phasemap";}
00042 STD_string description() const {return "Calculate and post phasemap for echo-by-echo phase correction";}
00043 bool process(RecoData& rd, RecoController& controller);
00044 RecoCoord input_coord() const {return RecoCoord::coord_with_mode(RecoIndex::collected,echo,readout);}
00045 void modify_coord(RecoCoord& coord) const {}
00046 bool query(RecoQueryContext& context);
00047 RecoStep* allocate() const {return new RecoPhaseMap;}
00048 void init() {}
00049
00050 bool odd_even_echoes;
00051 };
00052
00053
00055
00056
00057 class RecoPhaseCorr : public RecoStep {
00058
00059
00060
00061 STD_string label() const {return "phasecorr";}
00062 STD_string description() const {return "Apply echo-by-echo phase correction";}
00063 bool process(RecoData& rd, RecoController& controller);
00064 RecoCoord input_coord() const {return RecoCoord::coord_with_mode(RecoIndex::collected,readout);}
00065 void modify_coord(RecoCoord& coord) const {}
00066 RecoStep* allocate() const {return new RecoPhaseCorr;}
00067 void init() {}
00068
00069 };
00070
00071
00072
00073 #endif
00074