00001 #ifndef __MMUIROADFINDER1_H__ 00002 #define __MMUIROADFINDER1_H__ 00003 00004 #include "PHModule.h" 00005 #include "PHTimeServer.h" 00006 00007 #include <mMuiRoadFinder1Par.h> 00008 #include <TMuiRoadMapO.h> 00009 #include <TMui1DRoadMapO.h> 00010 #include <TMuiClusterMapO.h> 00011 00020 class mMuiRoadFinder1 : public PHModule 00021 { 00022 public: 00024 mMuiRoadFinder1(); 00026 ~mMuiRoadFinder1(); 00027 00028 /* Find roads in one event's worth of data. */ 00029 PHBoolean event(PHCompositeNode* baseNode); 00030 00031 private: 00032 /* Find 1d roads in both arms. */ 00033 PHBoolean find_1droads(); 00034 /* Find 2d roads in both arms. */ 00035 PHBoolean find_2droads(); 00036 /* Make the first cuts (including exact duplicate) on 1d roads in both arms. */ 00037 PHBoolean cut_1droads(); 00038 /* Recursive method that tracks a stub to the next search gap. */ 00039 int track_seed(TMui1DRoadMapO::pointer road1dptr, int iLoop, int iSearch); 00040 /* Find all the necessary maps on the node tree. */ 00041 void set_interface_ptrs(PHCompositeNode* baseNode); 00042 /* Form a 2D road out of two 1D roads */ 00043 int mMuiRoadFinder1::make2d(TMuiRoadMapO::pointer cRoad, 00044 TMui1DRoadMapO::pointer pRoadH, 00045 TMui1DRoadMapO::pointer pRoadV); 00046 /* Firt 1D road using its associated clusters and update its FitPar. */ 00047 int fit1d(TMui1DRoadMapO::pointer road1dptr); 00048 /* Calculate the distance in 1d of the road with the unassociated cluster. */ 00049 double ClusterDistance(TMui1DRoadMapO::pointer road1dptr, TMuiClusterMapO::pointer clustptr); 00050 /* Check that two clusters of opposite orientation actually intersect one another. */ 00051 bool intersectionOK(TMuiClusterMapO::const_pointer clustH, 00052 TMuiClusterMapO::const_pointer clustV) const; 00053 /* Group all 2D Roads and one per group as golden. */ 00054 int flag_golden(); 00055 00056 // Interface pointers 00057 // 00058 const mMuiRoadFinder1Par* _mod_par; // parameter table 00059 TMuiRoadMapO* _roadmap; 00060 TMui1DRoadMapO* _road1dmap; 00061 TMuiClusterMapO* _clustermap; 00062 PHTimeServer::timer _timer; 00063 00064 }; 00065 00066 00067 #endif /*__mMuiRoadFinder1_H__*/