1 #ifndef TOPDILEPTONOFFLINEDQM 2 #define TOPDILEPTONOFFLINEDQM 71 void book(DQMStore::IBooker& ibooker);
84 const std::vector<const reco::PFCandidate*>&
elecs)
const;
94 const std::vector<std::string> labels)
const;
101 hists_.find(histName)->second->Fill(value);
106 hists_.find(histName)->second->Fill(xValue, yValue);
109 void fill(
const std::string histName,
double xValue,
double yValue,
double zValue)
const {
111 hists_.find(histName)->second->Fill(xValue, yValue, zValue);
125 std::vector<edm::EDGetTokenT<edm::View<reco::MET> > >
mets_;
152 std::unique_ptr<StringCutObjectSelector<reco::PFCandidate> >
elecIso_;
154 std::unique_ptr<StringCutObjectSelector<reco::PFCandidate> >
elecSelect_;
157 std::unique_ptr<StringCutObjectSelector<reco::PFCandidate, true> >
muonIso_;
160 std::unique_ptr<StringCutObjectSelector<reco::PFCandidate, true> >
muonSelect_;
178 std::map<std::string, MonitorElement*>
hists_;
189 hists_[
hist]->setBinLabel(6,
"pt_{L2L3}(jet1)", 1);
190 hists_[
hist]->setBinLabel(7,
"pt_{L2L3}(jet2)", 1);
191 hists_[
hist]->setBinLabel(8,
"MET_{Calo}", 1);
194 if (hist ==
"diMuonLogger_") {
198 if (hist ==
"diElecLogger_") {
202 if (hist ==
"elecMuLogger_") {
209 for (
unsigned int idx = 0;
idx < labels.size(); ++
idx) {
211 hists_[channel +
"Eff_"]->setBinLabel(
219 const std::vector<std::string>
labels)
const {
220 for (
unsigned int idx = 0;
idx < labels.size(); ++
idx) {
222 fill(channel +
"Mon_", idx + 0.5);
224 int evts =
hists_.find(channel +
"Mon_")->second->getBinContent(idx + 1);
225 double value =
hists_.find(channel +
"Eff_")->second->getBinContent(idx + 1);
227 channel +
"Eff_", idx + 0.5, 1. / evts * (
accept(event, triggerTable,
selectionPath(labels[idx])) - value));
233 const std::vector<const reco::PFCandidate*>&
muons,
const std::vector<const reco::PFCandidate*>&
elecs)
const {
235 if (muons.size() > 1) {
237 }
else if (elecs.size() > 1) {
239 }
else if (!elecs.empty() && !muons.empty()) {
342 std::map<std::string, std::pair<edm::ParameterSet, std::unique_ptr<TopDiLeptonOffline::MonitorEnsemble> > >
selection_;
343 std::unique_ptr<SelectionStep<reco::PFCandidate> >
MuonStep;
345 std::unique_ptr<SelectionStep<reco::Vertex> >
PvStep;
346 std::unique_ptr<SelectionStep<reco::MET> >
METStep;
347 std::vector<std::unique_ptr<SelectionStep<reco::Jet> > >
JetSteps;
348 std::vector<std::unique_ptr<SelectionStep<reco::CaloJet> > >
CaloJetSteps;
349 std::vector<std::unique_ptr<SelectionStep<reco::PFJet> > >
PFJetSteps;
351 std::vector<edm::ParameterSet>
sel_;
std::string selectionPath(const std::string &label) const
std::vector< std::string > selectionOrder_
void fill(const std::string histName, double value) const
fill histogram if it had been booked before
std::unique_ptr< SelectionStep< reco::Vertex > > PvStep
Level verbosity_
verbosity level for booking
edm::EDGetTokenT< reco::JetIDValueMap > jetIDLabel_
jetID as an extra selection type
define MonitorEnsembple to be used
std::vector< std::unique_ptr< SelectionStep< reco::CaloJet > > > CaloJetSteps
edm::EDGetTokenT< std::vector< reco::Vertex > > vertex_
primary vertex
MonitorEnsemble(const char *label, const edm::ParameterSet &cfg, edm::ConsumesCollector &&iC)
void loggerBinLabels(std::string hist)
set labels for event logging histograms
std::unique_ptr< StringCutObjectSelector< reco::PFCandidate > > elecIso_
extra isolation criterion on electron
std::string monitorPath(const std::string &label) const
std::unique_ptr< StringCutObjectSelector< reco::Vertex > > vertexSelect_
string cut selector
std::vector< edm::ParameterSet > sel_
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
example_stream void analyze(const edm::Event &, const edm::EventSetup &) override
bool booked(const std::string histName) const
check if histogram was booked
dqm::dqmstoreimpl::DQMStore DQMStore
edm::EDGetTokenT< edm::View< reco::Jet > > jets_
input sources for monitoring
std::vector< std::unique_ptr< SelectionStep< reco::Jet > > > JetSteps
std::unique_ptr< StringCutObjectSelector< reco::JetID > > jetIDSelect_
extra jetID selection on calo jets
edm::EDGetTokenT< edm::View< reco::PFCandidate > > muons_
std::unique_ptr< SelectionStep< reco::PFCandidate > > MuonStep
std::unique_ptr< StringCutObjectSelector< reco::PFCandidate, true > > muonSelect_
extra selection on muons
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_
std::unique_ptr< StringCutObjectSelector< reco::PFCandidate > > elecSelect_
extra selection on electrons
std::unique_ptr< SelectionStep< reco::MET > > METStep
Level
different verbosity levels
std::string jetCorrector_
jetCorrector
std::unique_ptr< SelectionStep< reco::PFCandidate > > ElectronStep
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::map< std::string, MonitorElement * > hists_
dqm::legacy::MonitorElement MonitorElement
example_stream void bookHistograms(DQMStore::IBooker &,@example_stream edm::Run const &,@example_stream edm::EventSetup const &) override
void book(DQMStore::IBooker &ibooker)
book histograms in subdirectory directory
~TopDiLeptonOfflineDQM() override
default destructor
edm::EDGetTokenT< edm::TriggerResults > triggerTable_
trigger table
std::unique_ptr< StringCutObjectSelector< reco::BeamSpot > > beamspotSelect_
string cut selector
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)
DecayChannel decayChannel(const std::vector< const reco::PFCandidate * > &muons, const std::vector< const reco::PFCandidate * > &elecs) const
determine dileptonic decay channel
std::unique_ptr< StringCutObjectSelector< reco::PFCandidate, true > > muonIso_
extra isolation criterion on muon
void fill(const std::string histName, double xValue, double yValue, double zValue) const
fill histogram if it had been booked before (2-dim version)
edm::EDGetTokenT< reco::BeamSpot > beamspot_
beamspot
edm::EDGetTokenT< edm::ValueMap< float > > electronId_
electronId label
math::XYZTLorentzVector LorentzVector
Lorentz vector.
std::map< std::string, std::pair< edm::ParameterSet, std::unique_ptr< TopDiLeptonOffline::MonitorEnsemble > > > selection_
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_
std::vector< std::unique_ptr< SelectionStep< reco::PFJet > > > PFJetSteps