00001 #ifndef RecoEcal_EgammaClusterProducers_EgammaHLTMulti5x5ClusterProducer_h_ 00002 #define RecoEcal_EgammaClusterProducers_EgammaHLTMulti5x5ClusterProducer_h_ 00003 00004 #include <memory> 00005 #include <time.h> 00006 00007 #include "FWCore/Framework/interface/Frameworkfwd.h" 00008 #include "FWCore/Framework/interface/EDProducer.h" 00009 #include "FWCore/Framework/interface/Event.h" 00010 #include "FWCore/Framework/interface/EventSetup.h" 00011 00012 #include "FWCore/ParameterSet/interface/ParameterSet.h" 00013 00014 #include "DataFormats/EcalRecHit/interface/EcalRecHitCollections.h" 00015 #include "DataFormats/CaloRecHit/interface/CaloClusterFwd.h" 00016 #include "RecoEcal/EgammaClusterAlgos/interface/Multi5x5ClusterAlgo.h" 00017 #include "RecoEcal/EgammaCoreTools/interface/PositionCalc.h" 00018 #include "RecoEcal/EgammaCoreTools/interface/ClusterShapeAlgo.h" 00019 00020 #include "Geometry/CaloTopology/interface/CaloSubdetectorTopology.h" 00021 // 00022 #include "DataFormats/CaloRecHit/interface/CaloID.h" 00023 00024 00025 00026 class EgammaHLTMulti5x5ClusterProducer : public edm::EDProducer 00027 { 00028 public: 00029 00030 EgammaHLTMulti5x5ClusterProducer(const edm::ParameterSet& ps); 00031 00032 ~EgammaHLTMulti5x5ClusterProducer(); 00033 00034 virtual void produce(edm::Event&, const edm::EventSetup&); 00035 00036 private: 00037 00038 int nMaxPrintout_; // max # of printouts 00039 int nEvt_; // internal counter of events 00040 00041 Multi5x5ClusterAlgo::VerbosityLevel verbosity; 00042 00043 bool doBarrel_; 00044 bool doEndcaps_; 00045 bool doIsolated_; 00046 00047 edm::InputTag barrelHitProducer_;//it was string 00048 edm::InputTag endcapHitProducer_;//it was string 00049 std::string barrelHitCollection_; 00050 std::string endcapHitCollection_; 00051 00052 std::string barrelClusterCollection_; 00053 std::string endcapClusterCollection_; 00054 00055 /* 00056 std::string clustershapecollectionEB_;//new 00057 std::string clustershapecollectionEE_;//new 00058 //BasicClusterShape AssociationMap 00059 std::string barrelClusterShapeAssociation_;//new 00060 std::string endcapClusterShapeAssociation_;//new 00061 */ 00062 00063 edm::InputTag l1TagIsolated_; 00064 edm::InputTag l1TagNonIsolated_; 00065 double l1LowerThr_; 00066 double l1UpperThr_; 00067 double l1LowerThrIgnoreIsolation_; 00068 00069 double regionEtaMargin_; 00070 double regionPhiMargin_; 00071 00072 PositionCalc posCalculator_; // position calculation algorithm 00073 Multi5x5ClusterAlgo * Multi5x5_p; 00074 //ClusterShapeAlgo shapeAlgo_;//new 00075 00076 bool counterExceeded() const { return ((nEvt_ > nMaxPrintout_) || (nMaxPrintout_ < 0)); } 00077 00078 const EcalRecHitCollection * getCollection(edm::Event& evt, 00079 const std::string& hitProducer_, 00080 const std::string& hitCollection_); 00081 00082 00083 void clusterizeECALPart(edm::Event &evt, const edm::EventSetup &es, 00084 const std::string& hitProducer, 00085 const std::string& hitCollection, 00086 const std::string& clusterCollection, 00087 const std::vector<EcalEtaPhiRegion>& regions, 00088 const reco::CaloID::Detectors detector); 00089 /* 00090 void clusterizeECALPart(edm::Event &evt, const edm::EventSetup &es, 00091 const std::string& hitProducer, 00092 const std::string& hitCollection, 00093 const std::string& clusterCollection, 00094 const std::string& clusterShapeAssociation, 00095 const Multi5x5ClusterAlgo::EcalPart& ecalPart); 00096 */ 00097 void outputValidationInfo(reco::CaloClusterPtrVector &clusterPtrVector); 00098 00099 }; 00100 00101 00102 #endif