00001 #ifndef RecoParticleFlow_PFClusterShapeProducer_h_ 00002 #define RecoParticleFlow_PFClusterShapeProducer_h_ 00003 00004 // system include files 00005 #include <memory> 00006 #include <vector> 00007 00008 #include "FWCore/Framework/interface/Frameworkfwd.h" 00009 #include "FWCore/Framework/interface/EDProducer.h" 00010 00011 #include "FWCore/Framework/interface/Event.h" 00012 #include "FWCore/Framework/interface/MakerMacros.h" 00013 00014 #include "FWCore/ParameterSet/interface/ParameterSet.h" 00015 00016 #include "DataFormats/Common/interface/Handle.h" 00017 #include "FWCore/MessageLogger/interface/MessageLogger.h" 00018 #include "FWCore/Utilities/interface/Exception.h" 00019 00020 #include "DataFormats/ParticleFlowReco/interface/PFClusterFwd.h" 00021 #include "DataFormats/ParticleFlowReco/interface/PFCluster.h" 00022 00023 #include "DataFormats/EgammaReco/interface/ClusterShape.h" 00024 #include "DataFormats/EgammaReco/interface/ClusterShapeFwd.h" 00025 00026 #include "RecoParticleFlow/PFClusterShapeAlgo/interface/PFClusterShapeAlgo.h" 00027 00028 #include "Geometry/CaloGeometry/interface/CaloGeometry.h" 00029 #include "Geometry/CaloTopology/interface/EcalBarrelTopology.h" 00030 #include "Geometry/CaloTopology/interface/EcalEndcapTopology.h" 00031 00032 00033 class PFClusterShapeProducer : public edm::EDProducer 00034 { 00035 public: 00036 00037 explicit PFClusterShapeProducer(const edm::ParameterSet &); 00038 00039 ~PFClusterShapeProducer(); 00040 00041 virtual void produce(edm::Event & ev, const edm::EventSetup & es); 00042 00043 private: 00044 00045 std::string shapesLabel_; 00046 00047 edm::InputTag inputTagPFClustersECAL_; 00048 edm::InputTag inputTagPFRecHitsECAL_; 00049 00050 PFClusterShapeAlgo * csAlgo_p; 00051 00052 edm::Handle<reco::PFClusterCollection> 00053 getClusterCollection(edm::Event & evt); 00054 00055 edm::Handle<reco::PFRecHitCollection> 00056 getRecHitCollection(edm::Event & evt); 00057 }; 00058 00059 #endif