00001 #ifndef RecoEcal_EgammaClusterProducers_HybridClusterProducer_h_ 00002 #define RecoEcal_EgammaClusterProducers_HybridClusterProducer_h_ 00003 00004 #include <memory> 00005 00006 #include "FWCore/Framework/interface/Frameworkfwd.h" 00007 #include "FWCore/Framework/interface/EDProducer.h" 00008 #include "FWCore/Framework/interface/Event.h" 00009 #include "FWCore/Framework/interface/EventSetup.h" 00010 00011 #include "FWCore/ParameterSet/interface/ParameterSet.h" 00012 00013 #include "RecoEcal/EgammaClusterAlgos/interface/HybridClusterAlgo.h" 00014 #include "RecoEcal/EgammaCoreTools/interface/ClusterShapeAlgo.h" 00015 #include "RecoEcal/EgammaCoreTools/interface/PositionCalc.h" 00016 00017 // 00018 00019 00020 class HybridClusterProducer : public edm::EDProducer 00021 { 00022 00023 public: 00024 00025 HybridClusterProducer(const edm::ParameterSet& ps); 00026 00027 ~HybridClusterProducer(); 00028 00029 virtual void produce(edm::Event&, const edm::EventSetup&); 00030 00031 private: 00032 int nMaxPrintout_; // max # of printouts 00033 int nEvt_; // internal counter of events 00034 00035 std::string basicclusterCollection_; 00036 std::string superclusterCollection_; 00037 std::string hitproducer_; 00038 std::string hitcollection_; 00039 std::string clustershapecollection_; 00040 std::string clusterShapeAssociation_; //association map 00041 00042 HybridClusterAlgo::DebugLevel debugL; 00043 00044 HybridClusterAlgo * hybrid_p; // clustering algorithm 00045 PositionCalc posCalculator_; // position calculation algorithm 00046 ClusterShapeAlgo shapeAlgo_; // cluster shape algorithm 00047 00048 bool counterExceeded() const { return ((nEvt_ > nMaxPrintout_) || (nMaxPrintout_ < 0));} 00049 }; 00050 00051 00052 #endif 00053 00054