FixedRadiusCrossMatch.h

Go to the documentation of this file.
00001 /*
00002  * Copyright (c) 2004 CSIRO ICT Centre
00003  *
00004  * $Id: FixedRadiusCrossMatch.h 1192 2005-09-20 15:21:27Z rsc $
00005  */
00006 
00007 /*
00008  * Implements the Matcher interface for catalogue cross matching,
00009  * using a fixed radius great circle distance between object pairs.
00010  *
00011  * Implements the generic matcher methods required for various filter
00012  * algorithms. Also provides an efficient plane sweep filter.
00013  *
00014  * Two object producers are required, plus two object consumers to report
00015  * those objects that don't match and a pair consumer for those that do.
00016  *
00017  * The active list is required to maintain an efficient set of active
00018  * objects for testing against the test obejcts.
00019  *
00020  * The producers and active list are owned by this class and are deleted
00021  * by the destructor.
00022  */
00023 
00024 #ifndef FIXEDRADIUSCROSSMATCH_DEFINED
00025 #define FIXEDRADIUSCROSSMATCH_DEFINED
00026 
00027 #include "String.h"
00028 
00029 #include "ActiveList.h"
00030 #include "CrossMatch.h"
00031 #include "ObjectConsumer.h"
00032 
00033 class Object;
00034 class ObjectPairConsumer;
00035 class ObjectProducer;
00036 
00037 
00038 class FixedRadiusCrossMatch : public CrossMatch
00039 {
00040   public:
00041     FixedRadiusCrossMatch(ObjectProducer * activeProd,
00042                           ObjectProducer * testProd,
00043                           ActiveList * activeList,
00044                           ObjectPairConsumer * pairCons,
00045                           ObjectConsumer * uActiveCons,
00046                           ObjectConsumer * uTestCons,
00047                           double maxD);
00048     virtual ~FixedRadiusCrossMatch();
00049 
00050     virtual String const & getName() const { return name(); };
00051     static String const & name() { return s_name; };
00052 
00053     virtual double getLowerBound(Object const * testObject);
00054     virtual double getUpperBound(Object const * testObject);
00055 
00056   protected:
00057     virtual double setAngularUpperLimit(Object const *) const
00058                         { return maxDistance; }
00059 
00060   private:
00061     static String const s_name;
00062 
00063     double maxDistance;
00064 
00065     FixedRadiusCrossMatch();
00066     FixedRadiusCrossMatch(FixedRadiusCrossMatch const &);
00067     FixedRadiusCrossMatch & operator=(FixedRadiusCrossMatch const &);
00068 };
00069 
00070 
00071 #endif // ifndef FIXEDRADIUSCROSSMATCH_DEFINED
Generated on Mon Oct 4 10:39:55 2010 for Matching.kdevelop by  doxygen 1.6.3