CMS 3D CMS Logo

/data/refman/pasoursint/CMSSW_5_2_9/src/RecoEgamma/EgammaHLTProducers/interface/EgammaHLTIslandClusterProducer.h

Go to the documentation of this file.
00001 #ifndef RecoEcal_EgammaClusterProducers_EgammaHLTIslandClusterProducer_h_
00002 #define RecoEcal_EgammaClusterProducers_EgammaHLTIslandClusterProducer_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 "RecoEcal/EgammaClusterAlgos/interface/IslandClusterAlgo.h"
00016 #include "RecoEcal/EgammaCoreTools/interface/PositionCalc.h"
00017 #include "RecoEcal/EgammaCoreTools/interface/ClusterShapeAlgo.h"
00018 
00019 #include "Geometry/CaloTopology/interface/CaloSubdetectorTopology.h"
00020 
00021 //
00022 
00023 
00024 class EgammaHLTIslandClusterProducer : public edm::EDProducer 
00025 {
00026   public:
00027 
00028       EgammaHLTIslandClusterProducer(const edm::ParameterSet& ps);
00029 
00030       ~EgammaHLTIslandClusterProducer();
00031 
00032       virtual void produce(edm::Event&, const edm::EventSetup&);
00033 
00034    private:
00035 
00036       int nMaxPrintout_; // max # of printouts
00037       int nEvt_;         // internal counter of events
00038 
00039       IslandClusterAlgo::VerbosityLevel verbosity;
00040 
00041       bool doBarrel_;
00042       bool doEndcaps_;
00043       bool doIsolated_;
00044 
00045       edm::InputTag barrelHitProducer_;
00046       edm::InputTag endcapHitProducer_;
00047       std::string barrelHitCollection_;
00048       std::string endcapHitCollection_;
00049 
00050       std::string barrelClusterCollection_;
00051       std::string endcapClusterCollection_;
00052 
00053       edm::InputTag l1TagIsolated_;
00054       edm::InputTag l1TagNonIsolated_;
00055       double l1LowerThr_;
00056       double l1UpperThr_;
00057       double l1LowerThrIgnoreIsolation_;
00058 
00059       double regionEtaMargin_;
00060       double regionPhiMargin_;
00061 
00062       PositionCalc posCalculator_; // position calculation algorithm
00063       IslandClusterAlgo * island_p;
00064 
00065       bool counterExceeded() const { return ((nEvt_ > nMaxPrintout_) || (nMaxPrintout_ < 0)); }
00066 
00067       const EcalRecHitCollection * getCollection(edm::Event& evt,
00068                                                  const std::string& hitProducer_,
00069                                                  const std::string& hitCollection_);
00070 
00071 
00072       void clusterizeECALPart(edm::Event &evt, const edm::EventSetup &es,
00073                               const std::string& hitProducer,
00074                               const std::string& hitCollection,
00075                               const std::string& clusterCollection,
00076                               const std::vector<EcalEtaPhiRegion>& regions,
00077                               const IslandClusterAlgo::EcalPart& ecalPart);
00078 
00079 };
00080 
00081 
00082 #endif