CMS 3D CMS Logo

/data/doxygen/doxygen-1.7.3/gen/CMSSW_4_2_8/src/DPGAnalysis/Skims/src/RecHitEnergyFilter.cc

Go to the documentation of this file.
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);