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 00039 00040 class ElectronSeedProducer : public edm::EDProducer 00041 { 00042 public: 00043 00044 //static void fillDescriptions( edm::ConfigurationDescriptions & ) ; 00045 00046 explicit ElectronSeedProducer( const edm::ParameterSet & ) ; 00047 virtual void beginRun( edm::Run &, edm::EventSetup const & ) ; 00048 virtual void endRun( edm::Run &, edm::EventSetup const & ) ; 00049 virtual ~ElectronSeedProducer() ; 00050 00051 virtual void produce( edm::Event &, const edm::EventSetup & ) ; 00052 00053 private: 00054 00055 void filterClusters 00056 ( const reco::BeamSpot & bs, 00057 const edm::Handle<reco::SuperClusterCollection> & superClusters, 00058 /*HBHERecHitMetaCollection*mhbhe,*/ reco::SuperClusterRefVector &sclRefs, 00059 std::vector<float> & hoe1s, std::vector<float> & hoe2s ) ; 00060 void filterSeeds(edm::Event& e, const edm::EventSetup& setup, reco::SuperClusterRefVector &sclRefs); 00061 00062 edm::InputTag superClusters_[2] ; 00063 edm::InputTag initialSeeds_ ; 00064 edm::InputTag beamSpotTag_ ; 00065 00066 edm::ParameterSet conf_ ; 00067 ElectronSeedGenerator * matcher_ ; 00068 SeedFilter * seedFilter_; 00069 00070 TrajectorySeedCollection * theInitialSeedColl ; 00071 00072 // for the filter 00073 00074 // H/E 00075 // edm::InputTag hcalRecHits_; 00076 bool applyHOverECut_ ; 00077 ElectronHcalHelper * hcalHelper_ ; 00078 // edm::ESHandle<CaloGeometry> caloGeom_ ; 00079 // unsigned long long caloGeomCacheId_ ; 00080 edm::ESHandle<CaloGeometry> caloGeom_ ; 00081 unsigned long long caloGeomCacheId_ ; 00082 edm::ESHandle<CaloTopology> caloTopo_; 00083 unsigned long long caloTopoCacheId_; 00084 // EgammaHcalIsolation * hcalIso_ ; 00086 // HBHERecHitMetaCollection * mhbhe_ ; 00087 // double maxHOverE_ ; 00088 double maxHOverEBarrel_ ; 00089 double maxHOverEEndcaps_ ; 00090 double maxHBarrel_ ; 00091 double maxHEndcaps_ ; 00092 // double hOverEConeSize_; 00093 // double hOverEHBMinE_; 00094 // double hOverEHFMinE_; 00095 00096 // super cluster Et cut 00097 double SCEtCut_; 00098 00099 00100 bool fromTrackerSeeds_; 00101 bool prefilteredSeeds_; 00102 00103 } ; 00104 00105 #endif 00106 00107 00108