CMS 3D CMS Logo

/data/doxygen/doxygen-1.7.3/gen/CMSSW_4_2_8/src/CaloOnlineTools/EcalTools/plugins/EcalRecHitsFilter.cc

Go to the documentation of this file.
00001 // -*- C++ -*-
00002 //
00003 // Package:   EcalRecHitsFilter
00004 // Class:     EcalRecHitsFilter
00005 //
00006 //class EcalHighEnCosmicFilter EcalHighEnCosmicFilter.cc
00007 //
00008 // Original Author:  
00009 
00010 
00011 #include <memory>
00012 #include <vector>
00013 #include <map>
00014 #include <set>
00015 
00016 // user include files
00017 #include "CaloOnlineTools/EcalTools/plugins/EcalRecHitsFilter.h"
00018 
00019 #include "FWCore/Utilities/interface/InputTag.h"
00020 #include "FWCore/Framework/interface/Frameworkfwd.h"
00021 #include "FWCore/Framework/interface/EDFilter.h"
00022 #include "FWCore/Framework/interface/Event.h"
00023 #include "FWCore/Framework/interface/MakerMacros.h"
00024 #include "FWCore/ParameterSet/interface/ParameterSet.h"
00025 #include "FWCore/Framework/interface/ESHandle.h"
00026 #include "FWCore/MessageLogger/interface/MessageLogger.h"
00027 #include "Geometry/CaloTopology/interface/CaloTopology.h"
00028 #include "Geometry/CaloEventSetup/interface/CaloTopologyRecord.h"
00029 #include "DataFormats/EgammaReco/interface/BasicCluster.h"
00030 #include "DataFormats/EgammaReco/interface/BasicClusterFwd.h"
00031 #include "DataFormats/EcalDetId/interface/EBDetId.h"
00032 #include "DataFormats/EcalDetId/interface/EcalElectronicsId.h"
00033 
00034 using namespace edm;
00035 using namespace std;
00036 using namespace reco;
00037 
00038 //
00039 EcalRecHitsFilter::EcalRecHitsFilter(const edm::ParameterSet& iConfig) :
00040   NumBadXtalsThreshold_ (iConfig.getUntrackedParameter<int>("NumberXtalsThreshold")),
00041   EBRecHitCollection_ (iConfig.getParameter<edm::InputTag>("EcalRecHitCollectionEB"))
00042 
00043 {
00044   EnergyCut = (iConfig.getUntrackedParameter<double>("energycut"));
00045 }
00046 
00047 EcalRecHitsFilter::~EcalRecHitsFilter()
00048 {
00049 }
00050 
00051 bool EcalRecHitsFilter::filter( edm::Event& iEvent, const edm::EventSetup& iSetup)
00052 {
00053   //int ievt = iEvent.id().event();
00054   Handle<EcalRecHitCollection> EBhits;
00055   iEvent.getByLabel(EBRecHitCollection_,EBhits);
00056 
00057   bool accepted = true;
00058   int nRecHitsGreater1GevPerEvent = 0;
00059 
00060   for (EcalRecHitCollection::const_iterator hitItr = EBhits->begin(); hitItr != EBhits->end(); ++hitItr)
00061     {
00062 
00063       EcalRecHit hit = (*hitItr);
00064       EBDetId det = hit.id();
00065   
00066       float ampli = hit.energy();
00067       if(ampli > EnergyCut /*1GeV*/)
00068         {
00069           nRecHitsGreater1GevPerEvent++;
00070           nRecHitsGreater1GevPerEvent_hist_MAP->Fill(det.iphi(),det.ieta());
00071         }
00072     }
00073   nRecHitsGreater1GevPerEvent_hist->Fill(nRecHitsGreater1GevPerEvent);
00074   if(nRecHitsGreater1GevPerEvent > NumBadXtalsThreshold_ ) accepted = false;
00075   return accepted;
00076 }
00077 
00078 void 
00079 EcalRecHitsFilter::beginJob()
00080 {
00081   nRecHitsGreater1GevPerEvent_hist = new TH1F("nRecHitsGreater1GevPerEvent_hist","nRecHitsGreater1GevPerEvent_hist",65000,0.,65000.);
00082   nRecHitsGreater1GevPerEvent_hist_MAP = new TH2F("nRecHitsGreater1GevPerEvent_hist_MAP","nRecHitsGreater1GevPerEvent_hist_MAP",360,1.,361.,171,-85.,86.);
00083 }
00084 
00085 
00086 void 
00087 EcalRecHitsFilter::endJob()
00088 {
00089   cout << "------EcalRecHitsFilter EndJob------>>>>>>>>>>" << endl;
00090   file = new TFile("RecHitFilter.root" , "RECREATE");
00091   file->cd();
00092   nRecHitsGreater1GevPerEvent_hist_MAP->Write();
00093   nRecHitsGreater1GevPerEvent_hist->Write();
00094   file->Close();
00095 }