ODIN
blade.h
1 /***************************************************************************
2  blade.h - description
3  -------------------
4  begin : Thu Mar 15 2007
5  copyright : (C) 2000-2021 by Thies Jochimsen
6  email : thies@jochimsen.de
7  ***************************************************************************/
8 
9 /***************************************************************************
10  * *
11  * This program is free software; you can redistribute it and/or modify *
12  * it under the terms of the GNU General Public License as published by *
13  * the Free Software Foundation; either version 2 of the License, or *
14  * (at your option) any later version. *
15  * *
16  ***************************************************************************/
17 
18 #ifndef RECOBLADE_H
19 #define RECOBLADE_H
20 
21 #include "step.h"
22 #include "measindex.h"
23 
24 class RecoBladeGrid : public RecoStep {
25 
26  // implementing virtual functions of RecoStep
27  STD_string label() const {return "gridblade";}
28  STD_string description() const {return "grid kspace center of single blades";}
29  bool process(RecoData& rd, RecoController& controller);
30  RecoCoord input_coord() const {return RecoCoord::coord_with_mode(RecoIndex::collected,cycle,line3d,line,readout);}
31  void modify_coord(RecoCoord& coord) const {}
32  bool query(RecoQueryContext& context);
33  RecoStep* allocate() const {return new RecoBladeGrid;}
34  void init();
35 
36  LDRbool fft;
37  LDRfilter filtermask;
38 
39  // Phase-encoding lines actually measured
41 };
42 
44 
45 class RecoCycleRot : public RecoStep {
46 
47  // implementing virtual functions of RecoStep
48  STD_string label() const {return "cyclerot";}
49  STD_string description() const {return "In-plane rotation according to cycle index";}
50  bool process(RecoData& rd, RecoController& controller);
51  RecoCoord input_coord() const {return RecoCoord::coord_with_mode(RecoIndex::collected,line3d,line,readout);}
52  void modify_coord(RecoCoord& coord) const {}
53  RecoStep* allocate() const {return new RecoCycleRot;}
54  void init() {}
55 };
56 
57 
59 
60 
61 
62 class RecoBladeCorr : public RecoStep {
63 
64  // implementing virtual functions of RecoStep
65  STD_string label() const {return "bladecorr";}
66  STD_string description() const {return "Pre-processing of PROPELLER blades: phase correction";}
67  bool process(RecoData& rd, RecoController& controller);
68  RecoCoord input_coord() const {return RecoCoord::coord_with_mode(RecoIndex::collected,line3d,line,readout);}
69  void modify_coord(RecoCoord& coord) const {}
70  RecoStep* allocate() const {return new RecoBladeCorr;}
71  void init();
72 
73  LDRfilter phasecorr_filter;
74  LDRfloat phasecorr_width;
75 
76 };
77 
78 
80 
81 
82 class RecoBladeComb : public RecoStep {
83 
84  public:
85  ~RecoBladeComb();
86 
87  private:
88  // implementing virtual functions of RecoStep
89  STD_string label() const {return "bladecomb";}
90  STD_string description() const {return "Pre-processing of PROPELLER blades: coordinate rotation for gridding";}
91  bool process(RecoData& rd, RecoController& controller);
92  RecoCoord input_coord() const {return RecoCoord::coord_with_mode(RecoIndex::collected,cycle,line3d,line,readout);}
93  void modify_coord(RecoCoord& coord) const {coord.set_mode(RecoIndex::separate,cycle,line3d,line);}
94  bool query(RecoQueryContext& context);
95  RecoStep* allocate() const {return new RecoBladeComb;}
96  void init();
97 
98  LDRbool keyhole;
99  LDRbool corrweight;
100  LDRfilter keyhole_filter;
101  LDRfilter kspaceweight_filter;
102  LDRfloat transition;
103  LDRfloat kspaceweight_width;
104 
105  STD_map<int,KspaceTraj*> trajmap; // caching trajectories, one for each keyhole index
106  Mutex trajmutex;
107 
108  // Phase-encoding lines actually measured
110 
111 };
112 
113 
114 #endif
115 
Definition: tjthread.h:46
bladecomb: Pre-processing of PROPELLER blades: coordinate rotation for gridding
Definition: blade.h:82
bladecorr: Pre-processing of PROPELLER blades: phase correction
Definition: blade.h:62
gridblade: grid kspace center of single blades
Definition: blade.h:24
cyclerot: In-plane rotation according to cycle index
Definition: blade.h:45
static RecoCoord coord_with_mode(RecoIndex::indexMode m, recoDim d1=n_recoDims, recoDim d2=n_recoDims, recoDim d3=n_recoDims, recoDim d4=n_recoDims, recoDim d5=n_recoDims, recoDim d6=n_recoDims, recoDim d7=n_recoDims, recoDim d8=n_recoDims)
Definition: index.h:254
RecoCoord & set_mode(RecoIndex::indexMode m, recoDim d1=n_recoDims, recoDim d2=n_recoDims, recoDim d3=n_recoDims, recoDim d4=n_recoDims, recoDim d5=n_recoDims, recoDim d6=n_recoDims, recoDim d7=n_recoDims, recoDim d8=n_recoDims)
Definition: index.h:238