00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018 #ifndef RECOSTORE_H
00019 #define RECOSTORE_H
00020
00021 #include "step.h"
00022
00023 #include <odindata/fileio.h>
00024 #include <odindata/filter.h>
00025
00026 class RecoStore : public RecoStep {
00027
00028 public:
00029
00030 static STD_string default_format();
00031
00032
00033 private:
00034
00035
00036 STD_string label() const {return "store";}
00037 STD_string description() const {return "Store reconstructed images";}
00038 bool process(RecoData& rd, RecoController& controller);
00039 RecoCoord input_coord() const {return RecoCoord::coord_with_mode(RecoIndex::collected,repetition,slice,line3d,line,readout);}
00040 void modify_coord(RecoCoord& coord) const {}
00041 bool query(RecoQueryContext& context);
00042 RecoStep* allocate() const {return new RecoStore;}
00043 void init();
00044
00045 JDXstring extension;
00046 JDXstring prefix;
00047 JDXstring formats;
00048 JDXstring imageproc;
00049 JDXbool storephase;
00050 FileWriteOpts wopts;
00051
00052 bool store_images(const RecoController& controller);
00053
00054 FileIO::ProtocolDataMap pdmap;
00055 Mutex mutex;
00056
00057 FilterChain filterchain;
00058
00059 };
00060
00062
00063
00064 class RecoReal : public RecoStep {
00065
00066
00067 STD_string label() const {return "real";}
00068 STD_string description() const {return "Throw away imaginary part of data and keep only real part";}
00069 bool process(RecoData& rd, RecoController& controller);
00070 RecoCoord input_coord() const {return RecoCoord::any();}
00071 void modify_coord(RecoCoord& coord) const {}
00072 RecoStep* allocate() const {return new RecoReal;}
00073 void init() {}
00074
00075 };
00076
00077 class RecoMagn : public RecoStep {
00078
00079
00080 STD_string label() const {return "magn";}
00081 STD_string description() const {return "Only take magnitude and set phase to zero";}
00082 bool process(RecoData& rd, RecoController& controller);
00083 RecoCoord input_coord() const {return RecoCoord::coord_with_mode(RecoIndex::collected,line3d,line,readout);}
00084 void modify_coord(RecoCoord& coord) const {}
00085 RecoStep* allocate() const {return new RecoMagn;}
00086 void init() {}
00087
00088 };
00089
00090
00091 #endif
00092