00001 #ifndef RecoEcal_EgammaClusterProducers_Multi5x5SuperClusterProducer_h_ 00002 #define RecoEcal_EgammaClusterProducers_Multi5x5SuperClusterProducer_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 #include "FWCore/ParameterSet/interface/ParameterSet.h" 00011 00012 #include "DataFormats/EgammaReco/interface/BasicClusterFwd.h" 00013 #include "RecoEcal/EgammaClusterAlgos/interface/Multi5x5BremRecoveryClusterAlgo.h" 00014 00015 // 00016 00017 00018 class Multi5x5SuperClusterProducer : public edm::EDProducer 00019 { 00020 00021 public: 00022 00023 Multi5x5SuperClusterProducer(const edm::ParameterSet& ps); 00024 00025 ~Multi5x5SuperClusterProducer(); 00026 00027 virtual void produce(edm::Event&, const edm::EventSetup&); 00028 virtual void endJob(); 00029 00030 private: 00031 00032 int nMaxPrintout_; // max # of printouts 00033 int nEvt_; // internal counter of events 00034 00035 Multi5x5BremRecoveryClusterAlgo::VerbosityLevel verbosity; 00036 00037 std::string endcapClusterCollection_; 00038 std::string barrelClusterCollection_; 00039 00040 std::string endcapClusterProducer_; 00041 std::string barrelClusterProducer_; 00042 00043 std::string endcapSuperclusterCollection_; 00044 std::string barrelSuperclusterCollection_; 00045 00046 float barrelEtaSearchRoad_; 00047 float barrelPhiSearchRoad_; 00048 float endcapEtaSearchRoad_; 00049 float endcapPhiSearchRoad_; 00050 float seedTransverseEnergyThreshold_; 00051 00052 bool doBarrel_; 00053 bool doEndcaps_; 00054 00055 Multi5x5BremRecoveryClusterAlgo * bremAlgo_p; 00056 00057 double totalE; 00058 int noSuperClusters; 00059 00060 00061 void getClusterPtrVector(edm::Event& evt, std::string clusterProducer_, std::string clusterCollection_, reco::CaloClusterPtrVector *); 00062 00063 void produceSuperclustersForECALPart(edm::Event& evt, 00064 std::string clusterProducer, 00065 std::string clusterCollection, 00066 std::string superclusterColection); 00067 00068 void outputValidationInfo(reco::SuperClusterCollection &superclusterCollection); 00069 00070 bool counterExceeded() const { return ((nEvt_ > nMaxPrintout_) || (nMaxPrintout_ < 0));} 00071 }; 00072 00073 #endif 00074