Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011 #include <memory>
00012 #include <vector>
00013 #include <map>
00014 #include <set>
00015
00016
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
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 )
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 }