00001 #ifndef ElectronSeedProducer_h 00002 #define ElectronSeedProducer_h 00003 00004 // 00005 // Package: RecoEgamma/ElectronTrackSeedProducers 00006 // Class: ElectronSeedProducer 00007 // 00008 // Description: Calls ElectronSeedGenerator 00009 // to find TrackingSeeds. 00010 00011 00012 class ElectronSeedGenerator ; 00013 class SeedFilter ; 00014 class EgammaHcalIsolation ; 00015 class ElectronHcalHelper ; 00016 00017 #include "FWCore/Framework/interface/EDProducer.h" 00018 #include "FWCore/Framework/interface/Event.h" 00019 #include "FWCore/Framework/interface/EventSetup.h" 00020 #include "FWCore/Framework/interface/ESHandle.h" 00021 00022 #include "Geometry/CaloGeometry/interface/CaloGeometry.h" 00023 #include "Geometry/CaloTopology/interface/CaloTopology.h" 00024 #include "RecoCaloTools/MetaCollections/interface/CaloRecHitMetaCollections.h" 00025 #include "RecoCaloTools/Selectors/interface/CaloDualConeSelector.h" 00026 00027 #include "FWCore/ParameterSet/interface/ParameterSet.h" 00028 namespace edm 00029 { 00030 class ConfigurationDescriptions ; 00031 } 00032 00033 #include "DataFormats/EgammaReco/interface/SuperClusterFwd.h" 00034 #include "DataFormats/EgammaReco/interface/SuperCluster.h" 00035 #include "DataFormats/TrajectorySeed/interface/TrajectorySeedCollection.h" 00036 #include "DataFormats/BeamSpot/interface/BeamSpot.h" 00037 #include "DataFormats/Common/interface/Handle.h" 00038 #include "DataFormats/Common/interface/EDProduct.h" 00039 00040 00041 class ElectronSeedProducer : public edm::EDProducer 00042 { 00043 public: 00044 00045 //static void fillDescriptions( edm::ConfigurationDescriptions & ) ; 00046 00047 explicit ElectronSeedProducer( const edm::ParameterSet & ) ; 00048 virtual void beginRun( edm::Run &, edm::EventSetup const & ) ; 00049 virtual void endRun( edm::Run &, edm::EventSetup const & ) ; 00050 virtual ~ElectronSeedProducer() ; 00051 00052 virtual void produce( edm::Event &, const edm::EventSetup & ) ; 00053 00054 private: 00055 00056 void filterClusters 00057 ( const reco::BeamSpot & bs, 00058 const edm::Handle<reco::SuperClusterCollection> & superClusters, 00059 /*HBHERecHitMetaCollection*mhbhe,*/ reco::SuperClusterRefVector &sclRefs, 00060 std::vector<float> & hoe1s, std::vector<float> & hoe2s ) ; 00061 void filterSeeds(edm::Event& e, const edm::EventSetup& setup, reco::SuperClusterRefVector &sclRefs); 00062 00063 edm::InputTag superClusters_[2] ; 00064 edm::InputTag initialSeeds_ ; 00065 edm::InputTag beamSpotTag_ ; 00066 00067 edm::ParameterSet conf_ ; 00068 ElectronSeedGenerator * matcher_ ; 00069 SeedFilter * seedFilter_; 00070 00071 TrajectorySeedCollection * theInitialSeedColl ; 00072 00073 // for the filter 00074 00075 // H/E 00076 // edm::InputTag hcalRecHits_; 00077 bool applyHOverECut_ ; 00078 ElectronHcalHelper * hcalHelper_ ; 00079 // edm::ESHandle<CaloGeometry> caloGeom_ ; 00080 // unsigned long long caloGeomCacheId_ ; 00081 edm::ESHandle<CaloGeometry> caloGeom_ ; 00082 unsigned long long caloGeomCacheId_ ; 00083 edm::ESHandle<CaloTopology> caloTopo_; 00084 unsigned long long caloTopoCacheId_; 00085 // EgammaHcalIsolation * hcalIso_ ; 00087 // HBHERecHitMetaCollection * mhbhe_ ; 00088 // double maxHOverE_ ; 00089 double maxHOverEBarrel_ ; 00090 double maxHOverEEndcaps_ ; 00091 double maxHBarrel_ ; 00092 double maxHEndcaps_ ; 00093 // double hOverEConeSize_; 00094 // double hOverEHBMinE_; 00095 // double hOverEHFMinE_; 00096 00097 // super cluster Et cut 00098 double SCEtCut_; 00099 00100 00101 bool fromTrackerSeeds_; 00102 bool prefilteredSeeds_; 00103 00104 } ; 00105 00106 #endif 00107 00108 00109