00001 00002 00003 00004 00005 00006 00007 00008 00009 #ifndef TRACKING_ALGO_BASE_H 00010 #define TRACKING_ALGO_BASE_H 00011 00012 #include <sstream> 00013 #include <map> 00014 #include <string> 00015 #include "classNameFinder.h" 00016 00017 #include "SimDataFormats/SLHC/interface/L1TkTrack.h" 00018 #include "Geometry/TrackerGeometryBuilder/interface/StackedTrackerGeometry.h" 00019 #include "FWCore/MessageLogger/interface/MessageLogger.h" 00020 00021 #include "Geometry/CommonDetUnit/interface/GeomDetUnit.h" 00022 00023 //#include "FastSimulation/BaseParticlePropagator/interface/BaseParticlePropagator.h" 00024 00025 00032 template< typename T > 00033 class TrackingAlgorithm 00034 { 00035 protected: 00037 const StackedTrackerGeometry *theStackedTracker; 00038 std::string className_; 00039 public: 00041 TrackingAlgorithm( const StackedTrackerGeometry *aStackedGeom, std::string fName ) 00042 : theStackedTracker( aStackedGeom ) { 00043 className_=classNameFinder<T>(fName); 00044 } 00045 00047 virtual ~TrackingAlgorithm() {} 00048 00050 virtual void CreateSeeds( std::vector< L1TkTrack< T > > &output, edm::Handle< std::vector< L1TkStub< T > > > &input ) const 00051 { 00052 output.clear(); 00053 } 00054 00056 void AttachStubToSeed( L1TkTrack< T > &seed, edm::Ptr< L1TkStub< T > > &candidate ) const 00057 { 00058 seed.addStubPtr( candidate ); 00059 } 00060 00061 /* 00062 virtual std::vector< L1TkTrack< T > > PropagateSeed( edm::Ptr< L1TkTracklet< T > > aSeed, 00063 std::vector< edm::Ptr< L1TkStub< T > > > aBricks ) const { 00064 std::vector< L1TkTrack< T > > emptyVector; 00065 emptyVector.clear(); 00066 return emptyVector; 00067 } 00068 */ 00069 00071 // std::pair< double, PSimHit > MakeHit( const GeomDetUnit* dU, BaseParticlePropagator* tP, double curv ) const; 00072 00074 virtual std::string AlgorithmName() const { return className_; } 00075 00076 }; 00077 00078 00079 00080 #endif 00081