1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
|
#include "DQMOffline/PFTau/plugins/PFDQMEventSelector.h"
#include "DataFormats/Common/interface/Handle.h"
#include "FWCore/Framework/interface/Event.h"
#include "FWCore/MessageLogger/interface/MessageLogger.h"
#include "DQMServices/Core/interface/DQMStore.h"
#include "FWCore/ServiceRegistry/interface/Service.h"
#include <iostream>
//
// -- Constructor
//
PFDQMEventSelector::PFDQMEventSelector(const edm::ParameterSet &pset) {
usesResource("DQMStore");
verbose_ = pset.getParameter<bool>("DebugOn");
inputFileName_ = pset.getParameter<std::string>("InputFileName");
folderNames_ = pset.getParameter<std::vector<std::string>>("FolderNames");
nEvents_ = 0;
nSelectedEvents_ = 0;
fileOpened_ = false;
}
//
// -- Destructor
//
PFDQMEventSelector::~PFDQMEventSelector() {}
//
// -- BeginJob
//
void PFDQMEventSelector::beginJob() {
dqmStore_ = edm::Service<DQMStore>().operator->();
fileOpened_ = openInputFile();
}
//
// -- Event Filtering
//
bool PFDQMEventSelector::filter(edm::Event &iEvent, edm::EventSetup const &iSetup) {
nEvents_++;
if (!fileOpened_)
return false;
edm::RunNumber_t runNb = iEvent.id().run();
edm::EventNumber_t evtNb = iEvent.id().event();
edm::LuminosityBlockNumber_t lumiNb = iEvent.id().luminosityBlock();
std::ostringstream eventid_str;
eventid_str << runNb << "_" << evtNb << "_" << lumiNb;
for (std::vector<std::string>::const_iterator ifolder = folderNames_.begin(); ifolder != folderNames_.end();
ifolder++) {
std::string path = "ParticleFlow/" + (*ifolder) + "/BadEvents";
MonitorElement *me = dqmStore_->get(path + "/" + eventid_str.str());
if (me) {
nSelectedEvents_++;
if (verbose_)
std::cout << " Total Events " << nEvents_ << " Selected Events " << nSelectedEvents_ << " Run # : " << runNb
<< " Event # : " << evtNb << " Luminosity Block # : " << lumiNb << std::endl;
return true;
}
}
return false;
}
//
// -- End Job
//
void PFDQMEventSelector::endJob() {
if (verbose_)
std::cout << " Total Events " << nEvents_ << " Selected Events " << nSelectedEvents_ << std::endl;
}
//
// -- Open Input File
//
bool PFDQMEventSelector::openInputFile() {
if (inputFileName_.empty())
return false;
edm::LogInfo("SiStripOfflineDQM") << "SiStripOfflineDQM::openInputFile: Accessing root File" << inputFileName_;
dqmStore_->open(inputFileName_, false, "", "", DQMStore::StripRunDirs);
return true;
}
#include "FWCore/Framework/interface/MakerMacros.h"
DEFINE_FWK_MODULE(PFDQMEventSelector);
|