00001 #ifndef RecoLocalTracker_SiPixelClusterizer_SiPixelClusterProducer_h 00002 #define RecoLocalTracker_SiPixelClusterizer_SiPixelClusterProducer_h 00003 00004 //--------------------------------------------------------------------------- 00029 //--------------------------------------------------------------------------- 00030 00031 #include "RecoLocalTracker/SiPixelClusterizer/interface/PixelClusterizerBase.h" 00032 00033 //#include "Geometry/CommonDetUnit/interface/TrackingGeometry.h" 00034 00035 #include "Geometry/TrackerGeometryBuilder/interface/TrackerGeometry.h" 00036 00037 #include "DataFormats/Common/interface/DetSetVector.h" 00038 #include "DataFormats/Common/interface/DetSetVectorNew.h" 00039 #include "DataFormats/SiPixelDigi/interface/PixelDigi.h" 00040 #include "DataFormats/SiPixelCluster/interface/SiPixelCluster.h" 00041 00042 00043 #include "FWCore/Framework/interface/EDProducer.h" 00044 #include "FWCore/Framework/interface/Event.h" 00045 #include "FWCore/Framework/interface/EventSetup.h" 00046 #include "DataFormats/Common/interface/Handle.h" 00047 #include "FWCore/Framework/interface/ESHandle.h" 00048 00049 #include "FWCore/ParameterSet/interface/ParameterSet.h" 00050 #include "FWCore/Utilities/interface/InputTag.h" 00051 00052 00053 00054 namespace cms 00055 { 00056 00057 class SiPixelClusterProducer : public edm::EDProducer { 00058 public: 00059 //--- Constructor, virtual destructor (just in case) 00060 explicit SiPixelClusterProducer(const edm::ParameterSet& conf); 00061 virtual ~SiPixelClusterProducer(); 00062 00063 void setupClusterizer(); 00064 00065 // Begin Job 00066 //virtual void beginJob( const edm::EventSetup& ); 00067 virtual void beginJob( ); 00068 00069 //--- The top-level event method. 00070 virtual void produce(edm::Event& e, const edm::EventSetup& c); 00071 00072 //--- Execute the algorithm(s). 00073 void run(const edm::DetSetVector<PixelDigi> & input, 00074 edm::ESHandle<TrackerGeometry> & geom, 00075 edmNew::DetSetVector<SiPixelCluster> & output); 00076 00077 private: 00078 edm::ParameterSet conf_; 00079 // TO DO: maybe allow a map of pointers? 00080 SiPixelGainCalibrationServiceBase * theSiPixelGainCalibration_; 00081 std::string clusterMode_; // user's choice of the clusterizer 00082 PixelClusterizerBase * clusterizer_; // what we got (for now, one ptr to base class) 00083 bool readyToCluster_; // needed clusterizers valid => good to go! 00084 edm::InputTag src_; 00085 00087 int32_t maxTotalClusters_; 00088 }; 00089 } 00090 00091 00092 #endif