00001 #ifndef RecoEcal_EgammaClusterProducers_EgammaHLTHybridClusterProducer_h_ 00002 #define RecoEcal_EgammaClusterProducers_EgammaHLTHybridClusterProducer_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/PositionCalc.h" 00015 00016 // 00017 00018 00019 class EgammaHLTHybridClusterProducer : public edm::EDProducer 00020 { 00021 00022 public: 00023 00024 EgammaHLTHybridClusterProducer(const edm::ParameterSet& ps); 00025 00026 ~EgammaHLTHybridClusterProducer(); 00027 00028 virtual void produce(edm::Event&, const edm::EventSetup&); 00029 00030 private: 00031 00032 int nMaxPrintout_; // max # of printouts 00033 int nEvt_; // internal counter of events 00034 00035 bool doIsolated_; 00036 00037 std::string basicclusterCollection_; 00038 std::string superclusterCollection_; 00039 edm::InputTag hitproducer_; 00040 std::string hitcollection_; 00041 00042 edm::InputTag l1TagIsolated_; 00043 edm::InputTag l1TagNonIsolated_; 00044 //edm::InputTag l1Tag_; 00045 double l1LowerThr_; 00046 double l1UpperThr_; 00047 double l1LowerThrIgnoreIsolation_; 00048 00049 double regionEtaMargin_; 00050 double regionPhiMargin_; 00051 00052 00053 HybridClusterAlgo * hybrid_p; // clustering algorithm 00054 PositionCalc posCalculator_; // position calculation algorithm 00055 00056 bool counterExceeded() const { return ((nEvt_ > nMaxPrintout_) || (nMaxPrintout_ < 0));} 00057 }; 00058 00059 00060 #endif 00061 00062