1 #ifndef TOPDILEPTONOFFLINEDQM
2 #define TOPDILEPTONOFFLINEDQM
50 namespace TopDiLeptonOffline {
88 return label.substr(label.find(
':') + 1);
93 return label.substr(0, label.find(
':'));
97 const std::vector<const reco::PFCandidate*>& elecs)
104 const std::vector<std::string>
labels);
115 if (
booked(histName.c_str()))
120 if (
booked(histName.c_str()))
121 hists_.find(histName.c_str())->
second->Fill(xValue, yValue);
125 double zValue)
const {
126 if (
booked(histName.c_str()))
127 hists_.find(histName.c_str())->
second->Fill(xValue, yValue, zValue);
141 std::vector<edm::EDGetTokenT<edm::View<reco::MET> > >
mets_;
195 std::map<std::string, MonitorElement*>
hists_;
200 hists_[hist.c_str()]->getTH1()->SetOption(
"TEXT");
201 hists_[hist.c_str()]->setBinLabel(1,
"Run", 1);
202 hists_[hist.c_str()]->setBinLabel(2,
"Block", 1);
203 hists_[hist.c_str()]->setBinLabel(3,
"Event", 1);
204 hists_[hist.c_str()]->setBinLabel(6,
"pt_{L2L3}(jet1)", 1);
205 hists_[hist.c_str()]->setBinLabel(7,
"pt_{L2L3}(jet2)", 1);
206 hists_[hist.c_str()]->setBinLabel(8,
"MET_{Calo}", 1);
207 hists_[hist.c_str()]->setAxisTitle(
"logged evts", 2);
209 if (hist ==
"diMuonLogger_") {
210 hists_[hist.c_str()]->setBinLabel(4,
"pt(muon)", 1);
211 hists_[hist.c_str()]->setBinLabel(5,
"pt(muon)", 1);
213 if (hist ==
"diElecLogger_") {
214 hists_[hist.c_str()]->setBinLabel(4,
"pt(elec)", 1);
215 hists_[hist.c_str()]->setBinLabel(5,
"pt(elec)", 1);
217 if (hist ==
"elecMuLogger_") {
218 hists_[hist.c_str()]->setBinLabel(4,
"pt(elec)", 1);
219 hists_[hist.c_str()]->setBinLabel(5,
"pt(muon)", 1);
225 for (
unsigned int idx = 0;
idx < labels.size(); ++
idx) {
226 hists_[(channel +
"Mon_").c_str()]
228 hists_[(channel +
"Eff_").c_str()]
229 ->setBinLabel(idx + 1,
"[" +
selectionPath(labels[idx]) +
"]|[" +
238 const std::vector<std::string>
labels)
const {
239 for (
unsigned int idx = 0;
idx < labels.size(); ++
idx) {
241 fill((channel +
"Mon_").c_str(), idx + 0.5);
243 int evts =
hists_.find((channel +
"Mon_").c_str())
244 ->second->getBinContent(idx + 1);
245 double value =
hists_.find((channel +
"Eff_").c_str())
246 ->second->getBinContent(idx + 1);
248 (channel +
"Eff_").c_str(), idx + 0.5,
256 const std::vector<const reco::PFCandidate*>&
muons,
257 const std::vector<const reco::PFCandidate*>& elecs)
const {
259 if (muons.size() > 1) {
261 }
else if (elecs.size() > 1) {
263 }
else if (!elecs.empty() && !muons.empty()) {
347 for (
unsigned int i = 0; i <
PFJetSteps.size(); i++)
359 return label.substr(0, label.find(
':'));
364 return label.substr(label.find(
':') + 1);
390 std::pair<edm::ParameterSet, TopDiLeptonOffline::MonitorEnsemble*> >
StringCutObjectSelector< reco::Vertex > * vertexSelect_
string cut selector
std::string selectionPath(const std::string &label) const
std::string selectionStep(const std::string &label)
DQMStore * store_
storage manager
std::vector< std::string > selectionOrder_
~TopDiLeptonOfflineDQM()
default destructor
void fill(const std::string histName, double value) const
fill histogram if it had been booked before
std::map< std::string, std::pair< edm::ParameterSet, TopDiLeptonOffline::MonitorEnsemble * > > selection_
Level verbosity_
verbosity level for booking
edm::EDGetTokenT< reco::JetIDValueMap > jetIDLabel_
jetID as an extra selection type
define MonitorEnsembple to be used
SelectionStep< reco::MET > * METStep
edm::EDGetTokenT< std::vector< reco::Vertex > > vertex_
primary vertex
MonitorEnsemble(const char *label, const edm::ParameterSet &cfg, edm::ConsumesCollector &&iC)
virtual void analyze(const edm::Event &event, const edm::EventSetup &setup)
do this during the event loop
SelectionStep< reco::PFCandidate > * ElectronStep
void loggerBinLabels(std::string hist)
set labels for event logging histograms
std::string monitorPath(const std::string &label) const
SelectionStep< reco::Vertex > * PvStep
bool accept(const edm::Event &event, const edm::TriggerResults &triggerTable, const std::string &triggerPath)
void fill(const std::string histName, double xValue, double yValue) const
fill histogram if it had been booked before (2-dim version)
void fill(const edm::Event &event, const edm::EventSetup &setup)
fill monitor histograms with electronId and jetCorrections
bool booked(const std::string histName) const
check if histogram was booked
edm::EDGetTokenT< edm::View< reco::Jet > > jets_
input sources for monitoring
U second(std::pair< T, U > const &p)
SelectionStep< reco::PFCandidate > * MuonStep
std::vector< SelectionStep< reco::CaloJet > * > CaloJetSteps
edm::EDGetTokenT< edm::View< reco::PFCandidate > > muons_
StringCutObjectSelector< reco::PFCandidate > * elecIso_
extra isolation criterion on electron
double lowerEdge_
mass window upper and lower edge
std::vector< edm::EDGetTokenT< edm::View< reco::MET > > > mets_
considers a vector of METs
std::vector< std::string > elecMuPaths_
Level
different verbosity levels
std::string jetCorrector_
jetCorrector
How EventSelector::AcceptEvent() decides whether to accept an event for output otherwise it is excluding the probing of A single or multiple positive and the trigger will pass if any such matching triggers are PASS or EXCEPTION[A criterion thatmatches no triggers at all is detected and causes a throw.] A single negative with an expectation of appropriate bit checking in the decision and the trigger will pass if any such matching triggers are FAIL or EXCEPTION A wildcarded negative criterion that matches more than one trigger in the trigger but the state exists so we define the behavior If all triggers are the negative crieriion will lead to accepting the event(this again matches the behavior of"!*"before the partial wildcard feature was incorporated).The per-event"cost"of each negative criterion with multiple relevant triggers is about the same as!*was in the past
StringCutObjectSelector< reco::PFCandidate, true > * muonIso_
extra isolation criterion on muon
StringCutObjectSelector< reco::BeamSpot > * beamspotSelect_
string cut selector
TopDiLeptonOfflineDQM(const edm::ParameterSet &cfg)
default constructor
void book(std::string directory)
book histograms in subdirectory directory
StringCutObjectSelector< reco::PFCandidate > * elecSelect_
extra selection on electrons
int elecMuLogged_
number of logged interesting events
std::vector< std::string > diMuonPaths_
trigger paths for di muon channel
std::string label_
instance label
reco::LeafCandidate::LorentzVector LorentzVector
std::vector< SelectionStep< reco::Jet > * > JetSteps
std::map< std::string, MonitorElement * > hists_
histogram container
tuple idx
DEBUGGING if hasattr(process,"trackMonIterativeTracking2012"): print "trackMonIterativeTracking2012 D...
edm::EDGetTokenT< edm::TriggerResults > triggerTable_
trigger table
edm::EDGetTokenT< edm::TriggerResults > triggerTable_
trigger table
std::vector< std::string > triggerPaths_
trigger paths
~MonitorEnsemble()
default destructor
DecayChannel
different decay channels
std::string objectType(const std::string &label)
StringCutObjectSelector< reco::PFCandidate, true > * muonSelect_
extra selection on muons
StringCutObjectSelector< reco::JetID > * jetIDSelect_
extra jetID selection on calo jets
DecayChannel decayChannel(const std::vector< const reco::PFCandidate * > &muons, const std::vector< const reco::PFCandidate * > &elecs) const
determine dileptonic decay channel
void fill(const std::string histName, double xValue, double yValue, double zValue) const
fill histogram if it had been booked before (2-dim version)
std::vector< SelectionStep< reco::PFJet > * > PFJetSteps
void setup(std::vector< TH2F > &depth, std::string name, std::string units="")
edm::EDGetTokenT< reco::BeamSpot > beamspot_
beamspot
edm::EDGetTokenT< edm::ValueMap< float > > electronId_
electronId label
math::XYZTLorentzVector LorentzVector
Lorentz vector.
void triggerBinLabels(std::string channel, const std::vector< std::string > labels)
set configurable labels for trigger monitoring histograms
edm::EDGetTokenT< edm::View< reco::PFCandidate > > elecs_