00001 00002 00003 00004 00005 00006 00007 00008 00009 #ifndef CLUSTERING_ALGO_BASE_H 00010 #define CLUSTERING_ALGO_BASE_H 00011 00012 #include <sstream> 00013 #include <map> 00014 #include <string> 00015 #include "classNameFinder.h" 00016 #include "Geometry/TrackerGeometryBuilder/interface/StackedTrackerGeometry.h" 00017 00024 template< typename T > 00025 class ClusteringAlgorithm 00026 { 00027 protected: 00029 const StackedTrackerGeometry *theStackedTracker; 00030 std::string className_; 00031 public: 00033 ClusteringAlgorithm( const StackedTrackerGeometry *aStackedTracker, std::string fName ) 00034 : theStackedTracker( aStackedTracker ){ 00035 className_=classNameFinder<T>(fName); 00036 } 00037 00038 00040 virtual ~ClusteringAlgorithm(){} 00041 00043 virtual void Cluster( std::vector< std::vector< T > > &output, const std::vector< T > &input ) const 00044 { 00045 output.clear(); 00046 } 00047 00049 virtual std::string AlgorithmName() const { return className_; } 00050 00051 }; 00052 00053 00054 00055 #endif 00056