00001 //----------------------------------------------------------------------------- 00002 // $Id: TFastFinder.h,v 1.5 2010/03/31 09:58:59 liucy Exp $ 00003 //----------------------------------------------------------------------------- 00004 // Filename : TFastFinder.h 00005 // Section : Tracking 00006 // Owner : Yoshi Iwasaki 00007 // Email : yoshihito.iwasaki@kek.jp 00008 //----------------------------------------------------------------------------- 00009 // Description : A class to find tracks with the conformal method. 00010 // See http://bsunsrv1.kek.jp/~yiwasaki/tracking/ 00011 //----------------------------------------------------------------------------- 00012 00013 #ifndef TFastFinder_FLAG_ 00014 #define TFastFinder_FLAG_ 00015 00016 #ifdef TRKRECO_DEBUG_DETAIL 00017 #ifndef TRKRECO_DEBUG 00018 #define TRKRECO_DEBUG 00019 #endif 00020 #endif 00021 #include "TrkReco/TFinderBase.h" 00022 #include "TrkReco/TBuilder0.h" 00023 class TMLink; 00024 00026 class TFastFinder : public TFinderBase { 00027 00028 public: 00030 TFastFinder(); 00031 00033 virtual ~TFastFinder(); 00034 00035 public:// Selectors 00037 std::string name(void) const; 00038 00040 std::string version(void) const; 00041 00043 void dump(const std::string & message = std::string(""), 00044 const std::string & prefix = std::string("")) const; 00045 00046 public:// Modifiers 00048 void clear(void); 00049 00051 int doit(const AList<TMDCWireHit> & axialHits, 00052 const AList<TMDCWireHit> & stereoHits, 00053 AList<TTrack> & tracks); 00054 00055 private: 00057 void selectHits(const AList<TMDCWireHit> & axialHits, 00058 const AList<TMDCWireHit> & stereoHits); 00059 00061 void selectHits2(const AList<TMDCWireHit> & axialHits, 00062 const AList<TMDCWireHit> & stereoHits); 00063 00065 void selectSimpleSegments(const AList<TMDCWireHit> & hits, 00066 AList<TMDCWireHit> & output) const; 00067 00069 AList<TMLink> findCloseHits(const AList<TMLink> & links, 00070 const TTrack & track) const; 00071 00072 private: 00073 AList<TMDCWireHit> _axialHits; 00074 AList<TMDCWireHit> _stereoHits; 00075 AList<TMLink> _axialLinks; 00076 AList<TMLink> _stereoLinks; 00077 00078 TBuilder0 _builder; 00079 TMSelector _selector; 00080 }; 00081 00082 //----------------------------------------------------------------------------- 00083 00084 #ifdef TFastFinder_NO_INLINE 00085 #define inline 00086 #else 00087 #undef inline 00088 #define TFastFinder_INLINE_DEFINE_HERE 00089 #endif 00090 00091 #ifdef TFastFinder_INLINE_DEFINE_HERE 00092 00093 inline 00094 std::string 00095 TFastFinder::name(void) const { 00096 return "Fast Finder"; 00097 } 00098 00099 #endif 00100 00101 #undef inline 00102 00103 #endif /* TFastFinder_FLAG_ */ 00104