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