![]() |
![]() |
00001 // -*- C++ -*- 00002 // 00003 // Package: RecHitEnergyFilter 00004 // Class: RecHitEnergyFilter 00005 // 00013 // 00014 // Original Author: James Jackson 00015 // Created: Mon Jan 11 09:57:58 CET 2010 00016 // $Id: RecHitEnergyFilter.cc,v 1.1 2010/03/06 22:12:30 malgeri Exp $ 00017 // 00018 // 00019 00020 00021 // system include files 00022 #include <memory> 00023 00024 // user include files 00025 #include "FWCore/Framework/interface/Frameworkfwd.h" 00026 #include "FWCore/Framework/interface/EDFilter.h" 00027 #include "FWCore/Framework/interface/Event.h" 00028 #include "FWCore/Framework/interface/MakerMacros.h" 00029 #include "FWCore/ParameterSet/interface/ParameterSet.h" 00030 #include "DataFormats/EcalRecHit/interface/EcalRecHitCollections.h" 00031 00032 // 00033 // class declaration 00034 // 00035 00036 class RecHitEnergyFilter : public edm::EDFilter { 00037 public: 00038 explicit RecHitEnergyFilter(const edm::ParameterSet&); 00039 ~RecHitEnergyFilter(); 00040 00041 private: 00042 virtual void beginJob() ; 00043 virtual bool filter(edm::Event&, const edm::EventSetup&); 00044 virtual void endJob() ; 00045 00046 // RecHit input tags 00047 edm::InputTag ebRecHitsTag_; 00048 edm::InputTag eeRecHitsTag_; 00049 00050 // RecHit handles 00051 edm::Handle<EcalRecHitCollection> ebRecHitsH_; 00052 edm::Handle<EcalRecHitCollection> eeRecHitsH_; 00053 const EcalRecHitCollection *ebRecHits_; 00054 const EcalRecHitCollection *eeRecHits_; 00055 00056 // Procesing control 00057 bool doEb_; 00058 bool doEe_; 00059 double ebThresh_; 00060 double eeThresh_; 00061 }; 00062 00063 // 00064 // constructors and destructor 00065 // 00066 RecHitEnergyFilter::RecHitEnergyFilter(const edm::ParameterSet& iConfig) 00067 { 00068 doEb_ = iConfig.getParameter<bool>("DoEB"); 00069 doEe_ = iConfig.getParameter<bool>("DoEE"); 00070 ebRecHitsTag_ = iConfig.getParameter<edm::InputTag>("EBRecHits"); 00071 eeRecHitsTag_ = iConfig.getParameter<edm::InputTag>("EERecHits"); 00072 ebThresh_ = iConfig.getParameter<double>("EBThresh"); 00073 eeThresh_ = iConfig.getParameter<double>("EEThresh"); 00074 } 00075 00076 00077 RecHitEnergyFilter::~RecHitEnergyFilter() 00078 { 00079 } 00080 00081 00082 // 00083 // member functions 00084 // 00085 00086 // ------------ method called on each new Event ------------ 00087 bool 00088 RecHitEnergyFilter::filter(edm::Event& evt, const edm::EventSetup& iSetup) 00089 { 00090 if(doEb_) 00091 { 00092 evt.getByLabel(ebRecHitsTag_, ebRecHitsH_); 00093 ebRecHits_ = ebRecHitsH_.product(); 00094 for(EcalRecHitCollection::const_iterator it = ebRecHits_->begin(); it != ebRecHits_->end(); ++it) 00095 { 00096 double hitE = it->energy(); 00097 if(hitE > ebThresh_) 00098 { 00099 return true; 00100 } 00101 } 00102 } 00103 if(doEe_) 00104 { 00105 evt.getByLabel(eeRecHitsTag_, eeRecHitsH_); 00106 eeRecHits_ = eeRecHitsH_.product(); 00107 for(EcalRecHitCollection::const_iterator it = eeRecHits_->begin(); it != eeRecHits_->end(); ++it) 00108 { 00109 double hitE = it->energy(); 00110 if(hitE > eeThresh_) 00111 { 00112 return true; 00113 } 00114 } 00115 } 00116 00117 return false; 00118 } 00119 00120 // ------------ method called once each job just before starting event loop ------------ 00121 void 00122 RecHitEnergyFilter::beginJob() 00123 { 00124 } 00125 00126 // ------------ method called once each job just after ending the event loop ------------ 00127 void 00128 RecHitEnergyFilter::endJob() { 00129 } 00130 00131 //define this as a plug-in 00132 DEFINE_FWK_MODULE(RecHitEnergyFilter);