00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018 #ifndef RECOFIELDMAP_H
00019 #define RECOFIELDMAP_H
00020
00021 #include "step.h"
00022
00023 static const char* posted_fmap_str="fieldmap";
00024
00025
00026 class RecoFieldMap : public RecoStep {
00027
00028
00029 STD_string label() const {return "fieldmap";}
00030 STD_string description() const {return "Calculate fieldmap";}
00031 bool process(RecoData& rd, RecoController& controller);
00032 RecoCoord input_coord() const {return RecoCoord::coord_with_mode(RecoIndex::collected,te,line3d,line,readout);}
00033 void modify_coord(RecoCoord& coord) const {coord.set_mode(RecoIndex::single, te);}
00034 RecoStep* allocate() const {return new RecoFieldMap;}
00035 void init() {}
00036 };
00037
00039
00040 class RecoFieldMapUser : public RecoStep {
00041
00042 public:
00043 bool get_fmap(Data<float,3>& fieldmap, const TinyVector<int,3>& dstshape, const RecoCoord& fmapcoord, RecoController& controller);
00044
00045 static void modify4fieldmap(RecoCoord& coord);
00046
00047 private:
00048
00049 typedef STD_map<RecoCoord, Data<float,3> > FieldMap;
00050 FieldMap fmap;
00051 Mutex fmapmutex;
00052
00053 };
00054
00055
00056 #endif
00057