00001 #include "DQMOffline/PFTau/plugins/PFDQMEventSelector.h" 00002 00003 #include "FWCore/MessageLogger/interface/MessageLogger.h" 00004 #include "FWCore/Framework/interface/Event.h" 00005 #include "DataFormats/Common/interface/Handle.h" 00006 00007 #include "DQMServices/Core/interface/DQMStore.h" 00008 #include "DQMServices/Core/interface/MonitorElement.h" 00009 #include "FWCore/ServiceRegistry/interface/Service.h" 00010 00011 #include <iostream> 00012 00013 // 00014 // -- Constructor 00015 // 00016 PFDQMEventSelector::PFDQMEventSelector( const edm::ParameterSet & pset ) { 00017 verbose_ = pset.getParameter<bool>( "DebugOn" ); 00018 inputFileName_ = pset.getParameter<std::string>("InputFileName"); 00019 folderNames_ = pset.getParameter< std::vector<std::string> >("FolderNames"); 00020 00021 nEvents_ = 0; 00022 nSelectedEvents_ = 0; 00023 fileOpened_ = false; 00024 } 00025 // 00026 // -- Destructor 00027 // 00028 PFDQMEventSelector::~PFDQMEventSelector() { 00029 } 00030 00031 // 00032 // -- BeginJob 00033 // 00034 void PFDQMEventSelector::beginJob() { 00035 00036 dqmStore_ = edm::Service<DQMStore>().operator->(); 00037 fileOpened_ = openInputFile(); 00038 } 00039 // 00040 // -- Event Filtering 00041 // 00042 bool PFDQMEventSelector::filter( edm::Event & iEvent, edm::EventSetup const& iSetup) { 00043 00044 nEvents_++; 00045 if (!fileOpened_) return false; 00046 00047 unsigned int runNb = iEvent.id().run(); 00048 unsigned int evtNb = iEvent.id().event(); 00049 unsigned int lumiNb = iEvent.id().luminosityBlock(); 00050 std::ostringstream eventid_str; 00051 eventid_str << runNb << "_"<< evtNb << "_" << lumiNb; 00052 00053 for (std::vector<std::string>::const_iterator ifolder = folderNames_.begin(); 00054 ifolder != folderNames_.end(); ifolder++) { 00055 std::string path = "ParticleFlow/"+(*ifolder) + "/BadEvents"; 00056 MonitorElement* me = dqmStore_->get(path + "/" + eventid_str.str()); 00057 if (me) { 00058 nSelectedEvents_++; 00059 if ( verbose_ ) std::cout << " Total Events " << nEvents_ 00060 << " Selected Events " << nSelectedEvents_ 00061 << " Run # : " << runNb 00062 << " Event # : " << evtNb 00063 << " Luminosity Block # : " << lumiNb 00064 << std::endl; 00065 return true; 00066 } 00067 } 00068 return false; 00069 } 00070 // 00071 // -- End Job 00072 // 00073 void PFDQMEventSelector::endJob() { 00074 if ( verbose_ ) std::cout << " Total Events " << nEvents_ 00075 << " Selected Events " << nSelectedEvents_ 00076 << std::endl; 00077 } 00078 // 00079 // -- Open Input File 00080 // 00081 bool PFDQMEventSelector::openInputFile() { 00082 if (inputFileName_.size() == 0) return false; 00083 edm::LogInfo("SiStripOfflineDQM") << "SiStripOfflineDQM::openInputFile: Accessing root File" << inputFileName_; 00084 dqmStore_->open(inputFileName_, false, "", "", DQMStore::StripRunDirs); 00085 return true; 00086 } 00087 00088 #include "FWCore/Framework/interface/MakerMacros.h" 00089 DEFINE_FWK_MODULE(PFDQMEventSelector); 00090 00091